我在TextMate中使用了自定义语法highligher。它在TextMate 1中很好用,但在Textmate 2中,它将整行视为一个单词。
这会影响:
Textmate 1以前在一般首选项中都有一个“单词边界”选项,我认为这就是为什么这样的原因。
我了解Textmate 2 refactored的单词边界处理,但是我不了解如何使我的语法包在新的范例中工作。
我的语言语法非常简单,它具有如下条目:
{ patterns = (
{
name = 'constant.language.toStart.todo';
match = '^\s*o\s.*';
// ^ Starting at the beginning of the line,
// \s* Preceded by any number of spaces
// o\s Match any "o "
// .* Then match all chars after it
}
}
我是否可以修改匹配器,以使编辑器尊重这些匹配模式中的单词边界?
答案 0 :(得分:2)
正如您在博客文章中所指出的那样,出于选择目的,我们现在将某些语法匹配的区域视为“单词”。您突出显示的区域都是常数,因此将其视为一个很长的单词。
您需要为每个部分赋予不同的范围以更正此问题,它们既可以是恒定的,也必须是唯一的。另一种选择是给它们不同的范围,也许将todo部分作为字符串匹配?
如果给它们一个常量和字符串范围,则工作将完成。如果给它们提供不同的常量范围,则需要为每个给它们提供不同的cd C:\Program Files (x86)\Tesseract-OCR
C:\Program Files (x86)\Tesseract-OCR> tesseract --version
值创建一个首选项。 (该值并不重要,只需要唯一即可。)
您还可以为整行提供characterClass
包装器作用域,这是我们通常对这样的代码区域执行的操作,如果您希望将行的作用域限制为执行操作等的单数形式。
例如:
meta
答案 1 :(得分:0)
。*是贪婪的,因此正则表达式会尽可能匹配行尾。*?。就我所能看到的是您正在寻找的东西;如果您希望上面的模式与' o oopps '行中的' o '相匹配。