マルチバイト文字と普通の文字を識別したい

 マルチバイトの文字列を間違って使ってなんかエラーが出て動かないとか、そういうのを防ごうかと思って、適当に作ってみた奴。
■追記
マルチバイト文字の正規表現 - himadatenodeの日記
http://d.hatena.ne.jp/himadatanode/20080215/p1
こっちに

■具体的にすること

  • *multi-byte-number-notifier*
  • *multi-byte-symbol-notifier*
  • *multi-byte-alphabet-notifier*

で夫々指定した正規表現の文字を、設定した色で色づけするとか。単にそれだけ。オンオフを切り替えるスイッチくらい付けたらよかったのかもしれないが、適当に必要そうなモードとかのhookとかで呼び出しが楽そうに思ってみたり。

;;; multi byte notifier
;; var
(defvar *multi-byte-number-notifier*
  '("[1234567890]" t (:keyword 9) t))

(defvar *multi-byte-symbol-notifier*
  '("[;:−+*=^|¥<>?!”#$%&’(){}]"
	t (:keyword 9)  t))

(defvar *multi-byte-alphabet-notifier*
  '("[abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]"
	t (:keyword 9) t))

;; check and set
(defvar *multi-byte-notifier*
	  (compile-regexp-keyword-list
	   (let (regexp-list)
	  (if *multi-byte-number-notifier*
		  (push *multi-byte-number-notifier* regexp-list))
	  (if *multi-byte-symbol-notifier*
		  (push *multi-byte-symbol-notifier* regexp-list))
	  (if *multi-byte-alphabet-notifier*
		  (push *multi-byte-alphabet-notifier*  regexp-list)))
	   ))

(defun multi-byte-notifier()
  (interactive)
  (unless (local-variable-p 'regexp-keyword-list)
	(make-local-variable 'regexp-keyword-list))
  (setq regexp-keyword-list
		(append regexp-keyword-list *multi-byte-notifier*)))

余り関係ないけどマルチバイト文字は[a-z]見たいなのは指定できないらしい。(追記:できた)文字コードとかで直接指定すれば出来るのかもしれないが、どのコードを連番で指定するのかとかも不明なので、適当にそのままぺたぺた書いてみた。