再びxyzzyにはまる
; ====================================================== ; モード別正規表現キーワード ; ====================================================== (defun get-mode-var-symbol (mode name) (intern (concat "*" (symbol-name mode) "-" name "*"))) (defun add-each-mode-regex-keywords (mode keywords) (let ((ls (get-mode-var-symbol mode "regex-keywords"))) (if (not (boundp ls)) (progn ; ここから先は初めて実行したときのみ (set ls '()) (add-hook (get-mode-var-symbol mode "hook") (lambda () (add-regex-keywords (symbol-value ls)))))) (set ls (append (symbol-value ls) (compile-regexp-keyword-list keywords))))) (defun add-regex-keywords (keywords) (unless (local-variable-p 'regexp-keyword-list) (make-local-variable 'regexp-keyword-list)) (setf regexp-keyword-list (append regexp-keyword-list keywords)))
xyzzyでメジャーモード別に正規表現のキーワードを色づけするLispスクリプト
こんな感じに使います
; ====================================================== ; lispの色づけ ; ====================================================== (add-each-mode-regex-keywords 'lisp-mode '( ("(\\([^ :0-9()\"]+\\)" t (:color 1) nil 1)))
問題点を挙げておくと