如何在gedit中设置用户定义的函数名称?
我试图调整gedit风格,以便用户定义的函数具有不同的颜色。如何在gedit中设置用户定义的函数名称?
我通过http://library.gnome.org/devel/gtksourceview-2.0/stable/lang-reference.html搜索,但我找不到任何东西。
我认为<style name="def:function" />
可能会这样做,但它似乎对gedit没有影响。
<?xml version="1.0" ?>
<style-scheme id="wombat" name="Wombat" version="1.0">
<author/>
<_description>Wombat theme</_description>
<style background="#2d2d2d" name="current-line"/>
<style background="#857b6f" bold="true" foreground="#fff000" name="bracket-match"/>
<style background="#242424" bold="true" foreground="#fff000" name="search-match"/>
<style background="#656565" name="cursor"/>
<style background="#242424" foreground="#f6f3e8" name="text"/>
<style background="#272727" foreground="#857b6f" name="line-numbers"/>
<style foreground="#363636" italic="true" name="def:comment"/>
<style foreground="#e5786d" name="def:constant"/>
<style foreground="#95e454" italic="true" name="def:string"/>
<style foreground="#cae682" name="def:identifier"/>
<style foreground="#000000" name="def:function"/>
<style foreground="#cae682" name="def:type"/>
<style foreground="#8ac6f2" name="def:statement"/>
<style foreground="#8ac6f2" name="def:keyword"/>
<style foreground="#e5786d" name="def:preprocessor"/>
<style foreground="#e5786d" name="def:number"/>
<style foreground="#e7f6da" name="def:specials"/>
</style-scheme>
任何提示?谢谢!
您需要编辑语言定义文件以添加新节。语言的定义是python.lang
,对我来说是/usr/share/gtksourceview-2.0/language-specs
。
您首先需要添加一个样式的风格ID,你要创建:
<style id="class-name" _name="Python Class Name" map-to="def:type"/>
然后你需要一个新的环境下的<context-id="python"
部分添加到该文件:
<context id="class-name" style-ref="class-name" style-inside="true">
<start>\%{string-prefix}def\ </start>
<end>\(</end>
<include>
<context ref="python"/>
<context ref="format"/>
<context ref="escaped-char"/>
</include>
</context>
您需要style-inside="true"
不将样式应用到我们匹配的def
或(
。从文档:
风格,内部(可选) 如果该属性是“真”,则突出显示风格将被应用到开始和结束的比赛之间的区域;否则整个上下文将突出显示。
保存该信息,然后重新启动gedit并将函数名称设置为与错误相同的样式,例如,文本AttributeError
会。您可以更改语言文件顶部的map-to
行,以更改应用于您的函数名称的样式。
重用现有样式而不是为类名定义新样式的好处是,它可以用于将来安装的所有gedit主题 - 它们不需要修改以添加Python特定的函数名称部分。
编辑: 正如在评论中指出,这种核弹的“高清”的造型。在“类名”部分(我上面的代码)移动到已经存在的“关键字”部分下,修复了这个,因为它移动在层次结构我们的变更较低。我有机会的时候会更新图片。
前:
后:你想在`高清FOO的`foo`
如果我正确首先是理解你,你需要在你的* .lang文件中定义新风格
<style id="function" _name="Functions"/>
然后让所有需要的功能列表一样
<context id="functions" style-ref="function">
<keyword>abs</keyword>
<keyword>acos</keyword>
<keyword>acosh</keyword>
</context>
然后在更新图块定义文件末尾添加新内容
<context ref="functions"/>
其非常重要的正确orde r,上下文定义顺序应该在所有文件中都是相同的,一个元素随时都可以,不要混淆。
,并在你需要在你的风格定义的风格formmat/*。xml文件末尾,在我的情况下,它是
<style name="php:function" foreground="#0000ee" bold="false"/>
其中i采用php应该是你的语言ID,同样在*。 lang文件。
不,你将需要匹配“高清”,因为我相信海报想在'高清FOO(A,B,C)的'foo':'要以不同的颜色突出显示。你无法匹配'foo',因为用户可以随心所欲地调用函数。你几乎要能够抓住任何东西*后*'def'和开括号'('之前,我不知道如何做到这一点正则表达式。 我也想这样,因为它有助于一个文件更容易库内发现功能。 – jozzas 2012-05-30 00:22:45
做(A,B,C):'要以不同的颜色突出显示?这是我的理解,也是我追求的。 – jozzas 2012-05-30 00:23:44
我只注意到我你使用Python假设。我相信你可以为你想要做的任何语言提出类似的规则。 – jozzas 2012-05-30 05:04:31