¿Hay alguna opción o paquete que haga default-directory
que se actualice si el directorio de trabajo cambia en shell-mode
y term-mode
? Es decir, cuando se usa cd
, pero la solución tendría que ser más robusta que solo buscar este comando en particular y tal vez algunos otros; en realidad debería verificar el valor de $PWD
después de cada comando, creo.
Más importante aún, también debería funcionar cuando se conecta a una máquina remota desde dentro de un búfer shell-mode
o term-mode
que se creó por primera vez con default-directory
un directorio local. Esa es realmente la característica que realmente necesito: poder decir mediante programación si los comandos que escribo en dichos terminales se ejecutan en una máquina remota. Me gustaría obtener esa información en forma de un conjunto adecuado default-directory
y calcular si hay una manera de obtener eso, entonces la herramienta para hacerlo también funcionaría localmente como se describe anteriormente.
fuente
dirtrack-mode
? Tiene un gancho que puede hacer lo que quieras.Respuestas:
Creo que la primera parte de tu pregunta se puede hacer con
dirtrack-mode
. Primero, configura su indicador de shell para incluir el directorio de trabajo actual. Luego, establecedirtrack-list
una expresión regular que le dicedirtrack-mode
cómo extraerla. Ejemplo: configuréPS1
en Bash para que sea esto:y en Emacs configuro
dirtrack-list
y enciendodirtrack-mode
:(Tomado de esta gran publicación de blog ).
Después de eso, puedo cambiar los directorios a voluntad, y los
default-directory
cambios a medida que avanzo. Esto también funciona si, en un shell, utilizo SSH en una máquina remota donde configuré el indicador de la misma manera -cd /etc/apache2
, en la máquina remota, cambiadefault-directory
a/etc/apache2
. Sin embargo, tenga en cuenta que esto es local : en el caso de la máquina remota,default-directory
todavía se configurará/etc/apache2
en la máquina local .Si entiendo la segunda parte de su pregunta, desea
default-directory
que se establezca algo así comoremote-machine:/etc/apache2
cuando SSHing a otra máquina. Cuando use ssh-el , puede ejecutarssh-directory-tracking-mode
para que esto funcione. Por ejemplo, si ejecutoM-x ssh
, cd a/etc/apache2
, luego ejecutoC-x C-f
, el mensaje que veo es:Puede ejecutar 'Mx ssh-directory-tracking-mode` a mano, pero es más conveniente configurarlo como un enlace para el modo ssh:
Más información:
fuente
with-editor
que será utilizado en el próximo lanzamiento de Magit. Magit en sí no usawith-editor
'sshell-mode
/term-mode
-support, por lo que probablemente no integre esto antes del lanzamiento. Pero la información que proporcionó hará que sea mucho más fácil hacerlo, una vez que haya terminado con el lanzamiento de Magit y pueda concentrarme nuevamente en otras cosas.with-editor
fuera de Magit: emacs.stackexchange.com/questions/27/… . Y el tema Magit que me llevó a hacer esta pregunta: github.com/magit/magit/issues/1638 .