簡體   English   中英

禁用所有Emacs c模式重新格式化,插入/拒絕,光標跳轉

[英]Disable all Emacs c-mode reformatting, insertion/refusal, cursor jumps

我想保留Emacs c模式的所有語法高亮顯示,自動完成,命令等(並且我將在短期內添加company-mode或類似模式),但是我想禁用c模式下的所有內容:

  1. 重新格式化,除非我要求C- <command>或M- <command>

  2. 除非我要求,否則即使在瞬間,也要在源周圍移動光標。 例如,關閉括號/花括號突出顯示匹配的括號。

  3. 我曾經插入任何我沒有鍵入的內容(除了1 Tab = 4個空格),或者ii)因為格式化而拒絕插入我沒有鍵入的內容。

  4. 出於任何原因(包括粘貼,保存或月球隆起),重新格式化,重新分頁,重新對齊或以其他方式編輯源。

我已經設置了(setq-default c-basic-offset 4)(setq-default indent-tabs-mode nil)

我努力了:

  • Cx Cl aka c-toggle-electric-state aka (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 *?)

我在這里待了幾個小時,因此非常感謝您的幫助。

更新:apt-get install emacs24-el :安裝emacs源代碼( apt-get install emacs24-el )並使用Ch k <key combo>查找按下鍵時調用的函數。 Mx find-function可瀏覽該源以找出其實際功能並查找鈎子。 (setq-default indent-tabs-mode nil)可以使用空格而不是制表符。 (setq-default blink-matching-paren nil)以防止光標在關閉括號/括號時跳轉。 我仍然不能禁用格式化,也不能達到1、2、3和4,但是我在打w鼠方面越來越好。

初步觀察:這是一個很難回答的問題,因為“禁用所有可做的事情....”有點不確定。 然而...

第2項。(鍵入封閉括號時,將移動點暫時移至匹配的開放括號)很容易:(setq blink-matching-paren nil)。 這在Emacs手冊的“匹配括號”頁中。 (哇!您已經找到了那個)。

您不喜歡Tab鍵的操作; 您要它做什么? 它與c-indent-command綁定,后者將當前行向內或向外縮進到“正確”位置。 我猜您只是想插入空格以將點帶到下一個4 * n位置。 標簽到標簽停止如何? 試試(定義鍵c-mode-base-map“ \\ t”'制表到制表停止)。 請注意,在默認鍵映射中定義它是行不通的,因為主模式鍵映射優先於它。

完成Cc Cl以禁用鍵入時的自動縮進,例如,;確實鍵入了; 還是要冒犯任何事情? 如果是這樣,您可以使用(define-key c-mode-base-map“;”'self-insert-command)完全禁用其“特殊”功能。

再說一次,列出您不喜歡的特定內容,甚至是一長串內容,也比“插入所有我沒有鍵入的內容的東西”容易得多。 該模式的維護者只是沒有在思想上對事物進行分類。

無論如何,我希望您能設法解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM