Comment activer le mode flyspell dans emacs pour tous les fichiers et tous les modes principaux?

Comment activer flyspell-le mode qui sera automatiquement utilisé pour chaque fichier et chaque mode majeur dès que Emacs est commencé?

en outre, Existe-t-il un dictionnaire XML qui ne marque pas les balises XML comme des mots Mal orthographiés?

12
demandé sur mart1n 2011-07-28 18:34:29

3 réponses

les Chances sont, vous ne voulez pas vraiment flyspell-mode activé pour tous les modes, mais au lieu de cela want flyspell-mode activé pour les modes qui traitent principalement du texte (mode texte, mode message, etc.), et flyspell-prog-mode pour les modes de programmation (C / C++, Java, Ruby, Lisp, etc.). La différence entre les deux modes est que le premier vérifie tous les mots, alors que le flyspell-prog-mode vérifie seulement les mots dans les commentaires et les chaînes (évitant ainsi de vérifier le code, qui n'est généralement pas des mots).

de toute façon, là n'est pas un seul endroit pour activer flyspell dans tous les fichiers/buffers car il a été écrit pour être toujours Local buffer. Un proche rapprochement serait

(defun turn-on-flyspell () (flyspell-mode 1))
(add-hook 'find-file-hooks 'turn-on-flyspell)

cela ne couvre pas les buffers qui n'ont pas de fichiers associés, et je ne conseille pas de l'utiliser car il ne fait pas de distinction entre les modes de programmation et les modes non-programmants - ce qui me semble utile.

parce qu'il n'y a aucun moyen de savoir si certains modes sont des modes de programmation ou non, vous devez ajouter manuellement des personnalisations pour tous les modes de programmation qui vous tiennent à cœur, avec quelque chose comme:

(mapcar (lambda (mode-hook) (add-hook mode-hook 'flyspell-prog-mode))
        '(c-mode-common-hook tcl-mode-hook emacs-lisp-mode-hook 
          ruby-mode-hook java-mode-hook))

Note: les deux morceaux de code ne fonctionnent probablement pas bien ensemble.

et, en ce qui concerne le XML, flyspell a déjà des personnalisations pour sgml-mode,html-mode et nxml-mode pour ne pas vérifier l'orthographe des tags (à partir D'Emacs 23.2). Si vous utilisez une ancienne version d'Emacs (21.1), vous devez être en mesure d'ajouter à votre .emacs pour obtenir le support nxml-mode:

(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify)
17
répondu Trey Jackson 2011-07-28 15:15:23

la réponse à cette question a fonctionné pour moi:

comment activer la vérification automatique de l'orthographe par défaut?

de Plus, il semble être plus général, contrairement à l'actuelle voté réponse. Ajoutez les lignes suivantes à votre .emacs ou init.el.

(add-hook 'text-mode-hook 'flyspell-mode)
(add-hook 'prog-mode-hook 'flyspell-prog-mode)
18
répondu b4hand 2017-05-23 12:19:19

Vous pouvez ajouter ce qui suit à votre fichier Emacs init:

(flyspell tous les modes)

La description de la fonction indique:

Utilisez Flyspell dans tous les modes principaux. S'applique à la fois aux tampons existants et des tampons que vous créez ensuite. Désactive `flyspell-texte-modes" si sur.

EDIT: apparemment la fonction ci-dessus n'est incluse que dans la version de flyspell qui est dans Emacs 24. Si vous ne pouvez pas utiliser cette version, vous devez utilisez plutôt la solution suggérée par Trey pour "semi-global" activer flyspell. Pour désactiver la vérification des balises XML avec NXML, vous pouvez ajouter la ligne suivante à votre fichier Emacs init:

(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify)

Remarque: Cette ligne est déjà dans le flyspell.el inclus dans Emacs 24.

3
répondu zev 2011-07-28 15:30:46