如何修复升华文本2在TCL中的转义字符?
下面两行代码似乎打破了TCL的语法色彩如何修复升华文本2在TCL中的转义字符?,tcl,highlight,sublimetext2,Tcl,Highlight,Sublimetext2,下面两行代码似乎打破了TCL的语法色彩 regsub -all {/} $original {\\\\} target # The last } is being escaped set grep_keyword [string trim $grep_keyword {"}] # The " character is starting a new quote 当我打开文件时,代码是这样的。有没有办法解决这个问题?虽然从技术上讲,问题出在Sublime Text 2上(您已经发现
regsub -all {/} $original {\\\\} target # The last } is being escaped
set grep_keyword [string trim $grep_keyword {"}] # The " character is starting a new quote
当我打开文件时,代码是这样的。有没有办法解决这个问题?虽然从技术上讲,问题出在Sublime Text 2上(您已经发现,在某些特殊情况下,正确突出显示Tcl不是很简单),但将Tcl代码更改为语义等效的代码更容易
regsub -all {/} $original "\\\\\\\\" target
可以考虑使用<代码>字符串映射< /代码>第一个,当然:
set target [string map {"/" "\\\\"} $original]
# or this:
# set target [string map {/ {\\}} $original]
# but I'm not sure if the editor will like that...
所以,我又回到这一点上,努力解决我的问题。我修改了TCL的tmLangauge文件。}字符被识别为结束大括号。我刚才也在这个定义中添加了\}
<key>braces</key>
<dict>
<key>begin</key>
<string>(?:^|(?<=\s))\{</string>
<key>comment</key>
<string>matches a single brace-enclosed word</string>
<key>end</key>
<string>\}([^\s\]]*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>invalid.illegal.tcl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[{}\n]</string>
<key>name</key>
<string>constant.character.escape.tcl</string>
</dict>
<dict>
<key>include</key>
<string>#inner-braces</string>
</dict>
</array>
</dict>
大括号
开始
(?:^|(?=\s))\{
评论
匹配一个括号内的单词
结束
\}([^\s\]]*)
尾声
1.
名称
无效。非法。tcl
模式
比赛
\\[{}\n]
名称
constant.character.escape.tcl
包括
#内支架
在上面,我对RegEx做了如下修改:
<string>\}([^\s\]]*)|\\}\s</string>
\}([^\s\]]*)\\\}\s
您是想修复代码,还是想修复Sublime Text 2?我想我可以修复代码,但总有破坏某些东西的风险。这些脚本是“任务关键型”系统的一部分,如果系统崩溃,情况会非常糟糕。非常感谢您的建议。这可能就是我最后要做的。
<string>\}([^\s\]]*)|\\}\s</string>