Подтвердить что ты не робот

Как выделить конкретную строку в emacs?

Мне нужно выделить средство для emacs, чтобы отметить некоторые строки в файле во время работы с ним. Это должно быть как-то вроде M-s h l, но должно работать на основе номера строки, а не на регулярном выражении. Я хочу выделить текущую строку, но hl-line-mode не подходит, так как мне нужно выделить много строк каждый раз, когда я нажимаю конкретную клавишу на каждом из них.

4b9b3361

Ответ 1

Я просто быстро написал следующее:

(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-specification появляется на странице )

Он выделит текущую строку, а при повторном использовании ее удалит.

Может быть, может быть полезно и следующее: удаление всей вашей подсветки из буфера (может быть опасно, вам может не понравиться, если вы выделите важные вещи)

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

(global-set-key [f9] 'remove-all-highlight)

Ответ 2

Вы можете использовать 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)

Ответ 3

Bookmark+ делает то, что вы просите. Используйте Cx p RET (по умолчанию), чтобы установить закладку в точке. И вы можете настроить вид подсветки, который вы хотите для таких закладок. Это похоже на то, что предлагает bm.el (ответ syohex), но более гибко.