Saya ingin mencoba ruang angkasa. Tapi saya belum mau beralih dari konfigurasi emacs biasa saya, jadi saya ingin konfigurasi yang saat ini ada di saya .emacs.d
berada di satu direktori, dan konfigurasi yang setara untuk spacemac berada di direktori lain. Saya tidak keberatan nama apa yang dimiliki kedua direktori.
Apakah itu mungkin, kekurangan chroots / LD_PRELOAD / tipuan lainnya? Bagaimana saya bisa melakukannya?
spacemacs
menunjuk ke emacs yang dapat dieksekusi dan menggunakan nilai(car command-line-args)
untuk memutuskan file init mana yang akan dijalankan. Ini dengan asumsi, tentu saja, bahwa Anda menjalankan sistem unix selain OS X. (Cara bundel aplikasi bekerja pada OS X membuat trik ini sulit dilakukan.)Jawaban:
Salah satu opsi adalah menentukan konfigurasi mana yang ingin Anda muat dalam
~/.emacs
file. Ketika Emacs mulai, itu akan mencari file seperti itu sebelum melihat~/.emacs.d/
. Untuk lebih jelasnya Anda bisa membaca tentang File Init di manual Emacs.Jadi misalnya Anda dapat membuat
~/.spacemacs.d
dan mempertahankan keberadaan Anda~/.emacs.d
apa adanya. Lalu buat a~/.emacs
untuk memuat mana yang Anda inginkan:Jika mau, Anda dapat menemukan cara untuk beralih konfigurasi tanpa mengubah file .emacs. Misalnya, minta .emacs Anda memeriksa beberapa variabel lingkungan yang Anda atur di shell Anda atau dalam skrip yang Anda gunakan untuk memulai spacemacs:
sumber
fboundp
) untuk suatu fungsi atau perintah yang unik untuk spacemacs?(setq user-emacs-directory "~/.spacemacs.d/")
untuk bekerja (diprogn
cabang ruang angkasa bersyarat Anda). Bisakah Anda menambahkan itu ke jawaban Anda sehingga saya bisa menerimanya lagi?Karena ada lebih banyak yang harus dilakukan di init daripada hanya memuat file dan di sisi lain symlinking
.emacs.d
atau mengubahHOME
perubahan lingkungan runtime saya, saya memilih varian dari apa yang telah diusulkan @glucas. Saya menggunakan kode daristartup.el
dan menambahkan tambalan dari # 15539 untuk menggunakan variabel lingkungan untuk beralih antara dir init yang berbeda. Jika tidak ada yang diberikan, default digunakan.Ada satu masalah dengan spacemacs:
async
tidak tahu tentang direktori init yang diubah sehingga tidak dapat menemukan beberapa file yang diperlukan. Tapi ini telah diselesaikan di spacemacs baru-baru ini: Kesalahan saat menggunakan direktori config selain .emacs.d · Masalah # 3390Jadi inilah saya
~/.emacs
yang harus berperilaku seperti init-code asli tetapi dengan direktori init yang dapat dikonfigurasi:Ada juga tambahan yang bagus yang membuatnya berfungsi sebagai daemon tanpa usaha ekstra: nama server akan ditetapkan ke nama direktori init. Jadi sekarang Anda dapat memulai daemon emacs kedua dengan vanilla spacemacs
dan masih menggunakan emacsclient
Penggunaan saya sangat sederhana dan saya heran, bahwa saya adalah satu-satunya: Saya memiliki daemon emacs yang selalu berjalan dan menggunakannya dari gui dan konsol (dengan ssh misalnya). Dalam emacs ini saya menyiapkan semua dokumentasi dan log kerja saya, jadi harus selalu ada di sana. Tetapi kemudian saya ingin mencoba spacemacs atau salah satu paket distribusi lainnya dan bahkan mengkonfigurasinya, hingga saya dapat menghentikan konfigurasi saya saat ini atau menggunakan beberapa ide pintar. Dan seperti yang lain, saya ingin membuat konfigurasi basis sederhana untuk rekan kerja saya - dan mendokumentasikannya dengan mode-org dalam menjalankan contoh saya.
Karena satu-satunya masalah yang saya tahu adalah
async
dan tidak tahu tentang dir init yang diubah, saya berpikir tentang cara terbaik untuk menambahkan beberapa konfigurasi keasync
yang memiliki variabel yang harus disuntikkan secara default, sehingga tidak perlu menambal semua doaasync-start
seperti yang dilakukan ruang angkasa.sumber
async
. :-( Karena sudah beberapa bulan sejak Anda diposting, apakah Anda punya solusinya?async-start
memulai emacs tanpa apa-apa dan jika Anda ingin menggunakan beberapa variabel Anda harus meneruskannya. Tapi tentu saja, itu akan bersikap baik dan nyaman, jika async dapat dikonfigurasi dengan daftar variabel, yang akan digunakan pada setiap permintaanasync-start
.(setq custom-theme-directory user-emacs-directory)
sini.Dijelaskan di sini , dan ada PR yang sedang berlangsung untuk menambahkannya ke dokumentasi:
sumber
Sudah dijawab dan diterima, tetapi jika Anda merasa ingin mencoba cara-cara baru dalam melakukan sesuatu dengan cara yang dapat dibalikkan (di luar emacs konfigurasi) saya sarankan Anda menghabiskan setengah jam membiasakan diri dengan GNU Stow. Ini semacam
ln -s
steroid, dan mungkin ada beberapa pendekatan untuk menggunakannya. Anda dapat memiliki seluruh pengaturan di bawah satu subdirektori (termasuk konfigurasi offlineimap, konfigurasi emacs dll.) - yang akan menjadi pendekatan berbasis lingkungan - atau memiliki subdirektori terpisah untuk setiap aplikasi yang Anda miliki. Skizofrenia manis.Misalnya listing terkait emacs dari my ~ / Stow:
Ada satu konfigurasi awal yang berhasil saya gunakan, satu konfigurasi 'Saya tetap menggunakan default' dan satu 'saya akan roll sendiri'. Saya hanya bisa menghidupkan dan mematikan masing-masing dan selalu memiliki semuanya. Setiap subdir dapat memiliki seluruh pohon relatif terhadap ~ saya dan cukup mudah untuk mencampur dan mencocokkan.
sumber
Saya memeriksa patch yang digunakan @Uwe Koloska. Itu tidak termasuk dalam cabang utama. Saya agak setuju, saya pikir masalahnya harus diselesaikan di luar emacs menggunakan shell dan meninggalkan emacs tidak tahu apa-apa tentang itu.
Mungkin fitur itu akan lebih logis dari perspektif pengguna, menggunakan bendera akan kurang berbelit-belit untuk beberapa pengguna.
Dalam kasus penggunaan saya, saya ingin menyimpan instalasi Emacs dan Spacemacs saya sehingga variasi saya dari dua solusi di atas berfungsi seperti ini.
skrip shell
Pertama-tama skrip untuk meluncurkan spacemacs:
Script ini dipanggil
spacemacs
dan diinstal di/usr/local/bin
folder.File .emacs
Maka saya perlu
.emacs
file di folder rumah saya yang akan memperlakukan variabel lingkungan dengan benarEMACS_USER_DIR
.Saya tidak berpengalaman dengan elisp sama sekali jadi saya datang ini, lebih banyak orang yang berpengalaman mungkin bisa datang dengan sesuatu yang lebih baik. Tapi hei, itu berhasil.
Eye-candy
Lalu mengapa tidak menambahkan ikon:
sumber
exec emacs "$@"
.Saya menemukan Menggunakan Chemacs sangat mudah untuk beralih di antara konfigurasi emacs yang berbeda.
Saya membuat jawaban di sini: https://emacs.stackexchange.com/a/44678/11979 .
sumber