Menyoroti Sintaks gedit Khusus untuk Dummies?

15

Saya ingin membuat (memiliki, sebenarnya) penyorotan sintaks khusus untuk gedit.

Hanya akan ada beberapa item yang berbeda:

Baris yang dimulai dengan 2 tab. ----- Satu warna. Baris yang dimulai dengan 3 tab. ----- Warna lain. Baris yang dimulai dengan 4 tab. ----- Warna lain. dan garis yang dimulai dengan INT. atau EXT. ----- Warna Lain.

Ini untuk menulis skenario.

Saya melihat halaman wiki definisi bahasa untuk gedit tetapi itu jauh di atas kepala saya.

Apakah ada cara sederhana yang bisa saya lakukan ini?

YAS
sumber

Jawaban:

16

Berikut ini berasal dari manual referensi GtkSourceView, Tutorial dan Referensi Definisi Bahasa v2.0 .

Buat file /usr/share/gtksourceview-2.0/language-specs/screenplay.lang (sebagai root), dengan konten berikut:

<?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>

Pastikan file tersebut dapat dibaca dunia dengan menjalankan

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

Mulai ulang gedit. Sekarang setiap file bernama *.scriptyang Anda buka di gedit harus memperlihatkan jenis "Skenario" di bilah status di bagian bawah. Baris yang diberi indentasi dengan 2, 3, atau 4 tab harus berwarna biru, magenta, dan cyan, masing-masing, dan garis yang dimulai dengan INT. atau EXT. akan berwarna merah dan berani.

Anda dapat menyesuaikan ini dalam beberapa cara:

  • The .scriptakhiran nama file diatur pada baris 5, di "gumpalan" properti. Anda dapat mengubah ini dengan cara yang jelas, dan memasukkan beberapa nilai jika Anda mau, dipisahkan dengan tanda titik koma ( ;).

  • Warna yang Anda dapatkan untuk indentasi dan INT. dan EXT. garis tergantung pada skema warna tertentu yang telah Anda pilih untuk gedit. Mereka adalah warna dari gaya komentar, konstan, pengidentifikasi, dan pernyataan (itulah yang map-to="def:comment"dilakukan dll.). Untuk mendapatkan hasil yang berbeda, Anda dapat mengubah skema warna gedit (Edit> Preferensi> Font dan Warna), atau mengatur ulang map-tonilai dalam <style>tag. Jika Anda ingin lebih banyak kontrol, Anda dapat membuat skema warna Anda sendiri sebagai berikut:

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

    Edit screenplay.xml (sebagai root). Ganti tiga baris non-komentar pertama dengan:

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

    Kemudian sesuaikan warna (dan mungkin gaya lain juga, misalnya bold="true") dari def: comment, def: constant, def: identifier, dan def: pernyataan gaya. Mulai kembali gedit, dan ubah skema warna gedit menjadi Skenario untuk melihat warna baru Anda. Perhatikan bahwa itu adalah perubahan global; Anda mungkin ingin mengubah kembali ke skema warna biasa untuk mengedit file lain.

Perhatikan bahwa setiap kali Anda mengubah file screenplay.lang atau screenplay.xml, Anda harus memulai ulang gedit untuk melihat hasilnya.

Andrew Schulman
sumber
Itu berhasil! LUAR BIASA!
YAS
Terima kasih, saya memiliki kasus penggunaan yang sama, menyoroti garis yang terkait tetapi berbeda secara fisik dengan warna yang sama dan ini banyak membantu.
Eloff