emacs の eshell-prompt-function をカスタマイズすると機能が失われる

emacs の eshell-prompt-function をカスタマイズすると機能が失われる

画面スペースを大量に占有するため、コマンドラインで行うように、eshell のプロンプトから現在の作業ディレクトリを非表示にしたいと考えました。i を使用して、C-h vデフォルト値が次の値であることを確認します。

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

そして私はこれを次のように変更してみました.emacs:

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

しかし、上記の操作を行うと、特定のキーが機能しなくなります。たとえば、M-p以前のコマンドを参照するために を使用できなくなり、C-c C-aデフォルトのプロンプトのように、入力しているコマンドの先頭にポイントが設定されなくなります。なぜこのようなことが起こるのか、また、回避策があるのか​​どうか疑問に思っています。

ありがとう

答え1

eshell-bol は、プロンプトをバイパスするために eshell-skip-prompt 関数を使用します。プロンプトを $ ではなく > で終わるように変更したので、eshell-prompt-regexp の値を変更する必要があります。これを に変更すると、^>機能するはずです。

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.

関連情報