我需要在使用emacs时突出显示某些文件中的行,它应该类似于M-s h l,但应该基于行号而不是正则表达式工作。我想要突出显示当前行,但是hl-line-mode
不适用于我,因为我需要在每个按下特定键的行上都突出显示许多行。
(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)
bm-toggle
来高亮和取消当前行的高亮。
bm.el 还提供了 bm-bookmark-regexp
,它仅高亮匹配的行。
你可以通过 bm-previous
和 bm-next
在高亮的行之间跳转。(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)
M-x customize-group bookmark-plus
,然后按照(例如点击)链接Send Bug Report
,它将帮助您准备发送给我的电子邮件。谢谢。 - Drew
highlight.el
库。 - artscan