फ्लाईस्पेल-मोड और फ्लाईस्पेल-बफर में {{{…}}} को बाहर कैसे करें?


11

मैं अपने Emacs में बहुत सारे MoinMoinWiki पृष्ठ संपादित करता हूँ और प्यार करता हूँ flyspell-mode{{{...}}}(कई लाइनों में) के साथ-साथ "बैकटिक टेक्स्ट बैकटिक" में प्रीफॉर्मेट किया गया सामान आमतौर पर प्रोग्रामिंग कोड के स्निपेट होते हैं जो वर्तनी जांच से कोई मतलब नहीं रखते हैं।

क्या मैं प्रोग्रामिंग कोड को शामिल करने के लिए कॉन्फ़िगर ispell/ flyspellनहीं कर सकता हूं ?

उदाहरण:

Bla bla lorem ipsum die Standardcontainer wie `vector` eine
''Methode'' haben, die ein einzelnes Argument nimmt, also
`vector<T>::swap(vector<T)>&)`. Bla bla und diese `swap`-Methoden sind
von dieser Sorte. Warum das so ist, sehen wir gleich. Bla bla
was '''kanonisch''' ist bla bla Template-Funktion<<tlitref(stdswap)>>

{{{#!highlight c++ title="Man könnte 'std::swap@LT@@GT@' spezialisieren"
namespace std {
  template<> // wir können durchaus im namespace std spezialisieren
  void swap<Thing>(Thing&, Thing&) {
    // ...hier swappen...
  }
}
}}}

Nun, das würde sicherlich in diesem Fall helfen, doch es bleibt ein
größeres Problem: Eine teilweise Spezialisierung lorem ipsum bla bla

जवाबों:


15

चर ispell-skip-region-alistवह करता है जो आप चाहते हैं जब वर्तनी बफर की जाँच करें, लेकिन फ्लाईस्पेल के लिए नहीं। जैसे कोई प्रविष्टि जोड़ें

(add-to-list 'ispell-skip-region-alist
             '("^{{{" . "^}}}"))

दुर्भाग्य से, कुछ क्षेत्रों को अनदेखा करने के लिए फ्लाईस्पेल प्राप्त करना उतना आसान नहीं है। आपको उपयोग करना है flyspell-generic-check-word-predicateजो एक फ़ंक्शन है। कई मोड पहले से ही इसे परिभाषित करते हैं इसलिए आपको उन कार्यों के लिए सलाह के रूप में निम्नलिखित जोड़ना होगा। मैं सरलता के लिए यह मानूंगा कि आप एक मोड का उपयोग कर रहे हैं (मैंने text-modeनीचे इस्तेमाल किया है) जो इसे परिभाषित नहीं करता है। तो आप अपने .emacs में निम्नलिखित जोड़ सकते हैं:

(defun flyspell-ignore-verbatim ()
  "Function used for `flyspell-generic-check-word-predicate' to ignore {{{ }}} blocks."
  (save-excursion
    (widen)
    (let ((p (point))
          (count 0))
      (not (or (and (re-search-backward "^{{{" nil t)
                    (> p (point))
                    ;; If there is no closing }}} then assume we're still in it
                    (or (not (re-search-forward "^}}}" nil t))
                        (< p (point))))
               (eq 1 (progn (while (re-search-backward "`" (line-beginning-position) t)
                              (setq count (1+ count)))
                            (- count (* 2 (/ count 2))))))))))
(put 'text-mode 'flyspell-mode-predicate 'flyspell-ignore-verbatim)

उत्तम! मेरी विधा-रेखा ने कहा (Fundamental Fly)। यह Hooking के लिए flyspell-modeनहीं काम किया है, लेकिन fundamental-modeबजाय text-modeठीक लग रहा है।

हम्म ... मैं दोनों को कैसे संभालूं : ^{{{... ^}}}रेगेक्स और बैकटिक-वर्ड-बैकटिक एक?
टूवी

मैंने backtick-text-backtick के लिए समर्थन जोड़ा। यह मानता है कि इस तरह के बयान केवल एक ही लाइन पर दिखाई देते हैं - यह मायने रखता है कि क्या लाइन पर एक या विषम संख्या भी है।
इवान एंड्रस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.