플라이 스펠 모드 및 플라이 스펠 버퍼에서 {{{…}}}을 제외하는 방법은 무엇입니까?


11

내 emacs에서 많은 MoinMoinWiki 페이지를 편집 하고을 좋아합니다 flyspell-mode. {{{...}}}"backtick text backtick" 뿐만 아니라 (여러 줄로 된) 사전 형식화 된 내용은 일반적으로 철자 검사에 적합하지 않은 프로그래밍 코드 스 니펫을 포함합니다.

프로그래밍 코드를 포함 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는 버퍼를 맞춤법 검사 할 때 원하는 것을 수행하지만 flyspell에는 적합하지 않습니다. 다음과 같은 항목을 추가하십시오.

(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). 그것을 연결하는 flyspell-mode것은 효과가 없었지만 fundamental-mode대신에 좋아 text-mode보입니다.
towi

흠 ... ^{{{... ^}}}정규식과 Backtick-word-Backtick 중 하나를 처리하는 방법은 무엇입니까?
towi

backtick-text-backtick에 대한 지원을 추가했습니다. 이 문장은 한 줄에만 표시된다고 가정합니다. 그 앞에 줄에 짝수 또는 홀수의 백틱이 있는지 계산합니다.
Ivan Andrus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.