我最近在TWIG做过开发。它是一种非常简单和健壮的html模板语言。
我已将notepad ++设置为自动将.twig文件视为html。这没关系,但我的twig函数没有任何语法高亮。
twig语法非常简单(按设计),并且很容易添加到记事本++。问题是,我在这个主题上发现的一切都是关于创建一个新的语言定义(我不想重新发明html定义),或者修改一种语言中现有语法位的颜色。
有没有办法复制语言定义然后在notepad ++中修改它?如果没有,是否有任何方法在notepad ++中为现有语言定义添加额外的语法位?
修改的
TWIG是一种html模板语言/引擎。它们的语法与html相同,为控制语句添加了一些打开/关闭标记(特别是{%%},{{}}和{##})。您可以在the twig website
了解更多相关信息编辑#2
根据Brian Deragon的回答,我一直在研究3个文件。到目前为止,我已经想到/做了什么:
完成了这些更改,我在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相似的内容,以便我能够适应它。
答案 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)
您需要做的就是在Settings-&gt; Style Configurator
中添加自定义扩展程序点击HTML并在User Ext框中添加您的扩展程序。
编辑:如果您想为您的语言添加更多规则,您可能需要在记事本++中添加另一个XML - &gt; plugins-&gt; API 如果您认为它像HTML一样,只需复制html.xml并保存为twig.xml即可 向此XML文件添加更多规则