¿Cómo cambiar el directorio de trabajo actual?

11

¿Cómo cambiar el directorio de trabajo actual de emacs?

set default-directoryno afecta el directorio de trabajo actual del proceso emacs, que se puede verificar a través de lsof -p pid.

FunkyBaby
fuente
1
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.

Stefan
fuente
15

M-x cd

Esto debería solucionar tu problema.

ksinkar
fuente
1
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").

Dibujó
fuente
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).
FunkyBaby
Ver la respuesta de @ Stefan.
Dibujó el