Потеря функциональности при настройке eshell-prompt-function для emacs

Потеря функциональности при настройке eshell-prompt-function для emacs

Я хотел отключить текущий рабочий каталог из приглашения eshell, как я делаю в командной строке, потому что он занимает много места на экране. Используя C-h vi, проверьте, что значение по умолчанию:

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.

Связанный контент