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.