我不確定如何正確地描述了這個問題,但這裏有雲:Emacs的網絡模式選擇單詞分隔符包括_
在Emacs與我雙擊選擇一個單詞,什麼決定選擇哪個角色 - - 這個叫什麼? (在終端配置的偏好,這就是所謂的選擇按單詞字符,所以我會用這句話。)
沒有網絡的模式,例如,如果我雙擊title
在image_title
這個詞,它僅突出顯示title
- 也就是說,下劃線被識別爲逐字分隔符。
一旦啓用Web模式,單詞選擇的行爲發生變化,下劃線不再是單詞分隔符。在前面的示例中,雙擊現在突出顯示整個image_title
。這刺激了我,因爲我通常想選擇下劃線分隔標識符的部分。 (一般來說,我寧願任何模式都不要改變默認的選擇行爲。)
有什麼方法可以改變這種行爲的網絡模式?
編輯爲在我的首選模式下添加:,如果我雙擊_
字符,它會選擇包括下劃線在內的整個單詞。我喜歡這種細微而精確的選擇行爲控制。
與發佈一個潛在的回答這個問題的問題是,Emacs的開發人員一直在變化的內部運作在各種版本和未來版本之間的'mouse.el'中的函數。您的Emacs版本可能與其他人使用的版本不同。你需要做的是按'C-h k',然後左鍵單擊來查看被調用的兩個函數。然後你需要'M-x find-function'來追蹤負責選擇區域的函數。一旦你這樣做了,你需要用一個自定義的語法表('with-syntax-table')來創建一個新的函數。 – lawlist
你需要使用'with-syntax-table',因爲你不想改變當前緩衝區主模式使用的'syntax-table' - 你只需要一個臨時語法表選擇有問題的功能的區域組件。例如,您可以複製'text-mode'使用的語法表,或者簡單地創建並定義您自己的語法表。一旦找到問題的功能,您可能可以使用臨時語法表的建議來包裝它 - 大多數Emacs用戶將源代碼視爲神聖的東西,他們會更好地使用建議而不是創建新功能。 :) – lawlist