gpt4 book ai didi

emacs - 是否可以根据上下文更改 emacs 语法表?

转载 作者:行者123 更新时间:2023-12-02 02:14:08 26 4
gpt4 key购买 nike

我正在为 UnrealScript 改进 emacs 主模式. (许多)怪癖之一是它允许像这样的语法在 Unreal 编辑器中指定工具提示:

var() int MyEditorVar <Foo=Bar|Tooltip=My tooltip text isn't quoted>;

变量声明后的尖括号表示以竖线分隔的 Key=Value 元数据对列表,元数据不被引用但可以包含引号——竖线 (|) 或右尖括号 (>) 表示结束。

有没有办法让 emacs 语法表以有用的方式识别这种上下文相关的语法?我希望在这些变量元数据声明中以某种方式突出显示除竖线和右尖括号之外的所有内容,但在其他方面保留其正常突出显示。

现在,单引号字符被设置为引号定界符(语法指示符 "),因此 font-lock-mode 将这样的引号解释为引号字符串的开始,但它不是在这个非常具体的实例中,它会错误地突出显示所有内容,直到找到另一个据称匹配的单引号。

最佳答案

您需要设置一个syntax-propertize-function,它允许您根据上下文将不同的语法指示符应用于缓冲区中的不同字符。

在 Emacs 的 lisp 目录中搜索 syntax-propertize-function 以查看各种示例(从简单到非常复杂的示例)。

您可能希望将“Foo”和“工具提示”之后的“=”字符标记为“通用字符串定界符”,然后对相应的终止符“|”执行相同操作和“>”。另一种方法是将“>”之前的字符标记为(结束)通用字符串定界符,这样您就可以将“<”和“>”标记为开闭括号。

关于emacs - 是否可以根据上下文更改 emacs 语法表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11398058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com