文字コードチェック

大した事じゃないけど, バッファーに貼り付けた時に, 文字コードが異なる場所を色付するための関数.

;;;===========================================================================
;;; 文字コードのチェック
(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 かな?