Ada hal-hal tertentu seperti tampilan spasi spasi, tampilan batas buffer, pembatas berwarna pelangi, dan banyak lagi yang ingin saya aktifkan di sebagian besar mode atau lebih tepatnya, semua pemrograman dan yang terkait dengan teks (karena menampilkan spasi tambahan di, katakanlah ediff-mode
, akan berbenturan dengan mode utama) daripada menggunakan mode minor global dengan aturan pengecualian. Karena sebagian besar mode berasal dari salah satu prog-mode
atau text-mode
, menambahkan fungsi yang dipermasalahkan ke keduanya prog-mode-hook
dan text-mode-hook
berfungsi, namun ada cukup mode yang tidak mengikuti spesifikasi ini, seperti css-mode
atau LaTeX-mode
.
Saya ingin mendefinisikan sebuah hook yang mencakup semua mode ini untuk saat ini hanya menambahkan fungsi ke satu hook. Sebut saja non-special-mode-hook
(untuk membedakannya dari special-mode-hook
). Bagaimana saya bisa membuat pengait yang dijalankan untuk semua mode utama yang dibuatnya?
Jawaban:
Cukup kelompok pengaturan itu bersama-sama ke dalam suatu fungsi, dan tambahkan fungsi itu ke semua fungsi kait yang relevan:
Tidak ada cara lain untuk melakukan ini yang lebih ringkas: apa pun yang terjadi, di suatu tempat Anda akan memiliki daftar putih atau daftar hitam mode. Dalam praktiknya, Anda hanya akan menemukan beberapa mode yang perlu ditambahkan ke daftar, jadi saya sarankan agar semuanya tetap sederhana.
Dalam konfigurasi saya sendiri, saya menggunakan trik ini untuk menyatukan konfigurasi beberapa mode berorientasi lisp.
sumber
derived-mode-hook-name
.(dolist ...)
vs(add-hook ...)
<ulangi>. Saya hanya akan tetap dengan milik saya ketika menjaga perubahan spesifik mode (file per modeuse-package
,,el-get
). Keduanya merupakan solusi all-in-one-place, tetapi dari sudut pandang yang berbeda.APPEND
argumen nihil keadd-hook
sini, maka kait akan dipanggil dalam urutan terbalik dari urutan daftar yang Anda berikan. Tidak ada yang salah dengan itu; hanya sadar akan hal itu, jika urutan masalah.Anda dapat menambahkan fungsi ke
after-change-major-mode-hook
, yang memeriksa apakah mode baru itu menarik (mungkin melalui(not (derived-mode-p 'special-mode))
), dan jika demikian berjalannon-special-mode-hook
.sumber
fundamental-mode
, tetapi melakukan lebih dari sekedar menampilkan teks), tetapi agak terlalu ajaib untuk seleraku. Karena itu upvote.Saya menemukan diri saya sering melakukan pola @ sanityinc untuk membungkus pengaturan saya dan aktivasi mode minor dalam defun dan mengulang melalui kait untuk menyebutnya, tapi saya ingin pendekatan yang lebih bersih jadi saya menulis makro ini:
Catatan: Saya
dash.el
kebersihan, tetapi mudah disesuaikan untuk digunakan(dolist)
.Kemudian Anda dapat mendefinisikan mode yang dikelompokkan sebagai variabel daftar dan menggunakannya seperti:
sumber
derived-mode-hook-name
untuk mendapatkan nama variabel kait mode, sehingga menghindariintern
triknya.derived-mode-hook-name
. tip yang bagus!Daripada menetapkan hook baru yang berfungsi untuk semua mode non-diturunkan ini Anda dapat melakukan hal berikut.
Anda masih harus menambahkannya ke semua mode, tetapi dengan mendefinisikan fungsi Anda untuk memasukkan semua mode, Anda hanya perlu mengubah satu definisi saat menambahkan / menghapus fitur tambahan.
sumber
Mungkin Anda bisa mencoba ini:
sumber