Chcę mieć polecenie emacs w wersji make-shells
, które otworzy wiele buforów emacs-shell, każdy z własnym katalogiem roboczym. Chodzi o to, że dla każdego projektu, nad którym pracuję, mam powłokę, która zaczyna się w katalogu tego projektu, więc mogę łatwo przełączać się między nimi.Otwórz powłokę w emacs z podanym katalogiem roboczym
Obecnie mam ten kod:
(defun shell-dir (name dir)
(interactive "sShell name: \nDDirectory: ")
(shell name)
(switch-to-buffer name)
(comint-send-string (current-buffer) (concat "cd " dir "\r"))
(sleep-for 0 10)
(dirs))
(defun make-shells()
(interactive)
(shell-dir "project1" "~/proj/project1")
(shell-dir "project2" "~/proj/project2")
(shell-dir "project3" "~/proj/project3")
(delete-window))
Jest to dość brzydki, choć i połowę czasu (dirs)
nie podnieść właściwą ścieżkę, więc przerwy zakończenia zakładka aż ponownie uruchomić go ręcznie. Czy istnieje wbudowany sposób ustawiania bieżącego katalogu roboczego powłoki emacs? Czy coś takiego jak CEDET (plus mniejsze uzależnienie od trybu powłoki vs emacsa) byłoby o wiele lepszym rozwiązaniem?
Działa jak urok! – dfri