Как я могу иметь каталоги отслеживания term.el (ansi-term), если использую что-либо кроме bash - PullRequest
5 голосов
/ 18 августа 2010

При использовании eshell или ansi-term и bash emacs изменяет переменную default-directory в зависимости от того, в каком каталоге вы находитесь.

Так что если я перейду на /home/user/code/project, а затем использую ido-find-file дляоткрыть файл, он начинает идо с CWD.Если я использую ksh (моя обычная оболочка) или zsh (пробовал для тестирования), это не работает.Есть ли настройка или это только поддерживается в bash?

Спасибо

Ответы [ 2 ]

9 голосов
/ 05 ноября 2010

Поместите это в свой .zshrc:

chpwd() { print -P "\033AnSiTc %d" }

print -P "\033AnSiTu %n"
print -P "\033AnSiTc %d"

Функция chpwd () запускается каждый раз, когда изменяется pwd. Строка, заканчивающаяся на% d, позволяет отслеживать текущий каталог - я повторяю его вне функции, чтобы убедиться, что он запускается при первой инициализации zsh. Но Emacs требует, чтобы мы сначала сказали ему, кто является текущим пользователем (строка заканчивается на% n).

Это на самом деле объясняется в term.el, который должен находиться внутри / usr / share / emacs // lisp, если вы используете Ubuntu.

Надеюсь, это поможет.

0 голосов
/ 18 августа 2010

Существует несколько решений этой проблемы. Я предпочитаю мою реализацию, которая изменяет приглашение, чтобы оно содержало текущий путь, который Emacs распознает и использует для получения желаемого поведения. Кроме того, мое решение скрывает часть приглашения, которая содержит путь, потому что я нахожу это уродливым.

Мое решение можно найти в сообщении в блоге: Совет Emacs # 25 Shell Dirtrack By Prompt .

Однако есть ряд других решений, которые можно найти в Emacs Wiki или в других местах:

...