Постоянные цвета в текстовом буфере emacs

После выделения текста в буфере emacs с помощью регулярного выражения (1) достаточно просто записать настройку в файл (2), но я пропускаю третий шаг для сохранения.

(1) Установить

Выполнение M-s h r (highlight-regexp) и, скажем, \{.*\} с последующим italic выделит все, что находится между фигурными скобками в этом стиле.

(2) Написать

Последующий вызов C-x w b (hi-lock-write-interactive-patterns) запишет строку

# Hi-lock: (("\\{.*\\}" (0 (quote italic) t)))

в буфере после запроса строки комментария (я использовал #).

(3) Повторное использование

Какой третий шаг необходим, чтобы сделать эту подсветку постоянной, т. Е. Чтобы она сохранилась при сохранении/загрузке файла с диска?


person Calaf    schedule 29.06.2013    source источник


Ответы (3)


Если вы C-h f hi-lock-write-interactive-pattern, вы увидите в справочном буфере ссылку на hi-lock.el. Часто библиотеки Лиспа содержат некоторую информацию об использовании в начале файла, и ее удобно проверить.

В этом случае он говорит, как сделать его постоянным:

;;    To enable the use of patterns found in files (presumably placed
;;    there by hi-lock) include the following in your init file:
;;
;;    (setq hi-lock-file-patterns-policy 'ask)
;;
;;    If you get tired of being asked each time a file is loaded replace
;;    `ask' with a function that returns t if patterns should be read.
person Alan Shutko    schedule 29.06.2013
comment
Спасибо за подсказку. У меня уже было (setq hi-lock-file-patterns-policy t) в моем .emacs, но только (setq hi-lock-file-patterns-policy 'ask) вызывает запрос. Почему простое написание t не вызывает выделение без запроса? - person Calaf; 30.06.2013
comment
По-видимому, просто запись t не работает (в том числе и в Emacs 24). Вместо этого нужно написать (setq hi-lock-file-patterns-policy (лямбда (шаблон) t)). Ссылка: lists.gnu.org/archive/ html/bug-gnu-emacs/2010-01/msg00226.html - person Calaf; 30.06.2013

Как насчет возможности создания функции, у которой есть ловушка, связанная с файлом, который вы хотите загрузить, например, ловушка текстового режима или, возможно, конкретная файловая ловушка (если что-то подобное существует)?

;; M-x ae-hi-lock-features

(global-hi-lock-mode 1)

(defface af-bold-yellow-box '((t  (:background  "black" 
                                   :foreground  "yellow"
                                   :underline "red"
                                   :height 200
                                   :bold t
                                  )))  "yellow-box-face")

(defun z-hi-lock-quizzes ()
  ;; this next line is necessary to correct sloppy hi-locking
  (if (not hi-lock-mode) 
      (progn (hi-lock-mode -1) 
             (hi-lock-mode  1)) 
    (hi-lock-mode) 
    (hi-lock-mode))
  (highlight-regexp "^%-\\*-mode:LaTeX.*$" (quote hi-conceal-content));
  (highlight-regexp "^%-@-(.+$"            (quote hi-lock-page-break));
  (highlight-regexp "food"            (quote af-bold-yellow-box));
)

(defun ae-hi-lock-features ()
   (interactive)
   (z-hi-lock-quizzes)
;;   ... call other functions ...
)

(add-hook 'text-mode-hook 'ae-hi-lock-features)
person lawlist    schedule 29.06.2013
comment
То, что hi-lock-write-interactive-patterns существует, кажется убедительным намеком на то, что мне не хватает одной или двух строк в моем текстовом файле. - person Calaf; 29.06.2013

https://www.gnu.org/software/emacs/manual/html_node/emacs/Highlight-Interactively.html

C-x w i

Извлечь пары регулярное выражение/лицо из комментариев в текущем буфере (hi-lock-find-patterns).

Таким образом, вы можете интерактивно вводить шаблоны с помощью highlight-regexp, сохранять их в файле с помощью hi-lock-write-interactive-patterns, редактировать их (возможно, включая разные лица для разных частей совпадения в скобках) и, наконец, использовать эту команду ( hi-lock-find-patterns), чтобы Hi Lock выделял отредактированные паттерны.

person Eugen Dück    schedule 13.07.2014
comment
Необходима функция M-x hi-lock-write-interactive-patterns, тогда как (из информации emacs) C-x w i запускает команду hi-lock-find-patterns. - person Calaf; 14.07.2014