Pérdida de funcionalidad al personalizar la función eshell-prompt-function para emacs

Pérdida de funcionalidad al personalizar la función eshell-prompt-function para emacs

Quería suprimir el directorio de trabajo actual desde el mensaje del eshell como lo hago en la línea de comandos porque ocupa mucho espacio en la pantalla. Usando C-h vcompruebo que el valor predeterminado es:

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

e intenté cambiarlo a esto en mi .emacs:

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

pero cuando hago lo anterior, ciertas claves se rompen. Por ejemplo, ya no puedo utilizar M-ppara explorar los comandos anteriores y C-c C-ano estableceré el punto al principio del comando que estoy escribiendo como lo hace con el mensaje predeterminado. Me pregunto por qué sucede esto y si hay alguna forma de evitarlo.

Gracias

Respuesta1

eshell-bol usa la función eshell-skip-prompt para omitir el mensaje. Dado que cambió el mensaje para que termine con > en lugar de $, necesita cambiar el valor de eshell-prompt-regexp. Cambiarlo a ^>debería permitir que funcione.

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.

información relacionada