Saya menyadari C-x C-e
yang mana eval-last-sexp
dan M-x eval-buffer
, tetapi ini tidak selalu cukup untuk mengambil semua perubahan. Kadang-kadang Anda harus benar-benar menutup buffer yang ada dalam mode yang konfigurasi mereka berubah, dan di lain waktu Anda harus memulai ulang emacs sepenuhnya. Apakah ada cara yang lebih umum untuk menangani masalah ini? Atau, apakah ada cara untuk memulai kembali emacs tanpa kehilangan buffer terbuka yang ada dan sejarah interaktif?
27
Jawaban:
Tidak, itu tidak mungkin untuk memuat ulang konfigurasi yang dimodifikasi dan memiliki Emacs berperilaku seolah-olah modifikasi itu sudah ada ketika Emacs dimuat. Singkatnya, paket-paket Emacs memiliki kebebasan terlalu banyak untuk dapat diimplementasikan.
Anda menyebutkan bahwa beberapa mode utama tidak menerima perubahan konfigurasi. Alasan yang mungkin untuk ini adalah karena mengaktifkan mode menetapkan beberapa variabel buffer-lokal berdasarkan nilai saat ini dari opsi tertentu. Tanpa mengaktifkan kembali mode seperti itu di setiap buffer yang menggunakannya, tidak semua perubahan akan diambil. Dan bahkan pada saat itu sangat mungkin bahwa beberapa hal tetap tidak berubah. Peluang kerja ini lebih tinggi ketika opsi dikustomisasi menggunakan
custom-set-variables
formulir, tetapi ini harus diterapkan secara eksplisit untuk setiap opsi. Dan sejauh ini kami hanya berbicara tentang mode utama dan opsi mereka ...Anda dapat mencoba menerapkan perintah untuk mengaktifkan kembali mode utama setiap buffer. Tetapi tidak mungkin itu akan sepenuhnya mengaktifkan semua perubahan, dan lebih buruk itu akan menonaktifkan semua mode minor yang telah Anda aktifkan secara manual, dan kehilangan semua jenis negara lainnya.
Untuk alasan itu saya bahkan akan merekomendasikan untuk
eval-buffer
tidak memasukkan file init Anda sama sekali untuk mengambil sebanyak mungkin perubahan. Mengevaluasi pengaturan yang diubah menggunakan masing-masingeval-last-sexp
dan jika itu tidak berhasil, maka Anda harus me-restart Emacs.Bagaimana keadaan dapat dipertahankan ketika Emacs ditutup adalah pertanyaan berbeda yang harus ditanyakan secara terpisah.
sumber
Memanggil
normal-mode
adalah cara yang berguna untuk memicu kembali semua mode untuk buffer yang diberikan, jika Anda telah membuat perubahan pada mereka atau kaitannya yang terkait.Anda juga dapat menggunakan
revert-buffer
(yang memanggilnormal-mode
), yang seperti memuat ulang file tanpa membuang riwayat undo.(Anda juga dapat memuat ulang file dengan C-xC-v, tetapi itu akan membuang riwayat undo Anda.)
Dalam M-x
ibuffer
mengetikkan huruf besar Vmengembalikan semua buffer yang ditandai, sementara huruf besar Edan Wmemungkinkan Anda untuk mengevaluasi elisp acak untuk semua buffer yang ditandai.sumber