; boiling-egg.el ; This file is Public Domain Software. ; Version 0.00 Apr 6, 2000 ; ; Define autoload entries and key bindings in your .emacs file as follows: ; ; (autoload 'boiling-rK-trans "boiling-egg" "romaji-kanji conversion" t) ; (autoload 'boiling-rhkR-trans "boiling-egg" "romaji-kana conversion" t) ; (global-set-key "\C-o" 'boiling-rK-trans) ; (global-set-key "\eo" 'boiling-rhkR-trans)) (defvar boiling-input-method "japanese-egg-wnn") (defvar boiling-subjective-chars "'.,a-zA-Z@") (defvar boiling-subjective-lbracket t) (defvar boiling-subjective-rbracket t) (defvar boiling-subjective-minus t) (defun boiling-make-subjective-chars (complement) (concat "[" (if complement "^") (if boiling-subjective-lbracket "]") (if boiling-subjective-rbracket "[") boiling-subjective-chars (if boiling-subjective-minus "-") "]")) (setq boiling-last-input-flag nil) (defun boiling-rK-trans () "(roman(hankaku) or hiragana/ktakana) -> KANJI transformation." (interactive) (setq boiling-trans-type nil) (if (boiling-rhkR-trans t) (progn (setq boiling-last-input-flag t) (activate-input-method boiling-input-method) (egg-convert-region boiling-trans-start (point))))) (add-hook 'input-method-after-insert-chunk-hook '(lambda () (if boiling-last-input-flag (progn (inactivate-input-method) (setq boiling-last-input-flag nil) (if (eq boiling-trans-start (point)) (insert-string boiling-trans-original)) )) ) t) (defun boiling-rhkR-trans (&optional kana) "roman(hankaku) -> hiragana -> katakana -> ROMAN(zenkaku) transformation" (interactive "P") (if (and (eq last-command 'boiling-rhkR-trans) boiling-trans-type) (progn (cond ((eq boiling-trans-type 'h) (japanese-katakana-region boiling-trans-start (point)) (setq boiling-trans-type 'k)) ((eq boiling-trans-type 'k) (delete-region boiling-trans-start (point)) (insert-string boiling-trans-original) (japanese-zenkaku-region boiling-trans-start (point)) (setq boiling-trans-type 'R)) ((eq boiling-trans-type 'R) (japanese-hankaku-region boiling-trans-start (point)) (setq boiling-trans-type nil)) ) nil) (let ((pos (point)) (mark (mark)) bol) (beginning-of-line) (setq bol (point)) (goto-char pos) (if (and mark (<= bol mark) (< mark pos) (not (re-search-backward "[^!-~]" mark t))) (boiling-rhR-trans mark pos kana) (goto-char (- pos 1)) (if (and (< bol pos) (looking-at (boiling-make-subjective-chars nil))) (progn (if (re-search-backward (boiling-make-subjective-chars t) bol t) (forward-char 1) (goto-char bol)) (boiling-rhR-trans (point) pos kana)) (setq boiling-trans-type nil) (goto-char pos) nil) )) )) (defun boiling-rhR-trans (start end kana) (setq boiling-trans-start start) (goto-char end) (setq boiling-trans-original (buffer-substring boiling-trans-start pos)) (condition-case () (progn (activate-input-method boiling-input-method) (inactivate-input-method) (its-translate-region boiling-trans-start (point)) (setq boiling-trans-type 'h) t) (error (if kana nil (goto-char end) (japanese-zenkaku-region boiling-trans-start end) (setq boiling-trans-type 'R) t) )))