在Scheme中为字符文字调整Vim语法文件

时间:2017-03-29 14:48:18

标签: vim scheme guile

对于喜欢代码的人来说,没有什么比查看丑陋的代码更糟糕了。我scheme.vim上编辑器vim的当前语法突出显示文件debian似乎无法识别一些完全合法的字符文字(至少在guile或{{1} }})。例如,引用十六进制unicode点scm的字符文字#\x0000被识别为正确显示,但是如果我使用八进制表示0x0000或名称表示{{1}然后#\000给了我这个明亮的橙色(我猜的意图是强调错误条件)。有没有人有建议帮我解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是评论中出现的更精彩的版本:

现有语法文件scheme.vim可能识别字符文字的某些名称,例如#\newline,这为我们提供了搜索位置的起点:

syn match schemeCharacter "#\\newline"

然后只需要使用新的所需名称向文件添加类似的行......

syn match schemeCharacter "#\\linefeed"
...

现在我们知道现有文件正确格式化了字符文字,其中unicode点以十六进制形式表示。正在搜索schemeCharacter的其他事件,我们发现:

syn match schemeCharacter "#\\x[0-9a-fA-F]\+"

这看起来像是一种指定正则表达式表达式以匹配前面带有#\x的十六进制文字的方法。为了以八进制格式添加字符文字的语法识别,我们只需要使用适当的正则表达式添加此类型的另一行,这次允许解析八进制文字:

syn match schemeCharacter "#\\[0-7]\+"

注意:根据GNU guile手册,R7RS使用文字#\escape代替#\esc(或以及?)。如果您希望语法文件都能识别这两个文字,那么您不能简单地将与“逃避”相关的行放在'第一。也许替换“esc'由:

 syn match schemeCharacter "#\\esc[^a]"

表示您将匹配任何#\esc,但前提是a