У меня есть буфер в каком-то основном режиме, а в другом буфере - сам файл режима (* .el). После того, как я отредактирую файл * .el, я хочу увидеть изменения, отраженные в первом буфере, без перезапуска emacs. Я попытался запустить функцию -mode, но не изменил буфер. СпасибоКак перезагрузить основной режим emacs?
ответ
Когда вы редактируете источник режима, вы должны убедиться, что вы оцениваете функции, которые вы меняете, - сохранить их в одном файле недостаточно, потому что внутри Emacs все равно будет использовать старый код.
Например, вы можете перейти к концу определения функции, с которой работаете с M-C-e, и оценить функцию с помощью C-x C-e. С этого момента Emacs будет использовать текущее определение.
Это также относится к определению режима, но часто при вызове режима с Mx-именем режима реализовано в виде переключателя: вы вызываете его один раз, он активирует режим, вы вызываете его снова, он деактивирует режим , Поэтому вам, возможно, придется дважды нажать M-x mode-name.
M-x load-file your-mode.el
или
M-x eval-buffer
Затем переключить поведение и выключается в буфере, по-видимому, делая
M-x your-mode
M-x your-mode
Или, если ваш режим распознает префикс аргумент
C-u 1 M-x your-mode
Примечание: Когда вы l опускание файла, defvar
не отменяет существующие значения, поэтому, если вы измените значения в вызове на defvar
, вам нужно будет их оценить конкретно, выполнив CMx, когда ваш курсор находится в выражении devfar
, или используя Mx: и набрав в выражении. См. this page для документации по оценке lisp в Emacs.
Вместо переключения режима вы также можете do `Mx normal-mode` – scottfrazer 2010-12-06 02:15:46
Если режим обеспечивает функцию (как это необходимо!) С помощью (provide 'foo-mode)
, то вы можете
M-x unload-feature RET foo-mode RET
, а затем загрузить режим снова в обычном режиме (с помощью foo-mode
, если у вас есть соответствующая автозагрузка, или с помощью load-library
или load-file
).
Я этого раньше не видел. В документации отмечается, что это вызовет ошибку, если есть другой загруженный код, который требует этой функции, но вы можете принудительно выгрузить с помощью префикса arg. – phils 2010-12-06 02:58:47
Для всех различных способов (повторной) оценки elisp см. Http://www.masteringemacs.org/articles/2010/11/29/evaluating-elisp-emacs/ – phils 2010-12-06 03:01:38