Emacs web模式选择字分隔符包括_
我不确定如何恰当地描述这个问题,但下面是: 在emacs中,我双击来选择一个单词,一些东西决定了要选择哪些字符——这叫什么?(在终端配置文件首选项中,这称为按单词字符选择,因此我将使用该短语。) 例如,在没有web模式的情况下,如果我双击Emacs web模式选择字分隔符包括_,emacs,selection,delimiter,Emacs,Selection,Delimiter,我不确定如何恰当地描述这个问题,但下面是: 在emacs中,我双击来选择一个单词,一些东西决定了要选择哪些字符——这叫什么?(在终端配置文件首选项中,这称为按单词字符选择,因此我将使用该短语。) 例如,在没有web模式的情况下,如果我双击image\u title中的单词title,它将只突出显示title——也就是说,下划线被识别为按单词选择的分隔符 启用web模式后,按单词选择的行为将发生变化,下划线不再是单词分隔符。在上一个示例中,双击现在高亮显示整个图像\u标题。这让我很恼火,因为我通常
image\u title
中的单词title
,它将只突出显示title
——也就是说,下划线被识别为按单词选择的分隔符
启用web模式后,按单词选择的行为将发生变化,下划线不再是单词分隔符。在上一个示例中,双击现在高亮显示整个图像\u标题
。这让我很恼火,因为我通常想要选择下划线分隔标识符的部分。(通常,我希望任何模式都不更改默认选择行为。)
更改web模式的这种行为的选项是什么
编辑以添加:在我的首选模式下,如果我双击
\u
字符,它会选择整个单词,包括下划线。我喜欢这种微妙但精确的选择行为控制。@lawlist-谢谢你的建议!我无法完全遵循这些函数,但它确实引导我走上了正确的道路:
- 找到
,搜索谷歌双鼠标-1
- 找到了使用全局函数的
- 该页面提到了
,您提到了语法表
,我们这里有什么web-mode.el包含一个语法表
(以及对的引用)语法表
(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.")
(defvar web模式语法表
(let((表(生成语法表)))
(修改语法条目?uw“表)
(修改语法条目?<“”表)
(修改语法条目?>“”表)
(修改语法条目?&“.”表)
(修改语法条目?/“”表)
(修改语法条目?=“”表)
(修改语法条目?%“”表)
表1)
“用于显示空白的语法表。”)
我假设?u“w”
表示它将u
视为一个单词字符。我将“w”
改为“
”,下划线现在被视为我想要的单词边界
堆栈溢出、谷歌和github万岁
另外,现在我已经有了一些正确的关键字,Stack Overflow建议了一个可能有用的相关答案:@lawlist-谢谢你的建议!我无法完全遵循这些函数,但它确实引导我走上了正确的道路:
- 找到
,搜索谷歌双鼠标-1
- 找到了使用全局函数的
- 该页面提到了
,您提到了语法表
,我们这里有什么web-mode.el包含一个语法表
(以及对的引用)语法表
(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.")
(defvar web模式语法表
(let((表(生成语法表)))
(修改语法条目?uw“表)
(修改语法条目?<“”表)
(修改语法条目?>“”表)
(修改语法条目?&“.”表)
(修改语法条目?/“”表)
(修改语法条目?=“”表)
(修改语法条目?%“”表)
表1)
“用于显示空白的语法表。”)
我假设?u“w”
表示它将u
视为一个单词字符。我将“w”
改为“
”,下划线现在被视为我想要的单词边界
堆栈溢出、谷歌和github万岁
另外,现在我有了一些正确的关键字,Stack Overflow建议了一个可能有用的相关答案:发布这个问题的潜在答案的问题是,Emacs开发人员一直在不同版本和未来版本之间更改
mouse.el
中函数的内部工作方式。您的Emacs版本可能与其他人使用的版本不同。您需要做的是按C-hk
,然后左键单击以查看调用的两个函数。然后,您需要M-x find function
跟踪跟踪到负责选择区域的函数。一旦你这么做了,您需要使用自定义语法表创建一个新函数--with syntax table
。您需要使用with syntax table
,因为您不想更改当前缓冲区中主模式使用的语法表
——您只需要在缓冲区的select region组件期间使用一个临时语法表有争议的职能。例如,您可以复制文本模式所使用的语法表
,或者简单地创建和定义自己的语法表。一旦找到了有问题的函数,您就可以用使用临时语法表的建议将其包装起来——大多数Emacs用户将源代码视为神圣的,他们更愿意使用建议而不是创建新函数。:)发布此问题的潜在答案的问题是,Emacs开发人员一直在更改不同版本和未来版本之间mouse.el
中函数的内部工作方式。您的Emacs版本可能与其他人使用的版本不同。您需要做的是按C-hk
,然后左键单击以查看调用的两个函数。然后,您需要M-x find function
跟踪跟踪到负责选择区域的函数。一旦您这样做了,您需要使用自定义语法表创建一个新函数--with syntax table
。您需要使用with syntax table
,因为您不想更改当前缓冲区中主模式使用的语法表
,您只需要一个te