Come modificare la directory di lavoro corrente?


11

come cambiare l'attuale directory di lavoro di emacs?

set default-directorynon influisce sulla directory di lavoro corrente del processo emacs, che può essere verificata tramite lsof -p pid.


1
Emacs, essendo "un tipo di sistema operativo" non ha davvero un'unica directory di lavoro corrente. Quindi quello che vedi come il processo di elaborazione dei dati è in gran parte accidentale e non realmente documentato. Guardando il codice C di Emacs, ho l'impressione che al momento non ci sia modo di fare quello che vuoi. È quindi possibile M-x report-emacs-buge richiederlo come nuova funzionalità.
Stefan,

1
Supponendo che tu sia su Linux, potresti forzare la modifica del CWD lavorando a livello di sistema operativo, vedi unix.stackexchange.com/questions/281994/… per i dettagli.
TTimo

Risposte:


4

Penso che l'unico modo in cui Emacs offre di controllare cwdil processo sia l' --chdirargomento della riga di comando. Una volta avviato il processo, al momento non è possibile modificarlo.


15

M-x cd

Questo dovrebbe risolvere il tuo problema.


1
Secondo i documenti, cd"Rendi DIR diventare la directory predefinita del buffer corrente". Presumo che sia un valore per buffer e non si applicherebbe ad altri buffer esistenti o a quelli appena creati.
Mojo,

@mojo forse, ma se lo fai con il buffer predefinito quando tutti gli altri buffer sono chiusi, è tutto ciò che ti rimane comunque. Quindi è ancora abbastanza pratico
Keldon Alleyne il

5

C-h f cd:

cdè una funzione Lisp compilata interattiva in files.el.

(cd DIR)

Rendi DIRla directory predefinita del buffer corrente.

Se l'ambiente include una CDPATHvariabile, provare ciascuna di quella lista di directory (separate da occorrenze di path-separator) quando si risolve un nome di directory relativo. Il separatore di percorso è due punti nei sistemi GNU e GNU-like.

E vi prego di spiegare perché la modifica default-directorynon cambia anche la "directory corrente" per voi: (setq default-directory "/my/favorite/dir").


Intendo il cwd del processo emacs, che è una voce nel blocco di controllo del processo, e può essere facilmente verificato tramite = lsof -p pid =. = Default-directory = è una cosa interna a emacs. Perché devo cambiare cwd è perché tmux usa il cwd di un processo in primo piano come directory iniziale di una nuova finestra / riquadro.
FunkyBaby,

Vedo. Quindi la tua domanda era (ed è ancora, per me) poco chiara. Cosa significa cambiare l'attuale directory di lavoro del processo Emacs? Vuoi cambiarlo dopo che il processo esiste? Più di una volta?
Disegnò il

sta letteralmente cambiando il = cwd = di emacs. "Più di una volta"? Cosa vuoi dire con questo. = cwd = non è progettato per essere una cosa fissa. In c, man 2 chdir. In python, os.chdir. Voglio sapere come farlo in elisp (per emacs).
FunkyBaby,

Vedi la risposta di @Stefan.
Disegnato il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.