Существуют ли какие-либо опции или пакеты, которые требуют default-directory
обновления, если рабочий каталог изменяется в shell-mode
и term-mode
? Т.е. при использовании cd
, но решение должно быть более надежным, чем просто искать эту конкретную команду и, возможно, несколько других - на самом деле $PWD
, я думаю, она должна проверять значение после каждой команды.
Что еще более важно, он также должен работать при подключении к удаленной машине изнутри shell-mode
или в term-mode
буфере, который был сначала создан default-directory
как локальный каталог. Это действительно та функция, которая мне действительно нужна: возможность программно определять, выполняются ли команды, которые я ввожу в такие терминалы, на удаленной машине. Я хотел бы получить эту информацию в форме правильно заданного числа default-directory
и рисунка, если есть способ получить это, тогда инструмент, делающий это, также будет работать локально, как описано выше.
источник
dirtrack-mode
? У него есть крючок, который может делать то, что вы хотите.Ответы:
Я думаю, что первая часть вашего вопроса может быть закончена
dirtrack-mode
. Во-первых, вы устанавливаете приглашение оболочки для включения текущего рабочего каталога. Затем вы устанавливаетеdirtrack-list
регулярное выражение, которое сообщает,dirtrack-mode
как его извлечь. Пример: я установилPS1
в Bash, чтобы быть таким:и в Emacs я устанавливаю
dirtrack-list
и включаюdirtrack-mode
:(Взято из этого отличного сообщения в блоге .)
После этого я могу менять каталоги по своему усмотрению, и меняю их по
default-directory
ходу. Это также работает, если в оболочке я подключаю SSH к удаленной машине, где я установил приглашение таким же образом -cd /etc/apache2
на удаленной машине меняетсяdefault-directory
на/etc/apache2
. Обратите внимание, однако, что это локально - в случае удаленного компьютераdefault-directory
все равно будет установлен/etc/apache2
на локальном компьютере.Если я понимаю вторую часть вашего вопроса, вы хотите
default-directory
настроить что-то вродеremote-machine:/etc/apache2
SSHing на другую машину. При использовании ssh-el вы можете запуститьssh-directory-tracking-mode
эту работу. Например, если я запускаюM-x ssh
cd to/etc/apache2
, затем запускаюC-x C-f
, я вижу следующее приглашение:Вы можете запустить 'Mx ssh-directory-tracking-mode` вручную, но удобнее установить его в качестве ловушки для ssh-mode:
Дополнительная информация:
источник
with-editor
будет использоваться в следующем выпуске Magit. Сам Magit не используетwith-editor
«sshell-mode
/term-mode
-поддержка, так что я , вероятно , не будет интегрировать это до выхода. Но информация, которую вы предоставили, сделает это намного проще, когда я закончу с выпуском Magit и снова смогу сосредоточиться на других вещах.with-editor
за пределами Magit: emacs.stackexchange.com/questions/27/… . И проблема Magit, которая побудила меня задать этот вопрос: github.com/magit/magit/issues/1638 .