傻瓜的自定义 gedit 语法突出显示?

YAS*_*YAS 16 gedit highlighting syntax

我想为 gedit 制作(实际上)一个自定义语法突出显示。

只会有几个不同的项目:

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

这是用来写剧本的。

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

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

And*_*man 18

以下内容来自 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>
Run Code Online (Sandbox Code Playgroud)

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

sudo chmod 0644 /usr/share/gtksourceview-2.0/language-specs/screenplay.lang
Run Code Online (Sandbox Code Playgroud)

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

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

  • .script文件名的后缀被设置在第5行,在“水珠”属性。您可以通过明显的方式更改此设置,并根据需要包含多个值,并以分号 ( ;)分隔。

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

    cd /usr/share/gtksourceview-2.0/styles
    sudo cp classic.xml screenplay.xml
    
    Run Code Online (Sandbox Code Playgroud)

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

    <style-scheme id="screenplay" _name="Screenplay" version="1.0">
      <author>YAS</author>
      <_description>Screenplay color scheme</_description>
    
    Run Code Online (Sandbox Code Playgroud)

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

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