2009-10-14 8 views
13

J'essaie de faire en sorte que mon shell Emacs imite celui de mes sessions de terminal standard. Fondamentalement, je voudrais qu'il respecte le même PATH ainsi que l'invite de commande.Obtenir Emacs pour respecter mes options shell + par défaut

Jusqu'à présent, j'ai quelques questions:

  • PATH est introuvable, ci-dessous est la solution que je utilise pour cela.
  • Je reçois des codes couleur ascii partout avec un autre correctif que j'ai essayé.

J'ai les éléments suivants dans mon fichier mwilliams.el. Les premières lignes me donnent accès à/usr/local/bin dans M-x shell, ce qui résout la moitié du problème et les dernières lignes me font tourner avec Zsh mais mon invite est très visse.

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


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

Avec ce qui précède je reçois tout ce qui suit tout au long quand je M-x shell.

4m\342/236/234 

Les modes utilisés sont: (Durée: char run yas)

Pour autant que je peux dire qu'il est ne pas respecter certains des codes de couleur ascii dans mon thème zsh. Je vois cependant quelques couleurs qui passent; donc c'est à mi-chemin. Ma meilleure estimation est que j'en ai besoin pour respecter mon .zshrc qui contient des informations sur mon thème et PATH. Je ne fais que mouiller mes pieds dans Emacs et obtenir une coque solide est l'une des dernières choses dont j'ai besoin avant de pouvoir commencer à migrer mon travail quotidien (et tout le reste) vers Emacs. J'utilise Emacs 23.1 (9.0) sous OSX Snow Leopard.

Répondre

16

Je n'utilise pas zsh mais je l'ai trouvé dans le zsh FAQ et j'ai essayé. J'ai un ls coloré sans caractères funky.

 
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 

Une autre méthode consiste à mettre

#!/bin/sh 
TERM=emacs exec zsh 

dans un fichier ~/bin/eshell, puis chmod +x ~/bin/eshell et dire emacs à l'utiliser comme la coquille en ajoutant

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

à ~/.emacs.

+0

Génial, la méthode n ° 2 a fonctionné comme un charme! Merci! – mwilliams

+0

Je reçois 'Shell de processus terminé de façon anormale avec le code 1 \ nopen terminal échoué: ne peut pas trouver la base de données terminfo' quand cela est fait. Est-ce que l'un d'entre vous a vécu cela et si oui, avez-vous réussi à le contourner? –

1

Pour le chemin, il y a le paquet exec-path-from-shell (OS X uniquement). Il obtient $MANPATH, $PATH et exec-path et les définit pour emacs.

Questions connexes