14

作業中にファイル内のいくつかの行をマークするために、emacs の機能を強調表示する必要があります。それは似ているはずですM-s h lが、正規表現ではなく行番号に基づいて動作するはずです。現在の行を強調表示したいのですが、hl-line-modeそれぞれの特定のキーを押すたびに多くの行を強調表示する必要があるため、 は適していません。

4

3 に答える 3

15

私はすぐに次のように書いた:

(defun find-overlays-specifying (prop pos)
  (let ((overlays (overlays-at pos))
        found)
    (while overlays
      (let ((overlay (car overlays)))
        (if (overlay-get overlay prop)
            (setq found (cons overlay found))))
      (setq overlays (cdr overlays)))
    found))

(defun highlight-or-dehighlight-line ()
  (interactive)
  (if (find-overlays-specifying
       'line-highlight-overlay-marker
       (line-beginning-position))
      (remove-overlays (line-beginning-position) (+ 1 (line-end-position)))
    (let ((overlay-highlight (make-overlay
                              (line-beginning-position)
                              (+ 1 (line-end-position)))))
        (overlay-put overlay-highlight 'face '(:background "lightgreen"))
        (overlay-put overlay-highlight 'line-highlight-overlay-marker t))))


(global-set-key [f8] 'highlight-or-dehighlight-line)

(ここでfind-overlays-specifyingはマニュアルページから来ました)

現在の行が強調表示され、再度使用すると削除されます。

たぶん、次のことも役立つかもしれません:バッファからすべてのハイライトを削除する(危険かもしれません、重要なものをハイライトする場合はそれを望まないかもしれません)

(defun remove-all-highlight ()
  (interactive)
  (remove-overlays (point-min) (point-max))
  )

(global-set-key [f9] 'remove-all-highlight)
于 2013-01-22T08:58:02.053 に答える
12

bm.elを使用できます。MELPA から bm.el をインストールできます。

bm.el はbm-toggle、現在の行を強調表示および強調表示解除する機能を提供します。bm.el はbm-bookmark-regexp、一致した行のみを強調表示するものも提供します。bm-previousハイライトされた行間をと でジャンプできますbm-next

以下は bm.el の設定例です。

(require 'bm)
(global-set-key (kbd "<f5>") 'bm-toggle)
(global-set-key (kbd "<f6>") 'bm-previous)
(global-set-key (kbd "<f7>") 'bm-next)
(global-set-key (kbd "<f8>") 'bm-bookmark-regexp)
于 2013-01-22T09:05:25.567 に答える