pax_global_header00006660000000000000000000000064125202716300014510gustar00rootroot0000000000000052 comment=914c1bd5fa0f94736f96d56c9a63a99d4f95b118 egg-4.2.0/000077500000000000000000000000001252027163000122555ustar00rootroot00000000000000egg-4.2.0/.gitignore000066400000000000000000000000061252027163000142410ustar00rootroot00000000000000*.elc egg-4.2.0/ATTIC/000077500000000000000000000000001252027163000131215ustar00rootroot00000000000000egg-4.2.0/ATTIC/AUTHORS000066400000000000000000000015441252027163000141750ustar00rootroot00000000000000KAWABATA, Taichi Menudiag improvement. MORIOKA Tomohiko Use of custom. NIIBE Yutaka Design a part of ITS programming. Wrote ITS: its.el its/hira.el Wrote egg.el, menudiag.el, egg-cnv.el, egg-com.el, and egg-mlh.el. Wrote backend conversion engine interface: ANTHY: egg/anthy.el, egg/anthyipc.el, SJ3: egg/sj3.el, egg/sj3rpc.el, WNN: egg/wnn.el, and egg/wnnrpc.el. KATAYAMA Yoshio Design ITS programming. Wrote its/hangul.el, its/erpin.el, its/pinyin.el, its/thai.el, and its/zhuyin.el. Satoru Tomura Designer/Implementor/Maintainer of EGG through V3.0. Discussion/Design around ITS. Suggestion around how to write code in LISP. Hisashi Miyashita Wrote CCL routines in tamago-com.el. egg-4.2.0/ATTIC/Makefile.in000066400000000000000000000062541252027163000151750ustar00rootroot00000000000000# Makefile --- Makefile of EGG V4.0 # Copyright (C) 1999, 2000 Free Software Foundation, Inc # Author: NIIBE Yutaka # TOMURA Satoru # Maintaner: Satoru Tomura .SUFFIXES: SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ datarootdir = @datarootdir@ VPATH = @srcdir@ #------------------------------------------------ # Configuration parameters #------------------------------------------------ # emacs you use EMACS = emacs # emacs lisp installation directory lispdir = @lispdir@ #------------------------------------------------ prefix = @prefix@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_INFO = install-info #--------------------------------------- # (1) make # ;; compile *.el files # (2) make install # ;; install files into the emacs site-lisp directory # ;; ex. /usr/local/share/emacs/site-lisp/egg DEPS = -l $(top_srcdir)/docomp.el BATCHFLAGS = -batch -q -no-site-file -no-init-file ETCS = Makefile docomp.el \ AUTHORS ChangeLog README TODO PROBLEMS INITELS = leim-list.el SRCS = ${TOPSRCS} ${EGGSRCS} ${ITSSRCS} TOPSRCS = \ egg.el \ egg-com.el \ egg-cnv.el \ egg-mlh.el \ egg-sim.el \ menudiag.el \ its.el \ its-keydef.el # EGGSRCS = \ egg/sj3rpc.el egg/sj3.el \ egg/anthyipc.el egg/anthy.el ITSSRCS = \ its/ascii.el \ its/aynu.el \ its/bixing.el \ its/erpin.el \ its/greek.el \ its/hankata.el \ its/hira.el \ its/jeonkak.el \ its/pinyin.el \ its/hangul.el \ its/kata.el \ its/thai.el \ its/quanjiao.el \ its/zenkaku.el \ its/zhuyin.el \ its/jiskana.el # ELCS = ${SRCS:.el=.elc} TOPELCS = ${TOPSRCS:.el=.elc} EGGELCS = ${EGGSRCS:.el=.elc} ITSELCS = ${ITSSRCS:.el=.elc} DIST = ${ETCS} ${SRCS} ${INITELS} all: ${ELCS} .SUFFIXES: .el .elc .el.elc: ${EMACS} ${BATCHFLAGS} ${DEPS} -f batch-byte-compile $< clean: rm -f ${ELCS} *~ */*~ \#* .\#* */\#* */.\#* distclean: rm -f ${ELCS} config.* Makefile install: install-site install-site: all echo "Egg system will be installed in ${lispdir}/egg...."; \ if [ -d ${lispdir}/egg ]; then \ echo "Clean up the previsous installation...."; \ rm -rf ${lispdir}/egg/*; \ else \ echo "Make the directory ${lispdir}/egg..."; \ mkdir ${lispdir}/egg; \ fi; \ # for FILE in ${TOPSRCS} ${TOPELCS} ${INITELS}; \ do \ ${INSTALL_DATA} $${FILE} ${lispdir}/egg/; \ done; \ # mkdir ${lispdir}/egg/egg ; \ for FILE in ${EGGSRCS} ${EGGELCS} ; \ do \ ${INSTALL_DATA} $${FILE} ${lispdir}/egg/egg; \ done; \ touch ${lispdir}/egg/egg/.nosearch; \ # mkdir ${lispdir}/egg/its ; \ for FILE in ${ITSSRCS} ${ITSELCS} ; \ do \ ${INSTALL_DATA} $${FILE} ${lispdir}/egg/its ; \ done; \ touch ${lispdir}/egg/its/.nosearch; \ uninstall-site: if [ -d ${lispdir}/egg ]; then \ rm -rf ${lispdir}/egg; \ fi # DEPENDENCIES egg/sj3rpc.elc: egg-com.elc egg/sj3.elc egg/wnnrpc.elc: egg-com.elc egg/wnn.elc egg.elc its/ascii.elc its/aynu.elc its/erpin.elc its/greek.elc \ its/hankata.elc its/hira.elc its/jeonkak.elc its/pinyin.elc \ its/hangul.elc its/kata.elc its/quanjiao.elc \ its/zenkaku.elc its/zhuyin.elc: its-keydef.elc egg-4.2.0/ATTIC/README.ja.txt000066400000000000000000000036221252027163000152130ustar00rootroot00000000000000 Tamago Version 4 NIIBE Yutaka KATAYAMA Yoshio TOMURA Satoru $B!V$?$^$4Bh(B4$BHG!W(B(Tamago 4)$B$r8x3+$7$^$9!#;HMQ5vBz>r7o$O(B GPL $B$G$9!#$9$Y$F(B $B$N%=!<%9$,(B Emacs Lisp $B$G!"$=$NB>(B Tamago $B$K4X$9$k5DO@$K;22C$7$?$$J}$r$*BT(B $B$A$7$F$$$^$9!#(B Tamago mailing list $B$K;22C4uK>$NJ}$O(B tamago-ctl@m17n.org $B08$K%a%$%k$N(B $BK\J8$K!!(B subscribe $B$"$J$?$NL>A0(B $B$N0l9T$r=q$$$?(B mail $B$r$*Aw$j$/$@$5$$!#(B $B$=$N8e!"3NG'$N(B mail $B$rFO$-$^$9(B $B$N$G!"$=$N(B mail $B$NCf$K$"$k(B confirm PASSWORD $B$"$J$?$NL>A0(B $B$N#19T$rK\J8$K$7$FJV;v$rAw$C$F$/$@$5$$!#(B $B;29M;qNA$H$7$FJR;3$5$s$,(B Linux Conference 99 $B$GH/I=$7$?(B Egg V4 (Egg Next Generation) $B$r%F%-%9%H%U%!%$%k$K$7$?$b$N$r(B doc/lc99.text $B$NCV$-$^(B $B$7$?!#$4Mw2<$5$$!#(B From Tamago 4 $B4IM}?M(B $B8MB<(B $BE/!J$H$`$i(B $B$5$H$k!K(B $B")(B305-8568 $B0q>k8)$D$/$P;TG_1`(B1-1-4 $BEE;R5;=QAm9g8&5f=j(B $B>pJs%"!<%-%F%/%A%cIt(B E-mail: tomura@etl.go.jp Phone: 0298-54-5887 FAX: 0298-54-5891 egg-4.2.0/ATTIC/configure000077500000000000000000002553271252027163000150460ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= PACKAGE_URL= ac_unique_file="egg.el" ac_subst_vars='LTLIBOBJS LIBOBJS lispdir SET_MAKE INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking ' ac_precious_vars='build_alias host_alias target_alias' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi lispdir=${datadir}/emacs/site-lisp ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi egg-4.2.0/ATTIC/configure.ac000066400000000000000000000005701252027163000154110ustar00rootroot00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT(egg.el) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_MAKE_SET dnl Checks for libraries. dnl Checks for header files. dnl Checks for typedefs, structures, and compiler characteristics. dnl Checks for library functions. lispdir=${datadir}/emacs/site-lisp AC_SUBST(lispdir) AC_OUTPUT(Makefile) egg-4.2.0/ATTIC/doc/000077500000000000000000000000001252027163000136665ustar00rootroot00000000000000egg-4.2.0/ATTIC/doc/code-table/000077500000000000000000000000001252027163000156655ustar00rootroot00000000000000egg-4.2.0/ATTIC/doc/code-table/euc-cn.text000066400000000000000000001307331252027163000177540ustar00rootroot00000000000000;;; -*- coding: euc-cn -*- | 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 01| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 02| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 03| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 04| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 05| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 06| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 07| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 08| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 09| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 10| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 11| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 12| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 13| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 14| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 15| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 16| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 17| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 18| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 19| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 20| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 21| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 22| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 23| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 24| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 25| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 26| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 27| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 28| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 29| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 30| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 31| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 32| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 33| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 34| "¡" "¢" "£" "¤" "¥" "¦" "§" "¨" "©" "ª" "«" "¬" "­" "®" "¯" "°" "±" "²" "³" "´" "µ" "¶" "·" "¸" "¹" "º" "»" "¼" "½" "¾" "¿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 35| "á" "â" "ã" "ä" "å" "æ" "ç" "è" "é" "ê" "ë" "ì" "í" "î" "ï" "ð" "ñ" "ò" "ó" "ô" "õ" "ö" "÷" "ø" "ù" "ú" "û" "ü" "ý" "þ" "ÿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 36| "ġ" "Ģ" "ģ" "Ĥ" "ĥ" "Ħ" "ħ" "Ĩ" "ĩ" "Ī" "ī" "Ĭ" "ĭ" "Į" "į" "İ" "ı" "IJ" "ij" "Ĵ" "ĵ" "Ķ" "ķ" "ĸ" "Ĺ" "ĺ" "Ļ" "ļ" "Ľ" "ľ" "Ŀ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 37| "š" "Ţ" "ţ" "Ť" "ť" "Ŧ" "ŧ" "Ũ" "ũ" "Ū" "ū" "Ŭ" "ŭ" "Ů" "ů" "Ű" "ű" "Ų" "ų" "Ŵ" "ŵ" "Ŷ" "ŷ" "Ÿ" "Ź" "ź" "Ż" "ż" "Ž" "ž" "ſ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 38| "ơ" "Ƣ" "ƣ" "Ƥ" "ƥ" "Ʀ" "Ƨ" "ƨ" "Ʃ" "ƪ" "ƫ" "Ƭ" "ƭ" "Ʈ" "Ư" "ư" "Ʊ" "Ʋ" "Ƴ" "ƴ" "Ƶ" "ƶ" "Ʒ" "Ƹ" "ƹ" "ƺ" "ƻ" "Ƽ" "ƽ" "ƾ" "ƿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 39| "ǡ" "Ǣ" "ǣ" "Ǥ" "ǥ" "Ǧ" "ǧ" "Ǩ" "ǩ" "Ǫ" "ǫ" "Ǭ" "ǭ" "Ǯ" "ǯ" "ǰ" "DZ" "Dz" "dz" "Ǵ" "ǵ" "Ƕ" "Ƿ" "Ǹ" "ǹ" "Ǻ" "ǻ" "Ǽ" "ǽ" "Ǿ" "ǿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 40| "ȡ" "Ȣ" "ȣ" "Ȥ" "ȥ" "Ȧ" "ȧ" "Ȩ" "ȩ" "Ȫ" "ȫ" "Ȭ" "ȭ" "Ȯ" "ȯ" "Ȱ" "ȱ" "Ȳ" "ȳ" "ȴ" "ȵ" "ȶ" "ȷ" "ȸ" "ȹ" "Ⱥ" "Ȼ" "ȼ" "Ƚ" "Ⱦ" "ȿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 41| "ɡ" "ɢ" "ɣ" "ɤ" "ɥ" "ɦ" "ɧ" "ɨ" "ɩ" "ɪ" "ɫ" "ɬ" "ɭ" "ɮ" "ɯ" "ɰ" "ɱ" "ɲ" "ɳ" "ɴ" "ɵ" "ɶ" "ɷ" "ɸ" "ɹ" "ɺ" "ɻ" "ɼ" "ɽ" "ɾ" "ɿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 42| "ʡ" "ʢ" "ʣ" "ʤ" "ʥ" "ʦ" "ʧ" "ʨ" "ʩ" "ʪ" "ʫ" "ʬ" "ʭ" "ʮ" "ʯ" "ʰ" "ʱ" "ʲ" "ʳ" "ʴ" "ʵ" "ʶ" "ʷ" "ʸ" "ʹ" "ʺ" "ʻ" "ʼ" "ʽ" "ʾ" "ʿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 43| "ˡ" "ˢ" "ˣ" "ˤ" "˥" "˦" "˧" "˨" "˩" "˪" "˫" "ˬ" "˭" "ˮ" "˯" "˰" "˱" "˲" "˳" "˴" "˵" "˶" "˷" "˸" "˹" "˺" "˻" "˼" "˽" "˾" "˿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 44| "̡" "̢" "̣" "̤" "̥" "̦" "̧" "̨" "̩" "̪" "̫" "̬" "̭" "̮" "̯" "̰" "̱" "̲" "̳" "̴" "̵" "̶" "̷" "̸" "̹" "̺" "̻" "̼" "̽" "̾" "̿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 45| "͡" "͢" "ͣ" "ͤ" "ͥ" "ͦ" "ͧ" "ͨ" "ͩ" "ͪ" "ͫ" "ͬ" "ͭ" "ͮ" "ͯ" "Ͱ" "ͱ" "Ͳ" "ͳ" "ʹ" "͵" "Ͷ" "ͷ" "͸" "͹" "ͺ" "ͻ" "ͼ" "ͽ" ";" "Ϳ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 46| "Ρ" "΢" "Σ" "Τ" "Υ" "Φ" "Χ" "Ψ" "Ω" "Ϊ" "Ϋ" "ά" "έ" "ή" "ί" "ΰ" "α" "β" "γ" "δ" "ε" "ζ" "η" "θ" "ι" "κ" "λ" "μ" "ν" "ξ" "ο" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 47| "ϡ" "Ϣ" "ϣ" "Ϥ" "ϥ" "Ϧ" "ϧ" "Ϩ" "ϩ" "Ϫ" "ϫ" "Ϭ" "ϭ" "Ϯ" "ϯ" "ϰ" "ϱ" "ϲ" "ϳ" "ϴ" "ϵ" "϶" "Ϸ" "ϸ" "Ϲ" "Ϻ" "ϻ" "ϼ" "Ͻ" "Ͼ" "Ͽ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 48| "С" "Т" "У" "Ф" "Х" "Ц" "Ч" "Ш" "Щ" "Ъ" "Ы" "Ь" "Э" "Ю" "Я" "а" "б" "в" "г" "д" "е" "ж" "з" "и" "й" "к" "л" "м" "н" "о" "п" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 49| "ѡ" "Ѣ" "ѣ" "Ѥ" "ѥ" "Ѧ" "ѧ" "Ѩ" "ѩ" "Ѫ" "ѫ" "Ѭ" "ѭ" "Ѯ" "ѯ" "Ѱ" "ѱ" "Ѳ" "ѳ" "Ѵ" "ѵ" "Ѷ" "ѷ" "Ѹ" "ѹ" "Ѻ" "ѻ" "Ѽ" "ѽ" "Ѿ" "ѿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 50| "ҡ" "Ң" "ң" "Ҥ" "ҥ" "Ҧ" "ҧ" "Ҩ" "ҩ" "Ҫ" "ҫ" "Ҭ" "ҭ" "Ү" "ү" "Ұ" "ұ" "Ҳ" "ҳ" "Ҵ" "ҵ" "Ҷ" "ҷ" "Ҹ" "ҹ" "Һ" "һ" "Ҽ" "ҽ" "Ҿ" "ҿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 51| "ӡ" "Ӣ" "ӣ" "Ӥ" "ӥ" "Ӧ" "ӧ" "Ө" "ө" "Ӫ" "ӫ" "Ӭ" "ӭ" "Ӯ" "ӯ" "Ӱ" "ӱ" "Ӳ" "ӳ" "Ӵ" "ӵ" "Ӷ" "ӷ" "Ӹ" "ӹ" "Ӻ" "ӻ" "Ӽ" "ӽ" "Ӿ" "ӿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 52| "ԡ" "Ԣ" "ԣ" "Ԥ" "ԥ" "Ԧ" "ԧ" "Ԩ" "ԩ" "Ԫ" "ԫ" "Ԭ" "ԭ" "Ԯ" "ԯ" "԰" "Ա" "Բ" "Գ" "Դ" "Ե" "Զ" "Է" "Ը" "Թ" "Ժ" "Ի" "Լ" "Խ" "Ծ" "Կ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 53| "ա" "բ" "գ" "դ" "ե" "զ" "է" "ը" "թ" "ժ" "ի" "լ" "խ" "ծ" "կ" "հ" "ձ" "ղ" "ճ" "մ" "յ" "ն" "շ" "ո" "չ" "պ" "ջ" "ռ" "ս" "վ" "տ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 54| "֡" "֢" "֣" "֤" "֥" "֦" "֧" "֨" "֩" "֪" "֫" "֬" "֭" "֮" "֯" "ְ" "ֱ" "ֲ" "ֳ" "ִ" "ֵ" "ֶ" "ַ" "ָ" "ֹ" "ֺ" "ֻ" "ּ" "ֽ" "־" "ֿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 55| "ס" "ע" "ף" "פ" "ץ" "צ" "ק" "ר" "ש" "ת" "׫" "׬" "׭" "׮" "ׯ" "װ" "ױ" "ײ" "׳" "״" "׵" "׶" "׷" "׸" "׹" "׺" "׻" "׼" "׽" "׾" "׿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 56| "ء" "آ" "أ" "ؤ" "إ" "ئ" "ا" "ب" "ة" "ت" "ث" "ج" "ح" "خ" "د" "ذ" "ر" "ز" "س" "ش" "ص" "ض" "ط" "ظ" "ع" "غ" "ػ" "ؼ" "ؽ" "ؾ" "ؿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 57| "١" "٢" "٣" "٤" "٥" "٦" "٧" "٨" "٩" "٪" "٫" "٬" "٭" "ٮ" "ٯ" "ٰ" "ٱ" "ٲ" "ٳ" "ٴ" "ٵ" "ٶ" "ٷ" "ٸ" "ٹ" "ٺ" "ٻ" "ټ" "ٽ" "پ" "ٿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 58| "ڡ" "ڢ" "ڣ" "ڤ" "ڥ" "ڦ" "ڧ" "ڨ" "ک" "ڪ" "ګ" "ڬ" "ڭ" "ڮ" "گ" "ڰ" "ڱ" "ڲ" "ڳ" "ڴ" "ڵ" "ڶ" "ڷ" "ڸ" "ڹ" "ں" "ڻ" "ڼ" "ڽ" "ھ" "ڿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 59| "ۡ" "ۢ" "ۣ" "ۤ" "ۥ" "ۦ" "ۧ" "ۨ" "۩" "۪" "۫" "۬" "ۭ" "ۮ" "ۯ" "۰" "۱" "۲" "۳" "۴" "۵" "۶" "۷" "۸" "۹" "ۺ" "ۻ" "ۼ" "۽" "۾" "ۿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 60| "ܡ" "ܢ" "ܣ" "ܤ" "ܥ" "ܦ" "ܧ" "ܨ" "ܩ" "ܪ" "ܫ" "ܬ" "ܭ" "ܮ" "ܯ" "ܰ" "ܱ" "ܲ" "ܳ" "ܴ" "ܵ" "ܶ" "ܷ" "ܸ" "ܹ" "ܺ" "ܻ" "ܼ" "ܽ" "ܾ" "ܿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 61| "ݡ" "ݢ" "ݣ" "ݤ" "ݥ" "ݦ" "ݧ" "ݨ" "ݩ" "ݪ" "ݫ" "ݬ" "ݭ" "ݮ" "ݯ" "ݰ" "ݱ" "ݲ" "ݳ" "ݴ" "ݵ" "ݶ" "ݷ" "ݸ" "ݹ" "ݺ" "ݻ" "ݼ" "ݽ" "ݾ" "ݿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 62| "ޡ" "ޢ" "ޣ" "ޤ" "ޥ" "ަ" "ާ" "ި" "ީ" "ު" "ޫ" "ެ" "ޭ" "ޮ" "ޯ" "ް" "ޱ" "޲" "޳" "޴" "޵" "޶" "޷" "޸" "޹" "޺" "޻" "޼" "޽" "޾" "޿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 63| "ߡ" "ߢ" "ߣ" "ߤ" "ߥ" "ߦ" "ߧ" "ߨ" "ߩ" "ߪ" "߫" "߬" "߭" "߮" "߯" "߰" "߱" "߲" "߳" "ߴ" "ߵ" "߶" "߷" "߸" "߹" "ߺ" "߻" "߼" "߽" "߾" "߿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 64| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 65| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 66| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 67| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 68| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 69| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 70| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 71| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 72| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 73| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 74| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 75| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 76| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 77| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 78| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 79| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 80| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 81| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 82| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 83| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 84| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 85| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 86| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 87| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 88| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 89| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 90| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 91| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 92| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 93| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 94| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/euc-jp.text000066400000000000000000001307331252027163000177650ustar00rootroot00000000000000;;; -*- coding: euc-jp -*- | 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 01| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 02| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 03| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 04| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 05| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 06| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 07| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 08| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 09| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 10| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 11| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 12| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 13| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 14| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 15| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 16| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 17| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 18| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 19| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 20| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 21| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 22| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 23| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 24| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 25| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 26| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 27| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 28| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 29| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 30| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 31| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 32| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 33| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 34| "¡" "¢" "£" "¤" "¥" "¦" "§" "¨" "©" "ª" "«" "¬" "­" "®" "¯" "°" "±" "²" "³" "´" "µ" "¶" "·" "¸" "¹" "º" "»" "¼" "½" "¾" "¿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 35| "á" "â" "ã" "ä" "å" "æ" "ç" "è" "é" "ê" "ë" "ì" "í" "î" "ï" "ð" "ñ" "ò" "ó" "ô" "õ" "ö" "÷" "ø" "ù" "ú" "û" "ü" "ý" "þ" "ÿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 36| "ġ" "Ģ" "ģ" "Ĥ" "ĥ" "Ħ" "ħ" "Ĩ" "ĩ" "Ī" "ī" "Ĭ" "ĭ" "Į" "į" "İ" "ı" "IJ" "ij" "Ĵ" "ĵ" "Ķ" "ķ" "ĸ" "Ĺ" "ĺ" "Ļ" "ļ" "Ľ" "ľ" "Ŀ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 37| "š" "Ţ" "ţ" "Ť" "ť" "Ŧ" "ŧ" "Ũ" "ũ" "Ū" "ū" "Ŭ" "ŭ" "Ů" "ů" "Ű" "ű" "Ų" "ų" "Ŵ" "ŵ" "Ŷ" "ŷ" "Ÿ" "Ź" "ź" "Ż" "ż" "Ž" "ž" "ſ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 38| "ơ" "Ƣ" "ƣ" "Ƥ" "ƥ" "Ʀ" "Ƨ" "ƨ" "Ʃ" "ƪ" "ƫ" "Ƭ" "ƭ" "Ʈ" "Ư" "ư" "Ʊ" "Ʋ" "Ƴ" "ƴ" "Ƶ" "ƶ" "Ʒ" "Ƹ" "ƹ" "ƺ" "ƻ" "Ƽ" "ƽ" "ƾ" "ƿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 39| "ǡ" "Ǣ" "ǣ" "Ǥ" "ǥ" "Ǧ" "ǧ" "Ǩ" "ǩ" "Ǫ" "ǫ" "Ǭ" "ǭ" "Ǯ" "ǯ" "ǰ" "DZ" "Dz" "dz" "Ǵ" "ǵ" "Ƕ" "Ƿ" "Ǹ" "ǹ" "Ǻ" "ǻ" "Ǽ" "ǽ" "Ǿ" "ǿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 40| "ȡ" "Ȣ" "ȣ" "Ȥ" "ȥ" "Ȧ" "ȧ" "Ȩ" "ȩ" "Ȫ" "ȫ" "Ȭ" "ȭ" "Ȯ" "ȯ" "Ȱ" "ȱ" "Ȳ" "ȳ" "ȴ" "ȵ" "ȶ" "ȷ" "ȸ" "ȹ" "Ⱥ" "Ȼ" "ȼ" "Ƚ" "Ⱦ" "ȿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 41| "ɡ" "ɢ" "ɣ" "ɤ" "ɥ" "ɦ" "ɧ" "ɨ" "ɩ" "ɪ" "ɫ" "ɬ" "ɭ" "ɮ" "ɯ" "ɰ" "ɱ" "ɲ" "ɳ" "ɴ" "ɵ" "ɶ" "ɷ" "ɸ" "ɹ" "ɺ" "ɻ" "ɼ" "ɽ" "ɾ" "ɿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 42| "ʡ" "ʢ" "ʣ" "ʤ" "ʥ" "ʦ" "ʧ" "ʨ" "ʩ" "ʪ" "ʫ" "ʬ" "ʭ" "ʮ" "ʯ" "ʰ" "ʱ" "ʲ" "ʳ" "ʴ" "ʵ" "ʶ" "ʷ" "ʸ" "ʹ" "ʺ" "ʻ" "ʼ" "ʽ" "ʾ" "ʿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 43| "ˡ" "ˢ" "ˣ" "ˤ" "˥" "˦" "˧" "˨" "˩" "˪" "˫" "ˬ" "˭" "ˮ" "˯" "˰" "˱" "˲" "˳" "˴" "˵" "˶" "˷" "˸" "˹" "˺" "˻" "˼" "˽" "˾" "˿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 44| "̡" "̢" "̣" "̤" "̥" "̦" "̧" "̨" "̩" "̪" "̫" "̬" "̭" "̮" "̯" "̰" "̱" "̲" "̳" "̴" "̵" "̶" "̷" "̸" "̹" "̺" "̻" "̼" "̽" "̾" "̿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 45| "͡" "͢" "ͣ" "ͤ" "ͥ" "ͦ" "ͧ" "ͨ" "ͩ" "ͪ" "ͫ" "ͬ" "ͭ" "ͮ" "ͯ" "Ͱ" "ͱ" "Ͳ" "ͳ" "ʹ" "͵" "Ͷ" "ͷ" "͸" "͹" "ͺ" "ͻ" "ͼ" "ͽ" ";" "Ϳ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 46| "Ρ" "΢" "Σ" "Τ" "Υ" "Φ" "Χ" "Ψ" "Ω" "Ϊ" "Ϋ" "ά" "έ" "ή" "ί" "ΰ" "α" "β" "γ" "δ" "ε" "ζ" "η" "θ" "ι" "κ" "λ" "μ" "ν" "ξ" "ο" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 47| "ϡ" "Ϣ" "ϣ" "Ϥ" "ϥ" "Ϧ" "ϧ" "Ϩ" "ϩ" "Ϫ" "ϫ" "Ϭ" "ϭ" "Ϯ" "ϯ" "ϰ" "ϱ" "ϲ" "ϳ" "ϴ" "ϵ" "϶" "Ϸ" "ϸ" "Ϲ" "Ϻ" "ϻ" "ϼ" "Ͻ" "Ͼ" "Ͽ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 48| "С" "Т" "У" "Ф" "Х" "Ц" "Ч" "Ш" "Щ" "Ъ" "Ы" "Ь" "Э" "Ю" "Я" "а" "б" "в" "г" "д" "е" "ж" "з" "и" "й" "к" "л" "м" "н" "о" "п" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 49| "ѡ" "Ѣ" "ѣ" "Ѥ" "ѥ" "Ѧ" "ѧ" "Ѩ" "ѩ" "Ѫ" "ѫ" "Ѭ" "ѭ" "Ѯ" "ѯ" "Ѱ" "ѱ" "Ѳ" "ѳ" "Ѵ" "ѵ" "Ѷ" "ѷ" "Ѹ" "ѹ" "Ѻ" "ѻ" "Ѽ" "ѽ" "Ѿ" "ѿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 50| "ҡ" "Ң" "ң" "Ҥ" "ҥ" "Ҧ" "ҧ" "Ҩ" "ҩ" "Ҫ" "ҫ" "Ҭ" "ҭ" "Ү" "ү" "Ұ" "ұ" "Ҳ" "ҳ" "Ҵ" "ҵ" "Ҷ" "ҷ" "Ҹ" "ҹ" "Һ" "һ" "Ҽ" "ҽ" "Ҿ" "ҿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 51| "ӡ" "Ӣ" "ӣ" "Ӥ" "ӥ" "Ӧ" "ӧ" "Ө" "ө" "Ӫ" "ӫ" "Ӭ" "ӭ" "Ӯ" "ӯ" "Ӱ" "ӱ" "Ӳ" "ӳ" "Ӵ" "ӵ" "Ӷ" "ӷ" "Ӹ" "ӹ" "Ӻ" "ӻ" "Ӽ" "ӽ" "Ӿ" "ӿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 52| "ԡ" "Ԣ" "ԣ" "Ԥ" "ԥ" "Ԧ" "ԧ" "Ԩ" "ԩ" "Ԫ" "ԫ" "Ԭ" "ԭ" "Ԯ" "ԯ" "԰" "Ա" "Բ" "Գ" "Դ" "Ե" "Զ" "Է" "Ը" "Թ" "Ժ" "Ի" "Լ" "Խ" "Ծ" "Կ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 53| "ա" "բ" "գ" "դ" "ե" "զ" "է" "ը" "թ" "ժ" "ի" "լ" "խ" "ծ" "կ" "հ" "ձ" "ղ" "ճ" "մ" "յ" "ն" "շ" "ո" "չ" "պ" "ջ" "ռ" "ս" "վ" "տ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 54| "֡" "֢" "֣" "֤" "֥" "֦" "֧" "֨" "֩" "֪" "֫" "֬" "֭" "֮" "֯" "ְ" "ֱ" "ֲ" "ֳ" "ִ" "ֵ" "ֶ" "ַ" "ָ" "ֹ" "ֺ" "ֻ" "ּ" "ֽ" "־" "ֿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 55| "ס" "ע" "ף" "פ" "ץ" "צ" "ק" "ר" "ש" "ת" "׫" "׬" "׭" "׮" "ׯ" "װ" "ױ" "ײ" "׳" "״" "׵" "׶" "׷" "׸" "׹" "׺" "׻" "׼" "׽" "׾" "׿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 56| "ء" "آ" "أ" "ؤ" "إ" "ئ" "ا" "ب" "ة" "ت" "ث" "ج" "ح" "خ" "د" "ذ" "ر" "ز" "س" "ش" "ص" "ض" "ط" "ظ" "ع" "غ" "ػ" "ؼ" "ؽ" "ؾ" "ؿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 57| "١" "٢" "٣" "٤" "٥" "٦" "٧" "٨" "٩" "٪" "٫" "٬" "٭" "ٮ" "ٯ" "ٰ" "ٱ" "ٲ" "ٳ" "ٴ" "ٵ" "ٶ" "ٷ" "ٸ" "ٹ" "ٺ" "ٻ" "ټ" "ٽ" "پ" "ٿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 58| "ڡ" "ڢ" "ڣ" "ڤ" "ڥ" "ڦ" "ڧ" "ڨ" "ک" "ڪ" "ګ" "ڬ" "ڭ" "ڮ" "گ" "ڰ" "ڱ" "ڲ" "ڳ" "ڴ" "ڵ" "ڶ" "ڷ" "ڸ" "ڹ" "ں" "ڻ" "ڼ" "ڽ" "ھ" "ڿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 59| "ۡ" "ۢ" "ۣ" "ۤ" "ۥ" "ۦ" "ۧ" "ۨ" "۩" "۪" "۫" "۬" "ۭ" "ۮ" "ۯ" "۰" "۱" "۲" "۳" "۴" "۵" "۶" "۷" "۸" "۹" "ۺ" "ۻ" "ۼ" "۽" "۾" "ۿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 60| "ܡ" "ܢ" "ܣ" "ܤ" "ܥ" "ܦ" "ܧ" "ܨ" "ܩ" "ܪ" "ܫ" "ܬ" "ܭ" "ܮ" "ܯ" "ܰ" "ܱ" "ܲ" "ܳ" "ܴ" "ܵ" "ܶ" "ܷ" "ܸ" "ܹ" "ܺ" "ܻ" "ܼ" "ܽ" "ܾ" "ܿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 61| "ݡ" "ݢ" "ݣ" "ݤ" "ݥ" "ݦ" "ݧ" "ݨ" "ݩ" "ݪ" "ݫ" "ݬ" "ݭ" "ݮ" "ݯ" "ݰ" "ݱ" "ݲ" "ݳ" "ݴ" "ݵ" "ݶ" "ݷ" "ݸ" "ݹ" "ݺ" "ݻ" "ݼ" "ݽ" "ݾ" "ݿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 62| "ޡ" "ޢ" "ޣ" "ޤ" "ޥ" "ަ" "ާ" "ި" "ީ" "ު" "ޫ" "ެ" "ޭ" "ޮ" "ޯ" "ް" "ޱ" "޲" "޳" "޴" "޵" "޶" "޷" "޸" "޹" "޺" "޻" "޼" "޽" "޾" "޿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 63| "ߡ" "ߢ" "ߣ" "ߤ" "ߥ" "ߦ" "ߧ" "ߨ" "ߩ" "ߪ" "߫" "߬" "߭" "߮" "߯" "߰" "߱" "߲" "߳" "ߴ" "ߵ" "߶" "߷" "߸" "߹" "ߺ" "߻" "߼" "߽" "߾" "߿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 64| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 65| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 66| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 67| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 68| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 69| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 70| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 71| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 72| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 73| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 74| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 75| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 76| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 77| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 78| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 79| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 80| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 81| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 82| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 83| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 84| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 85| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 86| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 87| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 88| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 89| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 90| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 91| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 92| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 93| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 94| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/euc-kr.text000066400000000000000000001307331252027163000177700ustar00rootroot00000000000000;;; -*- coding: euc-kr -*- | 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 01| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 02| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 03| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 04| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 05| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 06| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 07| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 08| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 09| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 10| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 11| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 12| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 13| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 14| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 15| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 16| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 17| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 18| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 19| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 20| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 21| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 22| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 23| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 24| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 25| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 26| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 27| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 28| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 29| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 30| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 31| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 32| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 33| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 34| "¡" "¢" "£" "¤" "¥" "¦" "§" "¨" "©" "ª" "«" "¬" "­" "®" "¯" "°" "±" "²" "³" "´" "µ" "¶" "·" "¸" "¹" "º" "»" "¼" "½" "¾" "¿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 35| "á" "â" "ã" "ä" "å" "æ" "ç" "è" "é" "ê" "ë" "ì" "í" "î" "ï" "ð" "ñ" "ò" "ó" "ô" "õ" "ö" "÷" "ø" "ù" "ú" "û" "ü" "ý" "þ" "ÿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 36| "ġ" "Ģ" "ģ" "Ĥ" "ĥ" "Ħ" "ħ" "Ĩ" "ĩ" "Ī" "ī" "Ĭ" "ĭ" "Į" "į" "İ" "ı" "IJ" "ij" "Ĵ" "ĵ" "Ķ" "ķ" "ĸ" "Ĺ" "ĺ" "Ļ" "ļ" "Ľ" "ľ" "Ŀ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 37| "š" "Ţ" "ţ" "Ť" "ť" "Ŧ" "ŧ" "Ũ" "ũ" "Ū" "ū" "Ŭ" "ŭ" "Ů" "ů" "Ű" "ű" "Ų" "ų" "Ŵ" "ŵ" "Ŷ" "ŷ" "Ÿ" "Ź" "ź" "Ż" "ż" "Ž" "ž" "ſ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 38| "ơ" "Ƣ" "ƣ" "Ƥ" "ƥ" "Ʀ" "Ƨ" "ƨ" "Ʃ" "ƪ" "ƫ" "Ƭ" "ƭ" "Ʈ" "Ư" "ư" "Ʊ" "Ʋ" "Ƴ" "ƴ" "Ƶ" "ƶ" "Ʒ" "Ƹ" "ƹ" "ƺ" "ƻ" "Ƽ" "ƽ" "ƾ" "ƿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 39| "ǡ" "Ǣ" "ǣ" "Ǥ" "ǥ" "Ǧ" "ǧ" "Ǩ" "ǩ" "Ǫ" "ǫ" "Ǭ" "ǭ" "Ǯ" "ǯ" "ǰ" "DZ" "Dz" "dz" "Ǵ" "ǵ" "Ƕ" "Ƿ" "Ǹ" "ǹ" "Ǻ" "ǻ" "Ǽ" "ǽ" "Ǿ" "ǿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 40| "ȡ" "Ȣ" "ȣ" "Ȥ" "ȥ" "Ȧ" "ȧ" "Ȩ" "ȩ" "Ȫ" "ȫ" "Ȭ" "ȭ" "Ȯ" "ȯ" "Ȱ" "ȱ" "Ȳ" "ȳ" "ȴ" "ȵ" "ȶ" "ȷ" "ȸ" "ȹ" "Ⱥ" "Ȼ" "ȼ" "Ƚ" "Ⱦ" "ȿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 41| "ɡ" "ɢ" "ɣ" "ɤ" "ɥ" "ɦ" "ɧ" "ɨ" "ɩ" "ɪ" "ɫ" "ɬ" "ɭ" "ɮ" "ɯ" "ɰ" "ɱ" "ɲ" "ɳ" "ɴ" "ɵ" "ɶ" "ɷ" "ɸ" "ɹ" "ɺ" "ɻ" "ɼ" "ɽ" "ɾ" "ɿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 42| "ʡ" "ʢ" "ʣ" "ʤ" "ʥ" "ʦ" "ʧ" "ʨ" "ʩ" "ʪ" "ʫ" "ʬ" "ʭ" "ʮ" "ʯ" "ʰ" "ʱ" "ʲ" "ʳ" "ʴ" "ʵ" "ʶ" "ʷ" "ʸ" "ʹ" "ʺ" "ʻ" "ʼ" "ʽ" "ʾ" "ʿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 43| "ˡ" "ˢ" "ˣ" "ˤ" "˥" "˦" "˧" "˨" "˩" "˪" "˫" "ˬ" "˭" "ˮ" "˯" "˰" "˱" "˲" "˳" "˴" "˵" "˶" "˷" "˸" "˹" "˺" "˻" "˼" "˽" "˾" "˿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 44| "̡" "̢" "̣" "̤" "̥" "̦" "̧" "̨" "̩" "̪" "̫" "̬" "̭" "̮" "̯" "̰" "̱" "̲" "̳" "̴" "̵" "̶" "̷" "̸" "̹" "̺" "̻" "̼" "̽" "̾" "̿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 45| "͡" "͢" "ͣ" "ͤ" "ͥ" "ͦ" "ͧ" "ͨ" "ͩ" "ͪ" "ͫ" "ͬ" "ͭ" "ͮ" "ͯ" "Ͱ" "ͱ" "Ͳ" "ͳ" "ʹ" "͵" "Ͷ" "ͷ" "͸" "͹" "ͺ" "ͻ" "ͼ" "ͽ" ";" "Ϳ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 46| "Ρ" "΢" "Σ" "Τ" "Υ" "Φ" "Χ" "Ψ" "Ω" "Ϊ" "Ϋ" "ά" "έ" "ή" "ί" "ΰ" "α" "β" "γ" "δ" "ε" "ζ" "η" "θ" "ι" "κ" "λ" "μ" "ν" "ξ" "ο" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 47| "ϡ" "Ϣ" "ϣ" "Ϥ" "ϥ" "Ϧ" "ϧ" "Ϩ" "ϩ" "Ϫ" "ϫ" "Ϭ" "ϭ" "Ϯ" "ϯ" "ϰ" "ϱ" "ϲ" "ϳ" "ϴ" "ϵ" "϶" "Ϸ" "ϸ" "Ϲ" "Ϻ" "ϻ" "ϼ" "Ͻ" "Ͼ" "Ͽ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 48| "С" "Т" "У" "Ф" "Х" "Ц" "Ч" "Ш" "Щ" "Ъ" "Ы" "Ь" "Э" "Ю" "Я" "а" "б" "в" "г" "д" "е" "ж" "з" "и" "й" "к" "л" "м" "н" "о" "п" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 49| "ѡ" "Ѣ" "ѣ" "Ѥ" "ѥ" "Ѧ" "ѧ" "Ѩ" "ѩ" "Ѫ" "ѫ" "Ѭ" "ѭ" "Ѯ" "ѯ" "Ѱ" "ѱ" "Ѳ" "ѳ" "Ѵ" "ѵ" "Ѷ" "ѷ" "Ѹ" "ѹ" "Ѻ" "ѻ" "Ѽ" "ѽ" "Ѿ" "ѿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 50| "ҡ" "Ң" "ң" "Ҥ" "ҥ" "Ҧ" "ҧ" "Ҩ" "ҩ" "Ҫ" "ҫ" "Ҭ" "ҭ" "Ү" "ү" "Ұ" "ұ" "Ҳ" "ҳ" "Ҵ" "ҵ" "Ҷ" "ҷ" "Ҹ" "ҹ" "Һ" "һ" "Ҽ" "ҽ" "Ҿ" "ҿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 51| "ӡ" "Ӣ" "ӣ" "Ӥ" "ӥ" "Ӧ" "ӧ" "Ө" "ө" "Ӫ" "ӫ" "Ӭ" "ӭ" "Ӯ" "ӯ" "Ӱ" "ӱ" "Ӳ" "ӳ" "Ӵ" "ӵ" "Ӷ" "ӷ" "Ӹ" "ӹ" "Ӻ" "ӻ" "Ӽ" "ӽ" "Ӿ" "ӿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 52| "ԡ" "Ԣ" "ԣ" "Ԥ" "ԥ" "Ԧ" "ԧ" "Ԩ" "ԩ" "Ԫ" "ԫ" "Ԭ" "ԭ" "Ԯ" "ԯ" "԰" "Ա" "Բ" "Գ" "Դ" "Ե" "Զ" "Է" "Ը" "Թ" "Ժ" "Ի" "Լ" "Խ" "Ծ" "Կ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 53| "ա" "բ" "գ" "դ" "ե" "զ" "է" "ը" "թ" "ժ" "ի" "լ" "խ" "ծ" "կ" "հ" "ձ" "ղ" "ճ" "մ" "յ" "ն" "շ" "ո" "չ" "պ" "ջ" "ռ" "ս" "վ" "տ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 54| "֡" "֢" "֣" "֤" "֥" "֦" "֧" "֨" "֩" "֪" "֫" "֬" "֭" "֮" "֯" "ְ" "ֱ" "ֲ" "ֳ" "ִ" "ֵ" "ֶ" "ַ" "ָ" "ֹ" "ֺ" "ֻ" "ּ" "ֽ" "־" "ֿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 55| "ס" "ע" "ף" "פ" "ץ" "צ" "ק" "ר" "ש" "ת" "׫" "׬" "׭" "׮" "ׯ" "װ" "ױ" "ײ" "׳" "״" "׵" "׶" "׷" "׸" "׹" "׺" "׻" "׼" "׽" "׾" "׿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 56| "ء" "آ" "أ" "ؤ" "إ" "ئ" "ا" "ب" "ة" "ت" "ث" "ج" "ح" "خ" "د" "ذ" "ر" "ز" "س" "ش" "ص" "ض" "ط" "ظ" "ع" "غ" "ػ" "ؼ" "ؽ" "ؾ" "ؿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 57| "١" "٢" "٣" "٤" "٥" "٦" "٧" "٨" "٩" "٪" "٫" "٬" "٭" "ٮ" "ٯ" "ٰ" "ٱ" "ٲ" "ٳ" "ٴ" "ٵ" "ٶ" "ٷ" "ٸ" "ٹ" "ٺ" "ٻ" "ټ" "ٽ" "پ" "ٿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 58| "ڡ" "ڢ" "ڣ" "ڤ" "ڥ" "ڦ" "ڧ" "ڨ" "ک" "ڪ" "ګ" "ڬ" "ڭ" "ڮ" "گ" "ڰ" "ڱ" "ڲ" "ڳ" "ڴ" "ڵ" "ڶ" "ڷ" "ڸ" "ڹ" "ں" "ڻ" "ڼ" "ڽ" "ھ" "ڿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 59| "ۡ" "ۢ" "ۣ" "ۤ" "ۥ" "ۦ" "ۧ" "ۨ" "۩" "۪" "۫" "۬" "ۭ" "ۮ" "ۯ" "۰" "۱" "۲" "۳" "۴" "۵" "۶" "۷" "۸" "۹" "ۺ" "ۻ" "ۼ" "۽" "۾" "ۿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 60| "ܡ" "ܢ" "ܣ" "ܤ" "ܥ" "ܦ" "ܧ" "ܨ" "ܩ" "ܪ" "ܫ" "ܬ" "ܭ" "ܮ" "ܯ" "ܰ" "ܱ" "ܲ" "ܳ" "ܴ" "ܵ" "ܶ" "ܷ" "ܸ" "ܹ" "ܺ" "ܻ" "ܼ" "ܽ" "ܾ" "ܿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 61| "ݡ" "ݢ" "ݣ" "ݤ" "ݥ" "ݦ" "ݧ" "ݨ" "ݩ" "ݪ" "ݫ" "ݬ" "ݭ" "ݮ" "ݯ" "ݰ" "ݱ" "ݲ" "ݳ" "ݴ" "ݵ" "ݶ" "ݷ" "ݸ" "ݹ" "ݺ" "ݻ" "ݼ" "ݽ" "ݾ" "ݿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 62| "ޡ" "ޢ" "ޣ" "ޤ" "ޥ" "ަ" "ާ" "ި" "ީ" "ު" "ޫ" "ެ" "ޭ" "ޮ" "ޯ" "ް" "ޱ" "޲" "޳" "޴" "޵" "޶" "޷" "޸" "޹" "޺" "޻" "޼" "޽" "޾" "޿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 63| "ߡ" "ߢ" "ߣ" "ߤ" "ߥ" "ߦ" "ߧ" "ߨ" "ߩ" "ߪ" "߫" "߬" "߭" "߮" "߯" "߰" "߱" "߲" "߳" "ߴ" "ߵ" "߶" "߷" "߸" "߹" "ߺ" "߻" "߼" "߽" "߾" "߿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 64| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 65| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 66| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 67| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 68| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 69| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 70| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 71| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 72| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 73| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 74| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 75| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 76| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 77| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 78| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 79| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 80| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 81| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 82| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 83| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 84| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 85| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 86| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 87| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 88| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 89| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 90| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 91| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 92| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 93| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 94| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/euc.text000066400000000000000000001307241252027163000173560ustar00rootroot00000000000000;;; -*- coding: -*- | 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 01| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 02| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 03| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 04| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 05| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 06| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 07| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 08| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 09| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 10| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 11| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 12| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 13| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 14| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 15| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 16| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 17| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 18| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 19| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 20| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 21| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 22| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 23| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 24| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 25| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 26| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 27| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 28| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 29| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 30| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 31| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 32| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 33| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 34| "¡" "¢" "£" "¤" "¥" "¦" "§" "¨" "©" "ª" "«" "¬" "­" "®" "¯" "°" "±" "²" "³" "´" "µ" "¶" "·" "¸" "¹" "º" "»" "¼" "½" "¾" "¿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 35| "á" "â" "ã" "ä" "å" "æ" "ç" "è" "é" "ê" "ë" "ì" "í" "î" "ï" "ð" "ñ" "ò" "ó" "ô" "õ" "ö" "÷" "ø" "ù" "ú" "û" "ü" "ý" "þ" "ÿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 36| "ġ" "Ģ" "ģ" "Ĥ" "ĥ" "Ħ" "ħ" "Ĩ" "ĩ" "Ī" "ī" "Ĭ" "ĭ" "Į" "į" "İ" "ı" "IJ" "ij" "Ĵ" "ĵ" "Ķ" "ķ" "ĸ" "Ĺ" "ĺ" "Ļ" "ļ" "Ľ" "ľ" "Ŀ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 37| "š" "Ţ" "ţ" "Ť" "ť" "Ŧ" "ŧ" "Ũ" "ũ" "Ū" "ū" "Ŭ" "ŭ" "Ů" "ů" "Ű" "ű" "Ų" "ų" "Ŵ" "ŵ" "Ŷ" "ŷ" "Ÿ" "Ź" "ź" "Ż" "ż" "Ž" "ž" "ſ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 38| "ơ" "Ƣ" "ƣ" "Ƥ" "ƥ" "Ʀ" "Ƨ" "ƨ" "Ʃ" "ƪ" "ƫ" "Ƭ" "ƭ" "Ʈ" "Ư" "ư" "Ʊ" "Ʋ" "Ƴ" "ƴ" "Ƶ" "ƶ" "Ʒ" "Ƹ" "ƹ" "ƺ" "ƻ" "Ƽ" "ƽ" "ƾ" "ƿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 39| "ǡ" "Ǣ" "ǣ" "Ǥ" "ǥ" "Ǧ" "ǧ" "Ǩ" "ǩ" "Ǫ" "ǫ" "Ǭ" "ǭ" "Ǯ" "ǯ" "ǰ" "DZ" "Dz" "dz" "Ǵ" "ǵ" "Ƕ" "Ƿ" "Ǹ" "ǹ" "Ǻ" "ǻ" "Ǽ" "ǽ" "Ǿ" "ǿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 40| "ȡ" "Ȣ" "ȣ" "Ȥ" "ȥ" "Ȧ" "ȧ" "Ȩ" "ȩ" "Ȫ" "ȫ" "Ȭ" "ȭ" "Ȯ" "ȯ" "Ȱ" "ȱ" "Ȳ" "ȳ" "ȴ" "ȵ" "ȶ" "ȷ" "ȸ" "ȹ" "Ⱥ" "Ȼ" "ȼ" "Ƚ" "Ⱦ" "ȿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 41| "ɡ" "ɢ" "ɣ" "ɤ" "ɥ" "ɦ" "ɧ" "ɨ" "ɩ" "ɪ" "ɫ" "ɬ" "ɭ" "ɮ" "ɯ" "ɰ" "ɱ" "ɲ" "ɳ" "ɴ" "ɵ" "ɶ" "ɷ" "ɸ" "ɹ" "ɺ" "ɻ" "ɼ" "ɽ" "ɾ" "ɿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 42| "ʡ" "ʢ" "ʣ" "ʤ" "ʥ" "ʦ" "ʧ" "ʨ" "ʩ" "ʪ" "ʫ" "ʬ" "ʭ" "ʮ" "ʯ" "ʰ" "ʱ" "ʲ" "ʳ" "ʴ" "ʵ" "ʶ" "ʷ" "ʸ" "ʹ" "ʺ" "ʻ" "ʼ" "ʽ" "ʾ" "ʿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 43| "ˡ" "ˢ" "ˣ" "ˤ" "˥" "˦" "˧" "˨" "˩" "˪" "˫" "ˬ" "˭" "ˮ" "˯" "˰" "˱" "˲" "˳" "˴" "˵" "˶" "˷" "˸" "˹" "˺" "˻" "˼" "˽" "˾" "˿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 44| "̡" "̢" "̣" "̤" "̥" "̦" "̧" "̨" "̩" "̪" "̫" "̬" "̭" "̮" "̯" "̰" "̱" "̲" "̳" "̴" "̵" "̶" "̷" "̸" "̹" "̺" "̻" "̼" "̽" "̾" "̿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 45| "͡" "͢" "ͣ" "ͤ" "ͥ" "ͦ" "ͧ" "ͨ" "ͩ" "ͪ" "ͫ" "ͬ" "ͭ" "ͮ" "ͯ" "Ͱ" "ͱ" "Ͳ" "ͳ" "ʹ" "͵" "Ͷ" "ͷ" "͸" "͹" "ͺ" "ͻ" "ͼ" "ͽ" ";" "Ϳ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 46| "Ρ" "΢" "Σ" "Τ" "Υ" "Φ" "Χ" "Ψ" "Ω" "Ϊ" "Ϋ" "ά" "έ" "ή" "ί" "ΰ" "α" "β" "γ" "δ" "ε" "ζ" "η" "θ" "ι" "κ" "λ" "μ" "ν" "ξ" "ο" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 47| "ϡ" "Ϣ" "ϣ" "Ϥ" "ϥ" "Ϧ" "ϧ" "Ϩ" "ϩ" "Ϫ" "ϫ" "Ϭ" "ϭ" "Ϯ" "ϯ" "ϰ" "ϱ" "ϲ" "ϳ" "ϴ" "ϵ" "϶" "Ϸ" "ϸ" "Ϲ" "Ϻ" "ϻ" "ϼ" "Ͻ" "Ͼ" "Ͽ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 48| "С" "Т" "У" "Ф" "Х" "Ц" "Ч" "Ш" "Щ" "Ъ" "Ы" "Ь" "Э" "Ю" "Я" "а" "б" "в" "г" "д" "е" "ж" "з" "и" "й" "к" "л" "м" "н" "о" "п" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 49| "ѡ" "Ѣ" "ѣ" "Ѥ" "ѥ" "Ѧ" "ѧ" "Ѩ" "ѩ" "Ѫ" "ѫ" "Ѭ" "ѭ" "Ѯ" "ѯ" "Ѱ" "ѱ" "Ѳ" "ѳ" "Ѵ" "ѵ" "Ѷ" "ѷ" "Ѹ" "ѹ" "Ѻ" "ѻ" "Ѽ" "ѽ" "Ѿ" "ѿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 50| "ҡ" "Ң" "ң" "Ҥ" "ҥ" "Ҧ" "ҧ" "Ҩ" "ҩ" "Ҫ" "ҫ" "Ҭ" "ҭ" "Ү" "ү" "Ұ" "ұ" "Ҳ" "ҳ" "Ҵ" "ҵ" "Ҷ" "ҷ" "Ҹ" "ҹ" "Һ" "һ" "Ҽ" "ҽ" "Ҿ" "ҿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 51| "ӡ" "Ӣ" "ӣ" "Ӥ" "ӥ" "Ӧ" "ӧ" "Ө" "ө" "Ӫ" "ӫ" "Ӭ" "ӭ" "Ӯ" "ӯ" "Ӱ" "ӱ" "Ӳ" "ӳ" "Ӵ" "ӵ" "Ӷ" "ӷ" "Ӹ" "ӹ" "Ӻ" "ӻ" "Ӽ" "ӽ" "Ӿ" "ӿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 52| "ԡ" "Ԣ" "ԣ" "Ԥ" "ԥ" "Ԧ" "ԧ" "Ԩ" "ԩ" "Ԫ" "ԫ" "Ԭ" "ԭ" "Ԯ" "ԯ" "԰" "Ա" "Բ" "Գ" "Դ" "Ե" "Զ" "Է" "Ը" "Թ" "Ժ" "Ի" "Լ" "Խ" "Ծ" "Կ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 53| "ա" "բ" "գ" "դ" "ե" "զ" "է" "ը" "թ" "ժ" "ի" "լ" "խ" "ծ" "կ" "հ" "ձ" "ղ" "ճ" "մ" "յ" "ն" "շ" "ո" "չ" "պ" "ջ" "ռ" "ս" "վ" "տ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 54| "֡" "֢" "֣" "֤" "֥" "֦" "֧" "֨" "֩" "֪" "֫" "֬" "֭" "֮" "֯" "ְ" "ֱ" "ֲ" "ֳ" "ִ" "ֵ" "ֶ" "ַ" "ָ" "ֹ" "ֺ" "ֻ" "ּ" "ֽ" "־" "ֿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 55| "ס" "ע" "ף" "פ" "ץ" "צ" "ק" "ר" "ש" "ת" "׫" "׬" "׭" "׮" "ׯ" "װ" "ױ" "ײ" "׳" "״" "׵" "׶" "׷" "׸" "׹" "׺" "׻" "׼" "׽" "׾" "׿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 56| "ء" "آ" "أ" "ؤ" "إ" "ئ" "ا" "ب" "ة" "ت" "ث" "ج" "ح" "خ" "د" "ذ" "ر" "ز" "س" "ش" "ص" "ض" "ط" "ظ" "ع" "غ" "ػ" "ؼ" "ؽ" "ؾ" "ؿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 57| "١" "٢" "٣" "٤" "٥" "٦" "٧" "٨" "٩" "٪" "٫" "٬" "٭" "ٮ" "ٯ" "ٰ" "ٱ" "ٲ" "ٳ" "ٴ" "ٵ" "ٶ" "ٷ" "ٸ" "ٹ" "ٺ" "ٻ" "ټ" "ٽ" "پ" "ٿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 58| "ڡ" "ڢ" "ڣ" "ڤ" "ڥ" "ڦ" "ڧ" "ڨ" "ک" "ڪ" "ګ" "ڬ" "ڭ" "ڮ" "گ" "ڰ" "ڱ" "ڲ" "ڳ" "ڴ" "ڵ" "ڶ" "ڷ" "ڸ" "ڹ" "ں" "ڻ" "ڼ" "ڽ" "ھ" "ڿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 59| "ۡ" "ۢ" "ۣ" "ۤ" "ۥ" "ۦ" "ۧ" "ۨ" "۩" "۪" "۫" "۬" "ۭ" "ۮ" "ۯ" "۰" "۱" "۲" "۳" "۴" "۵" "۶" "۷" "۸" "۹" "ۺ" "ۻ" "ۼ" "۽" "۾" "ۿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 60| "ܡ" "ܢ" "ܣ" "ܤ" "ܥ" "ܦ" "ܧ" "ܨ" "ܩ" "ܪ" "ܫ" "ܬ" "ܭ" "ܮ" "ܯ" "ܰ" "ܱ" "ܲ" "ܳ" "ܴ" "ܵ" "ܶ" "ܷ" "ܸ" "ܹ" "ܺ" "ܻ" "ܼ" "ܽ" "ܾ" "ܿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 61| "ݡ" "ݢ" "ݣ" "ݤ" "ݥ" "ݦ" "ݧ" "ݨ" "ݩ" "ݪ" "ݫ" "ݬ" "ݭ" "ݮ" "ݯ" "ݰ" "ݱ" "ݲ" "ݳ" "ݴ" "ݵ" "ݶ" "ݷ" "ݸ" "ݹ" "ݺ" "ݻ" "ݼ" "ݽ" "ݾ" "ݿ" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 62| "ޡ" "ޢ" "ޣ" "ޤ" "ޥ" "ަ" "ާ" "ި" "ީ" "ު" "ޫ" "ެ" "ޭ" "ޮ" "ޯ" "ް" "ޱ" "޲" "޳" "޴" "޵" "޶" "޷" "޸" "޹" "޺" "޻" "޼" "޽" "޾" "޿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 63| "ߡ" "ߢ" "ߣ" "ߤ" "ߥ" "ߦ" "ߧ" "ߨ" "ߩ" "ߪ" "߫" "߬" "߭" "߮" "߯" "߰" "߱" "߲" "߳" "ߴ" "ߵ" "߶" "߷" "߸" "߹" "ߺ" "߻" "߼" "߽" "߾" "߿" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 64| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 65| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 66| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 67| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 68| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 69| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 70| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 71| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 72| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 73| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 74| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 75| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 76| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 77| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 78| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 79| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 80| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 81| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 82| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 83| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 84| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 85| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 86| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 87| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 88| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 89| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 90| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 91| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 92| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 93| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 94| "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-2022-94char.text000066400000000000000000000023131252027163000210370ustar00rootroot00000000000000;;; -*- coding: -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-2022-96char.text000066400000000000000000000023131252027163000210410ustar00rootroot00000000000000;;; -*- coding: -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-8859-1.text000066400000000000000000000023261252027163000201410ustar00rootroot00000000000000;;; -*- coding: iso-8859-1 -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-8859-2.text000066400000000000000000000023271252027163000201430ustar00rootroot00000000000000;;; -*- coding: iso-8859-2 -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-8859-3.text000066400000000000000000000023261252027163000201430ustar00rootroot00000000000000;;; -*- coding: iso-8859-3 -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-8859-4.text000066400000000000000000000023261252027163000201440ustar00rootroot00000000000000;;; -*- coding: iso-8859-4 -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-8859-5.text000066400000000000000000000023261252027163000201450ustar00rootroot00000000000000;;; -*- coding: iso-8859-5 -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-8859-7.text000066400000000000000000000023261252027163000201470ustar00rootroot00000000000000;;; -*- coding: iso-8859-7 -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-8859-8.text000066400000000000000000000023261252027163000201500ustar00rootroot00000000000000;;; -*- coding: iso-8859-8 -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/iso-8859-9.text000066400000000000000000000023261252027163000201510ustar00rootroot00000000000000;;; -*- coding: iso-8859-9 -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/non-iso2022.text000066400000000000000000000023131252027163000204620ustar00rootroot00000000000000;;; -*- coding: -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| "" "" " " "0" "@" "P" "`" "p" "" "" "" "" "" "" "" "" 1| "" "" "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" "" "" 2| "" "" """ "2" "B" "R" "b" "r" "" "" "" "" "" "" "" "" 3| "" "" "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" "" "" 4| "" "" "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" "" "" 5| "" "" "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" "" "" 6| "" "" "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" "" "" 7| "" "" "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" "" "" 8| "" "" "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" "" "" 9| " " "" ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" "" "" A| " " "" "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" "" "" B| " " "" "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" "" "" C| " " "" "," "<" "L" "\" "l" "|" "" "" "" "" "" "" "" "" D| " " "" "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" "" "" E| "" "" "." ">" "N" "^" "n" "~" "" "" "" "" "" "" "" "" F| "" "" "/" "?" "O" "_" "o" "" "" "" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/tis620.text000066400000000000000000000023221252027163000176210ustar00rootroot00000000000000;;; -*- coding: tis620 -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" 2| """ "2" "B" "R" "b" "r" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" 4| "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" 5| "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" 6| "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" 9| ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" E| "." ">" "N" "^" "n" "~" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" egg-4.2.0/ATTIC/doc/code-table/viscii.text000066400000000000000000000034441252027163000200660ustar00rootroot00000000000000;;; -*- coding: viscii -*- | 0 1 2 3 4 5 6 7 8 9 A B C D E F -+---------------------------------------------------------------- 0| " " "0" "@" "P" "`" "p" "" "" "" "" "" "" "" "" 1| "!" "1" "A" "Q" "a" "q" "" "" "" "" "" "" "" "" 2| "" """ "2" "B" "R" "b" "r" "" "" "" "" "" "" "" "" 3| "#" "3" "C" "S" "c" "s" "" "" "" "" "" "" "" "" 4| "" "$" "4" "D" "T" "d" "t" "" "" "" "" "" "" "" "" 5| "" "%" "5" "E" "U" "e" "u" "" "" "" "" "" "" "" "" 6| "" "&" "6" "F" "V" "f" "v" "" "" "" "" "" "" "" "" 7| "'" "7" "G" "W" "g" "w" "" "" "" "" "" "" "" "" 8| "(" "8" "H" "X" "h" "x" "" "" "" "" "" "" "" "" 9| "" ")" "9" "I" "Y" "i" "y" "" "" "" "" "" "" "" "" A| "*" ":" "J" "Z" "j" "z" "" "" "" "" "" "" "" "" B| "+" ";" "K" "[" "k" "{" "" "" "" "" "" "" "" "" C| "," "<" "L" "\" "l" "|" "" "" "" "" "" "" "" "" D| "-" "=" "M" "]" "m" "}" "" "" "" "" "" "" "" "" E| "" "." ">" "N" "^" "n" "~" "" "" "" "" "" "" "" "" F| "/" "?" "O" "_" "o" "" "" "" "" "" "" "" "" "a" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "e" "" "" "" "" "" "" "" "" "" "" "" "i" "" "" "" "" "" "o" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "u" "" "" "" "" "" "" "" "" "" "" "" "y" "" "" "" "" "" "A" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "E" "" "" "" "" "" "" "" "" "" "" "" "I" "" "" "" "" "" "O" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "U" "" "" "" "" "" "" "" "" "" "" "" "Y" "" "" "" "" "" "" ""egg-4.2.0/ATTIC/doc/lc99.text000066400000000000000000000461001252027163000153550ustar00rootroot00000000000000 Egg V4 (Tamago Next Generation) $BJR;3!!A1IW(B $B3t<02q/2CI.(B -- -- $BCm0U!'(B $BK\869F$O(B Tamago 4 $B%j%j!<%90JA0$K=q$+$l$?$b$N$G!"FbMF$N0lIt$,(B $B:G?7HG$N(B Tamago $B$NFbMF$H0[$J$kE@$,$"$j$^$9!#$"$i$+$8$a$4N;>5CV$-2<$5$$!#(B -- 1. $B$O$8$a$K(B $B!!$4B8CN$N$h$&$K!"F|K\8l%(%G%#%?!<(B NEmacs $B$NF|K\8lF~NO%a%=%C%I$H$7$F3+(B $BH/$5$l$?(B Egg $B$O!"B?8@8l%(%G%#%?!<(B Mule $B$K0z$-7Q$,$l!"F|!?Cf!?4Z9q8lF~(B $BNO%a%=%C%I$XH/E8$7$^$7$?!#(BMule $B$O(B GNU Emacs $B$rB?8@8l2=$7$F:n$i$l$?$N$G(B $B$9$,!"$=$NB?8@8l5!G=$,(B GNU Emacs 20 $B$K:N$jF~$l$i$l!"(BGNU Emacs $B<+?H$,B?(B $B8@8l%(%G%#%?!<$H$J$j$^$7$?!#$7$+$7!"0lIt$NB?8@8l5!G=$OL$$@%$%s%W%j%a%s(B $B%H$5$l$F$$$J$$$b$N$,$"$j!"(BEgg $B$b$=$N0l$D$K4^$^$l$F$$$^$9!#$3$N$?$a!"EE(B $BAm8&$N(B Mule $B%W%m%8%'%/%H$N0lIt$H$7$F!"EEAm8&0J30$NAH?%$+$i$N6(NOu(B $BBV$H$J$C$F$$$^$9!#:#8e!";EMMEy$,Bg$-$/JQ$o$k2DG=@-$,$"$k$3$H$r8fN;>52<(B $B$5$$!#(B 2. $BMh$O(B $BJQ49%5!<%P!<$H$NDL?.$K!"$+$J4A;zJQ49%7%9%F%`(B (Wnn$B!"(BSJ3) $B$N%i%$%V%i%j!<(B $B$rMQ$$$F$$$^$7$?!#$3$N$?$a!"(B $B!v(B $B%i%$%V%i%j!<$r%j%s%/$9$k$?$a$K:F%3%s%Q%$%k$,I,MW(B $B!v(B $B%i%$%V%i%j!e5-$NLdBjE@$r2r>C$7$^$7$?!#$^$?!"F|K\8lF~NO$@$1$7$+(B $B9T$J$o$J$$>l9g$G$b!"(BWnn $B$H(B SJ3 $B$r?o;~@ZBX$($F;H$&$3$H$b2DG=$G$9!#(B 2.2 $BB?8@8l5!G=$N6/2=(B $B!!85!9(B Egg $B$OF|K\8lF~NO%a%=%C%I$H$7$F3+H/$5$l$?$?$a!"Cf!?4Z9q8lF~NO%a(B $B%=%C%I$H$7$F$O5!G=ITB-$G$7$?!#FC$KLdBj$H$J$C$F$$$?E@$K$O!"(B $B!v(B $BCf9q8lHKBN;z$,F~NO$G$-$J$$(B $B!v(B $BCf!?4Z9q8lF~NO$X$N@ZBX$,LLE](B($B%a%K%e!<%b!<%I$7$+$J$$(B) $B!v(B $BCf!?4Z9q8l$N!HA43Q!I1Q?t;z$,F~NO$G$-$J$$(B $B$J$I$,$"$j$^$9!#(BEgg V4 $B$G$O!"(Btserver $B$r;H$C$?Cf9q8lHKBN;zF~NO$r%5%]!<(B $B%H$7!"I=(B1 $B$NF~NO%b!<%I$rMQ0U$7$^$7$?!#F~NO%b!<%I$N@ZBX$($O(B C-x C-m key1 $B$G9T$J$$$^$9!#%U%'%s%9Cf$G$O(B key2 $B$G$b@ZBX$($i$l$^$9!#(B $BI=(B1 :$BF~NO%b!<%I0lMw(B ============================================================================== $B%b!<%IL>(B Global Fence $BF~NO%b!<%I(B $B%b!<%IL>(B Global Fence $BF~NO%b!<%I(B Cmd. Cmd. Cmd. Cmd. ------------------------------------------------------------------------------ C-x key2 C-x key2 C-m C-m key1 key1 ============================================================================== $B8@8l6&DL(B (ASCII) ============================================================================== down q M-q ASCII up Q M-Q ASCII($BBgJ8;z(B) ============================================================================== $BF|K\8l(B (JIS X 0208) ============================================================================== hira h C-M-h $BJ?2>L>(B kata k C-M-k $BJR2>L>(B han-kata x C-x $BH>3QJR2>L>(B zenkaku-down z M-z $BA43Q1Q?t;z(B zenkaku-up Z M-Z $BA43Q1Q?t;z(B($BBgJ8;z(B) ============================================================================== $B4JBN;zCf9q8l(B (GB 2312) ============================================================================== pinyin-cn C-p C-M-p $(GQ;$B2;(B($BA4$(GQ;(B) erpin-cn C-e C-M-e $BFs$(GQ;(B($BAP$(GQ;(B) zhuyin-cn C-z C-M-z $BCm2;(B qianma C-q C-M-q $BA,b{(B wubi C-w C-M-w $B8^I.(B quanjiao-down-cn C-d C-M-d quanjiao-up-cn C-u C-M-u $BA43Q1Q?t;z(B $BA43Q1Q?t;z(B($BBgJ8;z(B) ============================================================================== $BHKBN;zCf9q8l(B (CNS 11643) ============================================================================== pinyin-tw P M-P $(GQ;$B2;(B($BA4$(GQ;(B) erpin-tw E M-E $BFs$(GQ;(B($BAP$(GQ;(B) zhuyin-tw C M-C $BCm2;(B quanjiao-down-tw D M-D $BA43Q1Q?t;z(B quanjiao-up-tw U M-U $BA43Q1Q?t;z(B($BBgJ8;z(B) ============================================================================== $B4Z9q8l(B (KS C 5601) ============================================================================== hangul H M-H $B%O%s%0%k(B jeonkak-down j M-j $BA43Q1Q?t;z(B jeonkak-up J M-J $BA43Q1Q?t;z(B($BBgJ8;z(B) ------------------------------------------------------------------------------ Egg V4 $B$O!"99$KB?8@8lF~NO%a%=%C%I$H$7$F$N5!G=$b6/2=$7$F$$$^$9!#B?8@8l(B $B%F%-%9%H$K$O!"J#?t$N8@8l$GJ;5-$7$?$b$N(B ($B?^(B1) $B$H!"0lJ8Cf$KJ#?t$N8@8l$,(B $B:.:_$7$?$b$N(B ($B?^(B2) $B$,$"$j$^$9!#(B +--------------------------------------------------------------+ | | | $B%F%/%K%+%k%3%s%U%!%l%s%9$X$h$&$3$=!#!!$A;6S-2NH3gGO<Mh$NF~(B $BNO%a%=%C%I$G$O3F8@8lKh$K$+$J4A;zJQ49$r9T$J$&I,MW$,$"$j$^$7$?!#$3$N$?$a!"(B $B?^(B2$B$N%?%$%W$NB?8@8l%F%-%9%H$NF~NO$OHs>o$KHK;($G$7$?!#$^$?!"$3$N$h$&$J(B $B%F%-%9%H$G$O!"%Y!<%9$H$J$k8@8l$KB>$N8@8l$,A^F~$5$l$?7A$K$J$j$^$9$+$i!"(B $B%Y!<%98@8l$X4JC1$KLa$l$k$3$H$bI,MW$G$9!#(BEgg V4 $B$G$O!"0[$J$k8@8l$NFI$_(B $B$rF~NO$7$F$*$$$F!"$^$H$a$F$+$J4A;zJQ49$r9T$J$($k$h$&$K$7$F$$$^$9!#?^(B3 $B$O!"(BEgg V4 $B$K$h$kF|Cf:.:_%F%-%9%H$N4A;zJQ49$NNc$G$9!#(B $B$A$e$&$4$/$4$G$$$s$?!<$M$C$H$O(B H(04@(BLi(0"(Bn(0@(BW(0#(Bng $B$H$$$$$^$9!#(B | | $B4A;zJQ49(B V $BCf9q8l$G%$%s%?!<%M%C%H$O$A;%A*Mx$B$H8@$$$^$9!#(B $B?^(B3:$BB?8@8l%F%-%9%H$N4A;zJQ49Nc(B -- $B?^(B3 $B$NNc$r;n$9$K$O!"(BFreeWnn $B$r%$%s%9%H!<%k$7$?>e$G!"(B C-\ c h u g o k u g o d e i n n t a - n e t t o h a C-M-p h u 4 l i a n 2 w a n g 3 C-M-h t o i i m a s u . SPC $B$H%?%$%W$7$F$/$@$5$$!#(B -- $B99$K!"(B1$B%-!<$GF~NO8@8l$r@ZBX$(!"(BC-g $B$GI|5"$9$k$h$&$K%+%9%?%^%$%:$9$k$3(B $B$H$b2DG=$H$J$C$F$$$^$9!#$R$i$,$JF~NO;~$K!"(Bq $B$G(B ASCII $BF~NO$X@ZBX$(!"(BC-g $B$G$R$i$,$JF~NO$KLa$k$N$HF1MM$G$9!#;d$N4D6-$G$O!"(B C$B!!!!$(GQ;Sv$BF~NO(B ($B4JBN;zCf9q8l(B) F$B!!!!$(GQ;Sv$BF~NO(B ($BHKBN;zCf9q8l(B) H$B!!!!%O%s%0%kF~NO(B ($B4Z9q8l(B) $B$H$7$F$$$^$9!#(B 3. Egg V4 $B$N;H$$J}(B $B!!4pK\E*$J;H$$J}$O=>Mh$H$"$^$jJQ$o$j$^$;$s!#$3$3$G$O!"=>Mh$H0[$J$kE@$K(B $B$D$$$F=R$Y$^$9!#(B 3.1 Egg $B$N5/F0(B $B!!(BMule $B$G$OF~NO%a%=%C%I$N@)8f(B (on/off$B!"%b!<%I%i%$%s$NJQ99!"(Betc.) $B$O!"(B $B3F!9$NF~NO%a%=%C%I$,9T$J$C$F$$$^$7$?$,!"(BEmacs 20 $B$G$O(B leim $B$,F~NO%a%=%C(B $B%I$N@)8f$r9T$J$$$^$9!#(BEgg V4 $B$b!"$3$N(B leim $B$N@)8f2<$GF0:n$7$^$9!#(Bleim $B$K$h$kF~NO%a%=%C%I$N(B on/off $B$O(B C-\ $B$G9T$J$$$^$9!#%G%U%)!<%k%H$NF~NO%a(B $B%=%C%I$,Dj5A$5$l$F$$$J$$;~$O!"F~NO%a%=%C%IL>$rJ9$$$F$-$^$9!#F~NO%a%=%C(B $B%I$rJQ99$9$k>l9g$O(B C-u C-\ $B$G!"$3$N;~$bF~NO%a%=%C%IL>$rJ9$$$F$-$^$9!#(B $BI=(B 2 $B$O!"(BEgg V4 $B$GMQ0U$7$F$$$kF~NO%a%=%C%IL>$G$9!#(B $BI=(B2: $BF~NO%a%=%C%IL>0lMw(B ---------------------------------------------------------------------------- $BF|K\8l(B ---------------------------------------------------------------------------- japanese-egg-wnn $BJ?2>L>F~NO(B(Wnn) japanese-egg-sj3 $BJ?2>L>F~NO(B(SJ3) ============================================================================ $B4JBN;zCf9q8l(B ---------------------------------------------------------------------------- chinese-gb-egg-wnn-py $(GQ;$B2;F~NO(B(Wnn) chinese-gb-egg-wnn-zy $BCm2;F~NO(B(Wnn) chinese-gb-egg-wnn-qm $BA,b{F~NO(B(Wnn) chinese-gb-egg-wnn-wb $B8^I.F~NO(B(Wnn) ============================================================================ $BHKBN;zCf9q8l(B ---------------------------------------------------------------------------- chinese-cns-egg-wnn-py $(GQ;$B2;F~NO(B(Wnn) chinese-cns-egg-wnn-zy $BCm2;F~NO(B(Wnn) ============================================================================ $B4Z9q8l(B ---------------------------------------------------------------------------- korean-egg-wnn $B%O%s%0%kF~NO(B(Wnn) ---------------------------------------------------------------------------- $BF~NO8@8l$r@ZBX$($k$N$K!"F~NO%a%=%C%I<+BN$r@ZBX$($kJ}K!$HF~NO%b!<%I$r@Z(B $BBX$($kJ}K!$,$"$k$3$H$K5$$E$+$l$?$H;W$$$^$9!#N>Mh$N$=$l$H0[$J$C$F$$$^$9!#$3$l$O!"(B $B!v(B Wnn $B$H(B SJ3 $B$rE}9g$7$?$3$H(B $B!v(B $B4X?tL>$,(B egg$B!"(Bwnn$B!"(Bsj3 $B$J$I$N%W%j%U%#%C%/%9$G;O$^$k$h$&$K$7$?(B $B$3$H$K$h$j$^$9!#=>Mh$N(B .eggrc $B$r$=$N$^$^;H$&$h$&$K%+%9%?%^%$%:$9$k$3$H(B $B$b$G$-$^$9!#(B 3.3 $B%+%9%?%^%$%:(B $B!!(BEgg V4 $B$G$O!"(BEmacs 20 $B$N(B customize-group $B$K$h$C$F%+%9%?%^%$%:$G$-$k(B $B$h$&$K$7$F$$$^$9!#(BM-x customize-group RET egg RET $B$H%?%$%W$9$k$H%+%9%?(B $B%^%$%:2hLL(B ($B?^(B4) $B$K$J$j$^$9$N$G!"%a%K%e!<$K$7$?$,$C$F%+%9%?%^%$%:$r9T(B $B$J$C$F2<$5$$!#(B -------------------------------------------------------------------------- This is a customization buffer for group Egg. Square brackets show active fields; type RET or click mouse-1 on an active field to invoke its action. Editing an option value changes the text in the buffer; invoke the State button and choose the Set operation to set the option value. Invoke [Help] for more information. Operate on everything in this buffer: [Set for Current Session] [Save for Future Sessions] [Reset] [Reset to Saved] [Reset to Standard] [Bury Buffer] Go to parent group: [Leim] /- Egg group: -----------------------------------------------------------\ [State]: visible group members are all at standard settings. Tamago Version 4 Egg Mode Preference: [Hide] [Toggle] on (non-nil) [State]: this option is unchanged from its standard setting. Make Egg as modefull input method, if non-NIL. Wnn group: [Go to Group] Wnn interface for Tamagotchy Sj3 group: [Go to Group] SJ3 interface for Tamago 4 Its group: [Go to Group] Input Translation System of Tamagotchy Menudiag group: [Go to Group] Input Translation System of Tamagotchy Egg Conv group: [Go to Group] Conversion backend Interface of Tamagotchy \- Egg group end -------------------------------------------------------/ -------------------------------------------------------------------------- $B?^(B4: Egg $B$N%+%9%?%^%$%:=i4|2hLL(B 4. $BuBV$G%?%$%W$9$k$H!"?7(B $B$?$J%U%'%s%9$,:n$i$l$^$9(B ($B?^(B5)$B!#F~NOCf$KB>$NItJ,$rD>$7$?$j!"B>$N%P%C(B $B%U%!!<$r8+$?$j$9$k$3$H$,$G$-$^$9!#$^$?!"%U%'%s%9%b!<%I$G(B yank (C-y) $B$,(B $B$G$-$k$h$&$K$7$F$$$^$9$N$G!"(Bcut and paste $B$7$F$/$k$3$H$b$G$-$^$9!#(B |$B$U$'$s$9$b!<$I$G$b!"(B| |$BJQ49(B $B%b!<%I$G$b!"(B| $B%U%'%s%9$N30$X=P$k$3$H$,$G$-$^$9!#(B $B%^%&%9$G%;%l%/%H$9$k$3$H$b$G$-$^$9!#(B $B?^(B5: $B%^%k%A%U%'%s%9(B 4.2 $B%a%K%e!<%b!<%I0lMwI=<((B $B!!%a%K%e!<%b!<%I$KA48uJd$N0lMwI=<(5!G=$rDI2C$7$^$7$?!#=>Mh$O!"%_%K%P%C(B $B%U%!!<$K(B1$B9T$:$DI=<($9$k5!G=$7$+$"$j$^$;$s$G$7$?$N$G!"C14A;zJQ49$N$h$&(B $B$K8uJd?t$,B?$$;~$O8uJd$rC5$9$N$,BgJQ$G$7$?!#%a%K%e!<%b!<%I$G(B ? $B$r%?%$(B $B%W$9$k$3$H$K$h$C$F!"0lMwI=<(%&%#%s%I%&$,I=<($5$l$^$9(B($B?^(B6)$B!#$3$N%&%#%s(B $B%I%&$+$i$NA*Br$O%^%&%9$K$h$C$F9T$J$$$^$9!#(B ============================================================================= Buffers Files Tools Edit Search Mule Help ============================================================================= |$B0&(B| ============================================================================= -$B$"(BJ:** Sample (Fundamental)--L1--All---------------------------- ============================================================================= 0. $BAj(B 1. $B2q$$(B 2. $B9g$$(B 3. $B0)$$(B 4. $B0&(B 5. $B$"$$(B 6. $B%"%$(B 7. $BMu(B 8. $B6x$$(B 9. $B4V(B 10. $BAx$$(B 11. $B$"$$(B 12. $B0$0f(B 13. $B0&(B 14. I 15. $B9g(B 16. $BAj(B 17. $BT<(B 18. $BS`(B 19. $BRw(B 20. $BpK(B 21. $BpO(B 22. $Bp^(B 23. $Bi=(B 24. $Bp'(B 25. $BcR(B 26. $B0%(B 27. $B[#(B 28. $B0)(B 29. $B0((B 30. $B0'(B 31. $B0#(B 32. $B%"%$(B 33. $B$"$$(B ============================================================================= --:%% $B8uJd(B (Menudiag Selection)--L1--All---------------------- ============================================================================= $B8uJd(B: 0. $BAj(B 1. $B2q$$(B 2. $B9g$$(B 3. $B0)$$(B 4. $B0&(B 5. $B$"$$(B 6. $B%"%$(B 7. $BMu(B ============================================================================= $B?^(B6: $B0lMwI=<(%&%#%s%I%&(B $B$+$J4A;zJQ49$N8uJdA*Br$G%a%K%e!<%b!<%I$KF~$k$K$O!"=>MhDL$j(B M-s ($BBgJ8@a(B $BJQ49(B)$B!"(BM-z ($B>.J8@aJQ49(B) $B$r%?%$%W$7$^$9!#$3$N;~!"Be$o$j$K(B M-C-s$B!"(BM-C-z $B$r%?%$%W$9$k$H!"0lMwI=<(%&%#%s%I%&$bI=<($5$l$^$9!#(B 4.3 $B:FJQ49(B $B!!JQ49%5!<%P!<$K(B Wnn $B$r;H$C$F$$$k>l9g!"JQ49%b!<%ICf$K(B C-r $B$r%?%$%W$9$k(B $B$H!"%+!<%=%k$,$"$kJ8@a$,:FJQ49$5$l$^$9!#$3$l$O!"I=<($5$l$F$$$kJ8;zNs$r(B $B!VFI$_!W$H$7$F!":FEYJQ49$r9T$J$&5!G=$G$9!#(B $BIt $Bgg(B ------+------> $Bgg(B | | | | | | $B$/$5(B ------+ +------> $B0*(B | | | | | | $B$V$7$e(B ------+ +------> $B0+(B | | | | | | $B!D(B ------+ +------> $B!D(B | | | +----------------------------------------------------------+ $B?^(B7: $BItl9g!"(B($B:F(B)$BJQ49%3%^%s%I$K(B C-u $B%W%j%U%#%C(B $B%/%9$rIU$1$k$H5UJQ49(B ($B!V4A;z!W$+$i!VFI$_!W$XJQ49(B) $B$K$J$j$^$9!#4A;z$NFI(B $B$_$rD4$Y$?$$;~$O!"%U%'%s%9Cf$X4A;z$r(B yank $B$7$F$-$F!"(B C-u SPC $BKt$O(B C-u C-w $B$H%?%$%W$7$^$9!#$"$k$$$O!"FI$_$XJQ49$7$?$$ItJ,$r(B region $B;XDj$7$F$*(B $B$$$F!"(BC-u M-x egg-convert-region RET $B$H%?%$%W$7$^$9!#$J$*!"(B egg-convert-region $B$O!"5l(B Egg $B$N(B henkan-region $B$KAjEv$9$k4X?t$G$9!#(B 5. $B:#8e$NM=Dj(B $B!!:G=*E*$K$O!"(BEgg V4 $B$O(B GNU Emacs 20 $B$KAH9~$^$l$kM=Dj$K$J$C$F$$$^$9$,!"(B $B%9%1%8%e!<%k$K$D$$$F$O;d$b$h$/CN$j$^$;$s(B ($B$4$a$s$J$5$$(B)$B!#8=:_$O(B $B&B%F%9(B $B%H$N=`Hw$r9T$J$C$F$$$k$H$3$m$G$9$N$G!"Aa$/;H$C$F$_$?$$J}$d(B $B&B%F%9%H$X(B $B;22C$7$F$_$?$$J}$O!"3+H/A0(B| $B$r(B tamago-ctl@m17n.org $B08$KAw$k(B +--------------+ $B%a!<%kK\J8(B +-------------------------+ tamago-admin@m17n.org $B$+$i(B |subscribe $B3NG'HV9f(B $BL>A0(B| $B$,FO$/(B +-------------------------+ $B%a!<%kK\J8(B +-----------------------+ |subscribe $B3NG'HV9f(B $BL>A0(B| $B$r(B tamago-ctl@m17n.org $B08$KAw$jJV$9(B +-----------------------+ $B$H$J$C$F$^$9!#(Btamago ML $B$OEPO?$5$l$?%a!<%k%"%I%l%9$+$i$NEj9F$7$+l9g$O!"$=$N%"%I(B $B%a!<%kK\J8(B +----+ $B%l%9$NEPO?8e$K(B |skip|$B$r(B tamago-ctl@m17n.org $B$XAw$C$F2<$5$$!#(B +----+ $B$^$?(B http://www.m17n.org/tamago/ $B$b8fMw$K$J$C$F$$$F2<$5$$!#(B 6. $BED;a(B (Mule $B$N@_7W ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (setq load-path (append (list (expand-file-name "./") ) load-path)) (setq max-specpdl-size (* 10 max-specpdl-size) max-lisp-eval-depth (* 10 max-lisp-eval-depth)) (load "bytecomp" t t nil) (setq byte-compile-warnings '(obsolete redefine callargs); free-vars unresolved byte-optimize t ) (require 'cl) egg-4.2.0/ATTIC/egg-com.el000066400000000000000000000244601252027163000147670ustar00rootroot00000000000000;;; egg-com.el --- Communication Routines in Egg Input Method Architecture ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: Hisashi Miyashita ;; NIIBE Yutaka ;; KATAYAMA Yoshio ; Korean, Chinese support. ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (setq byte-compile-warnings '(obsolete redefine callargs)); free-vars unresolved ) (declare-function egg-error (message &rest args) "egg.el" nil) (defvar egg-fixed-euc '(fixed-euc-jp)) (make-variable-buffer-local 'egg-fixed-euc) (put 'egg-fixed-euc 'permanent-local t) (defvar egg-mb-euc 'euc-japan) (make-variable-buffer-local 'egg-mb-euc) (put 'egg-mb-euc 'permanent-local t) ;; Japanese (define-charset 'fixed-euc-jp "Fixed EUC Japanese" :dimension 2 :superset '(ascii (katakana-jisx0201 . #x80) (japanese-jisx0208 . #x8080) (japanese-jisx0212 . #x8000))) (define-coding-system 'fixed-euc-jp "Coding System for fixed EUC Japanese" :mnemonic ?W :coding-type 'charset :charset-list '(fixed-euc-jp)) (defun comm-format-u32c (uint32c) (insert-char (logand (lsh (car uint32c) -8) 255) 1) (insert-char (logand (car uint32c) 255) 1) (insert-char (logand (lsh (nth 1 uint32c) -8) 255) 1) (insert-char (logand (nth 1 uint32c) 255) 1)) (defun comm-format-u32 (uint32) (insert-char (logand (lsh uint32 -24) 255) 1) (insert-char (logand (lsh uint32 -16) 255) 1) (insert-char (logand (lsh uint32 -8) 255) 1) (insert-char (logand uint32 255) 1)) (defun comm-format-i32 (int32) (insert-char (logand (ash int32 -24) 255) 1) (insert-char (logand (ash int32 -16) 255) 1) (insert-char (logand (ash int32 -8) 255) 1) (insert-char (logand int32 255) 1)) (defun comm-format-u16 (uint16) (insert-char (logand (lsh uint16 -8) 255) 1) (insert-char (logand uint16 255) 1)) (defun comm-format-u8 (uint8) (insert-char (logand uint8 255) 1)) (defun comm-format-truncate-after-null (s) (if (string-match "\0" s) (substring s 0 (match-beginning 0)) s)) (defun comm-format-u16-string (s) (insert (encode-coding-string (comm-format-truncate-after-null s) egg-fixed-euc)) (insert-char 0 2)) (defun comm-format-mb-string (s) (insert (encode-coding-string (comm-format-truncate-after-null s) egg-mb-euc)) (insert-char 0 1)) (defun comm-format-u8-string (s) (insert (comm-format-truncate-after-null s)) (insert-char 0 1)) (defun comm-format-binary-data (s) (insert (encode-coding-string s 'egg-binary)) (insert-char ?\377 2)) (defun comm-format-fixlen-string (s len) (setq s (comm-format-truncate-after-null s)) (insert (if (< (length s) len) s (substring s 0 (1- len)))) (insert-char 0 (max (- len (length s)) 1))) (defun comm-format-vector (s len) (setq s (concat s)) (insert (if (<= (length s) len) s (substring s 0 len))) (insert-char 0 (- len (length s)))) (defmacro comm-format (format &rest args) "Format a string out of a control-list and arguments into the buffer. The formated datas are network byte oder (i.e. big endian).. U: 32-bit integer. The argument is 2 element 16-bit unsigned integer list. u: 32-bit integer. The argument is treat as unsigned integer. (Note: Elisp's integer may be less than 32 bits) i: 32-bit integer. (Note: Elisp's integer may be greater than 32 bits) w: 16-bit integer. b: 8-bit integer. S: 16-bit wide-character EUC string (0x0000 terminated). E: Multibyte EUC string (0x00 terminated). s: 8-bit string (0x00 terminated). B: Binary data (0xff terminated). v: 8-bit vector (no terminator). This takes 2 args (data length). V: Fixed length string (0x00 terminated). This takes 2 args (data length)." (let ((p args) (form format) (result (list 'progn)) f arg) (while (and form p) (setq f (car form) arg (car p)) (nconc result (list (cond ((eq f 'U) (list 'comm-format-u32c arg)) ((eq f 'u) (list 'comm-format-u32 arg)) ((eq f 'i) (list 'comm-format-i32 arg)) ((eq f 'w) (list 'comm-format-u16 arg)) ((eq f 'b) (list 'comm-format-u8 arg)) ((eq f 'S) (list 'comm-format-u16-string arg)) ((eq f 'E) (list 'comm-format-mb-string arg)) ((eq f 's) (list 'comm-format-u8-string arg)) ((eq f 'B) (list 'comm-format-binary-data arg)) ((eq f 'V) (setq p (cdr p)) (list 'comm-format-fixlen-string arg (car p))) ((eq f 'v) (setq p (cdr p)) (list 'comm-format-vector arg (car p)))))) (setq form (cdr form) p (cdr p))) (if (or form p) (error "comm-format %s: arguments mismatch" format)) result)) (defvar comm-accept-timeout nil) ;; Assume PROC is bound to the process of current buffer ;; Do not move the point, leave it where it was. (defmacro comm-accept-process-output () `(let ((p (point))) (if (null (accept-process-output proc comm-accept-timeout)) (egg-error "backend timeout")) (goto-char p))) (defmacro comm-require-process-output (n) `(if (< (point-max) (+ (point) ,n)) (comm-wait-for-space proc ,n))) (defun comm-wait-for-space (proc n) (let ((p (point)) (r (+ (point) n))) (while (< (point-max) r) (if (null (accept-process-output proc comm-accept-timeout)) (egg-error "backend timeout")) (goto-char p)))) (defmacro comm-following+forward-char () `(prog1 (following-char) (forward-char 1))) (defun comm-unpack-u32c () (progn (comm-require-process-output 4) (list (+ (lsh (comm-following+forward-char) 8) (comm-following+forward-char)) (+ (lsh (comm-following+forward-char) 8) (comm-following+forward-char))))) (defun comm-unpack-i32 () (progn (comm-require-process-output 4) (+ (lsh (- (logxor (comm-following+forward-char) 128) 128) 24) (lsh (comm-following+forward-char) 16) (lsh (comm-following+forward-char) 8) (comm-following+forward-char)))) (defun comm-unpack-u32 () (progn (comm-require-process-output 4) (+ (lsh (comm-following+forward-char) 24) (lsh (comm-following+forward-char) 16) (lsh (comm-following+forward-char) 8) (comm-following+forward-char)))) (defun comm-unpack-u16 () (progn (comm-require-process-output 2) (+ (lsh (comm-following+forward-char) 8) (comm-following+forward-char)))) (defun comm-unpack-u8 () (progn (comm-require-process-output 1) (comm-following+forward-char))) (defun comm-unpack-u16-string () (let ((start (point))) (while (not (search-forward "\0\0" nil t)) (comm-accept-process-output)) (decode-coding-string (buffer-substring start (- (point) 2)) egg-fixed-euc))) (defun comm-unpack-mb-string () (let ((start (point))) (while (not (search-forward "\0" nil t)) (comm-accept-process-output)) (decode-coding-string (buffer-substring start (1- (point))) egg-mb-euc))) (defun comm-unpack-u8-string () (let ((start (point))) (while (not (search-forward "\0" nil 1)) (comm-accept-process-output)) (buffer-substring start (1- (point))))) (defun comm-unpack-binary-data () (let ((start (point))) (while (not (search-forward "\377\377" nil 1)) (comm-accept-process-output)) (string-as-unibyte (decode-coding-string (buffer-substring start (- (point) 2)) 'binary)))) (defun comm-unpack-fixlen-string (len) (let (s) (comm-require-process-output len) (goto-char (+ (point) len)) (setq s (buffer-substring (- (point) len) (point))) (if (string-match "\0" s) (setq s (substring s 0 (match-beginning 0)))) s)) (defun comm-unpack-vector (len) (progn (comm-require-process-output len) (goto-char (+ (point) len)) (buffer-substring (- (point) len) (point)))) (defmacro comm-unpack (format &rest args) "Unpack a string out of a control-string and set arguments. See `comm-format' for FORMAT." (let ((p args) (form format) (result (list 'progn)) arg f) (while (and form p) (setq f (car form) arg (car p)) (nconc result (list (cond ((eq f 'U) `(setq ,arg (comm-unpack-u32c))) ((eq f 'u) `(setq ,arg (comm-unpack-u32))) ((eq f 'i) `(setq ,arg (comm-unpack-i32))) ((eq f 'w) `(setq ,arg (comm-unpack-u16))) ((eq f 'b) `(setq ,arg (comm-unpack-u8))) ((eq f 'S) `(setq ,arg (comm-unpack-u16-string))) ((eq f 'E) `(setq ,arg (comm-unpack-mb-string))) ((eq f 's) `(setq ,arg (comm-unpack-u8-string))) ((eq f 'B) `(setq ,arg (comm-unpack-binary-data))) ((eq f 'V) (setq p (cdr p)) `(setq ,arg (comm-unpack-fixlen-string ,(car p)))) ((eq f 'v) (setq p (cdr p)) `(setq ,arg (comm-unpack-vector ,(car p))))))) (setq form (cdr form) p (cdr p))) (if (or form p) (error "comm-unpack %s: arguments mismatch" format)) result)) (defmacro comm-call-with-proc (proc vlist send-expr &rest receive-exprs) (let ((euc-select (and (eq (car-safe (car vlist)) 'zhuyin) '((egg-fixed-euc (nth (if zhuyin 1 0) egg-fixed-euc)))))) `(let* ((proc ,proc) (buffer (process-buffer proc)) ,@vlist) (if (and (eq (process-status proc) 'open) (buffer-live-p buffer)) (with-current-buffer buffer (let ,euc-select (erase-buffer) ,send-expr (goto-char (point-max)) (process-send-region proc (point-min) (point-max)) ,@receive-exprs)) (egg-error "process %s was killed" proc))))) (defmacro comm-call-with-proc-1 (proc vlist send-expr &rest receive-exprs) `(let ,vlist (erase-buffer) ,send-expr (goto-char (point-max)) (process-send-region proc (point-min) (point-max)) ,@receive-exprs)) (provide 'egg-com) ;;; egg-com.el ends here. egg-4.2.0/ATTIC/egg-sim.el000066400000000000000000000420541252027163000150000ustar00rootroot00000000000000;;; -*- coding: iso-2022-7bit -*- ;;; egg-sim.el --- EGG Simple Input Method ;; Copyright (C) 2000 Electrotechnical Laboratory, JAPAN. ;; Licensed to the Free Software Foundation. ;; Copyright (C) 2000 TOMURA Satoru ;; Author: TOMURA Satoru ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: ;;; This code is based on egg-jsymbol.el of Egg V3. ;;; 92.10.18 modified for Mule Ver.0.9.6 by K.Handa ;;; Moved from egg.el ;;; 92.12.26 modified for Mule Ver.0.9.7 by T.Shingu ;;; JIS Hojo Kanji support. (require 'menudiag) (provide 'egg-sim) (defun make-char-list (charset &optional from to) (let ((result nil) (chars (charset-chars charset)) min max) (setq min (if (= chars 96) 32 33) max (if (= chars 96) 127 126)) (setq from (if from (+ min (1- from)) min) to (if to (+ min (1- to)) max)) (and (<= min from) (<= to max) (cond ((= (charset-dimension charset) 1) (while (<= from to) (setq result (cons (char-to-string (make-char charset to)) result) to (1- to))) result) ((= (charset-dimension charset) 2) (while (<= from to) (let ((code max)) (while (<= min code) (setq result (cons (char-to-string (make-char charset to code)) result) code (1- code)))) (setq to (1- to))) result))))) (defvar egg-sim-ascii-menu `(menu "ASCII:" ,(make-char-list 'ascii))) (defvar egg-sim-latin-1-menu `(menu "ISO 8859-1:" ,(make-char-list 'latin-iso8859-1))) (defvar egg-sim-latin-2-menu `(menu "ISO 8859-2:" ,(make-char-list 'latin-iso8859-2))) (defvar egg-sim-latin-3-menu `(menu "ISO 8859-3:" ,(make-char-list 'latin-iso8859-3))) (defvar egg-sim-latin-4-menu `(menu "ISO 8859-4:" ,(make-char-list 'latin-iso8859-4))) (defvar egg-sim-latin-5-menu `(menu "ISO 8859-9:" ,(make-char-list 'latin-iso8859-9))) (defvar egg-sim-cyrillic-menu `(menu "ISO 8859-5:" ,(make-char-list 'cyrillic-iso8859-5))) (defvar egg-sim-arabic-menu `(menu "ISO 8859-6:" ,(make-char-list 'arabic-iso8859-6))) (defvar egg-sim-greek-menu `(menu "ISO 8859-7:" ,(make-char-list 'greek-iso8859-7))) (defvar egg-sim-hebrew-menu `(menu "ISO 8859-8:" ,(make-char-list 'hebrew-iso8859-8))) (defvar egg-sim-thai-menu `(menu "TIS620.2529:" ,(make-char-list 'thai-tis620))) (defvar egg-sim-lao-menu `(menu "lao:" ,(make-char-list 'lao))) (defvar egg-sim-vietnamese-menu `(menu "Vietnamese:" (("VISCII" . (menu "VISCII:" ( "a" ",1`(B" ",1d(B" ",1c(B" ",1a(B" ",1U(B" ",1e(B" ",1"(B" ",1F(B" ",1G(B" ",1!(B" ",1#(B" ",1b(B" ",1%(B" ",1&(B" ",1g(B" ",1$(B" ",1'(B" "e" ",1i(B" ",1k(B" ",1((B" ",1h(B" ",1)(B" ",1j(B" ",1*(B" ",1,(B" ",1-(B" ",1+(B" ",1.(B" "i" ",1m(B" ",1o(B" ",1n(B" ",1l(B" ",18(B" "o" ",1s(B" ",1v(B" ",1u(B" ",1r(B" ",1w(B" ",1t(B" ",1/(B" ",11(B" ",12(B" ",10(B" ",15(B" ",1=(B" ",1>(B" ",17(B" ",1^(B" ",16(B" ",1~(B" "u" ",1z(B" ",1|(B" ",1{(B" ",1y(B" ",1x(B" ",1_(B" ",1Q(B" ",1X(B" ",1f(B" ",1W(B" ",1q(B" "y" ",1}(B" ",1V(B" ",1[(B" ",1O(B" ",1\(B" "A" ",2`(B" ",2d(B" ",2c(B" ",2a(B" ",2U(B" ",2e(B" ",2"(B" ",2F(B" ",2G(B" ",2!(B" ",2#(B" ",2b(B" ",2%(B" ",2&(B" ",2g(B" ",2$(B" ",2'(B" "E" ",2h(B" ",2k(B" ",2((B" ",2i(B" ",2)(B" ",2j(B" ",2+(B" ",2,(B" ",2-(B" ",2*(B" ",2.(B" "I" ",2l(B" ",2o(B" ",2n(B" ",2m(B" ",28(B" "O" ",2r(B" ",2v(B" ",2u(B" ",2s(B" ",2w(B" ",2t(B" ",20(B" ",21(B" ",22(B" ",2/(B" ",25(B" ",2=(B" ",26(B" ",27(B" ",2^(B" ",2>(B" ",2~(B" "U" ",2y(B" ",2|(B" ",2{(B" ",2z(B" ",2x(B" ",2_(B" ",2W(B" ",2X(B" ",2f(B" ",2Q(B" ",2q(B" "Y" ",2O(B" ",2V(B" ",2[(B" ",2}(B" ",2\(B" ",2p(B" ",1p(B" ))) ("VISCII1.1(lower-case)" . (menu "VISCII1.1 lower-case:" ,(make-char-list 'vietnamese-viscii-lower))) ("VISCII1.1(upper-case)" . (menu "VISCII1.1 upper-case:" ,(make-char-list 'vietnamese-viscii-upper)))))) (defvar egg-sim-chinese-big5-menu `(menu "Big5:" (("Level1" . (menu "Big 5 Level1:" , (make-char-list 'chinese-big5-1))) ("Level2" . (menu "Big 5 Level2:" , (make-char-list 'chinese-big5-2)))))) (defvar egg-sim-chinese-cns-menu `(menu "CNS 11643:" (("Plane-1" . (menu "CNS 11643-1:" ,(make-char-list 'chinese-cns11643-1))) ("Plane- 2" . (menu "CNS 11643-2:" ,(make-char-list 'chinese-cns11643-2))) ("Plane-3" . (menu "CNS 11643-3:" ,(make-char-list 'chinese-cns11643-3))) ("Plane-4" . (menu "CNS 11643-4:" ,(make-char-list 'chinese-cns11643-4))) ("Plane-5" . (menu "CNS 11643-5:" ,(make-char-list 'chinese-cns11643-5))) ("Plane-6" . (menu "CNS 11643-6:" ,(make-char-list 'chinese-cns11643-6))) ("Plane-7" . (menu "CNS 11643-7:" ,(make-char-list 'chinese-cns11643-7)))))) (defvar egg-sim-chinese-gb-menu `(menu "GB 2312:" (("All" . (menu "GB 2312:" ,(make-char-list 'chinese-gb2312))) ("Symbols" . (menu "GB2312/1:" ,(make-char-list 'chinese-gb2312 1 1))) ("Numbers" . (menu "GB2312/2:" ,(make-char-list 'chinese-gb2312 2 2))) ("Fullwidth ASCII" . (menu "GB2312/3:" ,(make-char-list 'chinese-gb2312 3 3))) ("Hiragana" . (menu "GB2312/4:" ,(make-char-list 'chinese-gb2312 4 4))) ("Katanaka" . (menu "GB2312/5:" ,(make-char-list 'chinese-gb2312 5 5))) ("Greek" . (menu "GB2312/6:" ,(make-char-list 'chinese-gb2312 6 6))) ("Cyrillic" . (menu "GB2312/7:" ,(make-char-list 'chinese-gb2312 7 7))) ("Pinyin/Bopomofo" . (menu "GB2312/8:" ,(make-char-list 'chinese-gb2312 8 8))) ("Box Drawings" . (menu "GB2312/9:" ,(make-char-list 'chinese-gb2312 9 9))) ))) (defvar egg-sim-chinese-menu `(menu "Chinese:" (("GB2312" . , egg-sim-chinese-gb-menu) ("CNS11643" . , egg-sim-chinese-cns-menu) ("Big5" . , egg-sim-chinese-big5-menu)))) (defvar egg-sim-korean-menu `(menu "Korean:" (("KSC5601" . (menu "KSC 5601:" ,(make-char-list 'korean-ksc5601))) ("Symbol" . (menu "KSC 5601/1-2:" ,(make-char-list 'korean-ksc5601 1 2))) ("Fullwidth ASCII" . (menu "KSC 5601/3:" , (make-char-list 'korean-ksc5601 3 3))) ("Jamo" . (menu "KSC 5601/4:" , (make-char-list 'korean-ksc5601 4 4))) ("Roman Number/Greek" . (menu "KSC 5601/5:" , (make-char-list 'korean-ksc5601 5 5))) ("Box Drawings" . (menu "KSC 5601/6:" , (make-char-list 'korean-ksc5601 6 6))) ("Unit" . (menu "KSC 5601/7:" , (make-char-list 'korean-ksc5601 7 7))) ("Misc." . (menu "KSC 5601/8-9:" , (make-char-list 'korean-ksc5601 8 9))) ("Hiragana" . (menu "KSC 5601/10:" , (make-char-list 'korean-ksc5601 10 10))) ("Katakana" . (menu "KSC 5601/11:" , (make-char-list 'korean-ksc5601 11 11))) ("Cyrillic" . (menu "KSC 5601/12:" , (make-char-list 'korean-ksc5601 12 12))) ("Hangul" . (menu "KSC 5601/16-40:" , (make-char-list 'korean-ksc5601 16 40))) ("Hanja" . (menu "KSC 5601/42-93:" , (make-char-list 'korean-ksc5601 42 93)))))) (defvar egg-sim-japanese-menu `(menu "Japanese:" (("JISX0201" . (menu "JIS X 0201:" ,(append (make-char-list 'latin-jisx0201) (make-char-list 'katakana-jisx0201)))) ("JISX0208" . (menu "JIS X 0208:" ,(make-char-list 'japanese-jisx0208))) ("JISX0212" . (menu "JIS X 0212:" ,(make-char-list 'japanese-jisx0212))) ("JISX0208/0212" . (menu "$B5-9fF~NO(B:" (("JIS$BF~NO(B" . japanese-jisx0208) ("$B5-9f(B" . (menu "$B5-9f(B:" , (make-char-list 'japanese-jisx0208 1 2))) ("$B1Q?t;z(B" . (menu "$B1Q?t;z(B:" , (make-char-list 'japanese-jisx0208 3 3))) ("$B$R$i$,$J(B" . (menu "$B$R$i$,$J(B:" , (make-char-list 'japanese-jisx0208 4 4))) ("$B%+%?%+%J(B" . (menu "$B%+%?%+%J(B:" , (make-char-list 'japanese-jisx0208 5 5))) ("$B%.%j%7%cJ8;z(B" . (menu "$B%.%j%7%cJ8;z(B:" , (make-char-list 'japanese-jisx0208 6 6))) ("$B%-%j%kJ8;z(B" . (menu "$B%-%j%kJ8;z(B:" , (make-char-list 'japanese-jisx0208 7 7))) ("$B7S@~(B" . (menu "$B7S@~(B:" , (make-char-list 'japanese-jisx0208 8 8))) ;;;"$BIt ;; Maintainer: TOMURA Satoru ;; Keywords: input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (require 'egg) (require 'egg-sj3rpc) (defgroup sj3 nil "SJ3 interface for Tamago 4." :group 'egg) (defcustom sj3-hostname "localhost" "Hostname of SJ3 server" :group 'sj3 :type 'string) (defcustom sj3-server-port 3086 "Port number of SJ3 server" :group 'sj3 :type 'integer) (defmacro SJ3-const (c) (cond ((eq c 'FileNotExist) 35) )) (defvar sj3-hinshi-menu '(("名詞" . (menu "品詞:名詞:" (("名詞" . 1) ("名詞(お…)" . 2) ("名詞(ご…)" . 3) ("名詞(…的/化)" . 4) ("名詞(お…する)" . 5) ("名詞(…する)" . 6) ("名詞(ご…する)" . 7) ("名詞(…な/に)" . 8) ("名詞(お…な/に)" . 9) ("名詞(ご…な/に)" . 10) ("名詞(副詞)" . 11)))) ("代名詞" . 12) ("苗字" . 21) ("名前" . 22) ("地名" . 24) ("県/区名" . 25) ("動詞" . (menu "品詞:動詞:" (("サ変語幹" . 80) ("ザ変語幹" . 81) ("一段不変化部" . 90) ("カ行五段語幹" . 91) ("ガ行五段語幹" . 92) ("サ行五段語幹" . 93) ("タ行五段語幹" . 94) ("ナ行五段語幹" . 95) ("バ行五段語幹" . 96) ("マ行五段語幹" . 97) ("ラ行五段語幹" . 98) ("ワ行五段語幹" . 99)))) ("連体詞" . 26) ("接続詞" . 27) ("助数詞" . 29) ("数詞" . 30) ("接頭語" . 31) ("接尾語" . 36) ("副詞" . 45) ("副詞2" . 46) ("形容詞語幹" . 60) ("形容動詞語幹" . 71) ("単漢字" . 189)) "Menu data for a hinshi (a part of speech) selection.") (defun sj3-hinshi-name (id &optional menu alist) "Return a hinshi (a part of speech) name corresponding to ID. If ID is nil, return a flattened alist from `sj3-hinshi-menu'. Don't specify the optional arguments in normal use." (let ((menu (or menu sj3-hinshi-menu))) (if (consp menu) (if (consp (cdr menu)) (mapc (lambda (elem) (setq alist (sj3-hinshi-name nil elem alist))) menu) (setq alist (nconc alist (list (cons (cdr menu) (car menu))))))) (if id (cdr (assq id alist)) alist))) (setplist 'sj3-conversion-backend '(egg-start-conversion sj3-start-conversion egg-get-bunsetsu-source sj3-get-bunsetsu-source egg-get-bunsetsu-converted sj3-get-bunsetsu-converted egg-list-candidates sj3-list-candidates egg-decide-candidate sj3-decide-candidate egg-change-bunsetsu-length sj3-change-bunsetsu-length egg-end-conversion sj3-end-conversion egg-word-registration sj3-word-registration)) (defconst sj3-backend-alist '((Japanese ((sj3-conversion-backend))))) (egg-set-finalize-backend '(sj3-finalize-backend)) (defvar sj3-stdy-size 0 "STDYSIZE of SJ3 server") (defvar sj3-open-message) (defun sj3-open (hostname) "Establish the connection to SJ3 server. Return process object." (let* ((buf (generate-new-buffer " *SJ3*")) proc result) (condition-case err (setq proc (open-network-stream "SJ3" buf hostname sj3-server-port)) ((error quit) (egg-error "failed to connect sj3 server"))) (set-process-query-on-exit-flag proc nil) (set-process-coding-system proc 'binary 'binary) (set-marker-insertion-type (process-mark proc) t) (with-current-buffer buf (erase-buffer) (buffer-disable-undo) (set-buffer-multibyte nil)) ;; Initialize dictionaries (setq result (sj3rpc-open proc (system-name) (user-login-name))) (if (< result 0) (let ((msg (sj3rpc-get-error-message (- result)))) (delete-process proc) (kill-buffer buf) (egg-error "Can't open SJ3 session (%s): %s" hostname msg))) (setq result (sj3rpc-get-stdy-size proc)) (if (< result 0) (let ((msg (sj3rpc-get-error-message (- result)))) (delete-process proc) (kill-buffer buf) (egg-error "Can't get SJ3 STDYSIZE: %s"msg))) (setq sj3-stdy-size result) proc)) ;; ::= [ ] (defvar sj3-environment nil "Environment for SJ3 kana-kanji conversion") (defsubst sj3env-get-proc (env) (aref env 0)) (defsubst sj3env-get-dictionary-list (env) (aref env 1)) ;; ::= ;; [ ;; ;; ] (defsubst sj3-make-bunsetsu (env source converted rest stdy) (egg-bunsetsu-create 'sj3-conversion-backend (vector env source converted rest stdy nil nil nil nil nil))) (defsubst sj3bunsetsu-get-env (b) (aref (egg-bunsetsu-get-info b) 0)) (defsubst sj3bunsetsu-get-source (b) (aref (egg-bunsetsu-get-info b) 1)) (defsubst sj3bunsetsu-get-converted (b) (aref (egg-bunsetsu-get-info b) 2)) (defsubst sj3bunsetsu-get-rest (b) (aref (egg-bunsetsu-get-info b) 3)) (defsubst sj3bunsetsu-get-stdy (b) (aref (egg-bunsetsu-get-info b) 4)) (defsubst sj3bunsetsu-get-zenkouho (b) (aref (egg-bunsetsu-get-info b) 5)) (defsubst sj3bunsetsu-set-zenkouho (b z) (aset (egg-bunsetsu-get-info b) 5 z)) (defsubst sj3bunsetsu-get-zenkouho-pos (b) (aref (egg-bunsetsu-get-info b) 6)) (defsubst sj3bunsetsu-set-zenkouho-pos (b zp) (aset (egg-bunsetsu-get-info b) 6 zp)) (defsubst sj3bunsetsu-get-zenkouho-converted (b) (aref (egg-bunsetsu-get-info b) 7)) (defsubst sj3bunsetsu-set-zenkouho-converted (b zc) (aset (egg-bunsetsu-get-info b) 7 zc)) (defsubst sj3bunsetsu-get-kugiri-changed (b) (aref (egg-bunsetsu-get-info b) 8)) (defsubst sj3bunsetsu-set-kugiri-changed (b s) (aset (egg-bunsetsu-get-info b) 8 s)) (defun sj3-get-bunsetsu-source (b) (sj3bunsetsu-get-source b)) (defun sj3-get-bunsetsu-converted (b) (concat (sj3bunsetsu-get-converted b) (sj3bunsetsu-get-rest b))) (defun sj3-get-bunsetsu-stdy (b) (sj3bunsetsu-get-stdy b)) (defvar sj3-dictionary-specification '(("study.dat") ["sj3main.dic" ""] [("private.dic") ""]) "Dictionary specification of SJ3.") (defvar sj3-usr-dic-dir (concat "user/" (user-login-name)) "*Directory of user dictionary for SJ3.") (defun sj3-filename (p) "" (cond ((consp p) (concat sj3-usr-dic-dir "/" (car p))) (t p))) (defun sj3-get-environment () "Return the backend of SJ3 environment." (if sj3-environment sj3-environment (let* ((proc (sj3-open sj3-hostname)) (freq-info-name (sj3-filename (car sj3-dictionary-specification))) (l (cdr sj3-dictionary-specification)) dict-list) (sj3-open-freq-info proc freq-info-name) (while l (let ((dic (car l)) dic-id) (setq dic-id (sj3-open-dictionary proc (sj3-filename (aref dic 0)) (aref dic 1))) (if (< dic-id 0) (egg-error "Dame2") ; XXX (setq dict-list (cons dic-id dict-list) l (cdr l))))) (setq sj3-environment (vector proc dict-list))))) (defun sj3-open-freq-info (proc name) (let ((trying t) ret) (while trying (setq ret (sj3rpc-open-stdy proc name)) (if (= ret 0) (setq trying nil) (message "学習ファイル(%s)がありません" name) (if (/= ret (SJ3-const FileNotExist)) (egg-error "Fatal1") ; XXX (if (and (y-or-n-p (format "学習ファイル(%s)がありません。作りますか? " name)) (sj3rpc-make-directory proc (file-name-directory name)) ;; ignore error (= (sj3rpc-make-stdy proc name) 0)) (message "学習ファイル(%s)を作りました" name) (egg-error "Fatal2"))))))) ; XXX (defun sj3-open-dictionary (proc name passwd) (let ((trying t) ret) (while trying (setq ret (sj3rpc-open-dictionary proc name passwd)) (if (>= ret 0) (setq trying nil) (message "辞書ファイル(%s)がありません" name) (setq ret (- ret)) ; Get error code. (if (/= ret (SJ3-const FileNotExist)) (egg-error "Fatal3 %d" ret) ; XXX (if (and (y-or-n-p (format "辞書ファイル(%s)がありません。作りますか? " name)) (= (sj3rpc-make-dictionary proc name) 0)) (message "辞書ファイル(%s)を作りました" name) (egg-error "Fatal4"))))) ; XXX ret)) (defun sj3-start-conversion (backend yomi &optional context) "Convert YOMI string to kanji, and enter conversion mode. Return the list of bunsetsu." (let ((env (sj3-get-environment))) (sj3rpc-begin env yomi))) (defun sj3-end-conversion (bunsetsu-list abort) (if abort () (let ((env (sj3bunsetsu-get-env (car bunsetsu-list))) (l bunsetsu-list) bunsetsu stdy kugiri-changed) (while l (setq bunsetsu (car l)) (setq l (cdr l)) (setq stdy (sj3bunsetsu-get-stdy bunsetsu)) (if stdy (sj3rpc-bunsetsu-stdy env stdy)) (if (and l (setq kugiri-changed (sj3bunsetsu-get-kugiri-changed bunsetsu))) (let ((yomi1 (sj3bunsetsu-get-source bunsetsu)) (yomi2 (sj3bunsetsu-get-source (car l)))) (if (/= kugiri-changed (length yomi1)) (sj3rpc-kugiri-stdy env yomi1 yomi2 (sj3bunsetsu-get-stdy (car l)))))))))) (defun sj3-list-candidates (bunsetsu prev-bunsetsu next-bunsetsu major) (setq bunsetsu (car bunsetsu)) (if (sj3bunsetsu-get-zenkouho bunsetsu) (cons (sj3bunsetsu-get-zenkouho-pos bunsetsu) (sj3bunsetsu-get-zenkouho-converted bunsetsu)) (let* ((env (sj3bunsetsu-get-env bunsetsu)) (yomi (sj3bunsetsu-get-source bunsetsu)) (z (sj3rpc-get-bunsetsu-candidates env yomi))) (sj3bunsetsu-set-zenkouho bunsetsu z) (cons (sj3bunsetsu-set-zenkouho-pos bunsetsu 0) (sj3bunsetsu-set-zenkouho-converted bunsetsu (mapcar 'sj3bunsetsu-get-converted z)))))) (defun sj3-decide-candidate (bunsetsu candidate-pos prev-b next-b) (setq bunsetsu (car bunsetsu)) (let* ((candidate-list (sj3bunsetsu-get-zenkouho bunsetsu)) (candidate (nth candidate-pos candidate-list))) (sj3bunsetsu-set-zenkouho candidate candidate-list) (sj3bunsetsu-set-zenkouho-pos candidate candidate-pos) (sj3bunsetsu-set-zenkouho-converted candidate (sj3bunsetsu-get-zenkouho-converted bunsetsu)) (list (list candidate)))) (defun sj3-change-bunsetsu-length (bunsetsu prev-b next-b len major) (let ((yomi (mapconcat 'sj3bunsetsu-get-source bunsetsu nil)) (env (sj3bunsetsu-get-env (car bunsetsu))) (old (car bunsetsu)) new yomi1 yomi2) (setq yomi1 (substring yomi 0 len) yomi2 (substring yomi len)) (setq new (sj3rpc-tanbunsetsu-conversion env yomi1)) ;; Only set once (memory original length of the bunsetsu). (sj3bunsetsu-set-kugiri-changed new (or (sj3bunsetsu-get-kugiri-changed old) (length (sj3bunsetsu-get-source old)))) (if (> (length yomi2) 0) (list (list new (sj3rpc-tanbunsetsu-conversion env yomi2))) (list (list new))))) (defun sj3-finalize-backend () (if sj3-environment (let ((proc (sj3env-get-proc sj3-environment)) (dict-list (sj3env-get-dictionary-list sj3-environment)) dict) (while dict-list (setq dict (car dict-list)) (setq dict-list (cdr dict-list)) (sj3rpc-close-dictionary proc dict)) ; XXX: check error (sj3rpc-close-stdy proc) (sj3rpc-close proc) (setq sj3-environment nil)))) ;;; word registration (defun sj3-dictionary-select () (menudiag-select (list 'menu (egg-get-message 'sj3-register-1) (aref (nth 2 sj3-dictionary-specification) 0)))) (defun sj3-hinshi-select () (menudiag-select (list 'menu (egg-get-message 'sj3-register-2) sj3-hinshi-menu))) (defun sj3-word-registration (backend kanji yomi) "Register a word KANJI with a pronunciation YOMI." (let* ((env (sj3-get-environment)) (dic (sj3-dictionary-select)) (hinshi-id (sj3-hinshi-select)) (result (sj3rpc-add-word env (car (aref env 1)) yomi kanji hinshi-id))) (if (>= result 0) (list (sj3-hinshi-name hinshi-id) dic) (egg-error (sj3rpc-get-error-message (- result)))))) ;;; setup (run-hooks 'sj3-load-hook) ;;;###autoload (defun egg-activate-sj3 (&rest arg) "Activate SJ3 backend of Tamago 4." (apply 'egg-mode (append arg sj3-backend-alist))) ;;; egg-sj3.el ends here. egg-4.2.0/ATTIC/egg-sj3rpc.el000066400000000000000000000234471252027163000154210ustar00rootroot00000000000000;;; egg-sj3rpc.el --- SJ3 Support (low level interface) in Egg ;;; Input Method Architecture ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; Maintainer: TOMURA Satoru ;; Keywords: input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (require 'egg-com) (defvar sj3-stdy-size) ; in egg-sj3.el (declare-function egg-error (message &rest args) "egg.el" nil) (declare-function sj3env-get-proc (env) "egg-sj3.el" nil) (declare-function sj3-make-bunsetsu (env source converted rest stdy) "egg-sj3.el" nil) (defvar sj3-server-version 2 "*Major version number of SJ3 server.") (defvar sj3-server-coding-system 'shift_jis "*Coding system used when decoding and encoding of I/O operation with SJ3 server. Valid coding systems are depend on the server spec.") (require 'egg-com) (defmacro sj3-sjis-p () '(eq 'coding-category-sjis (coding-system-category sj3-server-coding-system))) (defmacro sj3-const (c) (cond ((eq c 'OPEN) 1) ((eq c 'CLOSE) 2) ((eq c 'DICADD) 11) ((eq c 'DICDEL) 12) ((eq c 'OPENSTDY) 21) ((eq c 'CLOSESTDY) 22) ((eq c 'STDYSIZE) 23) ((eq c 'LOCK) 31) ((eq c 'UNLOCK) 32) ((eq c 'BEGIN) '(if (sj3-sjis-p) 41 111)) ((eq c 'TANCONV) '(if (sj3-sjis-p) 51 112)) ((eq c 'KOUHO) '(if (sj3-sjis-p) 54 115)) ((eq c 'KOUHOSU) '(if (sj3-sjis-p) 55 116)) ((eq c 'STDY) 61) ((eq c 'CLSTDY) '(if (sj3-sjis-p) 62 117)) ((eq c 'WREG) '(if (sj3-sjis-p) 71 118)) ((eq c 'WDEL) '(if (sj3-sjis-p) 72 119)) ((eq c 'MKDIC) 81) ((eq c 'MKSTDY) 82) ((eq c 'MKDIR) 83) ((eq c 'ACCESS) 84) ((eq c 'WSCH) '(if (sj3-sjis-p) 91 120)) ((eq c 'WNSCH) '(if (sj3-sjis-p) 92 121)) ((eq c 'VERSION) 103) (t (error "No such constant")))) ;; XXX (defconst sj3rpc-error-message (vector )) (defun sj3rpc-get-error-message (errno) (or (and (>= errno 0) (< errno (length sj3rpc-error-message)) (aref sj3rpc-error-message errno)) (format "#%d" errno))) (defmacro sj3rpc-call-with-environment (e vlist send-expr &rest receive-exprs) (let ((v (append `((proc (sj3env-get-proc ,e))) vlist))) (list 'let v (append `(with-current-buffer (process-buffer proc) (erase-buffer) ,send-expr (process-send-region proc (point-min) (point-max)) (goto-char (prog1 (point) (accept-process-output proc)))) receive-exprs)))) (defmacro sj3rpc-unpack-mb-string () '(let ((start (point))) (while (not (search-forward "\0" nil t)) (comm-accept-process-output)) (decode-coding-string (buffer-substring start (1- (point))) sj3-server-coding-system))) (defun sj3rpc-open (proc myhostname username) "Open the session. Return 0 on success, error code on failure." (comm-call-with-proc proc (result) (comm-format (u u s s s) (sj3-const OPEN) sj3-server-version myhostname username ;; program name (format "%d.emacs-egg" (emacs-pid))) (comm-unpack (i) result) (if (= result -2) 0 result))) (defun sj3rpc-close (proc) (comm-call-with-proc proc (result) (comm-format (u) (sj3-const CLOSE)) (comm-unpack (i) result) result)) (defun sj3rpc-get-stdy-size (proc) "Return STDYSIZE of SJ3 server. On failure, return error code." (comm-call-with-proc proc (result) (comm-format (u) (sj3-const STDYSIZE)) (comm-unpack (u) result) (if (/= result 0) (- result) ; failure (comm-unpack (u) result) result))) (defsubst sj3rpc-get-stdy (proc) (let (r (n 0) (stdy (make-vector sj3-stdy-size 0))) (while (< n sj3-stdy-size) (comm-unpack (b) r) (aset stdy n r) (setq n (1+ n))) stdy)) (defun sj3rpc-begin (env yomi) "Begin conversion." (let ((yomi-ext (encode-coding-string yomi sj3-server-coding-system)) (p 0) len source converted stdy bunsetsu-list bl result) (sj3rpc-call-with-environment env (result) (comm-format (u s) (sj3-const BEGIN) yomi-ext) (comm-unpack (u) result) (if (/= result 0) (- result) ; failure (comm-unpack (u) result) ; skip (while (progn (comm-unpack (b) len) (> len 0)) (setq stdy (sj3rpc-get-stdy proc)) (setq converted (sj3rpc-unpack-mb-string)) (setq source (decode-coding-string (substring yomi-ext p (+ p len)) sj3-server-coding-system) p (+ p len)) (let ((bl1 (cons (sj3-make-bunsetsu env source converted nil stdy) nil))) (if bl (setq bl (setcdr bl bl1)) (setq bunsetsu-list (setq bl bl1))))) bunsetsu-list)))) (defun sj3rpc-open-dictionary (proc dict-file-name password) (comm-call-with-proc proc (result) (comm-format (u s s) (sj3-const DICADD) dict-file-name password) (comm-unpack (u) result) (if (/= result 0) (- result) ; failure (comm-unpack (u) result) result))) (defun sj3rpc-close-dictionary (proc dict-no) (comm-call-with-proc proc (result) (comm-format (u u) (sj3-const DICDEL) dict-no) (comm-unpack (i) result) result)) (defun sj3rpc-make-dictionary (proc dict-name) (comm-call-with-proc proc (result) (comm-format (u s u u u) (sj3-const MKDIC) dict-name 2048 ; Index length 2048 ; Length 256 ; Number ) (comm-unpack (i) result) result)) (defun sj3rpc-open-stdy (proc stdy-name) (comm-call-with-proc proc (result) (comm-format (u s s) (sj3-const OPENSTDY) stdy-name "") (comm-unpack (i) result) result)) (defun sj3rpc-close-stdy (proc) (comm-call-with-proc proc (result) (comm-format (u) (sj3-const CLOSESTDY)) (comm-unpack (i) result) result)) (defun sj3rpc-make-stdy (proc stdy-name) (comm-call-with-proc proc (result) (comm-format (u s u u u) (sj3-const MKSTDY) stdy-name 2048 ; Number 1 ; Step 2048 ; Length ) (comm-unpack (i) result) result)) (defun sj3rpc-make-directory (proc name) (comm-call-with-proc proc (result) (comm-format (u s) (sj3-const MKDIR) name) (comm-unpack (i) result) result)) (defun sj3rpc-get-bunsetsu-candidates-sub (proc env yomi yomi-ext len n) (let ((i 0) stdy converted bunsetsu bl bunsetsu-list cylen rest) (comm-call-with-proc-1 proc (result) (comm-format (u u s) (sj3-const KOUHO) len yomi-ext) (comm-unpack (u) result) (if (/= result 0) (- result) ; failure (while (< i n) (comm-unpack (u) cylen) (setq stdy (sj3rpc-get-stdy proc)) (setq converted (sj3rpc-unpack-mb-string)) (setq rest (decode-coding-string (substring yomi-ext cylen) sj3-server-coding-system)) (setq bunsetsu (sj3-make-bunsetsu env yomi converted rest stdy)) (if bl (setq bl (setcdr bl (cons bunsetsu nil))) (setq bunsetsu-list (setq bl (cons bunsetsu nil)))) (setq i (1+ i))) (setq bunsetsu (sj3-make-bunsetsu env yomi yomi nil nil)) (setq bl (setcdr bl (cons bunsetsu nil))) (setq bunsetsu (sj3-make-bunsetsu env yomi (japanese-katakana yomi) nil nil)) (setq bl (setcdr bl (cons bunsetsu nil))) bunsetsu-list)))) (defun sj3rpc-get-bunsetsu-candidates (env yomi) (let* ((yomi-ext (encode-coding-string yomi sj3-server-coding-system)) (len (length yomi-ext))) (sj3rpc-call-with-environment env (result) (comm-format (u u s) (sj3-const KOUHOSU) len yomi-ext) (comm-unpack (u) result) (if (/= result 0) (- result) ; failure (comm-unpack (u) result) (if (= result 0) (list (sj3-make-bunsetsu env yomi yomi nil nil)) ; XXX (sj3rpc-get-bunsetsu-candidates-sub proc env yomi yomi-ext len result)))))) (defun sj3rpc-tanbunsetsu-conversion (env yomi) (let* ((yomi-ext (encode-coding-string yomi sj3-server-coding-system)) (len (length yomi-ext)) cylen stdy converted rest bunsetsu) (sj3rpc-call-with-environment env (result) (comm-format (u u s) (sj3-const TANCONV) len yomi-ext) (comm-unpack (u) result) (if (/= result 0) (- result) (comm-unpack (u) cylen) (setq stdy (sj3rpc-get-stdy proc)) (setq converted (sj3rpc-unpack-mb-string)) (setq rest (decode-coding-string (substring yomi-ext cylen) sj3-server-coding-system)) (setq bunsetsu (sj3-make-bunsetsu env yomi converted rest stdy)))))) (defun sj3rpc-bunsetsu-stdy (env stdy) (sj3rpc-call-with-environment env (result) (comm-format (u v) (sj3-const STDY) stdy (length stdy)) (comm-unpack (u) result) (- result))) (defun sj3rpc-kugiri-stdy (env yomi1 yomi2 stdy) (sj3rpc-call-with-environment env (result) (comm-format (u s s v) (sj3-const CLSTDY) (encode-coding-string yomi1 sj3-server-coding-system) (encode-coding-string yomi2 sj3-server-coding-system) stdy (length stdy)) (comm-unpack (u) result) (- result))) (defun sj3rpc-add-word (env dictionary yomi kanji hinshi) "Register a word KANJI into DICTIONARY with a pronunciation YOMI and a part of speech HINSHI. Where DICTIONARY should be an integer." (sj3rpc-call-with-environment env (result) (comm-format (u u s s u) (sj3-const WREG) dictionary (encode-coding-string yomi sj3-server-coding-system) (encode-coding-string kanji sj3-server-coding-system) hinshi) (comm-unpack (u) result) (- result))) (provide 'egg-sj3rpc) ;;; egg-sj3rpc.el ends here. egg-4.2.0/ATTIC/egg/000077500000000000000000000000001252027163000136635ustar00rootroot00000000000000egg-4.2.0/ATTIC/egg/canna.el000066400000000000000000001027771252027163000153030ustar00rootroot00000000000000;;; egg/canna.el --- Canna Support (high level interface) in ;;; Egg Input Method Architecture ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (require 'egg) (defgroup canna nil "CANNA interface for Tamago 4." :group 'egg) (defcustom canna-hostname "localhost" "Hostname of CANNA server" :group 'canna :type 'string) (defcustom canna-server-port "canna" "A service name or a port number (should be a string) of CANNA server" :group 'canna :type 'string) (defcustom canna-user-name nil "User Name on CANNA server" :group 'canna :type 'string) (defcustom canna-group-name nil "Group Name on CANNA server" :group 'canna :type 'string) ; (eval-when-compile ; (defmacro CANNA-const (c) ; (cond ((eq c 'FileNotExist) xxxxxxxxxxxxxx) ; ))) (egg-add-message '((Japanese (canna-connect-error "$B%5!<%P$H@\B3$G$-$^$;$s$G$7$?(B") (canna-fail-make-env "$B4D6-$r:n$k$3$H$O$G$-$^$;$s$G$7$?(B") (canna-dict-missing-1 "$B<-=q%U%!%$%k(B %s $B$,$"$j$^$;$s!#(B") (canna-dict-missing-2 "$B<-=q%U%!%$%k(B %s $B$,$"$j$^$;$s!#:n$j$^$9$+(B? ") (canna-dict-created "$B<-=q%U%!%$%k(B %s $B$r:n$j$^$7$?(B") (canna-dict-saving "%s $B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$F$$$^$9(B") (canna-dict-saved "%s $B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?(B") (canna-register-1 "$BEPO?<-=qL>(B:") (canna-register-2 "$BIJ;lL>(B")))) (defvar canna-hinshi-alist '(("$B?ML>(B" . "#JN") ("$BCOL>(B" . "#CN") ("$B8GM-L>;l(B" . "#KK") ("$B0lHLL>;l(B" . "#T35") ("$BL>;l(B($BNc(B)$B6/NO$J(B" . "#T15") ("$B%5JQL>;l(B" . "#T30") ("$B%5JQL>;l(B($BNc(B)$B0B?4$J(B" . "#T10") ("$BC14A;z(B" . "#KJ") ("$BF0;l%+9TJQ3J3hMQ(B" . "#KX") ("$BF0;l%s%69TJQ3J3hMQ(B" . "#NZX") ("$BF0;l%69TJQ3J3hMQ(B" . "#ZX") ("$BF0;l%59TJQ3J3hMQ(B" . "#SX") ("$BF0;l%+9T8^CJ3hMQ(B" . "#K5") ("$BF0;l%,9T8^CJ3hMQ(B" . "#G5") ("$BF0;l%59T8^CJ3hMQ(B" . "#S5") ("$BF0;l%?9T8^CJ3hMQ(B" . "#T5") ("$BF0;l%J9T8^CJ3hMQ(B" . "#N5") ("$BF0;l%P9T8^CJ3hMQ(B" . "#B5") ("$BF0;l%^9T8^CJ3hMQ(B" . "#M5") ("$BF0;l%i9T8^CJ3hMQ(B" . "#R5") ("$BF0;l%o9T8^CJ3hMQ(B" . "#W5") ("$BF0;l>e2<0lCJ3hMQ(B" . "#KS") ("$BF0;l%+9T8^CJO"MQL>;l(B" . "#K5r") ("$BF0;l%,9T8^CJO"MQL>;l(B" . "#G5r") ("$BF0;l%59T8^CJO"MQL>;l(B" . "#S5r") ("$BF0;l%?9T8^CJO"MQL>;l(B" . "#T5r") ("$BF0;l%J9T8^CJO"MQL>;l(B" . "#N5r") ("$BF0;l%P9T8^CJO"MQL>;l(B" . "#B5r") ("$BF0;l%^9T8^CJO"MQL>;l(B" . "#M5r") ("$BF0;l%i9T8^CJO"MQL>;l(B" . "#R5r") ("$BF0;l%o9T8^CJO"MQL>;l(B" . "#W5r") ("$BF0;l>e2<0lCJ8l44L>;l(B" . "#KSr") ("$B7AMF;l(B" . "#KY") ("$B7AMF;l(B($BNc(B)$B$-$$$m$$(B" . "#KYT") ("$B7AMFF0;l(B" . "#T05") ("$B7AMFF0;l(B($BNc(B)$B4X?4$@(B" . "#T10") ("$B7AMFF0;l(B($BNc(B)$BB?92$F$@(B" . "#T13") ("$B7AMFF0;l(B($BNc(B)$B0U30$@(B" . "#T15") ("$B7AMFF0;l(B($BNc(B)$BJXMx$@(B" . "#T18") ("$BI{;l(B" . "#F14") ("$BI{;l(B($BNc(B)$B$U$C$/$i(B" . "#F04") ("$BI{;l(B($BNc(B)$B$=$C$H(B" . "#F12") ("$BI{;l(B($BNc(B)$BFMA3(B" . "#F06") ("$B?t;l(B" . "#NN") ("$B@\B3;l!&46F0;l(B" . "#CJ") ("$BO"BN;l(B" . "#RT"))) (defvar canna-hinshi-menu '("$B?ML>(B" "$BCOL>(B" ("$BCDBN!&2q(B" . "$B8GM-L>;l(B") ("$BL>;l(B" . MEISHI) ("$B%5JQL>;l(B" . SAHEN-MEISHI) "$BC14A;z(B" ("$BF0;l(B" . DOUSHI) ("$B7AMF;l(B" . KEIYOUSHI) ("$B7AMFF0;l(B" . KEIYOUDOUSHI) ("$BI{;l(B" . FUKUSHI) "$B?t;l(B" "$B@\B3;l!&46F0;l(B" "$BO"BN;l(B" ("$B$=$NB>$N8GM-L>;l(B" . "$B8GM-L>;l(B")) "Menu data for a hinshi (a part of speech) selection.") (defun canna-hinshi-name (id &optional reverse) (if reverse (cdr (assoc id canna-hinshi-alist)) (car (rassoc id canna-hinshi-alist)))) (defmacro canna-backend-plist () ''(egg-start-conversion canna-start-conversion egg-get-bunsetsu-source canna-get-bunsetsu-source egg-get-bunsetsu-converted canna-get-bunsetsu-converted egg-get-source-language canna-get-source-language egg-get-converted-language canna-get-converted-language egg-list-candidates canna-list-candidates egg-decide-candidate canna-decide-candidate egg-special-candidate canna-special-candidate egg-change-bunsetsu-length canna-change-bunsetsu-length egg-end-conversion canna-end-conversion egg-word-registration canna-word-registration)) (defconst canna-backend-language-alist nil) (defvar canna-backend-alist nil) (defun canna-backend-func-name (name lang &optional env) (intern (concat name "-" (symbol-name lang) (and env "-") (and env (symbol-name env))))) (defun canna-make-backend (lang env &optional source-lang converted-lang) (let ((finalize (canna-backend-func-name "canna-finalize-backend" lang)) (backend (canna-backend-func-name "canna-backend" lang env))) (if (null (fboundp finalize)) (progn (fset finalize (function (lambda () (canna-finalize-backend)))) (egg-set-finalize-backend (list finalize)))) (if (null (get backend 'egg-start-conversion)) (setplist backend (apply 'list 'language lang 'source-language (or source-lang lang) 'converted-language (or converted-lang lang) (canna-backend-plist)))) backend)) (defun canna-define-backend (lang env-name-list) (mapcar (lambda (env) (if (consp env) (canna-define-backend lang env) (canna-make-backend lang env))) env-name-list)) (defun canna-define-backend-alist (deflist) (setq canna-backend-alist (mapcar (lambda (slot) (let* ((lang (car slot)) (alt (cdr (assq lang canna-backend-language-alist)))) (cons lang (canna-define-backend (or alt lang) (cdr slot))))) deflist))) (defcustom canna-backend-define-list '((Japanese ((nil nil nil)) ((Bushu Bushu Bushu)))) "Alist of Japanese language and lists of the Canna backend suffixes." :group 'canna :set (lambda (sym value) (set-default sym value) (canna-define-backend-alist value)) :type '(repeat (cons :tag "Language - Backend" (choice :tag "Language" (const Japanese) (symbol :tag "Other")) (repeat (cons :tag "Backend Sequece" (cons :tag "First Conversion Stage" (symbol :tag "Backend for Start Conversion") (repeat :tag "Backends for Reconvert" (symbol :tag "Backend"))) (repeat :tag "Following Conversion Stages" (cons :tag "N-th Stage" (symbol :tag "Backend for This Stage") (repeat :tag "Backends for Reconvert" (symbol :tag "Backend"))))))))) (defsubst canna-backend-get-language (backend) (get backend 'language)) (defsubst canna-backend-get-source-language (backend) (get backend 'source-language)) (defsubst canna-backend-get-converted-language (backend) (get backend 'converted-language)) (defvar canna-envspec-list nil) (defvar canna-current-envspec nil) ;; Should support multiple outstanding context ;; ::= [ ] (defvar canna-environments nil "Environment for CANNA kana-kanji conversion") (defun cannaenv-create (proc context &optional backend mode nostudy) (vector proc context backend mode nostudy (list nil))) (defsubst cannaenv-get-proc (env) (aref env 0)) (defsubst cannaenv-get-context (env) (aref env 1)) (defsubst cannaenv-get-backend (env) (aref env 2)) (defsubst cannaenv-get-mode (env) (aref env 3)) (defsubst cannaenv-get-nostudy (env) (aref env 4)) (defsubst cannaenv-get-dic-list (env) (cdr (aref env 5))) (defsubst cannaenv-add-dic-list (env &rest dic) (nconc (aref env 5) (list (apply 'vector dic)))) ;; ::= ;; [ ;; ] (defsubst canna-make-bunsetsu (env converted bunsetsu-pos source) (egg-bunsetsu-create (cannaenv-get-backend env) (vector env converted bunsetsu-pos source nil nil nil))) (defsubst canna-bunsetsu-get-env (b) (aref (egg-bunsetsu-get-info b) 0)) (defsubst canna-bunsetsu-get-converted (b) (aref (egg-bunsetsu-get-info b) 1)) (defsubst canna-bunsetsu-get-bunsetsu-pos (b) (aref (egg-bunsetsu-get-info b) 2)) (defsubst canna-bunsetsu-get-source (b) (aref (egg-bunsetsu-get-info b) 3)) (defsubst canna-bunsetsu-set-source (b s) (aset (egg-bunsetsu-get-info b) 3 s)) (defsubst canna-bunsetsu-get-zenkouho-pos (b) (aref (egg-bunsetsu-get-info b) 4)) (defsubst canna-bunsetsu-set-zenkouho-pos (b p) (aset (egg-bunsetsu-get-info b) 4 p)) (defsubst canna-bunsetsu-get-zenkouho (b) (aref (egg-bunsetsu-get-info b) 5)) (defsubst canna-bunsetsu-set-zenkouho (b z) (aset (egg-bunsetsu-get-info b) 5 z)) (defsubst canna-bunsetsu-get-zenkouho-converted (b) (aref (egg-bunsetsu-get-info b) 6)) (defsubst canna-bunsetsu-set-zenkouho-converted (b zc) (aset (egg-bunsetsu-get-info b) 6 zc)) (defun canna-get-bunsetsu-source (b) (let ((s (canna-bunsetsu-get-source b))) (or s (let* ((env (canna-bunsetsu-get-env b)) (bp (canna-bunsetsu-get-bunsetsu-pos b)) (s (cannarpc-get-bunsetsu-source env bp))) (canna-bunsetsu-set-source b s))))) (defun canna-get-bunsetsu-converted (b) (canna-bunsetsu-get-converted b)) (defun canna-get-source-language (b) 'Japanese) (defun canna-get-converted-language (b) 'Japanese) (defun canna-envspec-create (env-name convert-mode nostudy) (vector (and env-name (setq env-name (intern env-name))) (canna-make-backend egg-language env-name) convert-mode nostudy (list nil))) (defsubst canna-envspec-env-type (spec) (aref spec 0)) (defsubst canna-envspec-backend (spec) (aref spec 1)) (defsubst canna-envspec-mode (spec) (aref spec 2)) (defsubst canna-envspec-nostudy (spec) (aref spec 3)) (defsubst canna-envspec-dic-list (spec) (cdr (aref spec 4))) (defsubst canna-envspec-add-dic-list (spec &rest dic) (nconc (aref spec 4) (list (apply 'vector dic)))) (defmacro canna-arg-type-error (func) `(egg-error ,(format "%s: Wrong type argument" func))) (defun canna-define-environment (&optional env-name convert-mode nostudy) "Define a Canna environment. ENV-NAME specifies suffix of the Canna environment name. CONVERT-MODE specifies including hiragana or katakana to candidates list. NOSTUDY specifies not study." (if (and env-name (null (stringp env-name))) (canna-arg-type-error canna-define-environment)) (setq canna-current-envspec (canna-envspec-create env-name convert-mode nostudy) canna-envspec-list (nconc canna-envspec-list (list canna-current-envspec)))) (defun canna-add-dict (dict dict-rw) (canna-envspec-add-dic-list canna-current-envspec dict dict-rw)) (defun canna-comm-sentinel (proc reason) ; assume it is close (let ((inhibit-quit t)) (kill-buffer (process-buffer proc)) ;; delete env from the list. (setq canna-environments (delq nil (mapcar (lambda (env) (if (null (eq (cannaenv-get-proc env) proc)) env)) canna-environments))))) (defun canna-open (hostname-list) "Establish the connection to CANNA server. Return environment object." (let* ((save-inhibit-quit inhibit-quit) (inhibit-quit t) (proc-name "CANNA") (msg-form "Canna: connecting to %S at %s...") (user-name (or canna-user-name (user-login-name))) (id (shell-command-to-string "id")) (group (or canna-group-name (if (string-match "gid=[0-9]+(\\([^)]+\\))" id) (match-string 1 id) "user"))) buf hostname port proc result msg) (unwind-protect (progn (setq buf (generate-new-buffer " *CANNA*")) (save-excursion (set-buffer buf) (erase-buffer) (buffer-disable-undo) (set-buffer-multibyte nil) (setq egg-fixed-euc 'fixed-euc-jp)) (or (consp hostname-list) (setq hostname-list (list hostname-list))) (while (and hostname-list (null proc)) (setq hostname (or (car hostname-list) "") hostname-list (cdr hostname-list)) (if (null (string-match ":" hostname)) (setq port canna-server-port) (setq port (substring hostname (match-end 0)) hostname (substring hostname 0 (match-beginning 0)))) (if (and (stringp port) (string-match "^[0-9]+$" port)) (setq port (string-to-number port))) (and (equal hostname "") (setq hostname (or (getenv "CANNAHOST") "localhost"))) (let ((inhibit-quit save-inhibit-quit)) (if (and msg (null (y-or-n-p (format "%s failed. Try to %s? " msg hostname)))) (egg-error "abort connect"))) (setq msg (format "Canna: connecting to %s..." hostname)) (message "%s" msg) (let ((inhibit-quit save-inhibit-quit)) (condition-case nil (setq proc (open-network-stream proc-name buf hostname port)) ((error quit)))) (when proc (set-process-query-on-exit-flag proc nil) (set-process-coding-system proc 'binary 'binary) (set-process-sentinel proc 'canna-comm-sentinel) (set-marker-insertion-type (process-mark proc) t) (setq result (cannarpc-open proc user-name)) ;; result is context (if (= result -1) (progn (delete-process proc) (setq proc nil)) (cannarpc-notice-group-name proc result group) (cannarpc-set-app-name proc result "EGG4")))) (cons proc result)) (if proc (message (concat msg "done")) (if buf (kill-buffer buf)) (egg-error 'canna-connect-error))))) (defun canna-filename (p) "" (cond ((consp p) (concat (car p) "/" (user-login-name))) (t p))) (defun canna-search-environment (backend) (let ((env-list canna-environments) env) (while (and (null env) env-list) (setq env (and (eq (cannaenv-get-backend (car env-list)) backend) (car env-list)) env-list (cdr env-list))) env)) (defun canna-get-environment (backend) "Return the backend of CANNA environment." (let ((env (canna-search-environment backend)) proc context error) (or env (unwind-protect (let* ((language (canna-backend-get-language backend)) specs) (setq proc (canna-open canna-hostname) context (cdr proc) proc (car proc) canna-envspec-list nil) (condition-case err (egg-load-startup-file 'canna language) (egg-error (setq error err) (signal (car error) (cdr error)))) (setq specs canna-envspec-list) (while specs (canna-create-environment proc context (car specs)) (setq context nil) (setq specs (cdr specs))) (setq env (canna-search-environment backend))) (when (and proc (null env)) (cannarpc-close proc) (if error (signal (car error) (cdr error)) (egg-error 'canna-fail-make-env))) )))) (defun canna-create-environment (proc context spec) (let* ((save-inhibit-quit inhibit-quit) (inhibit-quit t) (backend (canna-envspec-backend spec)) (convert-mode (canna-envspec-mode spec)) (nostudy (canna-envspec-nostudy spec)) (dic-list (canna-envspec-dic-list spec)) env) (condition-case err (progn (if (not context) (setq context (cannarpc-create-context proc))) (if (< context 0) (egg-error "%s" (cannarpc-get-error-message (- context)))) (setq env (cannaenv-create proc context backend convert-mode nostudy)) (let ((inhibit-quit save-inhibit-quit)) (while dic-list (canna-set-dictionary env (car dic-list)) (setq dic-list (cdr dic-list)))) (setq canna-environments (nconc canna-environments (list env)))) ((egg-error quit) (if (eq (car err) 'egg-error) (message "%s" (nth 1 err))) (if env (progn (cannarpc-close-context env) (setq canna-environments (delq env canna-environments)))) (if (eq (car err) 'quit) (signal 'quit (cdr err))))))) (defun canna-set-dictionary (env dic-spec) (let ((dname (aref dic-spec 0)) (drw (aref dic-spec 1)) did result) (if (= 0 (canna-open-dictionary env dname drw)) (cannaenv-add-dic-list env dname drw)))) (defun canna-open-dictionary (env name rw) (let ((trying t) ret) (while trying (setq ret (cannarpc-open-dictionary env name 0)) ; XXX MODE=0 (if (= ret 0) (setq trying nil) (message (egg-get-message 'canna-dict-missing-1) name) (if rw (if (and (y-or-n-p (format (egg-get-message 'canna-dict-missing-2) name)) (= (cannarpc-make-dictionary env name) 0)) (message (egg-get-message 'canna-dict-created) name) (message "%s" (cannarpc-get-error-message (- ret)))) (setq trying nil)))) ret)) (defun canna-save-dictionaries (env) (let ((dic-list (canna-list-writable-dictionaries-byname env)) dic) (while dic-list (setq dic (car dic-list) dic-list (cdr dic-list)) (cannarpc-save-dictionary env dic)))) (defun canna-init () ) (defun canna-set-converted-yomi (bunsetsu-pos bunsetsu-list) (let ((bl bunsetsu-list) (i bunsetsu-pos) b) (while bl (setq b (car bl)) (canna-bunsetsu-set-source b (cannarpc-get-bunsetsu-source env i)) (setq i (1+ i) bl (cdr bl))) bunsetsu-list)) (defun canna-start-conversion (backend yomi &optional context) "Convert YOMI string to kanji, and enter conversion mode. Return the list of bunsetsu." (let* ((env (canna-get-environment backend)) (bunsetsu-list (cannarpc-begin-conversion env yomi))) (if (numberp bunsetsu-list) ; XXX error $B$N=hM}E,Ev(B (progn (if (= -1 (cannarpc-cancel-conversion env)) (progn (setq env (canna-get-environment backend)) (canna-finalize-backend))) (setq bunsetsu-list (cannarpc-begin-conversion env yomi)))) (canna-set-converted-yomi 0 bunsetsu-list))) (defun canna-end-conversion (bunsetsu-list abort) (let* ((env (canna-bunsetsu-get-env (car bunsetsu-list))) (l bunsetsu-list) (len (length bunsetsu-list)) (zenkouho-pos-vector (make-vector (* 2 len) 0)) (i 0) (mode (if (cannaenv-get-nostudy env) 0 1)) ; MODE=1 $B3X=,(B 0 $B$7$J$$(B bunsetsu zenkouho-pos) (if abort (setq mode 0)) (while l (setq bunsetsu (car l)) (setq l (cdr l)) (setq zenkouho-pos (canna-bunsetsu-get-zenkouho-pos bunsetsu)) (if (null zenkouho-pos) () ; XXX: NIL--> 0 atteru??? (aset zenkouho-pos-vector i 0) ; XXX Don't support >=256 (aset zenkouho-pos-vector (1+ i) zenkouho-pos)) (setq i (+ i 2))) (cannarpc-end-conversion env len zenkouho-pos-vector mode))) (defun canna-list-candidates (bunsetsu prev-b next-b major) (setq bunsetsu (car bunsetsu)) (if (canna-bunsetsu-get-zenkouho bunsetsu) (cons (canna-bunsetsu-get-zenkouho-pos bunsetsu) (canna-bunsetsu-get-zenkouho-converted bunsetsu)) (let* ((env (canna-bunsetsu-get-env bunsetsu)) (yomi (canna-get-bunsetsu-source bunsetsu)) (bunsetsu-pos (canna-bunsetsu-get-bunsetsu-pos bunsetsu)) (z (cannarpc-get-bunsetsu-candidates env bunsetsu-pos yomi))) (canna-bunsetsu-set-zenkouho bunsetsu z) (cons (canna-bunsetsu-set-zenkouho-pos bunsetsu 0) (canna-bunsetsu-set-zenkouho-converted bunsetsu (mapcar 'canna-bunsetsu-get-converted z)))))) ;;; XXX not use ? (defun canna-get-number-of-candidates (bunsetsu) (let ((l (canna-bunsetsu-get-zenkouho bunsetsu))) (if l (length l) nil))) (defun canna-decide-candidate (bunsetsu pos prev-b next-b) (let* ((head (car bunsetsu)) (candidate-list (canna-bunsetsu-get-zenkouho head)) (candidate (nth pos candidate-list))) (canna-bunsetsu-set-zenkouho candidate candidate-list) (canna-bunsetsu-set-zenkouho-pos candidate pos) (canna-bunsetsu-set-zenkouho-converted candidate (canna-bunsetsu-get-zenkouho-converted head)) (list (list candidate)))) (defun canna-special-candidate (bunsetsu prev-b next-b major type) (let* ((head (car bunsetsu)) (env (canna-bunsetsu-get-env head)) (backend (egg-bunsetsu-get-backend head)) (lang (get backend 'language)) source converted zenkouho-list kouho-list pos) (when (and (eq lang (get backend 'source-language)) (eq lang (get backend 'converted-language))) (cond ((eq lang 'Japanese) (setq source (canna-get-bunsetsu-source head)) (cond ((eq type 'egg-hiragana) (setq converted source)) ((eq type 'egg-katakana) (setq converted (japanese-katakana source)))) (setq zenkouho-list (cdr (canna-list-candidates bunsetsu prev-b next-b major))) (setq pos (when (setq kouho-list (member converted zenkouho-list)) (- (length zenkouho-list) (length kouho-list)))))) (when pos (canna-decide-candidate bunsetsu pos prev-b next-b))))) ;;; XXX not used ? (defun canna-get-current-candidate-number (bunsetsu) (canna-bunsetsu-get-zenkouho-pos bunsetsu)) ;;; XXX not used ? (defun canna-get-all-candidates (bunsetsu) (let* ((l (canna-bunsetsu-get-zenkouho bunsetsu)) (result (cons nil nil)) (r result)) (catch 'break (while t (let ((candidate (car l))) (setcar r (canna-bunsetsu-get-converted candidate)) (if (null (setq l (cdr l))) (throw 'break nil) (setq r (setcdr r (cons nil nil))))))) result)) (defun canna-change-bunsetsu-length (bunsetsu prev-b next-b len major) (let* ((env (canna-bunsetsu-get-env (car bunsetsu))) (yomi (canna-get-bunsetsu-source (car bunsetsu))) (yomi-length (cond ((< (length yomi) len) -1) ((> (length yomi) len) -2) (t nil))) (bunsetsu-pos (canna-bunsetsu-get-bunsetsu-pos (car bunsetsu))) new) (if yomi-length (setq new (canna-set-converted-yomi bunsetsu-pos (cannarpc-set-kugiri-changed env yomi-length bunsetsu-pos))) (setq new bunsetsu)) (list (list (car new)) prev-b (cdr new)))) (defun canna-finalize-backend (&optional action) (let* ((save-inhibit-quit inhibit-quit) (inhibit-quit t) (env-list canna-environments) env proc-list saved) (while env-list (setq env (car env-list) env-list (cdr env-list)) (condition-case err (progn (unless (memq (cannaenv-get-proc env) proc-list) (setq proc-list (cons (cannaenv-get-proc env) proc-list))) (unless (eq action 'disconnect-only) (unless saved (setq saved t) (message (egg-get-message 'canna-dict-saving) "Canna")) (let ((inhibit-quit save-inhibit-quit)) (canna-save-dictionaries env))) (unless (eq action 'save-only) (cannarpc-close-context env))) ((error quit) (message "signal %S occured when dictionary saving" err)))) (if saved (message (egg-get-message 'canna-dict-saved) "Canna")) (unless (eq action 'save-only) (while proc-list (if (and (car proc-list) (eq (process-status (car proc-list)) 'open)) (cannarpc-close (car proc-list))) (setq proc-list (cdr proc-list))))) (setq canna-environments nil)) ;;; word registration (defun canna-list-writable-dictionaries-byname (env) (let ((dic-list (cannaenv-get-dic-list env))) (delq nil (mapcar (lambda (dic) (let ((dname (aref dic 0)) (drw (aref dic 1))) (and drw dname))) dic-list)))) (defun canna-dictionary-select (env) (let ((dic-list (canna-list-writable-dictionaries-byname env))) (if (= 1 (length dic-list)) (car dic-list) (menudiag-select (list 'menu (egg-get-message 'canna-register-1) dic-list))))) (defun canna-hinshi-MEISHI (kanji yomi) (if (y-or-n-p (concat "$B!V(B" kanji "$B$J!W$O@5$7$$$G$9$+!#(B")) "#T15" "#T35")) (defun canna-hinshi-SAHEN-MEISHI (kanji yomi) (if (y-or-n-p (concat "$B!V(B" kanji "$B$J!W$O@5$7$$$G$9$+!#(B")) "#T10" "#T30")) (defmacro canna-hinshi-DOUSHI-check-gobi () '(progn (setq i 0) (while (> 9 i) (if (string-match (concat (substring gobi i (1+ i)) "$") kanji) (progn (setq renyou (substring re-gobi i (1+ i))) (setq mizen (substring mi-gobi i (1+ i))) (setq kanji-gobi (substring kanji (match-beginning 0))) (setq kanji-gokan (substring kanji 0 (match-beginning 0))) (setq ret (nth i hinshi)) (setq i 9))) (setq i (1+ i))) (setq i 0) (while (> 9 i) (if (string-match (concat (substring gobi i (1+ i)) "$") yomi) (progn (setq yomi-gobi (substring yomi (match-beginning 0))) (setq yomi-gokan (substring yomi 0 (match-beginning 0))) (setq i 9))) (setq i (1+ i))))) (defun canna-hinshi-DOUSHI (kanji yomi) (let ((gobi "$B$/$0$9$D$L$V$`$k$&(B") (re-gobi "$B$-$.$7$A$K$S$_$j$$(B") (mi-gobi "$B$+$,$5$?$J$P$^$i$o(B") (hinshi (list "#K5" "#G5" "#S5" "#T5" "#N5" "#B5" "#M5" "#R5" "#W5")) kanji-gokan yomi-gokan kanji-gobi yomi-gobi mizen renyou i ret1 ret2 ret) (canna-hinshi-DOUSHI-check-gobi) (if (not (and (> (length kanji) 1) (> (length yomi) 1) (and kanji-gobi yomi-gobi (equal kanji-gobi yomi-gobi)))) (if (and kanji-gobi yomi-gobi) (egg-error "$BFI$_$H8uJd$N3hMQ$,0c$$$^$9!#F~NO$7$J$*$7$F$/$@$5$$!#(B") (egg-error "$BFI$_$H8uJd$r=*;_7A$GF~NO$7$F$/$@$5$$!#(B"))) (cond ((and (> (length kanji) 2) (> (length yomi) 2) (string-match "$B$/$k(B$" kanji) (string-match "$B$/$k(B$" yomi)) (setq ret "#KX") (setq kanji-gokan (substring kanji 0 (- (length kanji) 2))) (setq yomi-gokan (substring yomi 0 (- (length yomi) 2)))) ((and (> (length kanji) 3) (> (length yomi) 3) (string-match "$B$s$:$k(B$" kanji) (string-match "$B$s$:$k(B$" yomi)) (setq ret "#NZX") (setq kanji-gokan (substring kanji 0 (- (length kanji) 3))) (setq yomi-gokan (substring yomi 0 (- (length yomi) 3)))) ((and (> (length kanji) 2) (> (length yomi) 2) (string-match "$B$:$k(B$" kanji) (string-match "$B$:$k(B$" yomi)) (setq ret "#ZX") (setq kanji-gokan (substring kanji 0 (- (length kanji) 2))) (setq yomi-gokan (substring yomi 0 (- (length yomi) 2)))) ((and (> (length kanji) 2) (> (length yomi) 2) (string-match "$B$9$k(B$" kanji) (string-match "$B$9$k(B$" yomi)) (setq ret "#SX") (setq kanji-gokan (substring kanji 0 (- (length kanji) 2))) (setq yomi-gokan (substring yomi 0 (- (length yomi) 2))))) (if (not (string-match "5$" ret)) (if (y-or-n-p (concat "$B!X(B" kanji "$B!Y$r(B (" (canna-hinshi-name ret) ") $B$H$7$FEPO?$7$^$9$+(B? ")) (setq ret (list kanji-gokan yomi-gokan ret)) (setq ret "#R5") (setq kanji-gokan (substring kanji 0 (- (length kanji) 1))) (setq yomi-gokan (substring yomi 0 (- (length yomi) 1))))) (if (listp ret) ret (if (y-or-n-p "$B$5$i$K:Y$+$$IJ;lJ,$1$N$?$a$N 9 i) (if (string-match (concat (substring re-gobi i (1+ i)) "$") kanji-gokan) (progn (setq renyou nil) (setq i 9))) (setq i (1+ i)))) (setq ret2 (y-or-n-p (concat "$B!V(B" kanji-gokan renyou "$B$,$$$$!W$O@5$7$$$G$9$+!#(B"))) (setq ret (if ret1 (if ret2 (concat ret "r") ret) (if ret2 "#KSr" "#KS"))))) (list kanji-gokan yomi-gokan ret)))) (defun canna-hinshi-KEIYOUSHI (kanji yomi) (let (ret) (if (not (and (> (length kanji) 1) (> (length yomi) 1) (string-match "$B$$(B$" yomi) (string-match "$B$$(B$" kanji))) (egg-error "$BFI$_$H8uJd$r(B $B=*;_7A$GF~NO$7$F$/$@$5$$!#Nc(B) $BAa$$(B")) (setq kanji (substring kanji 0 (1- (length kanji)))) (setq yomi (substring yomi 0 (1- (length yomi)))) (setq ret (if (y-or-n-p "$B$5$i$K:Y$+$$IJ;lJ,$1$N$?$a$N (length kanji) 1) (> (length yomi) 1) (string-match "$B$@(B$" yomi) (string-match "$B$@(B$" kanji))) (egg-error "$BFI$_$H8uJd$r(B $B=*;_7A$GF~NO$7$F$/$@$5$$!#Nc(B) $B@E$+$@(B")) (setq kanji (substring kanji 0 (1- (length kanji)))) (setq yomi (substring yomi 0 (1- (length yomi)))) (setq ret (if (y-or-n-p "$B$5$i$K:Y$+$$IJ;lJ,$1$N$?$a$N= result 0) (progn (cannarpc-save-dictionary env dic) (list (canna-hinshi-name hinshi-id) dic)) (egg-error (cannarpc-get-error-message (- result))))))) ;;; word delete registration (defun canna-word-delete-regist (backend yomi) "Delete a word KANJI from dictionary." (if (= (length yomi) 0) (egg-error "Canna word delete registration: null string")) (let* ((env (canna-get-environment backend)) (dic (canna-dictionary-select env)) proc context envd bunsetsu bunsetsu-pos z zpos kouho-list hinshi i kanji lex result) (setq proc (cannaenv-get-proc env)) (setq context (cannarpc-create-context proc)) (setq envd (cannaenv-create proc context 'canna-backend-Japanese-tmp-delete-regist 1 t)) (canna-set-dictionary envd (vector dic t)) (canna-set-dictionary envd (vector "fuzokugo" nil)) (setq bunsetsu (car (cannarpc-begin-conversion envd yomi))) (setq bunsetsu-pos (canna-bunsetsu-get-bunsetsu-pos bunsetsu)) (setq z (cannarpc-get-bunsetsu-candidates envd bunsetsu-pos yomi)) (canna-bunsetsu-set-zenkouho bunsetsu z) (canna-bunsetsu-set-zenkouho-pos bunsetsu 0) (setq kouho-list (canna-bunsetsu-set-zenkouho-converted bunsetsu (mapcar 'canna-bunsetsu-get-converted z))) (setq yomi (car (last kouho-list))) (setq kouho-list (cdr (reverse kouho-list))) (setq kouho-list (reverse kouho-list)) (setq i 0) (setq kouho-list (mapcar #'(lambda (k) (prog1 (cons k i) (setq i (1+ i)))) kouho-list)) (let ((hiragana (assoc yomi kouho-list)) hinshi) (if hiragana (setq hinshi (cannarpc-get-hinshi envd bunsetsu-pos (cdr hiragana)))) (if (stringp hinshi) (if (equal "#T35" hinshi) (setq kouho-list (delete hiragana kouho-list))) (setq kouho-list (delete hiragana kouho-list)))) (cond ((null kouho-list) (cannarpc-close-context envd) (egg-error "$BEPO?$5$l$F$$$^$;$s!#(B")) ((eq 1 (length kouho-list)) (setq zpos 0) (setq kanji (car (car kouho-list)))) (t (setq kanji (menudiag-select (list 'menu "$B:o=|(B:" kouho-list) nil nil t)) (setq zpos (cdr (car kanji))) (setq kanji (car (car kanji))))) (setq hinshi (cannarpc-get-hinshi envd bunsetsu-pos zpos)) (setq lex (cannarpc-get-lex envd bunsetsu-pos zpos)) (cannarpc-cancel-conversion envd) (if (string-match "#[^#]+" hinshi) (setq hinshi (substring hinshi 0 (match-end 0))) (egg-error "$BIJ;l>pJs$,= result 0) (progn (cannarpc-save-dictionary envd dic) (cannarpc-close-context envd) (list kanji yomi (canna-hinshi-name hinshi) dic)) (cannarpc-close-context envd) (egg-error "$B:o=|$5$l$^$;$s$G$7$?!#(B")) )) ;;; setup (load "egg/cannarpc") (run-hooks 'canna-load-hook) ;;;###autoload (defun egg-activate-canna (&rest arg) "Activate CANNA backend of Tamago 4." (apply 'egg-mode (append arg canna-backend-alist))) ;;; egg/canna.el ends here. egg-4.2.0/ATTIC/egg/cannarpc.el000066400000000000000000000310411252027163000157710ustar00rootroot00000000000000;;; egg/cannarpc.el --- Canna Support (low level interface) in ;;; Egg Input Method Architecture ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'egg-com) ;; (load-library "egg/canna") (defmacro canna-const (c) (cond ((eq c 'Initialize) 1) ((eq c 'Finalize) 2) ((eq c 'CreateContext) 3) ((eq c 'CloseContext) 5) ((eq c 'GetDictionaryList) 6) ((eq c 'GetDirectoryList) 7) ((eq c 'MountDictionary) 8) ((eq c 'UnmountDictionary) 9) ((eq c 'GetMountDictionaryList) 11) ((eq c 'DefineWord) 13) ((eq c 'DeleteWord) 14) ((eq c 'BeginConvert) 15) ((eq c 'EndConvert) 16) ((eq c 'GetCandidacyList) 17) ((eq c 'GetYomi) 18) ((eq c 'ResizePause) 26) ((eq c 'GetHinshi) 27) ((eq c 'GetLex) 28) ((eq c 'SetApplicationName) 33) ((eq c 'NoticeGroupName) 34) ((eq c 'CreateDictionary) 3) ((eq c 'Sync) 8) (t (error "No such constant"))))) ;; XXX (defconst cannarpc-error-message (vector )) (defun cannarpc-get-error-message (errno) (or (and (>= errno 0) (< errno (length cannarpc-error-message)) (aref cannarpc-error-message errno)) (format "#%d" errno))) (defmacro cannarpc-call-with-environment (e vlist send-expr &rest receive-exprs) (let ((v (append `((proc (cannaenv-get-proc ,e)) (context (cannaenv-get-context ,e))) vlist))) (list 'let v (append `(save-excursion (set-buffer (process-buffer proc)) (erase-buffer) ,send-expr (process-send-region proc (point-min) (point-max)) (goto-char (prog1 (point) (accept-process-output proc)))) receive-exprs)))) (defconst canna-version-fmt "3.3:%s") (defun cannarpc-open (proc username) "Open the session. Return 0 on success, error code on failure." (let ((verusr (format canna-version-fmt username))) (comm-call-with-proc proc (minor context) (comm-format (u u s) (canna-const Initialize) (+ (length verusr) 1) verusr) (comm-unpack (w w) minor context) (cond ((and (= minor 65535) (= context 65535)) -1) ; failure ((and (= minor 65535) (= context 65534)) -1) ; version miss match (t context))))) (defun cannarpc-close (proc) (comm-call-with-proc proc (dummy result) (comm-format (b b w) (canna-const Finalize) 0 0) (comm-unpack (u b) dummy result) (if (= result 255) -1 ; failure result))) (defun cannarpc-create-context (proc) (comm-call-with-proc proc (dummy result) (comm-format (b b w) (canna-const CreateContext) 0 0) (comm-unpack (u w) dummy result) (if (= result 65535) -1 ; failure result))) (defun cannarpc-close-context (env) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w) (canna-const CloseContext) 0 2 context) (comm-unpack (u b) dummy result) (if (= result 255) -1 ; failure result))) (defun cannarpc-get-dictionary-list (env) (let ((i 0) dic dl dic-list) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w) (canna-const GetDictionaryList) 0 4 context 1024) (comm-unpack (u w) dummy result) ;; follow list of dictionaries (if (= result 65535) -1 ; failure (while (< i result) (comm-unpack (s) dic) (if dl (setq dl (setcdr dl (cons dic nil))) (setq dic-list (setq dl (cons dic nil)))) (setq i (1+ i))) dic-list)))) (defun cannarpc-get-directory-list (env) (let ((i 0) dir dl dir-list) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w) (canna-const GetDirectoryList) 0 4 context 1024) (comm-unpack (u w) dummy result) ;; follow list of directories (if (= result 65535) -1 ; failure (while (< i result) (comm-unpack (s) dir) (if dl (setq dl (setcdr dl (cons dir nil))) (setq dir-list (setq dl (cons dir nil)))) (setq i (1+ i))) dir-list)))) (defun cannarpc-get-mount-dictionary-list (env) (let ((i 0) dic dl dic-list) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w) (canna-const GetMountDictionaryList) 0 4 context 1024) (comm-unpack (u w) dummy result) ;; follow list of dictionaries (if (= result 65535) -1 ; failure (while (< i result) (comm-unpack (s) dic) (if dl (setq dl (setcdr dl (cons dic nil))) (setq dic-list (setq dl (cons dic nil)))) (setq i (1+ i))) dic-list)))) (defun cannarpc-open-dictionary (env dict-file-name mode) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w u w s) (canna-const MountDictionary) 0 (+ (length dict-file-name) 7) mode context dict-file-name) (comm-unpack (u b) dummy result) result)) (defun cannarpc-close-dictionary (env dict-file-name mode) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w u w s) (canna-const UnmountDictionary) 0 (+ (length dict-file-name) 7) mode context dict-file-name) (comm-unpack (u b) dummy result) result)) (defun cannarpc-begin-conversion (env yomi) "Begin conversion." (let ((yomi-ext (encode-coding-string yomi 'fixed-euc-jp)) (mode (or (cannaenv-get-mode env) 19)) ; 19 kana hiragana (i 0) converted bunsetsu-list bl) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w i w S) (canna-const BeginConvert) 0 (+ (length yomi-ext) 8) mode context yomi) (comm-unpack (u w) dummy result) (if (= result 65535) -1 ; failure (while (< i result) (comm-unpack (S) converted) (let ((bl1 (cons (canna-make-bunsetsu env converted i nil) nil))) (if bl (setq bl (setcdr bl bl1)) (setq bunsetsu-list (setq bl bl1)))) (setq i (1+ i))) bunsetsu-list)))) (defun cannarpc-cancel-conversion (env) "Cancel conversion." (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w u) (canna-const EndConvert) 0 8 context 0 0) (comm-unpack (u b) dummy result) (if (= result 255) -1 ; failure result))) (defun cannarpc-end-conversion (env len zenkouho-pos-vector mode) "End conversion." (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w u v) (canna-const EndConvert) 0 (+ (* len 2) 8) context len mode zenkouho-pos-vector (length zenkouho-pos-vector)) (comm-unpack (u b) dummy result) (if (= result 255) -1 ; failure result))) (defun cannarpc-make-dictionary (env dict-name) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w u w s) (canna-const CreateDictionary) 1 (+ (length dict-name) 7) 0 context dict-name) (comm-unpack (u b) dummy result) result)) (defun cannarpc-save-dictionary (env dict-name) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w u w s) (canna-const Sync) 1 (+ (length dict-name) 7) 0 context dict-name) (comm-unpack (u b) dummy result) result)) ;;; XXX not used (defun cannarpc-get-dictionary-data (env dir dic) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w s s w) 6 1 (+ (length dir) (length dic) 6) context dir dic 4096) (comm-unpack (u w) dummy result) (if (= result 65535) -1 ;; (comm-unpack (S) result) result))) (defun cannarpc-get-bunsetsu-source (env bunsetsu-pos) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w w) (canna-const GetYomi) 0 6 context bunsetsu-pos 1024) (comm-unpack (u w) dummy result) (if (= result 65535) -1 (comm-unpack (S) result) result))) (defun cannarpc-get-bunsetsu-candidates (env bunsetsu-pos yomi) (let ((i 0) converted bunsetsu-list bl) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w w) (canna-const GetCandidacyList) 0 6 context bunsetsu-pos 1024) (comm-unpack (u w) dummy result) (if (= result 65535) -1 ; failure (while (< i result) (comm-unpack (S) converted) (let ((bl1 (cons (canna-make-bunsetsu env converted bunsetsu-pos yomi) nil))) (if bl (setq bl (setcdr bl bl1)) (setq bunsetsu-list (setq bl bl1)))) (setq i (1+ i))) bunsetsu-list)))) (defun cannarpc-set-kugiri-changed (env yomi-length bunsetsu-pos) ;; yomi-length -2$B!DJ8@a=L$a(B -1$B!DJ8@a?-$P$7(B (let* ((i bunsetsu-pos) converted bunsetsu-list bl) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w w) (canna-const ResizePause) 0 6 context bunsetsu-pos yomi-length) (comm-unpack (u w) dummy result) (if (= result 65535) -1 ; failure (while (< i result) (comm-unpack (S) converted) (let ((bl1 (cons (canna-make-bunsetsu env converted i nil) nil))) (if bl (setq bl (setcdr bl bl1)) (setq bunsetsu-list (setq bl bl1)))) (setq i (1+ i))) bunsetsu-list)))) (defun cannarpc-get-hinshi (env bunsetsu-pos kouho-pos) (let (b hinshi) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w w w) (canna-const GetHinshi) 0 8 context bunsetsu-pos kouho-pos 1024) (comm-unpack (u w) dummy result) (if (= result 65535) -1 (while (> result 0) (comm-unpack (w) b) (setq hinshi (concat hinshi (char-to-string b))) (setq result (1- result))) hinshi)))) (defun cannarpc-get-lex (env bunsetsu-pos kouho-pos) (let ((i 0) ylen klen rownum coldnum dicnum lex-list ll) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w w w w) (canna-const GetLex) 0 8 context bunsetsu-pos kouho-pos 1024) (comm-unpack (u w) dummy result) (if (= result 65535) -1 (while (< i result) (comm-unpack (i i i i i) ylen klen rownum coldnum dicnum) (let ((ll1 (cons (list ylen klen rownum coldnum dicnum) nil))) (if ll (setq ll (setcdr ll ll1)) (setq lex-list (setq ll ll1)))) (setq i (1+ i))) lex-list)))) (defun cannarpc-add-word (env dictionary yomi kanji hinshi) "Register a word KANJI into DICTIONARY with a pronunciation YOMI and a part of speech HINSHI. Where DICTIONARY should be an integer." (let* ((word-info (concat yomi " " hinshi " " kanji)) (word-info-ext (encode-coding-string word-info 'fixed-euc-jp)) (length (+ (length word-info-ext) (length dictionary) 5))) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w S s) (canna-const DefineWord) 0 length context word-info dictionary) (comm-unpack (u b) dummy result) (if (= result 255) -1 ; failure result)))) (defun cannarpc-delete-word (env dictionary yomi kanji hinshi) "Delete the registered word KANJI from DICTIONARY with a pronunciation YOMI and a part of speech HINSHI. Where DICTIONARY should be an integer." (let* ((word-info (concat yomi " " hinshi " " kanji)) (word-info-ext (encode-coding-string word-info 'fixed-euc-jp)) (length (+ (length word-info-ext) (length dictionary) 5))) (cannarpc-call-with-environment env (dummy result) (comm-format (b b w w S s) (canna-const DeleteWord) 0 length context word-info dictionary) (comm-unpack (u b) dummy result) (if (= result 255) -1 ; failure result)))) (defun cannarpc-notice-group-name (proc context group) (comm-call-with-proc proc (dummy result) (comm-format (b b w u w s) (canna-const NoticeGroupName) 0 (+ (length group) 7) 0 ;; mode = 0 context group) (comm-unpack (u b) dummy result) (if (= result 255) -1 result))) (defun cannarpc-set-app-name (proc context name) (comm-call-with-proc proc (dummy result) (comm-format (b b w u w s) (canna-const SetApplicationName) 0 (+ (length name) 7) 0 context name) (comm-unpack (u b) dummy result) (if (= result 255) -1 result))) ;;; egg/cannarpc.el ends here. egg-4.2.0/ATTIC/egg/wnn.el000066400000000000000000002422141252027163000150140ustar00rootroot00000000000000;;; egg/wnn.el --- WNN Support (high level interface) in Egg ;;; Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: NIIBE Yutaka ;; KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (require 'egg) (defgroup wnn nil "Wnn interface for Tamago 4." :group 'egg) (defcustom wnn-auto-save-dictionaries 0 "*Save dictionaries automatically after N-th end conversion, if positive" :group 'wnn :type 'integer) (defcustom wnn-use-v3-eggrc nil "*Enable old style eggrc, if non-NIL" :group 'wnn :type 'boolean) (defcustom wnn-use-bixing (not wnn-use-v3-eggrc) "*Enable bixing (stroke) input-method, if non-NIL" :group 'wnn :type 'boolean) (defcustom wnn-force-set-environment nil "*Regardless the existence of the Wnn environment in the server, reset the environment, if non-NIL. Otherwise, reset the environment only when it is created." :group 'wnn :type 'boolean) (defcustom wnn-one-level-conversion nil "*Don't use major clause (dai bunsetu/da wenjie/dae munjeol), if non-NIL." :group 'wnn :type 'boolean) (defcustom wnn-usr-dic-dir (concat "usr/" (user-login-name)) "*Directory of user dictionary for Wnn." :group 'wnn :type 'string) (defcustom wnn-user-name (or (getenv "WNNUSER") (user-login-name)) "User name at Wnn server. Default value is login name or WNNUSER evironment variable, if it is defined." :group 'wnn :type 'string) (defcustom wnn-uniq-level 'wnn-uniq "Uniq level for candidate selection. wnn-no-uniq: Use all candidates. wnn-uniq-entry: Use only one among same dictionary entry candidates. wnn-uniq: Use only one among same hinshi candidates. (default) wnn-uniq-kanji: Use only one among same kanji candidates." :group 'wnn :type '(choice (const wnn-no-uniq) (const wnn-uniq-entry) (const wnn-uniq) (const wnn-uniq-kanji))) (defcustom wnn-jserver nil "jserver hostname list. Use N-th port, if hostname is followed by ':' and digit N." :group 'wnn :type '(repeat string)) (defcustom wnn-cserver nil "cserver hostname list. Use N-th port, if hostname is followed by ':' and digit N." :group 'wnn :type '(repeat string)) (defcustom wnn-tserver nil "tserver hostname list. Use N-th port, if hostname is followed by ':' and digit N." :group 'wnn :type '(repeat string)) (defcustom wnn-kserver nil "kserver hostname list. Use N-th port, if hostname is followed by ':' and digit N." :group 'wnn :type '(repeat string)) (defcustom wnn-jport 22273 "jserver port number" :group 'wnn :type 'integer) (defcustom wnn-cport 22289 "cserver port number" :group 'wnn :type 'integer) (defcustom wnn-tport 22321 "tserver port number" :group 'wnn :type 'integer) (defcustom wnn-kport 22305 "kserver port number" :group 'wnn :type 'integer) (defmacro wnn-backend-plist () ''(egg-initialize-backend wnn-init egg-start-conversion wnn-start-conversion egg-get-bunsetsu-source wnn-get-bunsetsu-source egg-get-bunsetsu-converted wnn-get-bunsetsu-converted egg-get-source-language wnn-get-source-language egg-get-converted-language wnn-get-converted-language egg-major-bunsetsu-continue-p wnn-major-bunsetsu-continue-p egg-list-candidates wnn-list-candidates egg-decide-candidate wnn-decide-candidate egg-special-candidate wnn-special-candidate egg-change-bunsetsu-length wnn-change-bunsetsu-length egg-bunsetsu-combinable-p wnn-bunsetsu-combinable-p egg-end-conversion wnn-end-conversion egg-word-inspection wnn-word-inspection egg-word-registration wnn-word-registration)) (defun wnn-backend-func-name (name lang &optional env) (intern (concat name "-" (symbol-name lang) (and env "-") (and env (symbol-name env))))) (defun wnn-make-backend (lang env &optional source-lang converted-lang) (let ((finalize (wnn-backend-func-name "wnn-finalize-backend" lang)) (backend (wnn-backend-func-name "wnn-backend" lang env))) (if (null (fboundp finalize)) (progn (fset finalize `(lambda () (wnn-finalize-backend ',lang))) (egg-set-finalize-backend (list finalize)))) (if (null (get backend 'egg-start-conversion)) (setplist backend (apply 'list 'language lang 'source-language (or source-lang lang) 'converted-language (or converted-lang lang) (wnn-backend-plist)))) backend)) (defun wnn-define-backend (lang env-name-list) (mapcar (lambda (env) (if (consp env) (wnn-define-backend lang env) (wnn-make-backend lang env))) env-name-list)) (wnn-make-backend 'Chinese-GB 'Q 'QianMa 'Chinese-GB) (wnn-make-backend 'Chinese-GB 'QR 'Chinese-GB 'QianMa) (wnn-make-backend 'Chinese-GB 'W 'WuBi 'Chinese-GB) (wnn-make-backend 'Chinese-GB 'WR 'Chinese-GB 'WuBi) (defconst wnn-backend-language-alist '((QianMa . Chinese-GB) (WuBi . Chinese-GB))) (defvar wnn-backend-alist nil) (defun wnn-define-backend-alist (deflist) (setq wnn-backend-alist (mapcar (lambda (slot) (let* ((lang (car slot)) (alt (cdr (assq lang wnn-backend-language-alist)))) (cons lang (wnn-define-backend (or alt lang) (cdr slot))))) deflist))) (defcustom wnn-backend-define-list (if wnn-use-bixing '((Japanese ((nil nil R)) ((R nil R))) (Chinese-GB ((PZ PZ PZR)) ((PZR PZ PZR)) ((QR Q QR)) ((WR W WR))) (Chinese-CNS ((PZ PZ PZR)) ((PZR PZ PZR))) (Korean ((nil nil R)) ((R nil R))) (QianMa ((Q Q QR))) (WuBi ((W W WR)))) '((Japanese ((nil nil R)) ((R nil R))) (Chinese-GB ((PZ PZ PZR)) ((PZR PZ PZR))) (Chinese-CNS ((PZ PZ PZR)) ((PZR PZ PZR))) (Korean ((nil nil R)) ((R nil R))))) "Alist of language and lists of the Wnn backend suffixes." :group 'wnn :set (lambda (sym value) (set-default sym value) (wnn-define-backend-alist value)) :type '(repeat (cons :tag "Language - Backend" (choice :tag "Language" (const Japanese) (const Chinese-GB) (const Chinese-CNS) (const Korean) (const QianMa) (const WuBi) (symbol :tag "Other")) (repeat (cons :tag "Backend Sequece" (cons :tag "First Conversion Stage" (symbol :tag "Backend for Start Conversion") (repeat :tag "Backends for Reconvert" (symbol :tag "Backend"))) (repeat :tag "Following Conversion Stages" (cons :tag "N-th Stage" (symbol :tag "Backend for This Stage") (repeat :tag "Backends for Reconvert" (symbol :tag "Backend"))))))))) (eval-when-compile (defmacro WNN-const (c) (cond ((eq c 'BUN_SENTOU) -1) ((eq c 'NO_EXIST) 1) ((eq c 'NO_MATCH) 10) ((eq c 'IMA_OFF) -4) ((eq c 'IMA_ON) -3) ((eq c 'CONNECT) 1) ((eq c 'CONNECT_BK) 1) ((eq c 'HIRAGANA) -1) ((eq c 'KATAKANA) -11) ((eq c 'IKEIJI_ENTRY) -50) ((eq c 'LEARNING_LEN) 3) ((eq c 'MUHENKAN_DIC) -3) ((eq c 'HINDO_NOP) -2) ((eq c 'HINDO_INC) -3) ((eq c 'DIC_RW) 0) ((eq c 'DIC_RDONLY) 1) ((eq c 'DIC_GROUP) 3) ((eq c 'DIC_MERGE) 4) ((eq c 'NOTRANS_LEARN) 1) ((eq c 'BMODIFY_LEARN) 2) ((eq c 'DIC_NO_TEMPS) ?\x3f)))) ;; Retern value of system-name may differ from hostname. (defconst wnn-system-name (or (with-temp-buffer (condition-case nil (call-process "hostname" nil `(,(current-buffer) nil) "hostname") (error)) (goto-char (point-min)) (if (re-search-forward "[\0- ]" nil 0) (goto-char (1- (point)))) (if (> (point) 1) (buffer-substring 1 (point)))) (system-name))) (egg-add-message '((nil (wnn-connect-error "cannot connect to the server") (wnn-fail-make-env "cannot make the Wnn environment") (wnn-dict-saving "saving %s's frequency/dictionary information") (wnn-dict-saved "finish to save %s's frequency/dictionary information") (wnn-dir-missing "directory %s missing. Create it? ") (wnn-dir-failed "failed to create directory %s") (wnn-dir-created "directory %s created") (wnn-dict-missing-1 "dictionary file %s is missing: %s") (wnn-dict-missing-2 "dictionary file %s is missing. Create it? ") (wnn-dict-created "dictionary file %s is created") (wnn-freq-missing-1 "frequency file %s is missing: %s") (wnn-freq-missing-2 "frequency file %s is missing. Create it? ") (wnn-freq-created "frequency file %s is created") (wnn-no-match "unmatch dictionary and freq. file %s. Re-create it? ") (wnn-re-create-freq "frequency file %s is re-created") (wnn-pseud-bunsetsu "pseud clause") (wnn-register-1 "dictionary name:") (wnn-register-2 "clause class name") (wnn-no-writable-d "no writable dictionary")) (Japanese (wnn-connect-error "$B%5!<%P$H@\B3$G$-$^$;$s$G$7$?(B") (wnn-fail-make-env "$B4D6-$r:n$k$3$H$O$G$-$^$;$s$G$7$?(B") (wnn-dict-saving "%s $B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$F$$$^$9(B") (wnn-dict-saved "%s $B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?(B") (wnn-dir-missing "$B%G%#%l%/%H%j(B %s $B$,$"$j$^$;$s!#:n$j$^$9$+(B? ") (wnn-dir-failed "$B%G%#%l%/%H%j(B %s $B$N:n@.$K<:GT$7$^$7$?(B") (wnn-dir-created "$B%G%#%l%/%H%j(B %s $B$r:n$j$^$7$?(B") (wnn-dict-missing-1 "$B<-=q%U%!%$%k(B %s $B$,$"$j$^$;$s(B: %s") (wnn-dict-missing-2 "$B<-=q%U%!%$%k(B %s $B$,$"$j$^$;$s!#:n$j$^$9$+(B? ") (wnn-dict-created "$B<-=q%U%!%$%k(B %s $B$r:n$j$^$7$?(B") (wnn-freq-missing-1 "$BIQEY%U%!%$%k(B %s $B$,$"$j$^$;$s(B: %s") (wnn-freq-missing-2 "$BIQEY%U%!%$%k(B %s $B$,$"$j$^$;$s!#:n$j$^$9$+(B? ") (wnn-freq-created "$BIQEY%U%!%$%k(B %s $B$r:n$j$^$7$?(B") (wnn-no-match "$B<-=q$HIQEY(B %s $B$N@09g@-$,$"$j$^$;$s!#:n$jD>$7$^$9$+(B? ") (wnn-re-create-freq "$BIQEY%U%!%$%k(B %s $B$r:n$jD>$7$^$7$?(B") (wnn-pseud-bunsetsu "$B5?;wJ8@a(B") (wnn-register-1 "$BEPO?<-=qL>(B:") (wnn-register-2 "$BIJ;lL>(B") (wnn-no-writable-d "$BEPO?2DG=$J<-=q$,$"$j$^$;$s(B")) (Chinese-GB (wnn-connect-error "$A2;D\:M(Bserver$AA,=S(B") (wnn-fail-make-env "$A;7>32;D\44=((B") (wnn-dict-saving "%s $A5DF56HND<~:M4G5dPEO"U}TZMK3v(B") (wnn-dict-saved "%s $A5DF56HND<~:M4G5dPEO"RQ>-MK3vAK(B") (wnn-dir-missing "$AD?B<(B %s $AC;SP!#R*=(A"Bp(B? ") (wnn-dir-failed "$AD?B<(B %s $A=(A"J'0\AK(B") (wnn-dir-created "$AD?B<(B %s $A=(A"AK(B") (wnn-dict-missing-1 "$AWV5dND<~(B %s $AC;SP(B: %s") (wnn-dict-missing-2 "$AWV5dND<~(B %s $AC;SP!#R*=(A"Bp(B? ") (wnn-dict-created "$AWV5dND<~(B %s $A=(A"AK(B") (wnn-freq-missing-1 "$AF56HND<~(B %s $AC;SP(B: %s") (wnn-freq-missing-2 "$AF56HND<~(B %s $AC;SP!#R*=(A"Bp(B? ") (wnn-freq-created "$AF56HND<~(B %s $A=(A"AK(B") (wnn-no-match "$AWV5d:MF56H(B %s $A5DU{:OPTC;SP!#R*TY=(A"Bp(B? ") (wnn-re-create-freq "$AF56HND<~(B %s $ATY=(A"AK(B") (wnn-pseud-bunsetsu "$ARIKFND=Z(B") (wnn-register-1 "$A5GB<4G5dC{(B:") (wnn-register-2 "$A4JPTC{(B") (wnn-no-writable-d "$AC;SP?ID\5GB<5D4G5d(B")) (Chinese-CNS (wnn-connect-error "$(GDbWdLO(Bserver$(G]YZY(B") (wnn-fail-make-env "$(Gt?h:DbWd^6Pz(B") (wnn-dict-saving "%s $(GN{s"PyEFG5LOy0L(OjUIF_GcXMEx(B") (wnn-dict-saved "%s $(GN{s"PyEFG5LOy0L(OjUIDXenXMExD'(B") (wnn-dir-missing "$(GFxrg(B %s $(GJtH4!$SQPzG!cC(B? ") (wnn-dir-failed "$(GFxrg(B %s $(GPzG!FBZuD'(B") (wnn-dir-created "$(GFxrg(B %s $(GPzG!D'(B") (wnn-dict-missing-1 "$(GGsL(EFG5(B %s $(GJtH4(B: %s") (wnn-dict-missing-2 "$(GGsL(EFG5(B %s $(GJtH4!$SQPzG!cC(B? ") (wnn-dict-created "$(GGsL(EFG5(B %s $(GPzG!D'(B") (wnn-freq-missing-1 "$(Gs"PyEFG5(B %s $(GJtH4(B: %s") (wnn-freq-missing-2 "$(Gs"PyEFG5(B %s $(GJtH4!$SQPzG!cC(B? ") (wnn-freq-created "$(Gs"PyEFG5(B %s $(GPzG!D'(B") (wnn-no-match "$(GGsL(LOs"Py(B %s $(GN{plLOMLJtH4!$SQGBPzG!cC(B? ") (wnn-re-create-freq "$(Gs"PyEFG5(B %s $(GGBPzG!D'(B") (wnn-pseud-bunsetsu "$(GijH}EFeg(B") (wnn-register-1 "$(G`trgy0L(GX(B:") (wnn-register-2 "$(Gb$MLGX(B") (wnn-no-writable-d "$(GJtH4F+Wd`trgN{GsL((B")) (Korean (wnn-connect-error "$(C<-9v(B(Server) $(C?M(B $(CA"CKGR(B $(Cx@>4O4Y(B") (wnn-fail-make-env "$(CH/0f@;(B $(C@[<:GR(B $(Cx@>4O4Y(B") (wnn-dict-saving "%s $(C@G(B $(C:s55A$:8?M(B $(C;g@|A$:88&(B $(C<<@L:jGO0m(B $(C@V=@4O4Y(B") (wnn-dict-saved "%s $(C@G(B $(C:s55A$:8?M(B $(C;g@|A$:88&(B $(C<<@L:jG_=@4O4Y(B") (wnn-dir-missing "$(C5p7:Ed8.(B %s $(C@L(B $(C>x@>4O4Y#.@[<:GO0Z=@4O1n(B? ") (wnn-dir-failed "$(C5p7:Ed8.(B %s $(C@;(B $(C@[<:GR(B $(Cx@>4O4Y(B") (wnn-dir-created "$(C5p7:Ed8.(B %s $(C@;(B $(C@[<:G_=@4O4Y(B") (wnn-dict-missing-1 "$(C;g@|H-@O(B %s $(C@L(B $(C>x@>4O4Y(B: %s") (wnn-dict-missing-2 "$(C;g@|H-@O(B %s $(C@L(B $(C>x@>4O4Y#.4Y=C(B $(C@[<:GO0Z=@4O1n(B? ") (wnn-dict-created "$(C;g@|H-@O(B %s $(C@;(B $(C@[<:G_=@4O4Y(B") (wnn-freq-missing-1 "$(C:s55H-@O(B %s $(C@L(B $(C>x@>4O4Y(B: %s") (wnn-freq-missing-2 "$(C:s55H-@O(B %s $(C@L(B $(C>x@>4O4Y#.4Y=C(B $(C@[<:GO0Z=@4O1n(B? ") (wnn-freq-created "$(C:s55H-@O(B %s $(C@;(B $(C@[<:G_=@4O4Y(B") (wnn-no-match "$(C;g@|0z(B $(C:s55(B %s $(C0!(B $(C8BAv(B $(C>J=@4O4Y#.4Y=C(B $(C@[<:GO0Z=@4O1n(B? ") (wnn-re-create-freq "$(C:s55H-@O(B %s $(C@;(B $(C4Y=C(B $(C@[<:G_=@4O4Y(B") (wnn-pseud-bunsetsu "$(C@G;g9.@}(B") (wnn-register-1 "$(C5n7O;g@|8m(B:") (wnn-register-2 "$(CG0;g8m(B") (wnn-no-writable-d "$(C5n7O(B $(C0!4IGQ(B $(CAvA$@L(B $(C>F4U4O4Y(B")))) ;; ::= [ ;; ] (defun wnnenv-create (proc env-id &optional server-type wnn-version backend tankan name) (if name (set (setq name (make-symbol name)) (make-vector 5 nil))) (vector proc env-id server-type wnn-version backend tankan name (make-vector 2 (WNN-const DIC_RDONLY)))) (defsubst wnnenv-get-proc (env) (aref env 0)) (defsubst wnnenv-get-env-id (env) (aref env 1)) (defsubst wnnenv-get-server-type (env) (aref env 2)) (defsubst wnnenv-get-wnn-version (env) (aref env 3)) (defsubst wnnenv-get-backend (env) (aref env 4)) (defsubst wnnenv-get-tankan (env) (aref env 5)) (defun wnnenv-get-client-file (env name) (let ((hash (intern-soft name (symbol-value (aref env 6))))) (and hash (symbol-value hash)))) (defun wnnenv-set-client-file (env name) (set (intern (concat wnn-system-name "!" name) (symbol-value (aref env 6))) name)) (defsubst wnnenv-get-hinshi (env h) (or (get (aref env 6) h) -1)) (defsubst wnnenv-set-hinshi (env h v) (put (aref env 6) h v)) (defsubst wnnenv-get-auto-learn (env) (aref env 7)) (defsubst wnnenv-get-notrans (env) (aref (wnnenv-get-auto-learn env) 0)) (defsubst wnnenv-get-bmodify (env) (aref (wnnenv-get-auto-learn env) 1)) (defsubst wnnenv-set-notrans (env v) (aset (wnnenv-get-auto-learn env) 0 v)) (defsubst wnnenv-set-bmodify (env v) (aset (wnnenv-get-auto-learn env) 1 v)) (defsubst wnnenv-is-wnn6 (env) (eq (wnnenv-get-wnn-version env) 'wnn6)) (defvar wnn-environments nil "Environment for Wnn conversion server") ;; ::= [ ;; ;; ;; ;; ;; ] ;; ;; ::= [ ] (defsubst wnn-bunsetsu-create (env jirilen dic-no entry freq right-now hinshi status status-backward kangovect evaluation) (egg-bunsetsu-create (wnnenv-get-backend env) (vector env jirilen dic-no entry freq right-now hinshi status status-backward kangovect evaluation nil nil nil nil nil nil nil nil nil nil))) (defsubst wnn-bunsetsu-get-env (b) (aref (egg-bunsetsu-get-info b) 0)) (defsubst wnn-bunsetsu-get-jirilen (b) (aref (egg-bunsetsu-get-info b) 1)) (defsubst wnn-bunsetsu-get-dic-no (b) (aref (egg-bunsetsu-get-info b) 2)) (defsubst wnn-bunsetsu-set-dic-no (b dic) (aset (egg-bunsetsu-get-info b) 2 dic)) (defsubst wnn-bunsetsu-get-entry (b) (aref (egg-bunsetsu-get-info b) 3)) (defsubst wnn-bunsetsu-set-entry (b ent) (aset (egg-bunsetsu-get-info b) 3 ent)) (defsubst wnn-bunsetsu-get-freq (b) (aref (egg-bunsetsu-get-info b) 4)) (defsubst wnn-bunsetsu-get-right-now (b) (aref (egg-bunsetsu-get-info b) 5)) (defsubst wnn-bunsetsu-get-hinshi (b) (aref (egg-bunsetsu-get-info b) 6)) (defsubst wnn-bunsetsu-get-status (b) (aref (egg-bunsetsu-get-info b) 7)) (defsubst wnn-bunsetsu-get-status-backward (b) (aref (egg-bunsetsu-get-info b) 8)) (defsubst wnn-bunsetsu-get-kangovect (b) (aref (egg-bunsetsu-get-info b) 9)) (defsubst wnn-bunsetsu-get-evaluation (b) (aref (egg-bunsetsu-get-info b) 10)) (defsubst wnn-bunsetsu-get-converted (b) (aref (egg-bunsetsu-get-info b) 11)) (defsubst wnn-bunsetsu-set-converted (b cvt) (aset (egg-bunsetsu-get-info b) 11 cvt)) (defsubst wnn-bunsetsu-get-yomi (b) (aref (egg-bunsetsu-get-info b) 12)) (defsubst wnn-bunsetsu-set-yomi (b yomi) (aset (egg-bunsetsu-get-info b) 12 yomi)) (defsubst wnn-bunsetsu-get-fuzokugo (b) (aref (egg-bunsetsu-get-info b) 13)) (defsubst wnn-bunsetsu-set-fuzokugo (b fuzokugo) (aset (egg-bunsetsu-get-info b) 13 fuzokugo)) (defsubst wnn-bunsetsu-get-dai-evaluation (b) (aref (egg-bunsetsu-get-info b) 14)) (defsubst wnn-bunsetsu-set-dai-evaluation (b de) (aset (egg-bunsetsu-get-info b) 14 de)) (defsubst wnn-bunsetsu-get-dai-continue (b) (aref (egg-bunsetsu-get-info b) 15)) (defsubst wnn-bunsetsu-set-dai-continue (b dc) (aset (egg-bunsetsu-get-info b) 15 dc)) (defsubst wnn-bunsetsu-get-change-top (b) (aref (egg-bunsetsu-get-info b) 16)) (defsubst wnn-bunsetsu-set-change-top (b top) (aset (egg-bunsetsu-get-info b) 16 top)) (defsubst wnn-bunsetsu-get-zenkouho (b) (aref (egg-bunsetsu-get-info b) 17)) (defsubst wnn-bunsetsu-set-zenkouho (b z) (aset (egg-bunsetsu-get-info b) 17 z)) (defsubst wnn-bunsetsu-get-freq-down (b) (aref (egg-bunsetsu-get-info b) 18)) (defsubst wnn-bunsetsu-set-freq-down (b fd) (aset (egg-bunsetsu-get-info b) 18 fd)) (defsubst wnn-bunsetsu-get-fi-rel (b) (aref (egg-bunsetsu-get-info b) 19)) (defsubst wnn-bunsetsu-set-fi-rel (b fr) (aset (egg-bunsetsu-get-info b) 19 fr)) (defsubst wnn-bunsetsu-get-context (b) (aref (egg-bunsetsu-get-info b) 20)) (defsubst wnn-bunsetsu-set-context (b c) (aset (egg-bunsetsu-get-info b) 20 c)) (defsubst wnn-zenkouho-create (pos list converted dai prev-b nxet-b) (vector pos list converted dai prev-b nxet-b)) (defsubst wnn-bunsetsu-get-zenkouho-pos (b) (aref (wnn-bunsetsu-get-zenkouho b) 0)) (defsubst wnn-bunsetsu-set-zenkouho-pos (b p) (aset (wnn-bunsetsu-get-zenkouho b) 0 p)) (defsubst wnn-bunsetsu-get-zenkouho-list (b) (aref (wnn-bunsetsu-get-zenkouho b) 1)) (defsubst wnn-bunsetsu-get-zenkouho-converted (b) (aref (wnn-bunsetsu-get-zenkouho b) 2)) (defsubst wnn-bunsetsu-get-zenkouho-dai (b) (aref (wnn-bunsetsu-get-zenkouho b) 3)) (defsubst wnn-bunsetsu-get-zenkouho-prev-b (b) (aref (wnn-bunsetsu-get-zenkouho b) 4)) (defsubst wnn-bunsetsu-get-zenkouho-next-b (b) (aref (wnn-bunsetsu-get-zenkouho b) 5)) (defsubst wnn-bunsetsu-connect-prev (bunsetsu) (= (wnn-bunsetsu-get-status bunsetsu) (WNN-const CONNECT))) (defsubst wnn-bunsetsu-connect-next (bunsetsu) (= (wnn-bunsetsu-get-status-backward bunsetsu) (WNN-const CONNECT_BK))) (defsubst wnn-context-create (dic-no entry jirilen hinshi fuzokugo converted freq right-now) (vector dic-no entry jirilen hinshi fuzokugo converted freq right-now (length converted))) (defsubst wnn-context-dic-no (context) (aref context 0)) (defsubst wnn-context-entry (context) (aref context 1)) (defsubst wnn-context-jirilen (context) (aref context 2)) (defsubst wnn-context-hinshi (context) (aref context 3)) (defsubst wnn-context-fuzokugo (context) (aref context 4)) (defsubst wnn-context-converted (context) (aref context 5)) (defsubst wnn-context-right-now (context) (aref context 6)) (defsubst wnn-context-set-right-now (context r) (aset context 6 r)) (defsubst wnn-context-freq (context) (aref context 7)) (defsubst wnn-context-set-freq (context f) (aset context 7 f)) (defsubst wnn-context-length (context) (aref context 8)) (defun wnn-null-context () (list (wnn-context-create -2 0 0 0 "" "" 0 0) (wnn-context-create -2 0 0 0 "" "" 0 0))) (defun wnn-major-bunsetsu-set-context (bunsetsu-list context) (while bunsetsu-list (wnn-bunsetsu-set-context (car bunsetsu-list) context) (setq bunsetsu-list (cdr bunsetsu-list)))) (defsubst wnn-bunsetsu-equal (bunsetsu-1 bunsetsu-2) (and (= (wnn-bunsetsu-get-dic-no bunsetsu-1) (wnn-bunsetsu-get-dic-no bunsetsu-2)) (= (wnn-bunsetsu-get-entry bunsetsu-1) (wnn-bunsetsu-get-entry bunsetsu-2)) (= (wnn-bunsetsu-get-kangovect bunsetsu-1) (wnn-bunsetsu-get-kangovect bunsetsu-2)) (equal (wnn-bunsetsu-get-converted bunsetsu-1) (wnn-bunsetsu-get-converted bunsetsu-2)) (equal (wnn-bunsetsu-get-fuzokugo bunsetsu-1) (wnn-bunsetsu-get-fuzokugo bunsetsu-2)))) (defun wnn-bunsetsu-list-equal (b1 b2) (while (and b1 b2 (wnn-bunsetsu-equal (car b1) (car b2))) (setq b1 (cdr b1) b2 (cdr b2))) (and (null b1) (null b2))) (defun wnn-bunsetsu-list-copy (bunsetsu) (mapcar (lambda (b) (egg-bunsetsu-create (egg-bunsetsu-get-backend b) (copy-sequence (egg-bunsetsu-get-info b)))) bunsetsu)) (defvar wnn-server-info-list ;; language server port hostname proc coding-system '((Japanese jserver wnn-jport wnn-jserver "Wnn" (fixed-euc-jp fixed-euc-jp)) (Chinese-GB cserver wnn-cport wnn-cserver "cWnn" (fixed-euc-py-cn fixed-euc-zy-cn)) (Chinese-CNS tserver wnn-tport wnn-tserver "tWnn" (fixed-euc-py-tw fixed-euc-zy-tw)) (Korean kserver wnn-kport wnn-kserver "kWnn" (fixed-euc-kr fixed-euc-kr)))) (defsubst wnn-server-get-info (lang) (or (assq lang wnn-server-info-list) (egg-error "unsupported language: %s" lang))) (defsubst wnn-server-language (info) (car info)) (defsubst wnn-server-type (info) (nth 1 info)) (defsubst wnn-server-port (info) (symbol-value (nth 2 info))) (defsubst wnn-server-hostname (info) (symbol-value (nth 3 info))) (defsubst wnn-server-proc-name (info) (nth 4 info)) (defsubst wnn-server-buffer-name (info) (concat " *" (wnn-server-proc-name info) "*")) (defsubst wnn-server-coding-system (info) (nth 5 info)) (defconst wnn-accept-charset-alist '((Chinese-CNS ascii chinese-sisheng chinese-cns11643-1 chinese-cns11643-2))) (defsubst wnn-backend-get-language (backend) (get backend 'language)) (defsubst wnn-backend-get-source-language (backend) (get backend 'source-language)) (defsubst wnn-backend-get-converted-language (backend) (get backend 'converted-language)) (defvar wnn-prev-context nil) (defun wnn-start-conversion (backend yomi &optional context) "Convert YOMI string to kanji, and enter conversion mode. Return the list of bunsetsu." (let ((accepts (cdr (assq (wnn-backend-get-source-language backend) wnn-accept-charset-alist))) env hinshi fuzokugo result) (if accepts (let ((charsets (mapcar 'char-charset (string-to-list yomi)))) (while accepts (setq charsets (delq (car accepts) charsets) accepts (cdr accepts))) (if charsets (egg-error "cannot handle %s" (car charsets))))) (setq env (wnn-get-environment backend)) (cond ((eq (car (car-safe context)) backend) (setq wnn-prev-context (car context) context (cdr wnn-prev-context) hinshi (wnn-context-hinshi (nth 1 context)) fuzokugo (wnn-context-fuzokugo (nth 1 context)))) ((listp context) (setq wnn-prev-context (cons nil (wnn-null-context)) context (cdr wnn-prev-context) hinshi (WNN-const BUN_SENTOU) fuzokugo "")) ((eq (car wnn-prev-context) backend) (setq context (cdr wnn-prev-context) hinshi (wnnenv-get-hinshi env 'noun) fuzokugo "")) (t (setq context (wnn-null-context) hinshi (wnnenv-get-hinshi env 'noun) fuzokugo ""))) (setq result (wnn-renbunsetsu-conversion env yomi hinshi fuzokugo nil context)) (if (numberp result) (egg-error "%s" (wnnrpc-get-error-message (- result)))) result)) (defun wnn-get-source-language (bunsetsu) (wnn-backend-get-source-language (egg-bunsetsu-get-backend bunsetsu))) (defun wnn-get-converted-language (bunsetsu) (wnn-backend-get-converted-language (egg-bunsetsu-get-backend bunsetsu))) (defun wnn-get-bunsetsu-converted (bunsetsu) (concat (wnn-bunsetsu-get-converted bunsetsu) (wnn-bunsetsu-get-fuzokugo bunsetsu))) (defun wnn-get-bunsetsu-source (bunsetsu) (concat (wnn-bunsetsu-get-yomi bunsetsu) (wnn-bunsetsu-get-fuzokugo bunsetsu))) (defun wnn-get-major-bunsetsu-converted (bunsetsu) (mapconcat 'wnn-get-bunsetsu-converted bunsetsu "")) (defun wnn-get-major-bunsetsu-source (bunsetsu) (mapconcat 'wnn-get-bunsetsu-source bunsetsu "")) (defun wnn-major-bunsetsu-continue-p (bunsetsu) (wnn-bunsetsu-get-dai-continue bunsetsu)) (defmacro wnn-uniq-hash-string (uniq-level) `(mapconcat (lambda (b) (concat ,@(cond ((eq uniq-level 'wnn-uniq) '((number-to-string (wnn-bunsetsu-get-hinshi b)))) ((eq uniq-level 'wnn-uniq-entry) '((number-to-string (wnn-bunsetsu-get-dic-no b)) "+" (number-to-string (wnn-bunsetsu-get-entry b))))) "\0" (wnn-bunsetsu-get-converted b) "\0" (wnn-bunsetsu-get-fuzokugo b))) bunsetsu "\0")) (defun wnn-uniq-hash (bunsetsu hash-table) (intern (cond ((eq wnn-uniq-level 'wnn-uniq) (wnn-uniq-hash-string wnn-uniq)) ((eq wnn-uniq-level 'wnn-uniq-entry) (wnn-uniq-hash-string wnn-uniq-entry)) (t (wnn-uniq-hash-string nil))) hash-table)) (defun wnn-uniq-candidates (candidates) (if (eq wnn-uniq-level 'wnn-no-uniq) candidates (let ((hash-table (make-vector (length candidates) 0))) (delq nil (mapcar (lambda (b) (let ((sym (wnn-uniq-hash b hash-table))) (if (null (boundp sym)) (set sym b)))) candidates))))) (defsubst wnn-uniq-bunsetsu-equal (bunsetsu-1 bunsetsu-2) (and (or (eq wnn-uniq-level 'wnn-uniq-kanji) (and (eq wnn-uniq-level 'wnn-uniq) (= (wnn-bunsetsu-get-hinshi bunsetsu-1) (wnn-bunsetsu-get-hinshi bunsetsu-2))) (and (= (wnn-bunsetsu-get-dic-no bunsetsu-1) (wnn-bunsetsu-get-dic-no bunsetsu-2)) (= (wnn-bunsetsu-get-entry bunsetsu-1) (wnn-bunsetsu-get-entry bunsetsu-2)) (or (eq wnn-uniq-level 'wnn-uniq-entry) (= (wnn-bunsetsu-get-kangovect bunsetsu-1) (wnn-bunsetsu-get-kangovect bunsetsu-2))))) (equal (wnn-bunsetsu-get-converted bunsetsu-1) (wnn-bunsetsu-get-converted bunsetsu-2)) (equal (wnn-bunsetsu-get-fuzokugo bunsetsu-1) (wnn-bunsetsu-get-fuzokugo bunsetsu-2)))) (defun wnn-uniq-bunsetsu-list-equal (b1 b2) (while (and b1 b2 (wnn-uniq-bunsetsu-equal (car b1) (car b2))) (setq b1 (cdr b1) b2 (cdr b2))) (and (null b1) (null b2))) (defun wnn-candidate-pos (bunsetsu candidates) (let ((n 0) pos) (while (and (null pos) candidates) (if (wnn-uniq-bunsetsu-list-equal (car candidates) bunsetsu) (setq pos n) (setq candidates (cdr candidates) n (1+ n)))) (or pos -1))) (defun wnn-get-candidates-converted (candidates) (mapcar 'wnn-get-major-bunsetsu-converted candidates)) (defun wnn-set-candidate-info (bunsetsu zenkouho) (wnn-bunsetsu-set-zenkouho (car bunsetsu) zenkouho) (mapcar (lambda (b) (wnn-bunsetsu-set-zenkouho b t)) (cdr bunsetsu))) (defun wnn-list-candidates (bunsetsu prev-b next-b major) (let* ((head (car bunsetsu)) (backend (egg-bunsetsu-get-backend head)) (env (wnn-bunsetsu-get-env head)) (yomi (wnn-get-major-bunsetsu-source bunsetsu)) (continue (eq (wnn-bunsetsu-get-zenkouho head) t)) pos cand converted hinshi fuzokugo v) (if prev-b (setq prev-b (egg-get-bunsetsu-tail prev-b) hinshi (wnn-bunsetsu-get-hinshi prev-b) fuzokugo (wnn-bunsetsu-get-fuzokugo prev-b)) (setq hinshi -1 fuzokugo "")) (if next-b (setq next-b (car next-b) v (wnn-bunsetsu-get-kangovect next-b))) (if (vectorp (wnn-bunsetsu-get-zenkouho head)) (setq pos (wnn-bunsetsu-get-zenkouho-pos head) cand (wnn-bunsetsu-get-zenkouho-list head))) (if (and pos (wnn-bunsetsu-list-equal bunsetsu (nth pos cand)) (eq major (wnn-bunsetsu-get-zenkouho-dai head)) (eq prev-b (wnn-bunsetsu-get-zenkouho-prev-b head)) (eq next-b (wnn-bunsetsu-get-zenkouho-next-b head))) (cons pos (wnn-bunsetsu-get-zenkouho-converted head)) (setq cand (wnn-get-bunsetsu-candidates env yomi hinshi fuzokugo v major)) (if (numberp cand) (egg-error "%s" (wnnrpc-get-error-message (- cand)))) (setq pos (wnn-candidate-pos bunsetsu cand)) (cond ((< pos 0) (setq cand (cons (wnn-bunsetsu-list-copy bunsetsu) cand))) ((and (> pos 0) (null (eq (wnn-bunsetsu-get-zenkouho head) t))) (setq cand (cons (nth pos cand) (delq (nth pos cand) cand))))) (setq cand (wnn-uniq-candidates cand) pos (wnn-candidate-pos bunsetsu cand) converted (wnn-get-candidates-converted cand)) (wnn-set-candidate-info bunsetsu (wnn-zenkouho-create pos cand converted major prev-b next-b)) (wnn-add-freq-down head cand) (cons pos converted)))) (defun wnn-decide-candidate (bunsetsu pos prev-b next-b) (let* ((head (car bunsetsu)) (cand-list (wnn-bunsetsu-get-zenkouho-list head)) (cand (nth pos cand-list)) (c-head (car cand))) (wnn-bunsetsu-set-zenkouho-pos head pos) (wnn-bunsetsu-set-change-top c-head (wnn-bunsetsu-get-change-top head)) (wnn-bunsetsu-set-freq-down c-head (wnn-bunsetsu-get-freq-down head)) (wnn-merge-fi-rel c-head bunsetsu) (wnn-major-bunsetsu-set-context cand (wnn-bunsetsu-get-context head)) (wnn-set-candidate-info cand (wnn-bunsetsu-get-zenkouho head)) (if (and prev-b (null wnn-one-level-conversion)) (progn (setq prev-b (list (egg-get-bunsetsu-tail prev-b))) (wnn-bunsetsu-set-dai-continue (car prev-b) (wnn-bunsetsu-connect-prev c-head)))) (if next-b (setq next-b (list (car next-b)))) (list cand prev-b next-b))) (defun wnn-special-candidate (bunsetsu prev-b next-b major type) (let* ((backend (egg-bunsetsu-get-backend (car bunsetsu))) (lang (get backend 'language)) pos cand) (when (and (eq lang (get backend 'source-language)) (eq lang (get backend 'converted-language))) (setq pos (and (eq lang (get backend 'source-language)) (eq lang (get backend 'converted-language)) (cond ((eq lang 'Japanese) (cond ((eq type 'egg-hiragana) -1) ((eq type 'egg-katakana) -2))) ((or (eq lang 'Chinese-GB) (eq lang 'Chinese-CNS)) (cond ((eq type 'egg-pinyin) -1) ((eq type 'egg-zhuyin) -1))) ((eq lang 'Korean) (cond ((eq type 'egg-hangul) -1)))))) (when pos (setq cand (cdr (wnn-list-candidates bunsetsu prev-b next-b major)) pos (+ pos (length cand))) (when (and (or (eq lang 'Chinese-GB) (eq lang 'Chinese-CNS))) (let ((converted (nth pos cand))) (cond ((egg-pinyin-syllable converted) (cond ((eq type 'egg-pinyin)) ; OK ((eq type 'egg-zhuyin) (wnn-pinyin-zhuyin-bunsetsu bunsetsu pos lang type)) (t (setq pos nil)))) ((egg-zhuyin-syllable converted) (cond ((eq type 'egg-pinyin) (wnn-pinyin-zhuyin-bunsetsu bunsetsu pos lang type)) ((eq type 'egg-zhuyin)) ; OK (t (setq pos nil)))) (t (setq pos nil)))))) (when pos (wnn-decide-candidate bunsetsu pos prev-b next-b))))) (defun wnn-pinyin-zhuyin-bunsetsu (bunsetsu pos lang type) (let ((b (nth pos (wnn-bunsetsu-get-zenkouho-list (car bunsetsu)))) (encoding (if (eq lang 'Chinese-GB) (if (eq type 'egg-pinyin) 'fixed-euc-py-cn 'fixed-euc-zy-cn) (if (eq type 'egg-pinyin) 'fixed-euc-py-tw 'fixed-euc-zy-tw))) (converted (wnn-bunsetsu-get-zenkouho-converted (car bunsetsu))) str) (setcar (nthcdr pos converted) (wnn-pinyin-zhuyin-string (nth pos converted) encoding)) (while b (setq str (wnn-bunsetsu-get-converted (car b))) (when str (wnn-bunsetsu-set-converted (car b) (wnn-pinyin-zhuyin-string str encoding))) (setq str (wnn-bunsetsu-get-fuzokugo (car b))) (when str (wnn-bunsetsu-set-fuzokugo (car b) (wnn-pinyin-zhuyin-string str encoding))) (setq b (cdr b))))) (defun wnn-pinyin-zhuyin-string (str encoding) (decode-coding-string (encode-coding-string str encoding) encoding)) (defun wnn-change-bunsetsu-length (bunsetsu prev-b next-b len major) (let ((backend (egg-bunsetsu-get-backend (car bunsetsu))) (env (wnn-bunsetsu-get-env (car bunsetsu))) (tail (egg-get-bunsetsu-tail prev-b)) (yomi (wnn-get-major-bunsetsu-source bunsetsu)) (context (wnn-bunsetsu-get-context (car bunsetsu))) yomi1 yomi2 hinshi fuzokugo new) (if tail (setq hinshi (wnn-bunsetsu-get-hinshi tail) fuzokugo (wnn-bunsetsu-get-fuzokugo tail)) (setq hinshi -1 fuzokugo "")) (setq yomi1 (substring yomi 0 len) yomi2 (concat (substring yomi len) (wnn-get-major-bunsetsu-source next-b))) (setq new (wnn-tanbunsetsu-conversion env yomi1 hinshi fuzokugo nil major)) (if (numberp new) (egg-error "%s" (wnnrpc-get-error-message (- new)))) (if (and prev-b (null wnn-one-level-conversion)) (wnn-bunsetsu-set-dai-continue tail (wnn-bunsetsu-connect-prev (car new)))) (wnn-bunsetsu-set-change-top (car new) t) (wnn-merge-freq-down (car new) bunsetsu) (wnn-merge-fi-rel (car new) bunsetsu) (wnn-merge-fi-rel (car new) next-b) (wnn-major-bunsetsu-set-context new context) (if (= (length yomi2) 0) (setq next-b nil) (setq tail (egg-get-bunsetsu-tail new) next-b (wnn-renbunsetsu-conversion env yomi2 (wnn-bunsetsu-get-hinshi tail) (wnn-bunsetsu-get-fuzokugo tail) nil context)) (if (numberp next-b) (egg-error "%s" (wnnrpc-get-error-message (- next-b)))) (if (and (null major) (null wnn-one-level-conversion)) (wnn-bunsetsu-set-dai-continue tail (wnn-bunsetsu-connect-prev (car next-b))))) (list new prev-b next-b))) (defun wnn-add-freq-down (bunsetsu down-list) (let ((freq-down (wnn-bunsetsu-get-freq-down bunsetsu)) b-list b pair) (while down-list (setq b-list (car down-list) down-list (cdr down-list)) (while b-list (setq b (car b-list) b-list (cdr b-list) pair (cons (wnn-bunsetsu-get-dic-no b) (wnn-bunsetsu-get-entry b))) (if (and (/= (wnn-bunsetsu-get-right-now b) 0) (/= (car pair) -1) (null (member pair freq-down))) (setq freq-down (cons pair freq-down))))) (wnn-bunsetsu-set-freq-down bunsetsu freq-down))) (defun wnn-merge-freq-down (bunsetsu b-list) (let ((freq-down0 (wnn-bunsetsu-get-freq-down bunsetsu)) freq-down1) (while b-list (setq freq-down1 (wnn-bunsetsu-get-freq-down (car b-list)) b-list (cdr b-list)) (while freq-down1 (if (null (member (car freq-down1) freq-down0)) (setq freq-down0 (cons (car freq-down1) freq-down0))) (setq freq-down1 (cdr freq-down1))) (wnn-bunsetsu-set-freq-down bunsetsu freq-down0)))) (defun wnn-merge-fi-rel (bunsetsu b-list) (let ((fi-rel (cons nil (wnn-bunsetsu-get-fi-rel bunsetsu)))) (if (eq bunsetsu (car b-list)) (setq b-list (cdr b-list))) (while b-list (nconc fi-rel (wnn-bunsetsu-get-fi-rel (car b-list))) (wnn-bunsetsu-set-fi-rel (car b-list) nil) (setq b-list (cdr b-list))) (wnn-bunsetsu-set-fi-rel bunsetsu (cdr fi-rel)))) (defun wnn-bunsetsu-combinable-p (bunsetsu1 bunsetsu2) (eq (wnn-bunsetsu-get-env bunsetsu1) (wnn-bunsetsu-get-env bunsetsu2))) (defvar wnn-auto-save-dic-count 0) (defun wnn-end-conversion (bunsetsu-list abort) (unless abort (let* ((head (car bunsetsu-list)) (env (wnn-bunsetsu-get-env head))) (prog1 (if (wnnenv-is-wnn6 env) (progn (wnn-clear-now-flag bunsetsu-list) (wnn-merge-fi-rel head (cdr bunsetsu-list)) (wnnrpc-set-fi-priority env (wnn-bunsetsu-get-fi-rel head)) (wnn-optimize-in-local bunsetsu-list) (wnn-optimize-in-server bunsetsu-list)) (wnn-clear-now-flag bunsetsu-list) (wnn-count-up-frequency bunsetsu-list)) (setq wnn-auto-save-dic-count (1+ wnn-auto-save-dic-count)) (when (eq wnn-auto-save-dic-count wnn-auto-save-dictionaries) (wnn-save-dictionaries env) (setq wnn-auto-save-dic-count 0)))))) (defun wnn-clear-now-flag (bunsetsu-list) (let ((env (wnn-bunsetsu-get-env (car bunsetsu-list)))) (while bunsetsu-list (setq fd (wnn-bunsetsu-get-freq-down (car bunsetsu-list)) bunsetsu-list (cdr bunsetsu-list)) (while fd (wnnrpc-set-frequency env (caar fd) (cdar fd) (WNN-const IMA_OFF) (WNN-const HINDO_NOP)) (setq fd (cdr fd)))))) (defun wnn-count-up-frequency (bunsetsu-list) (let ((env (wnn-bunsetsu-get-env (car bunsetsu-list))) (context (wnn-null-context)) dic-no entry b) (while bunsetsu-list (setq b (car bunsetsu-list) bunsetsu-list (cdr bunsetsu-list) dic-no (wnn-bunsetsu-get-dic-no b) entry (wnn-bunsetsu-get-entry b) context (cons (wnn-context-create dic-no entry (wnn-bunsetsu-get-jirilen b) (wnn-bunsetsu-get-hinshi b) (wnn-bunsetsu-get-fuzokugo b) (wnn-bunsetsu-get-converted b) (wnn-bunsetsu-get-right-now b) (wnn-bunsetsu-get-freq b)) context)) (wnnrpc-set-frequency env dic-no entry (WNN-const IMA_ON) (WNN-const HINDO_INC))) (list (car context) (nth 1 context)))) (defun wnn-optimize-in-local (bunsetsu-list) (let ((env (wnn-bunsetsu-get-env (car bunsetsu-list))) b prev-b next-b major-top entry hinshi) (setq next-b (car bunsetsu-list) bunsetsu-list (cdr bunsetsu-list)) (cond ((eq (wnnenv-get-server-type env) 'jserver) (while next-b (setq major-top (null (and b (wnn-bunsetsu-get-dai-continue b))) prev-b b b next-b next-b (car bunsetsu-list) bunsetsu-list (cdr bunsetsu-list) hinshi (wnn-bunsetsu-get-hinshi b)) (when (or (and (/= (wnnenv-get-notrans env) (WNN-const DIC_RDONLY)) (= (wnn-bunsetsu-get-dic-no b) -1) (or (= (wnn-bunsetsu-get-entry b) (WNN-const HIRAGANA)) (= (wnn-bunsetsu-get-entry b) (WNN-const KATAKANA))) (>= (wnn-bunsetsu-get-jirilen b) (WNN-const LEARNING_LEN))) (= (wnn-bunsetsu-get-entry b) (WNN-const IKEIJI_ENTRY))) (setq entry (wnn-notrans-auto-learning b)) (when (/= entry -1) (wnn-bunsetsu-set-dic-no b (WNN-const MUHENKAN_DIC)) (wnn-bunsetsu-set-entry b entry))) (cond ((and next-b major-top (wnn-bunsetsu-get-dai-continue b)) (wnn-adjacent-learning b next-b)) ((and prev-b (= hinshi (wnnenv-get-hinshi env 'rendaku)) (equal (wnn-bunsetsu-get-fuzokugo prev-b) "")) (wnn-adjacent-learning prev-b b)) ((and next-b (= hinshi (wnnenv-get-hinshi env 'settou))) (wnn-adjacent-learning b next-b)) ((and (/= (wnnenv-get-bmodify env) (WNN-const DIC_RDONLY)) (wnn-bunsetsu-get-change-top b) next-b (/= (wnn-bunsetsu-get-hinshi next-b) (wnnenv-get-hinshi env 'rendaku)) (/= hinshi (wnnenv-get-hinshi env 'settou))) (wnn-bmodify-learning b next-b))))) ((eq (wnnenv-get-server-type env) 'kserver) ;; Soory, not implemented nil)))) (defun wnn-notrans-auto-learning (bunsetsu) (let ((env (wnn-bunsetsu-get-env bunsetsu))) (wnnrpc-auto-learning env (WNN-const NOTRANS_LEARN) (wnn-bunsetsu-get-yomi bunsetsu) (wnn-bunsetsu-get-converted bunsetsu) "" (if (= (wnn-bunsetsu-get-entry bunsetsu) (WNN-const IKEIJI_ENTRY)) (wnn-bunsetsu-get-hinshi bunsetsu) (wnnenv-get-hinshi env 'noun)) 0))) (defun wnn-adjacent-learning (bunsetsu1 bunsetsu2) (let ((env (wnn-bunsetsu-get-env bunsetsu1)) (yomi (concat (wnn-bunsetsu-get-yomi bunsetsu1) (wnn-bunsetsu-get-yomi bunsetsu2))) (kanji (concat (wnn-bunsetsu-get-converted bunsetsu1) (wnn-bunsetsu-get-converted bunsetsu2))) (hinshi (wnnenv-get-hinshi env 'noun))) (if (= (wnnenv-get-bmodify env) (WNN-const DIC_RW)) (wnnrpc-auto-learning env (WNN-const BMODIFY_LEARN) yomi kanji "" hinshi 0) (wnnrpc-temporary-learning env yomi kanji "" hinshi 0)))) (defun wnn-bmodify-learning (bunsetsu1 bunsetsu2) (let ((env (wnn-bunsetsu-get-env bunsetsu1)) (yomi (concat (wnn-bunsetsu-get-yomi bunsetsu1) (wnn-bunsetsu-get-fuzokugo bunsetsu1) (wnn-bunsetsu-get-yomi bunsetsu2))) (kanji (concat (wnn-bunsetsu-get-converted bunsetsu1) (wnn-bunsetsu-get-fuzokugo bunsetsu1) (wnn-bunsetsu-get-converted bunsetsu2))) (hinshi (wnn-bunsetsu-get-hinshi bunsetsu2))) (wnnrpc-auto-learning env (WNN-const BMODIFY_LEARN) yomi kanji "" hinshi 0))) (defun wnn-optimize-in-server (bunsetsu-list) (let ((env (wnn-bunsetsu-get-env (car bunsetsu-list))) (context (wnn-bunsetsu-get-context (car bunsetsu-list))) b) (when (eq (wnnenv-get-server-type env) 'jserver) (wnn-context-set-right-now (car context) (WNN-const HINDO_NOP)) (wnn-context-set-freq (car context) (WNN-const HINDO_NOP)) (wnn-context-set-right-now (nth 1 context) (WNN-const HINDO_NOP)) (wnn-context-set-freq (nth 1 context) (WNN-const HINDO_NOP)) (while bunsetsu-list (setq b (car bunsetsu-list) bunsetsu-list (cdr bunsetsu-list) context (cons (wnn-context-create (wnn-bunsetsu-get-dic-no b) (wnn-bunsetsu-get-entry b) (wnn-bunsetsu-get-jirilen b) (wnn-bunsetsu-get-hinshi b) (wnn-bunsetsu-get-fuzokugo b) (wnn-bunsetsu-get-converted b) (WNN-const IMA_ON) (WNN-const HINDO_INC)) context))) (prog1 (list (car context) (nth 1 context)) (wnnrpc-optimize-fi env (nreverse context)))))) (defun wnn-finalize-backend (lang &optional action) (let* ((save-inhibit-quit inhibit-quit) (inhibit-quit t) (server-info (wnn-server-get-info lang)) (server-type (wnn-server-type server-info)) (env-list wnn-environments) env proc-list saved) (when server-type (while env-list (setq env (car env-list) env-list (cdr env-list)) (if (eq (wnnenv-get-server-type env) server-type) (condition-case err (progn (unless (memq (wnnenv-get-proc env) proc-list) (setq proc-list (cons (wnnenv-get-proc env) proc-list))) (unless (eq action 'disconnect-only) (unless saved (setq saved t) (message (egg-get-message 'wnn-dict-saving) (wnn-server-proc-name server-info))) (let ((inhibit-quit save-inhibit-quit)) (wnn-save-dictionaries env))) (unless (eq action 'save-only) (wnnrpc-disconnect env))) ((error quit) (message "signal %S occured when dictionary saving" err))))) (if saved (message (egg-get-message 'wnn-dict-saved) (wnn-server-proc-name server-info))) (unless (eq action 'save-only) (while proc-list (if (and (car proc-list) (eq (process-status (car proc-list)) 'open)) (wnnrpc-close (car proc-list))) (setq proc-list (cdr proc-list))))))) (defun wnn-close (lang) "Save dictionaries and close the Wnn session." (interactive (list (wnn-read-active-lang))) (or (listp lang) (setq lang (list lang))) (while lang (wnn-finalize-backend (car lang)) (setq lang (cdr lang)))) (defun wnn-disconnect (lang) "Disconnect the Wnn session without dictionary saving." (interactive (list (wnn-read-active-lang))) (or (listp lang) (setq lang (list lang))) (while lang (wnn-finalize-backend (car lang) 'disconnect-only) (setq lang (cdr lang)))) (defun wnn-dictionary-save (lang) "Save Wnn dictionaries." (interactive (list (wnn-read-active-lang))) (or (listp lang) (setq lang (list lang))) (while lang (wnn-finalize-backend (car lang) 'save-only) (setq lang (cdr lang)))) (defun wnn-read-active-lang () (let ((completion-ignore-case t) (env wnn-environments) langs server server-list) (while env (setq server (wnnenv-get-server-type (car env)) env (cdr env)) (if (null (memq server server-list)) (setq server-list (cons server server-list)))) (setq langs (delq nil (mapcar (lambda (info) (if (memq (wnn-server-type info) server-list) (wnn-server-language info))) wnn-server-info-list))) (if (<= (length langs) 1) langs (setq langs (cons (cons "All" langs) (mapcar (lambda (lang) (cons (symbol-name lang) lang)) langs))) (cdr (assoc (completing-read "language? " langs nil t nil nil "All") langs))))) ;; (defun wnn-comm-sentinel (proc reason) ; assume it is close (let ((inhibit-quit t)) (kill-buffer (process-buffer proc)) ;; delete env from the list. (setq wnn-environments (delq nil (mapcar (lambda (env) (if (null (eq (wnnenv-get-proc env) proc)) env)) wnn-environments))))) (defun wnn-open (server-info) "Establish the connection to WNN server. Return process object." ;; Open the session to WNN server, (let ((save-inhibit-quit inhibit-quit) (inhibit-quit t) (server-type (wnn-server-type server-info)) (port (wnn-server-port server-info)) (hostname-list (wnn-server-hostname server-info)) (proc-name (wnn-server-proc-name server-info)) (msg-form "Wnn: connecting to %S at %s...") (user-name (user-login-name)) buf hostname myname port-off proc result msg) (unwind-protect (progn (setq buf (generate-new-buffer (wnn-server-buffer-name server-info))) (save-excursion (set-buffer buf) (erase-buffer) (buffer-disable-undo) (set-buffer-multibyte nil) (setq egg-fixed-euc (wnn-server-coding-system server-info))) (or (consp hostname-list) (setq hostname-list (list hostname-list))) (while (and hostname-list (null proc)) (setq hostname (or (car hostname-list) "") hostname-list (cdr hostname-list) myname (if (equal hostname "") "unix" wnn-system-name)) (if (null (string-match ":" hostname)) (setq port-off 0) (setq port-off (string-to-number (substring hostname (match-end 0))) hostname (substring hostname 0 (match-beginning 0)))) (and (equal hostname "") (setq hostname "localhost")) (let ((inhibit-quit save-inhibit-quit)) (if (and msg (null (y-or-n-p (format "%s failed. Try to %s? " msg hostname)))) (egg-error "abort connect"))) (setq msg (format "Wnn: connecting to %S at %s..." server-type hostname)) (message "%s" msg) (let ((inhibit-quit save-inhibit-quit)) (condition-case nil (setq proc (open-network-stream proc-name buf hostname (+ port port-off))) ((error quit)))) (when proc (set-process-query-on-exit-flag proc nil) (set-process-coding-system proc 'binary 'binary) (set-process-sentinel proc 'wnn-comm-sentinel) (set-marker-insertion-type (process-mark proc) t) (setq result (wnnrpc-open proc myname user-name)) (when (numberp result) (delete-process proc) (setq proc nil)))) (cons proc result)) (if proc (message (concat msg "done")) (if buf (kill-buffer buf)) (egg-error 'wnn-connect-error))))) (defvar wnn-envspec-list nil) (defvar wnn-current-envspec nil) (defvar wnn-current-envspec-reverse nil) (defvar wnn-server-type nil) (defvar wnn-wnn6-server nil) (defmacro wnn-envspec-conv-param-name-list () ''(last-is-first complex okuri-learn okuri prefix-learn prefix suffix-learn common-learn freq-func numeric alphabet symbol yuragi rendaku bunsetsugiri muhenkan fi-relation-learn fi-freq-func)) (defmacro wnn-envspec-conv-param-length () (length (wnn-envspec-conv-param-name-list))) (defun wnn-envspec-create (env-name tankan stickey) (vector (and env-name (setq env-name (intern env-name))) (wnn-make-backend egg-language env-name) tankan stickey nil nil 0 (make-vector (wnn-envspec-conv-param-length) 0) (list nil) (list nil) (list nil))) (defsubst wnn-envspec-env-type (spec) (aref spec 0)) (defsubst wnn-envspec-backend (spec) (aref spec 1)) (defsubst wnn-envspec-tankan (spec) (aref spec 2)) (defsubst wnn-envspec-sticky (spec) (aref spec 3)) (defsubst wnn-envspec-param (spec) (aref spec 4)) (defsubst wnn-envspec-fuzokugo (spec) (aref spec 5)) (defsubst wnn-envspec-conv-vmask (spec) (aref spec 6)) (defsubst wnn-envspec-conv-param (spec) (aref spec 7)) (defsubst wnn-envspec-dic-list (spec) (cdr (aref spec 8))) (defsubst wnn-envspec-fi-dic-list (spec) (cdr (aref spec 9))) (defsubst wnn-envspec-autolearn-dic-list (spec) (cdr (aref spec 10))) (defsubst wnn-envspec-set-param (spec param) (aset spec 4 param)) (defsubst wnn-envspec-set-fuzokugo (spec fzk) (aset spec 5 fzk)) (defsubst wnn-envspec-set-conv-vmask (spec val) (aset spec 6 val)) (defsubst wnn-envspec-set-conv-param (spec num val) (aset (aref spec 7) num val)) (defsubst wnn-envspec-add-dic-list (spec &rest dic) (nconc (aref spec 8) (list (apply 'vector dic)))) (defsubst wnn-envspec-add-fi-dic-list (spec &rest dic) (nconc (aref spec 9) (list (apply 'vector dic)))) (defsubst wnn-envspec-add-autolearn-dic-list (spec type &rest dic) (nconc (aref spec 10) (list (cons type (apply 'vector dic))))) (eval-when-compile (defun wnn-conv-param (param) (- (wnn-envspec-conv-param-length) (length (memq param (wnn-envspec-conv-param-name-list)))))) (defmacro define-wnn-conv-param-func () (let ((name-list (wnn-envspec-conv-param-name-list)) (defs (list 'progn)) n set get) (while name-list (setq n (car name-list) name-list (cdr name-list) set (intern (format "wnn-envspec-set-conv-param-%s" n)) get (intern (format "wnn-get-conv-param-%s" n))) (nconc defs `((defsubst ,set (spec val) (wnn-envspec-set-conv-param spec ,(wnn-conv-param n) val) (wnn-envspec-set-conv-vmask spec (logior (wnn-envspec-conv-vmask spec) ,(lsh 1 (wnn-conv-param n))))) (defsubst ,get (param) (aref param ,(wnn-conv-param n)))))) defs)) (define-wnn-conv-param-func) (defmacro wnn-arg-type-error (func) `(egg-error ,(format "%s: Wrong type argument" func))) (defun wnn-define-environment (reverse &optional env-name tankan stickey) "Define a Wnn environment for normal/reverse conversion according to REVERSE. ENV-NAME specifies suffix of the Wnn environment name. Make single character conversion (Tan-Kanji conversion) environment, if tankan is non-NIL. Make the environment as sticky, if STICKEY is non-NIL." (if (and env-name (null (stringp env-name))) (wnn-arg-type-error wnn-define-environment)) (setq env-name (if reverse (concat env-name "R") env-name) wnn-current-envspec (wnn-envspec-create env-name tankan stickey) wnn-current-envspec-reverse reverse wnn-envspec-list (nconc wnn-envspec-list (list wnn-current-envspec)))) (defun wnn-set-fuzokugo (filename) (cond ((equal filename "") (setq filename nil)) ((null (stringp filename)) (wnn-arg-type-error wnn-set-fuzokugo))) (wnn-envspec-set-fuzokugo wnn-current-envspec filename)) (defmacro wnn-add-dict-param-check (func dict &optional freq prior drw dmax frw fmax dpass fpass rev) `(progn (if (or (and (null (stringp ,dict)) (null (stringp (car-safe ,dict)))) ,@(if freq `((and ,freq (null (stringp ,freq)) (null (stringp (car-safe ,freq)))))) ,@(if prior `((null (integerp ,prior)))) ,@(if drw `((null (or (eq ,drw nil) (eq ,drw t) (eq ,drw 0) (eq ,drw 1) ,@(if dmax `((and wnn-wnn6-server ,@(let ((x `((eq ,drw 2)))) (when (>= dmax 3) (nconc x `((eq ,drw 3)))) (when (>= dmax 4) (nconc x `((eq ,drw 4)))) x)))))))) ,@(if frw `((null (or (eq ,frw nil) (eq ,frw t) (eq ,frw 0) (eq ,frw 1) ,@(if fmax `((and wnn-wnn6-server ,@(let ((x `((eq ,frw 2)))) (when (>= fmax 3) (nconc x `((eq ,frw 3)))) (when (>= fmax 4) (nconc x `((eq ,frw 4)))) x)))))))) ,@(if dpass `((and ,dpass (null (stringp ,dpass))))) ,@(if fpass `((and ,fpass (null (stringp ,fpass)))))) (wnn-arg-type-error ,func)) (if (or (equal ,dict "") (equal (car-safe ,dict) "")) (egg-error ,(format "%s: Dictionary name should not be null." func))) ,@(if freq `((if (or (equal ,freq "") (equal (car-safe ,freq) "")) (setq ,freq nil)))) ,@(if rev `((setq ,rev (if ,rev (car ,rev) wnn-current-envspec-reverse)))))) (defmacro wnn-wnn6-env-func (func) `(or wnn-wnn6-server (egg-error ,(format "%s is available only on Wnn6" func)))) (defun wnn-add-dict (dict freq priority dict-rw freq-rw &optional dict-passwd freq-passwd &rest reverse) (wnn-add-dict-param-check wnn-add-dict dict freq priority dict-rw 4 freq-rw 2 dict-passwd freq-passwd reverse) (wnn-envspec-add-dic-list wnn-current-envspec dict freq priority dict-rw freq-rw dict-passwd freq-passwd reverse)) (defun wnn-add-fisys-dict (dict freq freq-rw &optional freq-passwd) (wnn-wnn6-env-func wnn-add-fisys-dict) (wnn-add-dict-param-check wnn-add-fisys-dict dict freq nil nil nil freq-rw 3 nil freq-passwd) (wnn-envspec-add-fi-dic-list wnn-current-envspec dict freq t nil freq-rw nil freq-passwd nil)) (defun wnn-add-fiusr-dict (dict freq dict-rw freq-rw &optional dict-passwd freq-passwd) (wnn-wnn6-env-func wnn-add-fiusr-dict) (wnn-add-dict-param-check wnn-add-fiusr-dict dict freq nil dict-rw 3 freq-rw 3 dict-passwd freq-passwd) (wnn-envspec-add-fi-dic-list wnn-current-envspec dict freq nil dict-rw freq-rw dict-passwd freq-passwd nil)) (defun wnn-add-notrans-dict (dict priority dict-rw &optional dict-passwd &rest reverse) (wnn-wnn6-env-func wnn-add-notrans-dict) (wnn-add-dict-param-check wnn-add-notrans-dict dict nil priority dict-rw nil nil nil dict-passwd nil reverse) (wnn-envspec-add-autolearn-dic-list wnn-current-envspec (WNN-const NOTRANS_LEARN) dict nil priority dict-rw nil dict-passwd nil reverse)) (defun wnn-add-bmodify-dict (dict priority dict-rw &optional dict-passwd &rest reverse) (wnn-wnn6-env-func wnn-add-notrans-dict) (wnn-add-dict-param-check wnn-add-bmodify-dict dict nil priority dict-rw nil nil nil dict-passwd nil reverse) (wnn-envspec-add-autolearn-dic-list wnn-current-envspec (WNN-const BMODIFY_LEARN) dict nil priority dict-rw nil dict-passwd nil reverse)) (defun wnn-set-param (&rest args) (if (/= (length args) 17) (egg-error "wnn-set-param: Wrong number of arguments")) (mapcar (lambda (n) (if (null (integerp n)) (wnn-arg-type-error wnn-set-param))) args) (wnn-envspec-set-param wnn-current-envspec (apply 'vector args))) (defmacro wnn-boolean-param-check (func flag) `(setq ,flag (cond ((or (eq ,flag 0) (eq ,flag nil)) 0) ((or (eq ,flag 1) (eq ,flag t)) 1) (t (wnn-arg-type-error ,func))))) (defun wnn-set-last-is-first-mode (flag) (wnn-wnn6-env-func wnn-set-last-is-first-mode) (wnn-boolean-param-check wnn-set-last-is-first-mode flag) (wnn-envspec-set-conv-param-last-is-first wnn-current-envspec flag)) (defun wnn-set-complex-conv-mode (flag) (wnn-wnn6-env-func wnn-set-complex-conv-mode) (wnn-boolean-param-check wnn-set-complex-conv-mode flag) (wnn-envspec-set-conv-param-complex wnn-current-envspec flag)) (defun wnn-set-okuri-learn-mode (flag) (wnn-wnn6-env-func wnn-set-okuri-learn-mode) (wnn-boolean-param-check wnn-set-okuri-learn-mode flag) (wnn-envspec-set-conv-param-okuri-learn wnn-current-envspec flag)) (defun wnn-set-okuri-flag (mode) (wnn-wnn6-env-func wnn-set-okuri-flag) (setq mode (cond ((or (eq mode -1) (eq mode 'regulation)) -1) ((or (eq mode 0) (eq mode 'no)) 0) ((or (eq mode 1) (eq mode 'yes)) 1) (t (wnn-arg-type-error wnn-set-okuri-flag)))) (wnn-envspec-set-conv-param-okuri wnn-current-envspec mode)) (defun wnn-set-prefix-learn-mode (flag) (wnn-wnn6-env-func wnn-set-prefix-learn-mode) (wnn-boolean-param-check wnn-set-prefix-learn-mode flag) (wnn-envspec-set-conv-param-prefix-learn wnn-current-envspec flag)) (defun wnn-set-prefix-flag (mode) (wnn-wnn6-env-func wnn-set-prefix-flag) (setq mode (cond ((or (eq mode 0) (eq mode 'hiragana)) 0) ((or (eq mode 1) (eq mode 'kanji)) 1) (t (wnn-arg-type-error wnn-set-prefix-flag)))) (wnn-envspec-set-conv-param-prefix wnn-current-envspec mode)) (defun wnn-set-suffix-learn-mode (flag) (wnn-wnn6-env-func wnn-set-suffix-learn-mode) (wnn-boolean-param-check wnn-set-suffix-learn-mode flag) (wnn-envspec-set-conv-param-suffix-learn wnn-current-envspec flag)) (defun wnn-set-common-learn-mode (flag) (wnn-wnn6-env-func wnn-set-common-learn-mode) (wnn-boolean-param-check wnn-set-common-learn-mode flag) (wnn-envspec-set-conv-param-common-learn wnn-current-envspec flag)) (defun wnn-set-freq-func-mode (mode) (wnn-wnn6-env-func wnn-set-freq-func-mode) (setq mode (cond ((or (eq mode 0) (eq mode 'not)) 0) ((or (eq mode 1) (eq mode 'always)) 1) ((or (eq mode 2) (eq mode 'high)) 2) ((or (eq mode 3) (eq mode 'normal)) 3) ((or (eq mode 4) (eq mode 'low)) 4) (t (wnn-arg-type-error wnn-set-freq-func-mode)))) (wnn-envspec-set-conv-param-freq-func wnn-current-envspec mode)) (defun wnn-set-numeric-mode (mode) (wnn-wnn6-env-func wnn-set-numeric-mode) (setq mode (cond ((or (eq mode -2) (eq mode 'han)) -2) ((or (eq mode -12) (eq mode 'zen)) -12) ((or (eq mode -13) (eq mode 'kan)) -13) ((or (eq mode -15) (eq mode 'kansuuji)) -15) ((or (eq mode -16) (eq mode 'kanold)) -16) ((or (eq mode -17) (eq mode 'hancan)) -17) ((or (eq mode -18) (eq mode 'zencan)) -18) (t (wnn-arg-type-error wnn-set-numeric-mode)))) (wnn-envspec-set-conv-param-numeric wnn-current-envspec mode)) (defun wnn-set-alphabet-mode (mode) (wnn-wnn6-env-func wnn-set-alphabet-mode) (setq mode (cond ((or (eq mode -4) (eq mode 'han)) -4) ((or (eq mode -30) (eq mode 'zen)) -30) (t (wnn-arg-type-error wnn-set-alphabet-mode)))) (wnn-envspec-set-conv-param-alphabet wnn-current-envspec mode)) (defun wnn-set-symbol-mode (mode) (wnn-wnn6-env-func wnn-set-symbol-mode) (setq mode (cond ((or (eq mode -5) (eq mode 'han)) -5) ((or (eq mode -40) (eq mode 'jis)) -40) ((or (eq mode -41) (eq mode 'asc)) -41) (t (wnn-arg-type-error wnn-set-symbol-mode)))) (wnn-envspec-set-conv-param-symbol wnn-current-envspec mode)) (defun wnn-set-yuragi-mode (flag) (wnn-wnn6-env-func wnn-set-yuragi-mode) (wnn-boolean-param-check wnn-set-yuragi-mode flag) (wnn-envspec-set-conv-param-yuragi wnn-current-envspec flag)) (defun wnn-set-rendaku-mode (flag) (wnn-wnn6-env-func wnn-set-rendaku-mode) (wnn-boolean-param-check wnn-set-rendaku-mode flag) (wnn-envspec-set-conv-param-rendaku wnn-current-envspec flag)) (defun wnn-renbunsetsu-conversion (env yomi hinshi fuzokugo v context) (let ((result (cond ((wnnenv-get-tankan env) (wnnrpc-tanbunsetsu-conversion env yomi hinshi fuzokugo v)) ((wnnenv-is-wnn6 env) (wnnrpc-fi-renbunsetsu-conversion env yomi hinshi fuzokugo v context)) (t (wnnrpc-renbunsetsu-conversion env yomi hinshi fuzokugo v))))) (prog1 result (if wnn-one-level-conversion (while (consp result) (wnn-bunsetsu-set-dai-continue (car result) nil) (setq result (cdr result))))))) (defun wnn-tanbunsetsu-conversion (env yomi hinshi fuzokugo v major) (if (or (null major) wnn-one-level-conversion (wnnenv-get-tankan env)) (wnnrpc-tanbunsetsu-conversion env yomi hinshi fuzokugo v) (wnnrpc-daibunsetsu-conversion env yomi hinshi fuzokugo v))) (defun wnn-get-bunsetsu-candidates (env yomi hinshi fuzokugo v major) (cond ((or wnn-one-level-conversion (wnnenv-get-tankan env)) (let ((result (wnnrpc-get-bunsetsu-candidates env yomi hinshi fuzokugo v))) (prog1 result (while (consp result) (wnn-bunsetsu-set-dai-continue (caar result) nil) (setq result (cdr result)))))) ((null major) (wnnrpc-get-bunsetsu-candidates env yomi hinshi fuzokugo v)) (t (wnnrpc-get-daibunsetsu-candidates env yomi hinshi fuzokugo v)))) (defsubst wnn-filename (p) (substitute-in-file-name (if (consp p) (concat wnn-usr-dic-dir "/" (car p)) p))) (defsubst wnn-client-file-p (filename) (and (stringp filename) (= (aref filename 0) ?!))) (defsubst wnn-client-filename (filename) (substitute-in-file-name (expand-file-name (substring filename 1) "~"))) (defun wnn-open-file (env filename) "Open the file FILENAME on the environment ENV. Return file ID. NIL means NO-file. On failure, return negative error code." (and filename (if (wnn-client-file-p filename) (wnnrpc-file-send env (wnn-client-filename filename)) (wnnrpc-file-read env (wnn-filename filename))))) (defun wnn-create-directory (env path noquery) "Create directory to the path. Retun non-NIL value on success." (if (wnn-client-file-p path) (let ((local-name (directory-file-name (file-name-directory (wnn-client-filename path))))) (cond ((file-directory-p local-name) t) ((or noquery (y-or-n-p (format (egg-get-message 'wnn-dir-missing) (file-name-directory path)))) (make-directory local-name t) (if (file-directory-p local-name) (progn (message (egg-get-message 'wnn-dir-created) path) t) (message (egg-get-message 'wnn-dir-failed) path) nil)))) (let ((name (directory-file-name (file-name-directory (wnn-filename path)))) create-list) (setq path name) (while (and name (/= (wnnrpc-access env name 0) 0)) (setq create-list (cons name create-list) name (file-name-directory name) name (and name (directory-file-name name)))) (or (null create-list) (if (or noquery (y-or-n-p (format (egg-get-message 'wnn-dir-missing) path))) (let ((result 0)) (while (and (>= result 0) create-list) (setq result (wnnrpc-mkdir env (car create-list)) create-list (cdr create-list))) (if (>= result 0) (progn (message (egg-get-message 'wnn-dir-created) path) t) (message (egg-get-message 'wnn-dir-failed) path) nil))))))) (defun wnn-file-remove (proc filename passwd) (let ((result (if (wnn-client-file-p filename) (wnnrpc-file-remove-client proc (wnn-client-filename filename) passwd) (wnnrpc-file-remove proc (wnn-filename filename) passwd)))) (or (= result 0) (progn (message (wnnrpc-get-error-message (- result))) nil)))) (defun wnn-open-dictionary (env fi name rw comment dpasswd fpasswd &optional noquery) (let ((dic-id (wnn-open-file env name))) (cond ((null dic-id) (message "Wnn: cannot omit dictionary name") nil) ((>= dic-id 0) dic-id) ((or (null rw) (/= dic-id (- (WNN-const NO_EXIST)))) (message (egg-get-message 'wnn-dict-missing-1) name (wnnrpc-get-error-message (- dic-id))) nil) ((and (or noquery (y-or-n-p (format (egg-get-message 'wnn-dict-missing-2) name))) (wnn-create-directory env name noquery) (wnn-create-dictionary env name (wnnrpc-writable-dic-type env fi rw) comment dpasswd fpasswd)) (message (egg-get-message 'wnn-dict-created) name) (setq dic-id (wnn-open-file env name)) (if (>= dic-id 0) dic-id (message "%s" (wnnrpc-get-error-message (- dic-id))) nil))))) (defun wnn-create-dictionary (env name type comment dpasswd fpasswd) "Create a dictionary file on the server or the client depending on name." (let ((result (if (wnn-client-file-p name) (wnnrpc-dic-file-create-client env (wnn-client-filename name) type comment dpasswd fpasswd) (wnnrpc-dic-file-create env (wnn-filename name) type comment dpasswd fpasswd)))) (or (= result 0) (progn (message (wnnrpc-get-error-message (- result))) nil)))) (defun wnn-open-frequency (env fi dic-id name rw comment passwd) (let ((freq-id (wnn-open-file env name))) (cond ((null freq-id) -1) ((>= freq-id 0) freq-id) ((or (null rw) (/= freq-id (- (WNN-const NO_EXIST)))) (message (egg-get-message 'wnn-freq-missing-1) name (wnnrpc-get-error-message (- freq-id))) nil) ((and (y-or-n-p (format (egg-get-message 'wnn-freq-missing-2) name)) (wnn-create-directory env name nil) (wnn-create-frequency env fi dic-id name comment passwd)) (message (egg-get-message 'wnn-freq-created) name) (setq freq-id (wnn-open-file env name)) (if (>= freq-id 0) freq-id (message "%s" (wnnrpc-get-error-message (- dic-id))) nil))))) (defun wnn-create-frequency (env fi dic-id name comment passwd) "Create a frequency file on the server or the client depending on name." (let ((result (if (wnn-client-file-p name) (wnnrpc-hindo-file-create-client env fi dic-id (wnn-client-filename name) comment passwd) (wnnrpc-hindo-file-create env fi dic-id (wnn-filename name) comment passwd)))) (or (= result 0) (progn (message (wnnrpc-get-error-message (- result))) nil)))) (defun wnn-set-dictionary (env fi dic-spec) "" (let ((dname (aref dic-spec 0)) (fname (aref dic-spec 1)) (prior (aref dic-spec 2)) (drw (aref dic-spec 3)) (frw (aref dic-spec 4)) (dpass (aref dic-spec 5)) (fpass (aref dic-spec 6)) (rev (aref dic-spec 7)) did fid result) (cond ((numberp (setq dpass (wnnrpc-read-passwd-file dpass))) (message "%s" (wnnrpc-get-error-message (- dpass))) nil) ((numberp (setq fpass (if fname (wnnrpc-read-passwd-file fpass) ""))) (message "%s" (wnnrpc-get-error-message (- fpass))) nil) ((and (setq did (wnn-open-dictionary env fi dname drw "" dpass fpass)) (setq fid (wnn-open-frequency env fi did fname frw "" fpass))) (if fi (setq result (wnnrpc-set-fi-dictionary env did fid prior drw frw dpass fpass)) (setq drw (cond ((eq drw (WNN-const DIC_GROUP)) (WNN-const DIC_RW)) ((eq drw (WNN-const DIC_MERGE)) (WNN-const DIC_RDONLY)) (t drw)) result (wnnrpc-set-dictionary env did fid prior drw frw dpass fpass rev))) (cond ((>= result 0) t) ((or (null frw) (/= result (- (WNN-const NO_MATCH)))) (message "%s (%s): %s" dname (if fname fname "") (wnnrpc-get-error-message (- result))) nil) ((and (y-or-n-p (format (egg-get-message 'wnn-no-match) fname)) (>= (wnnrpc-file-discard env fid) 0) (wnn-file-remove proc fname fpass) (wnn-create-frequency env fi did fname "" fpass)) (message (egg-get-message 'wnn-re-create-freq) fname) (and (>= (setq fid (wnn-open-file env fname)) 0) (>= (wnnrpc-set-dictionary env did fid prior drw frw dpass fpass rev) 0)))))))) (defun wnn-temporary-dic-add (env rev) (let ((result (wnnrpc-temporary-dic-loaded env))) (if (= result 0) (wnnrpc-temporary-dic-add env rev) result))) (defun wnn-set-autolearn-dictionary (env type dic-spec) (let ((dname (aref dic-spec 0)) (prior (aref dic-spec 2)) (drw (aref dic-spec 3)) (dpass (aref dic-spec 5)) (rev (aref dic-spec 7)) (did (wnnrpc-get-autolearning-dic env type)) result) (or (numberp drw) (setq drw (if drw 0 1))) (cond ((< did 0) (message "%s" (wnnrpc-get-error-message (- did))) nil) ((> did 0) (setq result (wnn-temporary-dic-add env rev)) (if (>= result 0) drw (message "%s" (wnnrpc-get-error-message (- result))) nil)) ((numberp (setq dpass (wnnrpc-read-passwd-file dpass))) (message "%s" (wnnrpc-get-error-message (- dpass))) nil) ((setq did (wnn-open-dictionary env nil dname t "" dpass "" t)) (if (and (>= (setq did (wnnrpc-set-dictionary env did -1 prior drw drw dpass "" rev)) 0) (>= (setq did (wnnrpc-set-autolearning-dic env type did)) 0) (>= (setq did (wnn-temporary-dic-add env rev)) 0)) drw (message "%s" (wnnrpc-get-error-message (- did))) nil))))) (defun wnn-search-environment (backend) (let ((env-list wnn-environments) env) (while (and (null env) env-list) (setq env (and (eq (wnnenv-get-backend (car env-list)) backend) (car env-list)) env-list (cdr env-list))) env)) (defun wnn-v3-eggrc-defines () (if (null (fboundp 'set-wnn-reverse)) (progn (fset 'set-wnn-reverse (lambda (arg) (wnn-define-environment arg (and (or (eq wnn-server-type 'cserver) (eq wnn-server-type 'tserver)) "PZ")))) (fset 'is-wnn6-server (lambda () wnn-wnn6-server)) (fset 'set-wnn-fuzokugo 'wnn-set-fuzokugo) (fset 'add-wnn-dict 'wnn-add-dict) (fset 'set-wnn-param 'wnn-set-param) (fset 'add-wnn-fisys-dict 'wnn-add-fisys-dict) (fset 'add-wnn-fiusr-dict 'wnn-add-fiusr-dict) (fset 'add-wnn-notrans-dict 'wnn-add-notrans-dict) (fset 'add-wnn-bmodify-dict 'wnn-add-bmodify-dict) (fset 'set-last-is-first-mode 'wnn-set-last-is-first-mode) (fset 'set-complex-conv-mode 'wnn-set-complex-conv-mode) (fset 'set-okuri-flag 'wnn-set-okuri-flag) (fset 'set-prefix-learn-mode 'wnn-set-prefix-learn-mode) (fset 'set-suffix-learn-mode 'wnn-set-suffix-learn-mode) (fset 'set-common-learn-mode 'wnn-set-common-learn-mode) (fset 'set-yuragi-mode 'wnn-set-yuragi-mode) (fset 'set-freq-func-mode 'wnn-set-freq-func-mode) (fset 'set-numeric-mode 'wnn-set-numeric-mode) (fset 'set-alphabet-mode 'wnn-set-alphabet-mode) (fset 'set-symbol-mode 'wnn-set-symbol-mode) (setq wnn-v3-defined t)))) (defun wnn-get-environment (backend) "Return Wnn Environemt for BACKEND. If none, create new environment." (let ((env (wnn-search-environment backend)) proc error) (or env (unwind-protect (let* ((language (wnn-backend-get-language backend)) (server-info (wnn-server-get-info language)) (server-type (wnn-server-type server-info)) version specs) (setq proc (wnn-open server-info) version (cdr proc) proc (car proc) wnn-envspec-list nil) (condition-case err (let ((wnn-server-type server-type) (wnn-wnn6-server (eq version 'wnn6))) (if wnn-use-v3-eggrc (wnn-v3-eggrc-defines)) (egg-load-startup-file 'wnn language)) (egg-error (setq error err) (signal (car error) (cdr error)))) (setq specs wnn-envspec-list) (while specs (wnn-create-environment proc server-type version (car specs)) (setq specs (cdr specs))) (setq env (wnn-search-environment backend))) (if (and proc (null env)) (progn (wnnrpc-close proc) (if error (signal (car error) (cdr error)) (egg-error 'wnn-fail-make-env)))))))) ;; Create a new environment in the conversion server, if necessary. (defun wnn-create-environment (proc server-type version spec) (let* ((save-inhibit-quit inhibit-quit) (inhibit-quit t) (name (wnn-make-env-name spec)) (backend (wnn-envspec-backend spec)) (tankan (wnn-envspec-tankan spec)) (sticky (wnn-envspec-sticky spec)) (parameter (wnn-envspec-param spec)) (fzk (wnn-envspec-fuzokugo spec)) (dic-list (wnn-envspec-dic-list spec)) (fi-dic-list (wnn-envspec-fi-dic-list spec)) (autolearn-dic-list (wnn-envspec-autolearn-dic-list spec)) exist env-id env fid cvmask param mode type dic-spec) (condition-case err (progn (setq exist (wnnrpc-env-exist proc name) env-id (wnnrpc-connect proc name)) (if (< env-id 0) (egg-error "%s" (wnnrpc-get-error-message (- env-id)))) (setq env (wnnenv-create proc env-id server-type version backend tankan name)) (cond ((or wnn-force-set-environment (= exist 0)) (let ((inhibit-quit save-inhibit-quit)) (and fzk (or (< (setq fid (wnn-open-file env fzk)) 0) (< (setq fid (wnnrpc-set-fuzokugo-file env fid)) 0)) (message "%s" (wnnrpc-get-error-message (- fid)))) (while fi-dic-list (wnn-set-dictionary env t (car fi-dic-list)) (setq fi-dic-list (cdr fi-dic-list))) (while dic-list (wnn-set-dictionary env nil (car dic-list)) (setq dic-list (cdr dic-list))) (while autolearn-dic-list (setq type (caar autolearn-dic-list) dic-spec (cdar autolearn-dic-list) autolearn-dic-list (cdr autolearn-dic-list) mode (wnn-set-autolearn-dictionary env type dic-spec)) (if mode (if (eq type (WNN-const NOTRANS_LEARN)) (progn (wnnenv-set-notrans env mode) (wnn-envspec-set-conv-param-muhenkan spec mode)) (wnnenv-set-bmodify env mode) (wnn-envspec-set-conv-param-bunsetsugiri spec mode)))) (if parameter (wnnrpc-set-conversion-parameter env parameter)) (setq cvmask (wnn-envspec-conv-vmask spec) param (wnn-envspec-conv-param spec)) (if (/= cvmask 0) (wnnrpc-set-conversion-env-param env cvmask param)))) ((eq version 'wnn6) (wnnenv-set-bmodify env (wnn-get-autolearning-dic-mode env (WNN-const BMODIFY_LEARN))) (wnnenv-set-notrans env (wnn-get-autolearning-dic-mode env (WNN-const NOTRANS_LEARN))))) (cond ((eq (wnnenv-get-server-type env) 'jserver) (wnn-set-hinshi env 'noun "$BL>;l(B") (when (wnnenv-is-wnn6 env) (wnn-set-hinshi env 'settou "$B@\F,8l(B($B$*(B)") (wnn-set-hinshi env 'rendaku "$BO"By(B"))) ((eq (wnnenv-get-server-type env) 'cserver) (wnn-set-hinshi env 'noun "$AFUM(C{(B")) ((eq (wnnenv-get-server-type env) 'tserver) (wnn-set-hinshi env 'noun "$(G_[]WGX(B")) ((eq (wnnenv-get-server-type env) 'kserver) (wnn-set-hinshi env 'noun "$(CY#^r(B"))) (if sticky (wnnrpc-make-env-sticky env) (wnnrpc-make-env-unsticky env)) (setq wnn-environments (nconc wnn-environments (list env)))) ((egg-error quit) (if (eq (car err) 'egg-error) (message "%s" (nth 1 err))) (if env (progn (wnnrpc-disconnect env) (setq wnn-environments (delq env wnn-environments)))) (if (eq (car err) 'quit) (signal 'quit (cdr err))))))) (defun wnn-make-env-name (spec) (let ((env-type (wnn-envspec-env-type spec))) (concat wnn-user-name (if env-type (symbol-name env-type) "")))) (defun wnn-set-hinshi (env sym name) (let ((hinshi (wnnrpc-hinshi-number (wnnenv-get-proc env) name))) (if (>= hinshi 0) (wnnenv-set-hinshi env sym hinshi)))) (defsubst wnn-dicinfo-entry (info) (aref info 0)) (defsubst wnn-dicinfo-id (info freq) (aref info (+ 1 freq))) (defsubst wnn-dicinfo-mode (info freq) (aref info (+ 3 freq))) (defsubst wnn-dicinfo-enable (info) (aref info 5)) (defsubst wnn-dicinfo-nice (info) (aref info 6)) (defsubst wnn-dicinfo-reverse (info) (aref info 7)) (defsubst wnn-dicinfo-comment (info) (aref info 8)) (defsubst wnn-dicinfo-name (info freq) (aref info (+ 9 freq))) (defsubst wnn-dicinfo-passwd (info freq) (aref info (+ 11 freq))) (defsubst wnn-dicinfo-type (info) (aref info 13)) (defsubst wnn-dicinfo-words (info) (aref info 14)) (defsubst wnn-dicinfo-local (info freq) (aref info (+ 15 freq))) (defun wnn-get-autolearning-dic-mode (env type) (let* ((dic (wnnrpc-get-autolearning-dic env type)) (info (and (> dic 0) (wnnrpc-get-dictionary-info env (1- dic))))) (if (vectorp (car-safe info)) (wnn-dicinfo-mode (car info) 0) (WNN-const DIC_RDONLY)))) (defun wnn-get-dictionary-list-with-environment (env) (if (wnnenv-is-wnn6 env) (wnnrpc-get-fi-dictionary-list-with-environment env (WNN-const DIC_NO_TEMPS)) (wnnrpc-get-dictionary-list-with-environment env))) (defun wnn-save-dictionaries (env) (let ((dic-list (wnn-get-dictionary-list-with-environment env)) (result 0) info freq fid name local-name) (while dic-list (setq info (car dic-list) dic-list (cdr dic-list) freq 0) (while (<= freq 1) (setq fid (wnn-dicinfo-id info freq) name (wnn-dicinfo-name info freq)) (if (and (> fid 0) (= (wnn-dicinfo-mode info freq) 0)) (cond ((= (wnn-dicinfo-local info freq) 1) (wnnrpc-write-file env fid name)) ((setq local-name (wnnenv-get-client-file env name)) (wnnrpc-file-receive env fid local-name)) ((and (setq local-name (wnn-file-loaded-client env name fid)) (file-writable-p local-name)) (wnnrpc-file-receive env fid local-name)))) (setq freq (1+ freq)))))) (defun wnn-file-loaded-client (env name fid) (let ((len (length wnn-system-name)) local-name) (and (> (length name) len) (equal (substring name 0 len) wnn-system-name) (prog1 (wnn-client-file-p (substring name len)) (setq local-name (wnn-client-filename (substring name len)))) (= (wnnrpc-file-loaded-local (wnnenv-get-proc env) local-name t) fid) local-name))) (defun wnn-word-inspection (bunsetsu) (let ((env (wnn-bunsetsu-get-env bunsetsu)) (converted (wnn-get-bunsetsu-converted bunsetsu)) (yomi (wnn-bunsetsu-get-yomi bunsetsu)) (fuzokugo (wnn-bunsetsu-get-fuzokugo bunsetsu)) (hinshi-no (wnn-bunsetsu-get-hinshi bunsetsu)) (dic-no (wnn-bunsetsu-get-dic-no bunsetsu)) (entry (wnn-bunsetsu-get-entry bunsetsu)) (now (wnn-bunsetsu-get-right-now bunsetsu)) (freq (wnn-bunsetsu-get-freq bunsetsu)) (evaluation (wnn-bunsetsu-get-evaluation bunsetsu)) (evaluation-dai (or (wnn-bunsetsu-get-dai-evaluation bunsetsu) "---")) (kangovect (wnn-bunsetsu-get-kangovect bunsetsu)) hinsi dic) (setq hinshi (wnnrpc-hinshi-name (wnnenv-get-proc env) hinshi-no)) (setq dic (if (>= dic-no 0) (wnn-dict-name (car (wnnrpc-get-dictionary-info env dic-no))) (egg-get-message 'wnn-pseud-bunsetsu))) (message "%s %s+%s(%s %s:%s Freq:%s%s) S:%s D:%s V:%s " converted yomi fuzokugo hinshi dic entry (if (= now 1) "*" " ") freq evaluation evaluation-dai kangovect))) ;;; not implemented yet (NIY) (defun wnn-delete-dictionary () (dj-delete-dic XXX)) ;;; NIY, might never be implemented (defun wnn-server-inspect ()) ;;; NIY (defun wnn-get-conversion-parameter () (js-get-parameter)) ;;; Dictionary management (word registration) is not implemented yet. (defun wnn-find-dictionary-by-id (id dic-list) (catch 'return (while dic-list (let ((dic (car dic-list))) (if (= (wnndic-get-id dic) id) (throw 'return dic) (setq dic-list (cdr dic-list))))))) (defun wnn-dict-name (dic-info) (let ((comment (wnndic-get-comment dic-info)) (name (wnndic-get-dictname dic-info))) (cond ((null (string= comment "")) comment) ((wnn-client-file-p name) name) (t (file-name-nondirectory name))))) (defun wnn-list-writable-dictionaries-byname (env) (let ((dic-list (wnn-get-dictionary-list-with-environment env)) (w-id-list (wnnrpc-get-writable-dictionary-id-list env))) (cond ((numberp w-id-list) (egg-error "%s" (wnnrpc-get-error-message (- w-id-list)))) ((null w-id-list) (egg-error 'wnn-no-writable-d)) (t (delq nil (mapcar (lambda (id) (let ((dic (wnn-find-dictionary-by-id id dic-list))) (and dic (cons (wnn-dict-name dic) dic)))) w-id-list)))))) (defun wnn-word-registration (backend kanji yomi) (let (env dic dic-id hinshi result) (if (or (null (eq (egg-get-language 0 kanji) (wnn-backend-get-converted-language backend))) (next-single-property-change 0 'egg-lang kanji) (null (eq (egg-get-language 0 yomi) (wnn-backend-get-source-language backend))) (next-single-property-change 0 'egg-lang yomi)) (egg-error "word registration: invalid character") (setq env (wnn-get-environment backend) dic (wnn-dictionary-select env) dic-id (wnndic-get-id dic) hinshi (wnn-hinshi-select env dic-id) result (wnnrpc-hinshi-number (wnnenv-get-proc env) hinshi)) (or (< result 0) (setq result (wnnrpc-add-word env dic-id yomi kanji "" result 0))) (if (>= result 0) (list hinshi (wnn-dict-name dic)) (egg-error (wnnrpc-get-error-message (- result))))))) (defun wnn-dictionary-select (env) (menudiag-select (list 'menu (egg-get-message 'wnn-register-1) (wnn-list-writable-dictionaries-byname env)))) (defun wnn-hinshi-select (env dic-id) (menudiag-select (wnn-make-hinshi-menu env dic-id "/" (egg-get-message 'wnn-register-2)))) (defun wnn-make-hinshi-menu (env dic-id hinshi prompt) (let ((hinshi-list (wnnrpc-get-hinshi-list env dic-id hinshi))) (if (numberp hinshi-list) (egg-error "%s" (wnnrpc-get-error-message (- hinshi-list))) (list 'menu (format (if (equal hinshi "/") "%s:" "%s[%s]:") prompt (substring hinshi 0 (1- (length hinshi)))) (mapcar (lambda (h) (if (= (aref h (1- (length h))) ?/) (cons h (wnn-make-hinshi-menu env dic-id h prompt)) h)) hinshi-list))))) ;;; setup (load "egg/wnnrpc") (run-hooks 'wnn-load-hook) ;;;###autoload (defun egg-activate-wnn (&rest arg) "Activate Wnn backend of Tamago 4." (apply 'egg-mode (append arg wnn-backend-alist))) ;;; egg/wnn.el ends here. egg-4.2.0/ATTIC/egg/wnnrpc.el000066400000000000000000001627511252027163000155300ustar00rootroot00000000000000;;; egg/wnnrpc.el --- WNN Support (low level interface) in Egg ;;; Input Method Architecture ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; KATAYAMA Yoshio ; Korean, Chinese support. ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'egg-com) (defmacro wnn-file-string () (string-as-unibyte (decode-coding-string "$B#W#n#n$N%U%!%$%k(B" 'euc-jp))) (defmacro wnn-const (c) "Macro for WNN constants." (cond ((eq c 'JS_VERSION) 0) ((eq c 'JS_OPEN) 1) ((eq c 'JS_CLOSE) 3) ((eq c 'JS_CONNECT) 5) ((eq c 'JS_DISCONNECT) 6) ((eq c 'JS_ENV_EXIST) 7) ((eq c 'JS_ENV_STICKY) 8) ((eq c 'JS_ENV_UNSTICKY) 9) ((eq c 'JS_KANREN) 17) ((eq c 'JS_KANTAN_SHO) 18) ((eq c 'JS_KANZEN_SHO) 19) ((eq c 'JS_KANTAN_DAI) 20) ((eq c 'JS_KANZEN_DAI) 21) ((eq c 'JS_HINDO_SET) 24) ((eq c 'JS_DIC_ADD) 33) ((eq c 'JS_DIC_DELETE) 34) ((eq c 'JS_DIC_USE) 35) ((eq c 'JS_DIC_LIST) 36) ((eq c 'JS_DIC_INFO) 37) ((eq c 'JS_FUZOKUGO_SET) 41) ((eq c 'JS_FUZOKUGO_GET) 48) ((eq c 'JS_WORD_ADD) 49) ((eq c 'JS_WORD_DELETE) 50) ((eq c 'JS_WORD_SEARCH) 51) ((eq c 'JS_WORD_SEARCH_BY_ENV) 52) ((eq c 'JS_WORD_INFO) 53) ((eq c 'JS_WORD_COMMENT_SET) 54) ((eq c 'JS_PARAM_SET) 65) ((eq c 'JS_PARAM_GET) 66) ((eq c 'JS_MKDIR) 81) ((eq c 'JS_ACCESS) 82) ((eq c 'JS_WHO) 83) ((eq c 'JS_ENV_LIST) 85) ((eq c 'JS_FILE_LIST_ALL) 86) ((eq c 'JS_DIC_LIST_ALL) 87) ((eq c 'JS_FILE_READ) 97) ((eq c 'JS_FILE_WRITE) 98) ((eq c 'JS_FILE_SEND) 99) ((eq c 'JS_FILE_RECEIVE) 100) ((eq c 'JS_HINDO_FILE_CREATE) 101) ((eq c 'JS_DIC_FILE_CREATE) 102) ((eq c 'JS_FILE_REMOVE) 103) ((eq c 'JS_FILE_LIST) 104) ((eq c 'JS_FILE_INFO) 105) ((eq c 'JS_FILE_LOADED) 106) ((eq c 'JS_FILE_LOADED_LOCAL) 107) ((eq c 'JS_FILE_DISCARD) 108) ((eq c 'JS_FILE_COMMENT_SET) 109) ((eq c 'JS_FILE_PASSWORD_SET) 110) ((eq c 'JS_FILE_STAT) 111) ((eq c 'JS_KILL) 112) ((eq c 'JS_HINSI_LIST) 114) ((eq c 'JS_HINSI_NAME) 115) ((eq c 'JS_HINSI_NUMBER) 116) ((eq c 'JS_HINSI_DICTS) 117) ((eq c 'JS_HINSI_TABLE_SET) 118) ((eq c 'JS_ACCESS_ADD_HOST) ?\xf00011) ((eq c 'JS_ACCESS_ADD_USER) ?\xf00012) ((eq c 'JS_ACCESS_REMOVE_HOST) ?\xf00013) ((eq c 'JS_ACCESS_REMOVE_USER) ?\xf00014) ((eq c 'JS_ACCESS_ENABLE) ?\xf00015) ((eq c 'JS_ACCESS_DISABLE) ?\xf00016) ((eq c 'JS_ACCESS_GET_INFO) ?\xf00017) ((eq c 'JS_TEMPORARY_DIC_ADD) ?\xf00021) ((eq c 'JS_TEMPORARY_DIC_DELETE) ?\xf00022) ((eq c 'JS_AUTOLEARNING_WORD_ADD) ?\xf00023) ((eq c 'JS_SET_AUTOLEARNING_DIC) ?\xf00024) ((eq c 'JS_GET_AUTOLEARNING_DIC) ?\xf00025) ((eq c 'JS_IS_LOADED_TEMPORARY_DIC) ?\xf00026) ((eq c 'JS_TEMPORARY_WORD_ADD) ?\xf00027) ((eq c 'JS_SET_HENKAN_ENV) ?\xf00031) ((eq c 'JS_GET_HENKAN_ENV) ?\xf00032) ((eq c 'JS_SET_HENKAN_HINSI) ?\xf00033) ((eq c 'JS_GET_HENKAN_HINSI) ?\xf00034) ((eq c 'JS_HENKAN_WITH_DATA) ?\xf00035) ((eq c 'JS_FI_DIC_ADD) ?\xf00061) ((eq c 'JS_FI_HINDO_FILE_CREATE) ?\xf00062) ((eq c 'JS_FI_KANREN) ?\xf00065) ((eq c 'JS_SET_FI_PRIORITY) ?\xf00066) ((eq c 'JS_OPTIMIZE_FI) ?\xf00067) ((eq c 'JS_HENKAN_IKEIJI) ?\xf0006f) ((eq c 'JS_LOCK) ?\xf00071) ((eq c 'JS_UNLOCK) ?\xf00072) ((eq c 'JS_FI_DIC_LIST) ?\xf00081) ((eq c 'JS_FI_DIC_LIST_ALL) ?\xf00082) ((eq c 'JS_FUZOKUGO_LIST) ?\xf00083) ((eq c 'JLIB_VERSION) ?\x4003) ((eq c 'JLIB_VERSION_WNN6) ?\x4f00) ((eq c 'WNN_C_LOCAL) "!") ((eq c 'WNN_FT_DICT_FILE) 1) ((eq c 'WNN_FT_HINDO_FILE) 2) ((eq c 'WNN_FILE_STRING) (encode-coding-string "$B#W#n#n$N%U%!%$%k(B" 'euc-jp)) ((eq c 'WNN_FILE_STRING_LEN) 16) ((eq c 'WNN_PASSWD_LEN) 16) ((eq c 'WNN_HOST_LEN) 16) ((eq c 'WNN_UNIQ_LEN) 28) ((eq c 'WNN_FILE_HEADER_LEN) 128) ((eq c 'WNN_FILE_HEADER_PAD) 36) ((eq c 'WNN_FILE_BODY_PAD) 116) ((eq c 'WNN_ENVNAME_LEN) 32) ((eq c 'WNN_MAX_ENV_OF_A_CLIENT) 32) ((eq c 'WNN_MAX_DIC_OF_AN_ENV) 30) ((eq c 'WNN_MAX_FILE_OF_AN_ENV) 60) ((eq c 'WNN_ACK) 0) ((eq c 'WNN_NAK) -1) ((eq c 'WNN_NO_EXIST) 1) ((eq c 'WNN_OPENF_ERR) 16) ((eq c 'WNN_JSERVER_DEAD) 70) ((eq c 'WNN_BAD_VERSION) 73) ((eq c 'WNN_FILE_READ_ERROR) 90) ((eq c 'WNN_FILE_WRITE_ERROR) 91) ((eq c 'WNN_INCORRECT_PASSWD) 94) ((eq c 'WNN_FILE_IN_USE) 95) ((eq c 'WNN_UNLINK) 96) ((eq c 'WNN_FILE_CREATE_ERROR) 97) ((eq c 'WNN_NOT_A_FILE) 98) ((eq c 'WNN_INODE_CHECK_ERROR) 99) ((eq c 'WNN_UD_DICT) 2) ((eq c 'WNN_REV_DICT) 3) ((eq c 'CWNN_REV_DICT) ?\x103) ((eq c 'BWNN_REV_DICT) ?\x203) ((eq c 'WNN_COMPACT_DICT) 5) ((eq c 'WNN_FI_SYSTEM_DICT) 6) ((eq c 'WNN_FI_USER_DICT) 7) ((eq c 'WNN_FI_HINDO_FILE) 8) ((eq c 'WNN_GROUP_DICT) 9) ((eq c 'WNN_MERGE_DICT) 10) ((eq c 'WNN_VECT_NO) -1) ((eq c 'WNN_VECT_BUNSETSU) 2) ((eq c 'WNN_VECT_KANREN) 0) ((eq c 'WNN_VECT_KANZEN) 1) ((eq c 'WNN_VECT_KANTAN) 1)))) (defconst wnnrpc-error-message '((Japanese . [ nil "$B%U%!%$%k$,B8:_$7$^$;$s(B" nil "$B%a%b%j(B allocation $B$G<:GT$7$^$7$?(B" nil "$B<-=q$G$O$"$j$^$;$s(B" "$BIQEY%U%!%$%k$G$O$"$j$^$;$s(B" "$BIUB08l%U%!%$%k$G$O$"$j$^$;$s(B" nil "$B<-=q%F!<%V%k$,0lGU$G$9(B" "$BIQEY%U%!%$%k$,;XDj$5$l$?<-=q$NIQEY%U%!%$%k$G$O$"$j$^$;$s(B" nil nil nil nil nil "$B%U%!%$%k$,%*!<%W%s$G$-$^$;$s(B" "$B@5$7$$IQEY%U%!%$%k$G$O$"$j$^$;$s(B" "$B@5$7$$IUB08l%U%!%$%k$G$O$"$j$^$;$s(B" "$BIUB08l$N8D?t(B, $B%Y%/%?D9$5$J$I$,B?2a$.$^$9(B" "$B$=$NHV9f$N<-=q$O;H$o$l$F$$$^$;$s(B" nil nil nil "$BIUB08l%U%!%$%k$NFbMF$,@5$7$/$"$j$^$;$s(B" "$B5?;wIJ;lHV9f$,0[>o$G$9(B(hinsi.data $B$,@5$7$/$"$j$^$;$s(B)" "$BL$Dj5A$NIJ;l$,A0Ce%U%!%$%k$rFI$_9~$`$3$H$,$G$-$^$;$s(B" "$B%Q%9%o!<%I$,4V0c$C$F$$$^$9(B" "$B%U%!%$%k$,FI$_9~$^$l$F$$$^$9(B" "$B%U%!%$%k$,:o=|$G$-$^$;$s(B" "$B%U%!%$%k$,:n@.=PMh$^$;$s(B" "WNN $B$N%U%!%$%k$G$"$j$^$;$s(B" "$B%U%!%$%k$N(B inode $B$H(B FILE_UNIQ $B$r0lCW$5$;$k;v$,$G$-$^$;$s(B" "$BIJ;l%U%!%$%k$,Bg$-2a$.$^$9(B" "$BIJ;l%U%!%$%k$,Bg$-2a$.$^$9(B" "$BIJ;l%U%!%$%k$,B8:_$7$^$;$s(B" "$BIJ;l%U%!%$%k$NFbMF$,4V0c$C$F$$$^$9(B" nil "$BIJ;l%U%!%$%k$,FI$_9~$^$l$F$$$^$;$s(B" "$BIJ;lL>$,4V0c$C$F$$$^$9(B" "$BIJ;lHV9f$,4V0c$C$F$$$^$9(B" nil "$B$=$NA`:n$O%5%]!<%H$5$l$F$$$^$;$s(B" "$B%Q%9%o!<%I$NF~$C$F$$$k%U%!%$%k$,%*!<%W%s$G$-$^$;$s(B" "uumrc $B%U%!%$%k$,B8:_$7$^$;$s(B" "uumrc $B%U%!%$%k$N7A<0$,8m$C$F$$$^$9(B" "$B$3$l0J>e4D6-$r:n$k$3$H$O$G$-$^$;$s(B" "$B$3$N%/%i%$%"%s%H$,FI$_9~$s$@%U%!%$%k$G$"$j$^$;$s(B" "$B<-=q$KIQEY%U%!%$%k$,$D$$$F$$$^$;$s(B" "$B%Q%9%o!<%I$N%U%!%$%k$,:n@.=PMh$^$;$s(B" ]) (Chinese-GB . [ nil "$AND<~2;4fTZ(B" nil "$ADZ4f(Balloc$AJ'0\(B" nil "$A2;JGWV5d(B" "$A2;JGF56HND<~(B" "$A2;JGND7(ND<~(B" nil "$AWV5d1m8qBz(B" "$AF56HND<~#:2;JGV86(5DWV5d5DF56HND<~(B" nil nil nil nil nil "$AND<~2;D\4r?*(B" "$A2;JGU}H75DF56HND<~(B" "$A2;JGU}H75DND7(ND<~(B" "$A8=JtSo5D8vJ}!"OrA?3$6H5H3,9}(B" "$AUb8v:EBk5DWV5d!"C;SPJ9SC(B" nil nil nil "$AND7(ND<~5DDZH]2;U}H7(B" "$APiDb4JPT:EBkRl3#(Bcixing.data$A2;U}H7(B" "$AN46(Re5D4JPT!"6(ReAKG06K4JPT(B" "$AND7(ND<~2;D\6AH!(B" nil nil "$AWV5d5DOnJ}3,9}(B" "$A1d;;:sWV7{4.5D3$6H3,9}(B" "$A8=JtSo=bNvSr2;9;(B" nil "$A4N:n29Sr2;9;(B" "$A:n29(B 1$A8vR2C;SP(B" nil nil nil nil "$A6ARt3$6H3,9}(B" "$A::WV3$6H3,9}(B" "$AV86(5DWV5d!"2;D\5GB<(B" "$A6ARt5D3$6HJG(B 0" "$AV86(5DWV5d!"2;D\Df2i(B" "$AV;6A5DWV5d!"5GB<(B/$AO{3}AK(B" "$A;7>3VP2;4fTZ5DWV5d!"5GB2;7{(B" "$A2;JG#c#W#n#nSC;'Iz3I5D;7>3(B" nil nil nil nil nil "$AWSD?B<2;D\44=((B" nil nil nil nil nil nil nil nil nil "$AND<~2;D\6AH!(B" "$AND<~2;D\P43v(B" "$A2;JG#c#W#n#nSC;'?I6AH!5DND<~(B" "$ARTIO5DND<~2;D\6AH!(B" "password$A2;6T(B" "$AND<~U}TZ6AH!(B" "$AND<~2;D\O{3}(B" "$AND<~C;SP44=(3v@4(B" "$A2;JG#c#W#n#n5DND<~(B" "$AND<~5D(BI-node$A:M(BFILE_UNIQ$A2;D\R;VB(B" "$A4JPTND<~L+4s(B" "$A4JPTND<~L+4s(B" "$A4JPTND<~2;4fTZ(B" "$A4JPTND<~5DDZH]2;6T(B" nil "$A4JPTND<~2;D\6AH!(B" "$A4JPTC{2;6T(B" "$A4JPT:EBk2;6T(B" nil "$AUb8v2YWw2;V'3V(B" "password$A5DJdHkND<~2;D\4r?*(B" "uumrc$AND<~2;4fTZ(B" "uumrc$AND<~5DPNJ=4mNs(B" "$ARTIO;7>32;D\44=((B" "$AUb8v#c#W#n#nSC;'!"6AH!5DND<~C;SP(B" "$AWV5d5DF56HND<~C;SP(B" "password$A5DND<~C;SP44=(3v@4(B" ]) (Chinese-CNS . [ nil "$(GEFG5DbGtGc(B" nil "$(GDyGt(Balloc$(GFBZu(B" nil "$(GDbQRGsL((B" "$(GDbQRs"PyEFG5(B" "$(GDbQREFNNEFG5(B" nil "$(GGsL(OPV*iH(B" "$(Gs"PyEFG5!3DbQRQ@LyN{GsL(N{s"PyEFG5(B" nil nil nil nil nil "$(GEFG5DbWdFTbd(B" "$(GDbQRF_m}N{s"PyEFG5(B" "$(GDbQRF_m}N{EFNNEFG5(B" "$(GOazhk#N{T6m0!#GWbXO[Pya+b>g4(B" "$(G]UT6f@n#N{GsL(!#JtH4KpFn(B" nil nil nil "$(GEFNNEFG5N{DyU)DbF_m}(B" "$(Gapsib$MLf@n#\,Z&(Bcixing.data$(GDbF_m}(B" "$(GF\LyexN{b$ML!#LyexD'P)j&b$ML(B" "$(GEFNNEFG5DbWd{tL=(B" nil nil "$(GGsL(N{bzm0b>g4(B" "$(G|H_PG[Gs\JHkN{O[Pyb>g4(B" "$(GOazhk#fXN5YQDbY\(B" nil "$(GH9OlfPYQDbY\(B" "$(GOlfP(B 1$(GT6D>JtH4(B" nil nil nil nil "$(G{tSvO[Pyb>g4(B" "$(GiGGsO[Pyb>g4(B" "$(GQ@LyN{GsL(!#DbWd`trg(B" "$(G{tSvN{O[PyQR(B 0" "$(GQ@LyN{GsL(!#DbWdXKQg(B" "$(GF7{tN{GsL(!#`trg(B/$(GVJ=@4O4Y(B" nil "$(C8^8p8.(B alloc $(C?!<-(B $(C=GFPG_@>4O4Y(B" nil "$(C;g@|@L(B $(C>F4U4O4Y(B" "$(C:s55(B $(CH-@O@L(B $(C>F4U4O4Y(B" "$(C:Nn(B $(CH-@O@L(B $(C>F4U4O4Y(B" nil "$(C;g@|(B $(CEW@L:m@L(B $(C2K(B $(CC!@>4O4Y(B" "$(CAvA$5H(B $(C;g@|@G(B $(C:s55(B $(CH-@O@L(B $(C>F4U4O4Y(B" nil nil nil nil nil "$(CH-@O@;(B $(C?-(B $(Cx@>4O4Y(B" "$(C8B4B(B $(C:s55(B $(CH-@O@L(B $(C>F4U4O4Y(B" "$(C8B4B(B $(C:Nn(B $(CH-@O@L(B $(C>F4U4O4Y(B" "$(C:Nn@G(B $(C09J=@4O4Y(B" nil nil nil "$(C:Nn(B $(CH-@O@G(B $(C3;?k@L(B $(C8BAv(B $(C>J=@4O4Y(B" "$(C0!;s(B $(CG0;g@G(B $(C9xH#0!(B $(CF2834O4Y(B. hinsi.data $(C0!(B $(C8BAv(B $(C>J=@4O4Y(B" "$(C9LA$@G@G(B $(CG0;g0!(B $(C@|4\(B $(CG0;g7N(B $(CA$@G5G>n(B $(C@V=@4O4Y(B" "$(C:Nn(B $(CH-@O@L(B $(C@PGtA.(B $(C@VAv(B $(C>J=@4O4Y(B" nil nil "$(C;g@|@G(B $(C?#F.8.0!(B $(C3J9+(B $(C89=@4O4Y(B" "$(C:/H/GO7A4B(B $(C9.@Z?-@L(B $(C3J9+(B $(C1i4O4Y(B" "$(C:Nn(B $(CGX<.(B $(C?5?*@L(B $(C:NA7GU4O4Y(B" nil "$(C4Y@=(B $(CHD:8(B $(C?5?*@L(B $(C:NA7GU4O4Y(B" "$(CHD:80!(B $(C>x@>4O4Y(B" nil nil nil nil "$(CGQ1[@L(B $(C3J9+(B $(C1i4O4Y(B" "$(CGQ@Z0!(B $(C3J9+(B $(C1i4O4Y(B" "$(CAvA$5H(B $(C;g@|@:(B $(C5n7O(B $(C:R0!4I@T4O4Y(B" "$(CGQ1[@G(B $(C1f@L0!(B 0 $(C@T4O4Y(B" "$(CAvA$5H(B $(C;g@|@:(B $(C?*B|A6(B $(C:R0!4I@T4O4Y(B" "$(C@P1b@|?k(B $(C;g@|?!(B $(C5n7O(B/$(C4O4Y(B" "$(CA8@gGOAv(B $(C>J4B(B $(C;g@|?!(B $(C5n7O(B $(CGO7A0m(B $(CG_@>4O4Y(B" nil nil "$(C@P1b@|?k(B $(C:s558&(B $(C0f=E(B $(CGO7A0m(B $(CG_@>4O4Y(B" "$(CAvA$5H(B $(C4\>n4B(B $(CA8@gGOAv(B $(C>J=@4O4Y(B" nil nil nil nil nil nil nil nil nil "$(C8^8p8.(B alloc $(C?!(B $(C=GFPG_@>4O4Y(B" nil nil nil nil nil nil nil "$(C?!7/0!(B $(C9_;}G_@>4O4Y(B" "$(C9v1W(B(Bug)$(C0!(B $(C9_;}G_@>4O4Y(B" "$(C<-9v(B(Server)$(C0!(B $(CAW>n(B $(C@V@>4O4Y(B" "alloc$(C?!(B $(C=GFPG_@>4O4Y(B" "$(C<-9v(B(Server) $(C?M(B $(CA"CKGR(B $(Cx@>4O4Y(B" "$(CEk=E(B $(CGA7NEdD]@G(B $(C9vA/@L(B $(C8BAv(B $(C>J=@4O4Y(B" "$(CE,6s@L>HF.0!(B $(C;}<:GQ(B $(CH/0f@L(B $(C>F4U4O4Y(B" nil nil nil nil nil "$(C5p7:Ed8.8&(B $(C885i(B $(Cx@>4O4Y(B" nil nil nil nil nil nil nil nil nil "$(CH-@O(B $(C@P1b?!(B $(C=GFPG_@>4O4Y(B" "$(CH-@O(B $(C>21b?!(B $(C=GFPG_@>4O4Y(B" "$(CE,6s@L>HF.0!(B $(C@P>n(B $(C5e80(B $(CH-@O@L(B $(C>F4U4O4Y(B" "$(C4u(B $(C@L;s@G(B $(CH-@O@;(B $(C@P>n(B $(C5e81(B $(Cx@>4O4Y(B" "$(CFP=:?v5e0!(B $(CF2834O4Y(B" "$(CH-@O@L(B $(C@PGtA.(B $(C@V@>4O4Y(B" "$(CH-@O@;(B $(Cx@>4O4Y(B" "$(CH-@O@;(B $(C@[<:GR(B $(Cx@>4O4Y(B" "kWnn$(C@G(B $(CH-@O@L(B $(C>F4U4O4Y(B" "$(CH-@O@G(B I-node $(C?M(B FILE_UNIQ $(C8&(B $(C@OD!=CE3(B $(Cx@>4O4Y(B" "$(CG0;g(B $(CH-@O@G(B $(CE)1b0!(B $(C3J9+(B $(CE.4O4Y(B" "$(CG0;g(B $(CH-@O@G(B $(CE)1b0!(B $(C3J9+(B $(CE.4O4Y(B" "$(CG0;g(B $(CH-@O@L(B $(CA8@gGOAv(B $(C>J=@4O4Y(B" "$(CG0;g(B $(CH-@O@G(B $(C3;?k@L(B $(CF2834O4Y(B" nil "$(CG0;g(B $(CH-@O@L(B $(C@PGtA.(B $(C@VAv(B $(C>J=@4O4Y(B" "$(CG0;g(B $(C@L8'@L(B $(CF2834O4Y(B" "$(CG0;g(B $(C9xH#0!(B $(CF2834O4Y(B" nil "$(C1W(B $(CA6@[@:(B $(CAv?x5GAv(B $(C>J=@4O4Y(B" "$(CFP=:?v5e0!(B $(C5i>n@V4B(B $(CH-@O@;(B $(C?-(B $(Cx@>4O4Y(B" "uumrc $(C@L(B $(CA8@gGOAv(B $(C>J=@4O4Y(B" "uumrc $(C@G(B $(CG|=D@L(B $(CF2834O4Y(B" "$(C@L(B $(C@L;s(B $(CH/0f@;(B $(C@[<:GR(B $(Cx@>4O4Y(B" "$(CE)6s@L>HF.0!(B $(C@P>n(B $(C5e80(B $(CH-@O@L(B $(C>F4U4O4Y(B" "$(C;g@|?!(B $(C:s55(B $(CH-@O@L(B $(CA8@gGOAv(B $(C>J=@4O4Y(B" "$(CFP=:?v5e(B $(CH-@O@;(B $(C@[<:GR(B $(Cx@>4O4Y(B" ])) "Array of WNN error messages. Indexed by error code.") (defvar wnnrpc-timeout 10) (defun wnnrpc-message-language (lang) (or (cdr (assq lang egg-message-language-alist)) lang)) (defun wnnrpc-get-error-message (errno) "Return error message string specified by ERRNO." (let ((msg (cdr (or (assq (wnnrpc-message-language egg-default-language) wnnrpc-error-message) (assq (wnnrpc-message-language its-current-language) wnnrpc-error-message) (assq 'Japanese wnnrpc-error-message))))) (or (and (< errno (length msg)) (aref msg errno)) (format "#%d" errno)))) (defmacro wnnrpc-call-with-proc (proc vlist send-expr &rest receive-exprs) `(comm-call-with-proc ,proc ((zhuyin its-zhuyin) (comm-accept-timeout wnnrpc-timeout) ,@vlist) ,send-expr ,@receive-exprs)) (defmacro wnnrpc-call-with-environment (env vlist send-expr &rest rcv-exprs) `(comm-call-with-proc (wnnenv-get-proc ,env) ((zhuyin its-zhuyin) (comm-accept-timeout wnnrpc-timeout) (env-id (wnnenv-get-env-id ,env)) ,@vlist) ,send-expr ,@rcv-exprs)) (defmacro wnnrpc-get-result (&rest body) `(let (result) (comm-unpack (i) result) (if (< result 0) (progn (comm-unpack (i) result) (- result)) ,@(or body '(result))))) (defun wnnrpc-open-internal (proc version myhostname username) "Open the session. Return 0 on success, error code on failure." (comm-call-with-proc proc () (comm-format (u u s s) (wnn-const JS_OPEN) version myhostname username) (wnnrpc-get-result))) (defun wnnrpc-open (proc myhostname username) "Open the session. Return wnn4 or wnn6 on success, NIL on failure." (let ((type-list `((wnn6 . ,(wnn-const JLIB_VERSION_WNN6)) (wnn4 . ,(wnn-const JLIB_VERSION)))) (result (- (wnn-const WNN_BAD_VERSION))) type version) (while (and type-list (= result (- (wnn-const WNN_BAD_VERSION)))) (setq type (caar type-list) version (cdar type-list) type-list (cdr type-list) result (wnnrpc-open-internal proc version myhostname username))) (if (zerop result) type result))) (defun wnnrpc-connect (proc envname) "Establish new `connection' and make an environment. Return the identitifation of the environment on success, or negative error code on failure." (comm-call-with-proc proc () (comm-format (u s) (wnn-const JS_CONNECT) envname) (wnnrpc-get-result))) (defun wnnrpc-file-read (env filename) "Read the file FILENAME on the environment ENV Return non-negative file ID on success, or negative error code on failure." (wnnrpc-call-with-environment env () (comm-format (u u s) (wnn-const JS_FILE_READ) env-id filename) (wnnrpc-get-result))) (defun wnnrpc-set-fuzokugo-file (env fid) "For PROC, on environment ENV-ID, Set Fuzokugo file specified by FID. Return 0 on success, negate-encoded error code on failure." (wnnrpc-call-with-environment env () (comm-format (u u i) (wnn-const JS_FUZOKUGO_SET) env-id fid) (wnnrpc-get-result))) (defun wnnrpc-set-dictionary (env dic-id freq-id priority dic-rw freq-rw dic-passwd freq-passwd reverse) "Set dictionary on server. Return dictionary number on success, negate-encoded error code on faiulure." (wnnrpc-call-with-environment env () (comm-format (u u i i i u u s s u) (wnn-const JS_DIC_ADD) env-id dic-id freq-id priority (if (numberp dic-rw) dic-rw (if dic-rw 0 1)) (if (numberp freq-rw) freq-rw (if freq-rw 0 1)) dic-passwd freq-passwd (if reverse 1 0)) (wnnrpc-get-result))) (defun wnnrpc-set-fi-dictionary (env dic-id freq-id sys dic-rw freq-rw dic-passwd freq-passwd) "Set FI dictionary on the server. Return 0 on success, negate-encoded error code on faiulure." (wnnrpc-call-with-environment env () (comm-format (u u i i u u u s s) (wnn-const JS_FI_DIC_ADD) env-id dic-id freq-id (if sys (wnn-const WNN_FI_SYSTEM_DICT) (wnn-const WNN_FI_USER_DICT)) (if (numberp dic-rw) dic-rw (if dic-rw 0 1)) (if (numberp freq-rw) freq-rw (if freq-rw 0 1)) dic-passwd freq-passwd) (wnnrpc-get-result))) (defun wnnrpc-get-autolearning-dic (env type) "Get id of auto learning dictionary on the server. Return dictionary id + 1 on success, 0 on no dictionary, negate-encoded error code on faiulure." (wnnrpc-call-with-environment env (result) (comm-format (u u u) (wnn-const JS_GET_AUTOLEARNING_DIC) env-id type) (wnnrpc-get-result (comm-unpack (i) result) (1+ result)))) (defun wnnrpc-set-autolearning-dic (env type dic-id) "Set auto learning dictionary on the server. Return 0 on success, negate-encoded error code on faiulure." (wnnrpc-call-with-environment env () (comm-format (u u u i) (wnn-const JS_SET_AUTOLEARNING_DIC) env-id type dic-id) (wnnrpc-get-result))) (defun wnnrpc-version (proc) "Return the version number of WNN server." (comm-call-with-proc proc (result) (comm-format (u) (wnn-const JS_VERSION)) (comm-unpack (i) result) result)) (defun wnnrpc-access (env path mode) "Check the accessibility of file in the environment ENV. Return 0 when the remote file (dictionary/frequency) of PATH on server can be accessed in mode MODE. Return Non-zero otherwise." (wnnrpc-call-with-environment env (result) (comm-format (u u u s) (wnn-const JS_ACCESS) env-id mode path) (comm-unpack (i) result) result)) (defun wnnrpc-mkdir (env path) "Create directory specified by PATH." (wnnrpc-call-with-environment env () (comm-format (u u s) (wnn-const JS_MKDIR) env-id path) (wnnrpc-get-result))) (defun wnnrpc-writable-dic-type (env fi rw) (let ((server (wnnenv-get-server-type env))) (cond (fi (wnn-const WNN_FI_USER_DICT)) ((or (eq server 'cserver) (eq server 'tserver)) (wnn-const CWNN_REV_DICT)) ((eq rw 3) (wnn-const WNN_GROUP_DICT)) ((eq rw 4) (wnn-const WNN_MERGE_DICT)) (t (wnn-const WNN_REV_DICT))))) (defun wnnrpc-dic-file-create (env dicname type comment passwd hpasswd) "Create a dictionary on the server." (wnnrpc-call-with-environment env () (comm-format (u u s S s s u) (wnn-const JS_DIC_FILE_CREATE) env-id dicname comment passwd hpasswd type) (wnnrpc-get-result))) (defun wnnrpc-hindo-file-create (env fi dic-id freqname comment passwd) "Create a frequency file on the server." (wnnrpc-call-with-environment env () (comm-format (u u u s S s) (if fi (wnn-const JS_FI_HINDO_FILE_CREATE) (wnn-const JS_HINDO_FILE_CREATE)) env-id dic-id freqname comment passwd) (wnnrpc-get-result))) (defun wnnrpc-file-discard (env fid) "Discard a file specified by FID. Call this for already-opened file before remove and create new file." (wnnrpc-call-with-environment env () (comm-format (u u i) (wnn-const JS_FILE_DISCARD) env-id fid) (wnnrpc-get-result))) (defun wnnrpc-file-remove (proc filename passwd) "Remove the file." (comm-call-with-proc proc () (comm-format (u s s) (wnn-const JS_FILE_REMOVE) filename (or passwd "")) (wnnrpc-get-result))) (defun wnnrpc-set-conversion-parameter (env v) "Set conversion parameter." (wnnrpc-call-with-environment env () (comm-format (u u i i i i i i i i i i i i i i i i i) (wnn-const JS_PARAM_SET) env-id (aref v 0) (aref v 1) (aref v 2) (aref v 3) (aref v 4) (aref v 5) (aref v 6) (aref v 7) (aref v 8) (aref v 9) (aref v 10) (aref v 11) (aref v 12) (aref v 13) (aref v 14) (aref v 15) (aref v 16)) (wnnrpc-get-result))) (defun wnnrpc-set-conversion-env-param (env mask v) "Set Wnn6 conversion parameter." (wnnrpc-call-with-environment env () (comm-format (u u u i i i i i i i i i i i i i i i i i i) (wnn-const JS_SET_HENKAN_ENV) env-id mask (aref v 0) (aref v 1) (aref v 2) (aref v 3) (aref v 4) (aref v 5) (aref v 6) (aref v 7) (aref v 8) (aref v 9) (aref v 10) (aref v 11) (aref v 12) (aref v 13) (aref v 14) (aref v 15) (aref v 16) (aref v 17)) (wnnrpc-get-result))) (defun wnnrpc-temporary-dic-loaded (env) "Ask to the server whether the temporary dictionary is loaded or not. Return positive if loaded, zero if not, negative on failure." (wnnrpc-call-with-environment env () (comm-format (u u) (wnn-const JS_IS_LOADED_TEMPORARY_DIC) env-id) (wnnrpc-get-result))) (defun wnnrpc-temporary-dic-add (env reverse) "Add temporary dictionary on the server." (wnnrpc-call-with-environment env () (comm-format (u u u) (wnn-const JS_TEMPORARY_DIC_ADD) env-id (if reverse 1 0)) (wnnrpc-get-result))) (defun wnnrpc-receive-sho-bunsetsu-list (env n-bunsetsu) (let ((proc (wnnenv-get-proc env)) slist end start jiritsugo-end dic-no entry freq right-now hinshi status status-backward kangovect evaluation result source fuzokugo) (while (> n-bunsetsu 0) (comm-unpack (i i i i i i i i i i i i) end start jiritsugo-end dic-no entry freq right-now hinshi status status-backward kangovect evaluation) (setq slist (cons (wnn-bunsetsu-create env (1+ (- jiritsugo-end start)) dic-no entry freq right-now hinshi status status-backward kangovect evaluation) slist)) (setq n-bunsetsu (1- n-bunsetsu))) (prog1 (setq slist (nreverse slist)) (while slist (comm-unpack (S S S) result source fuzokugo) (wnn-bunsetsu-set-converted (car slist) result) (wnn-bunsetsu-set-yomi (car slist) source) (wnn-bunsetsu-set-fuzokugo (car slist) fuzokugo) (setq slist (cdr slist)))))) (defun wnnrpc-receive-dai-bunsetsu-list (env n-dai separate) (let ((proc (wnnenv-get-proc env)) n-bunstsu kanji-length dlist slist end start n-sho evaluation n retval) (comm-unpack (i i) n-bunstsu kanji-length) (while (> n-dai 0) (comm-unpack (i i i i) end start n-sho evaluation) (setq dlist (cons (cons n-sho evaluation) dlist) n-dai (1- n-dai))) (setq dlist (nreverse dlist) slist (wnnrpc-receive-sho-bunsetsu-list env n-bunstsu)) (if (null separate) (prog1 slist (while dlist (setq n (caar dlist)) (while (> n 0) (wnn-bunsetsu-set-dai-evaluation (car slist) (cdar dlist)) (wnn-bunsetsu-set-dai-continue (car slist) (> n 1)) (setq slist (cdr slist) n (1- n))) (setq dlist (cdr dlist)))) (while dlist (setq retval (cons slist retval) n (caar dlist)) (while (> n 1) (wnn-bunsetsu-set-dai-evaluation (car slist) (cdar dlist)) (wnn-bunsetsu-set-dai-continue (car slist) t) (setq slist (cdr slist) n (1- n))) (wnn-bunsetsu-set-dai-evaluation (car slist) (cdar dlist)) (wnn-bunsetsu-set-dai-continue (car slist) (wnn-bunsetsu-connect-next (car slist))) (setq slist (prog1 (cdr slist) (setcdr slist nil)) dlist (cdr dlist))) (nreverse retval)))) (defun wnnrpc-renbunsetsu-conversion (env yomi hinshi fuzokugo v) "Convert YOMI string into Kanji. HINSHI and FUZOKUGO are information of preceding bunsetsu." (wnnrpc-call-with-environment env () (comm-format (u u S i S i i i) (wnn-const JS_KANREN) env-id yomi hinshi fuzokugo (or v (wnn-const WNN_VECT_KANREN)) (if v (wnn-const WNN_VECT_KANREN) (wnn-const WNN_VECT_NO)) (wnn-const WNN_VECT_BUNSETSU)) (wnnrpc-get-result (wnnrpc-receive-dai-bunsetsu-list env result nil)))) (defun wnnrpc-fi-renbunsetsu-conversion (env yomi hinshi fuzokugo v context) "Convert YOMI string into Kanji. HINSHI and FUZOKUGO are information of preceding bunsetsu." (wnnrpc-call-with-environment env (result) (comm-format (u u S i S i i i i i i i S i i i i S) (wnn-const JS_FI_KANREN) env-id yomi hinshi fuzokugo (or v (wnn-const WNN_VECT_KANREN)) (if v (wnn-const WNN_VECT_KANREN) (wnn-const WNN_VECT_NO)) (wnn-const WNN_VECT_BUNSETSU) (wnn-context-dic-no (car context)) (wnn-context-entry (car context)) (wnn-context-jirilen (car context)) (wnn-context-hinshi (car context)) (wnn-context-fuzokugo (car context)) (wnn-context-dic-no (nth 1 context)) (wnn-context-entry (nth 1 context)) (wnn-context-jirilen (nth 1 context)) (wnn-context-hinshi (nth 1 context)) (wnn-context-fuzokugo (nth 1 context))) (setq result (wnnrpc-get-result (wnnrpc-receive-dai-bunsetsu-list env result nil))) (prog1 result (unless (numberp result) (wnn-bunsetsu-set-fi-rel (car result) (wnnrpc-get-fi-relation-data env)) (while result (wnn-bunsetsu-set-context (car result) context) (setq result (cdr result))))))) (defun wnnrpc-get-fi-relation-data (env) "Receive FI relation data from the server." (let ((proc (wnnenv-get-proc env)) fi-dic dic entry offset num result) (comm-unpack (i) num) (while (> num 0) (comm-unpack (i i i i) fi-dic dic entry offset) (setq result (cons (vector fi-dic dic entry offset -2 -4) result) num (1- num))) (nreverse result))) (defun wnnrpc-tanbunsetsu-conversion (env yomi hinshi fuzoku v) "" (wnnrpc-call-with-environment env (kanji-length) (comm-format (u u S i S i i) (wnn-const JS_KANTAN_SHO) env-id yomi hinshi fuzoku (or v (wnn-const WNN_VECT_KANTAN)) (if v (wnn-const WNN_VECT_KANTAN) (wnn-const WNN_VECT_NO))) (wnnrpc-get-result (comm-unpack (u) kanji-length) ; ignore kanji-length (wnnrpc-receive-sho-bunsetsu-list env result)))) (defun wnnrpc-get-bunsetsu-candidates (env yomi hinshi fuzoku v) "" (wnnrpc-call-with-environment env (kanji-length) (comm-format (u u S i S i i) (wnn-const JS_KANZEN_SHO) env-id yomi hinshi fuzoku (or v (wnn-const WNN_VECT_KANZEN)) (if v (wnn-const WNN_VECT_KANZEN) (wnn-const WNN_VECT_NO))) (wnnrpc-get-result (comm-unpack (u) kanji-length) ; ignore kanji-length (mapcar (lambda (b) (wnn-bunsetsu-set-dai-continue b (wnn-bunsetsu-connect-next b)) (list b)) (wnnrpc-receive-sho-bunsetsu-list env result))))) (defun wnnrpc-daibunsetsu-conversion (env yomi hinshi fuzoku v) "" (wnnrpc-call-with-environment env (n-sho-bunsetsu kanji-size) (comm-format (u u S i S i i) (wnn-const JS_KANTAN_DAI) env-id yomi hinshi fuzoku (or v (wnn-const WNN_VECT_KANTAN)) (if v (wnn-const WNN_VECT_KANTAN) (wnn-const WNN_VECT_NO))) (wnnrpc-get-result (wnnrpc-receive-dai-bunsetsu-list env result nil)))) (defun wnnrpc-get-daibunsetsu-candidates (env yomi hinshi fuzoku v) "" (wnnrpc-call-with-environment env (n-sho-bunsetsu kanji-size) (comm-format (u u S i S i i) (wnn-const JS_KANZEN_DAI) env-id yomi hinshi fuzoku (or v (wnn-const WNN_VECT_KANZEN)) (if v (wnn-const WNN_VECT_KANZEN) (wnn-const WNN_VECT_NO))) (wnnrpc-get-result (wnnrpc-receive-dai-bunsetsu-list env result t)))) (defun wnnrpc-set-frequency (env dicno entry ima hindo) "" (wnnrpc-call-with-environment env () (comm-format (u u i i i i) (wnn-const JS_HINDO_SET) env-id dicno entry ima hindo) (wnnrpc-get-result))) (defun wnnrpc-set-fi-priority (env fi-rel) "" (wnnrpc-call-with-environment env () (progn (comm-format (u u u) (wnn-const JS_SET_FI_PRIORITY) env-id (length fi-rel)) (while fi-rel (comm-format (i i i i i i) (aref (car fi-rel) 0) (aref (car fi-rel) 1) (aref (car fi-rel) 2) (aref (car fi-rel) 3) (aref (car fi-rel) 4) (aref (car fi-rel) 5)) (setq fi-rel (cdr fi-rel)))) (wnnrpc-get-result))) (defun wnnrpc-optimize-fi (env context) "" (wnnrpc-call-with-environment env (c) (progn (comm-format (u u u) (wnn-const JS_OPTIMIZE_FI) env-id (length context)) (while context (setq c (car context) context (cdr context)) (comm-format (i i i i i S) (wnn-context-dic-no c) (wnn-context-entry c) (wnn-context-right-now c) (wnn-context-freq c) (wnn-context-length c) (concat (wnn-context-converted c) (wnn-context-fuzokugo c))))) (wnnrpc-get-result))) (defun wnnrpc-close (proc) "" (comm-call-with-proc proc () (comm-format (u) (wnn-const JS_CLOSE)) (wnnrpc-get-result))) (defun wnnrpc-env-exist (proc envname) "" (comm-call-with-proc proc (result) (comm-format (u s) (wnn-const JS_ENV_EXIST) envname) (comm-unpack (i) result) result)) (defun wnnrpc-make-env-sticky (env) "" (wnnrpc-call-with-environment env () (comm-format (u u) (wnn-const JS_ENV_STICKY) env-id) (wnnrpc-get-result))) (defun wnnrpc-make-env-unsticky (env) "" (wnnrpc-call-with-environment env () (comm-format (u u) (wnn-const JS_ENV_UNSTICKY) env-id) (wnnrpc-get-result))) (defun wnnrpc-disconnect (env) "" (wnnrpc-call-with-environment env () (comm-format (u u) (wnn-const JS_DISCONNECT) env-id) (wnnrpc-get-result))) (defun wnnrpc-add-word (env dictionary yomi kanji comment hinshi initial-freq) "" (wnnrpc-call-with-environment env () (comm-format (u u u S S S u u) (wnn-const JS_WORD_ADD) env-id dictionary yomi kanji comment hinshi initial-freq) (wnnrpc-get-result))) (defun wnnrpc-auto-learning (env type yomi kanji comment hinshi initial-freq) "" (wnnrpc-call-with-environment env () (comm-format (u u u S S S u u) (wnn-const JS_AUTOLEARNING_WORD_ADD) env-id type yomi kanji comment hinshi initial-freq) (wnnrpc-get-result))) (defun wnnrpc-temporary-learning (env yomi kanji comment hinshi initial-freq) "" (wnnrpc-call-with-environment env () (comm-format (u u S S S u u) (wnn-const JS_AUTOLEARNING_WORD_ADD) env-id yomi kanji comment hinshi initial-freq) (wnnrpc-get-result))) (defun wnnrpc-get-dictionary-list-with-environment (env) "" (wnnrpc-call-with-environment env (n-dic) (comm-format (u u) (wnn-const JS_DIC_LIST) env-id) (comm-unpack (i) n-dic) (wnnrpc-receive-dictionary-list proc n-dic))) (defun wnnrpc-get-fi-dictionary-list-with-environment (env mask) "" (wnnrpc-call-with-environment env (n-dic) (comm-format (u u u) (wnn-const JS_FI_DIC_LIST) env-id mask) (comm-unpack (i) n-dic) (wnnrpc-receive-dictionary-list proc n-dic))) (defun wnnrpc-receive-dictionary-list (proc n-dic) (let (entry dic freq dic-mode freq-mode enable-flag nice rev comment dicname freqname dic-passwd freq-passwd type gosuu dic-local-flag freq-local-flag retval) (while (> n-dic 0) (comm-unpack (i i i i i i i i S s s s s i i i i) entry dic freq dic-mode freq-mode enable-flag nice rev comment dicname freqname dic-passwd freq-passwd type gosuu dic-local-flag freq-local-flag) (setq retval (cons (vector entry dic freq dic-mode freq-mode enable-flag nice rev comment dicname freqname dic-passwd freq-passwd type gosuu dic-local-flag freq-local-flag) retval) n-dic (1- n-dic))) (nreverse retval))) (defsubst wnndic-get-id (dic) (aref dic 0)) (defsubst wnndic-get-comment (dic) (aref dic 8)) (defsubst wnndic-get-dictname (dic) (aref dic 9)) (defun wnnrpc-get-writable-dictionary-id-list (env) "" (wnnrpc-call-with-environment env (dic-list dic) (comm-format (u u i) (wnn-const JS_HINSI_DICTS) env-id -1) (wnnrpc-get-result (while (> result 0) (comm-unpack (i) dic) (setq dic-list (nconc dic-list (list dic)) result (1- result))) dic-list))) (defun wnnrpc-get-hinshi-list (env dic name) "" (wnnrpc-call-with-environment env (hinshi hinshi-list str-size) (comm-format (u u u S) (wnn-const JS_HINSI_LIST) env-id dic name) (wnnrpc-get-result (comm-unpack (u) str-size) ; ignore (while (> result 0) (comm-unpack (S) hinshi) (setq hinshi-list (nconc hinshi-list (list hinshi)) result (1- result))) hinshi-list))) (defun wnnrpc-hinshi-number (proc name) "" (wnnrpc-call-with-proc proc () (comm-format (u S) (wnn-const JS_HINSI_NUMBER) name) (wnnrpc-get-result))) (defun wnnrpc-get-conversion-parameter (env) "" (wnnrpc-call-with-environment env (n nsho p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15) (comm-format (u u) (wnn-const JS_PARAM_GET) env-id) (wnnrpc-get-result (comm-unpack (i i i i i i i i i i i i i i i i i) n nsho p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15) (vector n nsho p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15)))) (defun wnnrpc-get-conversion-env-param (env) "" (wnnrpc-call-with-environment env (p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18) (comm-format (u u) (wnn-const JS_GET_HENKAN_ENV) env-id) (wnnrpc-get-result (comm-unpack (i i i i i i i i i i i i i i i i i i) p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18) (vector p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18)))) (defun wnnrpc-file-loaded (proc path) "" (comm-call-with-proc proc (result) (comm-format (u s) (wnn-const JS_FILE_LOADED) path) (comm-unpack (i) result) result)) (defun wnnrpc-write-file (env fid filename) (wnnrpc-call-with-environment env () (comm-format (u u u s) (wnn-const JS_FILE_WRITE) env-id fid filename) (wnnrpc-get-result))) (defun wnnrpc-get-fuzokugo-file (env) "" (wnnrpc-call-with-environment env () (comm-format (u u) (wnn-const JS_FUZOKUGO_GET) env-id) (wnnrpc-get-result))) (defsubst wnnrpc-receive-file-list (proc) (let ((i 0) flist nfiles fid local ref-count type name) (comm-unpack (i) nfiles) (while (> nfiles 0) (comm-unpack (i i i i s) fid local ref-count type name) (setq flist (nconc flist (list (vector fid local ref-count type name))) nfiles (1- nfiles))) flist)) (defun wnnrpc-get-file-list (proc) "" (comm-call-with-proc proc () (comm-format (u) (wnn-const JS_FILE_LIST_ALL)) (wnnrpc-receive-file-list proc))) (defun wnnrpc-get-file-list-with-env (env) "" (wnnrpc-call-with-environment env () (comm-format (u u) (wnn-const JS_FILE_LIST) env-id) (wnnrpc-receive-file-list proc))) (defun wnnrpc-file-attribute (env path) "3: dictionary, 4: hindo file, 5: fuzokugo-file" (wnnrpc-call-with-environment env (result) (comm-format (u u s) (wnn-const JS_FILE_STAT) env-id path) (comm-unpack (i) result) result)) (defun wnnrpc-get-file-info (env fid) "" (wnnrpc-call-with-environment env (name local ref-count type) (comm-format (u u u) (wnn-const JS_FILE_INFO) env-id fid) (wnnrpc-get-result (comm-unpack (s i i i) name local ref-count type) (vector name local ref-count type)))) (defmacro wnnrpc-receive-vector (n) `(let ((v (make-vector ,n -1)) (i 0) j) (while (< i ,n) (comm-unpack (i) j) (aset v i j) (setq i (1+ i))) v)) (defun wnnrpc-who (proc) "" (comm-call-with-proc proc (who socket username hostname) (comm-format (u) (wnn-const JS_WHO)) (wnnrpc-get-result (while (> result 0) (comm-unpack (i s s) socket username hostname) (setq who (nconc who (list (vector socket username hostname (wnnrpc-receive-vector (wnn-const WNN_MAX_ENV_OF_A_CLIENT))))) result (1- result))) who))) (defun wnnrpc-get-env-list (proc) (comm-call-with-proc proc (envs id name count fuzokugo dic-max) (comm-format (u) (wnn-const JS_ENV_LIST)) (wnnrpc-get-result (while (> result 0) (comm-unpack (i s i i i) id name count fuzokugo dic-max) (setq envs (nconc envs (list (vector id name count fuzokugo dic-max (wnnrpc-receive-vector (wnn-const WNN_MAX_DIC_OF_AN_ENV)) (wnnrpc-receive-vector (wnn-const WNN_MAX_FILE_OF_AN_ENV))))) result (1- result))) envs))) (defun wnnrpc-kill (proc) "" (comm-call-with-proc proc (result) (comm-format (u) (wnn-const JS_KILL)) (comm-unpack (i) result) result)) (defun wnnrpc-delete-dictionary (env dic) "" (wnnrpc-call-with-environment env () (comm-format (u u u) (wnn-const JS_DIC_DELETE) env-id dic) (wnnrpc-get-result))) (defun wnnrpc-set-flag-on-dictionary (env dic flag) "" (wnnrpc-call-with-environment env () (comm-format (u u u u) (wnn-const JS_DIC_USE) env-id dic flag) (wnnrpc-get-result))) (defun wnnrpc-get-dictionary-list (proc) "" (wnnrpc-call-with-proc proc (n-dic) (comm-format (u) (wnn-const JS_DIC_LIST_ALL)) (comm-unpack (i) n-dic) (wnnrpc-receive-dictionary-list proc n-dic))) (defun wnnrpc-delete-word (env dic entry) "" (wnnrpc-call-with-environment env () (comm-format (u u u u) (wnn-const JS_WORD_DELETE) env-id dic entry) (wnnrpc-get-result))) (defun wnnrpc-receive-word (proc yomi) (let (dic serial hinshi hindo right-now internal-hindo internal-right-now kanji comment l l1) (comm-unpack (i) dic) (while (>= dic 0) (comm-unpack (i i i i i i) serial hinshi hindo right-now internal-hindo internal-right-now) (setq l (cons (vector dic serial hinshi hindo right-now internal-hindo internal-right-now yomi nil nil) l)) (comm-unpack (i) dic)) (setq l (nreverse l) l1 l) (while l1 (comm-unpack (S S) kanji comment) (aset (car l1) 8 kanji) (aset (car l1) 9 comment) (setq l1 (cdr l1))) l)) (defun wnnrpc-search-word-in-dictionary (env dic yomi) "" (wnnrpc-call-with-environment env (n-entries len) (comm-format (u u u S) (wnn-const JS_WORD_SEARCH) env-id dic yomi) (comm-unpack (u u) n-entries len) ; ignore (wnnrpc-receive-word proc yomi))) (defun wnnrpc-search-word (env yomi) "" (wnnrpc-call-with-environment env (n-entries len) (comm-format (u u S) (wnn-const JS_WORD_SEARCH_BY_ENV) env-id yomi) (comm-unpack (u u) n-entries len) ; ignore (wnnrpc-receive-word proc yomi))) (defun wnnrpc-get-word-info (env dic entry) "" (wnnrpc-call-with-environment env (n-entries len yomi) (comm-format (u u u u) (wnn-const JS_WORD_INFO) env-id dic entry) (wnnrpc-get-result (comm-unpack (S) yomi) (comm-unpack (u u) n-entries len) ; ignore (wnnrpc-receive-word proc yomi)))) (defun wnnrpc-set-comment-on-word (env dic entry comment) "" (wnnrpc-call-with-environment env () (comm-format (u u u u S) (wnn-const JS_WORD_COMMENT_SET) env-id dic entry comment) (wnnrpc-get-result))) (defun wnnrpc-get-dictionary-info (env dic) "" (wnnrpc-call-with-environment env () (comm-format (u u u) (wnn-const JS_DIC_INFO) env-id dic) (wnnrpc-get-result (wnnrpc-receive-dictionary-list proc 1)))) (defun wnnrpc-set-file-comment (env fid comment) "" (wnnrpc-call-with-environment env () (comm-format (u u u S) (wnn-const JS_FILE_COMMENT_SET) env-id fid comment) (wnnrpc-get-result))) (defun wnnrpc-hinshi-name (proc hinshi) "" (wnnrpc-call-with-proc proc () (comm-format (u u) (wnn-const JS_HINSI_NAME) hinshi) (wnnrpc-get-result (comm-unpack (S) result) result))) (defun wnnrpc-set-file-password (env fid which old new) "WHICH: 1: DIC, 2: HINDO, 3(0): Both" (wnnrpc-call-with-environment env () (comm-format (u u u u s s) (wnn-const JS_FILE_PASSWORD_SET) env-id fid which old new) (wnnrpc-get-result))) (defun wnnrpc-set-hinshi-table (env dic hinshi-table) "" (wnnrpc-call-with-environment env () (comm-format (u u u S) (wnn-const JS_HINSI_TABLE_SET) env-id dic hinshi-table) (wnnrpc-get-result))) (defmacro wnnrpc-with-temp-buffer (&rest body) `(with-temp-buffer (let ((coding-system-for-read 'binary) (coding-system-for-write 'binary)) (set-buffer-multibyte nil) ,@body))) (defmacro wnnrpc-with-write-file (filename error-handler &rest body) `(condition-case error (with-temp-file ,filename (let ((coding-system-for-read 'binary) (coding-system-for-write 'binary)) (set-buffer-multibyte nil) ,@body)) (file-error ,error-handler))) (defmacro wnnrpc-terminate-current-command (errno) `(progn (comm-call-with-proc-1 proc () (comm-format (i) (wnn-const WNN_NAK))) (- (wnn-const ,errno)))) (defun wnnrpc-get-local-filename (name) (if (and (string-match (wnn-const WNN_C_LOCAL) name) (string= (substring name 0 (match-beginning 0)) wnn-system-name)) (substring name (match-end 0)) name)) ;;
::= ( ) ;; ::= string ;; ::= string (defun wnnrpc-scan-file-header () (let ((proc nil) type uniq1 uniq2 passwd) (if (and (> (point-max) (wnn-const WNN_FILE_HEADER_LEN)) (equal (buffer-substring 1 (1+ (wnn-const WNN_FILE_STRING_LEN))) (wnn-const WNN_FILE_STRING))) (progn (goto-char (1+ (wnn-const WNN_FILE_STRING_LEN))) (comm-unpack (i v v v) type uniq1 (wnn-const WNN_UNIQ_LEN) uniq2 (wnn-const WNN_UNIQ_LEN) passwd (wnn-const WNN_PASSWD_LEN)) (list type uniq1 uniq2 passwd))))) (defun wnnrpc-get-file-header (filename) (wnnrpc-with-temp-buffer (if (null (file-readable-p filename)) (list nil (make-string (wnn-const WNN_UNIQ_LEN) 0) "" "") (insert-file-contents filename nil 0 (wnn-const WNN_FILE_HEADER_LEN)) (wnnrpc-scan-file-header)))) (defun wnnrpc-check-local-file (path &optional preserve) (let ((header (wnnrpc-get-file-header path))) (cond ((null header) (- (wnn-const WNN_NOT_A_FILE))) ((null (car header)) (if (file-exists-p path) (- (wnn-const WNN_OPENF_ERR)) (- (wnn-const WNN_NO_EXIST)))) (t (if (wnnrpc-check-inode header path) header (if preserve (- (wnn-const WNN_INODE_CHECK_ERROR)) (wnnrpc-change-file-uniq header path) (wnnrpc-check-local-file path t))))))) (defsubst wnnrpc-get-inode (uniq) (+ (lsh (aref uniq 8) 24) (lsh (aref uniq 9) 16) (lsh (aref uniq 10) 8) (aref uniq 11))) (defun wnnrpc-check-inode (header path) (let ((inode (nth 10 (file-attributes path)))) (and inode (= inode (wnnrpc-get-inode (nth 1 header)))))) (defun wnnrpc-make-uniq (attributes) (wnnrpc-with-temp-buffer (let ((ctime (nth 6 attributes)) (ino (nth 10 attributes)) (devno (nth 11 attributes))) (if (numberp devno) (comm-format (U i u V) ctime devno ino wnn-system-name (wnn-const WNN_HOST_LEN)) ;; Emacs 21 returns returns negative devno as 16 bits uint pair (comm-format (U U u V) ctime (list (car devno) (cdr devno)) ino wnn-system-name (wnn-const WNN_HOST_LEN))) (buffer-string)))) (defun wnnrpc-change-file-uniq (header path &optional new) (wnnrpc-with-write-file path nil (insert-file-contents path) (if (wnnrpc-scan-file-header) (let ((uniq (wnnrpc-make-uniq (file-attributes path)))) (goto-char (1+ (wnn-const WNN_FILE_STRING_LEN))) (delete-region (point) (1+ (wnn-const WNN_FILE_HEADER_LEN))) (comm-format (u v v v v) (car header) uniq (wnn-const WNN_UNIQ_LEN) (if new uniq (nth 1 header)) (wnn-const WNN_UNIQ_LEN) (nth 3 header) (wnn-const WNN_PASSWD_LEN) "" (wnn-const WNN_FILE_HEADER_PAD)) t)))) (defun wnnrpc-check-passwd (proc passwd header) (let ((env-id -1)) (unwind-protect (if (< (setq env-id (wnnrpc-connect proc "")) 0) -1 (wnnrpc-call-with-environment (wnnenv-create proc env-id) (file-id) (comm-format (u u v) (wnn-const JS_FILE_SEND) env-id (nth 1 header) (wnn-const WNN_UNIQ_LEN)) (comm-unpack (i) file-id) (if (>= file-id 0) (progn (ignore (wnnrpc-get-result)) ; ignore result code (- (wnn-const WNN_FILE_IN_USE))) (wnnrpc-get-result (comm-call-with-proc-1 proc () (comm-format (s B) (concat wnn-system-name "!TEMPFILE") (wnnrpc-make-dummy-dictionary header)) (wnnrpc-get-result (let ((egg-fixed-euc (list egg-fixed-euc egg-fixed-euc))) (wnnrpc-set-dictionary (wnnenv-create proc env-id) result -1 1 t t passwd "" nil)))))))) (if (>= env-id 0) (wnnrpc-disconnect (wnnenv-create proc env-id)))))) (defun wnnrpc-make-dummy-dictionary (header) (wnnrpc-with-temp-buffer (comm-format (v u v v v v u v) (wnn-const WNN_FILE_STRING) (wnn-const WNN_FILE_STRING_LEN) (wnn-const WNN_FT_DICT_FILE) (nth 1 header) (wnn-const WNN_UNIQ_LEN) (nth 1 header) (wnn-const WNN_UNIQ_LEN) (nth 3 header) (wnn-const WNN_PASSWD_LEN) "" (wnn-const WNN_FILE_HEADER_PAD) (wnn-const WNN_REV_DICT) "" (wnn-const WNN_FILE_BODY_PAD)) (buffer-string))) (defun wnnrpc-file-loaded-local (proc path &optional preserve) "" (let ((header (wnnrpc-check-local-file path preserve))) (if (numberp header) -1 (comm-call-with-proc proc (result) (comm-format (u v) (wnn-const JS_FILE_LOADED_LOCAL) (nth 1 header) (wnn-const WNN_UNIQ_LEN)) (comm-unpack (i) result) result)))) (defun wnnrpc-file-receive (env fid local-filename) "" (condition-case err (wnnrpc-call-with-environment env (filename) (comm-format (u u u) (wnn-const JS_FILE_RECEIVE) env-id fid) (comm-unpack (s) filename) (if (null local-filename) (setq local-filename (wnnrpc-get-local-filename filename))) (let ((header (wnnrpc-get-file-header local-filename)) contents) (if (null header) (wnnrpc-terminate-current-command WNN_NOT_A_FILE) (comm-call-with-proc-1 proc () (comm-format (u v) (wnn-const WNN_ACK) (nth 1 header) (wnn-const WNN_UNIQ_LEN))) (wnnrpc-get-result (cond ((= result 0) 0) ((null (file-writable-p local-filename)) (wnnrpc-terminate-current-command WNN_FILE_WRITE_ERROR)) (t (wnnrpc-with-write-file local-filename (- (wnn-const WNN_FILE_WRITE_ERROR)) (comm-call-with-proc proc () (comm-format (u) (wnn-const WNN_ACK)) (comm-unpack (B) contents)) (insert contents) (if (= result 2) (insert-file-contents local-filename nil (1- (point)))) (save-excursion (set-buffer (process-buffer proc)) (wnnrpc-get-result))))))))) ((quit error) (wnnrpc-call-with-environment env () (comm-format (i) (wnn-const WNN_NAK))) (signal (car err) (cdr err))))) (defun wnnrpc-file-send (env filename) "" (let ((header (wnnrpc-check-local-file filename))) (if (numberp header) header (condition-case err (wnnrpc-call-with-environment env (file-id) (comm-format (u u v) (wnn-const JS_FILE_SEND) env-id (nth 1 header) (wnn-const WNN_UNIQ_LEN)) (comm-unpack (i) file-id) (if (>= file-id 0) (wnnrpc-get-result (wnnenv-set-client-file env filename) file-id) (wnnrpc-get-result (comm-call-with-proc-1 proc () (comm-format (s B) (concat wnn-system-name "!" filename) (wnnrpc-with-temp-buffer (insert-file-contents filename) (buffer-string))) (wnnrpc-get-result (wnnenv-set-client-file env filename) result))))) ((quit error) (wnnrpc-call-with-environment env () (comm-format (s B B B B B B) "" "" "" "" "" "" "")) (signal (car err) (cdr err))))))) (defun wnnrpc-file-remove-client (proc name passwd) (let (header) (cond ((/= (wnnrpc-file-loaded-local proc name) -1) (- (wnn-const WNN_FILE_IN_USE))) ((null (file-readable-p name)) (- (wnn-const WNN_FILE_READ_ERROR))) ((null (numberp (car (setq header (wnnrpc-get-file-header name))))) (- (wnn-const WNN_NOT_A_FILE))) ((< (wnnrpc-check-passwd proc passwd header) 0) (- (wnn-const WNN_INCORRECT_PASSWD))) (t (condition-case nil (progn (delete-file name) 0) (error (- (wnn-const WNN_UNLINK)))))))) (defun wnnrpc-dic-file-create-client (env dicname type comment passwd hpasswd) (if (and (null (file-exists-p dicname)) (file-writable-p dicname) (or (eq type (wnn-const WNN_REV_DICT)) (eq type (wnn-const CWNN_REV_DICT)) (eq type (wnn-const BWNN_REV_DICT)) (eq type (wnn-const WNN_UD_DICT)) (and (wnnenv-is-wnn6 env) (eq type (wnn-const WNN_FI_USER_DICT)))) (wnnrpc-create-and-move-to-client env nil dicname type comment passwd hpasswd)) 0 (- (wnn-const WNN_FILE_CREATE_ERROR)))) (defun wnnrpc-hindo-file-create-client (env fi dic-id freqname comment passwd) (if (and (null (file-exists-p freqname)) (file-writable-p freqname) (wnnrpc-create-and-move-to-client env dic-id freqname fi comment passwd nil)) 0 (- (wnn-const WNN_FILE_CREATE_ERROR)))) (defun wnnrpc-make-temp-name (env) (let ((n 0) (temp-form "usr/temp")) (while (= (wnnrpc-access env (concat temp-form (number-to-string n)) 0) 0) (setq n (1+ n))) (concat temp-form (number-to-string n)))) (defun wnnrpc-create-and-move-to-client (env dic-id filename type comment passwd hpasswd) (let ((tempfile (wnnrpc-make-temp-name env)) (created -1) (fid -1)) (unwind-protect (progn (if (numberp type) (setq created (wnnrpc-dic-file-create env tempfile type comment passwd hpasswd)) (setq created (wnnrpc-hindo-file-create env type dic-id tempfile comment passwd))) (if (and (>= created 0) (>= (setq fid (wnnrpc-file-read env tempfile)) 0) (>= (wnnrpc-file-receive env fid filename) 0)) (wnnrpc-change-file-uniq (wnnrpc-get-file-header filename) filename t) (condition-case nil (delete-file filename) (error)) nil)) (if (>= fid 0) (wnnrpc-file-discard env fid)) (if (>= created 0) (wnnrpc-file-remove (wnnenv-get-proc env) tempfile passwd))))) (defun wnnrpc-read-passwd-file (filename) (cond ((null filename) "") ((null (file-readable-p filename)) (- (wnn-const WNN_FILE_READ_ERROR))) (t (wnnrpc-with-temp-buffer (insert-file-contents filename nil 0 (1- (wnn-const WNN_PASSWD_LEN))) (goto-char 1) (if (and (search-forward-regexp "[\0\n]" nil 0) (= (preceding-char) 0)) (backward-char)) (buffer-substring 1 (point)))))) ;;; egg/wnnrpc.el ends here egg-4.2.0/ATTIC/eggrc000066400000000000000000000274601252027163000141440ustar00rootroot00000000000000;;; eggrc --- EGG Input Method Startup File -*- emacs-lisp -*- ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (defun wnn4-jserver-setup () (wnn-define-environment nil) (wnn-set-fuzokugo "pubdic/full.fzk") (wnn-add-dict "pubdic/kihon.dic" '("kihon.h") 5 nil t) (wnn-add-dict "pubdic/setsuji.dic" '("setsuji.h") 5 nil t) (wnn-add-dict "pubdic/koyuu.dic" '("koyuu.h") 1 nil t) (wnn-add-dict "pubdic/chimei.dic" '("chimei.h") 1 nil t) (wnn-add-dict "pubdic/jinmei.dic" '("jinmei.h") 1 nil t) (wnn-add-dict "pubdic/special.dic" '("special.h") 5 nil t) (wnn-add-dict "pubdic/computer.dic" '("computer.h") 5 nil t) (wnn-add-dict "pubdic/symbol.dic" '("symbol.h") 1 nil t) (wnn-add-dict "pubdic/tankan.dic" nil 1 nil nil) (wnn-add-dict "pubdic/bio.dic" '("bio.h") 1 nil t) (wnn-add-dict '("ud") nil 5 t t) (wnn-add-dict "wnncons/tankan2.dic" nil 1 nil nil) (wnn-add-dict "wnncons/tankan3.dic" nil 1 nil nil) ; (wnn-add-dict "gerodic/g-jinmei.dic" '("g-jinmei.h") 1 nil t) (wnn-set-param 2 10 2 45 100 200 5 1 40 -100 200 -100 200 80 200 200 200) (wnn-define-environment t) (wnn-set-fuzokugo "pubdic/full.fzk") (wnn-add-dict "pubdic/kihon.dic" '("kihon.h") 5 nil t) (wnn-add-dict "pubdic/setsuji.dic" '("setsuji.h") 5 nil t) (wnn-add-dict "pubdic/koyuu.dic" '("koyuu.h") 1 nil t) (wnn-add-dict "pubdic/chimei.dic" '("chimei.h") 1 nil t) (wnn-add-dict "pubdic/jinmei.dic" '("jinmei.h") 1 nil t) (wnn-add-dict "pubdic/special.dic" '("special.h") 5 nil t) (wnn-add-dict "pubdic/computer.dic" '("computer.h") 5 nil t) (wnn-add-dict "pubdic/symbol.dic" '("symbol.h") 1 nil t) (wnn-add-dict "pubdic/tankan.dic" nil 1 nil nil) (wnn-add-dict "pubdic/bio.dic" '("bio.h") 1 nil t) (wnn-add-dict '("ud") nil 5 t t) (wnn-add-dict "wnncons/tankan2.dic" nil 1 nil nil) (wnn-add-dict "wnncons/tankan3.dic" nil 1 nil nil) ; (wnn-add-dict "gerodic/g-jinmei.dic" '("g-jinmei.h") 1 nil t) (wnn-set-param 2 10 2 45 100 200 5 1 40 -100 200 -100 200 80 200 200 200)) (defun wnn6-jserver-setup () (wnn-define-environment nil) (wnn-set-fuzokugo "iwanami/kougo.fzk") (wnn-add-fisys-dict "iwanami/fisd" '("fisd.h") t) (wnn-add-fiusr-dict '("fiud") nil t nil) (wnn-add-dict "iwanami/kihon.dic" '("kihon.h") 6 nil t) (wnn-add-dict "iwanami/symbol.dic" '("symbol.h") 1 nil t) (wnn-add-dict "iwanami/tankan.dic" nil 1 nil nil) (wnn-add-dict "iwanami/tankan2.dic" nil 1 nil nil) (wnn-add-dict "iwanami/tel.dic" nil 1 nil nil) (wnn-add-dict "iwanami/zip.dic" nil 1 nil nil) (wnn-add-dict '("ud") nil 15 t t) ; (wnn-add-dict "wnncons/tankan2.dic" nil 1 nil nil) ; (wnn-add-dict "wnncons/tankan3.dic" nil 1 nil nil) (wnn-set-param 5 10 2 45 0 80 5 1 20 0 400 -100 400 80 200 2 200) (wnn-add-notrans-dict '("katakana") 15 t) (wnn-add-bmodify-dict '("bunsetsu") 15 t) (wnn-set-last-is-first-mode t) (wnn-set-complex-conv-mode nil) ; (wnn-set-okuri-flag -1) (wnn-set-prefix-flag 0) (wnn-set-okuri-learn-mode t) (wnn-set-prefix-learn-mode t) (wnn-set-suffix-learn-mode t) (wnn-set-common-learn-mode t) (wnn-set-yuragi-mode nil) (wnn-set-freq-func-mode 4) ; (wnn-set-numeric-mode -12) ; (wnn-set-alphabet-mode -30) ; (wnn-set-symbol-mode -40) (wnn-define-environment t) (wnn-set-fuzokugo "iwanami/kougo.fzk") (wnn-add-dict '("ud") "" 15 t t) (wnn-set-param 2 10 2 45 1 80 5 1 50 -20 400 -10 100 -100 200 0 200)) (defun wnn7-jserver-setup () (wnn-define-environment nil) (wnn-set-fuzokugo "system/kougo.fzk") (wnn-add-fisys-dict "system/fisd" '("fisd.h") t) (wnn-add-fiusr-dict '("fiud") nil t nil) (wnn-add-dict "system/kihon.dic" '("kihon.h") 6 nil t) (wnn-add-dict "system/symbol.dic" '("symbol.h") 1 nil t) (wnn-add-dict "system/symbol_noat.dic" '("symbol_noat.h") 1 nil t) (wnn-add-dict "system/tel.dic" '("tel.h") 1 nil t) (wnn-add-dict "system/zip.dic" '("zip.h") 1 nil t) (wnn-add-dict "system/tankan.dic" nil 1 nil nil) (wnn-add-dict "system/tankan2.dic" nil 1 nil nil) (wnn-add-dict "system/ikeiji.dic" nil 1 nil nil) (wnn-add-dict "system/rensou.dic" nil 1 nil nil) (wnn-add-dict '("ud") nil 15 t t) (wnn-add-dict "option/jinmei.dic" '("jinmei.h") 1 nil t) (wnn-add-dict "option/chimei.dic" '("chimei.h") 1 nil t) (wnn-add-dict "option/address.dic" '("address.h") 1 nil t) (wnn-add-dict "option/station.dic" '("station.h") 1 nil t) (wnn-add-dict "option/kana_english.dic" '("kana_english.h")1 nil t) (wnn-add-dict "option/enterprise.dic" '("enterprise.h") 1 nil t) (wnn-add-dict "option/airport.dic" '("airport.h") 1 nil t) (wnn-add-dict "option/university.dic" '("university.h") 1 nil t) (wnn-add-dict "option/zoo.dic" '("zoo.h") 1 nil t) (wnn-add-dict "option/botanical_garden.dic" '("botanical_garden.h") 1 nil t) (wnn-add-dict "option/aquarium.dic" '("aquarium.h") 1 nil t) (wnn-add-dict "option/conveni.dic" '("conveni.h") 1 nil t) (wnn-add-dict "option/amusement.dic" '("amusement.h") 1 nil t) (wnn-set-param 5 10 2 45 0 80 5 1 20 0 400 -100 400 80 200 2 200) (wnn-add-notrans-dict '("katakana") 15 t) (wnn-add-bmodify-dict '("bunsetsu") 15 t) (wnn-set-last-is-first-mode t) (wnn-set-complex-conv-mode nil) ;; (wnn-set-okuri-flag -1) (wnn-set-prefix-flag 0) (wnn-set-okuri-learn-mode t) (wnn-set-prefix-learn-mode t) (wnn-set-suffix-learn-mode t) (wnn-set-common-learn-mode t) (wnn-set-yuragi-mode nil) (wnn-set-freq-func-mode 4) ;; (wnn-set-yosoku-learn t) ;; (wnn-set-yosoku-max-disp 10) ;; (wnn-set-yosoku-last-is-first t) ;; (wnn-set-boin-kabusoku t) ;; (wnn-set-shiin-choka t) ;; (wnn-set-n-choka t) ;; (wnn-set-nihongo-kosei t) ;; (wnn-set-numeric-mode -12) ;; (wnn-set-alphabet-mode -30) ;; (wnn-set-symbol-mode -40) (wnn-define-environment t) (wnn-set-fuzokugo "system/kougo.fzk") (wnn-add-dict "system/kihonR.dic" nil 1 nil nil) (wnn-add-dict "system/telR.dic" nil 1 nil nil) (wnn-add-dict "system/zipR.dic" nil 1 nil nil) (wnn-add-dict "system/tankanR.dic" nil 1 nil nil) (wnn-add-dict "system/tankan2R.dic" nil 1 nil nil) (wnn-add-dict "option/jinmeiR.dic" nil 1 nil nil) (wnn-add-dict "option/chimeiR.dic" nil 1 nil nil) (wnn-add-dict "option/addressR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/stationR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/kana_englishR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/enterpriseR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/airportR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/universityR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/zooR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/botanical_gardenR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/aquariumR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/conveniR.dic" nil 1 nil nil) ;;(wnn-add-dict "option/amusementR.dic" nil 1 nil nil) (wnn-add-dict '("ud") nil 15 t t) (wnn-set-param 2 10 2 45 1 80 5 1 50 -20 400 -10 100 -100 200 0 200)) (cond ((eq egg-backend-type 'wnn) (cond ((eq wnn-server-type 'jserver) (if wnn-wnn6-server (wnn6-jserver-setup) (wnn4-jserver-setup))) ((eq wnn-server-type 'cserver) (if wnn-use-bixing (progn (wnn-define-environment nil "Q") (wnn-set-fuzokugo "sys/full.con") (wnn-add-dict "sys/QianMa.dic" nil 1 nil nil) (wnn-define-environment nil "W") (wnn-set-fuzokugo "sys/full.con") (wnn-add-dict "sys/WuBi.dic" nil 1 nil nil))) (wnn-define-environment nil "PZ") (wnn-set-fuzokugo "sys/full.con") (wnn-add-dict "sys/level_1.dic" '("level_1.h") 4 nil t) (wnn-add-dict "sys/level_2.dic" '("level_2.h") 1 nil t) (wnn-add-dict "sys/basic.dic" '("basic.h") 7 nil t) (wnn-add-dict "sys/computer.dic" '("computer.h") 4 nil t) (wnn-add-dict "sys/cwnn.dic" '("cwnn.h") 4 nil t) (wnn-add-dict '("ud") nil 5 t t) (wnn-set-param 1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0) (if wnn-use-bixing (progn (wnn-define-environment t "Q") (wnn-set-fuzokugo "sys/full.conR") (wnn-add-dict "sys/QianMa.dic" nil 1 nil nil) (wnn-define-environment t "W") (wnn-set-fuzokugo "sys/full.conR") (wnn-add-dict "sys/WuBi.dic" nil 1 nil nil))) (wnn-define-environment t "PZ") (wnn-set-fuzokugo "sys/full.conR") (wnn-add-dict "sys/level_1.dic" '("level_1.h") 4 nil t) (wnn-add-dict "sys/level_2.dic" '("level_2.h") 1 nil t) (wnn-add-dict "sys/basic.dic" '("basic.h") 7 nil t) (wnn-add-dict "sys/computer.dic" '("computer.h") 4 nil t) (wnn-add-dict "sys/cwnn.dic" '("cwnn.h") 4 nil t) (wnn-add-dict '("ud") nil 5 t t) (wnn-set-param 1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0)) ((eq wnn-server-type 'tserver) (wnn-define-environment nil "PZ") (wnn-set-fuzokugo "sys/full.con") (wnn-add-dict "sys/cns_ch.dic" '("cns_ch.h") 4 nil t) (wnn-add-dict "sys/cns_wd.dic" '("cns_wd.h") 1 nil t) (wnn-add-dict '("ud") nil 5 t t) (wnn-set-param 1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0) (wnn-define-environment t "PZ") (wnn-set-fuzokugo "sys/full.conR") (wnn-add-dict "sys/cns_ch.dic" '("cns_ch.h") 4 nil t) (wnn-add-dict "sys/cns_wd.dic" '("cns_wd.h") 1 nil t) (wnn-add-dict '("ud") nil 5 t t) (wnn-set-param 1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0)) ((eq wnn-server-type 'kserver) (wnn-define-environment nil) (wnn-set-fuzokugo "sys/full.fzk") (wnn-add-dict "sys/hword.dic" '("hword.h") 5 nil t) (wnn-add-dict "sys/single.dic" '("single.h") 1 nil t) (wnn-add-dict '("ud") nil 2 t t) (wnn-set-param 2 5 2 45 200 80 5 1 40 0 400 -100 400 80 200 2 200) (wnn-define-environment t) (wnn-set-fuzokugo "sys/full.fzk") (wnn-add-dict "sys/hword.dic" '("hword.h") 5 nil t) (wnn-add-dict "sys/single.dic" '("single.h") 1 nil t) (wnn-add-dict '("ud") nil 2 t t) (wnn-set-param 2 5 2 45 200 80 5 1 40 0 400 -100 400 80 200 2 200)))) ((eq egg-backend-type 'canna) (canna-define-environment) (canna-add-dict "iroha" nil) (canna-add-dict "fuzokugo" nil) (canna-add-dict "hojomwd" nil) (canna-add-dict "hojoswd" nil) (canna-add-dict "user" t) (canna-define-environment "Bushu" 0 t) (canna-add-dict "bushu" nil)) ) egg-4.2.0/ATTIC/install-sh000077500000000000000000000127361252027163000151360ustar00rootroot00000000000000#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 egg-4.2.0/ATTIC/its-keydef.el000066400000000000000000000121461252027163000155130ustar00rootroot00000000000000;;; its-keydef.el ;; Copyright (C) 1999, 2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'cl)) (defvar its-zhuyin nil) (make-variable-buffer-local 'its-zhuyin) (put 'its-zhuyin 'permanent-local t) (defvar its-select-alist nil) (make-variable-buffer-local 'its-select-func-alist) (setq-default its-select-func-alist nil) (put 'its-select-alist 'permanent-local t) (defvar its-select-func-default-alist nil) (eval-when-compile (defmacro its-set-select-func-alist (list) `'(setq ,list (cons (cons lang func) (delq (assq lang ,list) ,list))))) (eval-and-compile (defun its-make-select-func (key1 key2 func file map &optional zhuyin) (setq func (intern (concat "its-select-" (symbol-name func))) file (intern (concat "its/" (symbol-name file))) map (intern (concat "its-" (symbol-name map) "-map"))) (cons `(defun ,func (&optional temporally mode-line-unchange) (interactive "P") (let ((inhibit-read-only t) (func ',func) lang) (if temporally (its-select-mode-temporally func) (require ',file) (cond ((its-in-fence-p) (its-input-end) (its-put-cursor t)) ((egg-conversion-fence-p) (egg-exit-conversion))) (setq its-current-select-func func its-current-map ',map lang (its-get-language ,map)) (when lang (setq its-current-language lang) ;; avoid overwriting when select temporally (when (and (null its-previous-select-func) (null (assq lang its-select-func-default-alist))) ,(its-set-select-func-alist its-select-func-alist) ,(its-set-select-func-alist its-select-func-default-alist))) ,(if zhuyin `(setq its-zhuyin ,(eq zhuyin 'T))) (if (null mode-line-unchange) (its-set-mode-line-title))))) `(,func ,(concat "\C-x\C-m" key1) ,(concat "\e" key2))))) (defmacro its-do-list-make-select-func (list) (let (funcs keydefs pair) (while list (setq pair (apply 'its-make-select-func (car list)) funcs (cons (car pair) funcs) keydefs (cons (cdr pair) keydefs) list (cdr list))) `(progn ,@funcs (defvar its-define-select-key-list ',keydefs)))) (defmacro its-add-select-funcs (list) (let (funcs keydefs pair) (while list (setq pair (apply 'its-make-select-func (car list)) funcs (cons (car pair) funcs) keydefs (cons (cdr pair) keydefs) list (cdr list))) `(progn ,@funcs (setq its-define-select-key-list (append ',keydefs its-define-select-key-list))))) (defun its-define-select-keys (map &optional fence) (let ((key-list its-define-select-key-list)) (while key-list (define-key map (nth 1 (car key-list)) (car (car key-list))) (if fence (define-key map (nth 2 (car key-list)) (car (car key-list)))) (setq key-list (cdr key-list))))) (its-do-list-make-select-func (("Q" "Q" upcase ascii up) ("q" "q" downcase ascii down) ("h" "\C-h" hiragana hira hira) ("k" "\C-k" katakana kata kata) ("x" "\C-x" hankaku-katakana hankata han-kata) ("Z" "Z" zenkaku-upcase zenkaku zenkaku-up) ("z" "z" zenkaku-downcase zenkaku zenkaku-down) ("\C-e" "\C-e" erpin-cn erpin erpin-cn NIL) ("\C-p" "\C-p" pinyin-cn pinyin pinyin-cn NIL) ("\C-z" "\C-z" zhuyin-cn zhuyin zhuyin-cn T) ("\C-q" "\C-q" qianma bixing qianma) ("\C-w" "\C-w" wubi bixing wubi) ("\C-u" "\C-u" quanjiao-upcase-cn quanjiao quanjiao-up-cn) ("\C-d" "\C-d" quanjiao-downcase-cn quanjiao quanjiao-down-cn) ("E" "E" erpin-tw erpin erpin-tw NIL) ("P" "P" pinyin-tw pinyin pinyin-tw NIL) ("C" "C" zhuyin-tw zhuyin zhuyin-tw T) ("U" "U" quanjiao-upcase-tw quanjiao quanjiao-up-tw) ("D" "D" quanjiao-downcase-tw quanjiao quanjiao-down-tw) ("H" "H" hangul hangul hangul) ("J" "J" jeonkak-upcase jeonkak jeonkak-up) ("j" "j" jeonkak-downcase jeonkak jeonkak-down) ("W" "W" jiskana jiskana jiskana) )) (provide 'its-keydef) egg-4.2.0/ATTIC/its/000077500000000000000000000000001252027163000137205ustar00rootroot00000000000000egg-4.2.0/ATTIC/its/aynu.el000066400000000000000000000325151252027163000152240ustar00rootroot00000000000000;;; its/aynu.el --- Aynu Katakana Input in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'its) (require 'cl)) (eval-when (compile) (defconst its-compaction-enable t)) (defvar its-aynu-enable-zenkaku-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Zenkaku alphabet") (defvar its-aynu-horizontal "$(O!<(B" "*-") ; "-" "$(O!=(B" (defvar its-aynu-period "$(O!#(B " "*.") ; "." "$(O!#(B" (defvar its-aynu-comma "$(O!$(B " "*,") ; "," "$(O!$(B" (defvar its-aynu-open-bracket "$(O!V(B" "*[") ; "$(O!N(B" (defvar its-aynu-close-bracket "$(O!W(B" "*]") ; "$(O!O(B" (defvar its-aynu-enable-double-n nil "*Enable \"nn\" input for \"$(O%s(B\"") (defvar its-aynu-kick-conversion-on-space nil "*Start conversion on SPACE") (eval-when-compile (defun its-define-state-aynu (input i-tail output o-tail otherwise) "Define following rules: INPUT + I-TAIL --> OUTPUT + O-TAIL INPUT + I-TAIL + ' --> OUTPUT + O-TAIL INPUT + I-TAIL + vowel --> (translate INPUT) + I-tail + vowel INPUT + I-TAIL + OTHERWISE (see `its-defrule-otherwise')." (let ((out (concat output o-tail)) state) (setq state (its-defrule (concat input i-tail) out)) (its-defrule (concat input i-tail "'") out) (its-defrule-otherwise state nil "[aiueo]" -2) (while otherwise (its-defrule-otherwise state (concat output (caar otherwise)) (nth 1 (car otherwise)) (nth 2 (car otherwise))) (setq otherwise (cdr otherwise))) (setq state (its-defrule (concat input i-tail "y") (concat out "$(O%#(B"))) (its-make-next-state state -1 out -1) (its-defrule-otherwise state out nil -2) (its-defrule-otherwise state nil "[u]" -3) )) (defconst its-aynu-tail-alist (let ((common '(("k" "$(O&n(B" (("$(O%C(B" "[k]" -1))) ("s" "$(O&o(B" (("$(O%C(B" "[s]" -1) (nil "[h]" -2))) ("p" "$(O&x(B" (("$(O%C(B" "[p]" -1))) ("m" "$(O&y(B" (("$(O%s(B" "[mp]" -1))) ("t" "$(O%C(B") ("y" "$(O%#(B") ("w" "$(O%%(B")))) `((?a ("h" "$(O&s(B") ("x" "$(O&s(B") ("r" "$(O&z(B") ,@common) (?i ("h" "$(O&t(B") ("x" "$(O&t(B") ("r" "$(O&{(B") ,@common) (?u ("h" "$(O&u(B") ("x" "$(O&u(B") ("r" "$(O&|(B") ,@common) (?e ("h" "$(O&v(B") ("x" "$(O&v(B") ("r" "$(O&}(B") ,@common) (?o ("h" "$(O&w(B") ("x" "$(O&w(B") ("r" "$(O&~(B") ,@common)))) (defun its-defrule-aynu (conso vowel output) (let ((input (concat conso vowel)) (tails (and vowel (cdr (assq (aref vowel 0) its-aynu-tail-alist))))) (its-defrule input output) (while tails (its-define-state-aynu input (caar tails) output (nth 1 (car tails)) (nth 2 (car tails))) (setq tails (cdr tails))))) (defmacro its-define-aynu (&rest rules) (let ((defs (list 'progn)) conso vowels output) (while rules (setq vowels '(nil "a" "i" "u" "e" "o") conso (caar rules) output (cdar rules) rules (cdr rules)) (while output (when (car output) (setq defs (cons `(its-defrule-aynu ,conso ,(car vowels) ,(car output)) defs))) (setq output (cdr output) vowels (cdr vowels)))) (nreverse defs))) (defun its-defrule-aynu-override-yu (conso) (let ((output (its-get-output (its-goto-state conso))) state) (its-defrule (concat conso "yu") (concat (its-get-output (its-goto-state (concat conso "i"))) "$(O%e!<(B")) (setq state (its-goto-state (concat conso "y"))) (its-set-output state (concat output "$(O%#(B")) (its-make-next-state state -1 output -1) (its-defrule-otherwise state output nil -2)))) (define-its-state-machine its-aynu-map "roma-aynu-kata" "$(O%"(B" Aynu "Map for Romaji-Aynu-Katakana translation. (Japanese)" (defconst its-zenkaku-escape "Z") ;; Escape character to Zenkaku inputs (defconst its-hankaku-escape "~") ;; Escape character to Hankaku inputs (its-defrule-select-mode-temporally "q" downcase) (its-defrule-select-mode-temporally "Q" zenkaku-downcase) (dolist (small '(("a" "$(O%!(B") ("i" "$(O%#(B") ("u" "$(O%%(B") ("e" "$(O%'(B") ("o" "$(O%)(B") ("ka" "$(O%u(B") ("ku" "$(O&n(B") ("ke" "$(O%v(B") ("si" "$(O&o(B") ("su" "$(O&p(B") ("tu" "$(O%C(B") ("to" "$(O&q(B") ("nu" "$(O&r(B") ("ha" "$(O&s(B") ("hi" "$(O&t(B") ("hu" "$(O&u(B") ("he" "$(O&v(B") ("ho" "$(O&w(B") ("pu" "$(O&x(B") ("mu" "$(O&y(B") ("ya" "$(O%c(B") ("yu" "$(O%e(B") ("yo" "$(O%g(B") ("ra" "$(O&z(B") ("ri" "$(O&{(B") ("ru" "$(O&|(B") ("re" "$(O&}(B") ("ro" "$(O&~(B") ("wa" "$(O%n(B"))) (its-defrule (concat "x" (car small)) (cadr small))) (its-define-aynu ("" nil "$(O%"(B" "$(O%$(B" "$(O%&(B" "$(O%((B" "$(O%*(B") ("k" "$(O&n(B" "$(O%+(B" "$(O%-(B" "$(O%/(B" "$(O%1(B" "$(O%3(B") ("g" "$(O%0(B" "$(O%,(B" "$(O%.(B" "$(O%0(B" "$(O%2(B" "$(O%4(B") ("s" "$(O&p(B" "$(O%5(B" "$(O%7(B" "$(O%9(B" "$(O%;(B" "$(O%=(B") ("z" nil "$(O%6(B" "$(O%8(B" "$(O%:(B" "$(O%<(B" "$(O%>(B") ("vs" nil nil nil nil "$(O%|(B" nil) ("sh" "$(O%7%c(B" "$(O%7%c(B" "$(O%7(B" "$(O%7%e(B" "$(O%7%'(B" "$(O%7%g(B") ("j" nil "$(O%8%c(B" "$(O%8(B" "$(O%8%e(B" "$(O%8%'(B" "$(O%8%g(B") ("t" "$(O%C(B" "$(O%?(B" "$(O%A(B" "$(O%H%%(B" "$(O%F(B" "$(O%H(B") ("vt" nil nil nil "$(O%}(B" nil "$(O%~(B") ("d" nil "$(O%@(B" "$(O%B(B" "$(O%E(B" "$(O%G(B" "$(O%I(B") ("c" "$(O%C(B" "$(O%A%c(B" "$(O%A(B" "$(O%A%e(B" "$(O%A%'(B" "$(O%A%g(B") ("ch" "$(O%C(B" "$(O%A%c(B" "$(O%A(B" "$(O%A%e(B" "$(O%A%'(B" "$(O%A%g(B") ("n" "$(O%s(B" "$(O%J(B" "$(O%K(B" "$(O%L(B" "$(O%M(B" "$(O%N(B") ("h" "$(O&s(B" "$(O%O(B" "$(O%R(B" "$(O%U(B" "$(O%X(B" "$(O%[(B") ("b" nil "$(O%P(B" "$(O%S(B" "$(O%V(B" "$(O%Y(B" "$(O%\(B") ("p" "$(O&x(B" "$(O%Q(B" "$(O%T(B" "$(O%W(B" "$(O%Z(B" "$(O%](B") ("m" "$(O&y(B" "$(O%^(B" "$(O%_(B" "$(O%`(B" "$(O%a(B" "$(O%b(B") ("y" "$(O%#(B" "$(O%d(B" "$(O%#(B" "$(O%f(B" "$(O%$%'(B" "$(O%h(B") ("r" "$(O&|(B" "$(O%i(B" "$(O%j(B" "$(O%k(B" "$(O%l(B" "$(O%m(B") ("w" "$(O%%(B" "$(O%o(B" "$(O%&%#(B" "$(O%%(B" "$(O%&%'(B" "$(O%&%)(B")) (dolist (yu '("k" "g" "s" "z" "sh" "j" "t" "d" "c" "ch" "n" "h" "b" "p" "m" "r")) (its-defrule-aynu-override-yu yu)) (its-defrule "kk" "$(O%C(B" -1) (its-defrule "ss" "$(O%C(B" -1) (its-defrule "pp" "$(O%C(B" -1) (its-defrule "vv" "$(O%C(B" -1) ;; SYMBOL Input (its-defrule "z1" "$(O!{(B") (its-defrule "z!" "$(O!|(B") (its-defrule "z2" "$(O"&(B") (its-defrule "z@" "$(O"'(B") (its-defrule "z3" "$(O"$(B") (its-defrule "z#" "$(O"%(B") (its-defrule "z4" "$(O""(B") (its-defrule "z$" "$(O"#(B") (its-defrule "z5" "$(O!~(B") (its-defrule "z%" "$(O"!(B") (its-defrule "z6" "$(O!y(B") (its-defrule "z^" "$(O!z(B") (its-defrule "z7" "$(O!}(B") (its-defrule "z&" "$(O!r(B") (its-defrule "z8" "$(O!q(B") (its-defrule "z*" "$(O!_(B") (its-defrule "z9" "$(O!i(B") (its-defrule "z(" "$(O!Z(B") (its-defrule "z0" "$(O!j(B") (its-defrule "z)" "$(O![(B") (its-defrule "z-" "$(O!A(B") (its-defrule "z_" "$(O!h(B") (its-defrule "z=" "$(O!b(B") (its-defrule "z+" "$(O!^(B") (its-defrule "z\\" "$(O!@(B") (its-defrule "z|" "$(O!B(B") (its-defrule "z`" "$(O!-(B") (its-defrule "z~" "$(O!/(B") (its-defrule "zq" "$(O!T(B") (its-defrule "zQ" "$(O!R(B") (its-defrule "zw" "$(O!U(B") (its-defrule "zW" "$(O!S(B") ; e (its-defrule "zr" "$(O!9(B") (its-defrule "zR" "$(O!8(B") (its-defrule "zt" "$(O!:(B") (its-defrule "zT" "$(O!x(B") ; y u i o (its-defrule "zp" "$(O")(B") (its-defrule "zP" "$(O",(B") (its-defrule "z[" "$(O!X(B") (its-defrule "z{" "$(O!L(B") (its-defrule "z]" "$(O!Y(B") (its-defrule "z}" "$(O!M(B") ; a (its-defrule "zs" "$(O!3(B") (its-defrule "zS" "$(O!4(B") (its-defrule "zd" "$(O!5(B") (its-defrule "zD" "$(O!6(B") (its-defrule "zf" "$(O!7(B") (its-defrule "zF" "$(O"*(B") (its-defrule "zg" "$(O!>(B") (its-defrule "zG" "$(O!=(B") (its-defrule "zh" "$(O"+(B") (its-defrule "zj" "$(O"-(B") (its-defrule "zk" "$(O",(B") (its-defrule "zl" "$(O"*(B") (its-defrule "z;" "$(O!+(B") (its-defrule "z:" "$(O!,(B") (its-defrule "z\'" "$(O!F(B") (its-defrule "z\"" "$(O!H(B") ; z (its-defrule "zx" ":-") (its-defrule "zX" ":-)") (its-defrule "zc" "$(O!;(B") (its-defrule "zC" "$(O!n(B") (its-defrule "zv" "$(O"((B") (its-defrule "zV" "$(O!`(B") (its-defrule "zb" "$(O!k(B") (its-defrule "zB" "$(O"+(B") (its-defrule "zn" "$(O!l(B") (its-defrule "zN" "$(O"-(B") (its-defrule "zm" "$(O!m(B") (its-defrule "zM" "$(O".(B") (its-defrule "z," "$(O!E(B") (its-defrule "z<" "$(O!e(B") (its-defrule "z." "$(O!D(B") (its-defrule "z>" "$(O!f(B") (its-defrule "z/" "$(O!&(B") (its-defrule "z?" "$(O!g(B") ) (define-its-state-machine-append its-aynu-map (if its-aynu-enable-double-n (its-defrule "nn" "$(O%s(B")) (its-defrule "-" its-aynu-horizontal) (its-defrule "." its-aynu-period) (its-defrule "," its-aynu-comma) (its-defrule "[" its-aynu-open-bracket) (its-defrule "]" its-aynu-close-bracket) (unless its-aynu-kick-conversion-on-space (its-defrule " " " ")) (if its-aynu-enable-zenkaku-alphabet (progn (its-defrule "1" "$(O#1(B") (its-defrule "2" "$(O#2(B") (its-defrule "3" "$(O#3(B") (its-defrule "4" "$(O#4(B") (its-defrule "5" "$(O#5(B") (its-defrule "6" "$(O#6(B") (its-defrule "7" "$(O#7(B") (its-defrule "8" "$(O#8(B") (its-defrule "9" "$(O#9(B") (its-defrule "0" "$(O#0(B") (its-defrule "!" "$(O!*(B") (its-defrule "@" "$(O!w(B") (its-defrule "#" "$(O!t(B") (its-defrule "$" "$(O!p(B") (its-defrule "%" "$(O!s(B") (its-defrule "^" "$(O!0(B") (its-defrule "&" "$(O!u(B") (its-defrule "*" "$(O!v(B") (its-defrule "(" "$(O!J(B") (its-defrule ")" "$(O!K(B") (its-defrule "=" "$(O!a(B") (its-defrule "`" "$(O!.(B") (its-defrule "\\" "$(O!o(B") (its-defrule "|" "$(O!C(B") (its-defrule "_" "$(O!2(B") (its-defrule "+" "$(O!\(B") (its-defrule "{" "$(O!P(B") (its-defrule "}" "$(O!Q(B") (its-defrule ":" "$(O!'(B") (its-defrule ";" "$(O!((B") (its-defrule "\"" "$(O!I(B") (its-defrule "'" "$(O!G(B") (its-defrule "<" "$(O!c(B") (its-defrule ">" "$(O!d(B") (its-defrule "?" "$(O!)(B") (its-defrule "/" "$(O!?(B")) (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "!" "!") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule ":" ":") (its-defrule ";" ";") (its-defrule "\"" "\"") (its-defrule "'" "'") (its-defrule "<" "<") (its-defrule ">" ">") (its-defrule "?" "?") (its-defrule "/" "/")))) (provide 'its/aynu) ;;; its/aynu.el ends here egg-4.2.0/ATTIC/its/bixing.el000066400000000000000000000260161252027163000155270ustar00rootroot00000000000000;;; its/bixing.el --- Bixing (stroke) Input in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'its) (require 'cl)) (defvar its-qianma-enable-quanjioao-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Quanjiao alphabet") (defvar its-qianma-open-braket "$A!8(B" "*[") ; "$A#[(B" (defvar its-qianma-close-braket "$A!9(B" "*]") ; "$A#](B" (defvar its-wubi-enable-quanjioao-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Quanjiao alphabet") (defvar its-wubi-open-braket "$A!8(B" "*[") ; "$A#[(B" (defvar its-wubi-close-braket "$A!9(B" "*]") ; "$A#](B" (its-set-stroke-input '((QianMa . 3) (WuBi . 4))) (egg-set-message-language-alist '((QianMa . Chinese-GB) (WuBi . Chinese-GB))) (define-its-state-machine its-qianma-map "qinama" "$AG.(B" QianMa "Map for QianMa input. (Chinese-GB)" (defconst its-quanjiao-escape "Z") (defconst its-banjiao-escape "X") (its-defrule-select-mode-temporally "B" downcase) (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn) (let ((ch (string-to-list "0123456789abcdefghijklmnopqrstuvwxyz;=@[]"))) (while ch (its-defrule (char-to-string (car ch)) (char-to-string (car ch))) (setq ch (cdr ch)))) (dolist (ascii '(("0" . "$A#0(B") ("1" . "$A#1(B") ("2" . "$A#2(B") ("3" . "$A#3(B") ("4" . "$A#4(B") ("5" . "$A#5(B") ("6" . "$A#6(B") ("7" . "$A#7(B") ("8" . "$A#8(B") ("9" . "$A#9(B") (" " . "$A!!(B") ("!" . "$A#!(B") ("@" . "$A#@(B") ("#" . "$A##(B") ("$" . "$A!g(B") ("%" . "$A#%(B") ("^" . "$A#^(B") ("&" . "$A#&(B") ("*" . "$A#*(B") ("(" . "$A#((B") (")" . "$A#)(B") ("-" . "$A#-(B") ("=" . "$A#=(B") ("`" . "$A#`(B") ("\\" . "$A#\(B") ("|" . "$A#|(B") ("_" . "$A#_(B") ("+" . "$A#+(B") ("~" . "$A!+(B") ("[" . "$A#[(B") ("]" . "$A#](B") ("{" . "$A#{(B") ("}" . "$A#}(B") (":" . "$A#:(B") (";" . "$A#;(B") ("\"" . "$A#"(B") ("'" . "$A#'(B") ("<" . "$A#<(B") (">" . "$A#>(B") ("?" . "$A#?(B") ("/" . "$A#/(B") ("," . "$A#,(B") ("." . "$A#.(B") ("a" . "$A#a(B") ("b" . "$A#b(B") ("c" . "$A#c(B") ("d" . "$A#d(B") ("e" . "$A#e(B") ("f" . "$A#f(B") ("g" . "$A#g(B") ("h" . "$A#h(B") ("i" . "$A#i(B") ("j" . "$A#j(B") ("k" . "$A#k(B") ("l" . "$A#l(B") ("m" . "$A#m(B") ("n" . "$A#n(B") ("o" . "$A#o(B") ("p" . "$A#p(B") ("q" . "$A#q(B") ("r" . "$A#r(B") ("s" . "$A#s(B") ("t" . "$A#t(B") ("u" . "$A#u(B") ("v" . "$A#v(B") ("w" . "$A#w(B") ("x" . "$A#x(B") ("y" . "$A#y(B") ("z" . "$A#z(B") ("A" . "$A#A(B") ("B" . "$A#B(B") ("C" . "$A#C(B") ("D" . "$A#D(B") ("E" . "$A#E(B") ("F" . "$A#F(B") ("G" . "$A#G(B") ("H" . "$A#H(B") ("I" . "$A#I(B") ("J" . "$A#J(B") ("K" . "$A#K(B") ("L" . "$A#L(B") ("M" . "$A#M(B") ("N" . "$A#N(B") ("O" . "$A#O(B") ("P" . "$A#P(B") ("Q" . "$A#Q(B") ("R" . "$A#R(B") ("S" . "$A#S(B") ("T" . "$A#T(B") ("U" . "$A#U(B") ("V" . "$A#V(B") ("W" . "$A#W(B") ("X" . "$A#X(B") ("Y" . "$A#Y(B") ("Z" . "$A#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule (concat its-banjiao-escape in) in t) (its-defrule (concat its-quanjiao-escape in) out t))) (its-defrule "," "$A#,(B" t) (its-defrule "." "$A!#(B" t) (its-defrule "/" "$A!"(B" t) (its-defrule ":" "$A#:(B" t) (its-defrule "?" "$A#?(B" t) (its-defrule "!" "$A#!(B" t)) (define-its-state-machine its-wubi-map "wubi" "$ANe(B" WuBi "Map for WuBi input. (Chinese-GB)" (defconst its-quanjiao-escape "Z") (defconst its-banjiao-escape "X") (its-defrule-select-mode-temporally "B" downcase) (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn) (let ((ch (string-to-list "abcdefghijklmnopqrstuvwxy"))) (while ch (its-defrule (char-to-string (car ch)) (char-to-string (car ch))) (setq ch (cdr ch)))) (dolist (ascii '(("0" . "$A#0(B") ("1" . "$A#1(B") ("2" . "$A#2(B") ("3" . "$A#3(B") ("4" . "$A#4(B") ("5" . "$A#5(B") ("6" . "$A#6(B") ("7" . "$A#7(B") ("8" . "$A#8(B") ("9" . "$A#9(B") (" " . "$A!!(B") ("!" . "$A#!(B") ("@" . "$A#@(B") ("#" . "$A##(B") ("$" . "$A!g(B") ("%" . "$A#%(B") ("^" . "$A#^(B") ("&" . "$A#&(B") ("*" . "$A#*(B") ("(" . "$A#((B") (")" . "$A#)(B") ("-" . "$A#-(B") ("=" . "$A#=(B") ("`" . "$A#`(B") ("\\" . "$A#\(B") ("|" . "$A#|(B") ("_" . "$A#_(B") ("+" . "$A#+(B") ("~" . "$A!+(B") ("[" . "$A#[(B") ("]" . "$A#](B") ("{" . "$A#{(B") ("}" . "$A#}(B") (":" . "$A#:(B") (";" . "$A#;(B") ("\"" . "$A#"(B") ("'" . "$A#'(B") ("<" . "$A#<(B") (">" . "$A#>(B") ("?" . "$A#?(B") ("/" . "$A#/(B") ("," . "$A#,(B") ("." . "$A#.(B") ("a" . "$A#a(B") ("b" . "$A#b(B") ("c" . "$A#c(B") ("d" . "$A#d(B") ("e" . "$A#e(B") ("f" . "$A#f(B") ("g" . "$A#g(B") ("h" . "$A#h(B") ("i" . "$A#i(B") ("j" . "$A#j(B") ("k" . "$A#k(B") ("l" . "$A#l(B") ("m" . "$A#m(B") ("n" . "$A#n(B") ("o" . "$A#o(B") ("p" . "$A#p(B") ("q" . "$A#q(B") ("r" . "$A#r(B") ("s" . "$A#s(B") ("t" . "$A#t(B") ("u" . "$A#u(B") ("v" . "$A#v(B") ("w" . "$A#w(B") ("x" . "$A#x(B") ("y" . "$A#y(B") ("z" . "$A#z(B") ("A" . "$A#A(B") ("B" . "$A#B(B") ("C" . "$A#C(B") ("D" . "$A#D(B") ("E" . "$A#E(B") ("F" . "$A#F(B") ("G" . "$A#G(B") ("H" . "$A#H(B") ("I" . "$A#I(B") ("J" . "$A#J(B") ("K" . "$A#K(B") ("L" . "$A#L(B") ("M" . "$A#M(B") ("N" . "$A#N(B") ("O" . "$A#O(B") ("P" . "$A#P(B") ("Q" . "$A#Q(B") ("R" . "$A#R(B") ("S" . "$A#S(B") ("T" . "$A#T(B") ("U" . "$A#U(B") ("V" . "$A#V(B") ("W" . "$A#W(B") ("X" . "$A#X(B") ("Y" . "$A#Y(B") ("Z" . "$A#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule (concat its-banjiao-escape in) in t) (its-defrule (concat its-quanjiao-escape in) out t))) (its-defrule "," "$A#,(B" t) (its-defrule "." "$A!#(B" t) (its-defrule "/" "$A!"(B" t) (its-defrule ";" "$A#;(B" t) (its-defrule ":" "$A#:(B" t) (its-defrule "?" "$A#?(B" t) (its-defrule "!" "$A#!(B" t)) (define-its-state-machine-append its-qianma-map (its-defrule "{" its-qianma-open-braket) (its-defrule "}" its-qianma-close-braket) (if its-qianma-enable-quanjioao-alphabet (progn (its-defrule "#" "$A##(B" t) (its-defrule "$" "$A!g(B" t) (its-defrule "%" "$A#%(B" t) (its-defrule "^" "$A#^(B" t) (its-defrule "&" "$A#&(B" t) (its-defrule "*" "$A#*(B" t) (its-defrule "(" "$A#((B" t) (its-defrule ")" "$A#)(B" t) (its-defrule "-" "$A#-(B" t) (its-defrule "~" "$A!+(B" t) (its-defrule "`" "$A#`(B" t) (its-defrule "\\" "$A#\(B" t) (its-defrule "|" "$A#|(B" t) (its-defrule "_" "$A#_(B" t) (its-defrule "+" "$A#+(B" t) (its-defrule "\"" "$A#"(B" t) (its-defrule "'" "$A#'(B" t) (its-defrule "<" "$A#<(B" t) (its-defrule ">" "$A#>(B" t)) (progn (its-defrule "#" "#" t) (its-defrule "$" "$" t) (its-defrule "%" "%" t) (its-defrule "^" "^" t) (its-defrule "&" "&" t) (its-defrule "*" "*" t) (its-defrule "(" "(" t) (its-defrule ")" ")" t) (its-defrule "-" "-" t) (its-defrule "~" "~" t) (its-defrule "`" "`" t) (its-defrule "\\" "\\" t) (its-defrule "|" "|" t) (its-defrule "_" "_" t) (its-defrule "+" "+" t) (its-defrule "\"" "\"" t) (its-defrule "'" "'" t) (its-defrule "<" "<" t) (its-defrule ">" ">" t)))) (define-its-state-machine-append its-wubi-map (its-defrule "[" its-wubi-open-braket) (its-defrule "]" its-wubi-close-braket) (if its-wubi-enable-quanjioao-alphabet (progn (its-defrule "1" "$A#1(B" t) (its-defrule "2" "$A#2(B" t) (its-defrule "3" "$A#3(B" t) (its-defrule "4" "$A#4(B" t) (its-defrule "5" "$A#5(B" t) (its-defrule "6" "$A#6(B" t) (its-defrule "7" "$A#7(B" t) (its-defrule "8" "$A#8(B" t) (its-defrule "9" "$A#9(B" t) (its-defrule "0" "$A#0(B" t) (its-defrule "@" "$A#@(B" t) (its-defrule "#" "$A##(B" t) (its-defrule "$" "$A!g(B" t) (its-defrule "%" "$A#%(B" t) (its-defrule "^" "$A#^(B" t) (its-defrule "&" "$A#&(B" t) (its-defrule "*" "$A#*(B" t) (its-defrule "(" "$A#((B" t) (its-defrule ")" "$A#)(B" t) (its-defrule "-" "$A#-(B" t) (its-defrule "~" "$A!+(B" t) (its-defrule "=" "$A#=(B" t) (its-defrule "`" "$A#`(B" t) (its-defrule "\\" "$A#\(B" t) (its-defrule "|" "$A#|(B" t) (its-defrule "_" "$A#_(B" t) (its-defrule "+" "$A#+(B" t) (its-defrule "{" "$A#{(B" t) (its-defrule "}" "$A#}(B" t) (its-defrule "\"" "$A#"(B" t) (its-defrule "'" "$A#'(B" t) (its-defrule "<" "$A#<(B" t) (its-defrule ">" "$A#>(B" t)) (progn (its-defrule "1" "1" t) (its-defrule "2" "2" t) (its-defrule "3" "3" t) (its-defrule "4" "4" t) (its-defrule "5" "5" t) (its-defrule "6" "6" t) (its-defrule "7" "7" t) (its-defrule "8" "8" t) (its-defrule "9" "9" t) (its-defrule "0" "0" t) (its-defrule "@" "@" t) (its-defrule "#" "#" t) (its-defrule "$" "$" t) (its-defrule "%" "%" t) (its-defrule "^" "^" t) (its-defrule "&" "&" t) (its-defrule "*" "*" t) (its-defrule "(" "(" t) (its-defrule ")" ")" t) (its-defrule "-" "-" t) (its-defrule "~" "~" t) (its-defrule "=" "=" t) (its-defrule "`" "`" t) (its-defrule "\\" "\\" t) (its-defrule "|" "|" t) (its-defrule "_" "_" t) (its-defrule "+" "+" t) (its-defrule "{" "{" t) (its-defrule "}" "}" t) (its-defrule "\"" "\"" t) (its-defrule "'" "'" t) (its-defrule "<" "<" t) (its-defrule ">" ">" t)))) (provide 'its/bixing) egg-4.2.0/ATTIC/its/erpin.el000066400000000000000000000474111252027163000153660ustar00rootroot00000000000000;;; its/erpin.el --- Erpin Input in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'its) (require 'cl)) (eval-when (compile) (defconst its-compaction-enable t)) (defvar its-erpin-cn-enable-quanjioao-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Quanjiao alphabet") (defvar its-erpin-cn-open-braket "$A!8(B" "*[") ; "$A#[(B" (defvar its-erpin-cn-close-braket "$A!9(B" "*]") ; "$A#](B" (defvar its-erpin-tw-enable-quanjioao-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Quanjiao alphabet") (defvar its-erpin-tw-open-braket "$(G!V(B" "*[") ; "$(G!b(B " (defvar its-erpin-tw-close-braket "$(G!W(B" "*]") ; "$(G!c(B" (eval-when-compile (defun its-define-erpin-qingsheng (shengmu yunmu &optional y) (let ((input (concat (car shengmu) yunmu)) (output (concat (cdr shengmu) (if y y yunmu) "(0@(B"))) (prog1 (its-defrule input output) (its-defrule (concat input " ") output) (its-defrule (concat input "0") output)))) (defmacro its-do-erpin-table (list) `(progn ,@(mapcar (lambda (syl) `(its-define-erpin ,(car syl) ,(cdr syl))) list))) (defmacro its-define-erpin (shengmu yunmu) `(let ((y1 (nth 1 ,yunmu)) (y2 (nth 2 ,yunmu)) (y3 (nth 3 ,yunmu)) (y4 (nth 4 ,yunmu)) (y5 (nth 5 ,yunmu)) (y (car ,yunmu)) (ss (list ,@shengmu)) sa sd state) (while ss (setq sa (caar ss) sd (cdar ss) state (its-define-erpin-qingsheng (car ss) y y5)) (its-make-next-state state ?1 (concat sd y1 "(0@(B")) (its-make-next-state state ?2 (concat sd y2 "(0@(B")) (its-make-next-state state ?3 (concat sd y3 "(0@(B")) (its-make-next-state state ?4 (concat sd y4 "(0@(B")) (setq ss (cdr ss))))) (defmacro its-define-erpin-table () '(let ((O '("o" . "")) (B '("b" . "B")) (C '("c" . "C")) (D '("d" . "D")) (F '("f" . "F")) (G '("g" . "G")) (H '("h" . "H")) (J '("j" . "J")) (K '("k" . "K")) (L '("l" . "L")) (M '("m" . "M")) (N '("n" . "N")) (P '("p" . "P")) (Q '("q" . "Q")) (R '("r" . "R")) (S '("s" . "S")) (T '("t" . "T")) (W '("w" . "W")) (X '("x" . "X")) (Y '("y" . "Y")) (Z '("z" . "Z")) (I '("i" . "Ch")) (U '("u" . "Sh")) (V '("v" . "Zh")) (a '("a" "(0!(B" "(0"(B" "(0#(B" "(0$(B" "a" )) (ai '("s" "(0!(Bi" "(0"(Bi" "(0#(Bi" "(0$(Bi" "ai" )) (an '("f" "(0!(Bn" "(0"(Bn" "(0#(Bn" "(0$(Bn" "an" )) (ang '("g" "(0!(Bng" "(0"(Bng" "(0#(Bng" "(0$(Bng" "ang" )) (ao '("d" "(0!(Bo" "(0"(Bo" "(0#(Bo" "(0$(Bo" "ao" )) (e '("e" "(0%(B" "(0&(B" "(0'(B" "(0((B" "e" )) (ei '("w" "(0%(Bi" "(0&(Bi" "(0'(Bi" "(0((Bi" "ei" )) (en '("r" "(0%(Bn" "(0&(Bn" "(0'(Bn" "(0((Bn" "en" )) (eng '("t" "(0%(Bng" "(0&(Bng" "(0'(Bng" "(0((Bng" "eng" )) (er '("y" "(0%(Br" "(0&(Br" "(0'(Br" "(0((Br" "er" )) (i '("i" "(0)(B" "(0*(B" "(0+(B" "(0,(B" "i" )) (ia '("p" "i(0!(B" "i(0"(B" "i(0#(B" "i(0$(B" "ia" )) (ian '("h" "i(0!(Bn" "i(0"(Bn" "i(0#(Bn" "i(0$(Bn" "ian" )) (iang '("j" "i(0!(Bng" "i(0"(Bng" "i(0#(Bng" "i(0$(Bng" "iang")) (iao '("k" "i(0!(Bo" "i(0"(Bo" "i(0#(Bo" "i(0$(Bo" "iao" )) (ie '("l" "i(0%(B" "i(0&(B" "i(0'(B" "i(0((B" "ie" )) (in '("m" "(0)(Bn" "(0*(Bn" "(0+(Bn" "(0,(Bn" "in" )) (ing '("n" "(0)(Bng" "(0*(Bng" "(0+(Bng" "(0,(Bng" "ing" )) (iong '("b" "i(0-(Bng" "i(0.(Bng" "i(0/(Bng" "i(00(Bng" "iong")) (iu '("y" "i(01(B" "i(02(B" "i(03(B" "i(04(B" "iu" )) (o '("o" "(0-(B" "(0.(B" "(0/(B" "(00(B" "o" )) (ong '("b" "(0-(Bng" "(0.(Bng" "(0/(Bng" "(00(Bng" "ong" )) (ou '("q" "(0-(Bu" "(0.(Bu" "(0/(Bu" "(00(Bu" "ou" )) (u '("u" "(01(B" "(02(B" "(03(B" "(04(B" "u" )) (v '("v" "(05(B" "(06(B" "(07(B" "(08(B" "(09(B" )) (ua '("p" "u(0!(B" "u(0"(B" "u(0#(B" "u(0$(B" "ua" )) (uai '("k" "u(0!(Bi" "u(0"(Bi" "u(0#(Bi" "u(0$(Bi" "uai" )) (uan '("x" "u(0!(Bn" "u(0"(Bn" "u(0#(Bn" "u(0$(Bn" "uan" )) (uang '("j" "u(0!(Bng" "u(0"(Bng" "u(0#(Bng" "u(0$(Bng" "uang")) (ue '("c" "u(0%(B" "u(0&(B" "u(0'(B" "u(0((B" "ue" )) (ve '("c" "(09%(B" "(09&(B" "(09'(B" "(09((B" "(09(Be" )) (ui '("c" "u(0)(B" "u(0*(B" "u(0+(B" "u(0,(B" "ui" )) (un '("z" "(01(Bn" "(02(Bn" "(03(Bn" "(04(Bn" "un" )) (uo '("o" "u(0-(B" "u(0.(B" "u(0/(B" "u(00(B" "uo" ))) (its-do-erpin-table (((O B C D F G H K L M N P S T W Y Z I U V) . a) ((O B C D G H K L M N P S T W Z I U V) . ai) ((O B C D F G H K L M N P R S T W Y Z I U V) . an) ((O B C D F G H K L M N P R S T W Y Z I U V) . ang) ((O B C D G H K L M N P R S T Y Z I U V) . ao) ((O C D G H K L M N R S T Y Z I U V) . e) ((O B C D F G H K L M N P T W Z U V) . ei) ((O B C D F G H K M N P R S W Z I U V) . en) ((O B C D F G H K L M N P R S T W Z I U V) . eng) ((O ) . er) (( B C D J L M N P Q R S T X Y Z I U V) . i) (( D J L Q X ) . ia) (( B D J L M N P Q T X ) . ian) (( J L N Q X ) . iang) (( B D J L M N P Q T X ) . iao) (( B D J L M N P Q T X ) . ie) (( B J L M N P Q X Y ) . in) (( B D J L M N P Q T X Y ) . ing) (( J Q X ) . iong) (( D J L M N Q X ) . iu) ((O B F M P W Y ) . o) (( C D G H K L N R S T Y Z I V) . ong) ((O C D F G H K L M N P R S T Y Z I U V) . ou) (( B C D F G H J K L M N P Q R S T W X Y Z I U V) . u) (( L N ) . v) (( G H K R I U V) . ua) (( G H K I U V) . uai) (( C D G H J K L N Q R S T X Y Z I U V) . uan) (( G H K I U V) . uang) (( J Q X Y ) . ue) (( L N ) . ve) (( C D G H K R S T Z I U V) . ui) (( C D G H J K L Q R S T X Y Z I U V) . un) (( C D G H K L N R S T Z I U V) . uo) (('("" . "")) . (cons "er" (cdr er))) ((J Q X) . (cons "a" (cdr ia ))) ((J Q X) . (cons "s" (cdr ia ))) ((J Q X) . (cons "f" (cdr ian ))) ((J Q X) . (cons "g" (cdr iang))) ((J Q X) . (cons "d" (cdr iao ))) ((J Q X) . (cons "e" (cdr ie ))) ((J Q X) . (cons "w" (cdr ie ))) ((J Q X) . (cons "r" (cdr in ))) ((J Q X) . (cons "t" (cdr ing ))) ((J Q X) . (cons "q" (cdr iu ))))) (dolist (SHENG (list B C D F G H J K L M N P Q R S T W X Y Z I U V)) (its-defoutput (car SHENG) (cdr SHENG))) (its-define-erpin-qingsheng H "m") (its-define-erpin-qingsheng H "n" "ng") (its-define-erpin-qingsheng O "m") (its-define-erpin-qingsheng O "n") (its-defrule "on5" "ng(0@(B") (its-defrule "on2" "(0=@(B") (its-defrule "on3" "(0>@(B") (its-defrule "on4" "(0?@(B")))) (define-its-state-machine its-erpin-cn-map "erpin-cn" "$A6~(BG" Chinese-GB "Map for Erpin input. (Chinese-GB)" (defconst its-quanjiao-escape "Z") (defconst its-banjiao-escape "X") (its-defrule-select-mode-temporally "B" downcase) (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn) (its-define-erpin-table) (its-defrule "b " "$A2;(B") (its-defrule "c " "$A2E(B") (its-defrule "ch " "$A3v(B") (its-defrule "d " "$A5D(B") (its-defrule "f " "$A74(B") (its-defrule "g " "$A8v(B") (its-defrule "h " "$A:M(B") (its-defrule "i " "$AR;(B") (its-defrule "j " "$A>M(B") (its-defrule "k " "$A?I(B") (its-defrule "l " "$AAK(B") (its-defrule "m " "$AC?(B") (its-defrule "n " "$ADj(B") (its-defrule "p " "$AEz(B") (its-defrule "q " "$AH%(B") (its-defrule "r " "$AHU(B") (its-defrule "s " "$AJG(B") (its-defrule "u " "$AIO(B") (its-defrule "t " "$AK{(B") (its-defrule "w " "$ANR(B") (its-defrule "x " "$AOr(B") (its-defrule "y " "$ASV(B") (its-defrule "z " "$ATZ(B") (its-defrule "v " "$AWE(B") (dolist (ascii '(("0" . "$A#0(B") ("1" . "$A#1(B") ("2" . "$A#2(B") ("3" . "$A#3(B") ("4" . "$A#4(B") ("5" . "$A#5(B") ("6" . "$A#6(B") ("7" . "$A#7(B") ("8" . "$A#8(B") ("9" . "$A#9(B") (" " . "$A!!(B") ("!" . "$A#!(B") ("@" . "$A#@(B") ("#" . "$A##(B") ("$" . "$A!g(B") ("%" . "$A#%(B") ("^" . "$A#^(B") ("&" . "$A#&(B") ("*" . "$A#*(B") ("(" . "$A#((B") (")" . "$A#)(B") ("-" . "$A#-(B") ("=" . "$A#=(B") ("`" . "$A#`(B") ("\\" . "$A#\(B") ("|" . "$A#|(B") ("_" . "$A#_(B") ("+" . "$A#+(B") ("~" . "$A!+(B") ("[" . "$A#[(B") ("]" . "$A#](B") ("{" . "$A#{(B") ("}" . "$A#}(B") (":" . "$A#:(B") (";" . "$A#;(B") ("\"" . "$A#"(B") ("'" . "$A#'(B") ("<" . "$A#<(B") (">" . "$A#>(B") ("?" . "$A#?(B") ("/" . "$A#/(B") ("," . "$A#,(B") ("." . "$A#.(B") ("a" . "$A#a(B") ("b" . "$A#b(B") ("c" . "$A#c(B") ("d" . "$A#d(B") ("e" . "$A#e(B") ("f" . "$A#f(B") ("g" . "$A#g(B") ("h" . "$A#h(B") ("i" . "$A#i(B") ("j" . "$A#j(B") ("k" . "$A#k(B") ("l" . "$A#l(B") ("m" . "$A#m(B") ("n" . "$A#n(B") ("o" . "$A#o(B") ("p" . "$A#p(B") ("q" . "$A#q(B") ("r" . "$A#r(B") ("s" . "$A#s(B") ("t" . "$A#t(B") ("u" . "$A#u(B") ("v" . "$A#v(B") ("w" . "$A#w(B") ("x" . "$A#x(B") ("y" . "$A#y(B") ("z" . "$A#z(B") ("A" . "$A#A(B") ("B" . "$A#B(B") ("C" . "$A#C(B") ("D" . "$A#D(B") ("E" . "$A#E(B") ("F" . "$A#F(B") ("G" . "$A#G(B") ("H" . "$A#H(B") ("I" . "$A#I(B") ("J" . "$A#J(B") ("K" . "$A#K(B") ("L" . "$A#L(B") ("M" . "$A#M(B") ("N" . "$A#N(B") ("O" . "$A#O(B") ("P" . "$A#P(B") ("Q" . "$A#Q(B") ("R" . "$A#R(B") ("S" . "$A#S(B") ("T" . "$A#T(B") ("U" . "$A#U(B") ("V" . "$A#V(B") ("W" . "$A#W(B") ("X" . "$A#X(B") ("Y" . "$A#Y(B") ("Z" . "$A#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule (concat its-banjiao-escape in) in) (its-defrule (concat its-quanjiao-escape in) out))) (its-defrule "," "$A#,(B") (its-defrule "." "$A!#(B") (its-defrule "/" "$A!"(B") (its-defrule ":" "$A#:(B") (its-defrule ";" "$A#;(B") (its-defrule "?" "$A#?(B") (its-defrule "!" "$A#!(B")) (define-its-state-machine its-erpin-tw-map "erpin-tw" "$(GD((BC" Chinese-CNS "Map for Erpin input." (defconst its-quanjiao-escape "Z") (defconst its-banjiao-escape "X") (its-defrule-select-mode-temporally "B" downcase) (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn) (its-define-erpin-table) (its-defrule "b " "$(GDb(B") (its-defrule "c " "$(GD_(B") (its-defrule "ch " "$(GEx(B") (its-defrule "d " "$(GN{(B") (its-defrule "f " "$(GE0(B") (its-defrule "g " "$(GT6(B") (its-defrule "h " "$(GLO(B") (its-defrule "i " "$(GD!(B") (its-defrule "j " "$(G^s(B") (its-defrule "k " "$(GF+(B") (its-defrule "l " "$(GD'(B") (its-defrule "m " "$(GJd(B") (its-defrule "n " "$(GH!(B") (its-defrule "p " "$(GJG(B") (its-defrule "q " "$(GF*(B") (its-defrule "r " "$(GEJ(B") (its-defrule "s " "$(GQR(B") (its-defrule "u " "$(GD8(B") (its-defrule "t " "$(GEl(B") (its-defrule "w " "$(GJ<(B") (its-defrule "x " "$(GGW(B") (its-defrule "y " "$(GD4(B") (its-defrule "z " "$(GGc(B") (its-defrule "v " "$(Gaa(B") (dolist (ascii '(("0" . "$(G$!(B") ("1" . "$(G$"(B") ("2" . "$(G$#(B") ("3" . "$(G$$(B") ("4" . "$(G$%(B") ("5" . "$(G$&(B") ("6" . "$(G$'(B") ("7" . "$(G$((B") ("8" . "$(G$)(B") ("9" . "$(G$*(B") (" " . "$(G!!(B") ("!" . "$(G!*(B") ("@" . "$(G"i(B") ("#" . "$(G!l(B") ("$" . "$(G"c(B") ("%" . "$(G"h(B") ("^" . "$(G!T(B") ("&" . "$(G!m(B") ("*" . "$(G!n(B") ("(" . "$(G!>(B") (")" . "$(G!?(B") ("-" . "$(G"1(B") ("=" . "$(G"8(B") ("`" . "$(G!j(B") ("\\" . "$(G"`(B") ("|" . "$(G"^(B") ("_" . "$(G"%(B") ("+" . "$(G"0(B") ("~" . "$(G"D(B") ("[" . "$(G!b(B") ("]" . "$(G!c(B") ("{" . "$(G!B(B") ("}" . "$(G!C(B") (":" . "$(G!((B") (";" . "$(G!'(B") ("\"" . "$(G!i(B") ("'" . "$(G!k(B") ("<" . "$(G"6(B") (">" . "$(G"7(B") ("?" . "$(G!)(B") ("/" . "$(G"_(B") ("," . "$(G!"(B") ("." . "$(G!%(B") ("a" . "$(G$[(B") ("b" . "$(G$\(B") ("c" . "$(G$](B") ("d" . "$(G$^(B") ("e" . "$(G$_(B") ("f" . "$(G$`(B") ("g" . "$(G$a(B") ("h" . "$(G$b(B") ("i" . "$(G$c(B") ("j" . "$(G$d(B") ("k" . "$(G$e(B") ("l" . "$(G$f(B") ("m" . "$(G$g(B") ("n" . "$(G$h(B") ("o" . "$(G$i(B") ("p" . "$(G$j(B") ("q" . "$(G$k(B") ("r" . "$(G$l(B") ("s" . "$(G$m(B") ("t" . "$(G$n(B") ("u" . "$(G$o(B") ("v" . "$(G$p(B") ("w" . "$(G$q(B") ("x" . "$(G$r(B") ("y" . "$(G$s(B") ("z" . "$(G$t(B") ("A" . "$(G$A(B") ("B" . "$(G$B(B") ("C" . "$(G$C(B") ("D" . "$(G$D(B") ("E" . "$(G$E(B") ("F" . "$(G$F(B") ("G" . "$(G$G(B") ("H" . "$(G$H(B") ("I" . "$(G$I(B") ("J" . "$(G$J(B") ("K" . "$(G$K(B") ("L" . "$(G$L(B") ("M" . "$(G$M(B") ("N" . "$(G$N(B") ("O" . "$(G$O(B") ("P" . "$(G$P(B") ("Q" . "$(G$Q(B") ("R" . "$(G$R(B") ("S" . "$(G$S(B") ("T" . "$(G$T(B") ("U" . "$(G$U(B") ("V" . "$(G$V(B") ("W" . "$(G$W(B") ("X" . "$(G$X(B") ("Y" . "$(G$Y(B") ("Z" . "$(G$Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule (concat its-banjiao-escape in) in) (its-defrule (concat its-quanjiao-escape in) out))) (its-defrule "," "$(G!"(B") (its-defrule "." "$(G!$(B") (its-defrule "/" "$(G!#(B") (its-defrule ":" "$(G!((B") (its-defrule ";" "$(G!'(B") (its-defrule "?" "$(G!)(B") (its-defrule "!" "$(G!*(B")) (define-its-state-machine-append its-erpin-cn-map (its-defrule "[" its-erpin-cn-open-braket) (its-defrule "]" its-erpin-cn-close-braket) (if its-erpin-cn-enable-quanjioao-alphabet (progn (its-defrule "1" "$A#1(B") (its-defrule "2" "$A#2(B") (its-defrule "3" "$A#3(B") (its-defrule "4" "$A#4(B") (its-defrule "5" "$A#5(B") (its-defrule "6" "$A#6(B") (its-defrule "7" "$A#7(B") (its-defrule "8" "$A#8(B") (its-defrule "9" "$A#9(B") (its-defrule "0" "$A#0(B") (its-defrule "@" "$A#@(B") (its-defrule "#" "$A##(B") (its-defrule "$" "$A!g(B") (its-defrule "%" "$A#%(B") (its-defrule "^" "$A#^(B") (its-defrule "&" "$A#&(B") (its-defrule "*" "$A#*(B") (its-defrule "(" "$A#((B") (its-defrule ")" "$A#)(B") (its-defrule "-" "$A#-(B") (its-defrule "~" "$A!+(B") (its-defrule "=" "$A#=(B") (its-defrule "`" "$A#`(B") (its-defrule "\\" "$A#\(B") (its-defrule "|" "$A#|(B") (its-defrule "_" "$A#_(B") (its-defrule "+" "$A#+(B") (its-defrule "{" "$A#{(B") (its-defrule "}" "$A#}(B") (its-defrule "\"" "$A#"(B") (its-defrule "'" "$A#'(B") (its-defrule "<" "$A#<(B") (its-defrule ">" "$A#>(B")) (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "-" "-") (its-defrule "~" "~") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule "\"" "\"") (its-defrule "'" "'") (its-defrule "<" "<") (its-defrule ">" ">")))) (define-its-state-machine-append its-erpin-tw-map (its-defrule "[" its-erpin-tw-open-braket) (its-defrule "]" its-erpin-tw-close-braket) (if its-erpin-tw-enable-quanjioao-alphabet (progn (its-defrule "1" "$(G$"(B") (its-defrule "2" "$(G$#(B") (its-defrule "3" "$(G$$(B") (its-defrule "4" "$(G$%(B") (its-defrule "5" "$(G$&(B") (its-defrule "6" "$(G$'(B") (its-defrule "7" "$(G$((B") (its-defrule "8" "$(G$)(B") (its-defrule "9" "$(G$*(B") (its-defrule "0" "$(G$!(B") (its-defrule "@" "$(G"i(B") (its-defrule "#" "$(G!l(B") (its-defrule "$" "$(G"c(B") (its-defrule "%" "$(G"h(B") (its-defrule "^" "$(G!T(B") (its-defrule "&" "$(G!m(B") (its-defrule "*" "$(G!n(B") (its-defrule "(" "$(G!>(B") (its-defrule ")" "$(G!?(B") (its-defrule "-" "$(G"1(B") (its-defrule "~" "$(G"D(B") (its-defrule "=" "$(G"8(B") (its-defrule "`" "$(G!j(B") (its-defrule "\\" "$(G"b(B") (its-defrule "|" "$(G"^(B") (its-defrule "_" "$(G"%(B") (its-defrule "+" "$(G"0(B") (its-defrule "{" "$(G!B(B") (its-defrule "}" "$(G!C(B") (its-defrule "\"" "$(G!i(B") (its-defrule "'" "$(G!k(B") (its-defrule "<" "$(G"6(B") (its-defrule ">" "$(G"7(B")) (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "-" "-") (its-defrule "~" "~") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule "\"" "\"") (its-defrule "'" "'") (its-defrule "<" "<") (its-defrule ">" ">")))) (provide 'its/erpin) egg-4.2.0/ATTIC/its/greek.el000066400000000000000000000162751252027163000153520ustar00rootroot00000000000000(eval-when-compile (require 'its) (require 'cl)) (eval-when (compile) (defconst its-compaction-enable t)) (defgroup greek nil "Greek Input Method" :group 'its) (define-its-state-machine its-greek-jis-map "greek-jis" "$B&8(B" Greek "$B&%&K&K&G&M&I&J&A(B: Greek keyboard layout (JIS X0208.1983) The layout is same as greek, but uses JIS characters. Sorry, accents and terminal sigma are not supported in JIS." (its-defrule "1" "$B#1(B") (its-defrule "2" "$B#2(B") (its-defrule "3" "$B#3(B") (its-defrule "4" "$B#4(B") (its-defrule "5" "$B#5(B") (its-defrule "6" "$B#6(B") (its-defrule "7" "$B#7(B") (its-defrule "8" "$B#8(B") (its-defrule "9" "$B#9(B") (its-defrule "0" "$B#0(B") (its-defrule "-" "$B!](B") (its-defrule "=" "$B!a(B") (its-defrule "`" "$B!F(B") (its-defrule "q" "$B!&(B") (its-defrule "w" "$B&R(B") (its-defrule "e" "$B&E(B") (its-defrule "r" "$B&Q(B") (its-defrule "t" "$B&S(B") (its-defrule "y" "$B&T(B") (its-defrule "u" "$B&H(B") (its-defrule "i" "$B&I(B") (its-defrule "o" "$B&O(B") (its-defrule "p" "$B&P(B") (its-defrule "[" "$B!N(B") (its-defrule "]" "$B!O(B") (its-defrule "a" "$B&A(B") (its-defrule "s" "$B&R(B") (its-defrule "d" "$B&D(B") (its-defrule "f" "$B&U(B") (its-defrule "g" "$B&C(B") (its-defrule "h" "$B&G(B") (its-defrule "j" "$B&N(B") (its-defrule "k" "$B&J(B") (its-defrule "l" "$B&K(B") (its-defrule ";" "$B!G(B") (its-defrule "'" "$B!G(B") (its-defrule "\\" "$B!@(B") (its-defrule "z" "$B&F(B") (its-defrule "x" "$B&V(B") (its-defrule "c" "$B&W(B") (its-defrule "v" "$B&X(B") (its-defrule "b" "$B&B(B") (its-defrule "n" "$B&M(B") (its-defrule "m" "$B&L(B") (its-defrule "," ", ") (its-defrule "." ". ") (its-defrule "/" "$B!?(B") (its-defrule "!" "$B!*(B") (its-defrule "@" "$B!w(B") (its-defrule "#" "$B!t(B") (its-defrule "$" "$B!t(B") (its-defrule "%" "$B!s(B") (its-defrule "^" "$B!0(B") (its-defrule "&" "$B!u(B") (its-defrule "*" "$B!v(B") (its-defrule "(" "$B!J(B") (its-defrule ")" "$B!K(B") (its-defrule "_" "$B!2(B") (its-defrule "+" "$B!\(B") (its-defrule "~" "$B!1(B") (its-defrule "Q" "$B!](B") (its-defrule "W" "$B&2(B") (its-defrule "E" "$B&%(B") (its-defrule "R" "$B&1(B") (its-defrule "T" "$B&3(B") (its-defrule "Y" "$B&4(B") (its-defrule "U" "$B&((B") (its-defrule "I" "$B&)(B") (its-defrule "O" "$B&/(B") (its-defrule "P" "$B&1(B") (its-defrule "{" "$B!P(B") (its-defrule "}" "$B!Q(B") (its-defrule "A" "$B&!(B") (its-defrule "S" "$B&2(B") (its-defrule "D" "$B&$(B") (its-defrule "F" "$B&5(B") (its-defrule "G" "$B&#(B") (its-defrule "H" "$B&'(B") (its-defrule "J" "$B&.(B") (its-defrule "K" "$B&*(B") (its-defrule "L" "$B&+(B") (its-defrule ":" "$B!I(B") (its-defrule "\"" "$B!I(B") (its-defrule "|" "$B!C(B") (its-defrule "Z" "$B&&(B") (its-defrule "X" "$B&6(B") (its-defrule "C" "$B&7(B") (its-defrule "V" "$B&8(B") (its-defrule "B" "$B&"(B") (its-defrule "N" "$B&-(B") (its-defrule "M" "$B&,(B") (its-defrule "<" "$B!((B") (its-defrule ">" "$B!'(B") (its-defrule "?" "$B!)(B")) (define-its-state-machine its-greek-map "greek" ",FY(B" Greek ",FEkkgmij\(B: Greek keyboard layout (ISO 8859-7) -------------- In the right of ,Fk(B key is a combination key, where ,F4(B acute ,F((B diaresis e.g. ,Fa(B + ,F4(B -> ,F\(B ,Fi(B + ,F((B -> ,Fz(B ,Fi(B + ,F((B + ,F4(B -> ,F@(B" ;; 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) -_ =+ `~ ;; ,F7/(B ,FrS(B ,FeE(B ,FqQ(B ,FtT(B ,FuU(B ,FhH(B ,FiI(B ,FoO(B ,FpP(B [{ ]} ;; ,FaA(B ,FsS(B ,FdD(B ,FvV(B ,FcC(B ,FgG(B ,FnN(B ,FjJ(B ,FkK(B ,F4((B '" \| ;; ,FfF(B ,FwW(B ,FxX(B ,FyY(B ,FbB(B ,FmM(B ,FlL(B ,; .: /? (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "-" "-") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "q" ",F7(B") (its-defrule "w" ",Fr(B") (its-defrule "e" ",Fe(B") (its-defrule "r" ",Fq(B") (its-defrule "t" ",Ft(B") (its-defrule "y" ",Fu(B") (its-defrule "u" ",Fh(B") (its-defrule "i" ",Fi(B") (its-defrule "o" ",Fo(B") (its-defrule "p" ",Fp(B") (its-defrule "[" "[") (its-defrule "]" "]") (its-defrule "a" ",Fa(B") (its-defrule "s" ",Fs(B") (its-defrule "d" ",Fd(B") (its-defrule "f" ",Fv(B") (its-defrule "g" ",Fc(B") (its-defrule "h" ",Fg(B") (its-defrule "j" ",Fn(B") (its-defrule "k" ",Fj(B") (its-defrule "l" ",Fk(B") (its-defrule ";" ",F4(B") (its-defrule "'" "'") (its-defrule "\\" "\\") (its-defrule "z" ",Ff(B") (its-defrule "x" ",Fw(B") (its-defrule "c" ",Fx(B") (its-defrule "v" ",Fy(B") (its-defrule "b" ",Fb(B") (its-defrule "n" ",Fm(B") (its-defrule "m" ",Fl(B") (its-defrule "," ",") (its-defrule "." ".") (its-defrule "/" "/") (its-defrule "!" "!") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "~" "~") (its-defrule "Q" ",F/(B") (its-defrule "W" ",FS(B") (its-defrule "E" ",FE(B") (its-defrule "R" ",FQ(B") (its-defrule "T" ",FT(B") (its-defrule "Y" ",FU(B") (its-defrule "U" ",FH(B") (its-defrule "I" ",FI(B") (its-defrule "O" ",FO(B") (its-defrule "P" ",FP(B") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule "A" ",FA(B") (its-defrule "S" ",FS(B") (its-defrule "D" ",FD(B") (its-defrule "F" ",FV(B") (its-defrule "G" ",FC(B") (its-defrule "H" ",FG(B") (its-defrule "J" ",FN(B") (its-defrule "K" ",FJ(B") (its-defrule "L" ",FK(B") (its-defrule ":" ",F((B") (its-defrule "\"" "\"") (its-defrule "|" "|") (its-defrule "Z" ",FF(B") (its-defrule "X" ",FW(B") (its-defrule "C" ",FX(B") (its-defrule "V" ",FY(B") (its-defrule "B" ",FB(B") (its-defrule "N" ",FM(B") (its-defrule "M" ",FL(B") (its-defrule "<" ";") (its-defrule ">" ":") (its-defrule "?" "?") (its-defrule "a;" ",F\(B") (its-defrule "e;" ",F](B") (its-defrule "h;" ",F^(B") (its-defrule "i;" ",F_(B") (its-defrule "o;" ",F|(B") (its-defrule "y;" ",F}(B") (its-defrule "v;" ",F~(B") (its-defrule "A;" ",F6(B") (its-defrule "E;" ",F8(B") (its-defrule "H;" ",F9(B") (its-defrule "I;" ",F:(B") (its-defrule "O;" ",F<(B") (its-defrule "Y;" ",F>(B") (its-defrule "V;" ",F?(B") (its-defrule "i:" ",Fz(B") (its-defrule "y:" ",F{(B") (its-defrule "I:" ",FZ(B") (its-defrule "Y:" ",F[(B") (its-defrule "i:;" ",F@(B") (its-defrule "y:;" ",F`(B")) (provide 'its/greek) egg-4.2.0/ATTIC/its/hangul.el000066400000000000000000002545471252027163000155410ustar00rootroot00000000000000;;; its/hangul.el --- Hangul Input in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: NIIBE Yutaka ;; KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'its) (require 'cl)) (eval-when (compile) (defconst its-compaction-enable t)) (defvar its-hangul-enable-jeonkak-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Jeonkak alphabet") (defvar its-hangul-period ". " "*$(C#.(B") ; ". " "$(C#.(B" (defvar its-hangul-comma ", " "*$(C#,(B") ; ", " "$(C#,(B" (defvar its-hangul-open-bracket "$(C!8(B" "*[") ; "$(C#[(B" (defvar its-hangul-close-bracket "$(C!9(B" "*]") ; "$(C#](B" (eval-when-compile (defconst its-hangul-key-alist nil) (defconst its-hangul-successor-list nil) (defsubst its-hangul-sequence-to-key (seq) (concat (mapcar (lambda (c) (cdr (assq c its-hangul-key-alist))) (string-to-list seq)))) (defsubst its-hangul-make-successor (init keyseq) (concat (if init (substring init 0 (1- (length init))) "[") (list (aref keyseq 1)) "]"))) (eval-when-compile (defun its-define-hangul-key (key output) (setq its-hangul-key-alist (cons (cons (string-to-char output) (string-to-char key)) its-hangul-key-alist)) (its-defrule key output)) (defun its-define-hangul-successor-list (keyseq) (let ((pair (assq (aref keyseq 0) its-hangul-successor-list))) (if (null pair) (setq its-hangul-successor-list (cons (cons (aref keyseq 0) (its-hangul-make-successor nil keyseq)) its-hangul-successor-list)) (if (null (string-match (cdr pair) keyseq 1)) (setcdr pair (its-hangul-make-successor (cdr pair) keyseq)))))) (defun its-defrule-hangul (input output) (let* ((state (its-defrule input output nil nil)) (prev-out (its-get-output (car its-parent-states))) pair) (if (and (= (length (string-to-list prev-out)) 1) (> (string-to-char prev-out) ?\377) (setq pair (assq (string-to-char (substring input -1)) its-hangul-successor-list))) (progn (its-set-interim-terminal-state state) (its-defrule-otherwise state nil (cdr pair) -2))))) (defmacro its-define-hangul (&rest list) (cons 'progn (mapcar (lambda (l) (let ((case-fold-search nil) (keyseq (its-hangul-sequence-to-key (car l)))) (if (>= (length keyseq) 2) (its-define-hangul-successor-list keyseq)) (list 'its-defrule-hangul keyseq (nth 1 l)))) list)))) (define-its-state-machine its-hangul-map "hangul" "$(CGQ(B" Korean "Map for Hangul input. (Korean)" (defconst its-jeonkak-escape "Z") (defconst its-pankak-escape "X") (its-defrule-select-mode-temporally "B" downcase) (its-defrule-select-mode-temporally "J" jeonkak-downcase) (its-define-hangul-key "r" "$(C$!(B") (its-define-hangul-key "s" "$(C$$(B") (its-define-hangul-key "e" "$(C$'(B") (its-define-hangul-key "f" "$(C$)(B") (its-define-hangul-key "a" "$(C$1(B") (its-define-hangul-key "q" "$(C$2(B") (its-define-hangul-key "t" "$(C$5(B") (its-define-hangul-key "d" "$(C$7(B") (its-define-hangul-key "w" "$(C$8(B") (its-define-hangul-key "c" "$(C$:(B") (its-define-hangul-key "z" "$(C$;(B") (its-define-hangul-key "x" "$(C$<(B") (its-define-hangul-key "v" "$(C$=(B") (its-define-hangul-key "g" "$(C$>(B") (its-define-hangul-key "R" "$(C$"(B") (its-define-hangul-key "E" "$(C$((B") (its-define-hangul-key "Q" "$(C$3(B") (its-define-hangul-key "T" "$(C$6(B") (its-define-hangul-key "W" "$(C$9(B") (its-define-hangul-key "k" "$(C$?(B") (its-define-hangul-key "i" "$(C$A(B") (its-define-hangul-key "j" "$(C$C(B") (its-define-hangul-key "u" "$(C$E(B") (its-define-hangul-key "h" "$(C$G(B") (its-define-hangul-key "y" "$(C$K(B") (its-define-hangul-key "n" "$(C$L(B") (its-define-hangul-key "b" "$(C$P(B") (its-define-hangul-key "m" "$(C$Q(B") (its-define-hangul-key "l" "$(C$S(B") (its-define-hangul-key "o" "$(C$@(B") (its-define-hangul-key "p" "$(C$D(B") (its-define-hangul-key "O" "$(C$B(B") (its-define-hangul-key "P" "$(C$F(B") (its-define-hangul ("$(C$!$?(B" "$(C0!(B") ("$(C$!$?$!(B" "$(C0"(B") ("$(C$!$?$$(B" "$(C0#(B") ("$(C$!$?$'(B" "$(C0$(B") ("$(C$!$?$)(B" "$(C0%(B") ("$(C$!$?$)$!(B" "$(C0&(B") ("$(C$!$?$)$1(B" "$(C0'(B") ("$(C$!$?$1(B" "$(C0((B") ("$(C$!$?$2(B" "$(C0)(B") ("$(C$!$?$2$5(B" "$(C0*(B") ("$(C$!$?$5(B" "$(C0+(B") ("$(C$!$?$6(B" "$(C0,(B") ("$(C$!$?$7(B" "$(C0-(B") ("$(C$!$?$8(B" "$(C0.(B") ("$(C$!$?$:(B" "$(C0/(B") ("$(C$!$?$<(B" "$(C00(B") ("$(C$!$?$=(B" "$(C01(B") ("$(C$!$?$>(B" "$(C02(B") ("$(C$!$@(B" "$(C03(B") ("$(C$!$@$!(B" "$(C04(B") ("$(C$!$@$$(B" "$(C05(B") ("$(C$!$@$)(B" "$(C06(B") ("$(C$!$@$1(B" "$(C07(B") ("$(C$!$@$2(B" "$(C08(B") ("$(C$!$@$5(B" "$(C09(B") ("$(C$!$@$6(B" "$(C0:(B") ("$(C$!$@$7(B" "$(C0;(B") ("$(C$!$A(B" "$(C0<(B") ("$(C$!$A$!(B" "$(C0=(B") ("$(C$!$A$$(B" "$(C0>(B") ("$(C$!$A$)(B" "$(C0?(B") ("$(C$!$A$5(B" "$(C0@(B") ("$(C$!$A$7(B" "$(C0A(B") ("$(C$!$B(B" "$(C0B(B") ("$(C$!$B$$(B" "$(C0C(B") ("$(C$!$B$)(B" "$(C0D(B") ("$(C$!$C(B" "$(C0E(B") ("$(C$!$C$!(B" "$(C0F(B") ("$(C$!$C$$(B" "$(C0G(B") ("$(C$!$C$'(B" "$(C0H(B") ("$(C$!$C$)(B" "$(C0I(B") ("$(C$!$C$)$1(B" "$(C0J(B") ("$(C$!$C$1(B" "$(C0K(B") ("$(C$!$C$2(B" "$(C0L(B") ("$(C$!$C$5(B" "$(C0M(B") ("$(C$!$C$6(B" "$(C0N(B") ("$(C$!$C$7(B" "$(C0O(B") ("$(C$!$C$8(B" "$(C0P(B") ("$(C$!$C$<(B" "$(C0Q(B") ("$(C$!$C$=(B" "$(C0R(B") ("$(C$!$C$>(B" "$(C0S(B") ("$(C$!$D(B" "$(C0T(B") ("$(C$!$D$$(B" "$(C0U(B") ("$(C$!$D$)(B" "$(C0V(B") ("$(C$!$D$1(B" "$(C0W(B") ("$(C$!$D$2(B" "$(C0X(B") ("$(C$!$D$5(B" "$(C0Y(B") ("$(C$!$D$6(B" "$(C0Z(B") ("$(C$!$D$7(B" "$(C0[(B") ("$(C$!$E(B" "$(C0\(B") ("$(C$!$E$!(B" "$(C0](B") ("$(C$!$E$"(B" "$(C0^(B") ("$(C$!$E$$(B" "$(C0_(B") ("$(C$!$E$'(B" "$(C0`(B") ("$(C$!$E$)(B" "$(C0a(B") ("$(C$!$E$1(B" "$(C0b(B") ("$(C$!$E$2(B" "$(C0c(B") ("$(C$!$E$5(B" "$(C0d(B") ("$(C$!$E$6(B" "$(C0e(B") ("$(C$!$E$7(B" "$(C0f(B") ("$(C$!$E$<(B" "$(C0g(B") ("$(C$!$F(B" "$(C0h(B") ("$(C$!$F$$(B" "$(C0i(B") ("$(C$!$F$)(B" "$(C0j(B") ("$(C$!$F$2(B" "$(C0k(B") ("$(C$!$F$5(B" "$(C0l(B") ("$(C$!$G(B" "$(C0m(B") ("$(C$!$G$!(B" "$(C0n(B") ("$(C$!$G$$(B" "$(C0o(B") ("$(C$!$G$'(B" "$(C0p(B") ("$(C$!$G$)(B" "$(C0q(B") ("$(C$!$G$)$1(B" "$(C0r(B") ("$(C$!$G$)$5(B" "$(C0s(B") ("$(C$!$G$)$>(B" "$(C0t(B") ("$(C$!$G$1(B" "$(C0u(B") ("$(C$!$G$2(B" "$(C0v(B") ("$(C$!$G$5(B" "$(C0w(B") ("$(C$!$G$7(B" "$(C0x(B") ("$(C$!$G$8(B" "$(C0y(B") ("$(C$!$G$?(B" "$(C0z(B") ("$(C$!$G$?$!(B" "$(C0{(B") ("$(C$!$G$?$$(B" "$(C0|(B") ("$(C$!$G$?$)(B" "$(C0}(B") ("$(C$!$G$?$)$1(B" "$(C0~(B") ("$(C$!$G$?$1(B" "$(C1!(B") ("$(C$!$G$?$2(B" "$(C1"(B") ("$(C$!$G$?$5(B" "$(C1#(B") ("$(C$!$G$?$7(B" "$(C1$(B") ("$(C$!$G$@(B" "$(C1%(B") ("$(C$!$G$@$$(B" "$(C1&(B") ("$(C$!$G$@$)(B" "$(C1'(B") ("$(C$!$G$@$2(B" "$(C1((B") ("$(C$!$G$@$6(B" "$(C1)(B") ("$(C$!$G$@$7(B" "$(C1*(B") ("$(C$!$G$S(B" "$(C1+(B") ("$(C$!$G$S$!(B" "$(C1,(B") ("$(C$!$G$S$$(B" "$(C1-(B") ("$(C$!$G$S$)(B" "$(C1.(B") ("$(C$!$G$S$1(B" "$(C1/(B") ("$(C$!$G$S$2(B" "$(C10(B") ("$(C$!$G$S$5(B" "$(C11(B") ("$(C$!$G$S$7(B" "$(C12(B") ("$(C$!$K(B" "$(C13(B") ("$(C$!$K$$(B" "$(C14(B") ("$(C$!$K$)(B" "$(C15(B") ("$(C$!$K$2(B" "$(C16(B") ("$(C$!$K$5(B" "$(C17(B") ("$(C$!$L(B" "$(C18(B") ("$(C$!$L$!(B" "$(C19(B") ("$(C$!$L$$(B" "$(C1:(B") ("$(C$!$L$'(B" "$(C1;(B") ("$(C$!$L$)(B" "$(C1<(B") ("$(C$!$L$)$!(B" "$(C1=(B") ("$(C$!$L$)$1(B" "$(C1>(B") ("$(C$!$L$)$>(B" "$(C1?(B") ("$(C$!$L$1(B" "$(C1@(B") ("$(C$!$L$2(B" "$(C1A(B") ("$(C$!$L$5(B" "$(C1B(B") ("$(C$!$L$7(B" "$(C1C(B") ("$(C$!$L$8(B" "$(C1D(B") ("$(C$!$L$C(B" "$(C1E(B") ("$(C$!$L$C$!(B" "$(C1F(B") ("$(C$!$L$C$$(B" "$(C1G(B") ("$(C$!$L$C$)(B" "$(C1H(B") ("$(C$!$L$C$6(B" "$(C1I(B") ("$(C$!$L$C$7(B" "$(C1J(B") ("$(C$!$L$D(B" "$(C1K(B") ("$(C$!$L$D$5(B" "$(C1L(B") ("$(C$!$L$S(B" "$(C1M(B") ("$(C$!$L$S$!(B" "$(C1N(B") ("$(C$!$L$S$$(B" "$(C1O(B") ("$(C$!$L$S$)(B" "$(C1P(B") ("$(C$!$L$S$1(B" "$(C1Q(B") ("$(C$!$L$S$2(B" "$(C1R(B") ("$(C$!$L$S$5(B" "$(C1S(B") ("$(C$!$P(B" "$(C1T(B") ("$(C$!$P$$(B" "$(C1U(B") ("$(C$!$P$)(B" "$(C1V(B") ("$(C$!$Q(B" "$(C1W(B") ("$(C$!$Q$!(B" "$(C1X(B") ("$(C$!$Q$$(B" "$(C1Y(B") ("$(C$!$Q$'(B" "$(C1Z(B") ("$(C$!$Q$)(B" "$(C1[(B") ("$(C$!$Q$)$!(B" "$(C1\(B") ("$(C$!$Q$1(B" "$(C1](B") ("$(C$!$Q$2(B" "$(C1^(B") ("$(C$!$Q$5(B" "$(C1_(B") ("$(C$!$Q$7(B" "$(C1`(B") ("$(C$!$Q$S(B" "$(C1a(B") ("$(C$!$S(B" "$(C1b(B") ("$(C$!$S$!(B" "$(C1c(B") ("$(C$!$S$$(B" "$(C1d(B") ("$(C$!$S$'(B" "$(C1e(B") ("$(C$!$S$)(B" "$(C1f(B") ("$(C$!$S$)$1(B" "$(C1g(B") ("$(C$!$S$1(B" "$(C1h(B") ("$(C$!$S$2(B" "$(C1i(B") ("$(C$!$S$5(B" "$(C1j(B") ("$(C$!$S$7(B" "$(C1k(B") ("$(C$!$S$8(B" "$(C1l(B") ("$(C$!$S$=(B" "$(C1m(B") ("$(C$"$?(B" "$(C1n(B") ("$(C$"$?$!(B" "$(C1o(B") ("$(C$"$?$"(B" "$(C1p(B") ("$(C$"$?$$(B" "$(C1q(B") ("$(C$"$?$)(B" "$(C1r(B") ("$(C$"$?$)$1(B" "$(C1s(B") ("$(C$"$?$1(B" "$(C1t(B") ("$(C$"$?$2(B" "$(C1u(B") ("$(C$"$?$5(B" "$(C1v(B") ("$(C$"$?$6(B" "$(C1w(B") ("$(C$"$?$7(B" "$(C1x(B") ("$(C$"$?$<(B" "$(C1y(B") ("$(C$"$@(B" "$(C1z(B") ("$(C$"$@$!(B" "$(C1{(B") ("$(C$"$@$$(B" "$(C1|(B") ("$(C$"$@$)(B" "$(C1}(B") ("$(C$"$@$1(B" "$(C1~(B") ("$(C$"$@$2(B" "$(C2!(B") ("$(C$"$@$5(B" "$(C2"(B") ("$(C$"$@$6(B" "$(C2#(B") ("$(C$"$@$7(B" "$(C2$(B") ("$(C$"$A(B" "$(C2%(B") ("$(C$"$A$!(B" "$(C2&(B") ("$(C$"$A$)(B" "$(C2'(B") ("$(C$"$C(B" "$(C2((B") ("$(C$"$C$!(B" "$(C2)(B") ("$(C$"$C$"(B" "$(C2*(B") ("$(C$"$C$$(B" "$(C2+(B") ("$(C$"$C$)(B" "$(C2,(B") ("$(C$"$C$1(B" "$(C2-(B") ("$(C$"$C$2(B" "$(C2.(B") ("$(C$"$C$5(B" "$(C2/(B") ("$(C$"$C$6(B" "$(C20(B") ("$(C$"$C$7(B" "$(C21(B") ("$(C$"$D(B" "$(C22(B") ("$(C$"$D$!(B" "$(C23(B") ("$(C$"$D$$(B" "$(C24(B") ("$(C$"$D$1(B" "$(C25(B") ("$(C$"$D$5(B" "$(C26(B") ("$(C$"$D$7(B" "$(C27(B") ("$(C$"$E(B" "$(C28(B") ("$(C$"$E$$(B" "$(C29(B") ("$(C$"$E$)(B" "$(C2:(B") ("$(C$"$E$5(B" "$(C2;(B") ("$(C$"$E$6(B" "$(C2<(B") ("$(C$"$E$<(B" "$(C2=(B") ("$(C$"$F(B" "$(C2>(B") ("$(C$"$G(B" "$(C2?(B") ("$(C$"$G$!(B" "$(C2@(B") ("$(C$"$G$$(B" "$(C2A(B") ("$(C$"$G$$$>(B" "$(C2B(B") ("$(C$"$G$)(B" "$(C2C(B") ("$(C$"$G$1(B" "$(C2D(B") ("$(C$"$G$2(B" "$(C2E(B") ("$(C$"$G$5(B" "$(C2F(B") ("$(C$"$G$7(B" "$(C2G(B") ("$(C$"$G$8(B" "$(C2H(B") ("$(C$"$G$:(B" "$(C2I(B") ("$(C$"$G$?(B" "$(C2J(B") ("$(C$"$G$?$!(B" "$(C2K(B") ("$(C$"$G$?$)(B" "$(C2L(B") ("$(C$"$G$?$6(B" "$(C2M(B") ("$(C$"$G$?$7(B" "$(C2N(B") ("$(C$"$G$@(B" "$(C2O(B") ("$(C$"$G$@$!(B" "$(C2P(B") ("$(C$"$G$@$7(B" "$(C2Q(B") ("$(C$"$G$S(B" "$(C2R(B") ("$(C$"$G$S$$(B" "$(C2S(B") ("$(C$"$G$S$)(B" "$(C2T(B") ("$(C$"$G$S$1(B" "$(C2U(B") ("$(C$"$G$S$2(B" "$(C2V(B") ("$(C$"$G$S$7(B" "$(C2W(B") ("$(C$"$K(B" "$(C2X(B") ("$(C$"$L(B" "$(C2Y(B") ("$(C$"$L$!(B" "$(C2Z(B") ("$(C$"$L$$(B" "$(C2[(B") ("$(C$"$L$)(B" "$(C2\(B") ("$(C$"$L$)$>(B" "$(C2](B") ("$(C$"$L$1(B" "$(C2^(B") ("$(C$"$L$2(B" "$(C2_(B") ("$(C$"$L$5(B" "$(C2`(B") ("$(C$"$L$7(B" "$(C2a(B") ("$(C$"$L$8(B" "$(C2b(B") ("$(C$"$L$C(B" "$(C2c(B") ("$(C$"$L$C$)(B" "$(C2d(B") ("$(C$"$L$C$6(B" "$(C2e(B") ("$(C$"$L$C$7(B" "$(C2f(B") ("$(C$"$L$D(B" "$(C2g(B") ("$(C$"$L$D$!(B" "$(C2h(B") ("$(C$"$L$D$$(B" "$(C2i(B") ("$(C$"$L$D$)(B" "$(C2j(B") ("$(C$"$L$D$1(B" "$(C2k(B") ("$(C$"$L$D$2(B" "$(C2l(B") ("$(C$"$L$D$6(B" "$(C2m(B") ("$(C$"$L$S(B" "$(C2n(B") ("$(C$"$L$S$$(B" "$(C2o(B") ("$(C$"$L$S$)(B" "$(C2p(B") ("$(C$"$L$S$1(B" "$(C2q(B") ("$(C$"$L$S$2(B" "$(C2r(B") ("$(C$"$P(B" "$(C2s(B") ("$(C$"$Q(B" "$(C2t(B") ("$(C$"$Q$!(B" "$(C2u(B") ("$(C$"$Q$$(B" "$(C2v(B") ("$(C$"$Q$$$>(B" "$(C2w(B") ("$(C$"$Q$)(B" "$(C2x(B") ("$(C$"$Q$)$1(B" "$(C2y(B") ("$(C$"$Q$)$>(B" "$(C2z(B") ("$(C$"$Q$1(B" "$(C2{(B") ("$(C$"$Q$2(B" "$(C2|(B") ("$(C$"$Q$5(B" "$(C2}(B") ("$(C$"$Q$7(B" "$(C2~(B") ("$(C$"$Q$<(B" "$(C3!(B") ("$(C$"$S(B" "$(C3"(B") ("$(C$"$S$!(B" "$(C3#(B") ("$(C$"$S$$(B" "$(C3$(B") ("$(C$"$S$)(B" "$(C3%(B") ("$(C$"$S$1(B" "$(C3&(B") ("$(C$"$S$2(B" "$(C3'(B") ("$(C$"$S$5(B" "$(C3((B") ("$(C$"$S$7(B" "$(C3)(B") ("$(C$$$?(B" "$(C3*(B") ("$(C$$$?$!(B" "$(C3+(B") ("$(C$$$?$"(B" "$(C3,(B") ("$(C$$$?$$(B" "$(C3-(B") ("$(C$$$?$'(B" "$(C3.(B") ("$(C$$$?$)(B" "$(C3/(B") ("$(C$$$?$)$!(B" "$(C30(B") ("$(C$$$?$)$1(B" "$(C31(B") ("$(C$$$?$1(B" "$(C32(B") ("$(C$$$?$2(B" "$(C33(B") ("$(C$$$?$5(B" "$(C34(B") ("$(C$$$?$6(B" "$(C35(B") ("$(C$$$?$7(B" "$(C36(B") ("$(C$$$?$8(B" "$(C37(B") ("$(C$$$?$:(B" "$(C38(B") ("$(C$$$?$<(B" "$(C39(B") ("$(C$$$?$>(B" "$(C3:(B") ("$(C$$$@(B" "$(C3;(B") ("$(C$$$@$!(B" "$(C3<(B") ("$(C$$$@$$(B" "$(C3=(B") ("$(C$$$@$)(B" "$(C3>(B") ("$(C$$$@$1(B" "$(C3?(B") ("$(C$$$@$2(B" "$(C3@(B") ("$(C$$$@$5(B" "$(C3A(B") ("$(C$$$@$6(B" "$(C3B(B") ("$(C$$$@$7(B" "$(C3C(B") ("$(C$$$A(B" "$(C3D(B") ("$(C$$$A$!(B" "$(C3E(B") ("$(C$$$A$$(B" "$(C3F(B") ("$(C$$$A$)(B" "$(C3G(B") ("$(C$$$A$1(B" "$(C3H(B") ("$(C$$$A$7(B" "$(C3I(B") ("$(C$$$C(B" "$(C3J(B") ("$(C$$$C$!(B" "$(C3K(B") ("$(C$$$C$!$5(B" "$(C3L(B") ("$(C$$$C$$(B" "$(C3M(B") ("$(C$$$C$)(B" "$(C3N(B") ("$(C$$$C$)$1(B" "$(C3O(B") ("$(C$$$C$)$2(B" "$(C3P(B") ("$(C$$$C$1(B" "$(C3Q(B") ("$(C$$$C$2(B" "$(C3R(B") ("$(C$$$C$5(B" "$(C3S(B") ("$(C$$$C$6(B" "$(C3T(B") ("$(C$$$C$7(B" "$(C3U(B") ("$(C$$$C$>(B" "$(C3V(B") ("$(C$$$D(B" "$(C3W(B") ("$(C$$$D$!(B" "$(C3X(B") ("$(C$$$D$$(B" "$(C3Y(B") ("$(C$$$D$)(B" "$(C3Z(B") ("$(C$$$D$1(B" "$(C3[(B") ("$(C$$$D$2(B" "$(C3\(B") ("$(C$$$D$5(B" "$(C3](B") ("$(C$$$D$6(B" "$(C3^(B") ("$(C$$$D$7(B" "$(C3_(B") ("$(C$$$E(B" "$(C3`(B") ("$(C$$$E$!(B" "$(C3a(B") ("$(C$$$E$$(B" "$(C3b(B") ("$(C$$$E$)(B" "$(C3c(B") ("$(C$$$E$1(B" "$(C3d(B") ("$(C$$$E$2(B" "$(C3e(B") ("$(C$$$E$6(B" "$(C3f(B") ("$(C$$$E$7(B" "$(C3g(B") ("$(C$$$E$;(B" "$(C3h(B") ("$(C$$$F(B" "$(C3i(B") ("$(C$$$F$$(B" "$(C3j(B") ("$(C$$$G(B" "$(C3k(B") ("$(C$$$G$!(B" "$(C3l(B") ("$(C$$$G$$(B" "$(C3m(B") ("$(C$$$G$)(B" "$(C3n(B") ("$(C$$$G$)$1(B" "$(C3o(B") ("$(C$$$G$1(B" "$(C3p(B") ("$(C$$$G$2(B" "$(C3q(B") ("$(C$$$G$5(B" "$(C3r(B") ("$(C$$$G$7(B" "$(C3s(B") ("$(C$$$G$=(B" "$(C3t(B") ("$(C$$$G$>(B" "$(C3u(B") ("$(C$$$G$?(B" "$(C3v(B") ("$(C$$$G$?$$(B" "$(C3w(B") ("$(C$$$G$?$)(B" "$(C3x(B") ("$(C$$$G$?$6(B" "$(C3y(B") ("$(C$$$G$S(B" "$(C3z(B") ("$(C$$$G$S$$(B" "$(C3{(B") ("$(C$$$G$S$)(B" "$(C3|(B") ("$(C$$$G$S$1(B" "$(C3}(B") ("$(C$$$G$S$2(B" "$(C3~(B") ("$(C$$$G$S$5(B" "$(C4!(B") ("$(C$$$K(B" "$(C4"(B") ("$(C$$$K$!(B" "$(C4#(B") ("$(C$$$K$$(B" "$(C4$(B") ("$(C$$$K$)(B" "$(C4%(B") ("$(C$$$K$2(B" "$(C4&(B") ("$(C$$$K$5(B" "$(C4'(B") ("$(C$$$K$7(B" "$(C4((B") ("$(C$$$L(B" "$(C4)(B") ("$(C$$$L$!(B" "$(C4*(B") ("$(C$$$L$$(B" "$(C4+(B") ("$(C$$$L$'(B" "$(C4,(B") ("$(C$$$L$)(B" "$(C4-(B") ("$(C$$$L$1(B" "$(C4.(B") ("$(C$$$L$2(B" "$(C4/(B") ("$(C$$$L$5(B" "$(C40(B") ("$(C$$$L$7(B" "$(C41(B") ("$(C$$$L$C(B" "$(C42(B") ("$(C$$$L$C$6(B" "$(C43(B") ("$(C$$$L$D(B" "$(C44(B") ("$(C$$$L$S(B" "$(C45(B") ("$(C$$$L$S$$(B" "$(C46(B") ("$(C$$$L$S$)(B" "$(C47(B") ("$(C$$$L$S$1(B" "$(C48(B") ("$(C$$$L$S$2(B" "$(C49(B") ("$(C$$$P(B" "$(C4:(B") ("$(C$$$P$!(B" "$(C4;(B") ("$(C$$$P$)(B" "$(C4<(B") ("$(C$$$P$1(B" "$(C4=(B") ("$(C$$$P$2(B" "$(C4>(B") ("$(C$$$P$7(B" "$(C4?(B") ("$(C$$$Q(B" "$(C4@(B") ("$(C$$$Q$!(B" "$(C4A(B") ("$(C$$$Q$$(B" "$(C4B(B") ("$(C$$$Q$)(B" "$(C4C(B") ("$(C$$$Q$)$!(B" "$(C4D(B") ("$(C$$$Q$)$1(B" "$(C4E(B") ("$(C$$$Q$1(B" "$(C4F(B") ("$(C$$$Q$2(B" "$(C4G(B") ("$(C$$$Q$5(B" "$(C4H(B") ("$(C$$$Q$7(B" "$(C4I(B") ("$(C$$$Q$8(B" "$(C4J(B") ("$(C$$$Q$=(B" "$(C4K(B") ("$(C$$$Q$S(B" "$(C4L(B") ("$(C$$$Q$S$$(B" "$(C4M(B") ("$(C$$$Q$S$)(B" "$(C4N(B") ("$(C$$$S(B" "$(C4O(B") ("$(C$$$S$!(B" "$(C4P(B") ("$(C$$$S$$(B" "$(C4Q(B") ("$(C$$$S$)(B" "$(C4R(B") ("$(C$$$S$)$1(B" "$(C4S(B") ("$(C$$$S$1(B" "$(C4T(B") ("$(C$$$S$2(B" "$(C4U(B") ("$(C$$$S$5(B" "$(C4V(B") ("$(C$$$S$7(B" "$(C4W(B") ("$(C$$$S$=(B" "$(C4X(B") ("$(C$'$?(B" "$(C4Y(B") ("$(C$'$?$!(B" "$(C4Z(B") ("$(C$'$?$"(B" "$(C4[(B") ("$(C$'$?$$(B" "$(C4\(B") ("$(C$'$?$'(B" "$(C4](B") ("$(C$'$?$)(B" "$(C4^(B") ("$(C$'$?$)$!(B" "$(C4_(B") ("$(C$'$?$)$1(B" "$(C4`(B") ("$(C$'$?$)$2(B" "$(C4a(B") ("$(C$'$?$)$>(B" "$(C4b(B") ("$(C$'$?$1(B" "$(C4c(B") ("$(C$'$?$2(B" "$(C4d(B") ("$(C$'$?$5(B" "$(C4e(B") ("$(C$'$?$6(B" "$(C4f(B") ("$(C$'$?$7(B" "$(C4g(B") ("$(C$'$?$8(B" "$(C4h(B") ("$(C$'$?$:(B" "$(C4i(B") ("$(C$'$?$>(B" "$(C4j(B") ("$(C$'$@(B" "$(C4k(B") ("$(C$'$@$!(B" "$(C4l(B") ("$(C$'$@$$(B" "$(C4m(B") ("$(C$'$@$)(B" "$(C4n(B") ("$(C$'$@$1(B" "$(C4o(B") ("$(C$'$@$2(B" "$(C4p(B") ("$(C$'$@$5(B" "$(C4q(B") ("$(C$'$@$6(B" "$(C4r(B") ("$(C$'$@$7(B" "$(C4s(B") ("$(C$'$A(B" "$(C4t(B") ("$(C$'$C(B" "$(C4u(B") ("$(C$'$C$!(B" "$(C4v(B") ("$(C$'$C$"(B" "$(C4w(B") ("$(C$'$C$$(B" "$(C4x(B") ("$(C$'$C$'(B" "$(C4y(B") ("$(C$'$C$)(B" "$(C4z(B") ("$(C$'$C$)$1(B" "$(C4{(B") ("$(C$'$C$)$2(B" "$(C4|(B") ("$(C$'$C$1(B" "$(C4}(B") ("$(C$'$C$2(B" "$(C4~(B") ("$(C$'$C$5(B" "$(C5!(B") ("$(C$'$C$7(B" "$(C5"(B") ("$(C$'$C$:(B" "$(C5#(B") ("$(C$'$C$=(B" "$(C5$(B") ("$(C$'$D(B" "$(C5%(B") ("$(C$'$D$!(B" "$(C5&(B") ("$(C$'$D$$(B" "$(C5'(B") ("$(C$'$D$)(B" "$(C5((B") ("$(C$'$D$1(B" "$(C5)(B") ("$(C$'$D$2(B" "$(C5*(B") ("$(C$'$D$5(B" "$(C5+(B") ("$(C$'$D$6(B" "$(C5,(B") ("$(C$'$D$7(B" "$(C5-(B") ("$(C$'$E(B" "$(C5.(B") ("$(C$'$E$$(B" "$(C5/(B") ("$(C$'$E$)(B" "$(C50(B") ("$(C$'$E$6(B" "$(C51(B") ("$(C$'$E$7(B" "$(C52(B") ("$(C$'$F(B" "$(C53(B") ("$(C$'$F$$(B" "$(C54(B") ("$(C$'$G(B" "$(C55(B") ("$(C$'$G$!(B" "$(C56(B") ("$(C$'$G$$(B" "$(C57(B") ("$(C$'$G$'(B" "$(C58(B") ("$(C$'$G$)(B" "$(C59(B") ("$(C$'$G$)$1(B" "$(C5:(B") ("$(C$'$G$)$5(B" "$(C5;(B") ("$(C$'$G$1(B" "$(C5<(B") ("$(C$'$G$2(B" "$(C5=(B") ("$(C$'$G$5(B" "$(C5>(B") ("$(C$'$G$7(B" "$(C5?(B") ("$(C$'$G$:(B" "$(C5@(B") ("$(C$'$G$<(B" "$(C5A(B") ("$(C$'$G$?(B" "$(C5B(B") ("$(C$'$G$?$$(B" "$(C5C(B") ("$(C$'$G$?$)(B" "$(C5D(B") ("$(C$'$G$@(B" "$(C5E(B") ("$(C$'$G$@$6(B" "$(C5F(B") ("$(C$'$G$S(B" "$(C5G(B") ("$(C$'$G$S$$(B" "$(C5H(B") ("$(C$'$G$S$)(B" "$(C5I(B") ("$(C$'$G$S$1(B" "$(C5J(B") ("$(C$'$G$S$2(B" "$(C5K(B") ("$(C$'$G$S$5(B" "$(C5L(B") ("$(C$'$K(B" "$(C5M(B") ("$(C$'$L(B" "$(C5N(B") ("$(C$'$L$!(B" "$(C5O(B") ("$(C$'$L$$(B" "$(C5P(B") ("$(C$'$L$)(B" "$(C5Q(B") ("$(C$'$L$1(B" "$(C5R(B") ("$(C$'$L$2(B" "$(C5S(B") ("$(C$'$L$5(B" "$(C5T(B") ("$(C$'$L$7(B" "$(C5U(B") ("$(C$'$L$C(B" "$(C5V(B") ("$(C$'$L$C$6(B" "$(C5W(B") ("$(C$'$L$D(B" "$(C5X(B") ("$(C$'$L$D$7(B" "$(C5Y(B") ("$(C$'$L$S(B" "$(C5Z(B") ("$(C$'$L$S$$(B" "$(C5[(B") ("$(C$'$L$S$)(B" "$(C5\(B") ("$(C$'$L$S$2(B" "$(C5](B") ("$(C$'$L$S$5(B" "$(C5^(B") ("$(C$'$L$S$7(B" "$(C5_(B") ("$(C$'$P(B" "$(C5`(B") ("$(C$'$P$$(B" "$(C5a(B") ("$(C$'$P$)(B" "$(C5b(B") ("$(C$'$P$1(B" "$(C5c(B") ("$(C$'$P$7(B" "$(C5d(B") ("$(C$'$Q(B" "$(C5e(B") ("$(C$'$Q$!(B" "$(C5f(B") ("$(C$'$Q$$(B" "$(C5g(B") ("$(C$'$Q$'(B" "$(C5h(B") ("$(C$'$Q$)(B" "$(C5i(B") ("$(C$'$Q$)$1(B" "$(C5j(B") ("$(C$'$Q$1(B" "$(C5k(B") ("$(C$'$Q$2(B" "$(C5l(B") ("$(C$'$Q$5(B" "$(C5m(B") ("$(C$'$Q$7(B" "$(C5n(B") ("$(C$'$Q$S(B" "$(C5o(B") ("$(C$'$S(B" "$(C5p(B") ("$(C$'$S$!(B" "$(C5q(B") ("$(C$'$S$$(B" "$(C5r(B") ("$(C$'$S$'(B" "$(C5s(B") ("$(C$'$S$)(B" "$(C5t(B") ("$(C$'$S$1(B" "$(C5u(B") ("$(C$'$S$2(B" "$(C5v(B") ("$(C$'$S$5(B" "$(C5w(B") ("$(C$'$S$6(B" "$(C5x(B") ("$(C$'$S$7(B" "$(C5y(B") ("$(C$'$S$8(B" "$(C5z(B") ("$(C$($?(B" "$(C5{(B") ("$(C$($?$!(B" "$(C5|(B") ("$(C$($?$$(B" "$(C5}(B") ("$(C$($?$)(B" "$(C5~(B") ("$(C$($?$1(B" "$(C6!(B") ("$(C$($?$2(B" "$(C6"(B") ("$(C$($?$5(B" "$(C6#(B") ("$(C$($?$6(B" "$(C6$(B") ("$(C$($?$7(B" "$(C6%(B") ("$(C$($?$>(B" "$(C6&(B") ("$(C$($@(B" "$(C6'(B") ("$(C$($@$!(B" "$(C6((B") ("$(C$($@$$(B" "$(C6)(B") ("$(C$($@$)(B" "$(C6*(B") ("$(C$($@$1(B" "$(C6+(B") ("$(C$($@$2(B" "$(C6,(B") ("$(C$($@$5(B" "$(C6-(B") ("$(C$($@$6(B" "$(C6.(B") ("$(C$($@$7(B" "$(C6/(B") ("$(C$($C(B" "$(C60(B") ("$(C$($C$!(B" "$(C61(B") ("$(C$($C$$(B" "$(C62(B") ("$(C$($C$)(B" "$(C63(B") ("$(C$($C$)$1(B" "$(C64(B") ("$(C$($C$)$2(B" "$(C65(B") ("$(C$($C$1(B" "$(C66(B") ("$(C$($C$2(B" "$(C67(B") ("$(C$($C$5(B" "$(C68(B") ("$(C$($C$6(B" "$(C69(B") ("$(C$($C$7(B" "$(C6:(B") ("$(C$($C$>(B" "$(C6;(B") ("$(C$($D(B" "$(C6<(B") ("$(C$($D$!(B" "$(C6=(B") ("$(C$($D$$(B" "$(C6>(B") ("$(C$($D$)(B" "$(C6?(B") ("$(C$($D$1(B" "$(C6@(B") ("$(C$($D$2(B" "$(C6A(B") ("$(C$($D$5(B" "$(C6B(B") ("$(C$($D$6(B" "$(C6C(B") ("$(C$($D$7(B" "$(C6D(B") ("$(C$($E(B" "$(C6E(B") ("$(C$($E$6(B" "$(C6F(B") ("$(C$($G(B" "$(C6G(B") ("$(C$($G$!(B" "$(C6H(B") ("$(C$($G$$(B" "$(C6I(B") ("$(C$($G$)(B" "$(C6J(B") ("$(C$($G$7(B" "$(C6K(B") ("$(C$($G$?(B" "$(C6L(B") ("$(C$($G$?$)(B" "$(C6M(B") ("$(C$($G$@(B" "$(C6N(B") ("$(C$($G$S(B" "$(C6O(B") ("$(C$($G$S$$(B" "$(C6P(B") ("$(C$($L(B" "$(C6Q(B") ("$(C$($L$!(B" "$(C6R(B") ("$(C$($L$$(B" "$(C6S(B") ("$(C$($L$)(B" "$(C6T(B") ("$(C$($L$)$>(B" "$(C6U(B") ("$(C$($L$1(B" "$(C6V(B") ("$(C$($L$7(B" "$(C6W(B") ("$(C$($L$D(B" "$(C6X(B") ("$(C$($L$S(B" "$(C6Y(B") ("$(C$($L$S$$(B" "$(C6Z(B") ("$(C$($L$S$)(B" "$(C6[(B") ("$(C$($L$S$1(B" "$(C6\(B") ("$(C$($L$S$2(B" "$(C6](B") ("$(C$($L$S$7(B" "$(C6^(B") ("$(C$($Q(B" "$(C6_(B") ("$(C$($Q$!(B" "$(C6`(B") ("$(C$($Q$$(B" "$(C6a(B") ("$(C$($Q$'(B" "$(C6b(B") ("$(C$($Q$)(B" "$(C6c(B") ("$(C$($Q$1(B" "$(C6d(B") ("$(C$($Q$2(B" "$(C6e(B") ("$(C$($Q$5(B" "$(C6f(B") ("$(C$($Q$S(B" "$(C6g(B") ("$(C$($Q$S$$(B" "$(C6h(B") ("$(C$($Q$S$)(B" "$(C6i(B") ("$(C$($Q$S$1(B" "$(C6j(B") ("$(C$($Q$S$2(B" "$(C6k(B") ("$(C$($S(B" "$(C6l(B") ("$(C$($S$$(B" "$(C6m(B") ("$(C$($S$)(B" "$(C6n(B") ("$(C$($S$1(B" "$(C6o(B") ("$(C$($S$2(B" "$(C6p(B") ("$(C$($S$5(B" "$(C6q(B") ("$(C$($S$7(B" "$(C6r(B") ("$(C$)$?(B" "$(C6s(B") ("$(C$)$?$!(B" "$(C6t(B") ("$(C$)$?$$(B" "$(C6u(B") ("$(C$)$?$)(B" "$(C6v(B") ("$(C$)$?$1(B" "$(C6w(B") ("$(C$)$?$2(B" "$(C6x(B") ("$(C$)$?$5(B" "$(C6y(B") ("$(C$)$?$6(B" "$(C6z(B") ("$(C$)$?$7(B" "$(C6{(B") ("$(C$)$?$8(B" "$(C6|(B") ("$(C$)$?$=(B" "$(C6}(B") ("$(C$)$?$>(B" "$(C6~(B") ("$(C$)$@(B" "$(C7!(B") ("$(C$)$@$!(B" "$(C7"(B") ("$(C$)$@$$(B" "$(C7#(B") ("$(C$)$@$)(B" "$(C7$(B") ("$(C$)$@$1(B" "$(C7%(B") ("$(C$)$@$2(B" "$(C7&(B") ("$(C$)$@$5(B" "$(C7'(B") ("$(C$)$@$6(B" "$(C7((B") ("$(C$)$@$7(B" "$(C7)(B") ("$(C$)$A(B" "$(C7*(B") ("$(C$)$A$!(B" "$(C7+(B") ("$(C$)$A$$(B" "$(C7,(B") ("$(C$)$A$5(B" "$(C7-(B") ("$(C$)$A$7(B" "$(C7.(B") ("$(C$)$C(B" "$(C7/(B") ("$(C$)$C$!(B" "$(C70(B") ("$(C$)$C$$(B" "$(C71(B") ("$(C$)$C$)(B" "$(C72(B") ("$(C$)$C$1(B" "$(C73(B") ("$(C$)$C$2(B" "$(C74(B") ("$(C$)$C$5(B" "$(C75(B") ("$(C$)$C$6(B" "$(C76(B") ("$(C$)$C$7(B" "$(C77(B") ("$(C$)$C$>(B" "$(C78(B") ("$(C$)$D(B" "$(C79(B") ("$(C$)$D$!(B" "$(C7:(B") ("$(C$)$D$$(B" "$(C7;(B") ("$(C$)$D$)(B" "$(C7<(B") ("$(C$)$D$1(B" "$(C7=(B") ("$(C$)$D$2(B" "$(C7>(B") ("$(C$)$D$5(B" "$(C7?(B") ("$(C$)$D$7(B" "$(C7@(B") ("$(C$)$E(B" "$(C7A(B") ("$(C$)$E$!(B" "$(C7B(B") ("$(C$)$E$$(B" "$(C7C(B") ("$(C$)$E$)(B" "$(C7D(B") ("$(C$)$E$1(B" "$(C7E(B") ("$(C$)$E$2(B" "$(C7F(B") ("$(C$)$E$5(B" "$(C7G(B") ("$(C$)$E$6(B" "$(C7H(B") ("$(C$)$E$7(B" "$(C7I(B") ("$(C$)$F(B" "$(C7J(B") ("$(C$)$F$$(B" "$(C7K(B") ("$(C$)$F$2(B" "$(C7L(B") ("$(C$)$F$5(B" "$(C7M(B") ("$(C$)$G(B" "$(C7N(B") ("$(C$)$G$!(B" "$(C7O(B") ("$(C$)$G$$(B" "$(C7P(B") ("$(C$)$G$)(B" "$(C7Q(B") ("$(C$)$G$1(B" "$(C7R(B") ("$(C$)$G$2(B" "$(C7S(B") ("$(C$)$G$5(B" "$(C7T(B") ("$(C$)$G$7(B" "$(C7U(B") ("$(C$)$G$?(B" "$(C7V(B") ("$(C$)$G$?$$(B" "$(C7W(B") ("$(C$)$G$?$7(B" "$(C7X(B") ("$(C$)$G$@$6(B" "$(C7Y(B") ("$(C$)$G$S(B" "$(C7Z(B") ("$(C$)$G$S$$(B" "$(C7[(B") ("$(C$)$G$S$)(B" "$(C7\(B") ("$(C$)$G$S$1(B" "$(C7](B") ("$(C$)$G$S$2(B" "$(C7^(B") ("$(C$)$G$S$5(B" "$(C7_(B") ("$(C$)$G$S$7(B" "$(C7`(B") ("$(C$)$K(B" "$(C7a(B") ("$(C$)$K$$(B" "$(C7b(B") ("$(C$)$K$)(B" "$(C7c(B") ("$(C$)$K$2(B" "$(C7d(B") ("$(C$)$K$5(B" "$(C7e(B") ("$(C$)$K$7(B" "$(C7f(B") ("$(C$)$L(B" "$(C7g(B") ("$(C$)$L$!(B" "$(C7h(B") ("$(C$)$L$$(B" "$(C7i(B") ("$(C$)$L$)(B" "$(C7j(B") ("$(C$)$L$1(B" "$(C7k(B") ("$(C$)$L$2(B" "$(C7l(B") ("$(C$)$L$5(B" "$(C7m(B") ("$(C$)$L$7(B" "$(C7n(B") ("$(C$)$L$C(B" "$(C7o(B") ("$(C$)$L$C$6(B" "$(C7p(B") ("$(C$)$L$D(B" "$(C7q(B") ("$(C$)$L$S(B" "$(C7r(B") ("$(C$)$L$S$!(B" "$(C7s(B") ("$(C$)$L$S$$(B" "$(C7t(B") ("$(C$)$L$S$)(B" "$(C7u(B") ("$(C$)$L$S$1(B" "$(C7v(B") ("$(C$)$L$S$5(B" "$(C7w(B") ("$(C$)$L$S$7(B" "$(C7x(B") ("$(C$)$P(B" "$(C7y(B") ("$(C$)$P$!(B" "$(C7z(B") ("$(C$)$P$$(B" "$(C7{(B") ("$(C$)$P$)(B" "$(C7|(B") ("$(C$)$P$1(B" "$(C7}(B") ("$(C$)$P$2(B" "$(C7~(B") ("$(C$)$P$5(B" "$(C8!(B") ("$(C$)$P$7(B" "$(C8"(B") ("$(C$)$Q(B" "$(C8#(B") ("$(C$)$Q$!(B" "$(C8$(B") ("$(C$)$Q$$(B" "$(C8%(B") ("$(C$)$Q$)(B" "$(C8&(B") ("$(C$)$Q$1(B" "$(C8'(B") ("$(C$)$Q$2(B" "$(C8((B") ("$(C$)$Q$5(B" "$(C8)(B") ("$(C$)$Q$7(B" "$(C8*(B") ("$(C$)$Q$8(B" "$(C8+(B") ("$(C$)$Q$<(B" "$(C8,(B") ("$(C$)$Q$=(B" "$(C8-(B") ("$(C$)$S(B" "$(C8.(B") ("$(C$)$S$!(B" "$(C8/(B") ("$(C$)$S$$(B" "$(C80(B") ("$(C$)$S$)(B" "$(C81(B") ("$(C$)$S$1(B" "$(C82(B") ("$(C$)$S$2(B" "$(C83(B") ("$(C$)$S$5(B" "$(C84(B") ("$(C$)$S$7(B" "$(C85(B") ("$(C$1$?(B" "$(C86(B") ("$(C$1$?$!(B" "$(C87(B") ("$(C$1$?$$(B" "$(C88(B") ("$(C$1$?$$$>(B" "$(C89(B") ("$(C$1$?$'(B" "$(C8:(B") ("$(C$1$?$)(B" "$(C8;(B") ("$(C$1$?$)$!(B" "$(C8<(B") ("$(C$1$?$)$1(B" "$(C8=(B") ("$(C$1$?$1(B" "$(C8>(B") ("$(C$1$?$2(B" "$(C8?(B") ("$(C$1$?$5(B" "$(C8@(B") ("$(C$1$?$7(B" "$(C8A(B") ("$(C$1$?$8(B" "$(C8B(B") ("$(C$1$?$<(B" "$(C8C(B") ("$(C$1$?$>(B" "$(C8D(B") ("$(C$1$@(B" "$(C8E(B") ("$(C$1$@$!(B" "$(C8F(B") ("$(C$1$@$$(B" "$(C8G(B") ("$(C$1$@$)(B" "$(C8H(B") ("$(C$1$@$1(B" "$(C8I(B") ("$(C$1$@$2(B" "$(C8J(B") ("$(C$1$@$5(B" "$(C8K(B") ("$(C$1$@$6(B" "$(C8L(B") ("$(C$1$@$7(B" "$(C8M(B") ("$(C$1$@$8(B" "$(C8N(B") ("$(C$1$A(B" "$(C8O(B") ("$(C$1$A$!(B" "$(C8P(B") ("$(C$1$A$)(B" "$(C8Q(B") ("$(C$1$A$7(B" "$(C8R(B") ("$(C$1$C(B" "$(C8S(B") ("$(C$1$C$!(B" "$(C8T(B") ("$(C$1$C$$(B" "$(C8U(B") ("$(C$1$C$)(B" "$(C8V(B") ("$(C$1$C$)$1(B" "$(C8W(B") ("$(C$1$C$1(B" "$(C8X(B") ("$(C$1$C$2(B" "$(C8Y(B") ("$(C$1$C$5(B" "$(C8Z(B") ("$(C$1$C$7(B" "$(C8[(B") ("$(C$1$C$8(B" "$(C8\(B") ("$(C$1$C$>(B" "$(C8](B") ("$(C$1$D(B" "$(C8^(B") ("$(C$1$D$!(B" "$(C8_(B") ("$(C$1$D$$(B" "$(C8`(B") ("$(C$1$D$)(B" "$(C8a(B") ("$(C$1$D$1(B" "$(C8b(B") ("$(C$1$D$2(B" "$(C8c(B") ("$(C$1$D$5(B" "$(C8d(B") ("$(C$1$D$6(B" "$(C8e(B") ("$(C$1$D$7(B" "$(C8f(B") ("$(C$1$E(B" "$(C8g(B") ("$(C$1$E$!(B" "$(C8h(B") ("$(C$1$E$$(B" "$(C8i(B") ("$(C$1$E$)(B" "$(C8j(B") ("$(C$1$E$5(B" "$(C8k(B") ("$(C$1$E$6(B" "$(C8l(B") ("$(C$1$E$7(B" "$(C8m(B") ("$(C$1$E$:(B" "$(C8n(B") ("$(C$1$F(B" "$(C8o(B") ("$(C$1$G(B" "$(C8p(B") ("$(C$1$G$!(B" "$(C8q(B") ("$(C$1$G$!$5(B" "$(C8r(B") ("$(C$1$G$$(B" "$(C8s(B") ("$(C$1$G$)(B" "$(C8t(B") ("$(C$1$G$)$1(B" "$(C8u(B") ("$(C$1$G$1(B" "$(C8v(B") ("$(C$1$G$2(B" "$(C8w(B") ("$(C$1$G$5(B" "$(C8x(B") ("$(C$1$G$7(B" "$(C8y(B") ("$(C$1$G$?(B" "$(C8z(B") ("$(C$1$G$?$$(B" "$(C8{(B") ("$(C$1$G$?$6(B" "$(C8|(B") ("$(C$1$G$?$7(B" "$(C8}(B") ("$(C$1$G$S(B" "$(C8~(B") ("$(C$1$G$S$$(B" "$(C9!(B") ("$(C$1$G$S$)(B" "$(C9"(B") ("$(C$1$G$S$2(B" "$(C9#(B") ("$(C$1$G$S$5(B" "$(C9$(B") ("$(C$1$G$S$7(B" "$(C9%(B") ("$(C$1$K(B" "$(C9&(B") ("$(C$1$K$$(B" "$(C9'(B") ("$(C$1$K$)(B" "$(C9((B") ("$(C$1$K$2(B" "$(C9)(B") ("$(C$1$K$5(B" "$(C9*(B") ("$(C$1$L(B" "$(C9+(B") ("$(C$1$L$!(B" "$(C9,(B") ("$(C$1$L$"(B" "$(C9-(B") ("$(C$1$L$$(B" "$(C9.(B") ("$(C$1$L$'(B" "$(C9/(B") ("$(C$1$L$)(B" "$(C90(B") ("$(C$1$L$)$!(B" "$(C91(B") ("$(C$1$L$)$1(B" "$(C92(B") ("$(C$1$L$1(B" "$(C93(B") ("$(C$1$L$2(B" "$(C94(B") ("$(C$1$L$5(B" "$(C95(B") ("$(C$1$L$7(B" "$(C96(B") ("$(C$1$L$<(B" "$(C97(B") ("$(C$1$L$>(B" "$(C98(B") ("$(C$1$L$C(B" "$(C99(B") ("$(C$1$L$C$$(B" "$(C9:(B") ("$(C$1$L$C$)(B" "$(C9;(B") ("$(C$1$L$C$2(B" "$(C9<(B") ("$(C$1$L$C$5(B" "$(C9=(B") ("$(C$1$L$D(B" "$(C9>(B") ("$(C$1$L$S(B" "$(C9?(B") ("$(C$1$L$S$$(B" "$(C9@(B") ("$(C$1$L$S$)(B" "$(C9A(B") ("$(C$1$P(B" "$(C9B(B") ("$(C$1$P$$(B" "$(C9C(B") ("$(C$1$P$)(B" "$(C9D(B") ("$(C$1$P$1(B" "$(C9E(B") ("$(C$1$P$5(B" "$(C9F(B") ("$(C$1$Q(B" "$(C9G(B") ("$(C$1$Q$$(B" "$(C9H(B") ("$(C$1$Q$)(B" "$(C9I(B") ("$(C$1$Q$1(B" "$(C9J(B") ("$(C$1$Q$5(B" "$(C9K(B") ("$(C$1$S(B" "$(C9L(B") ("$(C$1$S$!(B" "$(C9M(B") ("$(C$1$S$$(B" "$(C9N(B") ("$(C$1$S$'(B" "$(C9O(B") ("$(C$1$S$)(B" "$(C9P(B") ("$(C$1$S$)$1(B" "$(C9Q(B") ("$(C$1$S$1(B" "$(C9R(B") ("$(C$1$S$2(B" "$(C9S(B") ("$(C$1$S$5(B" "$(C9T(B") ("$(C$1$S$6(B" "$(C9U(B") ("$(C$1$S$7(B" "$(C9V(B") ("$(C$1$S$:(B" "$(C9W(B") ("$(C$1$S$<(B" "$(C9X(B") ("$(C$2$?(B" "$(C9Y(B") ("$(C$2$?$!(B" "$(C9Z(B") ("$(C$2$?$!$5(B" "$(C9\(B") ("$(C$2$?$"(B" "$(C9[(B") ("$(C$2$?$$(B" "$(C9](B") ("$(C$2$?$'(B" "$(C9^(B") ("$(C$2$?$)(B" "$(C9_(B") ("$(C$2$?$)$!(B" "$(C9`(B") ("$(C$2$?$)$1(B" "$(C9a(B") ("$(C$2$?$)$2(B" "$(C9b(B") ("$(C$2$?$1(B" "$(C9c(B") ("$(C$2$?$2(B" "$(C9d(B") ("$(C$2$?$5(B" "$(C9e(B") ("$(C$2$?$7(B" "$(C9f(B") ("$(C$2$?$<(B" "$(C9g(B") ("$(C$2$@(B" "$(C9h(B") ("$(C$2$@$!(B" "$(C9i(B") ("$(C$2$@$$(B" "$(C9j(B") ("$(C$2$@$)(B" "$(C9k(B") ("$(C$2$@$1(B" "$(C9l(B") ("$(C$2$@$2(B" "$(C9m(B") ("$(C$2$@$5(B" "$(C9n(B") ("$(C$2$@$6(B" "$(C9o(B") ("$(C$2$@$7(B" "$(C9p(B") ("$(C$2$@$<(B" "$(C9q(B") ("$(C$2$A(B" "$(C9r(B") ("$(C$2$A$!(B" "$(C9s(B") ("$(C$2$A$$(B" "$(C9t(B") ("$(C$2$A$2(B" "$(C9u(B") ("$(C$2$C(B" "$(C9v(B") ("$(C$2$C$!(B" "$(C9w(B") ("$(C$2$C$$(B" "$(C9x(B") ("$(C$2$C$'(B" "$(C9y(B") ("$(C$2$C$)(B" "$(C9z(B") ("$(C$2$C$)$1(B" "$(C9{(B") ("$(C$2$C$1(B" "$(C9|(B") ("$(C$2$C$2(B" "$(C9}(B") ("$(C$2$C$5(B" "$(C9~(B") ("$(C$2$C$7(B" "$(C:!(B") ("$(C$2$C$8(B" "$(C:"(B") ("$(C$2$D(B" "$(C:#(B") ("$(C$2$D$!(B" "$(C:$(B") ("$(C$2$D$$(B" "$(C:%(B") ("$(C$2$D$'(B" "$(C:&(B") ("$(C$2$D$)(B" "$(C:'(B") ("$(C$2$D$1(B" "$(C:((B") ("$(C$2$D$2(B" "$(C:)(B") ("$(C$2$D$5(B" "$(C:*(B") ("$(C$2$D$6(B" "$(C:+(B") ("$(C$2$D$7(B" "$(C:,(B") ("$(C$2$E(B" "$(C:-(B") ("$(C$2$E$!(B" "$(C:.(B") ("$(C$2$E$$(B" "$(C:/(B") ("$(C$2$E$)(B" "$(C:0(B") ("$(C$2$E$2(B" "$(C:1(B") ("$(C$2$E$5(B" "$(C:2(B") ("$(C$2$E$6(B" "$(C:3(B") ("$(C$2$E$7(B" "$(C:4(B") ("$(C$2$E$<(B" "$(C:5(B") ("$(C$2$F(B" "$(C:6(B") ("$(C$2$F$$(B" "$(C:7(B") ("$(C$2$G(B" "$(C:8(B") ("$(C$2$G$!(B" "$(C:9(B") ("$(C$2$G$"(B" "$(C::(B") ("$(C$2$G$$(B" "$(C:;(B") ("$(C$2$G$)(B" "$(C:<(B") ("$(C$2$G$1(B" "$(C:=(B") ("$(C$2$G$2(B" "$(C:>(B") ("$(C$2$G$5(B" "$(C:?(B") ("$(C$2$G$7(B" "$(C:@(B") ("$(C$2$G$?(B" "$(C:A(B") ("$(C$2$G$?$$(B" "$(C:B(B") ("$(C$2$G$?$6(B" "$(C:C(B") ("$(C$2$G$@(B" "$(C:D(B") ("$(C$2$G$@$6(B" "$(C:E(B") ("$(C$2$G$S(B" "$(C:F(B") ("$(C$2$G$S$!(B" "$(C:G(B") ("$(C$2$G$S$$(B" "$(C:H(B") ("$(C$2$G$S$)(B" "$(C:I(B") ("$(C$2$G$S$1(B" "$(C:J(B") ("$(C$2$G$S$2(B" "$(C:K(B") ("$(C$2$K(B" "$(C:L(B") ("$(C$2$K$$(B" "$(C:M(B") ("$(C$2$L(B" "$(C:N(B") ("$(C$2$L$!(B" "$(C:O(B") ("$(C$2$L$$(B" "$(C:P(B") ("$(C$2$L$'(B" "$(C:Q(B") ("$(C$2$L$)(B" "$(C:R(B") ("$(C$2$L$)$!(B" "$(C:S(B") ("$(C$2$L$)$1(B" "$(C:T(B") ("$(C$2$L$1(B" "$(C:U(B") ("$(C$2$L$2(B" "$(C:V(B") ("$(C$2$L$5(B" "$(C:W(B") ("$(C$2$L$7(B" "$(C:X(B") ("$(C$2$L$<(B" "$(C:Y(B") ("$(C$2$L$=(B" "$(C:Z(B") ("$(C$2$L$C(B" "$(C:[(B") ("$(C$2$L$C$)(B" "$(C:\(B") ("$(C$2$L$C$6(B" "$(C:](B") ("$(C$2$L$D(B" "$(C:^(B") ("$(C$2$L$S(B" "$(C:_(B") ("$(C$2$L$S$!(B" "$(C:`(B") ("$(C$2$L$S$$(B" "$(C:a(B") ("$(C$2$L$S$)(B" "$(C:b(B") ("$(C$2$L$S$7(B" "$(C:c(B") ("$(C$2$P(B" "$(C:d(B") ("$(C$2$P$$(B" "$(C:e(B") ("$(C$2$P$)(B" "$(C:f(B") ("$(C$2$P$1(B" "$(C:g(B") ("$(C$2$P$5(B" "$(C:h(B") ("$(C$2$P$7(B" "$(C:i(B") ("$(C$2$Q(B" "$(C:j(B") ("$(C$2$Q$!(B" "$(C:k(B") ("$(C$2$Q$$(B" "$(C:l(B") ("$(C$2$Q$)(B" "$(C:m(B") ("$(C$2$Q$1(B" "$(C:n(B") ("$(C$2$Q$2(B" "$(C:o(B") ("$(C$2$Q$5(B" "$(C:p(B") ("$(C$2$S(B" "$(C:q(B") ("$(C$2$S$!(B" "$(C:r(B") ("$(C$2$S$$(B" "$(C:s(B") ("$(C$2$S$)(B" "$(C:t(B") ("$(C$2$S$)$1(B" "$(C:u(B") ("$(C$2$S$1(B" "$(C:v(B") ("$(C$2$S$2(B" "$(C:w(B") ("$(C$2$S$5(B" "$(C:x(B") ("$(C$2$S$7(B" "$(C:y(B") ("$(C$2$S$8(B" "$(C:z(B") ("$(C$2$S$:(B" "$(C:{(B") ("$(C$3$?(B" "$(C:|(B") ("$(C$3$?$!(B" "$(C:}(B") ("$(C$3$?$$(B" "$(C:~(B") ("$(C$3$?$)(B" "$(C;!(B") ("$(C$3$?$)$1(B" "$(C;"(B") ("$(C$3$?$1(B" "$(C;#(B") ("$(C$3$?$2(B" "$(C;$(B") ("$(C$3$?$5(B" "$(C;%(B") ("$(C$3$?$6(B" "$(C;&(B") ("$(C$3$?$7(B" "$(C;'(B") ("$(C$3$?$>(B" "$(C;((B") ("$(C$3$@(B" "$(C;)(B") ("$(C$3$@$!(B" "$(C;*(B") ("$(C$3$@$$(B" "$(C;+(B") ("$(C$3$@$)(B" "$(C;,(B") ("$(C$3$@$1(B" "$(C;-(B") ("$(C$3$@$2(B" "$(C;.(B") ("$(C$3$@$5(B" "$(C;/(B") ("$(C$3$@$6(B" "$(C;0(B") ("$(C$3$@$7(B" "$(C;1(B") ("$(C$3$A(B" "$(C;2(B") ("$(C$3$A$!(B" "$(C;3(B") ("$(C$3$A$1(B" "$(C;4(B") ("$(C$3$C(B" "$(C;5(B") ("$(C$3$C$!(B" "$(C;6(B") ("$(C$3$C$$(B" "$(C;7(B") ("$(C$3$C$'(B" "$(C;8(B") ("$(C$3$C$)(B" "$(C;9(B") ("$(C$3$C$1(B" "$(C;:(B") ("$(C$3$C$5(B" "$(C;;(B") ("$(C$3$C$6(B" "$(C;<(B") ("$(C$3$C$7(B" "$(C;=(B") ("$(C$3$D(B" "$(C;>(B") ("$(C$3$D$7(B" "$(C;?(B") ("$(C$3$E(B" "$(C;@(B") ("$(C$3$E$!(B" "$(C;A(B") ("$(C$3$E$1(B" "$(C;B(B") ("$(C$3$E$2(B" "$(C;C(B") ("$(C$3$E$5(B" "$(C;D(B") ("$(C$3$E$6(B" "$(C;E(B") ("$(C$3$E$7(B" "$(C;F(B") ("$(C$3$G(B" "$(C;G(B") ("$(C$3$G$!(B" "$(C;H(B") ("$(C$3$G$$(B" "$(C;I(B") ("$(C$3$G$)(B" "$(C;J(B") ("$(C$3$G$1(B" "$(C;K(B") ("$(C$3$G$2(B" "$(C;L(B") ("$(C$3$G$7(B" "$(C;M(B") ("$(C$3$G$S(B" "$(C;N(B") ("$(C$3$K(B" "$(C;O(B") ("$(C$3$K$7(B" "$(C;P(B") ("$(C$3$L(B" "$(C;Q(B") ("$(C$3$L$!(B" "$(C;R(B") ("$(C$3$L$$(B" "$(C;S(B") ("$(C$3$L$)(B" "$(C;T(B") ("$(C$3$L$1(B" "$(C;U(B") ("$(C$3$L$5(B" "$(C;V(B") ("$(C$3$L$7(B" "$(C;W(B") ("$(C$3$P(B" "$(C;X(B") ("$(C$3$P$7(B" "$(C;Y(B") ("$(C$3$Q(B" "$(C;Z(B") ("$(C$3$Q$$(B" "$(C;[(B") ("$(C$3$Q$)(B" "$(C;\(B") ("$(C$3$Q$1(B" "$(C;](B") ("$(C$3$Q$2(B" "$(C;^(B") ("$(C$3$S(B" "$(C;_(B") ("$(C$3$S$!(B" "$(C;`(B") ("$(C$3$S$$(B" "$(C;a(B") ("$(C$3$S$)(B" "$(C;b(B") ("$(C$3$S$1(B" "$(C;c(B") ("$(C$3$S$2(B" "$(C;d(B") ("$(C$3$S$5(B" "$(C;e(B") ("$(C$3$S$7(B" "$(C;f(B") ("$(C$5$?(B" "$(C;g(B") ("$(C$5$?$!(B" "$(C;h(B") ("$(C$5$?$!$5(B" "$(C;i(B") ("$(C$5$?$$(B" "$(C;j(B") ("$(C$5$?$'(B" "$(C;k(B") ("$(C$5$?$)(B" "$(C;l(B") ("$(C$5$?$)$!(B" "$(C;m(B") ("$(C$5$?$)$1(B" "$(C;n(B") ("$(C$5$?$1(B" "$(C;o(B") ("$(C$5$?$2(B" "$(C;p(B") ("$(C$5$?$5(B" "$(C;q(B") ("$(C$5$?$5$6(B" "$(C;r(B") ("$(C$5$?$7(B" "$(C;s(B") ("$(C$5$?$<(B" "$(C;t(B") ("$(C$5$@(B" "$(C;u(B") ("$(C$5$@$!(B" "$(C;v(B") ("$(C$5$@$$(B" "$(C;w(B") ("$(C$5$@$)(B" "$(C;x(B") ("$(C$5$@$1(B" "$(C;y(B") ("$(C$5$@$2(B" "$(C;z(B") ("$(C$5$@$5(B" "$(C;{(B") ("$(C$5$@$6(B" "$(C;|(B") ("$(C$5$@$7(B" "$(C;}(B") ("$(C$5$A(B" "$(C;~(B") ("$(C$5$A$!(B" "$(C(B") ("$(C$5$D$)(B" "$(C(B") ("$(C$5$Q$1(B" "$(C=?(B") ("$(C$5$Q$2(B" "$(C=@(B") ("$(C$5$Q$5(B" "$(C=A(B") ("$(C$5$Q$7(B" "$(C=B(B") ("$(C$5$S(B" "$(C=C(B") ("$(C$5$S$!(B" "$(C=D(B") ("$(C$5$S$$(B" "$(C=E(B") ("$(C$5$S$'(B" "$(C=F(B") ("$(C$5$S$)(B" "$(C=G(B") ("$(C$5$S$)$>(B" "$(C=H(B") ("$(C$5$S$1(B" "$(C=I(B") ("$(C$5$S$2(B" "$(C=J(B") ("$(C$5$S$5(B" "$(C=K(B") ("$(C$5$S$7(B" "$(C=L(B") ("$(C$5$S$=(B" "$(C=M(B") ("$(C$6$?(B" "$(C=N(B") ("$(C$6$?$!(B" "$(C=O(B") ("$(C$6$?$!$5(B" "$(C=P(B") ("$(C$6$?$$(B" "$(C=Q(B") ("$(C$6$?$)(B" "$(C=R(B") ("$(C$6$?$1(B" "$(C=S(B") ("$(C$6$?$2(B" "$(C=T(B") ("$(C$6$?$6(B" "$(C=U(B") ("$(C$6$?$7(B" "$(C=V(B") ("$(C$6$?$>(B" "$(C=W(B") ("$(C$6$@(B" "$(C=X(B") ("$(C$6$@$!(B" "$(C=Y(B") ("$(C$6$@$$(B" "$(C=Z(B") ("$(C$6$@$)(B" "$(C=[(B") ("$(C$6$@$1(B" "$(C=\(B") ("$(C$6$@$2(B" "$(C=](B") ("$(C$6$@$6(B" "$(C=^(B") ("$(C$6$@$7(B" "$(C=_(B") ("$(C$6$A$7(B" "$(C=`(B") ("$(C$6$C(B" "$(C=a(B") ("$(C$6$C$!(B" "$(C=b(B") ("$(C$6$C$$(B" "$(C=c(B") ("$(C$6$C$)(B" "$(C=d(B") ("$(C$6$C$)$2(B" "$(C=e(B") ("$(C$6$C$1(B" "$(C=f(B") ("$(C$6$C$2(B" "$(C=g(B") ("$(C$6$C$6(B" "$(C=h(B") ("$(C$6$C$7(B" "$(C=i(B") ("$(C$6$D(B" "$(C=j(B") ("$(C$6$D$$(B" "$(C=k(B") ("$(C$6$D$)(B" "$(C=l(B") ("$(C$6$F$$(B" "$(C=m(B") ("$(C$6$G(B" "$(C=n(B") ("$(C$6$G$!(B" "$(C=o(B") ("$(C$6$G$$(B" "$(C=p(B") ("$(C$6$G$'(B" "$(C=q(B") ("$(C$6$G$)(B" "$(C=r(B") ("$(C$6$G$)$1(B" "$(C=s(B") ("$(C$6$G$1(B" "$(C=t(B") ("$(C$6$G$2(B" "$(C=u(B") ("$(C$6$G$7(B" "$(C=v(B") ("$(C$6$G$?(B" "$(C=w(B") ("$(C$6$G$?$!(B" "$(C=x(B") ("$(C$6$G$?$$(B" "$(C=y(B") ("$(C$6$G$?$6(B" "$(C=z(B") ("$(C$6$G$@(B" "$(C={(B") ("$(C$6$G$@$6(B" "$(C=|(B") ("$(C$6$G$S(B" "$(C=}(B") ("$(C$6$G$S$$(B" "$(C=~(B") ("$(C$6$G$S$)(B" "$(C>!(B") ("$(C$6$G$S$1(B" "$(C>"(B") ("$(C$6$G$S$2(B" "$(C>#(B") ("$(C$6$K(B" "$(C>$(B") ("$(C$6$L(B" "$(C>%(B") ("$(C$6$L$!(B" "$(C>&(B") ("$(C$6$L$$(B" "$(C>'(B") ("$(C$6$L$)(B" "$(C>((B") ("$(C$6$L$1(B" "$(C>)(B") ("$(C$6$L$2(B" "$(C>*(B") ("$(C$6$L$7(B" "$(C>+(B") ("$(C$6$L$C(B" "$(C>,(B") ("$(C$6$L$C$6(B" "$(C>-(B") ("$(C$6$L$D(B" "$(C>.(B") ("$(C$6$L$S(B" "$(C>/(B") ("$(C$6$L$S$$(B" "$(C>0(B") ("$(C$6$P$7(B" "$(C>1(B") ("$(C$6$Q(B" "$(C>2(B") ("$(C$6$Q$!(B" "$(C>3(B") ("$(C$6$Q$$(B" "$(C>4(B") ("$(C$6$Q$)(B" "$(C>5(B") ("$(C$6$Q$)$1(B" "$(C>6(B") ("$(C$6$Q$)$>(B" "$(C>7(B") ("$(C$6$Q$1(B" "$(C>8(B") ("$(C$6$Q$2(B" "$(C>9(B") ("$(C$6$Q$S(B" "$(C>:(B") ("$(C$6$Q$S$$(B" "$(C>;(B") ("$(C$6$Q$S$)(B" "$(C><(B") ("$(C$6$Q$S$1(B" "$(C>=(B") ("$(C$6$S(B" "$(C>>(B") ("$(C$6$S$!(B" "$(C>?(B") ("$(C$6$S$$(B" "$(C>@(B") ("$(C$6$S$)(B" "$(C>A(B") ("$(C$6$S$1(B" "$(C>B(B") ("$(C$6$S$2(B" "$(C>C(B") ("$(C$6$S$5(B" "$(C>D(B") ("$(C$6$S$7(B" "$(C>E(B") ("$(C$7$?(B" "$(C>F(B") ("$(C$7$?$!(B" "$(C>G(B") ("$(C$7$?$$(B" "$(C>H(B") ("$(C$7$?$$$8(B" "$(C>I(B") ("$(C$7$?$$$>(B" "$(C>J(B") ("$(C$7$?$)(B" "$(C>K(B") ("$(C$7$?$)$!(B" "$(C>L(B") ("$(C$7$?$)$1(B" "$(C>M(B") ("$(C$7$?$)$>(B" "$(C>N(B") ("$(C$7$?$1(B" "$(C>O(B") ("$(C$7$?$2(B" "$(C>P(B") ("$(C$7$?$5(B" "$(C>Q(B") ("$(C$7$?$6(B" "$(C>R(B") ("$(C$7$?$7(B" "$(C>S(B") ("$(C$7$?$<(B" "$(C>T(B") ("$(C$7$?$=(B" "$(C>U(B") ("$(C$7$@(B" "$(C>V(B") ("$(C$7$@$!(B" "$(C>W(B") ("$(C$7$@$$(B" "$(C>X(B") ("$(C$7$@$)(B" "$(C>Y(B") ("$(C$7$@$1(B" "$(C>Z(B") ("$(C$7$@$2(B" "$(C>[(B") ("$(C$7$@$5(B" "$(C>\(B") ("$(C$7$@$6(B" "$(C>](B") ("$(C$7$@$7(B" "$(C>^(B") ("$(C$7$A(B" "$(C>_(B") ("$(C$7$A$!(B" "$(C>`(B") ("$(C$7$A$$(B" "$(C>a(B") ("$(C$7$A$)(B" "$(C>b(B") ("$(C$7$A$)$2(B" "$(C>c(B") ("$(C$7$A$1(B" "$(C>d(B") ("$(C$7$A$2(B" "$(C>e(B") ("$(C$7$A$5(B" "$(C>f(B") ("$(C$7$A$7(B" "$(C>g(B") ("$(C$7$A$<(B" "$(C>h(B") ("$(C$7$A$>(B" "$(C>i(B") ("$(C$7$B(B" "$(C>j(B") ("$(C$7$B$$(B" "$(C>k(B") ("$(C$7$B$)(B" "$(C>l(B") ("$(C$7$B$2(B" "$(C>m(B") ("$(C$7$C(B" "$(C>n(B") ("$(C$7$C$!(B" "$(C>o(B") ("$(C$7$C$$(B" "$(C>p(B") ("$(C$7$C$$$8(B" "$(C>q(B") ("$(C$7$C$'(B" "$(C>r(B") ("$(C$7$C$)(B" "$(C>s(B") ("$(C$7$C$)$!(B" "$(C>t(B") ("$(C$7$C$)$1(B" "$(C>u(B") ("$(C$7$C$1(B" "$(C>v(B") ("$(C$7$C$2(B" "$(C>w(B") ("$(C$7$C$2$5(B" "$(C>x(B") ("$(C$7$C$5(B" "$(C>y(B") ("$(C$7$C$6(B" "$(C>z(B") ("$(C$7$C$7(B" "$(C>{(B") ("$(C$7$C$8(B" "$(C>|(B") ("$(C$7$C$;(B" "$(C>}(B") ("$(C$7$C$=(B" "$(C>~(B") ("$(C$7$D(B" "$(C?!(B") ("$(C$7$D$!(B" "$(C?"(B") ("$(C$7$D$$(B" "$(C?#(B") ("$(C$7$D$)(B" "$(C?$(B") ("$(C$7$D$1(B" "$(C?%(B") ("$(C$7$D$2(B" "$(C?&(B") ("$(C$7$D$5(B" "$(C?'(B") ("$(C$7$D$7(B" "$(C?((B") ("$(C$7$E(B" "$(C?)(B") ("$(C$7$E$!(B" "$(C?*(B") ("$(C$7$E$"(B" "$(C?+(B") ("$(C$7$E$$(B" "$(C?,(B") ("$(C$7$E$)(B" "$(C?-(B") ("$(C$7$E$)$1(B" "$(C?.(B") ("$(C$7$E$)$2(B" "$(C?/(B") ("$(C$7$E$1(B" "$(C?0(B") ("$(C$7$E$2(B" "$(C?1(B") ("$(C$7$E$2$5(B" "$(C?2(B") ("$(C$7$E$5(B" "$(C?3(B") ("$(C$7$E$6(B" "$(C?4(B") ("$(C$7$E$7(B" "$(C?5(B") ("$(C$7$E$<(B" "$(C?6(B") ("$(C$7$E$=(B" "$(C?7(B") ("$(C$7$E$>(B" "$(C?8(B") ("$(C$7$F(B" "$(C?9(B") ("$(C$7$F$$(B" "$(C?:(B") ("$(C$7$F$)(B" "$(C?;(B") ("$(C$7$F$1(B" "$(C?<(B") ("$(C$7$F$2(B" "$(C?=(B") ("$(C$7$F$5(B" "$(C?>(B") ("$(C$7$F$6(B" "$(C??(B") ("$(C$7$G(B" "$(C?@(B") ("$(C$7$G$!(B" "$(C?A(B") ("$(C$7$G$$(B" "$(C?B(B") ("$(C$7$G$)(B" "$(C?C(B") ("$(C$7$G$)$!(B" "$(C?D(B") ("$(C$7$G$)$1(B" "$(C?E(B") ("$(C$7$G$)$5(B" "$(C?F(B") ("$(C$7$G$)$>(B" "$(C?G(B") ("$(C$7$G$1(B" "$(C?H(B") ("$(C$7$G$2(B" "$(C?I(B") ("$(C$7$G$5(B" "$(C?J(B") ("$(C$7$G$7(B" "$(C?K(B") ("$(C$7$G$:(B" "$(C?L(B") ("$(C$7$G$?(B" "$(C?M(B") ("$(C$7$G$?$!(B" "$(C?N(B") ("$(C$7$G$?$$(B" "$(C?O(B") ("$(C$7$G$?$)(B" "$(C?P(B") ("$(C$7$G$?$1(B" "$(C?Q(B") ("$(C$7$G$?$2(B" "$(C?R(B") ("$(C$7$G$?$5(B" "$(C?S(B") ("$(C$7$G$?$6(B" "$(C?T(B") ("$(C$7$G$?$7(B" "$(C?U(B") ("$(C$7$G$@(B" "$(C?V(B") ("$(C$7$G$@$!(B" "$(C?W(B") ("$(C$7$G$@$$(B" "$(C?X(B") ("$(C$7$G$@$1(B" "$(C?Y(B") ("$(C$7$G$@$5(B" "$(C?Z(B") ("$(C$7$G$@$7(B" "$(C?[(B") ("$(C$7$G$S(B" "$(C?\(B") ("$(C$7$G$S$!(B" "$(C?](B") ("$(C$7$G$S$$(B" "$(C?^(B") ("$(C$7$G$S$)(B" "$(C?_(B") ("$(C$7$G$S$1(B" "$(C?`(B") ("$(C$7$G$S$2(B" "$(C?a(B") ("$(C$7$G$S$5(B" "$(C?b(B") ("$(C$7$G$S$7(B" "$(C?c(B") ("$(C$7$K(B" "$(C?d(B") ("$(C$7$K$!(B" "$(C?e(B") ("$(C$7$K$$(B" "$(C?f(B") ("$(C$7$K$)(B" "$(C?g(B") ("$(C$7$K$1(B" "$(C?h(B") ("$(C$7$K$2(B" "$(C?i(B") ("$(C$7$K$5(B" "$(C?j(B") ("$(C$7$K$7(B" "$(C?k(B") ("$(C$7$L(B" "$(C?l(B") ("$(C$7$L$!(B" "$(C?m(B") ("$(C$7$L$$(B" "$(C?n(B") ("$(C$7$L$)(B" "$(C?o(B") ("$(C$7$L$)$!(B" "$(C?p(B") ("$(C$7$L$)$1(B" "$(C?q(B") ("$(C$7$L$1(B" "$(C?r(B") ("$(C$7$L$2(B" "$(C?s(B") ("$(C$7$L$5(B" "$(C?t(B") ("$(C$7$L$7(B" "$(C?u(B") ("$(C$7$L$C(B" "$(C?v(B") ("$(C$7$L$C$!(B" "$(C?w(B") ("$(C$7$L$C$$(B" "$(C?x(B") ("$(C$7$L$C$)(B" "$(C?y(B") ("$(C$7$L$C$1(B" "$(C?z(B") ("$(C$7$L$C$2(B" "$(C?{(B") ("$(C$7$L$C$6(B" "$(C?|(B") ("$(C$7$L$C$7(B" "$(C?}(B") ("$(C$7$L$D(B" "$(C?~(B") ("$(C$7$L$D$!(B" "$(C@!(B") ("$(C$7$L$D$$(B" "$(C@"(B") ("$(C$7$L$D$)(B" "$(C@#(B") ("$(C$7$L$D$1(B" "$(C@$(B") ("$(C$7$L$D$2(B" "$(C@%(B") ("$(C$7$L$D$7(B" "$(C@&(B") ("$(C$7$L$S(B" "$(C@'(B") ("$(C$7$L$S$!(B" "$(C@((B") ("$(C$7$L$S$$(B" "$(C@)(B") ("$(C$7$L$S$)(B" "$(C@*(B") ("$(C$7$L$S$1(B" "$(C@+(B") ("$(C$7$L$S$2(B" "$(C@,(B") ("$(C$7$L$S$5(B" "$(C@-(B") ("$(C$7$L$S$7(B" "$(C@.(B") ("$(C$7$P(B" "$(C@/(B") ("$(C$7$P$!(B" "$(C@0(B") ("$(C$7$P$$(B" "$(C@1(B") ("$(C$7$P$)(B" "$(C@2(B") ("$(C$7$P$1(B" "$(C@3(B") ("$(C$7$P$2(B" "$(C@4(B") ("$(C$7$P$5(B" "$(C@5(B") ("$(C$7$P$7(B" "$(C@6(B") ("$(C$7$P$:(B" "$(C@7(B") ("$(C$7$Q(B" "$(C@8(B") ("$(C$7$Q$!(B" "$(C@9(B") ("$(C$7$Q$$(B" "$(C@:(B") ("$(C$7$Q$)(B" "$(C@;(B") ("$(C$7$Q$)$=(B" "$(C@<(B") ("$(C$7$Q$1(B" "$(C@=(B") ("$(C$7$Q$2(B" "$(C@>(B") ("$(C$7$Q$5(B" "$(C@?(B") ("$(C$7$Q$7(B" "$(C@@(B") ("$(C$7$Q$8(B" "$(C@A(B") ("$(C$7$Q$:(B" "$(C@B(B") ("$(C$7$Q$;(B" "$(C@C(B") ("$(C$7$Q$<(B" "$(C@D(B") ("$(C$7$Q$=(B" "$(C@E(B") ("$(C$7$Q$>(B" "$(C@F(B") ("$(C$7$Q$S(B" "$(C@G(B") ("$(C$7$Q$S$$(B" "$(C@H(B") ("$(C$7$Q$S$)(B" "$(C@I(B") ("$(C$7$Q$S$1(B" "$(C@J(B") ("$(C$7$Q$S$5(B" "$(C@K(B") ("$(C$7$S(B" "$(C@L(B") ("$(C$7$S$!(B" "$(C@M(B") ("$(C$7$S$$(B" "$(C@N(B") ("$(C$7$S$)(B" "$(C@O(B") ("$(C$7$S$)$!(B" "$(C@P(B") ("$(C$7$S$)$1(B" "$(C@Q(B") ("$(C$7$S$)$>(B" "$(C@R(B") ("$(C$7$S$1(B" "$(C@S(B") ("$(C$7$S$2(B" "$(C@T(B") ("$(C$7$S$5(B" "$(C@U(B") ("$(C$7$S$6(B" "$(C@V(B") ("$(C$7$S$7(B" "$(C@W(B") ("$(C$7$S$8(B" "$(C@X(B") ("$(C$7$S$=(B" "$(C@Y(B") ("$(C$8$?(B" "$(C@Z(B") ("$(C$8$?$!(B" "$(C@[(B") ("$(C$8$?$$(B" "$(C@\(B") ("$(C$8$?$$$>(B" "$(C@](B") ("$(C$8$?$'(B" "$(C@^(B") ("$(C$8$?$)(B" "$(C@_(B") ("$(C$8$?$)$1(B" "$(C@`(B") ("$(C$8$?$1(B" "$(C@a(B") ("$(C$8$?$2(B" "$(C@b(B") ("$(C$8$?$5(B" "$(C@c(B") ("$(C$8$?$6(B" "$(C@d(B") ("$(C$8$?$7(B" "$(C@e(B") ("$(C$8$?$8(B" "$(C@f(B") ("$(C$8$@(B" "$(C@g(B") ("$(C$8$@$!(B" "$(C@h(B") ("$(C$8$@$$(B" "$(C@i(B") ("$(C$8$@$)(B" "$(C@j(B") ("$(C$8$@$1(B" "$(C@k(B") ("$(C$8$@$2(B" "$(C@l(B") ("$(C$8$@$5(B" "$(C@m(B") ("$(C$8$@$6(B" "$(C@n(B") ("$(C$8$@$7(B" "$(C@o(B") ("$(C$8$A(B" "$(C@p(B") ("$(C$8$A$!(B" "$(C@q(B") ("$(C$8$A$$(B" "$(C@r(B") ("$(C$8$A$$$>(B" "$(C@s(B") ("$(C$8$A$)(B" "$(C@t(B") ("$(C$8$A$1(B" "$(C@u(B") ("$(C$8$A$7(B" "$(C@v(B") ("$(C$8$B(B" "$(C@w(B") ("$(C$8$B$$(B" "$(C@x(B") ("$(C$8$B$)(B" "$(C@y(B") ("$(C$8$C(B" "$(C@z(B") ("$(C$8$C$!(B" "$(C@{(B") ("$(C$8$C$$(B" "$(C@|(B") ("$(C$8$C$)(B" "$(C@}(B") ("$(C$8$C$)$1(B" "$(C@~(B") ("$(C$8$C$1(B" "$(CA!(B") ("$(C$8$C$2(B" "$(CA"(B") ("$(C$8$C$5(B" "$(CA#(B") ("$(C$8$C$7(B" "$(CA$(B") ("$(C$8$C$8(B" "$(CA%(B") ("$(C$8$D(B" "$(CA&(B") ("$(C$8$D$!(B" "$(CA'(B") ("$(C$8$D$$(B" "$(CA((B") ("$(C$8$D$)(B" "$(CA)(B") ("$(C$8$D$1(B" "$(CA*(B") ("$(C$8$D$2(B" "$(CA+(B") ("$(C$8$D$5(B" "$(CA,(B") ("$(C$8$D$7(B" "$(CA-(B") ("$(C$8$E(B" "$(CA.(B") ("$(C$8$E$$(B" "$(CA/(B") ("$(C$8$E$)(B" "$(CA0(B") ("$(C$8$E$1(B" "$(CA1(B") ("$(C$8$E$2(B" "$(CA2(B") ("$(C$8$E$6(B" "$(CA3(B") ("$(C$8$E$7(B" "$(CA4(B") ("$(C$8$F(B" "$(CA5(B") ("$(C$8$G(B" "$(CA6(B") ("$(C$8$G$!(B" "$(CA7(B") ("$(C$8$G$$(B" "$(CA8(B") ("$(C$8$G$)(B" "$(CA9(B") ("$(C$8$G$)$1(B" "$(CA:(B") ("$(C$8$G$1(B" "$(CA;(B") ("$(C$8$G$2(B" "$(CA<(B") ("$(C$8$G$5(B" "$(CA=(B") ("$(C$8$G$7(B" "$(CA>(B") ("$(C$8$G$8(B" "$(CA?(B") ("$(C$8$G$:(B" "$(CA@(B") ("$(C$8$G$>(B" "$(CAA(B") ("$(C$8$G$?(B" "$(CAB(B") ("$(C$8$G$?$!(B" "$(CAC(B") ("$(C$8$G$?$)(B" "$(CAD(B") ("$(C$8$G$?$2(B" "$(CAE(B") ("$(C$8$G$?$5(B" "$(CAF(B") ("$(C$8$G$?$7(B" "$(CAG(B") ("$(C$8$G$@(B" "$(CAH(B") ("$(C$8$G$@$6(B" "$(CAI(B") ("$(C$8$G$@$7(B" "$(CAJ(B") ("$(C$8$G$S(B" "$(CAK(B") ("$(C$8$G$S$$(B" "$(CAL(B") ("$(C$8$G$S$)(B" "$(CAM(B") ("$(C$8$G$S$1(B" "$(CAN(B") ("$(C$8$G$S$2(B" "$(CAO(B") ("$(C$8$G$S$5(B" "$(CAP(B") ("$(C$8$G$S$7(B" "$(CAQ(B") ("$(C$8$K(B" "$(CAR(B") ("$(C$8$K$!(B" "$(CAS(B") ("$(C$8$K$$(B" "$(CAT(B") ("$(C$8$K$7(B" "$(CAU(B") ("$(C$8$L(B" "$(CAV(B") ("$(C$8$L$!(B" "$(CAW(B") ("$(C$8$L$$(B" "$(CAX(B") ("$(C$8$L$)(B" "$(CAY(B") ("$(C$8$L$)$!(B" "$(CAZ(B") ("$(C$8$L$)$1(B" "$(CA[(B") ("$(C$8$L$1(B" "$(CA\(B") ("$(C$8$L$2(B" "$(CA](B") ("$(C$8$L$5(B" "$(CA^(B") ("$(C$8$L$7(B" "$(CA_(B") ("$(C$8$L$C(B" "$(CA`(B") ("$(C$8$L$C$6(B" "$(CAa(B") ("$(C$8$L$D(B" "$(CAb(B") ("$(C$8$L$S(B" "$(CAc(B") ("$(C$8$L$S$!(B" "$(CAd(B") ("$(C$8$L$S$$(B" "$(CAe(B") ("$(C$8$L$S$)(B" "$(CAf(B") ("$(C$8$L$S$1(B" "$(CAg(B") ("$(C$8$L$S$2(B" "$(CAh(B") ("$(C$8$L$S$5(B" "$(CAi(B") ("$(C$8$P(B" "$(CAj(B") ("$(C$8$P$$(B" "$(CAk(B") ("$(C$8$P$)(B" "$(CAl(B") ("$(C$8$P$1(B" "$(CAm(B") ("$(C$8$Q(B" "$(CAn(B") ("$(C$8$Q$!(B" "$(CAo(B") ("$(C$8$Q$$(B" "$(CAp(B") ("$(C$8$Q$)(B" "$(CAq(B") ("$(C$8$Q$1(B" "$(CAr(B") ("$(C$8$Q$2(B" "$(CAs(B") ("$(C$8$Q$5(B" "$(CAt(B") ("$(C$8$Q$7(B" "$(CAu(B") ("$(C$8$S(B" "$(CAv(B") ("$(C$8$S$!(B" "$(CAw(B") ("$(C$8$S$$(B" "$(CAx(B") ("$(C$8$S$'(B" "$(CAy(B") ("$(C$8$S$)(B" "$(CAz(B") ("$(C$8$S$)$1(B" "$(CA{(B") ("$(C$8$S$1(B" "$(CA|(B") ("$(C$8$S$2(B" "$(CA}(B") ("$(C$8$S$5(B" "$(CA~(B") ("$(C$8$S$7(B" "$(CB!(B") ("$(C$8$S$8(B" "$(CB"(B") ("$(C$8$S$<(B" "$(CB#(B") ("$(C$8$S$=(B" "$(CB$(B") ("$(C$9$?(B" "$(CB%(B") ("$(C$9$?$!(B" "$(CB&(B") ("$(C$9$?$$(B" "$(CB'(B") ("$(C$9$?$$$>(B" "$(CB((B") ("$(C$9$?$)(B" "$(CB)(B") ("$(C$9$?$)$2(B" "$(CB*(B") ("$(C$9$?$1(B" "$(CB+(B") ("$(C$9$?$2(B" "$(CB,(B") ("$(C$9$?$5(B" "$(CB-(B") ("$(C$9$?$6(B" "$(CB.(B") ("$(C$9$?$7(B" "$(CB/(B") ("$(C$9$@(B" "$(CB0(B") ("$(C$9$@$!(B" "$(CB1(B") ("$(C$9$@$$(B" "$(CB2(B") ("$(C$9$@$)(B" "$(CB3(B") ("$(C$9$@$1(B" "$(CB4(B") ("$(C$9$@$2(B" "$(CB5(B") ("$(C$9$@$5(B" "$(CB6(B") ("$(C$9$@$6(B" "$(CB7(B") ("$(C$9$@$7(B" "$(CB8(B") ("$(C$9$A(B" "$(CB9(B") ("$(C$9$A$$(B" "$(CB:(B") ("$(C$9$A$7(B" "$(CB;(B") ("$(C$9$C(B" "$(CB<(B") ("$(C$9$C$!(B" "$(CB=(B") ("$(C$9$C$$(B" "$(CB>(B") ("$(C$9$C$)(B" "$(CB?(B") ("$(C$9$C$1(B" "$(CB@(B") ("$(C$9$C$2(B" "$(CBA(B") ("$(C$9$C$5(B" "$(CBB(B") ("$(C$9$C$6(B" "$(CBC(B") ("$(C$9$C$7(B" "$(CBD(B") ("$(C$9$D(B" "$(CBE(B") ("$(C$9$D$7(B" "$(CBF(B") ("$(C$9$E(B" "$(CBG(B") ("$(C$9$E$6(B" "$(CBH(B") ("$(C$9$G(B" "$(CBI(B") ("$(C$9$G$!(B" "$(CBJ(B") ("$(C$9$G$$(B" "$(CBK(B") ("$(C$9$G$)(B" "$(CBL(B") ("$(C$9$G$1(B" "$(CBM(B") ("$(C$9$G$2(B" "$(CBN(B") ("$(C$9$G$5(B" "$(CBO(B") ("$(C$9$G$7(B" "$(CBP(B") ("$(C$9$G$:(B" "$(CBQ(B") ("$(C$9$G$?(B" "$(CBR(B") ("$(C$9$G$?$!(B" "$(CBS(B") ("$(C$9$G$?$)(B" "$(CBT(B") ("$(C$9$G$?$6(B" "$(CBU(B") ("$(C$9$G$@(B" "$(CBV(B") ("$(C$9$G$@$6(B" "$(CBW(B") ("$(C$9$G$S(B" "$(CBX(B") ("$(C$9$G$S$$(B" "$(CBY(B") ("$(C$9$G$S$)(B" "$(CBZ(B") ("$(C$9$G$S$1(B" "$(CB[(B") ("$(C$9$G$S$2(B" "$(CB\(B") ("$(C$9$K$7(B" "$(CB](B") ("$(C$9$L(B" "$(CB^(B") ("$(C$9$L$!(B" "$(CB_(B") ("$(C$9$L$$(B" "$(CB`(B") ("$(C$9$L$)(B" "$(CBa(B") ("$(C$9$L$1(B" "$(CBb(B") ("$(C$9$L$2(B" "$(CBc(B") ("$(C$9$L$7(B" "$(CBd(B") ("$(C$9$L$C(B" "$(CBe(B") ("$(C$9$L$C$6(B" "$(CBf(B") ("$(C$9$L$C$7(B" "$(CBg(B") ("$(C$9$L$S(B" "$(CBh(B") ("$(C$9$P(B" "$(CBi(B") ("$(C$9$Q(B" "$(CBj(B") ("$(C$9$Q$1(B" "$(CBk(B") ("$(C$9$Q$5(B" "$(CBl(B") ("$(C$9$Q$7(B" "$(CBm(B") ("$(C$9$S(B" "$(CBn(B") ("$(C$9$S$!(B" "$(CBo(B") ("$(C$9$S$$(B" "$(CBp(B") ("$(C$9$S$)(B" "$(CBq(B") ("$(C$9$S$1(B" "$(CBr(B") ("$(C$9$S$2(B" "$(CBs(B") ("$(C$9$S$7(B" "$(CBt(B") ("$(C$9$S$8(B" "$(CBu(B") ("$(C$9$S$>(B" "$(CBv(B") ("$(C$:$?(B" "$(CBw(B") ("$(C$:$?$!(B" "$(CBx(B") ("$(C$:$?$$(B" "$(CBy(B") ("$(C$:$?$$$>(B" "$(CBz(B") ("$(C$:$?$)(B" "$(CB{(B") ("$(C$:$?$1(B" "$(CB|(B") ("$(C$:$?$2(B" "$(CB}(B") ("$(C$:$?$5(B" "$(CB~(B") ("$(C$:$?$6(B" "$(CC!(B") ("$(C$:$?$7(B" "$(CC"(B") ("$(C$:$?$8(B" "$(CC#(B") ("$(C$:$@(B" "$(CC$(B") ("$(C$:$@$!(B" "$(CC%(B") ("$(C$:$@$$(B" "$(CC&(B") ("$(C$:$@$)(B" "$(CC'(B") ("$(C$:$@$1(B" "$(CC((B") ("$(C$:$@$2(B" "$(CC)(B") ("$(C$:$@$5(B" "$(CC*(B") ("$(C$:$@$6(B" "$(CC+(B") ("$(C$:$@$7(B" "$(CC,(B") ("$(C$:$A(B" "$(CC-(B") ("$(C$:$A$$(B" "$(CC.(B") ("$(C$:$A$$$>(B" "$(CC/(B") ("$(C$:$A$)(B" "$(CC0(B") ("$(C$:$A$1(B" "$(CC1(B") ("$(C$:$A$7(B" "$(CC2(B") ("$(C$:$C(B" "$(CC3(B") ("$(C$:$C$!(B" "$(CC4(B") ("$(C$:$C$$(B" "$(CC5(B") ("$(C$:$C$)(B" "$(CC6(B") ("$(C$:$C$1(B" "$(CC7(B") ("$(C$:$C$2(B" "$(CC8(B") ("$(C$:$C$5(B" "$(CC9(B") ("$(C$:$C$6(B" "$(CC:(B") ("$(C$:$C$7(B" "$(CC;(B") ("$(C$:$D(B" "$(CC<(B") ("$(C$:$D$!(B" "$(CC=(B") ("$(C$:$D$$(B" "$(CC>(B") ("$(C$:$D$)(B" "$(CC?(B") ("$(C$:$D$1(B" "$(CC@(B") ("$(C$:$D$2(B" "$(CCA(B") ("$(C$:$D$5(B" "$(CCB(B") ("$(C$:$D$7(B" "$(CCC(B") ("$(C$:$E(B" "$(CCD(B") ("$(C$:$E$$(B" "$(CCE(B") ("$(C$:$E$6(B" "$(CCF(B") ("$(C$:$F(B" "$(CCG(B") ("$(C$:$F$$(B" "$(CCH(B") ("$(C$:$F$7(B" "$(CCI(B") ("$(C$:$G(B" "$(CCJ(B") ("$(C$:$G$!(B" "$(CCK(B") ("$(C$:$G$$(B" "$(CCL(B") ("$(C$:$G$)(B" "$(CCM(B") ("$(C$:$G$1(B" "$(CCN(B") ("$(C$:$G$2(B" "$(CCO(B") ("$(C$:$G$5(B" "$(CCP(B") ("$(C$:$G$7(B" "$(CCQ(B") ("$(C$:$G$?(B" "$(CCR(B") ("$(C$:$G$?$$(B" "$(CCS(B") ("$(C$:$G$?$)(B" "$(CCT(B") ("$(C$:$G$?$7(B" "$(CCU(B") ("$(C$:$G$S(B" "$(CCV(B") ("$(C$:$G$S$$(B" "$(CCW(B") ("$(C$:$G$S$)(B" "$(CCX(B") ("$(C$:$G$S$1(B" "$(CCY(B") ("$(C$:$G$S$2(B" "$(CCZ(B") ("$(C$:$G$S$5(B" "$(CC[(B") ("$(C$:$G$S$7(B" "$(CC\(B") ("$(C$:$K(B" "$(CC](B") ("$(C$:$K$1(B" "$(CC^(B") ("$(C$:$L(B" "$(CC_(B") ("$(C$:$L$!(B" "$(CC`(B") ("$(C$:$L$$(B" "$(CCa(B") ("$(C$:$L$)(B" "$(CCb(B") ("$(C$:$L$1(B" "$(CCc(B") ("$(C$:$L$2(B" "$(CCd(B") ("$(C$:$L$5(B" "$(CCe(B") ("$(C$:$L$7(B" "$(CCf(B") ("$(C$:$L$C(B" "$(CCg(B") ("$(C$:$L$C$6(B" "$(CCh(B") ("$(C$:$L$D(B" "$(CCi(B") ("$(C$:$L$D$$(B" "$(CCj(B") ("$(C$:$L$S(B" "$(CCk(B") ("$(C$:$L$S$$(B" "$(CCl(B") ("$(C$:$L$S$)(B" "$(CCm(B") ("$(C$:$L$S$1(B" "$(CCn(B") ("$(C$:$L$S$2(B" "$(CCo(B") ("$(C$:$L$S$5(B" "$(CCp(B") ("$(C$:$L$S$7(B" "$(CCq(B") ("$(C$:$P(B" "$(CCr(B") ("$(C$:$P$$(B" "$(CCs(B") ("$(C$:$P$)(B" "$(CCt(B") ("$(C$:$P$1(B" "$(CCu(B") ("$(C$:$P$7(B" "$(CCv(B") ("$(C$:$Q(B" "$(CCw(B") ("$(C$:$Q$!(B" "$(CCx(B") ("$(C$:$Q$$(B" "$(CCy(B") ("$(C$:$Q$)(B" "$(CCz(B") ("$(C$:$Q$1(B" "$(CC{(B") ("$(C$:$Q$2(B" "$(CC|(B") ("$(C$:$Q$5(B" "$(CC}(B") ("$(C$:$Q$7(B" "$(CC~(B") ("$(C$:$S(B" "$(CD!(B") ("$(C$:$S$!(B" "$(CD"(B") ("$(C$:$S$$(B" "$(CD#(B") ("$(C$:$S$'(B" "$(CD$(B") ("$(C$:$S$)(B" "$(CD%(B") ("$(C$:$S$)$!(B" "$(CD&(B") ("$(C$:$S$1(B" "$(CD'(B") ("$(C$:$S$2(B" "$(CD((B") ("$(C$:$S$5(B" "$(CD)(B") ("$(C$:$S$7(B" "$(CD*(B") ("$(C$;$?(B" "$(CD+(B") ("$(C$;$?$!(B" "$(CD,(B") ("$(C$;$?$$(B" "$(CD-(B") ("$(C$;$?$)(B" "$(CD.(B") ("$(C$;$?$1(B" "$(CD/(B") ("$(C$;$?$2(B" "$(CD0(B") ("$(C$;$?$5(B" "$(CD1(B") ("$(C$;$?$7(B" "$(CD2(B") ("$(C$;$@(B" "$(CD3(B") ("$(C$;$@$!(B" "$(CD4(B") ("$(C$;$@$$(B" "$(CD5(B") ("$(C$;$@$)(B" "$(CD6(B") ("$(C$;$@$1(B" "$(CD7(B") ("$(C$;$@$2(B" "$(CD8(B") ("$(C$;$@$5(B" "$(CD9(B") ("$(C$;$@$6(B" "$(CD:(B") ("$(C$;$@$7(B" "$(CD;(B") ("$(C$;$A(B" "$(CD<(B") ("$(C$;$A$!(B" "$(CD=(B") ("$(C$;$A$7(B" "$(CD>(B") ("$(C$;$C(B" "$(CD?(B") ("$(C$;$C$!(B" "$(CD@(B") ("$(C$;$C$$(B" "$(CDA(B") ("$(C$;$C$'(B" "$(CDB(B") ("$(C$;$C$)(B" "$(CDC(B") ("$(C$;$C$1(B" "$(CDD(B") ("$(C$;$C$2(B" "$(CDE(B") ("$(C$;$C$5(B" "$(CDF(B") ("$(C$;$C$6(B" "$(CDG(B") ("$(C$;$C$7(B" "$(CDH(B") ("$(C$;$D(B" "$(CDI(B") ("$(C$;$D$!(B" "$(CDJ(B") ("$(C$;$D$$(B" "$(CDK(B") ("$(C$;$D$)(B" "$(CDL(B") ("$(C$;$D$1(B" "$(CDM(B") ("$(C$;$D$2(B" "$(CDN(B") ("$(C$;$D$5(B" "$(CDO(B") ("$(C$;$D$7(B" "$(CDP(B") ("$(C$;$E(B" "$(CDQ(B") ("$(C$;$E$$(B" "$(CDR(B") ("$(C$;$E$)(B" "$(CDS(B") ("$(C$;$E$1(B" "$(CDT(B") ("$(C$;$E$2(B" "$(CDU(B") ("$(C$;$E$5(B" "$(CDV(B") ("$(C$;$E$6(B" "$(CDW(B") ("$(C$;$E$7(B" "$(CDX(B") ("$(C$;$F(B" "$(CDY(B") ("$(C$;$G(B" "$(CDZ(B") ("$(C$;$G$!(B" "$(CD[(B") ("$(C$;$G$$(B" "$(CD\(B") ("$(C$;$G$)(B" "$(CD](B") ("$(C$;$G$1(B" "$(CD^(B") ("$(C$;$G$2(B" "$(CD_(B") ("$(C$;$G$5(B" "$(CD`(B") ("$(C$;$G$7(B" "$(CDa(B") ("$(C$;$G$?(B" "$(CDb(B") ("$(C$;$G$?$!(B" "$(CDc(B") ("$(C$;$G$?$$(B" "$(CDd(B") ("$(C$;$G$?$)(B" "$(CDe(B") ("$(C$;$G$?$1(B" "$(CDf(B") ("$(C$;$G$?$7(B" "$(CDg(B") ("$(C$;$G$@(B" "$(CDh(B") ("$(C$;$G$@$7(B" "$(CDi(B") ("$(C$;$G$S(B" "$(CDj(B") ("$(C$;$G$S$)(B" "$(CDk(B") ("$(C$;$K(B" "$(CDl(B") ("$(C$;$L(B" "$(CDm(B") ("$(C$;$L$!(B" "$(CDn(B") ("$(C$;$L$)(B" "$(CDp(B") ("$(C$;$L$1(B" "$(CDq(B") ("$(C$;$L$2(B" "$(CDr(B") ("$(C$;$L$5(B" "$(CDs(B") ("$(C$;$L$7(B" "$(CDt(B") ("$(C$;$L$C(B" "$(CDu(B") ("$(C$;$L$C$$(B" "$(CDv(B") ("$(C$;$L$C$)(B" "$(CDw(B") ("$(C$;$L$C$7(B" "$(CDx(B") ("$(C$;$L$D(B" "$(CDy(B") ("$(C$;$L$D$7(B" "$(CDz(B") ("$(C$;$L$S(B" "$(CD{(B") ("$(C$;$L$S$!(B" "$(CD|(B") ("$(C$;$L$S$$(B" "$(CD}(B") ("$(C$;$L$S$)(B" "$(CD~(B") ("$(C$;$L$S$1(B" "$(CE!(B") ("$(C$;$L$S$2(B" "$(CE"(B") ("$(C$;$L$S$5(B" "$(CE#(B") ("$(C$;$L$S$7(B" "$(CE$(B") ("$(C$;$P(B" "$(CE%(B") ("$(C$;$P$$(B" "$(CE&(B") ("$(C$;$P$)(B" "$(CE'(B") ("$(C$;$P$1(B" "$(CE((B") ("$(C$;$Q(B" "$(CE)(B") ("$(C$;$Q$!(B" "$(CE*(B") ("$(C$;$Q$$(B" "$(CE+(B") ("$(C$;$Q$)(B" "$(CE,(B") ("$(C$;$Q$1(B" "$(CE-(B") ("$(C$;$Q$2(B" "$(CE.(B") ("$(C$;$Q$7(B" "$(CE/(B") ("$(C$;$S(B" "$(CE0(B") ("$(C$;$S$!(B" "$(CE1(B") ("$(C$;$S$$(B" "$(CE2(B") ("$(C$;$S$)(B" "$(CE3(B") ("$(C$;$S$1(B" "$(CE4(B") ("$(C$;$S$2(B" "$(CE5(B") ("$(C$;$S$5(B" "$(CE6(B") ("$(C$;$S$7(B" "$(CE7(B") ("$(C$<$?(B" "$(CE8(B") ("$(C$<$?$!(B" "$(CE9(B") ("$(C$<$?$$(B" "$(CE:(B") ("$(C$<$?$)(B" "$(CE;(B") ("$(C$<$?$)$!(B" "$(CE<(B") ("$(C$<$?$1(B" "$(CE=(B") ("$(C$<$?$2(B" "$(CE>(B") ("$(C$<$?$5(B" "$(CE?(B") ("$(C$<$?$6(B" "$(CE@(B") ("$(C$<$?$7(B" "$(CEA(B") ("$(C$<$@(B" "$(CEB(B") ("$(C$<$@$!(B" "$(CEC(B") ("$(C$<$@$$(B" "$(CED(B") ("$(C$<$@$)(B" "$(CEE(B") ("$(C$<$@$1(B" "$(CEF(B") ("$(C$<$@$2(B" "$(CEG(B") ("$(C$<$@$5(B" "$(CEH(B") ("$(C$<$@$6(B" "$(CEI(B") ("$(C$<$@$7(B" "$(CEJ(B") ("$(C$<$A(B" "$(CEK(B") ("$(C$<$A$7(B" "$(CEL(B") ("$(C$<$C(B" "$(CEM(B") ("$(C$<$C$!(B" "$(CEN(B") ("$(C$<$C$$(B" "$(CEO(B") ("$(C$<$C$)(B" "$(CEP(B") ("$(C$<$C$)$1(B" "$(CEQ(B") ("$(C$<$C$1(B" "$(CER(B") ("$(C$<$C$2(B" "$(CES(B") ("$(C$<$C$5(B" "$(CET(B") ("$(C$<$C$6(B" "$(CEU(B") ("$(C$<$C$7(B" "$(CEV(B") ("$(C$<$D(B" "$(CEW(B") ("$(C$<$D$!(B" "$(CEX(B") ("$(C$<$D$$(B" "$(CEY(B") ("$(C$<$D$)(B" "$(CEZ(B") ("$(C$<$D$1(B" "$(CE[(B") ("$(C$<$D$2(B" "$(CE\(B") ("$(C$<$D$5(B" "$(CE](B") ("$(C$<$D$7(B" "$(CE^(B") ("$(C$<$E(B" "$(CE_(B") ("$(C$<$E$$(B" "$(CE`(B") ("$(C$<$E$6(B" "$(CEa(B") ("$(C$<$F(B" "$(CEb(B") ("$(C$<$F$$(B" "$(CEc(B") ("$(C$<$G(B" "$(CEd(B") ("$(C$<$G$!(B" "$(CEe(B") ("$(C$<$G$$(B" "$(CEf(B") ("$(C$<$G$)(B" "$(CEg(B") ("$(C$<$G$1(B" "$(CEh(B") ("$(C$<$G$2(B" "$(CEi(B") ("$(C$<$G$5(B" "$(CEj(B") ("$(C$<$G$7(B" "$(CEk(B") ("$(C$<$G$=(B" "$(CEl(B") ("$(C$<$G$?(B" "$(CEm(B") ("$(C$<$G$?$$(B" "$(CEn(B") ("$(C$<$G$@(B" "$(CEo(B") ("$(C$<$G$S(B" "$(CEp(B") ("$(C$<$G$S$$(B" "$(CEq(B") ("$(C$<$G$S$5(B" "$(CEr(B") ("$(C$<$G$S$7(B" "$(CEs(B") ("$(C$<$K(B" "$(CEt(B") ("$(C$<$L(B" "$(CEu(B") ("$(C$<$L$!(B" "$(CEv(B") ("$(C$<$L$$(B" "$(CEw(B") ("$(C$<$L$)(B" "$(CEx(B") ("$(C$<$L$1(B" "$(CEy(B") ("$(C$<$L$2(B" "$(CEz(B") ("$(C$<$L$5(B" "$(CE{(B") ("$(C$<$L$7(B" "$(CE|(B") ("$(C$<$L$C(B" "$(CE}(B") ("$(C$<$L$C$6(B" "$(CE~(B") ("$(C$<$L$D(B" "$(CF!(B") ("$(C$<$L$S(B" "$(CF"(B") ("$(C$<$L$S$!(B" "$(CF#(B") ("$(C$<$L$S$$(B" "$(CF$(B") ("$(C$<$L$S$)(B" "$(CF%(B") ("$(C$<$L$S$1(B" "$(CF&(B") ("$(C$<$L$S$2(B" "$(CF'(B") ("$(C$<$L$S$7(B" "$(CF((B") ("$(C$<$P(B" "$(CF)(B") ("$(C$<$P$$(B" "$(CF*(B") ("$(C$<$P$)(B" "$(CF+(B") ("$(C$<$P$1(B" "$(CF,(B") ("$(C$<$P$7(B" "$(CF-(B") ("$(C$<$Q(B" "$(CF.(B") ("$(C$<$Q$!(B" "$(CF/(B") ("$(C$<$Q$$(B" "$(CF0(B") ("$(C$<$Q$'(B" "$(CF1(B") ("$(C$<$Q$)(B" "$(CF2(B") ("$(C$<$Q$)$1(B" "$(CF3(B") ("$(C$<$Q$1(B" "$(CF4(B") ("$(C$<$Q$2(B" "$(CF5(B") ("$(C$<$Q$5(B" "$(CF6(B") ("$(C$<$Q$S(B" "$(CF7(B") ("$(C$<$Q$S$$(B" "$(CF8(B") ("$(C$<$Q$S$)(B" "$(CF9(B") ("$(C$<$Q$S$1(B" "$(CF:(B") ("$(C$<$Q$S$2(B" "$(CF;(B") ("$(C$<$S(B" "$(CF<(B") ("$(C$<$S$!(B" "$(CF=(B") ("$(C$<$S$$(B" "$(CF>(B") ("$(C$<$S$)(B" "$(CF?(B") ("$(C$<$S$1(B" "$(CF@(B") ("$(C$<$S$2(B" "$(CFA(B") ("$(C$<$S$5(B" "$(CFB(B") ("$(C$<$S$7(B" "$(CFC(B") ("$(C$=$?(B" "$(CFD(B") ("$(C$=$?$!(B" "$(CFE(B") ("$(C$=$?$"(B" "$(CFF(B") ("$(C$=$?$$(B" "$(CFG(B") ("$(C$=$?$)(B" "$(CFH(B") ("$(C$=$?$)$1(B" "$(CFI(B") ("$(C$=$?$1(B" "$(CFJ(B") ("$(C$=$?$2(B" "$(CFK(B") ("$(C$=$?$5(B" "$(CFL(B") ("$(C$=$?$6(B" "$(CFM(B") ("$(C$=$?$7(B" "$(CFN(B") ("$(C$=$?$<(B" "$(CFO(B") ("$(C$=$@(B" "$(CFP(B") ("$(C$=$@$!(B" "$(CFQ(B") ("$(C$=$@$$(B" "$(CFR(B") ("$(C$=$@$)(B" "$(CFS(B") ("$(C$=$@$1(B" "$(CFT(B") ("$(C$=$@$2(B" "$(CFU(B") ("$(C$=$@$5(B" "$(CFV(B") ("$(C$=$@$6(B" "$(CFW(B") ("$(C$=$@$7(B" "$(CFX(B") ("$(C$=$A(B" "$(CFY(B") ("$(C$=$A$!(B" "$(CFZ(B") ("$(C$=$C(B" "$(CF[(B") ("$(C$=$C$!(B" "$(CF\(B") ("$(C$=$C$$(B" "$(CF](B") ("$(C$=$C$1(B" "$(CF_(B") ("$(C$=$C$2(B" "$(CF`(B") ("$(C$=$C$5(B" "$(CFa(B") ("$(C$=$C$6(B" "$(CFb(B") ("$(C$=$C$7(B" "$(CFc(B") ("$(C$=$D(B" "$(CFd(B") ("$(C$=$D$!(B" "$(CFe(B") ("$(C$=$D$$(B" "$(CFf(B") ("$(C$=$D$)(B" "$(CFg(B") ("$(C$=$D$1(B" "$(CFh(B") ("$(C$=$D$2(B" "$(CFi(B") ("$(C$=$D$5(B" "$(CFj(B") ("$(C$=$D$7(B" "$(CFk(B") ("$(C$=$E(B" "$(CFl(B") ("$(C$=$E$$(B" "$(CFm(B") ("$(C$=$E$)(B" "$(CFn(B") ("$(C$=$E$1(B" "$(CFo(B") ("$(C$=$E$2(B" "$(CFp(B") ("$(C$=$E$6(B" "$(CFq(B") ("$(C$=$E$7(B" "$(CFr(B") ("$(C$=$F(B" "$(CFs(B") ("$(C$=$F$)(B" "$(CFt(B") ("$(C$=$F$2(B" "$(CFu(B") ("$(C$=$F$5(B" "$(CFv(B") ("$(C$=$G(B" "$(CFw(B") ("$(C$=$G$!(B" "$(CFx(B") ("$(C$=$G$$(B" "$(CFy(B") ("$(C$=$G$)(B" "$(CFz(B") ("$(C$=$G$1(B" "$(CF{(B") ("$(C$=$G$2(B" "$(CF|(B") ("$(C$=$G$5(B" "$(CF}(B") ("$(C$=$G$7(B" "$(CF~(B") ("$(C$=$G$?(B" "$(CG!(B") ("$(C$=$G$?$7(B" "$(CG"(B") ("$(C$=$G$S(B" "$(CG#(B") ("$(C$=$G$S$$(B" "$(CG$(B") ("$(C$=$K(B" "$(CG%(B") ("$(C$=$K$$(B" "$(CG&(B") ("$(C$=$K$)(B" "$(CG'(B") ("$(C$=$K$2(B" "$(CG((B") ("$(C$=$K$5(B" "$(CG)(B") ("$(C$=$L(B" "$(CG*(B") ("$(C$=$L$!(B" "$(CG+(B") ("$(C$=$L$$(B" "$(CG,(B") ("$(C$=$L$'(B" "$(CG-(B") ("$(C$=$L$)(B" "$(CG.(B") ("$(C$=$L$)$1(B" "$(CG/(B") ("$(C$=$L$1(B" "$(CG0(B") ("$(C$=$L$2(B" "$(CG1(B") ("$(C$=$L$5(B" "$(CG2(B") ("$(C$=$L$7(B" "$(CG3(B") ("$(C$=$L$C(B" "$(CG4(B") ("$(C$=$L$C$7(B" "$(CG5(B") ("$(C$=$L$S(B" "$(CG6(B") ("$(C$=$L$S$$(B" "$(CG7(B") ("$(C$=$L$S$)(B" "$(CG8(B") ("$(C$=$L$S$1(B" "$(CG9(B") ("$(C$=$L$S$5(B" "$(CG:(B") ("$(C$=$P(B" "$(CG;(B") ("$(C$=$P$$(B" "$(CG<(B") ("$(C$=$P$)(B" "$(CG=(B") ("$(C$=$P$1(B" "$(CG>(B") ("$(C$=$P$5(B" "$(CG?(B") ("$(C$=$P$7(B" "$(CG@(B") ("$(C$=$Q(B" "$(CGA(B") ("$(C$=$Q$$(B" "$(CGB(B") ("$(C$=$Q$)(B" "$(CGC(B") ("$(C$=$Q$1(B" "$(CGD(B") ("$(C$=$Q$2(B" "$(CGE(B") ("$(C$=$Q$5(B" "$(CGF(B") ("$(C$=$S(B" "$(CGG(B") ("$(C$=$S$!(B" "$(CGH(B") ("$(C$=$S$$(B" "$(CGI(B") ("$(C$=$S$)(B" "$(CGJ(B") ("$(C$=$S$1(B" "$(CGK(B") ("$(C$=$S$2(B" "$(CGL(B") ("$(C$=$S$5(B" "$(CGM(B") ("$(C$=$S$7(B" "$(CGN(B") ("$(C$>$?(B" "$(CGO(B") ("$(C$>$?$!(B" "$(CGP(B") ("$(C$>$?$$(B" "$(CGQ(B") ("$(C$>$?$)(B" "$(CGR(B") ("$(C$>$?$)$<(B" "$(CGS(B") ("$(C$>$?$1(B" "$(CGT(B") ("$(C$>$?$2(B" "$(CGU(B") ("$(C$>$?$5(B" "$(CGV(B") ("$(C$>$?$7(B" "$(CGW(B") ("$(C$>$@(B" "$(CGX(B") ("$(C$>$@$!(B" "$(CGY(B") ("$(C$>$@$$(B" "$(CGZ(B") ("$(C$>$@$)(B" "$(CG[(B") ("$(C$>$@$1(B" "$(CG\(B") ("$(C$>$@$2(B" "$(CG](B") ("$(C$>$@$5(B" "$(CG^(B") ("$(C$>$@$6(B" "$(CG_(B") ("$(C$>$@$7(B" "$(CG`(B") ("$(C$>$A(B" "$(CGa(B") ("$(C$>$A$7(B" "$(CGb(B") ("$(C$>$C(B" "$(CGc(B") ("$(C$>$C$!(B" "$(CGd(B") ("$(C$>$C$$(B" "$(CGe(B") ("$(C$>$C$)(B" "$(CGf(B") ("$(C$>$C$)$1(B" "$(CGg(B") ("$(C$>$C$1(B" "$(CGh(B") ("$(C$>$C$2(B" "$(CGi(B") ("$(C$>$C$5(B" "$(CGj(B") ("$(C$>$C$7(B" "$(CGk(B") ("$(C$>$D(B" "$(CGl(B") ("$(C$>$D$!(B" "$(CGm(B") ("$(C$>$D$$(B" "$(CGn(B") ("$(C$>$D$)(B" "$(CGo(B") ("$(C$>$D$1(B" "$(CGp(B") ("$(C$>$D$2(B" "$(CGq(B") ("$(C$>$D$5(B" "$(CGr(B") ("$(C$>$D$7(B" "$(CGs(B") ("$(C$>$E(B" "$(CGt(B") ("$(C$>$E$!(B" "$(CGu(B") ("$(C$>$E$$(B" "$(CGv(B") ("$(C$>$E$)(B" "$(CGw(B") ("$(C$>$E$1(B" "$(CGx(B") ("$(C$>$E$2(B" "$(CGy(B") ("$(C$>$E$5(B" "$(CGz(B") ("$(C$>$E$6(B" "$(CG{(B") ("$(C$>$E$7(B" "$(CG|(B") ("$(C$>$F(B" "$(CG}(B") ("$(C$>$F$$(B" "$(CG~(B") ("$(C$>$F$)(B" "$(CH!(B") ("$(C$>$F$2(B" "$(CH"(B") ("$(C$>$G(B" "$(CH#(B") ("$(C$>$G$!(B" "$(CH$(B") ("$(C$>$G$$(B" "$(CH%(B") ("$(C$>$G$)(B" "$(CH&(B") ("$(C$>$G$)$<(B" "$(CH'(B") ("$(C$>$G$1(B" "$(CH((B") ("$(C$>$G$2(B" "$(CH)(B") ("$(C$>$G$5(B" "$(CH*(B") ("$(C$>$G$7(B" "$(CH+(B") ("$(C$>$G$<(B" "$(CH,(B") ("$(C$>$G$?(B" "$(CH-(B") ("$(C$>$G$?$!(B" "$(CH.(B") ("$(C$>$G$?$$(B" "$(CH/(B") ("$(C$>$G$?$)(B" "$(CH0(B") ("$(C$>$G$?$5(B" "$(CH1(B") ("$(C$>$G$?$7(B" "$(CH2(B") ("$(C$>$G$@(B" "$(CH3(B") ("$(C$>$G$@$!(B" "$(CH4(B") ("$(C$>$G$@$$(B" "$(CH5(B") ("$(C$>$G$@$5(B" "$(CH6(B") ("$(C$>$G$@$7(B" "$(CH7(B") ("$(C$>$G$S(B" "$(CH8(B") ("$(C$>$G$S$!(B" "$(CH9(B") ("$(C$>$G$S$$(B" "$(CH:(B") ("$(C$>$G$S$)(B" "$(CH;(B") ("$(C$>$G$S$2(B" "$(CH<(B") ("$(C$>$G$S$5(B" "$(CH=(B") ("$(C$>$G$S$7(B" "$(CH>(B") ("$(C$>$K(B" "$(CH?(B") ("$(C$>$K$$(B" "$(CH@(B") ("$(C$>$K$)(B" "$(CHA(B") ("$(C$>$K$2(B" "$(CHB(B") ("$(C$>$K$5(B" "$(CHC(B") ("$(C$>$L(B" "$(CHD(B") ("$(C$>$L$!(B" "$(CHE(B") ("$(C$>$L$$(B" "$(CHF(B") ("$(C$>$L$)(B" "$(CHG(B") ("$(C$>$L$)$<(B" "$(CHH(B") ("$(C$>$L$1(B" "$(CHI(B") ("$(C$>$L$5(B" "$(CHJ(B") ("$(C$>$L$7(B" "$(CHK(B") ("$(C$>$L$C(B" "$(CHL(B") ("$(C$>$L$C$$(B" "$(CHM(B") ("$(C$>$L$C$)(B" "$(CHN(B") ("$(C$>$L$C$1(B" "$(CHO(B") ("$(C$>$L$C$7(B" "$(CHP(B") ("$(C$>$L$D(B" "$(CHQ(B") ("$(C$>$L$D$!(B" "$(CHR(B") ("$(C$>$L$D$$(B" "$(CHS(B") ("$(C$>$L$D$)(B" "$(CHT(B") ("$(C$>$L$D$7(B" "$(CHU(B") ("$(C$>$L$S(B" "$(CHV(B") ("$(C$>$L$S$!(B" "$(CHW(B") ("$(C$>$L$S$$(B" "$(CHX(B") ("$(C$>$L$S$)(B" "$(CHY(B") ("$(C$>$L$S$1(B" "$(CHZ(B") ("$(C$>$L$S$2(B" "$(CH[(B") ("$(C$>$L$S$5(B" "$(CH\(B") ("$(C$>$L$S$7(B" "$(CH](B") ("$(C$>$P(B" "$(CH^(B") ("$(C$>$P$!(B" "$(CH_(B") ("$(C$>$P$$(B" "$(CH`(B") ("$(C$>$P$)(B" "$(CHa(B") ("$(C$>$P$1(B" "$(CHb(B") ("$(C$>$P$5(B" "$(CHc(B") ("$(C$>$P$7(B" "$(CHd(B") ("$(C$>$Q(B" "$(CHe(B") ("$(C$>$Q$!(B" "$(CHf(B") ("$(C$>$Q$$(B" "$(CHg(B") ("$(C$>$Q$$$>(B" "$(CHh(B") ("$(C$>$Q$'(B" "$(CHi(B") ("$(C$>$Q$)(B" "$(CHj(B") ("$(C$>$Q$)$!(B" "$(CHk(B") ("$(C$>$Q$1(B" "$(CHl(B") ("$(C$>$Q$2(B" "$(CHm(B") ("$(C$>$Q$5(B" "$(CHn(B") ("$(C$>$Q$7(B" "$(CHo(B") ("$(C$>$Q$<(B" "$(CHp(B") ("$(C$>$Q$S(B" "$(CHq(B") ("$(C$>$Q$S$$(B" "$(CHr(B") ("$(C$>$Q$S$)(B" "$(CHs(B") ("$(C$>$Q$S$1(B" "$(CHt(B") ("$(C$>$Q$S$2(B" "$(CHu(B") ("$(C$>$Q$S$7(B" "$(CHv(B") ("$(C$>$S(B" "$(CHw(B") ("$(C$>$S$!(B" "$(CHx(B") ("$(C$>$S$$(B" "$(CHy(B") ("$(C$>$S$)(B" "$(CHz(B") ("$(C$>$S$1(B" "$(CH{(B") ("$(C$>$S$2(B" "$(CH|(B") ("$(C$>$S$5(B" "$(CH}(B") ("$(C$>$S$7(B" "$(CH~(B")) (dolist (ascii '(("1" . "$(C#1(B") ("2" . "$(C#2(B") ("3" . "$(C#3(B") ("4" . "$(C#4(B") ("5" . "$(C#5(B") ("6" . "$(C#6(B") ("7" . "$(C#7(B") ("8" . "$(C#8(B") ("9" . "$(C#9(B") ("0" . "$(C#0(B") (" " . "$(C!!(B") ("!" . "$(C#!(B") ("@" . "$(C#@(B") ("#" . "$(C##(B") ("$" . "$(C#$(B") ("%" . "$(C#%(B") ("^" . "$(C#^(B") ("&" . "$(C#&(B") ("*" . "$(C#*(B") ("(" . "$(C#((B") (")" . "$(C#)(B") ("-" . "$(C#-(B") ("=" . "$(C#=(B") ("`" . "$(C#`(B") ("\\" . "$(C#\(B") ("|" . "$(C#|(B") ("_" . "$(C#_(B") ("+" . "$(C#+(B") ("~" . "$(C#~(B") ("[" . "$(C!8(B") ("]" . "$(C!9(B") ("{" . "$(C#{(B") ("}" . "$(C#}(B") (":" . "$(C#:(B") (";" . "$(C#;(B") ("\"" . "$(C#"(B") ("'" . "$(C#'(B") ("<" . "$(C#<(B") (">" . "$(C#>(B") ("?" . "$(C#?(B") ("/" . "$(C#/(B") ("," . "$(C#,(B") ("." . "$(C#.(B") ("a" . "$(C#a(B") ("b" . "$(C#b(B") ("c" . "$(C#c(B") ("d" . "$(C#d(B") ("e" . "$(C#e(B") ("f" . "$(C#f(B") ("g" . "$(C#g(B") ("h" . "$(C#h(B") ("i" . "$(C#i(B") ("j" . "$(C#j(B") ("k" . "$(C#k(B") ("l" . "$(C#l(B") ("m" . "$(C#m(B") ("n" . "$(C#n(B") ("o" . "$(C#o(B") ("p" . "$(C#p(B") ("q" . "$(C#q(B") ("r" . "$(C#r(B") ("s" . "$(C#s(B") ("t" . "$(C#t(B") ("u" . "$(C#u(B") ("v" . "$(C#v(B") ("w" . "$(C#w(B") ("x" . "$(C#x(B") ("y" . "$(C#y(B") ("z" . "$(C#z(B") ("A" . "$(C#A(B") ("B" . "$(C#B(B") ("C" . "$(C#C(B") ("D" . "$(C#D(B") ("E" . "$(C#E(B") ("F" . "$(C#F(B") ("G" . "$(C#G(B") ("H" . "$(C#H(B") ("I" . "$(C#I(B") ("J" . "$(C#J(B") ("K" . "$(C#K(B") ("L" . "$(C#L(B") ("M" . "$(C#M(B") ("N" . "$(C#N(B") ("O" . "$(C#O(B") ("P" . "$(C#P(B") ("Q" . "$(C#Q(B") ("R" . "$(C#R(B") ("S" . "$(C#S(B") ("T" . "$(C#T(B") ("U" . "$(C#U(B") ("V" . "$(C#V(B") ("W" . "$(C#W(B") ("X" . "$(C#X(B") ("Y" . "$(C#Y(B") ("Z" . "$(C#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule (concat its-pankak-escape in) in) (its-defrule (concat its-jeonkak-escape in) out)))) (define-its-state-machine-append its-hangul-map (its-defrule "[" its-hangul-open-bracket) (its-defrule "]" its-hangul-close-bracket) (its-defrule "." its-hangul-period) (its-defrule "," its-hangul-comma) (if its-hangul-enable-jeonkak-alphabet (progn (its-defrule "1" "$(C#1(B") (its-defrule "2" "$(C#2(B") (its-defrule "3" "$(C#3(B") (its-defrule "4" "$(C#4(B") (its-defrule "5" "$(C#5(B") (its-defrule "6" "$(C#6(B") (its-defrule "7" "$(C#7(B") (its-defrule "8" "$(C#8(B") (its-defrule "9" "$(C#9(B") (its-defrule "0" "$(C#0(B") (its-defrule "!" "$(C#!(B") (its-defrule "@" "$(C#@(B") (its-defrule "#" "$(C##(B") (its-defrule "$" "$(C#$(B") (its-defrule "%" "$(C#%(B") (its-defrule "^" "$(C#^(B") (its-defrule "&" "$(C#&(B") (its-defrule "*" "$(C#*(B") (its-defrule "(" "$(C#((B") (its-defrule ")" "$(C#)(B") (its-defrule "-" "$(C#-(B") (its-defrule "~" "$(C#~(B") (its-defrule "=" "$(C#=(B") (its-defrule "`" "$(C#`(B") (its-defrule "\\" "$(C#\(B") (its-defrule "|" "$(C#|(B") (its-defrule "_" "$(C#_(B") (its-defrule "+" "$(C#+(B") (its-defrule "{" "$(C#{(B") (its-defrule "}" "$(C#}(B") (its-defrule ":" "$(C#:(B") (its-defrule ";" "$(C#;(B") (its-defrule "\"" "$(C#"(B") (its-defrule "'" "$(C#'(B") (its-defrule "<" "$(C#<(B") (its-defrule ">" "$(C#>(B") (its-defrule "?" "$(C#?(B") (its-defrule "/" "$(C#/(B")) (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "!" "!") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "-" "-") (its-defrule "~" "~") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule ":" ":") (its-defrule ";" ";") (its-defrule "\"" "\"") (its-defrule "'" "'") (its-defrule "<" "<") (its-defrule ">" ">") (its-defrule "?" "?") (its-defrule "/" "/")))) (provide 'its/hangul) egg-4.2.0/ATTIC/its/jeonkak.el000066400000000000000000000132731252027163000156720ustar00rootroot00000000000000;;; its/jeonkak.el --- Jeonkak ASCII Input in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'its)) (define-its-state-machine its-jeonkak-up-map "jeonkak-upcase" "$(C#A(B" Korean "Map for jeonkak-upcase input." (dolist (ascii '(("1" . "$(C#1(B") ("2" . "$(C#2(B") ("3" . "$(C#3(B") ("4" . "$(C#4(B") ("5" . "$(C#5(B") ("6" . "$(C#6(B") ("7" . "$(C#7(B") ("8" . "$(C#8(B") ("9" . "$(C#9(B") ("0" . "$(C#0(B") (" " . "$(C!!(B") ("!" . "$(C#!(B") ("@" . "$(C#@(B") ("#" . "$(C##(B") ("$" . "$(C#$(B") ("%" . "$(C#%(B") ("^" . "$(C#^(B") ("&" . "$(C#&(B") ("*" . "$(C#*(B") ("(" . "$(C#((B") (")" . "$(C#)(B") ("-" . "$(C#-(B") ("=" . "$(C#=(B") ("`" . "$(C#`(B") ("\\" . "$(C#\(B") ("|" . "$(C#|(B") ("_" . "$(C#_(B") ("+" . "$(C#+(B") ("~" . "$(C#~(B") ("[" . "$(C!8(B") ("]" . "$(C!9(B") ("{" . "$(C#{(B") ("}" . "$(C#}(B") (":" . "$(C#:(B") (";" . "$(C#;(B") ("\"" . "$(C#"(B") ("'" . "$(C#'(B") ("<" . "$(C#<(B") (">" . "$(C#>(B") ("?" . "$(C#?(B") ("/" . "$(C#/(B") ("," . "$(C#,(B") ("." . "$(C#.(B") ("a" . "$(C#A(B") ("b" . "$(C#B(B") ("c" . "$(C#C(B") ("d" . "$(C#D(B") ("e" . "$(C#E(B") ("f" . "$(C#F(B") ("g" . "$(C#G(B") ("h" . "$(C#H(B") ("i" . "$(C#I(B") ("j" . "$(C#J(B") ("k" . "$(C#K(B") ("l" . "$(C#L(B") ("m" . "$(C#M(B") ("n" . "$(C#N(B") ("o" . "$(C#O(B") ("p" . "$(C#P(B") ("q" . "$(C#Q(B") ("r" . "$(C#R(B") ("s" . "$(C#S(B") ("t" . "$(C#T(B") ("u" . "$(C#U(B") ("v" . "$(C#V(B") ("w" . "$(C#W(B") ("x" . "$(C#X(B") ("y" . "$(C#Y(B") ("z" . "$(C#Z(B") ("A" . "$(C#A(B") ("B" . "$(C#B(B") ("C" . "$(C#C(B") ("D" . "$(C#D(B") ("E" . "$(C#E(B") ("F" . "$(C#F(B") ("G" . "$(C#G(B") ("H" . "$(C#H(B") ("I" . "$(C#I(B") ("J" . "$(C#J(B") ("K" . "$(C#K(B") ("L" . "$(C#L(B") ("M" . "$(C#M(B") ("N" . "$(C#N(B") ("O" . "$(C#O(B") ("P" . "$(C#P(B") ("Q" . "$(C#Q(B") ("R" . "$(C#R(B") ("S" . "$(C#S(B") ("T" . "$(C#T(B") ("U" . "$(C#U(B") ("V" . "$(C#V(B") ("W" . "$(C#W(B") ("X" . "$(C#X(B") ("Y" . "$(C#Y(B") ("Z" . "$(C#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule in out)))) (define-its-state-machine-append its-jeonkak-up-map) (define-its-state-machine its-jeonkak-down-map "jeonkak-downcase" "$(C#a(B" Korean "Map for jeonkak-downcase input." (dolist (ascii '(("1" . "$(C#1(B") ("2" . "$(C#2(B") ("3" . "$(C#3(B") ("4" . "$(C#4(B") ("5" . "$(C#5(B") ("6" . "$(C#6(B") ("7" . "$(C#7(B") ("8" . "$(C#8(B") ("9" . "$(C#9(B") ("0" . "$(C#0(B") (" " . "$(C!!(B") ("!" . "$(C#!(B") ("@" . "$(C#@(B") ("#" . "$(C##(B") ("$" . "$(C#$(B") ("%" . "$(C#%(B") ("^" . "$(C#^(B") ("&" . "$(C#&(B") ("*" . "$(C#*(B") ("(" . "$(C#((B") (")" . "$(C#)(B") ("-" . "$(C#-(B") ("=" . "$(C#=(B") ("`" . "$(C#`(B") ("\\" . "$(C#\(B") ("|" . "$(C#|(B") ("_" . "$(C#_(B") ("+" . "$(C#+(B") ("~" . "$(C#~(B") ("[" . "$(C!8(B") ("]" . "$(C!9(B") ("{" . "$(C#{(B") ("}" . "$(C#}(B") (":" . "$(C#:(B") (";" . "$(C#;(B") ("\"" . "$(C#"(B") ("'" . "$(C#'(B") ("<" . "$(C#<(B") (">" . "$(C#>(B") ("?" . "$(C#?(B") ("/" . "$(C#/(B") ("," . "$(C#,(B") ("." . "$(C#.(B") ("a" . "$(C#a(B") ("b" . "$(C#b(B") ("c" . "$(C#c(B") ("d" . "$(C#d(B") ("e" . "$(C#e(B") ("f" . "$(C#f(B") ("g" . "$(C#g(B") ("h" . "$(C#h(B") ("i" . "$(C#i(B") ("j" . "$(C#j(B") ("k" . "$(C#k(B") ("l" . "$(C#l(B") ("m" . "$(C#m(B") ("n" . "$(C#n(B") ("o" . "$(C#o(B") ("p" . "$(C#p(B") ("q" . "$(C#q(B") ("r" . "$(C#r(B") ("s" . "$(C#s(B") ("t" . "$(C#t(B") ("u" . "$(C#u(B") ("v" . "$(C#v(B") ("w" . "$(C#w(B") ("x" . "$(C#x(B") ("y" . "$(C#y(B") ("z" . "$(C#z(B") ("A" . "$(C#A(B") ("B" . "$(C#B(B") ("C" . "$(C#C(B") ("D" . "$(C#D(B") ("E" . "$(C#E(B") ("F" . "$(C#F(B") ("G" . "$(C#G(B") ("H" . "$(C#H(B") ("I" . "$(C#I(B") ("J" . "$(C#J(B") ("K" . "$(C#K(B") ("L" . "$(C#L(B") ("M" . "$(C#M(B") ("N" . "$(C#N(B") ("O" . "$(C#O(B") ("P" . "$(C#P(B") ("Q" . "$(C#Q(B") ("R" . "$(C#R(B") ("S" . "$(C#S(B") ("T" . "$(C#T(B") ("U" . "$(C#U(B") ("V" . "$(C#V(B") ("W" . "$(C#W(B") ("X" . "$(C#X(B") ("Y" . "$(C#Y(B") ("Z" . "$(C#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule in out)))) (define-its-state-machine-append its-jeonkak-down-map) (provide 'its/jeonkak) egg-4.2.0/ATTIC/its/pinyin.el000066400000000000000000000504101252027163000155500ustar00rootroot00000000000000;;; its/pinyin.el --- Pinyin Input in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'its) (require 'cl)) (eval-when (compile) (defconst its-compaction-enable t)) (defvar its-pinyin-cn-enable-quanjioao-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Quanjiao alphabet") (defvar its-pinyin-cn-open-braket "$A!8(B" "*[") ; "$A#[(B" (defvar its-pinyin-cn-close-braket "$A!9(B" "*]") ; "$A#](B" (defvar its-pinyin-tw-enable-quanjioao-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Quanjiao alphabet") (defvar its-pinyin-tw-open-braket "$(G!V(B" "*[") ; "$(G!b(B " (defvar its-pinyin-tw-close-braket "$(G!W(B" "*]") ; "$(G!c(B" (eval-when-compile (defun its-prev-terminal-state (state-list) (while (and state-list (null (its-get-next-state (car state-list) -1))) (setq state-list (cdr state-list))) (car state-list)) (defun its-define-qingsheng (shengmu yunmu &optional s y) (let ((input (concat shengmu yunmu)) (output (concat (if s s (capitalize shengmu)) (if y y yunmu) "(0@(B")) state term-state) (setq state (its-defrule* input output)) (its-make-next-state state ? output) (its-make-next-state state ?0 output) (setq term-state (its-prev-terminal-state its-parent-states)) (if term-state (let ((back (- (length (its-get-keyseq term-state)) (length input))) (output (its-get-output (its-get-next-state term-state -1))) (parents its-parent-states)) (while (null (eq (car parents) term-state)) (its-make-next-state (car parents) -1 output (1+ back)) (its-defrule-otherwise (car parents) output nil back) (setq back (1+ back) parents (cdr parents))))) state)) (defmacro its-do-sisheng-table (list) `(progn ,@(mapcar (lambda (syl) `(its-define-sisheng ,@syl)) list))) (defmacro its-define-sisheng (shengmu yunmu) `(let ((qing (nth 5 ,yunmu)) (y (car ,yunmu)) (ss (list ,@shengmu)) s cs state i) (while ss (setq s (car ss) ss (cdr ss) cs (capitalize s) state (its-define-qingsheng s y cs qing)) (its-make-next-state state ?1 (concat cs (nth 1 ,yunmu) "(0@(B")) (its-make-next-state state ?2 (concat cs (nth 2 ,yunmu) "(0@(B")) (its-make-next-state state ?3 (concat cs (nth 3 ,yunmu) "(0@(B")) (its-make-next-state state ?4 (concat cs (nth 4 ,yunmu) "(0@(B"))))) (defmacro its-define-pinyin-table () '(let ((- "") (B "b") (C "c") (D "d") (F "f") (G "g") (H "h") (J "j") (K "k") (L "l") (M "m") (N "n") (P "p") (Q "q") (R "r") (S "s") (T "t") (W "w") (X "x") (Y "y") (Z "z") (CH "ch") (SH "sh") (ZH "zh") (A '("a" "(0!(B" "(0"(B" "(0#(B" "(0$(B" "a" )) (AI '("ai" "(0!(Bi" "(0"(Bi" "(0#(Bi" "(0$(Bi" "ai" )) (AN '("an" "(0!(Bn" "(0"(Bn" "(0#(Bn" "(0$(Bn" "an" )) (ANG '("ang" "(0!(Bng" "(0"(Bng" "(0#(Bng" "(0$(Bng" "ang" )) (AO '("ao" "(0!(Bo" "(0"(Bo" "(0#(Bo" "(0$(Bo" "ao" )) (E '("e" "(0%(B" "(0&(B" "(0'(B" "(0((B" "e" )) (EI '("ei" "(0%(Bi" "(0&(Bi" "(0'(Bi" "(0((Bi" "ei" )) (EN '("en" "(0%(Bn" "(0&(Bn" "(0'(Bn" "(0((Bn" "en" )) (ENG '("eng" "(0%(Bng" "(0&(Bng" "(0'(Bng" "(0((Bng" "eng" )) (ER '("er" "(0%(Br" "(0&(Br" "(0'(Br" "(0((Br" "er" )) (I '("i" "(0)(B" "(0*(B" "(0+(B" "(0,(B" "i" )) (IA '("ia" "i(0!(B" "i(0"(B" "i(0#(B" "i(0$(B" "ia" )) (IAN '("ian" "i(0!(Bn" "i(0"(Bn" "i(0#(Bn" "i(0$(Bn" "ian" )) (IANG '("iang" "i(0!(Bng" "i(0"(Bng" "i(0#(Bng" "i(0$(Bng" "iang")) (IAO '("iao" "i(0!(Bo" "i(0"(Bo" "i(0#(Bo" "i(0$(Bo" "iao" )) (IE '("ie" "i(0%(B" "i(0&(B" "i(0'(B" "i(0((B" "ie" )) (IN '("in" "(0)(Bn" "(0*(Bn" "(0+(Bn" "(0,(Bn" "in" )) (ING '("ing" "(0)(Bng" "(0*(Bng" "(0+(Bng" "(0,(Bng" "ing" )) (IONG '("iong" "i(0-(Bng" "i(0.(Bng" "i(0/(Bng" "i(00(Bng" "iong")) (IU '("iu" "i(01(B" "i(02(B" "i(03(B" "i(04(B" "iu" )) (O '("o" "(0-(B" "(0.(B" "(0/(B" "(00(B" "o" )) (ONG '("ong" "(0-(Bng" "(0.(Bng" "(0/(Bng" "(00(Bng" "ong" )) (OU '("ou" "(0-(Bu" "(0.(Bu" "(0/(Bu" "(00(Bu" "ou" )) (U '("u" "(01(B" "(02(B" "(03(B" "(04(B" "u" )) (V '("v" "(05(B" "(06(B" "(07(B" "(08(B" "(09(B" )) (UA '("ua" "u(0!(B" "u(0"(B" "u(0#(B" "u(0$(B" "ua" )) (UAI '("uai" "u(0!(Bi" "u(0"(Bi" "u(0#(Bi" "u(0$(Bi" "uai" )) (UAN '("uan" "u(0!(Bn" "u(0"(Bn" "u(0#(Bn" "u(0$(Bn" "uan" )) (UANG '("uang" "u(0!(Bng" "u(0"(Bng" "u(0#(Bng" "u(0$(Bng" "uang")) (UE '("ue" "u(0%(B" "u(0&(B" "u(0'(B" "u(0((B" "ue" )) (VE '("ve" "(09%(B" "(09&(B" "(09'(B" "(09((B" "(09(Be" )) (UI '("ui" "u(0)(B" "u(0*(B" "u(0+(B" "u(0,(B" "ui" )) (UN '("un" "(01(Bn" "(02(Bn" "(03(Bn" "(04(Bn" "un" )) (UO '("uo" "u(0-(B" "u(0.(B" "u(0/(B" "u(00(B" "uo" ))) (its-define-qingsheng "hm" "") (its-define-qingsheng "hng" "") (its-defrule* "m" "m(0@(B") (its-defrule "m0" "m(0@(B") (its-defrule* "n" "n(0@(B") (its-defrule "n0" "n(0@(B") (its-defrule "n2" "(0=@(B") (its-defrule "n3" "(0>@(B") (its-defrule "n4" "(0?@(B") (its-define-qingsheng "" "ng") (its-do-sisheng-table (((- B C D F G H K L M N P S T W Y Z CH SH ZH ) A) ((- B C D G H K L M N P S T W Z CH SH ZH ) AI) ((- B C D F G H K L M N P R S T W Y Z CH SH ZH ) AN) ((- B C D F G H K L M N P R S T W Y Z CH SH ZH ) ANG) ((- B C D G H K L M N P R S T Y Z CH SH ZH ) AO) ((- C D G H K L M N R S T Y Z CH SH ZH ) E) ((- B C D F G H K L M N P T W Z SH ZH ) EI) ((- B C D F G H K M N P R S W Z CH SH ZH ) EN) ((- B C D F G H K L M N P R S T W Z CH SH ZH ) ENG) ((- ) ER) (( B C D J L M N P Q R S T X Y Z CH SH ZH ) I) (( D J L Q X ) IA) (( B D J L M N P Q T X ) IAN) (( J L N Q X ) IANG) (( B D J L M N P Q T X ) IAO) (( B D J L M N P Q T X ) IE) (( B J L M N P Q X Y ) IN) (( B D J L M N P Q T X Y ) ING) (( J Q X ) IONG) (( D J L M N Q X ) IU) ((- B F L M P W Y ) O) (( C D G H K L N R S T Y Z CH ZH ) ONG) ((- C D F G H K L M N P R S T Y Z CH SH ZH ) OU) (( B C D F G H J K L M N P Q R S T W X Y Z CH SH ZH ) U) (( L N ) V) (( G H K R CH SH ZH ) UA) (( G H K CH SH ZH ) UAI) (( C D G H J K L N Q R S T X Y Z CH SH ZH ) UAN) (( G H K CH SH ZH ) UANG) (( J Q X Y ) UE) (( L N ) VE) (( C D G H K R S T Z CH SH ZH ) UI) (( C D G H J K L Q R S T X Y Z CH SH ZH ) UN) (( C D G H K L N R S T Z CH SH ZH ) UO) ((J Q X) (cons "a" (cdr IA ))) ((J Q X) (cons "ai" (cdr IA ))) ((J Q X) (cons "an" (cdr IAN ))) ((J Q X) (cons "ang" (cdr IANG))) ((J Q X) (cons "ao" (cdr IAO ))) ((J Q X) (cons "e" (cdr IE ))) ((J Q X) (cons "ei" (cdr IE ))) ((J Q X) (cons "en" (cdr IN ))) ((J Q X) (cons "eng" (cdr ING ))) ((J Q X) (cons "ou" (cdr IU )))))))) (define-its-state-machine its-pinyin-cn-map "pinyin-cn" "$AF4(BG" Chinese-GB "Map for Pinyin input. (Chinese-GB)" (defconst its-quanjiao-escape "Z") (defconst its-banjiao-escape "X") (its-defrule-select-mode-temporally "B" downcase) (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn) (its-define-pinyin-table) (its-defrule "b " "$A2;(B") (its-defrule "c " "$A2E(B") (its-defrule "ch " "$A3v(B") (its-defrule "d " "$A5D(B") (its-defrule "f " "$A74(B") (its-defrule "g " "$A8v(B") (its-defrule "h " "$A:M(B") (its-defrule "i " "$AR;(B") (its-defrule "j " "$A>M(B") (its-defrule "k " "$A?I(B") (its-defrule "l " "$AAK(B") (its-defrule "m " "$AC?(B") (its-defrule "n " "$ADj(B") (its-defrule "p " "$AEz(B") (its-defrule "q " "$AH%(B") (its-defrule "r " "$AHU(B") (its-defrule "s " "$AJG(B") (its-defrule "sh " "$AIO(B") (its-defrule "t " "$AK{(B") (its-defrule "w " "$ANR(B") (its-defrule "x " "$AOr(B") (its-defrule "y " "$ASV(B") (its-defrule "z " "$ATZ(B") (its-defrule "zh " "$AWE(B") (dolist (ascii '(("0" . "$A#0(B") ("1" . "$A#1(B") ("2" . "$A#2(B") ("3" . "$A#3(B") ("4" . "$A#4(B") ("5" . "$A#5(B") ("6" . "$A#6(B") ("7" . "$A#7(B") ("8" . "$A#8(B") ("9" . "$A#9(B") (" " . "$A!!(B") ("!" . "$A#!(B") ("@" . "$A#@(B") ("#" . "$A##(B") ("$" . "$A!g(B") ("%" . "$A#%(B") ("^" . "$A#^(B") ("&" . "$A#&(B") ("*" . "$A#*(B") ("(" . "$A#((B") (")" . "$A#)(B") ("-" . "$A#-(B") ("=" . "$A#=(B") ("`" . "$A#`(B") ("\\" . "$A#\(B") ("|" . "$A#|(B") ("_" . "$A#_(B") ("+" . "$A#+(B") ("~" . "$A!+(B") ("[" . "$A#[(B") ("]" . "$A#](B") ("{" . "$A#{(B") ("}" . "$A#}(B") (":" . "$A#:(B") (";" . "$A#;(B") ("\"" . "$A#"(B") ("'" . "$A#'(B") ("<" . "$A#<(B") (">" . "$A#>(B") ("?" . "$A#?(B") ("/" . "$A#/(B") ("," . "$A#,(B") ("." . "$A#.(B") ("a" . "$A#a(B") ("b" . "$A#b(B") ("c" . "$A#c(B") ("d" . "$A#d(B") ("e" . "$A#e(B") ("f" . "$A#f(B") ("g" . "$A#g(B") ("h" . "$A#h(B") ("i" . "$A#i(B") ("j" . "$A#j(B") ("k" . "$A#k(B") ("l" . "$A#l(B") ("m" . "$A#m(B") ("n" . "$A#n(B") ("o" . "$A#o(B") ("p" . "$A#p(B") ("q" . "$A#q(B") ("r" . "$A#r(B") ("s" . "$A#s(B") ("t" . "$A#t(B") ("u" . "$A#u(B") ("v" . "$A#v(B") ("w" . "$A#w(B") ("x" . "$A#x(B") ("y" . "$A#y(B") ("z" . "$A#z(B") ("A" . "$A#A(B") ("B" . "$A#B(B") ("C" . "$A#C(B") ("D" . "$A#D(B") ("E" . "$A#E(B") ("F" . "$A#F(B") ("G" . "$A#G(B") ("H" . "$A#H(B") ("I" . "$A#I(B") ("J" . "$A#J(B") ("K" . "$A#K(B") ("L" . "$A#L(B") ("M" . "$A#M(B") ("N" . "$A#N(B") ("O" . "$A#O(B") ("P" . "$A#P(B") ("Q" . "$A#Q(B") ("R" . "$A#R(B") ("S" . "$A#S(B") ("T" . "$A#T(B") ("U" . "$A#U(B") ("V" . "$A#V(B") ("W" . "$A#W(B") ("X" . "$A#X(B") ("Y" . "$A#Y(B") ("Z" . "$A#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule (concat its-banjiao-escape in) in) (its-defrule (concat its-quanjiao-escape in) out))) (its-defrule "," "$A#,(B") (its-defrule "." "$A!#(B") (its-defrule "/" "$A!"(B") (its-defrule ":" "$A#:(B") (its-defrule ";" "$A#;(B") (its-defrule "?" "$A#?(B") (its-defrule "!" "$A#!(B")) (define-its-state-machine its-pinyin-tw-map "pinyin-tw" "$(GQ;(BC" Chinese-CNS "Map for Pinyin input." (defconst its-quanjiao-escape "Z") (defconst its-banjiao-escape "X") (its-defrule-select-mode-temporally "B" downcase) (its-defrule-select-mode-temporally "Q" quanjiao-downcase-tw) (its-define-pinyin-table) (its-defrule "b " "$(GDb(B") (its-defrule "c " "$(GD_(B") (its-defrule "ch " "$(GEx(B") (its-defrule "d " "$(GN{(B") (its-defrule "f " "$(GE0(B") (its-defrule "g " "$(GT6(B") (its-defrule "h " "$(GLO(B") (its-defrule "i " "$(GD!(B") (its-defrule "j " "$(G^s(B") (its-defrule "k " "$(GF+(B") (its-defrule "l " "$(GD'(B") (its-defrule "m " "$(GJd(B") (its-defrule "n " "$(GH!(B") (its-defrule "p " "$(GJG(B") (its-defrule "q " "$(GF*(B") (its-defrule "r " "$(GEJ(B") (its-defrule "s " "$(GQR(B") (its-defrule "sh " "$(GD8(B") (its-defrule "t " "$(GEl(B") (its-defrule "w " "$(GJ<(B") (its-defrule "x " "$(GGW(B") (its-defrule "y " "$(GD4(B") (its-defrule "z " "$(GGc(B") (its-defrule "zh " "$(Gaa(B") (dolist (ascii '(("0" . "$(G$!(B") ("1" . "$(G$"(B") ("2" . "$(G$#(B") ("3" . "$(G$$(B") ("4" . "$(G$%(B") ("5" . "$(G$&(B") ("6" . "$(G$'(B") ("7" . "$(G$((B") ("8" . "$(G$)(B") ("9" . "$(G$*(B") (" " . "$(G!!(B") ("!" . "$(G!*(B") ("@" . "$(G"i(B") ("#" . "$(G!l(B") ("$" . "$(G"c(B") ("%" . "$(G"h(B") ("^" . "$(G!T(B") ("&" . "$(G!m(B") ("*" . "$(G!n(B") ("(" . "$(G!>(B") (")" . "$(G!?(B") ("-" . "$(G"1(B") ("=" . "$(G"8(B") ("`" . "$(G!j(B") ("\\" . "$(G"`(B") ("|" . "$(G"^(B") ("_" . "$(G"%(B") ("+" . "$(G"0(B") ("~" . "$(G"D(B") ("[" . "$(G!b(B") ("]" . "$(G!c(B") ("{" . "$(G!B(B") ("}" . "$(G!C(B") (":" . "$(G!((B") (";" . "$(G!'(B") ("\"" . "$(G!i(B") ("'" . "$(G!k(B") ("<" . "$(G"6(B") (">" . "$(G"7(B") ("?" . "$(G!)(B") ("/" . "$(G"_(B") ("," . "$(G!"(B") ("." . "$(G!%(B") ("a" . "$(G$[(B") ("b" . "$(G$\(B") ("c" . "$(G$](B") ("d" . "$(G$^(B") ("e" . "$(G$_(B") ("f" . "$(G$`(B") ("g" . "$(G$a(B") ("h" . "$(G$b(B") ("i" . "$(G$c(B") ("j" . "$(G$d(B") ("k" . "$(G$e(B") ("l" . "$(G$f(B") ("m" . "$(G$g(B") ("n" . "$(G$h(B") ("o" . "$(G$i(B") ("p" . "$(G$j(B") ("q" . "$(G$k(B") ("r" . "$(G$l(B") ("s" . "$(G$m(B") ("t" . "$(G$n(B") ("u" . "$(G$o(B") ("v" . "$(G$p(B") ("w" . "$(G$q(B") ("x" . "$(G$r(B") ("y" . "$(G$s(B") ("z" . "$(G$t(B") ("A" . "$(G$A(B") ("B" . "$(G$B(B") ("C" . "$(G$C(B") ("D" . "$(G$D(B") ("E" . "$(G$E(B") ("F" . "$(G$F(B") ("G" . "$(G$G(B") ("H" . "$(G$H(B") ("I" . "$(G$I(B") ("J" . "$(G$J(B") ("K" . "$(G$K(B") ("L" . "$(G$L(B") ("M" . "$(G$M(B") ("N" . "$(G$N(B") ("O" . "$(G$O(B") ("P" . "$(G$P(B") ("Q" . "$(G$Q(B") ("R" . "$(G$R(B") ("S" . "$(G$S(B") ("T" . "$(G$T(B") ("U" . "$(G$U(B") ("V" . "$(G$V(B") ("W" . "$(G$W(B") ("X" . "$(G$X(B") ("Y" . "$(G$Y(B") ("Z" . "$(G$Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule (concat its-banjiao-escape in) in) (its-defrule (concat its-quanjiao-escape in) out))) (its-defrule "," "$(G!"(B") (its-defrule "." "$(G!$(B") (its-defrule "/" "$(G!#(B") (its-defrule ":" "$(G!((B") (its-defrule ";" "$(G!'(B") (its-defrule "?" "$(G!)(B") (its-defrule "!" "$(G!*(B")) (define-its-state-machine-append its-pinyin-cn-map (its-defrule "[" its-pinyin-cn-open-braket) (its-defrule "]" its-pinyin-cn-close-braket) (if its-pinyin-cn-enable-quanjioao-alphabet (progn (its-defrule "1" "$A#1(B") (its-defrule "2" "$A#2(B") (its-defrule "3" "$A#3(B") (its-defrule "4" "$A#4(B") (its-defrule "5" "$A#5(B") (its-defrule "6" "$A#6(B") (its-defrule "7" "$A#7(B") (its-defrule "8" "$A#8(B") (its-defrule "9" "$A#9(B") (its-defrule "0" "$A#0(B") (its-defrule "@" "$A#@(B") (its-defrule "#" "$A##(B") (its-defrule "$" "$A!g(B") (its-defrule "%" "$A#%(B") (its-defrule "^" "$A#^(B") (its-defrule "&" "$A#&(B") (its-defrule "*" "$A#*(B") (its-defrule "(" "$A#((B") (its-defrule ")" "$A#)(B") (its-defrule "-" "$A#-(B") (its-defrule "~" "$A!+(B") (its-defrule "=" "$A#=(B") (its-defrule "`" "$A#`(B") (its-defrule "\\" "$A#\(B") (its-defrule "|" "$A#|(B") (its-defrule "_" "$A#_(B") (its-defrule "+" "$A#+(B") (its-defrule "{" "$A#{(B") (its-defrule "}" "$A#}(B") (its-defrule "\"" "$A#"(B") (its-defrule "'" "$A#'(B") (its-defrule "<" "$A#<(B") (its-defrule ">" "$A#>(B")) (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "-" "-") (its-defrule "~" "~") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule "\"" "\"") (its-defrule "'" "'") (its-defrule "<" "<") (its-defrule ">" ">")))) (define-its-state-machine-append its-pinyin-tw-map (its-defrule "[" its-pinyin-tw-open-braket) (its-defrule "]" its-pinyin-tw-close-braket) (if its-pinyin-tw-enable-quanjioao-alphabet (progn (its-defrule "1" "$(G$"(B") (its-defrule "2" "$(G$#(B") (its-defrule "3" "$(G$$(B") (its-defrule "4" "$(G$%(B") (its-defrule "5" "$(G$&(B") (its-defrule "6" "$(G$'(B") (its-defrule "7" "$(G$((B") (its-defrule "8" "$(G$)(B") (its-defrule "9" "$(G$*(B") (its-defrule "0" "$(G$!(B") (its-defrule "@" "$(G"i(B") (its-defrule "#" "$(G!l(B") (its-defrule "$" "$(G"c(B") (its-defrule "%" "$(G"h(B") (its-defrule "^" "$(G!T(B") (its-defrule "&" "$(G!m(B") (its-defrule "*" "$(G!n(B") (its-defrule "(" "$(G!>(B") (its-defrule ")" "$(G!?(B") (its-defrule "-" "$(G"1(B") (its-defrule "~" "$(G"D(B") (its-defrule "=" "$(G"8(B") (its-defrule "`" "$(G!j(B") (its-defrule "\\" "$(G"b(B") (its-defrule "|" "$(G"^(B") (its-defrule "_" "$(G"%(B") (its-defrule "+" "$(G"0(B") (its-defrule "{" "$(G!B(B") (its-defrule "}" "$(G!C(B") (its-defrule "\"" "$(G!i(B") (its-defrule "'" "$(G!k(B") (its-defrule "<" "$(G"6(B") (its-defrule ">" "$(G"7(B")) (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "-" "-") (its-defrule "~" "~") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule "\"" "\"") (its-defrule "'" "'") (its-defrule "<" "<") (its-defrule ">" ">")))) (provide 'its/pinyin) egg-4.2.0/ATTIC/its/quanjiao.el000066400000000000000000000243751252027163000160640ustar00rootroot00000000000000;;; its/quanjiao.el --- Quanjiao ASCII Input in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'its)) (define-its-state-machine its-quanjiao-up-cn-map "quanjiao-upcase-cn" "$A#A(B" Chinese-GB "Map for quanjiao-upcase input. (Chinese-GB)" (dolist (ascii '(("0" . "$A#0(B") ("1" . "$A#1(B") ("2" . "$A#2(B") ("3" . "$A#3(B") ("4" . "$A#4(B") ("5" . "$A#5(B") ("6" . "$A#6(B") ("7" . "$A#7(B") ("8" . "$A#8(B") ("9" . "$A#9(B") (" " . "$A!!(B") ("!" . "$A#!(B") ("@" . "$A#@(B") ("#" . "$A##(B") ("$" . "$A!g(B") ("%" . "$A#%(B") ("^" . "$A#^(B") ("&" . "$A#&(B") ("*" . "$A#*(B") ("(" . "$A#((B") (")" . "$A#)(B") ("-" . "$A#-(B") ("=" . "$A#=(B") ("`" . "$A#`(B") ("\\" . "$A#\(B") ("|" . "$A#|(B") ("_" . "$A#_(B") ("+" . "$A#+(B") ("~" . "$A!+(B") ("[" . "$A#[(B") ("]" . "$A#](B") ("{" . "$A#{(B") ("}" . "$A#}(B") (":" . "$A#:(B") (";" . "$A#;(B") ("\"" . "$A#"(B") ("'" . "$A#'(B") ("<" . "$A#<(B") (">" . "$A#>(B") ("?" . "$A#?(B") ("/" . "$A#/(B") ("," . "$A#,(B") ("." . "$A#.(B") ("a" . "$A#A(B") ("b" . "$A#B(B") ("c" . "$A#C(B") ("d" . "$A#D(B") ("e" . "$A#E(B") ("f" . "$A#F(B") ("g" . "$A#G(B") ("h" . "$A#H(B") ("i" . "$A#I(B") ("j" . "$A#J(B") ("k" . "$A#K(B") ("l" . "$A#L(B") ("m" . "$A#M(B") ("n" . "$A#N(B") ("o" . "$A#O(B") ("p" . "$A#P(B") ("q" . "$A#Q(B") ("r" . "$A#R(B") ("s" . "$A#S(B") ("t" . "$A#T(B") ("u" . "$A#U(B") ("v" . "$A#V(B") ("w" . "$A#W(B") ("x" . "$A#X(B") ("y" . "$A#Y(B") ("z" . "$A#Z(B") ("A" . "$A#A(B") ("B" . "$A#B(B") ("C" . "$A#C(B") ("D" . "$A#D(B") ("E" . "$A#E(B") ("F" . "$A#F(B") ("G" . "$A#G(B") ("H" . "$A#H(B") ("I" . "$A#I(B") ("J" . "$A#J(B") ("K" . "$A#K(B") ("L" . "$A#L(B") ("M" . "$A#M(B") ("N" . "$A#N(B") ("O" . "$A#O(B") ("P" . "$A#P(B") ("Q" . "$A#Q(B") ("R" . "$A#R(B") ("S" . "$A#S(B") ("T" . "$A#T(B") ("U" . "$A#U(B") ("V" . "$A#V(B") ("W" . "$A#W(B") ("X" . "$A#X(B") ("Y" . "$A#Y(B") ("Z" . "$A#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule in out)))) (define-its-state-machine-append its-quanjiao-up-cn-map) (define-its-state-machine its-quanjiao-down-cn-map "quanjiao-downcase-cn" "$A#a(B" Chinese-GB "Map for quanjiao-downcase input. (Chinese-GB)" (dolist (ascii '(("0" . "$A#0(B") ("1" . "$A#1(B") ("2" . "$A#2(B") ("3" . "$A#3(B") ("4" . "$A#4(B") ("5" . "$A#5(B") ("6" . "$A#6(B") ("7" . "$A#7(B") ("8" . "$A#8(B") ("9" . "$A#9(B") (" " . "$A!!(B") ("!" . "$A#!(B") ("@" . "$A#@(B") ("#" . "$A##(B") ("$" . "$A!g(B") ("%" . "$A#%(B") ("^" . "$A#^(B") ("&" . "$A#&(B") ("*" . "$A#*(B") ("(" . "$A#((B") (")" . "$A#)(B") ("-" . "$A#-(B") ("=" . "$A#=(B") ("`" . "$A#`(B") ("\\" . "$A#\(B") ("|" . "$A#|(B") ("_" . "$A#_(B") ("+" . "$A#+(B") ("~" . "$A!+(B") ("[" . "$A#[(B") ("]" . "$A#](B") ("{" . "$A#{(B") ("}" . "$A#}(B") (":" . "$A#:(B") (";" . "$A#;(B") ("\"" . "$A#"(B") ("'" . "$A#'(B") ("<" . "$A#<(B") (">" . "$A#>(B") ("?" . "$A#?(B") ("/" . "$A#/(B") ("," . "$A#,(B") ("." . "$A#.(B") ("a" . "$A#a(B") ("b" . "$A#b(B") ("c" . "$A#c(B") ("d" . "$A#d(B") ("e" . "$A#e(B") ("f" . "$A#f(B") ("g" . "$A#g(B") ("h" . "$A#h(B") ("i" . "$A#i(B") ("j" . "$A#j(B") ("k" . "$A#k(B") ("l" . "$A#l(B") ("m" . "$A#m(B") ("n" . "$A#n(B") ("o" . "$A#o(B") ("p" . "$A#p(B") ("q" . "$A#q(B") ("r" . "$A#r(B") ("s" . "$A#s(B") ("t" . "$A#t(B") ("u" . "$A#u(B") ("v" . "$A#v(B") ("w" . "$A#w(B") ("x" . "$A#x(B") ("y" . "$A#y(B") ("z" . "$A#z(B") ("A" . "$A#A(B") ("B" . "$A#B(B") ("C" . "$A#C(B") ("D" . "$A#D(B") ("E" . "$A#E(B") ("F" . "$A#F(B") ("G" . "$A#G(B") ("H" . "$A#H(B") ("I" . "$A#I(B") ("J" . "$A#J(B") ("K" . "$A#K(B") ("L" . "$A#L(B") ("M" . "$A#M(B") ("N" . "$A#N(B") ("O" . "$A#O(B") ("P" . "$A#P(B") ("Q" . "$A#Q(B") ("R" . "$A#R(B") ("S" . "$A#S(B") ("T" . "$A#T(B") ("U" . "$A#U(B") ("V" . "$A#V(B") ("W" . "$A#W(B") ("X" . "$A#X(B") ("Y" . "$A#Y(B") ("Z" . "$A#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule in out)))) (define-its-state-machine-append its-quanjiao-down-cn-map) (define-its-state-machine its-quanjiao-up-tw-map "quanjiao-upcase-tw" "$(G$A(B" Chinese-CNS "Map for quanjiao-upcase input. (Chinese-CNS)" (dolist (ascii '(("0" . "$(G$!(B") ("1" . "$(G$"(B") ("2" . "$(G$#(B") ("3" . "$(G$$(B") ("4" . "$(G$%(B") ("5" . "$(G$&(B") ("6" . "$(G$'(B") ("7" . "$(G$((B") ("8" . "$(G$)(B") ("9" . "$(G$*(B") (" " . "$(G!!(B") ("!" . "$(G!*(B") ("@" . "$(G"i(B") ("#" . "$(G!l(B") ("$" . "$(G"c(B") ("%" . "$(G"h(B") ("^" . "$(G!T(B") ("&" . "$(G!m(B") ("*" . "$(G!n(B") ("(" . "$(G!>(B") (")" . "$(G!?(B") ("-" . "$(G"1(B") ("=" . "$(G"8(B") ("`" . "$(G!j(B") ("\\" . "$(G"b(B") ("|" . "$(G"^(B") ("_" . "$(G"%(B") ("+" . "$(G"0(B") ("~" . "$(G"D(B") ("[" . "$(G!b(B") ("]" . "$(G!c(B") ("{" . "$A#{(B") ("}" . "$(G!a(B") (":" . "$(G!((B") (";" . "$(G!'(B") ("\"" . "$(G!i(B") ("'" . "$(G!k(B") ("<" . "$(G"6(B") (">" . "$(G"7(B") ("?" . "$(G!)(B") ("/" . "$(G"a(B") ("," . "$(G!"(B") ("." . "$(G!%(B") ("a" . "$(G$A(B") ("b" . "$(G$B(B") ("c" . "$(G$C(B") ("d" . "$(G$D(B") ("e" . "$(G$E(B") ("f" . "$(G$F(B") ("g" . "$(G$G(B") ("h" . "$(G$H(B") ("i" . "$(G$I(B") ("j" . "$(G$J(B") ("k" . "$(G$K(B") ("l" . "$(G$L(B") ("m" . "$(G$M(B") ("n" . "$(G$N(B") ("o" . "$(G$O(B") ("p" . "$(G$P(B") ("q" . "$(G$Q(B") ("r" . "$(G$R(B") ("s" . "$(G$S(B") ("t" . "$(G$T(B") ("u" . "$(G$U(B") ("v" . "$(G$V(B") ("w" . "$(G$W(B") ("x" . "$(G$X(B") ("y" . "$(G$Y(B") ("z" . "$(G$Z(B") ("A" . "$(G$A(B") ("B" . "$(G$B(B") ("C" . "$(G$C(B") ("D" . "$(G$D(B") ("E" . "$(G$E(B") ("F" . "$(G$F(B") ("G" . "$(G$G(B") ("H" . "$(G$H(B") ("I" . "$(G$I(B") ("J" . "$(G$J(B") ("K" . "$(G$K(B") ("L" . "$(G$L(B") ("M" . "$(G$M(B") ("N" . "$(G$N(B") ("O" . "$(G$O(B") ("P" . "$(G$P(B") ("Q" . "$(G$Q(B") ("R" . "$(G$R(B") ("S" . "$(G$S(B") ("T" . "$(G$T(B") ("U" . "$(G$U(B") ("V" . "$(G$V(B") ("W" . "$(G$W(B") ("X" . "$(G$X(B") ("Y" . "$(G$Y(B") ("Z" . "$(G$Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule in out)))) (define-its-state-machine-append its-quanjiao-up-tw-map) (define-its-state-machine its-quanjiao-down-tw-map "quanjiao-downcase-tw" "$(G$[(B" Chinese-CNS "Map for quanjiao-downcase input. (Chinese-CNS)" (dolist (ascii '(("0" . "$(G$!(B") ("1" . "$(G$"(B") ("2" . "$(G$#(B") ("3" . "$(G$$(B") ("4" . "$(G$%(B") ("5" . "$(G$&(B") ("6" . "$(G$'(B") ("7" . "$(G$((B") ("8" . "$(G$)(B") ("9" . "$(G$*(B") (" " . "$(G!!(B") ("!" . "$(G!*(B") ("@" . "$(G"i(B") ("#" . "$(G!l(B") ("$" . "$(G"c(B") ("%" . "$(G"h(B") ("^" . "$(G!T(B") ("&" . "$(G!m(B") ("*" . "$(G!n(B") ("(" . "$(G!>(B") (")" . "$(G!?(B") ("-" . "$(G"1(B") ("=" . "$(G"8(B") ("`" . "$(G!j(B") ("\\" . "$(G"`(B") ("|" . "$(G"^(B") ("_" . "$(G"%(B") ("+" . "$(G"0(B") ("~" . "$(G"D(B") ("[" . "$(G!b(B") ("]" . "$(G!c(B") ("{" . "$(G!B(B") ("}" . "$(G!C(B") (":" . "$(G!((B") (";" . "$(G!'(B") ("\"" . "$(G!i(B") ("'" . "$(G!k(B") ("<" . "$(G"6(B") (">" . "$(G"7(B") ("?" . "$(G!)(B") ("/" . "$(G"_(B") ("," . "$(G!"(B") ("." . "$(G!%(B") ("a" . "$(G$[(B") ("b" . "$(G$\(B") ("c" . "$(G$](B") ("d" . "$(G$^(B") ("e" . "$(G$_(B") ("f" . "$(G$`(B") ("g" . "$(G$a(B") ("h" . "$(G$b(B") ("i" . "$(G$c(B") ("j" . "$(G$d(B") ("k" . "$(G$e(B") ("l" . "$(G$f(B") ("m" . "$(G$g(B") ("n" . "$(G$h(B") ("o" . "$(G$i(B") ("p" . "$(G$j(B") ("q" . "$(G$k(B") ("r" . "$(G$l(B") ("s" . "$(G$m(B") ("t" . "$(G$n(B") ("u" . "$(G$o(B") ("v" . "$(G$p(B") ("w" . "$(G$q(B") ("x" . "$(G$r(B") ("y" . "$(G$s(B") ("z" . "$(G$t(B") ("A" . "$(G$A(B") ("B" . "$(G$B(B") ("C" . "$(G$C(B") ("D" . "$(G$D(B") ("E" . "$(G$E(B") ("F" . "$(G$F(B") ("G" . "$(G$G(B") ("H" . "$(G$H(B") ("I" . "$(G$I(B") ("J" . "$(G$J(B") ("K" . "$(G$K(B") ("L" . "$(G$L(B") ("M" . "$(G$M(B") ("N" . "$(G$N(B") ("O" . "$(G$O(B") ("P" . "$(G$P(B") ("Q" . "$(G$Q(B") ("R" . "$(G$R(B") ("S" . "$(G$S(B") ("T" . "$(G$T(B") ("U" . "$(G$U(B") ("V" . "$(G$V(B") ("W" . "$(G$W(B") ("X" . "$(G$X(B") ("Y" . "$(G$Y(B") ("Z" . "$(G$Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule in out)))) (define-its-state-machine-append its-quanjiao-down-tw-map) (provide 'its/quanjiao) egg-4.2.0/ATTIC/its/thai.el000066400000000000000000000125361252027163000151760ustar00rootroot00000000000000;;; its/thai.el --- Inputting Thai characters in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'its) (require 'cl)) (eval-when (compile) (defconst its-compaction-enable t)) (eval-when-compile (defmacro define-its-thai-keymap (&rest rule) (let (input output type list) (while rule (setq input (car (car rule)) output (nth 1 (car rule)) type (nth 2 (car rule)) rule (cdr rule) list (cons `(its-defrule ,input ,output) list)) (if type (setq list (cons `(setq ,type (cons (cons ,input ,output) ,type)) list)))) `(let (consonant vowel tone) ,@list (its-thai-composit consonant vowel tone)))) (defun its-thai-composit (consonant vowel tone) (let (keyseq output) (while consonant (setq keyseq (car (car consonant)) output (cdr (car consonant)) consonant (cdr consonant)) (its-thai-add-vowel keyseq output vowel tone) (its-thai-add-tone keyseq output tone)))) (defun its-thai-add-vowel (keyseq output vowel tone) (let (next-keyseq next-output) (while vowel (setq next-keyseq (concat keyseq (car (car vowel))) next-output (concat output (cdr (car vowel))) vowel (cdr vowel)) (its-defrule next-keyseq (compose-string next-output)) (its-thai-add-tone next-keyseq next-output tone)))) (defun its-thai-add-tone (keyseq output tone) (let (next-keyseq next-output) (while tone (setq next-keyseq (concat keyseq (car (car tone))) next-output (concat output (cdr (car tone))) tone (cdr tone)) (its-defrule next-keyseq (compose-string next-output)))))) ;; Thai Kesmanee keyboard support. (define-its-state-machine its-thai-kesmanee-map "kesmanee" ",T!!(B" Thai "Map for Thai Kesmanee input method with TIS620 keyboard. (Thai)" (define-its-thai-keymap ("1" ",TE(B" consonant) ("!" "#") ("2" "/") ("@" ",Tq(B") ("3" "_") ("#" ",Tr(B") ("4" ",T@(B" consonant) ("$" ",Ts(B") ("5" ",T6(B" consonant) ("%" ",Tt(B") ("6" ",TX(B" vowel) ("^" ",TY(B" vowel) ("7" ",TV(B" vowel) ("&" "0,TQi(B1" vowel) ("8" ",T$(B" consonant) ("*" ",Tu(B") ("9" ",T5(B" consonant) ("(" ",Tv(B") ("0" ",T((B" consonant) (")" ",Tw(B") ("-" ",T"(B" consonant) ("_" ",Tx(B") ("=" ",T*(B" consonant) ("+" ",Ty(B") ("\\" ",T_(B") ("|" ",To(B") ("`" ",T#(B" consonant) ("~" ",T%(B" consonant) ("q" ",Tf(B") ("Q" ",Tp(B") ("w" ",Td(B") ("W" "\"") ("e" ",TS(B") ("E" ",T.(B" consonant) ("r" ",T>(B" consonant) ("R" ",T1(B" consonant) ("T" ",T8(B" consonant) ("t" ",TP(B") ("y" ",TQ(B" vowel) ("Y" ",Tm(B" tone) ("u" ",TU(B" vowel) ("U" ",Tj(B" tone) ("i" ",TC(B" consonant) ("I" ",T3(B" consonant) ("o" ",T9(B" consonant) ("O" ",TO(B") ("p" ",TB(B" consonant) ("P" ",T-(B" consonant) ("[" ",T:(B" consonant) ("{" ",T0(B" consonant) ("]" ",TE(B" consonant) ("}" ",") ("a" ",T?(B" consonant) ("A" ",TD(B") ("s" ",TK(B" consonant) ("S" ",T&(B" consonant) ("d" ",T!(B" consonant) ("D" ",T/(B" consonant) ("f" ",T4(B" consonant) ("F" ",Tb(B") ("g" ",T`(B") ("G" ",T,(B" consonant) ("h" ",Ti(B" tone) ("H" ",Tg(B" vowel) ("j" ",Th(B" tone) ("J" ",Tk(B" tone) ("k" ",TR(B") ("K" ",TI(B" consonant) ("l" ",TJ(B" consonant) ("L" ",TH(B" consonant) (";" ",TG(B" consonant) (":" ",T+(B" consonant) ("'" ",T'(B" consonant) ("\"" ",TF(B") ("z" ",T<(B" consonant) ("Z" "(") ("x" ",T;(B" consonant) ("X" ")") ("c" ",Ta(B") ("C" ",T)(B" consonant) ("v" ",TM(B" consonant) ("V" ",TN(B" consonant) ("b" ",TT(B" vowel) ("B" ",TZ(B" vowel) ("n" ",TW(B" vowel) ("N" ",Tl(B" tone) ("m" ",T7(B" consonant) ("M" ",Tn(B" vowel) ("," ",TA(B" consonant) ("<" ",T2(B" consonant) ("." ",Tc(B") (">" ",TL(B" consonant) ("/" ",T=(B" consonant) ("?" "?"))) (define-its-state-machine-append its-thai-kesmanee-map) (provide 'its/thai) ;;; its/thai.el ends here egg-4.2.0/ATTIC/its/zhuyin.el000066400000000000000000000334171252027163000156000ustar00rootroot00000000000000;;; its/zhuyin.el --- Zhuyin Input in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'its) (require 'cl)) (eval-when (compile) (defconst its-compaction-enable t)) (defvar its-zhuyin-cn-enable-quanjioao-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Quanjiao alphabet") (defvar its-zhuyin-cn-open-braket "$A!8(B" "*[") ; "$A#[(B" (defvar its-zhuyin-cn-close-braket "$A!9(B" "*]") ; "$A#](B" (defvar its-zhuyin-tw-enable-quanjioao-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Quanjiao alphabet") (defvar its-zhuyin-tw-open-braket "$(G!V(B" "*[") ; "$(G!b(B " (defvar its-zhuyin-tw-close-braket "$(G!W(B" "*]") ; "$(G!c(B" (eval-when-compile (defmacro its-do-zhuyin-table (list) `(progn ,@(mapcar (lambda (syl) `(its-define-zhuyin ,@syl)) list))) (defmacro its-define-zhuyin (shengmu yunmu1 &optional yunmu2 qingsheng) `(let ((s (list ,@shengmu)) (yi (concat (car ,yunmu1) (car ,yunmu2))) (yo (concat (nth 1 ,yunmu1) (nth 1 ,yunmu2))) (tone ,(if qingsheng "(0A(B" "(0@(B")) in out out1 state) (while s (setq in (concat (car (car s)) yi) out (concat (nth 1 (car s)) yo) out1 (concat out tone) state (its-defrule* in out1 out) s (cdr s)) (its-defrule (concat in " ") out1) ,@(if (null qingsheng) '((its-make-next-state state ?1 (concat out "(0A(B")) (its-make-next-state state ?2 (concat out "(0B(B")) (its-make-next-state state ?3 (concat out "(0C(B")) (its-make-next-state state ?4 (concat out "(0D(B"))))))) (defmacro its-define-zhuyin-table () '(let ((- '("" "")) (B '("b" "(0E(B")) (P '("p" "(0F(B")) (M '("m" "(0G(B")) (F '("f" "(0H(B")) (D '("d" "(0I(B")) (T '("t" "(0J(B")) (N '("n" "(0K(B")) (L '("l" "(0L(B")) (G '("v" "(0M(B")) (K '("k" "(0N(B")) (H '("h" "(0O(B")) (J '("g" "(0P(B")) (Q '("7" "(0Q(B")) (X '("c" "(0R(B")) (ZH '("," "(0S(B")) (CH '("." "(0T(B")) (SH '("/" "(0U(B")) (R '("j" "(0V(B")) (Z '(";" "(0W(B")) (C '(":" "(0X(B")) (S '("s" "(0Y(B")) (A '("a" "(0Z(B")) (O '("o" "(0[(B")) (e '("r" "(0\(B")) (E '("w" "(0](B")) (AI '("i" "(0^(B")) (EI '("q" "(0_(B")) (AO '("z" "(0`(B")) (AN '("8" "(0b(B")) (EN '("9" "(0c(B")) (ANG '("0" "(0d(B")) (ENG '("-" "(0e(B")) (ER '("^" "(0f(B")) (OU '("y" "(0a(B")) (I '("e" "(0g(B")) (U '("x" "(0h(B")) (V '("u" "(0i(B"))) (its-define-zhuyin (- H) M nil t) (its-define-zhuyin (- H) '("@" "@") nil t) (its-define-zhuyin (- ) N nil t) (its-do-zhuyin-table ((( ZH CH SH R Z C S ) -) ((- B P M F D T N L G K H ZH CH SH Z C S ) A) ((- B P M F L ) O) ((- M D T N L G K H ZH CH SH R Z C S ) e) ((- B P M D T N L G K H ZH CH SH Z C S ) AI) ((- B P M F D T N L G K H ZH SH Z C ) EI) ((- B P M D T N L G K H ZH CH SH R Z C S ) AO) ((- B P M F D T N L G K H ZH CH SH R Z C S ) AN) ((- B P M F D N G K H ZH CH SH R Z C S ) EN) ((- B P M F D T N L G K H ZH CH SH R Z C S ) ANG) ((- B P M F D T N L G K H ZH CH SH R Z C S ) ENG) ((- ) ER) ((- P M F D T N L G K H ZH CH SH R Z C S ) OU) ((- B P M D T N L J Q X ) I) ((- D L J Q X ) I A) ((- ) I O) ((- B P M D T N L J Q X ) I E) ((- B P M D T N L J Q X ) I AO) ((- M D N L J Q X ) I OU) ((- B P M D T N L J Q X ) I AN) ((- B P M N L J Q X ) I EN) ((- N L J Q X ) I ANG) ((- B P M D T N L J Q X ) I ENG) ((- B P M F D T N L G K H ZH CH SH R Z C S ) U) ((- G K H ZH CH SH R ) U A) ((- D T N L G K H ZH CH SH R Z C S ) U O) ((- G K H ZH CH SH ) U AI) ((- D T G K H ZH CH SH R Z C S ) U EI) ((- D T N L G K H ZH CH SH R Z C S ) U AN) ((- D T L G K H ZH CH SH R Z C S ) U EN) ((- G K H ZH CH SH ) U ANG) ((- D T N L G K H ZH CH R Z C S ) U ENG) ((- N L J Q X ) V) ((- N L J Q X ) V E) ((- J Q X ) V AN) ((- J Q X ) V EN) ((- J Q X ) V ENG))) (mapcar (lambda (s) (its-defoutput (car s) (nth 1 s))) (list B P M F D T N L G K H J Q X)) (its-defrule (concat (car N) "2") (concat (nth 1 N) "(0B(B")) (its-defrule (concat (car N) "3") (concat (nth 1 N) "(0C(B")) (its-defrule (concat (car N) "4") (concat (nth 1 N) "(0D(B"))))) (define-its-state-machine its-zhuyin-cn-map "zhuyin-cn" "$AW"(BG" Chinese-GB "Map for Zhuyin input. (Chinese-GB)" (defconst its-quanjiao-escape "Z") (defconst its-banjiao-escape "X") (its-defrule-select-mode-temporally "B" downcase) (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn) (its-define-zhuyin-table) (dolist (ascii '(("0" . "$A#0(B") ("1" . "$A#1(B") ("2" . "$A#2(B") ("3" . "$A#3(B") ("4" . "$A#4(B") ("5" . "$A#5(B") ("6" . "$A#6(B") ("7" . "$A#7(B") ("8" . "$A#8(B") ("9" . "$A#9(B") (" " . "$A!!(B") ("!" . "$A#!(B") ("@" . "$A#@(B") ("#" . "$A##(B") ("$" . "$A!g(B") ("%" . "$A#%(B") ("^" . "$A#^(B") ("&" . "$A#&(B") ("*" . "$A#*(B") ("(" . "$A#((B") (")" . "$A#)(B") ("-" . "$A#-(B") ("=" . "$A#=(B") ("`" . "$A#`(B") ("\\" . "$A#\(B") ("|" . "$A#|(B") ("_" . "$A#_(B") ("+" . "$A#+(B") ("~" . "$A!+(B") ("[" . "$A#[(B") ("]" . "$A#](B") ("{" . "$A#{(B") ("}" . "$A#}(B") (":" . "$A#:(B") (";" . "$A#;(B") ("\"" . "$A#"(B") ("'" . "$A#'(B") ("<" . "$A#<(B") (">" . "$A#>(B") ("?" . "$A#?(B") ("/" . "$A#/(B") ("," . "$A#,(B") ("." . "$A#.(B") ("a" . "$A#a(B") ("b" . "$A#b(B") ("c" . "$A#c(B") ("d" . "$A#d(B") ("e" . "$A#e(B") ("f" . "$A#f(B") ("g" . "$A#g(B") ("h" . "$A#h(B") ("i" . "$A#i(B") ("j" . "$A#j(B") ("k" . "$A#k(B") ("l" . "$A#l(B") ("m" . "$A#m(B") ("n" . "$A#n(B") ("o" . "$A#o(B") ("p" . "$A#p(B") ("q" . "$A#q(B") ("r" . "$A#r(B") ("s" . "$A#s(B") ("t" . "$A#t(B") ("u" . "$A#u(B") ("v" . "$A#v(B") ("w" . "$A#w(B") ("x" . "$A#x(B") ("y" . "$A#y(B") ("z" . "$A#z(B") ("A" . "$A#A(B") ("B" . "$A#B(B") ("C" . "$A#C(B") ("D" . "$A#D(B") ("E" . "$A#E(B") ("F" . "$A#F(B") ("G" . "$A#G(B") ("H" . "$A#H(B") ("I" . "$A#I(B") ("J" . "$A#J(B") ("K" . "$A#K(B") ("L" . "$A#L(B") ("M" . "$A#M(B") ("N" . "$A#N(B") ("O" . "$A#O(B") ("P" . "$A#P(B") ("Q" . "$A#Q(B") ("R" . "$A#R(B") ("S" . "$A#S(B") ("T" . "$A#T(B") ("U" . "$A#U(B") ("V" . "$A#V(B") ("W" . "$A#W(B") ("X" . "$A#X(B") ("Y" . "$A#Y(B") ("Z" . "$A#Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule (concat its-banjiao-escape in) in) (its-defrule (concat its-quanjiao-escape in) out))) (its-defrule "<" "$A#,(B") (its-defrule ">" "$A!#(B") (its-defrule "?" "$A!"(B")) (define-its-state-machine its-zhuyin-tw-map "zhuyin-tw" "$(GNC(BC" Chinese-CNS "Map for Zhuyin input." (defconst its-quanjiao-escape "Z") (defconst its-banjiao-escape "X") (its-defrule-select-mode-temporally "B" downcase) (its-defrule-select-mode-temporally "Q" quanjiao-downcase-tw) (its-define-zhuyin-table) (dolist (ascii '(("0" . "$(G$!(B") ("1" . "$(G$"(B") ("2" . "$(G$#(B") ("3" . "$(G$$(B") ("4" . "$(G$%(B") ("5" . "$(G$&(B") ("6" . "$(G$'(B") ("7" . "$(G$((B") ("8" . "$(G$)(B") ("9" . "$(G$*(B") (" " . "$(G!!(B") ("!" . "$(G!*(B") ("@" . "$(G"i(B") ("#" . "$(G!l(B") ("$" . "$(G"c(B") ("%" . "$(G"h(B") ("^" . "$(G!T(B") ("&" . "$(G!m(B") ("*" . "$(G!n(B") ("(" . "$(G!>(B") (")" . "$(G!?(B") ("-" . "$(G"1(B") ("=" . "$(G"8(B") ("`" . "$(G!j(B") ("\\" . "$(G"`(B") ("|" . "$(G"^(B") ("_" . "$(G"%(B") ("+" . "$(G"0(B") ("~" . "$(G"D(B") ("[" . "$(G!b(B") ("]" . "$(G!c(B") ("{" . "$(G!B(B") ("}" . "$(G!C(B") (":" . "$(G!((B") (";" . "$(G!'(B") ("\"" . "$(G!i(B") ("'" . "$(G!k(B") ("<" . "$(G"6(B") (">" . "$(G"7(B") ("?" . "$(G!)(B") ("/" . "$(G"_(B") ("," . "$(G!"(B") ("." . "$(G!%(B") ("a" . "$(G$[(B") ("b" . "$(G$\(B") ("c" . "$(G$](B") ("d" . "$(G$^(B") ("e" . "$(G$_(B") ("f" . "$(G$`(B") ("g" . "$(G$a(B") ("h" . "$(G$b(B") ("i" . "$(G$c(B") ("j" . "$(G$d(B") ("k" . "$(G$e(B") ("l" . "$(G$f(B") ("m" . "$(G$g(B") ("n" . "$(G$h(B") ("o" . "$(G$i(B") ("p" . "$(G$j(B") ("q" . "$(G$k(B") ("r" . "$(G$l(B") ("s" . "$(G$m(B") ("t" . "$(G$n(B") ("u" . "$(G$o(B") ("v" . "$(G$p(B") ("w" . "$(G$q(B") ("x" . "$(G$r(B") ("y" . "$(G$s(B") ("z" . "$(G$t(B") ("A" . "$(G$A(B") ("B" . "$(G$B(B") ("C" . "$(G$C(B") ("D" . "$(G$D(B") ("E" . "$(G$E(B") ("F" . "$(G$F(B") ("G" . "$(G$G(B") ("H" . "$(G$H(B") ("I" . "$(G$I(B") ("J" . "$(G$J(B") ("K" . "$(G$K(B") ("L" . "$(G$L(B") ("M" . "$(G$M(B") ("N" . "$(G$N(B") ("O" . "$(G$O(B") ("P" . "$(G$P(B") ("Q" . "$(G$Q(B") ("R" . "$(G$R(B") ("S" . "$(G$S(B") ("T" . "$(G$T(B") ("U" . "$(G$U(B") ("V" . "$(G$V(B") ("W" . "$(G$W(B") ("X" . "$(G$X(B") ("Y" . "$(G$Y(B") ("Z" . "$(G$Z(B"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule (concat its-banjiao-escape in) in) (its-defrule (concat its-quanjiao-escape in) out))) (its-defrule "<" "$(G!"(B") (its-defrule ">" "$(G!$(B") (its-defrule "?" "$(G!#(B")) (define-its-state-machine-append its-zhuyin-cn-map (its-defrule "[" its-zhuyin-cn-open-braket) (its-defrule "]" its-zhuyin-cn-close-braket) (if its-zhuyin-cn-enable-quanjioao-alphabet (progn (its-defrule "#" "$A##(B") (its-defrule "$" "$A!g(B") (its-defrule "%" "$A#%(B") (its-defrule "&" "$A#&(B") (its-defrule "*" "$A#*(B") (its-defrule "(" "$A#((B") (its-defrule ")" "$A#)(B") (its-defrule "~" "$A!+(B") (its-defrule "=" "$A#=(B") (its-defrule "`" "$A#`(B") (its-defrule "\\" "$A#\(B") (its-defrule "|" "$A#|(B") (its-defrule "_" "$A#_(B") (its-defrule "+" "$A#+(B") (its-defrule "{" "$A#{(B") (its-defrule "}" "$A#}(B") (its-defrule "\"" "$A#"(B") (its-defrule "'" "$A#'(B")) (progn (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "~" "~") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule "\"" "\"") (its-defrule "'" "'")))) (define-its-state-machine-append its-zhuyin-tw-map (its-defrule "[" its-zhuyin-tw-open-braket) (its-defrule "]" its-zhuyin-tw-close-braket) (if its-zhuyin-tw-enable-quanjioao-alphabet (progn (its-defrule "#" "$(G!l(B") (its-defrule "$" "$(G"c(B") (its-defrule "%" "$(G"h(B") (its-defrule "&" "$(G!m(B") (its-defrule "*" "$(G!n(B") (its-defrule "(" "$(G!>(B") (its-defrule ")" "$(G!?(B") (its-defrule "~" "$(G"D(B") (its-defrule "=" "$(G"8(B") (its-defrule "`" "$(G!j(B") (its-defrule "\\" "$(G"`(B") (its-defrule "|" "$(G"^(B") (its-defrule "_" "$(G"%(B") (its-defrule "+" "$(G"0(B") (its-defrule "{" "$(G!B(B") (its-defrule "}" "$(G!C(B") (its-defrule "\"" "$(G!i(B") (its-defrule "'" "$(G!k(B")) (progn (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "~" "~") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule "\"" "\"") (its-defrule "'" "'")))) (provide 'its/zhuyin) egg-4.2.0/ATTIC/leim-list.el000066400000000000000000000051061252027163000153440ustar00rootroot00000000000000;;; leim-list.el --- Egg setup for leim API ;; Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; KATAYAMA Yoshio ;; TOMURA Satoru ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (autoload 'egg-activate-anthy "egg/anthy" "Activate ANTHY backend of Tamago 4." t) (autoload 'egg-activate-wnn "egg/wnn" "Activate Wnn backend of Tamago 4." t) (autoload 'egg-activate-sj3 "egg/sj3" "Activate SJ3 backend of Tamago 4." t) (autoload 'egg-activate-canna "egg/canna" "Activate CANNA backend of Tamago 4." t) (register-input-method "japanese-egg-anthy" "Japanese" 'egg-activate-anthy "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" 'its-select-hiragana) (register-input-method "japanese-egg-wnn" "Japanese" 'egg-activate-wnn "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" 'its-select-hiragana) (register-input-method "japanese-egg-sj3" "Japanese" 'egg-activate-sj3 "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" 'its-select-hiragana) (register-input-method "japanese-egg-canna" "Japanese" 'egg-activate-canna "$B$"(B.." "Romaji -> Hiragana -> Kanji&Kana" 'its-select-hiragana) (autoload 'egg-mode "egg" "Toggle EGG mode." t) (set-language-info "Japanese" 'input-method "japanese-egg-anthy") (defgroup leim nil "LEIM stands for Libraries of Emacs Input Methods." :group 'mule) (defgroup egg nil "" :group 'leim :load "egg") (defgroup anthy nil "" :group 'egg :load "egg/anthy") (defgroup wnn nil "" :group 'egg :load "egg/wnn") (defgroup sj3 nil "" :group 'egg :load "egg/sj3") (defgroup canna nil "" :group 'egg :load "egg/canna") (defgroup its nil "" :group 'egg :load "its") (defgroup hira nil "" :group 'its :load "its/hira") ;;; leim-list.el ends here. egg-4.2.0/AUTHORS000066400000000000000000000011421252027163000133230ustar00rootroot00000000000000KAWABATA, Taichi Menudiag improvement. MORIOKA Tomohiko Use of custom. NIIBE Yutaka Design a part of ITS programming. Wrote ITS: its.el its-hira.el Wrote egg.el, menudiag.el, egg-cnv.el and egg-mlh.el. Wrote backend conversion engine interface: ANTHY: egg-anthy.el, egg-anthyipc.el KATAYAMA Yoshio Design ITS programming, after Niibe. Satoru Tomura Designer/Implementor/Maintainer of EGG through V3.0. Discussion/Design around ITS. Suggestion around how to write code in LISP. egg-4.2.0/COPYING000066400000000000000000000431101252027163000133070ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program 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 program 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 program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. egg-4.2.0/ChangeLog000066400000000000000000000237001252027163000140310ustar00rootroot000000000000002015-04-30 Niibe Yutaka * egg.el (egg-version): 4.2.0. * egg-anthy.el (anthy-new-environment): Use UTF-8. 2015-04-27 Niibe Yutaka * egg-mlh.el: (mlh-beg, mlh-candidates, mlh-end-marker) (henkan-begin, current-candidate, number-of-candidates) (inhibit-henkan): Declare dyanmic binding variables. * egg-sj3.el, egg-sj3rpc.el, egg-comm.el: Move to ATTIC. 2014-11-10 Niibe Yutaka * egg.el (egg-version): 4.1.8. Save in UTF-8. * egg-mlh.el: Save in UTF-8. 2014-11-08 NIIBE Yutaka * egg.el (egg-version): 4.1.7. * egg-anthy.el (anthy-get-source-language) (anthy-get-converted-language): Remove. * egg-sj3.el (sj3-get-source-language) (sj3-get-converted-language): Remove. * egg-cnv.el (egg-get-source-language) (egg-get-converted-language) (egg-get-source-language-noconv) (egg-get-converted-language-noconv): Remove. (egg-get-conversion-face): Remove LANG. * egg-cnv.el (egg-get-source-language-noconv) (egg-get-converted-language-noconv): Remove. (egg-get-conversion-face): Remove lang. * its.el (its-hiragana, its-katakana): Arg change for removal of multi-lang support. * egg-cnv.el (egg-make-bunsetsu): Don't put egg-lang prop. * its.el (its-current-language): Remove. * egg.el (egg-default-language): Remove. * its.el (its-set-stroke-input): Remove. (its-stroke-input-alist): Remove. (its-current-language-length): Remove. 2014-11-07 Niibe Yutaka * egg-cnv.el (egg-decide-before-point): Fix it again. * its.el (its-kick-convert-region) (its-kick-convert-region-or-self-insert): Fix interactive spec. (its-half-width, its-full-width): Only for Japanese. 2014-11-07 Niibe Yutaka * egg.el (egg-version): 4.1.6. * egg-cnv.el (egg-decide-before-point): Fix for the previous compatibility change. 2014-11-07 Niibe Yutaka * egg.el (egg-version): 4.1.5. * egg-cnv.el (egg-next-bunsetsu-point): Add back the compatibility code functionality which was once in egg-edep.el. (egg-decide-before-point): Likewise. * its.el: Declarations. (its-setup-yanked-portion): Remove support of multi-lang. * egg.el (its): Require. (its-current-language, its-start, its-exit-mode): Declarations. (egg-set-conversion-backend, egg-exit-conversion) (egg-finalize-backend): Declarations. * egg-anthyipc.el (egg-error, anthy-make-bunsetsu): Declarations for compiler. (anthyipc-call-with-proc, anthyipc-wait-line, anthyipc-accept-ok) (anthyipc-accept-number, anthyipc-accept-segments) (anthyipc-accept-candidates): Lexical scope. * egg-mlh.el: Remove unused "m17n" features. This file uses dynamic-binding, thus stop warnings for free-vars. * egg.el (egg-add-message): Remove. (egg-messages): Define as constant. It should not be dynamic. (egg-set-message-language-alist): Remove. (egg-message-language-alist): Remove. * egg-sj3rpc.el (egg-sj3rpc): Provide the feature. (sj3env-get-proc, sj3-make-bunsetsu): Declare here. (egg-com): Require. (sj3-sjis-p, sj3-const): Remove eval-when-compile. * egg-sj3.el (egg-sj3rpc): Require, not load. * egg-anthyipc.el (anthy-make-bunsetsu): Declare here. (egg-anthyipc): Provide the feature. * egg-anthy.el (egg-anthyipc): Require, not load. 2014-11-06 Niibe Yutaka * egg-cnv.el (egg-convert-region): Don't call its-define-select-keys. * its.el (its-setup-fence-mode): Likewise. (its-select-hiragana, its-select-katakana): Add these two. * egg.el (egg-mode): Likewise. It's evil to always dynamically do things like defining keymap at runtime. * egg.el (egg-version): 4.1.4. (egg-self-insert-char): Use last-command-event. 2014-11-06 Niibe Yutaka * egg.el (egg-version): 4.1.3. * menudiag.el (menudiag-goto-item, menudiag-selection-goto): Use last-command-event. * its.el (its-kick-convert-region-or-self-insert) (its-self-insert-char): Likewise. * its.el (its-setup-fence-before-insert-SYL): It's not constant since it dynamically bound to t. (its-half-width, its-full-width): Use string-to-list. * egg.el (egg-add-message): Use mapc for side effects. * its.el (its-next-line, its-previous-line): Use forward-line. * menudiag.el (menudiag-selection-goto-internal): Use with-current-buffer (was: save-excursion). * egg.el (egg-activate-keymap-after-command): Likewise. * egg-sj3rpc.el (sj3rpc-call-with-environment): Likewise. * egg-com.el (comm-call-with-proc): Likewise. * egg-anthyipc.el (anthyipc-call-with-proc): Likewise. * egg-anthy.el (anthy-new-environment): Likewise. 2014-11-06 Niibe Yutaka * egg-sj3.el, egg-cnv.el, its-hankata.el: Save in UTF-8. * its-hira.el, its-jiskana.el, its-kata.el: Ditto. * its-zenkaku.el, its.el: Ditto. * egg-cnv.el (egg-add-message): Only Japanese and English. * AUTHORS: Updated. * its.el (its-keydef): Remove. * egg-anthy.el, egg-anthyipc.el: Relicensed with GPLv3+. * its-kata.el: Add comment about copyright notice. * egg-anthy.el: Move from egg/anthy.el. * egg-anthyipc.el: Move from egg/anthyipc.el. * egg-sj3.el: Move from egg/sj3.el. * egg-sj3rpc.el: Move from egg/sj3rpc.el. * egg.el (egg-simple-input-method): Remove. (modefull, modeless): Remove egg-simple-input-method. * Makefile.in, configure, configure.ac: Move to ATTIC. * docomp.el, eggrc, install-sh, leim-list.el: Ditto. * README.ja.txt, AUTHORS, doc, egg-sim.el, its-keydef.el: Ditto. * egg/canna.el, egg/cannarpc.el, egg/wnn.el, egg/wnnrpc.el: Ditto. * its/aynu.el, its/bixing.el, its/erpin.el, its/greek.el: Ditto. * its/hangul.el, its/jeonkak.el, its/pinyin.el: Ditto. * its/quanjiao.el, its/thai.el, its/zhuyin.el: Ditto. 2014-11-05 Niibe Yutaka * egg.el (egg-version): 4.1.2. * egg.el, its.el (egg-edep): Don't require. * egg-cnv.el, egg-com.el: Likewise. * egg/anthy.el, egg/sj3.el, egg/wnn.el, egg/canna.el: Likewise. 2014-11-05 Niibe Yutaka * egg.el (egg-version): 4.1.1. * Makefile.in (INITELS): Remove eggrc. (EGGSRCS): Remove egg/cannarpc.el, egg/canna.el, egg/wnnrpc.el and egg/wnn.el. * egg-edep.el: Remove. * egg-cnv.el (egg-decide-first-char): Use aref. * its.el (its-exit-mode-internal): Simplify with no multi-lang. (its-kick-convert-region, its-kick-convert-region-or-self-insert): Likewise. (its-setup-yanked-portion): Use +1 (only for Emacs 20.3 or later). * egg-cnv.el (egg-get-conversion-backend): Remove. (egg-default-conversion-backend-p): Remove. (egg-get-current-backend): Remove. (egg-get-reconvert-backend): Remove. (egg-get-conversion-backend, egg-convert-region): Simplify. (egg-assign-backend, egg-search-file): Remove. (egg-insert-bunsetsu-list): Simplify. (egg-insert-new-bunsetsu): Simplify. (egg-reconvert-bunsetsu-internal): Likewise. (egg-toroku-region): Likewise. * egg.el (egg-mark-list, egg-suppress-marking) (egg-mark-modification, egg-redraw-face): Remove. (egg-set-face): Just add face property to text. 2014-11-04 Niibe Yutaka * egg-cnv.el (egg-separate-languages): Remove. (egg-convert-region, egg-toroku-string): Don't call egg-separate-languages. * its.el (its-setup-yanked-portion): Likewise. * egg-cnv.el (egg-get-language): Remove. (egg-toroku-string): Don't call egg-get-language. * egg-cnv.el (egg-next-chinese-lang, egg-next-part-lang): Remove. * egg-cnv.el (egg-start-conversion-noconv): Don't put language, it's NIL always. (egg-decide-before-point, egg-toroku-bunsetsu): Likewise. (egg-assign-backend): Likewise. * egg-cnv.el (egg-charset-to-language): Remove. * egg-cnv.el (egg-default-startup-file, egg-load-startup-file): Remove. 2014-10-31 Niibe Yutaka * egg.el (egg-version): 4.1.0 as a fork by gniibe. * egg-cnv.el: Mention copyright notice is not correct, but it's no problem to distribute under GPLv2+. 2014-10-30 Niibe Yutaka * leim-list.el ("Japanese"): Default is now Anthy backend. * egg-cnv.el (egg-separate-characters): Remove. (egg-get-char-size): Remove. (egg-enlarge-bunsetsu-internal): Just use LENGTH. * egg.el (egg-mode): Don't call make-local-hook which is not needed any more. * menudiag.el (menudiag-selection-mode): Likewise. * Makefile.in (datarootdir): New. * leim-list.el ("chinese-gb-egg-wnn-py") ("chinese-gb-egg-wnn-zy", "chinese-gb-egg-wnn-qm") ("chinese-gb-egg-wnn-wb", "chinese-cns-egg-wnn-py") ("chinese-cns-egg-wnn-zy", "korean-egg-wnn"): Removal of Chinese and Korean Wnn support, which was very experimental even at the development days of 1999. * configure: Regenerated. * Makefile.in: Removal of @HAVE_JISX0213@. * configure.ac: Rename. * check-jisx0213.el: Removed from repo and distribution.. * egg-x0213.el: Removed from repo and distribution. * jisx0213.el: Removed from repo and distribution. * egg.el (egg): It's under leim group. (egg-mode): Replace obsolete variable inactivate-current-input-method-function. (egg-exit-from-minibuffer): Replace obsolete function inactivate-input-method. * egg-sim.el (make-non-iso2022-code-table-file) (make-iso2022-94char-code-table-file) (make-iso2022-96char-code-table-file, make-euc-code-table-file): Remove format which is not needed. * menudiag.el (menudiag-choose-item-internal): Use choose-completion. * egg/canna.el (canna-word-delete-regist): Fix lambda. * egg-mlh.el (mlh-zenkaku-white, mlh-white-space): Use string-to-number. * menudiag.el (menudiag-choose-item-internal): Likewise. * its.el (its-mode-help-command): Use called-interactively-p. * egg-cnv.el (egg-help-command): Likewise. * egg-com.el: Remove support of fixed-euc-kr, fixed-euc-py-cn, fixed-euc-zy-cn, fixed-euc-py-tw, fixed-euc-zy-tw and egg-binary. (comm-unpack-binary-data): Use 'binary for decode-coding-string. * egg/anthy.el (anthy-new-environment): Use set-process-query-on-exit-flag. * egg/sj3.el (sj3-open): Likewise. * egg/canna.el (canna-open): Likewise. Use string-to-number. * egg/wnn.el (wnn-open): Likewise. 2014-10-24 Niibe Yutaka * egg-com.el (fixed-euc-jp): Fix for modern Emacs. Thanks to Handa-san. egg-4.2.0/ChangeLog.1997-1998000066400000000000000000002445631252027163000150650ustar00rootroot000000000000001998-07-12 NIIBE Yutaka * egg-mlh.el (mlh-space-bar-backward-henkan): Don't test against egg-conversion-backend-alist. * egg/wnn.el (wnn-fini-lang): Reneme from wnn-fini. (wnn-fini): New implementation calling wnn-fini-lang. (wnn-close): Call wnn-fini-lang. (wnn-dictionary-save): Ditto. * egg/canna.el (canna-fini): Delete LANG argument. * egg/sj3.el (sj3-fini): Ditto. * egg-cnv.el (egg-set-conversion-backend): Removed. * egg/sj3.el (sj3-start-conversion): Signal error on non-supported language. * egg/canna.el (canna-start-conversion): Likewise. * egg/wnn.el (wnn-start-conversion): Likewise. * egg-cnv.el (egg-convert-region): Add handler for lang-not-supported. * egg/wnn.el (egg-activate-wnn): load wnnrpc here conditionally. * egg/sj3.el: Likewise. * egg/canna.el: Likewise. * egg.el (egg-support-languages, egg-set-support-languages): Removed. (egg-mode): Don't call egg-set-conversion-backend. * egg/{canna.el, wnn.el, sj3.el}: Don't call egg-support-languages. * egg-cnv.el (egg-set-current-backend): Removed. (egg-initialize-backend, egg-start-conversion, egg-start-reverse-conversion): Don't call egg-set-current-backend. (egg-conversion-backend-null): Rename from *-other-languages. (egg-conversion-backend-alist): Removed. (egg-conversion-backend): Not buffer local. (egg-finalize-backend-alist): Removed. 1998-07-10 NIIBE Yutaka * egg-cnv.el (egg-start-conversion-failure-hook): New Variable. (egg-start-conversion-failure-fallback): New Function. (egg-convert-region): Handle error and hook on failure. * egg/sj3.el (sj3-open): Remove bogus setq-s of sj3-sys-dict-list, sj3-user-dict-list. * egg-mlh.el (mlh-space-bar-backward-henkan): Don't emit message "converting...", as it may flush out error message. * egg/sj3rpc.el ("egg-com", "egg/sj3"): Require on compilation. (sj3rpc-open): Failure when version is different. 1998-07-03 KATAYAMA Yoshio * its/erpin.el, its/hangul.el, its/hankata.el, its/hira.el, its/jeonkak.el, its/kata.el, its/pinyin.el, its/quanjiao.el, its/thai.el, its/zenkaku.el: Updated using new its-*. * its.el (define-its-state-machine): Rewritten. (define-its-compiled-map): Deleted. (define-its-state-machine-append): Rewritten. (its-defrule): Rewritten. (its-defrule*): Rewritten. (its-parent-states): New Variable. (its-goto-state): Remove 2nd optional argument INITIAL-STATE. (its-set-interim-terminal-state): New Function. (its-make-next-state): Remove 2nd argument KEYSEQ. 1998-07-01 NIIBE Yutaka * egg-mlh.el (mlh-hira-to-kata): Removed. Doesn't work any more. (mlh-katakana): Use japanese-katakana-region. * egg-cnv.el (egg-conversion-map): Add again mapping for "/". 1998-06-27 KATAYAMA Yoshio * egg-cnv.el (egg-abort-conversion): Bug fix. 1998-06-27 NIIBE Yutaka * egg/wnn.el (wnn-dictionary-specification-list): Don' specify for gerodic/g-jinmei. Suggested by SAKAI Kiyotaka . 1998-06-26 KATAYAMA Yoshio * its.el (its-cancel-input): Bug fix. 1998-06-26 SAKAI Kiyotaka * egg-cnv.el (egg-conversion-mode, egg-help-command): New functions for help string. * its.el (its-mode, its-mode-help-command): Likewise. 1998-06-26 KATAYAMA Yoshio * egg-cnv.el (egg-convert-region): Bug fix. * egg.el (egg-default-language): Don't use string. * its/hankata.el (its-han-kata-enable-double-n, and others): Variable name change (-han-) to distingush kata.el. * its/erpin.el (its-erpin-tw-enable-quanjioao-alphabet, its-erpin-cn-enable-quanjioao-alphabet): See its-enable-fullwidth-alphabet. * its/kata.el (its-kata-enable-zenkaku-alphabet): Likewise. * its/pinyin.el (its-pinyin-cn-enable-quanjioao-alphabet): Likewise. * its/zenkaku.el (its-zenkaku-down-map): Likewise. * its/erpin.el (its-erpin-tw-map): Bug fix for "\\", "{", "}", and "/". * its/pinyin.el (its-pinyin-cn-map): Ditto. * its/quanjiao.el (its-quanjiao-down-tw-map): Ditto. * its/zhuyin.el (its-zhuyin-cn-enable-quanjioao-alphabet): Ditto. * its/hira.el (its-hira-enable-zenkaku-alphabet): Follow changes of its.el. * its/ascii.el (its-up-map, its-down-map): Ditto. * its/jeonkak.el (its-jeonkak-up-map): Ditto. * its/hira.el (its-hira-enable-zenkaku-alphabet): See its-enable-fullwidth-alphabet. * egg/wnn.el (wnn-save-dictionaries): Rewritten. * egg/canna.el (egg-edep): Required. (canna-support-languages): Use symbol. * egg/sj3.el (egg-edep): Likewise. * egg/wnn.el (egg-edep): Likewise. * egg/wnnrpc.el: Use symbol. * menudiag.el (menudiag-mode-map): Bug fix for boundary conditions. (menudiag-make-selection-list): Bug fix in case of many items. (menudiag-forward-item, menudiag-backward-item, menudiag-goto-line): Change so that it wraps. * its.el (egg-edep): Required. (its-keydef): Require unconditioanlly. (its-mode-map): Don't call its-define-select-keys here. (its-mode-map): Use of symbol as keymap. (its-fence-invisible): New variable. (its-put-cursor): Don't call its-define-select-keys. (its-setup-fence-mode): invisible handling and its-define-select-keys. (its-keyseq-acceptable-p): if (CDR SYL) is number, return NIL. (define-its-state-machine): Introduce its-temporaly-map. (define-its-state-machine-append): Likewise. (its-goto-state): Use symbol as keymap, not directly. (its-set-part-1,its-set-part-2): New function. (its-delete-backward-within-SYL): Conditionalize. * egg.el (egg-edep): Required. (egg-mode): Add remove-hook call. Supply NIL as first argument to egg-set-conversion-backend. make-local-hook for input-method-activate-hook. (egg-set-face): Add optional argument OBJECT. (egg-redraw-face): Bind inhibit-point-motion-hooks. * egg.el (set-buffer-multibyte): Move to egg-edep.el. * egg-mlh.el (mlh-space-bar-backward-henkan): Use assq. * egg-com.el (egg-zhuyin-syllable): compatibility change. (encode-fixed-euc-china-region): Removed maxlen. Really Needed? -- gN. * egg-com.el (egg-pinyin-syllable): Check exact match. (egg-zhuyin-syllable): Likewise. * egg-cnv.el (egg-edep): Required. (its-keydef): Not required. (egg-conversion-map): Don't call its-define-select-keys here. Fset it to use symbol instead of the map directly. (egg-get-bunsetsu-info): Add new optional argument for getting property. (egg-start-conversion-other-languages): set egg-conversion-backend. (egg-set-current-backend): Use assq instead of assoc. (egg-get-conversion-face): Likewise. (egg-conversion-invisible): New variable. (egg-convert-region): Change for open/close delimiter. (egg-chinese-sisheng-regexp): New function. (egg-separate-languages): Use egg-chinese-sisheng-regexp, use symbol for language specifier (instead of string). (egg-charset-to-language): Use symbol for language specifier (instead of string). (egg-next-chinese-lang): Likewise. (egg-next-part-lang): Change the arguments. (egg-make-bunsetsu): New function changing egg-insert-bunsetsu. (egg-separate-characters): compatibility changes. (egg-conversion-wrap-select): New Variable. (egg-next-candidate): Can wrap around. (egg-decide-before-point): Rewritten. (egg-abort-conversion): Back to previous one. (egg-select-candidate): Use egg-make-bunsetsu. * egg-edep.el: New File for handling differences between Emacs version. * its/thai.el: New File. * its/hangul.el: Updated. 1998-06-26 NIIBE Yutaka * Makefile (install): Don't touch .emacs and leim-list.el directly. User should do it by her hand. Reported by SAKAI Kiyotaka 1998-06-25 NIIBE Yutaka * egg/canna.el (canna-dictionary-specification): "user" instead of ("user"). Should chnage canna-filename later. Reported by Akio Morita . 1998-04-02 NIIBE Yutaka * egg-com.el (comm-unpack-u16-string): Call string-as-multibyte. (comm-unpack-mb-string): Likewise. * egg.el (set-buffer-multibyte): Function for Emacs 20.2. * egg/wnn.el (wnn-open): Call set-buffer-multibyte. * egg/sj3.el (sj3-open): Ditto. * egg/canna.el (canna-open): Ditto. 1998-04-02 KATAYAMA Yoshio Implement hilight. * egg.el (egg-mark-list, egg-suppress-marking): New Variables. (egg-set-face, egg-mark-modification, egg-redraw-face): New Functions. * its.el (its-buffer-ins/del-SYL): Call egg-set-face. (its-setup-yanked-portion): Likewise. * egg-cnv.el (egg-insert-bunsetsu): Call egg-set-face. * egg.el (egg-mode): set default backend. * egg-mlh.el (mlh-space-bar-backward-henkan): activate input method. 1998-04-02 NIIBE Yutaka * egg-cnv.el (egg-decide-bunsetsu): Undo changes of 03-16. (egg-abort-conversion): Call egg-end-conversion. (egg-decide-before-point): Call egg-end-conversion widh ABORT=NIL. 1998-03-16 NIIBE Yutaka CANNA Support. * egg/canna.el, egg/cannarpc.el: New file. * Makefile (SRCS): Added. * egg-cnv.el (egg-end-conversion): Add argument ABORT. * egg/wnn.el (wnn-end-conversion): Follow the change of EGG-END-CONVERSION. * egg/sj3.el (sj3-end-conversion): Likewise. 1998-03-15 NIIBE Yutaka * Makefile: Add dependencies for its-keydef.elc. * egg/sj3rpc.el (sj3-open): Don't support list of hosts. * its.el (its-exit-mode, its-kick-convert-region): Bug fix. Call its-input-end and its-put-cursor. (its-exit-mode-off-input-method): Removed. 1998-03-14 KATAYAMA Yoshio * docomp.el (its-keydef): Undo the changes of 03-09. its.el is fixed. * egg-cnv.el (egg-current-language): New valiable. (egg-bunsetsu-info): Separate bunsetsu-info and lunguage. (egg-conversion-backend-other-languages egg-init-other-languages egg-start-conversion-other-languages egg-get-bunsetsu-converted-other-languages egg-get-bunsetsu-source-other-languages egg-list-candidates-other-languages egg-get-number-of-candidates-other-languages egg-get-current-candidate-number-other-languages egg-get-all-candidates-other-languages egg-decide-candidate-other-languages egg-change-bunsetsu-length-other-languages egg-end-conversion-other-languages egg-fini-other-languages): New valiable and functions for handling unknown language. (egg-set-current-backend): Set egg-conversion-backend-other-languages when backend for specified language isn't found. (egg-start-reverse-conversion): New function for reverse conversion. (egg-set-conversion-backend-internal): Removed. (egg-set-conversion-backend): Args are changed. (egg-get-conversion-face): New function for different face for every language. (egg-convert-region): Make converting text read-only. Handle unknown laguages and backend opening error. Rename its-lang to egg-lang. (egg-separate-languages): Argument use-context is added to utilize context when called by its-yank. Rename its-lang to egg-lang Improve speed. (egg-charset-to-language): Renamed from egg-char-to-language. (egg-next-part-lang egg-next-chinese-lang): Rename its-lang to egg-lang. (egg-conversion-map): Unbind C-\ and /. Bind C-X RET XXX to its-select-XXX. (egg-insert-bunsetsu): Make conversion text read-only. Separate bunsetsu-info and conversion-backend. (egg-insert-bunsetsu-list): Remove redundant variables. (egg-beginning-of-conversion-buffer): New function. (egg-end-of-conversion-buffer): New function. (egg-enlarge-bunsetsu): Handle read-only text. (egg-next-candidate): Handle read-only text. Bug on no candidate bunsetsu is fiexed. (egg-reconvert-bunsetsu-internal egg-reverse-convert-bunsetu egg-reconvert-bunsetsu): New functions for reverse conversion and re-conversion. (egg-decide-before-point egg-abort-conversion): Handle read-only text. Bug on pinyin and zhuyin mixed conversion is fixed. Allow long fence. (egg-select-candidate): Handle read-only text. Bug on no candidate bunsetsu is fiexed. * egg-com.el: Change coding-system from internal to iso-2022-7bit. * egg-mlh.el (mlh-space-bar-backward-henkan): Disable temporally mode selection. * egg.el (egg-mode): Set cureent lang to conversion backend. (egg-set-mode-line-title): Renamed to its-set-mode-line-title and moved to its.el. (egg-check-language): Removed. * egg/sj3.el (sj3-server-port): Change from defconst to defver for user customization. (sj3-open sj3-get-environment): Try opening alternate servers. (sj3-start-conversion): Make second argument LANGUAGE optional. (egg-activate-sj3): Parameters of egg-set-conversion-backend is changed. * egg/sj3rpc.el (sj3rpc-error-message): New constant (Not yet completed). (sj3rpc-get-error-message): Check range of errno to avoid args-out-ou-range error. * egg/wnn.el (wnn-jport wnn-cport wnn-tport wnn-kport): New variables for user customization. (wnn-server-info-list wnn-server-port): Type of fourth element is changed from integer to symbol. (wnn-start-reverse-conversion): New function. (wnn-open wnn-get-environment): Try opening alternate servers. (egg-activate-wnn): Parameters of egg-set-conversion-backend is changed. * its-keydef.el (its-current-language): Moved to its.el. (its-make-select-func): Remove language check (egg-check-language). Add temporally mode selection. (its-do-list-make-select-func): Binding of zhuyin-tw is changed to `C' because conflicting zenkaku-upcase. * its.el (its-current-select-func its-previous-select-func): New variables for temporally mode selection. (its-keydef requiring): Use eval-when to avoid error on using compiled file. (its-get-fence-face): New function for different face for every language. (its-put-cursor its-setup-fence-mode): Make fence read-only. (its-start): Remove force-mode-line-update calling. (its-restart): Add optional argument set-prop. (its-self-insert-char its-backward-SYL its-forward-SYL its-delete-SYL its-delete-backward-SYL its-exit-mode its-delete-backward-SYL-by-keystroke its-transpose-chars its-kick-convert-region its-end-of-input-buffer): Handle read-only fence. (its-state-machine): Accept special actions to handle temporally mode selection. (its-buffer-ins/del-SYL its-ins/del-SYL-batch): Handle read-only fence. Property its-lang is renamed to egg-lang. (its-get-next-state its-make-next-state): Add type check to avoid wrong-type-argument error. (its-keyseq-acceptable-p): Save informations of its-map to avoid confusing on temporally mode selection. (its-defrule-select-mode-temporally): New macro. (its-kill-line its-cancel-input): New function. (its-delete-backward-within-SYL): Bind its-current-language to avoid confusing when undo is done beyond language change. (its-yank its-yank-pop its-setup-yanked-portion): New functions. (its-exit-mode-internal): Reset temporally selected mode. Allow long fence. (its-kick-convert-region-or-self-insert): New function. (its-translate-region): Remove text properties completly. (its-set-mode-line-title): Moved from egg.el and renamed. (its-select-mode-temporally its-select-previous-mode): New functions for temporally mode selection. * leim-list-egg.el: Secondary argument for egg-activate-sj3/wnn is no longer needed. * its/hira.el: Remove the rule for "~" which destroies the rules with its-hankaku-escape. * its/pinyin.el: Implement its-pinyin-cn-enable-quanjioao-alphabet and its-pinyin-tw-enable-quanjioao-alphabet. * its/hangul.el: Implement its-hangul-enable-quanjioao-alphabet. * its/ascii.el: New file. * its/erpin.el: New file. * its/hankata.el: New file. * its/jeonkak.el: New file. * its/kata.el: New file. * its/quanjiao.el: New file. * its/zenkaku.el: New file. * its/zhuyin.el: New file. 1998-03-14 NIIBE Yutaka * egg/sj3rpc.el (sj3rpc-close): New function. * egg/sj3.el (sj3bunsetsu-[sg]et-kugiri-changed): Rename from sj3bunsetsu-get-stdy-down. (sj3-end-conversion): Implement CLSTDY. (sj3-fini): Implemented. 1998-03-10 NIIBE Yutaka * egg/sj3.el (sj3-end-conversion): Implement bunsetsu study. CLSTDY not yet. * egg/sj3rpc.el (sj3rpc-get-bunsetsu-candidates-sub): Bug fix. Always add hiragana and katakana candidates. (sj3-const: CLSTDY, CLSTDY_EUC): Renamed from END and END_EUC according to "sj3cmd.h" of SJ3 distribution. (sj3rpc-bunsetsu-stdy, sj3rpc-kugiri-stdy): New functions. * egg-com.el (comm-format-u8-vector): New substitution. (comm-format): New format 'v'. 1998-03-09 NIIBE Yutaka * docomp.el (its-keydef): Require its-keydef when compile. Not so good. Just a work around. (its-mode-map): Undo the changes of 03-04. 1998-03-09 KATAYAMA Yoshio * its.el (its-translate-region): Make it command. (its-translate-region-internal): Make it function. 1998-03-04 NIIBE Yutaka * its.el (its-define-select-keys of its-mode-map): Comment it out. * its-keydef.el (its-make-select-func): Add eval-when to compile this. * egg-cnv.el (egg-decide-bunsetsu): Deleted. * its.el (its-restart): Call its-setup-fence-mode with no argument. * its.el (its-keyseq-acceptable-p): Bug fix. 1998-03-03 KATAYAMA Yoshio *its.el (its-get-keyseq-syl): Compensate when DSYL has back. (its-DSYL-with-back-p): New function. Return t when DSYL has back. (its-concrete-DSYL-p): New function. Return t when DSYL is cons form which means input is not continued after DSYL was created. (its-make-concrete-DSYL): New function. (its-self-insert-char): Make DSYL to ``concrete-DSYL'' if cursor is t which means input is not continued. (its-input): Test input key is whether acceptable or not when its-barf-on-invalid-keyseq is non-nil. (its-input-to-vsyl): Set cursor status, not just returning it. (its-state-machine its-state-machine-keyseq): Make sure to issue ``DSYL-with-back'' when syllable is decided by the rule with back. ``test mode'' is added. (its-keyseq-acceptable-p): New function. (its-forward-SYL): The args order of put-text-property was wrong. (its-delete-backward-SYL-by-keystroke): New function. (its-delete-backward-within-SYL): ``delete-by-keystroke'' mode did not work when syllable is decided by the rule with back. Deletion limit is extended to outside of SYL (meaning of ``within-SYL'' is changed to ``deletion starts within SYL). (its-transpose-chars): Fixed up. (its-in-fence-p): Confuse at openning fence. 1998-02-25 KATAYAMA Yoshio * its.el (its-put-cursor): Enable its-map change in fence mode. * its-keydef.el (its-make-select-func): Same as above. 1998-02-25 KATAYAMA Yoshio * its.el (its-set-cursor-status): New function. (its-setup-fence-mode): New function. (its-insert-fence-open its-insert-fence-close): Deleted. (its-start, its-restart, its-self-insert-char): Avoid fence destruction on its-barf. (its-input-to-vsyl, its-state-machine, its-state-machine-keyseq, its-buffer-ins/del-SYL, its-ins/del-SYL-batch): Update cursor status on updating syllables. (its-input-error): New function to realize doc-string of its-barf-on-invalid-keyseq. * egg.el (egg-mode): Don't use egg-mode-line-title which cause wrong-type-argument at isearch. Bind its-select-XXX to key only when modefull is select. * egg-mlh.el (mlh-hangul, mlh-zhongwen, mlh-zhongwen-tw): Same as above. * its-keydef.el (its-make-select-func): Same as above. * leim-list-egg.el: Same as above. 1998-02-24 KATAYAMA Yoshio * its.el (its-state-machine-keyseq): Remove binding its-barf-on-invalid-keyseq to nil. (its-ins/del-SYL-batch): Avoide altering its-XXX-map. (its-translate-region-internal): its-translation-result's data type is changed to string. * egg-cnv.el (egg-convert-region): Gather contiguous same language part. 1998-02-21 KATAYAMA Yoshio * its.el (its-ins/del-SYL-batch): Set its-lang property. (its-translate-region): Remove its-lang property from translated text. (its-translate-region-internal): New function. Retain its-lang property on translated text. * egg-mlh.el (mlh-space-bar-backward-henkan): Force base language to Japanese. (mlh-hangul mlh-zhongwen-tw mlh-zhongwen): New functions for conversion functions. 1998-02-20 KATAYAMA Yoshio * its.el (its-restart): New function. (its-insert-fence-open, its-insert-fence-close): New function. (its-start): Rewritten. Use its-insert-fence-open and its-insert-fence-close. (its-exit-mode-internal): Leave its-syl property. (its-exit-mode-internal): Delete the property in this case. (its-keydef): Require it. * its-keydef.el: Provide the feature. * egg-cnv.el (egg-convert-region): Add egg-source property to save the source string. (egg-conversion-map, \C-c): New keybind. (egg-get-previous-bunsetsu): Bug fix. (egg-decide-before-point): New implementation. (egg-exit-conversion): Use gg-decide-before-point. (egg-abort-conversion): New command. 1998-02-20 NIIBE Yutaka * Makefile (SRCS), Egg.prj: Remove euc-china.el. * egg-com.el: Include egg-china.el. * egg-china.el: Removed. 1998-02-18 NIIBE Yutaka * Egg.prj: Use PRCS. * Makefile (SRCS): Rename euc-cn.el to euc-china.el * egg-mlh.el (mlh-space-bar-backward-henkan): Put "Japanese" language property for text. 1998-02-18 KATAYAMA Yoshio * euc-china.el: Rename from euc-cn.el. Update. * egg.el (egg-mode): Bug fix. Call get-exit-conversion. * leim-list-egg.el ("japanese-egg-wnn", "japanese-egg-sj3"): Use new definition (with language argument). * egg/wnn.el (egg-activate-wnn): * egg/sj3.el (egg-activate-sj3): 1998-02-17 NIIBE Yutaka * Makefile (SRCS): Add its/pinyin.el, its/hangul.el and its-keydef.el. * egg-com.el (ccl-encode-fixed-euc-kr): Fixed the name. 1998-02-17 KATAYAMA Yoshio * its-keydef.el: New file. * its/hangul.el, its/pinyin.el: New version. * egg/wnnrpc.el (load-library "egg/wnn"): Comment it out. (wnnrpc-get-error-message): Support multiple languages. (wnnrpc-call-with-environment): Chinese support. * egg/wnn.el (wnn-support-languages): New const. (): Add , , and . (wnnenv-get-server-type, wnnenv-get-dictionary-set, wnnenv-get-reverse-flag): New substs. (wnnenv-get-daibunsetsu-info, wnnenv-set-daibunsetsu-info): Changed. (wnn-server): Removed. (wnn-jserver, wnn-cserver, wnn-tserver, wnn-kserver): New custom. (wnn-server-info-list): New const. (wnn-get-server-info): New function. (wnn-server-locale, wnn-server-type, wnn-server-port, wnn-server-stream-name, wnn-server-buffer-name, wnn-server-coding-system, wnn-server-hostname): New substs. (wnn-start-conversion): Add new arguments. (wnn-uniq-candidates): Initialize 'n'. (wnn-change-bunsetsu-length): Simplefied. (wnn-change-bunsetsu-length): Call renbunsetsu-conversion, instead. (wnn-fini, wnn-comm-sentinel): back to 971009 version. (wnn-jserver-port): Removed. (wnn-open): Argument change. Support languages. (wnn-dictionary-specification): Removed. (wnn-dictionary-specification-list): New variable. (wnn-get-dic-spec, wnn-dic-spec-dic-set, wnn-dic-spec-reverse, wnn-dic-spec-name, wnn-dic-spec-param, wnn-dic-spec-fuzokugo, wnn-dic-spec-dic-list): New substs. (wnn-get-environment): Rewrite. (wnn-create-environment): Rewrite. (egg-activate-wnn): Support languages. * egg/sj3rpc.el (load-library "egg/sj3"): Don't load it. * egg/sj3.el (sj3-support-languages): New const. (sj3-start-conversion, sj3-fini): Add lang. (sj3-change-bunsetsu-length): Simplified. (egg-activate-sj3): Support language. * its/hira.el (its/hira): Packagefy. (?) (its-hira-map): Add language spec. Move here the escape keys ("Z", "~"). * leim-list-egg.el ("chinese-gb-egg-wnn-py", "chinese-gb-egg-wnn-zy", "chinese-cns-egg-wnn-py", "chinese-cns-egg-wnn-zy", "korean-egg-wnn"): New input methods. * its.el (its-current-language): New Local Variables. : Change the structure. Add . (its-get-language): New substitution. (its-set-indicator): Removed. (its-get-indicator, its-get-start-state): New implementation. (its-reset-start-state): Removed. (its-buffer-ins/del-SYL): Add new properties, its-map and its-lang. (its-exit-mode-internal): Change for its-map and its-lang. (its-in-fence-p): New function. ("its-keydef.el"): Load it. (its-select-map-menu): Removed. (its-select-map-from-menu): Removed. (its-select-hiragana, its-select-katakana, its-select-downcase, its-select-upcase, its-select-zenkaku-downcase, its-select-zenkaku-upcase, its-select-map, its-zenkaku-escape, its-hankaku-escape): Removed. (define-its-state-machine): Rewrite. (define-its-compiled-map): New macro. (its-define-state-machine): Removed. (its-forward-SYL): Cleanup. (its-beginning-of-input-buffer): Fix. (its-end-of-input-buffer): Likewise. * egg-com.el (egg-fixed-euc, egg-mb-euc): New Local Variables. (ccl-decode-fixed-euc-kr, ccl-encode-fixed-euc-kr): New CCLs. (fixed-euc-kr): New coding system. (comm-format-mb-string, comm-format-u16-string): Support EUC-KR. (comm-unpack-u16-string, comm-unpack-mb-string): Likewise. * egg-cnv.el (egg-get-bunsetsu-info): New function. (egg-conversion-backend-alist, egg-finalize-backend-alist): New Variables. Make egg-conversion-backend buffer local. (egg-set-current-backend): New function. (egg-initialize-backend): Call egg-set-current-backend. (egg-start-conversion): Add new argument LANGUAGE. (egg-finalize-backend): Finalize for all backend(s). (egg-set-conversion-backend-internal): New Macro. (egg-convert-region): Support multiple languages in the region. (egg-separate-languages, egg-char-to-language, egg-next-part-lang, egg-next-chinese-lang): New functions. (egg-insert-bunsetsu-list): Change the meaning of last argument. (egg-shrink-bunsetsu): Simplified. Just call egg-enlarge-bunsetsu. (egg-enlarge-bunsetsu): Support shrink. (egg-decide-bunsetsu, egg-next-candidate, egg-select-candidate): Use egg-get-bunsetsu-info. (egg-insert-bunsetsu): The property now includes egg-conversion-backend. * egg.el: Don't load its/hira and don't set its-current-map. * egg.el (egg-default-language, egg-support-languages): New Variables. (egg-last-method-name, egg-mode-line-title): New Local Variables. (egg-set-mode-line-title, egg-check-language): New functions. (egg-set-support-languages): New function. (egg-mode): Final processing: call its-exit-mode, call egg-exit-conversion. Changing the arguments, remember last input method. Bug fix. Don't set its-hira-period and its-hira-comma. 1998-02-17 KAWABATA, Taichi * menudiag.el (menudiag-mode-map): New binds for new commands. (menudiag-beginning-of-items, menudiag-end-of-items): New commands. (menudiag-make-menu-formatted-string): Bug fix. Use menudiag-item-num-to-char. (menudiag-goto-item): Rewrite. Better user interface. (menudiag-char-to-item-num, menudiag-item-num-to-char): New functions. 1998-02-07 MORIOKA Tomohiko * leim-list-egg.el: Delete autoload setting for `egg-mode'. Delete input method registration for "japanese-egg". * egg.el: Comment out setting for Wnn. * leim-list-egg.el: Add autoload setting for `egg-activate-{wnn|sj3}'. * egg/sj3.el (egg-activate-sj3): Add DOC-string. * egg/sj3.el (egg-activate-sj3): New function. Require egg. Load egg/sj3rpc.el. * egg/wnn.el (egg-activate-wnn): New function. Require egg. Load egg/wnnrpc.el. 1998-02-07 MORIOKA Tomohiko * leim-list-egg.el (japanese-egg-wnn): New input method. (japanese-egg-sj3): New input method. 1997-11-20 MORIOKA Tomohiko * leim-list-egg.el: Rename `egg-ja' -> `japanese-egg'. 1997-11-20 MORIOKA Tomohiko * egg/wnn.el (wnn): New group. (wnn-server): Use `defcustom'. (wnn-usr-dic-dir): Use `defcustom'. * egg.el (egg): New group. 1997-11-20 MORIOKA Tomohiko * menudiag.el (menudiag-mode-map): Swap binding for left and right. * egg.el (egg-toroku-region): `wnn-get-environment' requires dictionary-specification. * leim-list-egg.el: add autoload setting for egg-mode. 1997-11-03 KATAYAMA Yoshio * euc-cn.el: New file. Original name was yincoding.el. Adopted by NIIBE Yutaka . 1997-11-03 NIIBE Yutaka * its.el (its-start): Add INVISIBLE property if ITS-FENCE-FACE. * egg-cnv.el (egg-decide-before-point): Ditto. Based on patch by Kenichi HANDA . Once, I thought that we need many environments which correspond to outstanding CONVERSION buffre. However, I've learned that WNN4 protocol is completely independent. It's no use to maintain each environment. Share the one environment. * egg/wnn.el (wnn-environments): Removed. (wnn-environment): New variable. (wnn-comm-sentinel): Follow the change. Let users know the close. (wnn-fini): Likewise. : Remove the member . (wnnenv-create): Follow the structure change. (wnn-end-conversion): Likewise. (wnnenv-get-in-use-flag, wnnenv-set-in-use-flag): Removed. (wnn-find-env-not-in-use): Removed. (wnn-get-environment): Use wnn-environment instead of wnn-environments. Take one argument. * egg-cnv.el (egg-decide-before-point): Signal error on first SYL. Reported by KATAYAMA Yoshio . Changes of 1997-09-07 was not enough. Set-marker M to NIL after PUT-TEXT-PROPERTY. Because the name of identifier begins egg-*, change the file names. * tamago: Rename from tamago. * egg.el, egg-mlh.el, egg-com.el, egg-cnv.el: Rename from tamago-*.el * Makefile: Follow the changes. 1997-10-05 NIIBE Yutaka * tamago/wnn.el (wnn-uniq-candidates): Add new argument BUNSETSU. Call WNN-BUNSETSU-SET-ZENKOUHO-POS, WNN-BUNSETSU-SET-ZENKOUHO in this function. Handle the case where BUNSETSU is not the first element of BUNSETSU-LIST. (wnn-list-candidates): Use new API of WNN-UNIQ-CANDIDATES. * tamago-cnv.el (egg-next-candidate): Handle the case where EGG-LIST-CANDIDATES returns non zero value. 1997-10-04 NIIBE Yutaka * Makefile (install): Install to SITEDIR. 1997-09-26 NIIBE Yutaka * its/hira.el (its-hira-enable-zenkaku-alphabet): New variable. (its-hira-map): Use it. 1997-09-19 NIIBE Yutaka Arrange for LEIM. Use tamago/ subdirectory. * tamago/: Rename from tamago-lib. 1997-09-18 NIIBE Yutaka * tamago-cnv.el (egg-select-candidate): menu-select --> menudiag-select. * tamago.el (egg-toroku-region, egg-hinshi-select): Likewise. * tamago-cnv.el (egg-exit-conversion): Run hook of input-method-after-insert-chunk-hook. * its.el (its-exit-mode-internal): Ditto. * tamago-mlh.el (mlh-comma-period-style): Deleted. * its/, tamago-lib/: New directory. * its/: Move its-*.el files here. * tamago-lib/: Move sj3.el, sj3rpc.el, wnn.el and wnnrpc.el here. * tamago-com.el: Rename from comm.el. * tamago-mlh.el: Rename from mlh.el. * tamago-cnv.el: Rename from convert.el. * menudiag.el: Rename from menu.el. (Throughout): Rename menu-* to menudiag-*. 1997-09-07 NIIBE Yutaka * egg.el (egg-insert-after-hook, egg-exit-hook): Removed. (egg-sai-henkan-start, egg-sai-henkan-end, egg-old-bunsetu-suu): Removed. * wnn.el (WNN-const): New macro. (wnn-start-conversion, wnn-open-dictionary, wnn-open-frequency, wnn-set-dictionary-sub, wnn-update-frequency): Use it. * wnnrpc.el (wnn-const): New macro. Throughout: Use wnn-const. * convert.el (egg-decide-before-point): Bug fix. Handle the case where all bunsetsu are decided. Reported by KATAYAMA Yoshio . * convert.el (egg-exit-conversion): Call egg-end-conversion at end. (egg-decide-before-point): Ditto. * wnn.el (wnn-environments): Change the structure of enviromnents. (wnn-fini): Handle errors. (wnn-open): Set sentinel. Delete buffer on failure. (wnn-comm-sentinel): New function. (wnn-find-env-not-in-use): Return nil when not found. (wnn-create-environment): Take username as argument. (wnn-get-environment): Follow the change. (wnnenv-create): Remove useless serial no. (wnnenv-get-in-use-flag, wnnenv-set-in-use-flag): Follow the change. (wnnenv-get-daibunsetsu-info, wnnenv-set-daibunsetsu-info): Likewise. (wnn-create-environment, wnn-get-environment): Likewise. 1997-09-04 NIIBE Yutaka * its.el (its-state-machine-keyseq): Bug fix. Handle VSYL. * sj3.el, sj3rpc.el: New files. * comm.el (comm-call-with-proc, comm-call-with-proc-1): New macros. * wnnrpc.el (wnnrpc-call-with-proc, wnnrpc-call-with-proc-1): Deleted. Throughout: Use comm-call-with-proc and comm-call-with-proc-1. 1997-09-03 NIIBE Yutaka * wnnrpc.el (wnnrpc-call-with-proc-1): Bug fix. let --> progn. * convert.el (egg-conversion-backend): Initail value is NIL. * wnn.el (wnn-conversion-backend): New constant. * comm.el (comm-format,comm-unpack): Support multibyte string. (comm-format-mb-string): New substitution. (comm-unpack-mb-string): New substitution. * wnn.el (wnn-fini): Handle the case where wnn-environments is nil. Reported by Hisashi Miyashita . 1997-09-03 Hiroshi Ogata * mlh.el (mlh-zenkaku): Use new API of Emacs-20, japanese-zenkaku-region. 1997-09-02 NIIBE Yutaka * egg.el (egg-toroku-region): New function. * wnn.el (wnn-list-dictionaries): New function. (wnnenv-get-proc): New function. * wnnrpc.el (wnndic-get-id, wnndic-get-comment, wnndic-get-dictname): New substitution. (wnnrpc-get-writable-dictionary-id-list): Rename from wnnrpc-get-writable-dictionary-list. 1997-09-01 NIIBE Yutaka * convert.el (egg-decide-bunsetsu): New function. (egg-decide-before-point): New command. (egg-exit-conversion): Use egg-decide-bunsetsu. * its.el (its-start): Divide the fence buffer into two parts and make them intangible, so that point goes appropriate position. (its-put-cursor): The cursor belongs to part-2. (its-buffer-ins/del-SYL): The new SYL belongs to part-1. (its-exit-mode-internal): Remove the property on exit. (its-beginning-of-input-buffer): Make SYLs have property of "part 2". (its-backward-SYL): Likewise. (its-forward-SYL): Make SYLs have property of "part 1". (its-end-of-input-buffer): Likewise. (its-input-end): Delete useless argument. (its-beginning-of-input-buffer, its-exit-mode, its-exit-mode-off-input-method, its-kick-convert-region, its-end-of-input-buffer, its-backward-SYL, its-forward-SYL, its-delete-SYL): Follow the change. 1997-08-31 NIIBE Yutaka For egg-mode, don't use minor mode, override local map instead. For its-mode and egg-conversion-mode, don't use minor mode, instead use local-map of text property. Although overriding local map is not good, using local-map of property is natural thing. Besides, point-left/point-entered don't work as I expected (yet). * egg.el (egg-mode: variable): Removed. * egg.el (egg-modefull-map, egg-modeless-map): Make them functions. Generate overriding local map. * egg.el (egg-mode): use overriding local map. * its.el, convert.el: Undo changes of 1997-08-28 for minor mode and local map of text properties. * its.el (its-exit-mode-off-input-method): New function. 1997-08-29 NIIBE Yutaka Let Undo work correctly. * its.el (its-self-insert-char): Delete/Insert cursor. * its.el (its-put-cursor): Remove useless first argument. (its-start, its-beginning-of-input-buffer, its-end-of-input-buffer, its-backward-SYL, its-forward-SYL, its-delete-SYL, its-delete-SYL, its-delete-backward-SYL-internal, its-delete-backward-within-SYL): Follow the change. 1997-08-28 KATAYAMA Yoshio * its-erpin.el: New file. * its-pinyin.el: New file. * its-zhuyin.el: New file. 1997-08-28 NIIBE Yutaka * its.el (its-exit-mode-no-egg): Removed. (its-exit-mode-internal): Remove first argument. (its-kick-convert-region, its-delete-SYL, its-delete-backward-SYL-internal, its-delete-backward-within-SYL): Follow the change. Don't use local map of text properties, instead use minor mode. * convert.el (egg-conversion-mode): New minor mode. (egg-conversion-left, egg-conversion-enter): New functions. (egg-insert-bunsetsu): remove local-map, add point-entered and point-left properties. (egg-exit-conversion): Likewise. (egg-exit-conversion): Exit minor mode. * its.el (its-put-cursor): remove local-map, add point-entered and point-left properties. (its-enter, its-left): New functions. (its-mode): New variable. New minor mode. 1997-08-27 NIIBE Yutaka * convert.el (egg-exit-conversion-no-egg): Removed. (egg-exit-conversion): No argument, no egg-mode. * convert.el (egg-convert-region): No egg-flag. * its.el (its-exit-mode-internal): Follow it. * mlh.el (mlh-space-bar-backward-henkan): Ditto. 1997-08-26 NIIBE Yutaka * wnn.el (wnn-change-bunsetsu-length): Don't use magic #3. * convert.el (egg-insert-bunsetsu-list): Add optional argument CONTIN. 1997-08-25 NIIBE Yutaka * convert.el (egg-insert-bunsetsu): Include seperator. Add intangible property to bunsetsu. (egg-insert-bunsetsu-list): Follow the change. (egg-backward-bunsetsu, egg-forward-bunsetsu, egg-select-candidate, egg-next-candidate, egg-shrink-bunsetsu, egg-enlarge-bunsetsu, egg-exit-conversion): Ditto. * mlh.el (mlh-space-bar-backward-henkan): Call egg-convert-region with last argument t. Turn of egg-mode. 1997-08-24 NIIBE Yutaka * its.el (its-exit-mode-internal): Inactivate input method. * wnn.el (wnn-end-conversion): Change the interface. (wnn-update-frequency): Follow the change. * convert.el (egg-exit-conversion): Follow the change. * wnn.el (wnn-start-conversion): Change the return value interface. * convert.el (egg-convert-region): Follow the change. * wnn.el (wnnenv-get-bunsetsu-pos, wnnenv-set-bunsetsu-pos): Removed. (wnn-get-bunsetsu-source-afterwards): Removed. (wnn-get-number-of-bunsetsu, wnn-get-bunsetsu-info): Removed. (wnnenv-get-bunsetsu-list, wnnenv-set-bunsetsu-list): Removed. (wnn-start-conversion): Don't call wnnenv-set-bunsetsu-list. (wnn-end-conversion): Ditto. 1997-08-23 NIIBE Yutaka * convert.el (egg-change-bunsetsu-length): Change the interface. (egg-shrink-bunsetsu,egg-enlarge-bunsetsu): Follow it. (egg-source-maxlen-from-here): Removed. (egg-get-previous-bunsetsu): New function. (egg-select-candidate, egg-shrink-bunsetsu, egg-enlarge-bunsetsu, egg-next-candidate): Use egg-get-previous-bunsetsu. 1997-08-20 NIIBE Yutaka * egg.el (minor-mode-alist): Don't show " EGG" in mode line. (egg-mode): Use input method indicator instead. 1997-07-20 NIIBE Yutaka * convert.el (egg-next-candidate): Rename from egg-next-conversion. (egg-previous-candidate): Rename from egg-previous-conversion. (egg-select-candidate): Follow the change of new interface. (egg-source-maxlen-from-here): Likewise. 1997-07-19 NIIBE Yutaka * wnn.el (wnn-start-conversion): Change the interface. Return ENV and the list of bunsetsu. Fix the documentation string too. * convert.el (egg-convert-region): Follow the change. (egg-insert-converted-result): Change the argument. (egg-insert-bunsetsu-list): Rename from egg-insert-converted-result. (egg-insert-bunsetsu): New function. (egg-get-number-of-bunsetsu,egg-get-bunsetsu-info): Removed. (egg-backward-bunsetsu): Don't use bunsetsu-pos. * wnn.el (wnn-get-bunsetsu-converted): Change the interface. Take BUNSETSU as the argument instead of ENV and POS. * convert.el (egg-get-bunsetsu-converted): Follow the change. * wnn.el (wnn-bunsetsu-create): Take ENV as the first argument. (wnn-list-candidates): Dont take ENV. (wnn-bunsetsu-get-env): New substitution. * wnnrpc.el (wnnrpc-receive-sho-bunsetsu-list-sub): Take the argument for ENV, and use it for the argument of wnn-bunsetsu-create. (wnnrpc-receive-sho-bunsetsu-list): Take ENV as the first argument. (wnnrpc-renbunsetsu-conversion): Follow the change. 1997-07-17 NIIBE Yutaka * convert.el (egg-decide-candidate): Change the interface. Take the argument bunsetsu-info instead of conversion-engine. * wnn.el (wnn-get-candidate): Deleted. * convert.el (egg-get-all-candidates): Change the interface. Take an argument bunsetsu-info instead of conversion-engine. (egg-select-candidate): Follow the change. * convert.el (egg-set-bunsetsu-pos,egg-get-bunsetsu-pos): Deleted. (egg-list-candidates,egg-get-current-candidate-number): New stub. * wnn.el (wnn-bunsetsu-create): Add new member zenkouho-pos. (wnn-bunsetsu-get-zenkouho-pos,wnn-bunsetsu-set-zenkouho-pos): New functions. (wnn-list-candidates,wnn-get-current-candidate-number): New functions. (wnn-set-bunsetsu-pos,wnn-get-bunsetsu-pos): Deleted. * convert.el (egg-get-number-of-candidates): Change the interface. Take an argument bunsetsu-info instead of conversion-engine. (egg-next-conversion,egg-select-candidate): Follow the change. * wnn.el (wnn-get-number-of-candidates): Follow the change. * wnn.el (wnn-get-bunsetsu-source-afterwards): New function. (wnn-change-bunsetsu-length): Use it. * convert.el (egg-get-bunsetsu-source): Change the interface. Take an argument bunsetsu-info instead of conversion-engine. (egg-enlarge-bunsetsu,egg-shrink-bunsetsu,egg-source-maxlen-from-here): Follow the change. * wnn.el (wnn-get-bunsetsu-source): Follow the change. Put bunsetsu information on text property. * wnn.el (wnn-get-bunsetsu-info): New function. * convert.el (egg-insert-converted-result): Put it on text property. (egg-conversion-backend): Add new interface wnn-get-bunsetsu-info. (egg-get-bunsetsu-info): New stub. 1997-07-17 KATAYAMA Yoshio * its.el (its-state-machine-keyseq, its-state-machine): Handle end-of-input correctly when going backward. 1997-07-16 NIIBE Yutaka * wnn.el (wnn-create-directory): Bug fix. Really make directory. 1997-07-15 NIIBE Yutaka * its-hangul.el (its-define-hangul): Use its-defrule-otherwise. 1997-07-15 KATAYAMA Yoshio * its-hangul.el: Updated. 1997-06-19 NIIBE Yutaka * its-hira.el: its-hira-hankaku-escape --> its-hankaku-escape. its-hira-zenkaku-escape --> its-zenkaku-escape. 1997-06-14 NIIBE Yutaka * its.el: Change the data structure of so that it can encourage sharing same structure and it can use same structure of SYL. (its-ins/del-SYL-batch): Follow the change of data structure. (its-define-otherwise): Change the argument. (its-defrule-otherwise): New function. (its-eob-keyexpr, its-eob-back, its-make-class+back, its-make-otherwise): New substitutions. 1997-06-13 NIIBE Yutaka * its-kana.el: New file. Taken from its/kanainput.el of Mule-2.3. * its-hira.el: Use `define-its-state-machine'. * its.el (its-zenkaku-escape, its-hankaku-escape): Make them defconst. (define-its-state-machine, define-its-state-machine-append): New macro. 1997-06-13 NIIBE Yutaka * its-hira.el ("n'"): Added. 1997-06-12 NIIBE Yutaka its-zenkaku-escape and its-hankaku-escape are also used in hangul. * its.el (its-zenkaku-escape, its-hankaku-escape): Moved to here and rename them. * its-hira.el (its-hira-hankaku-escape, its-hira-zenkaku-escape): Removed. * its.el (its-read-current-its-string): Removed. There's the function `read-multilingual-string' already. 1997-06-12 KATAYAMA Yoshio * its-hangul.el: New file. 1997-06-10 NIIBE Yutaka Miscellaneous cosmetic changes. * comm.el: New file. Move communication related funcitons from wnnrpc.el. (comm-format-u32c, and others): Rename from wnnrpc-*. * wnnrpc.el (Throughout): Follow the rename. * wnn.el (wnnenv-get-in-use-flag): Rename from wnn-e-get-in-use. (wnnenv-set-in-use-flag): Rename from wnn-e-set-in-use. (Others): Rename from wnn-e-*. (wnn-bunsetsu-*): Rename from wnnrpc-b-*, and moved from wnnrpc.el. * convert.el (egg-exit-conversion): Call egg-do-auto-fill. * its.el (its-translate-region): Bug fix. End of input. (its-state-machine): Bug fix. Generate error if its-barf-on-invalid-keyseq. (its-exit-mode-internal): Call egg-do-auto-fill. * wnnrpc.el (ccl-decode-fixed-euc-jp): Bug fix for ASCII. * mlh.el (mlh-space-bar-backward-henkan): Call egg-do-auto-fill. * egg.el: Comment out definition of C-\ in global-map. 1997-06-09 NIIBE Yutaka * its.el (its-kick-convert-region): Rename from its-convert-region. (its-mode-map): Follow the change. (its-make-next-state): Use list instead of cons. (its-get-kst/t): Make it substitution. (its-set-kst, its-get-keyseq, its-set-keyseq, its-kst-p, its-get-output, its-set-output, its-get-keyseq-syl): Likewise. (its-new-state, its-new-map, its-get-indicator, its-set-indicator, its-get-start-state, its-reset-start-state): Likewise. (its-get-next-state): Use assq instead of assoc. (its-goto-state): Tune up. 1997-06-08 NIIBE Yutaka * mlh.el: Merge mlh-nihongo.el. * mlh-nihongo.el: Removed. * its-hira.el: Moved from its/hira.el. Move comments to HISTORY. (its-hira-enable-double-n, its-hira-period, its-hira-comma, its-hira-open-bracket, its-hira-close-bracket, its-hira-horizontal): New variables. Use the variables to define the state-machine. Implement non-interactive translation in ITS. * its.el (its-translate-region): New function. (its-latest-SYL): New Variable. (its-state-machine-keyseq): Use it. (its-update-latest-SYL): New function. (its-buffer-ins/del-SYL): Use it. (its-translation-result): New variable. (its-ins/del-SYL-batch): New function. (its-enable-double-n-syntax, its-use-kuten-for-period, its-use-touten-for-comma, its-zenkaku-escape, its-hankaku-escape): Removed. Use ITS, delete mlh's own implementation of automata. * mlh.el (mlh-start-state, mlh-set-of-chars, mlh-start-state-sym, mlh-set-of-chars-sym, mlh-define-automata, mlh-end-of-definition, mlh-defrule, mlh-next-state, mlh-roma-kana-backward): Removed. (mlh-cause-error-when-unknown-romaji-sequence): Removed. (mlh-atoi): Removed. (mlh-white-space, mlh-zenkaku-white): Use string-to-int. * mlh-nihongo.el (mlh-hira-start-state, mlh-hira-chars, and all rules of definition which defines the automaton): Removed. (mlh-kanji-with-henkan-region-function): Use its-translate-region. (mlh-hiragana, mlh-katakana): Likewise. Fix of CCL. * wnnrpc.el (ccl-decode-fixed-euc-jp): Bug fix for jisx0212. Add missing parens. Speed up of unpacking. * wnnrpc.el (wnnrpc-following-char-or-wait): Tune up. (wnnrpc-following+forward-char): New function. (wnnrpc-unpack-u32c, wnnrpc-unpack-u32, wnnrpc-unpack-u16, wnnrpc-unpack-u8): Use it. (wnnrpc-accept-process-output): New function. (wnnrpc-unpack-u16-string, wnnrpc-unpack-u8-string, wnnrpc-unpack-bytes): Use it. Use search-forward. (wnnrpc-unpack-u16-string): Use decode-coding-region. 1997-06-07 NIIBE Yutaka * wnn.el (wnn-get-all-candidates): New function. (wnn-set-bunsetsu-pos): Return 0 (instead of -1). * convert.el (egg-get-candidate): Removed. (egg-get-all-candidates): New entry function. (egg-conversion-backend): Entry for egg-get-all-candidates. (egg-select-candidate): New function. (egg-conversion-map): Bind "\M-s" and egg-select-candidate. 1997-06-05 NIIBE Yutaka * bushu.el: Renamed from busyu.el. (bushu-break-string, etc): Renamed from busyu*. * menu.el: Completely rewritten. 1997-06-03 NIIBE Yutaka * its.el (its-reset-start-state): Bug fix. Delete a CDR. Implement "class of key" transition. Change the structure of , the last member is instead of . * its.el (its-kst-p): Rename from its-ksa-p. (its-get-next-state): Follow the change of the data structure. (its-state-machine): Likewise. (its-make-next-state): Likewise. (its-set-kst): New function. (its-get-otherwise): New function. (its-otherwise-match): New function. (its-define-otherwise-terminate-here): Removed. (its-define-otherwise): New function. (its-defrule*): Use its-define-otherwise. * its/hira.el (n): Use its-define-otherwise. 1997-06-02 NIIBE Yutaka * wnnrpc.el (wnnrpc-receive-sho-bunsetsu-list-sub, wnnrpc-receive-sho-bunsetsu-list-sub-2): Splited from wnnrpc-receive-sho-bunsetsu-list. (wnnrpc-receive-dai-bunsetsu-list): New function. (wnnrpc-daibunsetsu-conversion, wnnrpc-get-daibunsetsu-candidate): New function. 1997-06-01 NIIBE Yutaka * wnnrpc.el (ccl-decode-fixed-euc-jp): Clean it up. (wnnrpc-file-attribute): Rename from wnnrpc-stat-file. (wnnrpc-get-dictionary-list-with-environment): Rename from wnnrpc-get-dictionary-list-with-environment. Implement RPC more. * wnnrpc.el (wnnrpc-who, wnnrpc-get-env-list, wnnrpc-kill, wnnrpc-delete-dictionary, wnnrpc-set-flag-on-dictionary, wnnrpc-get-dictionary-list, wnnrpc-delete-word, wnnrpc-receive-word, wnnrpc-search-word, wnnrpc-search-word-in-dictionary, wnnrpc-get-word-info, wnnrpc-set-comment-on-word, wnnrpc-get-dictionary-info, wnnrpc-set-file-comment, wnnrpc-hinshi-name, wnnrpc-set-file-password, wnnrpc-set-hinshi-table): New functions. 1997-05-31 NIIBE Yutaka * wnnrpc.el (wnnrpc-format-u32c, wnnrpc-unpack-u32c): New substitutions. Support 32-bit number represented in cons cell of a pair of 16-bit integer. (wnnrpc-format, wnnrpc-unpack): Handle u32c (U). (wnnrpc-format-bytes, wnnrpc-unpack-bytes): New substitutions. Support byte stream end with 255(-1). (wnnrpc-format, wnnrpc-unpack): Handle bytes (B). (wnnrpc-local-file-loaded): New function. (wnnrpc-call-with-proc-1): New macro. Assume the buffer is the one of process. 1997-05-29 NIIBE Yutaka * wnnrpc.el (wnnrpc-get-conversion-parameters, wnnrpc-file-loaded, wnnrpc-write-file, wnnrpc-get-fuzokugo-file, wnnrpc-get-file-list, wnnrpc-get-file-list-with-env, wnnrpc-stat-file, wnnrpc-get-file-info): New functions. wnnrpc-receive-file-list): New subst. 1997-05-29 Kenichi Handa * wnnrpc.el (ccl-decode-fixed-euc-jp): Tune it up. 1997-05-29 Hisashi Miyashita * wnnrpc.el (fixed-euc-jp, ccl-decode-fixed-euc-jp, ccl-encode-fixed-euc): New private coding system. Encode/decode CCL for it. 1997-05-27 NIIBE Yutaka * wnnrpc.el (wnnrpc-tanbunsetsu-conversion): Change the argument. (wnnrpc-get-bunsetsu-candidates): Likewise. (wnnrpc-renbunsetsu-conversion): Likewise. * wnn.el (wnn-change-bunsetsu-length): Follow the change. (wnn-set-bunsetsu-pos): Likewise. (wnn-change-bunsetsu-length, wnn-start-conversion): Likewise. 1997-05-25 NIIBE Yutaka * wnnrpc.el (wnnrpc-add-word, wnnrpc-get-dictionary-list, wnnrpc-receive-dictionary-list, wnnrpc-get-writable-dictionary-list, wnnrpc-get-hinshi-list, wnnrpc-hinshi-number): New functions. (wnnrpc-unpack-u16-string): Bug fix for the case of ASCII string. * wnn.el (wnn-dictionary-specification): Add dictionaries of gerodic and ones of WNN consortium. Implement a false path. * wnnrpc.el (wnnrpc-renbunsetsu-conversion): Generate an error on failure. (wnnrpc-get-bunsetsu-candidates): Ditto. (wnnrpc-tanbunsetsu-conversion): Ditto. Implement a false path. Error recovery. * wnn.el (wnn-create-directory, wnn-open-dictionary, wnn-open-frequency, wnn-query-del/create-frequency): New function. (wnn-set-dictionary-sub): New function. 1997-05-24 NIIBE Yutaka * wnnrpc.el (wnnrpc-version, wnnrpc-access, wnnrpc-mkdir, wnnrpc-create-dictionary, wnnrpc-create-frequency, wnnrpc-discard-file, wnnrpc-remove-file): New functions. (wnnrpc-test-result-and-get-error): New subst. Implement a false path from wnnrpc-set-fuzokugo-file. * wnnrpc.el (wnnrpc-set-fuzokugo-file): Return negate-encoded error code on failure. * wnn.el (wnn-create-environment): Generate an error message. Implement a false path from wnnrpc-open-file. * wnnrpc.el (wnnrpc-open-file): Change the interface. Return negate-encoded error code on failure. * wnn.el (wnn-open-file): New function. (wnn-create-environment): Handle return value, and generate an error message for wnnrpc-set-fuzokugo-file on failure. (wnn-set-dictionary): Handle return value. 1997-05-17 NIIBE Yutaka * wnnrpc.el (wnnrpc-error-message): Error strings taken from Wnn-4.2 distribution. (wnnrpc-errono): Removed. Implement a false path from wnnrpc-open. * wnnrpc.el (wnnrpc-open): Change the interface. Return NIL on success, error code on failure. * wnn.el (wnn-open): Delete process and buffer. Generate an error on failure. (wnn-get-environment): Follow the change (none). (wnn-start-conversion): Follow the change (none). * convert.el (egg-convert-region): Follow the change. Call delete-region after egg-start-conversion. Implement a false path from wnnrpc-connect. * wnnrpc.el (wnnrpc-connect): Change the interface. Return negate-encoded error code on failure. * wnn.el (wnn-create-environment): Generate an error on failure. (wnn-get-environment): Follow the change. On failure, don't register the environment to wnn-environments. 1997-05-16 NIIBE Yutaka Dynamically allocate environment arbitrarily. * wnn.el (wnn-create-environment): Change the structure of ENV. (wnn-e-get-in-use, wnn-e-set-in-use): New subst. (wnn-end-conversion): Call wnn-e-set-in-use. (wnn-get-environment, wnn-find-env-not-in-use): New function. (wnn-start-conversion): Call wnn-get-environment. * wnn.el (wnn-fini): Implemented. 1997-05-15 NIIBE Yutaka * convert.el (egg-start-conversion): Change the interface. (egg-convert-region): Follow the change. (egg-open-if-not): Removed. * wnn.el (wnn-start-conversion): Follow the change. * wnn.el (wnn-environment-list): Removed. (wnn-environment-serial): Removed. (wnn-connect-and-init): Removed. (wnn-environments): New variable which holds all environments. 1997-05-15 NIIBE Yutaka * wnn.el (wnn-change-bunsetsu-length): Bug fix. Last argument to wnnrpc-b-set-freq-down is list of bunsetsu. * mlh.el (mlh-do-spacing): Emacs 20 related changes. Use category-set-mnemonics, and char-category-set. According to suggestion by Kenichi Handa . 1997-05-15 MORIOKA Tomohiko * wnn.el (wnn-usr-dic-dir): New variable. (wnn-filename): Use wnn-usr-dic-dir. * its.el (its-defrule): New argument `enable-overwrite'. 1997-05-14 NIIBE Yutaka * convert.el (egg-exit-conversion-unread-char): Use newer variable unread-command-events, as unread-command-char is obsolete. (egg-shrink-bunsetsu, egg-source-maxlen-from-here, egg-enlarge-bunsetsu, egg-next-conversion, egg-exit-conversion, egg-exit-conversion, egg-insert-converted-result): New property EGG-CONVERSION-ENGINE, which specifis backend. (egg-start-conversion, egg-get-number-of-bunsetsu, egg-get-bunsetsu-converted, egg-set-bunsetsu-pos, egg-get-bunsetsu-pos, egg-get-number-of-candidates, egg-get-candidate, egg-decide-candidate, egg-change-bunsetsu-length, egg-get-bunsetsu-source, egg-end-conversion): Change the interface, new argument c. * wnn.el (wnn-start-conversion, wnn-get-number-of-bunsetsu, wnn-get-bunsetsu-converted, wnn-set-bunsetsu-pos, wnn-get-bunsetsu-pos, wnn-get-number-of-candidates, wnn-get-candidate, wnn-decide-candidate, wnn-change-bunsetsu-length, wnn-get-bunsetsu-source, wnn-end-conversion): Likewise. * convert.el (egg-open-if-not): Change the interface. Return conversion backend. * wnnrpc.el (wnnrpc-following-char-or-wait, wnnrpc-unpack-u32, wnnrpc-unpack-u16, wnnrpc-unpack-u8, wnnrpc-unpack-u16-string, wnnrpc-unpack-u8-string): Change the interface to avoid compilation warnings. (wnnrpc-unpack): Use new interface. * wnn.el (wnn-open): Change the name of WNN buffer as debug has been done. 1997-05-11 NIIBE Yutaka * wnnrpc.el (wnnrpc-following-char-or-wait): Rename from wnn-following-char-or-wait. (wnnrpc-following-char-or-wait): Declare with DEFUN instead of DEFSUBST. 1997-05-10 NIIBE Yutaka * Throughout: Use JUNET coding system for file format. * mlh.el: Move some comments to HISTORY. (mlh-version): Removed. Remove all autoload entries. (henkan-region-function): Removed. (member): Don't need any more. * mlh-nihongo.el: Renamed from nihongo.el. * mlh.el (mlh-space-bar-backward-henkan): call egg-convert-region directly. (mlh-space-bar-backward-henkan): Fix for Emacs 20. Don't call egg:do-auto-fill. (mlh-backward-henkan): Use set-marker-insertion-type. (mlh-do-spacing): Char-category. * mlh.el, nihongo.el: Taken from mlh-1.002 distribution. 1997-05-07 NIIBE Yutaka * convert.el (egg-update-frequency): Removed. (egg-conversion-backend): Remove entry for update-frequency. * wnn.el (wnn-dictionary-specification): Change parameters according to suggestion by Tomoko Yoshida in mule-jp@etl.go.jp. Original had been taken from wnn-4.2. 1997-05-06 NIIBE Yutaka * convert.el (egg-next-conversion): Bug fix. It's max+ instead of n. 1997-05-05 NIIBE Yutaka * wnnfns.c (Fwnn_get_bunsetsu_converted): Rename from get-converted-bunsetsu. (Fwnn_get_bunsetsu_source): Ditto. * convert.el (egg-get-bunsetsu-converted): Ditto. (egg-get-bunsetsu-source): Ditto. * wnn.el (wnn-create-environment): New file which mimics API of wnnfns.c. 1997-04-29 NIIBE Yutaka * wnnrpc.el: New file which implements Remote Procedure Calls of WNN. 1997-04-16 NIIBE Yutaka * its/kanainput.el (normal-pair): Use its-defrule*. * its.el (its-defrule*): Rewritten. * its/hira.el ("n"): Alternative implementation using 'otherwise'. * its.el (its-processing-map): Removed. (its-register-map): Rename from its-set-map. (its-register-map): Remove first argumet NAME. (its-defrule): Remove last optional argument END. (its-define-otherwise-terminate-here): New function. (its-goto-state): New function. (its-defrule, its-defoutput): Use its-goto-state. 1997-04-12 NIIBE Yutaka * its.el: Enhance meaning of ITS state machine. Now, includes representation of "ANY of key stroke" (-2). (its-defrule): New feature end=='otherwise. (its-defrule*): New function. (its-state-machine): Implement otherwise-terminate-before-this-key. * its/kanainput.el (its-k-zenkaku-escape, its-k-hankaku-escape, its-k-symbols-escape): Add prefix its-. Let them defconst. "W": Move the definition beginning to avoid error. 1997-03-26 NIIBE Yutaka * convert.el (egg-next-conversion): -1 goes to end of bunsetsu. 1997-03-25 NIIBE Yutaka * egg.el (egg-mode-on, egg-input-mode, egg-in-fence-mode): Deleted. (egg-fence-face-on, egg-fence-face-off): Deleted. (egg-region-start, egg-region-end): Deleted. 1997-03-24 NIIBE Yutaka * its/hira.el ("n"): Add "z" and "?" for prefetch char of "n". Implement conversion mode. * convert.el: New file. 1997-03-23 NIIBE Yutaka * its.el (its-mode-map): As "\C-g" is used in global-map, use "\C-]" instead (for its-cancel-input). 1997-03-22 NIIBE Yutaka Introduce new scheme to specify server. * wnnfns.c (Qjserver, Qcserver, Qtserver, Qkserver): Removed. (Vwnn_server_type): Integer variable. (wnn_get_server_type): Renamed from wnn_check_server_type. (charset_wnn_server_type): Renamed from lc_wnn_server_type. Introduce new scheme to specify uniqueness. * wnnfns.c (Qwnn_no_uniq, Qwnn_uniq, Qwnn_uniq_kanji): Removed. (Vwnn_uniqueness_specifier): Integer variable. Renamed from wnn_uniq_level. 1997-03-21 NIIBE Yutaka Cosmetic changes. * wnnfnc.c (Throughout): Change Lisp function name to follow the format of wnn-VERB-OBJECT. Use XFASTINT instead of XINT, if appropriate. * wnnfns.c (Fwnn_fuzokugo_set): Merged with wnn-set-fuzokugo of wnn-egg.el. * wnn-egg.el (wnn-set-fuzokugo): Deleted. * wnnfns.c (Fwnn_dict_add): Merged with wnn-add-dict of wnn-egg.el. * wnn-egg.el (wnn-add-dict): Deleted. * wnn-egg-msg.el (wnn-msg-get): Renamed from egg-msg-get. (wnn-message-alist): Renamed from egg-message-alist. Use defconst. * wnnfns.c (wnn_check_server_type): Renemed from check_wnn_server_type. * wnn-egg-msg.el (egg-error): Deleted. Not useful enough. * wnn-egg.el (Throughout): Replace egg-error by error. * egg.el (egg-sai-henkan-start, egg-sai-henkan-end, egg-old-bunsetu-suu): Moved from wnn-egg.el. * wnn-egg.el (Throughout): Change variable name and function name. Added wnn- prefix, egg- prefix. * wnn-egg.el: Delete historical defaliases. Only support wnn-set-[cjk]server-hostname. * wnn6.el: New file. Discriminate Wnn6 related functions. * eggrc-wnn6: New file. Discriminate Wnn6 related setting. * egg-fence.el: Removed. 1997-03-20 NIIBE Yutaka Distingush continuation of egg-mode and turn off of egg-mode. * its.el (its-mode-map): Bind "\C-\\" to its-exit-mode-no-egg. (its-exit-mode-internal): New argument egg-mode-flag. (its-exit-mode-no-egg): New Function. Rethink about keymap. Once, the intention of egg-mode-map has been to override ALL of the keymap. That's so selfish, and not friendly to other parts of Emacs. This implementation intend to be more friendly with other keymaps. * its.el (its-mode-map): Remove definition of "\C-c" for its-cancel-input, as C-c has special meaning in Emacs. We should not re-define it. Remove definition of "\C-q" for its-select-previous-map. Remove definition of "\C-_" for egg-jis-code-input. Remove definition of "\C-w", "\C-@", [?\C-\ ] for egg-henkan-fence-region. Implement START/CURSOR/END scheme. * its.el (its-input-to-vsyl): New function. (its-beginning-of-input-buffer): New function. (its-end-of-input-buffer): New function. (its-backward-SYL): New function. (its-forward-SYL): New function. (its-delete-SYL): New function. (its-delete-backward-SYL): New function. (its-delete-backward-SYL-internal): New function. (its-delete-backward-within-SYL): New function. (its-delete-by-keystroke): New Variable. (its-exit-mode): New function. (its-exit-mode-internal): New function. * its.el (its-standard-map-list, its-find, its-next-map, its-previous-map): Deleted. (its-get-indicator): Delete duplicated definition. Leave one which takes argument. (its-input): Rename from its-input-subsubsub. * egg.el (egg-mode-map): Don't include SPACE. Introduce CURSOR. * its.el (its-state-machine): Add new argument EMIT. Return CURSOR. (its-state-machine-keyseq): Likewise. (its-input-subsubsub): Return CURSOR. (its-input-subsub): Deleted. (its-DSYL-p): Deleted. (its-buffer-insert-SYL-list): Deleted. (its-buffer-ins/del-SYL): New function. (its-input-end): Change the argument to P of point, and return VOID. Change structure of . is normal . (its-new-map): Follow the change of structure. (its-get-indicator, its-set-indicator, its-reset-start-state): Likewise. (its-reset-start-state): Renamed from its-reset-start. Don't use , but introduce new scheme of SYL property. (its-change-t-to-nil, its-nil-index, its-bytes-between, its-delete-between, its-move-nil--->, its-move-nil-<--, its-move-nil-<--sub, its-move-nil-to-last, its-move-nil-to-first): Deleted. 1997-03-19 NIIBE Yutaka * its.el: Change the structure of DSYL. Same as . (its-input-subsub): Follow the change of structure. (its-make-DSYL): Deleted. (its-get-keyseq-cooked): New function. Swap the meaning of T/NIL of . Delete the structure of . (its-new-input-buffer): Deleted. (its-input-subsub): Remove the argument SYLP. (its-input, its-input-sub, its-init-text-properties): Deleted. Introduce START, END and CURSOR. 1997-03-19 NIIBE Yutaka Global-map should be used, for key sequence not defined by its-mode-map and/or egg-mode-map. Don't mask other maps. * its.el (its-mode-esc-map): Deleted. (its-mode-map): Include define-key of the esc-map here. * egg.el (egg-mode-esc-map): Deleted. (egg-mode-map): Include define-key of the esc-map here. 1997-03-18 NIIBE Yutaka * its.el (its-input): Rename from its-input-input-buffer. (its-state-machine): Handle END of input (key == -1). ITS minor mode deleted. It's implemented by local-map of text properties. (its-mode): Remove the variable. (its-mode): Remove the function. * its.el (): Change the order of list. (car sylp) is last entry of the list. (its-input-buffer): Deleted. It's now a member of text properties. (): Change the structure. Start state should have "" for keyseq. (its-get-start-state): Follow chage of the structure. (its-reset-start, its-set-indicator, its-get-indicator): Likewise. (its-new-state, its-new-map): Split from its-new-state/map. (its-make-map): Deleted. 1997-03-17 NIIBE Yutaka * its.el (its-buffer-insert-SYL-list): Use insert-and-inherit to inherit properties. (its-fence-overlay): Removed. Don't use overlay, as it has no information in undo-list. 1997-03-16 NIIBE Yutaka * its/hira.el ("n"): Use new feature END. ("ppy", "bby", "ddy", "jjy", "zzy", "ggy", "lly", "rry", "hhy", "cch", "tts", "tty", "ssh", "ssy", "kky"): its-defoutput. * its.el (its-defrule): Add argument END. (its-buffer-delete-SYL): Bug fix. Use length instead of string-width. 1997-03-15 NIIBE Yutaka * its.el (its-input-input-buffer): Implement the case of DSYL. 1997-03-14 NIIBE Yutaka * its.el (its-buffer-delete-SYL): Handle the case of NIL. * its/hira.el: Implement "kka" and others. Implemlement "N". (digit-characters, symbol-characters, downcase-alphabets, upcase-alphabets): Delete useless defvar-s. 1997-03-14 NIIBE Yutaka * its/hira.el ("roma-kana"): Follow change of implementation of state machine. Correct the abuse of the word "MODE". It seems that it's direct influence of "mode" in Emacs, but it's not mode at all. * its.el (its-map-alist): Renamed from its-mode-alist. (its-get-map): Renamed from its-get-mode-map. (its-set-map): Renamed from its-set-mode-map. (its-define-state-machine): Renamed from its-define-mode. (its-select-map-menu): Renamed from its-select-mode-menu. (its-select-map-from-menu): Renamed from its-select-mode-from-menu. (its-standard-map-list): Renamed from its-standard-modes. (its-next-map): Renamed from its-next-mode. (its-previous-map): Renamed from its-previous-mode. (its-select-map): Renamed from its-select-mode. (its-get-indicator): Renamed from its-get-mode-indicator. (its-select-map-from-menu): As it's not mode, don't need offer hooks. (its-next-map): Likewise. (its-previous-map): Likewise. (its-select-map): Likewise. Change the implementation of its-mode-alist. Name is in now. * its.el (its-get-mode-map): Just do assoc. (its-set-mode-map): Simplified. * its.el (its-get-indicator): Renamed from its-map-indicator. (its-set-indicator): Renamed from its-map-set-indicator. (its-get-start-state): Renamed from its-map-start. (its-new-state): Change the argunents. (its-map-set-start): Removed. (its-reset-start): New function. Remove old implemantation of translator. * its.el (its-resize, its-maps, its-actions, its-inputs, its-level, its-maxlevel, its-char-from-buff, its-interactive): Removed. (its-make-action, its-reset-maps, its-current-map, its-previous-map, its-level, its-enter-newlevel, its-reset-input, its-flush-input-before-point, its-peek-char, its-read-char): Removed. (its-push-char, its-ordinal-charp, its-delete-charp): Removed. (its-translate-region): Removed. (its-buff-s, its-buff-e): Removed. (its-state-terminalp): Removed. Remove selection of candidates in map, it's questionable to implement this feature with SYL. Might rethink in future. (its-make-menu-from-map-result, its-make-alist-from-map-result): Removed. (its-make-menu-from-map, its-make-menu-from-map*): Removed. (its-make-alist-from-map, its-make-alist-from-map*): Removed. (its-completing-read): Removed. (its-minibuffer-local-must-match-map, its-minibuffer-local-completion-map): Removed. (its-minibuffer-completion-help, car-string-lessp, its-temp-echo-area-contents): Removed. Implement SYL-based state machine. * its.el (its-input-buffer, its-barf-on-invalid-keyseq): New variables. (its-new-input-buffer): New function. (its-self-insert-char): New command. (its-initial-ISYL, its-make-DSYL, its-make-VSYL, its-input-input-buffer, its-input-input-buffer-sub, its-state-machine, its-state-machine-keyseq, its-buffer-delete-SYL, its-buffer-insert-SYL-list, its-get-next-state, its-get-ksa/b, its-get-keyseq, its-ksa-p, its-get-output): New function. (its-get-KAS): Removed. (its-get-state, its-get-action, its-set-action): Removed. (its-make-KAS, its-get-KAS): Removed. * its.el (its-defrule-sub): Merged into its-defrule. 1997-03-13 NIIBE Yutaka * its.el: (its-define-mode): Change the arguments. * its/zhuyin.el ("zhuyin"): Follow the changes of its-define-mode. * its/zenkaku.el ("zenkaku-downcase"): Likewise. * its/pinyin.el ("PinYin"): Likewise. * its/kata.el ("roma-kata"): Likewise. * its/kanainput.el ("kanainput"): Likewise. * its/hira.el ("roma-kana"): Likewise. * its/hankaku.el ("downcase"): Likewise. * its/hangul.el ("hangul"): Likewise. * its/han-kata.el ("roma-han-kata"): Likewise. * its.el (its-action-output, its-action-next, its-get-next-map, its-set-next-map): Removed. (its-make-next-state): New function. (its-make-state): Removed. * its.el (its-defrule-sub): Renamed from `its-defrule**'. * wnnfns.h: New file. Macros for WNN6 are defined here. * wnn6fns.c: New file. Moved from wnnfns.c for WNN6 specific functions. 1997-03-12 NIIBE Yutaka * wnnfns.c: cosmetic changes (indentation, commenting-out-style, and compare to Qnil, etc). Get rid of "register" qualifier. 1997-03-05 NIIBE Yutaka * its.el (its-define-mode): Change internal structure. Completely rewritten. (its-make-map): Function to make map. (its-make-state): New function. Make new state. (its-make-KAS): New function. Make Key-Action-State triad. (its-state-terminalp): New function. True when the state is terminal. (its-map-indicator, its-map-set-indicator,): Changed. (its-map-terminalp, its-map-incrementalp, its-map-set-incrementalp, its-map-alist, its-map-set-alist, its-map-action, its-map-set-action): Removed. (its-defrule-verbose): Deleted. Seems debug purpose variable. (its-make-map): Removed . It was useless space eater. (its-map-indicator, its-map-set-indicator, its-map-alist, its-map-set-alist, its-map-action, its-map-set-action): Follow the change. (its-define-mode): Likewise. (its-defrule**): Change the argument. Delete STATE. (its-defrule): Likewise. (its-map-state, its-map-set-state): Removed. : Changed the structure. Introduce , which is t on hangul-map, zhuyin-map, and kanainput-map. (its-define-mode): Change the arguments. INDICATOR and RESET is always required. Add new argument INCREMENTALP. * its/kanainput.el ("kanainput"): Use new API of its-define-mode. * its/hangul.el ("hangul"): Likewise. * its/zhuyin.el ("zhuyin"): Likewise. * its.el (its-make-terminal-state-sofar): Removed. (its-default-make-terminal-state): Removed. (its-make-terminal-state): Removed (its-make-non-terminal-state): Removed. Not used. (its-map-incrementalp, its-map-set-incrementalp): New functions. 1997-03-04 NIIBE Yutaka * its.el (its-defrule-conditional, its-defrule-conditional*): Removed. Evaluating cond clause at runtime is stupid. Rules should be determined at compile time, not at run time. (its-get-action): Simplified. It's always standard. (its-make-terminal-state-sofar): Likewise. (its-make-action): Renamed from its-make-standard-action. (its-standard-actionp): Removed. No use. (its-translate-region): Simplified. (its-map-topmap-p): Removed. No use. (its-simple-actionp, its-collect-simple-action): Removed. No use. (its-insert-output-string, its-display-status-string): Removed. It seemd these variables is to debug ITS itself. (its-translate-region): Simplified. * its/hira.el (".", ",", "n", "nn"): Rules should be determined at compile time. * its/han-kata.el: Likewise. * its/kata.el: Likewise. * its.el (its-make-standard-action): Simplified. (its-make-standard-action): Remove alternative output. (its-standard-actionp): Simplified. (its-action-next): Simplified. (its-select-alternative-output-menu): Removed. Not used at all. (its-select-alternative-output): Ditto. * its/han-kata.el, its/zenkaku.el, its/kata.el, its/kanainput.el, its/hira.el, its/hankaku.el: Add (require cl). * its.el (its-enable-double-n-syntax, its-use-kuten-for-period, its-use-touten-for-comma, its-zenkaku-escape, its-hankaku-escape): Declare here. Add prefix `its-'. ): (its-defrule, its-defrule*): Remove MAP argument. Merged into its-defrule. 1997-03-04 NIIBE Yutaka * its.el (its-completing-input-menu): Removed. Not used. (its-completing-input): Ditto. (its-translate-region): Remove (null action) clause. It's identical to 't' case. (its-map-supers): Deleted. (its-map-set-supers): Ditto. (its-get-next-map-locally): Deleted. (its-define-mode): Remove supers. (its-make-map): Likewise. (its-simulate-input): sref -> aref. add char-bytes -> +1. (its-defrule**): Likewise. (its-flush-input-before-point): Delete useless save-excursion. (its-push-char): Likewise. (its-translate-region): Likewise. * its/zhuyin.el (its-make-terminal-state): * its/kanainput.el (its-make-terminal-state): * its/hangul.el (its-make-terminal-state): Use its-make-terminal-state-sofar. * its/kanainput.el (its-make-terminal-state-kanainput): Removed. * its.el (its-make-terminal-state-sofar): Renamed. (was: its-make-terminal-state-hangul) * its/han-kata.el (its-select-hankaku-katakana): Renamed. (was: its:select-hankaku-katakana). * its.el (its-map-topmap-p, its-map-supers, its-map-set-supers, its-map-terminalp, its-map-state, its-map-set-state, its-map-indicator, its-map-set-indicator, its-map-action, its-map-set-action, its-map-alist, its-map-set-alist, its-get-action, its-action-output, its-action-next, its-get-next-map, its-get-next-map-locally, its-set-next-map, its-collect-simple-action, its-read-current-its-string, its-make-map): Add prefix 'its-'. * its.el (its-defrule-select-mode-temporally): Deleted. (its-select-mode-temporally): Deleted. (its-select-previous-mode): Deleted. * its/hira.el ("q", "Q"): Removed. * its.el (its-defrule**): Don't call coerce-internal-string. (map-state-string): Removed. (its-default-make-standard-non-terminal-state): Don't call map-state-string. * egg.el (characterp, coerce-internal-string, coerce-string): Removed. * its.el (its-insert-char): Deleted. (its-internal-mode-alist): Removed. (its-set-mode-map, its-define-mode): Remove internalp. (its-set-mode-indicator): Removed. * egg-fence.el (egg-fence-self-insert-command): Add prefix 'egg-'. * its.el (fence-self-insert-command): Move to egg-fence.el. * egg-fence.el (egg-exit-fence-mode): Renamed (egg-fence-exit-mode). (egg-enter-fence-mode-and-self-insert): Deleted. * egg.el (egg-quit-egg-mode): Deleted. * egg-misc.el (egg-fence-toggle-egg-mode): Add prefix 'egg-'. (egg-fence-toggle-egg-mode): beep -> ding. (global-map): bind C-\ to egg-enter-fence-mode. 1997-03-02 NIIBE Yutaka * egg-henkan.el: New file. Use new API (egg-get-bunsetu-kanji, egg-get-bunsetu-yomi, egg-is-dai-bunsetu, bunsetu-suu, egg-hindo-update, egg-get-bunsetu-end). * wnn-egg.el: Move egg-henkan-* to egg-henkan.el. * wnn-egg.el (egg-startup-file-search-path): Remove current directory. (egg-open-wnn): Renamed from EGG-open-wnn. (bunsetu-suu): New function. (egg-get-bunsetu-kanji, egg-get-bunsetu-yomi): New function. (egg-is-dai-bunsetu): New function. (egg-hindo-update): New function. (egg-get-bunsetu-end): New function. (egg-henkan-region, egg-gyaku-henkan-region, egg-henkan-region-internal, egg-henkan-paragraph, egg-gyaku-henkan-paragraph, egg-henkan-sentence, egg-gyaku-henkan-sentence, egg-henkan-word, egg-gyaku-henkan-word, egg-henkan-insert-kouho, egg-henkan-kakutei, egg-henkan-kakutei-first-char, egg-henkan-kakutei-before-point, egg-sai-henkan, egg-henkan-goto-bunsetu, egg-henkan-forward-bunsetu, egg-henkan-backward-bunsetu, egg-henkan-first-bunsetu, egg-henkan-last-bunsetu, egg-henkan-hiragana, egg-henkan-katakana, egg-henkan-next-kouho, egg-henkan-next-kouho-dai, egg-henkan-next-kouho-sho, egg-henkan-previous-kouho, egg-henkan-previous-kouho-dai, egg-henkan-previous-kouho-sho, egg-henkan-goto-kouho, egg-henkan-bunsetu-chijime-dai, egg-henkan-bunsetu-chijime-sho, egg-henkan-bunsetu-nobasi-dai, egg-henkan-saishou-bunsetu, egg-henkan-saichou-bunsetu, egg-bunsetu-length-henko, egg-henkan-quit, egg-henkan-select-kouho, egg-henkan-select-kouho-dai, egg-henkan-select-kouho-sho, egg-henkan-word-off, egg-henkan-kakutei-and-self-insert, egg-henkan-mode-map, egg-henkan-mode-esc-prefix, egg-henkan-help-command, egg-henkan-inspect-bunsetu): Add prefix `egg-'. (egg-henkan-mode-in-use): Deleted. (set-egg-henkan-mode-format): Deleted. Don't need. (disconnect-wnn): Let it be normal function, instead of command. (close-wnn): Ditto. (set-jserver-host-name, set-kserver-host-name, set-cserver-host-name): Use defalias. (close-wnn): Take an argument of wnn-server-type. (wnn-egg-kill-emacs-function, set-wnn-host-name, set-cwnn-host-name, set-kwnn-host-name): Likewise. * egg.el (egg-global-map-backup): Deleted. (egg-local-map-backup): Deleted. (egg-insert-after-hook): it's global variable, nod buffer-local. * egg-fence.el (egg-henkan-fence-region, egg-enter-fence-mode, egg-fence-katakana, egg-fence-hiragana, egg-fence-hankaku, egg-fence-zenkaku, egg-fence-backward-char, egg-fence-forward-char, egg-fence-beginning-of-line, egg-fence-end-of-line, egg-fence-transpose-chars, egg-fence-delete-char, egg-fence-backward-delete-char, egg-fence-kill-line, egg-fence-exit-mode, egg-fence-cancel-input, egg-fence-mode-help-command): Add Prefix `egg-'. (egg-fence-mode-map): Remove binding to eval-expression (C-z). (egg-self-insert-non-undo-count): Removed. (egg-self-insert-command): Removed. (egg-fence-backward-char, egg-fence-forward-char, egg-fence-transpose-chars, egg-fence-delete-char, egg-fence-backward-delete-char): beep -> ding. wnn-egg.el (egg-henkan-select-kouho): Likewise. 1997-02-27 NIIBE Yutaka * wnn-egg.el (push-end, push-end-internal): Removed. * its.el (dolist): Removed. It's in CL package. (for-each, for-each*): Removed. * egg-keymap.el: Removed. I guess noone use it. * egg-jsymbol.el (*-alist): Declare by defconst. * egg-misc.el (toggle-egg-mode): Removed. * All files: Change the identifier XXX:YYYY --> XXX-YYYY, and *YYY* ---> YYY. * egg-fence.el (enter-fence-mode): Use new API for marker insertion `set-marker-insertion-type'. * its.el (its-*buff-e*): Likewise. * egg-jsymbol.el: lc-jp --> (charset-id 'japanese-jisx0208) lc-jp2 --> (charset-id 'japanese-jisx0212). 1997-02-26 NIIBE Yutaka * egg-fence.el (egg:fence-mode-map): Renamed from fence-mode-map. (egg:fence-mode-esc-prefix): Renamed from egg:fence-mode-esc-map. (henkan-fence-region-or-single-space): Removed. * egg-misc.el (toggle-egg-mode): mc-flag -> enable-multibyte-characters. * its.el (read-current-its-string): New function. Moved from wnn-egg-misc.el. (In meny functions): beep --> ding. * egg-misc.el (read-hiragana-string): Removed. (read-kanji-string): Removed. (egg:special-symbol-input): Renamed from special-symbol-input. (egg:special-symbol-input-point): Renamed from special-symbol-input-point. (si:*global-map*): Remeved. Removed 'Changes on Global map'. (its-mode-map): Renamed from mule-keymap. * wnn-egg.el (henkan-region-internal): Use new API for undo. (henkan-kakutei): Likewise. (henkan-kakutei-first-char): Likewise. (henkan-kakutei-before-point): Likewise. (sai-henkan): Likewise. * egg.el (egg:quit-egg-mode): Likewise. * egg-fence.el (egg:*fence-open*, egg:*fence-close*, egg:*fence-face*): Let them be declared by defvar. (egg:*fence-open-in-cont*, egg:*fence-close-in-cont*, egg:*fence-face-in-cont*): Likewise. (set-egg-fence-mode-format): Removed. Useless. Don't need to be interactive. (set-egg-fence-mode-format-in-cont): Removed. (egg:*face-alist*): Removed. * wnn-egg-misc.el (its:select-mode, its:select-mode-from-menu, its:next-mode, its:previous-mode): Removed (Merged into its.el). * its.el (its:select-mode, its:select-mode-from-menu, its:next-mode, its:previous-mode): Call hook of `its:select-mode-hook'. * diced.el: Removed. This depends on wnn. Functions are moved to wnn-egg-dict.el. * wnn-egg-dict.el (remove-regexp-in-string): Removed. (toroku-region): Don't call `remove-regexp-in-string'. Removing invalid sequence (TAB?) automatically is not good idea. It should notify user. Currently, just don't remove. * busyu.el (busyu-table): defconst instead of defvar. (busyu-kaku-alist): defconst instead of defvar. * its.el (egg:member): Removed. Not used. * wnn-egg-msg.el (*egg-message-alist*): Include asking string in register-notify and remove-notify. Should also change Korean and Chinese. * egg.el: Removed "Tamago Notification System". It is useless, as we have *Messages* buffer in GNU Emacs 19. * diced.el (diced-execute): Don't use `notify' but `message'. (set-dict-comment): Likewise. * its.el (its-defrule**): Likewise. * wnn-egg-dict.el (egg:toroku-word): Likewise. * wnn-egg-msg.el (egg:error): Likewise. * wnn-egg.el (set-wnn-param): Likewise. (EGG:open-wnn): Likewise. (close-wnn): Likewise. (henkan-word-off): Likewise. (henkan-inspect-bunsetu): Likewise. * diced.el (diced-execute): Don't use `notify-yes-or-no-p' but use plain `yes-or-no-p' and format. * wnn-egg-dict.el (egg:toroku-word): Likewise. * egg.el (notify-yes-or-no-p-internal): IIDESUKA is not good. it should get the message through egg:get-msg. Currently, use "OK?". (notify-y-or-n-p-internal): Likewise. * wnn-egg.el: Split into wnn-egg-dict.el, wnn-egg-misc.el, and wnn-egg-msg.el. (many functions): remove commented out line of (open-wnn-if-disconnected). * egg.el: Split into egg.el, egg-fence.el, egg-misc.el, jis-input.el, and modeline.el. * wnn-egg.el (egg-default-startup-file): change to eggrc-wnn from eggrc. (henkan-region-internal): Use new API for marker insertion `set-marker-insertion-type'. 1997-02-13 NIIBE Yutaka * menu.el (menu:select-from-menu): Rewritten. egg-4.2.0/ChangeLog.2000-2001000066400000000000000000000271521252027163000147760ustar00rootroot000000000000002001-12-01 ? * egg/wnn.el (wnn-server-info-list): Use `defvar' instead of `defconst' to define it. 2001-12-01 KATAYAMA Yoshio * egg-x0213.el: New file. 2001-11-10 Kinji Itoh (cf. http://cgi18.plala.or.jp/nyy/canna/canna-20011023-20011110.diff) * egg/canna.el (canna-server-port): Default to the string "canna". (cannna-open): Treat the port name as a string instead of a number. 2001-11-08 Kinji Itoh (cf. [tamago:00546]) * egg/canna.el (canna-set-converted-yomi): New function. (canna-start-conversion): Use it. (canna-change-bunsetsu-length): Use it. 2001-10-22 Yoichi NAKAYAMA (cf. [tamago:00534]) * egg/canna.el (canna-word-delete-regist): Signal an error using `egg-error' if there is no text for yomi. 2001-08-16 KATAYAMA Yoshio (cf. [tamago:00516]) * its/greek.el: New file. 2001-07-24 KATAYAMA Yoshio (cf. [tamago:00504]) * eggrc (wnn7-jserver-setup): New function. 2001-06-28 Yoshiki Hayashi (cf. [tamago:00468]) * egg-cnv.el (egg-end-of-conversion-buffer): Replace `next-single-property-change' to `egg-next-single-property-change'. (egg-decide-before-point): Ditto. (egg-exit-conversion): Ditto. (egg-abort-conversion): Ditto. * egg.el (egg-last-method-name): Default to nil. * its-keydef.el: Set the default value of `its-select-func-alist' to nil. * its.el (its-current-language): Default to nil. (its-mode-map): Use `(meta KEY)' instead of `M-KEY'. * egg/canna.el (canna-open): Use `binary' instead of `no-conversion' for the process coding-system. * egg/sj3.el (sj3-open): Ditto. * egg/wnn.el (wnn-open): Ditto. * egg/wnnrpc.el (wnnrpc-with-temp-buffer): Use `binary' instead of `no-conversion'. (wnnrpc-with-write-file): Ditto. 2001-05-24 KATAYAMA Yoshio (cf. [tamago:00462]) * its/aynu.el: Require `cl' when compiling. 2001-05-23 Katsumi Yamaoka (cf. [tamago:00461]) * egg.el: Require `cl' only when compiling. * its.el: Ditto. 2001-05-22 KATAYAMA Yoshio * its.el (its-delete-by-character): New customizable variable. (its-delete-backward-SYL): Delete a character as a unit even if just after input, if its-delete-by-character is non-NIL. 2001-04-16 KATAYAMA Yoshio * egg.el (egg-setup-invisibility-spec): New function for setup buffer-invisibilty-spec. * its.el (its-setup-fence-mode): Change the value of invisible property to egg. * egg-cnv.el (egg-convert-region): Change the value of invisible property to egg. * jisx0213.el: Correct JIS X 0213 definition. (suggested by T. Kawabata) 2000-06-02 KATAYAMA Yoshio * egg/wnn.el (wnn): Fix docstring. (wnn-backend-plist): Include egg-special-candidate. (wnn-special-candidate): New function. (wnn-pinyin-zhuyin-bunsetsu, wnn-pinyin-zhuyin-string): New functions. (egg-activate-wnn): Fix docstring. * egg/sj3.el (sj3, egg-activate-sj3): Fix docstring. * egg/canna.el (egg-activate-canna): Fix docstring. * menudiag.el: Mostly rewritten. * leim-list.el: Docstrings for autoload fixed. * its.el (its): Fix docstring. (its-mode-map): Fix bindings. (its-fence-mode, egg-sub-mode-map-alist): New variables. (its-enter/leave-fence): New function. (its-put-cursor): Add text properties point-entered, point-left, modification-hooks. (its-in-fence-p): Check also read-only property. (its-hiragana, its-katakana): Just call its-convert. (its-hankaku, its-japanese-hankaku): These functions deleted. (its-full-half-table, its-half-full-table): New variables. Initialize them. (its-half-width, its-full-width): New functions. (its-convert): Args changed. * its-keydef.el (its-make-select-func): Add check by (egg-conversion-fence-p). * egg.el (egg): Fix docstring. (egg-current-keymap): This variable deleted. (egg-mode-map-alist, egg-sub-mode-map-alist): New variables. (define-egg-mode-map): New macro. (modefull, modeless): New egg mode maps. (egg-enter/leave-fence-hook): New variable. (egg-enter/leave-fence): New function. (egg-activated): New variable. (egg-activate-keymap): New variable. (egg-modify-fence, egg-post-command-func): New functions. (egg-change-major-mode-buffer): New variable. (egg-activate-keymap-after-command, egg-change-major-mode-func): New functions. (egg-mode): Initialize egg-modefull-mode, egg-modeless-mode. (egg-modefull-map, egg-modeless-map): These functions deleted. (egg-set-face): Preserve the current modification-hooks property. * egg-com.el (ccl-decode-egg-binary): Fix BUFFER-MAGNIFICATION. (ccl-encode-egg-binary): Likewise. * egg-cnv.el (egg-conv): Fix docstring. (egg-conversion-auto-candidate-menu): Fix docstring. (egg-conversion-auto-candidate-menu-show-all): New variable. (egg-conversion-sort-by-converted-string): New variable. (egg-conversion-fence-p): New function. (egg-define-backend-functions): Include egg-special-candidate. (egg-conversion-map): Define up, down, etc. (egg-conversion-mode): New variable. Register it in egg-sub-mode-map-alist. (egg-conversion-enter/leave-fence): New function. Register it in egg-enter/leave-fence-hook. (egg-exit-conversion-unread-char): Use single setq. (egg-make-bunsetsu): Add text properties point-entered and point-left. (egg-set-menu-mode-in-use, egg-unset-menu-mode-in-use) (egg-set-candsel-info): Args changed. (egg-get-candsel-target-major): Code changed. (egg-get-candsel-target-minor): Code changed. (egg-insert-new-bunsetsu): Args changed. (egg-candidate-select-counter): Make it buffer local. (egg-next-candidate-internal): Args changed. (egg-sort-item): New functions. (egg-select-candidate-major): New arg SORT. (egg-select-candidate-minor, egg-select-candidate-list-all-major) (egg-select-candidate-list-all-minor) (egg-select-candidate-internal): Likewise. (egg-hiragana): New function. (egg-katakana, egg-pinyin, egg-zhuyin, egg-hangul): Aliases of egg-hiragana. (egg-special-convert): New function. (egg-enlarge-bunsetsu-internal): Code changed. (egg-reconvert-bunsetsu-internal, egg-decide-before-point) (egg-decide-first-char, egg-exit-conversion) (egg-abort-conversion): Likewise. 2000-02-01 Takanori Saneto * egg/sj3rpc.el (sj3rpc-tanbunsetsu-conversion): should use let* instead of let. 2000-01-20 Katsumi Yamaoka * egg/sj3.el (sj3-word-registration): New function. (sj3-hinshi-select): New function. (sj3-dictionary-select): New function. (sj3-conversion-backend): Add `sj3-word-registration'. (sj3-hinshi-name): New function. (sj3-hinshi-menu): New variable. (sj3-register-2, sj3-register-1): Add messages. (sj3-server-coding-system-list): Remove. (sj3-server-version): Move to egg/sj3rpc.el. (sj3-server-port, sj3-hostname): Strip "*" from the doc string. * egg/sj3rpc.el (sj3rpc-add-word): New function. (sj3rpc-kugiri-stdy, sj3rpc-get-bunsetsu-candidates): Use `sj3-server-coding-system' insted of `sj3rpc-server-coding-system'. (sj3rpc-tanbunsetsu-conversion, sj3rpc-get-bunsetsu-candidates-sub, sj3rpc-begin): Use `sj3-server-coding-system' insted of `sj3rpc-server-coding-system'; don't specify an argument of `sj3rpc-unpack-mb-string'. (sj3rpc-unpack-mb-string): Don't allow the argument; use `sj3rpc-server-coding-system'. (sj3rpc-server-coding-system): Remove macro. (sj3-const): Switch on the return value of `sj3-sjis-p' instead of `sj3-server-version'. (sj3-sjis-p): New macro. (sj3-server-coding-system): New variable; default to `shift_jis'. (sj3-server-version): Move from egg/sj3.el; use `defvar' insted of `defcustom'. * eggrc: Remove SJ3 stuff. 2000-01-17 TOMURA Satoru * Version 4.0.6 released 2000-01-17 TOMURA Satoru * README.ja.text: mentiond about doc/lc99.text 2000-01-17 KATAYAMA Yoshio * its.el (its-hiragana, its-katanaka): modified (its-zenkaku, its-hankaku): added (its-put-cursor): bug fixed. (its-set-cursor-status): redefined. (its-search-beginning, its-search-end): created. (its-end-of-input-buffer): modified. (its-kill-line): modified. (its-cancel-input): modified. (its-japanese-hankaku): added. (its-convert): added. * egg.el (egg-redraw-face): bug fixed. 2000-01-17 SAKAI Kiyotaka * its.el (its-hiragana, its-katakana): re-added. 2000-01-17 SANETO Takanori * Makefile.in: move its-keydefs.el from ITSELS to TOPELS 2000-01-16 * egg-sim.el: many functions renamed and modified... * doc/code-table: created 2000-01-15 TOMURA Satoru * egg-sim.el: rename egg-code.el as egg-sim.el * egg-sim.el (egg-simple-input-method): rename egg-insert-character as egg-simple-input-method * egg.el: rename egg-insert-character as egg-simple-input-method * doc/lc99.txt: added. 2000-01-14 TOMURA Satoru * egg-code.el: created * egg.el: Bind egg-insert-character to C-^ in egg-mode * egg.el: Delete the binding for C-_ in egg-mode * Makefile.in: add egg-code to ${SRCS} 2000-01-13 TOMURA Satoru * Version 4.0.5 released. 2000-01-13 Katsumi Yamaoka * egg/sj3.el (sj3-end-conversion): Restrain from overrunning. 2000-01-13 Katsumi Yamaoka * egg/sj3rpc.el (sj3rpc-open): Use `sj3-server-version' instead of 2. (sj3rpc-unpack-mb-string): New macro. (sj3rpc-tanbunsetsu-conversion, sj3rpc-get-bunsetsu-candidates-sub, sj3rpc-begin): Use it instead of `comm-unpack'. (sj3rpc-server-coding-system): New macro. (sj3rpc-kugiri-stdy, sj3rpc-tanbunsetsu-conversion, sj3rpc-get-bunsetsu-candidates, sj3rpc-get-bunsetsu-candidates-sub, sj3rpc-begin, sj3rpc-unpack-mb-string): Use it. (sj3-const): Switch on the value of `sj3-server-version'. (sj3rpc-kugiri-stdy, sj3rpc-tanbunsetsu-conversion, sj3rpc-get-bunsetsu-candidates, sj3rpc-get-bunsetsu-candidates-sub, sj3rpc-begin): Modify for it. * egg/sj3.el (sj3-server-coding-system-list): New user option. (sj3-server-version): Ditto. 2000-01-13 SAKAI Kiyotaka * its.el: typo * egg.el: typo 2000-01-13 KATAYAMA Yoshio * its.el(its-hiragana, its-katakana): does not work. so deleted. 2000-01-12 NAKAJI Hiroyuki * README.ja.txt: typo * Makefile.in: (clean, distclean): modified. 2000-01-12 TOMURA Satoru * Version 4.0.4 released. 2000-01-12 TOMURA Satoru * REAMDE: removed. * README.ja.txt: created. 2000-01-12 SAKAI Kiyotaka * Makefile.in: "clean" removes ${ELCS}. * Makefile.in: "distclean" created. 2000-01-12 Satoru Tomura * Version 4.0.3 released. 2000-01-12 Satoru Tomura * install-sh: copied from automake distribution * configure.in: created * Makefile.in: created * configure: generated by autoconf 2000-01-11 Satoru Tomura * leim-list.el: (defgroup sj3) added. * egg/sj3.el (sj3-hosname, sj3-server-port): defcusotm'ed 2000-01-11 Katsumi Yamaoka * egg/sj3.el : (require 'egg) added. 2000-01-11 SAKAI Kiyotaka * its.el (its-hiragana, its-katakana): New functions 2000-01-07 Tomura Satoru * COPYING: The file is added. * ChangeLog.1: The original ChangeLog is renamed as. * ChangeLog: Created. 2000-01-07 Tomura Satoru * Version 4.0.2 released. 2000-01-06 Tomura Satoru * Version 4.0.1 released. 2000-01-05 Tomura Satoru * Version 4.0.0 released. egg-4.2.0/ChangeLog.2002-2004000066400000000000000000000044571252027163000150060ustar00rootroot000000000000002004-11-22 Kubo Hiroshi In fj.sources, <20041122.035305.59473152.hiroshi-news@netird.ad.jp> * its/jiskana.el: New file. * Makefile.in (ITSSRCS): Add its/jiskana.el. * its-keydef.el (its-define-select-key-list): Add jiskana. 2004-07-02 SANETO Takanori * egg/anthy.el (anthy-new-environment): Use anthyipc-get-greeting only right after starting the anthy-agent process. 2004-05-21 Jun Kuriyama * Makefile.in (install-site): Put the .nosearch file into egg and its subdirectories. 2002-09-09 NIIBE Yutaka Check JIS x0213 support at compile time. * check-jisx0213.el: New file. * configure.in: Check if JIS X0213 is supported or not. * Makefile.in (TOPSRCS): Remove egg-x0213.el. (DEPS): Don't load jisx0213.el. (ITSSRCS): Removed its/aynu.el. (AYNU): New variable. Bug fix. * its/thai.el (its-thai-add-vowel, its-thai-add-tone): Bug fixes. Just call compose-string. 2002-08-26 ISHIKAWA Mutsumi , Takahiro Kambe , Katsumi Yamaoka * Makefile.in (TOPSRCS): Remove egg-util.el. Added egg-x0213.el. (ITSSRCS): Added its/greek.el its/greek.elc: Depends on its-keydef.elc. 2002-08-23 NIIBE Yutaka * AUTHORS (NIIBE Yutaka): Updated. * egg-mlh.el: Update e-mail address. * leim-list.el: Removed eval-when contstuct. Reoved "loading another" feature. (egg-activate-anthy): Added. 2002-08-23 Katsumi Yamaoka , NIIBE Yutaka * egg-util.el: Removed. 2002-08-08 NIIBE Yutaka * Makefile.in (EGGSRCS): Added anthy.el and anthyipc.el (srcdir, top_srcdir, VPATH): Added. (DEPS): Use top_srcdir. Added ANTHY support. * egg/anthy.el egg/anthyipc.el: New files. * leim-list.el: Added anthy. 2002-08-02 SAITO Takuya * its.el (its-previous-line): point-mim -> point-min (typo) 2002-07-20 SAITO Takuya * egg.el (egg-activate-keymap-after-command): set-buffer to killed buffer. 2002-05-08 Katsumi Yamaoka (cf. [mule-ja:08306]) * its.el (its-next-line, its-previous-line): New commands; substitute key definitions for `next-line' and `previous-line' with them in `its-mode-map'. egg-4.2.0/PROBLEMS000066400000000000000000000001301252027163000134150ustar00rootroot00000000000000* describe-bindings * C-k (egg-decide-before-point) * HIRAGANA & KATAKANA candidates egg-4.2.0/README000066400000000000000000000016001252027163000131320ustar00rootroot00000000000000Egg version 4.2.0 NIIBE Yutaka 2015-04-30 This is another Egg V4 release by the original author. This release requires newer Anthy (than version 0.3). The official maintainer at AIST has no interest about maintenance of this software. Official Mailing list, homepage, and FTP site are all gone now. Until the official maintainer will work again for the real release (as he once primised to me), for the time being, I keep this package running on newer Emacs and newer Anthy. This release only supports Anthy backend and it's Japanese-only. Old files are moved to the ATTIC directory. It will be removed in the next release, perhaps. In those files, SJ3 support would work, but I don't have SJ3 at hand, so, it's not guaranteed. If you need other features than that, please ask the official maintainer or use old software with old Emacs. -- egg-4.2.0/TODO000066400000000000000000000025141252027163000127470ustar00rootroot00000000000000backend assoc-list toroku-region (1) Use customize. (2) Implement user entries which were defined in EGG V3. (3) Packaging (4) Modeless Framework (5) LEIM (7) Portability (Implementation) Event/Char/Integer is different. (8) Quail Integration Something like egg-use-backend, its-use-package MENU: Incrementally generate . Provide programming interface of the data structure . MLH: Rewrite & clean up. Emacs/Quail Interface: Restrict switching language Synchronize backend/frontend language ITS: Kill, yank, delete with kill-ring in INPUT-BUFFER. Editing within a VSYL. transpose-chars Use of macro/subst. Implement following functions. its-cancel-input its-mode-help-command its-kill-line its-hiragana (input-buffer) its-katakana its-hankaku its-zenkaku its-read-current-its-string overwrite-mode, fill, vi emulator The way of customizing its-mode-map. Help-command muhenkan EGG/ITS: Katakana input support. Kanainput support. Chinese/Korean support. map change --> server select. Consider about API CONVERT: Semantics of open and close decide-first-char Consistency with other commands (delete, yank...) Help command WNN: Support Wnn6 when it becomes Free Software. WNNRPC: Chinese/Korean support. BUG: convert.el |xxxxxxx| ^---- when cursor comes on this fence-end. egg-4.2.0/egg-anthy.el000066400000000000000000000162061252027163000144670ustar00rootroot00000000000000;;; egg-anthy.el --- ANTHY Support (high level interface) in Egg ;;; Input Method Architecture ;; Copyright (C) 2002 The Free Software Initiative of Japan ;; Author: NIIBE Yutaka ;; Maintainer: NIIBE Yutaka ;; Keywords: input method ;; This file is part of EGG. ;; EGG 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 3, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (require 'egg) (require 'egg-anthyipc) (defgroup anthy nil "Anthy interface for Tamago 4." :group 'egg) (setplist 'anthy-conversion-backend '(egg-start-conversion anthy-convert egg-get-bunsetsu-source anthy-get-bunsetsu-source egg-get-bunsetsu-converted anthy-get-bunsetsu-converted egg-list-candidates anthy-get-candidates egg-decide-candidate anthy-select-candidate egg-change-bunsetsu-length anthy-resize-segment egg-end-conversion anthy-commit)) (defconst anthy-backend-alist '((Japanese ((anthy-conversion-backend))))) (egg-set-finalize-backend '(anthy-finalize-backend)) (defvar anthy-proc nil "Process of ANTHY helper agent.") ;; ::= ( ... ) ;; ;; ::= ;; ::= (defvar anthy-environment-pool nil "Environments for ANTHY kana-kanji conversion, to be used.") (defvar anthy-environments-in-use nil "Environments for ANTHY kana-kanji conversion, in use.") ;; ;; ::= ;; [ ] (defsubst anthy-make-bunsetsu (env source converted seg-no) (egg-bunsetsu-create 'anthy-conversion-backend (vector env source converted nil 0 seg-no))) (defsubst anthybunsetsu-get-env (b) (aref (egg-bunsetsu-get-info b) 0)) (defsubst anthybunsetsu-get-source (b) (aref (egg-bunsetsu-get-info b) 1)) (defsubst anthybunsetsu-get-converted (b) (aref (egg-bunsetsu-get-info b) 2)) (defsubst anthybunsetsu-get-candidates (b) (aref (egg-bunsetsu-get-info b) 3)) (defsubst anthybunsetsu-set-candidates (b z) (aset (egg-bunsetsu-get-info b) 3 z)) (defsubst anthybunsetsu-get-candidate-pos (b) (aref (egg-bunsetsu-get-info b) 4)) (defsubst anthybunsetsu-set-candidate-pos (b zp) (aset (egg-bunsetsu-get-info b) 4 zp)) (defsubst anthybunsetsu-get-seg-no (b) (aref (egg-bunsetsu-get-info b) 5)) (defun anthy-get-bunsetsu-source (b) (anthybunsetsu-get-source b)) (defun anthy-get-bunsetsu-converted (b) (let ((cands (anthybunsetsu-get-candidates b))) (if cands (nth (anthybunsetsu-get-candidate-pos b) cands) (anthybunsetsu-get-converted b)))) ;; Getting new context-descriptor, and returns environment with 'inuse' bit (defun anthy-new-environment () (if (null anthy-proc) (let ((buf (generate-new-buffer " *ANTHY*")) (process-connection-type nil)) ; avoid using pty (setq anthy-proc (start-process "anthy-agent" buf "anthy-agent" "--egg" "--utf8")) (set-process-query-on-exit-flag anthy-proc nil) (set-process-coding-system anthy-proc 'utf-8-dos 'utf-8-dos) (set-process-sentinel anthy-proc 'anthy-proc-sentinel) (set-marker-insertion-type (process-mark anthy-proc) t) (with-current-buffer buf (erase-buffer) (buffer-disable-undo)) (anthyipc-get-greeting anthy-proc))) (anthyipc-new-context anthy-proc)) ;;; XXX: Don't kill buffer (for now) so that I can debug this program (defun anthy-proc-sentinel (proc reason) ; (kill-buffer (process-buffer proc)) (setq anthy-proc nil anthy-environments-in-use nil anthy-environment-pool nil)) ;;; anthyipc-release-context (defun anthy-get-environment () "Return the ANTHY environment." (if anthy-environment-pool (let ((env (car anthy-environment-pool))) (setq anthy-environment-pool (cdr anthy-environment-pool)) (setq anthy-environments-in-use (cons env anthy-environments-in-use)) env) (let ((env (anthy-new-environment))) (setq anthy-environments-in-use (cons env anthy-environments-in-use)) env))) ;; ;; Returns list of bunsetsu ;; (defun anthy-convert (backend yomi &optional context) "Convert YOMI string to kanji, and enter conversion mode. Return the list of bunsetsu." (let ((env (anthy-get-environment))) (anthyipc-convert anthy-proc env yomi))) ;; ;; ;; (defun anthy-commit (bunsetsu-list abort) (let ((env (anthybunsetsu-get-env (car bunsetsu-list)))) (anthyipc-commit anthy-proc env (if abort 1 0)) (setq anthy-environment-pool (cons env anthy-environment-pool)) (setq anthy-environments-in-use (delq env anthy-environments-in-use)))) ;; ;; Returns ( ) ;; (defun anthy-get-candidates (bunsetsu-list prev-bunsetsu next-bunsetsu major) (let ((bunsetsu (car bunsetsu-list))) (if (anthybunsetsu-get-candidates bunsetsu) (cons (anthybunsetsu-get-candidate-pos bunsetsu) (anthybunsetsu-get-candidates bunsetsu)) (let* ((env (anthybunsetsu-get-env bunsetsu)) (seg-no (anthybunsetsu-get-seg-no bunsetsu)) (cands (anthyipc-get-candidates anthy-proc env seg-no))) (cons (anthybunsetsu-set-candidate-pos bunsetsu 0) (anthybunsetsu-set-candidates bunsetsu cands)))))) ;; Returns list of list of bunsetsu (defun anthy-select-candidate (bunsetsu-list candidate-pos prev-b next-b) (let* ((bunsetsu (car bunsetsu-list)) (candidate-list (anthybunsetsu-get-candidates bunsetsu)) (candidate (nth candidate-pos candidate-list)) (env (anthybunsetsu-get-env bunsetsu)) (seg-no (anthybunsetsu-get-seg-no bunsetsu))) (anthybunsetsu-set-candidate-pos bunsetsu candidate-pos) ;; Anthy doesn't have capability of changing another segment ;; at the selection of a segment. ;; So, just ignore the result of "SELECT-CANDIDATE" (anthyipc-select-candidate anthy-proc env seg-no candidate-pos) (list (list bunsetsu)))) ;; Returns list of list of bunsetsu (defun anthy-resize-segment (bunsetsu-list prev-b next-b len major) (let ((bunsetsu (car bunsetsu-list))) (let ((env (anthybunsetsu-get-env bunsetsu)) (seg-no (anthybunsetsu-get-seg-no bunsetsu)) (prevlen (length (anthybunsetsu-get-source bunsetsu)))) (let ((r (anthyipc-resize-segment anthy-proc env seg-no (if (< prevlen len) 0 1)))) ;; XXX: I don't know what this means, ;; but this works. Blame EGG. (list (list (car r)) nil (cdr r)))))) (defun anthy-finalize-backend () (if anthy-proc (progn (delete-process anthy-proc) (setq anthy-proc nil)))) ;;; setup (run-hooks 'anthy-load-hook) ;;;###autoload (defun egg-activate-anthy (&rest arg) "Activate ANTHY backend of Tamago 4." (apply 'egg-mode (append arg anthy-backend-alist))) ;;; egg-anthy.el ends here. egg-4.2.0/egg-anthyipc.el000066400000000000000000000143471252027163000151670ustar00rootroot00000000000000;;; egg-anthyipc.el --- ANTHY IPC Support (low level interface) in Egg ;;; Input Method Architecture ;; Copyright (C) 2002 The Free Software Initiative of Japan ;; Author: NIIBE Yutaka ;; Maintainer: NIIBE Yutaka ;; Keywords: input method ;; This file is part of EGG. ;; EGG 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 3, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (declare-function egg-error (message &rest args) "egg.el" nil) (declare-function anthy-make-bunsetsu (env source converted seg-no) "egg-anthy.el" nil) (defmacro anthyipc-call-with-proc (proc vlist send-expr &rest receive-exprs) `(let* ((buffer (process-buffer ,proc)) ,@vlist) (if (and (eq (process-status ,proc) 'run) (buffer-live-p buffer)) (with-current-buffer buffer (erase-buffer) ,send-expr (goto-char (point-max)) (process-send-region ,proc (point-min) (point-max)) ,@receive-exprs) (egg-error "process %s was killed" proc)))) (defun anthyipc-wait-line (proc) (let ((start (point))) (while (not (search-forward "\n" nil 1)) (accept-process-output proc 1000) (goto-char start)) (goto-char start))) (defun anthyipc-accept-ok (proc) (anthyipc-wait-line proc) (if (eq (char-after) ?+) ;; "+OK" (goto-char (point-max)) (egg-error "protocol error: %s" (buffer-substring (point) (point-max))))) (defun anthyipc-accept-number (proc) (anthyipc-wait-line proc) (if (eq (char-after) ?+) ;; "+OK " (progn (forward-char 4) (prog1 (read (current-buffer)) (goto-char (point-max)))) (egg-error "protocol error: %s" (buffer-substring (point) (point-max))))) (defun anthyipc-read-string () (if (eq (char-after) ?\ ) (forward-char 1)) (let ((start (point))) (while (and (char-after) (not (eq (char-after) ?\ )) (not (eq (char-after) ?\n))) (forward-char 1)) (buffer-substring start (point)))) (defun anthyipc-accept-segments (proc env seg-no-orig) (anthyipc-wait-line proc) (if (eq (char-after) ?+) (progn (forward-char 1) (if (eq (char-after) ?O) ;; "+OK" (progn (goto-char (point-max)) t) ;; "+DATA " ;; " "*N ;; "" ;; (forward-char 5) (let* ((seg-no (read (current-buffer))) (num-segments-removed (read (current-buffer))) (num-segments-inserted (read (current-buffer))) (segment-list nil) (in-loop t) (i seg-no)) (while in-loop (forward-char 1) (anthyipc-wait-line proc) (if (eq (char-after) ?\n) (setq in-loop nil) (let* ((num-candidates (read (current-buffer))) (converted (anthyipc-read-string)) (source (anthyipc-read-string)) (segment (anthy-make-bunsetsu env source converted i))) (setq i (1+ i)) (setq segment-list (cons segment segment-list))))) ;; XXX check if seg-no == seg-no-orig ;; XXX check inserted and length of segment-list??? (forward-char 1) (cons seg-no (cons num-segments-removed (reverse segment-list)))))) (egg-error "protocol error: %s" (buffer-substring (point) (point-max))))) (defun anthyipc-accept-candidates (proc) (anthyipc-wait-line proc) (if (eq (char-after) ?+) (progn ;; "+DATA " ;; ""*N ;; "" (forward-char 6) (let* ((offset (read (current-buffer))) (num-candidates (read (current-buffer))) (candidate-list nil) (in-loop t)) (while in-loop (forward-char 1) (anthyipc-wait-line proc) (if (eq (char-after) ?\n) (setq in-loop nil) (let ((candidate (anthyipc-read-string))) (setq candidate-list (cons candidate candidate-list))))) ;; XXX check num-candidates and length of candidate-list??? (forward-char 1) (cons offset (reverse candidate-list)))) (egg-error "protocol error: %s" (buffer-substring (point) (point-max))))) (defun anthyipc-get-greeting (proc) (anthyipc-call-with-proc proc () nil (anthyipc-wait-line proc) (message (buffer-substring (point-min) (1- (point-max)))))) (defun anthyipc-new-context (proc) (anthyipc-call-with-proc proc () (insert "NEW-CONTEXT INPUT=#18 OUTPUT=#18\n") (anthyipc-accept-number proc))) (defun anthyipc-release-context (proc cont) (anthyipc-call-with-proc proc () (insert (format "RELEASE-CONTEXT %d\n" cont)) (anthyipc-accept-ok proc))) ;; Returns list of bunsetsu (defun anthyipc-convert (proc cont yomi) (anthyipc-call-with-proc proc () (insert (format "CONVERT %d %s\n" cont yomi)) (let ((r (anthyipc-accept-segments proc cont 0))) (cdr (cdr r))))) (defun anthyipc-commit (proc cont cancel) (anthyipc-call-with-proc proc () (insert (format "COMMIT %d %d\n" cont cancel)) (anthyipc-accept-ok proc))) ;;; Returns list of candidate (defconst anthy-max-candidates 9999) (defun anthyipc-get-candidates (proc cont seg-no) (anthyipc-call-with-proc proc () (insert (format "GET-CANDIDATES %d %d %d %d\n" cont seg-no 0 anthy-max-candidates)) (let ((r (anthyipc-accept-candidates proc))) (cdr r)))) ;;; Returns segments (defun anthyipc-select-candidate (proc cont seg-no candidate-no) (anthyipc-call-with-proc proc () (insert (format "SELECT-CANDIDATE %d %d %d\n" cont seg-no candidate-no)) (anthyipc-accept-segments proc cont seg-no))) ;;; Returns segments (defun anthyipc-resize-segment (proc cont seg-no inc-dec) (anthyipc-call-with-proc proc () (insert (format "RESIZE-SEGMENT %d %d %d\n" cont seg-no inc-dec)) (cddr (anthyipc-accept-segments proc cont seg-no)))) (provide 'egg-anthyipc) ;;; egg-anthyipc.el ends here. egg-4.2.0/egg-cnv.el000066400000000000000000001032401252027163000141250ustar00rootroot00000000000000;;; egg-cnv.el --- Conversion Backend in ;;; -*- coding: utf-8 -*- ;;; Egg Input Method Architecture ;;;;;;;;;;;;;;;; About copyright notice ;;;;;;;;;;;;;;;; ;;; ;;; This code was originally written by NIIBE Yutaka in 1997 and 1998. ;;; It was plan to assign copyright to FSF and merged into GNU Emacs. ;;; Based on my own work, the feature of mixture of multiple languages ;;; support was added, the feature was written by an employee of PFU ;;; LIMITED. Because of that, it seems for me that a maintainer (at ;;; that time) added the copyright notice like: ;; Copyright (C) 1999,2000 PFU LIMITED ;;; But, I don't agree that this file is entirely copyrighted by PFU ;;; LIMITED. It's only for some parts, at maximum. ;;; ;;; I never assigned my code to PFU LIMITED. ;;; ;;; Although the copyright notice was wrong or not that accurate at ;;; least, everyone in the project(including the maintainer and PFU ;;; LIMITED) agreed to distribute the code under GPLv2+. ;;; ;;; Please don't do that again. Please agree and prepare your ;;; assignment to FSF when you develop something for Egg v4. ;;; ;;; -- gniibe 2014-10-31 ;;;;;;;;;;;;; ;; Author: NIIBE Yutaka ;; KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'cl)) (defvar egg-sub-mode-map-alist) ; egg.el (defvar egg-context) ; egg.el (defvar egg-last-method-name) ; egg.el (declare-function egg-remove-all-text-properties (from to &optional object) "egg.el" nil) (declare-function egg-setup-invisibility-spec () "egg.el" nil) (declare-function egg-error (message &rest args) "egg.el" nil) (declare-function egg-set-face (beg end face &optional object) "egg.el" nil) (declare-function egg-get-message (message) "egg.el" nil) (declare-function egg-do-auto-fill () "egg.el" nil) (declare-function menudiag-select (menu &optional list-all continuation return-contin) "menudiag.el" nil) (declare-function its-restart (str set-prop beginning context) "its.el" nil) (defgroup egg-conv nil "Conversion Backend Interface of Tamago 4." :group 'egg) (defcustom egg-conversion-wrap-select t "*Candidate selection wraps around to first candidate, if non-NIL. Otherwise stop at the last candidate." :group 'egg-conv :type 'boolean) (defcustom egg-conversion-auto-candidate-menu 0 "*Automatically enter the candidate selection mode at N times next/previous-candidate, if positive number N." :group 'egg-conv :type 'integer) (defcustom egg-conversion-auto-candidate-menu-show-all nil "*Enter show all candiate mode when automatic candidate selection mode, if non-NIL." :group 'egg-conv :type 'boolean) (defcustom egg-conversion-sort-by-converted-string nil "*Sort candidate list by converted string on candidate selection mode, if non-NIL." :group 'egg-conv :type 'boolean) (defcustom egg-conversion-fence-invisible nil "*Make fence marks invisible, if non-NIL." :group 'egg-conv :type 'boolean) (defcustom egg-conversion-fence-open "|" "*String of conversion fence start mark. (should not be null string)" :group 'egg-conv :type '(string :valid-regexp ".+")) (defcustom egg-conversion-fence-close "|" "*String of conversion fence end mark. (should not be null string)" :group 'egg-conv :type '(string :valid-regexp ".+")) (defcustom egg-conversion-face nil "*Face (or alist of languages and faces) of text in conversion fences." :group 'egg-conv :type '(choice face (repeat :tag "Language-Face alist" (cons :tag "Language-Face" (choice :tag "Language" (const Japanese) (const :tag "Default" t) (symbol :tag "Other")) face)))) (defcustom egg-conversion-major-separator " " "*Major clause seperator" :group 'egg-conv :type 'string) (defcustom egg-conversion-minor-separator "-" "*Minor clause seperator" :group 'egg-conv :type 'string) (defcustom egg-startup-file ".eggrc" "*Egg startup file name." :group 'egg-conv :type 'string) (defcustom egg-startup-file-search-path '("~") "*List of directories to search for egg-startup-file (default .eggrc)." :group 'egg-conv :type '(repeat string)) (defconst egg-default-conversion-backend '((egg-conversion-backend-noconv))) ;; ;; ::= ( ( ( ... )... )... ) ;; ::= ( ... ) ;; ::= ;; ::= symbol ;; (defvar egg-conversion-backend-alist nil) (make-variable-buffer-local 'egg-conversion-backend-alist) (put 'egg-conversion-backend-alist 'permanent-local t) (defun egg-set-conversion-backend (backend-alist &optional force) (let (pair lang backend-set) (while backend-alist (setq lang (caar backend-alist) backend-set (cdar backend-alist) backend-alist (cdr backend-alist) pair (assq lang egg-conversion-backend-alist)) (cond ((null pair) (setq egg-conversion-backend-alist (cons (cons lang backend-set) egg-conversion-backend-alist))) (force (setcdr pair backend-set)))))) (defun egg-get-conversion-backend () (caar (or (cadar egg-conversion-backend-alist) egg-default-conversion-backend))) (defmacro egg-bunsetsu-info () ''intangible) (defsubst egg-get-bunsetsu-info (p &optional object) (get-text-property p (egg-bunsetsu-info) object)) (defsubst egg-get-backend (p &optional object) (get-text-property p 'egg-backend object)) (defsubst egg-get-bunsetsu-last (p &optional object) (get-text-property p 'egg-bunsetsu-last object)) (defsubst egg-get-major-continue (p &optional object) (get-text-property p 'egg-major-continue object)) ;; ::= ( . ) (defsubst egg-bunsetsu-create (backend info) (cons backend info)) (defsubst egg-bunsetsu-get-backend (bunsetsu) (car bunsetsu)) (defsubst egg-bunsetsu-set-backend (bunsetsu backend) (setcar bunsetsu backend)) (defsubst egg-bunsetsu-get-info (bunsetsu) (cdr bunsetsu)) (defsubst egg-bunsetsu-set-info (bunsetsu info) (setcdr bunsetsu info)) (defun egg-conversion-fence-p () (and (egg-get-backend (point)) (get-text-property (point) 'read-only))) (defvar egg-finalize-backend-list nil) (defun egg-set-finalize-backend (func-list) (mapcar (lambda (func) (if (and func (null (memq func egg-finalize-backend-list))) (setq egg-finalize-backend-list (cons func egg-finalize-backend-list)))) func-list)) (defmacro egg-define-backend-functions (list) (cons 'progn (mapcar (lambda (def) (let* ((func (car def)) (args (nth 1 def)) (backend (car args))) (cond ((eq backend 'bunsetsu) (setq backend `(egg-bunsetsu-get-backend ,backend))) ((eq backend 'bunsetsu-list) (setq backend `(egg-bunsetsu-get-backend (car ,backend))))) `(defun ,func ,args (let ((func (get ,backend ',func))) (and func (funcall func ,@args)))))) list))) (egg-define-backend-functions ((egg-start-conversion (backend source-string context)) (egg-get-bunsetsu-source (bunsetsu)) (egg-get-bunsetsu-converted (bunsetsu)) (egg-major-bunsetsu-continue-p (bunsetsu)) (egg-list-candidates (bunsetsu-list prev-b next-b major)) (egg-decide-candidate (bunsetsu-list candidate-pos prev-b next-b)) (egg-special-candidate (bunsetsu-list prev-b next-b major type)) (egg-change-bunsetsu-length (bunsetsu-list prev-b next-b length major)) (egg-bunsetsu-combinable-p (bunsetsu next-b)) (egg-end-conversion (bunsetsu-list abort)) (egg-word-inspection (bunsetsu)) (egg-word-registration (backend source converted)))) (defun egg-finalize-backend () (run-hooks 'egg-finalize-backend-list)) (setplist 'egg-conversion-backend-noconv '(egg-start-conversion egg-start-conversion-noconv egg-get-bunsetsu-source egg-get-bunsetsu-source-noconv egg-get-bunsetsu-converted egg-get-bunsetsu-converted-noconv egg-end-conversion egg-end-conversion-noconv)) (defun egg-start-conversion-noconv (backend yomi-string context) (let ((string (copy-sequence yomi-string))) (egg-remove-all-text-properties 0 (length string) string) (list (egg-bunsetsu-create backend (vector string nil))))) (defun egg-get-bunsetsu-source-noconv (bunsetsu) (aref (egg-bunsetsu-get-info bunsetsu) 0)) (defun egg-get-bunsetsu-converted-noconv (bunsetsu) (aref (egg-bunsetsu-get-info bunsetsu) 0)) (defun egg-end-conversion-noconv (bunsetsu-list abort) nil) (defun egg-convert-region (start end &optional context) (interactive "r\ni\nP") (let ((source (buffer-substring start end)) (backend (egg-get-conversion-backend)) converted len s success) (if (>= start end) ;; nothing to do nil (delete-region start end) (egg-setup-invisibility-spec) (let ((inhibit-read-only t)) (goto-char start) (setq s (copy-sequence egg-conversion-fence-open) len (length s) start (+ start len) end (+ end len)) (set-text-properties 0 len (list 'read-only t 'egg-start t 'egg-source source) s) (if context (put-text-property 0 len 'egg-context context s)) (if egg-conversion-fence-invisible (put-text-property 0 len 'invisible 'egg s)) (insert s) (setq s (copy-sequence egg-conversion-fence-close) len (length s)) (set-text-properties 0 len '(read-only t rear-nonsticky t egg-end t) s) (if egg-conversion-fence-invisible (put-text-property 0 len 'invisible 'egg s)) (insert s) (goto-char start) (insert source) (goto-char start) (condition-case error (progn (setq converted (egg-start-conversion backend source context)) (if (null converted) (egg-error "no conversion result") (setq success t))) ((egg-error quit) (cond ((null success) (ding))))) (delete-region start end) (egg-insert-bunsetsu-list backend converted 'continue) (goto-char start) (if (null success) (egg-exit-conversion)))))) (defun egg-get-conversion-face () (if (null (consp egg-conversion-face)) egg-conversion-face (cdr (assq t egg-conversion-face)))) (defvar egg-conversion-map (let ((map (make-sparse-keymap)) (i 33)) (while (< i 127) (define-key map (vector i) 'egg-exit-conversion-unread-char) (setq i (1+ i))) (define-key map "\C-@" 'egg-decide-first-char) (define-key map [?\C-\ ] 'egg-decide-first-char) (define-key map "\C-a" 'egg-beginning-of-conversion-buffer) (define-key map "\C-b" 'egg-backward-bunsetsu) (define-key map "\C-c" 'egg-abort-conversion) (define-key map "\C-e" 'egg-end-of-conversion-buffer) (define-key map "\C-f" 'egg-forward-bunsetsu) (define-key map "\C-h" 'egg-help-command) (define-key map "\C-i" 'egg-shrink-bunsetsu-major) (define-key map "\C-k" 'egg-decide-before-point) ;; (define-key map "\C-l" 'egg-exit-conversion) ; Don't override C-L (define-key map "\C-m" 'egg-exit-conversion) (define-key map "\C-n" 'egg-next-candidate-major) (define-key map "\C-o" 'egg-enlarge-bunsetsu-major) (define-key map "\C-p" 'egg-previous-candidate-major) (define-key map "\C-r" 'egg-reconvert-bunsetsu) (define-key map "\C-t" 'egg-toroku-bunsetsu) (define-key map "\C-v" 'egg-inspect-bunsetsu) (define-key map "\M-i" 'egg-shrink-bunsetsu-minor) (define-key map "\M-n" 'egg-next-candidate-minor) (define-key map "\M-o" 'egg-enlarge-bunsetsu-minor) (define-key map "\M-p" 'egg-previous-candidate-minor) (define-key map "\M-r" 'egg-reconvert-bunsetsu-from-source) (define-key map "\M-s" 'egg-select-candidate-major) (define-key map "\M-v" 'egg-toggle-inspect-mode) (define-key map "\M-z" 'egg-select-candidate-minor) (define-key map "\e\C-s" 'egg-select-candidate-list-all-major) (define-key map "\e\C-z" 'egg-select-candidate-list-all-minor) (define-key map [return] 'egg-exit-conversion) (define-key map [right] 'egg-forward-bunsetsu) (define-key map [left] 'egg-backward-bunsetsu) (define-key map [up] 'egg-previous-candidate) (define-key map [down] 'egg-next-candidate) (define-key map [backspace] 'egg-abort-conversion) (define-key map [clear] 'egg-abort-conversion) (define-key map [delete] 'egg-abort-conversion) (define-key map " " 'egg-next-candidate) (define-key map "/" 'egg-exit-conversion) (define-key map "\M-h" 'egg-hiragana) (define-key map "\M-k" 'egg-katakana) (define-key map "\M-P" 'egg-pinyin) (define-key map "\M-Z" 'egg-zhuyin) (define-key map "\M-H" 'egg-hangul) map) "Keymap for EGG Conversion mode.") (fset 'egg-conversion-map egg-conversion-map) (defvar egg-conversion-mode nil) (make-variable-buffer-local 'egg-conversion-mode) (put 'egg-conversion-mode 'permanent-local t) (or (assq 'egg-conversion-mode egg-sub-mode-map-alist) (setq egg-sub-mode-map-alist (cons '(egg-conversion-mode . egg-conversion-map) egg-sub-mode-map-alist))) (defun egg-conversion-enter/leave-fence (&optional old new) (setq egg-conversion-mode (egg-conversion-fence-p))) (add-hook 'egg-enter/leave-fence-hook 'egg-conversion-enter/leave-fence) (defun egg-exit-conversion-unread-char () (interactive) (setq egg-context (egg-exit-conversion) unread-command-events (list last-command-event) this-command 'egg-use-context)) (defun egg-make-bunsetsu (backend bunsetsu last) (let* ((converted (copy-sequence (egg-get-bunsetsu-converted bunsetsu))) (continue (and (null last) (egg-major-bunsetsu-continue-p bunsetsu))) (face (egg-get-conversion-face)) len len1) (setq len1 (length converted)) (or (eq last t) (setq converted (concat converted (if continue egg-conversion-minor-separator egg-conversion-major-separator)))) (setq len (length converted)) (egg-remove-all-text-properties 0 len converted) (add-text-properties 0 len (list 'read-only t (egg-bunsetsu-info) bunsetsu 'egg-backend backend 'egg-bunsetsu-last last 'egg-major-continue continue 'point-entered 'egg-enter/leave-fence 'point-left 'egg-enter/leave-fence 'modification-hooks '(egg-modify-fence)) converted) (if face (egg-set-face 0 len1 face converted)) converted)) (defun egg-insert-bunsetsu-list (backend bunsetsu-list &optional last) (let ((len (length bunsetsu-list))) (funcall 'insert (mapconcat (lambda (b) (setq len (1- len)) (egg-make-bunsetsu backend b (and (= len 0) last))) bunsetsu-list nil)))) (defun egg-beginning-of-conversion-buffer (n) (interactive "p") (cond ((<= n 0) (egg-end-of-conversion-buffer 1)) ((null (get-text-property (1- (point)) 'egg-start)) (goto-char (previous-single-property-change (point) 'egg-start))))) (defun egg-end-of-conversion-buffer (n) (interactive "p") (cond ((<= n 0) (egg-beginning-of-conversion-buffer 1)) (t (goto-char (next-single-property-change (point) 'egg-end)) (backward-char)))) (defun egg-backward-bunsetsu (n) (interactive "p") (while (and (> n 0) (null (get-text-property (1- (point)) 'egg-start))) (backward-char) (setq n (1- n))) (if (> n 0) (signal 'beginning-of-buffer nil))) (defun egg-forward-bunsetsu (n) (interactive "p") (while (and (>= n 0) (null (get-text-property (point) 'egg-end))) (forward-char) (setq n (1- n))) (backward-char) (if (>= n 0) (signal 'end-of-buffer nil))) (defun egg-get-bunsetsu-tail (b) (nth (1- (length b)) b)) (defun egg-previous-bunsetsu-point (p &optional n obj lim) (or n (setq n 1)) (while (> n 0) (setq p (previous-single-property-change p (egg-bunsetsu-info) obj lim) n (1- n))) p) (defun egg-next-bunsetsu-point (p &optional n obj lim) (or n (setq n 1)) (while (and p (> n 0)) (setq p (next-single-property-change p (egg-bunsetsu-info) obj) n (1- n))) (or p lim)) (defun egg-get-previous-bunsetsu (p) (and (null (egg-get-bunsetsu-last (1- p))) (egg-get-bunsetsu-info (1- p)))) (defun egg-get-previous-major-bunsetsu (p) (let ((prev (egg-get-previous-bunsetsu p)) bunsetsu) (while prev (setq bunsetsu (cons prev bunsetsu) p (egg-previous-bunsetsu-point p) prev (and (egg-get-major-continue (1- p)) (egg-get-bunsetsu-info (1- p))))) bunsetsu)) (defun egg-get-next-bunsetsu (p) (and (null (egg-get-bunsetsu-last p)) (egg-get-bunsetsu-info (egg-next-bunsetsu-point p)))) (defun egg-get-major-bunsetsu (p) (let ((next (egg-get-bunsetsu-info p)) bunsetsu) (while next (setq bunsetsu (cons next bunsetsu) p (egg-next-bunsetsu-point p) next (and (egg-get-major-continue (1- p)) (egg-get-bunsetsu-info p)))) (nreverse bunsetsu))) (defsubst egg-get-major-bunsetsu-source (list) (mapconcat 'egg-get-bunsetsu-source list nil)) (defsubst egg-get-major-bunsetsu-converted (list) (mapconcat 'egg-get-bunsetsu-converted list nil)) (defvar egg-inspect-mode nil "*Display clause information on candidate selection, if non-NIL.") (defun egg-toggle-inspect-mode () (interactive) (if (setq egg-inspect-mode (not egg-inspect-mode)) (egg-inspect-bunsetsu t))) (defun egg-inspect-bunsetsu (&optional quiet) (interactive) (or (egg-word-inspection (egg-get-bunsetsu-info (point))) quiet (beep))) (defvar egg-candidate-selection-info nil) (make-variable-buffer-local 'egg-candidate-selection-info) (defvar egg-candidate-selection-major t) (make-variable-buffer-local 'egg-candidate-selection-major) (defsubst egg-set-candsel-info (b major) (setq egg-candidate-selection-info (list (car b) (cadr b) (caddr b) major))) (defsubst egg-candsel-last-bunsetsu () (car egg-candidate-selection-info)) (defsubst egg-candsel-last-prev-b () (nth 1 egg-candidate-selection-info)) (defsubst egg-candsel-last-next-b () (nth 2 egg-candidate-selection-info)) (defsubst egg-candsel-last-major () (nth 3 egg-candidate-selection-info)) (defun egg-major-bunsetsu-head-p (head bunsetsu) (while (and head (eq (car head) (car bunsetsu))) (setq head (cdr head) bunsetsu (cdr bunsetsu))) (null head)) (defun egg-major-bunsetsu-tail-p (tail bunsetsu) (egg-major-bunsetsu-head-p tail (nthcdr (- (length bunsetsu) (length tail)) bunsetsu))) (defun egg-get-candsel-target-major () (let ((bunsetsu (egg-get-major-bunsetsu (point))) (prev-b (egg-get-previous-major-bunsetsu (point))) next-b) (cond ((and (egg-candsel-last-major) (egg-major-bunsetsu-tail-p (egg-candsel-last-prev-b) prev-b) (egg-major-bunsetsu-head-p (append (egg-candsel-last-bunsetsu) (egg-candsel-last-next-b)) bunsetsu)) (setq bunsetsu (egg-candsel-last-bunsetsu) prev-b (egg-candsel-last-prev-b) next-b (egg-candsel-last-next-b))) ((null (egg-get-bunsetsu-last (egg-next-bunsetsu-point (point) (1- (length bunsetsu))))) (setq next-b (egg-get-major-bunsetsu (egg-next-bunsetsu-point (point) (length bunsetsu)))))) (setq egg-candidate-selection-major t) (list bunsetsu prev-b next-b t))) (defun egg-get-candsel-target-minor () (let* ((bunsetsu (list (egg-get-bunsetsu-info (point)))) (prev-b (egg-get-previous-bunsetsu (point))) (next-b (egg-get-next-bunsetsu (point)))) (setq egg-candidate-selection-major nil) (list bunsetsu (and prev-b (list prev-b)) (and next-b (list next-b)) nil))) (defun egg-check-candsel-target (b prev-b next-b major) (if major (and (egg-major-bunsetsu-tail-p prev-b (egg-get-previous-major-bunsetsu (point))) (let* ((cur-b (egg-get-major-bunsetsu (point))) (next-p (egg-next-bunsetsu-point (point) (length cur-b)))) (egg-major-bunsetsu-head-p (append b next-b) (append cur-b (and (null (egg-get-bunsetsu-last (1- next-p))) (egg-get-major-bunsetsu next-p)))))) (and (eq (egg-get-bunsetsu-info (point)) (car b)) (eq (egg-get-previous-bunsetsu (point)) (car prev-b)) (eq (egg-get-next-bunsetsu (point)) (car next-b))))) (defun egg-insert-new-bunsetsu (b tail new-b) (let* ((backend (egg-get-backend (point))) (start (egg-previous-bunsetsu-point (point) (length (cadr new-b)))) (end (egg-next-bunsetsu-point (point) (+ (length b) (length tail)))) (last (egg-get-bunsetsu-last (1- end)))) (delete-region start end) (egg-insert-bunsetsu-list backend (append (cadr new-b) (car new-b) (caddr new-b)) last) (goto-char (egg-next-bunsetsu-point start (length (cadr new-b)))) (if egg-inspect-mode (egg-inspect-bunsetsu t)))) (defun egg-next-candidate (n) (interactive "p") (if egg-candidate-selection-major (egg-next-candidate-major n) (egg-next-candidate-minor n))) (defun egg-next-candidate-major (n) (interactive "p") (apply 'egg-next-candidate-internal n (egg-get-candsel-target-major))) (defun egg-next-candidate-minor (n) (interactive "p") (apply 'egg-next-candidate-internal n (egg-get-candsel-target-minor))) (defun egg-previous-candidate (n) (interactive "p") (if egg-candidate-selection-major (egg-previous-candidate-major n) (egg-previous-candidate-minor n))) (defun egg-previous-candidate-major (n) (interactive "p") (apply 'egg-next-candidate-internal (- n) (egg-get-candsel-target-major))) (defun egg-previous-candidate-minor (n) (interactive "p") (apply 'egg-next-candidate-internal (- n) (egg-get-candsel-target-minor))) (defvar egg-candidate-select-counter 1) (make-variable-buffer-local 'egg-candidate-select-counter) (defun egg-next-candidate-internal (n b prev-b next-b major) (if (eq last-command (if major 'egg-candidate-major 'egg-candidate-minor)) (setq egg-candidate-select-counter (1+ egg-candidate-select-counter)) (setq egg-candidate-select-counter 1)) (if (= egg-candidate-select-counter egg-conversion-auto-candidate-menu) (egg-select-candidate-internal nil egg-conversion-auto-candidate-menu-show-all b prev-b next-b major) (setq this-command (if major 'egg-candidate-major 'egg-candidate-minor)) (let ((inhibit-read-only t) new-b candidates nitem i beep) (setq candidates (egg-list-candidates b prev-b next-b major)) (if (null candidates) (setq beep t) (setq i (+ n (car candidates)) nitem (length (cdr candidates))) (cond ((< i 0) ; go backward as if it is ring (setq i (% i nitem)) (if (< i 0) (setq i (+ i nitem)))) ((< i nitem)) ; OK (egg-conversion-wrap-select ; go backward as if it is ring (setq i (% i nitem))) (t ; don't go forward (setq i (1- nitem) beep t))) (setq new-b (egg-decide-candidate b i prev-b next-b)) (egg-set-candsel-info new-b major) (egg-insert-new-bunsetsu b (caddr new-b) new-b)) (if beep (ding))))) (defun egg-numbering-item (list) (let ((n -1)) (mapcar (lambda (item) (cons item (setq n (1+ n)))) list))) (defun egg-sort-item (list sort) (if (eq (null sort) (null egg-conversion-sort-by-converted-string)) list (sort list (lambda (a b) (string< (car a) (car b)))))) (defun egg-select-candidate-major (sort) (interactive "P") (apply 'egg-select-candidate-internal sort nil (egg-get-candsel-target-major))) (defun egg-select-candidate-minor (sort) (interactive "P") (apply 'egg-select-candidate-internal sort nil (egg-get-candsel-target-minor))) (defun egg-select-candidate-list-all-major (sort) (interactive "P") (apply 'egg-select-candidate-internal sort t (egg-get-candsel-target-major))) (defun egg-select-candidate-list-all-minor (sort) (interactive "P") (apply 'egg-select-candidate-internal sort t (egg-get-candsel-target-minor))) (defun egg-select-candidate-internal (sort all b prev-b next-b major) (let ((prompt (egg-get-message 'candidate)) new-b candidates pos clist item-list i) (setq candidates (egg-list-candidates b prev-b next-b major)) (if (null candidates) (ding) (setq pos (car candidates) clist (cdr candidates) item-list (egg-sort-item (egg-numbering-item clist) sort) i (menudiag-select (list 'menu prompt item-list) all (list (assq (nth pos clist) item-list)))) (if (or (null (egg-conversion-fence-p)) (null (egg-check-candsel-target b prev-b next-b major))) (error "Fence was already modified") (let ((inhibit-read-only t)) (setq new-b (egg-decide-candidate b i prev-b next-b)) (egg-set-candsel-info new-b major) (egg-insert-new-bunsetsu b (caddr new-b) new-b)))))) (defun egg-hiragana (&optional minor) (interactive "P") (if (null minor) (apply 'egg-special-convert this-command (egg-get-candsel-target-major)) (apply 'egg-special-convert this-command (egg-get-candsel-target-minor)))) (defalias 'egg-katakana 'egg-hiragana) (defalias 'egg-pinyin 'egg-hiragana) (defalias 'egg-zhuyin 'egg-hiragana) (defalias 'egg-hangul 'egg-hiragana) (defun egg-special-convert (type b prev-b next-b major) (let ((inhibit-read-only t) (new-b (egg-special-candidate b prev-b next-b major type))) (if (null new-b) (ding) (egg-set-candsel-info new-b major) (egg-insert-new-bunsetsu b (caddr new-b) new-b)))) (defun egg-enlarge-bunsetsu-major (n) (interactive "p") (egg-enlarge-bunsetsu-internal n t)) (defun egg-enlarge-bunsetsu-minor (n) (interactive "p") (egg-enlarge-bunsetsu-internal n nil)) (defun egg-shrink-bunsetsu-major (n) (interactive "p") (egg-enlarge-bunsetsu-internal (- n) t)) (defun egg-shrink-bunsetsu-minor (n) (interactive "p") (egg-enlarge-bunsetsu-internal (- n) nil)) (defun egg-enlarge-bunsetsu-internal (n major) (let* ((inhibit-read-only t) (b (if major (egg-get-major-bunsetsu (point)) (list (egg-get-bunsetsu-info (point))))) (prev-b (if major (egg-get-previous-major-bunsetsu (point)) (let ((pb (egg-get-previous-bunsetsu (point)))) (and pb (list pb))))) (s1 (egg-get-major-bunsetsu-source b)) (s1len (length s1)) s2 s2len next-b new-b nchar i beep) (let* ((end (egg-next-bunsetsu-point (point) (length b))) (last (egg-get-bunsetsu-last (1- end)))) (while (null last) (setq next-b (cons (egg-get-bunsetsu-info end) next-b) last (egg-get-bunsetsu-last end) end (egg-next-bunsetsu-point end))) (setq next-b (nreverse next-b))) (setq n (+ n s1len) s2 (concat s1 (egg-get-major-bunsetsu-source next-b)) s2len (length s2)) (cond ((<= n 0) (setq beep t nchar (and (/= s1len 1) (length s1)))) ((> n s2len) (setq beep t nchar (and (/= s2len s1len) (length s2)))) (t (setq nchar n))) (when nchar (setq next-b (nconc b next-b) i (length (egg-get-bunsetsu-source (car next-b)))) (while (< i nchar) (setq next-b (cdr next-b) i (+ i (length (egg-get-bunsetsu-source (car next-b)))))) (setq next-b (prog1 (cdr next-b) (setcdr next-b nil)) new-b (egg-change-bunsetsu-length b prev-b next-b nchar major)) (if (null new-b) (setq beep t) (egg-insert-new-bunsetsu b (and (caddr new-b) next-b) new-b))) (if beep (ding)))) (defun egg-reconvert-bunsetsu (n) (interactive "P") (egg-reconvert-bunsetsu-internal n 'egg-get-bunsetsu-converted)) (defun egg-reconvert-bunsetsu-from-source (n) (interactive "P") (egg-reconvert-bunsetsu-internal n 'egg-get-bunsetsu-source)) (defun egg-reconvert-bunsetsu-internal (n func) (let* ((inhibit-read-only t) (backend (egg-get-backend (point))) (source (funcall func (egg-get-bunsetsu-info (point)))) (p (point)) (last (egg-get-bunsetsu-last (point))) new prev-b next-b) (if (or (null backend) (null (setq new (egg-start-conversion backend source nil)))) (ding) (delete-region p (egg-next-bunsetsu-point p)) (setq next-b (egg-get-bunsetsu-info (point))) (if (and (equal (egg-get-backend p) backend) (eq (egg-bunsetsu-get-backend next-b) (egg-bunsetsu-get-backend (car new))) (egg-bunsetsu-combinable-p (egg-get-bunsetsu-tail new) next-b)) (setq last nil) (setq last (or (eq last t) 'continue))) (egg-insert-bunsetsu-list backend new last) (goto-char p) (setq prev-b (egg-get-bunsetsu-info (1- p))) (if prev-b (progn (if (and (equal (egg-get-backend (1- p)) backend) (eq (egg-bunsetsu-get-backend prev-b) (egg-bunsetsu-get-backend (car new))) (egg-bunsetsu-combinable-p prev-b (car new))) (setq last nil) (setq last (or (eq last t) 'continue))) (setq backend (egg-get-backend (1- p))) (delete-region (egg-previous-bunsetsu-point p) p) (egg-insert-bunsetsu-list backend (list prev-b) last)))))) (defun egg-decide-before-point () (interactive) (let* ((inhibit-read-only t) (start (if (get-text-property (1- (point)) 'egg-start) (point) (previous-single-property-change (point) 'egg-start))) (end (if (get-text-property (point) 'egg-end) (point) (next-single-property-change (point) 'egg-end))) (decided (buffer-substring start (point))) (undecided (buffer-substring (point) end)) (len (length decided)) (i 0) bunsetsu source context) (delete-region (previous-single-property-change start 'egg-start nil (point-min)) (next-single-property-change end 'egg-end nil (point-max))) (while (< i len) (setq bunsetsu (nconc bunsetsu (list (egg-get-bunsetsu-info i decided))) i (egg-next-bunsetsu-point i 1 decided len)) (if (or (= i len) (egg-get-bunsetsu-last (1- i) decided)) (progn (insert (mapconcat 'egg-get-bunsetsu-converted bunsetsu nil)) (setq context (cons (cons (egg-bunsetsu-get-backend (car bunsetsu)) (egg-end-conversion bunsetsu nil)) context) bunsetsu nil)))) (setq len (length undecided)) (if (= len 0) (progn (egg-do-auto-fill) (run-hooks 'input-method-after-insert-chunk-hook) context) (setq i 0) (while (< i len) (setq bunsetsu (egg-get-bunsetsu-info i undecided) source (cons (egg-get-bunsetsu-source bunsetsu) source)) (setq i (egg-next-bunsetsu-point i 1 undecided len))) (its-restart (apply 'concat (nreverse source)) t t context)))) (defun egg-decide-first-char () (interactive) (let* ((inhibit-read-only t) (start (if (get-text-property (1- (point)) 'egg-start) (point) (previous-single-property-change (point) 'egg-start))) (end (if (get-text-property (point) 'egg-end) (point) (next-single-property-change (point) 'egg-end))) (bunsetsu (egg-get-bunsetsu-info start))) (delete-region (previous-single-property-change start 'egg-start nil (point-min)) (next-single-property-change end 'egg-end)) (egg-end-conversion (list bunsetsu) nil) (insert (aref (egg-get-bunsetsu-converted bunsetsu) 0)))) (defun egg-exit-conversion () (interactive) (if (egg-conversion-fence-p) (progn (goto-char (next-single-property-change (point) 'egg-end)) (egg-decide-before-point)))) (defun egg-abort-conversion () (interactive) (let ((inhibit-read-only t) source context) (goto-char (previous-single-property-change (if (get-text-property (1- (point)) 'egg-start) (point) (previous-single-property-change (point) 'egg-start)) 'egg-start nil (point-min))) (setq source (get-text-property (point) 'egg-source) context (get-text-property (point) 'egg-context)) (delete-region (point) (next-single-property-change (next-single-property-change (point) 'egg-end) 'egg-end)) (its-restart source nil nil context))) (defun egg-toroku-bunsetsu () (interactive) (let* ((p (point)) (lang nil) (s "") bunsetsu str yomi last) (while (null last) (setq bunsetsu (egg-get-bunsetsu-info p) str (concat str (egg-get-bunsetsu-converted bunsetsu)) yomi (concat yomi (egg-get-bunsetsu-source bunsetsu)) last (egg-get-bunsetsu-last p) p (egg-next-bunsetsu-point p))) (while (equal s "") (setq s (read-multilingual-string (egg-get-message 'register-str) str egg-last-method-name)) (and (equal s "") (ding))) (egg-toroku-string s nil yomi lang (egg-bunsetsu-get-backend bunsetsu)))) (defun egg-toroku-region (start end) (interactive "r\nP") (egg-toroku-string (buffer-substring start end) nil nil nil nil)) (defun egg-toroku-string (str &optional yomi guess lang backend) (let (result) (if (= (length str) 0) (egg-error "Egg word registration: null string")) (or yomi (setq yomi "")) (while (equal yomi "") (setq yomi (read-multilingual-string (format (egg-get-message 'register-yomi) str) guess egg-last-method-name)) (and (equal yomi "") (ding))) (and (null backend) (null (setq backend (egg-get-conversion-backend))) (egg-error "Egg word registration: cannot decide backend")) (setq result (egg-word-registration backend str yomi)) (if result (apply 'message (egg-get-message 'registered) str yomi result) (beep)))) (defun egg-conversion-mode () "\\{egg-conversion-map}" ;; dummy function to get docstring ) (defun egg-help-command () "Display documentation for EGG Conversion mode." (interactive) (with-output-to-temp-buffer "*Help*" (princ "EGG Conversion mode:\n") (princ (documentation 'egg-conversion-mode)) (help-setup-xref (cons #'help-xref-mode (current-buffer)) (called-interactively-p 'any)))) (provide 'egg-cnv) ;;; egg-cnv.el ends here egg-4.2.0/egg-mlh.el000066400000000000000000000366631252027163000141350ustar00rootroot00000000000000;;; egg-mlh.el --- Modeless Conversion Facility;;; -*- coding: utf-8 -*- ;;; in Egg Input Method Architecture ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; Maintainer: NIIBE Yutaka ;; Keywords: input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (defvar egg-mode-preference); egg.el as custom variable (defvar egg-conversion-backend-alist); egg-cnv.el (declare-function egg-do-auto-fill () "egg.el" nil) (declare-function egg-convert-region (start end &optional context) "egg.el" nil) (declare-function its-select-hiragana (&optional temporally mode-line-unchange) "its.el" nil) (declare-function its-translate-region-internal (start end) "its.el" nil) (defvar mlh-default-backend "anthy") ;;; Dynamic binding variables. (defvar mlh-beg nil) (defvar mlh-candidates nil) (defvar mlh-end-marker nil) (defvar henkan-begin nil) (defvar current-candidate) (defvar number-of-candidates) (defvar inhibit-henkan) (defun mlh-space-bar-backward-henkan () "If the character preceding point is / (slash), Do `mlh-backward-henkan'. Then, invoke appropriate conversion, if needed. Or else, execute command that space-bar invokes usually." (interactive) (let ((henkan-begin nil) (inhibit-henkan t) (its-disable-special-action t)) (if (null (assq 'Japanese egg-conversion-backend-alist)) (progn (setq egg-mode-preference nil) (activate-input-method (concat "japanese-egg-" mlh-default-backend))) ;; force to Japanese (its-select-hiragana)) (mlh-backward-henkan) (if henkan-begin (if (or inhibit-henkan (= henkan-begin (point))) (egg-do-auto-fill) (progn (message "Converting...") (sit-for 0) (egg-convert-region henkan-begin (point)) (message "") )) (setq this-command 'self-insert-command) (call-interactively 'self-insert-command)))) (defvar mlh-punctuations nil) (if mlh-punctuations () (setq mlh-punctuations "!()?;:")) (defvar mlh-conversion-scheme-table '( (?- . mlh-kanji) ; (?` . mlh-ltn) ; (?' . mlh-ltn) ; (?, . mlh-ltn) (?, . mlh-kanji) (?. . mlh-kanji) ; (?^ . mlh-ltn) ; (?~ . mlh-ltn) ; (?\". mlh-ltn) ; (?@ . mlh-ltn) ; (?< . mlh-ltn) ; (?> . mlh-ltn) (?a . mlh-kanji) ; (?b . mlh-) (?c . mlh-capitalize) (?d . mlh-user-defined-conversion) (?e . mlh-kanji) (?f . mlh-hiragana) (?g . mlh-greek) (?i . mlh-kanji) (?j . mlh-jis-code) (?k . mlh-katakana) ; (?l . mlh-ligature) ; (?m . mlh-) (?n . mlh-kanji) ; (?n . mlh-no-conversion) (?o . mlh-kanji) (?p . mlh-upcase-letter) (?q . mlh-quit) ; (?r . mlh-) (?s . mlh-small-letter) (?u . mlh-kanji) ; (?v . mlh-) (?w . mlh-white-space) (?x . mlh-execute) ; (?y . mlh-) (?H . mlh-hiragana-to-kanji) (?L . mlh-lisp-expression) (?W . mlh-zenkaku-white) (?X . mlh-exit) (?Z . mlh-zenkaku) )) (defun mlh-zenkaku-white () (forward-char -1) (skip-chars-backward "0-9") (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (backward-delete-char 2) (let* ((str (buffer-substring mlh-beg (point))) (val (string-to-number str))) (delete-region mlh-beg (point)) (if (= val 0) (setq val 1)) (while (> val 0) (insert " ") (setq val (1- val)))) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defun mlh-exit () (goto-char mlh-end-marker) (backward-delete-char 2) (insert " ") (setq henkan-begin (point))) (defun mlh-upcase-letter () (forward-char -1) (skip-chars-backward "a-zA-Z0-9") (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (backward-delete-char 2) (upcase-region mlh-beg (point)) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defun mlh-capitalize () (forward-char -1) (skip-chars-backward "a-zA-Z1-9") (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (backward-delete-char 2) (capitalize-region mlh-beg (point)) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defun mlh-jis-code () (forward-char -1) (skip-chars-backward "0-9a-fA-F") (mlh-backward-henkan) (if (/= (- mlh-end-marker (point)) 6) (error "invalid length")) (setq mlh-beg (point)) (let ((val (car (read-from-string (concat "?\\x" (buffer-substring mlh-beg (- mlh-end-marker 2))))))) (insert (make-char 'japanese-jisx0208 (/ val 256) (% val 256))) (delete-region (point) mlh-end-marker)) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defun mlh-lisp-expression () (forward-char -1) (let ((stab (syntax-table))) (unwind-protect (progn (set-syntax-table emacs-lisp-mode-syntax-table) (forward-sexp -1)) (set-syntax-table stab))) (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (backward-delete-char 2) (let* ((exp-str (buffer-substring mlh-beg (point))) (exp (car (read-from-string exp-str))) (result (eval exp))) (delete-region mlh-beg (point)) (insert (format "%s" result))) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defun mlh-quit () (goto-char mlh-end-marker) (backward-delete-char 2) (setq henkan-begin (point))) (defun mlh-no-conversion () (forward-char -1) (skip-chars-backward "\041-\056\060-\176") (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (backward-delete-char 2) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (fset 'mlh-small-letter (symbol-function 'mlh-no-conversion)) (defun mlh-white-space () (forward-char -1) (skip-chars-backward "0-9") (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (backward-delete-char 2) (let* ((str (buffer-substring mlh-beg (point))) (val (string-to-number str))) (delete-region mlh-beg (point)) (if (= val 0) (setq val 1)) (insert (make-string val ?\ ))) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defun mlh-execute () (forward-char -1) (if (fboundp 'mlh-userdef-function) (mlh-userdef-function) (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (backward-delete-char 2) (if (null henkan-begin) (setq henkan-begin mlh-beg)))) (defun mlh-backward-henkan () "For each words seperated by / (slash), do conversion. Accoding to a character preceding slash, conversion scheme are selected. CHAR. MNEMONIC CONVERSION SCHEME H Hiragana to kanji Convert Hiragana to Kanji L Lisp Evaluate as Emacs-Lisp expression W zenkaku White space Insert Zenkaku spaces X eXit Quit going backward, insert space Z Zenkaku Convert to Zenkaku c Capitalize Capitalize d user Definition Convert with user definition table f Firagana ?? Convert to Hiragana g Greek letter Convert to single greek letter j Jis-code Convert to character which has code k Katakana Convert to Katakana l Ligature Ligature (not implemented yet) p uPcase letter uPcase q Quit Quit going backward s Small letter No conversion w White space Insert spaces x eXecute Call user defined function OTHERWISE Convert to KANJI " (if (eq (preceding-char) ?/) (let ((mlh-end-marker (point-marker)) (char nil) (mlh-beg nil)) (set-marker-insertion-type mlh-end-marker t) (unwind-protect (let (scheme) (backward-char 1) (setq char (preceding-char)) (cond ((setq scheme (assq char mlh-conversion-scheme-table)) (funcall (cdr scheme))) (t (goto-char mlh-end-marker))) (if mlh-beg (progn (goto-char mlh-beg) (mlh-do-spacing) (goto-char mlh-end-marker)))) (set-marker mlh-end-marker nil))))) (defvar mlh-syntax-table nil "Syntax table of mlh, which are used to determine spacing.") (if mlh-syntax-table () (setq mlh-syntax-table (copy-syntax-table emacs-lisp-mode-syntax-table)) (modify-syntax-entry ?! "." mlh-syntax-table) (modify-syntax-entry ?$ "'" mlh-syntax-table) (modify-syntax-entry ?% "'" mlh-syntax-table) (modify-syntax-entry ?& "'" mlh-syntax-table) (modify-syntax-entry ?{ "(}" mlh-syntax-table) (modify-syntax-entry ?} "){" mlh-syntax-table) ) ;;; XXX RTFM, gniibe! (defvar mlh-space-control '( (("al".?w).("al".?w)) (("al".?w).("al".?_)) (("al".?w).("Hj|".?e)) (("al".?w).("Cj|".?e)) (("al".?_).("al".?w)) (("al".?_).("al".?_)) (("al".?_).("Hj|".?e)) (("al".?_).("Cj|".?e)) (("al".?.).("al".?w)) (("al".?.).("al".?_)) (("al".?_).("Hj|".?e)) (("al".?_).("Cj|".?e)) (("Hj|".?e).("al".?w)) (("Cj|".?e).("al".?w)) (("Hj|".?e).("al".?_)) (("Cj|".?e).("al".?_)) ) "Alist that determines inserting space.") (defun mlh-do-spacing () "Arrange spacing as you like." (if (bobp) () (let ((s-tab (syntax-table)) s-pc s-fc c-pc c-fc) (unwind-protect (progn (set-syntax-table mlh-syntax-table) (setq s-pc (char-syntax (preceding-char)) s-fc (char-syntax (following-char)))) (set-syntax-table s-tab)) (setq c-pc (category-set-mnemonics (char-category-set (preceding-char))) c-fc (category-set-mnemonics (char-category-set (following-char)))) (if (member (cons (cons c-pc s-pc) (cons c-fc s-fc)) mlh-space-control) (progn (and henkan-begin (>= henkan-begin (point)) (setq henkan-begin (1+ henkan-begin))) (insert " ")))))) (defvar mlh-select-mode-map (make-keymap)) ;;; acutually this map is not necessary now. for future extention (defvar mlh-select-mode-esc-map (make-keymap)) (define-key mlh-select-mode-map [t] 'undefined) (define-key mlh-select-mode-esc-map [t] 'undefined) (let ((ch 32)) (while (< ch 127) (define-key mlh-select-mode-map (char-to-string ch) 'mlh-select-kakutei-and-self-insert) (setq ch (1+ ch)))) (define-key mlh-select-mode-map "\C-m" 'mlh-select-kakutei-and-self-insert) (define-key mlh-select-mode-map "\C-b" 'mlh-select-prev-candidate) (define-key mlh-select-mode-map "\C-f" 'mlh-select-next-candidate) (define-key mlh-select-mode-map "\177" 'mlh-select-prev-candidate) (define-key mlh-select-mode-map " " 'mlh-select-next-candidate) (define-key mlh-select-mode-map "/" 'mlh-select-kakutei) (if (eq window-system 'x) (let () (define-key mlh-select-mode-map [return] 'mlh-select-kakutei-and-self-insert) (define-key mlh-select-mode-map [delete] 'mlh-select-prev-candidate) )) (defun mlh-select-insert-candidate (n) (delete-region mlh-beg (point)) (insert (nth n mlh-candidates))) (defun mlh-select-prev-candidate () (interactive) (setq current-candidate (1- current-candidate)) (if (< current-candidate 0) (setq current-candidate (1- number-of-candidates))) (mlh-select-insert-candidate current-candidate)) (defun mlh-select-next-candidate () (interactive) (setq current-candidate (1+ current-candidate)) (if (>= current-candidate number-of-candidates) (setq current-candidate 0)) (mlh-select-insert-candidate current-candidate)) (defun mlh-recursive-edit-select () (mlh-select-insert-candidate 0) (and (boundp 'disable-undo) (setq disable-undo t)) (let ((old-local-map (current-local-map)) (number-of-candidates (length mlh-candidates)) (current-candidate 0)) (use-local-map mlh-select-mode-map) (recursive-edit) (use-local-map old-local-map))) (defun mlh-select-kakutei-and-self-insert () (interactive) (setq unread-command-events (list last-command-event)) (mlh-select-kakutei)) (defun mlh-select-kakutei () (interactive) (and (boundp 'disable-undo) (setq disable-undo nil)) (exit-recursive-edit)) (defun mlh-user-defined-conversion () (forward-char -1) (skip-chars-backward "-a-zA-Z") (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (backward-delete-char 2) (let* ((str (buffer-substring mlh-beg (point))) (userdef (mlh-userdef<==string str))) (cond ((stringp userdef) (delete-region mlh-beg (point)) (insert userdef)) ((null userdef) (delete-region mlh-beg (point)) ;; (add-userdef) (insert new-userdef) (insert "?udef?")) ((consp userdef) (let ((mlh-candidates userdef)) (mlh-recursive-edit-select))))) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defvar mlh-userdef-table nil "Convertion table of words(string) to another words(string).") (defun mlh-userdef<==string (str) "Convert string to another string with `mlh-userdef-table'" (cdr (assoc str mlh-userdef-table))) (defvar mlh-kanji-function 'mlh-kanji-with-henkan-region-function) (defun mlh-kanji () (funcall mlh-kanji-function)) (defun mlh-kanji-with-henkan-region-function () (skip-chars-backward "-a-z,.'N[]") (mlh-backward-henkan) (setq inhibit-henkan nil) (setq mlh-beg (point)) (goto-char mlh-end-marker) (forward-char -1) (its-translate-region-internal mlh-beg (point)) (delete-region (point) mlh-end-marker) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defun mlh-hiragana () (forward-char -1) (skip-chars-backward "-a-z,.'N[]") (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (forward-char -2) (its-translate-region-internal mlh-beg (point)) (delete-region (point) mlh-end-marker) (setq henkan-begin (point))) (defun mlh-hiragana-to-kanji () (forward-char -1) (skip-chars-backward "ぁ-んー") (mlh-backward-henkan) (setq mlh-beg (point)) (setq inhibit-henkan nil) (goto-char mlh-end-marker) (backward-delete-char 2) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defun mlh-katakana () (forward-char -1) (skip-chars-backward "-a-z,.'N[]") (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (forward-char -2) (its-translate-region-internal mlh-beg (point)) (japanese-katakana-region mlh-beg (point)) (delete-region (point) mlh-end-marker) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (defun mlh-zenkaku () (forward-char -1) (skip-chars-backward "\041-\056\060-\176") (mlh-backward-henkan) (setq mlh-beg (point)) (goto-char mlh-end-marker) (backward-delete-char 2) (japanese-zenkaku-region mlh-beg (point)) (if (null henkan-begin) (setq henkan-begin mlh-beg))) (provide 'egg-mlh) ;;; egg-mlh.el ends here. egg-4.2.0/egg.el000066400000000000000000000210301252027163000133350ustar00rootroot00000000000000;;; egg.el --- EGG Input Method Architecture ;;; -*- coding: utf-8 -*- ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (require 'its) (defconst egg-version "4.2.0" "Version number for this version of Tamago.") (eval-when-compile (require 'cl)) (declare-function its-start (key context) "its.el" nil) (declare-function its-exit-mode () "its.el" nil) (declare-function egg-set-conversion-backend (backend-alist &optional force) "egg-cnv.el" nil) (declare-function egg-exit-conversion () "egg-cnv.el" nil) (declare-function egg-finalize-backend () "egg-cnv.el" nil) (defgroup egg nil "Tamago Version 4." :group 'leim :version "24.3") (defcustom egg-mode-preference t "*Make Egg as modefull input method, if non-NIL." :group 'egg :type 'boolean) (defvar egg-last-method-name nil) (make-variable-buffer-local 'egg-last-method-name) (put 'egg-last-method-name 'permanent-local t) (defvar egg-mode-map-alist nil) (defvar egg-sub-mode-map-alist nil) (defmacro define-egg-mode-map (mode &rest initializer) (let ((map (intern (concat "egg-" (symbol-name mode) "-map"))) (var (intern (concat "egg-" (symbol-name mode) "-mode"))) (comment (concat (symbol-name mode) " keymap for EGG mode."))) `(progn (defvar ,map (let ((map (make-sparse-keymap))) ,@initializer map) ,comment) (fset ',map ,map) (defvar ,var nil) (make-variable-buffer-local ',var) (put ',var 'permanent-local t) (or (assq ',var egg-mode-map-alist) (setq egg-mode-map-alist (append egg-mode-map-alist '((,var . ,map)))))))) (define-egg-mode-map modefull (let ((i 33)) (while (< i 127) (define-key map (vector i) 'egg-self-insert-char) (setq i (1+ i))))) (define-egg-mode-map modeless (define-key map " " 'mlh-space-bar-backward-henkan)) (defvar egg-enter/leave-fence-hook nil) (defun egg-enter/leave-fence (&optional old new) (run-hooks 'egg-enter/leave-fence-hook)) (defvar egg-activated nil) (make-variable-buffer-local 'egg-activated) (put 'egg-activated 'permanent-local t) (defun egg-activate-keymap () (when (and egg-activated (null (eq (car egg-sub-mode-map-alist) (car minor-mode-overriding-map-alist)))) (let ((alist (append egg-sub-mode-map-alist egg-mode-map-alist)) (overriding (copy-sequence minor-mode-overriding-map-alist))) (while alist (setq overriding (delq (assq (caar alist) overriding) overriding) alist (cdr alist))) (setq minor-mode-overriding-map-alist (append egg-sub-mode-map-alist overriding egg-mode-map-alist))))) (add-hook 'egg-enter/leave-fence-hook 'egg-activate-keymap t) (defun egg-modify-fence (&rest arg) (add-hook 'post-command-hook 'egg-post-command-func)) (defun egg-post-command-func () (run-hooks 'egg-enter/leave-fence-hook) (remove-hook 'post-command-hook 'egg-post-command-func)) (defvar egg-change-major-mode-buffer nil) (defun egg-activate-keymap-after-command () (while egg-change-major-mode-buffer (let ((buf (car egg-change-major-mode-buffer))) (if (buffer-live-p buf) (with-current-buffer buf (egg-activate-keymap))) (setq egg-change-major-mode-buffer (cdr egg-change-major-mode-buffer)))) (remove-hook 'post-command-hook 'egg-activate-keymap-after-command)) (defun egg-change-major-mode-func () (setq egg-change-major-mode-buffer (cons (current-buffer) egg-change-major-mode-buffer)) (add-hook 'post-command-hook 'egg-activate-keymap-after-command)) (add-hook 'change-major-mode-hook 'egg-change-major-mode-func) ;;;###autoload (defun egg-mode (&rest arg) "Toggle EGG mode. \\[describe-bindings] " (interactive "P") (if (null arg) ;; Turn off (unwind-protect (progn (its-exit-mode) (egg-exit-conversion)) (setq describe-current-input-method-function nil egg-modefull-mode nil egg-modeless-mode nil) (remove-hook 'input-method-activate-hook 'its-set-mode-line-title t) (force-mode-line-update)) ;; Turn on (if (null (string= (car arg) egg-last-method-name)) (progn (funcall (nth 1 arg)))) (egg-set-conversion-backend (nthcdr 2 arg)) (setq egg-last-method-name (car arg) egg-activated t) (egg-activate-keymap) (if egg-mode-preference (setq egg-modefull-mode t) (setq egg-modeless-mode t)) (setq deactivate-current-input-method-function 'egg-mode) (setq describe-current-input-method-function 'egg-help) (add-hook 'input-method-activate-hook 'its-set-mode-line-title nil t) (if (eq (selected-window) (minibuffer-window)) (add-hook 'minibuffer-exit-hook 'egg-exit-from-minibuffer)) (run-hooks 'egg-mode-hook))) (defun egg-exit-from-minibuffer () (deactivate-input-method) (if (<= (minibuffer-depth) 1) (remove-hook 'minibuffer-exit-hook 'egg-exit-from-minibuffer))) (defvar egg-context nil) (defun egg-self-insert-char () (interactive) (its-start last-command-event (and (eq last-command 'egg-use-context) egg-context))) (defun egg-remove-all-text-properties (from to &optional object) (let ((p from) props prop) (while (< p to) (setq prop (text-properties-at p object)) (while prop (unless (eq (car prop) 'composition) (setq props (plist-put props (car prop) nil))) (setq prop (cddr prop))) (setq p (next-property-change p object to))) (remove-text-properties from to props object))) (defun egg-setup-invisibility-spec () (if (listp buffer-invisibility-spec) (unless (condition-case nil (memq 'egg buffer-invisibility-spec) (error)) (setq buffer-invisibility-spec (cons 'egg buffer-invisibility-spec))) (unless (eq buffer-invisibility-spec t) (setq buffer-invisibility-spec (list 'egg buffer-invisibility-spec))))) (defun egg-set-face (beg end face &optional object) (put face 'face face) (add-text-properties beg end (list 'category face) object)) (defconst egg-messages '((nil (no-rcfile "no egg-startup-file on %S") (rcfile-error "error occured in egg-startup-file") (candidate "candidates:") (register-str "Chinese character:") (register-yomi "word registration ``%s'' pronunciation:") (registered "dictionary entry ``%s''(%s: %s) is registerd at %s")) (Japanese (no-rcfile "%S 上に egg-startup-file がありません") (rcfile-error "egg-startup-file でエラーがありました") (candidate "候補:") (register-str "漢字:") (register-yomi "辞書登録『%s』 読み:") (registered "辞書項目『%s』(%s: %s)を %s に登録しました") (sj3-register-1 "登録辞書名:") (sj3-register-2 "品詞名")))) (defun egg-get-message (message) (or (nth 1 (assq message (cdr (assq 'Japanese egg-messages)))) (nth 1 (assq message (cdr (assq nil egg-messages)))) (error "EGG internal error: no such message: %s (%s)" message 'Japanese))) (put 'egg-error 'error-conditions '(error egg-error)) (put 'egg-error 'error-message "EGG error") (defun egg-error (message &rest args) (if (symbolp message) (setq message (egg-get-message message))) (signal 'egg-error (list (apply 'format message args)))) ;;; ;;; auto fill controll ;;; (defun egg-do-auto-fill () (if (and auto-fill-function (> (current-column) fill-column)) (let ((ocolumn (current-column))) (funcall auto-fill-function) (while (and (< fill-column (current-column)) (< (current-column) ocolumn)) (setq ocolumn (current-column)) (funcall auto-fill-function))))) (eval-when (eval load) (require 'menudiag) (require 'egg-mlh) (require 'egg-cnv)) (add-hook 'kill-emacs-hook 'egg-kill-emacs-function) (defun egg-kill-emacs-function () (egg-finalize-backend)) (provide 'egg) ;;; egg.el ends here egg-4.2.0/its-ascii.el000066400000000000000000000030101252027163000144560ustar00rootroot00000000000000;;; its-ascii.el --- ASCII Input in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (require 'its) (define-its-state-machine its-up-map "upcase" "aA" nil "Map for upcase input." (let ((i ? )) (while (<= i ?~) (its-defrule (char-to-string i) (upcase (char-to-string i))) (setq i (1+ i))))) (define-its-state-machine-append its-up-map) (define-its-state-machine its-down-map "downcase" "aa" nil "Map for downcase input." (let ((i ? )) (while (<= i ?~) (its-defrule (char-to-string i) (char-to-string i)) (setq i (1+ i))))) (define-its-state-machine-append its-down-map) (provide 'its-ascii) egg-4.2.0/its-hankata.el000066400000000000000000000250531252027163000150100ustar00rootroot00000000000000;;; its-hankata.el --- Hnakaku Katakana Input ;;; -*- coding: utf-8 -*- ;;; in Egg Input Method Architecture ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; Maintainer: TOMURA Satoru ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'cl)) (require 'its) (defconst its-compaction-enable t) (defvar its-han-kata-enable-double-n nil "*Enable \"nn\" input for \"ン\" ") (defvar its-han-kata-enable-zenkaku-alphabet t "*Enable Zenkaku alphabet") (defvar its-han-kata-period "。" "*ピリオド") ; ". " "." (defvar its-han-kata-comma "、" "*コンマ") ; ", " "," (defvar its-han-kata-open-bracket "「" "*[") ; "[" (defvar its-han-kata-close-bracket "」" "*]") ; "]" (defvar its-han-kata-horizontal "ー" "*-") ; "−" (define-its-state-machine its-han-kata-map "roma-han-kata" "アア" Japanese "Map for Romaji-Hankaku-Katakana translation. (Japanese)" (defconst its-hankaku-escape "~") ;; Escape character to Hankaku inputs (its-defrule-select-mode-temporally "q" downcase) ;;; k k ;;; kk ッk ;;; kka ッカ ;;; ;;; kkk ッk DING! (its-defrule "tch" "ッ" -2) ;;; 「ン」の入力 (dolist (q1 '("b" "m" "p")) (its-defrule (concat "m" q1) "ン" -1)) (its-defrule* "n" "ン") (its-defrule "n'" "ン") (its-defrule "N" "ン") (let ((small '"x" )) (its-defrule (concat small "a") "ァ") (its-defrule (concat small "i") "ィ") (its-defrule (concat small "u") "ゥ") (its-defrule (concat small "e") "ェ") (its-defrule (concat small "o") "ォ") (its-defrule (concat small "ya") "ャ") (its-defrule (concat small "yu") "ュ") (its-defrule (concat small "yo") "ョ") (its-defrule (concat small "tu") "ッ") (its-defrule (concat small "tsu") "ッ") (its-defrule (concat small "wa") "ワ") ) (its-defrule "a" "ア") (its-defrule "i" "イ") (its-defrule "u" "ウ") (its-defrule "e" "エ") (its-defrule "o" "オ") (dolist (k '(("ka" "カ") ("ki" "キ") ("ku" "ク") ("ke" "ケ") ("ko" "コ") ("kya" "キャ") ("kyu" "キュ") ("kye" "キェ") ("kyo" "キョ"))) (its-defrule (car k) (cadr k)) (its-defrule (concat "k" (car k)) (concat "ッ" (cadr k)))) (its-defoutput "kk" "ッk") (its-defoutput "kky" "ッky") (dolist (s '(("sa" "サ") ("si" "シ") ("su" "ス") ("se" "セ") ("so" "ソ") ("sya" "シャ") ("syu" "シュ") ("sye" "シェ") ("syo" "ショ") ("sha" "シャ") ("shi" "シ") ("shu" "シュ") ("she" "シェ") ("sho" "ショ"))) (its-defrule (car s) (cadr s)) (its-defrule (concat "s" (car s)) (concat "ッ" (cadr s)))) (its-defoutput "ss" "ッs") (its-defoutput "ssy" "ッsy") (its-defoutput "ssh" "ッsh") (dolist (T '(("ta" "タ") ("ti" "チ") ("tu" "ツ") ("te" "テ") ("to" "ト") ("tya" "チャ") ("tyi" "ティ") ("tyu" "チュ") ("tye" "チェ") ("tyo" "チョ") ("tsu" "ツ"))) (its-defrule (car T) (cadr T)) (its-defrule (concat "t" (car T)) (concat "ッ" (cadr T)))) (its-defoutput "tt" "ッt") (its-defoutput "tty" "ッty") (its-defoutput "tts" "ッts") (dolist (c '(("cha" "チャ") ("chi" "チ") ("chu" "チュ") ("che" "チェ") ("cho" "チョ"))) (its-defrule (car c) (cadr c)) (its-defrule (concat "c" (car c)) (concat "ッ" (cadr c)))) (its-defoutput "cc" "ッc") (its-defoutput "cch" "ッch") (dolist (h '(("ha" "ハ") ("hi" "ヒ") ("hu" "フ") ("he" "ヘ") ("ho" "ホ") ("hya" "ヒャ") ("hyu" "ヒュ") ("hye" "ヒェ") ("hyo" "ヒョ"))) (its-defrule (car h) (cadr h)) (its-defrule (concat "h" (car h)) (concat "ッ" (cadr h)))) (its-defoutput "hh" "ッh") (its-defoutput "hhy" "ッhy") (dolist (f '(("fa" "ファ") ("fi" "フィ") ("fu" "フ") ("fe" "フェ") ("fo" "フォ"))) (its-defrule (car f) (cadr f)) (its-defrule (concat "f" (car f)) (concat "ッ" (cadr f)))) (its-defoutput "ff" "ッf") (dolist (r '(("ra" "ラ") ("ri" "リ") ("ru" "ル") ("re" "レ") ("ro" "ロ") ("rya" "リャ") ("ryu" "リュ") ("rye" "リェ") ("ryo" "リョ"))) (its-defrule (car r) (cadr r)) (its-defrule (concat "r" (car r)) (concat "ッ" (cadr r)))) (its-defoutput "rr" "ッr") (its-defoutput "rry" "ッry") (dolist (l '(("la" "ラ") ("li" "リ") ("lu" "ル") ("le" "レ") ("lo" "ロ") ("lya" "リャ") ("lyu" "リュ") ("lye" "リェ") ("lyo" "リョ"))) (its-defrule (car l) (cadr l)) (its-defrule (concat "l" (car l)) (concat "ッ" (cadr l)))) (its-defoutput "ll" "ッl") (its-defoutput "lly" "ッly") (dolist (g '(("ga" "ガ") ("gi" "ギ") ("gu" "グ") ("ge" "ゲ") ("go" "ゴ") ("gya" "ギャ") ("gyu" "ギュ") ("gye" "ギェ") ("gyo" "ギョ"))) (its-defrule (car g) (cadr g)) (its-defrule (concat "g" (car g)) (concat "ッ" (cadr g)))) (its-defoutput "gg" "ッg") (its-defoutput "ggy" "ッgy") (dolist (z '(("za" "ザ") ("zi" "ジ") ("zu" "ズ") ("ze" "ゼ") ("zo" "ゾ") ("zya" "ジャ") ("zyu" "ジュ") ("zye" "ジェ") ("zyo" "ジョ"))) (its-defrule (car z) (cadr z)) (its-defrule (concat "z" (car z)) (concat "ッ" (cadr z)))) (its-defoutput "zz" "ッz") (its-defoutput "zzy" "ッzy") (dolist (j '(("ja" "ジャ") ("ji" "ジ") ("ju" "ジュ") ("je" "ジェ") ("jo" "ジョ") ("jya" "ジャ") ("jyu" "ジュ") ("jye" "ジェ") ("jyo" "ジョ"))) (its-defrule (car j) (cadr j)) (its-defrule (concat "j" (car j)) (concat "ッ" (cadr j)))) (its-defoutput "jj" "ッj") (its-defoutput "jjy" "ッjy") (dolist (d '(("da" "ダ") ("di" "ヂ") ("du" "ヅ") ("de" "デ") ("do" "ド") ("dya" "ヂャ") ("dyi" "ディ") ("dyu" "ヂュ") ("dye" "ヂェ") ("dyo" "ヂョ"))) (its-defrule (car d) (cadr d)) (its-defrule (concat "d" (car d)) (concat "ッ" (cadr d)))) (its-defoutput "dd" "ッd") (its-defoutput "ddy" "ッdy") (dolist (b '(("ba" "バ") ("bi" "ビ") ("bu" "ブ") ("be" "ベ") ("bo" "ボ") ("bya" "ビャ") ("byu" "ビュ") ("bye" "ビェ") ("byo" "ビョ"))) (its-defrule (car b) (cadr b)) (its-defrule (concat "b" (car b)) (concat "ッ" (cadr b)))) (its-defoutput "bb" "ッb") (its-defoutput "bby" "ッby") (dolist (p '(("pa" "パ") ("pi" "ピ") ("pu" "プ") ("pe" "ペ") ("po" "ポ") ("pya" "ピャ") ("pyu" "ピュ") ("pye" "ピェ") ("pyo" "ピョ"))) (its-defrule (car p) (cadr p)) (its-defrule (concat "p" (car p)) (concat "ッ" (cadr p)))) (its-defoutput "pp" "ッp") (its-defoutput "ppy" "ッpy") (dolist (v '(("va" "ヴァ") ("vi" "ヴィ") ("vu" "ヴ") ("ve" "ヴェ") ("vo" "ヴォ"))) (its-defrule (car v) (cadr v)) (its-defrule (concat "v" (car v)) (concat "ッ" (cadr v)))) (its-defoutput "vv" "ッv") (its-defrule "ma" "マ") (its-defrule "mi" "ミ") (its-defrule "mu" "ム") (its-defrule "me" "メ") (its-defrule "mo" "モ") (its-defrule "mya" "ミャ") (its-defrule "myu" "ミュ") (its-defrule "mye" "ミェ") (its-defrule "myo" "ミョ") (its-defrule "ya" "ヤ") (its-defrule "yi" "イ") (its-defrule "yu" "ユ") (its-defrule "yo" "ヨ") (its-defrule "ye" "イェ") (its-defrule "wa" "ワ") (its-defrule "wi" "ィ") (its-defrule "wu" "ウ") (its-defrule "we" "ェ") (its-defrule "wo" "ヲ") (its-defrule "kwa" "クワ") (its-defrule "kwi" "クィ") (its-defrule "kwu" "ク") (its-defrule "kwe" "クェ") (its-defrule "kwo" "クォ") (its-defrule "gwa" "グワ") (its-defrule "gwi" "グィ") (its-defrule "gwu" "グ") (its-defrule "gwe" "グェ") (its-defrule "gwo" "グォ") (its-defrule "tsa" "ツァ") (its-defrule "tsi" "ツィ") (its-defrule "tse" "ツェ") (its-defrule "tso" "ツォ") (its-defrule "na" "ナ") (its-defrule "ni" "ニ") (its-defrule "nu" "ヌ") (its-defrule "ne" "ネ") (its-defrule "no" "ノ") (its-defrule "nya" "ニャ") (its-defrule "nyu" "ニュ") (its-defrule "nye" "ニェ") (its-defrule "nyo" "ニョ") (its-defrule "xti" "ティ") (its-defrule "xdi" "ディ") (its-defrule "xdu" "ドゥ") (its-defrule "xde" "デェ") (its-defrule "xdo" "ドォ") (its-defrule "xwi" "ウィ") (its-defrule "xwe" "ウェ") (its-defrule "xwo" "ウォ") ;;; ;;; Symbol inputs ;;; (dolist (digit '( "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" )) (its-defrule (concat its-hankaku-escape digit) digit)) (dolist (symbol '( " " "!" "@" "#" "$" "%" "^" "&" "*" "(" ")" "-" "=" "`" "\\" "|" "_" "+" "~" "[" "]" "{" "}" ":" ";" "\"" "'" "<" ">" "?" "/" "," "." )) (its-defrule (concat its-hankaku-escape symbol) symbol)) (dolist (downcase '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z")) (its-defrule (concat its-hankaku-escape downcase) downcase)) (dolist (upcase '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z")) (its-defrule (concat its-hankaku-escape upcase) upcase))) (define-its-state-machine-append its-han-kata-map (if its-han-kata-enable-double-n (its-defrule "nn" "ン")) (its-defrule "-" its-han-kata-horizontal) (its-defrule "[" its-han-kata-open-bracket) (its-defrule "]" its-han-kata-close-bracket) (its-defrule "." its-han-kata-period) (its-defrule "," its-han-kata-comma) ) (provide 'its-hankata) ;;; its-hankata.el ends here. egg-4.2.0/its-hira.el000066400000000000000000000513431252027163000143250ustar00rootroot00000000000000;;; its-hira.el --- Hiragana Input ;;; -*- coding: utf-8 -*- ;;; in Egg Input Method Architecture ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; Maintainer: TOMURA Satoru ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; ;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro) ;; This file is based on the rules of its/hira.el in Mule-2.3 distribution. ;; ;;; Code: (eval-when-compile (require 'cl)) (require 'its) (defconst its-compaction-enable t) (defgroup hira nil "Hiragana Input Method" :group 'its) (defvar its-hira-enable-zenkaku-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Zenkaku alphabet") (defcustom its-hira-enable-double-n t "*Enable \"nn\" input for \"ん\" " :group 'hira :type 'boolean) (defcustom its-hira-period "。" "* .(ピリオド)を入力したときの句点の文字: \"。\" \". \" \".\"" :group 'hira :type 'string) (defcustom its-hira-comma "、" "* ,(コンマ)を入力したときの読点の文字: \"、\" \", \" \",\"" :group 'hira :type 'string) (defcustom its-hira-open-bracket "「" "* [ を入力したときのかぎ括弧開けの文字: \"「\" \"[\"" :group 'hira :type 'string) (defcustom its-hira-close-bracket "」" "* ] を入力したときのかぎ括弧閉じの文字: \"」\" \"]\"" :group 'hira :type 'string) (defcustom its-hira-horizontal "ー" "* - を入力したときの長音記号の文字: \"ー\" \"−\"" :group 'hira :type 'string) (define-its-state-machine its-hira-map "roma-kana" "あ" Japanese "Map for Romaji-Hiragana translation. (Japanese)" (defconst its-zenkaku-escape "Z") ;; Escape character to Zenkaku inputs (defconst its-hankaku-escape "~") ;; Escape character to Hankaku inputs (its-defrule-select-mode-temporally "q" downcase) (its-defrule-select-mode-temporally "Q" zenkaku-downcase) ;;; k k ;;; kk っk ;;; kka っか ;;; ;;; kkk っk DING! (its-defrule "tch" "っ" -2) ;;; 「ん」の入力 (dolist (q1 '("b" "m" "p")) (its-defrule (concat "m" q1) "ん" -1)) (its-defrule* "n" "ん") (its-defrule "n'" "ん") (its-defrule "N" "ん") (let ((small '"x" )) (its-defrule (concat small "a") "ぁ") (its-defrule (concat small "i") "ぃ") (its-defrule (concat small "u") "ぅ") (its-defrule (concat small "e") "ぇ") (its-defrule (concat small "o") "ぉ") (its-defrule (concat small "ya") "ゃ") (its-defrule (concat small "yu") "ゅ") (its-defrule (concat small "yo") "ょ") (its-defrule (concat small "tu") "っ") (its-defrule (concat small "tsu") "っ") (its-defrule (concat small "wa") "ゎ") ) (its-defrule "a" "あ") (its-defrule "i" "い") (its-defrule "u" "う") (its-defrule "e" "え") (its-defrule "o" "お") (dolist (k '(("ka" "か") ("ki" "き") ("ku" "く") ("ke" "け") ("ko" "こ") ("kya" "きゃ") ("kyu" "きゅ") ("kye" "きぇ") ("kyo" "きょ"))) (its-defrule (car k) (cadr k)) (its-defrule (concat "k" (car k)) (concat "っ" (cadr k)))) (its-defoutput "kk" "っk") (its-defoutput "kky" "っky") (dolist (s '(("sa" "さ") ("si" "し") ("su" "す") ("se" "せ") ("so" "そ") ("sya" "しゃ") ("syu" "しゅ") ("sye" "しぇ") ("syo" "しょ") ("sha" "しゃ") ("shi" "し") ("shu" "しゅ") ("she" "しぇ") ("sho" "しょ"))) (its-defrule (car s) (cadr s)) (its-defrule (concat "s" (car s)) (concat "っ" (cadr s)))) (its-defoutput "ss" "っs") (its-defoutput "ssy" "っsy") (its-defoutput "ssh" "っsh") (dolist (T '(("ta" "た") ("ti" "ち") ("tu" "つ") ("te" "て") ("to" "と") ("tya" "ちゃ") ("tyi" "てぃ") ("tyu" "ちゅ") ("tye" "ちぇ") ("tyo" "ちょ") ("tsu" "つ"))) (its-defrule (car T) (cadr T)) (its-defrule (concat "t" (car T)) (concat "っ" (cadr T)))) (its-defoutput "tt" "っt") (its-defoutput "tty" "っty") (its-defoutput "tts" "っts") (dolist (c '(("cha" "ちゃ") ("chi" "ち") ("chu" "ちゅ") ("che" "ちぇ") ("cho" "ちょ"))) (its-defrule (car c) (cadr c)) (its-defrule (concat "c" (car c)) (concat "っ" (cadr c)))) (its-defoutput "cc" "っc") (its-defoutput "cch" "っch") (dolist (h '(("ha" "は") ("hi" "ひ") ("hu" "ふ") ("he" "へ") ("ho" "ほ") ("hya" "ひゃ") ("hyu" "ひゅ") ("hye" "ひぇ") ("hyo" "ひょ"))) (its-defrule (car h) (cadr h)) (its-defrule (concat "h" (car h)) (concat "っ" (cadr h)))) (its-defoutput "hh" "っh") (its-defoutput "hhy" "っhy") (dolist (f '(("fa" "ふぁ") ("fi" "ふぃ") ("fu" "ふ") ("fe" "ふぇ") ("fo" "ふぉ"))) (its-defrule (car f) (cadr f)) (its-defrule (concat "f" (car f)) (concat "っ" (cadr f)))) (its-defoutput "ff" "っf") (dolist (r '(("ra" "ら") ("ri" "り") ("ru" "る") ("re" "れ") ("ro" "ろ") ("rya" "りゃ") ("ryu" "りゅ") ("rye" "りぇ") ("ryo" "りょ"))) (its-defrule (car r) (cadr r)) (its-defrule (concat "r" (car r)) (concat "っ" (cadr r)))) (its-defoutput "rr" "っr") (its-defoutput "rry" "っry") (dolist (l '(("la" "ら") ("li" "り") ("lu" "る") ("le" "れ") ("lo" "ろ") ("lya" "りゃ") ("lyu" "りゅ") ("lye" "りぇ") ("lyo" "りょ"))) (its-defrule (car l) (cadr l)) (its-defrule (concat "l" (car l)) (concat "っ" (cadr l)))) (its-defoutput "ll" "っl") (its-defoutput "lly" "っly") (dolist (g '(("ga" "が") ("gi" "ぎ") ("gu" "ぐ") ("ge" "げ") ("go" "ご") ("gya" "ぎゃ") ("gyu" "ぎゅ") ("gye" "ぎぇ") ("gyo" "ぎょ"))) (its-defrule (car g) (cadr g)) (its-defrule (concat "g" (car g)) (concat "っ" (cadr g)))) (its-defoutput "gg" "っg") (its-defoutput "ggy" "っgy") (dolist (z '(("za" "ざ") ("zi" "じ") ("zu" "ず") ("ze" "ぜ") ("zo" "ぞ") ("zya" "じゃ") ("zyu" "じゅ") ("zye" "じぇ") ("zyo" "じょ"))) (its-defrule (car z) (cadr z)) (its-defrule (concat "z" (car z)) (concat "っ" (cadr z)))) (its-defoutput "zz" "っz") (its-defoutput "zzy" "っzy") (dolist (j '(("ja" "じゃ") ("ji" "じ") ("ju" "じゅ") ("je" "じぇ") ("jo" "じょ") ("jya" "じゃ") ("jyu" "じゅ") ("jye" "じぇ") ("jyo" "じょ"))) (its-defrule (car j) (cadr j)) (its-defrule (concat "j" (car j)) (concat "っ" (cadr j)))) (its-defoutput "jj" "っj") (its-defoutput "jjy" "っjy") (dolist (d '(("da" "だ") ("di" "ぢ") ("du" "づ") ("de" "で") ("do" "ど") ("dya" "ぢゃ") ("dyi" "でぃ") ("dyu" "ぢゅ") ("dye" "ぢぇ") ("dyo" "ぢょ"))) (its-defrule (car d) (cadr d)) (its-defrule (concat "d" (car d)) (concat "っ" (cadr d)))) (its-defoutput "dd" "っd") (its-defoutput "ddy" "っdy") (dolist (b '(("ba" "ば") ("bi" "び") ("bu" "ぶ") ("be" "べ") ("bo" "ぼ") ("bya" "びゃ") ("byu" "びゅ") ("bye" "びぇ") ("byo" "びょ"))) (its-defrule (car b) (cadr b)) (its-defrule (concat "b" (car b)) (concat "っ" (cadr b)))) (its-defoutput "bb" "っb") (its-defoutput "bby" "っby") (dolist (p '(("pa" "ぱ") ("pi" "ぴ") ("pu" "ぷ") ("pe" "ぺ") ("po" "ぽ") ("pya" "ぴゃ") ("pyu" "ぴゅ") ("pye" "ぴぇ") ("pyo" "ぴょ"))) (its-defrule (car p) (cadr p)) (its-defrule (concat "p" (car p)) (concat "っ" (cadr p)))) (its-defoutput "pp" "っp") (its-defoutput "ppy" "っpy") (dolist (v '(("va" "ヴぁ") ("vi" "ヴぃ") ("vu" "ヴ") ("ve" "ヴぇ") ("vo" "ヴぉ"))) (its-defrule (car v) (cadr v)) (its-defrule (concat "v" (car v)) (concat "っ" (cadr v)))) (its-defoutput "vv" "っv") (its-defrule "ma" "ま") (its-defrule "mi" "み") (its-defrule "mu" "む") (its-defrule "me" "め") (its-defrule "mo" "も") (its-defrule "mya" "みゃ") (its-defrule "myu" "みゅ") (its-defrule "mye" "みぇ") (its-defrule "myo" "みょ") (its-defrule "ya" "や") (its-defrule "yi" "い") (its-defrule "yu" "ゆ") (its-defrule "yo" "よ") (its-defrule "ye" "いぇ") (its-defrule "wa" "わ") (its-defrule "wi" "ゐ") (its-defrule "wu" "う") (its-defrule "we" "ゑ") (its-defrule "wo" "を") (its-defrule "kwa" "くゎ") (its-defrule "kwi" "くぃ") (its-defrule "kwu" "く") (its-defrule "kwe" "くぇ") (its-defrule "kwo" "くぉ") (its-defrule "gwa" "ぐゎ") (its-defrule "gwi" "ぐぃ") (its-defrule "gwu" "ぐ") (its-defrule "gwe" "ぐぇ") (its-defrule "gwo" "ぐぉ") (its-defrule "tsa" "つぁ") (its-defrule "tsi" "つぃ") (its-defrule "tse" "つぇ") (its-defrule "tso" "つぉ") (its-defrule "na" "な") (its-defrule "ni" "に") (its-defrule "nu" "ぬ") (its-defrule "ne" "ね") (its-defrule "no" "の") (its-defrule "nya" "にゃ") (its-defrule "nyu" "にゅ") (its-defrule "nye" "にぇ") (its-defrule "nyo" "にょ") (its-defrule "xka" "ヵ") (its-defrule "xke" "ヶ") (its-defrule "xti" "てぃ") (its-defrule "xdi" "でぃ") (its-defrule "xdu" "どぅ") (its-defrule "xde" "でぇ") (its-defrule "xdo" "どぉ") (its-defrule "xwi" "うぃ") (its-defrule "xwe" "うぇ") (its-defrule "xwo" "うぉ") ;;; ;;; Zenkaku inputs ;;; (its-defrule (concat its-zenkaku-escape "0") "0") (its-defrule (concat its-zenkaku-escape "1") "1") (its-defrule (concat its-zenkaku-escape "2") "2") (its-defrule (concat its-zenkaku-escape "3") "3") (its-defrule (concat its-zenkaku-escape "4") "4") (its-defrule (concat its-zenkaku-escape "5") "5") (its-defrule (concat its-zenkaku-escape "6") "6") (its-defrule (concat its-zenkaku-escape "7") "7") (its-defrule (concat its-zenkaku-escape "8") "8") (its-defrule (concat its-zenkaku-escape "9") "9") (its-defrule (concat its-zenkaku-escape "A") "A") (its-defrule (concat its-zenkaku-escape "B") "B") (its-defrule (concat its-zenkaku-escape "C") "C") (its-defrule (concat its-zenkaku-escape "D") "D") (its-defrule (concat its-zenkaku-escape "E") "E") (its-defrule (concat its-zenkaku-escape "F") "F") (its-defrule (concat its-zenkaku-escape "G") "G") (its-defrule (concat its-zenkaku-escape "H") "H") (its-defrule (concat its-zenkaku-escape "I") "I") (its-defrule (concat its-zenkaku-escape "J") "J") (its-defrule (concat its-zenkaku-escape "K") "K") (its-defrule (concat its-zenkaku-escape "L") "L") (its-defrule (concat its-zenkaku-escape "M") "M") (its-defrule (concat its-zenkaku-escape "N") "N") (its-defrule (concat its-zenkaku-escape "O") "O") (its-defrule (concat its-zenkaku-escape "P") "P") (its-defrule (concat its-zenkaku-escape "Q") "Q") (its-defrule (concat its-zenkaku-escape "R") "R") (its-defrule (concat its-zenkaku-escape "S") "S") (its-defrule (concat its-zenkaku-escape "T") "T") (its-defrule (concat its-zenkaku-escape "U") "U") (its-defrule (concat its-zenkaku-escape "V") "V") (its-defrule (concat its-zenkaku-escape "W") "W") (its-defrule (concat its-zenkaku-escape "X") "X") (its-defrule (concat its-zenkaku-escape "Y") "Y") (its-defrule (concat its-zenkaku-escape "Z") "Z") (its-defrule (concat its-zenkaku-escape "a") "a") (its-defrule (concat its-zenkaku-escape "b") "b") (its-defrule (concat its-zenkaku-escape "c") "c") (its-defrule (concat its-zenkaku-escape "d") "d") (its-defrule (concat its-zenkaku-escape "e") "e") (its-defrule (concat its-zenkaku-escape "f") "f") (its-defrule (concat its-zenkaku-escape "g") "g") (its-defrule (concat its-zenkaku-escape "h") "h") (its-defrule (concat its-zenkaku-escape "i") "i") (its-defrule (concat its-zenkaku-escape "j") "j") (its-defrule (concat its-zenkaku-escape "k") "k") (its-defrule (concat its-zenkaku-escape "l") "l") (its-defrule (concat its-zenkaku-escape "m") "m") (its-defrule (concat its-zenkaku-escape "n") "n") (its-defrule (concat its-zenkaku-escape "o") "o") (its-defrule (concat its-zenkaku-escape "p") "p") (its-defrule (concat its-zenkaku-escape "q") "q") (its-defrule (concat its-zenkaku-escape "r") "r") (its-defrule (concat its-zenkaku-escape "s") "s") (its-defrule (concat its-zenkaku-escape "t") "t") (its-defrule (concat its-zenkaku-escape "u") "u") (its-defrule (concat its-zenkaku-escape "v") "v") (its-defrule (concat its-zenkaku-escape "w") "w") (its-defrule (concat its-zenkaku-escape "x") "x") (its-defrule (concat its-zenkaku-escape "y") "y") (its-defrule (concat its-zenkaku-escape "z") "z") (its-defrule (concat its-zenkaku-escape " ") " ") (its-defrule (concat its-zenkaku-escape "!") "!") (its-defrule (concat its-zenkaku-escape "@") "@") (its-defrule (concat its-zenkaku-escape "#") "#") (its-defrule (concat its-zenkaku-escape "$") "$") (its-defrule (concat its-zenkaku-escape "%") "%") (its-defrule (concat its-zenkaku-escape "^") "^") (its-defrule (concat its-zenkaku-escape "&") "&") (its-defrule (concat its-zenkaku-escape "*") "*") (its-defrule (concat its-zenkaku-escape "(") "(") (its-defrule (concat its-zenkaku-escape ")") ")") (its-defrule (concat its-zenkaku-escape "-") "−") (its-defrule (concat its-zenkaku-escape "=") "=") (its-defrule (concat its-zenkaku-escape "`") "`") (its-defrule (concat its-zenkaku-escape "\\") "¥") (its-defrule (concat its-zenkaku-escape "|") "|") (its-defrule (concat its-zenkaku-escape "_") "_") (its-defrule (concat its-zenkaku-escape "+") "+") (its-defrule (concat its-zenkaku-escape "~") " ̄") (its-defrule (concat its-zenkaku-escape "[") "[") (its-defrule (concat its-zenkaku-escape "]") "]") (its-defrule (concat its-zenkaku-escape "{") "{") (its-defrule (concat its-zenkaku-escape "}") "}") (its-defrule (concat its-zenkaku-escape ":") ":") (its-defrule (concat its-zenkaku-escape ";") ";") (its-defrule (concat its-zenkaku-escape "\"") "”") (its-defrule (concat its-zenkaku-escape "'") "’") (its-defrule (concat its-zenkaku-escape "<") "<") (its-defrule (concat its-zenkaku-escape ">") ">") (its-defrule (concat its-zenkaku-escape "?") "?") (its-defrule (concat its-zenkaku-escape "/") "/") (its-defrule (concat its-zenkaku-escape ",") ",") (its-defrule (concat its-zenkaku-escape ".") ".") ;;; ;;; Hankaku inputs ;;; (dolist (digit '( "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" )) (its-defrule (concat its-hankaku-escape digit) digit)) (dolist (symbol '( " " "!" "@" "#" "$" "%" "^" "&" "*" "(" ")" "-" "=" "`" "\\" "|" "_" "+" "~" "[" "]" "{" "}" ":" ";" "\"" "'" "<" ">" "?" "/" "," "." )) (its-defrule (concat its-hankaku-escape symbol) symbol)) (dolist (downcase '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z")) (its-defrule (concat its-hankaku-escape downcase) downcase)) (dolist (upcase '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z")) (its-defrule (concat its-hankaku-escape upcase) upcase)) ;; SYMBOL Input (its-defrule "z1" "○") (its-defrule "z!" "●") (its-defrule "z2" "▽") (its-defrule "z@" "▼") (its-defrule "z3" "△") (its-defrule "z#" "▲") (its-defrule "z4" "□") (its-defrule "z$" "■") (its-defrule "z5" "◇") (its-defrule "z%" "◆") (its-defrule "z6" "☆") (its-defrule "z^" "★") (its-defrule "z7" "◎") (its-defrule "z&" "£") (its-defrule "z8" "¢") (its-defrule "z*" "×") (its-defrule "z9" "♂") (its-defrule "z(" "【") (its-defrule "z0" "♀") (its-defrule "z)" "】") (its-defrule "z-" "〜") (its-defrule "z_" "∴") (its-defrule "z=" "≠") (its-defrule "z+" "±") (its-defrule "z\\" "\") (its-defrule "z|" "‖") (its-defrule "z`" "´") (its-defrule "z~" "¨") (its-defrule "zq" "《") (its-defrule "zQ" "〈") (its-defrule "zw" "》") (its-defrule "zW" "〉") ; e (its-defrule "zr" "々") (its-defrule "zR" "仝") (its-defrule "zt" "〆") (its-defrule "zT" "§") ; y u i o (its-defrule "zp" "〒") (its-defrule "zP" "↑") (its-defrule "z[" "『") (its-defrule "z{" "〔") (its-defrule "z]" "』") (its-defrule "z}" "〕") ; a (its-defrule "zs" "ヽ") (its-defrule "zS" "ヾ") (its-defrule "zd" "ゝ") (its-defrule "zD" "ゞ") (its-defrule "zf" "〃") (its-defrule "zF" "→") (its-defrule "zg" "‐") (its-defrule "zG" "—") (its-defrule "zh" "←") (its-defrule "zj" "↓") (its-defrule "zk" "↑") (its-defrule "zl" "→") (its-defrule "z;" "゛") (its-defrule "z:" "゜") (its-defrule "z\'" "‘") (its-defrule "z\"" "“") ; z (its-defrule "zx" ":-") (its-defrule "zX" ":-)") (its-defrule "zc" "〇") (its-defrule "zC" "℃") (its-defrule "zv" "※") (its-defrule "zV" "÷") (its-defrule "zb" "°") (its-defrule "zB" "←") (its-defrule "zn" "′") (its-defrule "zN" "↓") (its-defrule "zm" "″") (its-defrule "zM" "〓") (its-defrule "z," "‥") (its-defrule "z<" "≦") (its-defrule "z." "…") (its-defrule "z>" "≧") (its-defrule "z/" "・") (its-defrule "z?" "∞") ) (define-its-state-machine-append its-hira-map (if its-hira-enable-double-n (its-defrule "nn" "ん")) (its-defrule "-" its-hira-horizontal) (its-defrule "[" its-hira-open-bracket) (its-defrule "]" its-hira-close-bracket) (its-defrule "." its-hira-period) (its-defrule "," its-hira-comma) (if its-hira-enable-zenkaku-alphabet (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "!" "!") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "¥") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule ":" ":") (its-defrule ";" ";") (its-defrule "\"" "”") (its-defrule "'" "’") (its-defrule "<" "<") (its-defrule ">" ">") (its-defrule "?" "?") (its-defrule "/" "/")) (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "!" "!") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule ":" ":") (its-defrule ";" ";") (its-defrule "\"" "\"") (its-defrule "'" "'") (its-defrule "<" "<") (its-defrule ">" ">") (its-defrule "?" "?") (its-defrule "/" "/"))) ) (provide 'its-hira) ;;; its-hira.el ends here. egg-4.2.0/its-jiskana.el000066400000000000000000000336761252027163000150330ustar00rootroot00000000000000;;; its-jiskana.el --- Hiragana Input ;;; -*- coding: utf-8 -*- ;;; in Egg Input Method Architecture ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: Kubo "Munk3" Hiroshi ;; This file is not a part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; ;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro) ;; This file is based on the rules of its/hira.el of Tamago 4 ;; ;;; Code: (eval-when-compile (require 'cl)) (require 'its) (defconst its-compaction-enable t) (defgroup jikana nil "JIS Keyboard kana Input Method" :group 'its) (defvar its-jiskana-enable-zenkaku-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Zenkaku alphabet") (defcustom its-jiskana-period "。" "* >を入力したときの句点の文字: \"。\" \". \" \".\"" :group 'jiskana :type 'string) (defcustom its-jiskana-comma "、" "* <を入力したときの読点の文字: \"、\" \", \" \",\"" :group 'jiskana :type 'string) (defcustom its-jiskana-open-bracket "「" "* { を入力したときのかぎ括弧開けの文字: \"「\" \"{\"" :group 'jiskana :type 'string) (defcustom its-jiskana-close-bracket "」" "* } を入力したときのかぎ括弧閉じの文字: \"」\" \"}\"" :group 'jiskana :type 'string) (defcustom its-jiskana-horizontal "ー" "* - を入力したときの長音記号の文字: \"ー\" \"−\"" :group 'jiskana :type 'string) (define-its-state-machine its-jiskana-map "kana" "わ" Japanese "Map for JIS arrangement keyboard to hiragana translation. (Japanese)" (defconst its-zenkaku-escape "A") ;; Escape character to Zenkaku inputs (defconst its-hankaku-escape "H") ;; Escape character to Hankaku inputs (its-defrule-select-mode-temporally "D" downcase) (its-defrule-select-mode-temporally "Q" zenkaku-downcase) ;;; 清音 ;; あ行 (its-defrule "3" "あ") (its-defrule "e" "い") (its-defrule "4" "う") (its-defrule "5" "え") (its-defrule "6" "お") ;; か行 (its-defrule* "t" "か" "か") (its-defrule* "g" "き" "き") (its-defrule* "h" "く" "く") (its-defrule* ":" "け" "け") (its-defrule* "b" "こ" "こ") ;; さ行 (its-defrule* "x" "さ" "さ") (its-defrule* "d" "し" "し") (its-defrule* "r" "す" "す") (its-defrule* "p" "せ" "せ") (its-defrule* "c" "そ" "そ") ;; た行 (its-defrule* "q" "た" "た") (its-defrule* "a" "ち" "ち") (its-defrule* "z" "つ" "つ") (its-defrule* "w" "て" "て") (its-defrule* "s" "と" "と") ;; な行 (its-defrule "u" "な") (its-defrule "i" "に") (its-defrule "1" "ぬ") (its-defrule "," "ね") (its-defrule "k" "の") ;; は行 (its-defrule* "f" "は" "は") (its-defrule* "v" "ひ" "ひ") (its-defrule* "2" "ふ" "ふ") (its-defrule* "^" "へ" "へ") (its-defrule* "-" "ほ" "ほ") ;; ま行 (its-defrule "j" "ま") (its-defrule "n" "み") (its-defrule "]" "む") (its-defrule "/" "め") (its-defrule "m" "も") ;; や行 (its-defrule "7" "や") (its-defrule "8" "ゆ") (its-defrule "9" "よ") ;; ら行 (its-defrule "o" "ら") (its-defrule "l" "り") (its-defrule "." "る") (its-defrule ";" "れ") (its-defrule "\\" "ろ") ;; わ行 (its-defrule "0" "わ") (its-defrule "F" "ゐ") (its-defrule "J" "ゑ") (its-defrule "~" "を") (its-defrule "y" "ん") ;;; 濁音 ;; が行 (its-defrule "t@" "が") (its-defrule "g@" "ぎ") (its-defrule "h@" "ぐ") (its-defrule ":@" "げ") (its-defrule "b@" "ご") ;; ざ行 (its-defrule "x@" "ざ") (its-defrule "d@" "じ") (its-defrule "r@" "ず") (its-defrule "p@" "ぜ") (its-defrule "c@" "ぞ") ;; だ行 (its-defrule "q@" "だ") (its-defrule "a@" "ぢ") (its-defrule "z@" "づ") (its-defrule "w@" "で") (its-defrule "s@" "ど") ;; ば行 (its-defrule "f@" "ば") (its-defrule "v@" "び") (its-defrule "2@" "ぶ") (its-defrule "^@" "べ") (its-defrule "-@" "ぼ") ;; ぱ行 (its-defrule "f[" "ぱ") (its-defrule "v[" "ぴ") (its-defrule "2[" "ぷ") (its-defrule "^[" "ぺ") (its-defrule "-[" "ぽ") ;;; ;; や行 (its-defrule "'" "ゃ") (its-defrule "(" "ゅ") (its-defrule ")" "ょ") ;; あ行 (its-defrule "#" "ぁ") (its-defrule "E" "ぃ") (its-defrule "$" "ぅ") (its-defrule "%" "ぇ") (its-defrule "&" "ぉ") (its-defrule "Z" "っ") (its-defrule "W0" "ゎ") (its-defrule "4@" "ヴ") ;;; ;;; Zenkaku inputs ;;; (its-defrule (concat its-zenkaku-escape "0") "0") (its-defrule (concat its-zenkaku-escape "1") "1") (its-defrule (concat its-zenkaku-escape "2") "2") (its-defrule (concat its-zenkaku-escape "3") "3") (its-defrule (concat its-zenkaku-escape "4") "4") (its-defrule (concat its-zenkaku-escape "5") "5") (its-defrule (concat its-zenkaku-escape "6") "6") (its-defrule (concat its-zenkaku-escape "7") "7") (its-defrule (concat its-zenkaku-escape "8") "8") (its-defrule (concat its-zenkaku-escape "9") "9") (its-defrule (concat its-zenkaku-escape "A") "A") (its-defrule (concat its-zenkaku-escape "B") "B") (its-defrule (concat its-zenkaku-escape "C") "C") (its-defrule (concat its-zenkaku-escape "D") "D") (its-defrule (concat its-zenkaku-escape "E") "E") (its-defrule (concat its-zenkaku-escape "F") "F") (its-defrule (concat its-zenkaku-escape "G") "G") (its-defrule (concat its-zenkaku-escape "H") "H") (its-defrule (concat its-zenkaku-escape "I") "I") (its-defrule (concat its-zenkaku-escape "J") "J") (its-defrule (concat its-zenkaku-escape "K") "K") (its-defrule (concat its-zenkaku-escape "L") "L") (its-defrule (concat its-zenkaku-escape "M") "M") (its-defrule (concat its-zenkaku-escape "N") "N") (its-defrule (concat its-zenkaku-escape "O") "O") (its-defrule (concat its-zenkaku-escape "P") "P") (its-defrule (concat its-zenkaku-escape "Q") "Q") (its-defrule (concat its-zenkaku-escape "R") "R") (its-defrule (concat its-zenkaku-escape "S") "S") (its-defrule (concat its-zenkaku-escape "T") "T") (its-defrule (concat its-zenkaku-escape "U") "U") (its-defrule (concat its-zenkaku-escape "V") "V") (its-defrule (concat its-zenkaku-escape "W") "W") (its-defrule (concat its-zenkaku-escape "X") "X") (its-defrule (concat its-zenkaku-escape "Y") "Y") (its-defrule (concat its-zenkaku-escape "Z") "Z") (its-defrule (concat its-zenkaku-escape "a") "a") (its-defrule (concat its-zenkaku-escape "b") "b") (its-defrule (concat its-zenkaku-escape "c") "c") (its-defrule (concat its-zenkaku-escape "d") "d") (its-defrule (concat its-zenkaku-escape "e") "e") (its-defrule (concat its-zenkaku-escape "f") "f") (its-defrule (concat its-zenkaku-escape "g") "g") (its-defrule (concat its-zenkaku-escape "h") "h") (its-defrule (concat its-zenkaku-escape "i") "i") (its-defrule (concat its-zenkaku-escape "j") "j") (its-defrule (concat its-zenkaku-escape "k") "k") (its-defrule (concat its-zenkaku-escape "l") "l") (its-defrule (concat its-zenkaku-escape "m") "m") (its-defrule (concat its-zenkaku-escape "n") "n") (its-defrule (concat its-zenkaku-escape "o") "o") (its-defrule (concat its-zenkaku-escape "p") "p") (its-defrule (concat its-zenkaku-escape "q") "q") (its-defrule (concat its-zenkaku-escape "r") "r") (its-defrule (concat its-zenkaku-escape "s") "s") (its-defrule (concat its-zenkaku-escape "t") "t") (its-defrule (concat its-zenkaku-escape "u") "u") (its-defrule (concat its-zenkaku-escape "v") "v") (its-defrule (concat its-zenkaku-escape "w") "w") (its-defrule (concat its-zenkaku-escape "x") "x") (its-defrule (concat its-zenkaku-escape "y") "y") (its-defrule (concat its-zenkaku-escape "z") "z") (its-defrule (concat its-zenkaku-escape " ") " ") (its-defrule (concat its-zenkaku-escape "!") "!") (its-defrule (concat its-zenkaku-escape "@") "@") (its-defrule (concat its-zenkaku-escape "#") "#") (its-defrule (concat its-zenkaku-escape "$") "$") (its-defrule (concat its-zenkaku-escape "%") "%") (its-defrule (concat its-zenkaku-escape "^") "^") (its-defrule (concat its-zenkaku-escape "&") "&") (its-defrule (concat its-zenkaku-escape "*") "*") (its-defrule (concat its-zenkaku-escape "(") "(") (its-defrule (concat its-zenkaku-escape ")") ")") (its-defrule (concat its-zenkaku-escape "-") "−") (its-defrule (concat its-zenkaku-escape "=") "=") (its-defrule (concat its-zenkaku-escape "`") "`") (its-defrule (concat its-zenkaku-escape "\\") "¥") (its-defrule (concat its-zenkaku-escape "|") "|") (its-defrule (concat its-zenkaku-escape "_") "_") (its-defrule (concat its-zenkaku-escape "+") "+") (its-defrule (concat its-zenkaku-escape "~") " ̄") (its-defrule (concat its-zenkaku-escape "[") "[") (its-defrule (concat its-zenkaku-escape "]") "]") (its-defrule (concat its-zenkaku-escape "{") "{") (its-defrule (concat its-zenkaku-escape "}") "}") (its-defrule (concat its-zenkaku-escape ":") ":") (its-defrule (concat its-zenkaku-escape ";") ";") (its-defrule (concat its-zenkaku-escape "\"") "”") (its-defrule (concat its-zenkaku-escape "'") "’") (its-defrule (concat its-zenkaku-escape "<") "<") (its-defrule (concat its-zenkaku-escape ">") ">") (its-defrule (concat its-zenkaku-escape "?") "?") (its-defrule (concat its-zenkaku-escape "/") "/") (its-defrule (concat its-zenkaku-escape ",") ",") (its-defrule (concat its-zenkaku-escape ".") ".") ;;; ;;; Hankaku inputs ;;; (dolist (digit '( "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" )) (its-defrule (concat its-hankaku-escape digit) digit)) (dolist (symbol '( " " "!" "@" "#" "$" "%" "^" "&" "*" "(" ")" "-" "=" "`" "\\" "|" "_" "+" "~" "[" "]" "{" "}" ":" ";" "\"" "'" "<" ">" "?" "/" "," "." )) (its-defrule (concat its-hankaku-escape symbol) symbol)) (dolist (downcase '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z")) (its-defrule (concat its-hankaku-escape downcase) downcase)) (dolist (upcase '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z")) (its-defrule (concat its-hankaku-escape upcase) upcase)) ;; SYMBOL Input (its-defrule "X1" "○") (its-defrule "X!" "●") (its-defrule "X2" "▽") (its-defrule "X@" "▼") (its-defrule "X3" "△") (its-defrule "X#" "▲") (its-defrule "X4" "□") (its-defrule "X$" "■") (its-defrule "X5" "◇") (its-defrule "X%" "◆") (its-defrule "X6" "☆") (its-defrule "X^" "★") (its-defrule "X7" "◎") (its-defrule "X&" "£") (its-defrule "X8" "¢") (its-defrule "X*" "×") (its-defrule "X9" "♂") (its-defrule "X(" "【") (its-defrule "X0" "♀") (its-defrule "X)" "】") (its-defrule "X-" "〜") (its-defrule "X_" "∴") (its-defrule "X=" "≠") (its-defrule "X+" "±") (its-defrule "X\\" "\") (its-defrule "X|" "‖") (its-defrule "X`" "´") (its-defrule "X~" "¨") (its-defrule "Xq" "《") (its-defrule "XQ" "〈") (its-defrule "Xw" "》") (its-defrule "XW" "〉") ; e (its-defrule "Xr" "々") (its-defrule "XR" "仝") (its-defrule "Xt" "〆") (its-defrule "XT" "§") ; y u i o (its-defrule "Xp" "〒") (its-defrule "XP" "↑") (its-defrule "X[" "『") (its-defrule "X{" "〔") (its-defrule "X]" "』") (its-defrule "X}" "〕") ; a (its-defrule "Xs" "ヽ") (its-defrule "XS" "ヾ") (its-defrule "Xd" "ゝ") (its-defrule "XD" "ゞ") (its-defrule "Xf" "〃") (its-defrule "XF" "→") (its-defrule "Xg" "‐") (its-defrule "XG" "—") (its-defrule "Xh" "←") (its-defrule "Xj" "↓") (its-defrule "Xk" "↑") (its-defrule "Xl" "→") (its-defrule "X;" "゛") (its-defrule "X:" "゜") (its-defrule "X\'" "‘") (its-defrule "X\"" "“") ; z (its-defrule "Xx" ":-") (its-defrule "XX" ":-)") (its-defrule "Xc" "〇") (its-defrule "XC" "℃") (its-defrule "Xv" "※") (its-defrule "XV" "÷") (its-defrule "Xb" "°") (its-defrule "XB" "←") (its-defrule "Xn" "′") (its-defrule "XN" "↓") (its-defrule "Xm" "″") (its-defrule "XM" "〓") (its-defrule "X," "‥") (its-defrule "X<" "≦") (its-defrule "X." "…") (its-defrule "X>" "≧") (its-defrule "X/" "・") (its-defrule "X?" "∞") ) (define-its-state-machine-append its-jiskana-map (its-defrule "|" its-jiskana-horizontal) (its-defrule "{" its-jiskana-open-bracket) (its-defrule "}" its-jiskana-close-bracket) (its-defrule ">" its-jiskana-period) (its-defrule "<" its-jiskana-comma) ) (provide 'its-jiskana) ;;; its-jiskana.el ends here. egg-4.2.0/its-kata.el000066400000000000000000000523501252027163000143210ustar00rootroot00000000000000;;; its-kata.el --- Katakana Input ;;; -*- coding: utf-8 -*- ;;; in Egg Input Method Architecture ;;;;;;;;;;;;;;;; About copyright notice ;;;;;;;;;;;;;;;; ;;; ;;; This code was originally written by NIIBE Yutaka in 1997 and 1998, ;;; using newly written ITS system for hiragana, based on the rules ;;; defined as Egg version 3. Then, it was applied to katakana. ;;; ;;; It was plan to assign copyright to FSF and merged into GNU Emacs. ;;; ;;; This file once had a copyright notice of: ;;; ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. ;; Licensed to the Free Software Foundation. ;; Author: Satoru Tomura ;; Maintainer: TOMURA Satoru ;;; like Egg version 3. ;;; ;;; But, I don't think it applies to this file. ;;; ;;; It is unfortunate this file is distributed (once) with this wrong ;;; copyright notice in the "Tamago Version 4" distribution. ;;; ;;; Although the copyright notice was wrong or not that accurate at ;;; least, everyone in the project (including the maintainer and ;;; Electrotechnical Laboratory, later renamed to AIST) agreed to ;;; distribute the code under GPLv2+. ;;; ;;; Please don't do that again. Please agree and prepare your ;;; assignment to FSF when you develop something for Egg v4. ;;; ;;; -- gniibe 2014-11-06 ;;;;;;;;;;;;; ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; ;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro) ;; This file is based on the rules of its/hira.el in Mule-2.3 distribution. ;; ;;; Code: (eval-when-compile (require 'cl)) (defconst its-compaction-enable t) (require 'its) (defvar its-kata-enable-zenkaku-alphabet (if (boundp 'its-enable-fullwidth-alphabet) its-enable-fullwidth-alphabet t) "*Enable Zenkaku alphabet") (defvar its-kata-enable-double-n nil "*Enable \"nn\" input for \"ン\" ") (defvar its-kata-period "。" "*ピリオド") ; ". " "." (defvar its-kata-comma "、" "*コンマ") ; ", " "," (defvar its-kata-open-bracket "「" "*[") ; "[" (defvar its-kata-close-bracket "」" "*]") ; "]" (defvar its-kata-horizontal "ー" "*-") ; "−" (define-its-state-machine its-kata-map "roma-kata" "ア" Japanese "Map for Romaji-Katakana translation. (Japanese)" (defconst its-zenkaku-escape "Z") ;; Escape character to Zenkaku inputs (defconst its-hankaku-escape "~") ;; Escape character to Hankaku inputs (its-defrule-select-mode-temporally "q" downcase) (its-defrule-select-mode-temporally "Q" zenkaku-downcase) ;;; k k ;;; kk ッk ;;; kka ッカ ;;; ;;; kkk ッk DING! (its-defrule "tch" "ッ" -2) ;;; 「ン」の入力 (dolist (q1 '("b" "m" "p")) (its-defrule (concat "m" q1) "ン" -1)) (its-defrule* "n" "ン") (its-defrule "n'" "ン") (its-defrule "N" "ン") (let ((small '"x" )) (its-defrule (concat small "a") "ァ") (its-defrule (concat small "i") "ィ") (its-defrule (concat small "u") "ゥ") (its-defrule (concat small "e") "ェ") (its-defrule (concat small "o") "ォ") (its-defrule (concat small "ya") "ャ") (its-defrule (concat small "yu") "ュ") (its-defrule (concat small "yo") "ョ") (its-defrule (concat small "tu") "ッ") (its-defrule (concat small "tsu") "ッ") (its-defrule (concat small "wa") "ヮ") ) (its-defrule "a" "ア") (its-defrule "i" "イ") (its-defrule "u" "ウ") (its-defrule "e" "エ") (its-defrule "o" "オ") (dolist (k '(("ka" "カ") ("ki" "キ") ("ku" "ク") ("ke" "ケ") ("ko" "コ") ("kya" "キャ") ("kyu" "キュ") ("kye" "キェ") ("kyo" "キョ"))) (its-defrule (car k) (cadr k)) (its-defrule (concat "k" (car k)) (concat "ッ" (cadr k)))) (its-defoutput "kk" "ッk") (its-defoutput "kky" "ッky") (dolist (s '(("sa" "サ") ("si" "シ") ("su" "ス") ("se" "セ") ("so" "ソ") ("sya" "シャ") ("syu" "シュ") ("sye" "シェ") ("syo" "ショ") ("sha" "シャ") ("shi" "シ") ("shu" "シュ") ("she" "シェ") ("sho" "ショ"))) (its-defrule (car s) (cadr s)) (its-defrule (concat "s" (car s)) (concat "ッ" (cadr s)))) (its-defoutput "ss" "ッs") (its-defoutput "ssy" "ッsy") (its-defoutput "ssh" "ッsh") (dolist (T '(("ta" "タ") ("ti" "チ") ("tu" "ツ") ("te" "テ") ("to" "ト") ("tya" "チャ") ("tyi" "ティ") ("tyu" "チュ") ("tye" "チェ") ("tyo" "チョ") ("tsu" "ツ"))) (its-defrule (car T) (cadr T)) (its-defrule (concat "t" (car T)) (concat "ッ" (cadr T)))) (its-defoutput "tt" "ッt") (its-defoutput "tty" "ッty") (its-defoutput "tts" "ッts") (dolist (c '(("cha" "チャ") ("chi" "チ") ("chu" "チュ") ("che" "チェ") ("cho" "チョ"))) (its-defrule (car c) (cadr c)) (its-defrule (concat "c" (car c)) (concat "ッ" (cadr c)))) (its-defoutput "cc" "ッc") (its-defoutput "cch" "ッch") (dolist (h '(("ha" "ハ") ("hi" "ヒ") ("hu" "フ") ("he" "ヘ") ("ho" "ホ") ("hya" "ヒャ") ("hyu" "ヒュ") ("hye" "ヒェ") ("hyo" "ヒョ"))) (its-defrule (car h) (cadr h)) (its-defrule (concat "h" (car h)) (concat "ッ" (cadr h)))) (its-defoutput "hh" "ッh") (its-defoutput "hhy" "ッhy") (dolist (f '(("fa" "ファ") ("fi" "フィ") ("fu" "フ") ("fe" "フェ") ("fo" "フォ"))) (its-defrule (car f) (cadr f)) (its-defrule (concat "f" (car f)) (concat "ッ" (cadr f)))) (its-defoutput "ff" "ッf") (dolist (r '(("ra" "ラ") ("ri" "リ") ("ru" "ル") ("re" "レ") ("ro" "ロ") ("rya" "リャ") ("ryu" "リュ") ("rye" "リェ") ("ryo" "リョ"))) (its-defrule (car r) (cadr r)) (its-defrule (concat "r" (car r)) (concat "ッ" (cadr r)))) (its-defoutput "rr" "ッr") (its-defoutput "rry" "ッry") (dolist (l '(("la" "ラ") ("li" "リ") ("lu" "ル") ("le" "レ") ("lo" "ロ") ("lya" "リャ") ("lyu" "リュ") ("lye" "リェ") ("lyo" "リョ"))) (its-defrule (car l) (cadr l)) (its-defrule (concat "l" (car l)) (concat "ッ" (cadr l)))) (its-defoutput "ll" "ッl") (its-defoutput "lly" "ッly") (dolist (g '(("ga" "ガ") ("gi" "ギ") ("gu" "グ") ("ge" "ゲ") ("go" "ゴ") ("gya" "ギャ") ("gyu" "ギュ") ("gye" "ギェ") ("gyo" "ギョ"))) (its-defrule (car g) (cadr g)) (its-defrule (concat "g" (car g)) (concat "ッ" (cadr g)))) (its-defoutput "gg" "ッg") (its-defoutput "ggy" "ッgy") (dolist (z '(("za" "ザ") ("zi" "ジ") ("zu" "ズ") ("ze" "ゼ") ("zo" "ゾ") ("zya" "ジャ") ("zyu" "ジュ") ("zye" "ジェ") ("zyo" "ジョ"))) (its-defrule (car z) (cadr z)) (its-defrule (concat "z" (car z)) (concat "ッ" (cadr z)))) (its-defoutput "zz" "ッz") (its-defoutput "zzy" "ッzy") (dolist (j '(("ja" "ジャ") ("ji" "ジ") ("ju" "ジュ") ("je" "ジェ") ("jo" "ジョ") ("jya" "ジャ") ("jyu" "ジュ") ("jye" "ジェ") ("jyo" "ジョ"))) (its-defrule (car j) (cadr j)) (its-defrule (concat "j" (car j)) (concat "ッ" (cadr j)))) (its-defoutput "jj" "ッj") (its-defoutput "jjy" "ッjy") (dolist (d '(("da" "ダ") ("di" "ヂ") ("du" "ヅ") ("de" "デ") ("do" "ド") ("dya" "ヂャ") ("dyi" "ディ") ("dyu" "ヂュ") ("dye" "ヂェ") ("dyo" "ヂョ"))) (its-defrule (car d) (cadr d)) (its-defrule (concat "d" (car d)) (concat "ッ" (cadr d)))) (its-defoutput "dd" "ッd") (its-defoutput "ddy" "ッdy") (dolist (b '(("ba" "バ") ("bi" "ビ") ("bu" "ブ") ("be" "ベ") ("bo" "ボ") ("bya" "ビャ") ("byu" "ビュ") ("bye" "ビェ") ("byo" "ビョ"))) (its-defrule (car b) (cadr b)) (its-defrule (concat "b" (car b)) (concat "ッ" (cadr b)))) (its-defoutput "bb" "ッb") (its-defoutput "bby" "ッby") (dolist (p '(("pa" "パ") ("pi" "ピ") ("pu" "プ") ("pe" "ペ") ("po" "ポ") ("pya" "ピャ") ("pyu" "ピュ") ("pye" "ピェ") ("pyo" "ピョ"))) (its-defrule (car p) (cadr p)) (its-defrule (concat "p" (car p)) (concat "ッ" (cadr p)))) (its-defoutput "pp" "ッp") (its-defoutput "ppy" "ッpy") (dolist (v '(("va" "ヴァ") ("vi" "ヴィ") ("vu" "ヴ") ("ve" "ヴェ") ("vo" "ヴォ"))) (its-defrule (car v) (cadr v)) (its-defrule (concat "v" (car v)) (concat "ッ" (cadr v)))) (its-defoutput "vv" "ッv") (its-defrule "ma" "マ") (its-defrule "mi" "ミ") (its-defrule "mu" "ム") (its-defrule "me" "メ") (its-defrule "mo" "モ") (its-defrule "mya" "ミャ") (its-defrule "myu" "ミュ") (its-defrule "mye" "ミェ") (its-defrule "myo" "ミョ") (its-defrule "ya" "ヤ") (its-defrule "yi" "イ") (its-defrule "yu" "ユ") (its-defrule "yo" "ヨ") (its-defrule "ye" "イェ") (its-defrule "wa" "ワ") (its-defrule "wi" "ヰ") (its-defrule "wu" "ウ") (its-defrule "we" "ヱ") (its-defrule "wo" "ヲ") (its-defrule "kwa" "クヮ") (its-defrule "kwi" "クィ") (its-defrule "kwu" "ク") (its-defrule "kwe" "クェ") (its-defrule "kwo" "クォ") (its-defrule "gwa" "グヮ") (its-defrule "gwi" "グィ") (its-defrule "gwu" "グ") (its-defrule "gwe" "グェ") (its-defrule "gwo" "グォ") (its-defrule "tsa" "ツァ") (its-defrule "tsi" "ツィ") (its-defrule "tse" "ツェ") (its-defrule "tso" "ツォ") (its-defrule "na" "ナ") (its-defrule "ni" "ニ") (its-defrule "nu" "ヌ") (its-defrule "ne" "ネ") (its-defrule "no" "ノ") (its-defrule "nya" "ニャ") (its-defrule "nyu" "ニュ") (its-defrule "nye" "ニェ") (its-defrule "nyo" "ニョ") (its-defrule "xka" "ヵ") (its-defrule "xke" "ヶ") (its-defrule "xti" "ティ") (its-defrule "xdi" "ディ") (its-defrule "xdu" "ドゥ") (its-defrule "xde" "デェ") (its-defrule "xdo" "ドォ") (its-defrule "xwi" "ウィ") (its-defrule "xwe" "ウェ") (its-defrule "xwo" "ウォ") ;;; ;;; Zenkaku inputs ;;; (its-defrule (concat its-zenkaku-escape "0") "0") (its-defrule (concat its-zenkaku-escape "1") "1") (its-defrule (concat its-zenkaku-escape "2") "2") (its-defrule (concat its-zenkaku-escape "3") "3") (its-defrule (concat its-zenkaku-escape "4") "4") (its-defrule (concat its-zenkaku-escape "5") "5") (its-defrule (concat its-zenkaku-escape "6") "6") (its-defrule (concat its-zenkaku-escape "7") "7") (its-defrule (concat its-zenkaku-escape "8") "8") (its-defrule (concat its-zenkaku-escape "9") "9") (its-defrule (concat its-zenkaku-escape "A") "A") (its-defrule (concat its-zenkaku-escape "B") "B") (its-defrule (concat its-zenkaku-escape "C") "C") (its-defrule (concat its-zenkaku-escape "D") "D") (its-defrule (concat its-zenkaku-escape "E") "E") (its-defrule (concat its-zenkaku-escape "F") "F") (its-defrule (concat its-zenkaku-escape "G") "G") (its-defrule (concat its-zenkaku-escape "H") "H") (its-defrule (concat its-zenkaku-escape "I") "I") (its-defrule (concat its-zenkaku-escape "J") "J") (its-defrule (concat its-zenkaku-escape "K") "K") (its-defrule (concat its-zenkaku-escape "L") "L") (its-defrule (concat its-zenkaku-escape "M") "M") (its-defrule (concat its-zenkaku-escape "N") "N") (its-defrule (concat its-zenkaku-escape "O") "O") (its-defrule (concat its-zenkaku-escape "P") "P") (its-defrule (concat its-zenkaku-escape "Q") "Q") (its-defrule (concat its-zenkaku-escape "R") "R") (its-defrule (concat its-zenkaku-escape "S") "S") (its-defrule (concat its-zenkaku-escape "T") "T") (its-defrule (concat its-zenkaku-escape "U") "U") (its-defrule (concat its-zenkaku-escape "V") "V") (its-defrule (concat its-zenkaku-escape "W") "W") (its-defrule (concat its-zenkaku-escape "X") "X") (its-defrule (concat its-zenkaku-escape "Y") "Y") (its-defrule (concat its-zenkaku-escape "Z") "Z") (its-defrule (concat its-zenkaku-escape "a") "a") (its-defrule (concat its-zenkaku-escape "b") "b") (its-defrule (concat its-zenkaku-escape "c") "c") (its-defrule (concat its-zenkaku-escape "d") "d") (its-defrule (concat its-zenkaku-escape "e") "e") (its-defrule (concat its-zenkaku-escape "f") "f") (its-defrule (concat its-zenkaku-escape "g") "g") (its-defrule (concat its-zenkaku-escape "h") "h") (its-defrule (concat its-zenkaku-escape "i") "i") (its-defrule (concat its-zenkaku-escape "j") "j") (its-defrule (concat its-zenkaku-escape "k") "k") (its-defrule (concat its-zenkaku-escape "l") "l") (its-defrule (concat its-zenkaku-escape "m") "m") (its-defrule (concat its-zenkaku-escape "n") "n") (its-defrule (concat its-zenkaku-escape "o") "o") (its-defrule (concat its-zenkaku-escape "p") "p") (its-defrule (concat its-zenkaku-escape "q") "q") (its-defrule (concat its-zenkaku-escape "r") "r") (its-defrule (concat its-zenkaku-escape "s") "s") (its-defrule (concat its-zenkaku-escape "t") "t") (its-defrule (concat its-zenkaku-escape "u") "u") (its-defrule (concat its-zenkaku-escape "v") "v") (its-defrule (concat its-zenkaku-escape "w") "w") (its-defrule (concat its-zenkaku-escape "x") "x") (its-defrule (concat its-zenkaku-escape "y") "y") (its-defrule (concat its-zenkaku-escape "z") "z") (its-defrule (concat its-zenkaku-escape " ") " ") (its-defrule (concat its-zenkaku-escape "!") "!") (its-defrule (concat its-zenkaku-escape "@") "@") (its-defrule (concat its-zenkaku-escape "#") "#") (its-defrule (concat its-zenkaku-escape "$") "$") (its-defrule (concat its-zenkaku-escape "%") "%") (its-defrule (concat its-zenkaku-escape "^") "^") (its-defrule (concat its-zenkaku-escape "&") "&") (its-defrule (concat its-zenkaku-escape "*") "*") (its-defrule (concat its-zenkaku-escape "(") "(") (its-defrule (concat its-zenkaku-escape ")") ")") (its-defrule (concat its-zenkaku-escape "-") "−") (its-defrule (concat its-zenkaku-escape "=") "=") (its-defrule (concat its-zenkaku-escape "`") "`") (its-defrule (concat its-zenkaku-escape "\\") "¥") (its-defrule (concat its-zenkaku-escape "|") "|") (its-defrule (concat its-zenkaku-escape "_") "_") (its-defrule (concat its-zenkaku-escape "+") "+") (its-defrule (concat its-zenkaku-escape "~") " ̄") (its-defrule (concat its-zenkaku-escape "[") "[") (its-defrule (concat its-zenkaku-escape "]") "]") (its-defrule (concat its-zenkaku-escape "{") "{") (its-defrule (concat its-zenkaku-escape "}") "}") (its-defrule (concat its-zenkaku-escape ":") ":") (its-defrule (concat its-zenkaku-escape ";") ";") (its-defrule (concat its-zenkaku-escape "\"") "”") (its-defrule (concat its-zenkaku-escape "'") "’") (its-defrule (concat its-zenkaku-escape "<") "<") (its-defrule (concat its-zenkaku-escape ">") ">") (its-defrule (concat its-zenkaku-escape "?") "?") (its-defrule (concat its-zenkaku-escape "/") "/") (its-defrule (concat its-zenkaku-escape ",") ",") (its-defrule (concat its-zenkaku-escape ".") ".") ;;; ;;; Hankaku inputs ;;; (dolist (digit '( "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" )) (its-defrule (concat its-hankaku-escape digit) digit)) (dolist (symbol '( " " "!" "@" "#" "$" "%" "^" "&" "*" "(" ")" "-" "=" "`" "\\" "|" "_" "+" "~" "[" "]" "{" "}" ":" ";" "\"" "'" "<" ">" "?" "/" "," "." )) (its-defrule (concat its-hankaku-escape symbol) symbol)) (dolist (downcase '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z")) (its-defrule (concat its-hankaku-escape downcase) downcase)) (dolist (upcase '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z")) (its-defrule (concat its-hankaku-escape upcase) upcase)) ;; SYMBOL Input (its-defrule "z1" "○") (its-defrule "z!" "●") (its-defrule "z2" "▽") (its-defrule "z@" "▼") (its-defrule "z3" "△") (its-defrule "z#" "▲") (its-defrule "z4" "□") (its-defrule "z$" "■") (its-defrule "z5" "◇") (its-defrule "z%" "◆") (its-defrule "z6" "☆") (its-defrule "z^" "★") (its-defrule "z7" "◎") (its-defrule "z&" "£") (its-defrule "z8" "¢") (its-defrule "z*" "×") (its-defrule "z9" "♂") (its-defrule "z(" "【") (its-defrule "z0" "♀") (its-defrule "z)" "】") (its-defrule "z-" "〜") (its-defrule "z_" "∴") (its-defrule "z=" "≠") (its-defrule "z+" "±") (its-defrule "z\\" "\") (its-defrule "z|" "‖") (its-defrule "z`" "´") (its-defrule "z~" "¨") (its-defrule "zq" "《") (its-defrule "zQ" "〈") (its-defrule "zw" "》") (its-defrule "zW" "〉") ; e (its-defrule "zr" "々") (its-defrule "zR" "仝") (its-defrule "zt" "〆") (its-defrule "zT" "§") ; y u i o (its-defrule "zp" "〒") (its-defrule "zP" "↑") (its-defrule "z[" "『") (its-defrule "z{" "〔") (its-defrule "z]" "』") (its-defrule "z}" "〕") ; a (its-defrule "zs" "ヽ") (its-defrule "zS" "ヾ") (its-defrule "zd" "ゝ") (its-defrule "zD" "ゞ") (its-defrule "zf" "〃") (its-defrule "zF" "→") (its-defrule "zg" "‐") (its-defrule "zG" "—") (its-defrule "zh" "←") (its-defrule "zj" "↓") (its-defrule "zk" "↑") (its-defrule "zl" "→") (its-defrule "z;" "゛") (its-defrule "z:" "゜") (its-defrule "z\'" "‘") (its-defrule "z\"" "“") ; z (its-defrule "zx" ":-") (its-defrule "zX" ":-)") (its-defrule "zc" "〇") (its-defrule "zC" "℃") (its-defrule "zv" "※") (its-defrule "zV" "÷") (its-defrule "zb" "°") (its-defrule "zB" "←") (its-defrule "zn" "′") (its-defrule "zN" "↓") (its-defrule "zm" "″") (its-defrule "zM" "〓") (its-defrule "z," "‥") (its-defrule "z<" "≦") (its-defrule "z." "…") (its-defrule "z>" "≧") (its-defrule "z/" "・") (its-defrule "z?" "∞") ) (define-its-state-machine-append its-kata-map (if its-kata-enable-double-n (its-defrule "nn" "ン")) (its-defrule "-" its-kata-horizontal) (its-defrule "[" its-kata-open-bracket) (its-defrule "]" its-kata-close-bracket) (its-defrule "." its-kata-period) (its-defrule "," its-kata-comma) (if its-kata-enable-zenkaku-alphabet (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "!" "!") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "¥") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule ":" ":") (its-defrule ";" ";") (its-defrule "\"" "”") (its-defrule "'" "’") (its-defrule "<" "<") (its-defrule ">" ">") (its-defrule "?" "?") (its-defrule "/" "/")) (progn (its-defrule "1" "1") (its-defrule "2" "2") (its-defrule "3" "3") (its-defrule "4" "4") (its-defrule "5" "5") (its-defrule "6" "6") (its-defrule "7" "7") (its-defrule "8" "8") (its-defrule "9" "9") (its-defrule "0" "0") (its-defrule "!" "!") (its-defrule "@" "@") (its-defrule "#" "#") (its-defrule "$" "$") (its-defrule "%" "%") (its-defrule "^" "^") (its-defrule "&" "&") (its-defrule "*" "*") (its-defrule "(" "(") (its-defrule ")" ")") (its-defrule "=" "=") (its-defrule "`" "`") (its-defrule "\\" "\\") (its-defrule "|" "|") (its-defrule "_" "_") (its-defrule "+" "+") (its-defrule "{" "{") (its-defrule "}" "}") (its-defrule ":" ":") (its-defrule ";" ";") (its-defrule "\"" "\"") (its-defrule "'" "'") (its-defrule "<" "<") (its-defrule ">" ">") (its-defrule "?" "?") (its-defrule "/" "/"))) ) (provide 'its-kata) ;;; its-kata.el ends here. egg-4.2.0/its-zenkaku.el000066400000000000000000000111411252027163000150420ustar00rootroot00000000000000;;; its-zenkau.el --- Zenkaku ASCII Input ;;; -*- coding: utf-8 -*- ;;; in Egg Input Method Architecture ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (require 'its) (define-its-state-machine its-zenkaku-up-map "zenkaku-upcase" "A" Japanese "Map for zenkaku-upcase input." (dolist (ascii '(("0" . "0") ("1" . "1") ("2" . "2") ("3" . "3") ("4" . "4") ("5" . "5") ("6" . "6") ("7" . "7") ("8" . "8") ("9" . "9") (" " . " ") ("!" . "!") ("@" . "@") ("#" . "#") ("$" . "$") ("%" . "%") ("^" . "^") ("&" . "&") ("*" . "*") ("(" . "(") (")" . ")") ("-" . "−") ("=" . "=") ("`" . "`") ("\\" . "\") ("|" . "|") ("_" . "_") ("+" . "+") ("~" . "〜") ("[" . "[") ("]" . "]") ("{" . "{") ("}" . "}") (":" . ":") (";" . ";") ("\"" . "”") ("'" . "´") ("<" . "<") (">" . ">") ("?" . "?") ("/" . "/") ("," . ",") ("." . ".") ("a" . "A") ("b" . "B") ("c" . "C") ("d" . "D") ("e" . "E") ("f" . "F") ("g" . "G") ("h" . "H") ("i" . "I") ("j" . "J") ("k" . "K") ("l" . "L") ("m" . "M") ("n" . "N") ("o" . "O") ("p" . "P") ("q" . "Q") ("r" . "R") ("s" . "S") ("t" . "T") ("u" . "U") ("v" . "V") ("w" . "W") ("x" . "X") ("y" . "Y") ("z" . "Z") ("A" . "A") ("B" . "B") ("C" . "C") ("D" . "D") ("E" . "E") ("F" . "F") ("G" . "G") ("H" . "H") ("I" . "I") ("J" . "J") ("K" . "K") ("L" . "L") ("M" . "M") ("N" . "N") ("O" . "O") ("P" . "P") ("Q" . "Q") ("R" . "R") ("S" . "S") ("T" . "T") ("U" . "U") ("V" . "V") ("W" . "W") ("X" . "X") ("Y" . "Y") ("Z" . "Z"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule in out)))) (define-its-state-machine-append its-zenkaku-up-map) (define-its-state-machine its-zenkaku-down-map "zenkaku-downcase" "a" Japanese "Map for zenkaku-downcase input." (dolist (ascii '(("0" . "0") ("1" . "1") ("2" . "2") ("3" . "3") ("4" . "4") ("5" . "5") ("6" . "6") ("7" . "7") ("8" . "8") ("9" . "9") (" " . " ") ("!" . "!") ("@" . "@") ("#" . "#") ("$" . "$") ("%" . "%") ("^" . "^") ("&" . "&") ("*" . "*") ("(" . "(") (")" . ")") ("-" . "−") ("=" . "=") ("`" . "`") ("\\" . "\") ("|" . "|") ("_" . "_") ("+" . "+") ("~" . "〜") ("[" . "[") ("]" . "]") ("{" . "{") ("}" . "}") (":" . ":") (";" . ";") ("\"" . "”") ("'" . "´") ("<" . "<") (">" . ">") ("?" . "?") ("/" . "/") ("," . ",") ("." . ".") ("a" . "a") ("b" . "b") ("c" . "c") ("d" . "d") ("e" . "e") ("f" . "f") ("g" . "g") ("h" . "h") ("i" . "i") ("j" . "j") ("k" . "k") ("l" . "l") ("m" . "m") ("n" . "n") ("o" . "o") ("p" . "p") ("q" . "q") ("r" . "r") ("s" . "s") ("t" . "t") ("u" . "u") ("v" . "v") ("w" . "w") ("x" . "x") ("y" . "y") ("z" . "z") ("A" . "A") ("B" . "B") ("C" . "C") ("D" . "D") ("E" . "E") ("F" . "F") ("G" . "G") ("H" . "H") ("I" . "I") ("J" . "J") ("K" . "K") ("L" . "L") ("M" . "M") ("N" . "N") ("O" . "O") ("P" . "P") ("Q" . "Q") ("R" . "R") ("S" . "S") ("T" . "T") ("U" . "U") ("V" . "V") ("W" . "W") ("X" . "X") ("Y" . "Y") ("Z" . "Z"))) (let ((in (car ascii)) (out (cdr ascii))) (its-defrule in out)))) (define-its-state-machine-append its-zenkaku-down-map) (provide 'its-zenkaku) egg-4.2.0/its.el000066400000000000000000001336431252027163000134100ustar00rootroot00000000000000;;; its.el --- Input Translation System ;;; -*- coding: utf-8 -*- ;; Copyright (C) 1999,2000 PFU LIMITED ;; Author: NIIBE Yutaka ;; KATAYAMA Yoshio ;; Maintainer: TOMURA Satoru ;; Keywords: input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'cl)) (declare-function egg-do-auto-fill () "egg.el" nil) (declare-function egg-setup-invisibility-spec () "egg.el" nil) (declare-function egg-set-face (beg end face &optional object) "egg.el" nil) (declare-function egg-remove-all-text-properties (from to &optional object) "egg.el" nil) (declare-function egg-convert-region (start end &optional context) "egg-cnv.el" nil) (declare-function egg-conversion-fence-p () "egg-cnv.el" nil) (declare-function egg-exit-conversion () "egg-cnv.el" nil) (defgroup its nil "Input Translation System of Tamago 4." :group 'egg) (defcustom its-enable-fullwidth-alphabet t "*Enable fullwidth symbol input." :group 'its :type 'boolean) (defcustom its-barf-on-invalid-keyseq nil "*Don't allow invalid key sequence in input buffer, if non-NIL." :group 'its :type 'boolean) (defcustom its-delete-by-keystroke nil "*Delete characters as if cancel input keystroke, if nin-NIL. This variable is overriden by `its-delete-by-character'." :group 'its :type 'boolean) (defcustom its-delete-by-character nil "*Delete a character as a unit even if just after input, if nin-NIL. This variable override `its-delete-by-keystroke'." :group 'its :type 'boolean) (defcustom its-fence-invisible nil "*Make fences invisible, if nin-NIL." :group 'its :type 'boolean) (defcustom its-fence-open "|" "*String of fence start mark. (should not be null string)" :group 'its :type '(string :valid-regexp ".+")) (defcustom its-fence-continue "+" "*String of fence start mark. (should not be null string)" :group 'its :type '(string :valid-regexp ".+")) (defcustom its-fence-close "|" "*String of fence end mark. (should not be null string)" :group 'its :type '(string :valid-regexp ".+")) (defcustom its-fence-face nil "*Face (or alist of languages and faces) of text in fences." :group 'its :type '(choice face (repeat :tag "Language-Face alist" (cons :tag "Language-Face" (choice :tag "Language" (const Japanese) (const :tag "Default" t) (symbol :tag "Other")) face)))) (defvar its-current-map nil) (make-variable-buffer-local 'its-current-map) (put 'its-current-map 'permanent-local t) (defvar its-current-select-func nil) (make-variable-buffer-local 'its-current-select-func) (put 'its-current-select-func 'permanent-local t) (defvar its-previous-select-func nil) (make-variable-buffer-local 'its-previous-select-func) (put 'its-previous-select-func 'permanent-local t) ;; Data structure in ITS ;; (1) SYL and CURSOR ;; ;; "SYL" stands for something like a syllable. ;; ;; ::= ( . ( . )) ; Determined: DSYL ;; | ; Intermediate: ISYL ;; | ( . ) ; Verbatim: VSYL ;; | nil ; None ;; ;; ; ::= ;; ; ( . ( . )) ;; ;; ::= "string" of key sequence ;; ::= "string" ;; ;; ::= integer which specifies point ;; ;; ::= nil ; Previous SYL is active (input will go that SYL) ;; | t ; input makes new SYL. DEL deletes previous SYL ;; | its-cursor ; DEL breaks previous SYL, input makes new SYL ;; Data structures in ITS ;; (2) State machine which recognizes SYL ;; ;; ::= ( . ) ;; ;; ::= ; intermediate state ;; | ; terminal state ;; ;; ::= ( . ) ;; ::= ( ... ) ;; ::= ( . ) ;; ::= Positive INTEGER which specifies KEY STROKE ;; | -1 ; means END of key stroke ;; ;; Only applicable for last transition. ;; ::= ( ( . ( . ))... ) ;; ::= something like "[a-z]" which specifies class of key. ;; | NIL; means ANY of key (except END of the key stroke) ;; ;; ;; ::= "string" ;; ;; ::= nil ;; | ;; ;; ::= integer which specifies how many key strokes we go back ;; ;; ::= "string" ;; Data structure in ITS (3) Map ;; ;; ::= ( . ) ;; ::= "string" ;; ::= "string" ;; ::= "string" ;; ::= ;; (defsubst its-new-state (output keyseq back) (cons output (cons keyseq back))) (defsubst its-new-map (name indicator language) (cons name (cons indicator (cons language (its-new-state "" "" nil))))) (defsubst its-get-indicator (map) (nth 1 map)) (defsubst its-get-language (map) (nth 2 map)) (defsubst its-get-start-state (map) (nthcdr 3 map)) (defsubst its-get-kst/t (state) (cdr (cdr state))) (defsubst its-set-kst (state kst) (setcdr (cdr state) kst)) (defsubst its-get-keyseq (state) (car (cdr state))) (defsubst its-set-keyseq (state keyseq) (setcar (cdr state) keyseq)) (defun its-get-keyseq-cooked (state) (let ((keyseq (its-get-keyseq state)) (back (its-get-kst/t state))) (if back (substring keyseq 0 back) keyseq))) (defsubst its-kst-p (kst/t) (not (or (numberp kst/t) (null kst/t)))) (defun its-get-output (syl/state &optional no-eval) (setq syl/state (car syl/state)) (cond ((null (consp syl/state)) syl/state) ((and (null no-eval) (eq (car syl/state) 'eval)) (eval (mapcar (lambda (s) (if (stringp s) (copy-sequence s) s)) (cdr syl/state)))) (t (copy-sequence syl/state)))) (defsubst its-set-output (state output) (setcar state output)) (defsubst its-get-keyseq-syl (syl) (let ((l (cdr syl))) (cond ((stringp l) ; DSYL l) ((numberp l) ; VSYL (car syl)) ((numberp (cdr l)) (substring (car l) 0 (cdr l))) (t (car l))))) (defsubst its-eob-keyexpr (eob) (car (cdr eob))) (defsubst its-eob-back (eob) (cdr (cdr eob))) (defsubst its-make-class+back (class back) (cons class back)) (defsubst its-make-otherwise (output class+back) (cons output class+back)) (defsubst its-DSYL-with-back-p (syl) (and (consp (cdr syl)) (numberp (its-get-kst/t syl)))) (defsubst its-concrete-DSYL-p (syl) (stringp (cdr syl))) (defsubst its-make-concrete-DSYL (syl) (if (consp (cdr syl)) (cons (its-get-output syl) (its-get-keyseq-syl syl)) syl)) ;; ;; (defvar its-mode-map (let ((map (make-sparse-keymap)) (i 33)) (define-key map "\C-a" 'its-beginning-of-input-buffer) (define-key map "\C-b" 'its-backward-SYL) (define-key map "\C-c" 'its-cancel-input) (define-key map "\C-d" 'its-delete-SYL) (define-key map "\C-e" 'its-end-of-input-buffer) (define-key map "\C-f" 'its-forward-SYL) (define-key map "\C-g" 'its-select-previous-mode) (define-key map "\C-]" 'its-cancel-input) (define-key map "\C-h" 'its-mode-help-command) (define-key map "\C-k" 'its-kill-line) ;; (define-key map "\C-l" 'its-exit-mode) (define-key map "\C-m" 'its-exit-mode) ; RET (define-key map [return] 'its-exit-mode) (define-key map "\C-t" 'its-transpose-chars) (define-key map "\C-w" 'its-kick-convert-region) (define-key map "\C-y" 'its-yank) (define-key map "\M-y" 'its-yank-pop) (define-key map [backspace] 'its-delete-backward-SYL) (define-key map [delete] 'its-delete-backward-SYL) (define-key map [(meta backspace)] 'its-delete-backward-SYL-by-keystroke) (define-key map [(meta delete)] 'its-delete-backward-SYL-by-keystroke) (define-key map [right] 'its-forward-SYL) (define-key map [left] 'its-backward-SYL) (while (< i 127) (define-key map (vector i) 'its-self-insert-char) (setq i (1+ i))) (define-key map " " 'its-kick-convert-region-or-self-insert) (define-key map "\177" 'its-delete-backward-SYL) ;; (define-key map "\M-p" 'its-previous-map) (define-key map "\M-n" 'its-next-map) (define-key map "\M-h" 'its-hiragana) ; hiragana-region for input-buffer (define-key map "\M-k" 'its-katakana) (define-key map "\M-<" 'its-half-width) (define-key map "\M->" 'its-full-width) map) "Keymap for ITS mode.") (fset 'its-mode-map its-mode-map) (defvar its-fence-mode nil) (make-variable-buffer-local 'its-fence-mode) (put 'its-fence-mode 'permanent-local t) (defvar egg-sub-mode-map-alist nil) (or (assq 'its-fence-mode egg-sub-mode-map-alist) (setq egg-sub-mode-map-alist (cons '(its-fence-mode . its-mode-map) egg-sub-mode-map-alist))) (defun its-enter/leave-fence (&optional old new) (setq its-fence-mode (its-in-fence-p))) (add-hook 'egg-enter/leave-fence-hook 'its-enter/leave-fence) (defvar its-setup-fence-before-insert-SYL nil) (defun its-get-fence-face () (if (null (consp its-fence-face)) its-fence-face (cdr (assq t its-fence-face)))) (defun its-put-cursor (cursor) (unless (eq its-barf-on-invalid-keyseq 'its-keyseq-test) (let ((p (point)) (str (copy-sequence "!"))) (set-text-properties 0 1 (list 'read-only t 'invisible 'egg 'intangible 'its-part-2 'its-cursor cursor 'point-entered 'egg-enter/leave-fence 'point-left 'egg-enter/leave-fence 'modification-hooks '(egg-modify-fence)) str) (insert str) (goto-char p)))) (defun its-set-cursor-status (cursor) (delete-region (point) (1+ (point))) (its-put-cursor cursor) cursor) (defvar its-context nil) ;; ;; +-- START property ;; | --- CURSOR Property ;; | / ;; v v v-- END Property ;; |SYL SYL ^ SYL| ;; ^^^ ^^^ ^^^------ SYL Property ;; <-------><----> ;; intangible intangible ;; 1 2 ;; (defun its-setup-fence-mode () (let ((open-props '(its-start t intangible its-part-1)) (close-props '(rear-nonsticky t its-end t intangible its-part-2)) (p (point)) p1) (if (or (null (stringp its-fence-open)) (zerop (length its-fence-open)) (null (stringp its-fence-continue)) (zerop (length its-fence-continue)) (null (stringp its-fence-close)) (zerop (length its-fence-close))) (error "invalid fence")) ;; Put open-fence before inhibit-read-only to detect read-only (insert (if its-context its-fence-continue its-fence-open)) (egg-setup-invisibility-spec) (let ((inhibit-read-only t)) (setq p1 (point)) (add-text-properties p p1 open-props) (if its-context (put-text-property p p1 'its-context its-context)) (insert its-fence-close) (add-text-properties p1 (point) close-props) (if its-fence-invisible (put-text-property p (point) 'invisible 'egg)) (put-text-property p (point) 'read-only t) (goto-char p1) (its-put-cursor t)))) (defun its-start (key context) (let ((its-setup-fence-before-insert-SYL t) (its-context context)) (its-input nil key))) (defun its-restart (str set-prop beginning context) (let ((its-context context) p) (its-setup-fence-mode) (setq p (point)) (put-text-property 0 (length str) 'intangible 'its-part-1 str) (insert str) (if set-prop (progn (delete-region (point) (1+ (point))) (its-setup-yanked-portion p (point)))) (if beginning (its-beginning-of-input-buffer)))) (defun its-self-insert-char () (interactive) (let ((inhibit-read-only t) (key last-command-event) (cursor (get-text-property (point) 'its-cursor)) (syl (get-text-property (1- (point)) 'its-syl))) (cond ((or (eq cursor t) (not (eq (get-text-property (1- (point)) 'its-map) its-current-map))) (put-text-property (- (point) (length (its-get-output syl))) (point) 'its-syl (its-make-concrete-DSYL syl)) (setq syl nil)) (cursor (setq syl nil))) (its-input syl key))) (defun its-initial-ISYL () (its-get-start-state (symbol-value its-current-map))) (defun its-make-VSYL (keyseq) (cons keyseq (length keyseq))) (defun its-input-error () (error "Invalid Romaji Sequence")) (defun its-input (syl key) (let ((output (car syl)) (k/kk/s (cdr syl))) (or syl (setq syl (its-initial-ISYL))) (cond ((numberp k/kk/s) ;; k/kk/s is "point in keyseq" (its-input-to-vsyl syl key k/kk/s output)) ((and its-barf-on-invalid-keyseq (null (its-keyseq-acceptable-p (vector key) syl))) ;; signal before altering (its-input-error)) (t ;; It's ISYL (its-state-machine syl key 'its-buffer-ins/del-SYL))))) (defun its-input-to-vsyl (syl key point output) (if (< key 0) (its-set-cursor-status t) (let ((len (length output))) (if (= len point) ;; point is at end of VSYL. Don't need to call state machine. (its-buffer-ins/del-SYL (its-make-VSYL (concat output (vector key))) syl nil) ;; point is at middle of VSYL. (let ((new-keyseq (concat (substring output 0 point) (vector key) (substring output point)))) (its-state-machine-keyseq new-keyseq 'its-buffer-ins/del-SYL)))))) ;;; ;;; ITS State Machine ;;; (defvar its-disable-special-action nil) ;; Return CURSOR (defun its-state-machine (state key emit) (let ((next-state (its-get-next-state state key)) expr-output-back kst/t output keyseq back) (cond ;; proceed to next status ((and next-state (not (and its-disable-special-action (eq (its-get-kst/t next-state) t)))) (setq kst/t (its-get-kst/t next-state) output (its-get-output next-state) keyseq (its-get-keyseq next-state)) (cond ;; Special actions. ((eq kst/t t) (if (stringp output) (funcall emit (cons output keyseq) state 'its-cursor) (funcall emit (cons "" keyseq) state 'its-cursor) (apply (car output) (cdr output)))) ;; Still, it's a intermediate state. ((its-kst-p kst/t) (funcall emit next-state state nil)) ;; It's negative integer which specifies how many ;; characters we go backwards (kst/t (funcall emit next-state state 'its-cursor) (its-state-machine-keyseq (substring keyseq kst/t) emit (< key 0))) ;; Here we arrive to a terminal state. ;; Emit a DSYL, and go ahead. (t (funcall emit next-state state 'its-cursor)))) ;; push back by otherwise status ((and (>= key 0) (setq expr-output-back (its-get-otherwise state key))) (setq keyseq (concat (its-get-keyseq state) (vector key)) back (its-eob-back expr-output-back)) (funcall emit (cons (or (its-get-output expr-output-back) (its-get-output (its-goto-state (substring keyseq 0 back)))) (cons keyseq back)) state t) (its-state-machine-keyseq (substring keyseq back) emit)) ((eq its-barf-on-invalid-keyseq 'its-keyseq-test) 'its-keyseq-test-failed) ;; No next state for KEY. It's invalid sequence. (its-barf-on-invalid-keyseq (its-input-error)) (t ;; XXX Should make DSYL (instead of VSYL)? (setq keyseq (concat (its-get-keyseq state) (if (> key 0) (vector key)))) (funcall emit (its-make-VSYL keyseq) state nil))))) (defvar its-latest-SYL nil "The latest SYL inserted.") (defsubst its-update-latest-SYL (syl) (setq its-latest-SYL syl)) ;; Return CURSOR (defun its-state-machine-keyseq (keyseq emit &optional eol) (let ((i 0) (len (length keyseq)) (syl (its-initial-ISYL)) cursor) (while (< i len) (cond ((numberp (cdr syl)) ;; VSYL - no need looping (funcall emit (its-make-VSYL (concat (car syl) (substring keyseq i))) syl nil) (setq cursor nil i len)) (t (setq cursor (its-state-machine syl (aref keyseq i) emit)))) (if (eq cursor 'its-keyseq-test-failed) (setq i len) (setq syl (if cursor (its-initial-ISYL) its-latest-SYL) i (1+ i)))) (if (and eol (not (eq cursor 'its-keyseq-test-failed))) (its-state-machine syl -1 emit) cursor))) (defun its-buffer-ins/del-SYL (newsyl oldsyl cursor) (if its-setup-fence-before-insert-SYL (progn (setq its-setup-fence-before-insert-SYL nil) (its-setup-fence-mode))) (let ((inhibit-read-only t) (output (copy-sequence (its-get-output newsyl))) (face (its-get-fence-face))) (its-buffer-delete-SYL oldsyl) (its-update-latest-SYL newsyl) (add-text-properties 0 (length output) (list 'its-map its-current-map 'its-syl newsyl 'read-only t 'intangible 'its-part-1) output) (if face (egg-set-face 0 (length output) face output)) (insert output) (its-set-cursor-status cursor))) (defun its-buffer-delete-SYL (syl) (let ((len (length (its-get-output syl)))) (delete-region (- (point) len) (point)))) (defun its-get-next-state (state key) (let ((kst/t (its-get-kst/t state))) (and (listp kst/t) (cdr (assq key (car kst/t)))))) ;; XXX XXX XXX (defun its-otherwise-match (expr key) (or (null expr) ; ::= NIL means "ANY" (let ((case-fold-search nil)) (string-match expr (char-to-string key))))) (defun its-get-otherwise (state key) (let* ((kst/t (its-get-kst/t state)) (ebl (cdr kst/t)) expr-output-back) (while ebl (setq expr-output-back (car ebl)) (let ((expr (its-eob-keyexpr expr-output-back))) (if (its-otherwise-match expr key) (setq ebl nil) (setq ebl (cdr ebl))))) expr-output-back)) (defun its-keyseq-acceptable-p (keyseq &optional syl eol) (let ((i 0) (len (length keyseq)) (its-barf-on-invalid-keyseq 'its-keyseq-test) (its-latest-SYL nil) (emit (lambda (nsyl osyl cursor) (its-update-latest-SYL nsyl) cursor)) (its-current-map its-current-map) (its-current-select-func its-current-select-func) (its-previous-select-func its-previous-select-func) cursor) (if (null syl) (setq syl (its-initial-ISYL))) (if (numberp (cdr syl)) nil (while (and syl (< i len)) (setq cursor (its-state-machine syl (aref keyseq i) emit)) (cond ((eq cursor 'its-keyseq-test-failed) (setq syl nil)) (cursor (setq syl (its-initial-ISYL))) (t its-latest-SYL)) (setq i (1+ i))) (if (and syl eol) (setq cursor (its-state-machine syl -1 emit))) (not (eq cursor 'its-keyseq-test-failed))))) ;;; ;;; Name --> map ;;; ;;; ITS name: string (defvar its-map-alist nil) (defun its-get-map (name) (assoc name its-map-alist)) (defun its-register-map (map) (let* ((name (car map)) (place (assoc name its-map-alist))) (if place (setcdr place (cdr map)) (setq its-map-alist (cons map its-map-alist))) map)) (defmacro define-its-state-machine (map name indicator lang doc &rest exprs) (let ((its-current-map map)) (set map (its-new-map name indicator (if (eq (car-safe lang) 'quote) (nth 1 lang) lang))) (eval (cons 'progn exprs)) (set map (its-map-compaction (symbol-value map)))) `(defconst ,map (its-map-rebuild ',(symbol-value map)) ,doc)) (defmacro define-its-state-machine-append (map &rest exprs) `(let ((func (lambda () (let ((its-current-map ',map)) ,@exprs))) (hook ',(intern (concat (symbol-name map) "-hook")))) (if (null (boundp ',map)) (add-hook hook func t) (funcall func) (run-hooks hook) (set hook nil)))) ;; Data structure for map compaction ;; ::= ( ) ; atom ;; | ( ( . )) ; cons cell ;; ;; ::= integer ; 0 or negative - usage count ;; ; positive - generated common sub-tree ;; ;; ::= integer ; subject to compaction ;; | nil ; not subject to compaction (defvar its-compaction-enable nil) (defvar its-compaction-hash-table) (defvar its-compaction-integer-table) (defvar its-compaction-counter-1) (defvar its-compaction-counter-2) (defvar its-compaction-list) (defun its-map-compaction (map) (if its-compaction-enable (let ((its-compaction-hash-table (make-vector 1000 nil)) (its-compaction-integer-table (make-vector 138 nil)) (its-compaction-counter-1 1) (its-compaction-counter-2 0) (its-compaction-list nil)) (its-map-compaction-internal map nil nil) (cons (vconcat (nreverse its-compaction-list)) map)) map)) (defmacro its-compaction-set-lr (node lr val) `(if (eq ,lr 'car) (setcar ,node ,val) (setcdr ,node ,val))) (defmacro its-compaction-new-node () '(1- (setq its-compaction-counter-1 (1+ its-compaction-counter-1)))) (defmacro its-compaction-new-cse (node) `(1- (setq its-compaction-list (cons ,node its-compaction-list) its-compaction-counter-2 (1+ its-compaction-counter-2)))) (defmacro its-concat (&rest args) `(concat ,@(mapcar (lambda (arg) (if (stringp arg) arg `(if (numberp ,arg) (number-to-string ,arg) ,arg))) args))) (defmacro its-compaction-hash (name node parent lr type) (if (null type) `(let ((hash (intern (its-concat ,@name) its-compaction-hash-table))) (if (null (boundp hash)) (car (set hash (list* (its-compaction-new-node) ,parent ,lr))) (setq hash (symbol-value hash)) (if (consp (cdr hash)) (setcdr hash (its-compaction-set-lr (cadr hash) (cddr hash) (its-compaction-new-cse ,node)))) (its-compaction-set-lr ,parent ,lr (cdr hash)) (car hash))) `(let ((hash ,(if (eq type 'integer) `(intern (its-concat ,@name) its-compaction-hash-table) `(aref its-compaction-integer-table (+ ,node 10))))) (if (null ,(if (eq type 'integer) '(boundp hash) 'hash)) (setq hash (,@(if (eq type 'integer) '(set hash) `(aset its-compaction-integer-table (+ ,node 10))) (cons (its-compaction-new-node) (its-compaction-new-cse ,node)))) ,(if (eq type 'integer) '(setq hash (symbol-value hash)))) (its-compaction-set-lr ,parent ,lr (cdr hash)) (car hash)))) (defun its-map-compaction-internal (map parent lr &optional force) (cond ((consp map) (let* ((candidate (or (null (stringp (car map))) (cdr map))) (sexp (or force (eq (car map) 'eval))) (l (its-map-compaction-internal (car map) map 'car sexp)) (r (its-map-compaction-internal (cdr map) map 'cdr sexp))) (if (or sexp (and candidate l r)) (its-compaction-hash (l " " r) map parent lr nil)))) ((stringp map) (its-compaction-hash ("STR" map) map parent lr nil)) ((integerp map) (if (and (>= map -10) (< map 128)) (its-compaction-hash nil map parent lr small-int) (its-compaction-hash ("INT" map) map parent lr integer))) ((null map) 0) ((symbolp map) (its-compaction-hash ("SYM" (symbol-name map)) map parent lr nil)))) (defvar its-map-rebuild-subtrees) (defun its-map-rebuild (map) (if (vectorp (car map)) (let ((its-map-rebuild-subtrees (car map)) (len (length (car map))) (i 0) node) (while (< i len) (setq node (aref its-map-rebuild-subtrees i)) (if (consp node) (its-map-rebuild-1 node)) (setq i (1+ i))) (its-map-rebuild-1 (cdr map)) (cdr map)) map)) (defun its-map-rebuild-1 (map) (let (lr) (while (consp map) (if (consp (setq lr (car map))) (its-map-rebuild-1 lr) (if (integerp lr) (setcar map (aref its-map-rebuild-subtrees lr)))) (setq lr map map (cdr map))) (if (integerp map) (setcdr lr (aref its-map-rebuild-subtrees map))))) ;; ;; Construct State Machine ;; (defun its-defrule (input output &optional back enable-overwrite) "入力 INPUT を認識し, OUTPUT を出力するようにステートマシンを構成する。 BACK が(負の)整数の時は, OUTPUT を出力した後, BACK の分 key stroke を 戻って動くものとする。変換規則はもっとも最近に its-define-state-machine された変換表に登録される。 Return last state." (let ((state (its-goto-state input (if enable-overwrite t 'dup-check)))) (its-set-output state output) (its-set-kst state back) state)) (defun its-defrule* (input output &optional interim-output enable-overwrite) (let* ((state (its-goto-state input (if enable-overwrite t 'dup-check)))) (its-set-kst state nil) (its-set-interim-terminal-state state output) (if interim-output (its-set-output state interim-output)) state)) (defvar its-parent-states) (defun its-goto-state (input &optional build-if-none) (let ((len (length input)) (i 0) (state (its-initial-ISYL)) brand-new next-state key) (setq its-parent-states nil) (while (< i len) (setq its-parent-states (cons state its-parent-states) key (aref input i) i (1+ i) next-state (its-get-next-state state key)) (cond (next-state (setq state next-state)) ((null build-if-none) (error "No such state (%s)" input)) (t (if (not (or brand-new (= i 1) (its-get-kst/t state))) (its-set-interim-terminal-state state)) (setq state (its-make-next-state state key (concat (its-get-output state) (list key))) brand-new t)))) (if (and (eq build-if-none 'dup-check) (null brand-new)) (error "Duplicated definition (%s)" input)) state)) (defun its-set-interim-terminal-state (state &optional output) (its-make-next-state state -1 (or output (its-get-output state t))) (its-defrule-otherwise state output)) (defun its-defoutput (input display) (let ((state (its-goto-state input))) (its-set-output state display))) (defun its-define-otherwise (state otherwise) (let ((kst (its-get-kst/t state))) (if kst (setcdr kst (cons otherwise (cdr kst))) (its-set-kst state (cons nil (cons otherwise nil)))))) (defun its-defrule-otherwise (state output &optional class back) (its-define-otherwise state (its-make-otherwise output (its-make-class+back class (or back -1))))) (defun its-make-next-state (state key output &optional back) (let ((next-state (its-new-state output (concat (its-get-keyseq state) (if (> key 0) (list key))) back)) (kst (its-get-kst/t state))) (cond ((null kst) (its-set-kst state (list (list (cons key next-state))))) ((consp kst) (setcar kst (cons (cons key next-state) (car kst)))) (t (error "Can't make new state after %S" (its-get-keyseq state)))) next-state)) (defmacro its-defrule-select-mode-temporally (input select-func) `(its-defrule ,input '(its-select-mode-temporally ,(intern (concat "its-select-" (symbol-name select-func)))) t)) ;;; (defun its-set-part-1 (beg end) (let ((inhibit-point-motion-hooks t) (str (buffer-substring beg end))) (goto-char beg) (delete-region beg end) (put-text-property 0 (- end beg) 'intangible 'its-part-1 str) (insert str))) (defun its-set-part-2 (beg end) (let ((inhibit-point-motion-hooks t) (str (buffer-substring beg end))) (goto-char beg) (delete-region beg end) (put-text-property 0 (- end beg) 'intangible 'its-part-2 str) (insert str))) (defun its-search-beginning () (if (get-text-property (1- (point)) 'its-start) (point) (previous-single-property-change (point) 'its-start))) (defun its-search-end () (if (get-text-property (point) 'its-end) (point) (next-single-property-change (point) 'its-end))) (defun its-beginning-of-input-buffer () (interactive) (let ((inhibit-read-only t)) (its-input-end) (let ((begpos (its-search-beginning))) (its-set-part-2 begpos (point)) (goto-char begpos)) (its-put-cursor t))) (defun its-end-of-input-buffer () (interactive) (let ((inhibit-read-only t)) (its-input-end) (let ((endpos (its-search-end))) (its-set-part-1 (point) endpos) (goto-char endpos)) (its-put-cursor t))) (defun its-kill-line (n) (interactive "p") (let ((inhibit-read-only t)) (its-input-end) (if (> n 0) (if (= (its-search-beginning) (point)) (its-cancel-input) (delete-region (its-search-end) (point)) (its-put-cursor t)) (if (= (its-search-end) (point)) (its-cancel-input) (delete-region (its-search-beginning) (point)) (its-put-cursor t))))) (defun its-cancel-input () (interactive) (let ((inhibit-read-only t)) (delete-region (its-search-beginning) (its-search-end)) (its-put-cursor t) (its-exit-mode-internal))) ;; TODO: move in VSYL (defun its-backward-SYL (n) (interactive "p") (let ((inhibit-read-only t) syl p old-point) (its-input-end) (setq syl (get-text-property (1- (point)) 'its-syl) p (point) old-point (point)) (while (and syl (> n 0)) (setq p (- p (length (its-get-output syl)))) (setq syl (get-text-property (1- p) 'its-syl)) (setq n (1- n))) ;; Make SYLs have property of "part 2" (its-set-part-2 p old-point) (goto-char p) (its-put-cursor t) (if (> n 0) (signal 'beginning-of-buffer nil)))) ;; TODO: move in VSYL (defun its-forward-SYL (n) (interactive "p") (let ((inhibit-read-only t) syl p old-point) (its-input-end) (setq syl (get-text-property (point) 'its-syl) p (point) old-point (point)) (while (and syl (> n 0)) (setq p (+ p (length (its-get-output syl)))) (setq syl (get-text-property p 'its-syl)) (setq n (1- n))) ;; Make SYLs have property of "part 1" (its-set-part-1 old-point p) (goto-char p) (its-put-cursor t) (if (> n 0) (signal 'end-of-buffer nil)))) ;; TODO: handle VSYL. KILLFLAG (defun its-delete-SYL (n killflag) (interactive "p\nP") (let ((inhibit-read-only t) syl p) (its-input-end) (setq syl (get-text-property (point) 'its-syl) p (point)) (while (and syl (> n 0)) (setq p (+ p (length (its-get-output syl)))) (setq syl (get-text-property p 'its-syl)) (setq n (1- n))) (if (> n 0) (progn (its-put-cursor t) (signal 'end-of-buffer nil)) (delete-region (point) p) (its-put-cursor t) (its-exit-mode-if-empty)))) ;; TODO: killflag (defun its-delete-backward-SYL (n killflag) (interactive "p\nP") (let ((inhibit-read-only t) (syl (get-text-property (1- (point)) 'its-syl)) (cursor (get-text-property (point) 'its-cursor))) (if (null syl) (signal 'beginning-of-buffer nil) (if (or (eq cursor t) (and cursor its-delete-by-character)) (its-delete-backward-SYL-internal n killflag) (its-delete-backward-within-SYL syl n killflag))))) ;; TODO: killflag (defun its-delete-backward-SYL-internal (n killflag) (let ((syl (get-text-property (1- (point)) 'its-syl)) (p (point))) (while (and syl (> n 0)) (setq p (- p (length (its-get-output syl)))) (setq syl (get-text-property (1- p) 'its-syl)) (setq n (1- n))) (if (> n 0) (signal 'beginning-of-buffer nil) (delete-region p (1+ (point))) ; also delete cursor (its-put-cursor t) (its-exit-mode-if-empty)))) (defun its-delete-backward-SYL-by-keystroke (n killflag) (interactive "p\nP") (let ((inhibit-read-only t) (its-delete-by-keystroke t)) (its-delete-backward-SYL n killflag))) ;; TODO: killflag (defun its-delete-backward-within-SYL (syl n killflag) (let* ((keyseq (its-get-keyseq-syl syl)) (len (length keyseq)) (p (- (point) (length (its-get-output syl)))) (its-current-map (get-text-property (1- (point)) 'its-map)) back pp) (if (< n 0) (signal 'args-out-of-range (list (- (point) n) (point)))) (if its-delete-by-keystroke (while (null (or (eq p pp) (its-concrete-DSYL-p syl))) (setq pp p) (while (and (setq syl (get-text-property (1- p) 'its-syl)) (its-DSYL-with-back-p syl) (<= (setq back (- (its-get-kst/t syl))) len) (> back (- len n)) (equal (substring (its-get-keyseq syl) (- back)) (substring keyseq 0 back))) (setq keyseq (concat (its-get-keyseq-syl syl) keyseq) len (length keyseq) p (- p (length (its-get-output syl))))) (if (and (eq p pp) syl (> n len)) (setq n (- n len) keyseq (its-get-keyseq-syl syl) len (length keyseq) p (- p (length (its-get-output syl)))))) (if (and (> n len) (its-concrete-DSYL-p syl)) (setq len 1))) (if (> n len) (setq n (- n len) len 0)) (while (and (> n len) (setq syl (get-text-property (1- p) 'its-syl))) (setq n (1- n) p (- p (length (its-get-output syl))))) (if (> n len) (signal 'beginning-of-buffer nil)) (delete-region p (point)) (if (> len n) (its-state-machine-keyseq (substring keyseq 0 (- len n)) 'its-buffer-ins/del-SYL) (its-set-cursor-status (if (or (null its-delete-by-keystroke) (its-concrete-DSYL-p (get-text-property (1- p) 'its-syl))) t 'its-cursor)))) ;; exit its mode after unbind variables (its-exit-mode-if-empty)) (defun its-transpose-chars (n) (interactive "p") (let ((inhibit-read-only t) (syl (get-text-property (1- (point)) 'its-syl)) (cursor (get-text-property (point) 'its-cursor)) keyseq len) (cond ((null syl) (signal 'beginning-of-buffer nil)) ((eq cursor t) (if (and (= n 1) (get-text-property (1+ (point)) 'its-end)) (progn (its-backward-SYL 1) (setq syl (get-text-property (1- (point)) 'its-syl)) (if (null syl) (signal 'beginning-of-buffer nil)))) (its-buffer-delete-SYL syl) (while (> n 0) (if (get-text-property (1+ (point)) 'its-end) (progn (its-buffer-ins/del-SYL syl nil t) (signal 'end-of-buffer nil))) (its-forward-SYL 1) (setq n (1- n))) (while (< n 0) (if (get-text-property (1- (point)) 'its-start) (progn (its-buffer-ins/del-SYL syl nil t) (signal 'beginning-of-buffer nil))) (its-backward-SYL 1) (setq n (1+ n))) (its-buffer-ins/del-SYL syl nil t)) (t (setq keyseq (its-get-keyseq-syl syl) len (length keyseq)) (cond ((or (> n 1) (<= len 1)) (signal 'end-of-buffer nil)) ((>= (- n) len) (signal 'beginning-of-buffer nil)) (t (setq n (if (> n 0) (- -1 n) (1- n))) (setq keyseq (concat (substring keyseq 0 n) (substring keyseq -1) (substring keyseq n -1))) (if (and its-barf-on-invalid-keyseq (null (its-keyseq-acceptable-p keyseq))) (its-input-error)) (delete-region (- (point) (length (its-get-output syl))) (point)) (its-state-machine-keyseq keyseq 'its-buffer-ins/del-SYL))))))) (defun its-yank (&optional arg) (interactive "*P") (let ((inhibit-read-only t)) (its-input-end) (yank arg) (its-setup-yanked-portion (region-beginning) (region-end)))) (defun its-yank-pop (arg) (interactive "*p") (let ((inhibit-read-only t)) (its-input-end) (yank-pop arg) (its-setup-yanked-portion (region-beginning) (region-end)))) (defun its-setup-yanked-portion (start end) (let* ((yank-before (eq (point) end)) (source (buffer-substring start end)) (no-prop-source (buffer-substring-no-properties start end)) (len (length source))) (remove-text-properties 0 len '(intangible nil) source) (put-text-property 0 len 'its-syl (cons no-prop-source no-prop-source) source) (if its-fence-face (egg-set-face 0 len (its-get-fence-face) source)) (delete-region start end) (if yank-before (progn (add-text-properties 0 len '(read-only t intangible its-part-1) source) (insert source)) (add-text-properties 0 len '(read-only t intangible its-part-2) source) (insert source) (set-marker (mark-marker) (point) (current-buffer)) (goto-char start)) (its-put-cursor t))) ;; Return VOID (defun its-input-end () (if (null (eq its-barf-on-invalid-keyseq 'its-keyseq-test)) (let ((cursor (get-text-property (point) 'its-cursor))) ;; key "END" (if (null cursor) (its-input (get-text-property (1- (point)) 'its-syl) -1)) (delete-region (point) (1+ (point)))))) (defun its-exit-mode () "Exit ITS mode." (interactive) (if (its-in-fence-p) (let ((inhibit-read-only t)) (its-input-end) (its-put-cursor t) (its-exit-mode-internal)) (its-select-previous-mode t))) (defun its-exit-mode-if-empty () (and (get-text-property (1- (point)) 'its-start) (get-text-property (1+ (point)) 'its-end) (its-exit-mode-internal))) ;; TODO: handle overwrite-mode, insertion-hook, fill... (defun its-exit-mode-internal (&optional proceed-to-conversion) (let (start end s context str) (its-select-previous-mode t) ;; Delete CURSOR (delete-region (point) (1+ (point))) ;; Delete open fence (setq s (its-search-beginning) start (previous-single-property-change s 'its-start nil (point-min)) context (get-text-property start 'its-context)) (delete-region start s) ;; Delete close fence (setq end (its-search-end)) (delete-region end (next-single-property-change end 'its-end nil (point-max))) (if proceed-to-conversion (egg-convert-region start end context) ;; Remove all properties (goto-char start) (setq str (buffer-substring start end)) (egg-remove-all-text-properties 0 (length str) str) (delete-region start end) (insert str) (egg-do-auto-fill) (run-hooks 'input-method-after-insert-chunk-hook)))) (defun its-kick-convert-region () (interactive) (let ((inhibit-read-only t)) (its-input-end) (its-put-cursor t) (its-exit-mode-internal t))) (defun its-kick-convert-region-or-self-insert () (interactive) (let ((syl (and (null (get-text-property (point) 'its-cursor)) (get-text-property (1- (point)) 'its-syl)))) (if (its-keyseq-acceptable-p (vector last-command-event) syl) (its-self-insert-char) (its-kick-convert-region)))) (defun its-in-fence-p () (and (eq (get-text-property (point) 'intangible) 'its-part-2) (get-text-property (point) 'read-only))) (defvar its-translation-result "" "") (defun its-ins/del-SYL-batch (newsyl oldsyl cursor) (its-update-latest-SYL newsyl) (if (and newsyl (consp (cdr newsyl)) (not (its-kst-p (its-get-kst/t newsyl)))) ;; DSYL (let ((output (its-get-output newsyl)) (oldlen (length its-translation-result))) (setq its-translation-result (concat its-translation-result output)))) cursor) (defun its-translate-region (start end) (interactive "r") (its-translate-region-internal start end) (egg-remove-all-text-properties start (point))) (defun its-translate-region-internal (start end) (setq its-translation-result "") (goto-char start) (let ((i 0) (syl (its-initial-ISYL)) ;; temporally enable DING (its-barf-on-invalid-keyseq t) cursor) (while (< (point) end) (let ((key (following-char))) (setq cursor (its-state-machine syl key 'its-ins/del-SYL-batch)) (forward-char 1) (if cursor (setq syl (its-initial-ISYL)) (setq syl its-latest-SYL)))) (if (eq syl its-latest-SYL) (its-state-machine syl -1 'its-ins/del-SYL-batch)) (delete-region start end) (insert its-translation-result))) (defun its-set-mode-line-title () (let ((title (its-get-indicator (symbol-value its-current-map)))) (setq current-input-method-title (if its-previous-select-func (concat "<" title ">") title)) (force-mode-line-update))) (defun its-select-mode-temporally (func) (let ((select-func its-current-select-func)) (let ((its-previous-select-func t)) (funcall func)) (if (null its-previous-select-func) (setq its-previous-select-func select-func)) (its-set-mode-line-title))) (defun its-select-previous-mode (&optional quiet) (interactive) (if (null its-previous-select-func) (if (null quiet) (beep)) (funcall its-previous-select-func) (setq its-previous-select-func nil) (its-set-mode-line-title))) ;;; its-hiragana : hiragana-region for input-buffer (defun its-hiragana () (interactive) (its-convert (lambda (str) (japanese-hiragana str)))) ;;; its-katakana : katanaka-region for input-buffer (defun its-katakana () (interactive) (its-convert (lambda (str) (japanese-katakana str)))) (defconst its-full-half-table (make-vector 100 nil)) (defconst its-half-full-table (make-vector 100 nil)) (let ((table '((?  . ?\ ) (?, . ?,) (?. . ?.) (?、 . ?,) (?。 . ?.) (?: . ?:) (?; . ?\;) (?? . ??) (?! . ?!) (?´ . ?') (?` . ?`) (?^ . ?^) (?_ . ?_) (? ̄ . ?~) (?ー . ?-) (?— . ?-) (?‐ . ?-) (?/ . ?/) (?\ . ?\\) (?〜 . ?~) (?| . ?|) (?‘ . ?`) (?’ . ?') (?“ . ?\") (?” . ?\") (?( . ?\() (?) . ?\)) (?[ . ?[) (?] . ?]) (?{ . ?{) (?} . ?}) (?〈 . ?<) (?〉 . ?>) (?+ . ?+) (?− . ?-) (?= . ?=) (?< . ?<) (?> . ?>) (?′ . ?') (?″ . ?\") (?¥ . ?\\) (?$ . ?$) (?% . ?%) (?# . ?#) (?& . ?&) (?* . ?*) (?@ . ?@) (?0 . ?0) (?1 . ?1) (?2 . ?2) (?3 . ?3) (?4 . ?4) (?5 . ?5) (?6 . ?6) (?7 . ?7) (?8 . ?8) (?9 . ?9) (?A . ?A) (?B . ?B) (?C . ?C) (?D . ?D) (?E . ?E) (?F . ?F) (?G . ?G) (?H . ?H) (?I . ?I) (?J . ?J) (?K . ?K) (?L . ?L) (?M . ?M) (?N . ?N) (?O . ?O) (?P . ?P) (?Q . ?Q) (?R . ?R) (?S . ?S) (?T . ?T) (?U . ?U) (?V . ?V) (?W . ?W) (?X . ?X) (?Y . ?Y) (?Z . ?Z) (?a . ?a) (?b . ?b) (?c . ?c) (?d . ?d) (?e . ?e) (?f . ?f) (?g . ?g) (?h . ?h) (?i . ?i) (?j . ?j) (?k . ?k) (?l . ?l) (?m . ?m) (?n . ?n) (?o . ?o) (?p . ?p) (?q . ?q) (?r . ?r) (?s . ?s) (?t . ?t) (?u . ?u) (?v . ?v) (?w . ?w) (?x . ?x) (?y . ?y) (?z . ?z)))) (dolist (pair table) (set (intern (char-to-string (car pair)) its-full-half-table) (cdr pair)) (set (intern (char-to-string (cdr pair)) its-half-full-table) (car pair)))) ;;; its-half-width : half-width-region for input-buffer (defun its-half-width () (interactive) (its-convert (lambda (str) (mapconcat (lambda (c) (char-to-string (or (symbol-value (intern-soft (char-to-string c) its-full-half-table)) c))) str "")))) ;;; its-full-width : full-width-region for input-buffer (defun its-full-width () (interactive) (its-convert (lambda (str) (mapconcat (lambda (c) (char-to-string (or (symbol-value (intern-soft (char-to-string c) its-half-full-table)) c))) str "")))) (defun its-convert (func) (let ((inhibit-read-only t)) (unwind-protect (progn (its-input-end) (let* ((start (its-search-beginning)) (end (its-search-end)) (old-str (buffer-substring start end)) (len (length old-str)) (p 0) (new-str "")) (put-text-property 0 len 'intangible 'its-part-1 old-str) (while (< p len) (let* ((prop (text-properties-at p old-str)) (cmp (memq 'composition prop)) (old (its-get-output (plist-get prop 'its-syl))) (new (funcall func old)) (new-len (length new)) syl) (unless (equal new old) (when cmp (if (eq prop cmp) (setq prop (cddr prop)) (setcdr (nthcdr (- (length prop) (length cmp) 1) prop) (cddr cmp)))) (setq syl (copy-sequence new)) (plist-put prop 'its-syl (cons syl syl))) (add-text-properties 0 new-len prop new) (setq new-str (concat new-str new) p (+ p (length old))))) (delete-region start end) (insert new-str))) (its-put-cursor t)))) (defun its-mode () "\\{its-mode-map}" ;; dummy function to get docstring ) (defun its-mode-help-command () "Display documentation for ITS mode." (interactive) (with-output-to-temp-buffer "*Help*" (princ "ITS mode:\n") (princ (documentation 'its-mode)) (help-setup-xref (cons #'help-xref-mode (current-buffer)) (called-interactively-p 'any)))) ;; The `point-left' hook function will never be called in Emacs 21.2.50 ;; when the command `next-line' is used in the last line of a buffer ;; which isn't terminated with a newline or the command `previous-line' ;; is used in the first line of a buffer. (defun its-next-line (&optional arg) "Go to the end of the line if the line isn't terminated with a newline, otherwise run `next-line' as usual." (interactive "p") (if (= (line-end-position) (point-max)) (end-of-line) (forward-line arg))) (defun its-previous-line (&optional arg) "Go to the beginning of the line if it is called in the first line of a buffer, otherwise run `previous-line' as usual." (interactive "p") (if (= (line-beginning-position) (point-min)) (beginning-of-line) (if arg (forward-line (- 0 arg)) (forward-line -1)))) (substitute-key-definition 'next-line 'its-next-line its-mode-map global-map) (substitute-key-definition 'previous-line 'its-previous-line its-mode-map global-map) (defun its-select-hiragana (&optional temporally mode-line-unchange) (interactive "P") (let ((inhibit-read-only t)) (if temporally (its-select-mode-temporally 'its-select-hiragana) (require 'its-hira) (cond ((its-in-fence-p) (its-input-end) (its-put-cursor t)) ((egg-conversion-fence-p) (egg-exit-conversion))) (setq its-current-select-func 'its-select-hiragana its-current-map 'its-hira-map) (if (null mode-line-unchange) (its-set-mode-line-title))))) (defun its-select-katakana (&optional temporally mode-line-unchange) (interactive "P") (let ((inhibit-read-only t)) (if temporally (its-select-mode-temporally 'its-select-katakana) (require 'its-kata) (cond ((its-in-fence-p) (its-input-end) (its-put-cursor t)) ((egg-conversion-fence-p) (egg-exit-conversion))) (setq its-current-select-func 'its-select-katakana its-current-map 'its-kata-map) (if (null mode-line-unchange) (its-set-mode-line-title))))) (provide 'its) ;;; its.el ends here egg-4.2.0/menudiag.el000066400000000000000000000533611252027163000144000ustar00rootroot00000000000000;;; menudiag.el --- Minibuffer Menu System ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc ;; Author: NIIBE Yutaka ;; Maintainer: TOMURA Satoru ;; Keywords: mule, multilingual, input method ;; This file is part of EGG. ;; EGG 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, or (at your option) ;; any later version. ;; EGG 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; Inspired by the menu subsystem of EGG V3.0 ;; ;; Completely different implementation, using keymap and recursive edit. ;;; Code: (eval-when-compile (require 'cl)) ;; ;; Data structure of MENU ;; ;; ::= ( menu ) ;; ::= STRING ;; ::= ( ... ) ;; ::= | ( . ) ;; ;; ::= | INTEGER | STRING (Must *NOT* cons cell) ;; ;; ; ;; ;; ::= ( ... ) ;; ::= ( ... ) ;; (defgroup menudiag nil "Input Translation System of Tamago 4." :group 'egg) (defcustom menudiag-select-without-return nil "*Number keys not only goes the item, but also select the item, if non-NIL." :group 'menudiag :type 'boolean) (defvar menudiag-mode-map (let ((map (make-sparse-keymap)) ch) (setq ch ?0) (while (<= ch ?9) (define-key map (char-to-string ch) 'menudiag-goto-item) (setq ch (1+ ch))) (setq ch ?a) (while (<= ch ?z) (define-key map (char-to-string ch) 'menudiag-goto-item) (setq ch (1+ ch))) (setq ch ?A) (while (<= ch ?Z) (define-key map (char-to-string ch) 'menudiag-goto-item) (setq ch (1+ ch))) (setq ch ?\C-0) (while (<= ch ?\C-9) (define-key map (vector ch) 'digit-argument) (setq ch (1+ ch))) (define-key map [?\C--] 'negative-argument) (define-key map [?\C-u] 'universal-argument) (define-key map " " 'menudiag-forward-item) (define-key map "\C-a" 'menudiag-beginning-of-line) (define-key map "\C-e" 'menudiag-end-of-line) (define-key map "\M-<" 'menudiag-beginning-of-items) (define-key map "\M->" 'menudiag-end-of-items) (define-key map "\C-f" 'menudiag-forward-item) (define-key map "\C-b" 'menudiag-backward-item) (define-key map "\C-n" 'menudiag-next-line) (define-key map "\C-p" 'menudiag-previous-line) (define-key map "\C-]" 'menudiag-exit) (define-key map "\C-g" 'menudiag-exit-one-level) (define-key map "\C-l" 'menudiag-redraw) (define-key map "\C-m" 'menudiag-select-this-item) (define-key map "\M-v" 'menudiag-list-other-window) (define-key map "?" 'menudiag-list-other-window) (define-key map [return] 'menudiag-select-this-item) (define-key map [left] 'menudiag-backward-item) (define-key map [right] 'menudiag-forward-item) (define-key map [up] 'menudiag-previous-line) (define-key map [down] 'menudiag-next-line) (define-key map [exit] 'menudiag-exit) (define-key map [t] 'undefined) map) "Keymap for MENU.") (defun menudiag-menu-p (item) (and (consp item) (eq 'menu (car item)))) (defun menudiag-item-string (item) (if (stringp item) item (format "%s" (car item)))) (defun menudiag-item-value (item) (if (stringp item) item (cdr item))) (defsubst menudiag-item-width (item) (+ 4 (string-width (menudiag-item-string item)))) (defun menudiag-make-selection-list (item-list line-width) (let ((l nil) (line nil) (width 0) (i 0)) (while item-list (let* ((item (car item-list)) (item-width (menudiag-item-width item))) (if (and line (or (>= (+ width item-width) line-width) (>= i 36))) (setq l (cons (reverse line) l) line nil width 0 i 0)) (setq line (cons item line) width (+ width (menudiag-item-width item)) i (1+ i) item-list (cdr item-list)))) (if line (reverse (cons (reverse line) l)) (reverse l)))) (defvar menudiag-show-all nil) (make-variable-buffer-local 'menudiag-show-all) (defvar menudiag-continuation nil) (make-variable-buffer-local 'menudiag-continuation) (defvar menudiag-return-contin nil) (make-variable-buffer-local 'menudiag-return-contin) (defvar menudiag-value nil) (make-variable-buffer-local 'menudiag-value) (defvar menudiag-done nil) (make-variable-buffer-local 'menudiag-done) ;; Entry function (defun menudiag-select (menu &optional list-all continuation return-contin) (let ((enable-recursive-minibuffers t)) (setq menudiag-return-contin return-contin) (menudiag-select-internal menu list-all continuation) (if (eq menudiag-done t) menudiag-value (signal 'quit "")))) (defvar menudiag-line nil) (make-variable-buffer-local 'menudiag-line) (defvar menudiag-linepos 0) (make-variable-buffer-local 'menudiag-linepos) (defvar menudiag-pos-in-line 0) (make-variable-buffer-local 'menudiag-pos-in-line) (defun menudiag-follow-continuation () (let* ((item (car menudiag-continuation)) (value (menudiag-item-value item)) (pos (menudiag-search-item item))) (unless pos (error "no such item: %s" (menudiag-item-string item))) (menudiag-goto-line (car pos)) (menudiag-goto-item-internal (cdr pos)) (when (menudiag-menu-p value) (menudiag-select-internal value menudiag-show-all (cdr menudiag-continuation)) (menudiag-redraw) (when menudiag-done (when menudiag-return-contin (setq menudiag-value (cons item menudiag-value))) (setq unread-command-events (cons 'exit unread-command-events)))))) (defvar menudiag-minibuffer-list nil) (defvar menudiag-variable-alist nil) (defmacro menudiag-send-variables (&rest args) `(setq menudiag-variable-alist (list ,@(mapcar (lambda (var) `(cons ',var ,var)) args)))) (defmacro menudiag-send-variables-with-value (&rest args) `(setq menudiag-variable-alist ,(let ((alist (list 'list))) (while args (nconc alist `((cons ',(car args) ,(cadr args)))) (setq args (cddr args))) alist))) (defun menudiag-receive-variables () (while menudiag-variable-alist (set (caar menudiag-variable-alist) (cdar menudiag-variable-alist)) (setq menudiag-variable-alist (cdr menudiag-variable-alist)))) (defvar menudiag-minibuf-prompt nil) (make-variable-buffer-local 'menudiag-minibuf-prompt) (defvar menudiag-current-items nil) (make-variable-buffer-local 'menudiag-current-items) (defvar menudiag-selection-list nil) (make-variable-buffer-local 'menudiag-selection-list) (defun menudiag-minibuffer-hook () (interactive) (remove-hook 'minibuffer-setup-hook 'menudiag-minibuffer-hook) (setq menudiag-minibuffer-list (cons (current-buffer) menudiag-minibuffer-list)) (buffer-disable-undo) (menudiag-receive-variables) (menudiag-beginning-of-items) (when menudiag-continuation (menudiag-follow-continuation)) (when (and menudiag-show-all (null menudiag-done)) (menudiag-list-other-window))) (defun menudiag-select-internal (menu all &optional continuation) (menudiag-send-variables-with-value menudiag-value menudiag-value menudiag-continuation continuation menudiag-return-contin menudiag-return-contin menudiag-show-all all menudiag-minibuf-prompt (cadr menu) menudiag-current-items (car (cddr menu)) menudiag-selection-list (menudiag-make-selection-list (car (cddr menu)) (- (window-width (minibuffer-window)) (string-width (cadr menu))))) (add-hook 'minibuffer-setup-hook 'menudiag-minibuffer-hook) (unwind-protect (progn (read-from-minibuffer "" "" menudiag-mode-map) (menudiag-receive-variables)) (setq menudiag-minibuffer-list (cdr menudiag-minibuffer-list)) (remove-hook 'minibuffer-setup-hook 'menudiag-minibuffer-hook) ;; for egg's point-enterd/left hooks (save-excursion (goto-char (point-min))))) (defun menudiag-make-menu-formatted-string (item-list) (let ((i -1)) (mapconcat (function (lambda (item) (setq i (1+ i)) (format " %c.%s" (menudiag-item-num-to-char i) (menudiag-item-string item)))) item-list ""))) ;; ITEM No --> Character (defun menudiag-item-num-to-char (num) (let ((char)) (cond ((<= num 9) (setq char (+ ?0 num))) (t (setq char (+ ?a (- num 10)))) ) char)) ;; Character --> ITEM No (defun menudiag-char-to-item-num (ch) (let ((num)) (cond ((and (<= ?0 ch) (<= ch ?9)) (setq num (- ch ?0))) ((and (<= ?a ch) (<= ch ?z)) (setq num (+ 10 (- ch ?a)))) ((and (<= ?A ch) (<= ch ?Z)) (setq num (+ 10 (- ch ?A)))) (t (setq num 1000))) num)) (defun menudiag-check-current-menu () (or (eq (current-buffer) (car menudiag-minibuffer-list)) (error "menudiag: not current menu"))) (defun menudiag-goto-item () (interactive) (menudiag-check-current-menu) (let ((ch last-command-event) (n 0)) (setq n (menudiag-char-to-item-num ch)) (if (>= n (length menudiag-line)) (error "No such item") (menudiag-goto-item-internal n) (if menudiag-select-without-return (menudiag-select-this-item))))) (defun menudiag-goto-item-internal (n) (let ((p (+ (length menudiag-minibuf-prompt) 3)) (i 0)) (setq menudiag-pos-in-line n) (while (< i menudiag-pos-in-line) (setq p (+ p (length (menudiag-item-string (nth i menudiag-line))) 4)) (setq i (1+ i))) (goto-char p))) (defun menudiag-beginning-of-items () (interactive) (menudiag-check-current-menu) (menudiag-goto-line 0) (menudiag-beginning-of-line)) (defun menudiag-end-of-items () (interactive) (menudiag-check-current-menu) (menudiag-goto-line (1- (length menudiag-selection-list))) (menudiag-end-of-line)) (defun menudiag-beginning-of-line () (interactive) (menudiag-check-current-menu) (menudiag-goto-item-internal 0)) (defun menudiag-end-of-line () (interactive) (menudiag-check-current-menu) (menudiag-goto-item-internal (1- (length menudiag-line)))) ;; Should retain compatibility. Must. ;; ;;(defun menudiag-forward-item () ;; (interactive) ;; (if (< pos-in-line (1- (length line))) ;; (menudiag-goto-item-internal (1+ pos-in-line)) ;; (if (>= linepos (1- (length selection-list))) ;; (signal 'end-of-buffer "") ;; (menudiag-goto-line (1+ linepos)) ;; (menudiag-beginning-of-line)))) ;; ;;(defun menudiag-backward-item () ;; (interactive) ;; (if (< 0 pos-in-line) ;; (menudiag-goto-item-internal (1- pos-in-line)) ;; (if (< linepos 1) ;; (signal 'beginning-of-buffer "") ;; (menudiag-goto-line (1- linepos)) ;; (menudiag-end-of-line)))) ;; ;;(defun menudiag-goto-line (n) ;; (if (or (>= n (length selection-list)) (< n 0)) ;; (ding) ;; (setq line (nth n selection-list) ;; linepos n) ;; (delete-region (point-min) (point-max)) ;; (insert (menudiag-make-menu-formatted-string line)))) ;; (defun menudiag-forward-item (n) (interactive "p") (menudiag-forward-item-internal n)) (defun menudiag-backward-item (n) (interactive "p") (menudiag-forward-item-internal (- n))) (defun menudiag-forward-item-internal (n) (menudiag-check-current-menu) (setq n (+ n menudiag-pos-in-line)) (while (< n 0) (menudiag-goto-line (1- menudiag-linepos)) (setq n (+ n (length menudiag-line)))) (while (>= n (length menudiag-line)) (setq n (- n (length menudiag-line))) (menudiag-goto-line (1+ menudiag-linepos))) (menudiag-goto-item-internal n)) (defun menudiag-goto-line (n) (let ((len (length menudiag-selection-list))) (when (< n 0) (setq n (+ (% n len) len))) (when (>= n len) (setq n (% n len))) (setq menudiag-line (nth n menudiag-selection-list) menudiag-linepos n) (let ((inhibit-read-only t)) (erase-buffer) (insert menudiag-minibuf-prompt (menudiag-make-menu-formatted-string menudiag-line)) (set-text-properties (point-min) (point-max) '(read-only t))))) (defun menudiag-next-line (n) (interactive "p") (menudiag-next-line-internal n)) (defun menudiag-previous-line (n) (interactive "p") (menudiag-next-line-internal (- n))) (defun menudiag-next-line-internal (n) (menudiag-check-current-menu) (menudiag-goto-line (+ menudiag-linepos n)) (if (< menudiag-pos-in-line (length menudiag-line)) (menudiag-goto-item-internal menudiag-pos-in-line) (menudiag-end-of-line))) (defun menudiag-redraw () (interactive) (menudiag-check-current-menu) (menudiag-goto-line menudiag-linepos) (menudiag-goto-item-internal menudiag-pos-in-line)) (defun menudiag-exit-one-level () (interactive) (menudiag-check-current-menu) (menudiag-exit-minibuffer)) (defun menudiag-exit () (interactive) (menudiag-check-current-menu) (unless menudiag-done (setq menudiag-done 'quit)) (menudiag-exit-minibuffer)) (defun menudiag-select-this-item (&optional all) (interactive) (menudiag-check-current-menu) (let* ((item (nth menudiag-pos-in-line menudiag-line)) (v (menudiag-item-value item))) (if (menudiag-menu-p v) (progn (menudiag-restore-window) (menudiag-select-internal v all) (menudiag-redraw) (cond (menudiag-done (when menudiag-return-contin (setq menudiag-value (cons item menudiag-value))) (menudiag-exit-minibuffer)) (all (menudiag-list-other-window)))) (setq menudiag-value (if menudiag-return-contin (list item) (menudiag-item-value item)) menudiag-done t) (menudiag-exit-minibuffer)))) (defun menudiag-search-item (item) (let ((selection-list menudiag-selection-list) (line 0) rest) (while (and selection-list (null (setq rest (memq item (car selection-list))))) (setq selection-list (cdr selection-list) line (1+ line))) (and selection-list (cons line (- (length (car selection-list)) (length rest)))))) (defconst menudiag-selection-map (let ((map (make-sparse-keymap)) (ch ?0)) (while (<= ch ?9) (define-key map (char-to-string ch) 'menudiag-selection-goto) (setq ch (1+ ch))) (define-key map "q" 'menudiag-retun-to-minibuf) (define-key map "\C-b" 'previous-completion) (define-key map "\M-b" 'previous-completion) (define-key map "\C-f" 'next-completion) (define-key map "\M-f" 'next-completion) (define-key map " " 'next-completion) (define-key map "\C-g" 'menudiag-selection-exit-one-level) (define-key map "\C-m" 'menudiag-choose-item) (define-key map "\C-]" 'menudiag-selection-exit) (define-key map "\177" 'menudiag-selection-goto-delete) (define-key map [delete] 'menudiag-selection-goto-delete) (define-key map [backspace] 'menudiag-selection-goto-delete) (define-key map [right] 'next-completion) (define-key map [left] 'previous-completion) (define-key map [return] 'menudiag-choose-item) (define-key map [mouse-2] 'menudiag-mouse-choose-item) map) "keymap for menu selection mode") (defvar menudiag-window-conf nil) (make-variable-buffer-local 'menudiag-window-conf) (defvar menudiag-selection-buffer nil) (make-variable-buffer-local 'menudiag-selection-buffer) (defvar menudiag-selection-main-buffer nil) (make-variable-buffer-local 'menudiag-selection-main-buffer) (defun menudiag-selection-mode () (kill-all-local-variables) (make-local-variable 'inhibit-read-only) (setq buffer-read-only t inhibit-read-only nil) (add-hook 'post-command-hook 'menudiag-selection-align-to-item nil t) (use-local-map menudiag-selection-map) (setq mode-name "Menudiag Selection") (setq major-mode 'menudiag-selection-mode)) (defun menudiag-max-item-width (items) (apply 'max (mapcar 'menudiag-item-width items))) (defun menudiag-buffer-show-function () (menudiag-receive-variables) (let* ((items menudiag-current-items) (digits (length (number-to-string (length items)))) (form (concat "%" (number-to-string digits) "d. %s")) (columns (max 1 (/ (window-width (selected-window)) (+ digits (menudiag-max-item-width items))))) (width (/ (window-width (selected-window)) columns)) (col 0) (n 0) str p) (insert " ") (while items (setq p (point) str (format form n (menudiag-item-string (car items)))) (insert str) (set-text-properties p (point) '(mouse-face highlight)) (setq col (1+ col) n (1+ n) items (cdr items)) (if items (if (/= col columns) (insert (make-string (- width (string-width str)) ?\ )) (insert "\n ") (setq col 0)))) (goto-char (point-min)) (set-buffer-modified-p nil) (menudiag-selection-mode))) (defun menudiag-buffer-name (prompt) (let ((len (1- (length prompt)))) (generate-new-buffer-name (if (= (aref prompt len) ?:) (substring prompt 0 len) prompt)))) (defun menudiag-list-other-window () (interactive) (menudiag-check-current-menu) (let ((window (and menudiag-selection-buffer (get-buffer-window menudiag-selection-buffer)))) (if window (select-window window) (let ((temp-buffer-show-hook 'menudiag-buffer-show-function) (main-buf (current-buffer)) (selection-list menudiag-selection-list) (linepos menudiag-linepos) (n (1+ menudiag-pos-in-line))) (setq menudiag-window-conf (current-window-configuration)) (menudiag-send-variables menudiag-current-items) (with-output-to-temp-buffer (menudiag-buffer-name menudiag-minibuf-prompt) (setq menudiag-selection-buffer standard-output)) (switch-to-buffer-other-window menudiag-selection-buffer) (setq menudiag-selection-main-buffer main-buf menudiag-selection-list selection-list) (while (> linepos 0) (setq linepos (1- linepos) n (+ n (length (car selection-list))) selection-list (cdr selection-list))) (next-completion n))))) (defun menudiag-check-current-menu-list () (or (eq menudiag-selection-main-buffer (car menudiag-minibuffer-list)) (error "menudiag: not current menu list"))) (defun menudiag-choose-item () (interactive) (menudiag-choose-item-internal nil)) (defun menudiag-mouse-choose-item (event) (interactive "e") (set-buffer (window-buffer (caadr event))) (menudiag-choose-item-internal event)) (defun menudiag-choose-item-internal (event) (menudiag-check-current-menu-list) (let ((org-buf menudiag-selection-main-buffer) (sel-buf (current-buffer)) (item-list menudiag-selection-list) (l 0) tmp-buf n) (with-temp-buffer (setq tmp-buf (current-buffer)) (set-buffer sel-buf) (setq completion-reference-buffer tmp-buf) (if event (choose-completion event) (choose-completion)) (set-buffer tmp-buf) (setq n (string-to-number (buffer-string)))) (pop-to-buffer org-buf) (while (and item-list (>= n (length (car item-list)))) (setq l (1+ l) n (- n (length (car item-list))) item-list (cdr item-list))) (menudiag-goto-line l) (menudiag-goto-item-internal n) (menudiag-select-this-item t))) (defvar menudiag-goto-number-list nil) (make-variable-buffer-local 'menudiag-goto-number-list) (defvar menudiag-original-point nil) (make-variable-buffer-local' menudiag-original-point) (defun menudiag-selection-goto () (interactive) (unless (eq last-command 'menudiag-selection-goto) (setq menudiag-goto-number-list nil menudiag-original-point (point))) (setq menudiag-goto-number-list (cons (- last-command-event ?0) menudiag-goto-number-list)) (menudiag-selection-goto-internal)) (defun menudiag-selection-goto-internal () (let* ((list menudiag-goto-number-list) (n (menudiag-selection-item-number list)) (len (with-current-buffer menudiag-selection-main-buffer (length menudiag-current-items)))) (setq this-command 'menudiag-selection-goto) (if (>= n len) (progn (ding) (setq menudiag-goto-number-list (cdr list))) (goto-char (point-min)) (next-completion (1+ n))))) (defun menudiag-selection-item-number (list) (let ((n 0) (exp 1)) (while list (setq n (+ (* (car list) exp) n) exp (* 10 exp) list (cdr list))) n)) (defun menudiag-selection-goto-delete (n) (interactive "p") (if (null (eq last-command 'menudiag-selection-goto)) (ding) (setq menudiag-goto-number-list (nthcdr n menudiag-goto-number-list)) (if (null menudiag-goto-number-list) (goto-char menudiag-original-point) (menudiag-selection-goto-internal)))) (defun menudiag-selection-align-to-item () (cond ((bolp) (next-completion 1)) ((get-text-property (1- (point)) 'mouse-face) (goto-char (previous-single-property-change (point) 'mouse-face))))) (defun menudiag-restore-window () (when menudiag-window-conf (set-window-configuration menudiag-window-conf) (kill-buffer menudiag-selection-buffer))) (defun menudiag-exit-minibuffer () (menudiag-restore-window) (menudiag-send-variables menudiag-done menudiag-value) (buffer-enable-undo) (exit-minibuffer)) (defun menudiag-retun-to-minibuf () (interactive) (menudiag-check-current-menu-list) (unless (minibuffer-window-active-p (minibuffer-window)) (set-minibuffer-window (minibuffer-window))) (let ((window (get-buffer-window menudiag-selection-main-buffer))) (if window (select-window window) (error "menudiag: cannot find minibuffer")))) (defun menudiag-selection-exit-one-level () (interactive) (set-buffer menudiag-selection-main-buffer) (menudiag-exit-one-level)) (defun menudiag-selection-exit () (interactive) (set-buffer menudiag-selection-main-buffer) (menudiag-exit)) (provide 'menudiag) ;;; menudiag.el ends here.