Режимы Emacs для flex и bison, или удаление автоматического отступа для этих режимов? - PullRequest
7 голосов
/ 16 августа 2010

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 16 августа 2010

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-*-

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


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

1 голос
/ 17 августа 2010

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

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

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

...