
The following code will display furigana in ERC (Emacs IRC) as seen above. Download the code.
;; lisp/emacs.d/ivan-erc.el (defvar ivan-erc-japanese-channel "#japanese\\|#nihongo" "Regexp of channels that are in Japanese") (defun ivan-erc-furigana () "Display furigana when receiving a message in Japanese" (when (and (string-match ivan-erc-japanese-channel (buffer-name)) (memq 'unicode (find-charset-region (point-min) (point-max))) (ivan-japanese-kanji string)) (insert (kakasi (buffer-substring-no-properties (point-min) (point-max)))) (erc-restore-text-properties))) (add-hook 'erc-insert-modify-hook 'ivan-erc-furigana) ;; /lisp/emacs.d/ivan-japanese.el (defun ivan-japanese-kakasi (input) "Take a Japanese string and return INPUT in hiragana" (get-buffer-create kakasi-buffer) (with-temp-buffer (insert input) (let ((coding-system-for-read 'euc-jp) (coding-system-for-write 'euc-jp)) (call-process-region (point-min) (point-max) "kakasi" nil kakasi-buffer nil "-JH" "-s"))) (prog1 (with-current-buffer kakasi-buffer (setq kakasi-ret (buffer-substring-no-properties (point-min) (point-max)))) (kill-buffer kakasi-buffer))) (defun ivan-japanese-kanji (string) "Return t if string contains Japanese kanji" (let ((length (length string)) (count 0) (ret nil) (char ?a)) (while (< count length) (setq char (aref string count)) (if (and (< char ?\u9fa5) (> char ?\u4e00)) (setq ret t)) (setq count (1+ count))) ret))