我想保留Emacs c-mode的所有语法高亮,自动完成,命令等(我将很快添加公司模式或类似)但我想禁用c模式中的所有内容:
除了I C- < command> 或M- < command> 之外,请重新格式化。
将光标移动到源头,即使是暂时的,除非我要求它。例如,关闭parens / braces突出显示匹配的那个。
永远i)插入我没有输入的任何东西(除了1个Tab = 4个空格)或ii)拒绝插入我输入的东西,因为格式化。
出于任何原因重新格式化,重新标记,重新排列或以其他方式编辑源代码,包括粘贴,保存或因为月亮是隆起的。
我已设置(setq-default c-basic-offset 4)
和(setq-default indent-tabs-mode nil)
。
我试过了:
C-x C-l
a.k.a。c-toggle-electric-state
a.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)
阻止光标跳到关闭的parens / braces上。我仍然无法禁用格式化,或者实现1,2,3和4,但是我在使用whack-a-mole时会越来越好。
答案 0 :(得分:1)
首先观察:这是一个难以回答的问题,因为&#34;禁用所有做的事情......&#34;有点不明确。然而...
项目2.(当你键入一个关闭的paren时,暂时移动到匹配的开放式paren)很容易:(setq blink-matching-paren nil)。这是在第34页的Emacs手册中;匹配括号&#34;。 (哎呀!你已经找到了那个)。
你不喜欢tab键的动作;你想要它做什么?它被绑定到c-indent-command,它将当前行向内或向外缩进到&#34;正确&#34;位置。我猜你只想插入空格来指向下一个4 * n位置。 tab-to-tab-stop怎么样?尝试(define-key c-mode-base-map&#34; \ t&#34;&#39; tab-to-tab-stop)。请注意,在默认键映射中定义它将不起作用,因为主模式键映射优先于它。
完成C-c C-1以禁用键入时的自动缩进,例如a;键入a;仍然冒犯了什么?如果是这样,您可以禁用其特殊的&#34;功能完全与(define-key c-mode-base-map&#34 ;;&#34;&#39; self-insert-command)
同样,一个你不喜欢的特定事物清单,即使是很长的清单,也要比那些插入任何我没有输入的东西更容易处理。#34;。该模式的维护者并没有在心理上对事物进行分类。
无论如何,我希望你能够解决问题。