Czy są jakieś opcje lub pakiety, które powodują default-directory
aktualizację, jeśli katalog roboczy zmienia się w shell-mode
i term-mode
? Tzn. Przy użyciu cd
, ale rozwiązanie musiałoby być bardziej niezawodne niż po prostu szukanie tego konkretnego polecenia i być może kilku innych - pomyślałbym, że powinien faktycznie sprawdzać wartość $PWD
po każdym poleceniu.
Co ważniejsze, powinien on również działać podczas łączenia się ze zdalnym komputerem z poziomu bufora shell-mode
lub, term-mode
który został utworzony default-directory
jako katalog lokalny. Tak naprawdę jest to funkcja, której naprawdę potrzebuję: móc programowo powiedzieć, czy polecenia, które wpisuję do takich terminali, są uruchamiane na zdalnym komputerze. Chciałbym uzyskać tę informację w postaci poprawnie ustawionego zestawu default-directory
i rysunku, jeśli istnieje sposób, aby to uzyskać, to narzędzie, które to robi, działałoby również lokalnie, jak opisano powyżej.
źródło
dirtrack-mode
? Ma hak, który może robić, co chcesz.Odpowiedzi:
Myślę, że pierwszą część twojego pytania można rozwiązać
dirtrack-mode
. Najpierw ustaw monit powłoki, aby zawierał obecny katalog roboczy. Następnie ustawdirtrack-list
wyrażenie regularne, które mówi,dirtrack-mode
jak je wyodrębnić. Przykład: ustawiłemPS1
w Bash na:aw Emacsie ustawiam
dirtrack-list
i włączamdirtrack-mode
:(Zaczerpnięte z tego świetnego posta na blogu .)
Następnie mogę dowolnie zmieniać katalogi i
default-directory
zmieniać je z biegiem czasu. Działa to również wtedy, gdy w powłoce przesyłam SSH do zdalnego komputera, na którym ustawiłem monit w ten sam sposób -cd /etc/apache2
na zdalnym komputerze zmienia siędefault-directory
na/etc/apache2
. Należy jednak pamiętać, że jest to lokalny - w przypadku zdalnego komputera,default-directory
nadal będzie ustawiony/etc/apache2
na lokalnym komputerze.Jeśli rozumiem drugą część twojego pytania, chcesz
default-directory
ustawić coś takiego jakremote-machine:/etc/apache2
SSHing na innym komputerze. Korzystając z ssh-el , możesz uruchomić,ssh-directory-tracking-mode
aby to zadziałało. Na przykład, jeśli uruchomięM-x ssh
, cd do/etc/apache2
, a następnie uruchomC-x C-f
, pojawi się monit:Możesz uruchomić tryb Mx ssh-directory-tracking-mode ręcznie, ale wygodniej jest ustawić go jako hak dla trybu ssh:
Więcej informacji:
źródło
with-editor
będzie używane w następnej wersji Magit. Sam Magit nie korzysta zwith-editor
„sshell-mode
/term-mode
-support, więc prawdopodobnie nie będzie integrować to przed wydaniem. Ale informacje, które podałeś, znacznie ułatwią to, gdy skończę z wydaniem Magit i znów będę mógł skupić się na innych rzeczach.with-editor
spoza Magit: emacs.stackexchange.com/questions/27/… . I problem Magit, który skłonił mnie do zadania tego pytania: github.com/magit/magit/issues/1638 .