我应该将哪些行添加到我的_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