Saya mencoba mengubah file sorotan dari Gedit. Saya telah memodifikasi file /usr/share/gtksourceview-3.0/language-specs/fortran.lang karena saya ingin mengubah kasus di mana editor mengambil pernyataan sebagai komentar. Masalah yang saya miliki adalah bahwa ketika saya memilih skema penyorotan baru, tidak ada yang disorot, itu hanya tetap sebagai teks biasa.
File fortran.lang dibuka dengan izin su dan saya hanya menyalin-menempelkan semuanya ke file Gedit baru dan kemudian menyimpannya sebagai fortran_enhanced.lang di folder yang sama. Perubahan yang saya lakukan pada file asli adalah:
File fortran.lang asli:
<language id="fortran" _name="Fortran 95" version="2.0" _section="Sources">
<metadata>
<property name="mimetypes">text/x-fortran</property>
<property name="globs">*.f;*.f90;*.f95;*.for</property>
<property name="line-comment-start">!</property>
</metadata>
<styles>
<style id="comment" _name="Comment" map-to="def:comment"/>
<style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
<style id="intrinsic" _name="Intrinsic function" map-to="def:builtin"/>
<style id="boz-literal" _name="BOZ Literal" map-to="def:base-n-integer"/>
<style id="decimal" _name="Decimal" map-to="def:decimal"/>
<style id="type" _name="Data Type" map-to="def:type"/>
</styles>
<default-regex-options case-sensitive="false"/>
<definitions>
<!-- Note: contains an hack to avoid considering ^COMMON a comment -->
<context id="line-comment" style-ref="comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
<start>!|(^[Cc](\b|[^OoAaYy]))</start>
<include>
<context ref="def:escape"/>
<context ref="def:in-line-comment"/>
</include>
</context>
(...)
File fortran_enhanced.lang yang dimodifikasi:
<!-- Note: changed language id and name -->
<language id="fortran_enhanced" _name="Fortran 95 2.0" version="2.0" _section="Sources">
<metadata>
<property name="mimetypes">text/x-fortran</property>
<!-- Note: removed *.f and *.for from file extensions -->
<property name="globs">*.f90;*.f95;</property>
<property name="line-comment-start">!</property>
</metadata>
<styles>
<style id="comment" _name="Comment" map-to="def:comment"/>
<style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
<style id="intrinsic" _name="Intrinsic function" map-to="def:builtin"/>
<style id="boz-literal" _name="BOZ Literal" map-to="def:base-n-integer"/>
<style id="decimal" _name="Decimal" map-to="def:decimal"/>
<style id="type" _name="Data Type" map-to="def:type"/>
</styles>
<default-regex-options case-sensitive="false"/>
<definitions>
<!-- Note: I want comments only beginning with !, not C -->
<context id="line-comment" style-ref="comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
<start>!</start>
<include>
<context ref="def:escape"/>
<context ref="def:in-line-comment"/>
</include>
</context>
(...)
Saya telah membaca pertanyaan ini [ Menyoroti Sintaks gedit Kustom untuk Dummies? ] dan saya mencoba membuat file fortran_enhanced.lang baru dapat dibaca
$ cd /usr/share/gtksourceview-3.0/language-specs
$ sudo chmod 0644 fortran_enhanced.lang
tapi itu tidak ada bedanya.
Saya harus mengatakan bahwa saya belum pernah melakukan hal seperti ini sebelumnya dan saya bahkan tidak mengerti sebagian besar file bahasa, jadi saya terbuka untuk setiap kritik, karena saya dibimbing sepenuhnya oleh intuisi.
Terima kasih sebelumnya!
sumber
cd /usr/share/gtksourceview-3.0/language-specs
. Apakah itu perintah sebenarnya yang Anda jalankan? Jika ya, Anda hanya perlu memindahkan file/usr/local/share/gtksourceview-3.0/language-specs
.Jawaban:
Saya pikir saya tahu apa yang salah untuk Anda:
Larutan
Bagus dan benar, bahwa Anda mengubah tanda
id
(dan_name
) di<language ...>
tag. Bagaimanapun, ini adalah skema penyorotan baru yang Anda buat.Namun Anda kemudian harus mengubah juga tempat lain di file tempat id ini digunakan. Lebih jauh ke bawah dalam definisi bahasa (dihilangkan dalam kutipan dalam pertanyaan) Anda menemukan ini:
Rupanya, Anda harus memiliki konteks dengan id yang sama dengan bahasa Anda termasuk / merujuk semua definisi konteks yang digunakan, sehingga gedit / GtkSourceView menggunakannya ketika skema tertentu dipilih.
Bagaimana saya menemukannya
Saya sama sekali tidak ahli dalam hal ini. Semua kualifikasi saya adalah bahwa saya telah melihat file XML sebelumnya;) Jadi saya hanya bisa membuat tebakan "berpendidikan".
Apa yang memberi saya informasi adalah peringatan yang ditunjukkan saat memulai gedit dari jendela terminal
(Saya menggunakan " frtrn " sebagai id, nama dan ekstensi file saat menguji, Anda harus mendapatkan peringatan yang sama dengan " fortran_enhanced ")
Ini membuat saya cukup curiga untuk mencari ID asli di sisa file. Setelah mencoba solusi di atas saya juga menemukan baris berikut untuk mendukung penjelasan saya:
Ini dari tutorial file definisi bahasa di dokumentasi GtkSourceView.
sumber