Bagaimana cara menetapkan lokasi berbeda untuk file dot emacs .emacs pada Windows 7?

16

Saya menggunakan komputer Windows 7 dan tidak memiliki akses administrator. Karena itu saya tidak dapat menempatkan file dot emacs di direktori root. Apakah ada cara bagi saya untuk menentukan lokasi yang berbeda untuk file dot emacs?

Startec
sumber
Jika Anda dapat mengontrol lokasi instalasi Emacs Anda sendiri (misalnya, meletakkannya di mana pun Anda inginkan, atau setidaknya memiliki akses tulis ke instalasi), maka Anda dapat mengambil kendali penuh dengan menggunakan sesuatu seperti site-start.elmemuat sendiri init.eldan Anda tidak perlu lagi a .emacs. Dalam contoh ini, Anda tidak perlu mengutak-atik direktori home (kecuali orang lain di komputer meletakkan barang-barang di sana yang akan mempengaruhi apa yang Anda lakukan). Dengan kata lain, itu bisa kosong dan Anda tidak perlu menyentuhnya.
hukum

Jawaban:

4

Emacs memiliki beberapa tempat untuk mencari file init, seperti yang didokumentasikan dalam manual . Jika Anda ingin menyesuaikan Emacs, Anda harus mulai dengan salah satu file itu.

Pendekatan umum adalah dengan menggunakan file init.eldi Anda user-emacs-directory, daripada memiliki .emacsdi direktori HOME Anda.

The user-emacs-directorydefault untuk ~/.emacs.d, sehingga masih relatif RUMAH Anda, tetapi manfaat dari pendekatan ini adalah Anda dapat menyimpan segala sesuatu yang berkaitan dengan konfigurasi Emacs Anda di satu tempat. Direktori itu bisa di bawah kontrol versi, dicadangkan, dibagikan di banyak mesin, dll. Anda dapat menggunakan symlink ( mklinkdi Windows) untuk menyimpan file di beberapa lokasi lain.

Sebagai contoh, sangat umum untuk melihat orang-orang mempertahankan konfigurasi Emacs mereka di Github. Anda dapat menemukan banyak contoh dari ini dengan mencari Github untuk proyek-proyek elisp dengan file init.el .

glukas
sumber
Saya suka solusi ini dan ingin menggunakannya namun tetap tidak memberi tahu saya cara mengubahnyauser-emacs-directory
Startec
Saran saya adalah menggunakan symlink, sungguh. Seperti yang ditunjukkan oleh jawaban lain Anda perlu meletakkan sesuatu di salah satu lokasi standar yang dibaca Emacs selama init, bahkan jika yang dilakukannya hanyalah memuat konfigurasi Anda dari tempat lain.
glucas
Tautan manual rusak.
corvus_192
17

Pada setiap instalasi Windows yang saya gunakan Emacs, saya memiliki kode berikut dalam .emacsfile di lokasi yang tercantum:

;; Place this file in C:\Users\Username\AppData\Roaming and point to the appropriate files
(setq user-init-file "C:/path/to/.emacs")
(setq user-emacs-directory "C:/path/to/.emacs.d/")
(setq default-directory "C:/whatever/you/want/to/start/in")
(setenv "HOME" "D:/my/home/directory")
(load user-init-file)

Dengan cara ini saya dapat meletakkan .emacsdan di .emacs.d/mana saja saya inginkan.

Ryan
sumber
Terima kasih, hampir seperti yang saya butuhkan. Saya meninggalkan direktori default dan mengirim HOME, tetapi sebaliknya itu yang saya butuhkan untuk setq!
Grant Bowman
Saya mencoba jawaban Ryan. Tapi, sekarang saya tidak dapat membuka file ini dalam emacs dari folder AppData \ Roaming. Mohon maafkan saya, karena saya tidak dapat menambahkan komentar karena, saya belum memiliki 50 poin.
Sreekumar R
@SreekumarR Anda harus mengajukan pertanyaan baru, menautkan ke yang ini, alih-alih memposting "Jawaban"
Andrew Swann
@SreekumarR Jika Anda memiliki pertanyaan baru, silakan tanyakan dengan mengklik tombol Tanya Pertanyaan . Sertakan tautan ke pertanyaan ini jika itu membantu menyediakan konteks. - Dari Ulasan
Stefan
5

File .emacs Anda berada di HOMEdirektori Anda . Dari manual Emacs:

Setara dengan Windows dari HOME adalah direktori data aplikasi khusus pengguna. Lokasi sebenarnya tergantung pada versi Windows ...

Anda dapat mengganti nilai default HOME ini dengan secara eksplisit mengatur variabel lingkungan HOME untuk menunjuk ke direktori apa pun di sistem Anda. HOME dapat diatur dari prompt shell perintah atau dari dialog 'Properties' pada 'My Computer'. HOME juga dapat diatur dalam sistem registry, lihat MS-Windows Registry.

Tyler
sumber
1
Ya, saya tahu cara mengatur direktori home tetapi untuk alasan kontrol versi, saya ingin dapat mengatur emacs untuk membaca dari direktori yang berbeda (sehingga saya dapat memiliki direktori yang spesifik untuk emacs)
Startec
3
Perhatikan bahwa peretasan ini membuat Emacs mempertimbangkan sesuatu yang lain sebagai direktori home.
wasamasa
@wasamasa - Saya tidak akan menyebutnya "retas". Pada build saya dari Emacs 25, jika Anda tidak menetapkan "HOME" dengan variabel lingkungan, itu default ke direktori install Emacs, yang jelas-jelas salah. "HOME" harus diatur ke apa yang pengguna anggap sebagai direktori home mereka, dan pengaturan variabel lingkungan adalah cara standar yang dimaksudkan untuk melakukan itu. Pada sistem Unix ini biasanya sudah dilakukan untuk pengguna selama proses login, tetapi pada Windows Anda harus melakukannya secara manual.
TED
Intinya adalah untuk mengubah apa yang biasanya Anda anggap sebagai milik Anda HOME direktori menjadi sesuatu yang sangat berbeda. Oleh karena itu mengapa saya menyebutnya perubahan hack. Menetapkannya ke nilai yang sesuai jelas baik-baik saja.
wasamasa
2

Kamu bilang:

Saya tahu cara mengatur direktori home karena alasan kontrol versi saya ingin dapat mengatur emacs untuk membaca dari direktori yang berbeda (sehingga saya dapat memiliki direktori khusus untuk emacs) .

File init Anda masuk ke direktori home Anda, yang dapat Anda letakkan di mana saja. Tampaknya Anda ingin memiliki direktori berbeda untuk hal-hal yang dimuat Emacs. Itu bukan masalah. Letakkan file init Anda di direktori home Anda, dan minta file itu menambahkan direktori lain ke nilai variabel load-pathdan kemudian memerlukan pustaka Emacs apa pun yang ingin Anda gunakan. Letakkan perpustakaan-perpustakaan itu di direktori lain itu.

TKI, file init Anda tidak perlu mengandung apa pun di luar pengaturan direktori tempat Anda menyimpan pustaka Emacs yang ingin Anda muat.

Drew
sumber
0

Pikirkan Anda bisa meletakkan (setq user-init-file "C:/path/to/.emacs")dan baris lain yang diusulkan oleh @ryan ke situs-start.el

Situs Anda juga dapat memiliki file startup situs; ini dinamai situs-start.el, jika ada. Seperti default.el, Emacs menemukan file ini melalui jalur pencarian standar untuk perpustakaan Lisp. Emacs memuat pustaka ini sebelum memuat file init Anda.

Dima Fomin
sumber