Bir gedit sözdizimi vurgulama dosyasını değiştirme


9

Gedit bir vurgulama dosyasını değiştirmeye çalışıyorum. /Usr/share/gtksourceview-3.0/language-specs/fortran.lang dosyasını değiştirdim çünkü editörün bir açıklama olarak yorum yapması gereken durumları değiştirmek istiyorum. Sahip olduğum sorun, yeni vurgulama şemasını seçtiğimde hiçbir şeyin vurgulanmaması, sadece düz metin olarak kalması.

Fortran.lang dosyası su izinleriyle açıldı ve her şeyi yeni bir Gedit dosyasına kopyaladım ve daha sonra aynı klasöre fortran_enhanced.lang olarak kaydettim. Özgün dosyada yaptığım değişiklikler şunlardır:

Orijinal fortran.lang dosyası:

<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>
(...)

Değiştirilmiş fortran_enhanced.lang dosyası:

                     <!-- 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>
(...)

Bu soruyu okudum [ Dummies için özel gedit Sözdizimi Vurgulama? ] ve yeni fortran_enhanced.lang dosyasını okunabilir hale getirmeye çalıştım

$ cd /usr/share/gtksourceview-3.0/language-specs
$ sudo chmod 0644 fortran_enhanced.lang

ama hiçbir fark yaratmadı.

Daha önce hiç böyle bir şey yapmadığımı söylemeliyim ve dil dosyasının çoğunu bile anlamıyorum, bu yüzden sadece sezgi tarafından yönlendirildiğim için her eleştiriye açığım.

Şimdiden teşekkürler!


Yazınızın alt kısmında dediniz cd /usr/share/gtksourceview-3.0/language-specs. Gerçek komut buydu mu? Öyleyse, dosyayı şu konuma taşımanız yeterlidir /usr/local/share/gtksourceview-3.0/language-specs.
evan.bovie

@ emb1995 gtksourceview-3.0 klasörünü önerdiğiniz gibi / usr / local / share dizinine kopyaladım (klasör bilgisayarımda / usr / share / dizininde bulunduğundan kopyalandığımı söylüyorum). Her neyse, bu benim için işe yaramadı gibi görünüyor, gedit yeni vurgulama dosyasını
seçerken

Yanıtlar:


4

Sanırım senin için neyin yanlış gittiğini öğrendim:

Çözüm

Etiketteki id(ve _name) işaretini değiştirmen iyi ve doğru <language ...>. Sonuçta, oluşturduğunuz yeni bir vurgulama şemasıdır.

Ancak daha sonra bu kimliğin kullanıldığı dosyadaki diğer yeri de değiştirmeniz gerekir. Dil tanımında (sorudaki alıntıda belirtilmez) daha aşağıda bulabilirsiniz:

<context id="fortran" class="no-spell-check">

Görünüşe göre, kullanılan tüm bağlam tanımlarını içeren / referans veren dil ile aynı kimliğe sahip bir içeriğe sahip olmalısınız, böylece gedit / GtkSourceView belirli bir şema seçildiğinde bunu kullanır.

Nasıl buldum

Ben bu konuda hiç uzman değilim. Tüm yeterliliklerim daha önce XML dosyaları gördüm;) Bu yüzden sadece "eğitimli" tahminler yapabilirim.

Beni uçuran şey, terminal penceresinden gedit başlatılırken gösterilen bir uyarıydı

(gedit: 6786): GtkSourceView-UYARI **: '/usr/local/share/gtksourceview-3.0/language-specs/frtrn.lang': Ana dil tanımı eksik (id = "frtrn".)

( Test ederken id, ad ve dosya uzantısı olarak " frtrn " kullandım, " fortran_enhanced " ile aynı uyarıyı almalısınız )

Bu beni dosyanın geri kalanında orijinal kimliği aramak için yeterince şüpheli yaptı. Yukarıdaki çözümü denedikten sonra açıklamamı desteklemek için aşağıdaki satırı da buldum:

[Tanımlar] Burada, dosyanın başında gireceğimiz ana bağlamı tanımlamalıyız: bunu yapmak için öğenin kimliğine eşit bir kimliğe sahip etiketi kullanıyoruz [...]

Bu geliyor dil tanım dosyası öğretici Gtksourceview belgelerinde.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.