Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何突出显示emacs中的特定行?_Emacs_Bookmarks - Fatal编程技术网

如何突出显示emacs中的特定行?

如何突出显示emacs中的特定行?,emacs,bookmarks,Emacs,Bookmarks,我需要突出显示facility for emacs,以便在使用它时标记文件中的一些行。 它应该是类似于M-SHL的smth,但应该基于行号而不是正则表达式工作。我想突出显示当前行,但“hl行”模式不适合,因为我需要突出显示许多行,每次我按每个行上的特定键。我只是快速编写了以下内容: (defun find-overlays-specifying (prop pos) (let ((overlays (overlays-at pos)) found) (while ov

我需要突出显示facility for emacs,以便在使用它时标记文件中的一些行。
它应该是类似于M-SHL的smth,但应该基于行号而不是正则表达式工作。我想突出显示当前行,但“hl行”模式不适合,因为我需要突出显示许多行,每次我按每个行上的特定键。

我只是快速编写了以下内容:

(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)
(此处查找来自的覆盖)

它将突出显示当前行,再次使用时将删除该行

也许以下几点也很有用:从缓冲区中删除所有突出显示(可能很危险,如果突出显示重要内容,您可能不需要)

你可以用。您可以从MELPA安装bm.el

bm.el提供了
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)
(需要“bm”)
(全局设置键(kbd“”)“bm切换)
(全局设置键(kbd“”)“bm上一个)
(全局设置键(kbd“”)'bm next)
(全局设置键(kbd“”)'bm书签regexp)

满足您的要求。使用(默认情况下)在点处设置书签。您可以为这些书签配置所需的类型。这类似于
bm.el
提供的内容(syohex的回答),但更灵活。

“某些行”是一个区域。请参见可能是您需要突出显示。ellibrary这些行不是连续的。这只是一组有趣的台词。酷,我甚至不知道我想要这个+1下面的“bm”软件包是我推荐的,而不是改造车轮。但是发明一个轮子是很有趣的!如果点位于某些线条的开头或结尾,这不起作用。或者,它可能与我的大括号设置冲突。但是,在线条的最末端,取消高亮仍然不起作用。既然你提到了它,当点位于线条的末尾时,我将其删除是不起作用的。如果你需要更改颜色,这是名单,谢谢。这很好,但我认为对于这样简单的任务来说有点重。bm简单、灵活、强大且直观。请注意,书签在EWW缓冲区中不起作用,只在目录和文件中起作用。我在Emacs中寻找一种解决方案,它允许我突出显示EWW缓冲区中的某些行,我想到了寄存器和书签。虽然可以使用寄存器来记住网页缓冲区中的某些点,然后跳转到它们,但不能使用书签。(EWW缓冲区不是OP的要求,我只是想扩展你的答案。)@hajovonta:不,我不认为这是真的。使用Bookmark+,EWW书签应该可以正常工作,包括缓冲区。当然,EWW本身一直在变化,所以一些变化可能会带来一个我还没有意识到的问题。如果您发现问题,请向我报告:
M-x customize group bookmark plus
,然后(例如,单击)链接
Send Bug report
,该链接可帮助您准备给我的电子邮件。我不是专家,但我有一种感觉,EWW书签只用于EWW URL。我需要在EWW缓冲区中为一个位置添加书签。书签+(Bookmark+)可能吗?@hajovonta:不,EWW书签的工作原理与普通书签类似。它们不仅为URL添加书签,还为您设置书签的页面(如HTML页面)上的位置添加书签。您还可以在这样的位置设置区域书签。
(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)