scheme-mode の Gauche 対応
Gauche のライブラリを読もうとしたら、正規表現リテラル内の |
が悪さをしてるらしくハイライトがめちゃくちゃになっていた。gauche-mode
というのがあるようだけど、Emacs が構文をどう扱うかを知りたかったので、自前でなんとかしてみることに。
modify-syntax-entry
だけではうまくいかなさそうなので、syntax-propertize-function
インタフェースを実装してみた。
(add-hook 'scheme-mode-hook 'gauche-syntax) (defun gauche-syntax () (setq-local syntax-propertize-function 'gauche-syntax-propertize-function)) (defun gauche-syntax-propertize-function (start end) (goto-char start) (funcall (syntax-propertize-rules ;; for regexp literal ("#/.*?/" (0 ".")) ;; original by scheme-mode.el ("\\(#\\);" (1 (prog1 "< cn" (scheme-syntax-propertize-sexp-comment (point) end))))) (point) end)) (font-lock-add-keywords 'scheme-mode '(("#/.*?/" (0 font-lock-builtin-face t))))