Bagaimana cara mengubah direktori kerja saat ini?


11

bagaimana cara mengubah direktori kerja emacs saat ini?

set default-directorytidak tidak memengaruhi direktori kerja proses emacs saat ini, yang dapat diverifikasi melalui lsof -p pid.


1
Emacs, menjadi "semacam OS" tidak benar-benar memiliki direktori kerja saat ini. Jadi apa yang Anda lihat sebagai proses cwd sebagian besar tidak disengaja dan tidak benar-benar didokumentasikan. Melihat kode C Emacs, saya mendapat kesan bahwa saat ini tidak ada cara untuk melakukan apa yang Anda inginkan. Karena itu Anda dapat M-x report-emacs-bugdan memintanya sebagai fitur baru.
Stefan

1
Dengan asumsi Anda menggunakan Linux, Anda dapat memaksa cwd untuk berubah dengan bekerja di level OS, lihat unix.stackexchange.com/questions/281994/… untuk detailnya.
TTimo

Jawaban:


4

Saya pikir satu-satunya cara Emacs menawarkan untuk mengontrol cwdproses adalah --chdirargumen baris perintah. Setelah proses dimulai, saat ini tidak ada cara untuk memodifikasinya.


15

M-x cd

Ini harus menyelesaikan masalah Anda.


1
Menurut dokumen, cdakan "Jadikan DIR menjadi direktori default buffer saat ini." Saya akan menganggap bahwa itu adalah nilai per-buffer dan tidak akan berlaku untuk buffer lain yang ada atau yang baru dibuat.
mojo

@mojo mungkin, tetapi jika Anda melakukannya dengan buffer default ketika semua buffer Anda lainnya ditutup, hanya itu yang tersisa. Jadi itu masih cukup praktis
Keldon Alleyne

5

C-h f cd:

cdadalah fungsi Lisp interaktif yang dikompilasi di files.el.

(cd DIR)

Jadikan DIRmenjadi direktori default buffer saat ini.

Jika lingkungan Anda menyertakan CDPATHvariabel, coba masing-masing dari daftar direktori tersebut (dipisahkan oleh kejadian path-separator) saat menyelesaikan nama direktori relatif. Pemisah jalur adalah titik dua dalam sistem seperti GNU dan GNU.

Dan tolong jelaskan mengapa perubahan default-directorytidak juga mengubah "direktori saat ini" untuk Anda: (setq default-directory "/my/favorite/dir").


Maksud saya cwd dari proses emacs, yang merupakan entri dalam blok kontrol proses, dan dapat dengan mudah diperiksa melalui = lsof -p pid =. Direktori = default-adalah = hal internal untuk emacs. Mengapa saya perlu mengubah cwd adalah karena tmux menggunakan cwd dari proses foreground sebagai direktori awal dari jendela / panel baru.
FunkyBaby

Saya melihat. Maka pertanyaan Anda (dan masih, bagi saya) tidak jelas. Apa artinya mengubah direktori kerja saat ini dari proses Emacs? Anda ingin mengubahnya setelah proses itu ada? Lebih dari sekali?
Drew

itu benar-benar mengubah = cwd = emacs. "Lebih dari sekali"? bagaimana apanya. = cwd = tidak dirancang untuk menjadi hal yang tetap. Di c, man 2 chdir. Dengan python, os.chdir. Saya ingin tahu bagaimana melakukannya di elisp (untuk emacs).
FunkyBaby

Lihat jawaban @ Stefan.
Drew
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.