Ich ändere den Cursor basierend auf dem Zustand im Bösen. Allerdings merke ich, dass ich im normalen Modus bin, wenn ich den Minipuffer eintippe.Ändern Sie den Cursor, um den Status einzufügen, während im Minipuffer
Ich versuche Code zu machen, der den Status ändert, von dem, was es ist, in den Status einzufügen, während ich den Minipuffer eintippe und zurückwechsle, wenn ich den Minipuffer verlasse. Beachten Sie, dass ich ivy für Minibuffer-Vervollständigung verwende (obwohl ich denke, dass es keinen Unterschied macht).
(setq evil-insert-state-cursor '((bar . 3) "chartreuse3"))
(defun void-ivy-insert-state (orig-func &rest args)
"Wrapper around ivy, so it goes into insert state."
;; minibuffer is different so I have to manually change the state
(let ((saved-evil-state evil-state))
(evil-insert-state)
(setq cursor-type (elt evil-insert-state-cursor 0))
(set-cursor-color (elt evil-insert-state-cursor 1))
(apply orig-func args)
(evil-change-state saved-evil-state)))
(advice-add 'ivy-read :around #'void-ivy-insert-state)
erwarte ich, dass die Cursor die richtige Farbe und die Schreibform sein, während etwas in den Minipuffer eingeben. Und um zu der entsprechenden Form des Zustands zurückzukehren, in dem ich war, bevor ich in den Minibuffer kam.
Was tatsächlich passiert ist, dass der Cursor die richtige Farbe ist, aber es ist die falsche Form. Und wenn ich den Minibuffer mit C-g
verlasse, bleibt der Einfügezustand erhalten. Es kehrt nie in den ursprünglichen Zustand zurück. Ich denke C-g
bricht die Ausführung meines Rates ab.
Ich benutze 'evil' oder' efeu' nicht, aber mir ist bewusst, dass es einen 'minibuffer-exit-hook' und einen' minibuffer-setup-hook' gibt, die hilfreich sein können. Ich habe benutzerdefinierte Funktionen eingerichtet, die das Aussehen ändern, wenn ich mich in den Minipuffer hinein- oder hinausbewege (lasse ihn geöffnet, während etwas noch passiert, z. B. warten, bis der Benutzer zusätzliche Informationen eingibt oder die Eingabetaste drückt). Ich setze auch eine Timer-Funktion, die kurz vor dem Senden eines Quit-Signals ausgelöst wird, so dass es nicht abgebrochen wird - d. H. Etwa drei verschiedene benutzerdefinierte Tastatur-Beenden-Funktionen, die alle meine Timer-Funktion starten. – lawlist
Ihr Vorschlag inspirierte die Antwort, die ich unten gepostet habe. – Piglet