2009-10-14 11 views
13

Estoy tratando de hacer que mi shell Emacs imite el de mis sesiones de terminal estándar. Básicamente me gustaría que respete la misma RUTA así como el símbolo del sistema.Hacer que Emacs respete mis opciones predeterminadas de shell +

Hasta ahora tengo un par de cuestiones:

  • PATH no se encuentra, a continuación es la solución que estoy usando para ello.
  • Recibo códigos de color Ascii por todas partes con otra solución que probé.

Tengo lo siguiente en mi archivo mwilliams.el. Las primeras líneas me dan acceso a/usr/local/bin en el shell M-x, que resuelve la mitad del problema y las últimas líneas me hacen funcionar con Zsh, pero mi mensaje es muy complicado.

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


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

Con lo anterior, recibo lo siguiente a lo largo de todo el proceso cuando conecto M-x.

4m\342/236/234 

Los modos que se utilizan son: (Plazo: yas de ejecución carbón de leña)

Por lo que yo puedo decir que no está respetando algunos de los códigos de color ASCII en mi tema Zsh. Sin embargo, veo venir algunos colores; así que está a mitad de camino allí. Mi mejor opción es que necesito que respete mi .zshrc que contiene información sobre mi tema y PATH.

Me estoy mojando los pies en Emacs y obtener una carcasa sólida es una de las últimas cosas que necesito antes de poder comenzar a migrar mi trabajo diario (y todo lo demás) a Emacs.

Estoy ejecutando Emacs 23.1 (9.0) en OSX Snow Leopard.

Respuesta

16

No uso zsh pero encontré esto en el zsh FAQ y lo intenté. Obtuve un ls colorido sin personajes 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 

Otro método es poner

#!/bin/sh 
TERM=emacs exec zsh 

en un archivo ~/bin/eshell, entonces chmod +x ~/bin/eshell, y decirle emacs usar eso como la cáscara mediante la adición de

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

a ~/.emacs.

+0

¡Increíble, el método n. ° 2 funcionaba como un amuleto! ¡Gracias! – mwilliams

+0

Me sale 'Process shell exit anormalmente con el código 1 \ nopen terminal failed: no se puede encontrar la base de datos terminfo' cuando se hace esto. ¿Alguno de ustedes experimentó esto y, de ser así, pudieron sortearlo? –

1

Para la ruta, existe el paquete exec-path-from-shell (solo OS X).

Consigue $MANPATH, $PATH y exec-path desde el armazón y los establece para emacs.

Cuestiones relacionadas