Установка разных базовых предложений для разных проектов - PullRequest
2 голосов
/ 01 декабря 2009

Я обычно использую 4 пробела для отступа программ на C, но чтобы соответствовать некоторым проектам с открытым исходным кодом, мне иногда приходится переходить на отступ с 2 пробелами.

В настоящее время мой стиль отступа назначен в моем файле .emacs с

(setq c-basic-offset 4)

И когда я захочу поработать над этими проектами с отступом в 2 пробела. Я должен закрыть свой Emacs, изменить значение и начать заново. Есть ли более простой способ сделать это?

Большое спасибо.


PS. Установка переменной c-basic-offset каждый раз, когда я открываю исходный файл, - это слишком много работы, возможно ли выбрать другое значение в зависимости от рабочего каталога?

Ответы [ 2 ]

9 голосов
/ 01 декабря 2009

Создайте файл в каталоге, который вы хотите настроить с именем .dir-locals.el, и отредактируйте его так, чтобы он содержал:

((c-mode . ((c-basic-offset . 4))))

Примечание: Это новая функциональность в Emacs 23.1.

Для этого используются Локальные переменные для каждого каталога . Из документации по ссылке:

Файл .dir-locals.el должен держать специально построенный список. Этот список отображает имена режимов Emacs (символы) к спискам; каждый список определяет значения переменных для использования когда соответствующий режим включен. Название специального режима `nil 'означает, что его список применим к любому режиму. Вместо названия режима вы можете указать строку, которая является именем подкаталог проекта каталог; тогда соответствующий Alist относится ко всем файлам в этом подкаталог.

Вот пример .dir-locals.el файл:

 ((nil . ((indent-tabs-mode . t)
          (tab-width . 4)
          (fill-column . 80)))
  (c-mode . ((c-file-style . "BSD")))
  (java-mode . ((c-file-style . "BSD")))
  ("src/imported"
   . ((nil . ((change-log-default-name . "ChangeLog.local"))))))
2 голосов
/ 04 декабря 2009

Другой подход - создать список выбора стиля, как у меня в .emacs: http://github.com/stsquad/my-emacs-stuff/blob/master/my-c-mode.el#L103

Вы также можете использовать локальные переменные буфера в исходном коде, чтобы установить эти вещи, но это, как правило, зависит от проекта, над которым вы работаете, чтобы быть счастливым, имея их в исходном коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...