2016-11-12 5 views
0

Ich bin neu mit Emacs und ich würde gerne wissen, wie können wir den Highlight-Line-Modus (Global-HL-Line-Modus) deaktivieren, wenn wir in der VISUAL Modus des Bösen Modus. Ich finde es sehr verwirrend, wenn wir einen Block mit aktivierter hl-Linie auswählen, auch wenn die Hintergrundfarben unterschiedlich sind. Natürlich möchte ich den hl-line-Modus wieder aktivieren, wenn wir den VISUAL-Modus verlassen. Vielen Dank.Deaktivieren Sie Highlight-Linie im visuellen Modus (böser Modus)

EDIT: Ich habe dieses versucht und ich konnte schließlich HL-Linie im VISUAL-Modus deaktivieren.

(add-hook ‚böse Vision-state-Entry-Haken (Lambda() (setq-local global-hl-line-Modus nil)))

Aber ich konnte es nicht aktivieren, wenn Ich verlasse. Ich habe versucht, diese aber es hat nicht funktioniert:

(add-hook ‚böse Vision-State-Ausgang-Haken (Lambda() (global-hl-line-Modus 1)))

EDIT : macht nichts, das tatsächlich funktioniert: (add-hook ‚bösen Vision-state-Entry-Haken (Lambda() (setq-local global-hl-line-Modus nil)))

(Add- hook 'evil-visual-state-exit-haken (Lambda() (global-hl-line-mode nil)))

Antwort

0

Es könnte besser sein, hl-l zu deaktivieren ine-Modus in den aktuellen Puffer, anstatt sie global deaktivieren:

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

Beachten Sie, dass dies ein Problem sein kann, wenn Sie nicht global-hl-line-mode verwenden. hl-line-mode wird bei jedem Beenden des visuellen Modus aktiviert, unabhängig davon, ob der hl-line-Modus an erster Stelle stand oder nicht. Dies ist, was ich zusammen, das verhindern gehackt:

(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) 

Auf diese Weise hl-line-mode wird nicht manipuliert werden, wenn sie vorher im Puffer explizit aktiviert wurde, sagen wir, mit einem (add-hook 'python-mode-hook 'hl-line-mode).

BEARBEITEN: Der hl-line-Modus Haken im zweiten Snippet behoben.

+0

Danke @ Henrik L. Sie haben Recht. Eigentlich deaktiviere ich den hl-line-Modus, wenn ich zum Beispiel ansi-term öffne, also möchte ich keine hl-line eingeben, nachdem ich den visuellen Modus verlassen habe (das habe ich nicht bemerkt). Aber das obige Snippet scheint nicht zu funktionieren. Wenn ich den visuellen Modus betrete, ist die hl-Linie immernoch da ... –

+0

@WalidBer My bad! Es gab einen Fehler im zweiten Ausschnitt. Die if-Anweisung im hl-line-Hook hat '' -hl-line-mode-on' 'anstelle von 'hl-line-mode' falsch überprüft. Ich habe es behoben. Es sollte jetzt funktionieren. –

Verwandte Themen