自定义 gedit 语法高亮显示,适​​合新手入门吗?

自定义 gedit 语法高亮显示,适​​合新手入门吗?

我想为 gedit 制作(实际上已经有了)自定义语法高亮功能。

只会有以下几个不同项目:

以 2 个制表符开头的行。----- 一种颜色。以 3 个制表符开头的行。----- 另一种颜色。以 4 个制表符开头的行。----- 另一种颜色。以及以 INT 或 EXT 开头的行。----- 另一种颜色。

这是用于编写剧本。

我查看了 gedit 的语言定义 wiki 页面,但它超出了我的理解范围。

有没有简单的方法可以做到这一点?

答案1

以下内容取自 GtkSourceView 参考手册《语言定义 v2.0》教程参考

创建文件 /usr/share/gtksourceview-2.0/language-specs/screenplay.lang(以 root 身份),内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<language id="screenplay" _name="Screenplay" version="2.0" _section="Markup">
  <metadata>
    <property name="mimetypes">text/plain</property>
    <property name="globs">*.script</property>
  </metadata>
  <styles>
    <style id="indent2" _name="2x indented"  map-to="def:comment" />
    <style id="indent3" _name="3x indented"  map-to="def:constant" />
    <style id="indent4" _name="4x indented"  map-to="def:identifier" />
    <style id="intext"  _name="INT. or EXT." map-to="def:statement" />
  </styles>
  <definitions>
    <context id="screenplay">
      <include>
        <context id="indent4" style-ref="indent4">
          <start>^\t\t\t\t</start>
          <end>$</end>
        </context>
        <context id="indent3" style-ref="indent3">
          <start>^\t\t\t</start>
          <end>$</end>
        </context>
        <context id="indent2" style-ref="indent2">
          <start>^\t\t</start>
          <end>$</end>
        </context>
        <context id="intext" style-ref="intext">
          <start>^(INT|EXT)\.</start>
          <end>$</end>
        </context>
      </include>
    </context>
  </definitions>
</language>

通过运行确保该文件是世界可读的

sudo chmod 0644 /usr/share/gtksourceview-2.0/language-specs/screenplay.lang

重新启动 gedit。现在,*.script您在 gedit 中打开的任何文件都应在底部的状态栏中显示“Screenplay”类型。缩进 2、3 或 4 个制表符的行应分别显示为蓝色、洋红色和青色,以 INT. 或 EXT. 开头的行将显示为红色和粗体。

您可以通过以下几种方式进行调整:

  • 文件.script名后缀在第 5 行的“globs”属性中设置。您可以用显而易见的方式更改它,并根据需要包含多个值,以分号 ( ;) 分隔。

  • 缩进行和 INT. 和 EXT. 行的颜色取决于您为 gedit 选择的特定配色方案。它们是注释、常量、标识符和语句样式的颜色(这就是map-to="def:comment"etc. 的作用)。要获得不同的结果,您可以更改 gedit 配色方案(编辑 > 首选项 > 字体和颜色),或重新排列标签map-to中的值<style>。如果您想要更多的控制权,您可以创建自己的配色方案,如下所示:

    cd /usr/share/gtksourceview-2.0/styles
    sudo cp classic.xml screenplay.xml
    

    编辑 screenplay.xml (以 root 身份)。将前三行非注释行替换为:

    <style-scheme id="screenplay" _name="Screenplay" version="1.0">
      <author>YAS</author>
      <_description>Screenplay color scheme</_description>
    

    然后调整 def:comment、def:constant、def:identifier 和 def:statement 样式的颜色(可能还有其他样式,例如bold="true")。再次重新启动 gedit,并将 gedit 的配色方案更改为 Screenplay 以查看新颜色。请注意,这是一个全局更改;您可能需要改回常规配色方案来编辑​​其他文件。

请注意,任何时候更改 screenplay.lang 或 screenplay.xml 文件,您都必须重新启动 gedit 才能查看结果。

相关内容