У меня были похожие проблемы с текущим отслеживанием каталогов, предоставляемым Emacs, поэтому я написал такой, который решает проблему раз и навсегда.
Проверьте это здесь .
Короткая версия того, что он делает, заключается в том, что вы модифицируете приглашение оболочки, чтобы включить полный путь к текущему каталогу (только при работе внутри Emacs), и буфер оболочки Emacs будет использовать это.
Это означает, что выбольше никогда не придется Mx dirs .
Также есть пакет dirtrack
(поставляется с Emacs), который делает то же самое.
Мне больше нравится моя версия, потому что она удаляет путь из приглашения.Я не хочу видеть весь путь в моем приглашении, так как мой текущий каталог часто очень длинный.
Как только вы используете одно из двух вышеупомянутых решений, вы можете упростить вашу shell-dir
процедуру так:1021 *
(defun shell-dir (name dir)
(interactive "sShell name: \nDDirectory: ")
(let ((default-directory dir))
(shell name)))