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

时间:2011-12-20 13:02:45

标签: syntax-highlighting notepad++ twig

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

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

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

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

修改

TWIG是一种html模板语言/引擎。它们的语法与html相同,为控制语句添加了一些打开/关闭标记(特别是{%%},{{}}和{##})。您可以在the twig website

了解更多相关信息

编辑#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>

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

编辑#3

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

3 个答案:

答案 0 :(得分:15)

您应该能够只复制和编辑XML定义文件(html.xml);只要您不需要基本功能之外的东西,例如代码折叠,基于案例处理块或多个条件的高级着色,主角字符的单独格式,标签着色,基于xml的注释,语言混合(着色嵌入式脚本),支持鸭子类型的着色等。如果你需要任何“高级”的东西,你需要编写自己的词法分析器,在这种情况下,大多数情况都适用。

即使如此,下面列出的模板也可以让您自己开始使用自己的语言定义文件。


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

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

然后,您将使用plug-in插入自定义词法分析器,例如Gary's Lua Highlighter Plugin

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

话虽这么说,Geany与Notepad ++非常相似(基于相同的引擎,Scintilla),所以你可能想知道它是否已经为Geany完成,或者是否有一个开源项目它在工作中。这至少会给你一个良好的开端。

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

GEdit发布了他们的语言here的XML定义,这可能有助于在创建自己的定义文件或词法分析器时作为参考;还有来自Twig here的人发布的另一个模板可能会有所帮助。

以下是我能找到的用于创建自定义词法分析器/用户定义语言的最佳Notepad ++特定教程:

如果你想要勇敢并建立自己的Scintilla dll,请参考这些线程,看一个让它工作的人,并显示在语言列表中(使用上一个/下一个线程消息来查看响应,或者线程索引;它是一个邮件列表,所以它的UI不是最好的)

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

答案 1 :(得分:10)

我在这里做了一个荧光笔: https://github.com/Banane9/notepadplusplus-twig

答案 2 :(得分:-1)

此帖可能重复:https://superuser.com/questions/40876/assigning-custom-extensions-to-a-languages-syntax-highlighting-in-notepad

您需要做的就是在Settings-&gt; Style Configurator

中添加自定义扩展程序

点击HTML并在User Ext框中添加您的扩展程序。

编辑:如果您想为您的语言添加更多规则,您可能需要在记事本++中添加另一个XML - &gt; plugins-&gt; API 如果您认为它像HTML一样,只需复制html.xml并保存为twig.xml即可 向此XML文件添加更多规则