debian/0000755000000000000000000000000011777603626007205 5ustar debian/pbuilder-test/0000755000000000000000000000000011354045116011751 5ustar debian/pbuilder-test/001_file_test0000644000000000000000000000006511354045116014233 0ustar #!/bin/bash # simple test ldd /usr/lib/yc-el/icanna debian/pbuilder-test/002_yc-version0000644000000000000000000000032411354045116014352 0ustar #!/bin/bash # check that yc-version is available apt-get install -y --force-yes emacs21 emacs -batch -eval '(progn (load-library "yc") (message (concat "YC_VERSION: " yc-version)))' 2>&1 |\ grep YC_VERSION debian/source/0000755000000000000000000000000011777130424010474 5ustar debian/source/format0000644000000000000000000000001411421501434011667 0ustar 3.0 (quilt) debian/rules0000755000000000000000000000215311776646553010273 0ustar #!/usr/bin/make -f # -*- makefile -*- # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 CFLAGS = -Wall -g ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif configure: configure-stamp configure-stamp: dh_testdir touch configure-stamp build: build-arch build-indep build-arch: build-stamp build-indep: build-stamp build-stamp: configure-stamp dh_testdir $(MAKE) touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp [ ! -f Makefile ] || $(MAKE) clean dh_clean install: build dh_testdir dh_testroot # It was deprecated. dh_clean -k dh_prep dh_installdirs $(MAKE) install DESTDIR=$(CURDIR)/debian/yc-el binary-indep: build install binary-arch: build install dh_testdir dh_testroot dh_installchangelogs ChangeLog dh_installdocs dh_installexamples dh_installemacsen dh_installman dh_link dh_strip dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol dh_lintian dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure debian/dirs0000644000000000000000000000014011776645721010065 0ustar usr/share/emacs/site-lisp/yc-el usr/lib/yc-el usr/share/doc/yc-el usr/share/lintian/overrides/ debian/emacsen-install0000644000000000000000000000402511354045116012171 0ustar #! /bin/sh -e # /usr/lib/emacsen-common/packages/install/yc-el # Written by Jim Van Zandt , borrowing heavily # from the install scripts for gettext by Santiago Vila # and octave by Dirk Eddelbuettel . FLAVOR=$1 PACKAGE=yc-el unset XEMACS if [ ${FLAVOR} = emacs ]; then exit 0; fi # ## checking MULE supported XEmacs. (for XEmacs/MULE is needed elisp) # 2006-Feb-08 We have only XEmacs21 in Debian stable and unstable. # if [ ${FLAVOR} = xemacs21 ]; then XEMACS=`ls /usr/bin/xemacs*21*-mule* 2> /dev/null | head -1` if [ -z ${XEMACS} ]; then echo echo "install/${PACKAGE}: Ignoring ${FLAVOR}." echo "${PACKAGE} needs MULE supported XEmacs." exit 0; fi XEMACS=`basename ${XEMACS}` fi echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} SITEFLAG=-no-site-file FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} # 2005.12.15 : yabuki; We have emacs21 in Sarge. # I think that yc-el package does not need to check emacs19 are installing # Install-info-altdir does not actually exist. # Maybe somebody will write it. if test -x /usr/sbin/install-info-altdir; then echo install/${PACKAGE}: install Info links for ${FLAVOR} install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz fi install -m 755 -d ${ELCDIR} cd ${ELDIR} FILES=`echo *.el` rm -f ${ELCDIR}/*.el cp ${FILES} ${ELCDIR} cd ${ELCDIR} cat << EOF > path.el (setq load-path (cons "." load-path) byte-compile-warnings nil) EOF # 2006-Feb-07 yabuki if [ -z ${XEMACS} ]; then # Do byte compile with emacs21 or ... echo " ${FLAVOR} ${FLAGS} ${FILES}" ${FLAVOR} ${FLAGS} ${FILES} else #you are xemacs21 byte compile(only xemacs with mule feature) echo "${XEMACS} ${FLAGS} ${FILES}" ${XEMACS} ${FLAGS} ${FILES} fi rm -f *.el path.el # ln -fs ${ELDIR}/yc.el ${ELCDIR}/ exit 0 debian/compat0000644000000000000000000000000211776612546010403 0ustar 5 debian/patches/0000755000000000000000000000000011777603340010625 5ustar debian/patches/workaround-when-kill-emacs0000644000000000000000000000231611777603340015723 0ustar Description: Bug work around, When emacs killed This patch is same modified as 5.2.0 -> 5.2.1. This patch came from upstream's modification. . Author: Yukiharu YABUKI --- Origin: upstream Forwarded: not-needed Reviewed-By: Yukiharu YABUKI Last-Update: 2012-07-13 Index: yc-el-5.0.0/yc-5.0.0.el =================================================================== --- yc-el-5.0.0.orig/yc-5.0.0.el 2010-07-21 14:20:52.000000000 +0900 +++ yc-el-5.0.0/yc-5.0.0.el 2012-07-12 01:00:59.000000000 +0900 @@ -1,4 +1,4 @@ -;;; yc.el by knak 2008.02.13 +;;; yc.el by knak 2010.10.01 ;;; YC $B$O(B "Yet another Canna client" $B$NN,$G$9!#(B ;;; $BF,J8;z$r$H$k$H(B YACC $B$K$J$C$A$c$&$s$@$b$s(B (;_;) @@ -2000,8 +2000,8 @@ ;; $B=*N;;~4X?t(B (defun yc-close () (when yc-context - ;; deleted follow line 01/12/29 by matz@ruby-lang.org -; (set-process-sentinel yc-server nil) + ;; comment in 10/10/01 by knak@cerse.dti.ne.jp + (set-process-sentinel yc-server nil) (condition-case nil (yc-finalize) (yc-trap-server-down nil)) @@ -4055,5 +4055,5 @@ ; (force-yc-input-mode) ; ) -(defconst yc-version "5.0.0") +(defconst yc-version "5.2.1") (provide 'yc) debian/patches/new-upstream-5.0.00000644000000000000000000075304511777130244013651 0ustar Description: Upstream changes introduced in version 5.0.0-1 This patch included ONO-san's patch. (Kanji does not encrypted. -- Some Japanese say moji-bake) same as 5.2.0 which is upstream I,Yukiharu YABUKI, don't want to drop support XEmacs. I do not accept new upstram simply. I mixed new upstream and old code which is icanna. . yc-el (5.0.0-1) unstable; urgency=low . [ Yukiharu YABUKI ] * New Upstream * Removed Dependency of Emacs 22 (closes: #577468) * Added Dependency of Emacs 23 * Adapting for Emacs 23 (Thanks Kouichi ONO-san) * Converted to source format version 3 . The person named in the Author field signed this changelog entry. Author: Yukiharu YABUKI --- The information above should follow the Patch Tagging Guidelines, please checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here are templates for supplementary fields that you might want to add: Origin: upstream, http://www.ceres.dti.ne.jp/~knak/yc-5.0.0.el.gz Forwarded: Reviewed-By: Yukiharu YABUKI Last-Update: 2012-07-11 --- /dev/null +++ yc-el-5.0.0/yc.el @@ -0,0 +1,4119 @@ +;;; yc.el by knak 2008.02.13 + +;;; YC $B$O(B "Yet another Canna client" $B$NN,$G$9!#(B +;;; $BF,J8;z$r$H$k$H(B YACC $B$K$J$C$A$c$&$s$@$b$s(B (;_;) + +;;; $BG[I[>r7o(B: GPL +;;; $B:G?7HGG[I[85(B: http://www.ceres.dti.ne.jp/~knak/yc.html +;;; $B:nuBV$G$"$l$P(B +;;; global-yc-mode $B$N7k2L$O$=$NB>$N%P%C%U%!$N(B YC $B$N(B +;;; $B>uBV$K$+$+$o$i$:%*%s>uBV$K$J$k(B + +;;; .emacs $B$NNc(B: +;;; +;;; (setq yc-server-host "CANNAHOST") ; cannaserver $B$r(B CANNAHOST $B$G5/F0$7$F$$$k(B +;;; (setq yc-rK-trans-key [henkan]) ; $BJQ49%-!<$r(B Henkan $B%-!<$K$9$k(B +;;; (setq yc-use-color t) ; fence $B$r%+%i!L>JQ49%F!<%V%k$r@_Dj$9$k(B +;;; $B!&(Byc-select-count $B0lMw%b!<%I$K$J$k7+$jJV$7?t$r@_Dj$9$k(B +;;; $B!&(Byc-choice-stay $BA*Br$KJ8@a$r?J$a$k$+N1$^$k$+$r@_Dj$9$k(B +;;; $B!&(Byc-rK-trans-key $B4A;zJQ49%-!<$r@_Dj$9$k(B +;;; $B!&(Byc-stop-chars ANK-$B4A;zJQ49;~$K$r@_Dj$9$k(B +;;; $B!&(Byc-use-fence fence$BI=<($N>~$jJ8;z(B(||)$B$rI=<($9$k(B +;;; $B!&(Byc-use-color fence$BI=<($r%+%i!L>(B-$B4A;zJQ49$r$9$k$J$i(B C-\ +;;; $B$+$s$J$NI8=`$O(B C-o $B$@$1$I(B YC $B$O(B C-\ $B$G$R$i2>L>F~NOJT=8$K$J$k(B +;;; (global-set-key "\C-o" 'toggle-input-method) $B$G(B C-o $B$K$G$-$k(B +;;; +;;; $B!&(Balphabet $B$HJQ49$9$kJ8;zNs$N4V$K$O(B SPC $B$r$$$l$k(B +;;; C-j $B$rF~NO$9$k$HH>3QJ8;zNs$,B3$/6h4V$rJQ49$7$h$&$H$9$k(B +;;; alphabet $B$HJQ496h4V$O(B SPC $B$GJ,N%$9$k$H%9%`!<%:$KF~NO$,$G$-$k$h$&$K$J$k(B +;;; +;;; $B!&(Balphabet $B$HJQ49$9$kJ8;zNs$N4V$K(B SPC $B$r$$$l$?$/$J$+$C$?$i(B C-@ +;;; YC $B$O(B region $B$,%+!<%=%k$N$"$k9T$KJD$8$F$$$k>l9g(B +;;; region $B$rJQ49$7$h$&$H$9$k(B +;;; +;;; $B!&%+%i%U%k$JJQ49$r$7$?$+$C$?$i(B yc-use-color $B$r(B t $B$K$9$k(B +;;; +;;; $B!&4V0c$C$F3NDj$7$?$i:FJQ49(B +;;; $B4V0c$C$F3NDj$7$F$b3NDjD>8e$J$i(B C-j $B$G:FJQ49$G$-$k(B +;;; $B%+!<%=%k$rF0$+$7$?$j$9$k$H$b$&:FJQ49$G$-$J$$$1$I(B (T_T) +;;; +;;; $B!&A43Q$R$i2>L>$dA43Q%"%k%U%!%Y%C%H$bJQ49$G$-$k(B +;;; +;;; $B!&;z3Q%+%J(B +;;; a ... alphabet +;;; A ... $B#a#l#p#h#a#b#e#t(B + +;;; rK ... romaji-$B4A;z(B +;;; rH ... romaji-$B$R$i$,$J(B +;;; Hk ... $B$R$i$,$J(B-$B%+%?%+%J(B +;;; Hh ... $B$R$i$,$J(B-$BH>3Q%+%J(B +;;; aA ... alphabet-$B#a#l#p#h#a#b#e#t(B +;;; Aa ... $B#a#l#p#h#a#b#e#t(B-alphabet + +(defgroup yc nil + "Yet another Canna client." + :group 'input-method + :group 'Japanese) + +(defcustom yc-canna-lib-path + (let ((dirs (append (let ((path (getenv "CANNALIBDIR"))) + (if (and path (not (string= path ""))) (list path))) + '("/usr/local/canna/lib/" + "/usr/local/lib/canna/" + "/usr/pkg/share/canna/" + "/usr/lib/canna/" + "/var/lib/canna/")))) + (while (and dirs + (not (file-regular-p (concat (car dirs) "/default.canna")))) + (setq dirs (cdr dirs))) + (car dirs)) + "*$B$+$s$J$N%i%$%V%i%j!<%Q%9(B(default.canna $B$N$"$k>l=j(B)$B$r@_Dj$9$k(B" + :type 'directory + :group 'yc) +(defsubst get-yc-canna-lib-path () + (condition-case nil + (file-name-as-directory yc-canna-lib-path) + (error ""))) +(defcustom yc-canna-dic-path + (concat (get-yc-canna-lib-path) "dic/") + "*$B$+$s$J$N<-=q%Q%9(B(default.{cpb,kp}$B$N$"$k>l=j(B)$B$r@_Dj$9$k(B" + :type 'directory + :group 'yc) +(defcustom yc-icanna-path + "icanna" + "*canna$B$H(BUNIX domain socket$B7PM3$GDL?.$9$k$?$a$NJd=u%W%m%0%i%`(B(icanna)$B$N%Q%9$r@_Dj$9$k(B" + :type 'file + :group 'yc) +(defvar yc-rH-conv-dic + (let ((files '("default.cbp" "default.kp"))) + (while (and (car files) + (not (file-readable-p + (concat (file-name-as-directory yc-canna-dic-path) + (car files))))) + (setq files (cdr files))) + (when (car files) (concat yc-canna-dic-path (car files)))) + "$B$+$s$J$N%m!<%^;z$R$i2>L>JQ49%F!<%V%k%U%!%$%kL>$rJQ49$9$k(B") + +(defcustom yc-select-count 2 + "*$B0lMw%b!<%I$K$J$k7+JV$7?t$r@_Dj$9$k!#%G%U%)%k%H$O(B3$B2s!#(B +$B$?$@$7(B ~/.canna $B$,$"$C$?>l9g$K$O!"Ev3:%U%!%$%k$+$i@_DjCM$rFI$_9~$`(B" + :type 'integer + :group 'yc) +(defcustom yc-choice-stay nil + "*$B0lMw%b!<%I$GJQ498uJd$rA*Br$7$?$H$-$Kl9g!"J8@a$r?J$a$k(B +$B;XDj$,(B $BHs(Bnil $B$N>l9g!"J8@a$KN1$^$k(B" + :type 'boolean + :group 'yc) +(defvar yc-rK-trans-key "\C-j" + "*$B4A;zJQ49%-!<$r@_Dj$9$k(B") +(defcustom yc-stop-chars "(){}<>" + "*$B4A;zJQ49J8;zNs$r$r;XDj$9$k!#(B +nil $B$N>l9g!"(Blocalhost $B$r;XDj$7$?;v$K$J$k(B" + :type 'string + :group 'yc) +(defcustom yc-enable-hankaku t + "*$BH>3Q$+$J$r;zl9g!"H>3Q$+$JM-8z!#(Bnil$B$N>l9g!"H>3Q$+$JL58z(B" + :type 'boolean + :group 'yc) +(defcustom yc-connect-server-at-startup t + "*yc$B$rFI$_9~$s$@$i$9$0$K%5!<%P$K@\B3$9$k!#(B +$BHs(Bnil$B$N>l9g!"$9$0@\B3$9$k!#(Bnil$B$N>l9g!":G=i$K4A;zJQ49%-!<$r2!$9$^$G@\B3$7$J$$!#(B" + :type 'boolean + :group 'yc) + +;; minibuffer $B%-!<%P%$%s%I(B +(and (boundp 'minibuffer-local-map) minibuffer-local-map + (define-key minibuffer-local-map yc-rK-trans-key 'yc-rK-trans)) + +(defvar yc-mode nil "$B4A;zJQ49%H%0%kJQ?t(B") +(defvar yc-henkan-mode nil "$B4A;zJQ49%b!<%IJQ?t(B") +(defvar yc-input-mode nil "$B$+$JF~NO%b!<%IJQ?t(B") +(defvar yc-edit-mode nil "$B$+$JJT=8%b!<%IJQ?t(B") +(defvar yc-select-mode nil "$B8uJd0lMw%b!<%IJQ?t(B") +(defvar yc-defword-mode nil "$BC18lEPO?%b!<%IJQ?t(B") +(defvar yc-wclist-mode nil "$B4A;zA*Br%b!<%IJQ?t(B") +(or (assq 'yc-mode minor-mode-alist) + (setq minor-mode-alist (cons '(yc-mode " yc") minor-mode-alist))) + +(defvar yc-mode-map (make-sparse-keymap) "$B4A;zJQ49%H%0%k%^%C%W(B") +(defvar yc-henkan-mode-map (make-sparse-keymap) "$B4A;zJQ49%b!<%I%^%C%W(B") +(defvar yc-input-mode-map (make-sparse-keymap) "$B$+$JF~NO%b!<%I%^%C%W(B") +(defvar yc-edit-mode-map (make-sparse-keymap) "$B$+$JJT=8%b!<%I%^%C%W(B") +(defvar yc-select-mode-map (make-sparse-keymap) "$B8uJd0lMw%b!<%I%^%C%W(B") +(defvar yc-defword-mode-map (make-sparse-keymap) "$BC18lEPO?%b!<%I%^%C%W(B") +(defvar yc-wclist-mode-map (make-sparse-keymap) "$B4A;zA*Br%b!<%I%^%C%W(B") +(or (assq 'yc-mode minor-mode-map-alist) + (setq minor-mode-map-alist + (append (list (cons 'yc-wclist-mode yc-wclist-mode-map) + (cons 'yc-defword-mode yc-defword-mode-map) + (cons 'yc-select-mode yc-select-mode-map) + (cons 'yc-edit-mode yc-edit-mode-map) + (cons 'yc-input-mode yc-input-mode-map) + (cons 'yc-henkan-mode yc-henkan-mode-map) + (cons 'yc-mode yc-mode-map)) + minor-mode-map-alist))) +(if (boundp 'mode-line-mode-menu) + (define-key mode-line-mode-menu [yc-mode] + `(menu-item ,(purecopy "yc") yc-mode + :button (:toggle . yc-mode)))) +(defvar yc-defword-minibuffer-map (copy-keymap minibuffer-local-map)) +(set-keymap-parent yc-defword-minibuffer-map yc-input-mode-map) + +;;; +;;; isearch $B;~$K(B boil $B=PMh$k$h$&$K$9$k(B +;;; +(defvar yc-isearch nil) +(defun yc-isearch-rK-trans (arg) + "$B%$%s%/%j%a%s%?%k%5!<%ACf$K(BANK-$B4A;zJQ49$9$k4X?t(B" + (interactive "p") + (setq unread-command-events (list last-command-event)) + (let ((yc-isearch-string isearch-string)) + (while (not (string= isearch-string "")) + (isearch-delete-char)) + (setq isearch-string yc-isearch-string)) + (setq yc-isearch t) + (isearch-edit-string)) + +(defun yc-isearch-mode-function () + (define-key isearch-mode-map "\C-\\" 'yc-isearch-rK-trans) + (define-key isearch-mode-map yc-rK-trans-key 'yc-isearch-rK-trans)) + +(add-hook 'isearch-mode-hook 'yc-isearch-mode-function) + + +;;; +;;; constants +;;; + +;;; +;;; variable +;;; + +(defvar yc-debug nil) ;" *canna*" + +(defvar yc-server nil) +(defvar yc-prev-command nil) +(defvar yc-context nil) +(defvar yc-yomi-dic nil) +(defvar yc-rH-table nil) +(defvar yc-res-buffer nil) +(defvar yc-dic-list '("iroha" "fuzokugo" "hojomwd" "hojoswd" "keishiki")) +(defvar yc-user-dic-list '("user")) +(defvar yc-bushu-dic-list '("bushu")) +(defvar yc-current-frame nil) + +(defvar yc-defsymbol-list nil) + +;;; +;;; common function +;;; +(require 'timer) + +(eval-when-compile ; appended by yagi@is.titech.ac.jp 2000.05.17 + (let ((funs '(char-category string-bytes frame-parameter))) + (while funs + (or (fboundp (car funs)) + (fset (car funs) 'ignore)) + (setq funs (cdr funs))))) +(eval-and-compile + (when (not (boundp 'auto-coding-alist)) + (defvar auto-coding-alist nil))) +(eval-and-compile + (when (not (fboundp 'event-to-character)) + (defalias 'event-to-character (symbol-function '+)))) +(eval-and-compile + (if (fboundp 'encode-coding-char) + (defalias 'yc-encode-coding-char (symbol-function 'encode-coding-char)) + (defun yc-encode-coding-char (ch coding) + (encode-coding-string (char-to-string ch) coding)))) + +(eval-and-compile + (if (= (length (substring "$B$"(B" 1)) 0) + ;; $BJ8;zC10L$G(B substring $B$7$F$k(B + (progn + (defun yc-substring (str from &optional to) + (if (null (stringp str)) nil + (if (= (length str) 0) "" + (if (numberp to) + (substring str from to) + (substring str from))))) + ;(defalias 'yc-substring (symbol-function 'substring)) + (defalias 'yc-strlen (symbol-function 'length)) ) + ;; byte $BC10L$G(B substring $B$7$F$k(B + (defun yc-substring (str b &optional e) + (let ((l (string-to-list str))) + (concat (if e + (yc-subsequence l b e) + (nthcdr b l))))) + (defun yc-strlen (str) + (length (string-to-list str))) + (defalias 'string-bytes (symbol-function 'length)) )) + +;; $B%+!<%=%kA0$NJ8;z= emacs-major-version 20) + (progn + (defalias 'yc-char-charset (symbol-function 'char-charset)) + (when (and (boundp 'byte-compile-depth) + (not (fboundp 'char-category))) + (defalias 'char-category nil))) ; for byte compiler + (defun yc-char-charset (ch) + (cond ((equal (char-category ch) "a") 'ascii) + ((equal (char-category ch) "k") 'katakana-jisx0201) + ((string-match "[SAHK]j" (char-category ch)) 'japanese-jisx0208) + (t nil) )) )) + +(eval-and-compile + (if (fboundp 'redirect-frame-focus) + (defalias 'yc-redirect-frame-focus + (symbol-function 'redirect-frame-focus)) + (defun yc-redirect-frame-focus (base redirection) + (if (null redirection) + (progn + (raise-frame (select-frame yc-current-frame)) + (setq yc-current-frame nil)) + (setq yc-current-frame (selected-frame)) + (raise-frame (select-frame (window-frame (minibuffer-window)))))))) + +(defun yc-debug (obj) + "yc-debug $BJQ?t$G;XDj$5$l$?%P%C%U%!$K(B OBJ $B$rI=<($9$k!#(B +OBJ $B$rJV5Q$9$k!#(B" + (when (and yc-debug (processp yc-server)) + (let ((old (current-buffer))) + (unwind-protect + (let (moving) + (set-buffer (process-buffer yc-server)) + (setq moving (= (point) (process-mark yc-server))) + (save-excursion + (goto-char (process-mark yc-server)) + (prin1 obj (process-buffer yc-server)) + (terpri (process-buffer yc-server)) + (set-marker (process-mark yc-server) (point))) + (when moving (goto-char (process-mark yc-server)))) + (set-buffer old)))) + obj) + +;;; +;;; socket operation +;;; + +(put 'yc-trap-server-down 'error-conditions '(error yc-trap-server-down)) +(put 'yc-trap-server-down 'error-message "YC: disconnected cannaserver") + +(defun yc-signal-server-down (&rest arg) + "cannaserver $B$H$NDL?.>uBV$,JQ2=$7$?$H$-$KF0:n$9$k4X?t(B" + (when (and (processp yc-server) (eq (process-status yc-server) 'closed)) + (set-process-sentinel yc-server nil)) + (if (waiting-for-user-input-p) + (put 'yc-server 'init nil) + (signal 'yc-trap-server-down (list yc-server-host)))) + +(defun yc-server-open () + "cannaserver $B$H$NDL?.$r3+;O$9$k4X?t(B" + (let ((server (or yc-server-host (getenv "CANNAHOST")))) + (setq yc-server-host (if (or (not server) (string= server "")) + "unix" + server)) + (setq yc-server + (cond ((string= yc-server-host "unix") + (if (featurep 'make-network-process) + (make-network-process + :name "canna" + :buffer yc-debug + :remote "/tmp/.iroha_unix/IROHA") + (let ((process-connection-type nil)) + (start-process "canna" yc-debug yc-icanna-path)))) + (t (with-timeout (1 nil) + (condition-case nil + (open-network-stream + "canna" yc-debug yc-server-host 5680) + (error nil))))))) + (when (processp yc-server) + (put 'yc-server 'init nil) + (process-kill-without-query yc-server) + (when yc-debug + (unwind-protect + (progn + (set-buffer (process-buffer yc-server)) + (set-marker (process-mark yc-server) (point))))) + (set-process-coding-system yc-server 'no-conversion 'no-conversion) + (set-process-filter yc-server 'yc-filter) + (set-process-sentinel yc-server 'yc-signal-server-down))) + +;; (defun yc-server-close () +;; "cannaserver $B$H$NDL?.$r=*N;$9$k4X?t(B" +;; (set-process-sentinel yc-server nil) +;; (when (processp yc-server) (delete-process yc-server))) + +;; modified 01/12/29 by matz@ruby-lang.org +(defun yc-server-close () + "cannaserver $B$H$NDL?.$r=*N;$9$k4X?t(B" + (when (processp yc-server) + (set-process-sentinel yc-server nil) + (when (processp yc-server) (delete-process yc-server)))) + +(defun yc-server-check () + "cannaserver $B$HDL?.$G$-$k$+$r3NG'$9$k4X?t(B" + (or (and (processp yc-server) + (or (eq (process-status yc-server) 'open) + (eq (process-status yc-server) 'run))) + (save-excursion + (prog2 + (yc-server-open) + (and (processp yc-server) + (or (eq (process-status yc-server) 'open) + (eq (process-status yc-server) 'run))))))) + + +;;; +;;; structure convert utilities +;;; +(defconst yc-coding (if (featurep 'xemacs) 'euc-jp 'japanese-iso-8bit)) + +(defconst yc-code + (list + (list 'initialize 1 "lla" "ss") + (list 'finalize (ash 2 8) "ss" "ssc") + (list 'create-context (ash 3 8) "ss" "sss") + (list 'duplicate-context (ash 4 8) "sss" "sss") +; (list 'close-context (ash 5 8) "sss" "ssc") +; (list 'get-dictionary-list (ash 6 8) "ssss" "sssA") +; (list 'get-directory-list (ash 7 8) "ssss" "sssA") + (list 'mount-dictionary (ash 8 8) "sslsa" "ssc") +; (list 'unmount-dictionary (ash 9 8) "sslsa" "ssc") +; (list 'remount-dictionary (ash 10 8) "sslsa" "ssc") +; (list 'mount-dictionary-list (ash 11 8) "ssss" "sssA") +; (list 'query-dictionary (ash 12 8) "sslsaa" "sscaaL") ; v2.0 + (list 'define-word (ash 13 8) "ssswa" "ssc") +; (list 'delete-word (ash 14 8) "ssswa" "ssc") + (list 'begin-convert (ash 15 8) "sslsw" "sssW") + (list 'end-convert (ash 16 8) "sssslS" "ssc") + (list 'get-candidacy-list (ash 17 8) "sssss" "sssW") + (list 'get-yomi (ash 18 8) "sssss" "sssw") +; (list 'subst-yomi (ash 19 8) "ssssssw" "sssW") ; v2.0 +; (list 'store-yomi (ash 20 8) "ssssw" "sssW") +; (list 'store-range (ash 21 8) "ssssw" "sscw") ; v2.0 +; (list 'get-last-yomi (ash 22 8) "ssss" "sssw") ; v2.0 +; (list 'flush-yomi (ash 23 8) "sssslS" "sssW") ; v2.0 +; (list 'remove-yomi (ash 24 8) "sssslS" "ssc") ; v2.0 +; (list 'get-simple-kanji (ash 25 8) "sssawsss" "sssWW") ; v2.0 + (list 'resize-pause (ash 26 8) "sssss" "sssW") +; (list 'get-hinshi (ash 27 8) "ssssss" "sscw") ; v2.0 +; (list 'get-lex (ash 28 8) "ssssss" "sssL") +; (list 'get-status (ash 29 8) "sssss" "sscL") +; (list 'set-locale (ash 30 8) "sslsa" "ssc") ; v2.0 +; (list 'auto-convert (ash 31 8) "ssssl" "ssc") +; (list 'query-extensions (ash 32 8) "ssA" "ssc") + (list 'set-application-name (ash 33 8) "sslsa" "ssc") ; v3.0 + (list 'notice-group-name (ash 34 8) "sslsa" "ssc") +; (list 'kill-server (ash 36 8) "ss" "ssc") ; v3.3 +; (list 'get-server-info (1+ (ash 1 8)) "ss" "ssc") ; +; (list 'get-access-control-list (1+ (ash 2 8)) "ss" "sssA") + (list 'create-dictionary (1+ (ash 3 8)) "sslsa" "ssc") +; (list 'delete-dictionary (1+ (ash 4 8)) "sslsa" "ssc") +; (list 'rename-dictionary (1+ (ash 5 8)) "sslsaa" "ssc") +; (list 'get-word-text-dictionary (1+ (ash 6 8)) "sssaas" "sssw") +; (list 'list-dictionary (1+ (ash 7 8)) "sssas" "sscA") +; (list 'sync (1+ (ash 8 8)) "sslsa" "ssc") ; v3.2 +; (list 'chmod-dictionary (1+ (ash 9 8)) "sslsa" "sss") ; v3.2 +; (list 'copy-dictionary (1+ (ash 10 8)) "sslsaaa" "ssc") ; v3.2 + )) +(defconst yc-rcode + (mapcar (lambda (lst) (cons (cadr lst) (car lst))) yc-code)) +(defun yc-cmd-symbol (cmd) + (cond ((symbolp cmd) cmd) + ((integerp cmd) (cdr (assq cmd yc-rcode))) + (t nil))) +(defun yc-cmd-code (cmd) + (cond ((symbolp cmd) (nth 1 (assq cmd yc-code))) + ((integerp cmd) cmd) + (t nil))) +(defun yc-req-form (cmd) + (cond ((symbolp cmd) (nth 2 (assq cmd yc-code))) + ((integerp cmd) (nth 2 (assoc (yc-cmd-symbol cmd) yc-code))) + (t nil))) +(defun yc-res-form (cmd) + (cond ((symbolp cmd) (nth 3 (assq cmd yc-code))) + ((integerp cmd) (nth 3 (assoc (yc-cmd-symbol cmd) yc-code))) + (t nil))) + +;;; +;;; mode of canna +;;; +;; real mode +; (defconst yc-mode-alpha 0) +; (defconst yc-mode-empty 1) +; (defconst yc-mode-kigo 2) +; (defconst yc-mode-yomi 3) +; (defconst yc-mode-jishu 4) +; (defconst yc-mode-tankouho 5) +; (defconst yc-mode-ichiran 6) +; (defconst yc-mode-yesno 7) +; (defconst yc-mode-onoff 8) +; (defconst yc-mode-adjust-bunsetsu 9) +; (defconst yc-mode-chikuji-yomi 10) +; (defconst yc-mode-chikuji-tan 11) +; (defconst yc-mode-max-real-mode (1+ yc-mode-chikuji-tan)) +;; imaginary mode +; (defconst yc-mode-henkan yc-mode-empty) +; (defconst yc-mode-henkan-nyuryoku 12) +(defconst yc-mode-zen-hira-henkan 13) +; (defconst yc-mode-han-hira-henkan 14) +; (defconst yc-mode-zen-kata-henkan 15) +; (defconst yc-mode-han-kata-henkan 16) +; (defconst yc-mode-zen-alpha-henkan 17) +; (defconst yc-mode-han-alpha-henkan 18) +; (defconst yc-mode-zen-hira-kakutei 19) +; (defconst yc-mode-han-hira-kakutei 20) +; (defconst yc-mode-zen-kata-kakutei 21) +; (defconst yc-mode-han-kata-kakutei 22) +; (defconst yc-mode-zen-alpha-kakutei 23) +; (defconst yc-mode-han-alpha-kakutei 24) +; (defconst yc-mode-hex 25) +; (defconst yc-mode-bushu 26) +; (defconst yc-mode-extend 27) +; (defconst yc-mode-russian 28) +; (defconst yc-mode-greek 29) +; (defconst yc-mode-line 30) +; (defconst yc-mode-changing-server 31) +; (defconst yc-mode-henkan-method 32) +; (defconst yc-mode-delete-dic 33) +; (defconst yc-mode-touroku 34) +; (defconst yc-mode-touroku-empty yc-mode-touroku) +; (defconst yc-mode-touroku-hinshi 35) +; (defconst yc-mode-touroku-dic 36) +; (defconst yc-mode-quoted-insert 37) +; (defconst yc-mode-bubun-muhenkan 38) +; (defconst yc-mode-mount-dic 39) +; (defconst yc-mode-max-imaginary-mode (1+ yc-mode-mount-dic)) +;; dictionary mode + (defconst yc-mode-mount-dic 512) + + +(defun yc-l2n (int) + (cond + ((>= emacs-major-version 23) +; For Emacs 23 (Internal Encode is UTF8) + (string-make-unibyte + (concat (list (logand (ash int -24) 255) + (logand (ash int -16) 255) + (logand (ash int -8) 255) + (logand int 255)))) + ) ; clause + (t +; For Emacs22, XEmacs21 + (concat (list (logand (ash int -24) 255) + (logand (ash int -16) 255) + (logand (ash int -8) 255) + (logand int 255))) + ) ; t + ) ; cond + ) ; defun +(defun yc-s2n (int) + (cond + ((>= emacs-major-version 23) +; For Emacs 23 (Interanal Encode is UTF8) + (string-make-unibyte + (concat (list (logand (ash int -8) 255) + (logand int 255)))) + ) ; clause + (t +; For Emacs 22, XEmacs 21 + (concat (list (logand (ash int -8) 255) + (logand int 255))) + ) ; t + ) ; cond + ) ; defun +(defun yc-c2n (int) + (cond + ((>= emacs-major-version 23) +; For Emacs 23 (Interanal Encode is UTF8) + (string-make-unibyte (concat (list (logand int 255)))) + ) ; clause + (t +; For Emacs 22, XEmacs 21 + (concat (list (logand int 255))) + ) ; t + ) ; cond + ) ; defun +(defun yc-a2n (str) + (concat str (yc-c2n 0))) +(defun yc-w2n (str) + (apply 'concat + (append (mapcar (lambda (str) + (if (= 1 (length str)) (concat (yc-c2n 0) str) str)) + (mapcar (lambda (ch) + (yc-encode-coding-char ch yc-coding)) + (append str nil))) + (list (yc-s2n 0))))) + +;(defun yc-n2l (str) +; (logior (if (/= (logand (aref str 0) 128) 0) (ash -1 32) 0) +; (ash (aref str 0) 24) +; (ash (aref str 1) 16) +; (ash (aref str 2) 8) +; (aref str 3))) +(defun yc-n2s (str) + (logior (if (/= (logand (aref str 0) 128) 0) (ash -1 16) 0) + (ash (aref str 0) 8) + (aref str 1))) +(defun yc-n2c (str) + (logior (if (/= (logand (aref str 0) 128) 0) (ash -1 8) 0) + (aref str 0))) +;(defun yc-n2a (str) +; (substring str 0 (string-match (yc-c2n 0) str))) +(defun yc-n2w (str) + (let ((src + (append (substring str 0 (string-match (yc-s2n 0) str)) nil)) + (dst)) + (while src + (setq dst (concat + dst + (decode-coding-string + (cond + ((>= emacs-major-version 23) +; For Emacs 23 + (concat (and (/= (car src) 0) + (char-to-string (unibyte-char-to-multibyte (car src)))) + (char-to-string (unibyte-char-to-multibyte (cadr src)))) + ) ; clause + ( t +; For Emacs 22, XEmacs 21 + (concat (and (/= (car src) 0) (char-to-string (car src))) + (char-to-string (cadr src))) + ) ; t + ) ; cond + yc-coding) ; decode-coding-string + ) ; concat + src (cddr src))) + dst)) + +;;; +;;; packet format +;;; +;; l ... word +;; s ... half +;; c ... byte +;; a ... single-byte-string +;; w ... multi-byte-string +;; L ... list of word +;; S ... list of half +;; A ... list of single-byte-string ex) string^@string^@string^@^@ +;; W ... list of multi-byte-string ex) string^@^@string^@^@string^@^@^@^@ + +(defvar yc-res nil) +(defvar yc-args nil) +(defvar yc-form nil) +(defvar yc-str nil) + +(defun yc-pack-l2n () (setq yc-res (concat yc-res (yc-l2n (car yc-args))))) +(defun yc-pack-s2n () (setq yc-res (concat yc-res (yc-s2n (car yc-args))))) +;(defun yc-pack-c2n () (setq yc-res (concat yc-res (yc-c2n (car yc-args))))) +(defun yc-pack-a2n () (setq yc-res (concat yc-res (yc-a2n (car yc-args))))) +(defun yc-pack-w2n () (setq yc-res (concat yc-res (yc-w2n (car yc-args))))) +;(defun yc-pack-L2n () (let* ((yc-args (car yc-args)) +; (yc-form (make-string (length yc-args) ?l))) +; (yc-pack-sub))) +(defun yc-pack-S2n () (let* ((yc-args (car yc-args)) + (yc-form (make-string (length yc-args) ?s))) + (yc-pack-sub))) +;(defun yc-pack-A2n () (let* ((yc-args (car yc-args)) +; (yc-form (make-string (length yc-args) ?a))) +; (yc-pack-sub) +; (setq yc-res (concat yc-res (yc-c2n 0))))) +;(defun yc-pack-W2n () (let* ((yc-args (car yc-args)) +; (yc-form (make-string (length yc-args) ?w))) +; (yc-pack-sub) +; (setq yc-res (concat yc-res (yc-s2n 0))))) + +(defun yc-pack-sub () + (while (/= (length yc-form) 0) + (cond ((= (string-to-char yc-form) ?l) (yc-pack-l2n)) + ((= (string-to-char yc-form) ?s) (yc-pack-s2n)) +; ((= (string-to-char yc-form) ?c) (yc-pack-c2n)) + ((= (string-to-char yc-form) ?a) (yc-pack-a2n)) + ((= (string-to-char yc-form) ?w) (yc-pack-w2n)) +; ((= (string-to-char yc-form) ?L) (yc-pack-L2n)) + ((= (string-to-char yc-form) ?S) (yc-pack-S2n)) +; ((= (string-to-char yc-form) ?A) (yc-pack-A2n)) +; ((= (string-to-char yc-form) ?W) (yc-pack-W2n)) + ) + (setq yc-form (substring yc-form 1) + yc-args (cdr yc-args)))) + +(defun yc-pack (yc-form yc-args) + (or (stringp yc-form) + (error "yc-pack: form doesn't string")) + (let (yc-res) + (yc-pack-sub) + yc-res)) + +;(defun yc-unpack-n2l () +; (setq yc-res (append yc-res (list (yc-n2l (substring yc-str 0 4)))) +; yc-str (substring yc-str 4))) +(defun yc-unpack-n2s () + (setq yc-res (append yc-res (list (yc-n2s (substring yc-str 0 2)))) + yc-str (substring yc-str 2))) +(defun yc-unpack-n2c () + (setq yc-res (append yc-res (list (yc-n2c (substring yc-str 0 1)))) + yc-str (substring yc-str 1))) +;(defun yc-unpack-n2a () +; (let ((idx (+ (string-match (yc-c2n 0) yc-str) 2))) +; (setq yc-res (append yc-res (list (yc-n2a (substring yc-str 0 idx)))) +; yc-str (substring yc-str idx)))) +(defun yc-unpack-n2w () + (let ((idx (+ (string-match (yc-s2n 0) yc-str) 2))) + (setq yc-res (append yc-res (list (yc-n2w (substring yc-str 0 idx)))) + yc-str (substring yc-str idx)))) +;(defun yc-unpack-n2L () +; (let ((yc-form (make-string (/ (length yc-str) 4) ?l))) +; (yc-unpack-sub))) +;(defun yc-unpack-n2S () +; (let ((yc-form (make-string (/ (length yc-str) 2) ?s))) +; (yc-unpack-sub))) +;(defun yc-unpack-n2A () +; (let ((idx (string-match (yc-s2n 0) yc-str))) +; (setq yc-res (append yc-res +; (list (split-string 0 (substring yc-str 0 idx)))) +; yc-str (substring yc-str (+ idx 2))))) +(defun yc-unpack-n2W () + (let (src dst) + (while (/= 0 (or (setq src (string-match (yc-s2n 0) yc-str)) 0)) + (setq dst (append dst (list (yc-n2w (substring yc-str 0 (+ src 2))))) + yc-str (substring yc-str (+ src 2)))) + (when (= src 0) (setq yc-str (substring yc-str src))) + (setq yc-res (append yc-res (list dst))))) + +(defun yc-unpack-sub () + (while (/= (length yc-form) 0) + (cond ;((= (string-to-char yc-form) ?l) (yc-unpack-n2l)) + ((= (string-to-char yc-form) ?s) (yc-unpack-n2s)) + ((= (string-to-char yc-form) ?c) (yc-unpack-n2c)) +; ((= (string-to-char yc-form) ?a) (yc-unpack-n2a)) + ((= (string-to-char yc-form) ?w) (yc-unpack-n2w)) +; ((= (string-to-char yc-form) ?L) (yc-unpack-n2L)) +; ((= (string-to-char yc-form) ?S) (yc-unpack-n2S)) +; ((= (string-to-char yc-form) ?A) (yc-unpack-n2A)) + ((= (string-to-char yc-form) ?W) (yc-unpack-n2W))) + (setq yc-form (substring yc-form 1)))) + +(defun yc-unpack (yc-form yc-str) + (or (stringp yc-form) + (error "yc-unpack: form doesn't string")) + (let (yc-res) + (yc-unpack-sub) + yc-res)) + + +;;; +;;; send request packet & dispose response packet +;;; + +;; cannaserver $B$KMW5a$rAw?.$71~Ez$rJV5Q$9$k4X?t(B +(defun yc-request-server (cmd &optional args) + (if (not (and (yc-server-check) (yc-init-p))) + (signal 'yc-trap-server-down (list yc-server-host)) + (setq yc-prev-command cmd) + (let* ((form (yc-req-form cmd)) + (body (yc-pack (substring form 2) args)) + (packet (concat (yc-pack (substring form 0 2) + (list (yc-cmd-code cmd) (length body))) + body))) + (yc-debug (concat " >> " packet)) + (process-send-string yc-server packet) + (yc-debug (yc-response-server))))) + +;;; +;;; recieve response packet & dispatch +;;; + +;; cannaserver $B$+$i1~Ez$rC_@Q$9$k4X?t(B +(defun yc-filter (process response) + (yc-debug (concat " << " response)) + (setq yc-res-buffer (concat yc-res-buffer response))) + +;; cannaserver $B$+$i$N1~Ez$r2r@O$7$F%j%9%H$KJQ49$7$FLa$k4X?t(B +(defun yc-response-server () + (while (< (length yc-res-buffer) 4) (accept-process-output yc-server)) + (if (eq (yc-cmd-symbol yc-prev-command) 'initialize) + (prog1 + (cons t + (yc-unpack (yc-res-form 'initialize) yc-res-buffer)) + (setq yc-res-buffer nil)) + (let* ((tmp (yc-unpack "ss" yc-res-buffer)) + (cmd (car tmp)) + (len (+ 4 (nth 1 tmp)))) + (while (< (length yc-res-buffer) len) + (accept-process-output yc-server)) + (prog1 + (cons (eq (yc-cmd-symbol cmd) (yc-cmd-symbol yc-prev-command)) + (yc-unpack (yc-res-form cmd) yc-res-buffer)) + (setq yc-res-buffer nil))))) + +;; cannaserver $B$H(B CANNA $B%W%m%H%3%k$r$d$jL>JQ49%F!<%V%k(B +(defconst yc-default-rH-table + '(("~" "$B!1(B" "") ("}" "$B!Y(B" "") ("|" "$B!C(B" "") ("{" "$B!X(B" "") ("zz" "$B$C(B" "z") + ("zyu" "$B$8$e(B" "") ("zyo" "$B$8$g(B" "") ("zyi" "$B$8$#(B" "") ("zye" "$B$8$'(B" "") + ("zya" "$B$8$c(B" "") ("zu" "$B$:(B" "") ("zo" "$B$>(B" "") ("zi" "$B$8(B" "") + ("ze" "$B$<(B" "") ("za" "$B$6(B" "") ("yy" "$B$C(B" "y") ("yu" "$B$f(B" "") ("yo" "$B$h(B" "") + ("yi" "$B$$(B" "") ("ye" "$B$$$'(B" "") ("ya" "$B$d(B" "") ("xyu" "$B$e(B" "") + ("xyo" "$B$g(B" "") ("xya" "$B$c(B" "") ("xwa" "$B$n(B" "") ("xu" "$B$%(B" "") + ("xtu" "$B$C(B" "") ("xtsu" "$B$C(B" "") ("xo" "$B$)(B" "") ("xi" "$B$#(B" "") + ("xe" "$B$'(B" "") ("xa" "$B$!(B" "") ("'" "$B!G(B" "") ("\"" "$B!I(B" "") ("ww" "$B$C(B" "w") + ("wu" "$B$&(B" "") ("wo" "$B$r(B" "") ("wi" "$B$p(B" "") ("we" "$B$q(B" "") ("wa" "$B$o(B" "") + ("vv" "$B$C(B" "v") ("vu" "$B$&!+(B" "") ("vo" "$B$&!+$)(B" "") ("vi" "$B$&!+$#(B" "") + ("ve" "$B$&!+$'(B" "") ("va" "$B$&!+$!(B" "") ("u" "$B$&(B" "") ("tyu" "$B$A$e(B" "") + ("tyo" "$B$A$g(B" "") ("tyi" "$B$A$#(B" "") ("tye" "$B$A$'(B" "") ("tya" "$B$A$c(B" "") + ("tu" "$B$D(B" "") ("tt" "$B$C(B" "t") ("tsu" "$B$D(B" "") ("tso" "$B$D$)(B" "") + ("tsi" "$B$D$#(B" "") ("tse" "$B$D$'(B" "") ("tsa" "$B$D$!(B" "") ("to" "$B$H(B" "") + ("ti" "$B$A(B" "") ("thu" "$B$F$e(B" "") ("tho" "$B$F$g(B" "") ("thi" "$B$F$#(B" "") + ("the" "$B$F$'(B" "") ("tha" "$B$F$c(B" "") ("te" "$B$F(B" "") ("tch" "$B$C(B" "ch") + ("ta" "$B$?(B" "") ("syu" "$B$7$e(B" "") ("syo" "$B$7$g(B" "") ("syi" "$B$7$#(B" "") + ("sye" "$B$7$'(B" "") ("sya" "$B$7$c(B" "") ("su" "$B$9(B" "") ("ss" "$B$C(B" "s") + ("so" "$B$=(B" "") ("si" "$B$7(B" "") ("shu" "$B$7$e(B" "") ("sho" "$B$7$g(B" "") + ("shi" "$B$7(B" "") ("she" "$B$7$'(B" "") ("sha" "$B$7$c(B" "") ("se" "$B$;(B" "") + ("sa" "$B$5(B" "") ("ryu" "$B$j$e(B" "") ("ryo" "$B$j$g(B" "") ("ryi" "$B$j$#(B" "") + ("rye" "$B$j$'(B" "") ("rya" "$B$j$c(B" "") ("ru" "$B$k(B" "") ("rr" "$B$C(B" "r") + ("ro" "$B$m(B" "") ("ri" "$B$j(B" "") ("re" "$B$l(B" "") ("ra" "$B$i(B" "") ("qq" "$B$C(B" "q") + ("pyu" "$B$T$e(B" "") ("pyo" "$B$T$g(B" "") ("pyi" "$B$T$#(B" "") ("pye" "$B$T$'(B" "") + ("pya" "$B$T$c(B" "") ("pu" "$B$W(B" "") ("pp" "$B$C(B" "p") ("po" "$B$](B" "") + ("pi" "$B$T(B" "") ("pe" "$B$Z(B" "") ("pa" "$B$Q(B" "") ("o" "$B$*(B" "") + ("nyu" "$B$K$e(B" "") ("nyo" "$B$K$g(B" "") ("nyi" "$B$K$#(B" "") ("nye" "$B$K$'(B" "") + ("nya" "$B$K$c(B" "") ("n'" "$B$s(B" "") ("nu" "$B$L(B" "") ("no" "$B$N(B" "") + ("nn" "$B$s(B" "") ("ni" "$B$K(B" "") ("ne" "$B$M(B" "") ("na" "$B$J(B" "") ("n" "$B$s(B" "") + ("myu" "$B$_$e(B" "") ("myo" "$B$_$g(B" "") ("myi" "$B$_$#(B" "") ("mye" "$B$_$'(B" "") + ("mya" "$B$_$c(B" "") ("mu" "$B$`(B" "") ("mo" "$B$b(B" "") ("mn" "$B$s(B" "") + ("mm" "$B$C(B" "m") ("mi" "$B$_(B" "") ("me" "$B$a(B" "") ("ma" "$B$^(B" "") + ("lyu" "$B$j$e(B" "") ("lyo" "$B$j$g(B" "") ("lyi" "$B$j$#(B" "") ("lye" "$B$j$'(B" "") + ("lya" "$B$j$c(B" "") ("lu" "$B$k(B" "") ("lo" "$B$m(B" "") ("li" "$B$j(B" "") + ("le" "$B$l(B" "") ("la" "$B$i(B" "") ("kyu" "$B$-$e(B" "") ("kyo" "$B$-$g(B" "") + ("kyi" "$B$-$#(B" "") ("kye" "$B$-$'(B" "") ("kya" "$B$-$c(B" "") ("ku" "$B$/(B" "") + ("ko" "$B$3(B" "") ("kk" "$B$C(B" "k") ("ki" "$B$-(B" "") ("ke" "$B$1(B" "") ("ka" "$B$+(B" "") + ("jyu" "$B$8$e(B" "") ("jyo" "$B$8$g(B" "") ("jyi" "$B$8$#(B" "") ("jye" "$B$8$'(B" "") + ("jya" "$B$8$c(B" "") ("ju" "$B$8$e(B" "") ("jo" "$B$8$g(B" "") ("jj" "$B$C(B" "j") + ("ji" "$B$8(B" "") ("je" "$B$8$'(B" "") ("ja" "$B$8$c(B" "") ("i" "$B$$(B" "") + ("hyu" "$B$R$e(B" "") ("hyo" "$B$R$g(B" "") ("hyi" "$B$R$#(B" "") ("hye" "$B$R$'(B" "") + ("hya" "$B$R$c(B" "") ("hu" "$B$U(B" "") ("ho" "$B$[(B" "") ("hi" "$B$R(B" "") + ("hh" "$B$C(B" "h") ("he" "$B$X(B" "") ("ha" "$B$O(B" "") ("gyu" "$B$.$e(B" "") + ("gyo" "$B$.$g(B" "") ("gyi" "$B$.$#(B" "") ("gye" "$B$.$'(B" "") ("gya" "$B$.$c(B" "") + ("gwu" "$B$0$%(B" "") ("gwo" "$B$0$)(B" "") ("gwi" "$B$0$#(B" "") ("gwe" "$B$0$'(B" "") + ("gwa" "$B$0$!(B" "") ("gu" "$B$0(B" "") ("go" "$B$4(B" "") ("gi" "$B$.(B" "") + ("gg" "$B$C(B" "g") ("ge" "$B$2(B" "") ("ga" "$B$,(B" "") ("fu" "$B$U(B" "") + ("fo" "$B$U$)(B" "") ("fi" "$B$U$#(B" "") ("ff" "$B$C(B" "f") ("fe" "$B$U$'(B" "") + ("fa" "$B$U$!(B" "") ("e" "$B$((B" "") ("dyu" "$B$B$e(B" "") ("dyo" "$B$B$g(B" "") + ("dyi" "$B$B$#(B" "") ("dye" "$B$B$'(B" "") ("dya" "$B$B$c(B" "") ("du" "$B$E(B" "") + ("do" "$B$I(B" "") ("di" "$B$B(B" "") ("dhu" "$B$G$e(B" "") ("dho" "$B$G$g(B" "") + ("dhi" "$B$G$#(B" "") ("dhe" "$B$G$'(B" "") ("dha" "$B$G$c(B" "") ("de" "$B$G(B" "") + ("dd" "$B$C(B" "d") ("da" "$B$@(B" "") ("cyu" "$B$A$e(B" "") ("cyo" "$B$A$g(B" "") + ("cyi" "$B$A$#(B" "") ("cye" "$B$A$'(B" "") ("cya" "$B$A$c(B" "") ("cu" "$B$/(B" "") + ("co" "$B$3(B" "") ("chu" "$B$A$e(B" "") ("cho" "$B$A$g(B" "") ("chi" "$B$A(B" "") + ("che" "$B$A$'(B" "") ("cha" "$B$A$c(B" "") ("cc" "$B$C(B" "c") ("ca" "$B$+(B" "") + ("byu" "$B$S$e(B" "") ("byo" "$B$S$g(B" "") ("byi" "$B$S$#(B" "") ("bye" "$B$S$'(B" "") + ("bya" "$B$S$c(B" "") ("bu" "$B$V(B" "") ("bo" "$B$\(B" "") ("bi" "$B$S(B" "") + ("be" "$B$Y(B" "") ("bb" "$B$C(B" "b") ("ba" "$B$P(B" "") ("a" "$B$"(B" "") ("`" "$B!.(B" "") + ("_" "$B!2(B" "") ("^" "$B!0(B" "") ("]" "$B!W(B" "") ("\\" "$B!o(B" "") ("[" "$B!V(B" "") + ("@~" "$B!A(B" "") ("@}" "$B!Q(B" "") ("@||" "$B!B(B" "") ("@|" "$B!C(B" "") ("@{" "$B!P(B" "") + ("@]" "$B!O(B" "") ("@\\" "$B!@(B" "") ("@[" "$B!N(B" "") ("@@" "$B!!(B" "") + ("@568" "$B$?$m$&(B88$B!&(B1" "") ("@3" "$B!D(B" "") ("@2" "$B!E(B" "") ("@/" "$B!&(B" "") + ("@." "$B!%(B" "") ("@-" "$B!](B" "") ("@," "$B!$(B" "") ("@)" "$B!K(B" "") ("@(" "$B!J(B" "") + ("@" "$B!w(B" "") ("?" "$B!)(B" "") (">" "$B!d(B" "") ("=" "$B!a(B" "") ("<" "$B!c(B" "") + (";" "$B!((B" "") (":" "$B!'(B" "") ("9" "$B#9(B" "") ("8" "$B#8(B" "") ("7" "$B#7(B" "") + ("6" "$B#6(B" "") ("5" "$B#5(B" "") ("4" "$B#4(B" "") ("3" "$B#3(B" "") ("2" "$B#2(B" "") + ("1" "$B#1(B" "") ("0" "$B#0(B" "") ("/" "$B!?(B" "") ("." "$B!#(B" "") ("-" "$B!<(B" "") + ("," "$B!"(B" "") ("+" "$B!\(B" "") ("*" "$B!v(B" "") ("&" "$B!u(B" "") ("%" "$B!s(B" "") + ("$" "$B!p(B" "") ("#" "$B!t(B" "") ("!" "$B!*(B" "") (" " "$B!!(B" ""))) + +;; default $B$R$i2>L>(B-$B%m!<%^;zJQ49%F!<%V%k(B +(defconst yc-default-Hr-table + '(("$B$C(B" . "xtsu") + ("$B$"(B" . "a") ("$B$$(B" . "i") ("$B$&(B" . "u") ("$B$((B" . "e") ("$B$*(B" . "o") + ("$B$!(B" . "xa") ("$B$#(B" . "xi") ("$B$%(B" . "xu") ("$B$'(B" . "xe") ("$B$)(B" . "xo") + ("$B$n(B" . "xwa") ("$B$c(B" . "xya") ("$B$e(B" . "xyu") ("$B$g(B" . "xyo") + ("$B$&!+$!(B" . "va") ("$B$&!+$#(B" . "vi") ("$B$&!+(B" . "vu") ("$B$&!+$'(B" . "ve") + ("$B$&!+$)(B" . "vo") ("$B$+(B" . "ka") ("$B$-(B" . "ki") ("$B$/(B" . "ku") ("$B$1(B" . "ke") + ("$B$3(B" . "ko") ("$B$,(B" . "ga") ("$B$.(B" . "gi") ("$B$0(B" . "gu") ("$B$2(B" . "ge") + ("$B$4(B" . "go") ("$B$-$c(B" . "kya") ("$B$-$#(B" . "kyi") ("$B$-$e(B" . "kyu") + ("$B$-$'(B" . "kye") ("$B$-$g(B" . "kyo") ("$B$.$c(B" . "gya") ("$B$.$#(B" . "gyi") + ("$B$.$e(B" . "gyu") ("$B$.$'(B" . "gye") ("$B$.$g(B" . "gyo") ("$B$0$!(B" . "gwa") + ("$B$0$#(B" . "gwi") ("$B$0$%(B" . "gwu") ("$B$0$'(B" . "gwe") ("$B$0$)(B" . "gwo") + ("$B$5(B" . "sa") ("$B$7(B" . "shi") ("$B$9(B" . "su") ("$B$;(B" . "se") ("$B$=(B" . "so") + ("$B$6(B" . "za") ("$B$8(B" . "ji") ("$B$:(B" . "zu") ("$B$<(B" . "ze") ("$B$>(B" . "zo") + ("$B$7$c(B" . "sha") ("$B$7$#(B" . "syi") ("$B$7$e(B" . "shu") ("$B$7$'(B" . "she") + ("$B$7$g(B" . "sho") ("$B$8$c(B" . "ja") ("$B$8$#(B" . "jyi") ("$B$8$e(B" . "ju") + ("$B$8$'(B" . "je") ("$B$8$g(B" . "jo") ("$B$?(B" . "ta") ("$B$A(B" . "ti") ("$B$D(B" . "tu") + ("$B$F(B" . "te") ("$B$H(B" . "to") ("$B$@(B" . "da") ("$B$B(B" . "di") ("$B$E(B" . "du") + ("$B$G(B" . "de") ("$B$I(B" . "do") ("$B$A$c(B" . "cha") ("$B$A$#(B" . "cyi") + ("$B$A$e(B" . "chu") ("$B$A$'(B" . "che") ("$B$A$g(B" . "cho") ("$B$B$c(B" . "dya") + ("$B$B$#(B" . "dyi") ("$B$B$e(B" . "dyu") ("$B$B$'(B" . "dye") ("$B$B$g(B" . "dyo") + ("$B$D$!(B" . "tsa") ("$B$D$#(B" . "tsi") ("$B$D$'(B" . "tse") ("$B$D$)(B" . "tso") + ("$B$F$c(B" . "tha") ("$B$F$#(B" . "thi") ("$B$F$e(B" . "thu") ("$B$F$'(B" . "the") + ("$B$F$g(B" . "tho") ("$B$G$c(B" . "dha") ("$B$G$#(B" . "dhi") ("$B$G$e(B" . "dhu") + ("$B$G$'(B" . "dhe") ("$B$G$g(B" . "dho") ("$B$J(B" . "na") ("$B$K(B" . "ni") ("$B$L(B" . "nu") + ("$B$M(B" . "ne") ("$B$N(B" . "no") ("$B$K$c(B" . "nya") ("$B$K$#(B" . "nyi") + ("$B$K$e(B" . "nyu") ("$B$K$'(B" . "nye") ("$B$K$g(B" . "nyo") ("$B$O(B" . "ha") + ("$B$R(B" . "hi") ("$B$U(B" . "fu") ("$B$X(B" . "he") ("$B$[(B" . "ho") ("$B$P(B" . "ba") + ("$B$S(B" . "bi") ("$B$V(B" . "bu") ("$B$Y(B" . "be") ("$B$\(B" . "bo") ("$B$Q(B" . "pa") + ("$B$T(B" . "pi") ("$B$W(B" . "pu") ("$B$Z(B" . "pe") ("$B$](B" . "po") ("$B$R$c(B" . "hya") + ("$B$R$#(B" . "hyi") ("$B$R$e(B" . "hyu") ("$B$R$'(B" . "hye") ("$B$R$g(B" . "hyo") + ("$B$S$c(B" . "bya") ("$B$S$#(B" . "byi") ("$B$S$e(B" . "byu") ("$B$S$'(B" . "bye") + ("$B$S$g(B" . "byo") ("$B$T$c(B" . "pya") ("$B$T$#(B" . "pyi") ("$B$T$e(B" . "pyu") + ("$B$T$'(B" . "pye") ("$B$T$g(B" . "pyo") ("$B$U$!(B" . "fa") ("$B$U$#(B" . "fi") + ("$B$U$'(B" . "fe") ("$B$U$)(B" . "fo") ("$B$^(B" . "ma") ("$B$_(B" . "mi") ("$B$`(B" . "mu") + ("$B$a(B" . "me") ("$B$b(B" . "mo") ("$B$_$c(B" . "mya") ("$B$_$#(B" . "myi") + ("$B$_$e(B" . "myu") ("$B$_$'(B" . "mye") ("$B$_$g(B" . "myo") ("$B$d(B" . "ya") + ("$B$f(B" . "yu") ("$B$$$'(B" . "ye") ("$B$h(B" . "yo") ("$B$i(B" . "ra") ("$B$j(B" . "ri") + ("$B$k(B" . "ru") ("$B$l(B" . "re") ("$B$m(B" . "ro") ("$B$j$c(B" . "rya") ("$B$j$#(B" . "ryi") + ("$B$j$e(B" . "ryu") ("$B$j$'(B" . "rye") ("$B$j$g(B" . "ryo") ("$B$o(B" . "wa") + ("$B$p(B" . "wi") ("$B$q(B" . "we") ("$B$r(B" . "wo") ("$B$s(B" . "n'") ("$B!<(B" . "-") + ("$B!V(B" . "[") ("$B!W(B" . "]") ("$B!"(B" . ",") ("$B!#(B" . ".") ("$B!o(B" . "\\") + ("$B!I(B" . "\"") ("$B!.(B" . "`"))) + +;; $B$R$i$,$J(B-$B%+%?%+%JJQ49%F!<%V%k(B $BJ8;zNs(B +;(defconst yc-HkST +; '(("$B$&!+(B" . "$B%t(B"))) + +;; $B$R$i$,$J(B-$B%+%?%+%JJQ49%F!<%V%k(B $BJ8;z(B +(defconst yc-HkT + '((?$B$!(B . ?$B%!(B) (?$B$#(B . ?$B%#(B) (?$B$%(B . ?$B%%(B) (?$B$'(B . ?$B%'(B) (?$B$)(B . ?$B%)(B) + (?$B$"(B . ?$B%"(B) (?$B$$(B . ?$B%$(B) (?$B$&(B . ?$B%&(B) (?$B$((B . ?$B%((B) (?$B$*(B . ?$B%*(B) + (?$B$+(B . ?$B%+(B) (?$B$-(B . ?$B%-(B) (?$B$/(B . ?$B%/(B) (?$B$1(B . ?$B%1(B) (?$B$3(B . ?$B%3(B) + (?$B$,(B . ?$B%,(B) (?$B$.(B . ?$B%.(B) (?$B$0(B . ?$B%0(B) (?$B$2(B . ?$B%2(B) (?$B$4(B . ?$B%4(B) + (?$B$5(B . ?$B%5(B) (?$B$7(B . ?$B%7(B) (?$B$9(B . ?$B%9(B) (?$B$;(B . ?$B%;(B) (?$B$=(B . ?$B%=(B) + (?$B$6(B . ?$B%6(B) (?$B$8(B . ?$B%8(B) (?$B$:(B . ?$B%:(B) (?$B$<(B . ?$B%<(B) (?$B$>(B . ?$B%>(B) + (?$B$?(B . ?$B%?(B) (?$B$A(B . ?$B%A(B) (?$B$D(B . ?$B%D(B) (?$B$F(B . ?$B%F(B) (?$B$H(B . ?$B%H(B) + (?$B$C(B . ?$B%C(B) + (?$B$@(B . ?$B%@(B) (?$B$B(B . ?$B%B(B) (?$B$E(B . ?$B%E(B) (?$B$G(B . ?$B%G(B) (?$B$I(B . ?$B%I(B) + (?$B$J(B . ?$B%J(B) (?$B$K(B . ?$B%K(B) (?$B$L(B . ?$B%L(B) (?$B$M(B . ?$B%M(B) (?$B$N(B . ?$B%N(B) + (?$B$O(B . ?$B%O(B) (?$B$R(B . ?$B%R(B) (?$B$U(B . ?$B%U(B) (?$B$X(B . ?$B%X(B) (?$B$[(B . ?$B%[(B) + (?$B$P(B . ?$B%P(B) (?$B$S(B . ?$B%S(B) (?$B$V(B . ?$B%V(B) (?$B$Y(B . ?$B%Y(B) (?$B$\(B . ?$B%\(B) + (?$B$Q(B . ?$B%Q(B) (?$B$T(B . ?$B%T(B) (?$B$W(B . ?$B%W(B) (?$B$Z(B . ?$B%Z(B) (?$B$](B . ?$B%](B) + (?$B$^(B . ?$B%^(B) (?$B$_(B . ?$B%_(B) (?$B$`(B . ?$B%`(B) (?$B$a(B . ?$B%a(B) (?$B$b(B . ?$B%b(B) + (?$B$c(B . ?$B%c(B) (?$B$e(B . ?$B%e(B) (?$B$g(B . ?$B%g(B) + (?$B$d(B . ?$B%d(B) (?$B$f(B . ?$B%f(B) (?$B$h(B . ?$B%h(B) + (?$B$i(B . ?$B%i(B) (?$B$j(B . ?$B%j(B) (?$B$k(B . ?$B%k(B) (?$B$l(B . ?$B%l(B) (?$B$m(B . ?$B%m(B) + (?$B$o(B . ?$B%o(B) (?$B$p(B . ?$B%p(B) (?$B$q(B . ?$B%q(B) (?$B$r(B . ?$B%r(B) + (?$B$s(B . ?$B%s(B))) + +;; $B$R$i$,$J(B-$BH>3Q%+%?%+%JJQ49%F!<%V%k(B $BJ8;z(B +(defconst yc-HhT + '((?$B$!(B . "(I'(B") (?$B$#(B . "(I((B") (?$B$%(B . "(I)(B") (?$B$'(B . "(I*(B") (?$B$)(B . "(I+(B") + (?$B$"(B . "(I1(B") (?$B$$(B . "(I2(B") (?$B$&(B . "(I3(B") (?$B$((B . "(I4(B") (?$B$*(B . "(I5(B") + (?$B$+(B . "(I6(B") (?$B$-(B . "(I7(B") (?$B$/(B . "(I8(B") (?$B$1(B . "(I9(B") (?$B$3(B . "(I:(B") + (?$B$,(B . "(I6^(B") (?$B$.(B . "(I7^(B") (?$B$0(B . "(I8^(B") (?$B$2(B . "(I9^(B") (?$B$4(B . "(I:^(B") + (?$B$5(B . "(I;(B") (?$B$7(B . "(I<(B") (?$B$9(B . "(I=(B") (?$B$;(B . "(I>(B") (?$B$=(B . "(I?(B") + (?$B$6(B . "(I;^(B") (?$B$8(B . "(I<^(B") (?$B$:(B . "(I=^(B") (?$B$<(B . "(I>^(B") (?$B$>(B . "(I?^(B") + (?$B$?(B . "(I@(B") (?$B$A(B . "(IA(B") (?$B$D(B . "(IB(B") (?$B$F(B . "(IC(B") (?$B$H(B . "(ID(B") + (?$B$C(B . "(I/(B") + (?$B$@(B . "(I@^(B") (?$B$B(B . "(IA^(B") (?$B$E(B . "(IB^(B") (?$B$G(B . "(IC^(B") (?$B$I(B . "(ID^(B") + (?$B$J(B . "(IE(B") (?$B$K(B . "(IF(B") (?$B$L(B . "(IG(B") (?$B$M(B . "(IH(B") (?$B$N(B . "(II(B") + (?$B$O(B . "(IJ(B") (?$B$R(B . "(IK(B") (?$B$U(B . "(IL(B") (?$B$X(B . "(IM(B") (?$B$[(B . "(IN(B") + (?$B$P(B . "(IJ^(B") (?$B$S(B . "(IK^(B") (?$B$V(B . "(IL^(B") (?$B$Y(B . "(IM^(B") (?$B$\(B . "(IN^(B") + (?$B$Q(B . "(IJ_(B") (?$B$T(B . "(IK_(B") (?$B$W(B . "(IL_(B") (?$B$Z(B . "(IM_(B") (?$B$](B . "(IN_(B") + (?$B$^(B . "(IO(B") (?$B$_(B . "(IP(B") (?$B$`(B . "(IQ(B") (?$B$a(B . "(IR(B") (?$B$b(B . "(IS(B") + (?$B$c(B . "(I,(B") (?$B$e(B . "(I-(B") (?$B$g(B . "(I.(B") + (?$B$d(B . "(IT(B") (?$B$f(B . "(IU(B") (?$B$h(B . "(IV(B") + (?$B$i(B . "(IW(B") (?$B$j(B . "(IX(B") (?$B$k(B . "(IY(B") (?$B$l(B . "(IZ(B") (?$B$m(B . "(I[(B") + (?$B$o(B . "(I\(B") (?$B$p(B . "(I2(B") (?$B$q(B . "(I4(B") (?$B$r(B . "(I&(B") + (?$B$s(B . "(I](B") (?$B!<(B . "(I0(B"))) + +;; $BH>3Q(B-$BA43QJQ49%F!<%V%k(B +(defconst yc-aAT + '(;(?(I^(B . ?$B!+(B) + (?! . ?$B!*(B) (?\" . ?$B!m(B) (?# . ?$B!t(B) (?$ . ?$B!p(B) (?% . ?$B!s(B) (?& . ?$B!u(B) + (?\' . ?$B!G(B) (?\( . ?$B!J(B) (?\) . ?$B!K(B) (?* . ?$B!v(B) (?+ . ?$B!\(B) (?, . ?$B!$(B) + (?- . ?$B!](B) (?. . ?$B!%(B) (?/ . ?$B!?(B) (?0 . ?$B#0(B) (?1 . ?$B#1(B) (?2 . ?$B#2(B) + (?3 . ?$B#3(B) (?4 . ?$B#4(B) (?5 . ?$B#5(B) (?6 . ?$B#6(B) (?7 . ?$B#7(B) (?8 . ?$B#8(B) + (?9 . ?$B#9(B) (?: . ?$B!'(B) (?\; . ?$B!((B) (?< . ?$B!c(B) (?= . ?$B!a(B) (?> . ?$B!d(B) + (?? . ?$B!)(B) (?@ . ?$B!w(B) (?A . ?$B#A(B) (?B . ?$B#B(B) (?C . ?$B#C(B) (?D . ?$B#D(B) + (?E . ?$B#E(B) (?F . ?$B#F(B) (?G . ?$B#G(B) (?H . ?$B#H(B) (?I . ?$B#I(B) (?J . ?$B#J(B) + (?K . ?$B#K(B) (?L . ?$B#L(B) (?M . ?$B#M(B) (?N . ?$B#N(B) (?O . ?$B#O(B) (?P . ?$B#P(B) + (?Q . ?$B#Q(B) (?R . ?$B#R(B) (?S . ?$B#S(B) (?T . ?$B#T(B) (?U . ?$B#U(B) (?V . ?$B#V(B) + (?W . ?$B#W(B) (?X . ?$B#X(B) (?Y . ?$B#Y(B) (?Z . ?$B#Z(B) (?\[ . ?$B!N(B) (?\\ . ?$B!@(B) + (?\] . ?$B!O(B) (?^ . ?$B!0(B) (?_ . ?$B!2(B) (?` . ?$B!F(B) (?a . ?$B#a(B) (?b . ?$B#b(B) + (?c . ?$B#c(B) (?d . ?$B#d(B) (?e . ?$B#e(B) (?f . ?$B#f(B) (?g . ?$B#g(B) (?h . ?$B#h(B) + (?i . ?$B#i(B) (?j . ?$B#j(B) (?k . ?$B#k(B) (?l . ?$B#l(B) (?m . ?$B#m(B) (?n . ?$B#n(B) + (?o . ?$B#o(B) (?p . ?$B#p(B) (?q . ?$B#q(B) (?r . ?$B#r(B) (?s . ?$B#s(B) (?t . ?$B#t(B) + (?u . ?$B#u(B) (?v . ?$B#v(B) (?w . ?$B#w(B) (?x . ?$B#x(B) (?y . ?$B#y(B) (?z . ?$B#z(B) + (?{ . ?$B!P(B) (?| . ?$B!C(B) (?} . ?$B!Q(B) (?~ . ?$B!1(B))) + + +(defun yc-substitute-string (src dst str) + (let ((pos 0)) + (while (string-match src str pos) + (setq pos (+ (match-beginning 0) (length dst)) + str (concat (substring str 0 (match-beginning 0)) + dst + (substring str (match-end 0))))) + str)) + +;; $B$R$i$,$J(B-$B%+%?%+%JJQ49(B +(defun yc-conv-Hk (str) + (yc-substitute-string + "$B%&!+(B" "$B%t(B" + (concat (mapcar (lambda (c) (let ((l (assq c yc-HkT))) (if l (cdr l) c))) + (append str nil))))) + +;; $B$R$i$,$J(B-$BH>3Q%+%JJQ49(B +(defun yc-conv-Hh (str) + (mapconcat (lambda (c) (let ((l (assq c yc-HhT))) + (if l (cdr l) (char-to-string c)))) + (append str nil) "")) + +;; $B%+%?%+%J(B-$B$R$i$,$JJQ49(B +(defun yc-conv-kH (str) + (concat (mapcar (lambda (c) (let ((l (rassq c yc-HkT))) (if l (car l) c))) + (append (yc-substitute-string "$B%t(B" "$B%&!+(B" str) nil)))) + +;; alphabet-$B#a#l#p#h#a#b#e#tJQ49(B +(defun yc-conv-aA (str) + (concat (mapcar (lambda (c) (let ((l (assq c yc-aAT))) (if l (cdr l) c))) + (append str nil)))) + +;; $B#a#l#p#h#a#b#e#t(B-alphabet$BJQ49(B +(defun yc-conv-Aa (str) + (concat (mapcar (lambda (c) (let ((l (rassq c yc-aAT))) (if l (car l) c))) + (append str nil)))) + +;; +;; $B$R$i$,$J(B-romaji$BJQ49(B +;; +(defvar yc-Hr-table nil) +(defvar yc-Hr-item-max 0) + +(defun yc-Hr-table-pack (Hr-table rH-table) + (let ((table Hr-table) + (new)) + (while table + (when (car (assoc (cdar table) rH-table)) + (setq new (cons (car table) new))) + (setq table (cdr table))) + new)) + +(defun yc-Hr-item-length (Hr-table) + (let ((n 0)) + (while Hr-table + (setq n (max (yc-strlen (caar Hr-table)) n)) + (setq Hr-table (cdr Hr-table))) + n)) + +(defun yc-Hr-table-separate (Hr-table) + (let ((new)) + (while Hr-table + (let ((idx (yc-strlen (caar Hr-table)))) + (when (and (null (nth (1- idx) new)) (< (length new) idx)) + (setq new (nconc new (make-list (- idx (length new)) nil)))) + (setcar (nthcdr (1- idx) new) (cons (car Hr-table) (nth (1- idx) new))) + (setq Hr-table (cdr Hr-table)))) + new)) + +(defun yc-Hr-table-setup () + (let ((l (yc-Hr-table-pack yc-default-Hr-table yc-default-rH-table))) + (setq yc-Hr-table (yc-Hr-table-separate l) + yc-Hr-item-max (yc-Hr-item-length l)))) + +(defun yc-conv-Hr-internal (hira) + (let ((l (string-to-list hira))) + (while (and l (not (assoc (concat l) (nth (1- (length l)) yc-Hr-table)))) + (setq l (reverse (cdr (reverse l))))) + (when l (assoc (concat l) (nth (1- (length l)) yc-Hr-table))))) + +(defun yc-subsequence (lst bgn end) + (and lst + (if (= bgn end) + nil + (let ((r (nthcdr bgn (copy-sequence lst)))) + (if (null (nthcdr (- end bgn 1) r)) + nil + (setcdr (nthcdr (- end bgn 1) r) nil) + r))))) + +(defun yc-conv-Hr (hira) + (let ((l (string-to-list hira)) + (roma)) + (while l + (cond ((equal (car l) ?$B$C(B) (setq roma (cons -2 roma) l (cdr l))) + ((equal (car l) ?$B$s(B) (setq roma (cons -1 roma) l (cdr l))) + (t + (let ((hit (yc-conv-Hr-internal + (concat (yc-subsequence l 0 (min (length l) + yc-Hr-item-max)))))) + (if hit + (setq roma (cons (cdr hit) roma) + l (nthcdr (length (string-to-list (car hit))) l)) + (setq roma (cons (char-to-string (car l)) roma) + l (cdr l)))))) ) + (setq l roma roma nil) +; (yc-debug l) + (let ((xtsu (yc-conv-Hr-internal "$B$C(B")) + (nn (yc-conv-Hr-internal "$B$s(B"))) + (while l + (let ((c (and (car roma) (or (integerp (car roma)) (car roma)) + (car (string-to-list (car roma)))))) + (setq roma (cons (cond ((not (integerp (car l))) (car l)) + ((and (= (car l) -1) ; $B$s(B+$BJl2;(B + c + (memq c '(-1 ?n ?a ?i ?u ?e ?o))) + (cdr nn)) + ((= (car l) -1) "n") ; $B$s(B+$B;R2;(B or $B:G=*(B + ((and (= (car l) -2) ; $B$C(B+$B;R2;(B + c + (not (memq c '(?n ?a ?i ?u ?e ?o)))) + (char-to-string c)) + ((= (car l) -2) ; $B$C(B+$BJl2;(B or $B:G=*(B + (cdr xtsu))) roma) + l (cdr l))))) + (apply 'concat roma))) + +;; +;; romaji-$B$R$i$,$JJQ49(B +;; +(defun yc-read-string-from-file (file) + (let* ((suffix (file-name-extension file)) + ;; emacs-20.x + ;;(auto-coding-alist + ;; (if suffix + ;; (list (cons (concat "\\." suffix) 'japanese-iso-8bit)) + ;; auto-coding-alist)) + (auto-coding-alist + (list (cons "" 'japanese-iso-8bit))) + ;; XEmacs-20.x + ;;(file-coding-system-alist + ;; (if suffix + ;; (list (cons (concat "\\." suffix) 'euc-jp)) + ;; file-coding-system-alist)) + (file-coding-system-alist + (list (cons "" 'euc-jp))) + + (buf (get-file-buffer file)) + (flag (not buf)) + (buf (if buf buf + (prog1 (find-file-noselect file) (message "")))) + (str)) + (save-excursion + (set-buffer buf) + (setq str (buffer-string)) + (when flag (kill-buffer buf))) + str)) + +(defun yc-hex-to-char (hex) + (let ((l (string-to-list hex)) + (new)) + (while (>= (length l) 3) + (if (and (= (nth 0 l) ?x) + (or (and (<= ?0 (nth 1 l)) (<= (nth 1 l) ?9)) + (and (<= ?A (nth 1 l)) (<= (nth 1 l) ?F))) + (or (and (<= ?0 (nth 2 l)) (<= (nth 2 l) ?9)) + (and (<= ?A (nth 2 l)) (<= (nth 2 l) ?F)))) + (setq new (concat + new + (char-to-string + (+ (* 16 (cond ((and (<= ?0 (nth 1 l)) (<= (nth 1 l) ?9)) + (- (nth 1 l) ?0)) + ((and (<= ?A (nth 1 l)) (<= (nth 1 l) ?F)) + (+ (- (nth 1 l) ?A) 10)))) + (cond ((and (<= ?0 (nth 2 l)) (<= (nth 2 l) ?9)) + (- (nth 2 l) ?0)) + ((and (<= ?A (nth 2 l)) (<= (nth 2 l) ?F)) + (+ (- (nth 2 l) ?A) 10)))))) + l (nthcdr 3 l)) + (setq new (concat new (char-to-string (car l))) + l (cdr l)))) + (concat new (concat l)))) + +(defun yc-rH-convert-dictionary (dic) + (and (file-exists-p dic) + (let ((str (yc-read-string-from-file dic))) + (setq yc-rH-table + (let ((l (split-string + (substring str 7) + "\000")) + (ll)) + (while l + (when(/= (length (car l)) 0) + (setq ll (cons (list (yc-hex-to-char (car l)) + (car (cdr l)) + (car (cdr (cdr l)))) ll))) + (setq l (nthcdr 3 l))) + ll))))) + +;; returns ((?c . "a")) +(defun yc-make-entry (seq str nlst) + (if (listp nlst) + ;; nlst $B$,(B list $B$b$7$/$O(B nil $B$N;~(B + (let ((a (assq (string-to-char seq) nlst)) ; nlst $B$KB8:_$9$k$+$N(B check + (n nlst) ; nlst $B$KB8:_$7$?$H$-$NB8:_ItJ,0J9_(B + (m nil)) ; nlst $B$KB8:_$7$?$H$-$NB8:_ItJ,0JA0(B + (if a + (progn + (while (and (car n) (not (eq (caar n) (string-to-char seq)))) + (setq m (append m (list (car n))) + n (cdr n))) + (if (= (length seq) 1) + ;; nlst $B$KB8:_$7(B seq $B$,(B 1 $BJ8;z(B + (append m + (list (append (list (caar n)) + (list (cons nil str)) (cdar n))) + (cdr n)) + ;; nlst $B$KB8:_$7(B seq $B$,(B 2 $BJ8;z0J>e(B + (append m + (list (append + (list (string-to-char seq)) + (yc-make-entry + (yc-substring seq 1) str (cdar n)))) + (cdr n)))) + (if (= (length seq) 1) + ;; nlst $B$KB8:_$;$:(B 1 $BJ8;z(B + (append nlst (list (cons (string-to-char seq) str))) + ;; nlst $B$KB8:_$;$:(B 2 $BJ8;z0J>e(B + (append nlst + (list (append (list (string-to-char seq)) + (yc-make-entry + (yc-substring seq 1) str nil))))))) + (if (= (length seq) 1) + ;; nlst $B$,(B listp $B$G$J$/(B 1 $BJ8;z(B + (list (cons nil nlst) (cons (string-to-char seq) str)) + ;; nlst $B$,(B listp $B$G$J$/(B 2 $BJ8;z0J>e(B + (list (cons nil nlst) + (cons (string-to-char seq) + (yc-make-entry (yc-substring seq 1) str nil)))))) + +; (defun yc-countup-entry (dic) +; (if (and (listp dic) (listp (cdr dic))) +; (let ((s 0) +; (d dic)) +; (while (car d) +; (setq s (+ s (* 10 (yc-countup-entry (car d)))) +; d (cdr d))) +; s) +; 1)) + +; (defun yc-sort-entry (dic) +; (if (and (listp dic) (listp (cdr dic))) +; (let ((i 0)) +; (while (< i (1- (length dic))) +; (setcdr (elt dic i) (yc-sort-entry (cdr (elt dic i)))) +; (let ((j (1+ i))) +; (while (< j (length dic)) +; (when (< (yc-countup-entry (elt dic i)) +; (yc-countup-entry (elt dic j))) +; (let ((tmp (elt dic i))) +; (setcar (nthcdr i dic) (elt dic j)) +; (setcar (nthcdr j dic) tmp))) +; (setq j (1+ j)))) +; (setq i (1+ i))) +; dic) +; dic)) + +(defun yc-rH-make-lookup-table (entries) + (let ((entry nil) + (dic nil)) + (while (setq entry (car entries)) + (when (nth 2 entry) + (setq dic (yc-make-entry (nth 0 entry) + (concat (nth 1 entry) "\177" (nth 2 entry)) + dic) + entries (cdr entries)))) + dic)) +; (yc-sort-entry dic))) + + +(defun yc-lookup-rH-internal (seq dic opt) + (unless (or (not (stringp seq)) (= (yc-strlen seq) 0)) + (let ((c nil) (r nil) (a nil) (d dic)) + (while (and (setq c (string-to-char seq)) + (setq a (assq c d)) + (listp (cdr a))) + (setq d a + r (concat r (yc-substring seq 0 1)) + seq (substring seq 1))) + (if (and c (/= c 0)) + (if a + (cons (cdr a) (yc-substring seq 1)) + (if (setq a (assq nil d)) + (cons (cdr a) seq) + (if r + (cons (yc-substring r 0 1) (concat (yc-substring r 1) seq)) +; (cons r seq) ; 2003/12/25 + (cons (char-to-string c) + (yc-substring seq 1))))) + (if (and (not opt) (setq a (assq nil d))) + (cons (cdr a) "") + (cons nil r)))))) + +;; appended 01/12/29 by matz@ruby-lang.org +(defun yc-split-string (str sep) + (if (string-match sep str) + (list (substring str 0 (match-beginning 0)) + (substring str (match-end 0))) + (list str))) + +;; modified 01/12/29 by matz@ruby-lang.org +(defun yc-lookup-rH (romaji yc-yomi-dic opt) + (let ((r (yc-lookup-rH-internal romaji yc-yomi-dic opt)) + (c nil) + (l nil)) + (when r + (setq c (car r)) + (if (and c (= (length (setq l (yc-split-string c "\177"))) 2)) + (cons (car l) (concat (cadr l) (cdr r))) + (cons (car l) (cdr r)))))) +(defun yc-lookup-rH-list (romaji yc-yomi-dic opt) + (let ((r (yc-lookup-rH-internal romaji yc-yomi-dic opt)) + (c nil) + (l nil)) + (when r + (setq c (car r)) + (if (and c (not (string= (cadr (setq l (yc-split-string c "\177"))) ""))) + (let ((i (yc-lookup-rH-list (concat (cadr l) (cdr r)) + yc-yomi-dic opt))) + (if (or (null (car i)) + (string= (cadr l) + (substring (car i) 0 (length (cadr l))))) + (cons (cadr l) (cdr r)) + (cons (concat (car l) (car i)) (cdr i)))) + (cons (car l) (cdr r)))))) + +;; flag $B$,(B t $B$N;~(B +;; $B%+!<%=%kD>A0$H(Bfence $B=*C<$N(B n $B$rJQ49$7$J$$(B +(defun yc-conv-rH (romaji &optional flag) + (let ((hiragana nil) (res '(t))) + (while (and (car res) (stringp romaji) (> (length romaji) 0)) + (if (yc-get-symbol (string-to-char romaji)) + (setq res (cons (yc-get-symbol (string-to-char romaji)) + (substring romaji 1))) + (setq res (yc-lookup-rH romaji yc-yomi-dic flag))) + (setq hiragana (concat hiragana (car res)) + romaji (cdr res))) + (concat hiragana romaji))) + +(defun yc-conv-rH-list (romaji &optional flag) + (let ((r (yc-generate-romaji-list romaji)) + (hlist nil) + (rlist nil)) + (while (car r) + (setq hlist (append hlist (list (yc-conv-rH + (car r) + (not (and flag (numberp flag)))))) + rlist (append rlist (list (car r))) + r (cdr r))) + (list hlist rlist))) + +(defun yc-generate-romaji-list (romaji) + (let ((hira (yc-conv-rH romaji)) + (rmj romaji) + (r '(t)) l h) + (while (and (car r) (stringp romaji) (> (length romaji) 0)) + (if (yc-get-symbol (string-to-char romaji)) + (setq r (cons (yc-get-symbol (string-to-char romaji)) + (substring romaji 1))) + (setq r (yc-lookup-rH-list rmj yc-yomi-dic nil))) + (setq h (substring hira 0 (length (car r)))) + (if (and (not (string= "" h)) ; 2003/12/25 + (string= h (car r))) + (let ((len (- (length romaji) (length (cdr r))))) + (when (> len 0) + (setq l (append l (list (substring romaji 0 len)))) + (setq romaji (substring romaji len))) + (setq hira (substring hira (length (car r)))))) + (setq rmj (cdr r))) + (if (and (stringp romaji) (> (length romaji) 0)) + (append l (list romaji)) + l))) + +(defun yc-put-symbol (sym idx) + (let ((lst yc-defsymbol-list) + (tmp nil) + (counter 0)) + (while (car lst) + (setq tmp (cdar lst)) + (if (assq sym tmp) + (setcar (nth counter yc-defsymbol-list) idx)) + (setq lst (cdr lst) + counter (1+ counter))))) + +(defun yc-get-symbol-list-internal (sym) + (let ((lst yc-defsymbol-list) + (idx nil) + (tmp nil) + (res nil)) + (while (and (null res) (car lst)) + (setq idx (caar lst) + tmp (cdar lst)) + (if (assq sym tmp) + (setq res (cons idx (cdr (assq sym tmp))))) + (setq lst (cdr lst))) + res)) + +(defun yc-get-symbol (sym) + (let ((lst (yc-get-symbol-list-internal sym))) + (if lst + (nth (car lst) (cdr lst))))) + +(defun yc-get-symbol-list (sym) + (cdr (yc-get-symbol-list-internal sym))) + +;;; +;;; contexts +;;; +(defmacro yc-get (arg) + (list 'cdr (list 'assq + (list 'quote (intern (concat "yc-" (symbol-name arg)))) + 'yc-context))) +(defmacro yc-put (arg val) + (list 'setq 'yc-context + (list 'cons + (list 'cons + (list 'quote (intern (concat "yc-" (symbol-name arg)))) + val) + 'yc-context))) + +;;; +;;; dictionary management +;;; +(defun yc-mnt-or-mkdic (dic) + (when (not (yc-mount-dictionary yc-mode-mount-dic (yc-get mount) dic)) + (yc-create-dictionary 128 (yc-get mount) dic) + (yc-mount-dictionary yc-mode-mount-dic (yc-get mount) dic))) + +;;; +;;; group-id +;;; +;; (defun yc-group-name () +;; (or (and (not (eq system-type 'w32)) +;; (yc-group-name-id) +;; (yc-group-name-perl)) +;; "user")) +(defun yc-group-name () + (or (and (eq system-type 'w32) "user") + (and (eq system-type 'windows-nt) "user") + (yc-group-name-id) + (yc-group-name-perl) + "user")) + +(defun yc-group-name-exec (cmd &rest lst) + (let ((buf "yc:*group*")) + (save-excursion + (when (get-buffer buf) (kill-buffer buf)) + (when (= 0 (condition-case nil + (eval (append (list 'call-process cmd nil + (get-buffer-create buf) nil) lst)) + (error 1))) + (prog2 + (set-buffer buf) + (buffer-substring 1 (goto-char (1- (point-max)))) + (kill-buffer buf)))))) + +(defun yc-group-name-id () + (yc-group-name-exec "id" "-gn")) + +(defun yc-group-name-perl () + (yc-group-name-exec + "env" "LC_ALL=C" "perl" "-e" "$get=getgrgid($();print \"$gid\n\"")) + +;;; +;;; interface close emacs +;;; +;; $B<-=q$N@_Dj$H%m!<%^;z4A;zJQ49%F!<%V%k$N@_Dj$rM-8z$K$9$k(B +;; $B0lMw%b!<%I$K$J$k2s?t$rM-8z$K$9$k(B + +;; .canna's functions: +;; quote setq set equal = > < progn eq cond null not and or + - * / % gc load +;; list sequence defun defmacro cons car cdr atom let if boundp fboundp +;; getenv copy-symbol concat use-dictionary set-mode-display set-key +;; global-set-key unbind-key-function global-unbind-function defmode +;; defsymbol defselection defmenu initialize-function define-esc-sequence +;; define-x-keysym + +(defvar yc-def-list nil) +(defvar yc-var-list nil) +(defvar yc-val-list nil) +(defvar yc-fun-list nil) +(defvar yc-exp-list nil) + +(defvar yc-rc-dic-list nil) +(defvar yc-rc-bushu-dic-list nil) +(defvar yc-rc-user-dic-list nil) + +(defun yc-rc-load (files) + (if (not (listp files)) (setq files (list files))) + (let (romkana-table stay-after-validate n-henkan-for-ichiran) + (while (car files) + (when (and (file-exists-p (expand-file-name (car files))) + (file-readable-p (expand-file-name (car files)))) + (setq yc-rc-dic-list nil + yc-rc-bushu-dic-list nil + yc-rc-user-dic-list nil) + (let ((buffer (mapconcat + 'concat + (split-string (yc-read-string-from-file (car files)) + "\\\\C\\-\\\\") "\\C-\\\\")) + (expr '(t . 0))) + (while (car (setq expr (condition-case nil + (read-from-string buffer (cdr expr)) + (error nil)))) + (yc-eval-sexp (car expr))))) + (setq files (cdr files))) + (if romkana-table + (setq yc-rH-conv-dic (yc-search-file-first-in-path + romkana-table (list "." (getenv "HOME") + yc-canna-dic-path)))) + (if stay-after-validate (setq yc-choice-stay stay-after-validate)) + (if n-henkan-for-ichiran (setq yc-select-count (1- n-henkan-for-ichiran))) + (setq yc-dic-list (or (reverse yc-rc-dic-list) yc-dic-list) + yc-bushu-dic-list (or yc-rc-bushu-dic-list yc-bushu-dic-list) + yc-user-dic-list (or yc-rc-user-dic-list yc-user-dic-list)) + (yc-var-unintern))) + +(defun yc-eval-sexp (sexp) + (eval (print (yc-sexp-expand t sexp)))) + +(if (not (fboundp 'char-or-char-int-p)) + (defalias 'char-or-char-int-p 'numberp)) +(defun yc-sexp-expand (car-p sexp) + (cond ((null sexp) nil) + ((and (fboundp 'char-or-char-int-p) + (char-or-char-int-p sexp)) sexp) ; for XEmacs + ((numberp sexp) sexp) + ((stringp sexp) sexp) + ((vectorp sexp) sexp) + ((symbolp sexp) + (let ((sym (intern-soft (concat "yc-rc-" (symbol-name sexp))))) + (cond ((and sym (fboundp sym)) sym) + (car-p 'ignore) + (t sexp)))) + (t (let* ((res (list (yc-sexp-expand car-p (car sexp)))) + (lst (cdr sexp))) + (cond ((eq (symbol-function (car res)) 'ignore) '(ignore)) + ((eq (symbol-function (car res)) 'quote) (cons 'quote lst)) + (t (if (eq (symbol-function (car res)) 'let) + (setq res (append res (list (car lst))) + lst (cdr lst))) + (while lst + (setq res (append + res (list (yc-sexp-expand (listp (car lst)) + (car lst)))) + lst (cdr lst))) + res)))))) + +(defun yc-search-file-first-in-path (file path) + (if (file-exists-p file) + file + (cond ((not path) nil) + ((file-exists-p (concat (file-name-as-directory (car path)) file)) + (concat (file-name-as-directory (car path)) file)) + (t (yc-search-file-first-in-path file (cdr path)))))) + + +(defun yc-rc-use-dictionary (&rest dic) + (while dic + (cond ((eq (car dic) :bushu) + (setq yc-rc-bushu-dic-list (cons (cadr dic) yc-rc-bushu-dic-list) + dic (cddr dic))) + ;; TODO: autodef feature + ((or (eq (car dic) :user) + (eq (car dic) :katakana) (eq (car dic) :hiragana)) + (setq yc-rc-user-dic-list (cons (cadr dic) yc-rc-user-dic-list) + dic (cddr dic))) + ((eq (car dic) :grammar) + (setq yc-rc-dic-list (cons (cadr dic) yc-rc-dic-list) + dic (cddr dic))) + (t (setq yc-rc-dic-list (cons (car dic) yc-rc-dic-list) + dic (cdr dic)))))) + +(defun yc-rc-boundp (sym) + (and (memq sym yc-def-list) t)) + +(defun yc-rc-fboundp (sym) + (fboundp (intern-soft (concat "yc-rc-" (symbol-name sym))))) + +(defmacro yc-rc-setq (&rest lst) + (let ((pair '(yc-rc-set))) + (while lst + (setq pair (cons (list 'quote (car lst)) pair)) + (setq pair (cons (cadr lst) pair)) + (setq lst (cddr lst))) + (reverse pair))) + +(defun yc-rc-set (&rest lst) + (let (sym) + (while lst + (setq sym (car lst) + yc-def-list (cons sym yc-def-list)) + (if (boundp sym) + (setq yc-var-list (cons sym yc-var-list) + yc-val-list (cons (symbol-value sym) yc-val-list))) + (set sym (cadr lst)) + (setq lst (cddr lst))) + (symbol-value sym))) + +; (defmacro yc-rc-defun (fsym arg &rest exp) +; (let* ((sym (concat "yc-rc-" (symbol-name fsym))) +; (res (intern-soft sym))) +; (setq sym (intern sym)) +; (setq yc-def-list (cons sym yc-def-list)) +; (if (not res) +; (setq yc-fun-list (cons sym yc-fun-list) +; yc-exp-list (cons (symbol-function sym) yc-exp-list))) +; (append (list 'defun sym arg) exp))) + +; (defmacro yc-rc-defmacro (fsym arg &rest exp) +; (let* ((sym (concat "yc-rc-" (symbol-name fsym))) +; (res (intern-soft sym))) +; (setq sym (intern sym)) +; (setq yc-def-list (cons sym yc-def-list)) +; (if (not res) +; (setq yc-fun-list (cons sym yc-fun-list) +; yc-exp-list (cons (symbol-function sym) yc-exp-list))) +; (append (list 'defmacro sym arg) exp))) + +(defun yc-var-unintern () + (while yc-var-list + (setq yc-def-list (delq (car yc-var-list) yc-def-list)) + (set (car yc-var-list) (car yc-val-list)) + (setq yc-var-list (cdr yc-var-list) + yc-val-list (cdr yc-val-list))) + (while yc-fun-list + (setq yc-def-list (delq (car yc-fun-list) yc-def-list)) + (fset (car yc-fun-list) (car yc-exp-list)) + (setq yc-fun-list (cdr yc-var-list) + yc-exp-list (cdr yc-exp-list))) + (while yc-def-list + (unintern (car yc-def-list)) + (setq yc-def-list (cdr yc-def-list)))) + +;; sames +(let ((sym '(quote equal = > < progn eq cond null not and or + - * / % gc list + cons car cdr atom let if boundp fboundp getenv concat))) + (while sym + (defalias (intern (concat "yc-rc-" (symbol-name (car sym)))) (car sym)) + (setq sym (cdr sym)))) + +;; ignores +(let ((sym '(sequence copy-symbol defun defmacro set-mode-display set-key + global-set-key unbind-key-function + global-unbind-key-function defmode defselection + defmenu initialize-function define-esc-sequence + define-x-keysym))) + (while sym + (defalias (intern (concat "yc-rc-" (symbol-name (car sym)))) 'ignore) + (setq sym (cdr sym)))) + +(defun yc-rc-defsymbol-internal (lst sym str) + (if sym + (cond ((= (length lst) 0) + (setq lst (list 0 (cons sym str)))) + ((/= (length lst) 0) + (setcdr (nthcdr (1- (length lst)) lst) (list (cons sym str)))))) + lst) + +(defun yc-rc-defsymbol (&rest args) + (let ((sym nil) + (str nil) + (lst nil)) + (while (car args) + (cond ((integerp (car args)) + (setq lst (yc-rc-defsymbol-internal lst sym str)) + (setq sym (car args)) + (setq str nil)) + ((stringp (car args)) + (setq str (append str (list (car args)))))) + (setq args (cdr args))) + (if yc-defsymbol-list + (setq yc-defsymbol-list (cons (yc-rc-defsymbol-internal lst sym str) + yc-defsymbol-list)) + (setq yc-defsymbol-list (list (yc-rc-defsymbol-internal lst sym str)))) + yc-defsymbol-list)) + + +;; $B=i4|2=4X?t(B +(defun yc-open () + (yc-setup) + (yc-init)) + +(defun yc-reopen () + (when (and yc-server + (or (eq (process-status yc-server) 'open) + (eq (process-status yc-server) 'run))) + (yc-close)) + (yc-init)) + +; (defun yc-setup () +; (let ((rc (expand-file-name "~/.ycrc.elc"))) +; (if (or (not (file-exists-p rc)) +; (file-newer-than-file-p (concat (get-yc-canna-lib-path) +; "default.canna") rc) +; (file-newer-than-file-p "~/.canna" rc) +; (file-newer-than-file-p "~/.emacs" rc)) +; ; (file-newer-than-file-p load-file-name rc)) +; (progn +; (yc-setup-internal) +; (yc-set-skip-chars yc-stop-chars) +; (let ((buf (get-buffer-create ".ycrc.el"))) +; (set-buffer buf) +; (delete-region (point-min) (point-max)) +; (print (list 'setq 'yc-user-dic-list +; (list 'quote yc-user-dic-list)) buf) +; (print (list 'setq 'yc-bushu-dic-list +; (list 'quote yc-bushu-dic-list)) buf) +; (print (list 'setq 'yc-dic-list (list 'quote yc-dic-list)) buf) +; (print (list 'setq 'yc-defsymbol-list +; (list 'quote yc-defsymbol-list)) buf) +; (print (list 'setq 'yc-yomi-dic (list 'quote yc-yomi-dic)) buf) +; (print (list 'setq 'yc-skip-chars (list 'quote yc-skip-chars)) buf) +; ; (require 'bytecomp) +; ; (byte-compile-from-buffer buf (expand-file-name rc)) +; (write-file "~/.ycrc.el" t) +; (byte-compile-file "~/.ycrc.el") +; (delete-file "~/.ycrc.el"))) +; (load rc)))) + +; (defun yc-setup-internal () +; ;; setup romaji henkan table +; (yc-rc-load +; (list (concat (get-yc-canna-lib-path) "default.canna") +; "~/.canna")) +; (when (stringp yc-rH-conv-dic) (yc-rH-convert-dictionary yc-rH-conv-dic)) +; (when (null yc-rH-table) (setq yc-rH-table yc-default-rH-table)) +; (setq yc-yomi-dic (yc-rH-make-lookup-table yc-rH-table)) +; (yc-Hr-table-setup) +; ; (yc-rH-table-setup) +; ) + +(defun yc-setup-p () + (get 'yc-setup 'setup)) +(defun yc-setup () + ;; setup romaji henkan table + (unless (yc-setup-p) + (yc-rc-load + (if (file-exists-p "~/.canna") + `("~/.canna") + (list (concat (get-yc-canna-lib-path) "default.canna")))) + (when (stringp yc-rH-conv-dic) (yc-rH-convert-dictionary yc-rH-conv-dic)) + (when (null yc-rH-table) (setq yc-rH-table yc-default-rH-table)) + (setq yc-yomi-dic (yc-rH-make-lookup-table yc-rH-table)) + (yc-Hr-table-setup) +; (yc-rH-table-setup) + (put 'yc-setup 'setup t))) + +;; cannaserver $B$NDL?.=i4|2=4X?t(B +(defun yc-init-p () + (get 'yc-server 'init)) +(defun yc-init () + (when (and (yc-server-check) (not (yc-init-p))) + (put 'yc-server 'init t) + (yc-debug (list yc-server-host yc-canna-lib-path yc-canna-dic-path)) + (yc-put init (yc-initialize 3 3 (user-real-login-name))) + (yc-notice-group-name 0 (yc-get init) (yc-group-name)) + + ;; setup dictionary + (yc-put mount (yc-create-context)) + (yc-mnt-or-mkdic (car yc-user-dic-list)) + (let ((l (append (cdr yc-user-dic-list) yc-bushu-dic-list yc-dic-list))) + (while (car l) + (yc-mount-dictionary yc-mode-mount-dic (yc-get mount) (car l)) + (setq l (cdr l)))) + + ;; setup cannaserver part2 + (yc-set-application-name 0 (yc-get mount) + (format "Emacs %s" emacs-version)) + (yc-put conv (yc-duplicate-context (yc-get mount))))) + +;; $B=*N;;~4X?t(B +(defun yc-close () + (when yc-context + ;; deleted follow line 01/12/29 by matz@ruby-lang.org +; (set-process-sentinel yc-server nil) + (condition-case nil + (yc-finalize) + (yc-trap-server-down nil)) + (setq yc-context nil) + (yc-server-close))) + +(add-hook 'kill-emacs-hook 'yc-close) + + +;;; +;;; yc basic operation +;;; + +;;; yc basic output +(defvar yc-fence-yomi nil) ; $BJQ49FI$_(B +(defvar yc-fence-start nil) ; fence $B;OC<0LCV(B +(defvar yc-fence-end nil) ; fence $B=*C<0LCV(B +(defvar yc-henkan-separeter " ") ; fence mode separeter +(defvar yc-henkan-buffer nil) ; $BI=<(MQ%P%C%U%!(B +(defvar yc-henkan-length nil) ; $BI=<(MQ%P%C%U%!D9(B +(defvar yc-henkan-revpos nil) ; $BJ8@a;OC<0LCV(B +(defvar yc-henkan-revlen nil) ; $BJ8@aD9(B + +;;; yc basic local +(defvar yc-mark nil) ; $BJ8@aHV9f(B +(defvar yc-mark-list nil) ; $BJ8@a8uJdHV9f(B +(defvar yc-mark-max nil) ; $BJ8@a8uJd?t(B +(defvar yc-henkan-list nil) ; $BJ8@a%j%9%H(B +(defvar yc-kouho-list nil) ; $BJ8@a8uJd%j%9%H(B +(defvar yc-repeat 0) ; $B7+$jJV$72s?t(B + +;; +(defvar yc-selected-window nil) ; minibuffer$BB`HrMQ%j%9%H(B +(defvar yc-select-markers nil) ; minibuffer$B8uJd%j%9%H(Bmarkers + +(defvar yc-bunsetsu-yomi-list nil) + +;; $B;XDjJ8@a$NFI$_$rJV$94X?t(B +;; force $B$,(B $BHs(Bnil $B$N>l9g!"6/@)E*$K(B cannaserver $B$+$iFI$_$rl9g!";XDjJ8@a0J9_$NFI$_$r:o=|$9$k(B +(defun yc-put-bunsetsu-yomi (idx yomi &optional cut) + (let ((lst (make-list (1+ idx) nil)) + (len (length yc-bunsetsu-yomi-list))) + (if (null cut) + (setcdr (nthcdr idx lst) (nthcdr (1+ idx) yc-bunsetsu-yomi-list))) + (if (<= len 0) + (setq yc-bunsetsu-yomi-list lst) + (setcdr (nthcdr (1- len) yc-bunsetsu-yomi-list) (nthcdr len lst))) + (if cut + (setcdr (nthcdr idx yc-bunsetsu-yomi-list) nil)) + (setcar (nthcdr idx yc-bunsetsu-yomi-list) yomi)) + yomi) + +;; $B;XDjJ8@a$NFI$_$rJV$94X?t(B +;; $BJ8@a$r;XDj$7$J$$>l9g!"8=:_$NJ8@a$,BP>]$H$J$k(B +;; $BFI$_$rl9g!";XDjJ8@a0J9_$NFI$_$r:o=|$9$k(B +(defun yc-yomi (&optional idx &optional cut) + (if (integerp idx) + (yc-put-bunsetsu-yomi idx (yc-get-bunsetsu-yomi idx cut) cut) + (yc-put-bunsetsu-yomi yc-mark (yc-get-bunsetsu-yomi yc-mark cut) cut))) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; undo $B>pJs$N@)8f(B $B$H(B yc $B$GL$Dj5A$J%-!<$N%A%'%C%/%"%&%H(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; yc-henkan-mode & yc-select-mode $B%-!<%P%$%s%I(B +;; command $BpJs$NC_@Q$rDd;_$9$k4X?t(B +(defun yc-disable-undo () + (when (not (eq buffer-undo-list t)) + (add-hook 'pre-command-hook 'yc-pre-command-function) + (setq yc-buffer-undo-list buffer-undo-list) + (setq yc-buffer-modified-p (buffer-modified-p)) + (setq buffer-undo-list t) + (when (fboundp 'blink-cursor-mode) + (setq yc-blink-cursor blink-cursor-mode) + (blink-cursor-mode -1)) + (when (boundp 'cursor-type) + (setq yc-cursor-type cursor-type) + (setq cursor-type 1)))) + +;; $BB`Hr$7$?(B undo buffer $B$rI|5"$7!"(Bundo $B>pJs$NC_@Q$r:F3+$9$k4X?t(B +(defun yc-enable-undo () + (remove-hook 'pre-command-hook 'yc-pre-command-function) + (when (not yc-buffer-modified-p) (set-buffer-modified-p nil)) + (setq buffer-undo-list yc-buffer-undo-list) + (when (fboundp 'blink-cursor-mode) + (blink-cursor-mode (if yc-blink-cursor 1 -1))) + (when (boundp 'cursor-type) (setq cursor-type yc-cursor-type))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; $BI=<(7O4X?t72(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar yc-use-fence t) +(defvar yc-use-color nil) +;; terminal X11 +;; xemacs OK OK +;; emacs-20 NG OK +;; emacs-21 OK OK +(defun yc-use-color () + (and yc-use-color + (or (featurep 'xemacs) + (>= emacs-major-version 21) + (eq window-system 'x) + (eq window-system 'w32)))) + +(defun yc-frame-parameter (frame prop) + (if (featurep 'xemacs) + (let ((value (frame-property frame prop))) + (cond ((color-instance-p value) (color-instance-name value)) + (t value))) + (frame-parameter frame prop))) + +(defun yc-selected-frame-parameter (prop) + (yc-frame-parameter (selected-frame) prop)) + +(defun yc-move-overlay (overlay beg end &optional buffer) + (funcall (if (or (not (featurep 'xemacs)) (featurep 'overlay)) + 'move-overlay + '(lambda (overlay beg end buffer) + (detach-extent overlay) + (insert-extent overlay beg end buffer))) + overlay beg end buffer)) + +(defun yc-overlay-put (overlay prop value) + (funcall (if (or (not (featurep 'xemacs)) (featurep 'overlay)) + 'overlay-put 'set-extent-property) + overlay prop value)) + +(defmacro yc-delete-overlay (overlay0) + (list 'when overlay0 + (list 'progn + (if (or (not (featurep 'xemacs)) (featurep 'overlay)) + (list 'delete-overlay overlay0) + (list 'delete-extent overlay0)) + (list 'setq overlay0 nil)))) + +(defun yc-overlayp (overlay) + (funcall (if (or (not (featurep 'xemacs)) (featurep 'overlay)) + 'overlayp 'extentp) overlay)) + +(defun yc-make-overlay (beg end &optional buffer) + (funcall (if (or (not (featurep 'xemacs)) (featurep 'overlay)) + 'make-overlay 'make-extent) beg end buffer)) + +(defvar yc-fence-face nil) +(defvar yc-current-face nil) + +(defvar yc-fence nil) +(defvar yc-current nil) +(defvar yc-select-current nil) + +(make-variable-buffer-local 'yc-fence) +(make-variable-buffer-local 'yc-current) +(make-variable-buffer-local 'yc-select-current) + +;; (if (or (eq window-system 'x) (eq window-system 'w32)) +;; (progn +;; (make-face 'yc-fence-face) +;; (set-face-foreground +;; 'yc-fence-face +;; (if (eq (yc-selected-frame-parameter 'background-mode) 'dark) +;; "#80FFFF" "#0000FF")) +;; (make-face 'yc-current-face) +;; (set-face-foreground 'yc-current-face +;; (or (yc-selected-frame-parameter 'background-color) +;; (face-background 'default))) +;; (set-face-background 'yc-current-face +;; (yc-selected-frame-parameter 'cursor-color))) +;; (copy-face 'bold 'yc-fence-face) +;; (set-face-foreground 'yc-fence-face "blue") +;; (copy-face 'default 'yc-current-face) +;; (set-face-foreground 'yc-current-face "red") +;; (funcall (if (featurep 'xemacs) 'set-face-highlight-p 'set-face-bold-p) +;; 'yc-current-face nil)) +(defface yc-fence-face + '((((class color) (background light)) (:foreground "#0000FF")) + (((class color) (background dark)) (:foreground "#80FFFF")) + (t (:bold t :foreground "blue"))) + "Face for YC fence." + :group 'yc) +(defface yc-current-face + (cond ((featurep 'xemacs) + (list (list 't (list :background (face-background-name 'text-cursor) + :foreground (face-background-name 'default))))) + ((= emacs-major-version 20) + (list (list 't (list :background (yc-selected-frame-parameter + 'cursor-color) + :foreground (or (yc-selected-frame-parameter + 'background-color) + (face-background 'default)))))) + (t (list (list 't (list :background (face-background 'cursor) + :foreground (face-background 'default)))))) + "Face for YC cursor." + :group 'yc) +;; (defun yc-colorize () +;; (if (or (eq window-system 'x) (eq window-system 'w32)) +;; (progn +;; (make-face 'yc-fence-face) +;; (unless (face-foreground 'yc-fence-face) +;; (set-face-foreground +;; 'yc-fence-face +;; (if (eq (yc-selected-frame-parameter 'background-mode) 'dark) +;; "#80FFFF" +;; "#0000FF")))) +;; (copy-face 'bold 'yc-fence-face) +;; (set-face-foreground 'yc-fence-face "blue")) +;; (if (or (eq window-system 'x) (eq window-system 'w32)) +;; (progn +;; (make-face 'yc-current-face) +;; (set-face-foreground 'yc-current-face +;; (or +;; (yc-selected-frame-parameter 'background-color) +;; (face-background 'default))) +;; (set-face-background 'yc-current-face +;; (or +;; (yc-selected-frame-parameter 'cursor-color)))) +;; (copy-face 'default 'yc-current-face) +;; (set-face-foreground 'yc-current-face "red") +;; (funcall (if (featurep 'xemacs) 'set-face-highlight-p 'set-face-bold-p) +;; 'yc-current-face nil))) + +(defmacro yc-set-overlay (overlay start end face &optional priority) + (list 'if (list 'yc-use-color) + (list 'if overlay + (list 'yc-move-overlay overlay start end) + (list 'setq overlay (list 'yc-make-overlay start end)) +; (list 'unless (list 'facep (list 'quote face)) '(yc-colorize)) + (list 'yc-overlay-put overlay ''face (list 'quote face)) + (if priority + (list 'yc-overlay-put overlay ''priority priority))))) + +(defun yc-skip-elsechar-forward (chars) + (let ((chs (append chars nil))) + (while (and (not (eolp)) + (not (memq (following-char) chs))) + (forward-char)) + (point))) + +;; fence $B$rI=<($9$k%b!<%I(B +(defvar yc-fence-mode nil) + +(defun yc-set-overlay-select () + (when (yc-use-color) + (let ((start (1+ (point))) + (end (save-excursion (yc-skip-elsechar-forward " \t\n")))) + (yc-set-overlay yc-select-current start end yc-current-face)))) + +(defun yc-set-overlay-fence () + (when (yc-use-color) + (yc-set-overlay yc-fence yc-fence-start yc-fence-end yc-fence-face 100))) + +(defun yc-set-overlay-current () + (when (yc-use-color) + (let ((start (+ (if yc-select-mode 0 1) + (point))) + (end (+ (point) yc-henkan-revlen))) + (yc-set-overlay yc-current start end yc-current-face 200)))) + +(defun yc-fence-mode (arg) + + ;; $B0lMw%b!<%I4XO"(B + (if (not yc-select-mode) + (yc-delete-overlay yc-select-current) + (yc-set-overlay-select) + (select-window (car yc-selected-window))) + + ;; $BJQ49%b!<%I$HF~NO%b!<%I4XO"(B + (when (or yc-fence-mode yc-henkan-mode) + (when (not (eq yc-fence-start yc-fence-end)) + (delete-region yc-fence-start yc-fence-end)) + (goto-char yc-fence-start)) + + ;; fence$B$N@ZBX$((B + (if (setq yc-fence-mode arg) + (yc-disable-undo) + (yc-enable-undo) + (yc-delete-overlay yc-fence) + (yc-delete-overlay yc-current)) + + ;; fence$B$NI=<((B + (when yc-fence-mode + + ;; $BJQ49(B/$BJT=8J8;zNs$rA^F~(B + (when yc-use-fence + (insert "||") + (set-marker yc-fence-end (point)) + (backward-char)) + (insert yc-henkan-buffer) + (unless yc-use-fence + (set-marker yc-fence-end (point))) + + ;; fence $B$K?'$rIU$1$k(B + (yc-set-overlay-fence) + (goto-char (+ (if yc-use-fence 1 0) + yc-fence-start + (if yc-henkan-mode yc-henkan-revpos (yc-yomi-point)))) + (when yc-henkan-mode + (yc-set-overlay-current)) +; (goto-char (1- (point))) +; (print last-command-event) ; DEBUG + (when yc-select-mode (select-window (minibuffer-window))))) + +;; yc $B$N4X?t74$+$i8F$S=P$5$lI=<($r;J$k4X?t(B +(defun yc-post-command-function () + (setq yc-henkan-separeter (if yc-use-fence " " "")) + (when yc-kouho-list + (setcar (nthcdr yc-mark yc-henkan-list) + (nth (nth yc-mark yc-mark-list) yc-kouho-list))) + (setq yc-henkan-buffer (mapconcat 'concat yc-henkan-list yc-henkan-separeter) + yc-henkan-length (length yc-henkan-buffer) + yc-henkan-revpos (+ (if (= yc-mark 0) 0 (length yc-henkan-separeter)) + (length + (mapconcat + 'concat + (nthcdr (- (length yc-henkan-list) yc-mark) + (reverse yc-henkan-list)) + yc-henkan-separeter))) + yc-henkan-revlen (length (nth yc-mark yc-henkan-list))) + + (if (not yc-select-mode) + (yc-fence-mode t) + (goto-char (nth (nth yc-mark yc-mark-list) yc-select-markers)) + (yc-fence-mode t) )) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; $BEPO?%b!<%I(B & $B0lMw%b!<%I6&DL4X?t(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defvar yc-select-buffer " yc-select") +(defvar yc-select-markers nil) + +(defun yc-make-select-buffer (lst) + (setq yc-selected-window (cons (selected-window) yc-selected-window)) + (unless (featurep 'xemacs) + (set-minibuffer-window (minibuffer-window))) + (set-window-buffer (minibuffer-window) (get-buffer-create yc-select-buffer)) + (yc-redirect-frame-focus + (window-frame (car yc-selected-window)) + (window-frame (select-window (minibuffer-window)))) + (raise-frame (window-frame (select-window (minibuffer-window)))) +; (set-window-buffer (minibuffer-window) (get-buffer-create yc-select-buffer)) + (let ((l lst)) + (while l + (setq yc-select-markers (cons (point-marker) yc-select-markers)) + (insert (car l) " ") + (setq l (cdr l)))) + (setq yc-select-markers (reverse yc-select-markers)) + (let ((fill-column (- (window-width (minibuffer-window)) 2))) + (fill-region 1 (point-max)) + (message nil)) + (let ((l yc-select-markers)) + (while l + (goto-char (car l)) + (when (and (not (eobp)) (eolp)) (set-marker (car l) (1+ (car l)))) + (setq l (cdr l))))) + +(defun yc-delete-select-buffer () + (let ((l yc-select-markers)) + (while l + (set-marker (car l) nil) + (setq l (cdr l)))) + (setq yc-select-markers nil) + (when yc-select-current (yc-delete-overlay yc-select-current)) + (delete-region 1 (point-max)) + (set-window-buffer (minibuffer-window) + (get-buffer (format " *Minibuf-%d*" + (minibuffer-depth)))) + (yc-redirect-frame-focus (window-frame (car yc-selected-window)) nil) + (message "") + (raise-frame (window-frame (select-window (car yc-selected-window)))) + (setq yc-selected-window (cdr yc-selected-window))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; $B5-9fA*Br%b!<%I(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; $B5-9fA*Br%b!<%I$OC`0l$K0lMw%j%9%H$r@8@.$9$k(B +;; $B5-9f$N0lMw%b!<%I$r@EE*$K;}$D$N$O6u4V$NL5BL$@$7(B +;; $B5-9f$N0lMwI=$r:n$k$N$O;~4V$NL5BL$@$+$i(B +(define-key yc-wclist-mode-map "\C-p" 'yc-wclist-prev-line) +(define-key yc-wclist-mode-map "\C-n" 'yc-wclist-next-line) +(define-key yc-wclist-mode-map "\C-b" 'yc-wclist-prev-wchar) +(define-key yc-wclist-mode-map "\C-f" 'yc-wclist-next-wchar) +(define-key yc-wclist-mode-map " " 'yc-wclist-next-wchar) +(define-key yc-wclist-mode-map "\C-a" 'yc-wclist-beginning-of-line) +(define-key yc-wclist-mode-map "\C-e" 'yc-wclist-end-of-line) +(define-key yc-wclist-mode-map "\C-m" 'yc-wclist-choice) +(define-key yc-wclist-mode-map "\C-q" 'yc-wclist-choice-continue) +(define-key yc-wclist-mode-map "\C-g" 'yc-wclist-cancel) +(define-key yc-wclist-mode-map [up] 'yc-wclist-prev-line) +(define-key yc-wclist-mode-map [down] 'yc-wclist-next-line) +(define-key yc-wclist-mode-map [left] 'yc-wclist-prev-wchar) +(define-key yc-wclist-mode-map [right] 'yc-wclist-next-wchar) + +;; $B5-9fA*Br%b!<%I;~$N%3%^%s%I%A%'%C%/4X?t(B +;; $B5-9f%b!<%IMQ$KDj5A$7$?%3%^%s%I0J30$N%3%^%s%I$,(B +;; $BF~NO$5$l$?>l9g$K$O5-9fA*Br%b!<%I$rH4$1$F(B +;; $BF~NO$5$l$?%3%^%s%I$r (prefix-numeric-value arg) 0))) + (force-mode-line-update t) + (if yc-wclist-mode + (progn + (setq yc-selected-window (cons (selected-window) yc-selected-window)) + (unless (featurep 'xemacs) + (set-minibuffer-window (minibuffer-window))) + (yc-redirect-frame-focus + (window-frame (car yc-selected-window)) + (window-frame (select-window (minibuffer-window)))) + (raise-frame (window-frame (select-window (minibuffer-window)))) + (set-window-buffer (minibuffer-window) + (get-buffer-create yc-wclist-buf)) + (add-hook 'pre-command-hook 'yc-wclist-pre-command-function) + (setq yc-wclist-orow -1) + (yc-wclist-display)) + (remove-hook 'pre-command-hook 'yc-wclist-pre-command-function) + (delete-region (point-min) (point-max)) + (set-window-buffer (minibuffer-window) + (get-buffer (format " *Minibuf-%d*" + (minibuffer-depth)))) + (yc-redirect-frame-focus (window-frame + (select-window (car yc-selected-window))) nil) + (setq yc-selected-window (cdr yc-selected-window)))) + +(defun yc-wclist-create-list (lines) + (let ((gap (/ (window-width (minibuffer-window)) 3)) + (len (- ?\xFE ?\xA1)) + lst tmp row col + (idx 0)) + (while (< idx gap) + (setq tmp (% (+ idx (* lines gap)) (* len len))) + (setq row (car (yc-wclist-liner-to-code tmp))) + (setq col (cdr (yc-wclist-liner-to-code tmp))) + (setq lst (cons + (cond + ((>= emacs-major-version 23) + (decode-coding-string + (string-make-unibyte + (concat (char-to-string row) (char-to-string col))) + 'euc-jp) + ) ; clause + ( t + (decode-coding-string + (concat (char-to-string row) (char-to-string col)) + 'euc-jp) + ) ; t + ) ; cond + lst)) + (setq idx (1+ idx))) + (reverse lst))) + +(defun yc-wclist-add (val oft) + (let ((gap (* (- ?\xFE ?\xA1) (- ?\xFE ?\xA1)))) + (setq val (+ val oft)) + (while (< val 0) + (setq val (+ val gap))) + (% val gap))) +(defun yc-wclist-sub (val oft) + (yc-wclist-add val (- oft))) + +(defun yc-wclist-code-to-liner (hgh low) + (+ (* (- hgh ?\xA1) (- ?\xFE ?\xA1)) (- low ?\xA1))) +(defun yc-wclist-liner-to-code (val) + (cons (+ (/ val (- ?\xFE ?\xA1)) ?\xA1) + (+ (% val (- ?\xFE ?\xA1)) ?\xA1))) +(defun yc-wclist-disp-to-liner (row col) + (+ (* row (/ (window-width (minibuffer-window)) 3)) col)) +(defun yc-wclist-liner-to-disp (val) + (cons (/ val (/ (window-width (minibuffer-window)) 3)) + (% val (/ (window-width (minibuffer-window)) 3)))) +(defun yc-wclist-disp-to-code (row col) + (yc-wclist-liner-to-code (yc-wclist-disp-to-liner row col))) +(defun yc-wclist-code-to-disp (hgh low) + (yc-wclist-liner-to-disp (yc-wclist-code-to-liner hgh low))) + +(defun yc-wclist-display () + (when (/= (car (yc-wclist-liner-to-disp yc-wclist-pos)) yc-wclist-orow) + (setq yc-wclist-lst (yc-wclist-create-list + (setq yc-wclist-orow (car (yc-wclist-liner-to-disp + yc-wclist-pos))))) + (delete-region (point-min) (point-max)) + (insert (mapconcat 'concat yc-wclist-lst " "))) + (goto-char (1+ (* (cdr (yc-wclist-liner-to-disp yc-wclist-pos)) 2)))) + +(defun yc-wclist-end-of-line () + (interactive) + (setq yc-wclist-pos (yc-wclist-disp-to-liner + (car (yc-wclist-liner-to-disp yc-wclist-pos)) + (1- (/ (window-width (minibuffer-window)) 3)))) + (yc-wclist-display)) + +(defun yc-wclist-beginning-of-line () + (interactive) + (setq yc-wclist-pos (yc-wclist-disp-to-liner + (car (yc-wclist-liner-to-disp yc-wclist-pos)) 0)) + (yc-wclist-display)) + +(defun yc-wclist-next-wchar () + (interactive) + (setq yc-wclist-pos (yc-wclist-add yc-wclist-pos 1)) + (yc-wclist-display)) + +(defun yc-wclist-prev-wchar () + (interactive) + (setq yc-wclist-pos (yc-wclist-sub yc-wclist-pos 1)) + (yc-wclist-display)) + +(defun yc-wclist-next-line () + (interactive) + (setq yc-wclist-pos (yc-wclist-add yc-wclist-pos + (/ (window-width (minibuffer-window)) 3))) + (yc-wclist-display)) + +(defun yc-wclist-prev-line () + (interactive) + (setq yc-wclist-pos (yc-wclist-sub yc-wclist-pos + (/ (window-width (minibuffer-window)) 3))) + (yc-wclist-display)) + +(defun yc-wclist-choice () + (interactive) + (yc-wclist-choice-continue) + (yc-wclist-mode -1)) + +(defun yc-wclist-choice-continue () + (interactive) + (select-window (car yc-selected-window)) + (insert (nth (cdr (yc-wclist-liner-to-disp yc-wclist-pos)) yc-wclist-lst)) + (select-window (minibuffer-window))) + +(defun yc-wclist-cancel () + (interactive) + (yc-wclist-mode -1)) + +(defun yc-wclist-cancel-self-insert (arg) + (interactive "p") + (setq unread-command-events (list last-command-event)) + (yc-wclist-mode -1)) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; $BEPO?%b!<%I(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(let ((i 0)) + (while (< i ?\177) + (define-key yc-defword-mode-map (char-to-string i) + 'yc-defword-cancel-and-self-insert) + (setq i (1+ i)))) +(define-key yc-defword-mode-map "\C-m" 'yc-defword) +(define-key yc-defword-mode-map "\C-g" 'yc-defword-cancel) +(define-key yc-defword-mode-map "\C-a" 'yc-defword-beginning-of-line) +(define-key yc-defword-mode-map "\C-e" 'yc-defword-end-of-line) +(define-key yc-defword-mode-map "\C-f" 'yc-defword-forward) +(define-key yc-defword-mode-map " " 'yc-defword-forward) +(define-key yc-defword-mode-map "\C-b" 'yc-defword-backward) +(define-key yc-defword-mode-map "\C-n" 'yc-defword-beginning-of-line) +(define-key yc-defword-mode-map "\C-p" 'yc-defword-end-of-line) +(define-key yc-defword-mode-map [up] 'yc-defword-end-of-line) +(define-key yc-defword-mode-map [down] 'yc-defword-beginning-of-line) +(define-key yc-defword-mode-map [right] 'yc-defword-forward) +(define-key yc-defword-mode-map [left] 'yc-defword-backward) + +;;; $BEPO?MQJQ?t(B +;; Canna v3.5 +;; $BL>;l(B[#T35] $B$9$k(B[#T30]$B!"$J(B[#T15]$B!"$9$k(B&$B$J(B[#T10] +;; $B8GM-L>;l(B[#KK] $B?ML>(B[#JN]$B!"COL>(B[#CN]$B!"?ML>(B&$BCOL>(B[#JCN] +;; $BF0;l(B[#G5] $B$$(B($BL>;l(B)[#G5r]... $BB>$K$b$$$m$$$m$"$k(B main.code +;; $BF0;l$O=*;_7A(B($B$&CJ$G=*$k$O$:(B)$B$N$_EPO?2DG=$H$7(B +;; $B:G8e$N0lJ8;z$G3hMQ9T(B($B!V$"9T!W$H$+!V$+9T!W(B)$B$rH=CG$9$k(B +;; $B7AMF;l(B[#KT] ($BL>;l(B)[#KTY] +;; $B7AMFF0;l(B[#T18] $B$9$k(B[#T13]$B!"(B($BL>;l(B)[#T15]$B!"$9$k(B&($BL>;l(B)[#T10] +;; $BI{;l(B[#F14] $B$9$k(B[#F12]$B!"$H(B[#F06]$B!"$9$k(B&$B$H(B[#F04] +;; $B$=$NB>(B[#KJ] +(defvar yc-defword-mark nil) +(defvar yc-defword-yomi nil) +(defvar yc-defword-word nil) +(defvar yc-hinshi-list + '("$B?ML>(B" "$BCOL>(B" "$B?ML>(B&$BCOL>(B" "$B8GM-L>;l(B" "$BL>;l(B" "$B$=$NB>(B")) +(defvar yc-hinshi-item + '(("$B?ML>(B" . "#JN") ("$BCOL>(B" . "#CN") ("$B?ML>(B&$BCOL>(B" . "#JCN") + ("$B8GM-L>;l(B" . "#KK") ("$BL>;l(B" . "#T35") ("$B$5JQL>;l(B" . "#T30") + ("$B7AMF;l3hMQL>;l(B" . "#T15") ("$B$5JQ(B&$B7AMF;l3hMQL>;l(B" . "#T10") + ("$B$=$NB>(B" . "#KJ"))) + +;; $BEPO?;~$NA*BrIJ;l8uJd$r(B minibuffer $B$KI=<($9$kMQ0U$r$9$k4X?t(B +(defun yc-make-touroku-buffer () + (setq yc-defword-mode t + yc-defword-mark 0) + (yc-make-select-buffer yc-hinshi-list) + (goto-char (nth yc-defword-mark yc-select-markers))) + +(defun yc-color-touroku () + (when (yc-use-color) + (let ((start (1+ (point))) + (end (save-excursion (yc-skip-elsechar-forward " \t\n")))) + (yc-set-overlay yc-select-current start end yc-current-face)))) + +;; $BC18l$r 0 yc-defword-mark) + (setq yc-defword-mark (1- (length yc-select-markers)))) + (goto-char (nth yc-defword-mark yc-select-markers)) + (yc-color-touroku)) + +;; $BIJ;lA*Br;~$K@hF,IJ;l$K0\F0$9$k4X?t(B +(defun yc-defword-beginning-of-line () + "$B<-=qEPO?;~$NIJ;lA*Br;~$K@hF,$NIJ;l$K0\F0$9$k(B" + (interactive) + (setq yc-defword-mark 0) + (goto-char (nth yc-defword-mark yc-select-markers)) + (yc-color-touroku)) + +;; $BIJ;lA*Br;~$K:G=*IJ;l$K0\F0$9$k4X?t(B +(defun yc-defword-end-of-line () + "$B<-=qEPO?;~$NIJ;lA*Br;~$K:G=*$NIJ;l$K0\F0$9$k(B" + (interactive) + (setq yc-defword-mark (1- (length yc-select-markers))) + (goto-char (nth yc-defword-mark yc-select-markers)) + (yc-color-touroku)) + +;; $BEPO?$rCf;_$9$k4X?t(B +(defun yc-defword-cancel () + "$B<-=qEPO?$rCf;_$9$k(B" + (interactive) + (when (yc-overlayp yc-select-current) (yc-delete-overlay yc-select-current)) + (setq yc-defword-mode nil) + (yc-delete-select-buffer)) +(defun yc-defword-cancel-and-self-insert () + (interactive) + (yc-defword-cancel) + (setq unread-command-events (list last-command-event))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; $B0lMw%b!<%I(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(let ((i 0)) + (while (<= i ?\177) + (define-key yc-select-mode-map (char-to-string i) + 'yc-choice-and-self-insert) + (setq i (1+ i)))) +(define-key yc-select-mode-map "\C-m" 'yc-choice) +(define-key yc-select-mode-map "\C-g" 'yc-select-cancel) +(define-key yc-select-mode-map "\C-a" 'yc-select-beginning-of-line) +(define-key yc-select-mode-map "\C-e" 'yc-select-end-of-line) +(define-key yc-select-mode-map "\C-f" 'yc-select-forward) +(define-key yc-select-mode-map "\C-b" 'yc-select-backward) +(define-key yc-select-mode-map "\C-n" 'yc-select-next) +(define-key yc-select-mode-map "\C-p" 'yc-select-previous) +(define-key yc-select-mode-map yc-rK-trans-key 'yc-modeless-next) +(define-key yc-select-mode-map " " 'yc-modeless-next) +(define-key yc-select-mode-map "\C-i" 'yc-select-tidime) +(define-key yc-select-mode-map "\C-o" 'yc-select-nobasi) +(define-key yc-select-mode-map "\C-t" 'yc-choice-and-touroku) +(define-key yc-select-mode-map "\177" 'yc-hiragana) +(define-key yc-select-mode-map [backspace] 'yc-hiragana) +(define-key yc-select-mode-map "\C-k" 'yc-katakana) +(define-key yc-select-mode-map "\C-u" 'yc-alphabet2) +(define-key yc-select-mode-map "\C-l" 'yc-alphabet) +(define-key yc-select-mode-map [up] 'yc-select-previous) +(define-key yc-select-mode-map [down] 'yc-select-next) +(define-key yc-select-mode-map [right] 'yc-select-forward) +(define-key yc-select-mode-map [left] 'yc-select-backward) + +;; $B0lMw%b!<%I$r3+;O$9$k4X?t(B +(defun yc-select () + (condition-case nil + (progn + (unless (window-minibuffer-p (selected-window)) + (yc-get-kouho-list) + (setq yc-select-mode t + yc-select-markers nil) + (yc-make-select-buffer yc-kouho-list)) + (yc-post-command-function)) + (yc-trap-server-down (yc-cancel)))) + +;; $B0lMw%b!<%I$G]J8@aD9$r?-$P$9!#(B +$BI{:nMQ$H$7$F0lMw%b!<%I$OH4$1$k(B" + (interactive) + (yc-select-cancel) + (setq unread-command-events (list last-command-event))) + +;; $B0lMw%b!<%I$GJ8@a$r=L$a$k4X?t(B +;; $B0lMw%b!<%I$OH4$1$k(B +(defun yc-select-tidime () + "$B0lMw%b!<%I$GBP>]J8@aD9$r=L$a$k!#(B +$BI{:nMQ$H$7$F0lMw%b!<%I$OH4$1$k(B" + (interactive) + (yc-select-cancel) + (setq unread-command-events (list last-command-event))) + +;; $B0lMw%b!<%I$G8uJd$rA*Br$9$kFbIt4X?t(B +(defun yc-choice-internal () + (setq yc-select-mode nil) + (yc-delete-select-buffer)) + +;; $B0lMw%b!<%I$G8uJd$rA*Br$9$k4X?t(B +;; $BEvA3!"0lMw%b!<%I$OH4$1$k(B +(defun yc-choice () + "$B0lMw%b!<%I$G8uJd$rA*Br$9$k!#(B +$B0lMw%b!<%I$OH4$1$k(B" + (interactive) + (yc-choice-internal) + (condition-case nil + (when (not yc-choice-stay) (yc-forward-bunsetsu)) + (yc-trap-server-down + (condition-case nil + (yc-backward-bunsetsu) + (yc-trap-server-down nil)) + (setcar (nthcdr yc-mark yc-mark-list) 0) + (setcar (nthcdr yc-mark yc-henkan-list) + (nth (nth yc-mark yc-mark-list) yc-kouho-list)))) + (yc-post-command-function)) + +;; $B0lMw%b!<%I$G8uJd$rA*Br$7!"$+$D!"JQ49$r3NDj$7F~NO$5$l$?%-!<$r:FF~NO$9$k4X?t(B +;; $B0lMw%b!<%I$*$h$SJQ49%b!<%I$rH4$1$k(B +(defun yc-choice-and-self-insert (arg) + "$B0lMw%b!<%I$G8uJd$rA*Br$70lMw%b!<%I$rH4$1$?8e$G!"(B +$BJQ49$r3NDj$7!"F~NO$5$l$?J8;z$rF~NO$9$k(B" + (interactive "P") + (yc-choice) + (yc-kakutei) + (setq unread-command-events (list last-command-event))) + +;; $B0lMw%b!<%I$G8uJd$rA*Br$7!"$+$D!"JQ49$r3NDj$7!"(B +;; $B3NDj$7$?J8;zNs$r<-=qEPO?$9$k4X?t(B +;; $B0lMw%b!<%I$*$h$SJQ49%b!<%I$rH4$1$k(B +(defun yc-choice-and-touroku () + "$B0lMw%b!<%I$G8uJd$rA*Br$70lMw%b!<%I$rH4$1$?8e$G!"JQ49$r3NDj$9$k(B" + (interactive) + (yc-choice) + (yc-kakutei) + (yc-touroku-region yc-fence-start yc-fence-end)) + +;; $B0lMw%b!<%I$rCf;_$9$k4X?t(B +;; $BEvA30lMw%b!<%I$OH4$1$k(B +(defun yc-select-cancel () + "$B0lMw%b!<%I$rCf;_$9$k(B" + (interactive) + (yc-choice-internal) + (setcar (nthcdr yc-mark yc-mark-list) 0) + (setcar (nthcdr yc-mark yc-henkan-list) + (nth (nth yc-mark yc-mark-list) yc-kouho-list)) + (yc-post-command-function)) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; $BFI$_F~NO!uFI$_JT=8%b!<%I(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; fence $B%b!<%IMQJQ?t(B +; yc-fence-yomi $B$K%-! yc-yomi-list-point 0) + (string= (nth (1- yc-yomi-list-point) yc-hiragana-list) + (nth (1- yc-yomi-list-point) yc-romaji-list))) + (setcar (nthcdr (1- yc-yomi-list-point) yc-hiragana-list) + (caar (yc-conv-rH-list (nth (1- yc-yomi-list-point) + yc-romaji-list) 0))))) + +;; $BFI$_$r:o=|$9$k(B +(defun yc-yomi-delete () + (setq yc-romaji-list (yc-generate-romaji-list yc-fence-yomi)) + (if (= yc-yomi-list-point 0) + (setq yc-romaji-list (cdr yc-romaji-list) + yc-hiragana-list (cdr yc-hiragana-list)) + (setcdr (nthcdr (1- yc-yomi-list-point) yc-romaji-list) + (nthcdr (1+ yc-yomi-list-point) yc-romaji-list)) + (setcdr (nthcdr (1- yc-yomi-list-point) yc-hiragana-list) + (nthcdr (1+ yc-yomi-list-point) yc-hiragana-list))) + (setq yc-fence-yomi (apply 'concat yc-romaji-list))) + +;; $BFI$_$r=*C<$^$G:o=|$9$k(B +(defun yc-yomi-kill () + (setq yc-romaji-list (yc-generate-romaji-list yc-fence-yomi)) + (setq yc-romaji-list + (yc-subsequence yc-romaji-list 0 yc-yomi-list-point) + yc-hiragana-list + (yc-subsequence yc-hiragana-list 0 yc-yomi-list-point) + yc-fence-yomi (apply 'concat yc-romaji-list))) + +;; $BA0$NFI$_$K0\F0(B +(defun yc-yomi-prev () + (setq yc-yomi-list-point (1- yc-yomi-list-point)) + (if (< yc-yomi-list-point 0) + (setq yc-yomi-list-point 0) + (setq yc-yomi-string-point + (- yc-yomi-string-point + (yc-strlen (nth yc-yomi-list-point yc-romaji-list)))))) + +;; $B yc-yomi-list-point (length yc-hiragana-list)) + (setq yc-yomi-list-point (length yc-hiragana-list)) + (setq yc-yomi-string-point + (+ yc-yomi-string-point + (yc-strlen (nth (1- yc-yomi-list-point) yc-romaji-list)))))) + +;; $B:G=i$NFI$_$K0\F0(B +(defun yc-yomi-bob () + (setq yc-yomi-string-point 0 + yc-yomi-list-point 0)) + +;; $B:G8e$NFI$_$K0\F0(B +(defun yc-yomi-eob () + (setq yc-yomi-string-point (length yc-fence-yomi) +; yc-yomi-list-point (length yc-romaji-list))) + yc-yomi-list-point (length yc-hiragana-list))) + +;; $B$R$i2>L>FI$_J8;zNs$rJV$9(B +(defun yc-yomi-hiragana () + (apply 'concat yc-hiragana-list)) + +;; $B$R$i2>L>FI$_J8;zNs$N%+!<%=%k0LCV$rJV$9(B +(defun yc-yomi-point () + (yc-strlen + (apply 'concat (yc-subsequence yc-hiragana-list 0 yc-yomi-list-point)))) + +;; $BFI$_JT=8Cf$N%-!<$NF~NO=hM}(B +(defun yc-self-insert-internal () + (if (or (eq last-command 'yc-edit-next) + (eq last-command 'yc-edit-previous)) + (let ((last-str (char-to-string (event-to-character + last-command-event)))) + (yc-fence-mode nil) + (insert (yc-yomi-hiragana)) + (yc-yomi-reset) + (setq yc-edit-mode t + yc-mark 0 + yc-fence-yomi "" + yc-henkan-list nil + yc-fence-start (copy-marker (point-marker)) + yc-fence-end (copy-marker (point-marker))))) +; (yc-yomi-insert last-str) +; (yc-edit-post-command-function))) + (yc-yomi-insert (char-to-string (event-to-character last-command-event))) + (yc-edit-post-command-function)) + +;; $BFI$_JT=8Cf$NI=<(4X?t(B +(defun yc-edit-post-command-function () + (setq yc-henkan-list (list (yc-yomi-hiragana))) +; (prin1 yc-fence-yomi) +; (prin1 yc-romaji-list) + (yc-post-command-function)) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; $B$R$i2>L>JT=8%b!<%I(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(let ((i (1+ ? ))) + (while (< i ?\177) + (define-key yc-edit-mode-map (char-to-string i) 'yc-edit-self-insert) + (setq i (1+ i)))) +(define-key yc-edit-mode-map "\C-g" 'yc-edit-cancel) +(define-key yc-edit-mode-map "\C-a" 'yc-edit-beginning-of-fence) +(define-key yc-edit-mode-map "\C-e" 'yc-edit-end-of-fence) +(define-key yc-edit-mode-map "\C-b" 'yc-edit-backward-char) +(define-key yc-edit-mode-map "\C-f" 'yc-edit-forward-char) +(define-key yc-edit-mode-map "\177" 'yc-edit-backward-delete-char) +(define-key yc-edit-mode-map [backspace] 'yc-edit-backward-delete-char) +(define-key yc-edit-mode-map "\C-h" 'yc-edit-delete-char) +(define-key yc-edit-mode-map "\C-d" 'yc-edit-delete-char) +(define-key yc-edit-mode-map " " 'yc-edit-henkan) +(define-key yc-edit-mode-map yc-rK-trans-key 'yc-edit-henkan) +(define-key yc-edit-mode-map "\C-m" 'yc-edit-kakutei) +(define-key yc-edit-mode-map "\C-k" 'yc-edit-kill-line) +;(define-key yc-edit-mode-map "\C-p" 'yc-edit-katakana) +;(define-key yc-edit-mode-map "\C-n" 'yc-edit-alphabet) +(define-key yc-edit-mode-map "\C-p" 'yc-edit-previous) +(define-key yc-edit-mode-map "\C-n" 'yc-edit-next) +(define-key yc-edit-mode-map [up] 'yc-edit-end-of-fence) +(define-key yc-edit-mode-map [down] 'yc-edit-beginning-of-fence) +(define-key yc-edit-mode-map [right] 'yc-edit-forward-char) +(define-key yc-edit-mode-map [left] 'yc-edit-backward-char) + +;; $BFI$_J8;zNs$rJQ49$9$k(B +(defun yc-edit-henkan () + "$BFI$_JT=8Cf$K$R$i2>L>(B-$B4A;zJQ49$9$k(B" + (interactive) + (yc-yomi-post-insert) + (if (yc-server-check) (yc-init)) + (if (not (and (yc-server-check) (yc-init-p))) + (progn + (beep) + (error (format "YC: can't connect cannaserver: %s" yc-server-host))) + (setq yc-edit-mode nil) + (delete-region yc-fence-start yc-fence-end) + (yc-edit-fix-romaji) + (insert yc-fence-yomi) + (set-marker yc-fence-end (point)) + (yc-henkan-region yc-fence-start yc-fence-end))) + +;; $BJT=8Cf$K;zC$9(B +(defun yc-edit-cancel () + "$BFI$_$NJT=8$rL>F~NO%b!<%I(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(define-key yc-input-mode-map (cond ((vectorp yc-rK-trans-key) + (vconcat [?\C-c] yc-rK-trans-key)) + ((stringp yc-rK-trans-key) + (concat "\C-c" yc-rK-trans-key))) + 'yc-wclist-mode) +(let ((i (1+ ? ))) + (while (< i ?\177) + (define-key yc-input-mode-map (char-to-string i) 'yc-input-self-insert) + (setq i (1+ i)))) + +(defun yc-input-mode-function () + (setq inactivate-current-input-method-function 'yc-inactivate) + (setq current-input-method-title "$B$"(B") + (yc-open) + (remove-hook 'input-method-activate-hook 'yc-input-mode-function)) + +(defun yc-input-mode (arg) + "$BFI$_JT=8%b!<%I!#(B +$BF~NO$5$l$?%m!<%^;z$r$R$i2>L>$KJQ49$7$J$,$iF~NO$9$k%b!<%I!#(B" + (interactive "P") + (when (not (local-variable-p 'yc-input-mode (current-buffer))) + (make-local-variable 'yc-input-mode)) + (setq yc-input-mode (if (null arg) (not yc-input-mode) + (> (prefix-numeric-value arg) 0))) + (if yc-input-mode + (progn + (setq inactivate-current-input-method-function 'yc-inactivate) + (setq current-input-method-title "$B$"(B") + (add-hook 'input-method-activate-hook 'yc-input-mode-function);) + (if (eq (selected-window) (minibuffer-window)) + (add-hook 'minibuffer-exit-hook 'yc-exit-from-minibuffer))) + (setq inactivate-current-input-method-function nil) + (setq current-input-method-title nil)) + (force-mode-line-update t));) + +(defun yc-exit-from-minibuffer () + (inactivate-input-method) + (when (<= (minibuffer-depth) 1) + (remove-hook 'minibuffer-exit-hook 'yc-exit-from-minibuffer))) + +(defun yc-input-self-insert () + "$BFI$_$NF~NO!#(B +$BF~NO$5$l$?%m!<%^;z$r$R$i2>L>$KJQ49$7$J$,$iFI$_$rF~NO$9$k!#(B" + (interactive) + (when yc-henkan-mode (yc-kakutei)) + (yc-yomi-reset) + (setq yc-edit-mode t + yc-mark 0 + yc-fence-start (copy-marker (point-marker)) + yc-fence-end (copy-marker (point-marker))) + (yc-self-insert-internal)) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; $BJQ49%b!<%I(B +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(let ((i 0)) + (while (<= i ?\177) + (define-key yc-henkan-mode-map (char-to-string i) + 'yc-kakutei-and-self-insert) + (setq i (1+ i)))) +(define-key yc-henkan-mode-map "\C-m" 'yc-kakutei) +(define-key yc-henkan-mode-map "\C-g" 'yc-cancel) +(define-key yc-henkan-mode-map "\C-n" 'yc-next) +(define-key yc-henkan-mode-map yc-rK-trans-key 'yc-next) +(define-key yc-henkan-mode-map " " 'yc-modeless-next) +(define-key yc-henkan-mode-map "\C-p" 'yc-previous) +(define-key yc-henkan-mode-map "\C-f" 'yc-forward) +(define-key yc-henkan-mode-map "\C-b" 'yc-backward) +(define-key yc-henkan-mode-map "\C-a" 'yc-beginning-of-fence) +(define-key yc-henkan-mode-map "\C-e" 'yc-end-of-fence) +(define-key yc-henkan-mode-map "\C-i" 'yc-shrink) +(define-key yc-henkan-mode-map "\C-o" 'yc-enlarge) +(define-key yc-henkan-mode-map "\C-t" 'yc-kakutei-and-touroku) +(define-key yc-henkan-mode-map "\177" 'yc-hiragana) +(define-key yc-henkan-mode-map [backspace] 'yc-hiragana) +(define-key yc-henkan-mode-map "\C-h" 'yc-hiragana) +(define-key yc-henkan-mode-map "\C-u" 'yc-alphabet2) +(define-key yc-henkan-mode-map "\C-l" 'yc-alphabet) +(define-key yc-henkan-mode-map "\C-k" 'yc-katakana) +(define-key yc-henkan-mode-map [up] 'yc-previous) +(define-key yc-henkan-mode-map [down] 'yc-next) +(define-key yc-henkan-mode-map [right] 'yc-forward) +(define-key yc-henkan-mode-map [left] 'yc-backward) + +(defvar yc-symbol-list nil) + +;; cannaserver $B$+$iJQ498uJd$r= (nth yc-mark yc-mark-list) + (nth yc-mark yc-mark-max)) + (- (nth yc-mark yc-mark-list) + (nth yc-mark yc-mark-max)))))) + +;; $BD>A0$N8uJd$rA*Br$9$k4X?t(B +(defun yc-prev-kouho () + (setcar (nthcdr yc-mark yc-mark-list) (1- (nth yc-mark yc-mark-list))) + (when (> 0 (nth yc-mark yc-mark-list)) + (setcar (nthcdr yc-mark yc-mark-list) (1- (length yc-kouho-list)))) + (if (car yc-symbol-list) + (setcdr (car yc-symbol-list) (if (> (nth yc-mark yc-mark-list) + (nth yc-mark yc-mark-max)) + (- (nth yc-mark yc-mark-list) + (nth yc-mark yc-mark-max)))))) + +;; $B= yc-mark (length yc-henkan-list)) + (setq yc-mark 0))) + (yc-yomi yc-mark) + (setq yc-kouho-list nil)) + +;; $BD>A0$NJ8@a$rA*Br$9$k4X?t(B +(defun yc-backward-bunsetsu (&optional arg) + (if arg + (setq yc-mark arg) + (setq yc-mark (1- yc-mark)) + (when (> 0 yc-mark) + (setq yc-mark (1- (length yc-henkan-list))))) + (yc-yomi yc-mark) + (setq yc-kouho-list nil)) + +;; $B8=:_$NJ8@a$N(B alphabet $B$r3Q%+%J(B + ((= (mod yc-repeat 5) 3) (yc-jisyu 'alpha2)) ; $B#a#l#p#h#a#b#e#t(B + ((= (mod yc-repeat 5) 4) (yc-jisyu 'alpha)))) ; alphabet + + +;; $B%j!<%8%g%s$r%m!<%^;z4A;zJQ49$9$k4X?t(B +;; $B$R$i$,$J4A;zJQ49$b2DG=(B +(defun yc-henkan-region (b e) + "$B;XDj$5$l$?(B region $B$r4A;zJQ49$9$k(B" + (interactive "*r") + (yc-init) + (condition-case err + (when (/= b e) + (setq yc-henkan-mode t + yc-fence-start (copy-marker b) + yc-fence-end (copy-marker e) + yc-fence-yomi (buffer-substring b e) + yc-henkan-list (yc-begin-convert + yc-mode-zen-hira-henkan + (yc-get conv) + (if yc-hiragana-list (yc-yomi-hiragana) + (yc-conv-kH (yc-conv-rH + (yc-conv-Aa yc-fence-yomi))))) + yc-mark-list (make-list (length yc-henkan-list) 0) + yc-mark-max (make-list (length yc-henkan-list) 0) + yc-mark 0 + yc-bunsetsu-yomi-list nil) + (yc-post-command-function)) + (yc-trap-server-down + (beep) + (message (error-message-string err)) + (setq yc-henkan-mode nil)) )) + +;; $BJQ49$r3NDj$9$k4X?t(B +(defun yc-kakutei () + "$B4A;zJQ49$r3NDj$9$k(B" + (interactive) + (yc-kakutei-internal)) +(defun yc-kakutei-internal () + (let ((idx 0) + (yc-mark-max yc-mark-max)) + (while yc-mark-max + (when (>= (nth idx yc-mark-list) (car yc-mark-max)) + (setcar (nthcdr idx yc-mark-list) 0)) + (setq idx (1+ idx)) + (setq yc-mark-max (cdr yc-mark-max)))) + (setq yc-symbol-list (reverse (delq nil yc-symbol-list))) + (while yc-symbol-list + (when (cdar yc-symbol-list) + (yc-put-symbol (string-to-char (caar yc-symbol-list)) + (cdar yc-symbol-list))) + (setq yc-symbol-list (cdr yc-symbol-list))) + (condition-case nil + (yc-end-convert (yc-get conv) (length yc-henkan-list) 1 yc-mark-list) + (yc-trap-server-down nil)) + (yc-fence-mode nil) + (insert (apply 'concat yc-henkan-list)) + (set-marker yc-fence-end (point)) + (setq yc-henkan-mode nil + yc-mark-list nil + yc-mark-max nil + yc-kouho-list nil + yc-romaji-list nil + yc-hiragana-list nil) + (when yc-isearch + (setq yc-isearch nil) + (if (featurep 'xemacs) + (isearch-nonincremental-exit-minibuffer) + (exit-minibuffer) )) + (force-mode-line-update)) + +;(eval-when-compile +; (when (boundp 'byte-compile-depth) +; (condition-case nil +; (require 'viper) +; (error nil)))) + +(defun yc-viper-minibuffer-kakutei () + "viper-mode $B$r;HMQCf$G(B minibuffer $B$G3NDj$rF~NO$5$l$?$H$-$N4X?t!#(B +$BJQ49J8;zNs$r3NDj$9$k$@$1$G(B minibuffer $B$rH4$1$J$$!#(B" + (interactive) + (if (and (or yc-henkan-mode yc-edit-mode) + (minibuffer-window-active-p (selected-window))) + (if yc-edit-mode (yc-edit-kakutei) + (when yc-select-mode (yc-choice)) + (yc-kakutei)) + (eval '(viper-exit-minibuffer)))) + +(if (boundp 'viper-minibuffer-map) + (eval + '(define-key viper-minibuffer-map "\C-m" 'yc-viper-minibuffer-kakutei)) + (eval-after-load "viper" + '(define-key viper-minibuffer-map "\C-m" 'yc-viper-minibuffer-kakutei))) + +;; $BJQ49Cf$NJ8;zNs$r3NDj$73NDj$7$?J8;zNs$r<-=qEPO?$9$k(B +(defun yc-kakutei-and-touroku () + "$B4A;zJQ49$r3NDj$7!"JQ49Cf$@$C$?J8;zNs$r<-=qEPO?$9$k(B" + (interactive) + (yc-kakutei) + (yc-touroku-region yc-fence-start yc-fence-end)) + +;; $BJQ49$r3NDj$7F~NO$5$l$?%-!<$r:FF~NO$9$k4X?t(B +(defun yc-kakutei-and-self-insert (arg) + "$B4A;zJQ49$r3NDj$7!"F~NO$5$l$?J8;z$rF~NO$9$k(B" + (interactive "P") + (yc-kakutei) + (setq unread-command-events (list last-command-event))) + +;; $BJQ49$rC$94X?t(B +;; $BJQ49A0$N>uBV$KLa$9(B +(defun yc-cancel () + "$B4A;zJQ49$rCf;_$7!"JQ49A0$N>uBV$KLa$9(B" + (interactive) + (setq yc-mark-list (make-list (length yc-henkan-list) 0)) + (condition-case nil + (yc-end-convert (yc-get conv) (length yc-henkan-list) 0 yc-mark-list) + (yc-trap-server-down nil)) + (if yc-romaji-list + (progn + (setq yc-henkan-mode nil + yc-mark-list nil + yc-mark-max nil + yc-kouho-list nil + yc-symbol-list nil) + (setq yc-edit-mode t) + (yc-edit-post-command-function)) + (yc-fence-mode nil) + (setq buffer-undo-list (primitive-undo 1 buffer-undo-list) + yc-kouho-list nil + yc-mark-list nil + yc-mark-max nil + yc-henkan-mode nil + yc-symbol-list nil) + (set-marker yc-fence-end (point)) ; reconversion after yc-cancel + (when yc-isearch + (setq yc-isearch nil) + (if (featurep 'xemacs) + (isearch-nonincremental-exit-minibuffer) + (exit-minibuffer))))) + +;; $BJQ49Cf$NJ8@aD9$rJQ99$9$k4X?t(B +(defun yc-resize-bunsetsu (arg) + (let* ((len (if (< arg 0) + (let ((pos (string-match + "$B$&!+(B$" (or (nth yc-mark yc-henkan-list) "")))) + (cond ((not pos) -2) + ((> pos 0) + (- (yc-strlen (nth yc-mark yc-henkan-list)) 2)) + (t 0))) + (cond ((eq (nth (1+ yc-mark) yc-henkan-list) nil) 0) + ((eq (string-match + "^$B$&!+(B" (nth (1+ yc-mark) yc-henkan-list)) 0) + (+ (yc-strlen (nth yc-mark yc-henkan-list)) 2)) + (t -1)))) + (hlst (condition-case nil + (yc-resize-pause (yc-get conv) yc-mark len) + (nthcdr yc-mark yc-henkan-list))) + (mlst (make-list (length hlst) 0))) + (if (= yc-mark 0) + (setq yc-henkan-list hlst + yc-mark-list mlst + yc-mark-max (copy-sequence mlst)) + (setcdr (nthcdr (1- yc-mark) yc-henkan-list) hlst) + (setcdr (nthcdr (1- yc-mark) yc-mark-list) mlst) + (setcdr (nthcdr (1- yc-mark) yc-mark-max) (copy-sequence mlst)))) + (yc-yomi yc-mark t) + (setq yc-kouho-list nil) + (yc-post-command-function)) + +;; $BJQ49Cf$NJ8@a$r?-$P$94X?t(B +(defun yc-enlarge () + "$BJQ49J8@a$r3HD%$9$k(B" + (interactive) + (condition-case err + (yc-resize-bunsetsu 1) + (yc-trap-server-down + (beep) + (message (error-message-string err)) + (yc-cancel)))) + +;; $BJQ49Cf$NJ8@a$r=L$a$k4X?t(B +(defun yc-shrink () + "$BJQ49Cf$NJ8@a$r=L>.$9$k(B" + (interactive) + (condition-case err + (yc-resize-bunsetsu -1) + (yc-trap-server-down + (beep) + (message (error-message-string err)) + (yc-cancel)))) + +;; $B0lMw%b!<%I$K$+$+$o$i$:8uJd$rA*Br$9$k4X?t(B +(defun yc-modeless-kouho (lst) + (condition-case err + (progn + (setq yc-repeat (if (eq last-command this-command) (1+ yc-repeat) 0)) + (funcall lst) + (if (and (not yc-select-mode) (>= yc-repeat yc-select-count)) + (yc-select) + (yc-post-command-function))) + (yc-trap-server-down + (beep) + (message (error-message-string err)) + (yc-cancel)))) + +;; $B0lMw%b!<%I$K4X$o$i$:3Q%+%J"*#a#l#p#h#a#b#e#t"*(Balphabet +$B$N=g$K%k!<%W$9$k(B" + (interactive) + (yc-jisyu-lotate 0)) + +;; $B%+%?%+%JJQ49$r9T$&4X?t(B +(defun yc-katakana () + "$B0lMw%b!<%I$K4X$o$i$:;z3Q%+%J"*#a#l#p#h#a#b#e#t"*(Balphabet$B"*$R$i$,$J(B +$B$N=g$K%k!<%W$9$k(B" + (interactive) + (yc-jisyu-lotate 1)) + +;; $BH>3Q%+%JJQ49$r9T$&4X?t(B +(defun yc-hankaku () + "$B0lMw%b!<%I$K4X$o$i$:;z3Q%+%J"*#a#l#p#h#a#b#e#t"*(Balphabet$B"*$R$i$,$J"*%+%?%+%J(B +$B$N=g$K%k!<%W$9$k(B" + (interactive) + (yc-jisyu-lotate 2)) + +;; $B#a#l#p#h#a#b#e#tJQ49$r9T$&4X?t(B +(defun yc-alphabet2 () + "$B0lMw%b!<%I$K4X$o$i$:;z3Q%+%J(B +$B$N=g$K%k!<%W$9$k(B" + (interactive) + (yc-jisyu-lotate 3)) + +;; alphabet$BJQ49$r9T$&4X?t(B +(defun yc-alphabet () + "$B0lMw%b!<%I$K4X$o$i$:;z3Q%+%J"*#a#l#p#h#a#b#e#t(B +$B$N=g$K%k!<%W$9$k(B" + (interactive) + (yc-jisyu-lotate 4)) + +;; $B]J8@a$r0\F0$9$k(B" + (interactive) + (condition-case err + (progn + (yc-forward-bunsetsu) + (yc-post-command-function)) + (yc-trap-server-down + (beep) + (message (error-message-string err)) + (yc-cancel)))) + +;; $BA0J8@a$rA*Br$9$k4X?t(B($B0lMw%b!<%I$G$O;H$($J$$(B) +(defun yc-backward () + "$BA0J8@a$KBP>]J8@a$r0\F0$9$k(B" + (interactive) + (condition-case err + (progn + (yc-backward-bunsetsu) + (yc-post-command-function)) + (yc-trap-server-down + (beep) + (message (error-message-string err)) + (yc-cancel)))) + +;; $B@hF,J8@a$rA*Br$9$k4X?t(B($B0lMw%b!<%I$G$O;H$($J$$(B) +(defun yc-beginning-of-fence () + "$B@hF,J8@a$KBP>]J8@a$r0\F0$9$k(B" + (interactive) + (condition-case err + (progn + (yc-backward-bunsetsu 0) + (yc-post-command-function)) + (yc-trap-server-down + (beep) + (message (error-message-string err)) + (yc-cancel)))) + +;; $B:G=*J8@a$rA*Br$9$k4X?t(B($B0lMw%b!<%I$G$O;H$($J$$(B) +(defun yc-end-of-fence () + "$B:G=*J8@a$KBP>]J8@a$r0\F0$9$k(B" + (interactive) + (condition-case err + (progn + (yc-forward-bunsetsu (1- (length yc-henkan-list))) + (yc-post-command-function)) + (yc-trap-server-down + (beep) + (message (error-message-string err)) + (yc-cancel)))) + +;;; +;;; human interface +;;; +(define-key yc-mode-map yc-rK-trans-key 'yc-rK-trans) +(define-key yc-mode-map "\M-j" 'yc-rHkA-trans) +(define-key yc-mode-map (cond ((vectorp yc-rK-trans-key) + (vconcat [?\C-c] yc-rK-trans-key)) + ((stringp yc-rK-trans-key) + (concat "\C-c" yc-rK-trans-key))) + 'yc-wclist-mode) + +;; $B%m!<%^;z4A;zJQ49;~!"BP>]$H$9$k%m!<%^;z$r@_Dj$9$k$?$a$NJQ?t(B +(defvar yc-skip-chars nil) + +;; yc-mode $B$N>uBVJQ994X?t(B +;; $B@5$N0z?t$N>l9g!">o$K(B yc-mode $B$r3+;O$9$k(B +;; {$BIi(B,0}$B$N0z?t$N>l9g!">o$K(B yc-mode $B$r=*N;$9$k(B +;; $B0z?tL5$7$N>l9g!"(Byc-mode $B$r%H%0%k$9$k(B + +;; buffer $BKh$K(B yc-mode $B$rJQ99$9$k(B +(defun yc-mode (&optional arg) + "YC mode $B$O(B $B%m!<%^;z$+$iD>@\4A;zJQ49$9$k$?$a$N(B minor mode $B$G$9!#(B +$B0z?t$K@5?t$r;XDj$7$?>l9g$O!"(BYC mode $B$rM-8z$K$7$^$9!#(B + +YC $B%b!<%I$,M-8z$K$J$C$F$$$k>l9g(B \\\\[yc-rK-trans] $B$G(B +point $B$+$i9TF,J}8~$KF13Q%+%?%+%J$H(Byc-stop-chars $B$K;XDj$7$?J8;z$r=|$/H>3QJ8;z(B +$B!&4A;z$r=|$/A43QJ8;z(B" + (interactive "P") + (yc-mode-internal arg nil)) + +;; $BA4%P%C%U%!$G(B yc-mode $B$rJQ99$9$k(B +(defun global-yc-mode (&optional arg) + "YC mode $B$O(B $B%m!<%^;z$+$iD>@\4A;zJQ49$9$k$?$a$N(B minor mode $B$G$9!#(B +$B0z?t$K@5?t$r;XDj$7$?>l9g$O!"(BYC mode $B$rM-8z$K$7$^$9!#(B + +YC $B%b!<%I$,M-8z$K$J$C$F$$$k>l9g(B \\\\[yc-rK-trans] $B$G(B +point $B$+$i9TF,J}8~$KF13Q%+%?%+%J$H(Byc-stop-chars $B$K;XDj$7$?J8;z$r=|$/H>3QJ8;z(B +$B!&4A;z$r=|$/A43QJ8;z(B" + (interactive "P") + (yc-mode-internal arg t)) + +;; yc-mode $B$rJQ99$9$k6&DL4X?t(B +(defun yc-mode-internal (arg global) + (or (local-variable-p 'yc-mode (current-buffer)) + (make-local-variable 'yc-mode)) + (if global + (progn + (setq-default yc-mode (if (null arg) (not yc-mode) + (> (prefix-numeric-value arg) 0))) + (yc-kill-yc-mode)) + (setq yc-mode (if (null arg) (not yc-mode) + (> (prefix-numeric-value arg) 0)))) + (when (and yc-mode (not (yc-server-check))) + (setq yc-mode nil) + (beep) + (error (format "YC: can't connect cannaserver: %s" yc-server-host))) + (force-mode-line-update t) + (when yc-mode + (when (null yc-skip-chars) (yc-set-skip-chars yc-stop-chars)) + (yc-open) + (run-hooks 'yc-mode-hook))) + +;; buffer local $B$J(B yc-mode $B$r:o=|$9$k4X?t(B +(defun yc-kill-yc-mode () + (let ((buf (buffer-list))) + (while buf + (set-buffer (car buf)) + (kill-local-variable 'yc-mode) + (setq buf (cdr buf))))) + +;; $B%m!<%^;z4A;zJQ49BP>]$H$J$k(B alphabet $BNs$r@_Dj$9$k(B +(defun yc-set-skip-chars (stop-chars) + (setq yc-skip-chars + (let ((i (1+ ?\ )) + (stop-char-list (mapcar (if (fboundp 'char-to-int) + 'char-to-int + '(lambda (c) c)) + (string-to-list stop-chars))) + (chars "")) + (while (< i ?\177) + (when (not (memq i stop-char-list)) + (cond ((or (eq i ?\\) (eq i ?-) (eq i ?^)) + (setq chars (concat chars "\\")))) + (setq chars (concat chars (char-to-string i)))) + (setq i (1+ i))) + chars))) + +;; $B%m!<%^;z4A;zJQ494X?t(B +(defun yc-rK-trans () + "$B%m!<%^;z4A;zJQ49$r$9$k!#(B + +$B0J2<$N=g=x$K=hM}$r?6$jJ,$1$k!#(B + +$B!&JQ49$r3NDj$7$?D>8e$N>l9g!"3NDj$7$?$P$+$j$NJ8;zNs$r:FJQ49$9$k!#(B +$B!&%+!<%=%k$+$i9TF,J}8~$K%m!<%^;zNs$,B3$/HO0O$G%m!<%^;z4A;zJQ49$r9T$&!#(B +$B!&%+!<%=%k$+$i9TF,J}8~$K!V$R$i$,$J!W$"$k$$$O!V%+%?%+%J!W(B + $B$^$?$O!VA43Q1Q?t5-9f!W$,B3$/HO0O$G4A;zJQ49$r9T$&!#(B +$B!&JQ49Cf$O= yc-repeat yc-select-count)) + (yc-select) + (yc-post-command-function))) + + ((or (eq last-command 'yc-kakutei) + (eq last-command 'yc-cancel)) ; reconversion after yc-cancel + ;; $B3NDjD>8e$K8F$P$l$?$i:FJQ49(B + (delete-region yc-fence-start yc-fence-end) + (insert yc-fence-yomi) + (set-marker yc-fence-end (point)) + (yc-henkan-region yc-fence-start yc-fence-end)) + + (t + ;; $B>e5-0J30$G8F$P$l$?$i?75,JQ49(B + (setq yc-repeat 0) + (cond + + ((eq (yc-char-charset (preceding-char)) 'ascii) + ;; $B%+!<%=%kD>A0$,(B alphabet $B$@$C$?$i(B + (let ((end (point)) + (gap (yc-skip-chars-backward))) + (goto-char end) + (when (/= gap 0) + (setq yc-fence-yomi (buffer-substring (+ end gap) end)) + (if (not (string= yc-fence-yomi "")) + (setq yc-henkan-mode t)) + (yc-henkan-region (+ end gap) end)))) + + ((yc-nkanji (preceding-char)) + ;; $B%+!<%=%kD>A0$,(B $BA43Q$G4A;z0J30(B $B$@$C$?$i(B + (let ((end (point)) + (start (let* ((pos (or (and (mark-marker) + (marker-position (mark-marker))) 1)) + (mark-check (>= pos (point)))) + (while (and (or mark-check (< pos (point))) + (yc-nkanji (preceding-char))) + (backward-char)) + (point)))) + (yc-henkan-region start end) )))))) + +;; $BA43Q$G4A;z0J30$NH=Dj4X?t(B +(defun yc-nkanji (ch) + (and (eq (yc-char-charset ch) 'japanese-jisx0208) + (not (string-match "[$B0!(B-$Bt$(B]" (char-to-string ch))))) + +;; $B%m!<%^;z4A;zJQ49;~!"JQ49BP>]$H$9$k%m!<%^;z$rFI$_Ht$P$94X?t(B +(defun yc-skip-chars-backward () + (let ((pos (or (and (markerp (mark-marker)) (marker-position (mark-marker))) + 1))) + (skip-chars-backward yc-skip-chars (and (< pos (point)) pos)))) + +;; $B%m!<%^;z(B-$BJ?2>L>(B-$B%+%?%+%JJQ49(B +(defun yc-rHkA-trans () + (interactive) + (when yc-henkan-mode (yc-cancel)) + (cond + (yc-edit-mode (yc-edit-katakana)) + ((eq last-command 'yc-rHkA-trans) + (delete-region yc-fence-start yc-fence-end) + (insert yc-fence-yomi) + (set-marker yc-fence-end (point)) + (yc-henkan-region yc-fence-start yc-fence-end) + (setq yc-henkan-list (yc-resize-pause (yc-get conv) yc-mark + (yc-strlen + (yc-conv-rH yc-fence-yomi))) + yc-mark-list (list 0) + yc-mark-max (list 0)) + (yc-hiragana) ; yc-hiragana $B$r8F$V$?$S$K;ze5-0J30$G8F$P$l$?$i?75,JQ49(B + (setq yc-repeat 0) + (cond + ((eq (yc-char-charset (preceding-char)) 'ascii) + ;; $B%+!<%=%kD>A0$,(B alphabet $B$@$C$?$i(B + (let ((end (point)) + (gap (yc-skip-chars-backward))) + (goto-char end) + (when (/= gap 0) + (setq yc-fence-yomi (buffer-substring (+ end gap) end)) + (if (not (string= yc-fence-yomi "")) + (setq yc-henkan-mode t)) + (yc-henkan-region (+ end gap) end) + (setq yc-henkan-list (yc-resize-pause (yc-get conv) yc-mark + (yc-strlen + (yc-conv-rH yc-fence-yomi))) + yc-mark-list (list 0) + yc-mark-max (list 0)) + (yc-hiragana) + (yc-kakutei-internal)))) + ((yc-nkanji (preceding-char)) + ;; $B%+!<%=%kD>A0$,(B $BA43Q$G4A;z0J30$@$C$?$i(B + (let ((end (point)) + (start (let* ((pos (or (and (mark-marker) + (marker-position (mark-marker))) 1)) + (mark-check (>= pos (point)))) + (while (and (or mark-check (< pos (point))) + (yc-nkanji (preceding-char))) + (backward-char)) + (point)))) + (yc-henkan-region start end) + (setq yc-henkan-list (yc-resize-pause (yc-get conv) yc-mark + (yc-strlen + (yc-conv-rH yc-fence-yomi))) + yc-mark-list (list 0) + yc-mark-max (list 0)) + (yc-hiragana) + (yc-kakutei-internal) )) )))) + +;; input method $BBP1~(B +(defun yc-activate (&rest arg) + (yc-input-mode 1)) +(defun yc-inactivate (&rest arg) + (yc-input-mode -1)) +(register-input-method + "japanese-yc" "Japanese" 'yc-activate + "$B$"(B" "Romaji -> Hiragana -> Kanji&Kana" + nil) +(set-language-info "Japanese" 'input-method "japanese-yc") +;(setq default-input-method "japanese-yc")) + +;(yc-setup) +;(when (and yc-connect-server-at-startup (yc-server-check)) +; (yc-init) +; (force-yc-input-mode) +; ) + +(defconst yc-version "5.0.0") +(provide 'yc) --- /dev/null +++ yc-el-5.0.0/icanna.c @@ -0,0 +1,104 @@ +/* icanna.c + * VERSION: 0.9.0 + * AUTHER: knak@ceres.dti.ne.jp + * DATE: 2003.9.29 + * LICENCE: GPL + */ + +/* + * communicate unix domain cannaserver + * stdin -> cannaserver -> stdout + */ +#include +#include +#include +#include +#include +#include +#include + +#define BFSZ (4096) /* buffer size */ +#define CANNA_PATH ("/tmp/.iroha_unix/IROHA") /* unix domain socket path */ + +/* + * connect unix domain cannaserver + */ +int +connect_canna_server() +{ + int canna; + struct sockaddr_un sun; + + /* create unix domain socket */ + if ((canna = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { + perror("socket"); + exit(1); + } + /* connect cannaserver */ + sun.sun_family = AF_UNIX; + strcpy(sun.sun_path, CANNA_PATH); + if (connect(canna, (struct sockaddr*)&sun, SUN_LEN(&sun)) < 0) { + perror("connect"); + exit(1); + } + return canna; +} + +/* + * data transport + * stdin -> canna + * canna -> stdout + */ +int +transport(in, out) +int in, out; +{ + char* buf = NULL; /* data buffer */ + int len = BFSZ; /* data length */ + int count = -1; /* read count */ + + /* read input */ + while (len == BFSZ) { + count++; + /* allocate data buffer */ + if ((buf = (char*)realloc(buf, (count + 1) * BFSZ)) == NULL) { + perror("realloc"); + exit(1); + } + /* read input to data buffer */ + if ((len = read(in, buf + count * BFSZ, BFSZ)) < 0) { + perror("read"); + exit(1); + } + } + len += count * BFSZ; + /* write output */ + if (len > 0 && write(out, buf, len) < 0) { + perror("write"); + exit(1); + } + /* destroy data buffer */ + free(buf); + return len; +} + +/* + * communicate unix domain cannaserver + */ +int +main() +{ + int canna; + + canna = connect_canna_server(); /* connect unix domain cannaserver */ + + /* transport request & response, until stdin or cannaserver is eof */ + while (1) + /* transport request from stdin to cannaserver, + * transport response from cannaserver to stdout */ + if (transport(0, canna) == 0 || transport(canna, 1) == 0) + /* when stdin or cannaserver is eof, break loop */ + break; + close(canna); /* close unix domain cannaserver */ + return 0; +} --- /dev/null +++ yc-el-5.0.0/Makefile @@ -0,0 +1,86 @@ +# +# +# +###################################### +# Chose Eemacs Type +EMACS = emacs +#EMACS = xemacs + +####################################### +# Default settings +# +prefix = /usr/local +elispdir = $(prefix)/share/emacs/site-lisp +#elispdir = $(prefix)/lib/$(EMACS)/site-lisp +#elispdir = $(prefix)/lib/emacs +INSTALL_PATH = $(prefix)/bin +####################################### +# For Windows +# +#exesuffix = .exe # for Windows +####################################### +# For Debian GNU/Linux +# +# +#OS-TYPE=Linux +#DISTRO=Debian +#ifeq ($(OS-TYPE), Linux) +# ifeq ($(DISTRO), Debian) +prefix = $(DESTDIR) +elispdir = $(prefix)/usr/share/emacs/site-lisp/yc-el +INSTALL_PATH = $(prefix)/usr/lib/yc-el +# endif +#endif + + +elc = yc.elc +PROGRAM = icanna$(exesuffix) +OBJS = icanna.o +CFLAGS = -g +CC = gcc +INSTALL = install + +#ifeq ($(DISTRO), Debian) +all: $(PROGRAM) +#else +#.SUFFIXES: .el .elc +# +#.el.elc: +# $(EMACS) -batch -f batch-byte-compile $< +# +# +#all: $(PROGRAM) $(elc) +#endif + + +$(PROGRAM): $(OBJS) + $(CC) -o $(PROGRAM) $(OBJS) + +clean: +#ifeq ($(DISTRO), Debian) + @rm -f $(OBJS) $(PROGRAM) +#else +# @rm $(OBJS) $(PROGRAM) $(elc) +#endif + +install: install-bin install-el + +install-bin: $(PROGRAM) +#ifneq ($(DISTRO), Debian) +# $(INSTALL) -m 755 -s $(PROGRAM) $(INSTALL_PATH)/$(PROGRAM) +#endif + $(INSTALL) -m 755 $(prefix)/../../$(PROGRAM) $(INSTALL_PATH)/$(PROGRAM) + +install-el: $(ELCS) $(SRCS) +#ifneq ($(DISTRO), Debian) +# $(INSTALL) -m 644 $(elc) $(elispdir)/$(elc) +#endif + $(INSTALL) -m 644 $(elc:.elc=.el) $(elispdir)/$(elc:.elc=.el) + +uninstall: uninstall-bin uninstall-el + +uninstall-bin: + @rm $(INSTALL_PATH)/$(PROGRAM) + +uninstall-el: + @for i in $(elc:.elc=.el) $(elc); do rm $(elispdir)/$$i; done --- /dev/null +++ yc-el-5.0.0/KEY-BINDINGS @@ -0,0 +1,125 @@ + +$B5-9fA*Br%b!<%I(B(yc-wclist-mode-map) + +C-p $BA0$N9T(B +C-n $BC(B +$B%+!<%=%k%-!<>e(B $BA0$N9T(B +$B%+!<%=%k%-!<2<(B $BC(B +C-a $B8uJd@hF,(B +C-e $B8uJdKvHx(B +SPC $Be(B $B8uJdKvHx(B +$B%+!<%=%k%-!<2<(B $B8uJd@hF,(B +$B%+!<%=%k%-!<1&(B $Be5-0J30$N%-!<(B $BEPO?C(B&$B$=$N%-!<<+BNF~NO(B + +$B0lMw%b!<%I(B(yc-select-mode-map) + +C-m $B8uJdA*Br(B +C-g $BA*BrC(B +C-a $B8uJdI=<(9T$N@hF,(B +C-e $B8uJdI=<(9T$NKvHx(B +C-f $B.(B +C-o $BJ8@a3HBg(B +C-t $B8uJdA*Br(B&$BEPO?(B +DEL $B$R$i$,$JJQ49(B +BS $B$R$i$,$JJQ49(B +C-k $B%+%?%+%JJQ49(B +C-u $BA43Q%"%k%U%!%Y%C%HJQ49(B +C-l $BH>3Q%"%k%U%!%Y%C%HJQ49(B +$B%+!<%=%k%-!<>e(B $BA0$N8uJd9T(B +$B%+!<%=%k%-!<2<(B $Be5-0J30$N%-!<(B $B8uJdA*Br(B&$B$=$NJ8;z$NF~NO(B + +$B$R$i$,$JJT=8%b!<%I(B(yc-edit-mode-map) + +C-g $B$R$i$,$JF~NOC(B +C-a $BF~NO$7$?$R$i$,$J$N@hF,(B +C-e $BF~NO$7$?$R$i$,$J$NKvHx(B +C-b $BA0$NJ8;z(B +C-f $Be(B $BF~NO$7$?$R$i$,$J$NKvHx(B +$B%+!<%=%k%-!<2<(B $BF~NO$7$?$R$i$,$J$N@hF,(B +$B%+!<%=%k%-!<1&(B $Be5-0J30$N%-!<(B $B$R$i$,$J$NF~NO(B + +$B$R$i$,$JF~NO%b!<%I(B(yc-input-mode-map) + +C-c C-j $B5-9fA*Br%b!<%I(B +$B%3%s%H%m!<%k%-!<0J30$NJ8;z(B $B$=$NJ8;z$NF~NO(B&$B$R$i$,$JJT=8%b!<%I(B + +$BJQ49%b!<%I(B(yc-henkan-mode-map) + +C-m $BJQ493NDj(B +C-g $BJQ49C(B +C-n $B.(B +C-o $BJ8@a3HBg(B +C-t $BJQ493NDj(B&$B<-=qEPO?(B +DEL $B$R$i$,$JJQ49(B +BS $B$R$i$,$JJQ49(B +C-h $B$R$i$,$JJQ49(B +C-u $BA43Q%"%k%U%!%Y%C%HJQ49(B +C-l $BH>3Q%"%k%U%!%Y%C%HJQ49(B +C-k $B%+%?%+%JJQ49(B +$B%+!<%=%k%-!<>e(B $BA08uJd(B +$B%+!<%=%k%-!<2<(B $Be5-0J30$N%-!<(B $BJQ493NDj(B&$B$=$NJ8;z$NF~NO(B + +ANK-$B4A;zJQ49%b!<%I(B(yc-mode-map) + +C-j $B4A;zJQ49(B +M-j ANK-$B;z + + + +YC's Room + + + + + + + + +[Prev] +[Up] +[Next] + +

YC $B$NIt20(B

+

$B$^$:$O!"LH@U$+$i!#(B
+$BK\%W%m%0%i%`$N;HMQ$O<+@U$G9T$C$F2<$5$$!#(B +$B:n +

$B$D$.$K!"$*4j$$!#(B
+$B<+J,$O%m!<%^;zF~NO$+$D(BANK-$B4A;zJQ49%b!<%I$G(BYC$B$r;H$$$^$9!#$h$C$F!"(BYC$B$r$7$7$?>l9g!"$^$:$O!"(BANK-$B4A;zJQ49%b!<%I$G$N%F%9%H$,Cf?4$H$J$j$^$9!#$+$J4A;zJQ49%b!<%I$d$+$JF~NO$N?M$K$O?=$7LuM-$j$^$;$s$,!"$D$^$j!"$+$J4A;zJQ49%b!<%I$d$+$JF~NO$N%F%9%H$O8e2s$7!"2< + +

+

4.0.0 $B$+$i(B unix domain socket $B$N(B cannaserver $B$H$bDL?.$G$-$k$h$&$K$7$^$7$?!#(B

+

3.4.0 $B$+$i$+$JF~NOBP1~$7$^$7$?!#(B

+

$BCm0U(B0: 2.1.0 $B0J9_$O(B YC $B$r%m!<%I$7$?$i(B (global-yc-mode 1) $B$r$7$J$$$HA4%P%C%U%!$G(B ANK-$B4A;zJQ49$,M-8z$K$J$i$J$$!#%U%'%s%9%b!<%I$O;HMQ2DG=!#(B
+$BCm0U(B1: 4.0.0 $B$+$iG[I[7ABV$,(B .gz $B$+$i(B .tar.gz $B$K$J$C$F$k$N$G5$$r$D$1$F$M(B
+$BCm0U(B2: 5.0.0 $B$+$iG[I[7ABV$,(B .tar.gz $B$+$i(B .gz $B$KLa$C$?$N$G5$$r$D$1$F$M(B
+

+ +
+

YC $B$H$O(B?

+

YC $B$O(B Yet another Canna client $B$rD6>JN,$7$?$b$N$G$9!#$@$C$FF,J8;z$r$H$k$H(B +YACC $B$K$J$C$A$c$&$s$@$b$N(B(;_;)
+YC $B$O(B cannaserver $B$HDL?.$7$F(B ANK->$B4A;zJQ49(B $B$^$?$O(B $B$+$J(B->$B4A;zJQ49$r(B +emacs $B>e$G +inet domain socket $B$r%5%]!<%H$7$F$$$k(B cannaserver $B$H$O(B elisp $B$@$1$GD>@\DL?.$9$k$3$H$,=PMh$^$9!#(Bunix domain socket $B$r%5%]!<%H$9$k(B cannaserver $B$H$O(B 4.0.0 $B$K4^$^$l$k(B icanna $B%3%^%s%I$r7PM3$7$FDL?.$9$k$3$H$,=PMh$^$9!#(B +$B4pK\E*$K(B emacs lisp $B$H30It%3%^%s%I$G +

EGG V4 $B$,$"$k$N$K$3$s$J$3$H$d$C$F$k$7!"!"!"(B
+$BDIJd(B:EGG V4+Tamago4$B$G(BCANNA$B$r;H$&(B$B$N(Bpatch+boiling-egg $B$G(Bcannaserver$BD>DL$N(BANK-$B4A;zJQ49$,2DG=$K$J$j$^$9!#(B

+ +

$BNI$$E@(B

+
    +
  • canna $BBP1~$7$F$$$J$$(B emacs $B$G$b(B canna $B$,;H$($k(B +
  • $B$+$JF~NO$,$G$-$k(B +
  • ANK $B$+$iD>@\4A;zJQ49$G$-$k(B +
  • fence-mode $B$b;H$($k(B +
  • $B;z$B3NDjD>8e$J$i:FJQ49$G$-$k(B +
  • minor mode $B$H$7$FF0:n$9$k(B +
+ +

$B0-$$E@(B

+
    +
  • canna $B$NA4$F$N4D6-$GF1$8%$%s%?%U%'!<%9$,;H$($k$H8@$&%]%j%7!<$KH?$7$F$$$k(B +
  • .canna $B$N2r@O$,IT==J,!#FC$K%-!<%P%$%s%I4X78$,A4LG!)(B +
  • emacs-20 $B0J>e$r%Y!<%9$K$9$k(B emacsen $B$G$J$$$H;H$($J$$(B +
  • canna $B$N(B protocol version 3 $B$K$7$+BP1~$7$F$$$J$$(B +
+ +
+

$BF0:n3NG':Q4D6-(B

+

$B0J2<$K!"(BYC $B$NF0:n$,3NG'$5$l$F$$$k4D6->r7o$r<($7$^$9!#(B +

    +
  • emacs-22.1+Canna3.7 +
  • Meadow(1.14)+Win98SE(cygwin 1.3.22-1)+Canna3.5b2($B$&$i$N$U$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +
  • Meadow(1.14)+Win2kPro(cygwin 1.3.22-1)+Canna3.5b2($B$&$i$N$U$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +
  • Emacs-21.3.50+Mac OS X 10.28+Canna3.6($B$/$^$j$s$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +
  • xemacs-21.4.3+CYGWIN_NT-5.1-1.3.22-1+Canna35b2($BKYED$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +
  • emacs-21.2.1+CYGWIN_NT-5.1-1.3.22-1+Canna32b2($BKYED$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +
  • emacs-21.3+Canna3.6p4 +
  • emacs-21.3+Canna3.6 +
  • emacs-21.2+Canna3.6 +
  • emacs-21.3.50+Mac OS X 10.2.1+Canna3.5b2($B@nC<$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +
  • emacs-21.2+Canna3.5b2 +
  • emacs-21.1+wxg-1.0b-1 +
  • emacs-21.1+CYGWIN-NT-5.0-1.3.2+Canna3.5b2 +
  • emacs-21.0.105+CYGWIN_NT-5.0-1.3.2+Canna3.5b2 +
  • emacs-21.0.103+Canna3.5b2 +
  • emacs-21.0.98+Canna3.5b2 +
  • emacs-21.0.93+Canna3.5b2 +
  • emacs-21.0.90+Canna3.5b2 +
  • emacs-20.7+Canna3.5b2 +
  • emacs-20.6+Canna3.5b2 +
  • emacs-20.5+Canna3.5b2 +
  • emacs-20.4+Canna3.5b2 +
  • emacs-20.3+Canna3.5b2 +
  • emacs-20.2+Canna3.2 +
  • emacs-20.2+Canna3.5b2 +
  • xemacs-21.2.36+esecanna1.0.1 ($B$+$:$R$3!wEE;R(B{$B<-=q(B,$B=qBN(B}$B%*!<%W%s%i%\$J$I(B $B$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +
  • xemacs-21.1.12+Canna3.5b2 +
  • xemacs-21.1.8+Canna3.5b2 +
  • xemacs-20.4+Canna3.5b2 +
  • Meadow-1.10+Win98+Canna3.x ($B$/$j$*$+$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +
+

$B4pK\E*$K!"(Bemacs $B$N(B version $B$O(B 20 $B0J>e$+$i$NBP1~$H$J$j$^$9!#0lJ}!"(BCanna $B$N(B version $B$O(B 3.2 $B$+$i$NBP1~$H$J$j$^$9!#(B +

$B3+H/$O(B GNU emacs $B$G$d$C$F$k$N$G(B xemacs $B$G$O$^$H$b$KF0$+$J$$$+$bCN$l$J$$!#(B + +


+

YC $B5/F0=`Hw(B

+
    +
  1. yc $B$r%$%s%9%H!<%k$9$k(B +
    % tar zxvf yc-4.0.0.tar.gz
    +% cd yc-4.0.0
    +Makefile $B$rE,59JQ99$9$k(B +
    % make
    +% su
    +# make install
    +
    +
  2. emacs $B$K(B YC $B$,(B load $B$5$l$k$h$&$K$9$k(B
    +$B6qBNE*$K$O(B $HOME/.emacs $B$K!"0J2<$N9T$rDI2C$9$k!#(B
    +
    (load "yc")
    +(global-yc-mode 1) ; yc.el-2.1.0 $B$+$i$O$3$l$rF~$l$J$$$HA4%P%C%U%!$G$$$-$J$j(BANK-$B4A;zJQ49$,;H$($J$$!#(B
    +                   ; 2.1.0$BL$K~$N%P!<%8%g%s$G$O%(%i!<$9$k$N$G5$$rIU$1$k$3$H!#(B
    +
    +
+ +
+

YC $B$N;H$$J}(B

+

YC $B$K$O0J2<$NFs$D$N;H$$J}$,$"$j$^$9!#(B +

    +
  • $B$+$J4A;zJQ49%b!<%I(B(yc-input-mode: C-\ $B$G@ZBX$((B) +
  • ANK$B4A;zJQ49%b!<%I(B(yc-mode: M-x yc-mode $B$"$k$$$O(B M-x global-yc-mode $B$G@ZBX$((B) +
+

+

$B$+$J4A;zJQ49%b!<%I(B

+

$B$+$J4A;zJQ49%b!<%I$O(B C-\ $B$G@ZBX$($^$9!#(B +$B$+$J4A;zJQ49%b!<%I$,M-8z$J;~$KJ8;z$rF~NO$9$k$HF~NO$7$?J8;z$r%m!<%^;z$H$7$FH=CG$7BP1~$9$k$R$i$,$J$KC` +$BC18lEPO?$9$k$H$-$K$OJQ49Cf$K(B C-t $B$rF~NO$9$k$+!"$"$k$$$OJQ49$7$F$$$J$$>uBV$G(B region $B$r@_Dj$7$F$*$$$F(B M-x yc-touroku-region $B$GC18lEPO?$7$^$9!#(B

+

ANK$B4A;zJQ49%b!<%I(B

+

ANK$B4A;zJQ49%b!<%I$O(B M-x yc-mode / M-x global-yc-mode $B$G@ZBX$($^$9!#(B +ANK$B4A;zJQ49%b!<%I$O(B buffer $BCf$N%m!<%^;z$r%T%C%/%"%C%W$7$F4A;zJQ49$9$k;v$,$G$-$k%b!<%I$@$H;W$C$FD:$1$l$P$h$m$7$$$+$H;W$$$^$9!#(B
+$B!t(B cannaserver $B$HD>@\DL?.$9$k(B boiled-egg$B!#J,$+$k?M$O$3$l$GJ,$+$k!#(B
+buffer $B$K%m!<%^;z$rF~NO$7$F$+$i(B C-j $B$G4A;zJQ49$7$^$9!#4A;zJQ49Cf$O$+$J4A;zJQ49%b!<%I$HF1$8A`:n$K$J$j$^$9!#(B

+
+

ANK$B4A;zJQ49%b!<%I$N4r$7$5(B

+

ANK$B4A;zJQ49%b!<%I$O(B buffer $BCf$N%m!<%^;z$r%T%C%/%"%C%W$7$FJQ49$9$k%b!<%I$J$N$G!"$+$J4A;zJQ49%b!<%I$K$"$C$?$h$&$J(B ANK $B$NF~NO$H$+$J4A;z$NF~NO$r@ZBX$($k$?$a$N(B C-\ $B$NO"BG$,ITMW$K$J$j$^$9!#(B
+C-\ $B$K$h$kF~NO%b!<%I$N@ZBX$(A`:n$,ITMW$K$J$k$N$G!"(Balphabet$B$H$+$J4A;z$N:.:_$7$?J8>O$NF~NO$,Hs>o$K%9%`!<%:$K9T$&$3$H$,$G$-$^$9!#(B

+

ANK$B4A;zJQ49%b!<%I$K$O:FJQ495!G=$,$"$j!"JQ49J8;zNs$r3NDj$7$?D>8e$K8B$j!"(BC-j $B$G:FJQ49$G$-$^$9(B($B$+$J4A;zJQ49%b!<%I$G$b(BANK$B4A;zJQ49%b!<%I$,M-8z$K$J$C$F$$$l$P:FJQ49$G$-$^$9(B)$B!#(B

+

$B$^$?:FJQ49$H$OJL$K$R$i$,$JJ8;zNs(B/$B%+%?%+%JJ8;zNs$r4A;zJQ49$9$k$3$H$b$G$-$^$9!#(B

+
+

$B%m!<%^;z$r(B buffer $B$KF~NO$7$F!"(BC-j $B$rF~NO$9$k$H4A;zJQ49$7$^$9!#%m!<%^;z$r%T%C%/%"%C%W$9$k%k!<%k$O0J2<$H$J$j$^$9!#(B +

    +
  1. $B%+!<%=%k$+$i%P%C%U%!$N@hF,J}8~$X8!:w$9$k(B(region $B$r1[$($J$$(B) +
  2. $B6uGrJ8;z(B(SPC / TAB / RET)$B$,=P$F$/$k$^$G$+(B +
  3. yc-stop-chars $B$K;XDj$7$?J8;z$,=P$FMh$k$^$G(B +
  4. $BH>3Q(Balphabet $B$,B3$/4V$+(B +
  5. $B4A;z$r=|$/A43QJ8;z$,B3$/4V(B +
+$B2?$+HK;($G$9$,!"!X6uGrJ8;z$r$^$?$,$J$$F1I}$NJ8;z$,B3$/4V!Y$H3P$($l$PNI$$$G$7$g$&!#(B
+$B!t(B yc-stop-chars $B$K$OJ8;zNsA`:n;~$K6uGr07$$$9$kJ8;z$,;XDj$5$l$F$$$k$H;W$($PNI$$$G$9!#(B

+

$BO$rF~NO$9$k$H$-$O!"(Balphabet $B$H$+$J4A;z$K$7$h$&$H;W$C$F$$$kJ8;zNs$N4V$K(B SPC $B$rF~NO$9$k$h$&$K$9$k$H%9%`!<%:$KJQ49$G$-$^$9(B(alphabet $B$H$+$J4A;z$N4V$K$$$A$$$A(B SPC $B$,F~$k$N$,7y$J?M$O(B SPC $B$NJQ$o$j$K(B C-SPC $B$G$b9=$$$^$;$s(B)$B!#(B

+ +
+

$B%-!<%P%$%s%I(B

+ + + + + + + + + + + + + + + + + + + + + + + +
Keybind
KeyGlobalFenceHenkanSelect
C-j$B4A;zJQ49(B$B4A;zJQ49(B$B$B
M-j$B;z


C-\Fence OnFence Off$BF~NO3NDj!u(BFence Off$BJQ493NDj!u(BFence Off
C-m
$B3NDj(B$B3NDj(B$BA*Br(B
C-g
$BF~NOC(B$BJQ49C(B$BA*BrC(B
SPC
$B4A;zJQ49(B$B$B
C-o

$B?-D9(B$B?-D9(B
C-i

$BC;=L(B$BC;=L(B
C-t

$BEPO?(B$BEPO?(B
C-n
$B;z$B$B
C-p
$B;z$BA08uJd(B$BA09T8uJd(B
C-h
BS$B;z$B;z
C-l

$B;z$B;z
C-u

$B;z$B;z
C-k
fence$B=*C<$^$G:o=|(B$B;z$B;z
C-f
$B#1J8;z?J$`(B$B$B
C-b
$B#1J8;zLa$k(B$BA08uJd(B$BA0J8@a(B
C-e
fence$B=*C<$X(B$B:G=*J8@a(B$B9TKv8uJd(B
C-a
fence$B@hF,$X(B$B@hF,J8@a(B$B9TF,J8@a(B
C-c C-j$B5-9fF~NO(B


+ +
+ +

YC $B$N@_Dj(B

+
+ +
yc-canna-lib-path +
$B$+$s$J$N=i4|@_Dj%Q%9(B(default.canna$B$,3JG<$5$l$F$$$k(B)$B$r@_Dj$9$k!#(B +$B4D6-JQ?t(B CANNALIBDIR $B;2>H(B +
(setq yc-canna-lib-path "/usr/local/canna/lib/")
+ +
yc-canna-dic-path +
$B$+$s$J$N<-=q%Q%9(B(canna.cbp$B$d(Bcanna.t$B$,3JG<$5$l$F$$$k(B)$B$r@_Dj$9$k(B +
(setq yc-canna-dic-path "/usr/local/canna/lib/dic")
+ +
yc-select-count +
$B0lMw%b!<%I$K$J$k7+$jJV$7?t(B-1$B$r;XDj$9$k!#%G%U%)%k%H$O#32s!#(B +
(setq yc-select-count 2)
+ +
yc-rK-trans-key +
$BJQ49%-!<$r;XDj$9$k!#%G%U%)%k%H$O(B \C-j +
(setq yc-rK-trans-key "\C-j")
+ +
yc-stop-chars +
$BJQ49J8;zNs$r(setq yc-stop-chars "(){}<>") + +
yc-server-host +
$B$+$s$J%5!<%P%[%9%HL>$r;XDj$9$k!#%G%U%)%k%H$O(B nil +
(setq yc-server-host nil)
+$B4D6-JQ?t(B CANNAHOST $B;2>H(B + +
yc-use-color +
$BJQ49Cf$K?'$r$D$1$k!#%G%U%)%k%H$O(B nil$B!#(B +
(setq yc-use-color t)
+ +
yc-use-fence +
$BJQ49Cf$K(B||$B$r$D$1$k!#%G%U%)%k%H$O(B t$B!#(B +
(setq yc-use-fence t)
+ +
yc-enable-hankaku +
$BH>3Q$+$J$r;z(setq yc-enable-hankaku t) + +
yc-icanna-path +
cannaserver $B$H(B UNIX domain socket$B7PM3$GDL?.$9$k$?$a$NJd=u%W%m%0%i%`(B(icanna)$B$N%Q%9$r@_Dj$9$k!#(B +
(setq yc-icanna-path "/usr/local/bin/icanna")
+ +
yc-connect-server-at-startup +
yc load $B;~$K(B cannaserver $B$H@\B3$9$k$+@_Dj$9$k!#%G%U%)%k%H$O(B t$B!#(B +
(setq yc-connect-server-at-startup t)
+
+ +

.emacs $B$NNc(B

+

yc.el-2.1.0 $B0JA0(B: +

+(load "yc")
+(global-set-key "\M-\ " 'yc-mode)
+
+

yc.el-2.1.0 $B0J9_(B: +

+(load "yc") ; $B$3$l$G%U%'%s%9%b!<%I$O;HMQ2DG=(B
+(global-yc-mode) ; $BA4%P%C%U%!$G(B ANK-$B4A;zJQ49$rM-8z$K$9$k(B
+(setq yc-use-color t)
+(setq yc-use-fence (not (eq window-system 'x)))
+(global-set-key "\M-\ " 'yc-mode)
+
+
+ +

$B4D6-JQ?t(B

+
+
CANNAHOST +
cannaserver $B$NF0$$$F$$$k%[%9%H$r;XDj$9$k(B +
CANNALIBDIR +
default.canna $B$N$"$k%G%#%l%/%H%j$r;XDj$9$k(B +
+
+ +

YC$B$N(BTIPS

+

$B$H8@$$$D$D!"$[$H$s$I(BANK$B4A;zJQ49%b!<%I$N(BTIPS$B!#(B +

+
$B2?$O$H$b$"$l(B C-j +
$B4A;zJQ49$r$7$?$+$C$?$i(B C-j $B!#$3$l$@$1$O3P$($h$&!#(B +$B8e$O!"$*$J$8$_$N(B emacs $B$N%+!<%=%k0\F0%3%^%s%IBN7O$G(B +$B2?$H$+$J$k(B +
$B%$%s%/%j%a%s%?%k%5!<%ACf$G$b(B C-j +
$B%$%s%/%j%a%s%?%k%5!<%ACf$KF|K\8l$,F~$l$?$/$J$C$?$i$I$&$9$k$+!#(B +$B$d$C$Q$j(B C-j $B$GJQ49$G$-$k(B +
C-j $B$rO"BG$7$?$i0lMw%b!<%I$K$J$C$FM_$7$$!)(B +
C-j $B$rO"BG$7$F0lMw%b!<%I$K$J$C$FM_$7$$?M$H$J$C$FM_$7$/$J$$?M$,(B +$B$$$k$H;W$&!#$I$A$i$+$H8@$&$H<+J,$O!"8e(define-key yc-fence-mode-map "\C-j" 'yc-modeless-next) +$B$r(B (load "yc") $B$N8e$KF~$l$F$/$l$l$P2r7h$9$k$O$:$@(B +
C-j $B$r0l;~L58z$K$9$kJ}K!(B +
C-j (newline-and-indent) $B$r;H$C$?$j!"JQ49%-!<$H$7$F;H$$$?$$?M$O(B +M-x yc-mode $B$G(B ANK$B4A;zJQ49%b!<%I$r%H%0%k$9$l$PNI$$(B +
C-j $B$r0c$&%-!<$K$9$kJ}K!(B +
C-j (newline-and-indent) $B$,DY$l$k$N$,7y$J?M$O(B YC $B$r%m!<%I$9$kA0$K(B +
(setq yc-rK-trans-key [?\C-\;])
+$B$H$d$l$P(B C-; $B$K(B C-j $B$N5!G=$,3dIU$/(B(Emacs on X $B$J?M8~$1$@$J$!(B)
+106 $B%-!<%\!<%I$r;H$C$F$$$k?M$OJQ49%-!<(B(SPC$B$N$H$J$j$K$"$k%-!<(B)$B$K3d$jIU$1$k$H$$$$$s$8$c$J$$$+$J!)$G$b@bL@$9$k$N$,LLE]$J$N$G@bL@$7$J$$!#%R%s%H$O(B xmodmap ($B$H(B xev) +
C-\ $B$G(B fence-mode $B$K$J$k$h$&$K$7$?(B +
$B$$$o$f$k(B FEP $B$N%b!<%I!#(BC-o $B$,NI$$?M$O(B +
(global-set-key "\C-o" 'toggle-input-method)
+$B$r$9$k;v!#(B +
C-c C-j $B$GC-c C-j $B$G$B$+$J4A;zJQ49%b!<%I$GA43Q%9%Z!<%9(B +
$B$+$J4A;zJQ49%b!<%I$G(B @@ $B$GA43Q%9%Z!<%9F~$k$s$@$1$I$M$'(B(^^;
+$B$+$J4A;zJQ49%b!<%I$,M-8z$K$J$C$F$$$k>uBV$G$+$DJQ49J8;zNs$,L$F~NO>uBV$G(B SPC $B$r2!$7$?$iA43Q%9%Z!<%9$,F~$k$h$&$K$9$kJ}K!!#(B~/.emacs $B$K0J2<$rDI2C$9$k!#(BYC $B$r%m!<%I$7$?D>8e$,NI$$$+$J(B
+
+(defun yc-zenkaku-space ()
+  (interactive)
+  (insert (char-to-string 53409)))
+(define-key yc-input-mode-map (char-to-string 32) 'yc-zenkaku-space)
+
+
+

+ +
+

$B4{CN$N%P%0(B

+
    +
  • 00/11/21: emacs-21 $B$N(Bviper$B$N%5!<%A$G;H$($J$$(B +
+
+

$B99?7MzNr(B

+
+
08/02/13: 5.0.0: MD5=46e30679981c4daeefc8bae688728820
$BB-3]$1#4G/$V$j$N99?7!#CN$i$L4V$K(Bemacs$B$,(BUNIX$B%I%a%$%s%=%1%C%H$r;H$($k$h$&$K$J$C$?$N$GBP1~$7$F$_$k!#%3!<%ICf$K$O@N$N(Bicanna$B$N8F=P%m%8%C%/$b;D$C$F$$$k$,(B make-network-process $B$r;}$C$?(B emacs-22 $B0J>e$N(B emacsen $B$J$i!"$=$A$i$r;H$&$N$G04/07/14: 4.0.13: MD5=5cc5f04346b806d4157b4b66d7eba69f
yc load $B;~$K(B input-method $B$,(B japanese-yc $B$K$J$i$J$$LdBj$NBP=h!#(Bemacs $B5/F0;~(B $B$K(B yc $B$r(B load $B$7$F(B emacs $B$N(B splash $B$,2u$l$k?M$O(B yc-connect-server-at-startup $B$K(B nil $B$r;XDj$9$k$3$H(B ($BB@ED(B@NEC $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B)
+fence-mode $B$G;zL>$K;zL>$KLa$C$F$7$^$&LdBj$NBP=h(B ($BCfHx$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +
04/07/12: 4.0.12: MD5=c93f36c96f8cad91b3a62a06d5cb62bd
$B0J2<$NLdBj$NBP=h(B +
    +
  • use-dictionary$B$K<+F0EPO?<-=q$r=q$/$H%(%i!<$K$J$k(B +
  • UTF-8$B4D6-$G@5$7$/(B.canna$B$rFI$_9~$a$J$$(B +
  • $B:G6a$N(Bemacs$B$G(Byc$B$r;H$&$H!"5/F0;~$N(Bsplash$B$J$I$,=P$J$$(B +
+($BAjED$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) +
04/06/21: 4.0.11: MD5=807849ddf73a99fe97ca0628e3d1b796
select-mode $B$N(B [up],[down] $B$N%-!<%P%$%s%I$r(B "\C-p","\C-n" $B$K9g$o$;$k(B($BM>Ln$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +
04/06/06: 4.0.10: MD5=db439964393b4324d975f0e4344cfbf4
$B$+$J4A;zJQ49%b!<%I$G(B "kanji" $B$rF~NO8e!"(BC-n $B$GJR2>L>$KJQ49$9$k$H(B "$B%+(Bn$B%8(B" $B$K$J$C$F$7$^$&$N$G!"(B"$B%+%s%8(B" $B$K$J$k$h$&$K=$@5$9$k!#(B($B?e8M$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) +
04/04/20: 4.0.9: MD5=2682bdeb44e8164d00e33156907612bf
NetBSD $B$G$b(B make $B$G$-$k$h$&$K$9$k(B(pocket pet $B$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) +

+
04/03/05: 4.0.8: MD5=067fa53a65409478a01ccff67d9b9fb8
$B4A;zJQ493NDjD>8e$KA`:n$7$?>l9g$K2hLL$,Jx$l$k>l9g$,$"$k;v$X$NBP=h$H$7$F4A;zJQ493NDj;~$KIA2h$r(Bflush$B$9$k(B($BEOJU$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +

+
04/02/20: 4.0.7: MD5= 9e6365f8126f005a53cd821d07a68b56
$B%U%'%s%9%b!<%I$G%m!<%^;zF~NO$9$k>l9g$K(B"$B$C(B"$B!"(B"$B$s(B"$B$N=hM}$,$*$+$7$/$J$C$F$$$?LdBj$NBP=h(B($BCfHx$5$s!"$+$:$R$3$5$s$4Js9p$"$j$,$H$&$4$6$$$^$9(B) +

+
04/02/05: 4.0.6: MD5= 29d43d9e3a31d56b789926e1f8f52452
$B2VG[Ns$r;HMQ$7$F$$$k>l9g$NByE@!"H>ByE@$N07$$$r=$@5(B +

+
04/01/04: 4.0.5: MD5= 038b72b629a867cac6568712de5ed965
group$BL>$r7h$a$k:]$K%A%'%C%/$9$k(Bsystem-type$B$NCM$H$7$F(Bwindows-nt$B$rDI2C(B ($B?9;3$5$s(B $B8f;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/12/25: 4.0.4: MD5= 6ff5aa270dd6f944bf9afb675eaa6b72
$B2VG[NsBP1~!#J#?tJ8;z$GH>ByE@$H$J$k(B key sequence $B$NLdBjBP1~(B +

+
03/12/03: 4.0.3: MD5= 9d357543a6e205ad0b835a28186e3ba8
group$BL>$Nr7oH=CG$r8m$C$F(Bgroup$BL>$Nl9g$K$br7oH=CG$r=$@5(B(win $B$N;~$OL5>r7o$G(B "user" $B$=$l0J30$N>l9g$O(B id -> perl -> "user" $B$N@.8y=g$KJQ99(B) +

+
03/12/03: 4.0.3: MD5= 9d357543a6e205ad0b835a28186e3ba8
group$BL>$Nl9g$K(B perl $B$,(B locale $B4X78$G(B warning $B$7$J$$$h$&$K(B $B4D6-JQ?t(B LC_ALL=C $B$G(B perl $B$r5/F0$9$k$h$&$K$9$k!#(B($BARED$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/11/26: 4.0.2: MD5= 252af30acac7b89a2cb26e70f6ab430b
~/.canna $B$G;XDj$9$k%U%!%$%k$N5-=R$H$7$F%U%!%$%kL>$N$_$H@dBP%Q%9$N;XDj$r2DG=$K$9$k!#(B($B$?$+$N$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/11/09: 4.0.1: MD5= e63c37a2692d77d132f9f8765f9a53a2
icanna $B$N%Q%9$r@_Dj$G$-$k$h$&$K$9$k!#(B(Debian $B%W%m%8%'%/%H$N>e@n$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) +

+
03/10/06: 4.0.0: MD5= 5a53ebb944c19685fe3c8612411b6307
unix domain socket $B$N$_%5%]!<%H$7$F$$$k(B cannaserver $B$H$bDL?.2DG=$H$9$k!#(B +

+
03/06/02: 3.5.8: MD5= 94c4484b2a1e13d3e3a2d57dbdc7c19f
$B$+$JF~NO$G;zl9g$KF~NO$7$?$R$i$,$J$N=g=x$,F~$lBX$o$C$F$7$^$&LdBj$NBP=h(B(yc-generate-romaji-list $B$,D9$5(B0$B$NJ8;zNs$r@8@.$7$F$$$?LdBj(B)$B!#(B($B$?$+$O$7$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/05/11: 3.5.7: MD5= 6c5f0e42698f0c54b08c76b8bbc28370
onX $B$GJ#?t%U%l!<%`$G(B minibuffer $B$X0lMwI=<($r9T$&$H$-$KI=<($5$l$k%U%l!<%`$HI=<($5$l$J$$%U%l!<%`$,$"$C$?LdBj$NBP=h(B +

+
03/05/10: 3.5.6: MD5= 970aa1a777000e9eaa4f0828b067fef4
emasc-20.7 -nw $B$G(B cursor $B$H$$$&(B face $B$,L5$$$?$a$K%(%i!<$9$kLdBj$NBP=h(B($B@P0f$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/05/07: 3.5.5: MD5= ad2c18a7264ebbeb203a13c345e1236b
background-mode $B$,(B dark $B$N;~$b(B fence-mode $B$N?'$,0E$+$C$?LdBj$NBP=h!#(Bdefface $B$7$F$_$k!#(B(Debian Project$B$N(B $B>e@n$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/05/07: 3.5.5: MD5= ad2c18a7264ebbeb203a13c345e1236b
xemacs-21.4 $B$K$*$$$F0lMw%b!<%I$K$9$k$H$-$K;H$C$F$$$?4X?t$r(B set-minibuffer-window $B$+$i(B active-minibuffer-window $B$KJQ99!#(B +

+
03/05/07: 3.5.5: MD5= ad2c18a7264ebbeb203a13c345e1236b
customize $B$K$A$g$C$HBP1~$7$F$_$?!#(B M-x customize-group yc $B$G@_Dj2DG=(B +

+
03/04/28: 3.5.4: MD5= 11b307365979db336f7dc9189d2b19ca
set-face-hilight-p $B$N(B typo $B$r(B set-face-highlight-p $B$K=$@5(B($BKYED$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/04/26: 3.5.3: MD5= 650e82bc5fc07aae3e27d389733f74b6
yc-fence-face $B$H(B yc-current-face $B$N@_DjItJ,$,%P%0$C$F$?$N$G=$@5(B($BKYED$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/04/26: 3.5.3: MD5= 650e82bc5fc07aae3e27d389733f74b6
xemacs-21.5.x $B$N(B frame-property $B$G?'$r$H$C$F$/$k$H?'$NL>A0$G$O$J$/!"(Bcolor-instance $B$rJV5Q$9$k$?$a!"(Bmake-face $B$,<:GT$7$F$$$?$H;W$o$l$kBP=h(B???($BKYED$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/03/28: 3.5.2: MD5= 7c8fd5d4c4d19f727bada3bd640daddf
yc-fence-face $B$H(B yc-current-face $B$N%+%9%?%^%$%:$r>e=q$-$9$k(Bbug$B$,$"$C$?$N$G=$@5(B($BBg86$5$s$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
03/03/24: 3.5.1: MD5= 52bb46bfddb083ecc98cdbf0e2f281b7
$BD92;5-9f!V!3Q%+%J$KJQ492DG=$H$9$k!#(Byc-fence-face $B$H(B yc-current-face $B$GJQ49Cf$N(B face $B$r@_Dj$G$-$k$h$&$K$9$k!#(B($BBg86$5$s$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
02/11/09: 3.5.0: MD5= 005349434105cc06dc6cb930bb7fa9c3
$BJQ?t(Byc-enable-hankaku$B$r(Bnil$B$K$9$k$3$H$K$h$jH>3Q$+$J$r;zl9g$OH>3Q$+$J$r;z
+
02/10/26: 3.4.13: MD5= 16ab6399b6dbf34d7e9bb73ec3d2f234
$B$+$JF~NO;~$K(B debug $BMQ$N%a%C%;!<%8$,(B minibuffer $B$K=PNO$7$F$$$?ItJ,$rDd;_(B($B>e@n!w(BDebian Project $B$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) +

+
02/10/12: 3.4.12: MD5= c13db509c2d8b870ee683cb57828df9b
emacs-21.2 $B$K$*$$$F(B minibuffer$BIU$-$N(B multi frame $B>uBV$GJQ49Cf$K(B minibuffer $B$X$NI=<($,$&$^$/9T$+$J$$(B frame $B$,$"$kLdBj$NBP=h!#(Bminibuffer $B$KI=<($r;O$a$k$H$-$K!"(B(set-minibuffer-window (minibuffer-window)) $B$9$k(B +

+
02/10/10: 3.4.11: MD5= eed5f3edf4e933ebc2c20f7bb49dad47
fence-mode $B$GF~NOCf$K(B defsymbol $B$7$F$$$kJ8;zNs$rF~NO$9$k$H%(%i!<$K$J$k2DG=@-$,$"$C$?LdBj$NBP=h(B($B>e@n(B@Debian Project $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
02/10/09: 3.4.10: MD5= 3595e0bd9a0aa05061c0d7b51dfaebb2
yc-subsequence $B$GMWAG?t$,B-$j$J$$$H$-$K<:GT$9$kLdBj$NBP=h!#(B($B>e@n!w(BDebian Project$B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
02/08/25: 3.4.9: MD5= 3123d9c1247bb073de68e7d2e762908b
fence-mode$B$G%m!<%^;zF~NO$9$k$H$-$KJ#?tJ8;z$H$J$k2;@a(B($BNc$($P!"(B"kyo")$B$rF~NO$9$k$H(Byc-generate-romaji-list $B$,@5$7$/=hM}$G$-$J$+$C$?LdBj$NBP=h(B +

+
02/08/23: 3.4.8: MD5= 87a829e78f54d225ab79c39cceda68dd
$B$+$JF~NO$GF~NO$7$?J8;zNs$N;z
+
02/06/27: 3.4.7: MD5= 36cf52c47a5b89d3896b92296ee406d2
fence-mode $B$GF~NO;~(B .canna $B$G(B defsymbol $B$7$F$$$k5-9f$,4A;zJQ49;~$N8uJd$H$7$F=P$FMh$J$$LdBj$NBP=h!#(B($BCfHx(B@yc.el user $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
02/06/27: 3.4.7: MD5= 36cf52c47a5b89d3896b92296ee406d2
emacs-21.2 on X $B$G(B minor-mode-menu $B$N%H%0%kA`:n$KBP1~$7$?!#(B +

+
02/04/18: 3.4.6: MD5= 9f1133b0bd94d2bf92037522e92bb1e1
$BB%2;4^$_$N;z
+
02/04/17: 3.4.5: MD5= babf8ef10250706e819f4d15769fb325
fence $B%b!<%I$G(B "n" $B$r(B "$B$s(B" $B$KCV49$;$:$KJQ49=hM}$KN.$l$F$$$?$N$r=$@5(B($BCfHx$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
02/04/13: 3.4.4: MD5= 14250dbe15e1bf50f301a49f9b4e519e
fence $B%b!<%I$GF~NOCf$K(B C-p $B$G(B alphabet $B"*(B $B#a#l#p#h#a#b#e#t(B $B"*(B $BH>3Q%+%?%+%J(B $B"*(B $B%+%?%+%J(B $B"*(B $B$R$i$,$J(B $B$N=g=x$G!"(BC-n $B$G5U=g$K;z +$B;z
+
02/04/10: 3.4.3: MD5= b1befa650a3a756aa9079b83fc04706d
$BH>3Q%+%JDI2C$KH<$$JQ49Cf$N(B C-h / C-k / C-l / C-u $B$,!"$=$l$>$l(B $B$R$i$,$J(B / $B%+%?%+%J(B / alphabet / $B#a#l#p#h#a#b#e#t(B $B$K3dIU$/$h$&$KD4@0!#$+$D!"5-9f$rJQ49$7$?$H$-$K;z3Q%+%J$r=P$9%-!<$O$I$&$7$h$&$+$J!)$H$j$"$($:$OL$3d$jIU$1!#(B
+fence-mode $B$+$i;z
+
02/04/09: 3.4.2: MD5= 125d0b7285903e05c7ecdf3a3449076e
$B;z3Q%+%J$b=P$k$h$&$K$J$C$?(B(Takayuki Nakao $B:n!#(B $BCfHx$5$s$"$j$,$H$&$4$6$$$^$9(B) +

+
02/02/24: 3.4.1: MD5= 3e17eb845277088464e625e152eed1d4
yc-use-color $B;~$G(B blink-cursor-mode $B$,M-8z!"$^$?$O!"(B cursor-type $B$rJQ99$7$F$$$k>l9g$K!"(Bfence mode $B$G(B blink $B$d(B cursor-type $BJQ99$rL58z$K$9$k$h$&$K$9$k!#(Bxemacs $B$OL$3NG'!#(B +

+
02/02/24: 3.4.0: MD5= 89bfb48a40ffbe8b505eeee223e795fa
canna $B$N=i4|2=%U%!%$%k$r(B default.canna -> ~/.canna $B$HFI$s$G$$$?$,!"(B~/.canna $B$,$"$C$?>l9g$K$O(B default.canna $B$rFI$^$J$$$h$&$K$7$?!#$3$NJQ99$G!V$+$JF~NO!W$N?M$O(B ~/.canna $B$K(B (setq romkana-table "kana.cbp") $B$H=q$/$@$1$G!V$+$JF~NO!W$G$-$k$h$&$K$J$k!#(B +

+
02/02/24: 3.4.0: MD5= 89bfb48a40ffbe8b505eeee223e795fa
$B$+$JF~NO$G(B yc-conv-rH-list $B$,(B null $BJ8;zNs$r@8@.$9$k>l9g$,$"$C$?$N$G!"$+$JF~NO$G(B fence $BF~NOCf$K(B yc-edit-backward-delete-char $B$r(B 2 $B2sF~NO$7$J$$$HJ8;z$,>C$;$J$+$C$?LdBj$NBP=h!#(B +

+
02/02/24: 3.4.0: MD5= 89bfb48a40ffbe8b505eeee223e795fa
$B$+$JF~NO$G;z
+
02/01/12: 3.3.5:
yc-canna-lib-path $B$N@_Dj$G(B /usr/pkg/share/canna $B$b8+$k$h$&$K$9$k(B +

+
01/12/29: 3.3.4: MD5= 707cbfd7ff4cfd327604e5c0e8a3b5dc
$B%m!<%^;z(B-$B2>L>JQ49%F!<%V%k$N=hM}$NJQ99$H!"ESCf$G(B cannaserver $B$,Mn$A$F$7$^$C$?;~$K$A$c$s$H=*N;$7$J$+$C$?LdBj$NBP=h(B($B$^$D$b$H(B $B$f$-$R$m(B $B$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) +

+
01/09/22: 3.3.3: MD5= 5cde3a46953a408bef605c95f68a6daa
MS-Windows $B>e$G$b(B yc-use-color $B$N@_Dj$rM-8z$H$9$k(B($B6aF#$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
01/09/14: 3.3.2: MD5= 2f66954de63373006bf39ff4923e61d7
Win2000+cygwin+emacs-21.0.105 $B$G(B canna $B$H$N@\B3$,<:GT$9$kLdBj$NBP=h!#(BWin2000+cygwin $B$N(B id -gn $B$,$R$i2>L>$N%0%k!<%WL>$rJV5Q$9$k$?$a!"(Bcanna$B%W%m%H%3%k$N(B notice-group-name $B$,<:GT$9$k!#(B +

+
01/09/14: 3.3.2: MD5= 2f66954de63373006bf39ff4923e61d7
yc.el $B%U%!%$%k$N4A;z%3!<%I$,(B EUC-JP $B$K$J$C$F$$$?$N$r(B iso-2022-jp $B$KJQ99!#(B($B$+$:$R$3!wEE;R<-=q!?=qBN%*!<%W%s%i%\$J$I(B $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$7$?(B) +

+
01/05/30: 3.3.1: MD5= e85f886d71d92548d278f4190ba2da78
yc-colorize $B$,(B 2 $B8D$"$C$?$N$G0l$D$K$9$k(B($B@P0f$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B)$B!#$R$i$,$JJT=8Cf$K(B fence $B30$KJ8;z>~$j$,$O$_=P$9$3$H$,$"$C$?LdBj$r=$@5!#(B +

+
01/05/28: 3.3.0: MD5= 0f246e40e806265f54890d16cbbdef8b
fence$B$N>~$j(B(||)$B$rI=<($9$k(B/$B$7$J$$$r@_Dj$G$-$k$h$&$K$9$k!#@_DjJ}K!$O(Byc-use-fence$B$r;2>H!#(Byc-use-color $B$G(B onX $B$G;H$C$F$$$??M$O!"(B(setq yc-use-fence (not (eq window-system 'x))) $B$7$F$/$l$l$P!"0JA0$HF1$8$K$J$k!"$H;W$&!#(B +

+
01/05/23: 3.2.8: MD5= 0474d0ea518256a105a02414736672d5
on X $B$G(B < Meta>+< j> $B$G(Bbug$B$kLdBj$NBP=h(B($B;3ED1I@.$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B)$B!#$=$NB>!"(BEmacs21.0.x on KTerm $B$G(B yc-usr-color $B$r(B t $B$K$7$?$H$-$K(B +fence $B$r$D$1$J$$$h$&$K$7$F$_$?!#8+$K$/$$?M$O(B +(setq yc-use-color (if (eq window-system 'x) t nil)) +$B$7$F2<$5$$!#(B +

+
01/04/23: 3.2.7: MD5= aa8a1a617e5b94eaf86ab5f11f37bcd5
ANK-$B;z
+
01/03/06: 3.2.6: MD5= 4894985f42f0f974c28de01fb7865692
.canna $B$NI>2A=hM}$N2~A1(B($BC+$5$s$"$j$,$H$&$4$6$$$^$9(B) +
    +
  • setq $B$NLa$jCM$rM-8z$K$9$k(B +
  • $BL5;k$9$k4X?t$N0z?t$NI>2A$r$7$J$$(B +
  • quote $B$7$?%j%9%H$NI>2A$r$7$J$$(B +
  • let $B$N=i4|2=ItJ,$GJQ?tL>$r4X?t07$$$7$J$$(B +
+

+
01/01/17: 3.2.5: MD5= af4d2cf447c9a1ffc3d887c61b2d04bb
$B<-=q%j%9%H$N=i4|CM$r8GDjCM$K$7$?(B +

+
01/01/16: 3.2.4: MD5 = 576849ef8cd4186d66e5afd374e7b731
default.canna $B$*$h$S(B .canna $B$,B8:_$7$J$$>l9g$K<-=q%j%9%H$N=i4|2=1L$l$rBP=h!#(B($B$/$j$*$+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/12/25: 3.2.3: MD5 = 8c7feee140f9ea31e76fc763ea0f97fc
3.2.2 $B$NBP1~J}K!$@$H(B emacs-20.x $B$N5/F02hLL$,2u$l$k$N$G!"(B(yc-server-check) $B$O(B cannaserver $B$H$N%3%M%/%7%g%s$rD%$j$C$Q$!$K$7$F!"B.96$G=i4|2=$9$k$h$&$K$9$k!#(B +

+
00/12/16: 3.2.2: MD5 = ed4a47e88f16a1b4717ecdd590843f08
(load "yc") $B8e!"(B(yc-mode 1) $B$"$k$$$O!"(B(global-yc-mode 1) $B$"$k$$$O!"(BC-\ $B$r$9$k$^$G$N4V$K!"(B/usr/local/canna/bin/cannastat $B$rF0$+$9$H(B cannaserver $B$,;`$s$G$7$^$&LdBj$NBP=h!#(B($B$J$Y$d$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/12/09: 3.2.1: MD5 = 7f47fc1f8f80dcbb3f5910d0e384ff02
X $B>e$GL5$/$F$b(B yc-usr-color $B$,M-8z$K$J$k$h$&$K$9$k!#(B +

+
00/12/08: 3.2.0: MD5 = b7ec9bf39e1a8cca30d85d2617719fbe
yc-use-color $B$,(B $BHs(Bnil $B$N;~$K(B xemacs $B$O(B extent $B$r(B emacs $B$O(B overlay $B$r;H$&$h$&$K$7$?!#(Bemacs $B$,(B overlay $B$r;H$&$N$O=>MhDL$j!#(B +

+
00/12/06: 3.1.11: MD5 = fb8a4bb4460b743d939df2873db11678
overlay $B$r3JG<$9$kJQ?t$r(B make-variable-buffer-local $B$9$k$D$b$j$,(B make-local-variable $B$7$F$$$?!#=$@5:Q!#(B($B$+$:$R$3!wEE;R(B{$B<-=q(B,$B=qBN(B}$B%*!<%W%s%i%\$J$I(B $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/12/06: 3.1.11: MD5 = fb8a4bb4460b743d939df2873db11678
xemacs $B$G(B C-x C-c $B$r$7$?$H$-$K!"2?8N$+(B condition-case $B$G(B signal $B$r=&$C$F$/$l$J$$$N$G!"(Bset-process-sentinel $B$r(B nil $B$K$9$k$h$&$K$7$?!#(B +

+
00/12/04: 3.1.10: MD5 = e8412a4ba9898146f88c84df8fd65ee1
emacs-21.0.90 $B$r(B on X $B$G(B $B;H$C$F$$$k$H(B minibuffer $B$KJ#?t9TI=<($G$-$k$h$&$K$J$C$?$_$?$$$J$s$@$1$I!"8uJd$rJ#?t9TI=<($7$?$H$-$K(B minibuffer $B$rH4$1$F$b!"(Bminibuffer $B$,85$NBg$-$5$KLa$i$J$$$N$G!"(Bmessage $B=PNO$r$7$F!"(Bminibuffer $B$NBg$-$5$rLa$9$h$&$K$7$?!#(B +

+
00/11/21: 3.1.9: MD5 = f4bee52bc8dd38f709e9fc1501df7c90
emacs-21.0.90$BBP1~!#(B(require 'viper)$B$r;_$a$k!#(B +

+
00/11/18: 3.1.8: MD5 = f601227594f2bcfcec280278475e18e9
xemacs $B$G%P%$%H%3%s%Q%$%k$7$?(Byc.elc $B$r;H$C$F%+%i!
+
00/11/18: 3.1.8: MD5 = f601227594f2bcfcec280278475e18e9
xemacs $B$G(B global-yc-mode $B$,8z$+$J$$$h$&$K$_$($kLdBj$NBP=h!#(B($B$+$:$R$3!wEE;R(B{$B<-=q(B,$B=qBN(B}$B%*!<%W%s%i%\$J$I(B $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/11/17: 3.1.7: MD5 = 839a8e355e00109e326f6ad0761437a9
xemacs $B$G$b?'$,IU$/$h$&$K$7$?!#$?$@$7!"(Bfsf-compat pkg $B$,(B install $B$5$l$F$$$k>l9g$K8B$k$1$I!#(B +

+
00/11/17: 3.1.7: MD5 = 839a8e355e00109e326f6ad0761437a9
.canna $B$rI>2A$9$k$H$-$K(B XEmacs $B$GJ8;z$rG'<1$G$-$J$+$C$?LdBj$rBP=h(B($B$+$:$R$3!wEE;R(B{$B<-=q(B,$B=qBN(B}$B%*!<%W%s%i%\$J$I(B $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/11/14: 3.1.6: MD5 = f88a02ebc9b568bab3e984a1511b93c5
$B%P%$%H%3%s%Q%$%k$7$?$H$-$K(B yc-put-symbol $B$G(B $B%(%i!<(B "Symbol's value as variable is void: res" $B$,H/@8$7!"(BC-g $B$rF~$l$J$$$HLa$l$J$/$J$kLdBj$NBP=h!#$D$$$G$K!"(Bres / args / str $B$NL>A0$r(B yc-res / yc-args / yc-str $B$KJQ99$7$?!#(B($B@P0f$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/11/09: 3.1.5: MD5 = 9901d581638dfb92e7b2849e985171ed
user$B<-=q$r(Bbushu$B<-=q$H8m@_Dj$7$F$$$?!#BP=h:Q!#$$$d$O$d!"2?$H$b$*CQ$:$+$7$$OC$GLLL\L5$$!#(B +

+
00/10/22: 3.1.4: MD5 = 8e5af52dbee77fd03ecf42a06a35878e
signal $B$H(B error-message-string $B$N;H$$J}$rJQ99!#$H8@$&$+!"(Bcannaserver $B$H$N%3%M%/%7%g%s$,@Z$l$?$H$-$N%(%i!<%a%C%;!<%8$N=PJ}$rJQ99$7$?!#(B +

+
00/10/20: 3.1.3: MD5 = 8041d87a955d4e04f1e02d6e964852f3
cannaserver $B$H$N@\B3$,@Z$l$?$H$-$NBP:v$r6/2=!#(Bcannaserver $B$H$N@\B3$,@Z$l$?$i%(%i!<$7$F$$$?$H$3$m$b%(%i!<$;$:$K=hM}$9$k$h$&$K$7$?!#$3$l$G(B cannaserver $B$,;`$s$G$$$F$b(B fence $B$G$R$i$,$J$rF~NO$9$k$3$H$O$G$-$k$7!"(Bcannaserver $B$H@\B3$7D>$;$l$P:F$S$+$J4A;z$KJQ49$b2DG=$H$J$k!#$?$@$7!"(Bemacs $B5/F0;~$K(B cannaserver $B$H$D$J$,$i$J$$$H(B yc-mode $B$*$h$S(B global-yc-mode $B$H(B M-x set-input-method japanese-yc $B$K<+F0E*$K$J$i$J$$$N$G!"Cm0U$9$k$3$H!#(B +

+
00/10/18: 3.1.2: MD5 = 47bcdfef99786696b39d2474be0f9dfa
$BJQ49Cf$N3FJ8@a$NFI$_$r%-%c%C%7%e$9$k!#B?>/$OB.$/$J$C$?$H;W$&!#(B +

+
00/10/17: 3.1.1: MD5 = 9b4c19e8a7c9b6017701dc4dfcba795b
$B;z
+
00/10/17: 3.1.0: MD5 = 23ffc43017283bb2439eda4acc5a8cf1
$B:FJQ49;~(B C-g $B8e$K(B C-j $B$G:FJQ49$9$k$h$&$K$7$F$_$?!#(B +

+
00/10/17: 3.0.1: MD5 = 41f7bcb17dfe0231680c2f6ae777e189
$B5-9f%b!<%I$G(B SPC $B$G
+
00/10/17: 3.0.1: MD5 = 41f7bcb17dfe0231680c2f6ae777e189
$BJ8@aD9$rJQ99$7$?$H$-$KFI$_$,JQ$o$i$J$+$C$?LdBj$rBP=h(B +

+
00/10/14: 3.0.0: MD5 = d972825628a54789608ff82a5e78e60a
$B +$B!t(B $B5-9f%b!<%I$H8@$&$h$j$O!"A43QJ8;zA4$F$r%3!<%I=g$KJB$Y$?$@$1$N%b!<%I$@$1$I(B +

+
00/10/12: 2.3.3: MD5 = ba3f0b9293236a37e0e8c17c7031b9a3
.canna $B$N(B \C-\ $B$r(B emacs $B$N(B \C-\\ $B$HG'<1$9$k$h$&$K=$@5$7$?(B +

+
00/10/11: 2.3.2: MD5 = 22fe04f30c9048074b97e7e484804410
defsymbol $B$GDj5A$7$?J8;z$O8uJdA*Br;~$K(B defsymbol $B$7$?8uJd$N$_I=<($9$k$h$&$K$7$?(B +

+
00/10/09: 2.3.1: MD5 = 23fdd3306c78bac73ff17cb3fb21523a
yc-server-check $B$G(B cannaserver $B$H$N@\B3$r@Z$i$J$$$h$&$K$7$?(B +

+
00/10/09: 2.3.1: MD5 = 23fdd3306c78bac73ff17cb3fb21523a
2.2.0 $B$N=$@5$G(B yc-kakutei $B$,CY$/$J$C$F$?$N$G;z
+
00/10/05: 2.3.0: MD5 = ec1220b37e4726ab1430ca4bd7bf702d
.canna $B$d(B default.canna $B$NFI$_9~$_$rB?>/$^$H$b$K$7$?!#(B +canna $B@_Dj%U%!%$%k$N%-!<%o!<%I(B quote setq set equal = > < progn eq cond null not and or + - * / % gc load list cons car cdr atom let if boundp fboundp getenv concat $B$KBP1~$7$?!#(B +$BF0:n$,0[$J$k$+$bCN$l$J$$$1$I(B +

+
00/09/30: 2.2.0: MD5 = 1f1618af7955cff53c91c4668db86be3
defsymbol $B$N@_Dj$,M-8z$K$J$k$h$&$K$9$k(B +

+
00/09/20: 2.1.7: MD5 = 94fe46ba2fba65c3028fb7d9fdf2a037
cannaserver $B$H$N@\B33NG'$K(B ping $B$r;H$&$N$r;_$a$F(B with-timeout $B$KJQ99(B($BC+$5$s!"@P0f$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/09/14: 2.1.6: MD5 = f0aca7640223977c054d2815f674d7ff
yc-ping-option $B$r(B system-configuration $B$NCM$K1~$8$F<+F0@_Dj$9$k$h$&$K$7$?!#(B +

+
00/09/12: 2.1.5: MD5 = 9fa55a8d04c3a242ed823acdfc9e97bd
yc-ping $B$r(B ping $B$N=*N;$r(B 1 $BIC4V$@$1BT$D$h$&$K$7$?!#(Bping $B$,(B 1 $BIC4V$G=*N;$7$J$+$C$?>l9g$K$O!"6/@)E*$K4"$jo=*N;$9$k$+!"$7$J$$$+$O
+
00/09/07: 2.1.4: MD5 = 2ba3206385031aa25214ab6743f484aa
yc-ping-option $B;CDj$GDI2C(B($BC+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/09/01: 2.1.3: MD5 = ddfa77a8acc8db810d7b112cbf2fb301
$B4D6-JQ?tL>$r(B CANNA_LIB_DIR $B$O;_$a$F(B CANNALIBDIR $B$N$_$K$9$k(B($BC+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/09/01: 2.1.3: MD5 = ddfa77a8acc8db810d7b112cbf2fb301
yc $B%m!<%I;~$K(B cannaserver $B$H$D$J$,$i$J$+$C$?$i(B input-method $B$N@_DjJQ99$r$d$i$J$$$h$&$K$7$?(B($BC+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/09/01: 2.1.3: MD5 = ddfa77a8acc8db810d7b112cbf2fb301
cannaserver $B$H$D$J$,$i$J$+$C$?$i(B global-yc-mode $B$^$?$O(B yc-mode $B$^$?$O(B yc-input-mode $B$K$J$i$J$$$h$&$K$7$?(B($BC+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/08/24: 2.1.2: MD5 = f2e4b642929e72170446381c05f20c12
$B4D6-JQ?t(BCANNA_LIB_DIR $B$,L5$/$F(B yc-canna-lib-path $B$N@_Dj$b$J$$$H%(%i!
+
00/08/23: 2.1.1: MD5 = c831ef28dbd883abdf5d37d67c2a5551
yc-canna-lib-path $B$,(B nil $B$K$J$C$F$bF0$/$h$&$K$7$?!#(B($BC+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/08/23: 2.1.1: MD5 = c831ef28dbd883abdf5d37d67c2a5551
$B4D6-JQ?t(BCANNA_LIB_DIR $B$r(B yc-canna-lib-path $B$NCM$K0z$-7Q$0$h$&$K$7$?!#(BCANNA_LIB_DIR $B$,6uJ8;zNs$G$bM-8z$K$J$k$N$GMWCm0U!#(B($BC+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/06/29: 2.1.0: MD5 = 26afe5c0dac05cfc8a4ae96fedc0f0b3
$BBg2~B$!#%3!<%I$N=L>.2=!#(Bglobal-yc-mode $B$NDI2C$H(B yc-toggle-level $B$N:o=|!#(B +

+
00/05/17: 2.0.15: MD5 = 481cc0a0533e2b5118579357e54a1357
$B=*N;=hM}$^$o$j$r(B kill-emacs $B$G$d$k$h$&$K$7$?!#%7%s%W%k$K$O$J$C$?$1$I8+$?L\$O!D(B($BLpLZ$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/05/16: 2.0.14: MD5 = 5a28dc4c715b789d0462b426a9212acb
yc-forward-bunsetsu $B$G(B yc-yomi-hiranaga $B$K$J$C$F$$$?2U=j$r(B yc-yomi-hiragana $B$K=$@5(B +

+
00/05/16: 2.0.14: MD5 = 5a28dc4c715b789d0462b426a9212acb
byte compile $B;~$N(B viper $B4XO"$N(B warning $BBP:v(B(byte-compile-depth $B8+$FNI$$$N$+!)(B) +

+
00/05/16: 2.0.14: MD5 = 5a28dc4c715b789d0462b426a9212acb
$B=*N;;~=hM}$NJQ99!#(Bsave-buffers-kill-emacs $B$N=q$-49$($r;_$a$F(B defadvice $B$9$k(B($B$b$7$/$O(B pre-command-hook / post-command-hook $B$G=hM}$rDI2C(B) +

+
00/05/13: 2.0.13: MD5 = 4a8005c7fa6a919688ccea42ce91a6ec
yc-defword-cancel $B$G(B delete-overlay $B$7$F$$$kLdBj$rBP=h(B +

+
00/05/13: 2.0.13: MD5 = 4a8005c7fa6a919688ccea42ce91a6ec
save-buffers-kill-emacs $B$G=*N;$7$J$+$C$?$H$-$K(B yc $B$r:F=i4|2=$9$k$h$&$K$7$?(B($BLpLZ$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/05/12: 2.0.12: MD5 = 4eca3735ca0b63a6ec61aa4c5ab9a5a1
(not yc-use-color) $B$N;~$K(B yc-defword $B$G(B delete-overlay $B$7$F$$$kLdBj$rBP=h(B($BLpLZ$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/05/12: 2.0.12: MD5 = 4eca3735ca0b63a6ec61aa4c5ab9a5a1
id / perl $B$,L5$$$H$-$K(B call-process $B$N<:GT$rJaB*$7$F$$$J$$LdBj$rBP=h(B($BLpLZ$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/05/12: 2.0.12: MD5 = 4eca3735ca0b63a6ec61aa4c5ab9a5a1
id / perl $B$NJV5QCM$r??56CM$H$7$FH=Dj$7$F$$$kLdBj$rBP=h(B($BLpLZ$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/03/13: 2.0.11: MD5 = 37b38d3b7beec30ad619bd4ec87fd26b
$B!X$&!+!Y$rJQ49$7$?$H$-$KA43Q!X!+!Y$,H>3Q!X!+!Y$K$J$kLdBj$rBP=h(B +

+
00/03/12: 2.0.10: MD5 = 8d6112925efc746e5adb55f8dc90980b
$B$R$i2>L>F~NOCf$K(B C-n $B$^$?$O(B C-p $B$G;z
+
00/03/12: 2.0.9: MD5 = 4f0693ed9da98d7eecaa391c8582f6f4
$B%m!<%^;zJQ49;~$K0lJ8@aL\$G%m!<%^;z(B-$B$R$i2>L>JQ49%F!<%V%k$KL5$$J8;z$,4^$^$l$F$$$?>l9g$K(B yc-alphabet-internal $B$G<:GT$9$kLdBj$NBP=h(B +

+
00/03/12: 2.0.8: MD5 = bc840bdedf5373dcffc8f4c9cabfb63c
cannaserver $B$,;`$s$@$H$-$K!"(Byc $B$+$iH4$1$J$/$J$k(B(yc $B$,(B cannaserver $B$N1~Ez$rBT$AB3$1$k(B)$BLdBj$rBP=h(B($BB<>e$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/03/10: 2.0.7: MD5 = e8cd7cf0598db87924a4137f30fae368
$BJQ49;~$K?'$,$D$/$h$&$K$7$?(B +

+
00/03/09: 2.0.5: MD5 = 386da9bb4ce3d932c700004fca3fc764
$BJQ49Cf$NJ8@a$,F~NO$7$?%m!<%^;z$GI=8=$G$-$J$$>uBV$KJ,CG$5$l$?J8@a$,BgNL$K$"$k(B(vi $B$r(B 360$B8DF~NO!"JQ49$7$?(B)$B>l9g$K!"=hM};~4V$,$+$+$C$F$$$?$N$rBP=h!#(B($BB<>e$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/03/08: 2.0.4: MD5 = bf786d2cf0acd00f2cc78705c034f52b
$B0lMwI=<(Cf$K(B C-i $B$GJ8@a=L$a$K$J$i$J$+$C$?$N$rBP=h(B($BB<>e$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/03/08: 2.0.4: MD5 = bf786d2cf0acd00f2cc78705c034f52b
$B!X$&!+!Y$N%+%?%+%J$H$7$F!X%t!Y$,=P$k$h$&$K$7$?(B($B@P0f(B@$B%=%K!<$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/03/04: 2.0.3: MD5 = b3c942e8651ef6bf930f9c236623c162
xemacs $B$N(B isearch mode $B;~$KJQ49$r3NDj$9$k$H(B isearch-nonincremental-exit-minibuffer $B$9$k$h$&$K$7$?!#8D?ME*$K$OG
+
00/03/03: 2.0.2: MD5 = ac58f3f2ec126ffd761420f79431b751
fence $B%b!<%I$GJQ49$r$+$1$F:FF~NO$r;O$a$?$H$-$K3NDj$r$7$F$$$J$+$C$?LdBj$rBP=h(B($BB
+
00/03/02: 2.0.1: MD5 = 2ebfdd14870cfdcc541335e2658f2f49
canna $B$N%i%$%V%i%j!<%Q%9$K(B /var/lib/canna $B$rDI2C$7$?(B($BB
+
00/02/29: 2.0.0: MD5 = 1a53dc2061de0c2f0c0422d82b20f752
cl $B$r;H$o$J$$$h$&$K$7$?!#(B +

+
00/02/29: 2.0.0: MD5 = 1a53dc2061de0c2f0c0422d82b20f752
viper $B$G(B minibuffer $B$r;H$C$F$$$k$H$-$K3NDj$G(B minibuffer $B$rH4$1$F$7$^$&LdBj$rBP=h(B +

+
00/02/18: 1.99.13: MD5 = c7511d7b4170acc19156bfb9a16fefde
canna $B$N@_Dj(B stay-after-validate $B$KBP1~(B($B@P0f(B@$B%=%K!<$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/02/16: 1.99.12: MD5 = 27a48375af8fea5cfdec3768a80f7eb4
$B%m!<%^;z$+$J%F!<%V%k$NFI$_9~$_$G!"(B suffix $B$,(B .kp $B$N%U%!%$%k$NFI$_9~$_;~4A;z%3!<%I$r(B euc $B$K$7$F$$$J$+$C$?$N$r=$@5(B($B@P0f(B@$B%=%K!<$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/02/15: 1.99.11: MD5 = a251baea06bfda1bdcda8e6333c77b41
boil $B$GJQ49$7$?8e$K(B undo $B$rl9g$K(B undo $B$r(B 2 $B2sF~NO$7$J$$$H%m!<%^;z$KLa$i$J$/$J$C$F$$$?$N$r=$@5(B +

+
00/02/11: 1.99.10: MD5 = 6635c0de3c48a0a24489ea494b3c9629
file-exists-p $B$d(B file-readable-p $B$K(B nil $B$rEO$9$HBT$C$A$c$&$_$?$$$J$s$G(B nil $B$rEO$5$J$$$h$&$K=$@5(B($BB
+
00/02/11: 1.99.10: MD5 = 6635c0de3c48a0a24489ea494b3c9629
user$B<-=q$N:n@.$r>!$B$3$l$G%f!<%6$,($BB
+
00/02/10: 1.99.8: MD5 = 74b23e0e5ca6441a57e1ace9e1faca66
default.canna $B$H(B .canna $B$NFI$_9~$_=hM}$G(B default.canna $B$N@_Dj$K(B .canna $B$N@_Dj$,(B append $B$7$F$7$^$&$N$r(B overwrite $B$9$k$h$&$K$7$?(B($B@P0f(B@$B%=%K!<$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/02/03: 1.99.7: MD5 = 71b6be8976feb546159c73e591069975
fence-mode $B$NF~NO4X?t$,(B xemacs $B$GF~NOJ8;z$r$H$j$3$\$9$3$H$,$"$k$N$r=$@5$7$?!#(B +

+
00/02/01: 1.99.5: MD5 = df8f2c855f8dfef535f0f3f77ac59958
$B%m!<%^;zJQ49%F!<%V%k$KL5$$J8;zNs0J9_$N%m!<%^;zJQ49$,=PMh$J$$;~$N8!:wBG$A@Z$j=hM}$rDI2C$7$?!#(B($B@P0f(B@$B%=%K!<$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +

+
00/01/31: 1.99.3: MD5 = 6b199c95ea79100a081cfd65c3b7a8e5
$B%m!<%^;z$+$JJQ49%F!<%V%k$N8!:w=g=x$NBP1~$,$$$D$N4V$K$+H4$1$F$$$?$N$G:FDI2C$7$?!#(B +

+
00/01/31: 1.99.3: MD5 = 6b199c95ea79100a081cfd65c3b7a8e5
xemacs 20.4 $B$G(B redirect-frame-focus $B$,L5$$$?$a!"(Bminibuffer $B$K%+!<%=%k$r$b$C$F9T$/=hM}$,A4LG$7$F$$$k$3$H$,H=L@!#BP=h:Q(B +

+
00/01/31: 1.99.3: MD5 = 6b199c95ea79100a081cfd65c3b7a8e5
XEmacs 20.4 $B$X$NBP1~!#>/$J$/$H$b5/F0$G$-$k$h$&$K$O$7$?$7!"(Bfence-mode $B$b;H$($k$h$&$K$7$?!#(B +

+
00/01/31: 1.99.1: MD5 = 578bc50dd6e31f5ec4e77b5645e8a3d0
$BJQ49$7$?J8;zNs$,D9$/$F!"J8@a?t$,KDBg$K$J$C$?>l9g$KE`$jIU$/8=>]$r3NG'!#BP=h:Q(B +

+
00/01/30: 1.99.0: MD5 = 152dc0461b5eaf30d643f17e6a7b3729
$B$$$o$f$k(B fence-mode $B$r$D$1$?(B +

+
99/12/01: 1.0.4: MD5 = e229c9f522918a8cdc1231e00066cc59
$B%m!<%^;z$+$JJQ49%F!<%V%k$N8!:w=g=x$r(B
$B%+%l%s%H(B -> $B%[!<%`(B -> $(CANNALIBDIR)/dic
$B$N=g=x$K$J$k$h$&$K$9$k(B($B;0=EBg$NK\ED$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) +

+
99/11/01:
$B%$%s%/%j%a%s%?%k%5!<%ACf$G3NDj$7$?$i!"$9$0$K%$%s%/%j%a%s%?%k%5!<%A$,:F3+$9$k$h$&$K$7$?(B +

+
99/10/14:
minibuffer $B$GJQ49$r3+;O$7$?>l9g$K0lMw%b!<%I$,$&$^$/F0$+$J$$!#0l1~!"0lMw%b!<%I$K$J$i$J$$$h$&$K$O$7$?$1$I!":Y$+$$=j$G$*$+$7$$$+$bCN$l$J$$!#$1$IBP=h:Q(B +

+
99/10/13:
$B%$%s%/%j%a%s%?%k%5!<%ACf$K$b;H$($k$h$&$K$7$F$_$?!#%T!<%T!<$&$k$5$$$1$I(B +

+
99/10/12:
minibuffer $B$rJL%U%l!<%`$K$7$F$$$k;~$NBP=hJ}K!$rJQ99(B +

+
99/10/08:
"$B$&!+(B"$B$r0lJ8;z$H$7$F07$&$h$&$K$7$?(B +

+
99/10/08:
yc $B$N%H%0%kHO0O$r;XDj$G$-$k$h$&$K$7$?(B +

+
99/10/07:
$B$+$s$J%5!<%P%[%9%H$r(B ~/.emacs $B$G;XDj$G$-$k$h$&$K$9$k(B($B;0=EBg$NK\ED$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) +

+
99/10/07:
$BJ8@a=L$a;~$K(B"$B$&!+(B"$B$,J,CG$5$l$J$$$h$&$K$7$?(B +

+
99/06/17:
minibuffer $B$rJL%U%l!<%`$K$7$F$$$k;~$K!"(B +$BA*Br(B/$BEPO?%b!<%I;~$N%U%l!<%`(B($B%P%C%U%!(B)$B$N@ZBX$($,$*$+$7$$LdBj$NBP=h(B +

+
99/04/28:
fence-mode $B;~$N(B C-e $B$NF0:n$,CY$+$C$?$N$G$=$NItJ,$r9bB.2=(B +
+
+
+Updated: 2008/02/13 knak@ceres.dti.ne.jp +
+ + + --- /dev/null +++ yc-el-5.0.0/INSTALL @@ -0,0 +1,22 @@ +$B!}(BYC$B$N%$%s%9%H!<%k(B + +Makefile $BCf$G0J2<$K5s$2$k$b$N$,<+J,$N4D6-$H9g$C$F$$$k$+3NG'$9$k(B + + prefix = /usr/local + EMACS = emacs + elispdir = $(prefix)/share/emacs/site-lisp + INSTALL_PATH = $(prefix)/bin + +$B9g$C$F$$$J$$>l9g!"<+J,$N4D6-$K9g$o$;$FE,59=q$-49$($k(B + +$B8e$O%3%^%s%I%i%$%s$G0J2<$rEjF~$9$k(B + + % make + % su + # make install + +$B!}(BYC$B$N@_Dj(B + +~/.emacs $B$K0J2<$rDI2C$9$k(B + +(load "yc") --- /dev/null +++ yc-el-5.0.0/ChangeLog @@ -0,0 +1,706 @@ +2008-02-13 Kaoru Nakajima + + * 5.0.0 $BB-3]$1#4G/$V$j$N99?7!#CN$i$L4V$K(Bemacs$B$,(BUNIX$B%I%a%$%s%=%1%C%H$r;H$($k$h$&(B + $B$K$J$C$?$N$GBP1~$7$F$_$k!#%3!<%ICf$K$O@N$N(Bicanna$B$N8F=P%m%8%C%/$b;D$C$F(B + $B$$$k$,(B make-network-process $B$r;}$C$?(B emacs-22 $B0J>e$N(B emacsen $B$J$i!"(B + $B$=$A$i$r;H$&$N$G + +* 4.0.13 yc load $B;~$K(B input-method $B$,(B japanese-yc $B$K$J$i$J$$LdBj$NBP=h(B + emacs $B5/F0;~(B $B$K(B yc $B$r(B load $B$7$F(B emacs $B$N(B splash $B$,2u$l$k?M$O(B + yc-connect-server-at-startup $B$K(B nil $B$r;XDj$9$k$3$H(B + ($BB@ED(B@NEC $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) +* 4.0.13 fence-mode $B$G;zL>$K;zL>$KLa$C$F$7$^$&LdBj$NBP=h(B + ($BCfHx$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2004-07-12 AIDA Shinra + +* 4.0.12 $B2<5-LdBj$NBP=h(B + use-dictionary$B$K<+F0EPO?<-=q$r=q$/$H%(%i!<$K$J$k(B + UTF-8$B4D6-$G@5$7$/(B.canna$B$rFI$_9~$a$J$$(B + $B:G6a$N(Bemacs$B$G(Byc$B$r;H$&$H!"5/F0;~$N(Bsplash$B$J$I$,=P$J$$(B + (AIDA Shinra $B$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) + +2004-06-21 Yono Oak + +* 4.0.11 select-mode $B$N(B [up],[down] $B$N%-!<%P%$%s%I$r(B "\C-p","\C-n" $B$K(B + $B9g$o$;$k(B + ( Yono Oak $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2004-06-06 Mito + +* 4.0.10 $B$+$J4A;zJQ49%b!<%I$G(B "kanji" $B$rF~NO8e!"(BC-n $B$GJR2>L>$KJQ49$9(B + $B$k$H(B "$B%+(Bn$B%8(B" $B$K$J$C$F$7$^$&$N$G!"(B"$B%+%s%8(B" $B$K$J$k$h$&$K=$@5(B + $B$9$k!#(B + +2004-04-20 pocket pet + +* 4.0.9 NetBSD $B$G(B make $B$G$-$k$h$&$K$9$k(B + (pocket pet $B$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) + +2004-03-05 Kaoru Nakajima + +* 4.0.8 $B4A;zJQ493NDjD>8e$KA`:n$7$?>l9g$K2hLL$,Jx$l$k>l9g$,$"$k;v$X$N(B + $BBP=h$H$7$F4A;zJQ493NDj;~$KIA2h$r(Bflush$B$9$k(B + ($BEOJU$5$s(B $B$4Js9p$"$j$,$H$&$4$6$$$^$9(B) + +2004-02-20 Kaoru Nakajima + +* 4.0.7 $B%m!<%^;zF~NO$K$*$$$F(B"$B$C(B"$B!"(B"$B$s(B"$B$N=hM}$,$*$+$7$+$C$?LdBj$NBP=h(B + ($BCfHx$5$s!"$+$:$R$3$5$s$4Js9p$"$j$,$H$&$4$6$$$^$9(B) + +2004-02-05 Kaoru Nakajima + +* 4.0.6 $B2VG[Ns$r;HMQ$7$F$$$k>l9g$NByE@!"H>ByE@$N07$$$r=$@5(B + +2004-01-04 Kaoru Nakajima + +* 4.0.5 group$BL>$r7h$a$k=hM}$G(B system-type $B$NH=Dj$K(B windows-nt $B$rDI2C(B + +2003-12-26 Kaoru Nakajima + +* 4.0.4 $B2VG[NsBP1~(B + yc-lookup-rH-internal $B$H(B yc-generate-romaji-list $B$r=$@5(B + $BJ#?t(B alphabet $B$GH>ByE@$H$J$k(B key sequence $B$NLdBjBP1~(B + +2003-12-07 Kaoru Nakajima + +* 4.0.3 group$BL>$Nr7oH=CG$r8m$C$F(Bgroup$BL>$Nl9g$K(B + $B$br7oH=CG$r=$@5(B + (win $B$N;~$OL5>r7o$G(B "user" $B$=$l0J30$N>l9g$O(B id -> perl -> "user" + $B$N@.8y=g$KJQ99(B) + +* 4.0.3 group$BL>$Nl9g$K(B perl $B$,(B locale $B4X78$G(B + warning $B$7$J$$$h$&$K(B $B4D6-JQ?t(B LC_ALL=C $B$G(B perl $B$r5/F0$9$k$h$&$K$9(B + $B$k!#(B($BARED$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2003-11-26 Kaoru Nakajima + +* 4.0.2 ~/.canna $B$G;XDj$9$k%U%!%$%k$N5-=R$H$7$F%U%!%$%kL>$N$_$H@dBP%Q%9$N(B + $B;XDj$r2DG=$K$9$k!#(B($B$?$+$N$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2003-11-09 Kaoru Nakajima + +* 4.0.1 icanna $B$N%Q%9$r@_Dj$G$-$k$h$&$K$9$k!#(B + (Debian $B%W%m%8%'%/%H$N>e@n$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) + +2003-10-06 Kaoru Nakajima + +* 4.0.0 unix domain socket $B$N$_%5%]!<%H$7$F$$$k(B cannaserver $B$H$bDL?.2DG=$H(B + $B$9$k!#(B + +2003-06-02 Kaoru Nakajima + +* 3.5.8 $B$+$JF~NO$G;zl9g$KF~NO$7$?$R$i$,$J$N=g=x$,F~$lBX$o$C$F$7(B + $B$^$&LdBj$NBP=h(B(yc-generate-romaji-list $B$,D9$5(B0$B$NJ8;zNs$r@8@.$7$F$$(B + $B$?LdBj(B)$B!#(B($B$?$+$O$7$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2003-05-11 Kaoru Nakajima + +* 3.5.7 onX $B$GJ#?t%U%l!<%`$G(B minibuffer $B$X0lMwI=<($r9T$&$H$-$KI=<($5$l$k%U(B + $B%l!<%`$HI=<($5$l$J$$%U%l!<%`$,$"$C$?LdBj$NBP=h(B + +2003-05-10 Kaoru Nakajima + +* 3.5.6 emasc-20.7 -nw $B$G(B cursor $B$H$$$&(B face $B$,L5$$$?$a$K%(%i!<$9$kLdBj$N(B + $BBP=h(B($B@P0f$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2003-05-07 Kaoru Nakajima + +* 3.5.5 background-mode $B$,(B dark $B$N;~$b(B fence-mode $B$N?'$,0E$+$C$?LdBj$NBP=h!#(B + defface $B$7$F$_$k!#(B(Debian Project$B$N(B $B>e@n$5$s(B $B$4;XE&$"$j$,$H$&$4$6(B + $B$$$^$9(B) + +2003-05-07 Kaoru Nakajima + +* 3.5.5 xemacs-21.4 $B$K$*$$$F0lMw%b!<%I$K$9$k$H$-$K;H$C$F$$$?4X?t$r(B + set-minibuffer-window $B$+$i(B active-minibuffer-window $B$KJQ99!#(B* + +* 3.5.5 customize $B$K$A$g$C$HBP1~$7$F$_$?!#(B M-x customize-group yc $B$G(B + $B@_Dj2DG=(B + +2003-04-28 Kaoru Nakajima + +* 3.5.4 set-face-hilight-p $B$N(B typo $B$r(B set-face-highlight-p $B$K=$@5(B($BKYED$5$s(B + $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2003-04-26 Kaoru Nakajima + +* 3.5.3 yc-fence-face $B$H(B yc-current-face $B$N@_DjItJ,$,%P%0$C$F$?$N$G=$@5(B + ($BKYED$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2003-04-06 Kaoru Nakajima + +* 3.5.3 xemacs-21.5.x $B$N(B frame-property $B$G?'$r$H$C$F$/$k$H?'$NL>A0$G$O$J$/!"(B + color-instance $B$rJV5Q$9$k$?$a!"(Bmake-face $B$,<:GT$7$F$$$?$H;W$o$l$k(B + $BBP=h(B???($BKYED$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2003-03-28 Kaoru Nakajima + +* 3.5.2 yc-fence-face $B$H(B yc-current-face $B$N%+%9%?%^%$%:$r>e=q$-$9$k(Bbug$B$,$"$C(B + $B$?$N$G=$@5(B($BBg86$5$s$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2003-03-24 Kaoru Nakajima + +* 3.5.1 $BD92;5-9f!V!3Q%+%J$KJQ492DG=$H$9$k!#(Byc-fence-face $B$H(B + yc-current-face $B$GJQ49Cf$N(B face $B$r@_Dj$G$-$k$h$&$K$9$k!#(B($BBg86$5$s(B + $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2002-11-29 Kaoru Nakajima + +* 3.5.0 $BJQ?t(Byc-enable-hankaku$B$r(Bnil$B$K$9$k$3$H$K$h$jH>3Q$+$J$r;zl9g$OH>3Q$+$J$r;z + +* 3.4.13 $B$+$JF~NO;~$K(B debug $BMQ$N%a%C%;!<%8$,(B minibuffer $B$K=PNO$7$F$$$?ItJ,(B + $B$rDd;_(B($B>e@n!w(BDebian Project $B$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) + +2002-10-12 Kaoru Nakajima + +* 3.4.12 emacs-21.2 $B$K$*$$$F(B minibuffer$BIU$-$N(B multi frame $B>uBV$GJQ49Cf$K(B + minibuffer $B$X$NI=<($,$&$^$/9T$+$J$$(B frame $B$,$"$kLdBj$NBP=h!#(B + minibuffer $B$KI=<($r;O$a$k$H$-$K!"(B + (set-minibuffer-window (minibuffer-window)) $B$9$k(B + +2002-10-10 Kaoru Nakajima + +* 3.4.11 fence-mode $B$GF~NOCf$K(B defsymbol $B$7$F$$$kJ8;zNs$rF~NO$9$k$H%(%i!<(B + $B$K$J$k2DG=@-$,$"$C$?LdBj$NBP=h(B($B>e@n(B@Debian Project $B$5$s(B $B$4;XE&$"$j(B + $B$,$H$&$4$6$$$^$9(B) + +2002-10-09 Kaoru Nakajima + +* 3.4.10 yc-subsequence $B$GMWAG?t$,B-$j$J$$$H$-$K<:GT$9$kLdBj$NBP=h!#(B + ($B>e@n!w(BDebian Project$B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2002-08-25 Kaoru Nakajima + +* 3.4.9 fence-mode$B$G%m!<%^;zF~NO$9$k$H$-$KJ#?tJ8;z$H$J$k2;@a(B($BNc$($P!"(B + "kyo")$B$rF~NO$9$k$H(Byc-generate-romaji-list $B$,@5$7$/=hM}$G$-$J$+$C$?(B + $BLdBj$NBP=h(B + +2002-08-23 Kaoru Nakajima + +* 3.4.8 $B$+$JF~NO$GF~NO$7$?J8;zNs$N;z + +* 3.4.7 fence-mode $B$GF~NO;~(B .canna $B$G(B defsymbol $B$7$F$$$k5-9f$,4A;zJQ49;~$N(B + $B8uJd$H$7$F=P$FMh$J$$LdBj$NBP=h!#(B($BCfHx(B@yc.el user $B$5$s(B $B$4;XE&$"$j$,(B + $B$H$&$4$6$$$^$9(B) + +* 3.4.7 emacs-21.2 on X $B$G(B minor-mode-menu $B$N%H%0%kA`:n$KBP1~$7$?!#(B + +2002-04-18 Kaoru Nakjima + +* 3.4.6 $BB%2;4^$_$N;z + +* 3.4.5 fence $B%b!<%I$G(B "n" $B$r(B "$B$s(B" $B$KCV49$;$:$KJQ49=hM}$KN.$l$F$$$?$N$r=$(B + $B@5(B($BCfHx$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2002-04-13 Kaoru Nakajima + +* 3.4.4 fence $B%b!<%I$GF~NOCf$K(B C-p $B$G(B alphabet $B"*(B $B#a#l#p#h#a#b#e#t(B $B"*(B + $BH>3Q%+%?%+%J(B $B"*(B $B%+%?%+%J(B $B"*(B $B$R$i$,$J(B $B$N=g=x$G!"(BC-n $B$G5U=g$K;z + +* 3.4.3 $BH>3Q%+%JDI2C$KH<$$JQ49Cf$N(B C-h / C-k / C-l / C-u $B$,!"$=$l$>$l(B + $B$R$i$,$J(B / $B%+%?%+%J(B / alphabet / $B#a#l#p#h#a#b#e#t(B $B$K3dIU$/$h$&$KD4(B + $B@0!#$+$D!"5-9f$rJQ49$7$?$H$-$K;z3Q%+%J$r=P$9(B + $B%-!<$O$I$&$7$h$&$+$J!)$H$j$"$($:$OL$3d$jIU$1!#(Bfence-mode $B$+$i;z
+ +2002-04-09 Kaoru Nakajima + +* 3.4.2 $B;z3Q%+%J$b=P$k$h$&$K$J$C$?(B + (Takayuki Nakao $B:n!#(B $BCfHx$5$s$"$j$,$H$&$4$6$$$^$9(B) + +2002-02-24 Kaoru Nakajima + +* 3.4.1 yc-use-color $B;~$G(B blink-cursor-mode $B$,M-8z!"$^$?$O!"(B cursor-type + $B$rJQ99$7$F$$$k>l9g$K!"(Bfence mode $B$G(B blink $B$d(B cursor-type $BJQ99$rL5(B + $B8z$K$9$k$h$&$K$9$k!#(Bxemacs $B$OL$3NG'!#(B + +* 3.4.0 canna $B$N=i4|2=%U%!%$%k$r(Bdefault.canna -> ~/.canna $B$HFI$s$G$$$?$,!"(B~ + /.canna $B$,$"$C$?>l9g$K$O(B default.canna $B$rFI$^$J$$$h$&$K$7$?!#$3$N(B + $BJQ99$G!V$+$JF~NO!W$N?M$O(B ~/.canna $B$K(B (setq romkana-table + "kana.cbp") $B$H=q$/$@$1$G!V$+$JF~NO!W$G$-$k$h$&$K$J$k!#(B + +* 3.4.0 $B$+$JF~NO$G(B yc-conv-rH-list $B$,(B null $BJ8;zNs$r@8@.$9$k>l9g$,$"$C$?$N(B + $B$G!"$+$JF~NO$G(B fence $BF~NOCf$K(B yc-edit-backward-delete-char $B$r(B 2 $B2s(B + $BF~NO$7$J$$$HJ8;z$,>C$;$J$+$C$?LdBj$NBP=h!#(B + +* 3.4.0 $B$+$JF~NO$G;z + +* 3.3.5 yc-canna-lib-path $B$N@_Dj$G(B /usr/pkg/share/canna $B$b8+$k$h$&$K$9$k(B + +2001-12-29 Kaoru Nakajima + +* 3.3.4 $B%m!<%^;z(B-$B2>L>JQ49%F!<%V%k$N=hM}$NJQ99$H!"ESCf$G(B cannaserver $B$,Mn$A(B + $B$F$7$^$C$?;~$K$A$c$s$H=*N;$7$J$+$C$?LdBj$NBP=h(B($B$^$D$b$H(B $B$f$-$R$m(B + $B$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) + +2001-09-22 Kaoru Nakajima + +* 3.3.3 MS-Windows $B>e$G$b(B yc-use-color $B$N@_Dj$rM-8z$H$9$k(B($B6aF#$5$s(B $B$4;XE&(B + $B$"$j$,$H$&$4$6$$$^$9(B) + + +2001-09-14 Kaoru Nakajima + +* 3.3.2 Win2000+cygwin+emacs-21.0.105 $B$G(B canna $B$H$N@\B3$,<:GT$9$kLdBj$NBP(B + $B=h!#(BWin2000+cygwin $B$N(B id -gn $B$,$R$i2>L>$N%0%k!<%WL>$rJV5Q$9$k$?$a!"(B + canna$B%W%m%H%3%k$N(B notice-group-name $B$,<:GT$9$k!#(B + +* 3.3.2 yc.el $B%U%!%$%k$N4A;z%3!<%I$,(B EUC-JP $B$K$J$C$F$$$?$N$r(B iso-2022-jp + $B$KJQ99!#(B($B$+$:$R$3!wEE;R<-=q!?=qBN%*!<%W%s%i%\$J$I(B $B$5$s(B $B$4;XE&$"$j(B + $B$,$H$&$4$6$$$^$7$?(B) + + +2001-05-30 Kaoru Nakajima + +* 3.3.1 yc-colorize $B$,(B 2 $B8D$"$C$?$N$G0l$D$K$9$k(B($B@P0f$5$s(B $B$4;XE&$"$j$,$H$&(B + $B$4$6$$$^$9(B)$B!#$R$i$,$JJT=8Cf$K(B fence $B30$KJ8;z>~$j$,$O$_=P$9$3$H$,$"$C(B + $B$?LdBj$r=$@5!#(B + +2001-05-28 Kaoru Nakajima + +* 3.3.0 fence$B$N>~$j(B(||)$B$rI=<($9$k(B/$B$7$J$$$r@_Dj$G$-$k$h$&$K$9$k!#@_DjJ}K!$O(B + yc-use-fence$B$r;2>H!#(Byc-use-color $B$G(B onX + $B$G;H$C$F$$$??M$O!"(B(setq yc-use-fence (not (eq window-system 'x))) + $B$7$F$/$l$l$P!"0JA0$HF1$8$K$J$k!"$H;W$&!#(B + +2001-05-23 Kaoru Nakajima + +* 3.2.8 on X $B$G(B < Meta>+< j> $B$G(Bbug$B$kLdBj$NBP=h(B($B;3ED1I@.$5$s(B $B$4;XE&(B + $B$"$j$,$H$&$4$6$$$^$9(B)$B!#$=$NB>!"(BEmacs21.0.x on KTerm $B$G(B + yc-usr-color $B$r(B t $B$K$7$?$H$-$K(B fence $B$r$D$1$J$$$h$&$K$7$F$_$?!#8+(B + $B$K$/$$?M$O(B + (setq yc-use-color (if (eq window-system 'x) t nil)) + $B$7$F2<$5$$!#(B + +2001-05-23 Kaoru Nakajima + +* 3.2.7 ANK-$B;z + +* 3.2.6 .canna $B$NI>2A=hM}$N2~A1(B($BC+$5$s$"$j$,$H$&$4$6$$$^$9(B) + ** setq $B$NLa$jCM$rM-8z$K$9$k(B + ** $BL5;k$9$k4X?t$N0z?t$NI>2A$r$7$J$$(B + ** quote $B$7$?%j%9%H$NI>2A$r$7$J$$(B + ** let $B$N=i4|2=ItJ,$GJQ?tL>$r4X?t07$$$7$J$$(B + + +2001-01-17 Kaoru Nakajima + +* 3.2.5 $B<-=q%j%9%H$N=i4|CM$r8GDjCM$K$7$?(B + +2001-01-16 Kaoru Nakajima + +* 3.2.4 default.canna $B$*$h$S(B .canna $B$,B8:_$7$J$$>l9g$K<-=q%j%9%H$N=i4|2=1L(B + $B$l$rBP=h!#(B($B$/$j$*$+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-12-25 Kaoru Nakajima + +* 3.2.3 3.2.2 $B$NBP1~J}K!$@$H(B emacs-20.x $B$N5/F02hLL$,2u$l$k$N$G!"(B + (yc-server-check) $B$O(B cannaserver $B$H$N%3%M%/%7%g%s$rD%$j$C$Q$!$K$7(B + $B$F!"B.96$G=i4|2=$9$k$h$&$K$9$k!#(B + +2000-12-16 Kaoru Nakajima + +* 3.2.2 + (load "yc") $B8e!"(B(yc-mode 1) $B$"$k$$$O!"(B(global-yc-mode 1) $B$"$k$$$O!"(B + C-\ $B$r$9$k$^$G$N4V$K!"(B/usr/local/canna/bin/cannastat $B$rF0$+$9$H(B + cannaserver $B$,;`$s$G$7$^$&LdBj$NBP=h!#(B($B$J$Y$d$5$s(B $B$4;XE&$"$j$,$H$&(B + $B$4$6$$$^$9(B) + +2000-12-09 Kaoru Nakajima + +* 3.2.1 X $B>e$GL5$/$F$b(B yc-usr-color $B$,M-8z$K$J$k$h$&$K$9$k!#(B + +2000-12-08 Kaoru Nakajima + +* 3.2.0 yc-use-color $B$,(B $BHs(Bnil $B$N;~$K(B xemacs $B$O(B extent $B$r(B emacs $B$O(B overlay + $B$r;H$&$h$&$K$7$?!#(Bemacs $B$,(B overlay $B$r;H$&$N$O=>MhDL$j!#(B + +2000-12-06 Kaoru Nakajima + +* 3.1.11 overlay $B$r3JG<$9$kJQ?t$r(B make-variable-buffer-local $B$9$k$D$b$j$,(B + make-local-variable $B$7$F$$$?!#=$@5:Q!#(B($B$+$:$R$3!wEE;R(B{$B<-=q(B,$B=qBN(B}$B%*!<(B + $B%W%s%i%\$J$I(B $B$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +* 3.1.11 xemacs $B$G(B C-x C-c $B$r$7$?$H$-$K!"2?8N$+(B condition-case $B$G(B signal + $B$r=&$C$F$/$l$J$$$N$G!"(Bset-process-sentinel $B$r(B nil $B$K$9$k$h$&$K$7$?!#(B + +2000-12-04 Kaoru Nakajima + +* 3.1.10 emacs-21.0.90 $B$r(B on X $B$G(B $B;H$C$F$$$k$H(B minibuffer $B$KJ#?t9TI=<($G$-(B + $B$k$h$&$K$J$C$?$_$?$$$J$s$@$1$I!"8uJd$rJ#?t9TI=<($7$?$H$-$K(B + minibuffer $B$rH4$1$F$b!"(Bminibuffer $B$,85$NBg$-$5$KLa$i$J$$$N$G!"(B + message $B=PNO$r$7$F!"(Bminibuffer $B$NBg$-$5$rLa$9$h$&$K$7$?!#(B + +2000-11-21 Kaoru Nakajima + +* 3.1.9 emacs-21.0.90$BBP1~!#(B(require 'viper)$B$r;_$a$k!#(B + +2000-11-18 Kaoru Nakajima + +* 3.1.8 xemacs $B$G%P%$%H%3%s%Q%$%k$7$?(Byc.elc $B$r;H$C$F%+%i! + +* 3.1.7 xemacs $B$G$b?'$,IU$/$h$&$K$7$?!#$?$@$7!"(Bfsf-compat pkg $B$,(B install + $B$5$l$F$$$k>l9g$K8B$k$1$I!#(B + +* 3.1.7 .canna $B$rI>2A$9$k$H$-$K(B XEmacs $B$GJ8;z$rG'<1$G$-$J$+$C$?LdBj$rBP=h(B + ($B$+$:$R$3!wEE;R(B{$B<-=q(B,$B=qBN(B}$B%*!<%W%s%i%\$J$I(B $B$5$s(B $B$4;XE&$"$j$,$H$&$4(B + $B$6$$$^$9(B) + +2000-11-14 Kaoru Nakajima + +* 3.1.6 $B%P%$%H%3%s%Q%$%k$7$?$H$-$K(B yc-put-symbol $B$G(B $B%(%i!<(B "Symbol's value + as variable is void: res" $B$,H/@8$7!"(BC-g $B$rF~$l$J$$$HLa$l$J$/$J$kLd(B + $BBj$NBP=h!#$D$$$G$K!"(Bres / args / str $B$NL>A0$r(B yc-res / yc-args / + yc-str $B$KJQ99$7$?!#(B($B@P0f$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-11-09 Kaoru Nakajima + +* 3.1.5 user$B<-=q$r(Bbushu$B<-=q$H8m@_Dj$7$F$$$?!#BP=h:Q!#$$$d$O$d!"2?$H$b$*CQ(B + $B$:$+$7$$OC$GLLL\L5$$!#(B + +2000-10-22 Kaoru Nakajima + +* 3.1.4 signal $B$H(B error-message-string $B$N;H$$J}$rJQ99!#$H8@$&$+!"(B + cannaserver $B$H$N%3%M%/%7%g%s$,@Z$l$?$H$-$N%(%i!<%a%C%;!<%8$N=PJ}$r(B + $BJQ99$7$?!#(B + +2000-10-20 Kaoru Nakajima + +* 3.1.3 cannaserver $B$H$N@\B3$,@Z$l$?$H$-$NBP:v$r6/2=!#(Bcannaserver $B$H$N@\B3(B + $B$,@Z$l$?$i%(%i!<$7$F$$$?$H$3$m$b%(%i!<$;$:$K=hM}$9$k$h$&$K$7$?!#$3(B + $B$l$G(B cannaserver $B$,;`$s$G$$$F$b(B fence $B$G$R$i$,$J$rF~NO$9$k$3$H$O$G(B + $B$-$k$7!"(Bcannaserver $B$H@\B3$7D>$;$l$P:F$S$+$J4A;z$KJQ49$b2DG=$H$J$k!#(B + $B$?$@$7!"(Bemacs $B5/F0;~$K(B cannaserver $B$H$D$J$,$i$J$$$H(B yc-mode $B$*$h$S(B + global-yc-mode $B$H(B M-x set-input-method japanese-yc $B$K<+F0E*$K$J$i(B + $B$J$$$N$G!"Cm0U$9$k$3$H!#(B + +2000-10-18 Kaoru Nakajima + +* 3.1.2 $BJQ49Cf$N3FJ8@a$NFI$_$r%-%c%C%7%e$9$k!#B?>/$OB.$/$J$C$?$H;W$&!#(B + +2000-10-17 Kaoru Nakajima + +* 3.1.1 $B;z + +* 3.0.0 $B + +* 2.3.3 .canna $B$N(B \C-\ $B$r(B emacs $B$N(B \C-\\ $B$HG'<1$9$k$h$&$K=$@5$7$?(B + +2000-10-11 Kaoru Nakajima + +* 2.3.2 defsymbol $B$GDj5A$7$?J8;z$O8uJdA*Br;~$K(B defsymbol $B$7$?8uJd$N$_I=<((B + $B$9$k$h$&$K$7$?(B + +2000-10-09 Kaoru Nakajima + +* 2.3.1 yc-server-check $B$G(B cannaserver $B$H$N@\B3$r@Z$i$J$$$h$&$K$7$?(B + +* 2.3.1 2.2.0 $B$N=$@5$G(B yc-kakutei $B$,CY$/$J$C$F$?$N$G;z + +* 2.3.0 .canna $B$d(B default.canna $B$NFI$_9~$_$rB?>/$^$H$b$K$7$?!#(Bcanna $B@_Dj%U%!(B + $B%$%k$N%-!<%o!<%I(B quote setq set equal = > < progn eq cond null + not and or + - * / % gc load list cons car cdr atom let if boundp + fboundp getenv concat $B$KBP1~$7$?!#F0:n$,0[$J$k$+$bCN$l$J$$$1$I(B + +2000-09-30 Kaoru Nakajima + +* 2.2.0 defsymbol $B$N@_Dj$,M-8z$K$J$k$h$&$K$9$k(B + +2000-09-20 Kaoru Nakajima + +* 2.1.7 cannaserver $B$H$N@\B33NG'$K(B ping $B$r;H$&$N$r;_$a$F(B with-timeout $B$KJQ(B + $B99(B($BC+$5$s!"@P0f$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-09-14 Kaoru Nakajima + +* 2.1.6 yc-ping-option $B$r(B system-configuration $B$NCM$K1~$8$F<+F0@_Dj$9$k$h(B + $B$&$K$7$?!#(B + +2000-09-12 Kaoru Nakajima + +* 2.1.5 yc-ping $B$r(B ping $B$N=*N;$r(B 1 $BIC4V$@$1BT$D$h$&$K$7$?!#(Bping $B$,(B 1 $BIC4V(B + $B$G=*N;$7$J$+$C$?>l9g$K$O!"6/@)E*$K4"$jo=*N;$9$k(B + $B$+!"$7$J$$$+$O + +* 2.1.4 yc-ping-option $B;CDj$GDI2C(B($BC+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-09-01 Kaoru Nakajima + +* 2.1.3 $B4D6-JQ?tL>$r(B CANNA_LIB_DIR $B$O;_$a$F(B CANNALIBDIR $B$N$_$K$9$k(B($BC+$5$s(B + $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +* 2.1.3 yc $B%m!<%I;~$K(B cannaserver $B$H$D$J$,$i$J$+$C$?$i(B input-method $B$N@_Dj(B + $BJQ99$r$d$i$J$$$h$&$K$7$?(B($BC+$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +* 2.1.3 cannaserver $B$H$D$J$,$i$J$+$C$?$i(B global-yc-mode $B$^$?$O(B yc-mode $B$^(B + $B$?$O(B yc-input-mode $B$K$J$i$J$$$h$&$K$7$?(B($BC+$5$s(B $B$4;XE&$"$j$,$H$&$4(B + $B$6$$$^$9(B) + +2000-08-24 Kaoru Nakajima + +* 2.1.2 $B4D6-JQ?t(BCANNA_LIB_DIR $B$,L5$/$F(B yc-canna-lib-path $B$N@_Dj$b$J$$$H%((B + $B%i! + +* 2.1.1 yc-canna-lib-path $B$,(B nil $B$K$J$C$F$bF0$/$h$&$K$7$?!#(B($BC+$5$s(B $B$4;XE&(B + $B$"$j$,$H$&$4$6$$$^$9(B) + +* 2.1.1 $B4D6-JQ?t(BCANNA_LIB_DIR $B$r(B yc-canna-lib-path $B$NCM$K0z$-7Q$0$h$&$K$7(B + $B$?!#(BCANNA_LIB_DIR $B$,6uJ8;zNs$G$bM-8z$K$J$k$N$GMWCm0U!#(B($BC+$5$s(B $B$4;X(B + $BE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-06-29 Kaoru Nakajima + +* 2.1.0 $BBg2~B$!#%3!<%I$N=L>.2=!#(Bglobal-yc-mode $B$NDI2C$H(B yc-toggle-level $B$N(B + $B:o=|!#(B + +2000-05-17 Kaoru Nakajima + +* 2.0.15 $B=*N;=hM}$^$o$j$r(B kill-emacs $B$G$d$k$h$&$K$7$?!#%7%s%W%k$K$O$J$C$?(B + $B$1$I8+$?L\$O!D(B($BLpLZ$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-05-16 Kaoru Nakajima + +* 2.0.14 yc-forward-bunsetsu $B$G(B yc-yomi-hiranaga $B$K$J$C$F$$$?2U=j$r(B + yc-yomi-hiragana $B$K=$@5(B + +* 2.0.14 byte compile $B;~$N(B viper $B4XO"$N(B warning $BBP:v(B(byte-compile-depth $B8+(B + $B$FNI$$$N$+!)(B) + +* 2.0.14 $B=*N;;~=hM}$NJQ99!#(Bsave-buffers-kill-emacs $B$N=q$-49$($r;_$a$F(B + defadvice $B$9$k(B($B$b$7$/$O(B pre-command-hook / post-command-hook $B$G=h(B + $BM}$rDI2C(B) + +2000-05-13 Kaoru Nakajima + +* 2.0.13 yc-defword-cancel $B$G(B delete-overlay $B$7$F$$$kLdBj$rBP=h(B + +* 2.0.13 save-buffers-kill-emacs $B$G=*N;$7$J$+$C$?$H$-$K(B yc $B$r:F=i4|2=$9$k(B + $B$h$&$K$7$?(B($BLpLZ$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-05-12 Kaoru Nakajima + +* 2.0.12 (not yc-use-color) $B$N;~$K(B yc-defword $B$G(B delete-overlay $B$7$F$$$kLd(B + $BBj$rBP=h(B($BLpLZ$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +* 2.0.12 id / perl $B$,L5$$$H$-$K(B call-process $B$N<:GT$rJaB*$7$F$$$J$$LdBj$r(B + $BBP=h(B($BLpLZ$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +* 2.0.12 id / perl $B$NJV5QCM$r??56CM$H$7$FH=Dj$7$F$$$kLdBj$rBP=h(B($BLpLZ$5$s(B + $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-03-13 Kaoru Nakajima + +* 2.0.11 $B!X$&!+!Y$rJQ49$7$?$H$-$KA43Q!X!+!Y$,H>3Q!X!+!Y$K$J$kLdBj$rBP=h(B + +2000-03-12 Kaoru Nakajima + +* 2.0.10 $B$R$i2>L>F~NOCf$K(B C-n $B$^$?$O(B C-p $B$G;zL>JQ49%F!<%V%k$KL5$$J8;z(B + $B$,4^$^$l$F$$$?>l9g$K(B yc-alphabet-internal $B$G<:GT$9$kLdBj$NBP=h(B + +* 2.0.8 cannaserver $B$,;`$s$@$H$-$K!"(Byc $B$+$iH4$1$J$/$J$k(B(yc $B$,(B cannaserver + $B$N1~Ez$rBT$AB3$1$k(B)$BLdBj$rBP=h(B($BB<>e$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-03-10 Kaoru Nakajima + +* 2.0.7 $BJQ49;~$K?'$,$D$/$h$&$K$7$?(B + +2000-03-09 Kaoru nakajima + +* 2.0.5 $BJQ49Cf$NJ8@a$,F~NO$7$?%m!<%^;z$GI=8=$G$-$J$$>uBV$KJ,CG$5$l$?J8@a$,(B + $BBgNL$K$"$k(B(vi $B$r(B 360$B8DF~NO!"JQ49$7$?(B)$B>l9g$K!"=hM};~4V$,$+$+$C$F$$(B + $B$?$N$rBP=h!#(B($BB<>e$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-03-08 Kaoru Nakajima + +* 2.0.4 $B0lMwI=<(Cf$K(B C-i $B$GJ8@a=L$a$K$J$i$J$+$C$?$N$rBP=h(B($BB<>e$5$s(B $B$4;XE&(B + $B$"$j$,$H$&$4$6$$$^$9(B) + +* 2.0.4 $B!X$&!+!Y$N%+%?%+%J$H$7$F!X%t!Y$,=P$k$h$&$K$7$?(B($B@P0f(B@$B%=%K!<$5$s(B $B$4(B + $B;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-03-04 Kaoru Nakajima + +* 2.0.3 xemacs $B$N(B isearch mode $B;~$KJQ49$r3NDj$9$k$H(B + isearch-nonincremental-exit-minibuffer $B$9$k$h$&$K$7$?!#8D?ME*$K$O(B + $BG + +* 2.0.2 fence $B%b!<%I$GJQ49$r$+$1$F:FF~NO$r;O$a$?$H$-$K3NDj$r$7$F$$$J$+$C$?(B + $BLdBj$rBP=h(B($BB + +* 2.0.1 canna $B$N%i%$%V%i%j!<%Q%9$K(B /var/lib/canna $B$rDI2C$7$?(B($BB + +* 2.0.0 cl $B$r;H$o$J$$$h$&$K$7$?!#(B + +* 2.0.0 viper $B$G(B minibuffer $B$r;H$C$F$$$k$H$-$K3NDj$G(B minibuffer $B$rH4$1$F$7(B + $B$^$&LdBj$rBP=h(B + +2000-02-18 Kaoru Nakajima + +* 1.99.13 canna $B$N@_Dj(B stay-after-validate $B$KBP1~(B($B@P0f(B@$B%=%K!<$5$s(B $B$4;XE&$"(B + $B$j$,$H$&$4$6$$$^$9(B) + +2000-02-16 Kaoru Nakajima + +* 1.99.12 $B%m!<%^;z$+$J%F!<%V%k$NFI$_9~$_$G!"(B suffix $B$,(B .kp $B$N%U%!%$%k$NFI(B + $B$_9~$_;~4A;z%3!<%I$r(B euc $B$K$7$F$$$J$+$C$?$N$r=$@5(B($B@P0f(B@$B%=%K!<$5$s(B + $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-02-15 Kaoru Nakajima + +* 1.99.11 boil $B$GJQ49$7$?8e$K(B undo $B$rl9g$K(B undo $B$r(B 2 $B2sF~NO$7$J$$(B + $B$H%m!<%^;z$KLa$i$J$/$J$C$F$$$?$N$r=$@5(B + +2000-02-11 Kaoru Nakajima + +* 1.99.10 file-exists-p $B$d(B file-readable-p $B$K(B nil $B$rEO$9$HBT$C$A$c$&$_$?$$(B + $B$J$s$G(B nil $B$rEO$5$J$$$h$&$K=$@5(B($BB! + +* 1.99.8 default.canna $B$H(B .canna $B$NFI$_9~$_=hM}$G(B default.canna $B$N@_Dj$K(B + .canna $B$N@_Dj$,(B append $B$7$F$7$^$&$N$r(B overwrite $B$9$k$h$&$K$7$?(B + ($B@P0f(B@$B%=%K!<$5$s(B $B$4;XE&$"$j$,$H$&$4$6$$$^$9(B) + +2000-02-03 Kaoru Nakajima + +* 1.99.7 fence-mode $B$NF~NO4X?t$,(B xemacs $B$GF~NOJ8;z$r$H$j$3$\$9$3$H$,$"$k$N(B + $B$r=$@5$7$?!#(B + +2000-02-01 Kaoru Nakajima + +* 1.99.5 $B%m!<%^;zJQ49%F!<%V%k$KL5$$J8;zNs0J9_$N%m!<%^;zJQ49$,=PMh$J$$;~$N(B + $B8!:wBG$A@Z$j=hM}$rDI2C$7$?!#(B($B@P0f(B@$B%=%K!<$5$s(B $B$4;XE&$"$j$,$H$&$4$6(B + $B$$$^$9(B) + +2000-01-31 Kaoru Nakajima + +* 1.99.3 $B%m!<%^;z$+$JJQ49%F!<%V%k$N8!:w=g=x$NBP1~$,$$$D$N4V$K$+H4$1$F$$$?(B + $B$N$G:FDI2C$7$?!#(B + +* 1.99.3 xemacs 20.4 $B$G(B redirect-frame-focus $B$,L5$$$?$a!"(Bminibuffer $B$K%+!<(B + $B%=%k$r$b$C$F9T$/=hM}$,A4LG$7$F$$$k$3$H$,H=L@!#BP=h:Q(B + +* 1.99.3 XEmacs 20.4 $B$X$NBP1~!#>/$J$/$H$b5/F0$G$-$k$h$&$K$O$7$?$7!"(B + fence-mode $B$b;H$($k$h$&$K$7$?!#(B + +* 1.99.1 $BJQ49$7$?J8;zNs$,D9$/$F!"J8@a?t$,KDBg$K$J$C$?>l9g$KE`$jIU$/8=>]$r(B + $B3NG'!#BP=h:Q(B + +2000-01-30 Kaoru Nakajima + +* 1.99.0 $B$$$o$f$k(B fence-mode $B$r$D$1$?(B + +1999-12-01 Kaoru Nakajima + +* 1.0.4 $B%m!<%^;z$+$JJQ49%F!<%V%k$N8!:w=g=x$r(B + $B%+%l%s%H(B -> $B%[!<%`(B -> $(CANNALIBDIR)/dic + $B$N=g=x$K$J$k$h$&$K$9$k(B($B;0=EBg$NK\ED$5$s(B $B%Q%C%A$"$j$,$H$&$4$6$$$^$9(B) + +1999-11-01 Kaoru Nakajima + +* $B%$%s%/%j%a%s%?%k%5!<%ACf$G3NDj$7$?$i!"$9$0$K%$%s%/%j%a%s%?%k%5!<%A$,:F3+(B + $B$9$k$h$&$K$7$?(B + +1999-10-14 Kaoru Nakajima + +* minibuffer $B$GJQ49$r3+;O$7$?>l9g$K0lMw%b!<%I$,$&$^$/F0$+$J$$!#0l1~!"0lMw(B + $B%b!<%I$K$J$i$J$$$h$&$K$O$7$?$1$I!":Y$+$$=j$G$*$+$7$$$+$bCN$l$J$$!#$1$IBP(B + $B=h:Q(B + +1999-10-13 Kaoru Nakajima + +* $B%$%s%/%j%a%s%?%k%5!<%ACf$K$b;H$($k$h$&$K$7$F$_$?!#%T!<%T!<$&$k$5$$$1$I(B + +1999-10-12 Kaoru Nakajima + +* minibuffer $B$rJL%U%l!<%`$K$7$F$$$k;~$NBP=hJ}K!$rJQ99(B + +1999-10-08 Kaoru Nakajima + +* "$B$&!+(B"$B$r0lJ8;z$H$7$F07$&$h$&$K$7$?(B +* yc $B$N%H%0%kHO0O$r;XDj$G$-$k$h$&$K$7$?(B + +1999-10-07 Kaoru Nakajima + +* $B$+$s$J%5!<%P%[%9%H$r(B ~/.emacs $B$G;XDj$G$-$k$h$&$K$9$k(B($B;0=EBg$NK\ED$5$s(B $B%Q%C(B + $B%A$"$j$,$H$&$4$6$$$^$9(B) +* $BJ8@a=L$a;~$K(B"$B$&!+(B"$B$,J,CG$5$l$J$$$h$&$K$7$?(B + +1999-06-17 Kaoru Nakajima + +* minibuffer $B$rJL%U%l!<%`$K$7$F$$$k;~$K!"A*Br(B/$BEPO?%b!<%I;~$N%U%l!<%`(B($B%P%C(B + $B%U%!(B)$B$N@ZBX$($,$*$+$7$$LdBj$NBP=h(B + +1999-04-28 Kaoru Nakajima + +* fence-mode $B;~$N(B C-e $B$NF0:n$,CY$+$C$?$N$G$=$NItJ,$r9bB.2=(B + debian/patches/hardening0000644000000000000000000000174511777127562012525 0ustar Description: Apply hardening This program contain icanna which is C program. icanna should be hardening . yc-el (5.0.0-2) unstable; urgency=low . [ Yukiharu YABUKI ] * remove lintian warnning Author: Yukiharu YABUKI --- Origin: vendor Forwarded: not-needed Reviewed-By: Yukiharu YABUKI Last-Update: 2012-07-11 --- yc-el-5.0.0.orig/Makefile +++ yc-el-5.0.0/Makefile @@ -36,9 +36,13 @@ INSTALL_PATH = $(prefix)/usr/lib/yc-el elc = yc.elc PROGRAM = icanna$(exesuffix) OBJS = icanna.o -CFLAGS = -g +#CFLAGS = -g +CFLAGS = -Wall -O2 +CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) CC = gcc INSTALL = install +CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS) +LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) #ifeq ($(DISTRO), Debian) all: $(PROGRAM) @@ -54,7 +58,7 @@ all: $(PROGRAM) $(PROGRAM): $(OBJS) - $(CC) -o $(PROGRAM) $(OBJS) + $(CC) $(CPPFLAGS) $(CFLANGS) $(LDFLAGS) -o $(PROGRAM) $(OBJS) clean: #ifeq ($(DISTRO), Debian) debian/patches/series0000644000000000000000000000007011777321034012034 0ustar new-upstream-5.0.0 hardening workaround-when-kill-emacs debian/emacsen-startup0000644000000000000000000000333711354045116012232 0ustar ;; -*-emacs-lisp-*- ;; ;; Emacs startup file for the Debian yc-el package ;; ;; Originally contributed by Nils Naumann ;; Modified by Dirk Eddelbuettel ;; Adapted for dh-make by Jim Van Zandt ;; The yc-el package follows the Debian/GNU Linux 'emacsen' policy and ;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, ;; xemacs19, emacs20, xemacs20...). The compiled code is then ;; installed in a subdirectory of the respective site-lisp directory. ;; We have to add this to the load-path: (let ((package-dir (concat "/usr/share/" (symbol-name flavor) "/site-lisp/yc-el"))) (when (file-directory-p package-dir) (if (fboundp 'debian-pkg-add-load-path-item) (debian-pkg-add-load-path-item package-dir) (setq load-path (cons package-dir load-path)) ) ) (if (not (file-exists-p (concat package-dir "/yc.elc"))) (message "Package yc-el not fully installed. Skipping setup.") ;; ----- Not Found ;; ----- Found (progn (message "Package yc-el fully installed.") ; ; Do you have mule(MULti-ingual Enancement to GNU Emacs) feature? ; (message "before checking MULE feature") (when (featurep 'mule) (progn (global-set-key "\M-\ " 'yc-mode) (setq yc-stop-chars "(){}<>") (setq yc-server-host "unix") (setq yc-use-color t) (setq yc-icanna-path "/usr/lib/yc-el/icanna") ;; comment the following 3 lines to not to activate yc-el per default. (setq yc-connect-server-at-startup nil) (load-library "yc") (force-yc-input-mode) ) ) ) ) ) debian/copyright0000644000000000000000000000243311421525245011124 0ustar This package was originally debianized by Takuo KITAME on Thu, 14 Oct 1999 21:58:06 +0900. And then taken up by Junichi Uekawa on 25 Dec 2001. This package was re-debianized by Yukiharu YABUKI on Sat, 10 Dec 2005 14:17:10 +0900. It was downloaded from Copyright Holder: Kaoru Nakajima Copyright: 1999 - Kaoru Nakajima License: This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'. debian/yc-el.lintian-overrides0000644000000000000000000000007311776646317013601 0ustar yc-el: hardening-no-fortify-functions usr/lib/yc-el/icanna debian/NEWS.Debian0000644000000000000000000000226511421530125011045 0ustar Dear yc-el users. 2010-Jul-21 Yukiharu YABUKI Time files like an arrow. Original yc-el has not adapted to Emacs 23 yet. Shuichi ONO-san gave me Emacs 23 patch for yc-4.0.13. I would like to work well yc-el on Emacs23 and XEmacs. I merged ONO-san's patch and added cases for Emacs23 and others. Unfortunately I found a bug. When you convert from hirakana to kanji, I can see only first kanji charactor. I tested on XEmacs. It was okay. This bug happend on Emacs 23. If you find how to fix this problem, please send patch. Please submit this bug report to bugs.debian.org Best Yukiharu. 2006-Feb-03 YABUKI Yukiharu yc-el_4.0.13-2_${Arch}.deb or earlier has init script which is "/etc/${flavor}/site-start.d/yc-el/50yc-el-init.el". yc-el_4.0.13-3_${Arch}.deb or later has init script which is "/etc/emacs/site-start.d/yc-el/50yc-el.el". When you upgrade from "yc-el_4.0.13-2_${Arch}.deb" or earlier to "yc-el_4.0.13-3_${Arch}.deb" or later, You lose customized settings in 50yc-el-init.el. But yc-el_4.0.13-3_${Arch}.deb can preserve customized settings in 50yc-el.el When Debian stable users upgrade from Sarge to Etch, people mention this document. debian/README.Debian0000644000000000000000000000161411354045116011231 0ustar yc-el for Debian ---------------- On using yc.el, it is recommended to insert following line in your ~/.emacs. (load "yc") ; load yc (global-yc-mode) ; globally enable ANK-Kanji translation (these configurations are no longer required since 4.0.13-1, yc-el will work out-of-the-box) and optionally: (setq yc-use-color t) (setq yc-use-fence t) (global-set-key "\M-\ " 'yc-mode) (setq yc-server-host "your canna server host") ;; default "unix" Using yc and canna over network =============================== To use YC over network, you will need to reconfigure canna so that it will allow connections from the network, and set (setq yc-server-host "cannaserver's hostname") Documentation ============= Documentation in Japanese is available as /usr/share/doc/yc-el/yc.html It includes the changelog in Japanese. -- Yukiharu YABUKI , Sat, 10 Dec 2005 14:17:10 +0900 debian/control0000644000000000000000000000116711776654617010622 0ustar Source: yc-el Section: lisp Priority: optional Maintainer: Yukiharu YABUKI Build-Depends: debhelper (>= 7.0.0) Standards-Version: 3.9.3 Package: yc-el Architecture: any Depends: emacs23 | emacs21 | xemacs21-mule | xemacs21-mule-canna-wnn | xemacs21-gnome-mule-canna-wnn | xemacs21-gnome-mule | emacs-snapshot, ${shlibs:Depends}, ${misc:Depends} Suggests: canna Description: Yet another Canna client for Emacsen Canna client for emacs21 or xemacs with MULE support. yc.el is implemented in pure elisp, allowing use of Canna on emacsen without direct support for Canna. . Canna is a Japanese input method. debian/docs0000644000000000000000000000002511354045116010036 0ustar KEY-BINDINGS yc.html debian/changelog0000644000000000000000000003212311777603620011052 0ustar yc-el (5.0.0-5) unstable; urgency=low * Correct DEP-3 header (Cloeses: #681366) -- Yukiharu YABUKI Fri, 13 Jul 2012 02:21:51 +0900 yc-el (5.0.0-4) unstable; urgency=low * Apply bug fix which Upstream fixed bug. (version 5.2.1) -- Yukiharu YABUKI Tue, 12 Jul 2012 01:09:51 +0900 yc-el (5.0.0-3) unstable; urgency=low * Change section * Improve debian/patches --- names -- Yukiharu YABUKI Tue, 11 Jul 2012 07:42:51 +0900 yc-el (5.0.0-2) unstable; urgency=low [ Yukiharu YABUKI ] * remove lintian warnning -- Yukiharu YABUKI Mon, 10 Jul 2012 02:05:51 +0900 yc-el (5.0.0-1) unstable; urgency=low [ Yukiharu YABUKI ] * New Upstream * Removed Dependency of Emacs 22 (closes: #577468) * Added Dependency of Emacs 23 * Adapting for Emacs 23 (Thanks Kouichi ONO-san) * Converted to source format version 3 -- Yukiharu YABUKI Wed, 21 Jul 2010 14:30:51 +0900 yc-el (4.0.13-9) unstable; urgency=low [ Yukiharu YABUKI ] * Update Standards-version (3.8.2) - (1) update compat = 5 - (2) ignore rm error in Makefile. When rm does not find target. - (3) add copyright year in debian/copyright. - (4) fix lintian error in debian/rules - (5) Use dh_prep instead of dh_clean -k. - (6) Update Build-Depends debhelper version in debian/control. -- Yukiharu YABUKI Sun, 28 Jun 2009 01:02:54 +0900 yc-el (4.0.13-8) unstable; urgency=low * fixed: yc-el handling nostrip build option. (closes: #438354) - (1) Add CFLAGS in Makefile. - (2) Remove -s(strip) option from install command in Makefile. - (3) Add ifneq sentense in Makefile. - (4) Correct install binary path in Makefile. * fixed: yc-el prefer emacs22 (closes: #433978) - I modified 'Depends:' in controle file. * other minor fixes. - Correct vaild email address in chagelog. -- Yukiharu YABUKI Sun, 25 Nov 2007 00:30:03 +0900 yc-el (4.0.13-7) unstable; urgency=low * fixed: re-fixed install script fails when it is invoked repeatedly - correct wrong parentheis. (closes: #403745) -- Yukiharu YABUKI Fri, 22 Dec 2006 06:57:05 +0900 yc-el (4.0.13-6) unstable; urgency=low * fixed install script fails when it is invoked repeatedly - Appy patch by hand. (closes: #403745) * Some Changes - Modify 'control' file -- We do not have xeamcs20 in offical debian repository. Delete xemacs20-* from Depends line. -- emacs-snapshot move in depends line. - Modified emacsen-install script. -- Yukiharu YABUKI Wed, 20 Dec 2006 01:38:00 +0900 yc-el (4.0.13-5) unstable; urgency=low * Add new dependency for emacs-snapshot (closes: #403151) * fixed startup fails if the package is removed but not purged - add check sentence in emacscen-startup (closes: #403283) * fixed startup doesn't use debian-pkg-add-load-path-item to set - I use debian-pkg-add-load-path-item if that function existed. (closes: #403284) * fixed install script loads site startup files redundantly - Be quite! :-) add '-no-site-file' flag (closes: #403285) * fixed cannot find the source file by find-function, etc - make symlink (exsample:ln -fs /usr/share/emacs/site-lisp/${PACKAGE/yc.el /usr/share/${FLAVOR}/site-lisp/${PACKAGE}/) (closes: #403286) -- Yukiharu YABUKI Sun, 17 Dec 2006 09:34:19 +0900 yc-el (4.0.13-4) unstable; urgency=low * Change Maintner Mail Address - I can not use old mail address. -- Yukiharu YABUKI Mon, 26 Jun 2006 19:54:08 +0900 yc-el (4.0.13-3) unstable; urgency=low [ Yukiharu YABUKI ] * remake yc-el package for adapting DH_COMPAT=4 - execute dh_make command for yc-el in Sarge. - adapt emacscen scripts (init/install/remove). - refine emacsen-init script for dh_make in Sarge. -- remove /etc//site-start.d/yc-el/50yc-el-init.el . -- add /etc/emacs/site-start.d/yc-el/50yc-el.el . - remake regular expression for uupdate command. - Add conflict with xemacs21-nomule and xemacs21-gnome-nomule . (yc-el needs MULE supported emacsen.) - Add /usr/share/doc/yc-el/NEWS.Debian which is upgrade notice. - When XEmacs21 point xemacs21*-nomule with alternatives then you install XEmacs21 with mule feature, yc-el package do 'byte compile' yc.el. * yc-el support configuration - preserve configuration (/etc//yc-el/50yc-el) (closes: #351463) [ Junichi Uekawa ] * add pbuilder test for basic installation test. - 1: icanna is ldd'able. - 2: yc-version is set -- Junichi Uekawa Sat, 11 Feb 2006 10:43:23 +0900 yc-el (4.0.13-2) unstable; urgency=low * Depends includes xemacs21-gnome-mule* variants. (closes: #270048) -- Junichi Uekawa Sun, 5 Sep 2004 15:41:03 +0900 yc-el (4.0.13-1) unstable; urgency=low * New upstream release - Fixes problem with autoloading yc-el. (do not try to connect to cannaserver on startup) * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html * Changed configuration to load-library YC as 4.0.11-1. Note: toggle-input-method will default to japanese-yc for all users. -- Junichi Uekawa Sat, 24 Jul 2004 01:25:32 +0900 yc-el (4.0.11-2) unstable; urgency=low * Do not autoload yc-el; it is impossible to reconfigure target canna server. (closes: #257878) It is impossible to configure canna server configuration when yc was autoloaded. -- Junichi Uekawa Tue, 6 Jul 2004 22:36:35 +0900 yc-el (4.0.11-1) unstable; urgency=low * New upstream release * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html * Autoload yc-el. yc-el-init.el calls load-library to load yc by default. (closes: #256227) -- Junichi Uekawa Sat, 26 Jun 2004 21:04:28 +0900 yc-el (4.0.10-1) unstable; urgency=low * New upstream release * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html -- Junichi Uekawa Thu, 10 Jun 2004 09:06:35 +0900 yc-el (4.0.8-1) unstable; urgency=low * New upstream release - fixes display corruption problem. * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html -- Junichi Uekawa Sat, 20 Mar 2004 19:06:42 +0900 yc-el (4.0.7-1) unstable; urgency=low * New upstream release - fixes issues on translating roma-ji tt -> small tsu * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html -- Junichi Uekawa Fri, 20 Feb 2004 08:13:43 +0900 yc-el (4.0.6-1) unstable; urgency=low * New upstream release * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html * debian/control: Remove reference to emacs20 package which was removed. Bug fix: "Half-broken dependency on emacs20", thanks to Martin Michlmayr (Closes: #232802). -- Junichi Uekawa Wed, 18 Feb 2004 07:17:17 +0900 yc-el (4.0.5-1) unstable; urgency=low * New upstream release * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html * Install newly added upstream documentation: - ChangeLog: the upstream changelog - KEY-BINDINGS: key bindings documentation in Japanese. -- Junichi Uekawa Fri, 16 Jan 2004 07:54:14 +0900 yc-el (4.0.4-1) unstable; urgency=low * New upstream release * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html -- Junichi Uekawa Sat, 27 Dec 2003 12:14:17 +0900 yc-el (4.0.3-1) unstable; urgency=low * New upstream release * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html -- Junichi Uekawa Sat, 13 Dec 2003 08:31:02 +0900 yc-el (4.0.2-1) unstable; urgency=low * New upstream release * Standards-Version: 3.6.1, just update. * Add documentation yc.html from upstream web page. 'debian/rules download-web' will try to update to new version. * Updated documentation "yc.html" from http://www.ceres.dti.ne.jp/~knak/yc.html * Update README.Debian with notes on the documentation. -- Junichi Uekawa Thu, 11 Dec 2003 23:25:45 +0900 yc-el (4.0.1-2) unstable; urgency=low * Do not check for orig.tar.gz existence in build process to fix build failure. (closes: #220850) -- Junichi Uekawa Sat, 15 Nov 2003 16:38:50 +0900 yc-el (4.0.1-1) unstable; urgency=low * New upstream release - upstream incorporated icanna path patch. -- Junichi Uekawa Mon, 10 Nov 2003 08:02:32 +0900 yc-el (4.0.0-1) experimental; urgency=low * New upstream release - upstream is distributing with a tarball, use that. - Now able to connect to UNIX domain sockets * Architecture is any not all, since it uses a C helper program for the socket connection. * patch to allow specifying icanna path, and install 'icanna' to /usr/lib/yc-el. * README.Debian: update * Change default to unix domain socket -- Junichi Uekawa Sun, 9 Nov 2003 08:44:52 +0900 yc-el (3.5.8-1) unstable; urgency=low * New upstream version * Standards-Version: 3.5.10 -- Junichi Uekawa Sun, 15 Jun 2003 15:00:08 +0900 yc-el (3.5.7-1) unstable; urgency=low * New upstream version -- Junichi Uekawa Wed, 28 May 2003 07:44:13 +0900 yc-el (3.5.5-1) unstable; urgency=low * New upstream version - fixes fence-mode being dark when background is dark. -- Junichi Uekawa Thu, 8 May 2003 02:29:37 +0900 yc-el (3.5.4-1) unstable; urgency=low * New upstream version. - fixes typo in set-face-highlight-p -- Junichi Uekawa Thu, 1 May 2003 07:24:16 +0900 yc-el (3.5.3-1) unstable; urgency=low * New upstream version * fix copyright file. -- Junichi Uekawa Sun, 27 Apr 2003 21:49:21 +0900 yc-el (3.5.0-1) unstable; urgency=low * New upstream version -- Junichi Uekawa Mon, 25 Nov 2002 22:01:23 +0900 yc-el (3.4.13-1) unstable; urgency=low * New upstream version - fixes problem with debug symbols being output to minibuffer. -- Junichi Uekawa Sun, 27 Oct 2002 15:51:32 +0900 yc-el (3.4.12-1) unstable; urgency=low * New upstream version * Standards-Version: 3.5.7 -- Junichi Uekawa Tue, 15 Oct 2002 20:34:53 +0900 yc-el (3.4.11-1) unstable; urgency=low * New upstream version - fixes bug in input of characters which are defsymboled in fence-mode. -- Junichi Uekawa Thu, 10 Oct 2002 12:47:36 +0900 yc-el (3.4.10-1) unstable; urgency=low * New upstream version * Non-native package (it was made into native package accidentally) add a rule in Debian-rules to facilitate creation of upstream tar.gz -- Junichi Uekawa Wed, 9 Oct 2002 16:34:48 +0900 yc-el (3.4.9-1) unstable; urgency=low * New upstream version -- Junichi Uekawa Mon, 7 Oct 2002 18:05:13 +0900 yc-el (3.4.6-2) unstable; urgency=low * README.Debian: Update notes so that it is possible to set up yc-el and canna -- Junichi Uekawa Mon, 13 May 2002 15:20:59 +0900 yc-el (3.4.6-1) unstable; urgency=low * New upstream version -- Junichi Uekawa Wed, 1 May 2002 20:08:48 +0900 yc-el (3.4.1-1) unstable; urgency=low * New upstream version -- Junichi Uekawa Sat, 30 Mar 2002 15:46:21 +0900 yc-el (3.3.3-1) unstable; urgency=low * New Maintainer. (closes: #74643) * New upstream version * Standards-Version: 3.5.6 * Updated debian/README.Debian, and debian/copyright, and debian/control files -- Junichi Uekawa Tue, 25 Dec 2001 23:36:01 +0900 yc-el (2.0.15-3) unstable; urgency=low * Change maintainer address to packages@qa.debian.org. * Fix typo in description, and improve the grammar while I'm at it (closes: #120908). * Use Build-Depends-Indep rather than Build-Depends. -- Colin Watson Fri, 30 Nov 2001 18:01:06 +0000 yc-el (2.0.15-2) unstable; urgency=low * Added build dependencies. * Standards-Version: 3.5.1 -- Adrian Bunk Sat, 17 Feb 2001 17:41:43 +0100 yc-el (2.0.15-1.1) unstable; urgency=low * debian/control: Maintainer: Debian QA Group -- Takuo KITAME Thu, 31 Aug 2000 11:36:23 +0900 yc-el (2.0.15-1) unstable; urgency=low * New upstream release. -- Takuo KITAME Thu, 29 Jun 2000 05:56:51 +0900 yc-el (0.0.19991014-3) unstable; urgency=low * emacsen-common: modified. -- Takuo KITAME Tue, 2 Nov 1999 04:06:01 +0900 yc-el (0.0.19991014-2) unstable; urgency=low * emacsen-install: a little fix. -- Takuo KITAME Fri, 22 Oct 1999 05:02:36 +0900 yc-el (0.0.19991014-1) unstable; urgency=low * Initial Release. -- Takuo KITAME Fri, 15 Oct 1999 12:59:12 +0900 debian/emacsen-remove0000644000000000000000000000135611354045116012024 0ustar #!/bin/sh -e # /usr/lib/emacsen-common/packages/remove/yc-el FLAVOR=$1 PACKAGE=yc-el if [ "X${FLAVOR}" = "X" ]; then echo Need argument to determin FLAVOR of emacs; exit 1; fi if [ "X${PACKAGE}" = "X" ]; then echo Internal error: need package name; exit 1; fi #;; 2005/12/15 we have emacs21 in Sarge. I think that yc-el package do not need to check emacs19 if [ ${FLAVOR} != emacs ]; then if test -x /usr/sbin/install-info-altdir; then echo remove/${PACKAGE}: removing Info links for ${FLAVOR} install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/yc-el.info.gz fi echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} fi debian/watch0000644000000000000000000000060611776621342010232 0ustar version=3 # Uncomment to examine a Webpage # #http://www.example.com/downloads.php yc-el-(.*)\.tar\.gz # Uncomment to examine a Webserver directory #http://www.ceres.dti.ne.jp/~knak/yc-4.0.13.tar.gz #http://www.ceres.dti.ne.jp/~knak/yc-(.*)\.(.*)\.(.*)\.tar\.gz debian uupdate http://www.ceres.dti.ne.jp/~knak/yc.html \ yc-([\d+\.]*).tar.gz debian uupdate debian/manpage.10000644000000000000000000000360511421525173010665 0ustar .\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH YC-EL SECTION "12·î 10, 2005" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME yc-el \- Japanese input method with canna in Emacsen .SH SYNOPSIS .B yc-el .\".RI [ options ] " files" ... .\".br .\".B bar .\".RI [ options ] " files" ... .SH DESCRIPTION This manual page documents briefly the .B yc-el .\"and .\".B bar .\"commands. yc-el is Japanese input method with canna in Emacsen. When you would like to use Japanse, you give emacs "M-x yc-el" or "c-\\" .PP .\" TeX users may be more comfortable with the \fB\fP and .\" \fI\fP escape sequences to invode bold face and italics, .\" respectively. .\"\fByc-el\fP is a program that... .SH OPTIONS You can write option for yc-el in .emacs. you should read documents in /usr/share/doc/yc-el/* .\"For a complete description, see the Info files. .\".TP .\".B \-h, \-\-help .\"Show summary of options. .\".TP .\".B \-v, \-\-version .\"Show version of program. .SH SEE ALSO .\".BR cannaserver (1), .BR cannaserver (1). .br .\"The programs are documented fully by .\".IR "The Rise and Fall of a Fooish Bar" , .\"available via the Info system. .SH AUTHOR yc-el was written by Kaoru Nakajima . .PP This manual page was written by Yukiharu YABUKI , for the Debian project (but may be used by others). debian/emacsen-startup.old0000644000000000000000000000346111354045116013005 0ustar ;; -*-emacs-lisp-*- ;; ;; Emacs startup file for the Debian yc-el package ;; ;; Originally contributed by Nils Naumann ;; Modified by Dirk Eddelbuettel ;; Adapted for dh-make by Jim Van Zandt ;; The yc-el package follows the Debian/GNU Linux 'emacsen' policy and ;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, ;; xemacs19, emacs20, xemacs20...). The compiled code is then ;; installed in a subdirectory of the respective site-lisp directory. ;; We have to add this to the load-path: (let ((package-dir (concat "/usr/share/" (symbol-name flavor) "/site-lisp/yc-el"))) (when (file-directory-p package-dir) (if (fboundp 'debian-pkg-add-load-path-item) (debian-pkg-add-load-path-item package-dir) (setq load-path (cons package-dir load-path)) ) ) ;;; check package removed? ;;;(message "flavor = [%s]" (symbol-name flavor)) (if (not (file-exists-p (concat package-dir "/yc.elc"))) (message "Package yc-el not fully installed. Skipping setup.") ;; ----- Not Found ;; ----- Found (progn (message "Package yc-el fully installed.") ; ; Do you have mule(MULti-ingual Enancement to GNU Emacs) feature? ; (message "before checking MULE feature") (when (featurep 'mule) (progn (global-set-key "\M-\ " 'yc-mode) (setq yc-stop-chars "(){}<>") (setq yc-server-host "unix") (setq yc-use-color t) (setq yc-icanna-path "/usr/lib/yc-el/icanna") ;; comment the following 3 lines to not to activate yc-el per default. (setq yc-connect-server-at-startup nil) (load-library "yc") (force-yc-input-mode) ) ) ) ) )