Pet*_*r.O 10 emacs mode indentation
有时我想在一行(//)或一行上完全左对齐临时注释/* */.但是,CC Mode在键入第二个键时通过自动缩进来覆盖它.一般来说,我喜欢关键字等的自动缩进,但我更希望它被禁用以进行评论.(更新:即.我想禁用c-electric -key-bindings 触发注释缩进的方式,但注释仍应正常缩进)
我已尝试将这些行放入.emacs,但它不会阻止这种行为.
(c-electric-slash nil)
(c-electric-star nil)
Run Code Online (Sandbox Code Playgroud)
简短回答:
(eval-after-load 'cc-mode
'(progn
(define-key c-mode-base-map "/" 'self-insert-command)
(define-key c-mode-base-map "*" 'self-insert-command)))
Run Code Online (Sandbox Code Playgroud)
这是我如何去做的:
找出绑定到的函数/:C-h k /
它说"/运行命令c-electric-slash,这是'cc-cmds.el'中的交互式编译Lisp函数".
(如果没有看到链接cc-cmds.el,则表示您没有安装elisp源.假设您不在Windows上,可以使用系统的软件包管理器安装emacs-el软件包,然后重试.)
按照该链接打开cc-cmds.el.搜索c-electric-slash除了函数定义之外没有找到任何其他内容,因此键不会绑定在此文件中.cc-mode.el从此目录中搜索显示:
(define-key c-mode-base-map "/" 'c-electric-slash)
Run Code Online (Sandbox Code Playgroud)
现在我们知道要覆盖/键绑定的"键映射"的名称.
如果你在你的init文件中添加这样的东西,你可能会在启动时遇到错误:
(define-key c-mode-base-map "/" 'self-insert-command)
Run Code Online (Sandbox Code Playgroud)
...因为您的init文件是在cc-mode.el之前加载的,并且c-mode-base-map是未定义的.所以我们使用eval-after-load(在我的答案的顶部).第一个参数'cc-mode必须匹配providecc-mode.el最后的语句.如果你不知道有什么progn方法,那就行C-h f progn.
如果您喜欢这种学习/发现Emacs的方式,您可以考虑阅读我的"如何学习Emacs".
| 归档时间: |
|
| 查看次数: |
1761 次 |
| 最近记录: |