Come si usa il flyspell nei buffer dell'organizzazione senza il trigger del flyspell su blocchi di codice aggrovigliati?


19

Immagina un buffer org in Emacs come:

* Title

Some text describing the title and the codew (sic) and whatnot.

#+BEGIN_SRC emacs_lisp
(setq backup-by-copying t)
#+END_SRC

Voglio che flyspell controlli il buffer dell'organizzazione (e rilevi l'errore di ortografia) ma ignoro il contenuto tra i segni # + BEGIN_SRC e # + END_SRC. Come si fa a farlo?


2
Sembra che qualcuno dovrà scrivere del codice usando il flyspell-generic-check-word-predicate, se non è già stato inventato. Ecco un thread correlato per flyspell usando flyspell-generic-check-word-predicate: superuser.com/a/345461/206164 ; e, ecco un thread semi-correlato per l'utilizzo di ispell ispell-skip-region-alist, ma non relativo a flyspell: emacs.stackexchange.com/a/2103/2287
elenco delle leggi


Questa domanda è una fregatura di
grettke,

1
@grettke: sembra un duplicato, ma non lo è. La modifica delle impostazioni di Ispell non risolve effettivamente il problema in Flyspell. Almeno non quando l'ho provato.
Brian Z,

Funziona immediatamente nella v8.3 quando richiesto ox.
rasmus

Risposte:


12
;; NO spell check for embedded snippets
(defadvice org-mode-flyspell-verify (after org-mode-flyspell-verify-hack activate)
  (let* ((rlt ad-return-value)
         (begin-regexp "^[ \t]*#\\+begin_\\(src\\|html\\|latex\\|example\\|quote\\)")
         (end-regexp "^[ \t]*#\\+end_\\(src\\|html\\|latex\\|example\\|quote\\)")
         (case-fold-search t)
         b e)
    (when ad-return-value
      (save-excursion
        (setq b (re-search-backward begin-regexp nil t))
        (if b (setq e (re-search-forward end-regexp nil t))))
      (if (and b e (< (point) e)) (setq rlt nil)))
    (setq ad-return-value rlt)))

Nota ispell-skip-region-alist NON è utilizzato da flyspell.

Test su Emacs24.3, 24.4, 24.5, 25.1 con modalità org integrata

La maggior parte degli utenti attiva flyspell per impostazione predefinita. Quindi il codice sopra è abbastanza.

Ma non abilito la modalità flyspell nel file org. Preferisco manualmente M-x flyspell-bufferancora e ancora. Quindi ho bisogno (flyspell-mode 1) (flyspell-mode -1)di hook in modalità org. Sì, accendi e poi disattiva la modalità flyspell. Lo scopo è assicurarsi che il predicato predefinito della modalità org sia caricato.


Suggerisco di aggiungere una citazione a regexp, come: `(begin-regexp" ^ [\ t] * # \\ + begin _ \ (src \\ | html \\ | latex \\ | quote \) ") (end- regexp "^ [\ t] * # \\ + end _ \ (src \\ | html \\ | latex \\ | quote \)") `
prjorgensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.