Saya mencoba memahami bagaimana tabel sintaks bekerja, tetapi mode mayor minimal saya tidak menyoroti apa pun.
Saya telah menulis elisp berikut, yang seharusnya menyoroti komentar:
(defconst my-yaml-mode-syntax-table
(let ((table (make-syntax-table)))
(modify-syntax-entry ?# "<" table)
(modify-syntax-entry ?\n ">" table)
table)
"Syntax table for `my-yaml-mode'.")
(define-derived-mode my-yaml-mode fundamental-mode "My YAML"
"testing"
:syntax-table my-yaml-mode-syntax-table)
Namun, diberikan file:
# foo
# bar
baz
Jika saya mengaktifkan mode-utama saya dengan M-x my-yaml-mode
, saya tidak mendapatkan sorotan. C-u C-x =
menunjukkan bahwa tidak ada wajah yang telah diterapkan.
elisp
major-mode
syntax-highlighting
Wilfred Hughes
sumber
sumber
M-;
memasukkan dengan benar#
? Jika ya, tabel sintaks diterapkan. Anda harus melihat spesifikasi pengunci font untuk mendapatkan penyorotan sintaksis.M-;
terikatcomment-dwim
dari newcomment.el, yang menggunakancomment-start
alih-alih tabel sintaks. AIUI.#
dan tekanC-u C-x =
, output harus berisi garissyntax: < which means: comment
.font-lock-mode
Andamy-yaml-mode
.:)
Jawaban:
Itu benar, tetapi tidak dire-kualifikasi hanya karena Anda mengubah mode utama.
Aktifkan mode utama Anda dan letakkan kursor Anda di komentar lalu jalankan M-x
eval-expression
(syntax-ppss-context (syntax-ppss (point)))
, itu akan menghasilkan komentar dan Anda akan melihat bahwa tabel sintaksis diatur dengan benar.Perbaikan sederhana adalah dengan menelepon
(font-lock-fontify-buffer)
saat mengaktifkan mode Anda.sumber