我應該將哪些行添加到我的_emacs(在Windows)文件中,以便在C++模式下打開.h文件?默認是C模式。如何告訴emacs在C++模式下打開.h文件?
回答
試試這個:
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
每當你打開.h文件,C++ - 模式將被使用。
我可以發誓我看到這個問題已經適當地回答了嗎?奇怪的。
你想這樣的:
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
你做了...作者刪除了它。 – 2010-07-26 20:17:25
如果你不希望這適用於所有.h文件中,你可以添加以下到你的C++頭文件的底部。
// Local Variables:
// mode: c++
// End:
這適用於任何想要在每個文件基礎上設置的Emacs變量。 Emacs忽略前導字符,因此使用適合文件類型的任何註釋字符。
謝謝,沒有意識到你可以用emacs做到這一點。 – kujawk 2010-08-04 17:05:11
不知道曾經在有史以來的文件。這可能非常有用。謝謝:) – 2015-08-25 08:11:50
由於我使用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++,但它爲我的作品有可能是決定一個更好的啓發。
更好的解決方案可能是在文件中編碼模式(請參閱我的答案),然後定義用於向文件添加適當行的鍵。唯一的缺點是不使用emacs的人也會看到這一點,但是由於它位於文件的底部,所以它不應該成爲一個問題。 – KeithB 2010-07-30 18:42:34
這對您自己的項目來說很好,但我的解決方案主要是爲了處理其他人的項目。您可以在第三方項目中將您的本地變量「讀取」到頭尾,但這太費事了。 – Borbus 2010-08-03 18:47:12
我其實很喜歡這個解決方案,它可以很容易地在不修改任何源文件的情況下自定義行爲。例如,在我的版本中,我使用'(string-match「llvm」(buffer-file-name))'來確定.h文件是否爲C++(llvm是一個C++項目)。 – zdav 2014-10-02 13:21:15
適當使用c模式和C++模式的另一種方法是使用directory local variables來設置模式。該模式已設定後
目錄變量進行評估,所以實際上你可以寫一個.dir-locals.el
文件包含這你的C++項目:
((c-mode . ((mode . c++))))
和Emacs將模式更改爲c++-mode
每當它最初將其設置爲c-mode
。
如果您使用C和C++項目混合工作,這將爲每個項目提供一個相當簡單的解決方案。當然,如果大多數項目都是C++,那麼可以將C++模式設置爲默認值,然後您可以在相反的情況下使用此方法切換到c模式。
normal-mode
電話(set-auto-mode)
並依次(hack-local-variables)
。另請參見:How can I access directory-local variables in my major mode hooks?
要做到這一點,添加
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
您.emacs
文件,該文件默認打開C++模式.h
文件。
這是最有用的答案。另外,請注意'mode'是文件局部變量列表中的一種特殊形式,並且僅在此處記錄(http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables的.html)。 – scry 2015-03-17 02:48:56
我已經添加了腳註(2),所以你的答案是自給自足的,不依賴於其他人。現在,它應該是被接受的答案。謝謝。 – YSC 2017-04-04 08:50:27
該解決方案使C++模式也可用於.glsl文件。有什麼辦法可以強制使用glsl-mode嗎? – jco 2017-05-08 08:30:43
顯然,你也可以把這個在文件的頂部:
// -*-c++-*-
告訴Emacs的是一個C++文件。
我使用這個,因爲我經常以一個vanilla Emacs結束,它沒有以任何方式配置Emacs。
或者也可以這樣:'// - * - mode:C++ - * - '。您還可以在其中添加其他變量,如' - * - coding:utf-8;模式:python;標籤寬度:4; - * - ' – donkopotamus 2016-03-08 23:29:02
- 1. 如何在打開.h文件時自動進入C++模式?
- 2. 如何在info模式下打開emacs中的* .info文件?
- 3. 告訴瀏覽器在Codeigniter中打開或下載文件
- 4. 在emacs XML模式下,如何格式化XML模式文件?
- 5. grails emacs模式 - 「無法打開加載文件」「項目模式」
- 6. 如何讓Emacs在左側窗口中總是打開.c文件,而右側是.h文件?
- 7. 如何在emacs org模式下包含純文本文件
- 8. 如何在C#上打開excel文件的只讀模式?
- 9. 如何以獨佔模式在C++中打開文件
- 10. 如何讓emacs在確定打開文件的模式時忽略shebang(#!/ some/interpreter)
- 11. C++中的文件打開模式
- 12. 如何以ROOT模式打開文件?
- 13. 在Emacs組織模式下,如何在全尺寸窗口中打開org-capture?
- 14. 在emacs組織模式下打開Pelican相對路徑
- 15. 當emacs告訴我「文件模式規格錯誤」是什麼意思?
- 16. 如何告訴Configparser打開與模塊名稱相同的配置文件,並打開它?
- 17. 聲明應該打開一個emacs文件的模式
- 18. 如何使用Evernote在Emacs org模式下打開Evernote筆記鏈接?
- 19. 如何在完全打開它之前告訴.pcapng文件的幀數量?
- 20. 如何告訴lcov在哪裏可以找到我的.cpp&.h文件?
- 21. 如何在Windows下打開.ks文件?
- 22. 是否可以告訴用戶是否打開或下載了一個文件?
- 23. Visual Studio可以告訴我打開了多少個文件?
- 24. 如何在emacs C++編譯模式下跳過「in included from from」?
- 25. 無法打開源文件d3dx10.h
- 26. 無法打開源文件「d3dx10.h」
- 27. 無法打開包含文件「d3dx9.h」
- 28. 如何在打開文件時在emacs中自動縮進?
- 29. 如何在Windows上使用Emacs 22.2.1在FTP上打開文件?
- 30. 如何告訴GridView在CellClick上打開一個HyperLink?
它工作。非常感謝。 – kujawk 2010-07-22 19:01:40