2016-11-12 10 views
0

Je suis nouveau avec emacs et j'aimerais savoir comment pouvons-nous désactiver le mode ligne de surbrillance (global-hl-line-mode) lorsque nous sommes dans le Mode VISUEL du Mode Mal. Je trouve vraiment déroutant quand on commence à sélectionner un bloc avec la ligne hl activée, même si les couleurs de fond sont différentes. Bien sûr, je veux que le mode hl-line soit de nouveau activé lorsque nous quittons le mode VISUAL. Merci.Désactiver la surbrillance en mode visuel (mode maléfique)

EDIT: J'ai essayé celui-ci et j'ai finalement pu désactiver hl-line en mode VISUAL.

(add-hook « mal-entrée-étatique-visuel crochet (lambda() (setq local global hl en ligne en mode nul)))

Mais je ne pouvais pas l'activer si Je pars. J'ai essayé, mais ça n'a pas:

(add-hook « mal-sortie-état-visuel crochet (lambda() (ligne mode global hl 1)))

EDIT : Nevermind, cela fonctionne réellement: (add-hook « entrée mal-état-visuel-crochet (lambda() (setq local-global hl en ligne en mode nulle)))

(add- crochet 'mal-visuel-état-sortie-crochet (lambda() (global-hl-ligne-mode nil)))

Répondre

0

Il pourrait être préférable de désactiver hl-l En mode ine dans le tampon courant, plutôt que de le désactiver globalement:

(add-hook 'evil-visual-state-entry-hook (lambda() (hl-line-mode -1))) 
(add-hook 'evil-visual-state-exit-hook (lambda() (hl-line-mode +1))) 

Notez que cela peut être un problème si vous ne l'utilisez global-hl-line-mode. hl-line-mode serait activé chaque fois que vous quittez le mode visuel, que le mode hl-line soit activé ou non. Voilà ce que je piraté ensemble pour empêcher que:

(defvar-local was-hl-line-mode-on nil) 
(defun hl-line-on-maybe() (if was-hl-line-mode-on (hl-line-mode +1))) 
(defun hl-line-off-maybe() (if was-hl-line-mode-on (hl-line-mode -1))) 
(add-hook 'hl-line-mode-hook 
    (lambda() (if hl-line-mode (setq was-hl-line-mode-on t))))) 

(add-hook 'evil-visual-state-entry-hook 'hl-line-off-maybe) 
(add-hook 'evil-visual-state-exit-hook 'hl-line-on-maybe) 

De cette façon hl-line-mode ne sera pas altérée, sauf si elle a été explicitement activé dans la mémoire tampon au préalable, par exemple, avec un (add-hook 'python-mode-hook 'hl-line-mode).

EDIT: a corrigé le hook en mode ligne hl dans le second extrait.

+0

Merci @Henrik L. Vous avez raison. En fait je désactive le mode hl-line quand j'ouvre par exemple ansi-term, donc je ne veux pas enabe hl-line après avoir quitté le mode visuel (je ne l'ai pas remarqué). Mais l'extrait ci-dessus ne semble pas fonctionner. Quand j'entre en mode visuel, la ligne hl est toujours là ... –

+0

@WalidBer Mon mauvais! Il y a eu une erreur dans le deuxième extrait. L'instruction if dans le hook hl-line a incorrectement coché 'was-hl-line-mode-on' au lieu de' hl-line-mode'. Je l'ai réparé. Cela devrait fonctionner maintenant. –