microsoft-windows – Git Bash en emacs en Windows

Pregunta:

Puedo ejecutar el shell Bash que viene con Git para Windows. .emacs esto en mi .emacs :

(defun git-bash () (interactive)
  (let ((explicit-shell-file-name "D:/Program Files/git/bin/bash"))
    (call-interactively 'shell)))

Luego Mx git-bash y voila, bash se está ejecutando pero con algo de rareza:

bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
^[]0;MINGW64:/c/Users/M??rton^G
MĂĄrton@Marci MINGW64 /c/Users/MĂĄrton
$ 

e imprime esa línea, comenzando con ^[] , después de cada comando que ejecuto. Además, la codificación está estropeada. ¿Cómo puedo solucionar este problema en .emacs ?

Respuesta:

El ruido ^[] proviene de varios caracteres de control de terminal en su indicador de shell. Pruebe echo $PS1 para ver la secuencia completa, e intente, por ejemplo, export PS1='$ ' para ver que una cadena de solicitud más simple elimina ese problema en particular.

Para la codificación, puede intentar hacer de utf-8 su codificación preferida:

(prefer-coding-system 'utf-8)

Configurar el mensaje

Emacs establece la variable INSIDE_EMACS para que pueda crear un .bash_profile que configura PS1 solo cuando se ejecuta en Emacs.

Probando en mi máquina, la primera línea del mensaje tiene los caracteres de control problemáticos. Creé un ~ / .bash_profile con esto.

if [ -n "$INSIDE_EMACS" ]; then
    export PS1='\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
fi

Esto establece el indicador en función de lo que git-bash estaba configurando de forma predeterminada, pero eliminé la primera línea (hasta el salto de línea \ n). También eliminé $ MSYSTEM que coloca MINGW64 en el indicador; no necesito ver eso. Lo que queda es el usuario @ host, el directorio actual y el repositorio de git. Los caracteres de control establecen colores que Emacs muestra correctamente para mí. (Para obtener detalles sobre cómo configurar su mensaje, consulte el manual de bash).

En Emacs configuré el shell en git-bash:

(setq explicit-shell-file-name "C:/git-for-windows/bin/bash.exe")
(setq explicit-bash.exe-args '("--login" "-i"))

Con esta configuración, sigo viendo el mensaje de error inicial de ioctl, pero por lo demás, las cosas funcionan como se esperaba y la codificación es utf-8.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım