Existe-t-il des options ou des packages qui provoquent default-directory
une mise à jour si le répertoire de travail change dans shell-mode
et term-mode
? C'est-à-dire lors de l'utilisation cd
, mais la solution devrait être plus robuste que de simplement rechercher cette commande particulière et peut-être quelques autres - elle devrait en fait vérifier la valeur $PWD
après chaque commande, je pense.
Plus important encore, il devrait également fonctionner lors de la connexion à une machine distante depuis l'intérieur d'un tampon shell-mode
ou term-mode
qui a été créé pour la première fois en default-directory
étant un répertoire local. C'est en fait la fonctionnalité dont j'ai vraiment besoin: pouvoir dire par programme si les commandes que je tape dans de tels terminaux sont exécutées sur une machine distante. Je voudrais obtenir ces informations sous la forme d'un ensemble correctement défini default-directory
et s'il existe un moyen d'obtenir cela, alors l'outil faisant cela fonctionnerait également localement comme décrit ci-dessus.
la source
dirtrack-mode
? Il a un crochet qui peut faire ce que vous voulez.Réponses:
Je pense que la première partie de votre question peut être terminée
dirtrack-mode
. Tout d'abord, vous définissez votre invite shell pour inclure le répertoire de travail actuel. Ensuite, vous définissezdirtrack-list
une expression régulière qui indiquedirtrack-mode
comment l'extraire. Exemple: j'ai définiPS1
dans Bash comme suit:et dans Emacs je mets
dirtrack-list
et allumedirtrack-mode
:(Tiré de cet excellent article de blog .)
Après cela, je suis capable de changer de répertoire à volonté et de
default-directory
changer au fur et à mesure. Cela fonctionne également si, dans un shell, je SSH vers une machine distante où j'ai défini l'invite de la même manière -cd /etc/apache2
, sur la machine distante, passedefault-directory
à/etc/apache2
. Notez cependant que ceci est local - dans le cas de la machine distante,default-directory
sera toujours réglé sur/etc/apache2
sur la machine locale .Si je comprends la deuxième partie de votre question, vous voulez
default-directory
être réglé sur quelque chose commeremote-machine:/etc/apache2
lorsque SSHing sur une autre machine. Lorsque vous utilisez ssh-el , vous pouvez exécuterssh-directory-tracking-mode
pour que cela fonctionne. Par exemple, si je lanceM-x ssh
, cd to/etc/apache2
, puis runC-x C-f
, l'invite que je vois est:Vous pouvez exécuter «Mx ssh-directory-tracking-mode» à la main, mais il est plus pratique de le définir comme hook pour le mode ssh:
Plus d'information:
la source
with-editor
qui sera utilisé par la prochaine version de Magit. Magit lui-même n'utilise paswith-editor
'sshell-mode
/term-mode
-support, donc je ne l'intégrerai probablement pas avant la sortie. Mais les informations que vous avez fournies le rendront beaucoup plus facile à faire, une fois que j'aurai terminé avec la version Magit et que je pourrai à nouveau me concentrer sur d'autres choses.with-editor
extérieur de Magit: emacs.stackexchange.com/questions/27/… . Et le problème Magit qui m'a amené à poser cette question: github.com/magit/magit/issues/1638 .