Activer le mode espaces blancs uniquement dans certains tampons

8

J'aimerais que le mode espace blanc soit activé pour tous les tampons, sauf pour ceux en mode organisation. C'est facile à faire quand emacs démarre, mais comme j'utilise une copie persistante d'emacs avec le mode démon emacs, je ne peux pas le faire de cette façon.

J'ai essayé:

(require 'whitespace)
(setq whitespace-line-column 80)
(setq whitespace-style '(face lines-tail))
(global-whitespace-mode t)
(add-hook 'org-mode-hook
      (lambda ()
          (visual-line-mode 1)
          (auto-fill-mode -1)
          (setq whitespace-style nil)))

mais dès que je visite un tampon en mode org, tous mes futurs tampons n'ont plus de mode espace blanc.

J'ai pensé à ajouter un crochet pour activer le mode espaces blancs pour les autres modes majeurs, mais cela semble être une mauvaise façon de procéder car je ne veux pas énumérer tous les autres modes possibles.

Je sais qu'il existe un mode espace blanc avec un mode espace global, mais je ne sais pas comment je peux l'utiliser pour aider ici non plus.

Y a-t-il un autre moyen d'y parvenir auquel je ne pense pas?

jcv
la source
3
Vous pouvez modifier la global-whitespace-modedéfinition en ajoutant (unless (eq major-mode 'org-mode) . . .). Ou, vous pouvez l'activer par mode principal plutôt que globalement - c'est-à-dire que pour chaque mode principal, utilisez un crochet et (whitespace-mode 1). Votre idée peut également fonctionner si vous utilisez (setq-local whitespace-style nil), mais techniquement, le mode est toujours actif avec seulement les tripes / umph supprimés.
Lawlist
1
Sans rapport: Vous ne devez pas citer votre lambdas
Malabarba
Bon point sur le lambda cité. Je ne sais pas comment ni pourquoi je me suis retrouvé avec ça de cette façon mais je l'ai retiré de mon .emacs Merci.
jcv

Réponses:

17
(setq whitespace-global-modes '(not org-mode))

Voir C-hv whitespace-global-modes RET

phils
la source
Cela fonctionne parfaitement. Merci. Je savais qu'il devait y avoir quelque chose de simple qui me manquait.
jcv
4

Il est probablement plus facile de désactiver directement le mode espaces blancs à l'aide de

 (whitespace-mode -1)

En outre, whitespace-stylen'est pas une variable locale de tampon, elle est donc également modifiée pour tous les autres tampons. Essayez plutôt

(set (make-local-variable 'whitespace-style) nil)
Kirill
la source
En fait, j'avais initialement désactivé le mode espace blanc directement plutôt que de me tracasser avec le var de style espace blanc. Ce n'était que l'itération actuelle de mes tentatives. Je vais essayer ce que les gens ont suggéré, puis le mettre à jour avec ce qui a fonctionné pour moi.
jcv
Cela fonctionne en fait aussi, mais comme vous l'avez commenté vous-même, désactiver directement le mode espaces blancs plutôt que de gérer le style est une meilleure solution (ce que fait la réponse ci-dessus).
jcv