एक gedit सिंटैक्स हाइलाइटिंग फ़ाइल को संशोधित करना


9

मैं Gedit से एक हाइलाइटिंग फ़ाइल बदलने की कोशिश कर रहा हूं। मैंने फ़ाइल /usr/share/gtksourceview-3.0/language-specs/fortran.lang को संशोधित किया है क्योंकि मैं उन मामलों को बदलना चाहता हूं जिनमें संपादक टिप्पणी के रूप में बयान लेता है। मेरे पास समस्या यह है कि जब मैं नई हाइलाइटिंग योजना का चयन करता हूं तो कुछ भी हाइलाइट नहीं होता है, यह सिर्फ सादे पाठ के रूप में रहता है।

फ़ाइल Fortran.lang को su अनुमतियों के साथ खोला गया था और मैंने अभी सब कुछ एक नई Gedit फ़ाइल में कॉपी-पेस्ट किया और बाद में इसे उसी फ़ोल्डर में Fortran_enhanced.lang के रूप में सहेजा। मैंने मूल फ़ाइल में जो परिवर्तन किए हैं, वे ये हैं:

मूल Fortran.lang फ़ाइल:

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

संशोधित Fortran_enhanced.lang फ़ाइल:

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

मैंने इस प्रश्न को पढ़ा है [ कस्टम gedit सिंटेक्स हाइलाइटिंग डमीज़ के लिए? ] और मैंने नई Fortran_enhanced.lang फ़ाइल को पढ़ने योग्य बनाने की कोशिश की

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

लेकिन इससे कोई फर्क नहीं पड़ा।

मेरा कहना है कि मैंने पहले कभी इस तरह का काम नहीं किया है और मैं ज्यादातर भाषा की फाइल भी नहीं समझ पा रहा हूं, इसलिए मैं हर आलोचना के लिए खुला हूं, क्योंकि मुझे विशुद्ध रूप से अंतर्ज्ञान द्वारा निर्देशित किया गया है।

अग्रिम धन्यवाद!


नीचे अपनी पोस्ट के नीचे आपने कहा cd /usr/share/gtksourceview-3.0/language-specs। क्या वह वास्तविक कमांड है जिसे आपने चलाया था? यदि यह है, तो आपको बस फ़ाइल को स्थानांतरित करने की आवश्यकता है /usr/local/share/gtksourceview-3.0/language-specs
evan.bovie 5

@ Emb1995 मैंने आपके द्वारा सुझाए अनुसार फ़ोल्डर gtksourceview-3.0 / usr / local / शेयर की प्रतिलिपि बनाई है (मैं कहता हूं कि प्रतिलिपि बनाई गई है क्योंकि फ़ोल्डर मेरे कंप्यूटर में / usr / शेयर / में स्थित था)। वैसे भी, यह मेरे लिए काम नहीं लगता था, मुझे अभी भी सादा पाठ मिलता है जब gedit में नई हाइलाइटिंग फ़ाइल चुनें :(
ऑस्कर सलता रीग

जवाबों:


4

मुझे लगता है कि मुझे पता चला कि आपके लिए क्या गलत हुआ:

समाधान

यह अच्छा और सही है, कि आपने टैग में id(और _name) बदल दिया है <language ...>। आखिरकार यह आपके द्वारा बनाई गई एक नई हाइलाइटिंग योजना है।

हालाँकि आपको तब फ़ाइल में दूसरी जगह भी बदलनी होगी जहाँ इस आईडी का उपयोग किया जाता है। भाषा की परिभाषा में और नीचे (प्रश्न में उद्धरण में छोड़ दिया गया है) आप इसे पाते हैं:

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

जाहिर है, आपके पास उसी आईडी के साथ एक संदर्भ होना चाहिए, जिसमें आप भाषा का उपयोग करते हैं / सभी उपयोग किए गए संदर्भ परिभाषाओं का संदर्भ देते हैं, ताकि किसी विशिष्ट योजना के चुने जाने पर gedit / GtkSourceView इसका उपयोग करता है।

मैंने इसे कैसे पाया

मैं इसमें कोई एक्सपर्ट नहीं हूं। मेरी सारी योग्यता यह है कि मैंने पहले XML फाइलें देखी हैं;) इसलिए मैं केवल "शिक्षित" अनुमान लगा सकता था।

एक टर्मिनल विंडो से गेडिट शुरू करते समय मुझे जो कुछ दिखा, वह एक चेतावनी थी

:

(मैंने परीक्षण के दौरान आईडी, नाम और फ़ाइल एक्सटेंशन के रूप में " frtrn " का उपयोग किया , आपको " फोरट्रान_हेनान " के साथ एक ही चेतावनी मिलनी चाहिए )

इससे मुझे शेष फ़ाइल में मूल आईडी की खोज करने में संदेह हुआ। उपरोक्त समाधान को आजमाने के बाद मुझे अपने स्पष्टीकरण का समर्थन करने के लिए निम्न पंक्ति भी मिली:

[परिभाषाएँ] यहाँ हमें एक मुख्य संदर्भ को परिभाषित करना चाहिए, जिसे हम फ़ाइल की शुरुआत में दर्ज करते हैं: ऐसा करने के लिए हम तत्व की आईडी के बराबर आईडी के साथ टैग का उपयोग करते हैं [...]

यह भाषा परिभाषा फ़ाइल ट्यूटोरियल से GtkSourceView प्रलेखन में है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.