【发布时间】:2016-07-29 22:52:33
【问题描述】:
我想保留 Emacs c-mode 的所有语法高亮、自动完成、命令等(我将很快添加 company-mode 或类似内容)但我想禁用 c-mode 中的所有内容:
除我 C-
或 M- 要求之外的重新格式化。 在源周围移动我的光标,即使是暂时的,除非我要求它。例如,右括号/大括号突出显示匹配的括号。
曾经 i) 插入我没有输入的任何内容(1 个 Tab = 4 个空格除外)或 ii) 因为格式化而拒绝插入我输入的内容。
出于任何原因重新格式化、重新分页、重新对齐或以其他方式编辑源文件,包括粘贴、保存或因为月亮凸出。
我已经设置了(setq-default c-basic-offset 4) 和(setq-default indent-tabs-mode nil)。
我试过了:
C-x C-la.k.a.c-toggle-electric-statea.k.a.(setq-default c-electric-flag nil)修复了 4 个中的一些,但 Tab 在感觉倾斜时仍会重新格式化代码,我猜并不孤单;并且不修复 2 或 3。c-auto-align-backslashes仅修复上述一种情况。(setq c-syntactic-indentation nil)部分修复了 4,但破坏了 1 和 3(例如,Tab 不插入光标处),并且不修复 2。text-mode显然删除了我想保留的所有 c 模式功能。各种搜索和深入了解https://www.gnu.org/software/emacs/manual/html_mono/ccmode.html,它仔细记录了 2^1024 设置,但没有显示我能找到的“所有格式关闭”开关。
扫描https://sourceforge.net/p/cc-mode/cc-mode/ci/default/tree/ 寻找要禁用的明显标志 (*blork*?)
我已经在这工作了好几个小时了,任何帮助都非常感激。
更新: 更多麻烦:安装 emacs 源代码 (apt-get install emacs24-el) 并使用 C-h k <key combo> 查找按键时调用的函数。 M-x find-function 浏览该源以了解它实际在做什么并寻找钩子。 (setq-default indent-tabs-mode nil) 坚持使用空格,而不是制表符。 (setq-default blink-matching-paren nil) 防止光标在关闭括号/大括号时跳转。我仍然无法禁用格式化,或达到 1、2、3 和 4,但我在打地鼠方面做得更好。
【问题讨论】:
-
这是一个非常复杂的过程,以确保一切正常。你真的需要一个非常熟悉 C 模式的 emacs 向导。您也许可以在emacs SE site 上获得更好的答案。
-
键入
M-x describe-mode,您将看到一个*Help*缓冲区,其中包含(部分)所有活动的键绑定。我怀疑,您希望避免的大部分行为是当您只想在键盘上插入特定字符时激活特定功能。如果您不喜欢这种行为,您可以禁用分配给特定键的每个功能。您也可以键入M-x describe-key并按下某个键,看看它是否只是从键盘插入一个字符或调用包含不吸引您的行为的特殊函数。
标签: c emacs cursor-position autoformatting