Обновление ключевых слов блокировки шрифта в emacs без основной перезагрузки режима

Построение на ответе vartec:

imports sys

def redirect_output(func, output=None):
    if output is None:
        output = sys.stderr
    if isinstance(output, basestring):
        output = open(output, 'w') # etc...
    # everything else...
8
задан freiksenet 18 September 2009 в 11:40
поделиться

3 ответа

Хорошо, а как насчет этого:

(defun my-font-lock-restart ()
  (interactive)
  (setq font-lock-mode-major-mode nil)
  (font-lock-fontify-buffer))
5
ответ дан 5 December 2019 в 21:20
поделиться

Запуск основного режима - это не то, что заставляет font-lock делать свое дело. Я не очень хорошо знаком с внутренним устройством SLIME или lisp-mode, но просто установка переменной должна заставить его работать. Включение режима блокировки шрифта заставит блокировку шрифтов начать обновляться с учетом новых ключевых слов, как и font-lock-fontify-buffer .

В основном я использую cperl-mode, и он это простой вопрос cperl-init-faces (который устанавливает внутренние переменные font-lock) и перезапуска font-lock. lisp-mode не должен сильно отличаться, за исключением того, что не требуется вызов cperl-init-faces ;)

Правка: некоторые эксперименты с режимом lisp-взаимодействия показывают, что даже перезапуск font-lock- режим не является строго необходимым. Достаточно просто изменить ключевые слова font-lock, до тех пор, пока вы каким-то образом повторно активируете фонтификацию. (Редактирование текста, font-lock-fontify-buffer и т. Д.)

1
ответ дан 5 December 2019 в 21:20
поделиться

Вы можете временно очистить переменную обработчика режима и перезапустить ее:

(defun my-restart-lisp-mode ()
  (interactive)
  (let ((lisp-mode-hook nil))
    (normal-mode)))
1
ответ дан 5 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: