Какие строки я должен добавить к своему _emacs (в Windows), файл, чтобы иметь его открывает.h файлы в режиме C++? Значение по умолчанию является режимом C.
Попробуйте следующее:
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
Каждый раз, когда вы открываете файлы .h, будет использоваться C ++ - режим.
Если вы не хотите, чтобы это применялось к каждому файлу .h, вы можете добавить следующее в конец ваших файлов заголовков C ++.
// Local Variables:
// mode: c++
// End:
Это будет работать для любых переменных Emacs, которые вы хотите установить для каждого файла. Emacs игнорирует начальные символы, поэтому используйте любые символы комментариев, подходящие для данного типа файла.
Могу поклясться, что уже видел правильный ответ на этот вопрос? Странный.
Вы хотите это:
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
Поскольку я регулярно использую и C, и C ++, я написал эту функцию, чтобы попытаться «угадать», предназначен ли файл .h для C или C ++
;; function decides whether .h file is C or C++ header, sets C++ by
;; default because there's more chance of there being a .h without a
;; .cc than a .h without a .c (ie. for C++ template files)
(defun c-c++-header ()
"sets either c-mode or c++-mode, whichever is appropriate for
header"
(interactive)
(let ((c-file (concat (substring (buffer-file-name) 0 -1) "c")))
(if (file-exists-p c-file)
(c-mode)
(c++-mode))))
(add-to-list 'auto-mode-alist '("\\.h\\'" . c-c++-header))
И если это не сработает, я установил клавишу для переключения между режимами C и C ++
;; and if that doesn't work, a function to toggle between c-mode and
;; c++-mode
(defun c-c++-toggle ()
"toggles between c-mode and c++-mode"
(interactive)
(cond ((string= major-mode "c-mode")
(c++-mode))
((string= major-mode "c++-mode")
(c-mode))))
Это не идеально, может быть лучшая эвристика для определения того, является ли заголовок C или C ++, но для меня это работает.