Funktionseinbußen beim Anpassen der eshell-prompt-Funktion für Emacs

1

Ich wollte das aktuelle Arbeitsverzeichnis von der Eingabeaufforderung für die Eshell aus unterdrücken, wie ich es in der Befehlszeile tue, weil es viel Platz auf dem Bildschirm einnimmt. Mit C-h vi überprüfen Sie, ob der Standardwert ist:

Value:
(lambda nil
  (concat
   (eshell/pwd)
   (if
       (=
        (user-uid)
        0)
       " # " " $ ")))

und ich habe versucht, es in meinem zu ändern .emacs:

(setq eshell-prompt-function
      (lambda () "> "))

aber wenn ich das oben mache, brechen bestimmte Schlüssel. Ich kann zum Beispiel nicht mehr M-pzum Durchsuchen der vorherigen Befehle verwenden und C-c C-asetze den Punkt nicht mehr auf den Beginn des Befehls, wie dies bei der Standardeingabeaufforderung der Fall ist. Ich frage mich, warum das passiert und ob es einen Ausweg gibt.

Vielen Dank

Palace Chan
quelle

Antworten:

1

eshell-bol verwendet die Funktion eshell-skip-prompt, um die Eingabeaufforderung zu umgehen. Da Sie die Eingabeaufforderung so geändert haben, dass sie mit> anstelle von $ endet, müssen Sie den Wert von eshell-prompt-regexp ändern. Wenn Sie ^>es auf ändern, sollte es funktionieren.

eshell-prompt-regexp is a variable defined in `em-prompt.el'.
Its value is "^[^#$
]* [#$] "

Documentation:
A regexp which fully matches your eshell prompt.
This setting is important, since it affects how eshell will interpret
the lines that are passed to it.
If this variable is changed, all Eshell buffers must be exited and
re-entered for it to take effect.

You can customize this variable.
Alan Shutko
quelle