禁用所有 Emacs c-mode 重新格式化,insertion/refusal,光标跳转
Disable all Emacs c-mode reformatting, insertion/refusal, cursor jumps
我想保留 Emacs c 模式的所有语法突出显示、自动完成、命令等(我将很快添加公司模式或类似模式)但我想禁用 c 模式下的所有内容:
如果我 C- 或 M- 要求,则重新格式化。
将我的光标在源周围移动,即使是短暂的,除非我要求它。例如,关闭 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 设置,但没有展示我能找到的 "all formatting off" 开关。
正在扫描 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,但我越来越擅长打地鼠了。
第一个观察:这是一个很难回答的问题,因为 "disable everything that does ...." 有点不明确。然而...
项目 2。(当您键入闭括号时,将点暂时移动到匹配的开括号)很简单:(setq blink-matching-paren nil)。这在第 "Matching Parentheses" 页的 Emacs 手册中。 (哎呀!你已经找到那个了)。
您不喜欢tab键的动作;你想让它做什么?它绑定到 c-indent-command,它将当前行向内或向外缩进到 "correct" 位置。我猜你只想插入空格以将点带到下一个 4*nth 位置。 tab-to-tab-stop 怎么样?试试 (define-key c-mode-base-map "\t" 'tab-to-tab-stop)。请注意,在默认键映射中定义它是行不通的,因为主模式键映射优先于它。
完成 C-c C-l 以禁用键入时的自动缩进,例如 a ;,是否键入 a ;还做什么得罪人?如果是这样,您可以完全禁用其 "special" 功能 (define-key c-mode-base-map ";" 'self-insert-command)
同样,列出您不喜欢的特定事物的列表,即使是很长的列表,也比 "everything which inserts anything I didn't type" 更容易处理。该模式的维护者只是不会在头脑中那样对事物进行分类。
总之,希望你能把事情搞定。
我想保留 Emacs c 模式的所有语法突出显示、自动完成、命令等(我将很快添加公司模式或类似模式)但我想禁用 c 模式下的所有内容:
如果我 C-
或 M- 要求,则重新格式化。 将我的光标在源周围移动,即使是短暂的,除非我要求它。例如,关闭 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 设置,但没有展示我能找到的 "all formatting off" 开关。
正在扫描 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,但我越来越擅长打地鼠了。
第一个观察:这是一个很难回答的问题,因为 "disable everything that does ...." 有点不明确。然而...
项目 2。(当您键入闭括号时,将点暂时移动到匹配的开括号)很简单:(setq blink-matching-paren nil)。这在第 "Matching Parentheses" 页的 Emacs 手册中。 (哎呀!你已经找到那个了)。
您不喜欢tab键的动作;你想让它做什么?它绑定到 c-indent-command,它将当前行向内或向外缩进到 "correct" 位置。我猜你只想插入空格以将点带到下一个 4*nth 位置。 tab-to-tab-stop 怎么样?试试 (define-key c-mode-base-map "\t" 'tab-to-tab-stop)。请注意,在默认键映射中定义它是行不通的,因为主模式键映射优先于它。
完成 C-c C-l 以禁用键入时的自动缩进,例如 a ;,是否键入 a ;还做什么得罪人?如果是这样,您可以完全禁用其 "special" 功能 (define-key c-mode-base-map ";" 'self-insert-command)
同样,列出您不喜欢的特定事物的列表,即使是很长的列表,也比 "everything which inserts anything I didn't type" 更容易处理。该模式的维护者只是不会在头脑中那样对事物进行分类。
总之,希望你能把事情搞定。