Режимы Emacs для flex и bison, или удаление auto отступ для этих режимов?

Emacs плохо обрабатывает авто-отступ в Flex и Bison. На самом деле, похоже, нет поддержки режима flex. Так, Как пользователь Emacs справляется с этим? Мне нравится VIm, но я бы предпочел не переключаться, потому что в Emacs мне гораздо быстрее и комфортнее.

Несколько месяцев назад у меня был сторонний модуль elisp для Bison, но когда его отступ сломался, он никогда не исправился. Короче говоря, это был плохой взлом.

Или есть способ, которым я могу отключить авто отступ для файлов .l и .y (таким образом нажатие сделало бы один отступ)? Как бы я изменил эту настройку elisp только для emacs?

Было бы очень полезно также получить хорошее и краткое руководство по elisp. Я не возражал бы потратить несколько дней на написание своих собственных режимов flex и bison, если бы у меня была правильная документация.

7
задан lesmana 6 May 2013 в 11:26
поделиться

2 ответа

Emacs выбирает основной режим в основном на основе расширения имени файла. .l является спорным расширением: некоторые люди используют его для lex, другие для lisp (и есть несколько других более редких применений). Emacs связывает .l с lisp, а .lex с lex (для которого он использует режим C).

Если файлы .l , с которыми вы работаете, чаще являются lex, чем lisp, вы можете изменить то, какие файлы .l связаны со следующей строкой в ​​вашем .emacs :

(add-to-list 'auto-mode-alist '("\\.l\\'" . c-mode))

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

-*-mode: c-mode-*-

Это более общая функция, предлагающая другие синтаксисы и другие возможности; см. «Файловые переменные» в руководстве Emacs для получения дополнительной информации.


Если вы хотите начать работу с Emacs Lisp, прочтите Введение в Emacs Lisp (которое может быть включено в ваш Emacs или дистрибутив ОС). После того, как вы немного поигрались с основами языка, вы можете перейти к главе о режимах в справочном руководстве Emacs Lisp.

3
ответ дан 7 December 2019 в 14:26
поделиться

Дополнительный совет: вы можете решить, что вам нужно общее поведение Emacs - то, что он использует, когда у него нет специального режима для формата файла. Это называется Fundamental mode на emacs lingo: поэтому вы можете запросить его на лету с помощью Mx basic-mode или поместить - * - mode: basic - * - в первую строку файл или настройте auto-mode-alist следующим образом:

(add-to-list 'auto-mode-alist '("\\.l\\'" . fundamental-mode))

Еще можно попробовать indented-text-mode (вероятно, с отключенным автозаполнением).

1
ответ дан 7 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

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