2013-02-27 1 views
3

Я работаю с определенной группой файлов (ASCII-читаемый), но с именами странных расширений. Характер комментария во всех этих словах: #Emacs - установка символа комментария с расширением файла

Каждый раз, когда я комментирую строки, я должен задать символ комментария для каждого цикла открытия файла-открытия-закрытия. Есть ли способ, которым я могу настроить файл .emacs, чтобы узнать, какой символ комментария использовать?

+1

Не добирается до вас, но вы можете поставить '- * - comment-start:" # "; - * - 'вверху каждого файла, таким образом вам нужно только установить его один раз для каждого файла. – Ista

+0

В каком режиме появляются эти файлы? –

+0

Файлы появляются в «фундаментальном» режиме – boffin

ответ

0

Что вы можете сделать, это оценить (setq comment-start "#") каждый раз в одном из этих буферов. Это гарантирует, что при запуске (comment-region) в регионе, что он будет работать, а также с (comment-dwim).

Вы даже можете привязать к нему привязку как функцию, например.

EDIT: После экспериментов, я считаю, что после того, как вы оценили его один раз в Emacs, он останется таким же для основного режима. Это должно быть очень удобно, так как вам нужно будет только один раз оценить его.

+0

Возможно, ПП хочет, чтобы в режиме «фундаментальный режим-крючок», правильно? –

+0

Я пробовал это, но фундаментального крючка не существует. Источник: http://www.chemie.fu-berlin.de/chemnet/use/info/elisp/elisp_21.html – PascalVKooten

7

Все ли файлы живут в общем дереве каталогов?

Если да, то вы можете просто поместить файл с именем .dir-locals.el на верхнем уровне этого дерева, с содержанием:

((fundamental-mode . ((comment-start . "#")))) 

Подробности читайте:
Chяг(emacs) Directory VariablesRET

(У этого подхода есть бонус, который кто-либо els e, используя Emacs для доступа к этим файлам, также будет полезен файл .dir-locals.el.)

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

(define-derived-mode my-mode fundamental-mode "MyMode" 
    "Comments start with `#'." 
    (set (make-local-variable 'comment-start) "#")) 

(add-to-list 'auto-mode-alist '("\\.\(foo\|bar\)\\'" . my-mode)) 

Это сделает файлы с .foo и .bar расширений начинаются в my-mode с # символом комментария.

+0

Мне также нужно было установить '(set (make-local-variable 'comment-start-skip)" # ")' для 'Mx uncomment-region' для работы. (Aquamacs 3.2 GNU Emacs 24.4.51.2) – user272735

0

Вы можете использовать этот фрагмент кода и настроить переменную, чтобы содержать пары регулярных выражений (соответствующие имена файлов (расширения)) и строки комментариев. И, если вы хотите установить comment-end, сделайте пары тройников и соответствующим образом отрегулируйте функцию.

(defvar comment-based-on-extension-alist '((".el$" . "gg") (".txt$" . " >") (".odd$" . "$")) 
    "alist of regexps and comment characters") 

(defun setup-comment-based-on-extension() 
    (let ((alist comment-based-on-extension-alist)) 
    (while alist 
     (when (string-match-p (caar alist) (buffer-file-name)) 
     (setq comment-start (cdar alist)) 
     (setq alist nil)) 
     (setq alist (cdr alist))))) 
(add-hook 'find-file-hook 'setup-comment-based-on-extension) 
5

Поместите следующую строку где-то в вашем init.el:

(setq-default comment-start "# ") 

Это сделает «#» строка комментария по умолчанию в фундаментальном режиме, что является разумным по умолчанию в любом случае.

 Смежные вопросы

  • Нет связанных вопросов^_^