在notepad ++中扩展语言定义(用于代码突出显示)

MrG*_*ass 25 syntax-highlighting notepad++ twig

我最近在TWIG做过开发.它是一种非常简单和健壮的html模板语言.

我已经将notepad ++设置为自动将.twig文件视为html.这没关系,但我的twig函数没有任何语法高亮.

twig语法非常简单(按设计),并且很容易添加到记事本++.问题是,我在这个主题上发现的一切都是关于创建一个新的语言定义(我不想重新发明html定义),或者修改一种语言中现有语法位的颜色.

有没有办法复制语言定义,然后在记事本++中修改它?如果没有,在notepad ++中是否有任何方法可以向现有语言定义添加额外的语法位?

编辑

TWIG是一个html模板语言/引擎.它们的语法与html相同,为控制语句添加了一些打开/关闭标记(特别是{%%},{{}}和{##}).你可以在树枝网站上阅读更多相关信息

编辑#2

根据Brian Deragon的回答,我一直在研究3个文件.到目前为止,我已经想到/做了什么:

  • \ plugins\APIs\html.xml - 似乎定义关键字,用于自动完成.我制作了一个名为twig.xml的文件的副本
  • langs.model.xml - 同样是一个关键字列表,包含1个XML文件中的所有语言.我复制了HTML对象并用twig替换了name和ext参数.
  • stylers.model.xml - 具有不同项目的列表,以及每个项目的样式信息(颜色,bg颜色,字体等).我复制了HTML部分并将名称和desc参数更改为twig.

完成这些更改后,我在notepad ++中打开了一个twig文件,希望看到它在语言选项中列出.可悲的是,它没有出现,让我相信其中一些是硬编码的(因此我想要的可能是不可能的).

但是,stylers.model.xml很有趣.每个条目都有一堆项目,定义如下:

<LexerType name="twig" desc="TWIG" ext="">
    <WordsStyle name="DEFAULT" styleID="0" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" />
    <WordsStyle name="COMMENT" styleID="9" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    <WordsStyle name="TAG" styleID="1" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    <WordsStyle name="TAGEND" styleID="11" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    ...
</LexerType>
Run Code Online (Sandbox Code Playgroud)

这些似乎是为不同元素定义样式的地方.我找不到那些定义这些元素的地方.langs.model.xml有一个注释start/end的定义,但没有任何其他分隔符的定义.我真正需要的是一个告诉记事本++将{}视为分隔符的地方,就像现在的<>一样.

编辑#3

我也在查看notepad ++ 用户定义语言的这个列表http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=User_Defined_Language_Files用户定义的语言使用不同的引擎,但我可能能够找到一个与html相似的内容,我可以适应它.

Bri*_*gon 15

您应该能够只复制和编辑XML定义文件(html.xml); 只要你不需要的东西超越了基础知识,如代码折叠,高级着色基于关闭办案块或多个条件语句,为主角单独格式,标签着色的,基于XML的评论,语言混合(着色嵌入式脚本),支持鸭子类型的着色等.如果您需要任何"高级",您需要编写自己的词法分析器,在这种情况下,大多数情况适用.

即使如此,下面列出的模板也可以让您在自己的语言定义文件中抢先一步.


据我所知,Notepad ++使用Scintilla Lexers来确定其代码规则.

你必须创建自己的词法分析器,但是... HTML Scintilla Lexer已经包含在Scintilla 源代码中.

然后你会使用插件来插入你的自定义词法分析器,比如Gary的Lua Highlighter Plugin.

用于构建自定义词法分析器的资源:

话虽这么说,Geany是非常相似的记事本++(基于相同的引擎,Scintilla的),所以你可能想看看是否它已经被用于Geany做,或是否有在作品中为它的开源项目.这至少会让你有个先机.

如果这没有帮助,有内置Twig支持的IDE和编辑器,如:

gedit中已经公布了语言的他们的XML定义在这里,创建自己的定义文件或词法分析器时,这可能有助于作为参考; 这里还有从嫩枝的家伙又发表了模板这里,可能有一定的帮助.

这是最好的Notepad ++ - 用于创建自定义词法分析器/用户定义语言的特定教程,我可以找到:

如果你想获得的勇敢和建立自己的Scintilla的DLL,引用这些线程,看看谁得到它的工作一个人,并在语言列表中显示(使用上一个/下一个线程的消息看反应,或螺纹指数;这是一个邮件列表,所以它的UI不是最好的)

希望有助于或至少让您获得更多的开端!

  • 仍然试图让这个在记事本++中工作.我找不到你所谈论的XML定义文件(我发现只有一个html.xml,它有一堆自动完成的关键字声明).你知道它应该在哪里吗? (2认同)

小智 10

我在这里制作了荧光笔:https: //github.com/Banane9/notepadplusplus-twig