Emacs, al ser "un tipo de sistema operativo" en realidad no tiene un solo directorio de trabajo actual. Entonces, lo que ves como el cwd del proceso es en gran medida accidental y no está realmente documentado. Al mirar el código C de Emacs, tengo la impresión de que actualmente no hay forma de hacer lo que quieres. Por lo tanto, puede M-x report-emacs-bugsolicitarlo como una nueva característica.
Stefan
1
Suponiendo que está en Linux, puede forzar el cambio de cwd trabajando a nivel del sistema operativo, consulte unix.stackexchange.com/questions/281994/… para obtener más detalles.
TTimo
Respuestas:
4
Creo que la única forma en que Emacs ofrece controlar cwdel proceso es el --chdirargumento de la línea de comando. Una vez que se inicia el proceso, actualmente no hay forma de modificarlo.
Según los documentos, cd"hará que DIR se convierta en el directorio predeterminado del búfer actual". Supongo que es un valor por búfer y no se aplicaría a otros búferes existentes ni a los recién creados.
mojo
@mojo tal vez, pero si lo haces con el búfer predeterminado cuando todos los demás búferes están cerrados, eso es todo lo que te queda de todos modos. Así que sigue siendo bastante práctico
Keldon Alleyne
5
C-h f cd:
cdes una función Lisp compilada interactiva en files.el.
(cd DIR)
Se DIRconvierte en el directorio predeterminado del búfer actual.
Si su entorno incluye una CDPATHvariable, pruebe cada uno de esa lista de directorios (separados por ocurrencias de
path-separator) al resolver un nombre de directorio relativo. El separador de ruta es dos puntos en los sistemas GNU y similares a GNU.
Y explique por qué el cambio default-directoryno tampoco cambiar el "directorio actual" para usted: (setq default-directory "/my/favorite/dir").
Me refiero al cwd del proceso emacs, que es una entrada en el bloque de control del proceso, y se puede verificar fácilmente a través de = lsof -p pid =. El = directorio-predeterminado = es algo interno para emacs. Por qué necesito cambiar cwd es porque tmux usa el cwd de un proceso en primer plano como el directorio de inicio de una nueva ventana / panel.
FunkyBaby
Veo. Entonces su pregunta era (y sigue siendo, para mí) poco clara. ¿Qué significa cambiar el directorio de trabajo actual del proceso de Emacs? ¿Quieres cambiarlo después de que exista el proceso? ¿Mas de una vez?
Dibujó el
literalmente está cambiando el = cwd = de emacs. "Mas de una vez"? Qué quieres decir con eso. = cwd = no está diseñado para ser una cosa fija. En c, hombre 2 chdir. En python, os.chdir. Quiero saber cómo hacer eso en elisp (para emacs).
M-x report-emacs-bug
solicitarlo como una nueva característica.Respuestas:
Creo que la única forma en que Emacs ofrece controlar
cwd
el proceso es el--chdir
argumento de la línea de comando. Una vez que se inicia el proceso, actualmente no hay forma de modificarlo.fuente
M-x cd
Esto debería solucionar tu problema.
fuente
cd
"hará que DIR se convierta en el directorio predeterminado del búfer actual". Supongo que es un valor por búfer y no se aplicaría a otros búferes existentes ni a los recién creados.C-h f cd
:Y explique por qué el cambio
default-directory
no tampoco cambiar el "directorio actual" para usted:(setq default-directory "/my/favorite/dir")
.fuente