In welchem ​​Nebenmodus werden öffnende Paren im Echo-Bereich gedruckt?

10

Dies ist eine wirklich nette Funktion, die jedoch nur beim Einfügen eines Parens angezeigt wird, nicht beim Wechseln zu einer Cursorposition. Gibt es einen interaktiven Befehl, den ich aufrufen kann, um dies anzuzeigen? Kann ich es so konfigurieren, dass es beim Bewegen des Cursors angezeigt wird?

Geben Sie hier die Bildbeschreibung ein

wdkrnls
quelle

Antworten:

6

Diese Nachricht wird gedruckt, wenn der Anfang des Sexp im Fenster nicht sichtbar ist. Andernfalls wird der Eröffnungs-Paren vorübergehend hervorgehoben.

Dieses Verhalten wird in einem Nebenmodus implementiert simple.elund ist diesem nicht zugeordnet. Es wird mithilfe eines Hooks implementiert, der ausgeführt wird, wenn ein Zeichen eingefügt wird.

Das eigentliche Blinken / die eigentliche Nachricht kommt vom Befehl blink-matching-open, den Sie selbst aufrufen können. Sie können beispielsweise einen Leerlauf-Timer starten, der diesen Befehl aufruft, wenn Sie eine kurze Zeit auf einem schließenden Paren pausieren. So show-paren-modefunktioniert das eingebaute .

(defvar match-paren--idle-timer nil)
(defvar match-paren--delay 0.5)
(setq match-paren--idle-timer (run-with-idle-timer match-paren--delay t #'blink-matching-open))
Glucas
quelle
Ich möchte das auch, aber wie mache ich es nicht vorübergehend? Dh ich möchte, dass die Nachricht im Minibuffer bleibt, bis der Cursor bewegt wird.
Faheem Mitha
4

Sie können verwenden M-x blink-matching-open RET, um die Nachricht anzuzeigen, wenn Sie direkt nach einem Paren sind. Um es "on the fly" zu machen M-x show-paren-mode, möchten Sie es vielleicht versuchen , obwohl es Ihnen diese Nachricht nicht wirklich gibt.

Andernfalls könnten Sie so etwas wie verwenden

(add-hook 'post-command-hook
          (lambda ()
            (if (and (not (bobp))
                     (eq ?\) (char-syntax (char-before))))
                (blink-matching-open))))
Stefan
quelle