Как мне получить текущий основной режим?

30

Если я редактирую файл .tex в emacs, по умолчанию (для меня) в правом нижнем углу фрейма будет написано «LaTeX / P». Однако я не попаду в этот режим, набрав «Mx LaTeX / P-mode»; Я могу добраться до него только набрав "Mx latex-mode".

Кроме как погуглить, как я узнаю, что для ввода в этот режим я набираю «режим латекса»?

Джон Смит
источник

Ответы:

43

Я думаю, что самый простой способ - проверить значение локальной буферной major-modeпеременной одним из следующих способов :

  • C-hv major-mode RET
  • M-: major-mode RET
Phils
источник
12

C-h m дает вам помощь в текущем режиме, и, как правило, говорит вам имя команды, которая включает режим.

Например, в режиме Emacs-Lisp C-h mсообщает, что вы находитесь в Emacs-Lispрежиме. Команда, которая включает режим, просто emacs-lisp-mode.

C-h mтакже предоставляет ссылку на библиотеку, которая определяет режим, и если вы щелкнете по этой ссылке, вы перейдете к определению команды mode. Например, в режиме Emacs-Lisp C-h mвам сообщают:

Emacs-Lisp mode defined in `lisp-mode.el'

И если вы щелкнете по ссылке, lisp-mode.elто Emacs приведет вас к определению команды emacs-lisp-mode, которая является командой, которая включает режим:

(define-derived-mode emacs-lisp-mode prog-mode "Emacs-Lisp"
  "Major mode for editing Lisp code to run in Emacs.
  ...)
Нарисовался
источник
0

Можно получить основной режим, просто оценив это выражение:

(print major-mode)

Сидхарт Арья
источник
2
Кажется, это повторяет ответ @ phils: исследовать переменную major-mode( emacs.stackexchange.com/a/18084/105 ).
Дрю
Да, мы оцениваем одну и ту же переменную, конечно же, так как именно она хранит значение основного режима. Разница только в том, как вы хотите реализовать эту функцию. может быть, мы можем определить функцию с помощью этой команды и связать ее клавишей. Так что моя точка зрения заключается в том, что elisp против использования линии режима emacs.
Сидхарт Арья