Existem opções ou pacotes que causam default-directory
a atualização se o diretório de trabalho é alterado shell-mode
e term-mode
? Ou seja, ao usar cd
, mas a solução teria que ser mais robusta do que apenas procurar esse comando em particular e talvez alguns outros - ele deve realmente verificar o valor de $PWD
depois de cada comando, eu acho.
Mais importante ainda, ele também deve funcionar ao conectar-se a uma máquina remota a partir de um buffer shell-mode
ou term-mode
que foi criado com default-directory
o diretório local. Na verdade, esse é o recurso que eu realmente preciso: ser capaz de dizer de forma programática se os comandos que digito nesses terminais são executados em uma máquina remota. Gostaria de obter essas informações na forma de um conjunto default-directory
e figura adequados , se houver uma maneira de obtê-los; a ferramenta que fizer isso também funcionaria localmente, conforme descrito acima.
fonte
dirtrack-mode
? Tem um gancho que pode fazer o que você deseja.Respostas:
Acho que a primeira parte da sua pergunta pode ser resolvida
dirtrack-mode
. Primeiro, você define o prompt do shell para incluir o diretório de trabalho atual. Em seguida, você definedirtrack-list
um regex que informadirtrack-mode
como extraí-lo. Exemplo: eu configureiPS1
no Bash para ser este:e no Emacs eu coloco
dirtrack-list
e ligodirtrack-mode
:(Extraído desta excelente postagem no blog .)
Depois disso, sou capaz de alterar os diretórios à vontade e as
default-directory
alterações conforme eu for. Isso também funciona se, em um shell, eu SSH em uma máquina remota na qual defini o prompt da mesma maneira -cd /etc/apache2
, na máquina remota, mudedefault-directory
para/etc/apache2
. Observe, no entanto, que isso é local - no caso da máquina remota,default-directory
ainda será definido/etc/apache2
na máquina local .Se eu entendo a segunda parte da sua pergunta, você deseja
default-directory
definir algo comoremote-machine:/etc/apache2
quando estiver usando o SSH em outra máquina. Ao usar o ssh-el , você pode executarssh-directory-tracking-mode
para fazer isso funcionar. Por exemplo, se eu executarM-x ssh
cd para/etc/apache2
, e executarC-x C-f
, o prompt que vejo é:Você pode executar o 'Mx ssh-directory-tracking-mode` manualmente, mas é mais conveniente configurá-lo como um gancho para o modo ssh:
Mais Informações:
fonte
with-editor
que será usado no próximo lançamento do Magit. O Magit em si não usawith-editor
o suporte a sshell-mode
/term-mode
, portanto provavelmente não o integrarei antes do lançamento. Mas as informações que você forneceu tornarão muito mais fácil fazê-lo, assim que terminar o lançamento do Magit e puder focar novamente em outras coisas.with-editor
fora do Magit: emacs.stackexchange.com/questions/27/… . E a questão do Magit que me levou a fazer esta pergunta: github.com/magit/magit/issues/1638 .