Мне нужно выделить средство для emacs, чтобы пометить некоторые строки в файле при работе с ним. Это должно быть что-то вроде M-s h l, но должно работать на основе номера строки, а не регулярного выражения. Я хочу выделить текущую строку, но hl-line-mode
не подходит, так как мне нужно выделить много строк, каждый раз, когда я нажимаю определенную клавишу на каждой из них.
Как выделить определенную строку в emacs?
Ответы (3)
Я просто быстро написал следующее:
(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.el. Вы можете установить bm.el из MELPA.
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)
Bookmark+ делает то, что вы просите. Используйте C-x p RET
(по умолчанию), чтобы установить закладку в точке. Кроме того, вы можете настроить вид выделения для таких закладок. Это похоже на то, что предлагает bm.el
(ответ syohex), но более гибкое.
M-x customize-group bookmark-plus
, затем перейдите (например, щелкните) по ссылке Send Bug Report
, которая поможет вам подготовить электронное письмо для меня. Спасибо.
- person Drew; 16.05.2019
highlight.el
библиотека - person artscan   schedule 22.01.2013