2009-10-14 11 views
13

Próbuję uzyskać moją powłokę Emacs naśladującą moją standardową sesję terminalową. Zasadniczo chciałbym go do przestrzegania tej samej PATH, jak również wiersza polecenia.Uzyskiwanie Emacs do poszanowania mojej domyślnej powłoki + opcji

tej pory mam kilka problemów:

  • PATH nie zostanie znaleziony, poniżej jest poprawka Używam do tego.
  • Otrzymuję ascii kody kolorów w całym miejscu z inną poprawką próbowałem.

Mam następujące w moim pliku mwilliams.el. Pierwsze kilka linii daje mi dostęp do/usr/local/bin w powłoce M-x, która rozwiązuje połowę problemu, a ostatnie kilka linii pozwala mi działać z Zsh, ale mój monit jest bardzo mały.

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin")) 
(setq exec-path (append exec-path '("/usr/local/bin"))) 


(defun shell() 
    (interactive) 
    (ansi-term "/bin/zsh")) 

Z powyższym otrzymuję następujące po wszystkim, gdy I M-x powłoki.

4m\342/236/234 

Tryby wykorzystywane są następujące: (hasło: char Yas RUN)

O ile mogę powiedzieć, to nie przestrzegając niektóre kody kolorów ASCII w moim zsh tematu. Widzę jednak, jak przechodzi kilka kolorów; więc jest w połowie drogi. Domyślam się, że potrzebuję tego, by szanować mój .zshrc, który zawiera informacje o moim motywie i PATH.

Po prostu mam mokre stopy w Emacs, a zdobycie solidnej powłoki jest jedną z ostatnich rzeczy, których potrzebuję, zanim zacznę przenosić moją codzienną pracę (i wszystko inne) na Emacsa.

Używam Emacsa 23,1 (9.0) w OS X Snow Leopard.

Odpowiedz

16

Nie używam Zsh, ale znalazłem to w zsh FAQ i spróbowałem. Mam kolorowe ls bez funkowych postaci.

 
3.10: Why does zsh not work in an Emacs shell mode any more? 

Read more: http://www.faqs.org/faqs/unix-faq/shell/zsh/#ixzz0TyTJsHMq 

Inną metodą jest umieszczenie

#!/bin/sh 
TERM=emacs exec zsh 

do pliku ~/bin/eshell, następnie chmod +x ~/bin/eshell i powiedzieć emacsowi użyć jej jako powłoki dodając

(setenv "ESHELL" (expand-file-name "~/bin/eshell")) 

do ~/.emacs.

+0

Wspaniale, metoda # 2 działała jak czar! Dzięki! – mwilliams

+0

Otrzymuję 'Powłoka procesowa zakończona nienormalnie z kodem 1 \ nopen nie powiodła się: nie można znaleźć terminfo bazy danych' podczas tego procesu. Czy któreś z was tego doświadczyło, a jeśli tak, to udało się to obejść? –

1

Dla ścieżki dostępna jest paczka exec-path-from-shell (tylko OS X).

To pobiera $MANPATH, $PATH i z powłoki i ustawia je dla emacs.

Powiązane problemy