Comment changer le répertoire de travail actuel?

11

comment changer le répertoire de travail actuel d'emacs?

set default-directoryn'affecte pas le répertoire de travail actuel du processus emacs, qui peut être vérifié via lsof -p pid.

FunkyBaby
la source
1
Emacs, étant "une sorte de système d'exploitation", n'a pas vraiment de répertoire de travail actuel. Donc, ce que vous voyez comme le cwd du processus est en grande partie accidentel et n'est pas vraiment documenté. En regardant le code C d'Emacs, j'ai l'impression qu'il n'y a actuellement aucun moyen de faire ce que vous voulez. Vous pourriez donc M-x report-emacs-buget le demander comme une nouvelle fonctionnalité.
Stefan
1
En supposant que vous êtes sous Linux, vous pouvez forcer le cwd à changer en travaillant au niveau du système d'exploitation, voir unix.stackexchange.com/questions/281994/… pour plus de détails.
TTimo

Réponses:

4

Je pense que la seule façon qu'Emacs propose de contrôler cwdle processus est l' --chdirargument de la ligne de commande. Une fois le processus démarré, il n'y a actuellement aucun moyen de le modifier.

Stefan
la source
15

M-x cd

Cela devrait résoudre votre problème.

ksinkar
la source
1
Selon les documents, cd"Faire de DIR le répertoire par défaut du tampon actuel". Je suppose que c'est une valeur par tampon et ne s'appliquerait pas à d'autres tampons existants ou à ceux nouvellement créés.
mojo
@mojo peut-être, mais si vous le faites avec le tampon par défaut lorsque tous vos autres tampons sont fermés, c'est tout ce qui vous reste de toute façon. Donc, c'est toujours assez pratique
Keldon Alleyne
5

C-h f cd:

cdest une fonction Lisp interactive compilée en files.el.

(cd DIR)

Faire DIRdevenir le répertoire par défaut du tampon actuel.

Si votre environnement comprend une CDPATHvariable, essayez chacun de cette liste de répertoires (séparés par des occurrences de path-separator) lors de la résolution d'un nom de répertoire relatif. Le séparateur de chemin est deux points dans les systèmes GNU et GNU.

Et s'il vous plaît expliquer pourquoi le changement default-directoryne change pas aussi le « répertoire courant » pour vous: (setq default-directory "/my/favorite/dir").

A dessiné
la source
Je veux dire le cwd du processus emacs, qui est une entrée dans le bloc de contrôle de processus, et il peut être facilement vérifié via = lsof -p pid =. Le répertoire = default-directory = est une chose interne à emacs. Pourquoi j'ai besoin de changer le cwd parce que tmux utilise le cwd d'un processus de premier plan comme répertoire de départ d'une nouvelle fenêtre / volet.
FunkyBaby
Je vois. Ensuite, votre question était (et est toujours, pour moi) peu claire. Que signifie changer le répertoire de travail actuel du processus Emacs? Vous voulez le changer après que le processus existe? Plus d'une fois?
Tiré
cela change littéralement le = cwd = des emacs. "Plus d'une fois"? Que veux-tu dire par là. = cwd = n'est pas conçu pour être une chose fixe. En c, homme 2 chdir. En python, os.chdir. Je veux savoir comment faire cela dans elisp (pour emacs).
FunkyBaby
Voir la réponse de @ Stefan.
Drew