;; anthy-dic.el -- Anthy ;; Copyright (C) 2001 - 2005 ;; Author: Yusuke Tabata ;; : Tomoharu Ugawa ;; This file is part of Anthy ;;; Commentary: ;; ;; tooo experimental ;; ;; ;; Funded by IPA未踏ソフトウェア創造事業 2001 11/10 ;;; Code (defvar anthy-dic-util-command "anthy-dic-tool") (defvar anthy-dic-buffer-name " *anthy-dic*") (defun anthy-add-word-compose-paramlist (param) (let ((str "")) (while param (let* ((cur (car param)) (var (car cur)) (val (if (stringp (car (cdr cur))) (car (cdr cur)) (if (car (cdr cur)) "y" "n")))) (setq str (concat str var "\t=\t" val "\n"))) (setq param (cdr param))) str)) (defun anthy-add-word (yomi freq word paramlist) (let ((proc)) (setq proc (start-process "anthy-dic" anthy-dic-buffer-name anthy-dic-util-command "--append")) (if proc (progn (if anthy-xemacs (if (coding-system-p (find-coding-system 'euc-japan)) (set-process-coding-system proc 'euc-japan 'euc-japan)) (cond ((coding-system-p 'euc-japan) (set-process-coding-system proc 'euc-japan 'euc-japan)) ((coding-system-p '*euc-japan*) (set-process-coding-system proc '*euc-japan* '*euc-japan*)))) (process-send-string proc (concat yomi " " (int-to-string freq) " " word "\n")) (process-send-string proc (anthy-add-word-compose-paramlist paramlist)) (process-send-string proc "\n") (process-send-eof proc) t) nil))) (defun anthy-dic-get-noun-category (word) (let ((res '(("品詞" "名詞"))) (na (y-or-n-p (concat "「" word "な」と言いますか? "))) (sa (y-or-n-p (concat "「" word "さ」と言いますか? "))) (suru (y-or-n-p (concat "「" word "する」と言いますか? "))) (ind (y-or-n-p (concat "「" word "」は単独で文節になりますか? "))) (kaku (y-or-n-p (concat "「" word "と」と言いますか? ")))) (setq res (cons `("な接続" ,na) res)) (setq res (cons `("さ接続" ,sa) res)) (setq res (cons `("する接続" ,suru) res)) (setq res (cons `("語幹のみで文節" ,ind) res)) (setq res (cons `("格助詞接続" ,kaku) res)) res)) (defun anthy-dic-get-special-noun-category (word) (let ((res '()) (cat (string-to-int (read-from-minibuffer "1:人名 2:地名: ")))) (cond ((= cat 1) (setq res '(("品詞" "人名")))) ((= cat 2) (setq res '(("品詞" "地名"))))) res)) (defun anthy-dic-get-adjective-category (word) '(("品詞" "形容詞"))) (defun anthy-dic-get-av-category (word) (let ((res '(("品詞" "副詞"))) (to (y-or-n-p (concat "「" word "と」と言いますか?"))) (taru (y-or-n-p (concat "「" word "たる」と言いますか?"))) (suru (y-or-n-p (concat "「" word "する」と言いますか?"))) (ind (y-or-n-p (concat "「" word "」は単独で文節になりますか?")))) (setq res (cons `("と接続" ,to) res)) (setq res (cons `("たる接続" ,taru) res)) (setq res (cons `("する接続" ,suru) res)) (setq res (cons `("語幹のみで文節" ,ind) res)) res)) ;; taken from tooltip.el (defmacro anthy-region-active-p () "Value is non-nil if the region is currently active." (if (string-match "^GNU" (emacs-version)) `(and transient-mark-mode mark-active) `(region-active-p))) (defun anthy-add-word-interactive () "" (interactive) (let ((param '()) (res '()) (word (if (anthy-region-active-p) (buffer-substring (region-beginning) (region-end)) "")) yomi cat) (and (string= word "") (setq word (read-from-minibuffer "単語(語幹のみ): "))) (setq yomi (read-from-minibuffer (concat "読み (" word "): "))) (setq cat (string-to-int (read-from-minibuffer "カテゴリー 1:一般名詞 2:その他の名詞 3:形容詞 4:副詞: "))) (cond ((= cat 1) (setq param (anthy-dic-get-noun-category word))) ((= cat 2) (setq param (anthy-dic-get-special-noun-category word))) ((= cat 3) (setq param (anthy-dic-get-adjective-category word))) ((= cat 4) (setq param (anthy-dic-get-av-category word)))) (if param (setq res (anthy-add-word yomi 1 word param))) (if res (message (concat word "(" yomi ")を登録しました"))))) (provide 'anthy-dic)