Emacs网络模式选择字分隔符包括_

时间:2015-06-10 16:48:11

标签: emacs selection delimiter

我不确定如何正确描述这个问题,但这里有:

在emacs中,我双击选择一个单词,某些东西决定选择哪个字符 - 这叫什么? (在终端配置文件首选项中,这称为逐字符字符,因此我将使用该短语。)

如果没有网络模式,例如,如果我双击title中的image_title一词,它只会突出显示title - 也就是说,下划线被识别为选择 - by-word delimiter。

启用网络模式后,逐个字词的行为会发生变化,而下划线不再是单词分隔符。在上一个示例中,现在双击会突出显示整个image_title。这让我感到恼火,因为我通常想要选择下划线分隔标识符的部分。 (一般来说,我更喜欢任何不改变默认选择行为的模式。)

更改此网络模式行为的选项是什么?

编辑添加:在我的首选模式下,如果我双击_字符,它会选择整个单词,包括下划线。我喜欢这种对选择行为的微妙而精确的控制。

1 个答案:

答案 0 :(得分:0)

@lawlist - 感谢您的建议!我无法完全遵循这些功能,但它确实引导我沿着正确的道路前进:

  • 找到了double-mouse-1,搜索了谷歌
  • 发现mouse word selection使用全局forward-word函数
  • 该页面提及syntax-table,您提及syntax-table我们在这里有什么 web-mode.el包含syntax-table(以及bug #377。)

web-mode的语法表大致包含v 11.2.2中的第1969行:

(defvar web-mode-syntax-table
  (let ((table (make-syntax-table)))
    (modify-syntax-entry ?_ "w" table)
    (modify-syntax-entry ?< "." table)
    (modify-syntax-entry ?> "." table)
    (modify-syntax-entry ?& "." table)
    (modify-syntax-entry ?/ "." table)
    (modify-syntax-entry ?= "." table)
    (modify-syntax-entry ?% "." table)
    table)
  "Syntax table used to reveal whitespaces.")

我认为?_ "w"表示将_视为单词字符。我将"w"更改为".",并且下划线现在被视为我想要的字边界!

Hooray for stack overflow,google和github。

此外,现在我已经获得了一些正确的关键字,Stack Overflow建议这个可能有用的相关答案:Changing Emacs Forward-Word Behaviour