平衡点
2007/02/05
_ 文字コードチェック
大した事じゃないけど, バッファーに貼り付けた時に, 文字コードが異なる場所を色付するための関数.
;;;=========================================================================== ;;; 文字コードのチェック (defun my-check-encode-able (beg end) (interactive "r") (save-excursion (let* ( (mycodingsystem buffer-file-coding-system) mychar mycharname (mycount 0) (mycharsetlist (coding-system-get mycodingsystem 'safe-charsets)) ) (goto-char beg) ;;;リージョンの先頭に移動 (while (< (point) end) ;;;リージョン内を順に調べる (setq mychar (following-char)) (setq mycharsetname (char-charset mychar)) (if (equal 'composition mycharsetname) (setq mycharsetname (char-charset (string-to-char (decompose-string (char-to-string mychar)))))) ;;encode できない文字だったら色をつける (if (or (equal mycharsetlist t) (member mycharsetname mycharsetlist)) nil ;;;encode できる時は何もしない。 encode できない時↓ (overlay-put (make-overlay (point) (1+ (point))) 'face 'region) (setq mycount (1+ mycount))) (forward-char) ;;;次の文字へ ) ;;結果の表示 (if (< 0 mycount) (message "%s で encode できない文字が%d 個ありました。" mycodingsystem mycount)) (if transient-mark-mode (setq deactivate-mark t)) ;;;region を色つけしている時、色を解除 )))
みたいなの. どこで見つけたのか忘れたけど, Meadow memo かな?