[英]How to tell emacs to open .h file in C++ mode?
我應該在_emacs(在Windows上)文件中添加哪些行,以便在C ++模式下打開.h文件? 默認為C模式。
試試這個:
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
每當你打開.h文件時,都會使用C ++模式。
另一種同時使用c-mode和c ++模式的方法是使用目錄局部變量來設置模式。
在模式設置1之后評估目錄變量,因此您實際上可以為包含以下內容的C ++項目編寫.dir-locals.el
文件:
((c-mode . ((mode . c++))))
只要最初將c-mode
設置為c-mode
,Emacs就會將模式更改為c++-mode
c-mode
。
如果您使用混合的C和C ++項目,這將為每個項目提供一個非常簡單的解決方案。
當然,如果你的大部分項目都是C ++,你可以將c ++ - mode設置為默認值2 ,然后你可以反過來使用這種方法在適當的時候切換到c-mode。
按順序進行1次 normal-mode
調用(set-auto-mode)
和(hack-local-variables)
。 另請參閱: 如何在主模式掛鈎中訪問目錄本地變量?
2為此,請添加
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
到您的.emacs
文件,默認情況下以C ++模式打開.h
文件。
如果您不希望將其應用於每個.h文件,則可以將以下內容添加到C ++頭文件的底部。
// Local Variables:
// mode: c++
// End:
這適用於您要基於每個文件設置的任何Emacs變量。 Emacs忽略前導字符,因此請使用適合文件類型的任何注釋字符。
顯然你也可以把它放在文件的頂部:
// -*-c++-*-
告訴Emacs它是一個C ++文件。
我使用它,因為我經常最終使用香草Emacs並且無需以任何方式配置Emacs。
由於我經常使用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 ++,但它對我有用。
我發誓我已經看到這個問題得到了適當的回答了嗎? 奇怪的。
你要這個:
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.