ddskk-15.1.54/0000775000076600007660000000000012251335161012436 5ustar brutusbrutusddskk-15.1.54/SKK-MK0000664000076600007660000010013712161163443013322 0ustar brutusbrutus;;; SKK-MK --- installer for SKK -*- mode: emacs-lisp; coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000 NAKAJIMA Mikio ;; Copyright (C) 2003-2007 SKK Development Team ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: SKK-MK,v 1.200 2013/06/21 23:52:03 skk-cvs Exp $ ;; Last Modified: $Date: 2013/06/21 23:52:03 $ ;;; Commentary: ;; Those values of variables below are default configurations. ;; If you would like to change some of those, you should edit SKK-CFG. ;; ;; DO NOT EDIT THIS FILE DIRECTLY! ;; ;; Variable sections are all three parts. GENERIC VARIABLE section, ;; NON-PACKAGE INSTALL RELATED VARIABLE section, and PACKAGE INSTALL ;; RELATED VARIABLE section. ;; ;; You can confirm target directories without an actual installation ;; by M-x SKK-MK-what-where or M-x SKK-MK-what-where-package after ;; load this program. ;;; Code: (when (string-lessp emacs-version "19") (error "%s" "\ Emacs 18 or older is not supported by this version of SKK. Try ddskk-e18 branch")) (when (string-lessp emacs-version "20.3") (error "%s" "\ Emacs 20.2 and Mule 2.3 (Emacs 19) is not supported by this version of SKK. Please install Daredevil SKK 11.6.0")) (when (string-lessp emacs-version "21.0") (error "%s" "\ Emacs 20.7 is not supported by this version of SKK. Please install Daredevil SKK 13.1 or 14.1")) (when (and (featurep 'emacs) (string-lessp emacs-version "22.0")) (error "%s" "\ GNU Emacs 21 is not supported by this version of SKK. Please install Daredevil SKK 14.4")) (unless (featurep 'mule) (error "%s" "\ This version of SKK requires MULE features")) (set-language-environment "Japanese") ;; Variables. (defvar APEL_DIR nil) (defvar EMU_DIR nil) (defvar PREFIX nil) (defvar LISPDIR nil) (defvar VERSION_SPECIFIC_LISPDIR nil) (defvar ADDITIONAL_LISPDIR nil) (defvar EMACS_SELF_CONTAINED nil) (defvar running-gnu-emacs (or (featurep 'emacs) (string-match "^GNU" (emacs-version)))) ;; load user custom file. (load (expand-file-name "./SKK-CFG") t nil nil) ;; install.el $B$rFI$_9~$`A0$K(B APEL_DIR $B$X$N%Q%9$rJ]>Z$9$k(B (when (stringp APEL_DIR) (let ((dir (expand-file-name APEL_DIR))) (when (file-directory-p dir) (add-to-list 'load-path dir)))) (when (stringp EMU_DIR) (let ((dir (expand-file-name EMU_DIR))) (when (file-directory-p dir) (add-to-list 'load-path dir)))) (require 'install (expand-file-name "install.el")) (setq install-prefix (cond ((eq system-type 'windows-nt) ;; Meadow $B$H(B NTEmacs $B$O<+8J407k7?!#$3$l$i$KBP$7$F(B APEL $B$,I8=`$G(B ;; $B@_Dj$9$k(B install-prefix $B$OIT<+A3$J$N$G!"$3$3$G=$@5$9$k!#(B (setq EMACS_SELF_CONTAINED t) (expand-file-name ".." exec-directory)) ((eq system-type 'darwin) ;; Mac OS X (Carbon emacs, Cocoa Emacs $B$^$?$O(B OS $BIUB0$N(B Emacs) ;; $B$G(B DDSKK $B$r(B build $B$9$k>l9g$O<+8J407k7?$+$I$&$+$rA*$Y$k!#(B ;; $B%f!<%6$,<+8J407k7?$r;H$C$F$$$k$+$I$&$+D4$Y$k!#(B (let ((dir (expand-file-name ".." data-directory))) (if (string-match "/.+\\.app/Contents/Resources/?$" dir) ;; $B<+8J407k7?(B (progn (setq EMACS_SELF_CONTAINED t) dir) ;; UNIX $BE*4D6-$HF1MM(B (expand-file-name "../../../.." data-directory)))) ((featurep 'xemacs) ;; running-xemacs (expand-file-name "../../.." exec-directory)) (t (expand-file-name "../../../.." data-directory)))) ;;;; User variables to control SKK-MK. (defvar SKK-MK-debugging nil "*Non-nil means making verbose output.") ;;;; load-path related. (setq load-path (cons (expand-file-name ".") load-path)) ;; $BJQ?t(B install-prefix $B$O(B install.el $B$GDj5A$5$l$F$*$j!"(B ;; $B$=$NCM$O(B UNIX $BE*4D6-$G$O(B "/usr/local" $B$N$h$&$JCM$H$J$k!#(B ;; $BHs(B UNIX $BE*4D6-$N$?$a$K>e5-$N(B setq $B$G(B install-prefix $B$r:F@_Dj$7$F$$$k!#(B ;; $BHs(B UNIX $BE*4D6-$G$ODL>o<+8J407k7?(B (self-contained) $B$N%U%!%$%kG[CV$r(B ;; $B$H$k!#$3$N>l9g!"FCDj$N%G%#%l%/%H%j2<$K(B etc, info, lisp, site-lisp ;; $B$J$I$N%G%#%l%/%H%j$,A4$F4^$^$l$F$$$k!#(B ;; ($B= 'apel-ver '(10 7)) (error "%s" "DDSKK requires APEL/10.7 or later for XEmacs"))) ;; constants. (defconst SKK-MK-texinfo-coding-system 'iso-2022-7bit) ;; GENERIC VARIABLE. (defvar DOCDIR "./doc") (defvar ETCDIR "./etc") (defvar DICDIR "./dic") (defvar SKK_PREFIX "skk") (defvar SKK_INFO "skk.info") (defvar SKK_INFO_DIR_FILE nil) (defvar SKK_TEXIS '("skk.texi")) (defvar SKK_TUTORIALS '("SKK.tut" "SKK.tut.E" "NICOLA-SKK.tut" "skk.xpm")) (defvar SKK_DICTIONARIES '("SKK-JISYO.L" "SKK-JISYO.ML" "SKK-JISYO.M" "SKK-JISYO.S" "SKK-JISYO.JIS2" "SKK-JISYO.JIS3_4" "SKK-JISYO.pubdic+" "SKK-JISYO.edict" "SKK-JISYO.okinawa" "SKK-JISYO.geo" "SKK-JISYO.jinmei" "SKK-JISYO.law" "SKK-JISYO.mazegaki" "SKK-JISYO.assoc" "SKK-JISYO.itaiji" "SKK-JISYO.itaiji.JIS3_4" "SKK-JISYO.china_taiwan" "SKK-JISYO.propernoun" "SKK-JISYO.station" "SKK-JISYO.requested" "SKK-JISYO.fullname" "SKK-JISYO.JIS2004" "SKK-JISYO.office.zipcode" "SKK-JISYO.zipcode")) (setq SKK_DICTIONARIES (append SKK_DICTIONARIES (mapcar (lambda (dic) (format "%s.cdb" dic)) SKK_DICTIONARIES))) (defvar SKK_DEFAULT_JISYO nil) (defvar SKK_MODULES ;; $B$3$s$J$b$s%3%^%s%I%i%$%s$G;XDj$9$k?M$$$J$$$h$M!)(B (let ((list '(cdb context-skk queue-m skk-abbrev skk-act skk-annotation skk-auto skk-autoloads skk-azik skk-bayesian skk-cdb skk-comp skk-cursor skk-cus skk-dcomp skk-develop skk-gadget skk-hint skk-inline skk-isearch skk-jisx0201 ;; skk-jisx0213 skk-jisyo-edit-mode skk-kakasi skk-kcode skk-leim skk-look ;; skk-lookup skk-macs skk-num ;; skk-obsolete skk-search-web skk-server-completion skk-server skk-show-mode skk-sticky skk-tankan skk-tut skk-vars skk-version skk ;; EXPERIMENTAL skk-correct skk-exsearch skk-exserv skk-rdbms skk-study skk-tutcdef skk-tutcode skk-w3m ;; VIP 3.7 ;; vip ))) (cond ((featurep 'xemacs) ;; XEmacs (when (or (featurep 'gdbm) (featurep 'dbm) (featurep 'berkdb) (featurep 'berkeley-db)) (add-to-list 'list 'skk-dbm)) (add-to-list 'list 'skk-xemacs)) (running-gnu-emacs ;; FSFmacs (add-to-list 'list 'ccc) (add-to-list 'list 'skk-emacs))) ;; skk-jisx0213.el (when (or (coding-system-p 'euc-jisx0213) (and (fboundp 'find-coding-system) (find-coding-system 'euc-jisx0213)) (condition-case nil (and (require 'jisx0213) (require 'un-define)) (error))) (add-to-list 'list 'skk-jisx0213)) ;; skk-lookup.el (when (condition-case nil ;; you might have to add lookup installed directory ;; to `load-path'. (let ((lookup-byte-compile t)) (require 'lookup)) (error)) (add-to-list 'list 'skk-lookup)) ;; skk-w3m.el ;;(when (condition-case nil ;; (require 'w3m-search) ;; (error)) ;; (add-to-list 'list 'skk-w3m)) ;; skk-viper.el (when (condition-case nil (require 'viper) (error)) (add-to-list 'list 'skk-viper)) ;; list)) ;; $B>C$5$J$/$H$b%$%s%9%H!<%k>e$OLdBj$,$J$$$,!"(Bwhat-where $B$K$F%$%s%9%H!<%k$5$l$J(B ;; $B$$%W%m%0%i%`$,I=<($5$l$k$N$rKI$0$?$a!"%H%C%W%G%#%l%/%H%j$K$J$$%W%m%0%i%`$O(B ;; $B>C$7$F$*$/!#(B (let ((modules SKK_MODULES)) (while modules (unless (or ;; skk-autoloads.el $B$O<+F0@8@.$5$l$k$N$G$^$@B8:_$7$J$$!#(B (memq (car modules) '(skk-autoloads)) (file-exists-p (concat (symbol-name (car modules)) ".el"))) (setq SKK_MODULES (delq (car modules) SKK_MODULES))) (setq modules (cdr modules)))) (defun SKK-MK-server-installed-p () ;; Check whether we can talk to the server. (require 'skk-server (expand-file-name "skk-server.el")) (let ((skk-server-inhibit-startup-server t)) (condition-case nil (prog1 (skk-server-live-p (skk-open-server)) (skk-disconnect-server)) (error)))) (defvar SKK_SET_JISYO (not (SKK-MK-server-installed-p))) ;; NON-PACKAGE INSTALL RELATED VARIABLE. (defvar SKK_DATADIR (let ((subdir (cond (EMACS_SELF_CONTAINED ;; Meadow, NTEmacs, Carbon Emacs, Cocoa Emacs "etc") (t "share")))) (expand-file-name SKK_PREFIX (expand-file-name subdir PREFIX)))) (defvar SKK_INFODIR (cond ((file-directory-p (expand-file-name "info" (expand-file-name "share" PREFIX))) (expand-file-name "info" (expand-file-name "share" PREFIX))) ;; ((file-directory-p (expand-file-name "info" PREFIX)) (expand-file-name "info" PREFIX)) (t (let ((list Info-default-directory-list) dir) (while (and (not dir) list) (when (file-directory-p (car list)) (setq dir (car list))) (setq list (cdr list))) dir))) ;; (expand-file-name "info" PREFIX)) (defvar SKK_LISPDIR (cond (VERSION_SPECIFIC_LISPDIR (expand-file-name SKK_PREFIX VERSION_SPECIFIC_LISPDIR)) (PREFIX (expand-file-name SKK_PREFIX (install-detect-elisp-directory PREFIX))) (t nil))) (defconst SKK_DAREDEVIL_NOT_USE '(skk-vip skk-foreword stack-m skk-cursor2 skk-cursor3)) ;; PACKAGE INSTALL RELATED VARIABLE. (defvar PACKAGEDIR (install-get-default-package-directory)) (defvar PACKAGE_INFODIR (expand-file-name "info" PACKAGEDIR)) (defvar PACKAGE_DATADIR (expand-file-name SKK_PREFIX (expand-file-name "etc" PACKAGEDIR))) (defvar PACKAGE_LISPDIR (expand-file-name SKK_PREFIX (expand-file-name "lisp" PACKAGEDIR))) (when SKK-MK-debugging (princ (format "SKK_MODULES=%s\n" SKK_MODULES))) ;; This code is for skk-jisx0201.el. (when (fboundp 'make-translation-table) ;; FSF Emacs 20.3 or later (setq standard-translation-table-for-decode (make-translation-table nil))) ;;; [FUNCTIONS] (defun SKK-MK-make-setup-file (spec) ;; SPEC $B$O8rBe%j%9%H!#(B (with-temp-buffer (save-excursion (insert-file-contents "skk-setup.el.in") (goto-char (point-min)) (when (looking-at ";;; -\\*- emacs-lisp -\\*-") (delete-region (point) (progn (forward-line 1) (point)))) (when (search-forward ";;; skk-setup.el --- initial setup for SKK") (forward-line 1) (insert ";; This file was generated automatically by SKK-MK at " (current-time-string) "\n")) (while spec (goto-char (point-min)) (while (re-search-forward (concat "^;;[^@]+\\(" (car spec) "\\)") nil t nil) (delete-region (match-beginning 1) (match-end 1)) (insert (nth 1 spec)) (beginning-of-line) (while (looking-at ";") (delete-char 1))) (setq spec (nthcdr 2 spec))) (write-region (point-min) (point-max) "skk-setup.el")))) (defun SKK-MK-compile () (let (enable-local-eval) (SKK-MK-generate-autoloads-el) (load (expand-file-name "skk-autoloads.el")) (require 'skk (expand-file-name "skk.el")) (compile-elisp-modules SKK_MODULES (expand-file-name ".")))) (defun SKK-MK-compile-info () (when (and SKK_INFO (or (not (file-exists-p (expand-file-name SKK_INFO DOCDIR))) (file-newer-than-file-p (expand-file-name (car SKK_TEXIS) DOCDIR) (expand-file-name SKK_INFO DOCDIR)))) (SKK-MK-texinfo-format SKK_TEXIS))) (defun SKK-MK-compile-package () (SKK-MK-generate-autoloads-el-package) (setq features (delq 'skk-autoloads features)) (require 'skk-autoloads (expand-file-name "auto-autoloads.el")) (require 'skk (expand-file-name "skk.el")) (autoload 'custom-add-loads "cus-load") (compile-elisp-modules SKK_MODULES (expand-file-name "."))) (defun SKK-MK-install () (SKK-MK-install-elc) (SKK-MK-install-info)) (defun SKK-MK-install-elc () (let ((dics SKK_DICTIONARIES) ;;standard-output delete-target exists spec) ;; make target directories. (setq DOCDIR (expand-file-name DOCDIR) ETCDIR (expand-file-name ETCDIR) DICDIR (expand-file-name DICDIR)) (unless (file-exists-p SKK_LISPDIR) (make-directory SKK_LISPDIR t)) (unless (file-exists-p SKK_DATADIR) (make-directory SKK_DATADIR t)) ;; delete already installed unnecessary files. (while SKK_DAREDEVIL_NOT_USE (setq SKK_MODULES (delq (car SKK_DAREDEVIL_NOT_USE) SKK_MODULES) delete-target (expand-file-name (concat (prin1-to-string (car SKK_DAREDEVIL_NOT_USE)) ".el") SKK_LISPDIR) SKK_DAREDEVIL_NOT_USE (cdr SKK_DAREDEVIL_NOT_USE)) (when (file-exists-p delete-target) (delete-file delete-target)) (setq delete-target (concat delete-target "c")) (when (file-exists-p delete-target) (delete-file delete-target))) ;; install Emacs Lisp programs. (SKK-MK-compile) (install-elisp-modules SKK_MODULES "." SKK_LISPDIR) (delete-file "./skk-autoloads.el") ;; make skk-setup.el. (while dics (when (file-exists-p (expand-file-name (car dics) DICDIR)) (setq exists (cons (car dics) exists))) (setq dics (cdr dics))) (setq SKK_DICTIONARIES exists) ;; move existing largest dictionay to car of `SKK_DICTIONARIES'. (when (member "SKK-JISYO.M" SKK_DICTIONARIES) (setq SKK_DICTIONARIES (cons "SKK-JISYO.M" (delete "SKK-JISYO.M" SKK_DICTIONARIES)))) (when (member "SKK-JISYO.ML" SKK_DICTIONARIES) (setq SKK_DICTIONARIES (cons "SKK-JISYO.ML" (delete "SKK-JISYO.ML" SKK_DICTIONARIES)))) (when (member "SKK-JISYO.L" SKK_DICTIONARIES) (setq SKK_DICTIONARIES (cons "SKK-JISYO.L" (delete "SKK-JISYO.L" SKK_DICTIONARIES)))) (when SKK_TUTORIALS (setq spec (append spec (list "@TUT@" (expand-file-name (car SKK_TUTORIALS) SKK_DATADIR))))) (cond (SKK_DICTIONARIES (setq spec (append spec (list "@AUXDIC@" (expand-file-name (car SKK_DICTIONARIES) SKK_DATADIR)))) (when SKK_SET_JISYO (setq spec (append spec (list "@DIC@" (expand-file-name (car SKK_DICTIONARIES) SKK_DATADIR)))))) (t ;; when dictionaries do not exist in ./dic subdirectory, check ;; already installed dictionary and detect largest one to setup ;; skk-setup.el.in. (setq dics '("SKK-JISYO.L" "SKK-JISYO.ML" "SKK-JISYO.M" "SKK-JISYO.S")) (while (and dics (not (file-exists-p (expand-file-name (car dics) SKK_DATADIR)))) (setq dics (cdr dics))) (when dics (setq spec (append spec (list "@AUXDIC@" (expand-file-name (car dics) SKK_DATADIR)))) (when SKK_SET_JISYO (setq spec (append spec (list "@DIC@" (expand-file-name (car dics) SKK_DATADIR)))))))) (if (not spec) ;; merely copy without setup dictionary information. (copy-file "skk-setup.el.in" "skk-setup.el" 'ok-if-already-exists) (SKK-MK-make-setup-file spec)) (when SKK_DICTIONARIES ;; install dictionaries if the files exist in ./dic directory. (install-files SKK_DICTIONARIES DICDIR SKK_DATADIR nil t nil)) (when running-gnu-emacs (copy-file "./leim-list.el.in" "./leim-list.el" 'overwrite) (install-elisp-modules (list 'leim-list) "." SKK_LISPDIR) (delete-file "./leim-list.el")) ;; install skk-setup.el (install-elisp-modules (list 'skk-setup) "." SKK_LISPDIR) ;; install tutorials. (install-files SKK_TUTORIALS ETCDIR SKK_DATADIR nil t nil) (SKK-MK-detect-shadow-directory))) (defun SKK-MK-detect-shadow-directory () (condition-case nil (progn (require 'shadow) (save-match-data (let ((list (find-emacs-lisp-shadows load-path)) shadowed) (while list (if (and (string-match "skk-autoloads" (car list)) (setq list (cdr list)) (string-match "skk-autoloads" (car list))) (setq shadowed (substring (file-name-directory (car list)) 0 -1) list nil)) (setq list (cdr list))) (when shadowed (princ (format "\ ** WARNING ** %s is shadowed. You might want to remove it " shadowed)))))) (error))) (defun SKK-MK-install-info () (when SKK_INFO (unless (file-exists-p SKK_INFODIR) (make-directory SKK_INFODIR t)) (SKK-MK-compile-info) (install-files (list SKK_INFO) ;defun in install.el DOCDIR SKK_INFODIR nil t nil) (when noninteractive (SKK-MK-install-info-1)))) (defun SKK-MK-install-info-1 () "Updates info/dir entries." (when SKK_INFO ;; updates info/dir entries. (require 'install-info (expand-file-name "install-info.el")) (let ((info-file (expand-file-name SKK_INFO SKK_INFODIR)) (dir-file (cond ((file-exists-p (expand-file-name "dir" SKK_INFODIR)) (expand-file-name "dir" SKK_INFODIR)) ((file-exists-p (expand-file-name "dir.info" SKK_INFODIR)) (expand-file-name "dir.info" SKK_INFODIR)) (t (expand-file-name "dir" SKK_INFODIR))))) (when (file-readable-p dir-file) (install-info info-file dir-file nil nil 'delete)) (install-info info-file dir-file nil nil nil) (setq SKK_INFO_DIR_FILE dir-file)))) (defun SKK-MK-install-package () (unless (featurep 'xemacs) (error "%s" "This directcive is only for XEmacs.")) (let ((dics SKK_DICTIONARIES) delete-target exist spec) ;; make target directories. (unless (file-exists-p PACKAGE_LISPDIR) (make-directory PACKAGE_LISPDIR t)) (unless (file-exists-p PACKAGE_DATADIR) (make-directory PACKAGE_DATADIR t)) (unless (file-exists-p PACKAGE_INFODIR) (make-directory PACKAGE_INFODIR t)) ;; delete already installed unnecessary files. (setq SKK_MODULES (delq 'skk-autoloads (append SKK_MODULES '(auto-autoloads custom-load)))) (while SKK_DAREDEVIL_NOT_USE (setq SKK_MODULES (delq (car SKK_DAREDEVIL_NOT_USE) SKK_MODULES) delete-target (expand-file-name (concat (prin1-to-string (car SKK_DAREDEVIL_NOT_USE)) ".el") PACKAGE_LISPDIR) SKK_DAREDEVIL_NOT_USE (cdr SKK_DAREDEVIL_NOT_USE)) (when (file-exists-p delete-target) (delete-file delete-target)) (setq delete-target (concat delete-target "c")) (when (file-exists-p delete-target) (delete-file delete-target))) ;; install Emacs Lisp programs. (SKK-MK-compile-package) (install-elisp-modules SKK_MODULES "." PACKAGE_LISPDIR) (delete-file "./auto-autoloads.el") (delete-file "./custom-load.el") ;; make skk-setup.el. (when SKK_TUTORIALS (setq spec (list "@TUT@" (expand-file-name (car SKK_TUTORIALS) PACKAGE_DATADIR)))) (while dics (when (file-exists-p (expand-file-name (car dics) DICDIR)) (setq exist (cons (car dics) exist))) (setq dics (cdr dics))) (setq SKK_DICTIONARIES exist) ;; move existing largest dictionay to car of `SKK_DICTIONARIES'. (when (member "SKK-JISYO.M" SKK_DICTIONARIES) (setq SKK_DICTIONARIES (cons "SKK-JISYO.M" (delete "SKK-JISYO.M" SKK_DICTIONARIES)))) (when (member "SKK-JISYO.ML" SKK_DICTIONARIES) (setq SKK_DICTIONARIES (cons "SKK-JISYO.ML" (delete "SKK-JISYO.ML" SKK_DICTIONARIES)))) (when (member "SKK-JISYO.L" SKK_DICTIONARIES) (setq SKK_DICTIONARIES (cons "SKK-JISYO.L" (delete "SKK-JISYO.L" SKK_DICTIONARIES)))) (cond (SKK_DICTIONARIES (setq spec (append spec (list "@AUXDIC@" (expand-file-name (car SKK_DICTIONARIES) PACKAGE_DATADIR)))) (when SKK_SET_JISYO (setq spec (append spec (list "@DIC@" (expand-file-name (car SKK_DICTIONARIES) PACKAGE_DATADIR))))) ;; install dictionaries if the files exist in ./dic directory. (install-files SKK_DICTIONARIES DICDIR PACKAGE_DATADIR nil t nil)) (t ;; when dictionaries do not exist in ./dic subdirectory, check ;; already installed dictionary and detect largest one to setup ;; skk-setup.el.in. (setq dics '("SKK-JISYO.L" "SKK-JISYO.ML" "SKK-JISYO.M" "SKK-JISYO.S")) (while (and dics (not (or (file-exists-p (expand-file-name (car dics) PACKAGE_DATADIR)) (file-exists-p (expand-file-name (car dics) SKK_DATADIR))))) (setq dics (cdr dics))) (when dics (let ((dic (if (file-exists-p (expand-file-name (car dics) PACKAGE_DATADIR)) (expand-file-name (car dics) PACKAGE_DATADIR) (expand-file-name (car dics) SKK_DATADIR)))) (setq spec (nconc spec (list "@AUXDIC@" dic))) (when SKK_SET_JISYO (setq spec (nconc spec (list "@DIC@" dic)))))))) (if (not spec) ;; merely copy without setup dictionary information. (copy-file "skk-setup.el.in" "skk-setup.el" 'ok-if-already-exists) (SKK-MK-make-setup-file spec)) ;; install skk-setup.el (install-elisp-modules (list 'skk-setup) "." PACKAGE_LISPDIR) ;; install infos. (SKK-MK-compile-info) (when SKK_INFO (let ((files (list SKK_INFO)) (i 1) file) (while (file-exists-p (expand-file-name (setq file (format "%s-%d" SKK_INFO i)) DOCDIR)) (setq files (cons file files)) (setq i (1+ i))) (install-files (nreverse files) DOCDIR PACKAGE_INFODIR nil t nil))) ;; install tutorials. (install-files SKK_TUTORIALS ETCDIR PACKAGE_DATADIR nil t nil) (SKK-MK-detect-shadow-directory))) (defun SKK-MK-texinfo-pre-format () (unless (and (featurep 'emacs) (>= emacs-major-version 23)) (dolist (str '("\C-[$(Q\"1\C-[(B" "\C-[$(Q\"Q\C-[(B" "\C-[$(Q\"q\C-[(B")) (goto-char (point-min)) (when (search-forward str nil t) (replace-match " "))))) (defun SKK-MK-texinfo-post-format () (when (and (featurep 'emacs) (>= emacs-major-version 23)) (goto-char (point-min)) (when (re-search-forward "-\\*-Text-\\*-" (point-at-eol) t) (replace-match (format "-*- mode: text; coding: %s -*-" SKK-MK-texinfo-coding-system))))) (defun SKK-MK-texinfo-format (targets) (let (;; Emacs20.2's default is 'raw-text-unix. (coding-system-for-write SKK-MK-texinfo-coding-system) x obuf beg standard-output) (require 'ptexinfmt (expand-file-name "ptexinfmt.el")) (while targets (setq x (expand-file-name (car targets) DOCDIR)) (find-file x) (setq obuf (current-buffer)) (SKK-MK-texinfo-pre-format) (texinfo-every-node-update) (texinfo-format-buffer 'nosplit) (SKK-MK-texinfo-post-format) (basic-save-buffer) (kill-buffer (current-buffer)) ; .info buffer (set-buffer-modified-p nil) ; .texi buffer (kill-buffer obuf) ; .texi buffer (setq targets (cdr targets))))) (defun SKK-MK-what-where () (interactive) (let ((string (format " Running in: %s SKK modules: %s -> %s SKK infos: %s -> %s SKK tutorials: %s -> %s " (version) (mapconcat 'symbol-name SKK_MODULES ", ") SKK_LISPDIR SKK_INFO SKK_INFODIR (mapconcat 'identity SKK_TUTORIALS ", ") SKK_DATADIR))) (if noninteractive (princ string) (progn (with-output-to-temp-buffer "*What where*" (princ string)) (message ""))))) (defun SKK-MK-what-where-package () (interactive) (unless (featurep 'xemacs) (error "%s" "This directive is only for XEmacs.")) (let ((string (format " Running in: %s SKK modules: %s -> %s SKK infos: %s -> %s SKK tutorials: %s -> %s " (version) (mapconcat 'symbol-name (delq 'skk-autoloads SKK_MODULES) ", ") PACKAGE_LISPDIR SKK_INFO PACKAGE_INFODIR (mapconcat 'identity SKK_TUTORIALS ", ") PACKAGE_DATADIR))) (if (interactive-p) (progn (with-output-to-temp-buffer "*What where*" (princ string)) (message "")) (princ string)))) (defun SKK-MK-generate-autoloads-el () "Generate skk-autoload.el." (let ((modules SKK_MODULES) (buf (get-buffer-create " *SKK-MK-generate-autoloads-el*")) (sort-min) (funcs) standard-output) (save-excursion (set-buffer buf) (erase-buffer) (insert "\ ;;; skk-autoloads.el --- autoload settings for SKK -*- coding: iso-2022-jp -*- ;; This file was generated automatically by SKK-MK at " (current-time-string) ". ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to the ;; Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, ;; MA 02110-1301, USA. ;;; Code:\n\n") (require 'autoload) (setq buffer-file-name "skk-autoloads.el") (while modules (let ((file (expand-file-name (format "%s.el" (car modules))))) (when (file-exists-p file) (generate-file-autoloads file))) (setq modules (cdr modules))) (goto-char (point-max)) (insert "(provide 'skk-autoloads) ;;; skk-autoloads.el ends here ") (let ((coding-system-for-write 'iso-2022-jp)) (write-region (point-min) (point-max) "skk-autoloads.el" nil 'quiet)) (set-buffer-modified-p nil) (kill-buffer buf)))) (defun SKK-MK-generate-autoloads-el-package () "Generate auto-autoload.el." (let ((modules SKK_MODULES)) (with-temp-buffer (dolist (module modules) (let ((file (expand-file-name (format "%s.el" module)))) (when (file-exists-p file) (generate-file-autoloads file)))) (let ((generated-autoload-file (expand-file-name "auto-autoloads.el"))) (setq buffer-file-name generated-autoload-file) (if (fboundp 'autoload-featurep-protect-autoloads) ;; XEmacs 21.5 (autoload-featurep-protect-autoloads "skk-autoloads") ;; XEmacs 21.4 (fixup-autoload-buffer "skk-autoloads")) (goto-char (point-max)) (unless (bolp) (insert "\n")) (let ((coding-system-for-write 'iso-2022-jp)) (write-region (point-min) (point-max) generated-autoload-file)))) (add-to-list 'command-line-args-left ".") (Custom-make-dependencies))) ;;; DDSKK Interactive Installer (Jan 2011) ;;; Lookup $B$N(B install.el $B$r;29M$K$5$;$F$$$?$@$-$^$7$?!#(B (defun install-check-directory (directory) (and (not (file-exists-p directory)) (y-or-n-p (format "Directory %s is not exist. Create it? " directory)) (make-directory directory t)) (if (not (file-directory-p directory)) (error "%s is not directory" directory)) (directory-file-name (expand-file-name directory))) (defvar VERSION-STRING nil) (setq VERSION-STRING (let (start) (with-temp-buffer (insert-file-contents "skk-version.el") (goto-char (point-min)) (search-forward "'version-string ") (forward-char) (setq start (point)) (search-forward (char-to-string 34)) (buffer-substring start (1- (point)))))) (if noninteractive nil (switch-to-buffer (generate-new-buffer "*DDSKK Installer*")) (insert "DDSKK $B%$%s%9%H!<%i(B\n") (insert "===================\n\n") (insert "DDSKK " VERSION-STRING " $B$N%$%s%9%H!<%k$r;O$a$^$9!#(B\n") (insert "C-g $B$r%?%$%W$9$k$H!"$$$D$G$bCfCG$G$-$^$9!#(B\n\n") (insert "DDSKK $B$N%$%s%9%H!<%k@h$rF~NO$7$F$/$@$5$$(B:\n") (setq SKK_LISPDIR (install-check-directory (read-file-name "SKK_LISPDIR: " SKK_LISPDIR SKK_LISPDIR))) (insert " => " SKK_LISPDIR "\n\n") (sit-for 0) (insert "Info $B%U%!%$%k$rCV$/%G%#%l%/%H%j$rF~NO$7$F$/$@$5$$(B:\n") (setq SKK_INFODIR (install-check-directory (read-file-name "SKK_INFODIR: " SKK_INFODIR SKK_INFODIR))) (insert " => " SKK_INFODIR "\n\n") (sit-for 0) (insert "$B%A%e!<%H%j%"%k!&%U%!%$%k$rCV$/%G%#%l%/%H%j$rF~NO$7$F$/$@$5$$(B:\n") (setq SKK_DATADIR (install-check-directory (read-file-name "SKK_DATADIR: " SKK_DATADIR SKK_DATADIR))) (insert " => " SKK_DATADIR "\n\n") (sit-for 0) (insert "$B3NG'$7$F$/$@$5$$!#(B\n") (insert (format "SKK modules: %s\n => %s\n\n" (mapconcat 'symbol-name SKK_MODULES ", ") SKK_LISPDIR)) (insert (format "SKK infos: %s\n => %s\n\n" SKK_INFO SKK_INFODIR)) (insert (format "SKK tutorials: %s\n => %s\n\n" (mapconcat 'identity SKK_TUTORIALS ", ") SKK_DATADIR)) (insert "$B3F%G%#%l%/%H%j$rD{@5$9$k$K$O!"$3$N%$%s%9%H!<%i$rCfCG!J(BC-g $B$r%?%$%W!K$7$F:G=i$+$i$d$jD>$7$F$/$@$5$$!J(BSKK-CFG $B$G@_Dj$9$k$3$H$b2DG=$G$9!K!#(B\n") (if (yes-or-no-p "$B%$%s%9%H!<%k$rB39T$7$^$9$+!)(B ") nil (error "$B%$%s%9%H!<%k$rCfCG$7$^$7$?!#(B"))) ;; SKK-MK-compile (if noninteractive nil (let (enable-local-eval) (insert "skk-autoloads.el $B$r@8@.Cf(B...") (sit-for 0) (SKK-MK-generate-autoloads-el) (insert "done\n") (insert "skk-autoloads.el $B$rFI$_9~$_Cf(B...") (sit-for 0) (load (expand-file-name "skk-autoloads.el")) (insert "done\n") (insert "skk.el $B$rFI$_9~$_Cf(B...") (sit-for 0) (require 'skk (expand-file-name "skk.el")) (insert "done\n") (insert "elisp $B%U%!%$%k$N%3%s%Q%$%kCf(B...") (sit-for 0) (compile-elisp-modules SKK_MODULES (expand-file-name ".")) (switch-to-buffer (get-buffer "*DDSKK Installer*")) (insert "done\n"))) ;; SKK-MK-install ;; SKK-MK-install-elc (if noninteractive nil (insert "elisp $B%U%!%$%k$N%$%s%9%H!<%kCf(B...") (sit-for 0) (SKK-MK-install-elc) (switch-to-buffer (get-buffer "*DDSKK Installer*")) (insert "done\n")) ;; SKK-MK-install-info (if noninteractive nil (insert "info $B$N%$%s%9%H!<%kCf(B...") (sit-for 0) (SKK-MK-install-info) (insert "done\n") (insert "info/dir $B%N!<%IDI2CCf(B...") (sit-for 0) (SKK-MK-install-info-1) (insert "done\n")) ;; Congratulations! (if noninteractive nil (insert "\n\nCongratulations!\nDDSKK $B$N%$%s%9%H!<%k$,40N;$7$^$7$?!#(B load-path $B$N@_Dj(B ---------------- $Be$G=*N;$G$9!#(B Emacs $B$r:F5/F0$9$k$H(B DDSKK $B$r;HMQ$9$k$3$H$,$G$-$^$9!#(B etc/dot.emacs $B$H(B etc/dot.skk $B$K@_DjNc$,5s$2$i$l$F$$$^$9$N$G;29M$K$7$F$/$@$5$$!#(B Info $B$b$*FI$_$/$@$5$$!#(B ")) (if noninteractive nil (delete-other-windows) (recenter -1) (remove-hook 'kill-emacs-hook 'skk-save-jisyo)) ;;; SKK-MK ends here ddskk-15.1.54/skk-jisyo-edit-mode.el0000664000076600007660000001674512122222074016560 0ustar brutusbrutus;;; skk-jisyo-edit-mode.el --- major mode for editing SKK dictionaries -*- coding: iso-2022-jp -*- ;; Copyright (C) 2001-2010 SKK Development Team ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; This is a major mode for editing SKK dictionaries. ;;; Code: (eval-when-compile (require 'skk-macs)) (require 'skk-cus) (require 'skk-vars) (eval-when-compile (defvar font-lock-defaults)) (defvar skk-jisyo-edit-map nil "Keymap for SKK JISYO Edit mode.") (defvar skk-jisyo-edit-mode-hook nil "Hook run on entry in `skk-jisyo-edit-mode'.") (defvar skk-jisyo-edit-syntax-table nil) (unless skk-jisyo-edit-map (setq skk-jisyo-edit-map (make-sparse-keymap 'skk-jisyo-edit-map))) (defvar skk-jisyo-edit-font-lock-keywords '(("\\(\\[[^]]*/\\]\\)" 1 font-lock-constant-face) ("^\\([^; ]+ \\)/" 1 font-lock-function-name-face) ("/[^;\n]+\\(;[^/\n]*\\)" 1 font-lock-type-face t) ("^\\(;.+\\)$" 1 font-lock-comment-face t) ("^\\(;; okuri-ari entries\\.\\)$" 1 font-lock-keyword-face t) ("^\\(;; okuri-nasi entries\\.\\)$" 1 font-lock-keyword-face t) ("/\\([^/\n]+\\)$" 1 highlight) ("\\(/\\)" 1 font-lock-warning-face)) "Additional expressions to highlight in SKK JISYO edit mode.") (put 'skk-jisyo-edit-mode 'font-lock-defaults '(skk-jisyo-edit-font-lock-keywords)) (defvar skk-jisyo-edit-original-window-configuration nil) ;;;###autoload (defun skk-jisyo-edit-mode () "Major mode for editing SKK JISYO." (interactive) (kill-all-local-variables) (setq mode-name "SKK JISYO Edit") (setq major-mode #'skk-jisyo-edit-mode) (make-local-variable 'font-lock-defaults) (setq font-lock-defaults '(skk-jisyo-edit-font-lock-keywords)) (make-local-variable 'skk-jisyo-edit-syntax-table) (setq skk-jisyo-edit-syntax-table (make-syntax-table)) (set-syntax-table skk-jisyo-edit-syntax-table) (let ((map (make-sparse-keymap))) (cond ((eval-when-compile (featurep 'xemacs)) (set-keymap-parents map (list skk-jisyo-edit-map)) (use-local-map map)) (t (use-local-map (nconc map skk-jisyo-edit-map))))) (modify-syntax-entry ?\" "w" skk-jisyo-edit-syntax-table) (modify-syntax-entry ?/ "w" skk-jisyo-edit-syntax-table) (run-hooks 'skk-jisyo-edit-mode-hook)) ;;;###autoload (add-to-list 'auto-mode-alist '("SKK-JISYO" . skk-jisyo-edit-mode) t) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.skk-jisyo\\(\\.BAK\\|\\.bak\\|~\\)?$" . skk-jisyo-edit-mode)) ;;;###autoload (add-to-list 'auto-mode-alist '("\\..*skk/jisyo\\(\\.BAK\\|\\.bak\\|~\\)?$" . skk-jisyo-edit-mode)) ;;;###autoload (defun skk-edit-private-jisyo (&optional coding-system) "$B8D?M<-=q%U%!%$%k(B `skk-jisyo' $B$rJT=8$9$k!#(B $BG$0U$G$N8D?M<-=qJ]B8$N$"$H!"(B`skk-jisyo' $B$r3+$-!"(B`skk-jisyo-edit-mode' $B$KF~$k!#(B $B%m!<%+%k$K(B $B0J2<$N%-!l9g$O(B SKK $B$K$h$k8D?M<-=q%P%C%U%!$N99?7$,6X;_$5$l$k!#(B $B%*%W%7%g%J%k0z?t(B CODING-SYSTEM $B$K$F8D?M<-=q$N%3!<%I7O$r;XDj2DG=!#(B $B$3$N5!G=$O=>Mh$N ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-develop.el,v 1.33 2013/10/15 12:49:32 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/10/15 12:49:32 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (eval-when-compile (defvar skk-exserv-list)) ;;;###autoload (defun skk-submit-bug-report () "SKK $B$N%P%0%l%]!<%H$r=q$/%a!<%k%P%C%U%!$rMQ0U$9$k!#(B mail-user-agent $B$r@_Dj$9$k$3$H$K$h$j9%$_$N%a!<%k%$%s%?!<%U%'%$%9$r;HMQ$9$k$3$H(B $B$,$G$-$k!#Nc$($P!"(BWanderlust $B$r;HMQ$7$?$$>l9g$O2<5-$N$h$&$K@_Dj$9$k!#(B \(setq mail-user-agent 'wl-user-agent\) " (interactive) (require 'reporter) (when (skk-y-or-n-p "SKK $B$K$D$$$F$N%P%0%l%]!<%H$r=q$-$^$9$+!)(B " "Do you really want to write a bug report on SKK? ") (reporter-submit-bug-report skk-ml-address (concat (skk-version 'with-codename) ", " (cond ((or (and (boundp 'skk-servers-list) skk-servers-list) (or (and (boundp 'skk-server-host) skk-server-host) (getenv "SKKSERVER")) ;; refer to DEFAULT_JISYO when skk-server-jisyo is nil. ;;(or (and (boundp 'skk-server-jisyo) skk-server-jisyo) ;; (getenv "SKK_JISYO")))) ) (require 'skk-server) (concat "skkserv; " (skk-server-version) (when (getenv "SKKSERVER") (concat ",\nSKKSERVER; " (getenv "SKKSERVER"))) (when (getenv "SKKSERV") (concat ", SKKSERV; " (getenv "SKKSERV"))))) ((and (boundp 'skk-exserv-list) skk-exserv-list) (require 'skk-exserv) (skk-server-version)))) (let ((base (list 'window-system 'isearch-mode-hook 'isearch-mode-end-hook 'skk-auto-okuri-process 'skk-auto-start-henkan 'skk-egg-like-newline 'skk-henkan-okuri-strictly 'skk-henkan-strict-okuri-precedence 'skk-kakutei-early 'skk-process-okuri-early 'skk-search-prog-list 'skk-share-private-jisyo 'skk-use-viper))) (when (boundp 'skk-server-host) (setq base (append base '(skk-server-host)))) (when (boundp 'skk-server-prog) (setq base (append base '(skk-server-prog)))) (when (boundp 'skk-servers-list) (setq base (append base '(skk-servers-list)))) (when (boundp 'skk-exserv-list) (setq base (append base '(skk-exserv-list)))) base))) (message "")) ;;;###autoload (add-hook 'before-init-hook (lambda () (eval-after-load "font-lock" ;; `lisp-font-lock-keywords-2' is an alias for `lisp-el-font-lock-keywords-2'. ;; `lisp-font-lock-keywords-2' is obsolete since 24.4; ;; use `lisp-el-font-lock-keywords-2' instead. '(set (if (boundp 'lisp-el-font-lock-keywords-2) 'lisp-el-font-lock-keywords-2 'lisp-font-lock-keywords-2) (nconc (list (list (concat "(\\(\\(skk-\\)?def\\(" ;; Function type declarations. "\\(un-cond\\|subst-cond\\|advice\\|" "macro-maybe\\|alias-maybe\\|un-maybe\\)\\|" ;; Variable type declarations. "\\(var\\|localvar\\)" "\\)\\)\\>" ;; Any whitespace and defined object. "[ \t'\(]*" "\\(\\sw+\\)?") '(1 font-lock-keyword-face) '(6 (cond ((match-beginning 4) font-lock-function-name-face) ((match-beginning 5) font-lock-variable-name-face)) nil t))) (list (list (concat "(" (regexp-opt '("skk-save-point" "skk-with-point-move" "skk-loop-for-buffers") t) "\\>") '(1 font-lock-keyword-face))) (list (list "(\\(skk-error\\)\\>" '(1 font-lock-warning-face))) (symbol-value (if (boundp 'lisp-el-font-lock-keywords-2) 'lisp-el-font-lock-keywords-2 'lisp-font-lock-keywords-2)) ))) ;; (put 'skk-deflocalvar 'doc-string-elt 3) (put 'skk-defadvice 'doc-string-elt 3) )) (provide 'skk-develop) ;;; skk-develop.el ends here ddskk-15.1.54/ChangeLog.50000664000076600007660000004377112121307723014366 0ustar brutusbrutus2013-03-16 Tsuyoshi Kitamoto * Version 15.1 Umeda Released. * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.1. 2013-03-16 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-03-14 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-03-12 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.0.90. 2013-02-21 Tsuyoshi Kitamoto * skk.el (skk-search-itaiji): New function. * skk-vars.el (skk-itaiji-jisyo): New variable. (skk-search-prog-list): Use skk-search-itaiji(). * doc/skk.texi: Update. 2013-02-12 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-02-05 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.4.54. 2013-02-03 Tsuyoshi Kitamoto * skk-gadget.el: Add (require 'cl). (skk-current-date): Update docstring. (skk-current-date-1): Use multiple-value-bind(). (skk-default-current-date): Update docstring. Use multiple-value-bind(). (skk-relative-date): Add new function. 2013-02-01 Tsuyoshi Kitamoto * skk-gadget.el (skk-current-date, skk-current-date-1): Update docstring. 2013-01-17 Tsuyoshi Kitamoto * skk-vars.el (skk-num-type-alist, skk-num-grouping-separator) (skk-num-grouping-places): Update docstring. * skk-num.el (skk-num-exp, skk-num-type2-kanji) (skk-num-type3-kanji, skk-num-type5-kanji): Update docstring. * doc/skk.texi: Update. 2013-01-15 Tsuyoshi Kitamoto * skk-vars.el (skk-num-type-alist): Add "#8 type" and use skk-num-grouping(). (skk-num-grouping-separator): New variable. (skk-num-grouping-places): New variable. * skk-num.el (skk-num-exp): Add docstring "#8 type". (add-number-grouping): Add optional argument PLACES. (skk-num-grouping): Use skk-num-grouping-separator and skk-num-grouping-places. 2013-01-14 Tsuyoshi Kitamoto * skk-num.el (add-number-grouping, skk-num-grouping): Add new functions. Q 1 2 3 4 5 6 7 => 1,234,567 . * doc/skk.texi: Update URL for APEL from http://kanji.zinbun.kyoto-u.ac.jp/%7Etomo/elisp/APEL/ to http://git.chise.org/elisp/apel/ . 2013-01-13 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.4.53. 2013-01-13 Tsuyoshi Kitamoto * skk-vars.el, skk-study.el, skk-server-completion.el, skk-num.el: * skk-macs.el, skk-lookup.el, skk-look.el, skk-jisx0201.el: * skk-hint.el, skk-gadget.el, skk-dcomp.el, skk-cursor.el: * skk-comp.el, skk-annotation.el, skk-abbrev.el, context-skk.el: * makeit.bat, skk.el: Update comment. * doc/skk.texi: Update. 2013-01-06 Tsuyoshi Kitamoto * skk.el (skk-require-module): skk-show-mode-inline() $B$OFbIt$G(B skk-dcomp-multiple-show() $B$rMxMQ$7$F$$$k$?$a!"(B'skk-show-mode $B$N(B require $B$HF1;~$K(B 'skk-dcomp $B$b(B require $B$9$k(B. * skk-show-mode.el: comment $B$rDI2C(B. * skk-vars.el (skk-show-mode-show): docstring $B$r=$@5(B. 2013-01-05 Tsuyoshi Kitamoto * skk.el (skk-henkan-list-filter): comment $B$rDI2C(B. (newline, newline-and-indent, exit-minibuffer) (skk-wrap-newline-command): docstring $B$rHy=$@5(B. 2013-01-03 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2013-01-02 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk-vars.el (skk-show-annotation): Update. * skk-annotation.el (skk-annotation-display-p) (skk-annotation-toggle-display-p): (eq FOO nil) $B$KBe$($F(B (null FOO). 2012-12-29 Tsuyoshi Kitamoto * skk.el: Update comment. 2012-12-25 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-12-23 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-12-22 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-12-09 Tsuyoshi Kitamoto * skk-gadget.el (skk-current-date, skk-clock): docstring $B$rHy=$@5(B. * skk-develop.el (skk-submit-bug-report): `n' $B$HEz$($?$H$-$N%a%C%;!<%8>C5n(B. 2012-12-03 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.4.52. 2012-12-03 Tsuyoshi Kitamoto * skk-isearch.el (skk-isearch-delete-char): isearch-cmds $B$N;EMMJQ99$KBP1~(B. 2012-12-02 Tsuyoshi Kitamoto * skk-vars.el (skk-show-inline, skk-dcomp-multiple-activate): Update Docstring. * skk-isearch.el (skk-isearch-delete-char): GNU Emacs 21 $B8~$1$N%3!<%I$r:o=|(B. 2012-11-26 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): UNICODE $BI=<($N;CDjBP1~(B. 2012-11-24 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): composition $BI=<($rDI2C(B. * doc/skk.texi: Update. 2012-11-12 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-11-09 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-11-08 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-mode-usage): New command. * skk-vars.el (skk-tankan-mode-map): Key `?' bind it in skk-tankan-mode-map. 2012-10-21 Tatsuya Kinoshita * ccc.el (ccc-setup-current-colors, enable-theme, disable-theme): M-x load-theme $BBP1~(B. 2012-10-15 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.4.51. 2012-10-15 Tsuyoshi Kitamoto * skk-show-mode.el (skk-show-mode-inline): Byte compile $B;~$N(B warning $BBP:v$N(B $B$?$a(B declare-function() $B$rDI2C(B. * skk-dcomp.el (skk-dcomp-multiple-get-candidates): Ditto. * skk-annotation.el (skkannot-py-send-string) (skkannot-py-send-command): Ditto. 2012-10-13 Yuhei Maeda * skk.el (skk-make-indicator-alist-1): $B:o=|$5$l$?(B face 'modeline $B$KBe$($F(B 'mode-line $B$r;HMQ!#(B 2012-09-17 Tsuyoshi Kitamoto * bayesian/skk-bayesian.el (skk-bayesian-restart-process): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. * skk-vars.el (skk-annotation-show-as-message): Update docstring. * doc/skk.texi: Update. 2012-09-16 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-python-program): Temporary workaround for some versions of Cocoa Emacs (24.2). Prefer python2.6. 2012-09-07 Tsuyoshi Kitamoto * experimental/skk-search-web.el (skk-google-suggest): json $B%l%9%]%s%9$,GQ;_(B $B$5$l$F$$$k$h$&$G$"$k$?$a!"(Bxml $B%l%9%]%s%9$r;HMQ$9$k$h$&$KJQ99(B. 2012-09-03 Tsuyoshi Kitamoto * doc/skk.texi: Update. * experimental/skk-search-web.el: Update docstring. 2012-09-01 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-08-31 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-08-28 Tsuyoshi Kitamoto * skk-tut.el (skk-kakutei, skk-mode): interactive-p() $B$KBe$($F(B skk-called-interactively-p() $B$r;HMQ(B. 2012-08-26 Tsuyoshi Kitamoto * skk-vars.el: Update docstring. * doc/skk.texi: Update. 2012-08-25 Tsuyoshi Kitamoto * skk-vars.el: Update docstring. * doc/skk.texi: Update. 2012-08-23 Tsuyoshi Kitamoto * skk-vars.el (skk-auto-paren-string-alist): Update docstring. * doc/skk.texi: Update. 2012-08-22 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-08-20 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-08-19 Tsuyoshi Kitamoto * skk-vars.el (skk-egg-like-newline): Tiny fix docstring. (skk-number-style): Update docstring. * doc/skk.texi: Update. 2012-08-18 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-08-15 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-08-15 Tetsuo Tsukamoto * ccc.el (frame-foreground-color, frame-background-color) (set-buffer-local-foreground-color) (set-buffer-local-background-color): Do not modify foregound and backgorund colors on tty. * skk-emacs.el (skk-emacs-prepare-modeline-properties): Modify the dummy string for the icon. 2012-08-14 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-08-12 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-08-11 Tsuyoshi Kitamoto * skk-macs.el (skk-set-deactivate-im-func) (skk-deactivate-input-method): New macros. * skk-leim.el (skk-activate, skk-auto-fill-activate): Use skk-set-deactivate-im-func instead of inactivate-current-input-method-function. (skk-leim-exit-from-minibuffer): Use skk-deactivate-input-method instead of inactivate-input-method. * skk-isearch.el (skk-isearch-mode-setup):Use skk-set-deactivate-im-func func instead of inactivate-current-input-method-function (skk-isearch-mode-cleanup, skk-isearch-really-early-advice): Use skk-deactivate-input-method instead of inactivate-input-method. 2012-08-04 Tetsuo Tsukamoto * ccc.el (custom-theme-checkbox-toggle): New advice. * skk-annotation.el (skk-annotation-wikipedia-1): Always use `url-retrieve'. 2012-07-30 Tsuyoshi Kitamoto * skk.el (skk-mode): Update message. (skk-require-module): Insert comment. (skk-mode-invoke): Insert comment and Update message. * skk-vars.el (skk-mode-hook): Update docstring. 2012-07-08 Tsuyoshi Kitamoto * skk-vars.el (skk-force-registration-mode-char) (skk-show-inline): Update docstring. 2012-06-30 Tsuyoshi Kitamoto * skk-vars.el (skk-extra-jisyo-file-list) (skk-allow-spaces-newlines-and-tabs) (skk-check-okurigana-on-touroku): Update docstring. 2012-06-24 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk-emacs.el (skk-tooltip-show-at-point): tooltip-use-echo-area $B$r(B $BIT;HMQ$H$7$?(B. 2012-06-23 Tsuyoshi Kitamoto * skk-macs.el (skk-yes-or-no-p, skk-y-or-n-p): $B%=!<%9%3!<%I$N%$%s%G%s%H$r=$@5(B. * skk-emacs.el (skk-tooltip-show-at-point): $B%3%a%s%H$rDI2C(B. * doc/skk.texi ($BJ8L.$K1~$8$?<+F0%b!<%I@Z$jBX$((B): Update. 2012-06-20 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2012-06-10 Tetsuo Tsukamoto * skk-vars.el (skk-delete-backward-char-commands) (skk-undo-commands): New constant variables. * skk.el (skk-setup-delete-backward-char, skk-setup-undo) (skk-emulate-original-map): Use them. 2012-05-26 Tsuyoshi Kitamoto * doc/skk.texi: update. 2012-04-10 Tsuyoshi Kitamoto * doc/skk.texi: update. * skk-vars.el: Update docstring. 2012-04-07 Tsuyoshi Kitamoto * skk-vars.el: Update docstring. 2012-04-02 Masatake YAMATO * context-skk.el (define-context-skk-advice): New macro. `skk-insert-ctx-switch' and `skk-jisx0208-latin-insert-ctx-switch' are generated by this macro. (skk-insert-ctx-switch, skk-jisx0208-latin-insert-ctx-switch): Just call the original function if `context-skk-mode' is nil. Reported by Yoshiaki Kasahara . 2012-01-20 Tsuyoshi Kitamoto * skk-tankan.el: Update comment. 2012-01-19 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): $BJ8;z=89g$,(B jisx0213, jisx0208, ascii $B0J30$N>l9g$KI=<($9$k%a%C%;!<%8$rJQ99(B. 2012-01-18 Tsuyoshi Kitamoto * skk-vars.el (skk-charset-list): Update docstring. * skk-macs.el (skk-jisx0213-p): Add comment. * skk-kcode.el (skk-display-code-for-char-at-point): Update comment. 2012-01-16 Tsuyoshi Kitamoto * skk-macs.el (skk-sit-for): Emacs 21 $B8~$1%3!<%I$r:o=|$7$?$3$H$KH<$C$F(B GNU Emacs 22 $B0J9_$N(B sit-for() $B$H(B XEmacs $B$N(B sit-for() $B$K:90[$,$J$/$J$C$?(B $B$3$H$+$i!"(Bskk-sit-for() $B$rGQ;_$7$?(B. * skk.el (skk-henkan-on-message): * skk-gadget.el (skk-clock): * skk-annotation.el (skkannot-sit-for, skk-annotation-message): skk-sit-for() $B$KBe$($F(B sit-for() $B$r;HMQ(B. 2012-01-15 Tsuyoshi Kitamoto * skk-vars.el (skk-running-gnu-emacs): $B:o=|(B. (skk-init-file): docstring $B$r99?7(B. (skkannot-url-installed-p, skk-isearch-breakable-character-p-function): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. * skk-viper.el: skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. * SKK-MK (SKK-MK-server-installed-p): Emacs 21 $B8~$1%3!<%I$r:o=|(B. * skk-kcode.el (skk-display-code): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. * skk-tankan.el (skk-tankan-get-char-data, skk-search-by-stroke-or-radical): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. * skk-isearch.el (skk-isearch-mode-setup, skk-isearch-mode-cleanup): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. * skk-annotation.el (skk-annotation-wait-for-input, skkannot-py-send-command): Emacs 21 $B8~$1%3!<%I$r:o=|(B. * doc/skk.texi: $B99?7(B. 2012-01-14 Tsuyoshi Kitamoto * skk-tut.el (skktut-init-variables-alist): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. * skk-study.el (skk-study-save): $B * skk-cus.el (skk-cus-set): Emacs 21 $B8~$1%3!<%I$r:o=|(B. * skk-cursor.el: skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. 2012-01-12 Tsuyoshi Kitamoto * skk-emacs.el (skk-emacs-prepare-menu) (skk-emacs-prepare-modeline-properties) (skk-tooltip-show-at-point, skk-search-ja-dic): Emacs 21 $B8~$1%3!<%I$r:o=|(B. 2012-01-11 Tsuyoshi Kitamoto * skk-macs.el (characterp): Emacs 21 $B8~$1%3!<%I$r:o=|(B. * skk-emacs.el: Emacs 21 $B8~$1$N%3!<%I$r:o=|(B.$B6qBNE*$K$O * SKK-MK: $B%$%s%9%H!<%k;~$N%P!<%8%g%s%A%'%C%/(B string-lessp(emacs-version "22.0") $B$K(B (featurep 'emacs) $B$rDI2C(B. 2012-01-09 Tsuyoshi Kitamoto * skk-macs.el (characterp, int-char, string-to-char-list) (string-to-int-list, character-to-event, event-to-character) (cancel-undo-boundary, next-command-event) (skk-color-cursor-display-p, skk-char-to-unibyte-string) (skk-ascii-char-p, skk-jisx0208-p, skk-jisx0213-p) (skk-split-char, skk-char-charset, skk-region-active-p) (skk-process-kill-without-query, skk-string<): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. (skk-indicator-to-string, substring-no-properties): Emacs 21 $B8~$1%3!<%I$r:o=|(B. * skk-vars.el (skk-find-window-system): $B%3%a%s%H$r=$@5(B. (skk-deflocalvar, skk-show-japanese-menu): Emacs 21 $B8~$1%3!<%I$r:o=|(B. 2012-01-08 Tsuyoshi Kitamoto * skk-vars.el (find-coding-system, skk-find-window-system) (skk-coding-system-alist): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. * skk.el (skk-henkan-show-candidate-subr, skk-search-function-usage) (skk-mode-invoke, skk-setup-j-mode-map-options) (skk-multiple-line-message): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. * skk-macs.el (ignore-errors): Emacs 21 $B8~$1%3!<%I$r:o=|(B. docstring $B$r=$@5(B. (skk-called-interactively-p, skk-sit-for, skk-window-body-height): Emacs 21 $B8~$1%3!<%I$r:o=|(B. * skk-kcode.el (skk-display-code): char-to-ucs() $B$,L$Dj5A$N>l9g$O(B encode-char() $B$r;HMQ(B. 2012-01-07 Tsuyoshi Kitamoto * skk-vars.el (skk-kcode-method, skk-kcode-charset-list): skk-running-gnu-emacs $B$KBe$($F(B (featurep 'emacs) $B$r;HMQ(B. (skk-tooltip-mouse-behavior, skk-large-jisyo, skk-aux-large-jisyo): (skk-use-face, skk-cdb-large-jisyo): Emacs 21 $B8~$1%3!<%I$r:o=|(B. * SKK-MK (166$B9TL\(B): `;; After determining APEL installed dirctory.' $B$N(B $BItJ,$+$i(B Emacs 21 $B8~$1%3!<%I$r:o=|(B. (VERSION-STRING): Interactive Installer $B5/F0;~$K(B skk-version $B$rI=<((B. * Makefile (VERSION): 14.4.50 $B$X$H=$@5(B. 2012-01-05 Tetsuo Tsukamoto * skk-version.el (skk-version): Do not increment the major version before the release of a new Emacs major version. 2012-01-05 Tsuyoshi Kitamoto * doc/skk.texi: GNU Emacs 21 $B$K8@5Z$9$k5-=R$r:o=|(B. 2012-01-04 Tatsuya Kinoshita * experimental/skk-exserv.el, experimental/skk-w3m.el, experimental/rdbms/skk-rdbms.el: Don't use `skk-emacs-type'. 2012-01-04 Tetsuo Tsukamoto * ChangeLog.4, ChangeLog.5, ChangeLog.6, ChangeLog.7: Merge them into a single file ChangeLog.4. 2012-01-04 Tsuyoshi Kitamoto * SKK-MK: version check when installation. Emacs 21 is not supported by this version of SKK. * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 15.0.50. ;; Local Variables: ;; coding: iso-2022-7bit-ss2 ;; End: ddskk-15.1.54/makeit.bat0000775000076600007660000001743512074477255014433 0ustar brutusbrutus@echo off rem --- rem --- common install batch file for Meadow & NTEmacs rem --- 1999/07/07, Masaki YATSU mailto:yatsu@aurora.dti.ne.jp rem --- cmail ML member rem --- modified 1999/12/01, Yuh Ohmura, mailto:yutopia@t3.rim.or.jp rem --- modified 2000/12/26, Takeshi Morishima mailto:tm@interaccess.com rem --- date $Date: 2013/01/13 09:30:21 $ rem --- version $Id: makeit.bat,v 1.5 2013/01/13 09:30:21 skk-cvs Exp $ set ELISPMK_APP=skk rem --- Japanese Comments: rem --- rem --- ˆø” rem --- ˆø”‚ɂ‚¢‚Ä‚Í make1.bat ‚̃Rƒƒ“ƒg‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢D rem --- makeit.bat ‚ÍAŠÂ‹«•Ï”‚ðݒ肵‚½Œã‚É make1.bat ‚ðŒÄ‚Ño‚µ‚Ü‚·B rem --- rem --- •ϔݒè rem --- ‚±‚̃Rƒƒ“ƒg‚Ì‚ ‚Ƃɂ ‚é PREFIX, EMACS, EXEC_PREFIX, LISPDIR, rem --- INFODIR, VERSION_SPECIFIC_LISPDIR ‚ÌŠe•Ï”‚ðC‚¨Žg‚¢‚̊‹«‚É rem --- “K“–‚ɇ‚¹‚Äݒ肵‚Ä‚­‚¾‚³‚¢D rem --- “Á‚ÉCEMACS ‚Ì’l‚ðC rem --- Windows95/98 ‚ð—˜—p‚³‚ê‚Ä‚¢‚é•û‚Í meadow95.exe rem --- WindowsNT4.0 ‚ð—˜—p‚³‚ê‚Ä‚¢‚é•û‚Í meadownt.exe rem --- NTEmacs ‚ð—˜—p‚³‚ê‚Ä‚¢‚é•û‚Í emacs.exe rem --- ‚ðŽw’è‚·‚é‚Ì‚ð–Y‚ê‚È‚¢‚悤‚ÉD rem --- rem --- “K‹XŽw’肪I‚Á‚½ makeit.bat ‚͉º‚Ì‚¢‚¸‚ê‚©‚̃tƒ@ƒCƒ‹‚Æ‚µ‚Ä rem --- ƒRƒs[‚µ‚Ä‚¨‚­‚Æ‚»‚¿‚ç‚ð—D悵‚ÄŽÀs‚µ‚Ü‚·B(ƒAƒbƒvƒOƒŒ[ƒh rem --- ‚ÌÛ‚É makeit.bat ‚ðÄ•ÒW‚·‚é•K—v‚ª‚ ‚è‚Ü‚¹‚ñ.) —D懂É: rem --- rem --- 1-1. %HOME%\.elispmk.%ELISPMK_APP%.bat rem --- 1-2. %HOME%\elisp\elispmk.%ELISPMK_APP%.bat rem --- 1-3. %HOME%\config\elispmk.%ELISPMK_APP%.bat rem --- 1-4. c:\Program Files\Meadow\elispmk.%ELISPMK_APP%.bat rem --- 1-5. c:\Meadow\elispmk.%ELISPMK_APP%.bat rem --- 1-6. d:\Meadow\elispmk.%ELISPMK_APP%.bat rem --- rem --- 2-1. %HOME%\.elispmk.bat rem --- 2-2. %HOME%\elisp\elispmk.bat rem --- 2-3. %HOME%\config\elispmk.bat rem --- 2-4. c:\Program Files\Meadow\elispmk.bat rem --- 2-5. c:\Meadow\elispmk.bat rem --- 2-6. d:\Meadow\elispmk.bat rem --- rem --- ‚ƂȂè‚Ü‚·B rem --- rem --- English Comments: rem --- rem --- Arguments rem --- Please refer to comment section of make1.bat. Makeit.bat rem --- will perform installation procedure by executing make1.bat. rem --- rem --- Specifying variables rem --- After this comment section, PREFIX, EMACS, EXEC_PREFIX, rem --- LISPDIR, INFODIR, VERSION_SPECIFIC_LISPDIR is defined using rem --- 'set' batch command. Please specify them appropriately rem --- according to your Emacs environment. Especially remember to set rem --- the EMACS variable to meadow95.exe if you use Meadow on rem --- Windows95/98, or to meadownt.exe if you use Meadow on rem --- WindowsNT4.0, or to emacs.exe if you use NTEmacs. rem --- rem --- After modification, you may make a copy of makeit.bat as a pre- rem --- configured file as one of the following name. Any future rem --- execution of makeit.bat will automatically use this pre- rem --- configured batch file instead of makeit.bat itself. (When rem --- upgrading new distribution file for example, you do not have to rem --- make modification to makeit.bat again.) A pre-configured batch rem --- file is searched in order listed below: rem --- rem --- 1-1. %HOME%\.elispmk.%ELISPMK_APP%.bat rem --- 1-2. %HOME%\elisp\elispmk.%ELISPMK_APP%.bat rem --- 1-3. %HOME%\config\elispmk.%ELISPMK_APP%.bat rem --- 1-4. c:\Program Files\Meadow\elispmk.%ELISPMK_APP%.bat rem --- 1-5. c:\Meadow\elispmk.%ELISPMK_APP%.bat rem --- 1-6. d:\Meadow\elispmk.%ELISPMK_APP%.bat rem --- rem --- 2-1. %HOME%\.elispmk.bat rem --- 2-2. %HOME%\elisp\elispmk.bat rem --- 2-3. %HOME%\config\elispmk.bat rem --- 2-4. c:\Program Files\Meadow\elispmk.bat rem --- 2-5. c:\Meadow\elispmk.bat rem --- 2-6. d:\Meadow\elispmk.bat rem --- •ϔݒè‚Ì—á (Example of variable definition) rem --- c:\usr\Meadow ‚ɃCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚é 1.10 ‚Ì Meadow ‚ðŽg—p rem --- ‚µ‚Ä‚¢‚éꇂÌÝ’è—á. (An example of variable definition. In rem --- this example, Meadow 1.10 installed in c:\usr\Meadow directory rem --- is used.) rem --- set PREFIX=c:\usr\Meadow rem --- set EMACS=%PREFIX%\1.10\bin\meadow95.exe rem --- set EXEC_PREFIX= rem --- set LISPDIR=%PREFIX%\site-lisp rem --- set VERSION_SPECIFIC_LISPDIR=%PREFIX%\1.10\site-lisp rem --- set DEFAULT_MAKE_ARG=elc rem --- ˆÀ‘S‚Ì‚½‚߃fƒtƒHƒ‹ƒg‚Ì’l‚Í‚·‚ׂċ󕶎š—ñ‚ɂȂÁ‚Ä‚¢‚Ü‚·B‚¨Žg‚¢ rem --- ‚̃VƒXƒeƒ€‚É‚ ‚킹‚Ä‚±‚ê‚ç‚̕ϔ‚ðŽw’肵‚Ä‚­‚¾‚³‚¢B(To take a rem --- safe side, default values are all set to null strings. Please rem --- specify these variables accordingly for your system.) rem --- ‚È‚¨ADEFAULT_MAKE_ARG ‚ɉ”\‚È’l‚Í make1.bat ‚ðŒä——‚­‚¾‚³‚¢B rem --- (Please see make1.bat for possible values of DEFAULT_MAKE_ARG.) set PREFIX= set EMACS= set LISPDIR= set DEFAULT_MAKE_ARG= rem --- makeit.bat “à‚©‚çŒÄ‚΂ê‚Ä‚¢‚éꇂÍÄ‹AŒÄ‚Ño‚µ‚ð‚¹‚¸ make1 ‚ðŽÀs if not "%ELISPMK%"=="" goto execsubmk rem --- set ELISPMK=%HOME%\.elispmk.%ELISPMK_APP%.bat if exist %ELISPMK% goto execelmkb set ELISPMK=%HOME%\elisp\elispmk.%ELISPMK_APP%.bat if exist %ELISPMK% goto execelmkb set ELISPMK=%HOME%\config\elispmk.%ELISPMK_APP%.bat if exist %ELISPMK% goto execelmkb set ELISPMK="c:\Program Files\Meadow\elispmk.%ELISPMK_APP%.bat" if exist %ELISPMK% goto execelmkb set ELISPMK=c:\Meadow\elispmk.%ELISPMK_APP%.bat if exist %ELISPMK% goto execelmkb set ELISPMK=d:\Meadow\elispmk.%ELISPMK_APP%.bat if exist %ELISPMK% goto execelmkb rem --- set ELISPMK=%HOME%\.elispmk.bat if exist %ELISPMK% goto execelmkb set ELISPMK=%HOME%\elisp\elispmk.bat if exist %ELISPMK% goto execelmkb set ELISPMK=%HOME%\config\elispmk.bat if exist %ELISPMK% goto execelmkb set ELISPMK="c:\Program Files\Meadow\elispmk.bat" if exist %ELISPMK% goto execelmkb set ELISPMK=c:\Meadow\elispmk.bat if exist %ELISPMK% goto execelmkb set ELISPMK=d:\Meadow\elispmk.bat if exist %ELISPMK% goto execelmkb echo ---- echo INFORMATIVE: No pre-configured batch (e.g. ~/.elispmk.bat echo INFORMATIVE: or ~/.elispmk.%ELISPMK_APP%.bat) found. echo INFORMATIVE: You may create one for your convenience. echo INFORMATIVE: See comments in makeit.bat. echo ---- :execsubmk set ELISPMK= rem --- %EMACS% ‚ªê‡‚̓Gƒ‰[I—¹‚·‚é if "%EMACS%"=="" goto errnotspecified if not exist "%EMACS%" goto errnonexistent rem --- MAKE1.BAT Control set SUBMAKEOK=OK echo ---- echo Executing make1.bat in the current directory using the following env. echo HOME=%HOME% echo PREFIX=%PREFIX% echo EMACS=%EMACS% echo EXEC_PREFIX=%EXEC_PREFIX% echo LISPDIR=%LISPDIR% echo INFODIR=%INFODIR% echo VERSION_SPECIFIC_LISPDIR=%VERSION_SPECIFIC_LISPDIR% echo ---- set ARG=%1 if "%ARG%"=="" set ARG=%DEFAULT_MAKE_ARG% echo Executing .\make1.bat with argument=%ARG% .\make1.bat %ARG% echo Error: for some reason .\make1.bat could not be executed. echo Please check if .\make1.bat exists and correct. goto pauseend :execelmkb echo ---- echo Found %ELISPMK%. Executing it... echo ---- %ELISPMK% %1 echo Error: for some reason %ELISPMK% could not be executed. echo Please check if ELISPMK=%ELISPMK% exists and correct. goto printenv rem --- %EMACS% ‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢ :errnotspecified echo Error: Environment variable EMACS is not specified. goto printenv rem --- %EMACS% ‚Éݒ肳‚ê‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µ‚È‚¢ :errnonexistent echo Error: EMACS=%EMACS% does not exist. :printenv echo ---- echo Check correctness of the following environment variables. echo HOME=%HOME% echo PREFIX=%PREFIX% echo EMACS=%EMACS% echo EXEC_PREFIX=%EXEC_PREFIX% echo LISPDIR=%LISPDIR% echo INFODIR=%INFODIR% echo VERSION_SPECIFIC_LISPDIR=%VERSION_SPECIFIC_LISPDIR% echo DEFAULT_MAKE_ARG=%DEFAULT_MAKE_ARG% echo See comments in makeit.bat and make1.bat for setup instruction. echo ---- :pauseend echo Type any key when you're done reading the error message. pause rem --- end of makeit.bat :end ddskk-15.1.54/skk-xemacs.el0000664000076600007660000004125512125123004015024 0ustar brutusbrutus;;; skk-xemacs.el --- XEmacs support for SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000-2010 SKK Development Team ;; Author: Tetsuo Tsukamoto ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'avoid)) (require 'balloon-help) (require 'overlay) (require 'poe) (require 'skk-macs) (eval-and-compile (autoload 'display-pixel-height "frame") (autoload 'display-pixel-width "frame")) ;;;###autoload (unless noninteractive (require 'skk-setup)) ;; Variables. (defvar skk-xemacs-extent-alist (list (cons 'default (make-extent nil nil)) (cons 'hiragana (make-extent nil nil)) (cons 'katakana (make-extent nil nil)) (cons 'jisx0208-latin (make-extent nil nil)) (cons 'latin (make-extent nil nil)) (cons 'jisx0201 (make-extent nil nil)) (cons 'abbrev (make-extent nil nil)))) (defvar skk-xemacs-modeline-menu-items '("Daredevil SKK Menu" ["Hiragana" (cond (skk-mode (skk-j-mode-on)) (t (skk-mode t))) :selected (and skk-j-mode (not skk-katakana)) :style radio :keys nil] ["Katakana" (cond (skk-mode (skk-j-mode-on t)) (t (skk-mode t) (skk-j-mode-on t))) :selected (and skk-j-mode skk-katakana) :style radio :keys nil] ["Hankaku alphabet" skk-latin-mode :selected skk-latin-mode :style radio :keys nil] ["Zenkaku alphabet" skk-jisx0208-latin-mode :selected skk-jisx0208-latin-mode :style radio :keys nil] "--" ["Read Manual" skk-xemacs-info t] ["Start Tutorial" skk-tutorial t] ["Customize SKK" skk-customize-group-skk t] ["Customize SKK (simple)" skk-customize t] ["Send a Bug Report" (let (skk-japanese-message-and-error) (skk-submit-bug-report)) t] "--" ["About Daredevil SKK..." skk-version t] ["Visit Daredevil SKK Web Site" skk-xemacs-visit-openlab t])) (defvar skk-tooltip-default-font-pixel-size 12) (defvar skk-xemacs-need-redraw-tooltip nil "*Compiz $B2TF0;~$J$I%D!<%k%F%#%C%W$N2#I}$,$*$+$7$$$H$-$K@_Dj!#(B Non-nil $B$J$i$P%D!<%k%F%#%C%W$r:FIA2h$9$k!#(B") (defvar skk-xemacs-redraw-interval 0.01 "*$B%D!<%k%F%#%C%W:FIA2h$N:]$KCV$/;~4V!#(B") ;; Functions. (defun skk-xemacs-modeline-menu () (interactive) ;; Find keys (aset (nth 1 skk-xemacs-modeline-menu-items) 7 (cond (skk-katakana (skk-xemacs-find-func-keys 'skk-toggle-kana)) ((not skk-mode) (skk-xemacs-find-func-keys 'skk-mode)) ((not skk-j-mode) (skk-xemacs-find-func-keys 'skk-kakutei)) (t nil))) (aset (nth 2 skk-xemacs-modeline-menu-items) 7 (if (and skk-j-mode (not skk-katakana)) (skk-xemacs-find-func-keys 'skk-toggle-kana) nil)) (aset (nth 3 skk-xemacs-modeline-menu-items) 7 (if skk-j-mode (skk-xemacs-find-func-keys 'skk-latin-mode) nil)) (aset (nth 4 skk-xemacs-modeline-menu-items) 7 (if skk-j-mode (skk-xemacs-find-func-keys 'skk-jisx0208-latin-mode) nil)) ;; (popup-menu skk-xemacs-modeline-menu-items)) (defun skk-xemacs-info () (interactive) (Info-goto-node "(skk)")) (defun skk-xemacs-customize () (interactive) (customize-group "skk")) (defun skk-xemacs-visit-openlab () (interactive) (browse-url "http://openlab.jp/skk/index-j.html")) ;;;###autoload (defun skk-xemacs-prepare-modeline-properties () (setq skk-icon (if (and skk-show-icon (locate-data-file "skk.xpm") (featurep 'xpm)) (let ((glyph (make-glyph))) (set-glyph-image glyph (vector 'xpm :file (locate-data-file "skk.xpm"))) (cons (cdr (assq 'hiragana skk-xemacs-extent-alist)) glyph)) nil)) ;; (unless skk-use-color-cursor (setq skk-indicator-use-cursor-color nil)) ;; (let (extent face) (when window-system (defvar skk-xemacs-modeline-map (let ((map (make-sparse-keymap))) (define-key map [button3] (eval '(make-modeline-command-wrapper 'skk-xemacs-modeline-menu))) (define-key map [button1] (eval '(make-modeline-command-wrapper 'skk-xemacs-modeline-menu))) map))) (dolist (mode '(hiragana katakana jisx0208-latin latin jisx0201 abbrev)) ;; (setq extent (cdr (assq mode skk-xemacs-extent-alist))) (when window-system (set-extent-keymap extent skk-xemacs-modeline-map) (set-extent-property extent 'help-echo "button1 or button3 shows SKK menu")) ;; (setq face (intern (format "skk-xemacs-%s-face" mode))) (unless (find-face face) (make-face face) (set-face-parent face 'modeline nil '(default)) (when (and window-system skk-indicator-use-cursor-color) (set-face-foreground face (symbol-value (intern (format "skk-cursor-%s-color" mode))) nil '(default color win)))) (set-extent-face extent face)))) (defun skk-xemacs-find-func-keys (func) (let ((keys (or (do ((spec (nth 4 skk-rule-tree) (cdr spec)) (list nil (car spec)) (str nil (if (eq (nth 3 list) func) (nth 1 list) nil))) ((or str (null spec)) (cond ((not (stringp str)) nil) ((string= str "\C-j") [(control j)]) (t str)))) (let ((k (where-is-internal func skk-j-mode-map))) (dolist (key k) (when (and (= (length key) 2) (eq (aref key 1) 'linefeed)) (aset key 1 '(control j)))) k)))) (if keys (sorted-key-descriptions (if (listp keys) (skk-remove-duplicates keys) keys)) nil))) (defun skk-xemacs-mouse-position (pos) "Returns (WINDOW X . Y) of current point - analogous to mouse-position" (let* ((beg (window-start)) (col (save-excursion (goto-char pos) (current-column))) (row)) (setq row (count-lines beg pos)) (cons (selected-window) (cons col row)))) (unless (fboundp 'multibyte-string-p) (defalias 'multibyte-string-p 'stringp)) ;; XEmacs 21.4 (unless (fboundp 'current-column) (defalias 'current-pixel-row 'ignore)) (defalias 'skk-tooltip-hide 'balloon-help-undisplay-help) (defun skk-tooltip-resize-text (text) (let ((lines 0) (max-lines ;; $B2hLL$NH>J,$N9b$5$r4p=`$K:GBg9b$r7h$a$k(B (- (/ (/ (display-pixel-height) 2) (or (cdr (assq 'PIXEL_SIZE (font-properties (face-font 'default)))) skk-tooltip-default-font-pixel-size)) 2)) (columns 0) (current-column nil)) (with-temp-buffer (set-buffer-multibyte t) (insert text) (goto-char (point-min)) (while (not (eobp)) (setq lines (1+ lines)) (cond ((= lines max-lines) ;; $BD9$9$.$k(B (beginning-of-line) (insert "($BD9$9$.$k$N$G>JN,$5$l$^$7$?(B)") (delete-region (point) (point-max)) (goto-char (point-max)) (setq text (buffer-string))) (t (end-of-line) (setq current-column (current-column)) (when (> current-column columns) (setq columns current-column)) (forward-line 1))))) ;; (text . (x . y)) (cons text (cons columns lines)))) (defun skk-tooltip-show-at-point (text &optional situation) (require 'avoid) (let* ((pos (if skk-isearch-switch (with-current-buffer (window-buffer (minibuffer-window)) (point-min)) (or (and (eq skk-henkan-mode 'active) (ignore-errors (marker-position skk-henkan-start-point))) (point)))) (P (cdr (skk-xemacs-mouse-position pos))) (oP (cdr (mouse-position))) (avoid-destination (if (memq skk-tooltip-mouse-behavior '(avoid avoid-maybe banish)) (mouse-avoidance-banish-destination) nil)) (window (if skk-isearch-switch (minibuffer-window) (selected-window))) (fontsize (or (cdr (assq 'PIXEL_SIZE (font-properties (face-font 'default)))) 0)) (edges (window-pixel-edges window)) (left (+ (car edges) (* 0 (/ (1+ fontsize) 2)) (or (current-pixel-column window pos) (+ (car P) (/ (1+ fontsize) 2))) (frame-parameter (selected-frame) 'left))) (top (+ (cadr edges) (* 7 (/ (1+ fontsize) 2)) (or (current-pixel-row window pos) (+ (cdr P) fontsize)) (frame-parameter (selected-frame) 'top))) (tooltip-info (skk-tooltip-resize-text text)) (text (car tooltip-info)) (tooltip-size (cdr tooltip-info)) (text-width (* (/ (1+ fontsize) 2) (+ 2 (car tooltip-size)))) (text-height (* fontsize (+ 1 (cdr tooltip-size)))) (screen-width (display-pixel-width)) (screen-height (display-pixel-height)) (inhibit-quit t) event) ;; (when (null (car P)) (unless (memq skk-tooltip-mouse-behavior '(avoid-maybe banish nil)) (setq oP (cdr (mouse-avoidance-point-position))))) ;; (when (> (+ left text-width (* 4 fontsize)) screen-width) ;; $B1&$K4s$j$9$.$F7g$1$F$7$^$o$J$$$h$&$K(B (setq left (- left (- (+ left text-width ;; $B>/$7M>7W$K:8$K4s$;$J$$$H(B avoid ;; $B$7$?%^%&%9%]%$%s%?$H43>D$9$k(B (* 10 (/ (1+ fontsize) 2))) screen-width)))) (when (> (+ top text-height (* 3 fontsize)) screen-height) ;; $B2<$K4s$j$9$.$F7g$1$F$7$^$o$J$$$h$&$K(B (setq top (- top (- (+ top text-height) screen-height) ;; $B==J,>e$2$J$$$H%F%-%9%H$H=E$J$k$N$G!"(B ;; $B$$$C$=%F%-%9%H$N>e$K$7$F$_$k(B (- screen-height top) (* 4 fontsize))) ;; $B$5$i$K(B X $B:BI8$r(B... (let ((right (+ left text-width skk-tooltip-x-offset)) (mouse-x (+ (frame-parameter (selected-frame) 'left) (* (frame-pixel-width))))) (when (and (<= left mouse-x) (<= mouse-x right)) ;; $B%^%&%9%]%$%s%?$HHo$j$=$&$J$H$-(B (setq left (- left (- right mouse-x) (* 4 fontsize)))))) ;; (setq balloon-help-help-object-x (+ left skk-tooltip-x-offset) balloon-help-help-object-y (+ top skk-tooltip-y-offset)) ;; (when (eq skk-tooltip-mouse-behavior 'follow) (mouse-avoidance-set-mouse-position P)) ;; (when (or (and (memq skk-tooltip-mouse-behavior '(avoid banish)) (not (equal (mouse-position) avoid-destination))) (and (eq skk-tooltip-mouse-behavior 'avoid-maybe) (cadr (mouse-position)) (not (equal (mouse-position) avoid-destination)))) (save-window-excursion (select-window (frame-rightmost-window (selected-frame) 0)) (mouse-avoidance-banish-mouse))) ;; (skk-tooltip-show-1 text (eq situation 'listing)) ;; (when (eq situation 'annotation) (skk-annotation-message situation)) ;; (setq event (next-command-event)) (cond ((skk-key-binding-member (skk-event-key event) '(keyboard-quit skk-kanagaki-bs skk-kanagaki-esc) skk-j-mode-map) (skk-tooltip-hide) (when (and (not (memq skk-tooltip-mouse-behavior '(banish nil))) (car oP)) (mouse-avoidance-set-mouse-position oP)) (skk-set-henkan-count 0) (cond ((eq skk-henkan-mode 'active) (skk-unread-event (character-to-event (aref (car (where-is-internal 'skk-previous-candidate skk-j-mode-map)) 0))) (when (eq situation 'listing) ;; skk-henkan $B$^$G0l5$$K(B throw $B$9$k!#(B (throw 'unread nil))) (t (skk-unread-event event)))) (t (skk-tooltip-hide) (when (and (not (memq skk-tooltip-mouse-behavior '(banish nil))) (car oP)) (mouse-avoidance-set-mouse-position oP)) ;; I don't know what magic it is... (sit-for 0.01) ;; (skk-unread-event event))))) (defun skk-tooltip-show-1 (help &optional listing) (let ((balloon-help-frame-name (or (cdr (assq 'name skk-tooltip-parameters)) balloon-help-frame-name)) (balloon-help-foreground (or (cdr (assq 'foreground-color skk-tooltip-parameters)) balloon-help-foreground)) (balloon-help-background (or (cdr (assq 'background-color skk-tooltip-parameters)) balloon-help-background)) (balloon-help-border-color (or (cdr (assq 'border-color skk-tooltip-parameters)) balloon-help-border-color)) (balloon-help-border-width (or (cdr (assq 'border-with skk-tooltip-parameters)) balloon-help-border-width)) (balloon-help-timeout skk-tooltip-hide-delay) (balloon-help-font (face-font 'default))) (setq balloon-help-timeout-id nil) (when (and (device-on-window-system-p) (stringp help)) (save-excursion (when (find-face skk-tooltip-face) (setq help (propertize help 'face skk-tooltip-face))) (when (or (not (frame-live-p balloon-help-frame)) (not (eq (selected-device) (frame-device balloon-help-frame)))) (setq balloon-help-frame (balloon-help-make-help-frame))) (set-buffer balloon-help-buffer) (erase-buffer) (insert help) (if (not (bolp)) (insert ?\n)) (indent-rigidly (point-min) (point-max) 1) (balloon-help-set-frame-properties) (skk-xemacs-balloon-help-resize-help-frame listing) (balloon-help-move-help-frame) (balloon-help-expose-help-frame) (when skk-xemacs-need-redraw-tooltip ;; Compiz $B2TF0;~$K:FIA2h$7$J$$$H2#I}$,$*$+$7$/$J$k$3$H$"$j(B (sleep-for skk-xemacs-redraw-interval) (skk-tooltip-hide) (sleep-for skk-xemacs-redraw-interval) (balloon-help-expose-help-frame)))) ;; Is this right? (setq balloon-help-timeout-id (add-timeout (/ balloon-help-timeout 1000.0) #'balloon-help-display-help nil)))) (defun skk-xemacs-balloon-help-resize-help-frame (&optional listing) ;; GNU Emacs $B$H0c$$(B XEmacs $B$N(B balloon help $B$O%5%$%:$N<+F0D4@0$,(B ;; $B$&$^$/8z$+$:!"J8;z$,7g$1$k$3$H$b$"$k$?$a!"$3$3$G=PMh$k$@$1(B ;; $BD4@0$9$k!#(B (save-excursion (set-buffer balloon-help-buffer) (let* ((longest 0) (lines 0) (done nil) (inst (vector 'string ':data nil)) (window (frame-selected-window balloon-help-frame)) (font-width (min (font-width (face-font 'default) balloon-help-frame) (glyph-width (make-glyph "a") window) (/ (glyph-width (make-glyph "$B$"(B") window) 2))) start width (window-min-height 1) (window-min-width 1)) (goto-char (point-min)) (while (not done) (setq start (point)) (end-of-line) (aset inst 2 (buffer-substring start (point))) (setq longest (max longest (glyph-width (make-glyph inst) window)) done (not (zerop (forward-line)))) (and (not done) (setq lines (1+ lines)))) (setq width (round (/ (float longest) (float font-width)))) ;; Increase width and lines... (when (<= width 10) (setq width (+ (round (log (float width) 2)) width))) (setq lines (cond ((= lines 1) lines) ((or listing (= lines 2)) (+ 1 lines)) (t (+ (max 1 (round (/ (float lines) 10.0))) ; 1+ per 10 lines lines)))) ;; (set-frame-size balloon-help-frame width lines)))) ;; Hooks. ;;; Not necessary, but... ;;;###autoload (add-hook 'before-init-hook ;;;###autoload #'(lambda () ;;;###autoload (define-key ctl-x-map "\C-j" 'skk-mode))) ;; Advice. (skk-defadvice minibuffer-keyboard-quit (around skk-xemacs-ad activate) ;; XEmacs has `minibuffer-keyboard-quit' ;; that has nothing to do with delsel. (skk-remove-minibuffer-setup-hook 'skk-j-mode-on 'skk-setup-minibuffer 'skk-add-skk-pre-command) (skk-exit-henkan-in-minibuff) (cond ((not skk-mode) ad-do-it) ((not skk-henkan-mode) (cond ((skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean)) (t ad-do-it))) ((eq skk-henkan-mode 'active) (setq skk-henkan-count 0) (if (and skk-delete-okuri-when-quit skk-henkan-okurigana) (let ((count (length skk-henkan-okurigana))) (skk-previous-candidate) ;; $B$3$3$G$O(B `delete-backward-char' $B$K(B ;; $BBhFs0z?t$rEO$5$J$$J}$,%Y%?! (point) skk-henkan-start-point) (delete-region (point) skk-henkan-start-point)) (skk-kakutei)))) ;; XEmacs 21.4 workarounds. (when (and (= emacs-major-version 21) (<= emacs-minor-version 4)) (defalias 'skk-tooltip-show-at-point 'ignore) (defalias 'skk-tooltip-hide 'ignore)) (provide 'skk-xemacs) ;;; skk-xemacs.el ends here ddskk-15.1.54/nicola/0000775000076600007660000000000012161161542013703 5ustar brutusbrutusddskk-15.1.54/nicola/skk-nicola.el0000664000076600007660000007520212130532655016271 0ustar brutusbrutus;;; skk-nicola.el --- SKK $B$K?F;X%7%U%HF~NO%$%s%?%U%'%$%9$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%W%m%0%i%`$OL'1:0o;K$5$s:n$N(B NICOLA-SKK 0.39 $B$r4p$K!"(B Daredevil SKK $B$K(B ;; $BBP1~$5$;$?$b$N$G$9!#86:n$N%"%$%G%"$K4p$$$FO$r4p$K$D$/$j$^$7$?!#(B ;; ;; $BF1;a$N%"%$%G%"$H?F;X%7%U%HF~NO$K4X$9$k$4?TNO$K7I0U$rI=$7!"$^$?46\:Y$K$D$$$F$O!"F1:-$N(B README.NICOLA.ja $B$r$4Mw2<$5$$!#(B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-kanagaki-util) (require 'skk-macs) (require 'skk-vars)) (eval-and-compile (require 'skk-kanagaki)) (when (eval-when-compile (featurep 'emacs)) (require 'skk-emacs)) (eval-and-compile (autoload 'skk-dcomp-marked-p "skk-dcomp") (autoload 'skk-dcomp-face-off "skk-dcomp") (autoload 'skk-dcomp-face-on "skk-dcomp")) ;; Variables. (defcustom skk-nicola-interval 0.1 "*$B$3$N;~4V0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B $BC10L$OIC!#%G%U%)%k%H$O(B 0.1 $BIC!#(B" :type 'number :group 'skk-nicola) (defcustom skk-nicola-latin-interval 0.1 "*$B$3$N;~4V0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B $BC10L$OIC!#%G%U%)%k%H$O(B 0.1 $BIC!#(B" :type 'number :group 'skk-nicola) (defcustom skk-nicola-lshift-keys (list (cond ((eq system-type 'windows-nt) [noconvert]) (t ;; XEmacs, Emacs 19 or later ;; (except Emacs 20.1 & 20.2) [muhenkan]))) "*$B:8?F;X%-!<$H$7$F;H$&%-!C$7%-!<$rMQ0U$9$k!#(B $B$3$l$O!"(BJIS $B%-!<%\!<%I$G$O(B \":\" $B$H(B \"]\" $B$N0LCV$KAjEv$9$k!#(B" :type 'boolean :group 'skk-nicola) (defcustom skk-nicola-prefix-suffix-abbrev-chars (cond ((memq skk-kanagaki-keyboard-type '(nicola-dvorak omelet-dvorak)) '(?i ?d)) (t '(?g ?h))) "*$B@\F,!&@\Hx8lF~NO$r$7$?$j!"(B abbrev $B%b!<%I$KF~$kJ8;z!#(B $B$3$l$i$NJ8;z$KEv$?$k%-!<$NF1;~BG80$r8!=P$9$k$H!"(B $BL>$N%9%?%$%k!#(B `nicola-skk' $B$rA*$V$H!"!V"&$7(B*$B$C(B $B"M(B $B"'CN$C!W$N$h$&$KJQ49$9$k!#(B `skk' $B$rA*$V$H!"!V"&$7(B*$B$C$F(B $B"M(B $B"'CN$C$F!W$N$h$&$KJQ49$9$k!#(B" :type '(choice (const nicola-skk) (const skk)) :group 'skk-nicola) (defcustom skk-nicola-help-key "2" "* \\[help] $B$K$*$$$F%X%k%W$rI=<($9$k%-!l9g$K(B `skk-j-mode' $B$KF~$k!#(B" (interactive "*p") (if (sit-for skk-nicola-latin-interval t) ;; then (skk-bind-last-command-char (if (characterp (event-to-character last-command-event)) (event-to-character last-command-event) ?\ ) (call-interactively 'self-insert-command t)) ;; else (let ((last (cond ((eval-when-compile (featurep 'xemacs)) (event-key last-command-event)) (t last-command-event))) (next (cond ((eval-when-compile (featurep 'xemacs)) (event-key (next-command-event))) (t (next-command-event)))) char) (if (eq last next) ;; then (skk-bind-last-command-char (if (characterp (event-to-character last-command-event)) (event-to-character last-command-event) ?\ ) (call-interactively 'self-insert-command t) (call-interactively 'self-insert-command t)) ;; else (when (characterp next) (setq char next) (setq next (key-description (skk-char-to-unibyte-string char)))) (when (eq next 'space) (setq next (key-description " "))) (when (symbolp next) (setq next (key-description (vector next)))) ;; (unless (stringp next) (setq next (format "%s" next))) ;; (cond ((member next (mapcar #'(lambda (key) (key-description key)) (append skk-nicola-rshift-keys skk-nicola-lshift-keys))) ;; (skk-j-mode-on) (skk-cursor-set skk-cursor-hiragana-color)) (char (skk-bind-last-command-char (if (characterp (event-to-character last-command-event)) (event-to-character last-command-event) ?\ ) (call-interactively 'self-insert-command t)) (skk-bind-last-command-char char (call-interactively 'self-insert-command t))))))) nil) ;;;###autoload (defun skk-nicola-insert (&optional arg parg) "$BF1;~BG80$rG'<1$7$F!"(BNICOLA $B$+$JF~NO$r$9$k!#(B" (interactive "*p") (let (time1 time2 next-event next) ;; (setq time1 (skk-nicola-format-time (current-time))) ;; (unless (eq skk-henkan-mode 'on) (setq skk-nicola-okuri-flag nil)) ;; (cond ((sit-for skk-nicola-interval t) ;; No input in the interval. (skk-nicola-insert-single this-command arg parg)) (t ;; Some key's pressed. (setq time2 (skk-nicola-format-time (current-time))) ;; (setq next-event (next-command-event) next (skk-nicola-event-to-key next-event)) (cond ((skk-nicola-maybe-double-p this-command next) (skk-nicola-treat-triple this-command next time1 time2 arg)) (t ;; $B:G=i$NF~NO$OC1FHBG80$G$7$+$"$j$($J$$$H3NDj!#(B (skk-nicola-insert-single this-command arg) (skk-unread-event next-event))))) ;; $BE}7WE*2ACM$,$"$k$+$J(B...$B!)(B ; (setq skk-nicola-temp-data ; (cons ; (list (or (skk-last-command-char) this-command) ; period1 ; next ; period2 ; third) ; skk-nicola-temp-data)) ) ;; `skk-kana-input' $B$,2?$bF~NO$7$J$$$h$&$K!"(Bnil $B$rJV$7$F$*$/!#(B nil) (defun skk-nicola-format-time (time) "`current-time' $B$NJV$97k2L$rJQ49$7$FI>2A$G$-$k$h$&$K$9$k!#(B" (let ((time1 (* (float 65536) ;; 2^16 (car time))) (time2 (cadr time)) (time3 (/ (caddr time) (float 1000000)))) (+ time1 time2 time3))) (defun skk-nicola-event-to-key (event) "EVENT $B$rH/@8$9$k%-!<$rl9g$O!"Cf1{$K64$^$l$??F;X%-!<(Bs$B$,J8(B ;; $B;z%-!<(Ba$B$r=$>~$9$k$b$N$+!"J8;z%-!<(B b$B$r=$>~$9$k$b$N$+$r7hDj$7(B ;; $B$J$1$l$P$J$i$J$$!#!J?^#6!K(B ;; ;; $B4pK\E*$K$O!"2!2<;~9o$,!"(B $B$h$j?F;X%-!<$K6a$$J8;z%-!<$H$N4V$K(B ;; $BF1;~BG80$,@.N)$9$k$HH=CG$9$k!#(B ;; ;; $B?^(B6$B!!!!!!!VJ8;z%-!<(BON$B"*?F;X%-!<(BON$B"*J8;z%-!<(BON$B!W$NNc(B ;; ;; $B!!!!J8;z%-!<(Ba $B!!!!!!!!!!!!!!(B|$B!1!1!1(B| ;; $B!!!!!!!!!!!!!!!!!!!!!D!D!D!D!!!!!!!!!D!D!D!D!D!D!D!D(B ;; ;; $B!!!!?F;X%-!<(Bs $B!!!!!!!!!!!!!!!!!!(B|$B!1!1!1(B| ;; $B!!!!!!!!!!!!!!!!!!!!!D!D!D!D!D!D!!!!!!!!!D!D!D!D!D!D(B ;; ;; $B!!!!J8;z%-!<(Bb $B!!!!!!!!!!!!!!!!!!!!!!!!(B|$B!1!1!1(B| ;; $B!!!!!!!!!!!!!!!!!!!!!D!D!D!D!D!D!D!D!D!!!!!!!!!D!D!D(B ;; ;; $B!!!!!!!!!!!!!!!!!!!!!!!!!!!!(B|-t1-|-t2-| ;; (t1$B!"(Bt2$B$O6&$KH=Dj;~4V0JFb(B) ;; ;; t1=t2$B$J$i$P!"J8;z%-!<(Ba$B$H?F;X%-!<(Bs$B$,F1;~BG80!"J8;z%-!<(Bb$B$OC1FHBG80!#(B (defun skk-nicola-treat-triple (first next time1 time2 arg) "3 $B$D$NBG80$N$&$A!"$I$N(B 2 $BBG80$,F1;~BG80$+H=Dj$7$F%P%C%U%!$KA^F~$9$k!#(B" (let ((period1 (- time2 time1)) time3 period2 str third-event third) (cond ((sit-for period1 t) ;; 3 $B$D$a$NBG80$O@)8B;~4VFb$K$J$+$C$?!#F1;~BG80$H3NDj!#(B(< t1 t2) (skk-nicola-insert-double first next arg)) (t ;; 3 $B$D$a$NBG80$,@)8B;~4VFb$K$"$C$?!#$=$N(B event $B$rD4$Y$k!#(B (setq period2 (- (setq time3 (skk-nicola-format-time (current-time))) time2) str (if (characterp next) (skk-char-to-unibyte-string next)) third-event (next-command-event) third (skk-nicola-event-to-key third-event)) (cond ((and (skk-nicola-maybe-double-p next third) ;; ($BMW$i$J$$$+$bCN$i$J$$$,!"B?>/(B `sit-for' $B$NJV$C$F$/$k;~(B ;; $B4V$H(B `current-time' $B$,JV$9;~4V$H$N4V$K%:%l$,@8$8$k$3$H(B ;; $B$b$"$k$N$G!"0l1~Hf3S$7$F$*$/(B) (> period1 period2)) ;; $BA0$N(B 2 $BBG80$OF1;~BG80$G$O$J$$$H3NDj!#(B ;; $B8e$N(B 2 $BBG80$,F1;~BG80$+$I$&$+$O!"99$K= skk-nicola-interval 1) ;; $BC1FHBG80$rF10l%-!)) ((eq skk-henkan-mode 'on) ;; $B@\F,8l$N=hM}(B (skk-kana-cleanup 'force) (insert-and-inherit ?>) (skk-set-marker skk-henkan-end-point (point)) (setq skk-henkan-count 0 skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point (point)) skk-prefix "") (skk-henkan)) (t ;; (skk-abbrev-mode 1)))) ((and (not (eq char next)) (memq char skk-nicola-toggle-kana-chars) (memq next skk-nicola-toggle-kana-chars)) ;; [dk] (skk-toggle-kana 1)) (t ;; [$BJ8;z(B $BJ8;z(B] (let ((str (skk-nicola-insert-kana char skk-nicola-plain-rule arg))) (when (and skk-isearch-switch (not skk-henkan-mode)) (setq isearch-cmds (cons (cond ((vectorp (car isearch-cmds)) (let ((cmds (copy-sequence (car isearch-cmds)))) (aset cmds 0 (concat (aref (car isearch-cmds) 0) str)) (aset cmds 1 (concat (aref (car isearch-cmds) 1) str)) cmds)) (t (nconc (list (concat (caar isearch-cmds) str) (concat (cadar isearch-cmds) str)) (cddar isearch-cmds)))) isearch-cmds)))) (unless (and (< 1 skk-nicola-interval) (eq next char)) ;; $BC1FHBG80$rF10l%-!l9g$O$=$N?t$@$1J8;zNs$rO"7k$7$FF~NO$9$k!#(B" (let* ((el (cadr (assq char rule))) (str (when el (cond ((stringp el) el) ((not (listp el)) nil) (skk-katakana (car el)) (t (cdr el))))) (fun (when (and el (symbolp el)) el)) (arg (prefix-numeric-value arg))) ;; (when str (if (symbolp str) (setq fun str str nil) (skk-cancel-undo-boundary) (skk-insert-str (setq str (make-string arg (string-to-char str)))))) ;; (when fun (funcall fun arg)) ;; (cond (skk-nicola-okuri-flag (skk-nicola-process-okuri)) ((eq skk-henkan-mode 'active) (skk-kakutei))) ;; $B2?$+$K;H$&$3$H$,$"$k$+$b$7$l$J$$$N$G!"(B ;; STR $B$rJV$7$F$*$/!#(B str)) (defun skk-nicola-process-okuri () "$BAw$j3+;O$NI8<1$K$h$jAw$j3+;OE@$rG'<1$7!"Aw$j$"$jJQ49$r3+;O$9$k!#(B" (let ((okuri (buffer-substring-no-properties (1+ skk-nicola-okuri-flag) (point))) tag) (unless (and (not (eq skk-nicola-okuri-style 'nicola-skk)) (member okuri '("$B$C(B" "$B%C(B"))) (skk-save-point (goto-char skk-nicola-okuri-flag) (when (eq (following-char) ?*) (delete-char 1)) (backward-char 1) (when (member (buffer-substring-no-properties (point) (marker-position skk-nicola-okuri-flag)) '("$B$C(B" "$B%C(B")) (setq tag 'no-sokuon))) (skk-kanagaki-set-okurigana tag)))) (defun skk-nicola-set-okuri-flag () "$BAw$j3+;OE@$r(B marker $B$GI8<1$7!"Aw$j$"$jJQ49$NBT$A>uBV$KF~$k!#(B `*' $B$rA^F~$9$k$3$H$GI8<1$9$k!#(B" (interactive) (when (eq skk-henkan-mode 'on) ;; $B"&%b!<%I$N$H$-$@$15!G=$9$k!#(B (let ((pt (point))) (unless (and (string= "*" (buffer-substring-no-properties (1- pt) pt)) (markerp skk-nicola-okuri-flag)) ;; $B4{$KI8<1:Q$_$J$i2?$b$7$J$$!#(B (skk-set-marker skk-nicola-okuri-flag pt) (insert-and-inherit "*"))))) (defun skk-nicola-space-function (&optional arg parg) "$B?F;X1&%-!uBV$r4IM}$9$k!#(B" (when (or (and (markerp skk-nicola-okuri-flag) (<= (point) (marker-position skk-nicola-okuri-flag))) (not (eq skk-henkan-mode 'on))) (setq skk-nicola-okuri-flag nil))) (defadvice skk-kakutei (before skk-nicola-update-flag activate) "$BAw$jBT$A>uBV$r4IM}$9$k!#(B" (when (and skk-j-mode (eq skk-henkan-mode 'on) (markerp skk-nicola-okuri-flag)) ;; $B3NDj$9$k$H$-$OAw$j3+;O$NI8<1$r>C$9!#(B (skk-save-point (goto-char skk-nicola-okuri-flag) (when (eq ?* (following-char)) (delete-char 1)))) ;; (setq skk-nicola-okuri-flag nil)) (defadvice skk-previous-candidate (before skk-nicola-update-flag activate) "$BAw$jBT$A>uBV$r4IM}$9$k!#(B" (when (or (and (markerp skk-nicola-okuri-flag) (<= (point) (marker-position skk-nicola-okuri-flag))) (not (eq skk-henkan-mode 'on))) (setq skk-nicola-okuri-flag nil))) (defadvice skk-insert (around skk-nicola-workaround activate) ;; (let* ((list (symbol-value (intern (format "skk-%s-plain-rule-list" skk-kanagaki-keyboard-type)))) (cell1 (rassoc '("$B!"(B") list)) (cell2 (rassoc '("$B!#(B") list)) marker) (cond ((and (eq skk-kanagaki-state 'kana) skk-j-mode (or (eq (skk-last-command-char) (car cell1)) (eq (skk-last-command-char) (car cell2))) skk-henkan-mode) ;; $B$J$<$+$3$1$k!#860x2rL@Cf!#(B (cond ((not (eq skk-henkan-mode 'active)) (setq marker skk-henkan-start-point) (skk-kakutei) ad-do-it (unless (or (string= (char-to-string (char-before)) (cadr cell1)) (string= (char-to-string (char-before)) (cadr cell2))) (skk-save-point (goto-char marker) (skk-set-henkan-point-subr)))) (t (skk-kakutei) ad-do-it))) (t ad-do-it)))) (defadvice skk-isearch-setup-keymap (before skk-nicola-workaround activate) "$B?F;X%-!<$G%5!<%A$,=*N;$7$F$7$^$o$J$$$h$&$K$9$k!#(B" (let ((keys (append skk-nicola-lshift-keys skk-nicola-rshift-keys))) (while keys (define-key (ad-get-arg 0) (car keys) 'skk-isearch-wrapper) (setq keys (cdr keys))))) (defadvice isearch-char-to-string (around skk-nicola-workaround activate) "$B%(%i!<$,=P$k$H8!:w$,CfCG$7$F;H$$?I$$$N$G!"L[$i$;$k!#(B" (cond ((and skk-use-kana-keyboard (featurep 'skk-isearch) (with-current-buffer (get-buffer-create skk-isearch-working-buffer) skk-mode)) (ignore-errors ad-do-it)) (t ad-do-it))) (put 'skk-nicola-insert 'isearch-command t) (put 'skk-nicola-self-insert-lshift 'isearch-command t) (put 'skk-nicola-self-insert-rshift 'isearch-command t) (provide 'skk-nicola) ;;; skk-nicola.el ends here ddskk-15.1.54/nicola/skk-kanagaki-util.el0000664000076600007660000002305312024444367017546 0ustar brutusbrutus;;; skk-kanagaki-util.el --- SKK $B$N2>L>F~NO%5%]!<%H$N$?$a$NF;6qH"(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000, 2001, 2002, 2003, 2004 ;; Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; macro$B!"(Binline function $B$O$3$3$KCV$-$^$9!#I,MW$J>l9g$O3F%b%8%e!<%k$NCf$+$i(B ;; $B$3$N%W%m%0%i%`$r%m!<%I$7$^$9!#(B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-vars) (require 'skk-macs)) (eval-when-compile (defvar skk-dcomp-start-point) (defvar skk-dcomp-end-point) (defvar skk-isearch-current-buffer) (defvar skk-nicola-okuri-flag) (defvar skk-nicola-hiragana-mode-string) (defvar skk-nicola-katakana-mode-string) (defvar skk-nicola-hiragana-rom-string) (defvar skk-nicola-katakana-rom-string)) ;; Variables. (defconst skk-kanagaki-dakuten-alist '(("$B$+(B" "$B$,(B") ("$B$-(B" "$B$.(B") ("$B$/(B" "$B$0(B") ("$B$1(B" "$B$2(B") ("$B$3(B" "$B$4(B") ("$B$5(B" "$B$6(B") ("$B$7(B" "$B$8(B") ("$B$9(B" "$B$:(B") ("$B$;(B" "$B$<(B") ("$B$=(B" "$B$>(B") ("$B$?(B" "$B$@(B") ("$B$A(B" "$B$B(B") ("$B$D(B" "$B$E(B") ("$B$F(B" "$B$G(B") ("$B$H(B" "$B$I(B") ("$B$O(B" "$B$P(B" "$B$Q(B") ("$B$R(B" "$B$S(B" "$B$T(B") ("$B$U(B" "$B$V(B" "$B$W(B") ("$B$X(B" "$B$Y(B" "$B$Z(B") ("$B$[(B" "$B$\(B" "$B$](B") ("$B%&(B" "$B%t(B") ("$B%+(B" "$B%,(B") ("$B%-(B" "$B%.(B") ("$B%/(B" "$B%0(B") ("$B%1(B" "$B%2(B") ("$B%3(B" "$B%4(B") ("$B%5(B" "$B%6(B") ("$B%7(B" "$B%8(B") ("$B%9(B" "$B%:(B") ("$B%;(B" "$B%<(B") ("$B%=(B" "$B%>(B") ("$B%?(B" "$B%@(B") ("$B%A(B" "$B%B(B") ("$B%D(B" "$B%E(B") ("$B%F(B" "$B%G(B") ("$B%H(B" "$B%I(B") ("$B%O(B" "$B%P(B" "$B%Q(B") ("$B%R(B" "$B%S(B" "$B%T(B") ("$B%U(B" "$B%V(B" "$B%W(B") ("$B%X(B" "$B%Y(B" "$B%Z(B") ("$B%[(B" "$B%\(B" "$B%](B")) "$BByE@$HH>ByE@$rF~NO$9$k$?$a$N%k!<%k!#(B") (defconst skk-kanagaki-print-help-function (cond ((and (featurep 'emacs) (>= emacs-major-version 23)) #'help-print-return-message) (t #'print-help-return-message))) ;;;###autoload (defmacro skk-kanagaki-help-1 (bufname title list) `(let ((buf (get-buffer-create ,bufname))) (with-current-buffer buf (setq buffer-read-only nil) (erase-buffer) (insert (concat (format "%s\n\n" ,title) (mapconcat #'(lambda (cons) (cond ((and (symbolp (car cons)) (symbol-value (car cons))) (format "%s $B!D(B %s\n" (key-description (symbol-value (car cons))) (cdr cons))) (t (format "%s $B!D(B %s\n" (car cons) (cdr cons))))) ;; (delq nil ,list) ""))) ;; (setq buffer-read-only t) (set-buffer-modified-p nil) (goto-char (point-min)) (help-mode)) (let ((standard-output buf)) (funcall skk-kanagaki-print-help-function)) (display-buffer buf))) ;;;###autoload (defun skk-nicola-visit-nicola-website () (interactive) (let ((func (cond ((fboundp 'browse-url) 'browse-url) (t 'browse-url-netscape)))) (funcall func "http://nicola.sunicom.co.jp/"))) ;;;###autoload (defun skk-kanagaki-toggle-rom-kana (&optional arg) "$B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO(B $B$r@Z$jBX$($k!#(B" (interactive) ;; (when (featurep 'skk-nicola) (setq skk-nicola-okuri-flag nil)) ;; (setq skk-kanagaki-state (if (memq arg '(kana rom)) arg (case skk-kanagaki-state (kana 'rom) (rom 'kana) ;; $B$H$j$"$($:!#(B (t 'kana)))) (skk-kanagaki-adjust-rule-tree) ;; (when (featurep 'skk-nicola) ;; $B%b!<%I9T$NI=<($ND4@a!#(B (case skk-kanagaki-state (kana (setq skk-hiragana-mode-string skk-nicola-hiragana-mode-string skk-katakana-mode-string skk-nicola-katakana-mode-string)) (rom (setq skk-hiragana-mode-string skk-nicola-hiragana-rom-string skk-katakana-mode-string skk-nicola-katakana-rom-string))) ;; (skk-modify-indicator-alist 'katakana skk-katakana-mode-string) (skk-modify-indicator-alist 'hiragana skk-hiragana-mode-string) ;; (skk-loop-for-buffers (buffer-list) (when (and skk-j-mode (listp mode-line-format)) (skk-update-modeline (if skk-katakana 'katakana 'hiragana)))))) ;;;###autoload (defun skk-kanagaki-dakuten (&optional arg handakuten) "$BD>A0$NJ8;z$r8+$F2DG=$J$iByE@$rIU2C$7!"$5$b$J$1$l$P(B \"$B!+(B\" $B$rF~NO$9$k!#(B" (interactive "*p") (let ((list skk-kanagaki-dakuten-alist) (pt1 (point)) (henkan-on (and skk-isearch-switch (with-current-buffer (get-buffer-create skk-isearch-working-buffer) (eq skk-henkan-mode 'on)))) char1 char2 str) (ignore-errors (setq char1 (cond ((and skk-isearch-switch (not (skk-in-minibuffer-p))) (if henkan-on (with-current-buffer skk-isearch-working-buffer (skk-save-point (backward-char 1) (buffer-substring-no-properties (point) pt1))) (substring isearch-string -1))) (t (skk-save-point (backward-char 1) (buffer-substring-no-properties (point) pt1)))))) (cond ((setq char2 (nth (if handakuten 2 1) (assoc char1 list))) (cond ((and skk-isearch-switch (not (skk-in-minibuffer-p))) (if henkan-on (with-current-buffer skk-isearch-working-buffer (delete-char -1) (skk-insert-str char2)) (setq str isearch-string) (while (string= str (if (vectorp (car isearch-cmds)) (aref (car isearch-cmds) 0) (caar isearch-cmds))) (with-current-buffer skk-isearch-current-buffer (skk-isearch-delete-char arg))) (setq isearch-string (concat (if (vectorp (car isearch-cmds)) (aref (car isearch-cmds) 0) (caar isearch-cmds)) char2) isearch-message (concat (skk-isearch-mode-string) (mapconcat #'isearch-text-char-description isearch-string ""))) (put 'isearch-barrier 'skk-kanagaki t) (skk-unread-event (character-to-event (aref (where-is-internal (if isearch-forward 'isearch-repeat-forward 'isearch-repeat-backward) isearch-mode-map t) 0))))) (t (delete-char -1) (skk-insert-str char2)))) (t (skk-insert-str (if handakuten "$B!,(B" "$B!+(B")))))) (defadvice isearch-repeat (around skk-kanagaki-workaround activate) (cond ((get 'isearch-barrier 'skk-kanagaki) (goto-char isearch-barrier) ad-do-it (put 'isearch-barrier 'skk-kanagaki nil)) (t ad-do-it))) ;;;###autoload (defun skk-kanagaki-handakuten (&optional arg) "$BD>A0$NJ8;z$r8+$F2DG=$J$iH>ByE@$rIU2C$7!"$5$b$J$1$l$P(B \"$B!,(B\" $B$rF~NO$9$k!#(B" (interactive "*p") (skk-kanagaki-dakuten arg t)) ;;;###autoload (defun skk-kanagaki-bs (arg) ;; OASYS $B$K$*$1$k(B BS $B%-!<$N5!G=$NBe$o$j!#$I$N$h$&$J5sF0$r$5$;$k$Y$-$+$^$@7h$^(B ;; $B$C$F$$$J$$!#8=:_$N$H$3$m(B ;; ;; o $B"'%b!<%I$G$O(B `skk-kanagaki-esc' $B$HF1$85sF0(B ;; o $B"&%b!<%I$G$O(B `skk-delete-backward-char' $B$HF1$85sF0(B ;; o $B"#%b!<%I$G$O(B `delete-backward-char' $B$HF1$85sF0(B ;; ;; $B$H$$$&$U$&$K9M$($F$$$k!#(B (interactive "*p") ;; (cond ((eq skk-henkan-mode 'active) (call-interactively 'keyboard-quit)) ((and (eq skk-henkan-mode 'on) (= (point) (marker-position skk-henkan-start-point))) (skk-kakutei arg)) ((eq skk-henkan-mode 'on) (forward-char -1) (delete-char 1)) ((and skk-isearch-switch (buffer-live-p skk-isearch-current-buffer)) (with-current-buffer skk-isearch-current-buffer (skk-isearch-delete-char arg))) (t (delete-char (- 0 arg)))) ;; (when skk-dcomp-activate (skk-dcomp-after-delete-backward-char))) ;;;###autoload (let ((property (if (featurep 'xemacs) 'pending-del 'delete-selection))) (put 'skk-kanagaki-bs property 'supersede)) ;;;###autoload (defun skk-kanagaki-esc (&optional arg) ;; OASYS $B$K$*$1$kC$75!G=$NBe$o$j!#(B $B$H$j$"$($:(B keyboard-quit $B$N>l9g$HF1MM(B ;; $B$NF0:n$r$9$k$h$&$K$K$7$F$*$/!#(BOAK $B&BHG$@$H(B ;; ;; o 1 $B2sL\$NC$7$G!"JQ49A0$N>uBV$KLa$7$?>e$GJQ493+;OE@$K%]%$%s%H$r0\F0(B ;; o 2 $B2sL\$NC$7$GJQ49BP>]$NJ8;zNsA4BN$r>C5n(B ;; ;; $B$9$k$h$&$K$J$C$F$$$k$,!"(BSKK $B$K$*$1$kJQ49BP>]$NJ8;zNs$O(B $B"&(B $B$H%]%$%s%H$N4V$N(B ;; $BJ8;zNs$G$"$j!"%]%$%s%H$r0\F0$9$k$HJQ49BP>]$,JQ$o$C$F$7$^$&!#$=$N$?$a!"%]%$(B ;; $B%s%H$O0\F0$7$J$$$3$H$H$9$k!#(B (interactive "*P") (cond ((skk-in-minibuffer-p) (call-interactively (if (fboundp 'minibuffer-keyboard-quit) 'minibuffer-keyboard-quit 'abort-recursive-edit))) (skk-henkan-mode (call-interactively 'keyboard-quit)) (t nil))) (provide 'skk-kanagaki-util) ;;; skk-kanagaki-util.el ends here ddskk-15.1.54/nicola/skk-omelet-jis.el0000664000076600007660000002342011471027637017075 0ustar brutusbrutus;;; skk-omelet-jis.el --- SKK $B$K(B omelet (JIS) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J$K=`5r$7$?(B omelet $BFH<+(B JIS $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("!2!G("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B\\ $B!o("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-omelet-jis-plain-rule-list' `skk-omelet-jis-lshift-rule-list' `skk-omelet-jis-rshift-rule-list' ") (defvar skk-omelet-jis-plain-rule-list '((?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?^ "$B!9(B") (?\\ "$B!o(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?e ("$B%?(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?@ "$B!"(B") (?\[ skk-kanagaki-dakuten) ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%1(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%$(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) (?: "$B!'(B") (?\] "$B!D(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-omelet-jis-rshift-rule-list '((?1 "$B!*(B") (?2 "$B!H(B") (?3 "$B!I(B") (?4 "$B!t(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!J(B") (?9 "$B!K(B") (?0 "$B!X(B") (?- "$B!Y(B") (?^ ("$B!0(B" . "$B!F(B")) (?\\ ("$B!C(B" . "$B!G(B")) ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?@ "$B!w(B") (?\[ skk-kanagaki-handakuten) ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) (?: "$B!((B") (?\] "$B!=(B") ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-omelet-jis-lshift-rule-list '((?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!Z(B") (?9 "$B![(B") (?0 "$B!P(B") (?- "$B!Q(B") (?^ "$B!a(B") (?\\ "$B!2(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%E(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?@ "$B!_(B") (?\[ "$B!7(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; "$B%v(B") (?: ("$B%u(B" . "$B!v(B")) (?\] "$B!\(B") ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map ":" 'skk-kanagaki-bs) (define-key skk-j-mode-map "]" 'skk-kanagaki-esc)))) (provide 'skk-omelet-jis) ;;; skk-omelet-jis.el ends here ddskk-15.1.54/nicola/skk-kanagaki-menu.el0000664000076600007660000001046212024444367017535 0ustar brutusbrutus;;; skk-kanagaki-menu.el --- NICOLA-DDSKK $B$N%a%K%e!<%5%]!<%H(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000 Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; NICOLA-DDSKK $B$N%a%K%e!<$r(B SKK $BI8=`$N%a%K%e!<$KDI2C$7$^$9!#(B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-vars)) (eval-and-compile (autoload 'browse-url-netscape "browse-url")) (require 'easymenu) (eval-and-compile (defvar skk-kanagaki-menu-items '("NICOLA DDSKK" ["Set Henkan point" skk-set-henkan-point-subr t] ["Input Prefix or Suffix" skk-kanagaki-midashi-henkan t] ["Start Conversion with Okuri" skk-kanagaki-set-okurigana t] "--" ["Input a Character by Code" skk-input-by-code-or-menu t] ["Enter SKK Abbrev Mode" skk-abbrev-mode t] ["\ Convert Hiragana <=> Katakana or Toggle Hiragana <=> Katakana Mode" skk-toggle-kana t] ["Enter SKK JIS X 0208 Latin Mode" skk-jisx0208-latin-mode t] ["\ Convert to Hankaku Katakana or Toggle Katakana <=> Hankaku Katakana Mode" skk-toggle-katakana t] ["Enter SKK Latin Mode" skk-latin-mode t] ["Enter SKK Japanese Mode" skk-kakutei t] ["Toggle Roma <=> Kana" skk-kanagaki-toggle-rom-kana t] "--" ["Show Key Bindings" skk-kanagaki-help t] ["Show the Current Keymap based on NICOLA" skk-nicola-help (featurep 'skk-nicola)] ["Show NICOLA-Specific Key Bindings" skk-nicola-2nd-help (featurep 'skk-nicola)] "--" ["Visit NIHONGO-NYURYOKU CONSORTIUM Web Site" skk-nicola-visit-nicola-website (locate-library "browse-url")]))) (cond ((eval-and-compile (featurep 'xemacs)) (add-hook 'skk-mode-hook #'(lambda () (add-submenu '("SKK") skk-kanagaki-menu-items)))) (t (dolist (map (list skk-j-mode-map skk-latin-mode-map skk-abbrev-mode-map skk-jisx0208-latin-mode-map)) (easy-menu-add-item map '("menu-bar" "SKK") skk-kanagaki-menu-items)) (when (eval-when-compile (featurep 'emacs)) (setq skk-emacs-menu-resource-ja (append skk-emacs-menu-resource-ja '(("Set Henkan point" . "$BJQ493+;OE@$r%;%C%H(B") ("Input Prefix or Suffix" . "$B@\F,<-!&@\Hx<-$rF~NO(B") ("Start Conversion with Okuri" . "$BAw$j$"$jJQ49$r3+;O(B") ("Input a Character by Code" . "$B%3!<%IF~NO(B") ("Enter SKK Abbrev Mode" . "Abbrev $B%b!<%I$KF~$k(B") ("\ Convert Hiragana <=> Katakana or Toggle Hiragana <=> Katakana Mode" . "$B$+$J(B <=> $B%+%J(B $BJQ49(B $B$^$?$O(B $B$+$J%b!<%I(B <=> $B%+%J%b!<%I(B $B@Z49$((B") ("Enter SKK JIS X 0208 Latin Mode" . "$BA41Q%b!<%I$KF~$k(B") ("\ Convert to Hankaku Katakana or Toggle Katakana <=> Hankaku Katakana Mode" . "\ $BH>3Q%+%J$KJQ49(B $B$^$?$O(B $BA43Q%+%J%b!<%I(B <=> $BH>3Q%+%J%b!<%I(B $B@Z49$((B") ("Enter SKK Latin Mode" . "$B%"%9%-!<%b!<%I$KF~$k(B") ("Enter SKK Japanese Mode" . "$B$+$J%b!<%I$KF~$k(B") ("Toggle Roma <=> Kana" . "$B$+$JF~NOJ}<0(B $B%m!<%^(B <=> $B$+$J(B $B@Z49$((B") ("Show Key Bindings" . "$B$+$JF~NOFH<+$N%-! ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA Dvorak $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(B; $B!%("(BQ $B$R("(BJ $B$9("(BK $B$U("(BX $B$X("(B $B("(BB $B$a("(BM $B$=("(BW $B$M("(BV $B$[("(BZ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-nicola-dvorak-plain-rule-list' `skk-nicola-dvorak-lshift-rule-list' `skk-nicola-dvorak-rshift-rule-list' ") (defvar skk-nicola-dvorak-plain-rule-list '((?` "$B!.(B") ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?\[ "$B!N(B") (?\] "$B!O(B") (?\\ "$B!o(B") ;; (?' "$B!#(B") (?, ("$B%+(B" . "$B$+(B")) (?. ("$B%?(B" . "$B$?(B")) (?p ("$B%3(B" . "$B$3(B")) (?y ("$B%5(B" . "$B$5(B")) ;; (?f ("$B%i(B" . "$B$i(B")) (?g ("$B%A(B" . "$B$A(B")) (?c ("$B%/(B" . "$B$/(B")) (?r ("$B%D(B" . "$B$D(B")) (?l "$B!$(B") (?/ "$B!"(B") (?= skk-kanagaki-dakuten) ;; (?a ("$B%&(B" . "$B$&(B")) (?o ("$B%7(B" . "$B$7(B")) (?e ("$B%F(B" . "$B$F(B")) (?u ("$B%1(B" . "$B$1(B")) (?i ("$B%;(B" . "$B$;(B")) ;; (?d ("$B%O(B" . "$B$O(B")) (?h ("$B%H(B" . "$B$H(B")) (?t ("$B%-(B" . "$B$-(B")) (?n ("$B%$(B" . "$B$$(B")) (?s ("$B%s(B" . "$B$s(B")) (?- "$B!](B") ;; (?\; "$B!%(B") (?q ("$B%R(B" . "$B$R(B")) (?j ("$B%9(B" . "$B$9(B")) (?k ("$B%U(B" . "$B$U(B")) (?x ("$B%X(B" . "$B$X(B")) ;; (?b ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?w ("$B%M(B" . "$B$M(B")) (?v ("$B%[(B" . "$B$[(B")) (?z "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-nicola-dvorak-lshift-rule-list '((?` "$B!1(B") ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!G(B") (?7 "$B!\(B") (?8 "$B!H(B") (?9 "$B!I(B") (?0 "$B!X(B") (?\[ "$B!Y(B") (?\] "$B!c(B") (?\\ "$B!d(B") ;; (?' ("$B%!(B" . "$B$!(B")) (?, ("$B%((B" . "$B$((B")) (?. ("$B%j(B" . "$B$j(B")) (?p ("$B%c(B" . "$B$c(B")) (?y ("$B%l(B" . "$B$l(B")) ;; (?f ("$B%Q(B" . "$B$Q(B")) (?g ("$B%B(B" . "$B$B(B")) (?c ("$B%0(B" . "$B$0(B")) (?r ("$B%E(B" . "$B$E(B")) (?l ("$B%T(B" . "$B$T(B")) (?/ "$B!'(B") (?= "$B!a(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?o ("$B%"(B" . "$B$"(B")) (?e ("$B%J(B" . "$B$J(B")) (?u ("$B%e(B" . "$B$e(B")) (?i ("$B%b(B" . "$B$b(B")) ;; (?d ("$B%P(B" . "$B$P(B")) (?h ("$B%I(B" . "$B$I(B")) (?t ("$B%.(B" . "$B$.(B")) (?n ("$B%](B" . "$B$](B")) (?s "$B!((B") (?- "$B!2(B") ;; (?\; ("$B%%(B" . "$B$%(B")) (?q "$B!<(B") (?j ("$B%m(B" . "$B$m(B")) (?k ("$B%d(B" . "$B$d(B")) (?x ("$B%#(B" . "$B$#(B")) ;; (?b ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?w ("$B%Z(B" . "$B$Z(B")) (?v ("$B%\(B" . "$B$\(B")) (?z ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-nicola-dvorak-rshift-rule-list '((?` "$B%u(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!0(B") (?7 "$B!u(B") (?8 "$B!v(B") (?9 "$B!J(B") (?0 "$B!K(B") (?\[ "$B!P(B") (?\] "$B!Q(B") (?\\ "$B!C(B") ;; (?' ("$B%p(B" . "$B$p(B")) (?, ("$B%,(B" . "$B$,(B")) (?. ("$B%@(B" . "$B$@(B")) (?p ("$B%4(B" . "$B$4(B")) (?y ("$B%6(B" . "$B$6(B")) ;; (?f ("$B%h(B" . "$B$h(B")) (?g ("$B%K(B" . "$B$K(B")) (?c ("$B%k(B" . "$B$k(B")) (?r ("$B%^(B" . "$B$^(B")) (?l ("$B%'(B" . "$B$'(B")) (?/ "$B!7(B") (?= skk-kanagaki-handakuten) ;; (?a "$B%t(B") (?o ("$B%8(B" . "$B$8(B")) (?e ("$B%G(B" . "$B$G(B")) (?u ("$B%2(B" . "$B$2(B")) (?i ("$B%<(B" . "$B$<(B")) ;; (?d ("$B%_(B" . "$B$_(B")) (?h ("$B%*(B" . "$B$*(B")) (?t ("$B%N(B" . "$B$N(B")) (?n ("$B%g(B" . "$B$g(B")) (?s ("$B%C(B" . "$B$C(B")) (?- "$B!D(B") ;; (?\; ("$B%q(B" . "$B$q(B")) (?q ("$B%S(B" . "$B$S(B")) (?j ("$B%:(B" . "$B$:(B")) (?k ("$B%V(B" . "$B$V(B")) (?x ("$B%Y(B" . "$B$Y(B")) ;; (?b ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?w ("$B%`(B" . "$B$`(B")) (?v ("$B%o(B" . "$B$o(B")) (?z ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (provide 'skk-nicola-dvorak) ;;; skk-nicola-dvorak.el ends here ddskk-15.1.54/nicola/README.ja0000664000076600007660000001477010332007054015160 0ustar brutusbrutus-*- mode: outline -*- $B$3$N%G%#%l%/%H%j$K$O(B SKK $B$N2>L>F~NOBP1~%3!<%I$rCV$$$F$$$^$9!#(B * $B35MW(B SKK $B$r%m!<%^;zE*F~NO0J30$NF~NOJ}<0$KBP1~$5$;$k$3$H$rL\E*$H$7$^$9!#8=:_(B $B$O0J2<$NF~NOJ}<0$K$D$$$F!"%5%]!<%H$9$k$Y$/3+H/$7$F$$$^$9!#(B o $BF|K\8l(B 106 $B%-!<%\!<%I$G$N2>L>F~NO(B o $B?F;X%7%U%H%-!<%\!<%I$N%(%_%e%l!<%7%g%s(B $B8eL>F~NO$N$?$a$N4pK\E*$JOHAH$_(B o skk-106-jis.el $B!D(B $BF|K\8l(B 106 $B%-!<%\!<%I$G2>L>F~NO$9$k$?$a$N%k!<%k(B o skk-nicola.el $B!D(B $B?F;X%7%U%HF~NO$r%(%_%e%l!<%H$9$k4X?t(B ($B%*%j%8%J%k(B $B$N(B skk-nicola.el $B$K=q$+$l$F$$$?4X?t(B) o skk-nicola-*.el $B!D(B NICOLA $BG[Ns$N%k!<%k(B (JIS, US, Dvorak) o skk-oasys.el $B!D(B OASYS $BIwG[Ns$N%k!<%k(B o skk-omelet-*.el $B!D(B omelet $BFH<+G[Ns$N%k!<%k(B (JIS, US, Dvorak) skk-nicola-*.el, skk-oasys.el, skk-omelet-*.el $B$NG[Ns$O$9$Y$F(B http://www.eva.hi-ho.ne.jp/%7Eminoura/kbd/keymap.html $B$N$b$N$rMxMQ$5$;$F$$$?$@$-$^$7$?!#(B * $B%$%s%9%H!<%k(B ** APEL $B$N:G?7HG$r%$%s%9%H!<%k(B ftp://ftp.m17n.org/pub/mule/apel/ % make install (XEmacs $B$G$O(B make install-package) ** SKK $B$r%$%s%9%H!<%k(B [$BJ}K!(B 1] % cvs -d :pserver:guest@openlab.ring.gr.jp:/circus/cvsroot login CVS password: guest (CR) % cvs -d :pserver:guest@openlab.ring.gr.jp:/circus/cvsroot \ co skk/main [$BJ}K!(B 2] http://openlab.ring.gr.jp/skk/ ** NICOLA-DDSKK $B$N%$%s%9%H!<%k(B $BI,$:!">e$G%$%s%9%H!<%k$7$?(B SKK $B$KF1:-$5$l$F$$$k(B NICOLA-DDSKK $B$r%$%s(B $B%9%H!<%k$7$F$/$@$5$$!#$D$^$j!"(BSKK $B$r%P!<%8%g%s%"%C%W$7$?$iI,$:(B NICOLA-DDSKK $B$r%$%s%9%H!<%k$7D>$7$F$/$@$5$$!#(B % cd nicola % make install (XEmacs $B$G$O(B make install-package) * $B@_Dj(B ** SKK $B$N@_Dj(B ~/.emacs $B$K(B (require 'skk-setup) $B$H5-F~!#(B ** NICOLA-DDSKK $B$N@_Dj(B $B?F;X%7%U%HF~NO$9$k>l9g$O(B ~/.skk $B$K(B (setq skk-use-kana-keyboard t) (setq skk-kanagaki-keyboard-type 'omelet-jis) $B$H5-F~!#5l(B JIS $BG[Ns$N2>L>F~NO$r9T$&>l9g$O(B (setq skk-use-kana-keyboard t) (setq skk-kanagaki-keyboard-type '106-jis) $B$H5-F~!#(B ** $B%+%9%?%^%$%:(B skk-kanagaki-keyboard-type $B$KBP1~$7$?%U%!%$%k$K=q$+$l$F$$$kJQ?t$K$h$C(B $B$F!"%-!\$7$$$3$H$O!"(BREADME.NICOLA.ja $B$r$40lFI$/$@$5(B $B$$!#(B $B$=$l0J30$N2>L>F~NO$K$D$$$F>\$7$$$3$H$O(B skk-kanagaki.el $B$NKAF,$N%3%a%s(B $B%H$r$40lFI$/$@$5$$!#(B $B0J2<$G!"(B[fj] $B$J$I$H$$$&$N$O(B f $B$H(B j $B$H$rF1;~$KBG80$9$k$3$H$r0UL#$7$^$9!#(B ** $B0lHLE*%-!L>F~NO%b!<%I$NFH<+%-!A0$N(B 1 $BJ8;z$rAw$j2>L>$H$7$FAw$j$"$jJQ49$r3+;O!#(B [muhenkan + henkan] $B!D(B latin $B%b!<%I(B $B"N(B $B$+$J%b!<%I(B $B$N@Z$jBX$((B C-h 2 $B!D(B $B8=:_$NF~NOJ}<0$N%-!3Q%+%J%b!<%I(B or $BH>3Q%+%JJQ49(B f10 $B!D(B latin $B%b!<%I(B f12 $B!D(B $B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO(B * $BLdBjE@(B $B?F;X%7%U%HF~NO$O!"(B $B$^$@(B NICOLA-SKK $B$H5sF0$N0[$J$kItJ,$,$"$j$^$9!#(B $BLdBj(B $B$OB?$/$"$j$^$9$,!"=y!9$K2~NI$9$kM=Dj$G$9!#$^$?!"(Bomelet $B5Z$S(B NICOLA-SKK $B$H$N8_49@-$r==J,9MN8$7$F$$$J$$ItJ,$,$"$j$^$9!#(B $BF|K\8l(B 106 $B%-!<%\!<%I$G2>L>F~NO$9$k>l9g!"(B $B%-!@7$K$J$i$J$1$l$P$J$j$^$;$s!#%G%U%)%k%H$G$O!"!V!@7(B $B$K$7$F$"$j$^$9(B (SHIFT $B$H6&$K2!$;$PF~NO$G$-$k$h$&$K$7$F$"$j$^$9(B)$B!#$3$l(B $B$r9o0uDL$j$NF~NO$K$9$k$K$O!"(B xmodmap $B$r;H$&$J$I$7$F%-!L>F~NO%5%]!<%H(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000 Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O!"F|K\8l(B 106 $B%-!<%\!<%I(B ($B5l(B JIS $BG[Ns(B) $B$K$h$k2>L>F~NO$N$?$a$N%k(B ;; $B!<%k$rDs6!$7$^$9!#(B ;; X $B>e$J$I$NI8=`$G$O(B \ (backslash) $B$r3d$j$"$F$i$l$F$$$k%-!<$,(B 2 $B$D$"$k$?$a!"(B ;; "$B$m(B" $B$H(B "$B!<(B" $B$NN>J}$r;EMM$NDL$j$KA^F~$9$k$3$H$O$G$-$^$;$s!#%G%U%)%k%H$G$O(B ;; \ $B$NF~NO$K$h$j(B "$B$m(B" $B$rA^F~$7!"(B "$B!<(B" $B$NJ}$OEv3:$N%-!<$r(B SHIFT $B$H6&$K2!$9$3$H(B ;; $B$GA^F~2DG=$H$7$F$$$^$9!#(B XFree86 $B>e$G$O!"$3$l$re5-$NNc$G$O2>A[%-!<%3!<%I(B 211 $B$H$J$C$F$$$^$9$,!"4D6-$K$h$C$F(B ;; $B0[$J$k$N$G(B xev $B$J$IMQ$$$F<+J,$GD4$Y$F$/$@$5$$!#(B ;; ;; 2. ~/.skk $B$K$F0J2<$N@_Dj$r$9$k!#(B ;; ;; (eval-after-load "skk-106-jis" ;; '(setcar (cdr (assq ?\\ skk-106-jis-plain-rule-list)) "$B!<(B")) ;; $B99$K(B "$B!9(B" $B$,I8=`$G$OF~NO$G$-$J$/$J$C$F$$$kE@$,5l(B JIS $BG[Ns$N;EMM$H0[$J$j$^(B ;; $B$9!#$3$l$K4X$7$F$bI,MW$J>l9g$O>e5-$HF1MM$JJ}K!$GBP=h$9$k$3$H$K$J$j$^$9!#(B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-macs) (require 'skk-vars)) (eval-when-compile (require 'skk-kanagaki-util)) (require 'skk-kanagaki) ;; $BF|K\8l(B 106 $B%-!<%\!<%I(B ($B5l(B JIS $BG[Ns(B) $B$N%k!<%k(B (defvar skk-kanagaki-106-jis-base-rule-list '(("1" nil skk-nicola-insert) ("2" nil skk-nicola-insert) ("3" nil skk-nicola-insert) ("4" nil skk-nicola-insert) ("5" nil skk-nicola-insert) ;; ("6" nil skk-nicola-insert) ("7" nil skk-nicola-insert) ("8" nil skk-nicola-insert) ("9" nil skk-nicola-insert) ("0" nil skk-nicola-insert) ("-" nil skk-nicola-insert) ("^" nil skk-nicola-insert) ("\\" nil skk-nicola-insert) ;; ("q" nil skk-nicola-insert) ("w" nil skk-nicola-insert) ("e" nil skk-nicola-insert) ("r" nil skk-nicola-insert) ("t" nil skk-nicola-insert) ;; ("y" nil skk-nicola-insert) ("u" nil skk-nicola-insert) ("i" nil skk-nicola-insert) ("o" nil skk-nicola-insert) ("p" nil skk-nicola-insert) ("@" nil skk-kanagaki-dakuten) ("[" nil skk-kanagaki-handakuten) ;; ("a" nil skk-nicola-insert) ("s" nil skk-nicola-insert) ("d" nil skk-nicola-insert) ("f" nil skk-nicola-insert) ("g" nil skk-nicola-insert) ;; ("h" nil skk-nicola-insert) ("j" nil skk-nicola-insert) ("k" nil skk-nicola-insert) ("l" nil skk-nicola-insert) (";" nil skk-nicola-insert) (":" nil skk-nicola-insert) ("]" nil skk-nicola-insert) ;; ("z" nil skk-nicola-insert) ("x" nil skk-nicola-insert) ("c" nil skk-nicola-insert) ("v" nil skk-nicola-insert) ("b" nil skk-nicola-insert) ;; ("n" nil skk-nicola-insert) ("m" nil skk-nicola-insert) ("," nil skk-nicola-insert) ("." nil skk-nicola-insert) ("/" nil skk-nicola-insert) ;; ("#" nil ("$B%!(B" . "$B$!(B")) ("$" nil ("$B%%(B" . "$B$%(B")) ("%" nil ("$B%'(B" . "$B$'(B")) ("&" nil ("$B%)(B" . "$B$)(B")) ("'" nil ("$B%c(B" . "$B$c(B")) ("(" nil ("$B%e(B" . "$B$e(B")) (")" nil ("$B%g(B" . "$B$g(B")) ("~" nil ("$B%r(B" . "$B$r(B")) ("=" nil "$B!r(B") ("|" nil skk-nicola-insert) ;; $B$3$l$,0lHV$NLdBj!#(B ("Q" nil skk-set-henkan-point-subr) ("E" nil ("$B%#(B" . "$B$#(B")) ("T" nil ("$B%u(B" . "$B%u(B")) ("Y" nil skk-nicola-insert) ("P" nil "$B!X(B") ("`" nil "$B!q(B") ("{" nil "$B!V(B") ("A" nil skk-latin-mode) ("S" nil skk-kanagaki-set-okurigana-no-sokuon) ("D" nil skk-today) ("F" nil skk-display-code-for-char-at-point) ("J" nil skk-abbrev-mdoe) ("K" nil skk-toggle-kana) ("L" nil skk-jisx0208-latin-mode) ("+" nil "$B!Y(B") ("*" nil ("$B%v(B" . "$B%v(B")) ("}" nil "$B!W(B") ("Z" nil skk-nicola-insert) ("X" nil skk-purge-from-jisyo) ("C" nil skk-input-by-code-or-menu) ("M" nil skk-kanagaki-midashi-henkan) ("<" nil skk-current-touten) (">" nil skk-current-kuten) ("?" nil "$B!&(B") ("_" nil skk-nicola-insert)) "\ $BF|K\8l(B 106 $B%-!<%\!<%I$G2>L>F~NO$9$k$?$a$N4pK\%k!<%k!#(B $B$3$N@_Dj$G$O(B \"$B!<(B\" $B$NF~NO$,9o0u$I$*$j$K$G$-$J$$$,!"(B SHIFT $B%-!<$r2!$9$3$H$G$G$-(B $B$k!#(B $B9o0u$I$*$j$KF~NO$G$-$k$h$&$K$9$k$?$a$K$O!"2>A[%-!<%3!<%I$N%l%Y%k$G@)8f$9$k(B $BI,MW$,$"$k!#(B") (defvar skk-106-jis-plain-rule-list '((?1 ("$B%L(B" . "$B$L(B")) (?2 ("$B%U(B" . "$B$U(B")) (?3 ("$B%"(B" . "$B$"(B")) (?4 ("$B%&(B" . "$B$&(B")) (?5 ("$B%((B" . "$B$((B")) (?6 ("$B%*(B" . "$B$*(B")) (?7 ("$B%d(B" . "$B$d(B")) (?8 ("$B%f(B" . "$B$f(B")) (?9 ("$B%h(B" . "$B$h(B")) (?0 ("$B%o(B" . "$B$o(B")) (?- ("$B%[(B" . "$B$[(B")) (?^ ("$B%X(B" . "$B$X(B")) (?q ("$B%?(B" . "$B$?(B")) (?w ("$B%F(B" . "$B$F(B")) (?e ("$B%$(B" . "$B$$(B")) (?r ("$B%9(B" . "$B$9(B")) (?t ("$B%+(B" . "$B$+(B")) (?y ("$B%s(B" . "$B$s(B")) (?u ("$B%J(B" . "$B$J(B")) (?i ("$B%K(B" . "$B$K(B")) (?o ("$B%i(B" . "$B$i(B")) (?p ("$B%;(B" . "$B$;(B")) (?a ("$B%A(B" . "$B$A(B")) (?s ("$B%H(B" . "$B$H(B")) (?d ("$B%7(B" . "$B$7(B")) (?f ("$B%O(B" . "$B$O(B")) (?g ("$B%-(B" . "$B$-(B")) (?h ("$B%/(B" . "$B$/(B")) (?j ("$B%^(B" . "$B$^(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%j(B" . "$B$j(B")) (?\; ("$B%l(B" . "$B$l(B")) (?: ("$B%1(B" . "$B$1(B")) (?\] ("$B%`(B" . "$B$`(B")) (?z ("$B%D(B" . "$B$D(B")) (?x ("$B%5(B" . "$B$5(B")) (?c ("$B%=(B" . "$B$=(B")) (?v ("$B%R(B" . "$B$R(B")) (?b ("$B%3(B" . "$B$3(B")) (?n ("$B%_(B" . "$B$_(B")) (?m ("$B%b(B" . "$B$b(B")) (?\, ("$B%M(B" . "$B$M(B")) (?\. ("$B%k(B" . "$B$k(B")) (?/ ("$B%a(B" . "$B$a(B")) ;; $Be5-$N!V! ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B $BIY;NDL$N%o!<%I%W%m%;%C%5(B OASYS $BIw$N%-!" nil ("$B%](B" . "$B$](B")) ("?" nil "$B!&(B")) "$BF|K\8l(B 106 $B%-!<%\!<%I$G(B OASYS $BIwF~NO$r$9$k$?$a$N4pK\%k!<%k!#(B") (defconst skk-oasys-keymap-display 'dummy "$B0J2<$O!"F|K\8l(B 106 $B%-!<%\!<%I$G(B OASYS $BIwF~NO$r$9$k$?$a$N%-!C("(B $B('(!(!(+(!(!(+(!(!(+(!(!(+(!(!()(B $B('(!(!(+(!(!(+(!(!(+(!(!(+(!(!(+(!(!(+(!(!(%(B $B("!%$%("$S!<("$:$m("$V$d("$Y$#("(B $B("$W$L("$>$f("$Z$`("$\$o("!+$)("!@!!("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B\\ $B!o("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) \($BC"$72<$+$i(B 2 $BNs$a$N1&$N(B 2 $B$D$N%-!<$O$=$l$>$l8eB`%-!C%-!<$G$"$k$3$H$r(B $B0UL#$7$^$9!#(B) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-oasys-plain-rule-list' `skk-oasys-lshift-rule-list' `skk-oasys-rshift-rule-list' ") (defvar skk-oasys-plain-rule-list '((?1 "$B#1(B") (?2 "$B#2(B") (?3 "$B#3(B") (?4 "$B#4(B") (?5 "$B#5(B") ;; (?6 "$B#6(B") (?7 "$B#7(B") (?8 "$B#8(B") (?9 "$B#9(B") (?0 "$B#0(B") (?- "$B!](B") (?^ ("$B!v(B" ."$B!'(B")) (?\\ "$B!o(B") ;; (?q "$B!#(B") (?w ("$B%q(B" . "$B$+(B")) (?e ("$B%u(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?@ "$B!"(B") ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%v(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%p(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-oasys-rshift-rule-list '((?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!J(B") (?9 "$B!K(B") (?0 "$B!X(B") (?- "$B!Y(B") (?^ "$B!!(B") (?\\ "$B!!(B") ;; (?q ("$B%!(B" . skk-kanagaki-handakuten)) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?@ ("$B!"(B" . "$B!!(B")) ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) ;; (?z ("$B%%(B" . "$B!%(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B!&(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-oasys-lshift-rule-list '((?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!J(B") (?9 "$B!K(B") (?0 "$B!X(B") (?- "$B!Y(B") (?^ ("$B!!(B" . "$B!-(B")) (?\\ ("$B!!(B" . "$B!@(B")) ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%D(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?@ "$B!!(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; ("$B%C(B" . "$B$C(B")) ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B!!(B" . skk-kanagaki-dakuten)) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (define-key skk-j-mode-map ":" 'skk-kanagaki-bs) (define-key skk-j-mode-map "]" 'skk-kanagaki-esc)) (provide 'skk-oasys) ;;; skk-oasys.el ends here ddskk-15.1.54/nicola/skk-nicola-dcomp.el0000664000076600007660000000503411442724041017362 0ustar brutusbrutus;;; skk-nicola-dcomp.el --- skk-dcomp support for NICOLA-DDSKK ;; Copyright (C) 2001 Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'cl) (require 'skk-macs)) ;;;###autoload (add-hook 'skk-mode-hook #'(lambda () (when (and (featurep 'skk-dcomp) (featurep 'skk-nicola)) (require 'skk-nicola-dcomp)))) (defadvice skk-nicola-self-insert-lshift-1 (around skk-nicola-dcomp activate) (cond ((or (not skk-dcomp-activate) skk-hint-inhibit-dcomp (eq skk-henkan-mode 'active)) ad-do-it) (t (let (pos) (cond ((or (eq skk-henkan-mode 'active) (skk-get-prefix skk-current-rule-tree) (not skk-comp-stack)) (skk-set-marker skk-dcomp-start-point nil) (skk-set-marker skk-dcomp-end-point nil)) ((skk-dcomp-marked-p) (skk-dcomp-face-off) (unless (member (this-command-keys) skk-dcomp-keep-completion-keys) ;; (if (eq this-command 'skk-nicola-self-insert-rshift) (setq pos (point)) (ignore-errors (delete-region skk-dcomp-start-point skk-dcomp-end-point)))))) ad-do-it ;; (when (and (eq this-command 'skk-nicola-self-insert-rshift) (eq skk-henkan-mode 'on)) (when (and (markerp skk-dcomp-start-point) (marker-position skk-dcomp-start-point) pos (< (marker-position skk-dcomp-start-point) pos)) (delete-region skk-dcomp-start-point pos)) (when (and (markerp skk-dcomp-end-point) (marker-position skk-dcomp-end-point) (< (point) (marker-position skk-dcomp-end-point))) (delete-region skk-dcomp-end-point (point)))) ;; (skk-dcomp-do-completion (point)))))) (provide 'skk-nicola-dcomp) ;;; skk-nicola-dcomp.el ends here ddskk-15.1.54/nicola/README.NICOLA.ja0000664000076600007660000003232210024436661016125 0ustar brutusbrutus-*- mode: text -*- NICOLA-DDSKK on Daredevil SKK 11.4 ($B%*%j%8%J%k(B) $BL'1:(B $B0o;K(B ($B2~D{!&J8@U(B) $BDMK\(B $BE0M:(B $B!ZK\J8$K$D$$$F![(B $B$3$l$O!"L'1:$5$s$,(B NICOLA-SKK 0.39 $B$K$D$$$F2r@b$5$l$?J8>O$rDMK\$,(B NICOLA-DDSKK $B$KE,9g$9$k$h$&$K2CI.=$@5$7$?$b$N$G$9!#$b$7K\J8$K8m$j$,$"(B $B$l$PDMK\$N@UG$$G$9$N$G!"$=$N;]$4O"Mm2<$5$$!#(B $B!Z35@b![(B NICOLA-DDSKK $B$H$O!"(BDaredevil SKK $B$G(B NICOLA $B$+$JF~NO!J?F;X%7%U%HF~NO!K(B $B$K$h$C$FF|K\8lF~NO$r2DG=$K$9$k$b$N$G$9!#0J2<$N(B Emacsen $B$r%5%]!<%H$7$^(B $B$9!#(B o Emacs 20.7 $B0J9_(B (Meadow 1.10 $B0J9_(B $B$r4^$`(B) o Mule $B5!G=IU$-$G%3%s%Q%$%k$5$l$?(B XEmacs 21 $B0J9_(B $B$?$@$7(B GNU Emacs 21.3 $B0J9_$^$?$O(B XEmacs 21.4.15 $B0J9_$r?d>)$7$^$9!#(B $B!Z$O$8$a$K![(B SKK $B$O(B Emacs $B$G;H$($kM%$l$?$+$J4A;zJQ49%7%9%F%`$G$9!#$=$N(B SKK $B$NFH<+$N(B $BF~NOJ}K!$r;Y$($F$$$k4A;z$NItJ,$N;XDjJ}K!$O!"%m!<%^;z$NBgJ8;z$H>.J8;z$r(B $B;H$$J,$1$FF|K\8l$rF~NO$9$k$H$$$&$b$N$G$9!#$3$l$O!"%m!<%^;zF~NO$KBg$-$/(B $B0MB8$7$F$$$^$9$,!"$=$N86M}<+BN$OFC$K%m!<%^;zF~NO$K0MB8$7$F$$$k$o$1$G$O(B $B$"$j$^$;$s!#(B $BEAE}E*$K(B SKK $B$G$O!"4A;z$NItJ,$N;XDj$9$k$?$a$K%7%U%H%-!<$r;H$$$^$9!#$7(B $B$+$7!"%?%C%A%?%$%T%s%0$rMF0W$K$9$k$?$a$K!"(BNICOLA-DDSKK $B$G$O%[!<%`%]%8(B $B%7%g%s$N%-!<$G$"$k!"(Bf $B$H(B j $B$rF1;~$KBG80$9$k$H$$$&J}K!$r;H$$$^$9!#$3$l(B $B$K$h$C$F!">.;X$G%7%U%H$r2!$9$h$j$b8zN(E*$JF~NO$,2DG=$K$J$C$F$$$k$N$G$O(B $B$J$$$+$H;W$$$^$9!#(B $B!ZCm0U![(B $B1Q8lMQ$N%-!<%\!<%I$G$O?F;X%7%U%H%-!<$H$7$F;H$($k%-!<$,$J$$$?$a!";HMQ$O(B $BFq$7$$$H;W$o$l$^$9!#F|K\8l%-!<%\!<%I$N;HMQ$r$*4+$a$7$^$9!#(B (*) $B$^$l$K(B US $B%-!<%\!<%I$G!"(Bspace $B%-!<$,H>J,$KJ,$+$l$F$$$?$j!":8H>J,$,(B backspace $B%-!<$K$J$C$F$$$?$j$9$k$b$N$,$"$j$^$9!#$=$&$$$&FCl9g$K$O!"F1;~(B $BBG80$r@5$7$/G'<1$7$J$/$J$k$3$H$,$"$j$^$9!#(B $B8=:_!"(BNICOLA-DDSKK $B$O(B Daredevil SKK $B$KImB0$9$k$+$?$A$GG[I[$5$l$F$$$^$9!#(B $BI,$:F1:-$5$l$F$$$k(B Daredevil SKK $B$H(B NICOLA-DDSKK $B$H$rAH$_9g$o$;$F;HMQ(B $B$7$F$/$@$5$$!#(B NICOLA-DDSKK $B$O$^$@%Y!<%?%P!<%8%g%s$G$9!#$^$@%P%0$,$"$k$+$b$7$l$^$;$s!#(B $B%P%0$r8+$D$1$i$l$?J}$OJs9p$r$*4j$$$7$^$9!#(B $B!ZCx:n8"$J$I![(B SKK NICOLA patch $B$O(B SKK $B$r$b$H$KL'1:$5$s$,:n@.$5$l$?$b$N$G$9!#$=$NCx:n(B $B8"$OL'1:$5$s$,J];}$5$l$F$$$^$9!#(B Daredevil SKK $B$N0Y$K2CI.=$@5$7$?ItJ,$K$D$$$F$O!"DMK\$,Cx:n8"$rJ];}$7$^(B $B$9!#$^$?!":#8e(B SKK $B3+H/%i%\$K$*$$$FK\%W%m%0%i%`$,2CI.=$@5$5$l$?>l9g$O!"(B $B$=$NItJ,$NCx:n8"$O$=$N2~JQ$r9T$C$?J}$KB0$7$^$9!#(B $BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!#:FG[I[$*$h$S2~JQ$,G'$a$i$l$^$9$,!"(B $B$=$N:]$K$O(B Free Software Foundation $B$,8xI=$9$k(B GNU General Public Licence $B$NBh(B 2 $B%P!<%8%g%s0J9_(B ($B$NG$0U$N(B 1 $B$D$N%P!<%8%g%s(B) $B$N>r7o$K=>$&(B $BI,MW$,$"$j$^$9!#(B $BK\%W%m%0%i%`$OM-MQ$G$"$k$H;W$o$l$^$9$,!"$=$NG[I[$OL5J]>Z$G$9!#;T>l@-$^(B $B$?$OFCDj$NL\E*$X$NE,9g@-$N$?$a$KDL>oG'$a$i$l$k$h$&$J0EL[$NJ]>Z$9$i$5$l(B $B$^$;$s!#(BGNU General Public License $B$r;2>H$9$l$P$h$j>\$7$$$3$H$,J,$+$j(B $B$^$9!#(B Daredevil SKK $B$H$H$b$K(B GNU General Public License $B$,<}O?$5$l$F$$$k$O$:(B $B$G$9!#(BCOPYING $B$H$$$&L>A0$N%U%!%$%k$r8+$F$/$@$5$$!#$b$7$3$l$,$J$1$l$P!"(B $BH$7$F$/$@$5$$!#(B $B!Z@_Dj![(B $B4pK\E*$K$O(B REAME.ja $B$K=q$+$l$F$$$kDL$j$G$9!#(B (setq skk-use-kana-keyboard t) $B$H$$$&@_Dj$OI,$:$7$^$9!#F|K\8l(B 106 $B%-!<%\!<%I$N>l9g!"(B skk-kanagaki-keyboard-type $B$H$$$&JQ?t$O(B nicola-jis, oasys, omelet-jis $B$N$$$:$l$+$K$9$k$3$H$K$J$k$G$7$g$&!#$=$l$>$lHyL/$K%-! [space] o $B1&?F;X%-!<(B => [$BJQ49(B] $B$N$h$&$K@_Dj$rJQ99$7$?$$>l9g$O!"(B~/.skk $B$Ke5-$O(B XFree86 $B>e$G$N(B GNU Emacs 20.3 $B0J9_$NNc$G$9!#(B[henkan] $B$NItJ,(B $B$,(BEmacs $B$Ne$G$N(B XEmacs $B!D(B [henkan-mode] - XFree86 $B>e$G$N(B Mule2.3@19.34 $B!D(B [numbersign] - XFree86 $B>e$G$N(B Mule2.3@19.28 $B!D(B [key-35] - XFree86 $B>e$G$N(B Emacs 20.2 $B!D(B $BJQ49%-!<$,;H$($^$;$s!#(B $BJQ49%-!<$dL5JQ49%-!<$,;H$($J$$4D6-$G$b(B xmodmap $B$r;H$&$J$I!"2>A[%-!<%3!<(B $B%I$N%l%Y%k$G@_Dj$rJQ99$G$-$k>l9g$O!"$=$l$K$h$C$F;HMQ$G$-$k$h$&$K$9$k$H(B $B$$$$$G$7$g$&!#(B (*) xmodmap $B%3%^%s%I$N;H$$J}$K$D$$$F$O3d0&$7$^$9!#(B $B0lEY(B Emacs $B$r=*N;$7!"5/F0$7$J$*$7$^$9!#(BC-x C-j $B$G(B skk-mode $B$K$9$k(B $B$H!"%b!<%I%i%$%s$,!V$+$J!W$G$O$J$/!"!V$K$3$i!W$K$J$j$^$9!#$3$l$G(B SKK $B$G(B NICOLA $BF~NO$,$G$-$k$h$&$K$J$j$^$9!#(Bskk-use-kana-keyboard $B$r(B nil $B$K(B $B$7$F$*$/$H!"=>MhDL$j%m!<%^;z$+$JJQ49$,;H$($^$9!#(B $B$J$*!"(BSKK $B;HMQCf$K2>L>F~NO$H%m!<%^;zF~NO$r@Z$jBX$($k$3$H$,2DG=$G$9!#(B [f12] $B%-!<$,$"$k>l9g$O$=$l$r2!$7$F$_$F$/$@$5$$!#$J$$>l9g$O!"(BM-x skk-kanagaki-toggle-rom-kana $B$ruBV$G(B C-x t ($B$^$?$O(B M-x skk-tutorial) $B$ro$N%3%s%T%e!<%?MQ$N%-!<%\!<%I$N$3$H$r9M$($F!"1&%7%U%H!"%9%Z!<%9!"JQ(B $B49$r0l$D$N%-!<$G7sMQ$7!"$^$?:8%7%U%H!"2~9T!"3NDj$r0l$D$N%-!<$G7sMQ$7$^(B $B$9!#$D$^$j:81&$N?F;X$,0l$D$:$D%-!<$rC4Ev$7$^$9!#Nc$($P(B omelet-jis $B$G$O!"(B $B0J2<$N$h$&$J%-!$f("$Z$`("$\$o("$n$)("!2!G("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B\ $B!o("(B $B(&(!(!(*(!(!(+(!(!(*(!(!(*(!(!(%(&(!(!(*(!(!(*(!(!(+(!(!(*(!(!(*(!(!(%(B $B("(B $B:8%7%U%H(B | $B1&%7%U%H(B(space)$B("(B $B!!!!!!!!!!!!(&(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(%(B $B2<$NCJ$N$+$J$O$=$N$^$^F~NO$7!">e$NCJ$N1&$N$+$J$OF1$8B&$N?F;X%7%U%H%-!<(B $B$rF1;~$K2!$9$3$H$GF~NO$7$^$9!#$?$H$($P!V$(!W$rF~NO$9$k$?$a$K$O!V$+!W$N(B $B%-!<(B ("w" $B$N%-!<(B) $B$H:8%7%U%H$rF1;~$K2!$7$^$9!#$^$?ByE@$D$-$NJ8;z$rF~NO(B $B$9$k$?$a$K$O!"H?BPB&$N%7%U%H%-!<$HF1;~BG80$7$^$9!#$D$^$j!V$,!W$rF~NO$9(B $B$k$?$a$K$O!V$+!W(B("w" $B$N%-!<(B) $B$H1&%7%U%H$rF1;~$K2!$7$^$9!#(B $BH>ByE@$N$D$$$?J8;z$O!"0J2<$NJ}K!$GF~NO$G$-$^$9!#(B ------------------------ $B$Q(B [$B:8%7%U%H(B] + y $B$T(B [$B:8%7%U%H(B] + p $B$W(B [$B:8%7%U%H(B] + n $B$Z(B [$B:8%7%U%H(B] + , $B$](B [$B:8%7%U%H(B] + l ------------------------ $BA`:n$N4pK\$O(B SKK $B$N$b$N$rB:=E$7$F:n$i$l$F$$$^$9!#$7$+$7%m!<%^;z$G$O;H(B $B$o$J$$(B l $B$d(B q $B$J$I$K$O(B NICOLA $B$G$OA4$F!V$+$J!W$,3d$j$"$F$i$l$F$$$k$?$a!"(B $B%-!<%P%$%s%I$rBgI}$KJQ99$7$^$7$?!#(B $B%-!<%P%$%s%II=(B -------------------------------------------------------------------- NICOLA $B%m!<%^;z(B $BJQ99M}M3$J$I(B -------------------------------------------------------------------- $BJQ49(B [space] [$B1&(B] [space] $B3NDj(B C-j C-j $BA08uJd(B C-p x ; $B$+$J$H>WFM(B $B < ? > < ? abbrev-mode $B3+;O(B [gh] / ; $B$+$J$H>WFM(B $B$+$J%b!<%I$X(B C-j [$B:81&(B] C-j $B%+%?%+%J%b!<%I$X(B [dk] q ; $B$+$J$H>WFM(B $BH>3Q%b!<%I$X(B [$B:81&(B] A l ; $B$+$J$H>WFM(B $BA41Q%b!<%I$X(B Z L L $B%+%?%+%JJQ49(B [dk] q ; $B$+$J$H>WFM(B $BA43QJQ49(B C-q C-q $BJd40$N3+;O(B \t \t $BJd40WFM(B $BJ8;z%3!<%II=<((B $ $ JIS $B%3!<%IF~NO(B C \ ; $B$+$J$H>WFM(B -------------------------------------------------------------------- $B$h$j$h$$%-! $B$KDs0F$7$F$/$@(B $B$5$$!#(B $B!Z3Fe$G$N(B XEmacs $B!D(B [henkan-mode] - XFree86 $B>e$G$N(B GNU Emacs 20.3 $B0J9_(B $B!D(B [henkan] - XFree86 $B>e$G$N(B Mule2.3@19.34 $B!D(B [numbersign] - XFree86 $B>e$G$N(B Mule2.3@19.28 $B!D(B [key-35] - XFree86 $B>e$G$N(B Emacs 20.2 $B!D(B $BJQ49%-!<$,;H$($^$;$s!#(B ($BNc(B) (setq skk-nicola-rshift-keys '(" " [henkan])) o skk-nicola-lshift-keys $B:8?F;X%-!<$H$7$F;H$&%-!<$N%j%9%H!#(B $BI8=`$G$OL5JQ49%-!e$G$N(B Emacsen $B!D(B [muhenkan] ($BNc(B) (setq skk-nicola-lshift-keys '([muhenkan])) o skk-nicola-interval $B$3$N;~4V(B(ms)$B0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B ($BNc(B) (setq skk-nicola-interval 0.1) ; 100 $B%_%jIC(B o skk-nicola-latin-interval $B1Q?t(B (latin) $B%b!<%I$GF1;~BG80$HH=Dj$9$k;~4V(B(ms)$B!#(B ($BNc(B) (setq skk-nicola-latin-interval 0.15) ; 150 $B%_%jIC(B o skk-nicola-use-lshift-as-space $B$3$NJQ?t$r(B t $B$K$9$k$H!":8%7%U%H$b%9%Z!<%9$H$7$F5!G=$9$k!#(B $BI8=`$G$O(B nil$B!#(B $B%-!<%\!<%I$r2~B$$7$F!"??Cf$K1&%7%U%H$H:8%7%U%H$,JB$s$G$$$k$h$&$K(B $B$7$?$H$-$O!"JXMx$+$b$7$l$^$;$s!#$=$N$H$-$O!"(BNICOLA SKK $B0J30$G$b(B $B9)IW$9$kI,MW$,$"$j$^$9$,!#(B o skk-nicola-use-koyubi-functions $B$3$NJQ?t$,Hs(B nil $B$J$i$P!"1&.;X$N%[!<%`%]%8%7%g%s$N1&!J(BJIS $B%-!<(B $B%\!<%I$G$O!"(B":" $B$N0LCV!K(B $B$K8eB`%-!<$N$h$&$J5!G=$r3d$jEv$F$k!#(B $B$3$N5!G=$K$D$$$F$O0l1~!V(BOAK $B%Q%o!<%"%C%W%-%C%H(B $B&BHG!W$r;29M$K$7$^(B $B$7$?$,!"JQ49BP>]J8;zNs$N07$$$,(B SKK $B$K$*$$$F$O0lHL$N(B FEP $B$HA4A30c(B $B$&$?$a$K!"$=$C$/$jF1$85!G=$OC%-!<$N$h$&$J5!G=$r3d$jEv$F$^$9!#(B $B!Z<-=q$NHs8_49@-![(B NICOLA-DDSKK $B$O%m!<%^;zF~NO$NBX$o$j$K!"$+$JF~NO$r4pK\$H$7$F$$$k$?$a!"(B $B<-=q$NFbMF$,2<$K<($9$h$&$KK\Mh$N(B SKK $B$H0[$J$k$3$H$,$"$j$^$9!#(B $BK\Mh$N(BSKK $B$$(Bt /$B9T(B/[$B$C$?(B/$B9T(B/]/ NICOLA SKK $B$$(Bt /$B9T(B/[$B$C(B/$B9T(B/]/ NICOLA $BF~NO$N>l9g$O!"L5M}$K%*%j%8%J%k$K9g$o$;$k$H!">/$7$*$+$7$J%?%$%_(B $B%s%0!J!X"&$$(B*$B$C$?!Y$^$GF~NO!K$GJQ49$9$k$3$H$K$J$j$^$9$N$G!"(BNICOLA-DDSKK $B$O$"$($F$3$N$h$&$J;EMM$K$7$F$"$j$^$9!#(B skk-henkan-okuri-strictly $B$rHs(B nil $B$K$7$F$$$k>l9g$OLdBj$K$J$jF@$^$9$,!"(B $B$3$l$K$D$$$F$O(B SKK $BK\BN$K * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): Add coding tag. 2013-04-07 Tatsuya Kinoshita * skk-nicola.el: Do not use `skk-sit-for'. 2012-09-13 Tetsuo Tsukamoto * skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-nicola.el: Find feature `emacs' for GNU emacs. 2011-06-12 Tetsuo Tsukamoto * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): Indent fixes. 2011-05-31 Tetsuo Tsukamoto * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): Undo the previous change and set buffer-file-name instead. 2011-05-08 Tetsuo Tsukamoto * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): Set generated-autoload-file under Emacs 24 or later. 2010-11-17 Tetsuo Tsukamoto * skk-kanagaki.el, skk-nicola.el: Update custom types for user options. * *.el: Update docstrings. 2010-11-14 Tetsuo Tsukamoto * skk-kanagai.el (skk-setup-keymap@around@skk-kangaki-keys): No longer modify value of skk-previous-candidate-char. Change to after advice. 2010-10-24 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-format-time): Update comments. 2010-09-11 Tetsuo Tsukamoto * NICOLA-DDSKK-CFG, NICOLA-DDSKK-ELS: Do not use path-util.el. * NICOLA-DDSKK-MK: Do not requiqre pcustom and poem. * skk-kanagaki-menu.el: Do not use path-util.el and static.el. * skk-kanagaki-util.el, skk-nicola-dcomp.el: Do not require static. * skk-kanagaki.el: Do not use `defalias-maybe'. * skk-nicola.el: Do not use static.el. Require skk-emacs instead of skk-e21 for GNU Emacsen. 2010-09-09 Tetsuo Tsukamoto * NICOLA-DDSKK-CFG: Check if Emacs is self-contained. * NICOLA-DDSKK-MK: Show VERSION_SPECIFIC_LISPDIR. * skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-nicola.el: Use skk-running-gnu-emacs. 2010-08-27 Tetsuo Tsukamoto * skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-nicola.el: Do not use skk-emacs-type. 2010-08-21 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-rshift-keys): Use `append' instead of `nconc'. 2010-08-02 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-bs): Use `delete-char' instead of `delete-backward-char'. 2010-01-30 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-print-help-function): New constant variable. (skk-kanagaki-help-1): Use it. Use `with-current-buffer' instead of `save-excursion'. 2009-11-02 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-initialize): Use `skk-char-to-unibyte-string' instead of `char-to-string'. * skk-nicola.el (skk-insert@around@skk-nicola-workaround): Use `char-to-string' instead of `skk-char-to-string'. (skk-nicola-turn-on-j-mode, skk-nicola-treat-triple) (skk-nicola-insert-double, skk-nicola-maybe-double-p): Use `skk-char-to-unibyte-string' instead of `char-to-string'. 2009-08-14 Tetsuo Tsukamoto * skk-kanagaki-menu.el: * skk-nicola.el: Check for mule6. 2009-08-13 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-insert): Use `skk-bind-last-command-char'. * skk-nicola.el (skk-nicola-self-insert-lshift-1): (skk-nicola-insert-single, skk-nicola-insert-double): (skk-nicola-turn-on-j-mode, skk-nicola-space-function): (skk-nicola-maybe-double-p): (skk-insert@around@skk-nicola-workaround): Use `skk-last-command-char' and `skk-bind-last-command-char'. 2008-12-17 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-format-time): CAR of return value of `current-time' must be multiplied by 65536 (i.e. 2x10^6). Fix. 2007-09-02 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-setup-modeline): Name the toplevel anonymous function for skk-mode-hook. (skk-kanagaki-initialize): New advice. 2007-08-20 Tetsuo Tsukamoto * skk-kanagaki.el (skk-setup-keymap): Define function keys f1-f10 only when skk-j-mode-function-key-usage is `kanagaki'. 2007-08-14 Tetsuo Tsukamoto * skk-kanagaki-util.el: * skk-nicola.el: Put `skk-kanagaki-bs', skk-nicola-self-insert-lshift and skk-nicola-self-insert-rshift' property for pending-del or delsel. 2007-04-29 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-bs): Call `skk-dcomp-after-delete-backward-char'. * skk-nicola.el (skk-nicola-self-insert-lshift-1): New function. * skk-nicola-dcomp.el: Advise it instead of `skk-nicola-self-insert-lshift'. 2007-04-24 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-insert): * skk-nicola.el (skk-nicola-self-insert-lshift): (skk-nicola-insert-single): (skk-nicola-space-function): Rename optional argument. 2007-04-22 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-insert): * skk-nicola.el (skk-nicola-self-insert-lshift): (skk-nicola-insert-single): (skk-nicola-space-function): Accept optional argument PREFIX-ARG. 2007-04-22 Tetsuo Tsukamoto Suggested by Tatsuya Kinoshita . * *.el: Specify coding at the first line of each file containing non-ASCII characters. 2007-04-14 Tetsuo Tsukamoto * skk-kanagaki.el: * skk-nicola.el: Update custom types. 2007-04-08 Tetsuo Tsukamoto * skk-kanagaki.el: Define custom group skk-kanagaki in skk-vars.el. * skk-nicola.el: Define custom group skk-nicola in skk-vars.el. 2007-03-29 Tetsuo Tsukamoto * NICOLA-DDSKK-CFG: Modify default values for install-prefix, LISPDIR and VERSION_SPECIFIC_LISPDIR. 2007-03-25 Tetsuo Tsukamoto * NICOLA-DDSKK-CFG: Call `install-get-default-package-directory' for setting PACKAGEDIR. * NICOLA-DDSKK-MK (compile-nicola-ddskk-package): Call `install-update-package-files'. 2006-01-18 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-insert-kana): Call `skk-cancel-undo-boundary'. 2005-12-18 Tetsuo Tsukamoto * skk-nicola-dcomp.el (skk-nicola-self-insert-lshift): Call `skk-dcomp-do-completion'. 2005-12-15 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-dakuten): When Emacs is in skk-isearch and SKK enters minibuffer touroku mode, do not set buffer to skk-isearch-working-buffer. 2005-12-04 Tetsuo Tsukamoto * skk-nicola-dcomp.el (skk-nicola-self-insert-lshift): Do not do completion if skk-hint-inhibit-dcomp is non-nil. 2005-11-28 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-dakuten): * skk-nicola.el (skk-nicola-insert-double): Workaround for modification in Emacs 22.0.50 which uses a vector, instead of a list, for each element of `isearch-cmds'. 2005-02-25 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-insert): When skk-dcomp is used, call `skk-dcomp-cleanup-buffer' before calling `skk-set-okurigana-no-sokuon'. (skk-kanagaki-set-okurigana): Redefine function as an alias to `skk-set-char-before-as-okurigana'. 2004-08-29 Yoichi NAKAYAMA * skk-kanagaki.el: Fixed typo. 2004-04-04 Tetsuo Tsukamoto * skk-kanagaki-menu.el: Add Japanese menu support for Emacs 21. * skk-nicola-dcomp.el (skk-nicola-self-insert-lshift): Do not try to delete region when local variable pos is not set. 2004-03-13 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-jidou-keymap-kakikae-service): Abolish variable. * skk-kanagaki-util.el (skk-kanagaki-call-xmodmap): Abolish macro. (skk-kanagaki-help-1): Abolish old style backquote. * skk-106-jis.el: * skk-oasys.el: Don't call xmodmap. 2004-03-12 Tetsuo Tsukamoto * skk-106-jis.el: Modify keycode 123 -> 211. (skk-kanagaki-106-jis-base-rule-list): (skk-106-jis-plain-rule-list): Call `skk-nicola-insert' for chars \, |, _, Y, and Z. (skk-106-jis-lshift-rule-list): (skk-106-jis-rshift-rule-list): Default to the same as skk-106-jis-plain-rule-list. * skk-kanagaki-util.el (skk-kanagaki-dakuten): Don't call `caddr'. Call `nth' instead. Use `skk-unread-event'. * skk-nicola.el (skk-nicola-insert-double): Do not consider skk-106-jis explicitly. (skk-nicola-rshift-keys): Do not consider Emacs 20.2 or earlier. 2004-03-09 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-dakuten): Now works in isearch mode. This is Kanzen-like behavior. (isearch-repeat): Advise to go to isearch-barrier before search. 2004-03-04 Tetsuo Tsukamoto * NICOLA-DDSKK-MK (nicola-ddskk-generate-autoloads): No longer support Mule 2. 2003-07-09 Tetsuo Tsukamoto * skk-kanagaki-util.el: (skk-kanagaki-temp-dir): Abolish variable. (skk-kanagaki-call-xmodmap): Call `make-temp-file', not `make-temp-name'. 2002-07-25 Tetsuo Tsukamoto * skk-nicola.el: (isearch-text-char-description): Do not put advice to this function. 2002-07-20 Tetsuo Tsukamoto * skk-nicola.el: (skk-nicola-insert-double): Do not call `skk-nicola-set-okuri-flag' at the henkan start point. 2002-01-19 Tetsuo Tsukamoto * skk-kanagaki-menu.el: * skk-kanagaki-util.el: * skk-nicola-dcomp.el: * skk-nicola-jis.el: * skk-nicola-us.el: * skk-nicola.el: * skk-omelet-jis.el: * skk-omelet-us.el: Use #' for functions. 2002-01-18 Tetsuo Tsukamoto * skk-nicola.el: Remove workarounds for MULE 3. (isearch-char-to-string): No longer advise here. 2002-01-17 Tetsuo Tsukamoto * skk-nicola.el: Doc strings and comments update. 2001-12-09 Tetsuo Tsukamoto * skk-kangaki.el (skk-kanagaki-adjust-rule-tree): Set rules. 2001-12-02 Tetsuo Tsukamoto * skk-kangaki.el (skk-setup-keymap): Preactivate. 2001-11-17 Tetsuo Tsukamoto * skk-nicola-jis.el * skk-nicola-us.el * skk-omelet-jis.el * skk-omelet-us.el: Use `skk-mode-hook' when `skk-nicola-use-koyubi-functions' is non-nil. 2001-11-03 Tetsuo Tsukamoto * skk-kanagaki.el (skk-setup-keymap): New advice. 2001-11-03 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-midashi-henkan): Bind `skk-kakutei-history' nil. * skk-nicola.el (skk-nicola-insert-double): Bind `skk-kakutei-history' nil. 2001-10-31 Tetsuo Tsukamoto * skk-kanagaki-util.el * skk-kanagaki.el * skk-nicola-dcomp.el * skk-nicola.el: Refer to `skk-henkan-mode'. 2001-10-12 Tetsuo Tsukamoto * skk-kangaki-menu-oe.el: No longer in the repository. 2001-10-11 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-turn-on-j-mode): Don't check if color cursor is required. 2001-10-10 Tetsuo Tsukamoto * NICOLA-DDSKK-ELS * skk-kanagaki-util.el * skk-kanagaki.el * skk-nicola.el: Modification concerning specificity. 2001-10-07 Tetsuo Tsukamoto * skk-kanagaki.el (skk-compute-henkan-lists-sub-adjust-okuri): New advice. 2001-10-02 Tetsuo Tsukamoto * skk-nicola-dcomp.el: New file. 2001-09-23 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-turn-on-j-mode): Call `skk-cursor-set'. 2001-09-17 Tetsuo Tsukamoto * skk-omelet-us.el (skk-insert): Now advise in skk-nicola.el. * skk-kanagaki.el, skk-nicola.el: Rename each one of advice. * skk-nicola-us.el: Enable Koyubi functions. 2001-09-16 Tetsuo Tsukamoto * skk-omelet-us.el (skk-insert): Workaround. Enable Koyubi fnctions. * skk-nicola.el (skk-nicola-lshift-function): New variable. (skk-nicola-lshift-function): Refer to it. 2001-09-14 Tetsuo Tsukamoto * *: Re-indent. 2001-09-11 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Use `skk-dcomp-marked-p'. 2001-09-10 Tetsuo Tsukamoto * skk-kangaki.el (skk-kanagaki-adjust-rule-tree): Use `case'. (skk-kanagaki-insert): Use `skk-save-point'. (skk-insert): Don't bind `skk-henkan-point-key' in skk-jisx0201-mode. 2001-09-08 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Do not do dynamic completion when `skk-henkan-active'. Call `skk-insert' when `skk-kanagaki-state' is not kana. 2001-09-07 Tetsuo Tsukamoto * skk-kanagaki.el (skk-toggle-katakana): Make or kill local variable `skk-kanagaki-state'. (skk-mode, skk-latin-mode, skk-jisx0208-latin-mode, skk-abbrev-mode): New advice. * skk-nicola.el (skk-nicola-self-insert-lshift): Do not do dynamic completion if `this-command' is `skk-nicola-self-insert-rshift'. 2001-09-06 Tetsuo Tsukamoto * *: No real changes. Looks more esthetic. * skk-kanagaki.el (skk-toggle-katakana): New advice. * skk-kanagaki-menu*.el: Don't consider `skk-jisx0201-mode-map'. 2001-08-29 Tetsuo Tsukamoto * *: Update comments and doc strings. 2001-08-25 Tetsuo Tsukamoto * *: Farewell to Emacs 18. 2001-08-09 Tetsuo Tsukamoto * *: Clean up. 2001-08-08 Tetsuo Tsukamoto * skk-kanagaki.el, skk-nicola.el: Typo. 2001-07-28 Tetsuo Tsukamoto * skk-kanagaki.el (skk-compute-henkan-lists): I guess that is preferred, then had better let the function advised. (skk-kanagaki-rule-list): Add a rule for `skk-kakutei-key'. 2001-07-20 NAKAJIMA Mikio * skk-kanagaki.el (skk-compute-henkan-lists): The function that has skk-kanagaki specific transaction was moved from skk.el. 2001-03-19 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-treat-triple): New function. (skk-nicola-insert): Call it. 2001-03-16 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-temp-data): New variable. (skk-nicola-insert): Deal with triple typings. (skk-nicola-format-time, skk-nicola-event-to-key, skk-nicola-insert-single, skk-nicola-insert-double, skk-nicola-maybe-double-p): New functions. 2001-03-12 Tetsuo Tsukamoto * README.NICOLA.ja: Update. * skk-kanagaki.el (skk-kanagaki-previous-candidate-key): Change the default value to "\C-p". (skk-kanagaki-initialize): Set `skk-previous-candidate-char' properly if necessary. 2001-01-20 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Remove defvars for skk-dcomp. 2001-01-07 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-insert-kana): When RULE indicates a function, call it. 2000-12-16 Tetsuo Tsukamoto * skk-nicola.el: Remove defvars for skk-dcomp. 2000-12-13 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-toggle-rom-kana): Call `skk-modify-indicator-alist'. * skk-nicola.el (skk-mode-hook): Ditto. 2000-12-05 Tetsuo Tsukamoto * README.NICOLA.ja: New file. * skk-106-jis.el: Require `skk-nicola'. * skk-kanagaki.el (skk-insert@around@skk-kanagaki-ad): Set `skk-process-okuri-early' to nil. 2000-12-04 Tetsuo Tsukamoto * *: Modify Comments. 2000-12-03 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Don't advise to do completion when `skk-henkan-active' is t. 2000-12-02 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift): Modify for skk-dcomp. 2000-12-01 Tetsuo Tsukamoto * *: Modify comments. 2000-11-29 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-self-insert-lshift@arond@skk-nicola-ad-for-dcomp): New advice. 2000-11-28 Tetsuo Tsukamoto * skk-nicola.el: Integrate some pieces of advice into original functions. (skk-nicola-lshift-function): Simply call `skk-kakutei'. 2000-11-27 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-bs): Use `skk-isearch-current-buffer'. * skk-kanagaki.el (skk-kanagaki-initialize, skk-kanagaki-adjust-rule-tree): New functions. 2000-11-25 Tetsuo Tsukamoto * skk-nicola.el: Do nothing for tutorial under Emacs 18. (skk-nicola-lshift-keys): Rename from `skk-nicola-lshift-key'. (skk-nicola-rshift-keys): Rename from `skk-nicola-rshift-key'. (skk-nicola-turn-on-j-mode): Insert original characters. 2000-11-24 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-2nd-help): Add keys. 2000-11-20 Tetsuo Tsukamoto * skk-nicola.el: Eliminate warnings. Call `skk-mode-string-to-indicator'. 2000-11-19 Tetsuo Tsukamoto * skk-nicola.el (skk-mode-hook): Update modeline indicators under Emacs 21. Call `skk-update-modeline'. (skk-kanagaki-toggle-rom-kana): Ditto. 2000-11-15 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-state): This shouldn't be a local varaible. * skk-nicola.el (skk-kanagaki-toggle-rom-kana): Update all buffers. 2000-11-13 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-bs): Rename from `skk-kanagaki-delete-backward-char'. (skk-kanagaki-esc): New function. * skk-kanagaki.el (skk-kanagaki-isearch-buffer): New variable. (skk-isearch-wrapper): New advice. (skk-insert): Keep `skk-kanagaki-state' to rom in tutorial. * skk-nicola.el (skk-nicola-use-koyubi-functions): New variable. (skk-nicola-lshift-function): Call `exit-minibuffer' in minibuffer. * skk-nicola-jis.el, skk-oasys.el, skk-omelet-jis.el: Define keys when `skk-nicola-use-koyubi-functions' is non-nil. 2000-11-12 Tetsuo Tsukamoto * README.ja: Update. * *.el: Modify comments. 2000-11-09 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-sit-for): Abolish. * skk-nicola.el: Use `skk-sit-for'. 2000-11-08 Tetsuo Tsukamoto * skk-kanagaki.el: Modify comments. * skk-kanagaki-util.el (skk-kanagaki-sit-for, skk-kanagaki-make-string): Redefine as macros. 2000-11-07 Tetsuo Tsukamoto * *: From "experimental/nicola" to "nicola". 2000-11-04 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kanagaki-state): New variable. (skk-kanagaki-toggle-rom-kana): Check it. 2000-11-02 Tetsuo Tsukamoto * skk-kanagaki.el (skk-okurigana-prefix): New advice. 2000-10-17 Tetsuo Tsukamoto * skk-106-jis.el, skk-kanagaki-menu-oe.el, skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-kanagaki.el, skk-nicola-dvorak.el, skk-nicola-jis.el, skk-nicola-us.el, skk-nicola.el, skk-oasys.el, skk-omelet-dvorak.el, skk-omelet-jis.el, skk-omelet-us.el: Call `product-provide'. 2000-10-12 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-turn-on-j-mode): Use `skk-cursor-hiragana-color' instead of the return value of `skk-cursor-current-color'. 2000-10-11 Tetsuo Tsukamoto * skk-kanagaki-util.el: Require "static" at compile time. 2000-10-10 Tetsuo Tsukamoto * README.ja: Update. 2000-10-09 Tetsuo Tsukamoto * README.ja: Update. * skk-nicola.el (skk-nicola-turn-on-j-mode): Check the value of `skk-use-color-cursor' as well as the return value of `skk-color-display-p'. (skk-previous-candidate): Fix the advice. * skk-106-jis.el, skk-nicola-dvorak.el, skk-nicola-jis.el, skk-nicola-us.el, skk-oasys.el, skk-omelet-dvorak.el, skk-omelet-jis.el, skk-omelet-us.el: Don't use `defconst'. 2000-10-07 Tetsuo Tsukamoto * skk-kanagaki.el (skk-adjust-user-option): Don't use `mapcar'. 2000-09-17 Tetsuo Tsukamoto * skk-nicola.el: Add comments. 2000-09-13 Tetsuo Tsukamoto * skk-kanagaki-util.el (skk-kanagaki-help-1): Move from skk-kanagaki.el. 2000-09-11 Tetsuo Tsukamoto * skk-kanagaki.el (skk-kangaki-help): Use `dolist'. * skk-nicola.el (skk-nicola-2nd-help): Ditto. (skk-nicola-turn-on-j-mode): Use `set-buffer-local-cursor-color' instead of `update-buffer-local-frame-params'. 2000-09-10 Tetsuo Tsukamoto * NICOLA-DDSKK-MK: Use `dolist' or `do' instead of `mapcar' or `while' if possible. * README.URIs: Use overlays instead of text properties. * README.ja: Ditto. * skk-nicola.el (skk-nicola-setup): New function. 2000-09-08 Tetsuo Tsukamoto * Makefile (VERSION): Use version number of Darevil SKK. * README.URIs: Highlight URIs as if they are clickable. * README.ja: Ditto. 2000-09-06 Tetsuo Tsukamoto * skk-*.el: Add keywords. 2000-09-05 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-insert): Sync with new cursor-controlling functions. Fix the behaviour of right-shift-key simultaneous typing. 2000-09-04 Tetsuo Tsukamoto * Changelog, Changelog.1, Changelog.2, Makefile, NICOLA-DDSKK-CFG, NICOLA-DDSKK-ELS, NICOLA-DDSKK-MK, README.URIs, README.ja, skk-106-jis.el, skk-kanagaki-menu-oe.el, skk-kanagaki-menu.el, skk-kanagaki-util.el, skk-kanagaki.el, skk-nicola-dvorak.el, skk-nicola-jis.el, skk-nicola-us.el, skk-nicola.el, skk-oasys.el, skk-omelet-dvorak.el, skk-omelet-jis.el, skk-omelet-us.el: New files. ddskk-15.1.54/nicola/NICOLA-DDSKK-MK0000664000076600007660000000741012161161346015742 0ustar brutusbrutus;;; NICOLA-DDSKK-MK --- installer for NICOLA-DDSKK -*-emacs-lisp-*- ;;; Code: (require 'cl) (require 'advice) (defun config-nicola-ddskk () (let (prefix lisp-dir version-specific-lisp-dir) (and (setq prefix (car command-line-args-left)) (or (string-equal "NONE" prefix) (defvar PREFIX prefix))) (setq command-line-args-left (cdr command-line-args-left)) (and (setq lisp-dir (car command-line-args-left)) (or (string-equal "NONE" lisp-dir) (defvar LISPDIR lisp-dir))) (setq command-line-args-left (cdr command-line-args-left)) (and (setq version-specific-lisp-dir (car command-line-args-left)) (or (string-equal "NONE" version-specific-lisp-dir) (progn (defvar VERSION_SPECIFIC_LISPDIR version-specific-lisp-dir) (princ (format "VERSION_SPECIFIC_LISPDIR=%s\n" VERSION_SPECIFIC_LISPDIR))))) (setq command-line-args-left (cdr command-line-args-left)) (load-file "NICOLA-DDSKK-CFG") (load-file "NICOLA-DDSKK-ELS") (autoload 'browse-url "browse-url" nil t) (autoload 'browse-url-netscape "browse-url" nil t) (autoload 'update-buffer-local-frame-params "ccc") (autoload 'set-buffer-local-cursor-color "ccc") (autoload 'skk-cursor-current-color "skk-cursor") (princ (format "PREFIX=%s VERSION_SPECIFIC_LISPDIR=%s\n" PREFIX VERSION_SPECIFIC_LISPDIR)))) (defun compile-nicola-ddskk () (condition-case nil (load "bytecomp-runtime.el") (error)) (config-nicola-ddskk) (require 'skk-isearch) (require 'skk-macs) (require 'skk-autoloads) (require 'skk) (nicola-ddskk-generate-autoloads) (compile-elisp-modules nicola-ddskk-modules ".")) (defun install-nicola-ddskk () (config-nicola-ddskk) (install-elisp-modules nicola-ddskk-modules "./" NICOLA-DDSKK_DIR) (delete-file "./nicola-ddskk-autoloads.el")) (defun config-nicola-ddskk-package () (require 'cus-load) (let (package-dir) (and (setq package-dir (car command-line-args-left)) (or (string= "NONE" package-dir) (defvar PACKAGEDIR package-dir))) (setq command-line-args-left (cdr command-line-args-left)) (load-file "NICOLA-DDSKK-CFG") (load-file "NICOLA-DDSKK-ELS") (setq nicola-ddskk-modules (append nicola-ddskk-modules '(auto-autoloads custom-load))) (princ (format "PACKAGEDIR=%s\n" PACKAGEDIR)))) (defun compile-nicola-ddskk-package () (config-nicola-ddskk-package) (install-update-package-files "nicola-ddskk" ".") (require 'nicola-ddskk-autoloads "./auto-autoloads.el") (require 'skk-isearch) (require 'skk-macs) (require 'skk-autoloads) (require 'skk) (compile-elisp-modules nicola-ddskk-modules ".")) (defun install-nicola-ddskk-package () (config-nicola-ddskk-package) (install-elisp-modules nicola-ddskk-modules "./" (expand-file-name NICOLA-DDSKK_PREFIX (expand-file-name "lisp" PACKAGEDIR))) (delete-file "./auto-autoloads.el") (delete-file "./custom-load.el")) (defun nicola-ddskk-generate-autoloads () "Generate nicola-ddskk-autoload.el." (require 'autoload) (let ((buf (get-buffer-create " *nicola-ddskk-generate-autoloads*")) sort-min standard-output) (save-excursion (set-buffer buf) (setq buffer-file-name "nicola-ddskk-autoloads.el") (erase-buffer) (insert ";; -*- coding: iso-2022-7bit -*-\n") (message "%s" nicola-ddskk-modules) (dolist (module nicola-ddskk-modules) (let ((file (expand-file-name (format "%s.el" module) default-directory))) (and (file-exists-p file) (message "%s" file) (generate-file-autoloads file)))) (goto-char (point-max)) (insert " \(provide 'nicola-ddskk-autoloads) ") (let ((coding-system-for-write 'iso-2022-7bit)) (write-region (point-min) (point-max) "nicola-ddskk-autoloads.el" nil nil)) (kill-buffer buf)))) ;;; NICOLA-DDSKK-MK ends here ddskk-15.1.54/nicola/README.URIs.ja0000664000076600007660000000104610660502141015772 0ustar brutusbrutus-*- mode: fundamental -*- o $BF|K\8lF~NO%3%s%=!<%7%"%`(B (NICOLA) http://nicola.sunicom.co.jp/ o NICOLA $BG[Ns(B (NIHONGO-NYURYOKU CONSORTIUM LAYOUT) $B5,3J=q(B http://nicola.sunicom.co.jp/spec/kikaku.htm o $B%-!<%\!<%I9)K ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J$K=`5r$7$?(B omelet $BFH<+(B US $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-omelet-us-plain-rule-list' `skk-omelet-us-lshift-rule-list' `skk-omelet-us-rshift-rule-list' ") (defvar skk-omelet-us-plain-rule-list '((?\` ("$B!'(B" . "$B!.(B")) ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?= "$B!a(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?e ("$B%?(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?\[ "$B!"(B") (?\] skk-kanagaki-dakuten) (?\\ "$B!o(B") ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%1(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%$(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) (?' "$B!G(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-omelet-us-rshift-rule-list '((?` "$B%u(B") ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!H(B") (?9 "$B!J(B") (?0 "$B!K(B") (?- "$B!X(B") (?= "$B!Y(B") ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?\[ "$B!7(B") (?\] skk-kanagaki-handakuten) (?\\ "$B!@(B") ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) (?' "$B!F(B") ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-omelet-us-lshift-rule-list '((?\` "$B!1(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!N(B") (?7 "$B!u(B") (?8 "$B!I(B") (?9 "$B!Z(B") (?0 "$B![(B") (?- "$B!D(B") (?= "$B!\(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%E(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?\[ "$B!P(B") (?\] "$B!Q(B") (?\\ "$B!C(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; "$B%v(B") (?' "$B!'(B") ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map "'" 'skk-kanagaki-bs)))) (provide 'skk-omelet-us) ;;; skk-omelet-us.el ends here ddskk-15.1.54/nicola/skk-nicola-jis.el0000664000076600007660000002336711471027637017067 0ustar brutusbrutus;;; skk-nicola-jis.el --- SKK $B$K(B NICOLA (JIS) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J=`5r$N%-!$f("$Z$`("$\$o("$n$)("!2!C("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B\\ $B!o("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-nicola-jis-plain-rule-list' `skk-nicola-jis-lshift-rule-list' `skk-nicola-jis-rshift-rule-list' ") (defvar skk-nicola-jis-plain-rule-list '((?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?^ "$B!0(B") (?\\ "$B!o(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?e ("$B%?(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?@ "$B!"(B") (?\[ skk-kanagaki-dakuten) ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%1(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%$(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) (?: ("$B!((B" . "$B!'(B")) (?\] "$B!D(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-nicola-jis-rshift-rule-list '((?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!u(B") (?7 "$B!G(B") (?8 "$B!P(B") (?9 "$B!Q(B") (?0 "$B!F(B") (?- "$B!a(B") (?^ "$B!1(B") (?\\ "$B!C(B") ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?@ "$B!w(B") (?\[ skk-kanagaki-handakuten) ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) (?: ("$B%v(B" . "$B!((B")) (?\] ("$B!d(B" . "$B!c(B")) ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-nicola-jis-lshift-rule-list '((?1 "$B!*(B") (?2 "$B!I(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!J(B") (?9 "$B!K(B") (?0 "$B!X(B") (?- "$B!Y(B") (?^ "$B!H(B") (?\\ "$B!2(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%E(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?@ "$B!.(B") (?\[ "$B!7(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; ("$B!((B" . "$B!\(B")) (?: "$B!v(B") (?\] ("$B!c(B" ."$B!d(B")) ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map ":" 'skk-kanagaki-bs) (define-key skk-j-mode-map "]" 'skk-kanagaki-esc)))) (provide 'skk-nicola-jis) ;;; skk-nicola-jis.el ends here ddskk-15.1.54/nicola/skk-omelet-dvorak.el0000664000076600007660000002267211471027637017606 0ustar brutusbrutus;;; skk-omelet-dvorak.el --- SKK $B$K(B omelet (Dvorak) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J$K=`5r$7$?(B omelet $BFH<+(B Dvorak $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(B; $B!%("(BQ $B$R("(BJ $B$9("(BK $B$U("(BX $B$X("(B $B("(BB $B$a("(BM $B$=("(BW $B$M("(BV $B$[("(BZ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-omelet-dvorak-plain-rule-list' `skk-omelet-dvorak-lshift-rule-list' `skk-omelet-dvorak-rshift-rule-list' ") (defvar skk-omelet-dvorak-plain-rule-list '((?` "$B!.(B") ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?\[ "$B!N(B") (?\] "$B!O(B") (?\\ "$B!o(B") ;; (?' "$B!#(B") (?, ("$B%+(B" . "$B$+(B")) (?. ("$B%?(B" . "$B$?(B")) (?p ("$B%3(B" . "$B$3(B")) (?y ("$B%5(B" . "$B$5(B")) ;; (?f ("$B%i(B" . "$B$i(B")) (?g ("$B%A(B" . "$B$A(B")) (?c ("$B%/(B" . "$B$/(B")) (?r ("$B%D(B" . "$B$D(B")) (?l "$B!$(B") (?/ "$B!"(B") (?= skk-kanagaki-dakuten) ;; (?a ("$B%&(B" . "$B$&(B")) (?o ("$B%7(B" . "$B$7(B")) (?e ("$B%F(B" . "$B$F(B")) (?u ("$B%1(B" . "$B$1(B")) (?i ("$B%;(B" . "$B$;(B")) ;; (?d ("$B%O(B" . "$B$O(B")) (?h ("$B%H(B" . "$B$H(B")) (?t ("$B%-(B" . "$B$-(B")) (?n ("$B%$(B" . "$B$$(B")) (?s ("$B%s(B" . "$B$s(B")) (?- "$B!](B") ;; (?\; "$B!%(B") (?q ("$B%R(B" . "$B$R(B")) (?j ("$B%9(B" . "$B$9(B")) (?k ("$B%U(B" . "$B$U(B")) (?x ("$B%X(B" . "$B$X(B")) ;; (?b ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?w ("$B%M(B" . "$B$M(B")) (?v ("$B%[(B" . "$B$[(B")) (?z "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-omelet-dvorak-rshift-rule-list '((?` ("$B%u(B" . "$B!1(B")) ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!H(B") (?7 "$B!I(B") (?8 "$B!v(B") (?9 "$B!J(B") (?0 "$B!K(B") (?\[ "$B!X(B") (?\] "$B!Y(B") (?\\ "$B!@(B") ;; (?' ("$B%p(B" . "$B$p(B")) (?, ("$B%,(B" . "$B$,(B")) (?. ("$B%@(B" . "$B$@(B")) (?p ("$B%4(B" . "$B$4(B")) (?y ("$B%6(B" . "$B$6(B")) ;; (?f ("$B%h(B" . "$B$h(B")) (?g ("$B%K(B" . "$B$K(B")) (?c ("$B%k(B" . "$B$k(B")) (?r ("$B%^(B" . "$B$^(B")) (?l ("$B%'(B" . "$B$'(B")) (?/ "$B!7(B") (?= skk-kanagaki-handakuten) ;; (?a "$B%t(B") (?o ("$B%8(B" . "$B$8(B")) (?e ("$B%G(B" . "$B$G(B")) (?u ("$B%2(B" . "$B$2(B")) (?i ("$B%<(B" . "$B$<(B")) ;; (?d ("$B%_(B" . "$B$_(B")) (?h ("$B%*(B" . "$B$*(B")) (?t ("$B%N(B" . "$B$N(B")) (?n ("$B%g(B" . "$B$g(B")) (?s ("$B%C(B" . "$B$C(B")) (?- "$B!D(B") ;; (?\; ("$B%q(B" . "$B$q(B")) (?q ("$B%S(B" . "$B$S(B")) (?j ("$B%:(B" . "$B$:(B")) (?k ("$B%V(B" . "$B$V(B")) (?x ("$B%Y(B" . "$B$Y(B")) ;; (?b ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?w ("$B%`(B" . "$B$`(B")) (?v ("$B%o(B" . "$B$o(B")) (?z ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-omelet-dvorak-lshift-rule-list '((?` "$B!1(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!H(B") (?7 ("$B!I(B" . "$B!u(B")) (?8 "$B!\(B") (?9 "$B!Z(B") (?0 "$B![(B") (?\[ "$B!D(B") (?\] "$B!\(B") (?\\ "$B!C(B") ;; (?' ("$B%!(B" . "$B$!(B")) (?, ("$B%((B" . "$B$((B")) (?. ("$B%j(B" . "$B$j(B")) (?p ("$B%c(B" . "$B$c(B")) (?y ("$B%l(B" . "$B$l(B")) ;; (?f ("$B%Q(B" . "$B$Q(B")) (?g ("$B%B(B" . "$B$B(B")) (?c ("$B%0(B" . "$B$0(B")) (?r ("$B%E(B" . "$B$E(B")) (?l ("$B%T(B" . "$B$T(B")) (?/ "$B!?(B") (?= "$B!a(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?o ("$B%"(B" . "$B$"(B")) (?e ("$B%J(B" . "$B$J(B")) (?u ("$B%e(B" . "$B$e(B")) (?i ("$B%b(B" . "$B$b(B")) ;; (?d ("$B%P(B" . "$B$P(B")) (?h ("$B%I(B" . "$B$I(B")) (?t ("$B%.(B" . "$B$.(B")) (?n ("$B%](B" . "$B$](B")) (?s "$B%v(B") (?- "$B!'(B") ;; (?\; ("$B%%(B" . "$B$%(B")) (?q "$B!<(B") (?j ("$B%m(B" . "$B$m(B")) (?k ("$B%d(B" . "$B$d(B")) (?x ("$B%#(B" . "$B$#(B")) ;; (?b ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?w ("$B%Z(B" . "$B$Z(B")) (?v ("$B%\(B" . "$B$\(B")) (?z ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (provide 'skk-omelet-dvorak) ;;; skk-omelet-dvorak.el ends here ddskk-15.1.54/nicola/.cvsignore0000664000076600007660000000005607203135674015714 0ustar brutusbrutusnicola-ddskk-autoloads.el *.elc *.diff *.orig ddskk-15.1.54/nicola/skk-nicola-us.el0000664000076600007660000002263011471027637016721 0ustar brutusbrutus;;; skk-nicola-us.el --- SKK $B$K(B NICOLA (US) $BF~NO4D6-$rDs6!(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ;; Itsushi Minoura ;; Author: Itsushi Minoura ;; Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%U%!%$%k$O(B NICOLA $B5,3J=`5r(B US $BG[Ns$H$=$l$r$f("$Z$`("$\$o("$n$)("(B $B("(BZ $B!%("(BX $B$R("(BC $B$9("(BV $B$U("(BB $B$X("(B $B("(BN $B$a("(BM $B$=("(B, $B$M("(B. $B$[("(B/ $B!&("(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B(&(!(!(*(!(!(*(!(!(*(!(!(*(!(!(%(B $B3FOH$NJ8;z$O0J2<$N$h$&$K=q$+$l$F$$$^$9!#(B $B:82<(B $B!D(B ASCII $BJ8;z(B $B1&2<(B $B!D(B $B?F;X%7%U%H$7$J$$$GF~NO$5$l$k$Y$-J8;z(B ($BC1FHBG80(B) $B1&>e(B $B!D(B $BF1B&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (straight shift) $B:8>e(B $B!D(B $BH?BPB&?F;X%7%U%H$K$h$jF~NO$5$l$k$Y$-J8;z(B (cross shift) $B$3$l$K4p$$$F0J2<$N(B 3 $B$D$N%k!<%k$,7hDj$5$l$^$9!#(B `skk-nicola-us-plain-rule-list' `skk-nicola-us-lshift-rule-list' `skk-nicola-us-rshift-rule-list' ") (defvar skk-nicola-us-plain-rule-list '((?\` "$B!.(B") ;; (?1 "1") (?2 "2") (?3 "3") (?4 "4") (?5 "5") ;; (?6 "6") (?7 "7") (?8 "8") (?9 "9") (?0 "0") (?- "$B!](B") (?= "$B!a(B") ;; (?q "$B!#(B") (?w ("$B%+(B" . "$B$+(B")) (?e ("$B%?(B" . "$B$?(B")) (?r ("$B%3(B" . "$B$3(B")) (?t ("$B%5(B" . "$B$5(B")) ;; (?y ("$B%i(B" . "$B$i(B")) (?u ("$B%A(B" . "$B$A(B")) (?i ("$B%/(B" . "$B$/(B")) (?o ("$B%D(B" . "$B$D(B")) (?p "$B!$(B") (?\[ "$B!"(B") (?\] skk-kanagaki-dakuten) (?\\ "$B!o(B") ;; (?a ("$B%&(B" . "$B$&(B")) (?s ("$B%7(B" . "$B$7(B")) (?d ("$B%F(B" . "$B$F(B")) (?f ("$B%1(B" . "$B$1(B")) (?g ("$B%;(B" . "$B$;(B")) ;; (?h ("$B%O(B" . "$B$O(B")) (?j ("$B%H(B" . "$B$H(B")) (?k ("$B%-(B" . "$B$-(B")) (?l ("$B%$(B" . "$B$$(B")) (?\; ("$B%s(B" . "$B$s(B")) (?\' "$B!G(B") ;; (?z "$B!%(B") (?x ("$B%R(B" . "$B$R(B")) (?c ("$B%9(B" . "$B$9(B")) (?v ("$B%U(B" . "$B$U(B")) (?b ("$B%X(B" . "$B$X(B")) ;; (?n ("$B%a(B" . "$B$a(B")) (?m ("$B%=(B" . "$B$=(B")) (?, ("$B%M(B" . "$B$M(B")) (?. ("$B%[(B" . "$B$[(B")) (?/ "$B!&(B") ;; (?\ " ")) "$BC1FHBG80;~$NF~NO%k!<%k!#(B") (defvar skk-nicola-us-rshift-rule-list '((?` "$B%u(B") ;; (?1 "$B!)(B") (?2 "$B!?(B") (?3 "$B!A(B") (?4 "$B!V(B") (?5 "$B!W(B") ;; (?6 "$B!0(B") (?7 "$B!u(B") (?8 "$B!v(B") (?9 "$B!J(B") (?0 "$B!K(B") (?- "$B!2(B") (?= "$B!\(B") ;; (?q ("$B%p(B" . "$B$p(B")) (?w ("$B%,(B" . "$B$,(B")) (?e ("$B%@(B" . "$B$@(B")) (?r ("$B%4(B" . "$B$4(B")) (?t ("$B%6(B" . "$B$6(B")) ;; (?y ("$B%h(B" . "$B$h(B")) (?u ("$B%K(B" . "$B$K(B")) (?i ("$B%k(B" . "$B$k(B")) (?o ("$B%^(B" . "$B$^(B")) (?p ("$B%'(B" . "$B$'(B")) (?\[ "$B!7(B") (?\] skk-kanagaki-handakuten) (?\\ "$B!C(B") ;; (?a "$B%t(B") (?s ("$B%8(B" . "$B$8(B")) (?d ("$B%G(B" . "$B$G(B")) (?f ("$B%2(B" . "$B$2(B")) (?g ("$B%<(B" . "$B$<(B")) ;; (?h ("$B%_(B" . "$B$_(B")) (?j ("$B%*(B" . "$B$*(B")) (?k ("$B%N(B" . "$B$N(B")) (?l ("$B%g(B" . "$B$g(B")) (?\; ("$B%C(B" . "$B$C(B")) (?' "$B!D(B") ;; (?z ("$B%q(B" . "$B$q(B")) (?x ("$B%S(B" . "$B$S(B")) (?c ("$B%:(B" . "$B$:(B")) (?v ("$B%V(B" . "$B$V(B")) (?b ("$B%Y(B" . "$B$Y(B")) ;; (?n ("$B%L(B" . "$B$L(B")) (?m ("$B%f(B" . "$B$f(B")) (?, ("$B%`(B" . "$B$`(B")) (?. ("$B%o(B" . "$B$o(B")) (?/ ("$B%)(B" . "$B$)(B")) ;; (?\ " ")) "$B1&?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (defvar skk-nicola-us-lshift-rule-list '((?\` "$B!1(B") ;; (?1 "$B!*(B") (?2 "$B!w(B") (?3 "$B!t(B") (?4 "$B!p(B") (?5 "$B!s(B") ;; (?6 "$B!N(B") (?7 "$B!O(B") (?8 "$B!H(B") (?9 "$B!I(B") (?0 "$B!X(B") (?- "$B!Y(B") (?= "$B!c(B") ;; (?q ("$B%!(B" . "$B$!(B")) (?w ("$B%((B" . "$B$((B")) (?e ("$B%j(B" . "$B$j(B")) (?r ("$B%c(B" . "$B$c(B")) (?t ("$B%l(B" . "$B$l(B")) ;; (?y ("$B%Q(B" . "$B$Q(B")) (?u ("$B%B(B" . "$B$B(B")) (?i ("$B%0(B" . "$B$0(B")) (?o ("$B%E(B" . "$B$E(B")) (?p ("$B%T(B" . "$B$T(B")) (?\[ "$B!P(B") (?\] "$B!Q(B") (?\\ "$B!d(B") ;; (?a ("$B%r(B" . "$B$r(B")) (?s ("$B%"(B" . "$B$"(B")) (?d ("$B%J(B" . "$B$J(B")) (?f ("$B%e(B" . "$B$e(B")) (?g ("$B%b(B" . "$B$b(B")) ;; (?h ("$B%P(B" . "$B$P(B")) (?j ("$B%I(B" . "$B$I(B")) (?k ("$B%.(B" . "$B$.(B")) (?l ("$B%](B" . "$B$](B")) (?\; "$B!((B") (?' "$B!'(B") ;; (?z ("$B%%(B" . "$B$%(B")) (?x "$B!<(B") (?c ("$B%m(B" . "$B$m(B")) (?v ("$B%d(B" . "$B$d(B")) (?b ("$B%#(B" . "$B$#(B")) ;; (?n ("$B%W(B" . "$B$W(B")) (?m ("$B%>(B" . "$B$>(B")) (?, ("$B%Z(B" . "$B$Z(B")) (?. ("$B%\(B" . "$B$\(B")) (?/ ("$B%n(B" . "$B$n(B")) ;; (?\ " ")) "$B:8?F;X%-!<$,2!$5$l$?$H$-$NF~NO%k!<%k!#(B") (require 'skk-nicola) (when skk-nicola-use-koyubi-functions (add-hook 'skk-mode-hook #'(lambda () (define-key skk-j-mode-map "'" 'skk-kanagaki-bs)))) (provide 'skk-nicola-us) ;;; skk-nicola-us.el ends here ddskk-15.1.54/nicola/NICOLA-DDSKK-CFG0000664000076600007660000000573111442723324016037 0ustar brutusbrutus;;; NICOLA-DDSKK-CFG --- installation setting -*-emacs-lisp-*- ;;; Code: (or (fboundp 'add-to-list) (defun add-to-list (list-var element) (or (member element (symbol-value list-var)) (set list-var (cons element (symbol-value list-var)))))) (defvar emacs-major-version (progn (string-match "^[0-9]+" emacs-version) (string-to-int (substring emacs-version (match-beginning 0) (match-end 0))))) (or (fboundp 'member) (defun member (elt list) (while (and list (not (equal elt (car list)))) (setq list (cdr list))) list)) ;; (defvar default-load-path load-path) (add-to-list 'load-path (expand-file-name "../../site-lisp/skk" data-directory)) (add-to-list 'load-path (expand-file-name "../site-lisp/skk" data-directory)) (add-to-list 'load-path (expand-file-name ".")) (if (boundp 'LISPDIR) (progn (add-to-list 'default-load-path LISPDIR) (add-to-list 'load-path LISPDIR) (add-to-list 'load-path (expand-file-name "skk" LISPDIR)))) (if (boundp 'VERSION_SPECIFIC_LISPDIR) (add-to-list 'load-path VERSION_SPECIFIC_LISPDIR)) (require 'install (expand-file-name "install.el" "..")) (defvar emacs-self-contained nil) ;; Default value of install-prefix is not valid on some systems, especially ;; on non-UNIX like systems. (setq install-prefix (cond ((eq system-type 'windows-nt) ;; Meadow, NTEmacs (setq emacs-self-contained t) (expand-file-name ".." exec-directory)) ((eq system-type 'darwin) ;; Carbon Emacs or Cocoa Emacs (or system-default Emacs) (let ((dir (expand-file-name ".." data-directory))) (if (string-match "/Emacs\\.app/Contents/Resources/?$" dir) (progn (setq emacs-self-contained t) dir) (expand-file-name "../../.." dir)))) ((featurep 'xemacs) (expand-file-name "../../.." exec-directory)) (t (expand-file-name "../../../.." data-directory)))) ;;; @ Please specify prefix of install directory. ;;; ;; Please specify install path prefix. ;; If it is omitted, shared directory (maybe /usr/local is used). (defvar PREFIX install-prefix) ;;(setq PREFIX "~/") ;; Please specify prefix for ``NICOLA-DDSKK'' [optional] (setq NICOLA-DDSKK_PREFIX "nicola-ddskk") ;;; @ optional settings ;;; ;; It is generated by automatically. Please set variable `PREFIX'. ;; If you don't like default directory tree, please set it. (defvar LISPDIR (cond (emacs-self-contained (expand-file-name "site-lisp" PREFIX)) (t (install-detect-elisp-directory PREFIX)))) ;; (setq install-default-elisp-directory "~/lib/emacs/lisp") (defvar VERSION_SPECIFIC_LISPDIR (cond (emacs-self-contained (expand-file-name "site-lisp" PREFIX)) (t (install-detect-elisp-directory PREFIX nil 'version-specific)))) ;; (setq FLIM_DIR (expand-file-name FLIM_PREFIX VERSION_SPECIFIC_LISPDIR)) (setq NICOLA-DDSKK_DIR (expand-file-name NICOLA-DDSKK_PREFIX VERSION_SPECIFIC_LISPDIR)) (defvar PACKAGEDIR (install-get-default-package-directory)) ;;; NICOLA-DDSKK-CFG ends here ddskk-15.1.54/nicola/Makefile0000664000076600007660000000141207206163417015350 0ustar brutusbrutus# # Makefile for NICOLA-DDSKK. # PACKAGE = nicola-ddskk TAR = /bin/tar RM = /bin/rm -f EMACS = emacs XEMACS = xemacs FLAGS = -batch -q -no-site-file -l NICOLA-DDSKK-MK PREFIX = NONE LISPDIR = NONE PACKAGEDIR = NONE VERSION_SPECIFIC_LISPDIR = NONE GOMI = *.elc auto-autoloads.el custom-load.el nicola-ddskk-autoloads.el all: elc elc: clean $(EMACS) $(FLAGS) -f compile-nicola-ddskk $(PREFIX) $(LISPDIR) \ $(VERSION_SPECIFIC_LISPDIR) install-elc: elc $(EMACS) $(FLAGS) -f install-nicola-ddskk $(PREFIX) $(LISPDIR) \ $(VERSION_SPECIFIC_LISPDIR) install: install-elc package: clean $(XEMACS) $(FLAGS) -f compile-nicola-ddskk-package $(PACKAGEDIR) install-package: package $(XEMACS) $(FLAGS) -f install-nicola-ddskk-package $(PACKAGEDIR) clean: -$(RM) $(GOMI) ddskk-15.1.54/nicola/ChangeLog.20000664000076600007660000000765007203135675015636 0ustar brutusbrutus2000-08-28 Tetsuo Tsukamoto * (nicola-ddskk-0_2): New branch. 2000-08-26 Tetsuo Tsukamoto * skk-nicola.el: $B%$%s%8%1!<%?$NJQ99!#(B (skk-nicola-insert-kana): Prefix Argument $B$KBP1~!#(B 2000-08-24 Tetsuo Tsukamoto * skk-*.el: $B%3!<%I$N@0M}!#(B 2000-08-21 Tetsuo Tsukamoto * NICOLA-DDSKK-MK: autoloads $B$r@8@.$9$k$h$&$K$7$?!#(B * skk-kanagaki-menu.el, skk-kanagaki-menu-oe.el: $B%a%K%e!<%5%]!<%H(B $BDI2C!#(B 2000-08-20 Tetsuo Tsukamoto * skk-nicola.el (skk-nicola-set-henkan-point-chars, skk-nicola-toggle-kana-chars, skk-nicola-prefix-suffix-abbrev-chars): $B$3$l$^$G(B f+j, d+k, g+h $B$K(B $B7h$aBG$A$5$l$F$$$?5!G=$K$D$$$F!"%-!<3dEv$F$r%+%9%?%^%$%:$G$-$k$h$&(B $B$K$7$?!#$3$l$G(B ANSI Dvorak $BG[Ns$N%-!<%\!<%I$J$I$K$bG[N8$G$-$k$H;W(B $B$&!#(B * skk-kanagaki.el (skk-kanagaki-start-henkan-okuriari): $B%*%j%8%J%k(B $B$r;29M$K$7$F!"%*%j%8%J%k$HF1$87A<0$NJQ49$,$G$-$k$h$&$K$7$?!#$3$l$K(B $BH<$C$F!"(Bskk-nicola.el $B$G$O(B NICOLA-SKK $B<0$NAw$j2>L>$+(B SKK $B<0$NAw$j(B $B2>L>$+$r%f!<%6%*%W%7%g%s$GA*$Y$k$h$&$K$7$?!#(B 2000-08-19 Tetsuo Tsukamoto * (nicola-ddskk-0_1): New branch. $B$3$l$^$G$N@.2L$O==J,$H$^$G$O8@$($J$$$+$bCN$l$J$$$,!"$R$H$D$NL\I8$K(B $B$OC#$7$?$H;W$&$N$G!"?7$7$$$7$?!#(B (skk-insert): $B8=:_$N(B point $B$,(B marker $B$HF1$8$+$h$j>.$5$+$C$?>l9g$O(B marker $B$r%/%j%"$9$k$h$&$K$7$?!#(B 2000-08-18 Tetsuo Tsukamoto * skk-nicola.el: $BAw$j$"$jJQ49$N$7$?!#(B $B:8?F;X(B + $B1&?F;X(B $B$G(B latin $B%b!<%I(B $B"N(B $B$+$J%b!<%I(B $B$N%H%0%k$,$G$-$k$h$&(B $B$K$7$?!#(B * skk-kanagaki.el (skk-kanagaki-start-henkan-okuriari): $B%H%j%C%-!<(B $B$J$N$r=q$-D>$7$?!#$3$l$GL5MQ$J(B advice $B$,$R$H$D8:$C$?!#$G$b$^$@(B skk-nicola.el $B$NCf$K$$$d$J(B advice $B$,$$$/$D$+$"$k!#(B {$B8e5-(B} $B!D(B $B$*$*$`$M2r7h$9$k$b!"(BNemacs $B$NHs8_49@-$O5[<}$G$-$:!#(B {$B8e!95-(B} $B!D(B Mule 1.1 $B$b%@%a$@$C$?(B... {$B8e!9!95-(B} $B!D(B Daredevil $B$N(B `skk-okurigana-prefix' $B$r=$@5$7$?!#$3$l(B $B$G(B Nemacs $B$G$b(B `skk-kana-rom-vector' $B$,;H$($k$h$&$K$J$C$?!#(B 2000-08-17 Tetsuo Tsukamoto * skk-nicola.el: NICOLA-SKK $B$HF1$8$h$&$JJQ49$r$9$k$?$a$N%3!<%I$r=q(B $B$-;O$a$?!#$^$@%P%0$,B?$$$,!"$H$j$"$($:F0$/$h$&$@!#(B 2000-08-16 Tetsuo Tsukamoto * skk-nicola.el: $B$h$&$d$C$H(B isearch $B$N5!G=$,?M$K8+$;$i$l$k%l%Y%k$K(B $B$J$C$?!"$h$&$J5$$,$9$k!#(B 2000-08-15 Tetsuo Tsukamoto * Makefile, NICOLA-DDSKK-CFG, NICOLA-DDSKK-ELS, NICOLA-DDSKK-MK: $BC1BN$G$N%$%s%9%H!<%k$KBP1~$7$F$_$?!#(B * skk-nicola.el: f + g $B$G$NAw$j$"$jJQ49$K$H$j$"$($:BP1~!#(B 2000-08-14 Tetsuo Tsukamoto * skk-*.el: $B%3!<%I$N@0M}!#(B $B$3$3$K=q$/$3$H$G!"(BNICOLA $B$JF~NO$NN}=,$r$9$k!#(B * skk-nicola.el (skk-nicola-self-insert-{r,l}shift): Isearch $B$NET(B $B9g$r9M$(!"(Bread-only $B;~$N%(%i!<$r$d$a$k!#(B * skk-oasys.el: $B%-!$r(B NICOLA-DDSKK $B$H$7$F$_$k!#(B 2000-08-13 Tetsuo Tsukamoto * skk-*.el: $B%U%!%$%k9=@.$rJQ99!#(B1 $B%-!]G[Ns(B 1 $B%U%!%$%kJ}<0$G%b%8%e!<(B $B%k2=$rB%?J!#(B 2000-08-09 Tetsuo Tsukamoto * skk-*.el: NICOLA-SKK $B$N5!G=$rF3F~!#(B ddskk-15.1.54/nicola/ChangeLog.10000664000076600007660000000255007203135675015627 0ustar brutusbrutus;; -*-indented-text-*- NICOLA SKK ChangeLog Beta version based on SKK 8.6 version 0.39 (Dec., 1999) Makefile $B$N4V0c$$$rD{@5!#G[Ns$N4V0c$$$rD{@5!#(B($B!X!Y$J$I(B) version 0.38 (Dec., 1999) $B8E$/$J$C$F!"ITMW$K$J$C$?%U%!%$%k$r>C$7$?!#%I%-%e%a%s%H$N2~D{!#(B version 0.37 (Dec., 1999) Mule for Windows $B%f!<%6!<$N$?$a$K%I%-%e%a%s%H$r0lIt2~D{!#(B version 0.36 (Nov. 28, 1999) $B?F;X%7%U%H%-!<$N@_Dj$K$h$C$F$O$&$^$/;H$($J$$LdBj$r=$@5!#(B omelet $B$,(B nicola.el $B$r;H$o$J$$$h$&$K$7$?$3$H$r/$7JQ$($?!#(B $B$9$Y$F(B skk-nic-insert $B$K%P%$%s%I$9$l$P$$$$!#(B $B:8%7%U%H$rG$0U$N%-!<$K3d$j$"$F$k$3$H$,$G$-$k$h$&$K$7$?!#(B $B$+$J%b!<%I$N$_!"(B :" $B$J$I$K%P%C%/%9%Z!<%9$r3d$jEv$F$k$3$H$,$G$-$k$h$&(B $B$K$7$?!#(B Alpha version (0.1-0.2) based on SKK 8.6 - 9.2 $B4pK\E*$J%3!<%I$N:n@.(B ($BJQ49!"3NDj!"%+%?%+%JJQ49!"%b!<%I@Z$j49$(!"FI$_$NJd40!"%3!<%IF~NO(B) $BF1;~BG80$N%"%k%4%j%:%`$N8&5f(B $B:GE,$J%-!<%P%$%s%I$N8&5f(B SKK-ML $B$G$N;n838x3+(B Aug 31, 1996 Version 0.25 Mar 13, 1996 Version 0.24 Feb 27, 1996 Version 0.23 Feb 1996 Version 0.1 ddskk-15.1.54/nicola/skk-kanagaki.el0000664000076600007660000004321011471027201016555 0ustar brutusbrutus;;; skk-kanagaki.el --- SKK $B$N2>L>F~NO%5%]!<%H(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000 Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: hardware, japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; {$B$F$C$H$jAa$$;H$$$+$?(B ($B;CDj%P!<%8%g%s(B)} ;; ;; ~/.skk $B$K(B ;; ;; (setq skk-use-kana-keyboard t) ;; (setq skk-kanagaki-keyboard-type '106-jis) ;; ;; $B$H=q$/!#(B ;; ;; ;; {$B@bL@(B} ;; ;; $B$3$N%W%m%0%i%`$O(B SKK $B$K$*$$$F%m!<%^;zF~NO$J$i$L2>L>F~NO$r%5%]!<%H$9$k$3$H(B ;; $B$rL\E*$H$7$^$9!#(B NICOLA $B$d5l(B JIS $BG[Ns$KBP1~$7$^$9!#(B ;; ;; $B$J$*!"0J2<$O!V?F;X%7%U%HF~NO!W0J30$NNc$G$9!#?F;X%7%U%HF~NO$NNc$K$D$$$F$O!"(B ;; README.NICOLA.ja $B$H(B skk-nicola.el $B$r8fMw$/$@$5$$!#(B ;; ;; -*- $BLdBjE@(B -*- ;; ;; 1. Emacs Lisp $B$N%l%Y%k$G$NLdBj(B ;; ;; $B2>L>F~NO$K$*$$$F$O(B SHIFT $B%-!<$rMxMQ$7$FF~NO$5$l$k2>L>$b$"$k$?$a!"(B SKK $BK\Mh(B ;; $B$N(BSHIFT $B$N;H$$J}$,$G$-$^$;$s!#$=$NB>$$$m$$$m(B SKK $B$i$7$/$J$$$N$G$9$,!"(B $B$H$j(B ;; $B$"$($:!"(B ;; ;; o $BJQ493+;OE@$N;XDj$O2>L>F~NO$H$OJL$K9T$&!#(B ;; o $BJQ49$N3+;O$ODL>oDL$j!"(B [SPC] $B$G;X<($9$k!#(B $B$?$@$7!"Aw$j$"$j$NJQ49$N$H$-(B ;; $B$O(B $BAw$j3+;OE@$r;XDj$9$k$?$a$NFCl9g$,$"(B ;; $B$j$^$9!#Nc$($PF|K\8l(B 106 $B%-!<%\!<%I;HMQ;~!"(BXFree86 $B>e$G$O(B ;; ;; o $B!V!o!W%-!<(B ($B2>A[%-!<%3!<%I(B 133) ;; o $B!V!@!W%-!<(B ($B2>A[%-!<%3!<%I(B 123) ;; ;; $B$O$$$:$l$b(B backslash $B$H$7$F07$o$l$^$9!#$7$+$72>L>F~NO$K$*$$$FA0$^$l$^$9!#$3$N>l9g$NBP1~:v$H$7$F!"Nc$($P(B ;; ;; % cat >> ~/.Xmodmap ;; ;; keycode 123 = underscore underscore ;; % xmodmap ~/.Xmodmap ;; ;; $B$J$I$H$7$F$*$$$F$+$i!"(B~/.skk $B$K(B ;; ;; (setq skk-kanagaki-rule-list ;; '(("\\" nil "$B!<(B"))) ;; ;; $B$H=q$/$3$H$J$I$,9M$($i$l$^$9!#(B ;; ($BF1MM$N%"%$%G%"$O(B Canna $B$G2>L>F~NO$9$k:]$K$bM-8z$G$"$k$h$&$G$9!#(B) ;; ;; $B$b$7$"$J$?$,(B XEmacs $B$N%Y!<%?%F%9%?!<$J$i$P(B ;; ;; keycode 123 = kana_RO underscore ;; keycode 19 = 0 kana_WO ;; ;; $B$J$s$F@_Dj$G$H$F$b9,$;$K$J$l$k$+$b$7$l$^$;$s!#(B (Mr. XEmacs $B$N$7$o$6$+$J(B?) ;; ;; $B$5$i$K!"$b$7$"$J$?$,(B PC-98 $B%f!<%6(B $B$G(B XEmacs $B$N%Y!<%?%F%9%?!<$J$i$P!"$*$b$`(B ;; $B$m$K!V$+$J!W%-!<$r%m%C%/$7$F$_$F$/$@$5$$!#(B ;') ;; ;; -*- $B;H$$J}(B -*- ;; ;; 1. $BJQ493+;OE@$N;XDj(B ;; ;; $BDL>o$N(B SKK $B$K$*$$$F$O!"(B SHIFT $B$r2!$7$J$,$iF~NO$9$k$3$H$GJQ493+;O0LCV$rL@<((B ;; $B$7$F$$$^$7$?$,!"2>L>F~NO$G$O$3$l$,$G$-$^$;$s!#$=$3$G!"JL$NJ}K!$GJQ493+;OE@(B ;; $B$r;XDj$7$J$1$l$P$J$j$^$;$s!#$=$3$G!"!V(Bf $B$H(B j $B$rF1;~$K2!$9!W$H$$$&o$N(B SKK $B$K$*$$$F$O!"(B SHIFT $B$r2!$7$J$,$iF~NO$9$k$3$H$GAw$j2>L>$N0LCV$rL@(B ;; $B<($7$F$$$^$7$?!#2>L>F~NO(B SKK $B$K$*$$$F$O$=$l$O$G$-$^$;$s!#$=$3$G(B ;; ;; o [fj] $B$,2!$5$l$?$H$-$K!"(B $BD>A0$N(B 1 $BJ8;z$rAw$j2>L>$H8+Jo$7$FJQ49$r3+;O$9$k!#(B ;; ;; $B$H$$$&l9g$O(B ;; ;; $B"&$?$C$9(B [fj] $B"M(B $B"'C#$9(B ;; ;; $B$N$h$&$K$J$j$^$9!#!VBT$C$F!W$HF~NO$7$?$$>l9g$O(B ;; ;; $B"&$^$C(B [fj] $B"M(B $B"'BT$C(B ;; ;; $B$H$7$F$+$i!V$F!W$rF~NO$7$^$9!#(B ;; ;; 3. $B$$$/$D$+$N=EMW$J%-!L>F~NO$G$O$3$l$b;H$($^$;$s!#$=$N$?$a!"$3$l$i$N$&$A=EMW$H;W$o$l$k$b(B ;; $B$N$rJL$N%-!3Q%+%J%b!<%I$^$?$OH>3Q%+%JJQ49(B ;; [f10] $B!D(B latin $B%b!<%I(B ;; [f12] $B!D(B $B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO(B $B$N@Z$jBX$((B ;;; Code: (eval-when-compile (require 'cl) (require 'skk-dcomp) (require 'skk-kanagaki-util) (require 'skk-macs) (require 'skk-vars)) (require 'nicola-ddskk-autoloads) (when window-system (require 'skk-kanagaki-menu)) ;; Variables. (defcustom skk-kanagaki-keyboard-type '106-jis "\ *$B2>L>F~NO$K;HMQ$9$k%-!<%\!<%I$N(B}-base-rule-list' $B$H$$$&(B $BJQ?t$rMQ0U$7$J$1$l$P$J$i$J$$!#2?$b@_Dj$7$J$1$l$PF|K\8l(B 106 $B%-!<%\!<%IMQ$N@_Dj(B $B$rMQ0U$7!"$3$l$r;HMQ$9$k!#(B" :type '(radio (const 106-jis) (const nicola-jis) (const nicola-us) (const nicola-dvorak) (const omelet-jis) (const omelet-us) (const omelet-dvorak) (const oasys) (symbol :tag "Another Keyboard Type")) :group 'skk-kanagaki) (defcustom skk-kanagaki-set-henkan-point-key [f2] "\ *$B$3$N%-!<$r2!$9$3$H$GJQ493+;O0LCV$r@_Dj$9$k!#(B $BJQ493+;O0LCV$N@_Dj$O2>L>$rF~NO$9$kA0$K$*$3$J$C$F$b!"(B $BF~NO$7=*$o$C$?8e$G$*$3$J$C(B $B$F$b9=$o$J$$!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-abbrev-mode-key [f6] "\ *$B$3$N%-!<$r2!$9$3$H$G(B abbrev $B%b!<%I$KF~$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-katakana-mode-key [f7] "\ *$B$3$N%-!<$r2!$9$3$H$G%+%J%b!<%I$H$+$J%b!<%I$r@Z$j$+$($k!#(B $BJQ493+;O0LCV$N@_Dj8e$K2!$9$3$H$GBP>]J8;zNs$r%+%J$KJQ49$9$k$3$H$b$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-latin-jisx0208-mode-key [f8] "\ *$B$3$N%-!<$r2!$9$3$H$GA43Q1Q?t%b!<%I$KF~$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-hankaku-mode-key [f9] "\ *$B$3$N%-!<$r2!$9$3$H$GH>3Q%+%J%b!<%I$K@Z$j$+$($k!#(B $BJQ493+;O0LCV$N@_Dj8e$K2!$9$3$H$GBP>]J8;zNs$rH>3Q%+%J$KJQ49$9$k$3$H$b$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-latin-mode-key [f10] "\ *$B$3$N%-!<$r2!$9$3$H$G(B latin $B%b!<%I$KF~$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-toggle-rom-kana-key [f12] "\ *$B$3$N%-!<$r2!$9$3$H$G(B $B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO$N@Z$jBX$($,$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-code-input-key [f5] "\ *$B$3$N%-!<$r2!$9$3$H$G%3!<%IF~NO$,$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-midashi-henkan-key [f3] "\ *$B$3$N%-!<$r2!$9$3$H$G@\F,<-$^$?$O@\Hx<-JQ49$r$9$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-help-key "1" "\ *\\[help] $B$K$*$$$F%X%k%W$rI=<($9$k%-!e$G;HMQ$9$k>l9g!"(B $BNc$($P$3$NCM$r(B [henkan] (XEmacs $B$G$O(B [henkan-mode]) $B$K$9$l$P!"F|K\8l%-!<%\!<%I$N(B [$BA08uJd(B] $B%-!<$K3d$jEv$F$k$3$H$,$G$-$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-kanagaki) (defcustom skk-kanagaki-start-henkan-key " " "\ *$BJQ49$r3+;O$9$k$?$a$N%-!l9g$J$I$O!"$3$NJQ?t$rMQ$$$F$=$l$KBP1~$7(B $B$?@_Dj$r$9$k$3$H$,$G$-$k!#(B" :type '(repeat (list :tag "$B%k!<%k%j%9%H(B" (radio :tag "1 ($B%-!(B")) (radio :tag "2 ($BB%2;$N>l9g!VJ8;zNs!W$rA*$S$^$9(B)" (string :tag "$BJ8;zNs(B") (const nil)) (radio :tag "3 ($B$$$:$l$+$rA*$V(B)" (symbol :tag "$B4X?t(B") (string :tag "$BJ8;zNs(B ($B%+%J(B/$B$+$J6&DL(B)") (cons :tag "$BJ8;zNs$NAH(B ($B%+%J(B . $B$+$J(B)" (string :tag "3-1 ($B%+%J(B)") (string :tag "3-2 ($B$+$J(B)"))))) :group 'skk-kanagaki) ;; Internal constants and variables. (defvar skk-kanagaki-base-rule-list nil) (defvar skk-kanagaki-rule-tree nil) (defvar skk-kanagaki-rom-kana-rule-tree nil) (defvar skk-kanagaki-state 'kana) ;; Hooks. ;; Functions. (unless (fboundp 'help-mode) (defalias 'help-mode 'fundamental-mode)) ;;;###autoload (defun skk-kanagaki-midashi-henkan (&optional arg) "$B@\F,<-$^$?$O@\Hx<-JQ49$r$9$k!#(B" (interactive "*p") (cond ((eq skk-henkan-mode 'active) (skk-kakutei) (let (skk-kakutei-history) (skk-set-henkan-point-subr)) (insert-and-inherit ?>)) ((eq skk-henkan-mode 'on) ;; $B@\F,8l$N=hM}(B (skk-kana-cleanup 'force) (insert-and-inherit ?>) (skk-set-marker skk-henkan-end-point (point)) (setq skk-henkan-count 0 skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point (point)) skk-prefix "") (skk-henkan)))) ;;;###autoload (defun skk-kanagaki-help () (interactive) (skk-kanagaki-help-1 "* SKK $B2>L>F~NO(B $B%X%k%W(B*" "$B8=:_$N2>L>F~NO%b!<%I$N3Q%+%J%b!<%I(B or $BH>3Q%+%JJQ49(B") (skk-kanagaki-latin-mode-key . "latin $B%b!<%I(B") (skk-kanagaki-toggle-rom-kana-key . "$B%m!<%^;zF~NO(B $B"N(B $B2>L>F~NO(B") (skk-kanagaki-previous-candidate-key . "$BA08uJdI=<((B") (skk-kanagaki-start-henkan-key . "$BJQ49!&l9g(B (not (and parg (listp parg)))) (skk-bind-last-command-char ?\ (skk-insert arg parg))) (t ;; C-u [SPC] $B$GAw$j$"$jJQ49$r$9$k!#(B (when (featurep 'skk-dcomp) (skk-dcomp-cleanup-buffer)) (skk-kanagaki-set-okurigana-no-sokuon t)))) ;;;###autoload (defalias 'skk-kanagaki-set-okurigana 'skk-set-char-before-as-okurigana) ;;;###autoload (defun skk-kanagaki-set-okurigana-no-sokuon (&optional arg) "$B%]%$%s%H$ND>A0$NJ8;z$rAw$j2>L>$H8+Jo$7$F!"JQ49$r3+;O$9$k!#(B" (interactive "*p") (skk-kanagaki-set-okurigana (not (eq 4 (prefix-numeric-value arg))))) ;;;###autoload (defun skk-kanagaki-initialize () "SKK $B5/F0;~$NE,Ev$J%?%$%_%s%0$G2>L>F~NOMQ$N@_Dj$r9T$&!#(B" ;; $B" $B$K$h$k@\(B ;; $BHx<-$NF~NO$O$G$-$J$/$J$k!#(B "?" $B$K$h$k@\Hx<-$NF~NO$O$G$-$k!#(B (dolist (char skk-special-midashi-char-list) (when (and skk-use-kana-keyboard (memq (nth 2 (assoc (skk-char-to-unibyte-string char) (symbol-value (intern (format "skk-kanagaki-%s-base-rule-list" skk-kanagaki-keyboard-type))))) '(skk-current-kuten skk-current-touten))) (setq skk-special-midashi-char-list (delq char skk-special-midashi-char-list))))) ;; Pieces of advice. (defadvice skk-setup-keymap (after skk-kanagaki-keys activate preactivate) ;; $B%-!<%P%$%s%I!#$?$@$7$3$l$O!"$h$jE,@Z$J%-!L>F~NOMQ$N(B work around $B!#(B" ;; (when (and skk-process-okuri-early (eq skk-kanagaki-state 'kana)) ;; `skk-process-okuri-early' $B$,I{:nMQ$r;}$D$+$bCN$l$J$$!#2>L>F~NO$G$O$=$b(B ;; $B$=$b0UL#$N$J$$%*%W%7%g%s$J$N$G6/@)E*$K(B off $B$K$9$k!#(B (setq skk-process-okuri-early nil)) ;; (let ((skk-set-henkan-point-key (cond ((and (eq skk-kanagaki-state 'kana) (not skk-jisx0201-mode)) nil) (t skk-set-henkan-point-key)))) ad-do-it)) (defadvice skk-compute-henkan-lists-sub-adjust-okuri (around skk-kanagaki-adjust-okuri activate compile) (cond (skk-use-kana-keyboard ;; $B2>L>F~NOMQ$NFCl9g!#(B (string-match (concat "^" (regexp-quote okuri-key)) item)) (and (eq skk-kanagaki-state 'rom) ;; okuri-key $B$,(B "$B$C$F(B" $B$G(B item $B$,(B "$B$C(B" $B$J$I$@$C$?>l9g!#(B (string-match (concat "^" (regexp-quote item)) okuri-key))) okuri-key) (t item))))) (t ad-do-it))) (provide 'skk-kanagaki) ;;; skk-kanagaki.el ends here ddskk-15.1.54/skk-study.el0000664000076600007660000004236512122225401014720 0ustar brutusbrutus;;; skk-study.el --- SKK $B3X=,8z2LDs6!%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000, 2002, 2003 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-study.el,v 1.67 2013/03/20 03:20:33 skk-cvs Exp $ ;; Keywords: japanese ;; Created: Apr. 11, 1999 ;; Last Modified: $Date: 2013/03/20 03:20:33 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$"$k8l(B A' $B$r3NDj$7$?>l9g$K!"(BA' $B5Z$S$=$N8+=P$78l(B A $B$KBP$7$F!"D>A0$K(B ;; $BJQ49$7$?8l(B B' $B$H$=$N8+=P$78l(B B $B$r4XO"8l$H$7$FEPO?$7$F$*$-!":FEY(B A ;; $B$NJQ49$r9T$C$?$H$-$K!"(BB $B5Z$S(B B' $B$N%Z%"$,D>A0$N2?2s$+$K3NDj$7$?8l$N(B ;; $BCf$K8+$D$+$l$P!"(BA' $B$rM%@h$7$F=PNO$9$kC1=c$J3X=,8z2L$rDs6!$9$k%W%m%0(B ;; $B%i%`$G$9!#(B ;; ;; $B@N(B SKK ML $B$GOCBj$K$J$C$?C18l$NB0@-$NJ]B8$N$?$a$K!"(Bskk-attr.el $B$r:n(B ;; $B$j$^$7$?$,!"5!G=$rM_D%$j$9$.$F$b$N$K$J$j$^$;$s$G$7$?!#D>A0$NJQ49$H(B ;; $B$N4XO"@-$rJ]B8$9$k$?$a$@$1$K5!G=$r9J$C$F:F9=@.$7$?$N$,$3$N%W%m%0%i(B ;; $B%`$G$9!#(B ;; ;; ;; ~/.skk $B$K(B ;; ;; (require 'skk-study) ;; ;; $B$H=q$$$F2<$5$$!#(B ;; ;; ;; ((okuri-ari . ((A . (((B . B') . (A' ...)) ;; ...)))) ;; (okuri-nasi . ((A . (((B . B') . (A' ...)) ;; ...))))) ;; ;; o examples ;; ;; ((okuri-ari . ;; (("$B$-(Br" . ((("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) ;; (("$B$-(B" . "$BLZ(B") . ("$B@Z(B")) ;; (("$B$($s(B" . "$B1o(B") . ("$B@Z(B")))) ;; ("$B$J(Bk" . ((("$B$3$I$b(B" . "$B;R6!(B") . ("$B5c(B")) ;; (("$B$3$H$j(B" . "$B>.D;(B") . ("$BLD(B")))) ;; ("$B$+(Bk" . ((("$B$+$_(B" . "$B;f(B") . ("$B=q(B")) (("$B$R$s$+$/(B" . "$BIJ3J(B") . ("$B7g(B"))))) ;; ...) ;; (okuri-nasi . ;; (("$B$+$_(B" . ((("$B$-(Br" . "$B@Z(B") . ("$B;f(B")))) ;; ...))) ;; ;; ;;; Code: (eval-when-compile (require 'cl) (defvar jka-compr-compression-info-list) (defvar print-quoted)) (require 'skk-macs) (require 'skk-vars) (require 'ring) (defconst skk-study-file-format-version "0.3") (skk-deflocalvar skk-study-current-buffer-theme nil) ;;;; inline functions. (defsubst skk-study-get-last-henkan-data (index) (and (> (ring-length skk-study-data-ring) index) (ring-ref skk-study-data-ring index))) (defsubst skk-study-get-current-alist (&optional theme) (let ((base-alist (cdr (if theme (assoc theme skk-study-alist) (or (assoc skk-study-current-buffer-theme skk-study-alist) (assoc "general" skk-study-alist)))))) (assq (cond ((or skk-okuri-char skk-henkan-okurigana) 'okuri-ari) (t 'okuri-nasi)) base-alist))) (add-to-list 'skk-search-end-function 'skk-study-search) (add-to-list 'skk-update-end-function 'skk-study-update) ;;;###autoload (defun skk-study-search (henkan-buffer midasi okurigana entry) "$B3X=,%G!<%?$r;2>H$7$F(B ENTRY $B$r2C9)$7!"4XO"@-$N$"$k8l$NM%@h=g0L$r>e$2$FJV$9!#(B" (or skk-study-data-ring (setq skk-study-data-ring (make-ring skk-study-search-times))) (when (and entry (cdr entry)) (or skk-study-alist (skk-study-read)) (with-current-buffer henkan-buffer ;; (("$B$-(Br" . ((("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) (("$B$-(B" . "$BLZ(B") . ("$B@Z(B")))) ;; ("$B$J(Bk" . ((("$B$3$I$b(B" . "$B;R6!(B") . ("$B5c(B"))))) (let ((alist (cdr (assoc midasi (cdr (skk-study-get-current-alist)))))) (when alist (setq entry (skk-study-search-1 alist midasi okurigana entry)))))) entry) (defun skk-study-search-1 (target-alist midasi okurigana entry) (do ((index 0 (1+ index)) (times skk-study-search-times (1- times)) last-data associates e exit) ((or exit (zerop times)) entry) (and (setq last-data (skk-study-get-last-henkan-data index)) ;; ((("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) (("$B$-(B" . "$BLZ(B") . ("$B@Z(B"))) ;; ("$BCe(B") (setq associates (cdr (assoc last-data target-alist))) (setq associates (reverse associates)) (setq exit t) (while (setq e (car associates)) ;;uniq (setq entry (cons e (delete e entry)) associates (cdr associates)))))) ;;;###autoload (defun skk-study-update (henkan-buffer midasi okurigana word purge) "MIDASI $B$H(B WORD $B$K$D$$$F(B `skk-study-data-ring' $B$N:G=i$N4XO"8l$r4XO"IU$1$F3X=,$9$k!#(B" (or skk-study-data-ring (setq skk-study-data-ring (make-ring skk-study-search-times))) (let ((inhibit-quit t) last-data diff grandpa papa baby) (with-current-buffer henkan-buffer (when (and ;; $BBh0l8uJd$G3NDj$7$?$+$I$&$+(B (or skk-study-first-candidate (not (string= word (car skk-henkan-list)))) ;; $BJQ49%P%C%U%!$,JQ$o$C$F$$$J$$$+$I$&$+(B (eq (skk-get-last-henkan-datum 'henkan-buffer) henkan-buffer) (or (not skk-study-max-distance) (and (setq diff (- (point) (skk-get-last-henkan-datum 'henkan-point))) ;; $BD>A0$NJQ49$h$j%]%$%s%H$,A0$X0\F0$7$F$$$J$$$+$I$&$+(B (> diff 0) ;; skk-study-max-distance $B$rD6$($FD>A0$NJQ49$H%]%$%s(B ;; $B%H$,N%$l$F$$$J$$$+$I$&$+!#(B (> skk-study-max-distance diff))) midasi word (setq last-data (if (not (ring-empty-p skk-study-data-ring)) (ring-ref skk-study-data-ring 0))) (not (or (string= midasi "") (string= word "") (and (string= midasi (car last-data)) (string= word (cdr last-data)))))) (or skk-study-alist (skk-study-read)) (setq grandpa (skk-study-get-current-alist) ;; ((("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) (("$B$-(B" . "$BLZ(B") . ("$B@Z(B"))) papa (assoc midasi (cdr grandpa))) (cond ( ;; car $B$K8+=P$78l$r;}$D(B cell $B$,$J$$(B (not (or papa purge)) (setcdr grandpa (nconc (list (cons midasi (list (cons last-data (list word))))) (cdr grandpa)))) ;; $B8+=P$78l$+$i;O$^$k(B cell $B$O$"$k$,!"(Bcdr $B$K(B (last-key . last-word) $B$r(B ;; $B%-!<$K$7$?(B cell $B$,$J$$!#(B ((not (or ;; (("$B$U$/(B" . "$BI~(B") . ("$BCe(B")) (setq baby (assoc last-data (cdr papa))) purge)) (setcdr papa (cons (cons last-data (list word)) (cdr papa)))) ;; $B8+=P$78l$r%-!<$H$7$?4{B8$N(B cell $B9=B$$,$G$-$"$,$C$F$$$k$N$G!"4XO"8l$@$1(B ;; $B%"%C%W%G!<%H$9$k!#(B ((not purge) ;; ring $B%G!<%?$NJ}$,$b$C$H8zN(E*$+!)(B $B$G$b$3$3$NItJ,$N%G!<%?$N%"%C%W%G!<%H(B ;; $B$,8zN(NI$/$G$-$J$$!#(B (setcdr baby (cons word (delete word (cdr baby)))) (if (> (1- (length (cdr baby))) skk-study-associates-number) (skk-study-chomp (cdr baby) (1- skk-study-associates-number)))) (t (setcdr grandpa (delq baby (cdr grandpa))))))))) ;;;###autoload (defun skk-study-save (&optional nomsg) "$B3X=,7k2L$r(B `skk-study-file' $B$XJ]B8$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B NOMSG $B$,(B non-nil $B$G$"$l$P!"J]B8%a%C%;!<%8$rI=<($7$J$$!#(B" (interactive "P") (if (or (and (null skk-study-alist) (not nomsg)) (not skk-study-last-read) (and skk-study-last-save (skk-study-time-lessp skk-study-last-save skk-study-last-read))) (progn (skk-message "SKK $B$N3X=,7k2L$r%;!<%V$9$kI,MW$O$"$j$^$;$s(B" "No SKK study need saving") (sit-for 1)) (skk-study-save-1 nomsg))) (defun skk-study-save-1 (nomsg) (let ((inhibit-quit t) e) (when (not nomsg) (skk-message "SKK $B$N3X=,7k2L$r(B %s $B$K%;!<%V$7$F$$$^$9(B..." "Saving SKK study to %s..." skk-study-file)) (and skk-study-backup-file (file-exists-p (expand-file-name skk-study-file)) (cond ((eq system-type 'ms-dos) (with-temp-file skk-study-backup-file (erase-buffer) (insert-file-contents skk-study-file))) (t (copy-file (expand-file-name skk-study-file) (expand-file-name skk-study-backup-file) 'ok-if-already-exists 'keep-date)))) (with-temp-buffer (insert (format ";;; skk-study-file format version %s\n" skk-study-file-format-version)) (when skk-study-sort-saving ;; sort is not necessary, but make an alist rather readable. (setq e (assq 'okuri-ari skk-study-alist)) (setcdr e (sort (cdr e) (lambda (a b) (skk-string< (car a) (car b))))) (setq e (assq 'okuri-nasi skk-study-alist)) (setcdr e (sort (cdr e) (lambda (a b) (skk-string< (car a) (car b)))))) (skk-study-prin1 skk-study-alist (current-buffer)) (let ((coding-system-for-write (skk-find-coding-system skk-jisyo-code)) jka-compr-compression-info-list) (write-region (point-min) (point-max) skk-study-file))) (setq skk-study-last-save (current-time)) (when (not nomsg) (skk-message "SKK $B$N3X=,7k2L$r(B %s $B$K%;!<%V$7$F$$$^$9(B...$B40N;!*(B" "Saving SKK study to %s...done" skk-study-file) (sit-for 1) (message "")))) ;;;###autoload (defun skk-study-switch-current-theme (theme) "$B%+%l%s%H%P%C%U%!$KBP$7$F(B skk-study $B$N3X=,%F!<%^(B THEME $B$r@_Dj$9$k!#(B $B3X=,%F!<%^L>(B THEME $B$K$OG$0U$NJ8;zNs$r;XDj$G$-$k!#(B $B%+%l%s%H%P%C%U%!$K3X=,%F!<%^$,@_Dj$5$l$J$$$H$-$O!"3X=,%F!<%^(B \"general\" $B$KBP$7$F3X=,$,9T$o$l$k!#(B" (interactive (list (completing-read "Theme of current buffer: (default: general) " (when (or skk-study-alist (skk-study-read)) (let ((n 0)) (mapcar (lambda (e) (setq n (1+ n)) (cons e n)) (mapcar 'car skk-study-alist))))))) (setq skk-study-current-buffer-theme theme) (let ((alist (assoc theme skk-study-alist))) (unless alist (setq skk-study-alist (cons (cons theme '((okuri-ari) (okuri-nasi))) skk-study-alist))))) ;;;###autoload (defun skk-study-remove-theme (theme) "skk-study $B$N3X=,%F!<%^(B THEME $B$r:o=|$9$k!#(B" (interactive (list (completing-read "Remove skk-study theme: " (when (or skk-study-alist (skk-study-read)) (let ((n 0)) (mapcar (lambda (e) (setq n (1+ n)) (cons e n)) (mapcar 'car skk-study-alist)))) nil 'require-match))) (if (string= theme "general") (skk-message "$B3X=,%F!<%^(B `general' $B$O:o=|$G$-$^$;$s(B" "Cannot remove skk-study theme `general'") (setq skk-study-alist (delq (assoc theme skk-study-alist) skk-study-alist)) (when (and skk-study-current-buffer-theme (string= skk-study-current-buffer-theme theme)) (setq skk-study-current-buffer-theme nil)))) ;;;###autoload (defun skk-study-copy-theme (from to) "skk-study $B$N3X=,%F!<%^(B FROM $B$r(B TO $B$K%3%T!<$9$k!#(B TO $B$N4{B8%G!<%?$OGK2u$5$l$k!#(B" (interactive (list (completing-read "Copy skk-study theme from: " (when (or skk-study-alist (skk-study-read)) (let ((n 0)) (mapcar (lambda (e) (setq n (1+ n)) (cons e n)) (mapcar 'car skk-study-alist)))) nil 'require-match) (completing-read "Copy skk-study theme to: " (let ((n 0)) (mapcar (lambda (e) (setq n (1+ n)) (cons e n)) (mapcar 'car skk-study-alist)))))) (when (string= from to) (skk-error "$B%3%T!<85$H%3%T!<@h$N%F!<%^$,F10l$G$9(B" "FROM and TO is the same theme")) (let ((fromalist (copy-tree (cdr (assoc from skk-study-alist)))) (toalist (assoc to skk-study-alist))) (unless fromalist (skk-error "$B%3%T!<85$N3X=,%G!<%?$,$"$j$^$;$s(B" "FROM study data is null")) (if toalist (setcdr toalist fromalist) (setq skk-study-alist (cons (cons to fromalist) skk-study-alist))))) ;;;###autoload (defun skk-study-read (&optional nomsg force) "`skk-study-file' $B$+$i3X=,7k2L$rFI$_9~$`!#(B $B%*%W%7%g%J%k0z?t$N(B FORCE $B$,(B non-nil $B$G$"$l$P!"GK4~$N3NG'$r$7$J$$!#(B" (interactive "P") (skk-create-file skk-study-file (if (not nomsg) (if skk-japanese-message-and-error "SKK $B$N3X=,7k2L%U%!%$%k$r:n$j$^$7$?(B" "I have created an SKK study file for you"))) (when (or (null skk-study-alist) force (skk-yes-or-no-p (format "%s $B$r:FFI$_9~$_$7$^$9$+!)(B " skk-study-file) (format "Reread %s? " skk-study-file))) (unless nomsg (skk-message "%s $B$N(B SKK $B3X=,7k2L$rE83+$7$F$$$^$9(B..." "Expanding SKK study of %s ..." (file-name-nondirectory skk-study-file))) (when skk-study-check-alist-format (skk-study-check-alist-format skk-study-file)) (setq skk-study-alist (skk-study-read-1 skk-study-file)) (setq skk-study-last-read (current-time)) (when (and skk-study-alist (not nomsg)) (skk-message "%s $B$N(B SKK $B3X=,7k2L$rE83+$7$F$$$^$9(B...$B40N;!*(B" "Expanding SKK study of %s ...done" (file-name-nondirectory skk-study-file)) (sit-for 1) (message "")))) (defun skk-study-read-1 (file) ;; read FILE and return alist. (with-temp-buffer (let ((version-string (format ";;; skk-study-file format version %s\n" skk-study-file-format-version)) version) (let ((coding-system-for-read (skk-find-coding-system skk-jisyo-code)) format-alist) (insert-file-contents file)) (when (zerop (buffer-size)) ;; bare alist (insert version-string "((\"general\" . ((okuri-ari) (okuri-nasi))))")) (goto-char (point-min)) (when (looking-at "^;;; skk-study-file format version \\([.0-9]+\\)\n") (setq version (match-string 1))) (cond ((not version) (skk-error "skk-study-file $B$,2u$l$F$$$^$9(B" "Broken skk-study-file")) ((string= version skk-study-file-format-version) (read (current-buffer))) (t ;; convert the format to new one (list (cons "general" (read (current-buffer))))))))) (defun skk-study-check-alist-format (file) "skk-study $B$N3X=,%G!<%?%U%!%$%k(B FILE $B$N%U%)!<%^%C%H$r%A%'%C%/$9$k!#(B" (interactive (list (read-file-name (format "File to check: (default: %s) " skk-study-file) default-directory skk-study-file))) (skk-message "%s $B$N%U%)!<%^%C%H$r%A%'%C%/$7$F$$$^$9(B..." "Checking format of %s..." file) (or (skk-study-check-alist-format-1 (skk-study-read-1 file)) (skk-error "%s $B$N%U%)!<%^%C%H$O2u$l$F$$$^$9(B" "%s format is broken" file)) (skk-message "%s $B$N%U%)!<%^%C%H$r%A%'%C%/$7$F$$$^$9(B...$B40N;(B!" "Checking format of %s...done" file) (sit-for 1) (message "")) (defun skk-study-check-alist-format-1 (alist) (let (a) (dolist (elm alist) (when (and (= (length elm) 3) (stringp (car elm)) (setq a (cdr elm)) (assq 'okuri-ari a) (assq 'okuri-nasi a)) (catch 'exit (let ((index '(okuri-ari okuri-nasi)) (func (lambda (str) (let ((len (length str))) (and (> len 1) (skk-ascii-char-p (aref str (1- len))))))) a2 e f) (while index (and (eq (car index) 'okuri-nasi) (setq func (lambda (str) (let ((len (length str))) (cond ((= len 1)) ((not (skk-ascii-char-p (aref str (1- len))))) ((skk-ascii-char-p (aref str (- len 2))))))))) (setq a2 (cdr (assq (car index) a))) (while a2 (setq e (car a2)) (or (funcall func (car e)) ;; $B8+=P$78l$N%A%'%C%/(B (throw 'exit nil)) (setq f (cdr e)) (while f (if (not (and ;; $BD>A0$NJQ49$N>pJs(B (consp (caar f)) ;; $B4XO"8l%j%9%H(B (listp (cdar f)))) (throw 'exit nil)) (setq f (cdr f))) (setq a2 (cdr a2))) (setq index (cdr index))) t)))))) (defun skk-study-prin1 (form &optional stream) (let ((print-readably t) print-level print-length print-quoted) (prin1 form stream))) (defun skk-study-chomp (nth list) ;; LIST := '(A B C D), NTH := 1 ;; -> '(A B) (and (> nth -1) (setcdr (nthcdr nth list) nil)) list) (defadvice skk-kakutei-initialize (before skk-study-ad activate) (let ((kakutei-word (ad-get-arg 0))) (when kakutei-word (ring-insert skk-study-data-ring (cons skk-henkan-key kakutei-word))))) (defadvice skk-undo-kakutei (after skk-study-ad activate) (let ((last (ring-ref skk-study-data-ring 0)) (last2 (ring-ref skk-study-data-ring 1)) target) (when (and last last2) (setq target (assoc (car last) ;; skk-undo-kakutei is called in henkan buffer (skk-study-get-current-alist)) target (delq (assoc last2 (cdr target)) target))))) ;; time utilities... ;; from ls-lisp.el. Welcome! (defun skk-study-time-lessp (time0 time1) (let ((hi0 (car time0)) (hi1 (car time1)) (lo0 (nth 1 time0)) (lo1 (nth 1 time1))) (or (< hi0 hi1) (and (= hi0 hi1) (< lo0 lo1))))) (add-hook 'kill-emacs-hook 'skk-study-save) (provide 'skk-study) ;;; skk-study.el ends here ddskk-15.1.54/ccc.el0000664000076600007660000002507712040741463013525 0ustar brutusbrutus;;; ccc.el --- cursor color control ;; Copyright (C) 2000 Masatake YAMATO ;; Copyright (C) 2001, 2002, 2004, 2005, ;; 2007, 2008 SKK Development Team ;; Author: Masatake YAMATO ;; Maintainer: SKK Development Team ;; Version: $Id: ccc.el,v 1.42 2012/10/21 09:41:07 skk-cvs Exp $ ;; Keywords: cursor ;; Last Modified: $Date: 2012/10/21 09:41:07 $ ;; This file is not part of GNU Emacs. ;; 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, 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 GNU Emacs, see the file COPYING. If not, write to the ;; Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, ;; MA 02110-1301, USA. ;;; Commentary: ;; Buffer local frame parameters ;; --- cursor, foreground, background ;; --- TODO: support other frame parameters ;; should use uni prefix for functions and variables? ;;; Code: (eval-when-compile (require 'advice)) ;; Internal variables. (defvar buffer-local-cursor-color nil) (make-variable-buffer-local 'buffer-local-cursor-color) (defvar buffer-local-foreground-color nil) (make-variable-buffer-local 'buffer-local-foreground-color) (defvar buffer-local-background-color nil) (make-variable-buffer-local 'buffer-local-background-color) (defvar default-cursor-color nil) (defvar default-foreground-color nil) (defvar default-background-color nil) ;; Frame parameters. (defsubst current-cursor-color () (cdr (assq 'cursor-color (frame-parameters (selected-frame))))) (defsubst initial-cursor-color () (cdr (assq 'cursor-color initial-frame-alist))) (defsubst default-cursor-color () (or default-cursor-color (cdr (assq 'cursor-color default-frame-alist)))) (defsubst fallback-cursor-color () (if (eq frame-background-mode 'dark) "white" "black")) (defsubst current-foreground-color () (cdr (assq 'foreground-color (frame-parameters (selected-frame))))) (defsubst initial-foreground-color () (cdr (assq 'foreground-color initial-frame-alist))) (defsubst default-foreground-color () (or default-foreground-color (cdr (assq 'foreground-color default-frame-alist)))) (defsubst fallback-foreground-color () (if (eq frame-background-mode 'dark) "white" "black")) (defsubst current-background-color () (cdr (assq 'background-color (frame-parameters (selected-frame))))) (defsubst initial-background-color () (cdr (assq 'background-color initial-frame-alist))) (defsubst default-background-color () (or default-background-color (cdr (assq 'background-color default-frame-alist)))) (defsubst fallback-background-color () (if (eq frame-background-mode 'dark) "black" "white")) (defsubst frame-cursor-color (&optional frame) (frame-parameter (or frame (selected-frame)) 'frame-cursor-color)) (defsubst set-frame-cursor-color (frame color) (modify-frame-parameters frame (list (cons 'frame-cursor-color color)))) (defsubst frame-foreground-color (&optional frame) (frame-parameter (or frame (selected-frame)) 'frame-foreground-color)) (defsubst set-frame-foreground-color (frame color) (when (eval-when-compile (>= emacs-major-version 23)) (unless (window-system frame) (setq color "unspecified-fg"))) (modify-frame-parameters frame (list (cons 'frame-foreground-color color)))) (defsubst frame-background-color (&optional frame) (frame-parameter (or frame (selected-frame)) 'frame-background-color)) (defsubst set-frame-background-color (frame color) (when (eval-when-compile (>= emacs-major-version 23)) (unless (window-system frame) (setq color "unspecified-bg"))) (modify-frame-parameters frame (list (cons 'frame-background-color color)))) ;; Functions. (defsubst ccc-read-color (prompt) (list (facemenu-read-color prompt))) (defsubst ccc-color-equal (a b) (facemenu-color-equal a b)) (defun ccc-setup-new-frame (frame) (set-frame-cursor-color frame (or (default-cursor-color) (fallback-cursor-color))) (set-frame-foreground-color frame (or (default-foreground-color) (fallback-foreground-color))) (set-frame-background-color frame (or (default-background-color) (fallback-background-color)))) ;;;###autoload (defun ccc-setup () ;; Determine default colors for frames other than the initial frame. (setq default-cursor-color (or (default-cursor-color) (current-cursor-color)) default-foreground-color (or (default-foreground-color) (current-foreground-color)) default-background-color (or (default-background-color) (current-background-color))) ;; Set up colors for the initial frame. (let ((frame (selected-frame))) (set-frame-cursor-color frame (or (initial-cursor-color) (default-cursor-color) (fallback-cursor-color))) (set-frame-foreground-color frame (or (initial-foreground-color) (default-foreground-color) (fallback-background-color))) (set-frame-background-color frame (or (initial-background-color) (default-background-color) (fallback-background-color))))) ;;;###autoload (defun update-buffer-local-frame-params (&optional buffer) (with-current-buffer (if (buffer-live-p buffer) buffer (window-buffer (selected-window))) (update-buffer-local-cursor-color) (update-buffer-local-foreground-color) (update-buffer-local-background-color))) ;; ;; buffer-local-cursor ;; (defun set-buffer-local-cursor-color (color-name) (interactive (ccc-read-color "Cursor color: ")) (let ((local buffer-local-cursor-color)) (setq buffer-local-cursor-color (or color-name (frame-cursor-color))) (condition-case nil (update-buffer-local-cursor-color) (error (setq buffer-local-cursor-color local))))) (defun update-buffer-local-cursor-color () (let ((color (if (stringp buffer-local-cursor-color) buffer-local-cursor-color (frame-cursor-color)))) (when (and (stringp color) (x-color-defined-p color) (not (ccc-color-equal color (current-cursor-color)))) (set-cursor-color color)))) (defun set-cursor-color-buffer-local (arg) (if arg (setq buffer-local-cursor-color (current-cursor-color)) (set-cursor-color (frame-cursor-color)) (setq buffer-local-cursor-color nil))) ;; ;; buffer-local-foreground-color ;; (defun set-buffer-local-foreground-color (color-name) (interactive (ccc-read-color "Foreground color: ")) (unless window-system (setq color-name nil)) (let ((local buffer-local-foreground-color)) (setq buffer-local-foreground-color (or color-name (frame-foreground-color))) (condition-case nil (update-buffer-local-foreground-color) (error (setq buffer-local-foreground-color local))))) (defun update-buffer-local-foreground-color () (let ((color (if (stringp buffer-local-foreground-color) buffer-local-foreground-color (frame-foreground-color)))) (when (and window-system (stringp color) (x-color-defined-p color) (not (ccc-color-equal color (current-foreground-color)))) (set-foreground-color color)))) (defun set-foreground-color-buffer-local (arg) (if arg (setq buffer-local-foreground-color (current-foreground-color)) (set-foreground-color (frame-foreground-color)) (setq buffer-local-foreground-color nil))) ;; ;; buffer-local-background-color ;; (defun set-buffer-local-background-color (color-name) (interactive (ccc-read-color "Background color: ")) (unless window-system (setq color-name nil)) (let ((local buffer-local-background-color)) (setq buffer-local-background-color (or color-name (frame-background-color))) (condition-case nil (update-buffer-local-background-color) (error (setq buffer-local-background-color local))))) (defun update-buffer-local-background-color () (let ((color (if (stringp buffer-local-background-color) buffer-local-background-color (frame-background-color)))) (when (and window-system (stringp color) (x-color-defined-p color) (not (ccc-color-equal color (current-background-color)))) (set-background-color color)))) (defun set-background-color-buffer-local (arg) (if arg (setq buffer-local-background-color (current-background-color)) (set-background-color (frame-background-color)) (setq buffer-local-background-color nil))) (defun ccc-setup-current-colors () (setq default-cursor-color (current-cursor-color) default-foreground-color (current-foreground-color) default-background-color (current-background-color)) (set-frame-cursor-color (selected-frame) (current-cursor-color)) (set-frame-foreground-color (selected-frame) (current-foreground-color)) (set-frame-background-color (selected-frame) (current-background-color))) ;; Advices. (defadvice modify-frame-parameters (after ccc-ad activate) (when (and (assq 'cursor-color (ad-get-arg 1)) (null buffer-local-cursor-color)) (set-frame-cursor-color (ad-get-arg 0) (cdr (assq 'cursor-color (ad-get-arg 1))))) (when (and (assq 'foreground-color (ad-get-arg 1)) (null buffer-local-foreground-color)) (set-frame-foreground-color (ad-get-arg 0) (cdr (assq 'foreground-color (ad-get-arg 1))))) (when (and (assq 'background-color (ad-get-arg 1)) (null buffer-local-background-color)) (set-frame-background-color (ad-get-arg 0) (cdr (assq 'background-color (ad-get-arg 1)))))) (defadvice custom-theme-checkbox-toggle (after ccc-ad activate) (setq default-cursor-color (current-cursor-color) default-foreground-color (current-foreground-color) default-background-color (current-background-color)) (set-frame-cursor-color (selected-frame) (current-cursor-color)) (set-frame-foreground-color (selected-frame) (current-foreground-color)) (set-frame-background-color (selected-frame) (current-background-color))) (defadvice enable-theme (after ccc-ad activate) (ccc-setup-current-colors)) (defadvice disable-theme (after ccc-ad activate) (ccc-setup-current-colors)) ;; Hooks (add-hook 'post-command-hook 'update-buffer-local-frame-params) (add-hook 'after-make-frame-functions 'ccc-setup-new-frame) ;;;###autoload (add-hook 'after-init-hook (lambda () (when window-system (ccc-setup)))) (provide 'ccc) ;;; ccc.el ends here ddskk-15.1.54/install-info.el0000664000076600007660000003216511237527650015377 0ustar brutusbrutus;;; install-info.el --- install-info in Emacs Lisp ;; Copyright (C) 2000 Tetsuo Tsukamoto ;; Author: Tetsuo Tsukamoto ;; Keywords: docs, help ;; This file is not part of GNU Emacs. ;; 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, 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 GNU Emacs, see the file COPYING. If not, write to the ;; Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, ;; MA 02110-1301, USA. ;;; Commentary: ;; This program updates info/dir entries, like install-info in GNU texinfo. ;;; Code: (eval-when-compile (require 'cl)) (eval-and-compile (ignore-errors (require 'jka-compr))) ;; Macros. (defmacro install-info-compressed-name-p (filename) (when (featurep 'jka-compr) `(jka-compr-get-compression-info ,filename))) (defmacro install-info-forward-line (n) `(when (< 0 (forward-line ,n)) (unless (bolp) (insert "\n")))) (put 'install-info-save-point 'lisp-indent-function 0) (defmacro install-info-save-point (&rest forms) `(let ((original-point (point))) (prog1 (progn ,@forms) (goto-char original-point)))) (defmacro install-info-point-at-eol (&optional n) (if (fboundp 'point-at-eol) `(point-at-eol ,n) `(install-info-save-point (if (or (null ,n) (= 1 ,n)) (end-of-line) (when (eq (forward-line (- ,n 1)) 0) (end-of-line))) (point)))) ;; Functions. (defun install-info-skip-blank-lines () (while (and (eolp) (not (eobp))) (install-info-forward-line 1))) (defun install-info-groups (section entry) (let (groups) (dolist (sec section) (setq groups (nconc groups (list (cons sec entry))))) groups)) (defun install-info-insert-file-contents (file &optional visit beg end replace) (let ((coding-system-for-read 'raw-text)) (funcall (if (install-info-compressed-name-p file) #'jka-compr-insert-file-contents #'insert-file-contents) file visit beg end replace))) (defun install-info-write-region (start end file &optional append visit) (let ((coding-system-for-write 'raw-text)) (funcall (if (install-info-compressed-name-p file) #'jka-compr-write-region #'write-region) start end file append visit))) (defun install-info (info-file dir-file &optional entry section delete) "Install or delete dir entries from INFO-FILE in the Info directory file DIR-FILE. Optional third arg ENTRY specifies the text inserted as an Info directory entry. ENTRY should have the form of an Info menu item line plus zero or more extra lines starting with whitespace. If you specify more than one entry (i.e. list of entries), they are all added. If you don't specify any entries, they are determined from information in the Info file itself. If optional fourth arg SECTION is given, put this file's entries in section SECTION of the directory. If you specify more than one section (i.e. list of sections), all the entries are added in each of the sections. If you don't specify any sections, they are determined from information in the Info file itself. If optional fifth arg DELETE is non-nil, delete existing entries for INFO-FILE from DIR-FILE; don't insert any new entries." (interactive "fInfo File: \nFDir File: ") (save-match-data (install-info-1 info-file dir-file entry section delete))) (defun install-info-1 (info-file dir-file entry section delete) (let ((buf (get-buffer-create " *install-info-tmp*")) groups) ;; (unless (stringp info-file) (error "%s" "No input file specified")) (setq info-file (expand-file-name info-file)) ;; (unless (file-exists-p info-file) (error "No such file or directory for %s" info-file)) ;; (unless (stringp dir-file) (error "%s" "No dir file specified")) (setq dir-file (expand-file-name dir-file)) ;; (when (stringp entry) (setq entry (list entry))) (when (stringp section) (setq section (list section))) ;; (unless (and entry section) (save-excursion (set-buffer buf) (setq buffer-read-only nil) (erase-buffer) (install-info-insert-file-contents info-file))) ;; (cond ((and entry section) ;; Both entry and section are given. (unless delete (setq groups (install-info-groups section entry)))) (entry ;; Only entry is given. Determine section from the info file. (unless delete (save-excursion (set-buffer buf) (goto-char (point-min)) (while (re-search-forward "^INFO-DIR-SECTION " nil t) (setq section (nconc section (list (buffer-substring (match-end 0) (install-info-point-at-eol))))))) (unless section (setq section (list "Miscellaneous"))) (setq groups (install-info-groups section entry)))) ((or section delete) ;; Only section is given. Determine entry from the info file. (save-excursion (set-buffer buf) (goto-char (point-min)) (while (re-search-forward "^START-INFO-DIR-ENTRY" nil t) (install-info-forward-line 1) (while (not (looking-at "^END-INFO-DIR-ENTRY")) (let ((start (point)) str) (when (eobp) (error "%s" "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY")) (unless (eolp) (setq str (buffer-substring start (install-info-point-at-eol))) (if (string-match "^\\* " str) (push str entry) (when entry (setcar entry (format "%s\n%s" (car entry) str))))) (install-info-forward-line 1))))) (unless (setq entry (nreverse entry)) (error "warning; no info dir entry in %s" info-file)) (unless delete (setq groups (install-info-groups section entry)))) (t ;; Neither entry nor section is given. (save-excursion (set-buffer buf) (goto-char (point-min)) (while (re-search-forward "^INFO-DIR-SECTION " nil t) (let (section entry) (beginning-of-line) (while (looking-at "^INFO-DIR-SECTION ") ;; Sometimes multiple sections are given for one entry. (setq section (nconc section (list (buffer-substring (match-end 0) (install-info-point-at-eol))))) (install-info-forward-line 1)) (install-info-skip-blank-lines) (when (looking-at "^START-INFO-DIR-ENTRY") (install-info-forward-line 1) (while (not (looking-at "^END-INFO-DIR-ENTRY")) (let ((start (point)) str) (unless (eolp) (setq str (buffer-substring start (install-info-point-at-eol))) (if (string-match "^\\* " str) (push str entry) ;; Sometimes mutiple lines are used for one entry. (when entry (setcar entry (format "%s\n%s" (car entry) str))))) (install-info-forward-line 1)))) (when (and section (setq entry (nreverse entry))) (setq groups (nconc groups (install-info-groups section entry))))))))) ;; (if delete (install-info-delete-entry entry dir-file) (unless groups ;; No section is specified on the info file. Use "Miscellaneous" ;; as the section name. (save-excursion (set-buffer buf) (goto-char (point-min)) (while (re-search-forward "^START-INFO-DIR-ENTRY" nil t) (install-info-forward-line 1) (while (not (looking-at "^END-INFO-DIR-ENTRY")) (let ((start (point)) str) (unless (eolp) (setq str (buffer-substring start (install-info-point-at-eol))) (if (string-match "^\\* " str) (push str entry) (when entry (setcar entry (format "%s\n%s" (car entry) str))))) (install-info-forward-line 1))))) (unless (setq entry (nreverse entry)) (error "warning; no info dir entry in %s" info-file)) (unless section (setq section (list "Miscellaneous"))) (setq groups (install-info-groups section entry))) ;; (install-info-add-groups groups dir-file)) ;; (kill-buffer buf))) (defun install-info-delete-entry (entry dir) ;; Delete all entries given. (setq dir (expand-file-name dir)) (let ((buf (get-buffer-create " *install-info-dir*"))) (save-excursion (set-buffer buf) (setq buffer-read-only nil) (erase-buffer) (unless (file-exists-p dir) (error "No such file or directory for %s" dir)) (install-info-insert-file-contents dir) (dolist (en entry) (let (start file) ;; XEmacs-style entry is not considered here. (when (string-match "(" en) (setq en (substring en (match-end 0))) (setq file (when (string-match ")" en) (substring en 0 (match-beginning 0))))) (goto-char (point-min)) (while (re-search-forward (concat "^\\*.*(" (regexp-quote file) "\\(\\.info\\)?)") nil t) (let ((start (match-beginning 0))) (install-info-forward-line 1) (while (not (or (eolp) (looking-at "^\\* "))) (install-info-forward-line 1)) (delete-region start (point)))))) (install-info-write-region (point-min) (point-max) dir)) (kill-buffer buf))) (defun install-info-add-groups (groups dir) (setq dir (expand-file-name dir)) (let ((buf (get-buffer-create " *install-info-dir*"))) (save-excursion (set-buffer buf) (setq buffer-read-only nil) (erase-buffer) (when (file-exists-p dir) (install-info-insert-file-contents dir)) (goto-char (point-min)) (unless (let ((case-fold-search t)) (and (re-search-forward "^\037" nil t) (re-search-forward "Node:.*Top" nil t) (re-search-forward "^\\* Menu:" nil t))) ;; If the existing dir file is not valid, replace it with a good one. (unless (= 0 (buffer-size)) ;; Create a backup file. (install-info-write-region (point-min) (point-max) (concat dir "~"))) (erase-buffer) (insert "This is the file .../info/dir, which contains the topmost node of the Info hierarchy, called (dir)Top. The first time you invoke Info you start off looking at this node. \037 File: dir, Node: Top This is the top of the INFO tree This (the Directory node) gives a menu of major topics. Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here, \"h\" gives a primer for first-timers, \"mEmacs\" visits the Emacs manual, etc. In Emacs, you can click mouse button 2 on a menu item or cross reference to select it. * Menu: ")) (dolist (group (sort groups #'(lambda (g1 g2) (string-lessp (car g1) (car g2))))) (let ((sec (car group)) (entry (cdr group))) (goto-char (point-min)) (cond ((re-search-forward (concat "^" sec "$") nil t) ;; section exists (install-info-forward-line 1) (let ((sec-start (point))) (install-info-skip-blank-lines) (let ((en-start (point))) (dolist (en entry) (cond ((or (eobp) (not (looking-at "^\\* "))) ;; No entries in the section. (goto-char sec-start) (unless (eolp) (insert "\n") (goto-char sec-start))) (t ;; Delete the old entry. (let ((key (when (string-match ")" en) (substring en 0 (match-beginning 0))))) (while (not (catch 'end (cond ((looking-at (concat "^" (regexp-quote key) "\\(\\.info\\)?)")) (let ((start (point))) (install-info-forward-line 1) (while (looking-at "^[ \t]") ;; Entry has two or more lines. (install-info-forward-line 1)) (delete-region start (point)) (throw 'end t))) ((eobp) (throw 'end t)) ((eolp) (install-info-forward-line 1)) ((not (looking-at "^\\(\\*\\|[ \t]\\)")) ;; reaches the next section (throw 'end t)) (t (install-info-forward-line 1))))))) (goto-char en-start) ;; Insert the new entry. (while (not (catch 'here (while (not (eolp)) (let ((line (buffer-substring (point) (install-info-point-at-eol)))) (cond ((not (looking-at "^\\(\\*\\|[ \t]\\)")) ;; reaches the next section (let ((pt (point))) (insert "\n") (goto-char (point))) (throw 'here t)) ((or ;; not at the head of an entry (looking-at "^[ \t]") ;; on the way (string-lessp line en)) (install-info-forward-line 1)) (t (throw 'here t))))) (let ((maybe-here (point))) (install-info-skip-blank-lines) (when (looking-at "^\\(\\*\\|[ \t]\\)") (throw 'here nil)) ;; reaches the next section. (goto-char maybe-here) (throw 'here t))))))) (when (and (eobp) (not (bolp))) (install-info-forward-line 1)) (insert (format "%s\n" en)) (goto-char en-start))))) (t ;; section doesn't exist. Add it at the bottom. (goto-char (point-max)) (install-info-forward-line 1) (insert (format "\n%s\n" sec)) (dolist (en (sort entry #'string-lessp)) (insert (format "%s\n" en))))))) ;; (install-info-write-region (point-min) (point-max) dir)) (kill-buffer buf))) (provide 'install-info) ;;; install-info.el ends here ddskk-15.1.54/experimental/0000775000076600007660000000000012161161542015133 5ustar brutusbrutusddskk-15.1.54/experimental/skk-ja-names.el0000664000076600007660000000645412161161245017747 0ustar brutusbrutus;; skk-ja-names.el --- localization $B$N2DG=@-$K4X$9$k>.$5$J;n$_(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2010 SKK Development Team ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; 21 $B@$5*$K$J$j!"%"%W%j%1!<%7%g%s$N(B localization $B$O(B $B0lHLE*$J$b$N$K$J$j(B ;; $B$^$7$?$,!"(BGNU Emacs $B$O4pK\E*$K1Q8lCN<1$,A0Ds$H$5$l$F$$$^$9(B ($B%I%-%e%a(B ;; $B%s%H$N0lIt$O?t3X1Q8l$NCN<1$rA0Ds$K$9$i$7$F$$$^$9(B)$B!#(B ;; $B$3$N%U%!%$%k$O(B SKK $B$N%3%^%s%IL>!&%*%W%7%g%sL>$r(B localize $B$9$k$3$H$G(B ;; $B%f!<%6!<$KMxE@$,$"$k$+$I$&$+$r3N$+$a$k$?$a$K@_CV$5$l$^$7$?!#$h$$L?L>(B ;; $BK!$K;j$k$^$G$O>/$J$/$H$b(B experimental $B$H$7$^$9!#(B ;; $B:#$N$H$3$m;W$$$D$/4pK\J}?K(B ;; 1. $B=i?4$NF~NO$OEvA3A0$NIU$1J}$,$h$$$HA[A|$5$l$k!#(B ;;; Code: (defalias 'SKK$B%b!<%I(B 'skk-mode) (defalias 'SKK$B$N%P!<%8%g%s(B 'skk-version) (defalias 'SKK$B$N%P%0$rJs9p$9$k(B 'skk-submit-bug-report) (defalias 'SKK$B$N%A%e!<%H%j%"%k(B 'skk-tutorial) (defvaralias 'SKK$B4pK\@_Dj(B-$B8D?M%U%!%$%k$rCV$/%G%#%l%/%H%jL>(B 'skk-user-directory) (defvaralias 'SKK$B%-!<@_Dj(B-$B%j%?!<%s%-!<$r3NDj$K;H$&(B? 'skk-egg-like-newline) (defvaralias 'SKK$B%-!<@_Dj(B-$BA08uJdI=<($9$k%-!<72(B 'skk-egg-like-newline) (defvaralias 'SKK$B%-!<@_Dj(B-$B3NDj$K;H$&%-!<(B 'skk-kakutei-key) (defvaralias 'SKK$B<-=q@_Dj(B-L$B<-=q$N%U%!%$%kL>(B 'skk-large-jisyo) (defvaralias 'SKK$B<-=q@_Dj(B-CDB$B<-=q$N%U%!%$%kL>(B 'skk-cdb-large-jisyo) (defvaralias 'SKK$B<-=q@_Dj(B-$B8D?M<-=q$r6&M-$9$k(B? 'skk-share-private-jisyo) (defvaralias 'SKK$BJQ49@_Dj(B-$BAw$j2>L>$,@5$7$$8uJd$rM%@h$9$k(B? 'skk-henkan-strict-okuri-precedence) (defvaralias 'SKK$BJQ49@_Dj(B-$BM>7W$JAw$j2>L>$N=hM}J}K!$rA*$V(B! 'skk-check-okurigana-on-touroku) (defvaralias 'SKK$BI=<(@_Dj(B-$B%$%s%i%$%sI=<($9$k(B? 'skk-show-inline) (defvaralias 'SKK$BI=<(@_Dj(B-$B%D!<%k%F%#%C%WI=<($9$k(B? 'skk-show-inline) (defvaralias 'SKK$BI=<(@_Dj(B-$BF|K\8l%a%K%e! $Id: README.rdbms,v 1.1 1999/11/07 03:09:16 minakaji Exp $ 1. What's this? Emacs $B$N%P%C%U%!$NCf$G(B PostgreSQL $B$N%7%'%k$G$"$k(B psql $B$rAv$i$;$k$3$H$K(B $B$h$j!"(BPostgreSQL $B$N%G!<%?%Y!<%95!G=$rMxMQ$7$?JQ49$re!"3HD%JQ49(B ($B0UL#$r=PNO$7$?$j(B) $B$r9T$J$&(B $B$3$H$G$9!#(B $B8=:_$N$H$3$m!"ItH!#(B) $B$J$I$,%5%]!<%H$5$l$F$$$^$9!#o$K/!98E$$%^%7%s$G3+H/!"u67$G$9!#(B $B8D?ME*$K$O!"(B (1)psql $B$H$N%W%m%;%9DL?.$N$?$a$K!"(Baccept-process-output $B$r2?EY$b;HMQ$9(B $B$k$J$I7k9=$b$?$b$?$7$F$$$k$N$r@0M}$7$?$$(B ($B8=>u$G$O$=$&$7$J$$$H$&$^(B $B$/F0$+$J$$$N$G!"$7$g$&$,$J$$$1$l$I(B)$B!#(B (2)$B%9%?%s%I%"%m%s$N%^%7!<%s$G!"%m!<%+%k%[%9%H$G(B postmaster $B$rF0$+$7$F(B $B$$$k!"$H$$$&Hf3SE*7C$^$l$?4D6-$G$NJQ49B.EY$O7h$C$7$F0-$/$O$J$$$b$N(B $B$N!"JL%[%9%H$G(B postmaster $B$,F0$$$F$$$k$N$G$"$l$P!"(B($B%M%C%H%o!<%/$N:.(B $B$_6q9g$K$b$h$k$N$G$"$m$&$,(B) $BB.EYE*$K$OITMx$K$J$k$G$"$m$&$3$H(B ($BBN46(B $B$7$?$3$H$,$J$$$N$G!"J,$jFq$$$,(B)$B!#(B (3)SKK + PostgreSQL $B$K$h$k8D?M<-=q%F!<%V%k$NJQ49$K$D$$$F!"$I$&$7$F$bB.(B $BEYE*$K%f!<%6!<$,%G%a%j%C%H$r46$8$k$N$G$"$l$P!"(B~/.skk-jisyo $B$H$NJ;(B $BMQ$,$G$-$k$h$&$K$9$k$+!#(B (4)$B99$J$kJQ498zN($N%"%C%W$r?^$C$F$f$/$?$a$K$O$I$&$7$?$iNI$$$+!#(B $B$J$I$,EvLL$NLdBj$G$"$k$H9M$($F$$$^$9!#(BEmacs Lisp $B$O$H$b$+$/!"(BSQL $B$O$+(B $B$J$j$N=i?4o$K:Q$s$G$$$F$b!"(B $B$H$-$I$-(B make $B$,%(%i!<$@$H4*0c$$$7$FA4$F$N%F!<%V%k$r:n$i$:$K%9%H%C(B $B%W$9$k>l9g$,$"$j$^$9$N$G!"(B-k $B%*%W%7%g%s$r;XDj$7$F$$$^$9!#(B (2)make $B$r$N%F!<%V%k$OI,MW(B $B$K1~$8!"(Bcron $B$J$I$G(B VACUUM $B$r$+$1$F2<$5$$(B ($B8D?M<-=q%F!<%V%k0J30$O99(B $B?7$7$J$$$s$@$1$I!"$=$NI,MW$,$"$k$N$+$7$i$s!)(B)$B!#(B (5)skk-auto.el $B$G%5%]!<%H$5$l$k<+F0Aw$j=hM}5!G=$b%G!<%?%Y!<%98!:w$KCV(B $B$-49$($F%5%]!<%H$5$l$F$$$^$9$,!"%*!<%P!<%X%C%I$,7k9=Bg$-$$$N$G!"(B skk-search-prog-list $BCf!"(B(skk-okuri-search) $B$rCV$/0LCV$O!"(B (setq skk-search-prog-list '((skk-rdbms-search-jisyo-table skk-rdbms-private-jisyo-table) (skk-rdbms-sahen-search) (skk-rdbms-search-jisyo-table skk-rdbms-public-jisyo-table) (skk-okuri-search) (skk-rdbms-search-jisyo-table skk-rdbms-jis2-jisyo-table) )) $B$N$h$&$K$9$k$N$,NI$$$+$b$7$l$^$;$s!#(B (6)skk-kakutei-jisyo, skk-initial-search-jisyo $B$N5!G=$r%5%]!<%H$7$F$$(B $B$^$9$,!"$3$l$i$N(B 2 $B$D$N<-=q%U%!%$%k$r%F!<%V%k$KJQ49$9$k:]!"(B dicconv.awk $B$,M>7W$JF|;~%G!<%?$rF~$l9~$^$J$$$h$&$K(B 2 $B$D$N<-=q%U%!%$(B $B%k$N@hF,$K!"$=$l$>$l(B ;; Kakutei dictionary for SKK system ;; Initial search dictionary for SKK system $B$H$$$&%3%a%s%H9T$rDI2C$7$F!"%F!<%V%k$r(B make $B$7$F2<$5$$!#$J$*!"%G%#(B $B%U%)%k%H$G$O$3$N(B 2 $B$D$N%F!<%V%k$O:n$i$J$$$h$&$K$J$C$F$$$k$N$G!"(B Makefile $B$H(B createtbl.sql $B$NJT=8$,I,MW$G$9!#(B (7)James William Breen $B$K$h$k(B KANJIDIC $B$rMxMQ$7$F!"$H$j$"$($:Ito$NJQ49$HF1$8$h$&$K$7$FIt$r=q$-!"$=$3$G!"(B M-x skk-rdbms-busyu-henkan $B$H$7$F2<$5$$!#(B $B2h?tJQ49$O!"(B $B"&(B15 ($B$3$N>uBV$r:n$k$K$O!"(B`/ 1 5' $B$H%?%$%W$9$k(B) $B$N$h$&$K2h?t$r;XDj$7!"(B M-x skk-rdbms-stroke-henkan $B$H$7$F2<$5$$(B ($BJQ49ESCf$K(B M-x $B$G%3%^%s%I$rF~NO$9$k$N$,LLE]$J$i$P!"2?(B $B$+E,Ev$J%-!<$K$3$l$i$N%3%^%s%I$r%P%$%s%I$9$l$PNI$$$G$7$g$&(B)$B!#(B $B$^$?!"4A;z$N2h?t$rCN$j$?$$>l9g$O!"(B M-x skk-rdbms-stroke $B$H$7$F%_%K%P%C%U%!$K3:Ev$N4A;z$rF~NO$9$l$P!"2h?t$,%(%3!<%(%j%"$KI=(B $B<($5$l$^$9!#(B $B$$$:$l$NJQ497k2L$b8D?M<-=q%F!<%V%k$K$Oe!"I85-IT2DG=$JIt/!9G:$s$G$$(B $B$^$9!#(B $B$^$?!"(Bkanjidic $BCf$K=P$F$/$k(B B[0-9]+ $B$NHV9f$O!"(Bkanjidic.doc $B$K$h$l$P!"(B the Nelson New Japanese-English Character Dictionary $B$K=P$F$/$k(B the radical (Bushu) number $B$@$=$&$G$9$,!"$H$-$I$-=EJ#$7$F$$$k$N$,5$$K$J$C(B $B$F$$$^$9(B (13, 34, 47, 66 $B$H(B 71$B!#K\Mh(B unique $B$JHV9f$N$O$:(B)$B!#$3$N?t;z(B $B$r(B busyuID $B$H$7$F(B busyu_base $B%F!<%V%k$Kl9g$G!"!V$3$&$3$&(Bs$B!W$N8+=P$78l$,8+$D$+(B $B$i$J$+$C$?$H$-$G$b!"(Bhinsi_data $B%F!<%V%k$+$i!V8e96!W!V9'9T!W!V9R9T!W(B $B$J$I!"%5JQF0;l$K$J$jF@$k$b$N$@$1$rJQ497k2L$H$7$F=PNO$7(B ($B!V8}9P!W!"(B $B!V9b9;!W$J$I$NL5BL$J4A;z$r=PNO$7$^$;$s!#$b$A$m$s(B skk-search-prog-list $B$G@h=g0L$K$"$kJQ49$G=PNO$5$l$?JQ497k2L$OM%@h$5(B $B$l$^$9$,(B)$B!#(B $B http://www.asahi-net.or.jp/~gy2m-nkjm/ ddskk-15.1.54/experimental/rdbms/sql/0000775000076600007660000000000012051632626017045 5ustar brutusbrutusddskk-15.1.54/experimental/rdbms/sql/busyu.sql0000664000076600007660000000442507236647544020760 0ustar brutusbrutus-- busyu.sql -- -- Copyright (C) 1998 NAKAJIMA Mikio -- -- Author: NAKAJIMA Mikio -- Created: Sep 1, 1998 -- Last Modified: $Date: 2001/02/03 00:23:00 $ -- Version: $Id: busyu.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- This file is not part of SKK yet. -- -- SKK 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 versions 2, or (at your option) -- any later version. -- -- SKK 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 SKK, 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 DROP TABLE busyu_base; CREATE TABLE busyu_base ( busyuID int2 NOT NULL, -- radical (Busyu) number. why aren't they unique? busyuID2 int2, -- classic radical number kanji varchar(2), -- Éô¼ó¤Î¤ß¤Îɸµ­¤¬ÉÔǽ¤Êʸ»ú¤â¤¢¤ë¤Î¤Ç¡¢NOT NULL, UNIQUE ¾ò·ï¤òÉÕ¤±¤Ê¤¤¡£ yomi1 varchar(16) NOT NULL, yomi2 varchar(16), yomi3 varchar(16), yomi4 varchar(16) ); COPY busyu_base FROM '/usr/local/share/emacs/site-lisp/skk/tmp/busyu_base.txt'; CREATE INDEX busyuID_index ON busyu_base USING BTREE (busyuID int2_ops); CREATE INDEX yomi1_index ON busyu_base USING BTREE (yomi1 varchar_ops); CREATE INDEX yomi2_index ON busyu_base USING BTREE (yomi2 varchar_ops); CREATE INDEX yomi3_index ON busyu_base USING BTREE (yomi3 varchar_ops); CREATE INDEX yomi4_index ON busyu_base USING BTREE (yomi4 varchar_ops); DROP TABLE busyu_data; CREATE TABLE busyu_data ( busyuID int2 NOT NULL, -- radical (Busyu) number. why aren't they unique? busyuID2 int2, -- classic radical number kanji varchar(2) NOT NULL UNIQUE ); COPY busyu_data FROM '/usr/local/share/emacs/site-lisp/skk/tmp/busyu_data.txt'; CREATE INDEX busyuID_index ON busyu USING BTREE (busyuID int2_ops); VACUUM busyu_base; VACUUM busyu_data; SELECT COUNT(*) FROM busyu_base; SELECT COUNT(*) FROM busyu_data; -- end of busyu.sql ddskk-15.1.54/experimental/rdbms/sql/kcode.sql0000664000076600007660000000247307236647544020677 0ustar brutusbrutus-- kcode.sql -- -- Copyright (C) 1998 NAKAJIMA Mikio -- -- Author: NAKAJIMA Mikio -- Created: Sep 1, 1998 -- Last Modified: $Date: 2001/02/03 00:23:00 $ -- Version: $Id: kcode.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- This file is not part of SKK yet. -- -- SKK 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 versions 2, or (at your option) -- any later version. -- -- SKK 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 SKK, 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 DROP TABLE kcode; CREATE TABLE kcode ( kanji varchar(2) NOT NULL PRIMARY KEY, JIScode char(4) NOT NULL UNIQUE, Unicode char(4) NOT NULL UNIQUE ); COPY kcode FROM '/usr/local/share/emacs/site-lisp/skk/tmp/kcode.txt'; VACUUM kcode; SELECT COUNT(*) FROM kcode; -- end of kcode.sql ddskk-15.1.54/experimental/rdbms/sql/stroke.sql0000664000076600007660000000252307236647544021115 0ustar brutusbrutus-- stroke.sql -- -- Copyright (C) 1998 NAKAJIMA Mikio -- -- Author: NAKAJIMA Mikio -- Created: Sep 1, 1998 -- Last Modified: $Date: 2001/02/03 00:23:00 $ -- Version: $Id: stroke.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- This file is not part of SKK yet. -- -- SKK 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 versions 2, or (at your option) -- any later version. -- -- SKK 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 SKK, 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 DROP TABLE stroke; CREATE TABLE stroke ( stroke int2 NOT NULL, kanji varchar(2) NOT NULL PRIMARY KEY ); COPY stroke FROM '/usr/local/share/emacs/site-lisp/skk/tmp/stroke.txt'; CREATE INDEX stroke_index ON stroke USING BTREE (stroke int2_ops); VACUUM stroke; SELECT COUNT(*) FROM stroke; -- end of stroke.sql ddskk-15.1.54/experimental/rdbms/sql/createtbl.sql0000664000076600007660000001001407236647544021545 0ustar brutusbrutus-- createtbl.sql -- Create private_jisyo table from an expanded format of SKK private dictionary. -- -- NAKAJIMA Mikio -- $Date: 2001/02/03 00:23:00 $: -- Version: $Id: createtbl.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- -- % nkf -e ~/.skk-jisyo | gawk -f ./awk/dicconv.awk - > ./tmp/private.txt -- % nkf -e /usr/local/share/skk/SKK-JISYO.L | gawk -f ./awk/dicconv.awk - > ./tmp/large.txt -- % nkf -e /usr/local/share/skk/SKK-JISYO.JIS2 | gawk -f ./awk/dicconv.awk - > ./tmp/jis2.txt -- -- ¤È¤·¤Æ ~/.skk-jisyo ¤òŸ³«¤·¡¢*.txt ¥Õ¥¡¥¤¥ë¤òºî¤ê¤Þ¤¹¡£ -- -- gawk ¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ÆÈ¼«µ¡Ç½¤Î strftime() ¤ò»È¤Ã¤Æ¤¤¤ë¤¿¤á -- ¤Ç¡¢¤â¤·¤â gawk ¤¬¤Ê¤±¤ì¤Ð¡¢dicconv.awk ¤Î -- ctime = myctime(0); -- ¤È¤¤¤¦¸Ä½ê¤ò -- ctime = 'Sat Aug 15 17:23:45 1998'; -- ¤È¤¤¤¦¤è¤¦¤Ëľ½ñ¤­¤·¤ÆÂбþ¤·¤Æ²¼¤µ¤¤ (¤È¤ê¤¢¤¨¤ººî¶È¤ò¹Ô¤Ê¤Ã¤¿ -- Æü¤ÎŬÅö¤Ê»þ´Ö¤¬ Emacs ¤Î current-time-string ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç -- Æþ¤ì¤ÐÎɤ¤¤Ç¤¹¡£¾°¡¢myctime ¤ÎÄêµÁ¤â¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Ê¤±¤ì¤Ð¤Ê -- ¤é¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ -- -- PS. ¤³¤Î¥¹¥¯¥ê¥×¥ÈÃæ¤Ç gsub ¤ò»È¤¦¤è¤¦¤Ë¤Ê¤Ã¤¿¤Î¤Ç¡¢É¬¤º gawk ¤ò»È¤Ã -- ¤Æ²¼¤µ¤¤¡£ -- -- ¼¡¤Ë -- -- '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/private.txt' -- '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/large.txt' -- '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/jis2.txt' -- '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/kakutei.txt' -- -- ¤ÎÉôʬ¤òµ®Êý¤Î *.txt ¥Õ¥¡¥¤¥ë¤Î½êºß¤Ë¹ç¤ï¤»¤Æ¡¢¤Þ¤¿¡¢ -- -- minakaji_private_jisyo (minakaji_kakutei_jisyo), -- minakaji_private_yomi_index (minakaji_kakutei_yomi_index) -- -- ¤ÎÉôʬ¤ò -- -- YOUR-USER-LOGIN-NAME_private_jisyo (YOUR-USER-LOGIN-NAME_kakutei_jisyo) -- YOUR-USER-LOGIN-NAME_yomi_index (YOUR-USER-LOGIN-NAME_kakutei_yomi_index) -- -- ¤Î¤è¤¦¤Ë¤¢¤Ê¤¿¤Î¥í¥°¥¤¥ó¥Í¡¼¥à (Emacs ¤ÎÊÑ¿ô user-login-name ¤ËÆþ¤Ã -- ¤Æ¤¤¤ëÃÍ) ¤òÉÕ¤±²Ã¤¨¤Æ½ñ¤­Ä¾¤·¡¢ -- -- % psql skk -e < createtbl.sql -- -- ¤È¤·¤Æ¡¢skk ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºî¤Ã¤Æ²¼¤µ¤¤¡£ -- -- ¤Ê¤ª¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢postgreSQL ¤Ç»È¤¨¤ë¤è¤¦¤Ëɬ¤º euc-japan-unix -- ¤ÇÊݸ¤·¤Æ²¼¤µ¤¤¡£ -- DROP TABLE minakaji_skk_private_jisyo; -- old name DROP TABLE minakaji_private_jisyo; CREATE TABLE minakaji_private_jisyo ( okuriari int2 NOT NULL, yomi varchar(50) NOT NULL, -- longest entry of yomi in SKK-JISYO.L is -- '¤Û¤¯¤ê¤¯¤»¤ó¤¿¤ó¤«¤¬¤¯¤®¤¸¤å¤Ä¤À¤¤¤¬¤¯¤¤¤ó¤À¤¤¤¬¤¯' kanji text NOT NULL, okurigana varchar(4), date abstime NOT NULL ); COPY minakaji_private_jisyo FROM '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/private.txt'; -- CREATE INDEX minakaji_private_yomi_index ON minakaji_private_jisyo USING BTREE (yomi varchar_ops); VACUUM minakaji_private_jisyo; SELECT COUNT(*) FROM minakaji_private_jisyo; -- DROP TABLE skk_large_jisyo; -- old name DROP TABLE large_jisyo; CREATE TABLE large_jisyo ( okuriari int2 NOT NULL, yomi varchar(50) NOT NULL, kanji text NOT NULL ); COPY large_jisyo FROM '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/large.txt'; CREATE INDEX large_yomi_index ON large_jisyo USING BTREE (yomi varchar_ops); VACUUM large_jisyo; SELECT COUNT(*) FROM large_jisyo; -- DROP TABLE skk_jis2_jisyo; -- old name -- DROP TABLE jis2_jisyo; -- CREATE TABLE jis2_jisyo ( -- okuriari int2 NOT NULL, -- yomi varchar(50) NOT NULL, -- kanji text NOT NULL -- ); -- COPY jis2_jisyo FROM '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/jis2.txt'; -- CREATE INDEX jis2_yomi_index ON jis2_jisyo USING BTREE (yomi varchar_ops); -- VACUUM jis2_jisyo; -- SELECT COUNT(*) FROM jis2_jisyo; -- DROP TABLE minakaji_kakutei_jisyo; -- CREATE TABLE minakaji_kakutei_jisyo ( -- okuriari int2 NOT NULL, -- yomi varchar(50) NOT NULL, -- kanji text NOT NULL -- ); -- COPY minakaji_kakutei_jisyo FROM '/usr/local/share/emacs/site-lisp/skk/experimental/rdbms/tmp/kakutei.txt'; -- CREATE INDEX minakaji_kakutei_yomi_index ON minakaji_kakutei_jisyo USING BTREE (yomi varchar_ops); -- VACUUM minakaji_kakutei_jisyo; -- SELECT COUNT(*) FROM minakaji_kakutei_jisyo; -- end of createtbl.sql ddskk-15.1.54/experimental/rdbms/sql/hinsi.sql0000664000076600007660000000427607236647544020727 0ustar brutusbrutus-- hinsi.sql -- -- Copyright (C) 1998 NAKAJIMA Mikio -- -- Author: NAKAJIMA Mikio -- Created: Sep 6, 1998 -- Last Modified: $Date: 2001/02/03 00:23:00 $ -- Version: $Id: hinsi.sql,v 1.2 2001/02/03 00:23:00 minakaji Exp $ -- -- This file is not part of SKK yet. -- -- SKK 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 versions 2, or (at your option) -- any later version. -- -- SKK 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 SKK, 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 DROP TABLE hinsi; -- old name DROP TABLE hinsi_base; CREATE TABLE hinsi_base ( hinsi varchar(23) NOT NULL, -- longest is `¥µ¹Ô(¤¹¤ë)&̾»ì²½ÀÜÈø¸ì' hinsiID int2 NOT NULL, hinsiID2 int2 ); COPY hinsi_base FROM '/usr/local/share/emacs/site-lisp/skk/tmp/hinsi_base.txt'; CREATE INDEX hinsiB_hinsi_index ON hinsi_base USING BTREE (hinsi varchar_ops); CREATE INDEX hinsiB_hinsiID_index ON hinsi_base USING BTREE (hinsiID int2_ops); CREATE INDEX hinsiB_hinsiID2_index ON hinsi_base USING BTREE (hinsiID2 int2_ops); VACUUM hinsi_base; SELECT COUNT(*) FROM hinsi_base; DROP TABLE hinsi_data; CREATE TABLE hinsi_data ( yomi varchar(26) NOT NULL, -- longest is `¤Ð¤Ã¤¯¤×¤í¤Ñ¤²¡¼¤·¤ç¤ó¤Û¤¦' kanji varchar(24) NOT NULL, -- longest is `¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à' hinsiID int2 NOT NULL, hinsiID2 int2 ); COPY hinsi_data FROM '/usr/local/share/emacs/site-lisp/skk/tmp/hinsi_data.txt'; CREATE INDEX hinsiD_yomi_index ON hinsi_data USING BTREE (yomi varchar_ops); CREATE INDEX hinsiD_hinsiID_index ON hinsi_data USING BTREE (hinsiID int2_ops); CREATE INDEX hinsiD_hinsiID2_index ON hinsi_data USING BTREE (hinsiID2 int2_ops); VACUUM hinsi_data; SELECT COUNT(*) FROM hinsi_data; -- end of hinsi.sql ddskk-15.1.54/experimental/rdbms/awk/0000775000076600007660000000000012051632626017030 5ustar brutusbrutusddskk-15.1.54/experimental/rdbms/awk/dicconv.awk0000664000076600007660000000671607236647543021210 0ustar brutusbrutus# dicconv.awk -- SKK $B<-=q$r%j%l!<%7%g%J%k%G!<%?%Y!<%9$N%F!<%V%k$KEPO?$7$d$9$$7A$KJQ49$9$k(B awk $B%9%/%j%W%H!#(B # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Apr 18, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: dicconv.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # This file is not part of SKK yet. # SKK 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 versions 2, or (at your option) # any later version. # # SKK 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 SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # SKK $B<-=q$r%j%l!<%7%g%J%k%G!<%?%Y!<%9$N%F!<%V%k$KEPO?$7$d$9$$7A$KJQ49$9$k(B awk $B%9%/%j%W%H!#(B # # yomi /kouho1/kouho2/.../kouhoN/ # -> # # yomi kouho1 okuriari # yomi kouho2 okuriari # ... # yomi kouhoN okuriari # # OKURIARI $B$O(B 0 $B$+(B 1$B!#(B # # Code BEGIN { okuriari = 1; ctime = myctime(0); private = 1; } { if (NR == 1) { if (((match(FILENAME, "SKK-JISYO.L") != 0) || (match(FILENAME, "SKK-JISYO.M") != 0) || (match(FILENAME, "SKK-JISYO.S") != 0) || (match(FILENAME, "SKK-JISYO.JIS2") != 0) ) || ((match($0, /^;; Kakutei dictionary for SKK system/) != 0) || (match($0, /^;; Initial search dictionary for SKK system/) != 0) || (match($0, /^;; JIS LEVEL 2 Kanji dictionary for SKK system/) != 0) || (match($0, /^;; Large size dictionary for SKK system/) != 0) || (match($0, /^;; Medium size dictionary for SKK system/) != 0) || (match($0, /^;; Small size dictionary for SKK system/) != 0) )) { private = 0; } } else if (match($0, /^;; okuri-ari entries\.$/) != 0) okuriari = 1; else if (match($0, /^;; okuri-nasi entries\.$/) != 0) okuriari = 0; else if (match($0, /^;;/) != 0) ; # Comment line. do nothing. else if (match($0, /^[^ ][^ ]* \//) != 0) { yomi = substr($0, 1, RLENGTH - 2); temp = substr($0, RLENGTH + 1); if (okuriari && match($0, /\/\[/) != 0) { # okuriari && okuri strictly temp = substr($0, RSTART, length($0) - 3); fn1 = split(temp, entry, "/]"); for (i = 1; i <= fn1; i++) { fn2 = split(substr(entry[i], 3), parts, "/"); for (j = 2; j <= fn2; j++) { # why "\\\\\\" instead of "\\\\"? gsub(/\\/, "\\\\\\", yomi); gsub(/\\/, "\\\\\\", parts[j]); printf("1\t%s\t%s\t%s", yomi, parts[j], parts[1]); if (private) printf("\t%s", ctime); printf("\n"); } } } else { kouhos = substr(temp, 1, length(temp) - 1); fn1 = split(kouhos, kouho, "/"); for (i = 1; i <= fn1; i++) { if (okuriari) printf("1"); else printf("0"); gsub(/\\/, "\\\\\\", yomi); gsub(/\\/, "\\\\\\", kouho[i]); printf("\t%s\t%s", yomi, kouho[i]); if (private) printf("\t\\N\t%s", ctime); #`\N' is null string representation. printf("\n"); } } } } function myctime(ts, format) { format = "%a %b %e %H:%M:%S %Y"; if (ts == 0) ts = systime(); # use current time as default return strftime(format, ts); } # end of dicconv.awk ddskk-15.1.54/experimental/rdbms/awk/hinsi_data.awk0000664000076600007660000000512207011166567021645 0ustar brutusbrutusBEGIN{ OFS = "\t"; } { if ($3 != "") { printf("%s\t%s\t", $1, $2); if ($3 == "¥«¹Ô(¹Ô¤¯)") print "0"; else if ($3 == "¥«¹Ô¸ÞÃÊ") print "1"; else if ($3 == "¥¬¹Ô¸ÞÃÊ") print "2"; else if ($3 == "¥µ¹Ô(¤¹¤ë)") print "3"; else if ($3 == "¥µ¹Ô(¤¹¤ë)&̾»ì") print "3", "44"; else if ($3 == "¥µ¹Ô(¤¹¤ë)&̾»ì²½ÀÜÈø¸ì") print "3", "36"; # "3" ¤¬ 3 ¤Ä¤Ë¤Ê¤Ã¤¿¤«¤é "4","5" ¤Ï·çÈÖ¡£Ä¾¤¹¤ÎÌÌÅݤÀ¤â¤ó¡£ else if ($3 == "¥µ¹Ô¸ÞÃÊ") print "6"; else if ($3 == "¥¶¹Ô(¤º¤ë)") print "7"; else if ($3 == "¥¿¹Ô¸ÞÃÊ") print "8"; else if ($3 == "¥Ê¹Ô¸ÞÃÊ") print "9"; else if ($3 == "¥Ð¹Ô¸ÞÃÊ") print "10"; else if ($3 == "¥Þ¹Ô¸ÞÃÊ") print "11"; else if ($3 == "¥é¹Ô(²¼¤µ¤¤)") print "12"; else if ($3 == "¥é¹Ô¸ÞÃÊ") print "13"; else if ($3 == "¥ï¹Ô¸ÞÃÊ") print "14"; else if ($3 == "°ìÃÊ") print "15"; else if ($3 == "°ìÃÊ&̾»ì") print "15", "44"; # "16" ¤Ï·çÈÖ¡£ else if ($3 == "°ìư´´") print "17"; else if ($3 == "µ­¹æ") print "18"; else if ($3 == "·ÁÍÆ»ì") print "19"; else if (match($3, /·ÁÍÆ»ì²½ÀÜÈø/) != 0) print "20"; else if ($3 == "·ÁÍÆÆ°»ì") print "21"; else if (($3 == "·ÁÍÆÆ°»ì&̾»ì") || ($3 == "·ÁÍÆÆ°»ì,̾»ì")) print "21", "44"; # sort ¤·¤Æ uniq ¤¹¤ë¤È²¿¸Î¤«¤³¤¤¤Ä¤¬½Ð¤Æ¤³¤Ê¤¤¡£ else if ($3 == "·ÁÍÆ»ì²½ÀÜÈøÆ°»ì") print "22"; else if ($3 == "·ÁÍÆÆ°»ì(¤¿¤ë)") print "23"; else if ($3 == "·ÁÍÆÆ°»ì²½ÀÜÈø¸ì") print "24"; else if ($3 == "¸Çͭ̾»ì") print "25"; else if ($3 == "½õ¿ô»ì") print "26"; else if ($3 == "¿Í̾") print "27"; else if ($3 == "¿Í̾&ÃÏ̾") print "27", "42"; # "28" ¤Ï·çÈÖ¡£ else if ($3 == "¿ô»ì") print "29"; else if ($3 == "Àܳ»ì,´¶Æ°»ì") print "30"; # "Àܳ»ì" ¤È "Àܳ¸ì" ¤Ï°ã¤¦¤Î¤«¡© else if ($3 == "ÀÜÆ¬¸ì") print "31"; else if ($3 == "ÀÜÆ¬¸ì(³Æ)") print "32"; # ¤È¤ê¤¢¤¨¤º else if (match($3, /ÀÜÆ¬¸ì\(¤ª/) != 0) print "31"; else if ($3 == "ÀÜÆ¬½õ¿ô»ì") print "33"; else if ($3 == "ÀÜÆ¬¿ô»ì") print "34"; else if ($3 == "ÀÜÆ¬ÃÏ̾") print "35"; else if ($3 == "ÀÜÈø¸ì") print "36"; else if ($3 == "ÀÜÈø½õ¿ô»ì") print "37"; else if ($3 == "ÀÜÈø¿Í̾") print "38"; else if ($3 == "ÀÜÈøÃÏ̾") print "39"; else if ($3 == "ÀÜÈøÆ°»ì") print "40"; else if ($3 == "ñ´Á»ú") print "41"; else if ($3 == "ÃÏ̾") print "42"; else if ($3 == "Éû»ì") print "43"; else if ($3 == "̾»ì") print "44"; else if ($3 == "Íè(¤­)") print "45"; else if ($3 == "Íè(¤¯)") print "46"; else if ($3 == "Íè(¤³)") print "47"; else if ($3 == "Ï¢Âλì") print "48"; # sort ¤·¤Æ uniq ¤¹¤ë¤È²¿¸Î¤«¤³¤¤¤Ä¤é 3 ¤Ä¤¬½Ð¤Æ¤³¤Ê¤¤¡£ else if ($3 == "°Ù(¤·)") print "49"; else if ($3 == "°Ù(¤¹)") print "50"; else if ($3 == "°Ù(¤»)") print "51"; } } ddskk-15.1.54/experimental/rdbms/awk/stroke.awk0000664000076600007660000000252307236647543021062 0ustar brutusbrutus# stroke.awk -- # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Sep 1, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: stroke.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # # This file is not part of SKK yet. # # SKK 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 versions 2, or (at your option) # any later version. # # SKK 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 SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # The format of output file is (delimiter is TAB); # # kanji stroke # # and how to convert; # # % gawk -f stroke.awk kanjidic | sort -n > temp6.txt # # Code /^[^#]/{ if (match($0, /S[0-9]+/) != 0) { stroke = substr($0, RSTART + 1, RLENGTH - 1); } else stroke = ""; printf("%s\t%s\n", stroke, $1); } # end of stroke.awk ddskk-15.1.54/experimental/rdbms/awk/kcode.awk0000664000076600007660000000253307236647543020641 0ustar brutusbrutus# kcode.awk -- # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Sep 1, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: kcode.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # # This file is not part of SKK yet. # # SKK 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 versions 2, or (at your option) # any later version. # # SKK 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 SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # The format of output file is (delimiter is TAB); # # kanji JIScode Unicode # # and how to convert; # # % gawk -f kcode.awk kanjidic > temp5.txt # # Code /^[^#]/{ if (match($0, /U[0-9a-z]+/) != 0) { unicode = substr($0, RSTART + 1, RLENGTH - 1); } else unicode = ""; printf("%s\t%s\t%s\n",$1, $2, unicode); } # end of kcode.awk ddskk-15.1.54/experimental/rdbms/awk/busyu_data.awk0000664000076600007660000000312007236647543021705 0ustar brutusbrutus# busyu_data.awk -- # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Sep 1, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: busyu_data.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # # This file is not part of SKK yet. # # SKK 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 versions 2, or (at your option) # any later version. # # SKK 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 SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # The format of output file is (delimiter is TAB); # # busyuID kanji yomi1 yomi2 yomi3 yomin... # # and how to convert; # # % gawk -f busyu.awk kanjidic | sort -n > temp4.txt # # Code /^[^#]/{ if (match($0, /B[0-9]+/) != 0) { busyuID = substr($0, RSTART + 1, RLENGTH - 1); printf("%s\t", busyuID); # busyuID } else { printf("\t"); } if (match($0, /C[0-9]+/) != 0) { busyuID2 = substr($0, RSTART + 1, RLENGTH - 1); printf("%s\t", busyuID2); # classic busyuID } else { printf("\t"); } printf("%s\n", $1); # kanji } # end of busyu_data.awk ddskk-15.1.54/experimental/rdbms/awk/busyu_base.awk0000664000076600007660000000346407236647543021721 0ustar brutusbrutus# busyu_base.awk -- # # Copyright (C) 1998 NAKAJIMA Mikio # # Author: NAKAJIMA Mikio # Created: Sep 1, 1998 # Last Modified: $Date: 2001/02/03 00:22:59 $ # Version: $Id: busyu_base.awk,v 1.2 2001/02/03 00:22:59 minakaji Exp $ # # This file is not part of SKK yet. # # SKK 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 versions 2, or (at your option) # any later version. # # SKK 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 SKK, see the file COPYING. If not, write to the Free # Software Foundation Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. # # Commentary: # The format of output file is (delimiter is TAB); # # busyuID kanji yomi1 yomi2 yomi3 yomin... # # and how to convert; # # % gawk -f busyu.awk kanjidic | sort -n > temp4.txt # # Code /^[^#]/{ if (match($0, /T2 [ ¤¡-¤ó]+/) != 0) { temp = substr($0, RSTART + 4, RLENGTH - 4); entries = split(temp, busyu, " "); if (match($0, /B[0-9]+/) != 0) { busyuID = substr($0, RSTART + 1, RLENGTH - 1); printf("%s\t", busyuID); # busyuID } else { printf("\t"); } if (match($0, /C[0-9]+/) != 0) { busyuID2 = substr($0, RSTART + 1, RLENGTH - 1); printf("%s\t", busyuID2); # classic busyuID } else { printf("\t"); } printf("%s", $1); # kanji for (i = 1; i <= entries; i++) printf("\t%s", busyu[i]); # yomi1, yomi2, yomiN... printf("\n"); } } # end of busyu_base.awk ddskk-15.1.54/experimental/rdbms/Makefile0000664000076600007660000000376307011166531017714 0ustar brutusbrutus# # Makefile for rdbms # SHELL = /bin/sh #NKF = nkf -e GAWK = jgawk SQLSHELL = psql CREATEDB = createdb PJISYO = ~/.skk-jisyo #KAKUTEI_JISYO = ~/.skk-jisyo.kakutei #INITIAL_JISYO = ~/.skk-jisyo.initial LJISYO = /usr/local/share/skk/SKK-JISYO.L 2JISYO = /usr/local/share/skk/SKK-JISYO.JIS2 KANJIDIC = kanjidic/kanjidic PUBDIC = pubdic+/pubdic.p # do NOT edit the following. all: maintable busyu kcode stroke hinsi .PHONY: all maintable: $(GAWK) -f ./awk/dicconv.awk $(PJISYO) | sort | uniq - > ./tmp/private.txt $(GAWK) -f ./awk/dicconv.awk $(LJISYO) | sort | uniq - > ./tmp/large.txt # $(NKF) $(2JISYO) | $(GAWK) -f ./awk/dicconv.awk - | sort | uniq - > ./tmp/jis2.txt #-$(NKF) $(KAKUTEI_JISYO) | $(GAWK) -f ./awk/dicconv.awk - | sort | uniq - > ./tmp/kakutei.txt #-$(NKF) INITIAL_JISYO | $(GAWK) -f ./awk/dicconv.awk - | sort | uniq - > ./tmp/initial.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/createtbl.sql busyu: $(GAWK) -f ./awk/busyu_base.awk $(KANJIDIC) | sort -n > ./tmp/busyu_base.txt $(GAWK) -f ./awk/busyu_data.awk $(KANJIDIC) | sort -n > ./tmp/busyu_data.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/busyu.sql kcode: $(GAWK) -f ./awk/kcode.awk $(KANJIDIC) > ./tmp/kcode.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/kcode.sql stroke: $(GAWK) -f ./awk/stroke.awk $(KANJIDIC) | sort -n > ./tmp/stroke.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/stroke.sql hinsi: $(GAWK) 'BEGIN {OFS = "\t";}{split($$3, entry, "/"); print $$1, $$2, entry[1]}' $(PUBDIC) > ./tmp/temp.txt #$(GAWK) '{print $$3}' ./tmp/temp.txt | sort | uniq -d | \ # $(GAWK) '$$1 !~/^$$/{printf("%d\t%s\n", NR - 2, $$0)}' - > ./tmp/hinsi_base.txt $(GAWK) -f ./awk/hinsi_data.awk ./tmp/temp.txt > ./tmp/hinsi_data.txt -$(CREATEDB) skk $(SQLSHELL) skk -e < ./sql/hinsi.sql .PHONY: clean clean: -rm -f *~ ./tmp/private.txt ./tmp/large.txt ./tmp/jis2.txt ./tmp/busyu_base.txt \ ./tmp/busyu_data.txt ./tmp/kcode.txt ./tmp/stroke.txt ./tmp/kakutei.txt \ ./tmp/initial.txt ./tmp/temp*.txt /tmp/hinsi_data.txt ddskk-15.1.54/experimental/rdbms/skk-rdbms.el0000664000076600007660000010571511701311063020464 0ustar brutusbrutus;;; skk-rdbms.el --- SKK Relational Data Base Management System. -*- coding: iso-2022-jp -*- ;; Copyright (C) 1998, 2000, 2003 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: NAKAJIMA Mikio ;; Version: $Id: skk-rdbms.el,v 1.14 2012/01/05 12:06:11 skk-cvs Exp $ ;; Keywords: japanese, rdbms ;; Last Modified: $Date: 2012/01/05 12:06:11 $ ;; This file is not part of Daredevil SKK yet. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; Currently this program only supports PostgreSQL, but may work with ;; other rdbms (such as mSQL or mySQL) by slightly changes. ;; SQL $B$N%7%'%k$r(B Emacs $B$N%P%C%U%!$NCf$G5/F0$7$F!"(BSQL $B%7%'%k$K%3%^%s%I(B ;; $B$rAw$k!"$H$$$&ItJ,$O!"(BEmacs Calc $B$N(B Gnuplot $B%$%s%?!<%U%'%$%9ItJ,$G(B ;; $B$"$k(B calc-graph.el $B$r;29M$K$7$?!#(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) ;; User variables. (defvar skk-rdbms-shell "psql" "*$B%G!<%?%Y!<%9K\BN$H@\B3$9$k$?$a$N%7%'%k%W%m%0%i%`!#(B") (defvar skk-rdbms-shell-args "skk" "*skk-rdbms-shell $B$N0z?t!#(B $B%G%#%U%)%k%H$G$O!"(Bskk $B%G!<%?%Y!<%9$K@\B3$9$k$?$a$N0z?t$r;XDj$7$F$$$k!#(B") (defvar skk-rdbms-process-coding-system (cdr (assoc "euc" skk-coding-system-alist)) "*skk-rdbms-shell $B$H$N%W%m%;%9DL?.$K;H$&%3!<%G%#%s%0%7%9%F%`!#(B") (defvar skk-rdbms-shell-prompt-regexp "^skk=> " "*skk-rdbms-shell $B$N%W%m%s%W%H$r<($9@55,I=8=!#(B") (defvar skk-rdbms-shell-version-check-function nil "*skk-rdbms-shell $B$N%P!<%8%g%s$r%A%'%C%/$9$k4X?t!#(B skk-rdbms-shell $B$N%P!<%8%g%s$K$h$C$F0[$J$kF0$-$r$7$?$$>l9g$K;HMQ$9$k!#(B") ;; $B2?8N$+(B process-send-string $B$7$?%3%^%s%I$ND>8e$K5"$C$F$/$kJ8;zNs$N@h(B ;; $BF,$K(B ^M $B$,IU$/!#(B ;; SQL $BJ8$NESCf$K2~9T$rF~$l$k$H(B psql $B$NBh(B 2 $B%W%m%s%W%H$,=P$k!#$3$l$r@55,I=8=$G(B ;; $BI=8=$7$F8!:w$9$k$H%*!<%P!<%X%C%I$,Bg$-$/!"3NDj$7$F$+$i$N<-=q99?7$,CY$/$J$k!#(B (defvar skk-rdbms-error-regexp "^ *ERROR: +\\(.+\\)$" "*skk-rdbms-shell $B$,=P$9%(%i!<%a%C%;!<%8$N@55,I=8=!#(B \(match-string 1\)$B$G%(%i!<$NK\BN$r@Z$j=P$;$k$h$&$K@55,I=8=$r=q$/!#(B") (defvar skk-rdbms-update-fail-regexp "^ *UPDATE 0$" "*$B8D?M<-=q%F!<%V%k$N(B UPDATE $B$K<:GT$7$?$H$-$K(B skk-rdbms-shell $B$,=P$9%a%C%;!<%8$N@55,I=8=!#(B") (defvar skk-rdbms-shell-special-command-regexp "^\\\\[a-z?!]+$" "*skk-rdbms-shell $B$N%3%^%s%I$G(B SQL $B%3%^%s%I0J30$N%3%^%s%I$rI=$9@55,I=8=!#(B") (defvar skk-rdbms-kill-command "\\q" "*skk-rdbms-shell $B=*N;$N$?$a$K;HMQ$9$k%3%^%s%I!#(B") (defvar skk-rdbms-SQL-wildcard "%" "*LIKE $B1i;;;R$G%Q%?!<%s%^%C%A%s%0$K;H$o$l$k%o%$%k%I%+!<%I!#(B") (defvar skk-rdbms-private-jisyo-table (concat (user-login-name) "_private_jisyo") "*$B8D?M<-=q$N%F!<%V%kL>!#(B CREATE TABLE YOUR-LOGIN-NAME_private_jisyo \( okuriari int2 NOT NULL, yomi varchar\(50\) NOT NULL, -- longest entry of yomi in SKK-JISYO.L is -- '$B$[$/$j$/$;$s$?$s$+$,$/$.$8$e$D$@$$$,$/$$$s$@$$$,$/(B' kanji text NOT NULL, okurigana varchar\(4\), date abstime NOT NULL \); $B%F!<%V%kL>$N(B YOUR-LOGIN-NAME $B$N8D=j$O!"(BEmacs $B$N(B user-login-name $B$,JV$9CM$r=q$/!#(B") (defvar skk-rdbms-public-jisyo-table "large_jisyo" "*$B6&M-<-=q$N%F!<%V%kL>!#(B CREATE TABLE large_jisyo \( okuriari int2 NOT NULL, yomi varchar\(50\) NOT NULL, kanji text NOT NULL \);") (defvar skk-rdbms-jis2-jisyo-table "jis2_jisyo" "*JIS $BBh(B 2 $B?e=`$NJ8;z$r=8$a$?<-=q%F!<%V%kL>!#(B CREATE TABLE jis2_jisyo \( okuriari int2 NOT NULL, yomi varchar\(50\) NOT NULL, kanji text NOT NULL \);") (defvar skk-rdbms-kakutei-jisyo-table (concat (user-login-name) "_kakutei_jisyo") "*$B3NDj<-=q$N%F!<%V%kL>!#(B CREATE TABLE YOUR-LOGIN-NAME_kakutei_jisyo ( okuriari int2 NOT NULL, yomi varchar(50) NOT NULL, kanji text NOT NULL ); $B%F!<%V%kL>$N(B YOUR-LOGIN-NAME $B$N8D=j$O!"(BEmacs $B$N(B user-login-name $B$,JV$9CM$r=q$/!#(B") (defvar skk-rdbms-initial-jisyo-table (concat (user-login-name) "_initial_jisyo") "*initial $B%5!<%A<-=q$N%F!<%V%kL>!#(B CREATE TABLE YOUR-LOGIN-NAME_kakutei_jisyo ( okuriari int2 NOT NULL, yomi varchar(50) NOT NULL, kanji text NOT NULL ); $B%F!<%V%kL>$N(B YOUR-LOGIN-NAME $B$N8D=j$O!"(BEmacs $B$N(B user-login-name $B$,JV$9CM$r=q$/!#(B") (defvar skk-rdbms-kcode-table "kcode" "*$BJ8;z$N(B JIS $B%3!<%I5Z$S(B Unicode $B$r=8$a$?%F!<%V%kL>!#(B CREATE TABLE kcode \( kanji varchar\(2\) NOT NULL PRIMARY KEY, JIScode char\(4\) NOT NULL UNIQUE, Unicode char\(4\) NOT NULL UNIQUE \);") (defvar skk-rdbms-stroke-table "stroke" "*$B2h?t%G!<%?$r=8$a$?%F!<%V%kL>!#(B CREATE TABLE stroke \( stroke int2 NOT NULL, kanji varchar\(2\) NOT NULL PRIMARY KEY \);") (defvar skk-rdbms-busyu-base-table "busyu_base" "*$BIt!#(B CREATE TABLE busyu_base \( busyuID int2 NOT NULL, -- radical \(Busyu\) number in the Nelson New -- Japanese-English Character Dictionary. -- why aren't they unique? busyuID2 int2, -- classic radical number kanji varchar\(2\), -- $BItr7o$rIU$1$J$$!#(B yomi1 varchar\(16\) NOT NULL, yomi2 varchar\(16\), yomi3 varchar\(16\), yomi4 varchar\(16\) \);") (defvar skk-rdbms-busyu-data-table "busyu_data" "*$B3F4A;z$NIt!#(B CREATE TABLE busyu_data \( busyuID int2 NOT NULL, -- radical \(Busyu\) number. busyuID2 int2, -- classic radical number kanji varchar\(2\) NOT NULL UNIQUE \);") (defvar skk-rdbms-hinsi-base-table "hinsi_base" "*$BIJ;l$K4X$9$k%G!<%?$r=8$a$?%F!<%V%kL>!#(B CREATE TABLE hinsi_base \( hinsi varchar\(23\) NOT NULL, -- longest is `$B%59T(B($B$9$k(B)&$BL>;l2=@\Hx8l(B' hinsiID int2 NOT NULL, hinsiID2 int2 \);") (defvar skk-rdbms-hinsi-data-table "hinsi_data" "*$B3F4A;z$NIJ;l$K4X$9$k%G!<%?$r=8$a$?%F!<%V%kL>!#(B CREATE TABLE hinsi_data \( yomi varchar\(26\) NOT NULL, -- longest is `$B$P$C$/$W$m$Q$2!<$7$g$s$[$&(B' kanji varchar\(24\) NOT NULL, -- longest is `$B%*%Z%l!<%F%#%s%0%7%9%F%`(B' hinsiID int2 NOT NULL, hinsiID2 int2 \);") (defvar skk-rdbms-private-jisyo-dump "~/.skk-jisyo.dump" "*skk-rdbms-private-jisyo-table $B$r%@%s%W$7$FJ]B8$9$k%U%!%$%k!#(B") (defvar skk-rdbms-dump-error "~/.skk-dump.error" "*skk-rdbms-private-jisyo-dump $B$r%@%s%W$9$k:]$KH/@8$7$?%(%i!<%a%C%;!<(B $B%8$,J]B8$5$l$k%U%!%$%k!#(B") ;; $B%f!<%6!$$(B SQL $BJ8$OD9$/$F$bL5M}LpM}(B 1 $B9T$GI=8=$9$k$+!"7y$J$i:Y@Z$l$K@Z$C$F(B ;; concat $B$G$D$J$0!#(B "SELECT kanji FROM %s WHERE busyuID = (SELECT busyuID FROM %s WHERE yomi1 = '%s' OR yomi2 = '%s' OR yomi3 = '%s' OR yomi4 = '%s');" skk-rdbms-busyu-data-table skk-rdbms-busyu-base-table ,key ,key ,key ,key)) (defmacro skk-rdbms-SQL-search-stroke-command (stroke) `(format "SELECT kanji FROM %s WHERE stroke = %s;" skk-rdbms-stroke-table ,stroke)) (defmacro skk-rdbms-search-sahen-command (dakuten) `(format "SELECT kanji FROM %s WHERE yomi = '%s' AND hinsiID = (SELECT hinsiID FROM %s WHERE hinsi = '%s');" skk-rdbms-hinsi-data-table skk-henkan-key skk-rdbms-hinsi-base-table (if dakuten "$B%69T(B($B$:$k(B)" "$B%59T(B($B$9$k(B)"))) (defvar skk-rdbms-cutoff-output-function (function (lambda () (save-match-data (save-excursion (let (candidates pos) (if (not (re-search-backward "^(\\([0-9]+\\) rows*)$" skk-rdbms-last-process-point t)) (error "") (setq candidates (match-string 1) pos (point)) (if (string= candidates "0") nil (forward-line (- (string-to-number candidates))) (beginning-of-line) ; fail safe (split-string (buffer-substring-no-properties pos (point)) " *\n")))))))) "*skk-rdbms-shell $B$K$h$C$F8!:w$7$?%"%&%H%W%C%H$r@Z$j=P$7$F2C9)$9$k4X?t!#(B skk-rdbms-public-jisyo-table $B$d(B skk-rdbms-jis2-jisyo-table $B$J$I$KMxMQ$9$k!#(B $B8uJd$NJ8;zNs$r%j%9%H$K$7$FJV$9!#(B skk-rdbms-working-buffer $B$NCf$G%3!<%k$5$l$k!#(B") (defvar skk-rdbms-cutoff-output-function-2 (function (lambda () (save-match-data (save-excursion (let (candidates var) (if (not (re-search-backward "^(\\([0-9]+\\) rows*)$" skk-rdbms-last-process-point t)) (error "") (setq candidates (string-to-number (match-string 1))) (if (= candidates 0) nil (beginning-of-line) ; fail safe ;; $B$3$&$d$C$F0l$D$:$D@Z$j=P$9$s$8$c$J$/$F!"@55,I=8=$+$J$s$+(B ;; $B$G%Q%C$H=hM}$G$-$^$;$s$+$M!#(B (while (> candidates 0) (forward-line -1) (setq var (cons (buffer-substring-no-properties (point) ;; yomi $B$OESCf$K6uGrJ8;z$r5v$5$J$$$N$G!"(B ;; $BA0$+$i6uGrJ8;z0J30$r%9%-%C%W$7$F$b(B OK$B!#(B (progn (skip-chars-forward "^ ") (point))) var)) (beginning-of-line) (setq candidates (1- candidates))) var))))))) "*skk-rdbms-shell $B$K$h$C$F8!:w$7$?%"%&%H%W%C%H$r@Z$j=P$7$F2C9)$9$k4X?t!#(B $B@Z$j=P$9BP>]$N=PNO$O!"J#?t%+%i%`$N:G=i$N%+%i%`$G!"@Z$j=P$9J8;zNs$OESCf$K6uGrJ8;z(B $B$r5v$5$J$$!"$H$$$&>r7o2<$G;HMQ$9$k!#(B $B8uJd$NJ8;zNs$r%j%9%H$K$7$FJV$9!#(Bskk-rdbms-working-buffer $B$NCf$G%3!<%k$5$l$k!#(B") (defvar skk-rdbms-cutoff-output-function-3 (function (lambda () (save-match-data (save-excursion (let (candidates) (if (not (re-search-backward "^(\\([0-9]+\\) rows*)$" skk-rdbms-last-process-point t)) (error "") (setq candidates (match-string 1)) (if (not (string= candidates "1")) (skk-error "$B<-=q$N8uJd?t$r?t$($k$N$K<:GT$7$^$7$?(B" "Failed counting jisyo candidates") (forward-line -1) (skip-chars-forward " ") (string-to-number (buffer-substring-no-properties (point) (progn (end-of-line) (point))))))))))) "*skk-rdbms-shell $B$K$h$C$F8!:w$7$?%"%&%H%W%C%H$r@Z$j=P$7$F2C9)$7!"<-=q8uJd?t$rJV$94X?t!#(B skk-rdbms-working-buffer $B$NCf$G%3!<%k$5$l$k!#(B") (defvar skk-rdbms-save-jisyo-function (function (lambda (quiet) (if (not (skk-rdbms-process-alive)) (if (not quiet) (progn (skk-message "SKK $B%G!<%?%Y!<%9$rA]=|(B/$B%@%s%W$9$kI,MW$O$"$j$^$;$s(B" "No need to vacuum/dump SKK database") (sit-for 1))) (let ((wbuf (get-buffer-create " *SKK private jisyo dump*")) v) (unwind-protect (progn (if (not quiet) (skk-message "SKK $B%G!<%?%Y!<%9$rA]=|$7$F$$$^$9(B..." "Vacuuming SKK database...")) (if (eq this-command 'save-buffers-kill-emacs) (skk-record-jisyo-data)) ;; vacuum $B$,=*$o$i$J$$Fb$K(B skk-rdbms-kill $B$,%3!<%k$5$l$F$7$^$&$H$I(B ;; $B$&$J$k$s$@$m$&$+!)(B (skk-rdbms-run-SQL-command (format "VACUUM %s;" skk-rdbms-private-jisyo-table)) (if (not quiet) (progn (skk-message "SKK $B%G!<%?%Y!<%9$rA]=|$7$F$$$^$9(B...$B40N;!*(B" "Vacuuming SKK database...done") (sit-for 1))) (if (and (file-exists-p skk-rdbms-private-jisyo-dump) (> 86399 (skk-time-difference (nth 5 (file-attributes skk-rdbms-private-jisyo-dump)) (current-time)))) nil ;; $BA02s%@%s%W$7$?$N$,(B 1 $BF|0J>eA0$@$C$?$i!"%@%s%W$9$k!#(B (if (not quiet) (skk-message "SKK $B%G!<%?%Y!<%9$r%@%s%W$7$F$$$^$9(B..." "Dumping out SKK database...")) (setq v (= (call-process shell-file-name nil (list wbuf skk-rdbms-dump-error) t "-c" (format "pg_dump skk -t %s" skk-rdbms-private-jisyo-table)) 0)) (cond ((and (not quiet) v) (save-excursion (set-buffer wbuf) (write-region (point-min) (point-max) skk-rdbms-private-jisyo-dump nil 'nomsg)) (skk-message "SKK $B%G!<%?%Y!<%9$r%@%s%W$7$F$$$^$9(B...$B40N;!*(B" "Dumping out SKK database...done") (sit-for 1)) ((not v) (skk-error "SKK $B%G!<%?%Y!<%9$r%@%s%W$9$k$3$H$K<:GT$7$^$7$?(B" "Failed to dump out SKK database"))))) (kill-buffer wbuf)))))) "*$B%G!<%?%Y!<%9%W%m%;%9$N=*N;;~$K8D?M<-=q$K4X$9$k=hM}$r9T$J$&4X?t!#(B $B%G%#%U%)%k%H$O(B PostgreSQL $B@lMQ%3%^%s%I$H$J$C$F$$$k!#(B") (defvar skk-rdbms-load-hook nil "*skk-rdbms.el $B$r%m!<%I$7$?$H$-$N%U%C%/!#(B") ;; for test use. (setq skk-search-prog-list '(;;(skk-rdbms-search-kakutei-jisyo-table) (skk-rdbms-search-jisyo-table skk-rdbms-private-jisyo-table) (skk-rdbms-sahen-search) (skk-rdbms-search-jisyo-table skk-rdbms-public-jisyo-table) ;;(skk-okuri-search) (skk-rdbms-search-jisyo-table skk-rdbms-jis2-jisyo-table))) (setq skk-server-host nil skk-servers-list nil) ;; System constants and variables. (defvar skk-rdbms-last-process-point nil) (defvar skk-rdbms-process nil) (defvar skk-rdbms-working-buffer nil) (defvar skk-rdbms-no-wait nil) (defvar skk-rdbms-completion-index 1) (defvar skk-rdbms-completion-list nil) (defvar skk-rdbms-no-update-command nil) ;;(defvar skk-rdbms-kakutei-word nil) (setq skk-update-jisyo-function 'skk-rdbms-update-jisyo) (setq skk-save-jisyo-function 'skk-rdbms-save-jisyo) (setq skk-count-jisyo-candidates-function 'skk-rdbms-count-jisyo-candidates) (setq skk-completion-function 'skk-rdbms-completion) (setq skk-previous-completion-function 'skk-rdbms-previous-completion) (setq skk-okuri-search-function 'skk-rdbms-okuri-search) (setq skk-public-jisyo-to-be-searched-function 'skk-rdbms-public-jisyo-to-be-searched) (defun skk-rdbms-init () (or (skk-rdbms-process-alive) (let ((process-connection-type t) (cbuf (current-buffer)) origin) (if skk-rdbms-process (progn (delete-process skk-rdbms-process) (setq skk-rdbms-process nil))) (or (and skk-rdbms-working-buffer (buffer-name skk-rdbms-working-buffer)) (setq skk-rdbms-working-buffer (get-buffer-create " *SKK rdbms*"))) ;; $BF0$$$?%]%$%s%H$rJ]B8$9$k$?$a(B save-excursion $B$O;H$o$J$$!#(B (unwind-protect (progn (set-buffer skk-rdbms-working-buffer) (buffer-disable-undo) (setenv "PAGER" nil) (insert "\nStarting SKK rdbms...\n\n") (skk-message "SKK $B%G!<%?%Y!<%9$r5/F0$7$F$$$^$9(B..." "Starting SKK rdbms...") (setq origin (point)) (condition-case nil (progn (setq skk-rdbms-process (start-process "SKK rdbms" skk-rdbms-working-buffer skk-rdbms-shell skk-rdbms-shell-args)) (process-kill-without-query skk-rdbms-process) (cond ((featurep 'xemacs) (set-process-input-coding-system skk-rdbms-process skk-rdbms-process-coding-system) (set-process-output-coding-system skk-rdbms-process skk-rdbms-process-coding-system)) (t (set-process-coding-system skk-rdbms-process skk-rdbms-process-coding-system skk-rdbms-process-coding-system)))) (file-error (skk-error "$B%7%9%F%`>e$K(B \"%s\" $B$,8+$D$+$j$^$;$s(B" "Sorry, can't find \"%s\" on your system" skk-rdbms-shell))) (skk-save-point (while (and (not (progn (goto-char origin) (re-search-forward skk-rdbms-shell-prompt-regexp nil t))) (memq (process-status skk-rdbms-process) '(run stop))) (accept-process-output skk-rdbms-process))) (or (memq (process-status skk-rdbms-process) '(run stop)) (skk-error "SKK $B%G!<%?%Y!<%9%W%m%;%9$r%9%?!<%H$9$k$3$H$,$G$-$^$;$s(B" "Unable to start SKK database process")) (and skk-rdbms-shell-version-check-function (funcall skk-rdbms-shell-version-check-function)) (goto-char (process-mark skk-rdbms-process)) (setq skk-rdbms-last-process-point (point))) (skk-message "SKK $B%G!<%?%Y!<%9$r5/F0$7$F$$$^$9(B...$B40N;(B!" "Starting SKK rdbms...done") (set-buffer cbuf))))) (defun skk-rdbms-process-alive () (and skk-rdbms-process skk-rdbms-working-buffer (buffer-name skk-rdbms-working-buffer) (memq (process-status skk-rdbms-process) '(run stop)))) (defun skk-rdbms-kill () "SKK $B%G!<%?%Y!<%9$N%W%m%;%9$r;&$9!#(B" (interactive) (if (not (skk-rdbms-process-alive)) ;; $BKLEM?@7}$N@$3&$G$9$J(B...$B!#(B (skk-message "SKK $B%G!<%?%Y!<%9%W%m%;%9$O4{$K;`$s$G$^$9(B" "SKK database process has already died") (or (eq this-command 'save-buffers-kill-emacs) (skk-rdbms-save-jisyo)) (let ((skk-rdbms-no-wait t)) (skk-rdbms-run-SQL-command skk-rdbms-kill-command) (sit-for 1) (and (process-status skk-rdbms-process) (delete-process skk-rdbms-process)) (setq skk-rdbms-process nil) (skk-message "SKK $B%G!<%?%Y!<%9%W%m%;%9$,;`$K$^$7$?(B" "SKK database process died")))) (defun skk-rdbms-search-jisyo-table (table) (and skk-use-numeric-conversion (setq skk-henkan-key (skk-compute-numeric-henkan-key skk-henkan-key))) (let* ((private-table-p (string= table skk-rdbms-private-jisyo-table)) (command (cond (private-table-p (skk-rdbms-SQL-search-private-jisyo-command)) (t (skk-rdbms-SQL-search-jisyo-command table))))) (skk-rdbms-run-SQL-command command skk-rdbms-cutoff-output-function))) (defun skk-rdbms-search-kakutei-jisyo-table () (prog1 (setq skk-kakutei-henkan-flag (skk-rdbms-run-SQL-command (skk-rdbms-SQL-search-jisyo-command skk-rdbms-kakutei-jisyo-table) skk-rdbms-cutoff-output-function)) (and skk-kakutei-henkan-flag (setq skk-rdbms-no-update-command t)))) (defun skk-rdbms-run-SQL-command (command &optional cutoff-func) (combine-after-change-calls (save-match-data (if (and (not (string-match ";$" command)) skk-rdbms-shell-special-command-regexp (not (string-match skk-rdbms-shell-special-command-regexp command))) (skk-error "%s $B$N%3%^%s%I$KJ8K!%_%9$,$"$j$^$9(B" "A grammatical mistake of %s command exists" skk-rdbms-shell) (setq command (concat command " \n"))) (let ((cbuf (current-buffer)) (okuri-char skk-okuri-char) (henkan-okurigana skk-henkan-okurigana) (henkan-key skk-henkan-key) pmark var) (skk-rdbms-init) (accept-process-output) (setq pmark (process-mark skk-rdbms-process)) ;; $BF0$$$?%]%$%s%H$rJ]B8$9$k$?$a(B save-excursion $B$O;H$o$J$$!#(B (unwind-protect (catch 'exit (set-buffer skk-rdbms-working-buffer) ;; $B%P%C%U%!%m!<%+%kJQ?t$r0\$7$F$*$/!#(B (setq skk-okuri-char okuri-char skk-henkan-okurigana henkan-okurigana skk-henkan-key henkan-key) ;; $B%]%$%s%H$OJ]B8$5$l$F$$$k$N$GK\MhMW$i$J$$$O$:$@$,!#(B (goto-char pmark) (setq skk-rdbms-last-process-point (point)) (insert command) (set-marker pmark (point)) (process-send-string skk-rdbms-process command) (accept-process-output (and (not skk-rdbms-no-wait) skk-rdbms-process)) (goto-char skk-rdbms-last-process-point) ;; $B$3$&$7$J$$$H(B psql $B$,$b$?$b$?$7$F$$$k$H(B search $B$K<:GT$9$k>l(B ;; $B9g$,$"$k!#(B (while (not (re-search-forward skk-rdbms-shell-prompt-regexp pmark t)) ;; \q $B%3%^%s%I$rAw$C$?$i%W%m%s%W%H$O5"$C$F$3$J$$!#(B (if (eq (process-status skk-rdbms-process) 'exit) (throw 'exit nil)) (accept-process-output)) (skk-rdbms-check-for-errors) (goto-char pmark) (and cutoff-func (setq var (funcall cutoff-func)))) (set-buffer cbuf) var))))) (defun skk-rdbms-check-for-errors () ;; $B%(%i!<8e$N%]%$%s%H0LCV$rJ]8n$9$k$?$a$K(B if $B@a$r(B save-excursion $B$G$D$D$`!#(B (save-match-data (if (save-excursion (set-buffer skk-rdbms-working-buffer) (goto-char skk-rdbms-last-process-point) (re-search-forward skk-rdbms-error-regexp nil t)) (error "%s" (concat "SQL error: " (match-string 1)))))) (defun skk-rdbms-update-jisyo (word &optional purge) (if skk-rdbms-no-update-command (setq skk-rdbms-no-update-command nil) (and (> skk-okuri-index-min -1) (setq word (skk-remove-common word))) (and skk-use-numeric-conversion (setq skk-henkan-key (skk-compute-numeric-henkan-key skk-henkan-key))) (let ((command (cond (purge (skk-rdbms-SQL-delete-command word)) ;; $B%_%K%P%C%U%!$GEPO?$7$?>l9g(B (skk-henkan-in-minibuff-flag (skk-rdbms-SQL-insert-command word)) (t (skk-rdbms-SQL-update-command word)))) ignore) (skk-rdbms-run-SQL-command command) (cond (purge (cond ((skk-public-jisyo-has-entry-p skk-henkan-okurigana word) (skk-rdbms-run-SQL-command (skk-rdbms-SQL-regexp-delete-command "^\\\\(skk-ignore-dic-word .*\\\\)")) (setq ignore (car (skk-compose-ignore-entry skk-henkan-list word))) (skk-rdbms-run-SQL-command (skk-rdbms-SQL-insert-command ignore))))) ((and (not skk-henkan-in-minibuff-flag) ;; L $B<-=q$J$I$+$iF@$?%(%s%H%j$@$+$i8D?M<-=q$N(B UPDATE $B$K<:GT$7$?!#(B (skk-rdbms-update-jisyo-failp)) ;; $B:G=i$K(B SELECT $B$G%l%3!<%I$,$"$k$+$I$&$+%A%'%C%/$7$F$+$i(B ;; UPDATE $B$9$k$N$,K\Ev$@$m$&$1$I!"$=$&$9$k$H7k9=CY$$!#(B (skk-rdbms-run-SQL-command (skk-rdbms-SQL-insert-command word)))) (setq skk-henkan-in-minibuff-flag nil)))) (defun skk-rdbms-update-jisyo-failp () (save-match-data (save-excursion (set-buffer skk-rdbms-working-buffer) (goto-char (process-mark skk-rdbms-process)) (re-search-backward skk-rdbms-update-fail-regexp skk-rdbms-last-process-point t)))) (defun skk-rdbms-save-jisyo (&optional quiet) (let ((inhibit-quit t)) (funcall skk-rdbms-save-jisyo-function quiet) (skk-set-cursor-properly))) (defun skk-rdbms-restore-private-jisyo (force) "$B%@%s%W%U%!%$%k$+$i8D?M<-=q%G!<%?%Y!<%9$rI|85$9$k!#(B C-u M-x skk-rdbms-restore-private-jisyo $B$9$k$H3NG'$J$7$KI|85$9$k!#(B" (interactive "P") (if (and (not force) (not (skk-yes-or-no-p "$B%@%s%W%U%!%$%k$+$i8D?M<-=q%G!<%?%Y!<%9$rI|85$7$^$9!#$h$m$7$$$G$9$+!)(B " "Restore private jisyo database from dump file? "))) (progn (ding) (skk-message "$B%@%s%W%U%!%$%k$+$i$N8D?M<-=q%G!<%?%Y!<%9$NI|85$rCf;_$7$^$7$?(B" "Stop restoring private jisyo database from dump file")) (skk-message "$B%@%s%W%U%!%$%k$+$i8D?M<-=q%G!<%?%Y!<%9$rI|85$7$F$$$^$9(B..." "Restoring private jisyo database from dump file...") (condition-case nil (skk-rdbms-run-SQL-command (format "DROP TABLE %s;" skk-rdbms-private-jisyo-table)) ;; error will occur if the table does not exist. (error nil)) (if (= (call-process shell-file-name nil (list nil skk-rdbms-dump-error) t "-c" (format "%s %s < %s" skk-rdbms-shell ; PostgreSQL only command. skk-rdbms-shell-args (expand-file-name skk-rdbms-private-jisyo-dump))) 0) (skk-message "$B%@%s%W%U%!%$%k$+$i8D?M<-=q%G!<%?%Y!<%9$rI|85$7$F$$$^$9(B...$B40N;(B!" "Restoring private jisyo database from dump file...done!") (skk-error "$B%@%s%W%U%!%$%k$+$i$N8D?M<-=q%G!<%?%Y!<%9$NI|85$K<:GT$7$^$7$?(B" "Failed to restore private jisyo database from dump file")))) (defun skk-rdbms-count-jisyo-candidates (table) (if (interactive-p) (message "Counting jisyo candidates...")) (skk-rdbms-run-SQL-command (format "SELECT COUNT(*) FROM %s;" table) skk-rdbms-cutoff-output-function-3)) (defun skk-rdbms-public-jisyo-to-be-searched () (list 'skk-rdbms-search-jisyo-table 'skk-rdbms-public-jisyo-table)) (defun skk-rdbms-completion (first) (require 'skk-comp) (let (c-word) (skk-kana-cleanup 'force) (if (or first skk-dabbrev-like-completion) (setq skk-completion-word (buffer-substring-no-properties skk-henkan-start-point (point)) ;; 0th $B$K$OJd40$7$h$&$H$9$k85$N8l$rF~$l$k$N$G!"%9%-%C%W!#(B skk-rdbms-completion-index 1)) (if (string= skk-completion-word "") (skk-error "$B6uJ8;z$+$iJd40$9$k$3$H$O$G$-$^$;$s!*(B" "Cannot complete an empty string!")) (if (or first skk-dabbrev-like-completion) (setq skk-rdbms-completion-list (skk-rdbms-run-SQL-command (skk-rdbms-SQL-search-completion-word-command) skk-rdbms-cutoff-output-function))) (setq skk-rdbms-completion-list (cons skk-completion-word (delete skk-completion-word skk-rdbms-completion-list)) c-word (nth skk-rdbms-completion-index skk-rdbms-completion-list)) (if (null c-word) (if skk-japanese-message-and-error (error "\"%s\" $B$GJd40$9$Y$-8+=P$78l$O(B%s$B$"$j$^$;$s(B" skk-completion-word (if first "" "$BB>$K(B")) (error "No %scompletions for \"%s\"" (if first "" "more ") skk-completion-word)) (setq skk-rdbms-completion-index (1+ skk-rdbms-completion-index)) (delete-region skk-henkan-start-point (point)) (insert c-word)))) (defun skk-rdbms-previous-completion () (require 'skk-comp) (let ((inhibit-quit t) c-word) (catch 'exit (while (not c-word) (setq skk-rdbms-completion-index (1- skk-rdbms-completion-index)) ;; (nth -1 '(A B C D)) $B$O(B A $B$rJV$9(B...$B!#(B (if (> 0 skk-rdbms-completion-index) (throw 'exit nil) (setq c-word (nth skk-rdbms-completion-index skk-rdbms-completion-list))) (if (string= c-word (buffer-substring-no-properties skk-henkan-start-point (point))) ;; $B%]%C%W$7$?8l$,%P%C%U%!$N%]%$%s%HD>A0$K$"$kJ8;zNs$HF1$8(B ;; $B$@$C$?$i(B 1 $B$D$r=$@0$7$F$*$/!#(B (setq this-command 'skk-completion) (if (not c-word) (skk-error "\"%s\"$B$GJd40$9$Y$-8+=P$78l$OB>$K$"$j$^$;$s(B" "No more previous completions for \"%s\"" skk-completion-word) (delete-region skk-henkan-start-point (point)) (insert c-word)))) (defun skk-rdbms-okuri-search () (require 'skk-auto) (let* ((inhibit-quit t) ;; "$B$?$A$"$2$k(B" -> (53825 53794 53810 53867) == (?$B$A(B ?$B$"(B ?$B$2(B ?$B$k(B) (okurigana-list (cdr (append skk-henkan-key nil))) (henkan-key-length (length skk-henkan-key)) (length skk-kanji-len) (original-henkan-key skk-henkan-key) var full-okurigana kanji) (catch 'exit (while (> henkan-key-length length) (let ((skk-henkan-okurigana (char-to-string (car okurigana-list))) ; "$B$A(B" skk-okuri-char skk-henkan-key next-okurigana) (if (string= skk-henkan-okurigana "$B$C(B") (progn ;; $BB%2;!V$C!W$@$C$?$iL>$rC;$/$7$F!"(B (setq okurigana-list (cdr okurigana-list) ;; skk-henkan-key $B$rD9$/$9$k!#(B length (+ length skk-kanji-len)))))) ;; ("$BN)$A>e$2$k(B" "$B7P$A$"$2$k(B" "$B7z$A$"$2$k(B" "$BCG$A$"$2$k(B" "$BN)$A$"$2$k(B") var)) (defun skk-rdbms-sahen-search () (save-match-data (if (not (or (and skk-okuri-char (memq (string-to-char skk-okuri-char) '(?s ?z))) (and (not skk-okuri-char) (string-match "[$B$9$:(B]$B$k(B$" skk-henkan-key)))) nil (let (l) (setq skk-okuri-index-min (if (= skk-okuri-index-min -1) (length skk-henkan-list) (min (length skk-henkan-list) skk-okuri-index-min)) l (skk-rdbms-sahen-search-1) skk-okuri-index-max (max skk-okuri-index-min (+ skk-okuri-index-min (length l)))) l)))) (defun skk-rdbms-sahen-search-1 () (let* ((okurigana (and (not skk-okuri-char) (string-match "[$B$9$:(B]$B$k(B$" skk-henkan-key) (substring skk-henkan-key (match-beginning 0)))) (dakuten (cond ((and skk-okuri-char (eq ?z (car (memq (string-to-char skk-okuri-char) '(?s ?z)))))) ((and okurigana (string= "$B$:(B" (char-to-string (aref okurigana 0))))))) (skk-henkan-key (cond (skk-okuri-char (substring skk-henkan-key 0 (1- (length skk-henkan-key)))) (t (substring skk-henkan-key 0 (match-beginning 0))))) v) (setq v (skk-rdbms-run-SQL-command (skk-rdbms-search-sahen-command dakuten) skk-rdbms-cutoff-output-function)) (if (not okurigana) v (mapcar (function (lambda (x) (concat x okurigana))) v)))) (defun skk-rdbms-busyu-henkan (&optional busyu) "$BIt@\4X?t0z?t$H$7$F(B busyu $B$rM?$($i$l$?$iJ86g$r8@$o$J$$!#(B (and (not busyu) (not skk-henkan-on) (skk-error "$B"&%b!<%I$KF~$C$F$$$^$;$s(B" "Not in $B"&(B mode")) (or busyu (setq busyu (buffer-substring-no-properties (point) skk-henkan-start-point))) (and (string= busyu "") (skk-error "$B8!:w$9$Y$-It@\4X?t0z?t$H$7$F(B stroke $B$rM?$($i$l$?$iJ86g$r8@$o$J$$!#(B (if (and (not stroke) (not skk-henkan-on)) (skk-error "$B"&%b!<%I$KF~$C$F$$$^$;$s(B" "Not in $B"&(B mode")) (save-match-data (or stroke (setq stroke (buffer-substring-no-properties (point) skk-henkan-start-point))) (if (or (string= stroke "") (string-match "[^0-9]" stroke)) (skk-error "$B8!:w$9$Y$-2h?t$,$"$j$^$;$s(B" "No stroke to search")) (setq skk-henkan-key stroke) (let ((skk-search-prog-list '((skk-rdbms-run-SQL-command (skk-rdbms-SQL-search-stroke-command stroke) skk-rdbms-cutoff-output-function)))) ;; $B8D?M<-=q%F!<%V%k$K ;; Author: Eiji Obata ;; Maintainer: SKK Development Team ;; Version: $Id: skk-dinsert.el,v 1.10 2007/04/22 02:38:28 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2007/04/22 02:38:28 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B%+!<%=%k$NA08e$NJ8;zNs$d!"G$0U$N(B elisp $B$NI>2ACM$K$h$C$F%P%C%U%!$KA^(B ;; $BF~$9$kJ8;z$rF0E*$K7hDj$9$k%W%m%0%i%`$G$9!#(B ;; ;; skk-dinsert-rule-list $B$K!"%-!r7o$N%j%9%H$r=q(B ;; $B$$$F$/$@$5$$!#?t;z$ND>8e$G$N$_(B [-,.]$B$r(B[$B!l9g$K$O8e$N(B $BF~NO$K8B$jL58z$K$J$k!#(B") (defvar skk-dinsert-ignore-lf t "*Non-nil $B$G$"$l$P!"%+!<%=%k0JA0$NJ8;zNs$K$h$k>r7oH=Dj$r9TF,$G9T$J$C$?>l9g!"2~9T$rL5;k$9$k!#(B `skk-dinsert-rule-list' $B$K$FBP1~$9$k%*%W%7%g%s$,;XDj$7$F$"$k$H!"$=$A$i$,M%@h$5$l$k!#(B") (defvar skk-dinsert-rule-list nil "*`skk-dinsert' $B$K$h$kF0E*$JF~NO$N>r7o%j%9%H!#(B $B%j%9%H$N3FMWAG$O!"$=$l$>$l$,0l$D$N5,B'$G$"$j!"2<5-$N7A<0$rK~$?$7$F$$$J$1$l$P(B $B$J$i$J$$!#(B (INPUT-STATE NEXT-STATE RULE-ALIST) INPUT-STATE, NEXT-STATE $B$N0UL#$O(B `skk-rom-kana-base-rule-list' $B$HF1$8$G$"$j!"(B SKK $B$O(B INPUT-STATE $B$r8!=P$9$k$H!"(BRULE-ALIST $B$K4p$E$$$F%P%C%U%!$KJ8;z$rA^F~$7!"(B $BB3$$$F(B NEXT-STATE $B$K>uBV$r0\$7$?$&$($G!"F~NOBT$A>uBV$H$J$k!#(B RULE-ALIST $B$O>r7o$H!"$=$l$,@.N)$7$?;~$K=PNO$5$l$kCM$NO"A[%j%9%H$G$"$k!#(B $B$=$l$>$l$N%k!<%k$O(B (REGEXP looking-at b-regexp/ignore-lf limit s-exp . VAL) $BKt$O(B (S-EXP . VAL) $B$N7A<0$r$H$k!#(B(REGEXP, S-EXP, VAL $B0J30$O>JN,2DG=(B) $B=i$a$K!":G=i$NMWAG$,J8;zNs$G$"$k>l9g$K$D$$$F@bL@$9$k!#(B $B%j%9%H$N3FMWAG$N0UL#$O2<5-$NDL$j!#(B 0th: $BJ8;zNs$r@55,I=8=$H$7$F07$$!"%+!<%=%k<~0O$NJ8;zNs$,$3$l$K%^%C%A$9$k$+H=Dj(B $B$9$k!#(B 1th: Non-nil $B$G$"$l$P(B `looking-at' $B$rMQ$$$F%+!<%=%k0J8e$NJ8;zNs$,(B REGEXP $B$K%^%C(B $B%A$9$k$+H=Dj$9$k!#(Bnil $B$G$"$l$P(B `re-search-backward' $B$K$h$j%+!<%=%kD>A0$N(B $BJ8;zNs$,(B REGEXP $B$K%^%C%A$9$k$+H=Dj$9$k!#>JN,$9$k$H(B nil $B$H$7$F07$&!#(B 2th: 1th $B$N(B looking-at $B$NCM$K$h$j0[$J$k0UL#$r;}$D!#(B looking-at $B$N;XDj$,(B Non-nil $B$N;~(B: nil $B$G$"$l$P!"%+!<%=%kD>8e$NJ8;zNs$,(B REGEXP $B$K%^%C%A$9$k$+H=Dj$9$k!#(B Non-nil $B$G$"$l$P!"$3$l$r@55,I=8=$H$7$F07$$!"(B`re-search-backward' $B$K$h$C(B $B$F%+!<%=%k0\F0$r$9$k!#$=$N8e(B `looking-at' $B$r9T$J$$(B REGEXP $B$,J8;zNs$K(B $B%^%C%A$9$k$+H=Dj$9$k!#$3$l$O%3%s%F%-%9%H$K1~$8$?F~NO$r$9$k>l9g$KM-8z(B $B$G$"$k(B($B$H;W$o$l$k(B)$B!#(B looking-at $B$N;XDj$,(B nil $B$N;~(B(`re-search-backward' $B$K$h$C$FH=Dj$9$k;~(B): Non-nil $B$G$"$l$P!"9TF,$G$NF~NO$K$*$$$F!"$=$ND>A0$NJ8;z(B($B$9$J$o$A2~9T%3!<(B $B%I(B)$B$rL5;k$7$F(B REGEXP $B$H%^%C%A$9$k$+H=Dj$9$k!#;XDj$,L5$1$l$P(B `skk-dinsert-ignore-lf' $B$NCM$rMQ$$$k!#(B 3th: `re-search-backward' $B$r9T$J$&:]$N8!:wHO0O$r;XDj$9$k!#$3$l$O%^%C%A%s%0$N>r(B $B7o$r9J$C$?$j!"%Q%U%)!<%^%s%9$NDc2<$rM^$($kL\E*$KMxMQ$5$l$k!#(B $B?tCM$,;XDj$5$l$k$H!"8=:_$N%+!<%=%k0LCV$h$j(B limit $BJ8;zA0$^$G$rHO0O$H$7$F8!(B $B:w$9$k!#6qBNE*$K$O(B (- (point) limit) $B$r(B `re-search-backward' $B$KEO$9!#(B $B$=$l0J30$G$"$k$H!"(BS $B<0$H$7$FI>2A$7$?CM$rMQ$$$k!#(B note: * $B?tCM$r$=$N$^$^EO$7$?$$>l9g$K$O(B (quote 1) $BEy$H$9$kI,MW$,$"$k!#(B * $BI>2A$7$?CM$,%+!<%=%k0LCV$N(B point $B$h$jBg$-$$$H%(%i!<$K$J$k!#(B 4th: REGEXP $B$K$h$k%^%C%A%s%0$,@.8y$7$?:]!"$3$N(B s-exp $B$rI>2A$9$k!#(B S $B<0$NCf$G$O(B arg $B$H(B m-d $B$rMxMQ$9$k;v$,$G$-!"(Barg $B$K$O(B `skk-dinsert' $B$N0z?t(B $B$,!"(Bm-d $B$K$O(B REGEXP $B$K$h$k%^%C%A%s%0$N:]$N(B (match-data) $B$NFbMF$,F~$C$F$$(B $B$k!#(Bs-exp $B$NI>2ACM$,(B nil $B$G$"$k$H!"$3$N%k!<%k$OE,MQ$5$l$J$$!#(B 5th: REGEXP $B$K$h$k%^%C%A%s%0$,@.N)$7!"$+$D(B s-exp($B;XDj$5$l$F$$$l$P(B)$B$N(B $BI>2ACM$,(B Non-nil $B$G$"$C$?;~!"$3$N(B VAL $B$,%P%C%U%!$KA^F~$5$l$k!#(B $Bl9g$G$"$k$,!"$3$l$O(B S $B<0$H$7$FI>2A$5$l$k!#(B $BI>2ACM$,(B Non-nil $B$G$"$l$P%k!<%k$,E,MQ$5$l!"BP1~$9$k(B VAL $B$,%P%C%U%!$KA^F~$5$l$k!#(B $B%k!<%k$O>e$+$i=g$K;n$5$l!":G=i$K@.N)$7$?$b$N$,E,MQ$5$l$k!#(B VAL $B$K$O!"0J2<$N(B 3$B$D$N7A<0$r;XDj$G$-$k!#(B $BJ8;zNs(B -- $B$3$l$,%P%C%U%!$KA^F~$5$l$k!#(B $B4X?tL>%7%s%\%k(B -- `skk-rom-kana-rule-list' $B$G;XDj$7$?>l9g$HF1MM!"0z?tIU$-$G8F$P$l$k!#(B $BJV$jCM$,J8;zNs$G$"$l$P$=$l$,%P%C%U%!$KA^F~$5$l$k!#(B $BJQ?tL>%7%s%\%k(B -- (`format' \"%S\" VAL) $B$7$?CM$,%P%C%U%!$KA^F~$5$l$k!#(B $BFCJL$J>l9g$H$7$F(B nil $B$r;XDj$9$k;v$,$G$-$k!#$3$N;~$K$O!"(BS-EXP $BKt$O(B s-exp $B$NI>2ACM(B $B$,MQ$$$i$l!"$3$l$O>e$N(B 3$B$D$N7A<0$N2?$l$+$G$"$kI,MW$,$"$k!#(B `skk-rom-kana-rule-list' $B$H$O0[$J$j!"%"%H%`$G$J$$MWAG$O;XDj$G$-$J$$!#$3$N$?$a(B \(\"$B%+%J(B\" . \"$B$+$J(B\") $B$H$O;XDj$G$-$J$$!#$+$J%b!<%I!"%+%J%b!<%I$K$h$C$F>r7oJ,$1(B $B$7$?$$>l9g$K$O!"JQ?t(B `skk-hiragana', `skk-katakana' $B$K$h$C$FD4$Y$k;v$,$G$-$k!#(B note: `skk-hiragana' $B$O(B `skk-dinsert' $B$NCf$K$*$$$F$N$_M-8z$J%m!<%+%kJQ?t$G$"$k!#(B") (defun skk-toggle-dinsert (&optional arg) "$BF0E*$JF~NO$NM-8z(B/$BL58z$r@Z$jBX$($k!#(B" (interactive "P") (setq skk-dinsert-mode (cond ((null arg) (not skk-dinsert-mode)) ((> (prefix-numeric-value arg) 0) t) (t nil)))) (defun skk-dinsert (arg idx) (let ((rule-alist (nth 2 (nth idx skk-dinsert-rule-list))) ;; VAL $B$K(B ("$B%+%J(B" . "$B$+$J(B") $B$N7A<0$,=q$1$J$$$N$G(B ;; $B$;$a$FJQ?t$rDs6!$7$F$_$k(B (skk-hiragana (and (not skk-katakana) skk-j-mode)) val cnd) (if (or (not skk-dinsert-mode) (and skk-henkan-mode (= skk-henkan-start-point skk-kana-start-point)) (and skk-isearch-switch (buffer-live-p skk-isearch-current-buffer))) ;; isearch $BKt$O(B $BF0E*$JF~NO$r$7$J$$$J$i(B t $B$KBP1~$9$kCM$r;H$&(B (setq val (cdr (assq t rule-alist))) (catch 'return (dolist (cur-rule rule-alist) (setq cnd (car cur-rule)) (cond ((stringp cnd) ; REGEXP (let (found s-exp m-d) (setq val (save-match-data (save-excursion (let* ((i 0) (regexp cnd) (r cur-rule) (v (progn (while (not (atom r)) (setq i (1+ i) r (cdr r))) r)) l-a i-lf b-regexp lim pos) ;; (0 1 2 3 4 . 5) $B$N7A<0$r:NMQ$7$F$$$k$N$G(B ;; (nth n LIST) $B$r$9$k$K$O(B i > n $B$G$"$k;v$,I,MW(B (ignore-errors (setq l-a (nth 1 cur-rule) i-lf (nth 2 cur-rule) b-regexp i-lf lim (nth 3 cur-rule) s-exp (nth 4 cur-rule))) ;; re-search-backward $B$N(B limit $BD4@0(B (when lim (setq lim (if (numberp lim) (- (point) lim) ; $BIi$K$J$C$F$b(B ok (eval lim)))) (cond (l-a ; looking-at (when b-regexp (re-search-backward b-regexp lim t)) (when (looking-at regexp) (setq found t m-d (match-data)) v)) (t ; re-search-backward (when (and (not (bobp)) (bolp) (if (> i 2) i-lf skk-dinsert-ignore-lf)) (backward-char)) (setq pos (point)) (when (and (re-search-backward regexp lim t) (= pos (match-end 0))) (setq found t m-d (match-data)) v))))))) ;; match-data $B$rMQ$$$F=PNO$r@8@.(B or $B>r7oH=Dj(B ;; skk-dinsert $B<+?H$N0z?t$O(B arg ;; match-data $B$NFbMF$O(B m-d (when (and found s-exp) (setq val (let ((retval (eval s-exp))) (when retval (or val retval)))))) (when val (throw 'return nil))) (t ; S-EXP (let ((retval (eval cnd)) (v (cdr cur-rule))) (setq val (when retval (or v retval)))) (when val (throw 'return nil))))))) (cond ((stringp val) val) ((functionp val) (funcall val arg)) (t (format "%S" val))))) (provide 'skk-dinsert) ddskk-15.1.54/experimental/skk-exsearch.el0000664000076600007660000002021111425561141020042 0ustar brutusbrutus;;; skk-exsearch.el --- $B30It8!:w%W%m%0%i%`6&MQ(B interface -*- coding: iso-2022-jp -*- ;; Copyright (C) 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-exsearch.el,v 1.10 2010/08/02 15:21:05 skk-cvs Exp $ ;; Keywords: japanese ;; Last Modified: $Date: 2010/08/02 15:21:05 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; This file needs eieio package (which provides CLOS like OO ;; programming) that can be found at; ;; ;; ftp://ftp.ultranet.com/pub/zappo ;; ;; This program may be (or may not be) a core engine of external ;; searching program of Daredevil (or some other new branch) SKK. ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (require 'path-util) ; for exec-installed-p. (require 'eieio) (defvar skk-grep-dic "/usr/local/share/skk/SKK-JISYO.L" "*grep search dictionary.") (defclass search-engine () ((program :initarg :program :initform nil :documentation "Program file.") ;;(argument :initarg :argument :initform nil :documentation "") (dictionary :initarg :dictionary :initform nil :documentation "Dictionary file to be searched.")) "External search engine superclass.") (defclass synchronous-search-engine (search-engine) ((infile :initarg :infile :initform nil :documentation "This is where the program's input comes from. (nil means `/dev/null').") (stderr :initarg :stderr :initform t :documentation "What to do with standard error in the child.\ nil (discard standard error output), t (mix it with ordinary output),\ or a file name string.") (success-exit-code :initarg :success-exit-code :initform 0 :documentation "Numeric exit status of success.") (error-exit-code :initarg :error-exit-code :initform 2 :documentation "Numeric exit status of error.")) "External synchronous search engine class.") (defclass regular-engine (synchronous-search-engine) ((coding-system :initarg :coding-system :initform (lambda () (skk-find-coding-system skk-jisyo-code)))) "Regular search engine type. Call program synchronously in separate process. Output of this type is a line that contains candidates delimited by slash.") (defclass grep-engine (synchronous-search-engine) ((coding-system :initarg :coding-system :initform (lambda () (skk-find-coding-system skk-jisyo-code)))) "Regular search engine type for grep search. Call program synchronously in separate process. Output of this type is a line that contains candidates delimited by slash.") (defclass look-engine (synchronous-search-engine) (()) "look type. Call program synchronously in separate process. This type inserts multiple lines to the buffer. Each line contains a candidate.") (defmethod setup-synchronous-engine ((engine synchronous-search-engine)) (and (slot-exists-p engine 'coding-system) ;; return nil if cdbget executable binary does not installed. (slot-value engine 'program) (with-slots ((code coding-system)) engine (if (and code (fboundp 'modify-coding-system-alist)) (modify-coding-system-alist 'process (oref engine program) (cons code code)))))) (defvar cdbget (make-instance regular-engine :program (exec-installed-p "cdbget") :infile "/usr/local/share/skk/SKK-JISYO.L.cdb") "*cdbget search engine object.") (setup-synchronous-engine cdbget) (defvar grep (make-instance grep-engine :program (exec-installed-p "grep") :infile skk-grep-dic) "*grep search engine object.") (setup-synchronous-engine grep) (defvar look (make-instance look-engine :program (exec-installed-p "look")) "*look search engine object.") (defmethod core-engine ((engine synchronous-search-engine) argument) ;; core search engine (save-excursion (let ((exit-code (apply 'call-process (oref engine program) (oref engine infile) (list t ;output to current buffer. (oref engine stderr)) nil argument)) error) (cond ((and (= (oref engine success-exit-code) exit-code) (> (buffer-size) 0))) ((>= exit-code (oref engine error-exit-code)) (error (buffer-substring-no-properties (point-min) (point-max)))))))) (defmethod search-engine ((engine regular-engine) &rest argument) (let ((okurigana (or skk-henkan-okurigana skk-okuri-char)) l) (with-temp-buffer (if (core-engine engine argument) (progn (forward-char 1) (and (setq l (skk-compute-henkan-lists okurigana)) (cond ((and okurigana skk-henkan-okuri-strictly) (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l))))))))) (defmethod search-engine ((engine grep-engine) &rest argument) (let ((okurigana (or skk-henkan-okurigana skk-okuri-char)) (tmparg argument) l) (with-temp-buffer (setq argument (cons (concat "^" (car tmparg) " ") nil)) (if (core-engine engine argument) (progn (while (not (eq (char-after) ?/)) (forward-char 1)) (forward-char 1) (and (setq l (skk-compute-henkan-lists okurigana)) (cond ((and okurigana skk-henkan-okuri-strictly) (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l))))))))) (defmethod search-engine ((engine look-engine) &rest argument) (with-temp-buffer (let ((word argument) opt) (and (oref engine dictionary) (nconc argument (list (oref engine dictionary)))) (and skk-look-dictionary-order (setq opt "d")) (and skk-look-ignore-case (setq opt (concat "f" opt))) (and skk-look-use-alternate-dictionary (setq opt (concat "a" opt))) (and opt (setq argument (cons (concat "-" opt) argument))) (and skk-look-termination-character (setq argument (cons (list "-t" skk-look-termination-character) argument))) (and (core-engine engine argument) (delete word (split-string (buffer-substring-no-properties (point-min) (1- (point-max))) "\n")))))) ;;;###autoload (defun skk-cdbget-search () (search-engine cdbget (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key))) ;;;###autoload (defun skk-grep-search () (search-engine grep (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key))) ;;;###autoload (defun skk-look-search () (and skk-abbrev-mode (eq (aref skk-henkan-key (1- (length skk-henkan-key))) ?*) (let ((args (substring skk-henkan-key 0 (1- (length skk-henkan-key)))) v) (if (not skk-look-use-ispell) (setq v (search-engine look args)) (setq v (skk-look-ispell args))) (if (not skk-look-recursive-search) v (let (skk-henkan-key v2 v3) (while v (let ((skk-current-search-prog-list (copy-sequence skk-search-prog-list))) (setq skk-current-search-prog-list (delete '(skk-look) skk-current-search-prog-list)) (setq skk-current-search-prog-list (delete '(skk-look-search) skk-current-search-prog-list)) (setq skk-henkan-key (car v)) (while skk-current-search-prog-list (setq v3 (skk-search) v2 (if (not skk-look-expanded-word-only) (skk-nunion v2 (cons (car v) v3)) (if v3 (skk-nunion v2 (cons (car v) v3)) v2))))) (setq v (cdr v))) v2))))) (provide 'skk-exsearch) ;;; skk-exsearch.el ends here ddskk-15.1.54/experimental/skk-correct.el0000664000076600007660000001724711425561141017720 0ustar brutusbrutus;;; skk-correct.el --- correct key word for conversion. -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-correct.el,v 1.8 2010/08/02 15:21:05 skk-cvs Exp $ ;; Keywords: japanese ;; Last Modified: $Date: 2010/08/02 15:21:05 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary ;; $B<-=qCf$K$J$$FI$_$N%V%l$?8+=P$78l$GJQ49$7$?:]$K!"FbIt$G(B skk-correct-table ;; $B$r;2>H$7$F@5$7$$8+=P$78l$KCV$-49$(8uJd$r8!:w$9$k%W%m%0%i%`$G$9!#(B ;; skk-correct-search $B$N0z?t$K!"%V%lJd@58e$K8!:w$7$?$$<-=q$r!"(B ;; skk-search-prog-list $B$HF1$8MWNN$G%j%9%H$GI=$7!"8!:w%W%m%0%i%`$H$H$b$K5-:\(B ;; $B$7$F2<$5$$!#Nc$($P$3$s$J46$8$G$9!#(B ;; ;; (skk-correct-search ;; '((skk-search-jisyo-file skk-jisyo 0 t) ;; (skk-search-server skk-aux-large-jisyo 10000) ;; (skk-okuri-search))) ;; ;; * $B>e5-$NNc$G$O!"Jd@5$7$?8+=P$78l$KBP$7!"8D?M<-=q!"%5!<%P!e$O8!:w$r9T$J$$$^$;$s!#(B ;; ;; $B$3$l$r99$K(B skk-search-prog-list $B$NCf$NE,Ev$J8D=j$KF~$l$^$7$g$&!#2<5-$N$h(B ;; $B$&$K8D?M<-=q8!:wD>8e$K!"0lEY8+=P$78l$rJd@5$7$F8D?M<-=q$r8!:w$7D>$7!"%5!<(B ;; $B%P!<8!:w8e$K8+$D$+$i$J$+$C$?$i:FEYJd@5$7$F%5!<%P!<$r8!:w$9$k!"$H$$$&$N$b(B ;; $B0l0F$G$9!#$"$k$$$O!"8D?M$NJJ$r$b$m$KH?1G$7$F$$$k8D?M<-=q$N%V%lJd@5$O;_$a(B ;; $B$F!"%5!<%P!<$N$_Jd@58e8!:w$r$9$k!"$H$$$&$N$bNI$$$G$7$g$&!#(B ;; ;; (setq skk-search-prog-list ;; '((skk-search-jisyo-file skk-jisyo 0 t) ;; (skk-correct-search '((skk-search-jisyo-file skk-jisyo 0 t))) ;; (skk-search-server skk-aux-large-jisyo 10000) ;; (skk-okuri-search) ;; (skk-correct-search ;; '((skk-search-server skk-aux-large-jisyo 10000) ;; (skk-okuri-search))) ;; )) ;; ;; $B8=:_$N$H$3$m!"(Bskk-correct-table $B$N3FMWAG$r:G=i$+$i=g$Ke(B skk-correct-table ;; $B$N8eH>ItJ,$O8+$J$$;EMM$K$J$C$F$$$^$9!#(B ;; $B$H$j$"$($:(B Naoki Wakamatsu $B$5$s$,(B Message-Id: ;; <200001260732.QAA00868@ring.etl.go.jp> $B$GNs5s$7$F$/$@$5$C$?FI$_$N%V%l$r(B ;; $BC1=c$K(B sort $B$7$F!"(B2 $BJ8;z$N$b$N(B, 1 $BJ8;z$N$b$N$H$$$&=g$G(B skk-correct-table ;; $B$K<}$a$F$$$^$9$,!">e5-$N$h$&$K2?$+0l$D%V%l$,8+$D$+$C$?$i$=$l0J>e$O%F!<%V%k(B ;; $B$r8+$F$$$J$$$N$G!"$3$N%F!<%V%k$N%V%l$NM%@h=g0L$O8!F$$7$?J}$,NI$$$G$7$g$&!#(B ;; ;; $B:#8e$N2~NI$N%"%$%G%#%"$N0l$D$H$7$F$O!"JQ49>r7o$K1~$8$F8+$k%V%l$H8+$J$$%V%l(B ;; $B$r:n$k$N$bNI$$$+$b$7$l$^$;$s!#Nc$($P!"$3$N%V%l$OAw$j$"$jJQ49$N$H$-$@$1$7$+(B ;; $B8!:w$7$J$$!"$J$I$H$$$&$b$N$G$9!#$3$NJU$j$O $B$h$&$d(Bk /$BA2(B/ ("$B$i$&(B" . "$B$m$&(B") ; $B$i$&(Bs /$BO+(B/ -> $B$m$&(Bs /$BO+(B/ ;; 1 char ("$B$$(B" . "$B$f(B") ; $B$$$-$I(Bm /$B9T$-;_(B/ -> $B$f$-$I(Bm /$B9T$-;_(B/ ("$B$$(B" . "$B$h(B") ; $B$$(Bi /$BNI(B/ -> $B$h(Bi /$BNI(B/ ("$B$*(B" . "$B$&(B") ; $B$[$*(Bt /$BJ|(B/ -> $B$[$&(Bt /$BJ|(B/ ("$B$*(B" . "$B$[(B") ; $B$h$=$*(Bu /$Bjf(B/ -> $B$h$=$[(Bu /$Bjf(B/ ("$B$*(B" . "$B$r(B") ; $B$/$A$*(Bs /$B8}@K(B/ -> $B$/$A$r(Bs /$B8}@K(B/ ("$B$+(B" . "$B$,(B") ; $B$^$L$+(Br /$BLH(B/ -> $B$^$L$,(Br /$BLH(B/ ("$B$6(B" . "$B$5(B") ; $B$O$@$6$`(Bk /$BH)4((B/ -> $B$O$@$5$`(Bi /$BH)4((B/ ("$B$8(B" . "$B$B(B") ; $B$_$8$+(Bn /$B?H6a(B/ -> $B$_$B$+(Bn /$B?H6a(B/ ("$B$=(B" . "$B$>(B") ; $B$_$.$=$m(Be /$B1&B7(B/ -> $B$_$.$>$m(Be /$B1&B7(B/ ("$B$?(B" . "$B$@(B") ; $B$d$/$?(Bt /$BLrN)(B/ -> $B$d$/$@(Bt /$BLrN)(B/ ("$B$E(B" . "$B$:(B") ; $B$o$E$i(Bw /$BHQ(B/ -> $B$o$:$i(Bw /$BHQ(B/ ; $B$`$E$+(Bs /$BFq(B/ -> $B$`$:$+(Bs /$BFq(B/ ("$B$H(B" . "$B$I(B") ; $B$b$H(Br /$BLa(B/ -> $B$b$I(Br /$BLa(B/ ("$B$O(B" . "$B$o(B") ; $B$a$6$O(Br /$BL\>c(B/ -> $B$a$6$o(Br /$BL\>c(B/ ("$B$P(B" . "$B$O(B") ; $B$O$i(Bi /$BJ'(B/ -> $B$P$i(Bi /$BJ'(B/ ("$B$Q(B" . "$B$O(B") ; $B$Q(Bt /$BD%(B/ -> $B$O(Bt /$BD%(B/ ("$B$R(B" . "$B$$(B") ; $B$U$,$R$J(Bi /$Bg%9CHeL5(B/ -> $B$U$,$$$J(Bi /$Bg%9CHeL5(B/ ("$B$R(B" . "$B$S(B") ; $B$j$g$&$R$i(Bk /$BN>3+(B/ -> $B$j$g$&$S$i(Bk /$BN>3+(B/ ("$B$U(B" . "$B$V(B") ; $B$U$+(Bk /$B?<(B/ -> $B$V$+(Bk /$B?<(B/ ("$B$V(B" . "$B$U(B") ; $B$1$V$+(Bi /$BLS?<(B/ -> $B$1$U$+(Bi /$BLS?<(B/ ("$B$`(B" . "$B$s(B") ; $B$d$`$4$H$J(Bs /$B;_;vL5(B/ -> $B$d$s$4$H$J(Bs /$B;_;vL5(B/ ("$B$f(B" . "$B$$(B") ; $B$f$-$I(Bm /$B9T$-;_(B/ -> $B$$$-$I(Bm /$B9T$-;_(B/ ("$B$h(B" . "$B$$(B") ; $B$h(Bi /$BNI(B/ -> $B$$(Bi /$BNI(B/ ("$B$p(B" . "$B$$(B") ; $B$p(Br /$B5o(B/ -> $B$$(Br /$B5o(B/ ) "*$B8+=P$78lJQ49$N$?$a$N%F!<%V%k!#(B $B3FMWAG$N%G!<%?9=B$$O!"(B\(\"$BFI$_$,$V$l$?8+=P$78l(B\" . \"$B@5$7$$8+=P$78l(B\"\)$B!#(B") ;; internal variable (defvar skk-correct-current-table nil) ;; functions. ;;;###autoload (defun skk-correct-search (search-method-list) (let ((henkan-key skk-henkan-key) search-list skk-henkan-key v) (setq skk-correct-current-table skk-correct-table) (while (and (not v) (setq search-list search-method-list skk-henkan-key (skk-correct henkan-key))) (while (and search-list (not (setq v (eval (car search-list))))) (setq search-list (cdr search-list)))) v)) (defun skk-correct (string) ;; STRING $BCf$K%V%l$,$"$C$?$i$=$NItJ,$r@5$7$$J8;zNs$KCV$-49$($FJV$9!#(B (let (v) (save-match-data (while (and (not v) skk-correct-current-table) (if (string-match (car (car skk-correct-current-table)) string) (setq v (concat (substring string 0 (match-beginning 0)) (cdr (car skk-correct-current-table)) (substring string (match-end 0))))) (setq skk-correct-current-table (cdr skk-correct-current-table))) v))) (provide 'skk-correct) ;;; Local Variables: ;;; End: ;;; skk-correct.el ends here ddskk-15.1.54/experimental/skk-search-web.el0000664000076600007660000001655612022306356020300 0ustar brutusbrutus;;; skk-search-web.el --- Google $B%5%8%'%9%H$J$I$rMxMQ$7$?$+$J4A;zJQ49(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 2010, 2011 HAMANO Kiyoto ;; Copyright (C) 2011 Tsuyoshi Kitamoto ;; Author: HAMANO Kiyoto ;; Maintainer: Tsuyoshi Kitamoto ;; Version: $Id: skk-search-web.el,v 1.4 2012/09/07 05:58:06 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2012/09/07 05:58:06 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B;HMQJ}K!$r#2$D@bL@$7$^$9!#9%$_$NJ}$r;HMQ$7$F$/$@$5$$!#(B ;; (1) $B$+$J4A;zJQ49$N8uJd$K(B Google $B%5%8%'%9%H$rMxMQ$9$k(B ;; skk-search-prog-list $B$N:G8eJ}$K(B skk-search-web() $B$rCV$/$3$H$K$h$j!"(B ;; $B8D?M<-=q$d6&M-<-=q$KEPO?$5$l$F$$$J$$8+=P$78l$r(B Google $B%5%8%'%9%H(B ;; $B$7$^$9!#(B ;; (add-to-list 'skk-search-prog-list ;; '(skk-search-web 'skk-google-suggest) ;; t) ;; (2) $B<-=qEPO?%b!<%I$X$NFMF~;~$N=i4|CM$K(B Google $B%5%8%'%9%H$rMxMQ$9$k(B ;; (setq skk-read-from-minibuffer-function ;; (lambda () ;; (car (skk-google-suggest skk-henkan-key)))) ;; $B"(4X?t(B skk-google-suggest $B$O(B skk-google-cgi-api-for-japanese-input $B$d(B ;; skk-wikipedia-suggest $B$X(B ;; $BCV$-49$(2DG=$G$9!#(B ;;; $B $B$5$s$,(B ;; $B=q$$$?5-;v(B http://d.hatena.ne.jp/khiker/20100128/google_suggest $B$G$9!#(B ;; $B2~JQ!"8x3+$r2w$/>5Bz$7$F$$$?$@$$$?(B HAMANO Kiyoto $B$5$s$K46e]*\\)\"" nil t) (setq list (cons (buffer-substring (match-beginning 1) (match-end 1)) list))) (nreverse list)))) (defun skk-wikipedia-suggest (word) (let* ((jsonp (skk-url-retrieve (concat "http://ja.wikipedia.org/w/api.php" "?action=opensearch" "&format=json" "&search=" (url-hexify-string (encode-coding-string word 'utf-8))) 'utf-8)) (json (json-read-from-string jsonp)) ;; ["$B$_$@$7$4(B" ["$B8uJd(Ba" "$B8uJd(Bb" "$B8uJd(Bc"]] ;; $B"(!V$_$@$7$4!W$,4A;z$G$"$l$PMM!9$J8uJd$,F@$i$l$k$,!"(B ;; $BJ?2>L>$@$H$"$^$j%R%C%H$7$J$$!#$=$N$?$a!"$+$J4A;z(B ;; $BJQ49$NMQES$K$OIT8~$-$+$b!#(B (ary (aref json 1)) list) (dotimes (i (length ary)) (setq list (cons (aref ary i) list))) (nreverse list))) ;; (defun skk-search-amazon-suggest (word) ;; "" ;; (let* ((jsonp (skk-url-retrieve ;; (concat "http://completion.amazon.co.jp/search/complete" ;; "?method=completion" ;; "&search-alias=aps" ;; "&mkt=6" ;; "&q=" (url-hexify-string ;; (encode-coding-string word 'utf-8))) ;; 'utf-8)) ;; (json (json-read-from-string jsonp))) ;; json)) ;;;; for skk-search-prog-list ;; (add-to-list 'skk-search-prog-list ;; '(skk-search-web 'skk-google-cgi-api-for-japanese-input) ;; t) ;; (add-to-list 'skk-search-prog-list ;; '(skk-search-web 'skk-google-suggest ;; t) (defun skk-search-web (function) (funcall function skk-henkan-key)) ;;;; for $B<-=qEPO?%b!<%I(B (setq skk-read-from-minibuffer-function (lambda () (car (skk-google-cgi-api-for-japanese-input skk-henkan-key) ;; (skk-google-suggest skk-henkan-key) ))) (provide 'skk-search-web) ;;; skk-search-web.el ends here ddskk-15.1.54/experimental/skk-exserv.el0000664000076600007660000002041611701311061017552 0ustar brutusbrutus;;; skk-exserv.el --- SKK $B%5!<%P!<$N$?$a$N%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, ;; 1997, 1998, 1999, 2000 ;; Masahiko Sato ;; NAKAJIMA Mikio ;; ;; Author: Masahiko Sato ;; Maintainer: NAKAJIMA Mikio ;; Version: $Id: skk-exserv.el,v 1.10 2012/01/05 12:06:09 skk-cvs Exp $ ;; Keywords: japanese ;; Last Modified: $Date: 2012/01/05 12:06:09 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; This file needs eieio package (which provides CLOS like OO ;; programming) that can be found at; ;; ;; ftp://ftp.ultranet.com/pub/zappo ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars) (require 'static)) (require 'eieio) (require 'skk-exsearch) (defclass network-search-engine (search-engine) ((host :initarg :host :initform "localhost" :documentation "Host name.") (service :initarg :service :initform nil :documentation "Name of the service desired, or an integer specifying a port number to connect to.") (process-name :initarg :process-name :initform nil :documentation "Name of process. It is modified if necessary to make it unique.") (process initarg :process :initform nil :documentation "Process object that belongs to program.") (buffer :initarg :buffer :initform nil :documentation "The buffer (or buffer-name) to associate with the process.\ Process output goes at end of that buffer, unless you specify\ an output stream or filter function to handle the output.\ buffer may be also nil, meaning that this process is not associated\ with any buffer.")) "A class of Network search engine via TCP connection.") (defclass dbskkd-engine (network-search-engine) ((service :initarg :service :initform "skkserv") (process-name :initarg :process-name :initform "dbskkd") (buffer :initarg :buffer :initform (lambda () (get-buffer-create " *dbskkd*"))) (found :initform 1 :documentation "A magic number that indicates the server found a candidate.") (not-found :initform 4 :documentation "A magic number that indicates the server did not find a candidates.") (coding-system :initarg :coding-system :initform (lambda () (cdr (assoc "euc" skk-coding-system-alist))))) "A class of dbskkd type server search engine via TCP connection. Output of this type is a line that contains a magic number and candidates that are delimited by slash.") (defvar dbskkd (make-instance dbskkd-engine) "*dbskkd server object.") (defvar skk-exserv-list (list dbskkd) "*Add other SKK server objects if you like.") (defun skk-open-server () ;; return active server object. (while (and (car skk-exserv-list) (not (server-opened-p (car skk-exserv-list))) (not (open-server (car skk-exserv-list))) (setq skk-exserv-list (cdr skk-exserv-list)))) (car skk-exserv-list)) (defmethod server-opened-p ((engine network-search-engine)) (with-slots (process) engine (and process (eq (process-status process) 'open)))) (defmethod open-server ((engine network-search-engine)) ;; Return t if process is opened. (with-slots (process coding-system) engine (condition-case nil (progn (setq process (open-network-stream (oref engine process-name) (oref engine buffer) (oref engine host) (oref engine service))) (if (not process) nil (process-kill-without-query process) (static-cond ((featurep 'xemacs) (set-process-input-coding-system process coding-system) (set-process-output-coding-system process coding-system)) (t (set-process-coding-system process coding-system coding-system))) (oset engine process process) (eq (process-status process) 'open))) (error nil)))) (defmethod disconnect-server ((engine dbskkd-engine)) (with-slots (process-name) engine (if (eq (process-status process-name) 'open) (progn (process-send-string process-name "0") (accept-process-output (get-process process-name)))))) ;;;###autoload (defun skk-server-version () (interactive) (if (interactive-p) (message (skk-server-version)) (server-version (car skk-exserv-list)))) (defmethod server-version ((engine dbskkd-engine)) (or skk-exserv-list (skk-error "Lack of host information of SKK server" "SKK $B%5!<%P!<$N%[%9%H>pJs$,$"$j$^$;$s(B" )) (or (skk-open-server) (skk-error "Cannot open connection to SKK server" "SKK $B%5!<%P!<$H%3%M%/%7%g%s$rD%$k$3$H$,$G$-$^$;$s(B")) (save-excursion (unwind-protect (progn (set-buffer (oref engine buffer)) (let (v) (erase-buffer) ;; $B%5!<%P!<%P!<%8%g%s$rF@$k!#(B (process-send-string (oref engine process-name) "2") (while (and (server-opened-p engine) (eq (buffer-size) 0)) (accept-process-output)) (setq v (buffer-string)) (erase-buffer) ;; $B%[%9%HL>$rF@$k!#(B (process-send-string (oref engine process-name) "3") (while (and (server-opened-p engine) (eq (buffer-size) 0)) (accept-process-output)) (goto-char (point-min)) (format (concat "SKK SERVER version %s" (if skk-japanese-message-and-error "($B%[%9%HL>(B %s)" "running on HOST %s")) v (buffer-string) ))) (erase-buffer)))) ;;;###autoload (defun skk-exserv-search () (let ((server (skk-open-server))) (and server (search-server server)))) (defmethod search-server ((engine dbskkd-engine)) (let ((key (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (okurigana (or skk-henkan-okurigana skk-okuri-char))) (with-current-buffer (oref engine buffer) (let (l) (erase-buffer) (process-send-string (oref engine process-name) (concat "1" key " ")) (while (and (server-opened-p engine) (eq (buffer-size) 0)) (accept-process-output)) ;; found key successfully, so check if a whole line is received. (if (and (eq (char-after 1) ?1) (eq (char-after (1- (point-max))) ?\n)) (progn (goto-char (point-min)) (forward-char 2) (and (setq l (skk-compute-henkan-lists okurigana)) (cond ((and okurigana skk-henkan-okuri-strictly) ;; $BAw$j2>L>$,F10l$N%(%s%H%j$N$_$rJV$9!#(B (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l)))))))))) ;;;###autoload (defun skk-adjust-search-prog-list-for-server-search (&optional non-del) ;; skk-exserv-list $B$,(B nil $B$G$"$l$P!"(B ;; skk-search-prog-list $B$+$i(B skk-exserv-search $B$r(B car $B$K;}$D%j%9%H$r>C$9!#(B ;; non-nil $B$G$"$l$P!"2C$($k!#(B (if skk-exserv-list (if (null (assq 'skk-exserv-search skk-search-prog-list)) ;; skk-search-prog-list $B$,(B nil $B$H$$$&$3$H$O$^$:$J$$$@$m$&$,!"G0$N$?(B ;; $B$a!"(Bsetq $B$7$F$*$/!#(B (setq skk-search-prog-list ;; $BKvHx$KIU$1$k!#KvHx$K$O(B (skk-okuri-search) $B$r;}$C$F$-$?$$?M(B ;; $B$b$$$k$+$b!#%*%W%7%g%s$GIU$1$k>l=j$rJQ99$9$k$h$&$K$7$?J}$,(B ;; $BNI$$!)(B (nconc skk-search-prog-list (list '(skk-exserv-search))))) (if (not non-del) (remove-alist 'skk-search-prog-list 'skk-exserv-search)))) ;;(add-hook 'skk-mode-hook 'skk-adjust-search-prog-list-for-server-search) (add-hook 'kill-emacs-hook (function (lambda () (disconnect-server (car skk-exserv-list))))) (run-hooks 'skk-exserv-load-hook) (provide 'skk-exserv) ;;; Local Variables: ;;; eval: (require 'eieio) ;;; End: ;;; skk-exserv.el ends here ddskk-15.1.54/experimental/.cvsignore0000664000076600007660000000001207062326152017130 0ustar brutusbrutusChangeLog ddskk-15.1.54/experimental/skk-w3m.el0000664000076600007660000010254711701311063016754 0ustar brutusbrutus;;; skk-w3m.el --- SKK search using w3m-search -*- coding: euc-jp -*- ;; Copyright (C) 2001 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-w3m.el,v 1.35 2012/01/05 12:06:11 skk-cvs Exp $ ;; Keywords: japanese ;; Created: Apr. 12, 2001 (oh, its my brother's birthday!) ;; Last Modified: $Date: 2012/01/05 12:06:11 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; w3m (http://w3m.sourceforge.net/) ¤òÍøÍѤ·¡¢Emacs ¤ÎÃæ¤«¤é Web ¸¡ ;; º÷¥¨¥ó¥¸¥ó¤Ë¤è¤ë¸¡º÷¤ò¤·¡¢¸¡º÷·ë²Ì¤ÎÃæ¤«¤é SKK ¤Î¸õÊä¤È¤·¤Æ¼è¤ê½Ð ;; ¤·¤¿¤¤¤â¤Î¤òÀÚ¤ê½Ð¤·¤ÆÍøÍѤ¹¤ë¥×¥í¥°¥é¥à¤Ç¤¹¡£ ;; ;; skk-w3m-use-w3m-backend ¤¬ non-nil ¤Ç¤¢¤ì¤Ð¡¢w3m ¤ò backend ¥ª¥× ;; ¥·¥ç¥óÉÕ¤­¤Çµ¯Æ°¤·¤Æ w3m ¤ÈľÀܸò¿®¤·¤Þ¤¹¡£ ;; nil ¤Ç¤¢¤ì¤Ð emacs-w3m (http://emacs-w3m.namazu.org/) ¤ò·Ðͳ¤·¤Æ ;; w3m ¤òÍøÍѤ·¤Þ¤¹ (emacs-w3m ¤Ç¤Ï w3m ¤ò backend ¤Çư¤«¤·¤Æ¤¤¤Þ¤»¤ó)¡£ ;; w3m backend ¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢¸¡º÷¤ÎÅÙËè¤Ë w3m ¤òµ¯Æ°¤¹¤ëɬÍפ¬¤Ê¤¯ ;; ¤Ê¤ê¡¢¥×¥í¥»¥¹¤Îµ¯Æ°¡¢½ªÎ»¤Ëȼ¤Ê¤¦¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤ò¸º¤é¤¹¤³¤È¤¬¤Ç¤­¤Þ ;; ¤¹¡£ ;; w3m backend ¤Ï³«È¯Ãæ¤Ç¡¢º£¸åÂçÉý¤Ê»ÅÍÍÊѹ¹¤¬¹Ô¤Ê¤ï¤ì¤ë²ÄǽÀ­¤â¤¢¤ê ;; ͽÃǤòµö¤·¤Þ¤»¤ó¤¬¡¢°ìÊý¤Ç emacs-w3m ¤â³«È¯¤Î¥¹¥Ô¡¼¥É¤¬Áᤤ¥×¥í¥°¥é ;; ¥à¤Ç¤¹¡£ÊÑÆ°¤¹¤ëÍ×ÁǤϾ¯¤Ê¤¤Êý¤¬¡¢ÍÍ¡¹¤Ê´Ä¶­¤Ë¹ç¤¦²ÄǽÀ­¤¬¾¯¤·¤Ç¤â¾å ;; ¤¬¤ë¤Î¤Ç¡¢²Äǽ¤Ê¸Â¤ê skk-w3m-use-w3m-backend ¤ò non-nil ¤Ç»ÈÍѤ¹¤ë¤³ ;; ¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£ ;; ;; ;; ¤³¤Î¥Õ¥¡¥¤¥ë¤ò SKK-MK ¤¬¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥Ô¡¼¤· (¥ê¥ó¥¯ ;; ¤¬»È¤¨¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ç¤Ï SKK-MK ¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ç ;; ln -s ./experimental/skk-w3m.el . ;; ¤·¤¿Êý¤¬Îɤ¤¤«¤â¤·¤ì¤Þ¤»¤ó)¡¢¸å¤ÏÉáÄÌ¤Ë make install ¤¹¤ë¤À¤±¤Ç¤¹¡£ ;; ;; ;; skk-search-prog-list ¤Ë (skk-w3m-search "goo-daijirin") ¤Î¤è¤¦¤Ê ;; Í×ÁǤòÄɲä·¤Þ¤¹¡£Ä̾¾¤Î¤É¤Î skk search engine ¤è¤ê¤âºÇ¤âÃÙ¤¤ ;; ¤Î¤Ç¡¢ºÇ¤âºÇ¸å¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£¤³¤ó¤Ê´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£ ;; ;; (setq skk-search-prog-list ;; '((skk-search-jisyo-file skk-jisyo 0 t) ;; (skk-search-server skk-aux-large-jisyo 10000) ;; (skk-w3m-search "goo-daijirin") ;; (skk-w3m-search "goo-exceed-eiwa"))) ;; ;; skk-w3m-search ¤Î°ú¿ô¤Ï¸¡º÷¥¨¥ó¥¸¥ó¤Î¼ïÎà¤òʸ»úÎó¤Ç»ØÄꤷ¤Þ¤¹¡£ ;; ⤷¡¢skk-w3m-search-engine-alist ¤ËÂбþ¤¹¤ë¥¨¥ó¥È¥ê¤¬É¬ÍפǤ¹¡£ ;; ;; skk-w3m.el ¤Ç¤Ï search-engine Ëè¤Ë¸¡º÷·ë²Ì¤ò cache ¤·¤Þ¤¹¡£ ;; (skk-w3m-search "goo-daijirin" t) ¤Î¤è¤¦¤Ë `skk-w3m-search' ¤ÎÂè ;; Æó°ú¿ô¤Ë non-nil argument ¤ò»ØÄꤹ¤ë¤È cache ¤ò¹Ô¤Ê¤ï¤º¡¢Ëè²ó w3m ;; ¤Ë¸¡º÷¤ò¤µ¤»¤Þ¤¹¡£ ;; ;; ;; o ¤È¤ê¤¢¤¨¤º skk-w3m-get-candidates-from-goo-exceed-waei, ;; skk-w3m-get-candidates-from-goo-exceed-eiwa, ;; skk-w3m-get-candidates-from-goo-daily-shingo ¤ò´°À®¤µ¤»¤ë¡£ ;; o ¸¡º÷¥¨¥ó¥¸¥ó¤ÎÁý²Ã¡£ ;; o lookup ¤Ï w3m-search.el ¤ò»È¤Ã¤¿ Web search ¤òÅý¹ç¤·¤Ê¤¤¤Î¤À¤í¤¦ ;; ¤«...¡£Åý¹ç¤¹¤ì¤Ð skk-lookup.el ¤Ç°ì¸µ´ÉÍý¤Ç¤­¤ë¡© ;; o w3m backend ¤Î²þÎɤËÄɽ¾¡£ ;;; Code (eval-when-compile (require 'skk-macs) (require 'skk-vars) (condition-case nil (progn (require 'w3m) (require 'w3m-search)) (error))) (defgroup skk-w3m nil "SKK w3m related customization." :prefix "skk-w3m-" :group 'skk) ;;;; user variables. (defvar skk-w3m-search-engine-alist '(("goo-daijirin" "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%s&sw=2" euc-japan skk-w3m-get-candidates-from-goo-daijirin (or ;; cannot search a key which contains okuri prefix. skk-okuri-char ;; cannot search by Web engine a string which containing SKK special `#' character. skk-num-list skk-num-recompute-key ;; this engine does not contain English entries. skk-abbrev-mode)) ("goo-exceed-waei" "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%s&sw=1" euc-japan ;;skk-w3m-get-candidates-from-goo-exceed-waei ; not yet finished. nil (or skk-okuri-char skk-num-list skk-num-recompute-key skk-abbrev-mode)) ("goo-exceed-eiwa" "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%s&sw=0" euc-japan ;;skk-w3m-get-candidates-from-goo-exceed-eiwa ; not yet finished. nil (not skk-abbrev-mode)) ("goo-daily-shingo" "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%s&sw=3" euc-japan ;;skk-w3m-get-candidates-from-goo-daily-shingo ; not yet finished. nil (or skk-okuri-char skk-num-list skk-num-recompute-key)) ("quote-yahoo" "http://quote.yahoo.com/m5?a=%s&s=%s&t=%s&c=0" nil skk-w3m-get-candidates-from-quote-yahoo ; not yet finished. nil ;(not skk-abbrev-mode) nil skk-w3m-make-query-quote-yahoo)) "*¸¡º÷¥¨¥ó¥¸¥óËè¤Î¸¡º÷¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¥¨¡¼¥ê¥¹¥È¡£ car ¤Ï¸¡º÷¥¨¥ó¥¸¥ó¤òɽ¤ï¤¹Ê¸»úÎó¡¢ 1th ¤Ï URL \(¸¡º÷ʸ»úÎó¤ò %s ¤Çɽ¤ï¤¹\), 2th ¤Ï Web page ¤Î coding-system, 3th ¤Ï¸õÊäÀÚ¤ê½Ð¤·¤Ë»ÈÍѤ¹¤ë´Ø¿ô¤òɽ¤ï¤¹¥·¥ó¥Ü¥ë¡£ 4th \(optional\) ¤Ï S ¼°¤ò»ØÄꤷ¡¢É¾²Á¤·¤Æ non-nil ¤Ë¤Ê¤ë¾õÂ֤ΤȤ­¤Ï w3m ¤Ë¸¡º÷½èÍý¤ò¤µ¤»¤Ê¤¤¡£ 5th \(optional\) ¤Ï `skk-henkan-key' ¤ò²Ã¹©¤¹¤ë´Ø¿ô¡£ 6th \(optional\) ¤Ï 1th ¤Î¥Æ¥ó¥×¥ì¡¼¥È¤Ë¹ç¤ï¤»¤¿Ê¸»úÎó¤ò½ÐÎϤ¹¤ë´Ø¿ô̾¡£ »ØÄꤵ¤ì¤¿´Ø¿ô¤Ï¡¢¸«½Ð¤·¸ì\(string\) ¤ò°ú¿ô¤È¤·¤Æ `funcall' ¤µ¤ì¤ë¡£ »ØÄ꤬¤Ê¤¤¾ì¹ç¤Ï¡¢`w3m-search-escape-query-string' ¤¬ `funcall' ¤µ¤ì¤ë¡£") (defvar skk-w3m-use-w3m-backend t "*Non-nil ¤Ç¤¢¤ì¤Ð¡¢w3m ¤ò backend ¥ª¥×¥·¥ç¥óÉÕ¤­¤Çµ¯Æ°¤·¤Æ¸¡º÷¤ò¹Ô¤Ê¤¦¡£ `start-process' ¤¬»È¤¨¤Ê¤¤ Emacs ¤Ç¤ÏÍøÍÑÉԲġ£ nil ¤Ç¤¢¤ì¤Ð¡¢emacs-w3m ¤ò·Ðͳ¤·¤Æ w3m ¤òÍøÍѤ¹¤ë (¸½ºß¤Î emacs-w3m ¤Ç¤Ï w3m ¤ò backend ¤Çư¤«¤·¤Æ¤¤¤Ê¤¤)¡£") (defvar skk-w3m-command (or (and (boundp 'w3m-command) w3m-command) "w3m") "*w3m ¥³¥Þ¥ó¥É̾¡£") (defvar skk-w3m-command-args "-backend" "*w3m ¤Î backend ¥ª¥×¥·¥ç¥ó¡£") (defvar skk-w3m-backend-command-prompt "w3m>" "*w3m backend ¤Î¥³¥Þ¥ó¥É¥×¥í¥ó¥×¥È¡£") (defvar skk-w3m-default-process-coding-system 'euc-japan "*w3m backend ¥×¥í¥»¥¹¤Î¥Ç¥£¥Õ¥©¥ë¥È¤Î coding-system¡£") (defvar skk-w3m-kill-command "quit" "*w3m backend ¤Î½ªÎ»¥³¥Þ¥ó¥É¡£") (defvar skk-w3m-no-wait nil "*Non-nil ¤Ç¤¢¤ì¤Ð¡¢w3m backend ¥×¥í¥»¥¹¤¬²¿¤«½ÐÎϤ¹¤ë¤Þ¤ÇÂÔ¤¿¤Ê¤¤¡£") (defvar skk-w3m-quote-yahoo-currency-symbol-alist ;;http://quote.yahoo.com/m5?a=1&s=USD&t=JPY&c=0 ; U.S. Dollar, Japanese Yen ;;http://quote.yahoo.com/m5?a=1&s=DEM&t=JPY&c=0 ; German Mark ;;http://quote.yahoo.com/m5?a=1&s=FRF&t=JPY&c=0 ; French Franc ;;http://quote.yahoo.com/m5?a=1&s=EUR&t=JPY&c=0 ; Euro ;;http://quote.yahoo.com/m5?a=1&s=ITL&t=JPY&c=0 ; Italian Lira .L ;;http://quote.yahoo.com/m5?a=100&s=KRW&t=JPY&c=0 ; Korean Won ;;http://quote.yahoo.com/m5?a=100&s=MYR&t=JPY&c=0 ; Malaysian Ringgit ;;http://quote.yahoo.com/m5?a=100&s=THB&t=JPY&c=0 ; Thai Baht ;;http://quote.yahoo.com/m5?a=100&s=CHF&t=JPY&c=0 ; Swiss Franc '((ARS . "Argentine Peso") (CHF . "Swiss Franc") (DEM . "German Mark") (EUR . "Euro") (FRF . "French Franc") (ITL . "Italian Lira .L") (JP . "Japanese Yen") (KRW . "Korean Won") (MYR . "Malaysian Ringgit") (THB . "Thai Baht") (USD . "U.S. Dollar")) "*") ;;;; system internal variables and constants. ;;; constants. (defconst skk-w3m-working-buffer " *skk-w3m-work*") (defconst skk-w3m-w3m-w3m-retrieve-has-new-argument-spec (condition-case nil (with-temp-buffer (w3m-w3m-retrieve "http://openlab.ring.gr.jp") nil) (wrong-number-of-arguments t) (error))) ;;; global variables (defvar skk-w3m-process nil) (defvar skk-w3m-cache nil) (defvar skk-w3m-currency-from nil) (defvar skk-w3m-currency-to nil) ;;;; macros (defmacro skk-w3m-with-work-buffer (&rest body) "Execute the forms in BODY with working buffer as the current buffer." `(with-current-buffer (w3m-get-buffer-create skk-w3m-working-buffer) ,@body)) (put 'skk-w3m-with-work-buffer 'lisp-indent-function 0) (put 'skk-w3m-with-work-buffer 'edebug-form-spec '(body)) ;;;; inline functions (defsubst skk-w3m-process-alive () (and skk-w3m-process (memq (process-status skk-w3m-process) '(run stop)))) ;;;; functions ;;; common tools ;;;###autoload (defun skk-w3m-search (search-engine &optional no-cache) (let* ((dbase (assoc search-engine skk-w3m-search-engine-alist)) (sex (nth 4 dbase)) cache v) (if (and dbase (or (not sex) ; always search this engine, or (not (eval sex)))) ; search this time. (if (and (not no-cache) (setq cache (cdr (assoc search-engine skk-w3m-cache)) cache (cdr (assoc skk-henkan-key cache)))) cache (condition-case nil (prog1 (setq v (if skk-w3m-use-w3m-backend (skk-w3m-search-by-backend dbase skk-henkan-key) (skk-w3m-search-by-emcas-w3m dbase skk-henkan-key))) (or no-cache (skk-w3m-cache search-engine skk-henkan-key v))) (error)))))) ; catch network unreachable error or something like that. (defun skk-w3m-cache (search-engine key list) (let ((cache (assoc search-engine skk-w3m-cache)) l) (cond ((and cache (setq l (assoc key cache))) (setcdr l list)) (cache (setcdr cache (cons (cons key list) (cdr cache)))) (t (setq skk-w3m-cache (cons (cons search-engine (list (cons key list))) skk-w3m-cache)))))) (defun skk-w3m-filter-string (string filters) (while filters (while (string-match (car filters) string) (setq string (concat (substring string 0 (match-beginning 0)) (substring string (match-end 0))))) (setq filters (cdr filters))) string) ;;; emacs-w3m dependent (defun skk-w3m-search-by-emcas-w3m (dbase key) (require 'w3m) (require 'w3m-search) (let ((post-process (nth 3 dbase)) (process-key (nth 5 dbase)) (query-string-function (nth 6 dbase)) (w3m-async-exec nil)) (if process-key (setq key (funcall process-key key))) (if post-process (skk-w3m-with-work-buffer (or (skk-w3m-w3m-retrieve (if query-string-function (apply 'format (nth 1 dbase) (funcall query-string-function key)) (format (nth 1 dbase) (w3m-search-escape-query-string key (nth 2 dbase))))) (error "")) (decode-coding-region (point-min) (point-max) (nth 2 dbase)) (prog1 (funcall post-process key) ;; not to enlarge working buffer (erase-buffer)))))) (defun skk-w3m-w3m-retrieve (url) (if skk-w3m-w3m-w3m-retrieve-has-new-argument-spec ;;(w3m-w3m-retrieve url no-decode no-cache post-data referer handler) (w3m-w3m-retrieve url nil t nil nil nil) (w3m-w3m-retrieve url))) ;;; w3m backend dependent (defun skk-w3m-search-by-backend (dbase key) (let (pos) (skk-w3m-with-work-buffer (or (skk-w3m-process-alive) (skk-w3m-init-w3m-backend)) (let ((process-key (nth 5 dbase)) (post-process (nth 3 dbase)) (query-string-function (nth 6 dbase))) (if (not post-process) nil (if process-key (setq key (funcall process-key key))) (if (nth 2 dbase) (skk-w3m-set-process-coding-system (nth 2 dbase))) (message "Reading...") (setq pos (skk-w3m-run-command (concat "get " (if query-string-function (apply 'format (nth 1 dbase) (funcall query-string-function key)) (format (nth 1 dbase) (skk-w3m-search-escape-query-string key (nth 2 dbase))))))) (message "Reading...done") (if pos (progn (goto-char pos) ;; not to enlarge working buffer (delete-region (point-min) (progn (beginning-of-line) (point))) (setq key (funcall post-process key))))))))) (defun skk-w3m-set-process-coding-system (coding-system) (static-cond ((featurep 'xemacs) (set-process-input-coding-system skk-w3m-process coding-system) (set-process-output-coding-system skk-w3m-process coding-system)) (t (set-process-coding-system skk-w3m-process coding-system coding-system)))) (defun skk-w3m-init-w3m-backend () (let ((process-connection-type t)) (buffer-disable-undo) ;;(insert "\nStarting w3m backend...\n\n") (skk-message "skk ¤Î¤¿¤á¤Ë w3m backend ¤òµ¯Æ°¤·¤Æ¤¤¤Þ¤¹..." "Starting w3m backend for skk...") (condition-case nil (progn (setq skk-w3m-process (start-process "skk w3m" (current-buffer) skk-w3m-command skk-w3m-command-args)) (static-cond ((and (string-match "^GNU" (emacs-version)) (string-lessp "22.0" emacs-version)) (set-process-query-on-exit-flag skk-w3m-process nil)) (t (process-kill-without-query skk-w3m-process))) (skk-w3m-set-process-coding-system skk-w3m-default-process-coding-system)) (file-error (skk-error "¥·¥¹¥Æ¥à¾å¤Ë \"%s\" ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" "Sorry, can't find \"%s\" on your system" skk-w3m-command)) (error (skk-w3m-kill 'nomsg))) (if (eq (process-status skk-w3m-process) 'exit) (progn (skk-w3m-kill 'nomsg) (skk-error "%s ¥×¥í¥»¥¹¤¬°Û¾ï½ªÎ»¤·¤Þ¤·¤¿¡£" "Process %s exited abnormally with code 1" skk-w3m-process))) (while (and (memq (process-status skk-w3m-process) '(run stop)) (goto-char (point-min)) (not (re-search-forward skk-w3m-backend-command-prompt nil t))) (accept-process-output skk-w3m-process)) ;;(or (memq (process-status skk-w3m-process) '(run stop)) ;; (skk-error "w3m backend ¥×¥í¥»¥¹¤ò¥¹¥¿¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó" ;; "Unable to start w3m backend process")) (goto-char (process-mark skk-w3m-process)) (skk-message "skk ¤Î¤¿¤á¤Ë w3m backend ¤òµ¯Æ°¤·¤Æ¤¤¤Þ¤¹...´°Î»!" "Starting w3m backend for skk...done"))) (defun skk-w3m-kill (&optional nomsg) "w3m backend ¥×¥í¥»¥¹¤ò»¦¤¹¡£" (interactive "P") (if (not (skk-w3m-process-alive)) ;; ËÌÅÍ¿À·ý¤ÎÀ¤³¦¤Ç¤¹¤Ê...¡£ (or nomsg (skk-message "w3m backend ¥×¥í¥»¥¹¤Ï´û¤Ë»à¤ó¤Ç¤Þ¤¹" "w3m backend process has already died")) (with-current-buffer (get-buffer skk-w3m-working-buffer) (unwind-protect (let ((skk-w3m-no-wait t)) (skk-w3m-run-command skk-w3m-kill-command) ;;(sit-for 1) (and (process-status skk-w3m-process) (delete-process skk-w3m-process)) ;;(setq skk-w3m-process nil) (or nomsg (skk-message "w3m backend ¥×¥í¥»¥¹¤¬»à¤Ë¤Þ¤·¤¿" "w3m backend process died"))) (kill-buffer (current-buffer)))))) (defun skk-w3m-run-command (command) ;; return last point where last command issued. (save-match-data (setq command (concat command " \n")) (let ((pmark (process-mark skk-w3m-process)) origpoint) (accept-process-output) ;; ư¤¤¤¿¥Ý¥¤¥ó¥È¤òÊݸ¤¹¤ë¤¿¤á save-excursion ¤Ï»È¤ï¤Ê¤¤¡£ (goto-char pmark) (setq origpoint (point)) (insert command) (set-marker pmark (point)) (process-send-string skk-w3m-process command) (accept-process-output (and (not skk-w3m-no-wait) skk-w3m-process)) (goto-char origpoint) (while (and (not (re-search-forward skk-w3m-backend-command-prompt pmark t)) ;; quit ¥³¥Þ¥ó¥É¤òÁ÷¤Ã¤¿¤é¥×¥í¥ó¥×¥È¤Ïµ¢¤Ã¤Æ¤³¤Ê¤¤¡£ (not (eq (process-status skk-w3m-process) 'exit))) (accept-process-output)) ;;(skk-w3m-check-errors) origpoint))) ;; just a copy of w3m-url-encode-string of w3m.el (defun skk-w3m-url-encode-string (str &optional coding) (apply (function concat) (mapcar (lambda (ch) (cond ((string-match "[-a-zA-Z0-9_:/]" (char-to-string ch)) ; xxx? (char-to-string ch)) ; printable (t (format "%%%02X" ch)))) ; escape ;; Coerce a string to a list of chars. (append (encode-coding-string str (or coding 'iso-2022-jp)) nil)))) ;; just a copy of w3m-search-escape-query-string of w3m-search.el (defun skk-w3m-search-escape-query-string (str &optional coding) (mapconcat (lambda (s) (skk-w3m-url-encode-string s (or coding skk-w3m-default-process-coding-system))) (split-string str) "+")) ;;; process functions for each databases. (defun skk-w3m-get-candidates-from-goo-daijirin (key) (save-match-data (let ((startregexp (if skk-w3m-use-w3m-backend nil ;;(format ;;"¢£¡Î%s¡Ï¤ÎÂç¼­ÎÓÂèÆóÈǤ«¤é¤Î¸¡º÷·ë²Ì¡¡ [0-9]+·ï" key) "")) (endregexp (if skk-w3m-use-w3m-backend nil ;;(format ;;"¢£¡Î%s¡Ï¤ÎÂç¼­ÎÓÂèÆóÈǤ«¤é¤Î¸¡º÷·ë²Ì¡¡ [0-9]+·ï" key) "")) (start (if skk-w3m-use-w3m-backend (point-min))) (end (if skk-w3m-use-w3m-backend (process-mark skk-w3m-process))) temp v) (if startregexp (progn (re-search-forward startregexp nil t nil) (setq start (point)))) (if endregexp (progn (re-search-forward endregexp nil t nil) (setq end (point)))) (if (not (and start end)) nil (goto-char start) (setq key (mapconcat 'char-to-string key "-*")) (setq key (format "\\(%s\\|%s\\)" ;; 8 ¿·µ¬¤Ç³«¤¯ ¤«¤ó¤­¤ç¤¦¡Ú´Ï¶¶¡Û (format "%s *¡Ú\\([^<>¡Ú¡Û]+\\)¡Û" key) ;; ¤·¤³¤¦-¤µ¤¯¤´¡½¤«¤¦¡½¡Ú»î¹Ôºø¸í¡Û ;; ¤¬¤¤¤Ï¤ó¤Ü¤·¤°¤ï¤¤¤Ï¤ó¡½¡Ú³°È¿ÙÅìæ¡Û ;; ¤Ê¤«¤ß ¡ÚÃæ¿È¡¦ÃæÌ£¡Û ;; ¤·¤³¤¦-¤µ¤¯¤´ ¡½¤«¤¦¡½ ¡Ú»î¹Ôºø¸í¡Û ;; ¤¨¤¬¤ª¤ñ¤¬¤Û¡Ú¡Ô¾Ð´é¡Õ¡Û (format "\\(\\)*%s[^¡Ú]*¡Ú\\([^<>¡Ú¡Û]+\\)¡Û *" key))) (while (re-search-forward key end t nil) ;; KEY = "\\(¤·-*¤³-*¤¦-*¤µ-*¤¯-*¤´ *¡Ú\\([^<>¡Ú¡Û]+\\)¡Û\\|\\(\\)*¤·-*¤³-*¤¦-*¤µ-*¤¯-*¤´[^<¡Ú]*¡Ú\\([^<>¡Ú¡Û]+\\)¡Û *\\)" (setq temp (skk-w3m-filter-string ;; ¡Ò²¿»þ¡Ó ;; ¡Ô¾Ð´é¡Õ (or (match-string-no-properties 2) (match-string-no-properties 4)) '("¡Ò" "¡Ó" "¡Ô" "¡Õ"))) (dolist (elm (split-string temp "¡¦")) ;; do not add a redundant candidate. (unless (member elm v) (setq v (cons elm v))))) (nreverse v))))) (defun skk-w3m-get-candidates-from-goo-exceed-waei (key) ;; SORRY, NOT YET. ;; ;; 15:¢£¡Î¤Í¤Ã¤·¤ó¡Ï¤ÎEXCEEDϱѼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; ;; 16:* ;; ;; 17: ;; ;; 18:¤Í¤Ã¤·¤ó ;; ;; 19:[clear] Ç®¿´ ;; ;; 20:[clear] zeal¡¨¡¡ardor¡¨¡¡eagerness¡¨¡¡enthusiasm¡¥¡¡¡Á¤Ê ;; ;; 21: eager¡¨¡¡ardent¡¨¡¡keen¡¥¡¡¡Á¤Ë¡¡eagerly¡¨ ;; ;; 22: earnestly¡¨¡¡intently¡¥ ;; ;; 23: ;; ;; 24:* ;; ;; 25:¢£¡Î¤Í¤Ã¤·¤ó¡Ï¤ÎEXCEEDϱѼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; (let (temp v) ;; (save-match-data ;; (if (not (re-search-forward ;; (concat "¢£\\¡Î" (regexp-quote key) "\\¡Ï¤ÎEXCEEDϱѼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì") ;; nil t nil)) ;; nil ;; (while (re-search-forward "\\[clear\\] [a-z]+\\.¡¡\\([^ a-zA-Z][^¡¥]+\\)¡¥" nil t nil) ;; (setq temp (match-string-no-properties 1)) ;; (setq temp (skk-w3m-filter-string ;; ;; [[ÊÆÏÃ]] ;; temp '("\n" "[0-9]+: +" "[¡¡ ]+" "¡Ê[¤¡-¤ó]+¡Ë" "([, a-z]+)" ;; "\\[\\[[^a-zA-Z]+\\]\\]"))) ;; (while (string-match "\\([^¡¤¡¨]+\\)¡Î\\([^¡¤¡¨]+\\)¡Ï\\([^¡¤¡¨]+\\)*" temp) ;; (setq temp (concat (substring temp 0 (match-beginning 0)) ;; (match-string-no-properties 1 temp) ;; (match-string-no-properties 3 temp) ;; "¡¤" ;; (match-string-no-properties 2 temp) ;; (match-string-no-properties 3 temp) ;; (substring temp (match-end 0))))) ;; ;; (setq v (nconc v (split-string temp "[¡¤¡¨]")))) ;; v)))) ) (defun skk-w3m-get-candidates-from-goo-exceed-eiwa (key) ;; SORRY, NOT YET. ;; ;; ;;
;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;;
;; ¢£¡Îcollaborate¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;;
;;
;; ;; ;; ;; ;;
;; ;; col¡¦lab¡¦o¡¦rate¡¡ ;; ;;
;; ;; ;; ;; ;; ;;
;; ;; ;; ;;
;; ;; ;; ;; ;; ;;
;; ;; vi.¡¡¶¦¤ËƯ¤¯¡¨¡¡¶¦Æ±¸¦µæ¤¹¤ë¡¡(with, on, in)¡¨¡¡Å¨Â¦¡ÎÀêÎη³¡Ï¤Ë¶¨ÎϤ¹¤ë¡¥ ;; ;;
;; ;; ;; ;; ;; ;;
;; ;; collaboration¡¡ ;; ;;
;; ;; ;; ;; ;; ;;
;; ;; n.¡¡collaborationism¡¡n.¡¡collaborationist¡¡n.¡¡¡ÊŨ¦¤Ø¤Î¡Ë¶¨Îϼԡ¥ ;; ;;
;; ;; ;; ;; ;; ;;
;; ;; collaborative ;; ;;
;; ;; ;; ;; ;; ;;
;; ;; ;; ;;
;; ;; ;; ;; ;; ;;
;; ;; a.¡¡¶¦Æ±À©ºî¤Î¡¥ ;; ;;
;; ;; ;; ;; ;; ;;
;; ;; collaborator¡¡ ;; ;;
;; ;; ;; ;; ;; ;;
;; ;; n. ;; ;;
;;
;;
;; ¢£¡Îcollaborate¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;;
;; ;;
;; ;; ;; con¡¦tem¡¦po¡¦ra¡¦ry ;; [clear] ¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü ;; [clear] a., n.¡¡Æ±»þÂå¤Î¡Ê¿Í¡¤»¨»ï¡Ë¡¡(with)¡¨¡¡Æ±Ç¯Îð¤Î¡Ê ;; ¿Í¡Ë¡¨¡¡¸½Âå¤Î¡Ê¿Í¡Ë¡¥ ;; ;; * ;; ¢£¡Îcontemporary¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; ;; 14:¢£¡Îcollaborate¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; 15:* ;; 16: ;; 17:col¡¦lab¡¦o¡¦rate ;; 18:[clear] ¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü ;; 19:[clear] vi.¡¡¶¦¤ËƯ¤¯¡¨¡¡¶¦Æ±¸¦µæ¤¹¤ë¡¡(with, on, in)¡¨ ;; 20: Ũ¦¡ÎÀêÎη³¡Ï¤Ë¶¨ÎϤ¹¤ë¡¥ ;; 21:[clear] collaboration ;; 22:[clear] n.¡¡collaborationism¡¡n.¡¡collaborationist¡¡n.¡¡¡Ê ;; 23: Ũ¦¤Ø¤Î¡Ë¶¨Îϼԡ¥ ;; 24:[clear] collaborative ;; 25:[clear] ¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü ;; 26:[clear] a.¡¡¶¦Æ±À©ºî¤Î¡¥ ;; 27:[clear] collaborator ;; 28:[clear] n. ;; 29: ;; 30:* ;; 31:¢£¡Îcollaborate¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; ;; ¢£¡Îvery¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì¡¡ 2·ï ;; * ;; ;; 1 ¿·µ¬¤Ç³«¤¯ very ;; ;; 2 ¿·µ¬¤Ç³«¤¯ Very light ;; ;; * ;; ¢£¡Îvery¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì¡¡ 2·ï ;; ;; ¢£¡Îcontemporary¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; * ;; (save-match-data ;; (let (temp v start end) ;; (if (not (search-forward "" nil t nil)) ;; nil ;; (setq start (point)) ;; (if (search-forward "" nil t nil) ;; (setq end (point))) ;; (goto-char start) ;; (setq key (concat "" (regexp-quote key) " +¡Ú\\([^¡Ú¡Û]+\\)¡Û")) ;; (while (re-search-forward key end t nil) ;; (setq temp (skk-w3m-filter-string ;; ;; ¡Ò²¿»þ¡Ó ;; (match-string-no-properties 1) '("¡Ò" "¡Ó"))) ;; (setq v (nconc (split-string temp "¡¦") v))) ;; (nreverse v))))) ;; (save-match-data ;; (let (v) ;; (if (not (re-search-forward "[0-9]+ ¿·µ¬¤Ç³«¤¯" nil t nil)) ;; (if (re-search-forward ;; (concat "¢£\\¡Î" (regexp-quote key) "\\¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì") ;; nil t nil) ;; (setq v (skk-w3m-get-candidates-from-goo-exceed-eiwa-1))) ;; (beginning-of-line) ;; (while (re-search-forward "[0-9]+ ¿·µ¬¤Ç³«¤¯" nil t nil) ;; (backward-char) ;; (w3m-view-this-url) ;; (goto-char (point-min)) ;; (if (re-search-forward ;; (concat "¢£\\¡Î" (regexp-quote key) "\\¡Ï¤ÎEXCEED±Ñϼ­Åµ¤«¤é¤Î¸¡º÷·ë²Ì") ;; nil t nil) ;; (setq v (nconc v (skk-w3m-get-candidates-from-goo-exceed-eiwa-1)))) ;; (w3m-view-previous-page))) ;; v)) ) ;; (defun skk-w3m-get-candidates-from-goo-exceed-eiwa-1 () ;; (save-match-data ;; (let (temp temp1 temp2 temp3 tail v) ;; (while (re-search-forward ;; "\\[clear\\] [a-z]+\\.\\(, [a-z]+\\.\\)*¡¡\\([^ a-zA-Z][^¡¥]+\\)¡¥" ;; nil t nil) ;; (setq temp (match-string-no-properties 2)) ;; (setq temp (skk-w3m-filter-string ;; ;; e.x. `ÆèÀ÷¡Ê¤Ê¤Ä¤»¤ó¡Ë¹©', `(on, in)', `¡Ú·Ð±Ä¡Û' ;; temp '("\n" "[0-9]+: +" "[¡¡ ]+" "¡Ê[¤¡-¤ó]+¡Ë" "([, a-z]+)" ;; "¡Ä¤Î" "¡Ú[^¡Ú¡Û]+¡Û" "(¶¯°Õ)"))) ;; (while (string-match ;; ;; ((...)) ¤Ï°ÕÌ£¤òɽ¤ï¤¹¤è¤¦¤À¡£ ;; ;; e.x. ¥¤¥ó¥¸¥±¡¼¥¿¡¡((µ¡´ï¤Îºîư¾õÂÖ¤òɽ¼¨¤¹¤ëµ¡Ç½)) ;; ;; ³ç¸ÌÆâ¤ò¤¢¤¨¤Æ¥Õ¥£¥ë¥¿¥ê¥ó¥°¤·¤Ê¤¤¤Ç½ÐÎϤ¹¤ë¡£ ;; "\\([^¡¤¡¨]+\\)\\(¡Î\\|((\\)\\([^¡¤¡¨]+\\)\\(¡Ï\\|))\\)\\([^¡¤¡¨]+\\)*" ;; temp) ;; (setq temp (concat (substring temp 0 (match-beginning 0)) ;; (match-string-no-properties 1 temp) ;; (match-string-no-properties 5 temp) ;; "¡¤" ;; (match-string-no-properties 3 temp) ;; (match-string-no-properties 5 temp) ;; (substring temp (match-end 0))))) ;; ;; ÅöÏǡʤθ¶°ø¡Ë ¢ª ÅöÏÇ¡¤ÅöÏǤθ¶°ø ;; ;; Ʊ»þÂå¤Î¡Ê¿Í¡¤»¨»ï¡Ë¢ª Ʊ»þÂå¤Î¡¤Æ±»þÂå¤Î¿Í¡¤Æ±»þÂå¤Î»¨»ï ;; (while (string-match "\\([^¡¤¡¨]+\\)¡Ê\\([^¡¨]+\\)¡Ë\\([^¡¤¡¨]+\\)*" temp) ;; (setq temp1 (match-string-no-properties 1 temp) ;; temp2 (match-string-no-properties 2 temp) ;; temp3 (match-string-no-properties 3 temp) ;; tail (substring temp (match-end 0))) ;; (setq temp (concat (substring temp 0 (match-beginning 0)) ;; temp1 "¡¤" ;; (mapconcat 'identity ;; (mapcar ;; (function (lambda (e) (concat temp1 e temp3))) ;; (split-string temp2 "¡¤")) ;; "¡¤") ;; tail))) ;; ;; ¡ÊÌäÂê¤ò¡Ëʶµê¤µ¤»¤ë ¢ª ʶµê¤µ¤»¤ë¡¤ÌäÂê¤òʶµê¤µ¤»¤ë ;; (while (string-match "¡Ê\\([^¡¨]+\\)¡Ë\\([^¡¤¡¨]+\\)" temp) ;; (setq temp1 (match-string-no-properties 1 temp) ;; temp2 (match-string-no-properties 2 temp) ;; tail (substring temp (match-end 0))) ;; (setq temp (concat (substring temp 0 (match-beginning 0)) ;; temp2 "¡¤" ;; (mapconcat 'identity ;; (mapcar ;; (function (lambda (e) (concat e temp2))) ;; (split-string temp1 "¡¤")) ;; "¡¤") ;; tail))) ;; (setq v (nconc v (split-string temp "[¡¤¡¨]"))) ;; ;; skip to next candidate. ;; (or (re-search-forward "\\[clear\\] ¡ü+" nil t nil) ;; (goto-char (point-max)))) ;; v))) (defun skk-w3m-get-candidates-from-goo-daily-shingo (key) ;; not yet. ;; 15:¢£¡ÎSPA¡Ï¤Î¥Ç¥¤¥ê¡¼¿·¸ì¼­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ;; 16:* ;; 17: ;; 18:SPA ;; 19: ;; 20: ¡Îspeciality store retailer of private label apparel¡Ï ;; 21: ¼«¼Ò¥Ö¥é¥ó¥É¤Î°áÎÁÉʤòÇä¤ëľ±ÄŹ¤Î¤³¤È¡£¤Þ¤¿¡¤¤½¤Î¤è¤¦¤Ê»ö¶È·ÁÂÖ¡£°áÎÁÉʤδë ;; 22: ²è¡¦³«È¯¤«¤éÀ½Â¤¡¦Î®ÄÌ¡¦ÈÎÇä¤Ë»ê¤ë¤Þ¤Ç¤ò°ì³ç¤·¤Æ¼è¤ê°·¤¤¡¤¸ÜµÒ¤Î¥Ë¡¼¥º¤Ë¸úΨ ;; 23: Ū¤ËÂбþ¤¹¤ë¡£ ;; 24: ¢ª¥×¥é¥¤¥Ù¡¼¥È-¥Ö¥é¥ó¥É ;; 25: ¡ÌÆÈ¼«¥Ö¥é¥ó¥É°áÎÁ¤ÎÀìÌçŹÈÎÇä¶È¼Ô¤Îά¡£¥¢¥á¥ê¥«¤Î°áÎÁ¾®Ç䏤ˤè¤ë¤¸ì¤¬µ¯¸» ;; 26: ¡Í ;; 27: ;; 28: ;; 29:* ;; 30:¢£¡ÎSPA¡Ï¤Î¥Ç¥¤¥ê¡¼¿·¸ì¼­Åµ¤«¤é¤Î¸¡º÷·ë²Ì ) (defun skk-w3m-get-candidates-from-quote-yahoo (key) ;;(if (search-forward "U.S. Markets Closed." nil t nil) ;; 'closed (re-search-forward ;; USDJPY ;; SFRJPY=X (format "]+%s\\(=X\\)?[^>]+\">%s\\(=X?\\)?" (concat skk-w3m-currency-from skk-w3m-currency-to) (concat skk-w3m-currency-from skk-w3m-currency-to))) (re-search-forward "\\([,.0-9]+\\)") (match-string-no-properties 1)) (defun skk-w3m-make-query-quote-yahoo (key) ;; http://quote.yahoo.com/m5?a=%s&s=%s&t=%s&c=0" ;; http://quote.yahoo.com/m5?a=1&s=USD&t=JPY&c=0 ; U.S. Dollar, Japanese Yen (while (string-match "," key) (setq key (concat (substring key 0 (match-beginning 0)) (substring key (match-end 0))))) (if (string-match "[.0-9]+" key) (list (match-string-no-properties 0 key) skk-w3m-currency-from skk-w3m-currency-to))) ;;;###autoload (defun skk-w3m-query-quote-yahoo ;; $# /(skk-w3m-query-quote-yahoo "USD" "JPY" 'postfix "±ß")/(skk-w3m-query-quote-yahoo "USD" "DEM" 'prefix "DM")/ ;; sfr# /(skk-w3m-query-quote-yahoo "CHF" "JPY" 'postfix "±ß")/ ;; dm# /(skk-w3m-query-quote-yahoo "DEM" "JPY" 'postfix "±ß")/ (currency-from currency-to &optional position convert-currency-to) (let (v) (setq skk-w3m-currency-from currency-from skk-w3m-currency-to currency-to) (setq v (skk-w3m-search "quote-yahoo" 'no-cache)) ;;(if (eq v 'closed) ;; (message "U.S. markets closed, cannot get currency information!") (concat (if (not convert-currency-to) currency-to) (eval (if (eq 'prefix position) convert-currency-to)) v (eval (if (eq 'postfix position) convert-currency-to))))) (provide 'skk-w3m) ;;; Local Variables: ;;; End: ;;; skk-w3m.el ends here ddskk-15.1.54/experimental/dbm/0000775000076600007660000000000012051632626015701 5ustar brutusbrutusddskk-15.1.54/experimental/dbm/README.dbm0000664000076600007660000000746307011166445017335 0ustar brutusbrutus-*- text -*- skk-dbm.el $B$K$D$$$F(B $Date: 1999/11/07 03:08:21 $ $BCfEg44IW(B $Id: README.dbm,v 1.1 1999/11/07 03:08:21 minakaji Exp $ o skk-dbm.el $B$H$O!"(Bskkserv $B$r2p$9$k%5!<%A$NBeBX$N<-=q%"%/%;%9J}K!$rDs6!(B $B$7$^$9!#%5!<%P!<$r2p$5$:$K(B XEmacs $B$N5!G=$r;HMQ$7!"D>@\(B dbm (berkeley-db, gdbm or ndbm) $B%G!<%?%Y!<%9%U%!%$%k$r%*!<%W%s$7$F8!:w$7$^(B $B$9!#(B o XEmacs-21.2-b8 $B$GF0:n3NG'$7$F$$$^$9!#(Bversion $B$N>\:Y$OCN$i$J$$$N$G$9$,!"(B database $B5!G=$r;}$C$F$$$k(B XEmacs $B$G$J$$$HF0$-$^$;$s!#(BOther Emacsen $B$r(B $B$4;HMQ$NJ}$O$"$-$i$a$F2<$5$$!#(B o --with-database $B%*%W%7%g%s$rIU$1$F(B configure $B$rE*$K%5%]!<%H$5$l$F$$(B $B$^$9!#(Bberkeley-db $B$H(B gnudbm ($B$b$7$/$O(B dbm) $B$OF1;~;XDj$,$G$-$^$9!#(B $B;d$O!"8e=R$N(B gdbm $BBP1~%Q%C%A$rEv$F$?8e!"(B ./configure --with-database=gnudbm,berkdb $B$N$h$&$K$7$F;XDj$7$F(B configure $B$rAv$i$;$F$$$^$9!#(B o $B%G!<%?%Y!<%9%i%$%V%i%j$H$7$F(B gdbm $B$r;H$&>l9g$G!"%G!<%?%Y!<%9$r(B gdbm $B7A(B $B<0$H$7$?$$$H$-$O!"(BXEmacs 21.2b8 $B$,(B gdbm $B%U%!%$%k$KD>@\%"%/%;%9$G$-$J$$(B (libgdbm $B$r%j%s%/$7$F$$$J$,$i(B libndbm $B8_494X?t$7$+;HMQ$7$J$$$N$G(B .dir, .pag $B$r3HD%;R$H$9$k%U%!%$%k$7$+3+$1$J$$(B) $B$3$H$+$i!"E:IU$N(B diff-to-xemacs-21.2.8 $B$rEv$F$F:F%3%s%Q%$%k$9$kI,MW$,$"$j$^$9(B ($B$^$!!"2?(B $B$HLLE]$J(B...$B$-$C$HC/$b;H$o$J$$(B...)$B!#(B ** berkeley-db $B%U%!%$%k$@$1$G$"$l$P%Q%C%A$rEv$F$kI,MW$O$"$j$^$;$s!#(B** o ndbm $B$G;H$($k$+$I$&$+$OL$3NG'$G$9!#(B o $B2?8N$+!"(Bmakedbmdic (pskkserv $BE:IU$N<-=q(B make tool) $B$G:n$C$?(B gdbm/db $B<-=q$OFI$a$^$;$s(B ($B62$i$/(B coding-system $B7O$NLdBj$G$7$g$&(B)$B!#(Bskk-dbm.el $BFb$K$"$k(B skk-dbm-make-jisyo $B4X?t$r;H$C$F<-=q$r:n$k$H0l1~@5>o$K8!:w$O$G(B $B$-$F$$$k$h$&$G$9!#(B $B>e5-$NMWNN$G:n$C$?(B XEmacs $B$G(B (skk-dbm-make-jisyo "/usr/local/share/skk/SKK-JISYO.L" "SKK-JISYO.L.db" 'berkeley-db 'hash ) $B$N$h$&$K$7$F!"(BSKK-JISYO.L.db ($B$"$k$$$O(B skk-dbm-make-jisyo $B$N%*%W%7%g%s(B $B$rJQ99$7$F(B SKK-JISYO.gdbm or SKK-JISYO.L.dir (& SKK-JISYO.L.pag) $B$r:n$C(B $B$F2<$5$$!#%^%7%s$NB.$5$H<-=q$NBg$-$5$K$b$h$j$^$9$,!"(BMMX Pentium 166MHz $B$N%^%7%s$G(B 3,200KB $B$[$I$N<-=q$r(B gdbm $B2C9)$9$k$N$KLs(B 1 $B;~4V(B (!) $B$+$+$j$^$7$?!#(Bberkeley-db $B$@$H@53N$K7W$C$F$$$^$;$s$,!"2?8N$+(B 20 $B?t(B $BJ,$G:n@.$G$-$?$h$&$K;W$$$^$9!#(B $B$A$J$_$K(B skk-dbm.el $B$O%P%$%H%3%s%Q%$%k$7$?$b$N$r%m!<%I$7$F(B skk-dbm-make-jisyo $B$r/$7$G$bM>7W$J;~4V$r?)$o$:$K:Q$_$^$9!#(B o $Bl9g$O!"(Bdir $B$d(B pag $B$H$$$C$?3HD%;R$O>J$$$F;XDj$9$l$PNI$$$O$:$G$9(B)$B!#(B $B$^$?!"2<5-$N$h$&$K@_Dj$9$k$H!"8D?M<-=q$b%G!<%?%Y!<%92=$7$F(B ($B8D?M<-=q$N(B $B%G!<%?%Y!<%92=$O<+F02=$5$l$F$$$^$9(B) $B8!:w$r9T$J$&$3$H$,$G$-$^$9!#(B (setq skk-search-prog-list '((skk-dbm-search-jisyo-database skk-dbm-jisyo) (skk-dbm-search-jisyo-database skk-dbm-large-jisyo 'nomsg) )) o diff-to-xemacs-21.2.8 $B$K$D$$$F$O!"(Bxemacs-beta@xemacs.org $B$G5DO@$5$l!"(B $B$^$?!"0l1~6cL#$5$l$?>e$G(B xemacs-patches@xemacs.org $B$KEj9F$7$F$"$j$^$9(B $B$,!"(BXEmacs $B$K http://www.asahi-net.or.jp/~gy2m-nkjm/ ddskk-15.1.54/experimental/dbm/diff-to-xemacs-21.2.80000664000076600007660000006577007011166451021175 0ustar brutusbrutus*** xemacs-21.2.8.orig/src/config.h.in Sun Dec 6 01:55:24 1998 --- xemacs-21.2.8/src/config.h.in Sat Jan 2 08:49:48 1999 *************** *** 340,345 **** --- 340,346 ---- /* Compile in support for DBM databases? May require libgdbm or libdbm. */ #undef HAVE_DBM + #undef HAVE_GDBM /* Compile in support for Berkeley DB style databases? May require libdb. */ #undef HAVE_BERKELEY_DB *** xemacs-21.2.8.orig/configure.in Sun Dec 27 13:13:14 1998 --- xemacs-21.2.8/configure.in Mon Jan 4 17:47:08 1999 *************** *** 3491,3517 **** test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \ != "no no no" && AC_CHECKING(for database support) dnl Check for ndbm.h, required for either kind of DBM support. ! if test "$with_database_gnudbm $with_database_dbm" != "no no"; then AC_CHECK_HEADER(ndbm.h, [:], [ ! test "$with_database_gnudbm" = "yes" -o \ ! "$with_database_dbm" = "yes" && \ XE_DIE("Required DBM support cannot be provided.") ! with_database_gnudbm=no with_database_dbm=no]) fi ! dnl Check for DBM support in libgdbm. if test "$with_database_gnudbm" != "no"; then ! AC_CHECK_LIB(gdbm, dbm_open, [ ! with_database_gnudbm=yes with_database_dbm=no libdbm=-lgdbm], [ ! if test "$with_database_gnudbm" = "yes"; then XE_DIE("Required GNU DBM support cannot be provided.") - fi with_database_gnudbm=no]) fi dnl Check for DBM support in libc and libdbm. ! if test "$with_database_dbm" != "no"; then AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [ AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [ test "$with_database_dbm" = "yes" && \ --- 3491,3526 ---- test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \ != "no no no" && AC_CHECKING(for database support) + dnl Check for gdbm.h, required for GDBM support. + if test "$with_database_gnudbm" != "no"; then + AC_CHECK_HEADER(gdbm.h, [:], [ + test "$with_database_gnudbm" = "yes" && \ + XE_DIE("Required GNU DBM support cannot be provided.") + with_database_gnudbm=no]) + fi + dnl Check for ndbm.h, required for either kind of DBM support. ! dnl if test "$with_database_dbm" != "no" -a "$with_database_gnudbm" != "yes" ; then ! if test "$with_database_dbm" != "no" ; then AC_CHECK_HEADER(ndbm.h, [:], [ ! test "$with_database_dbm" = "yes" && \ XE_DIE("Required DBM support cannot be provided.") ! with_database_dbm=no]) fi ! dnl Check for GDBM support in libgdbm. if test "$with_database_gnudbm" != "no"; then ! AC_CHECK_LIB(gdbm, dbm_open, [with_database_gnudbm=yes libdbm=-lgdbm], [ ! test "$with_database_gnudbm" = "yes" && \ XE_DIE("Required GNU DBM support cannot be provided.") with_database_gnudbm=no]) fi + + if test "$with_database_gnudbm" == "yes" -a "$with_database_dbm" != "no"; then + with_database_dbm=yes dnl Check for DBM support in libc and libdbm. ! elif test "$with_database_dbm" != "no"; then AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [ AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [ test "$with_database_dbm" = "yes" && \ *************** *** 3519,3528 **** with_database_dbm=no])]) fi ! dnl Tell make about the DBM support we detected. test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS) ! test "$with_database_gnudbm" = "yes" -o \ ! "$with_database_dbm" = "yes" && \ AC_DEFINE(HAVE_DBM) dnl Check for Berkeley DB. --- 3528,3543 ---- with_database_dbm=no])]) fi ! ! dnl Tell make about the GDBM support we detected. test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS) ! test "$with_database_gnudbm" = "yes" && \ ! AC_DEFINE(HAVE_GDBM) ! ! dnl Tell make about the DBM support we detected. ! test -n "$libdbm" && test "$with_database_gnudbm" != "yes" && \ ! XE_PREPEND("$libdbm", LIBS) ! test "$with_database_dbm" = "yes" && \ AC_DEFINE(HAVE_DBM) dnl Check for Berkeley DB. *** xemacs-21.2.8.orig/src/database.c Sun Dec 27 13:13:00 1998 --- xemacs-21.2.8/src/database.c Mon Jan 4 17:40:06 1999 *************** *** 61,66 **** --- 61,73 ---- Lisp_Object Qhash, Qbtree, Qrecno, Qunknown; #endif /* HAVE_BERKELEY_DB */ + #ifdef HAVE_GDBM + #include + Lisp_Object Qgdbm; + Lisp_Object Qcachesize; + Lisp_Object Qfastmode; + #endif /* HAVE_GDBM */ + #ifdef HAVE_DBM #include Lisp_Object Qdbm; *************** *** 98,103 **** --- 105,114 ---- int access_; int dberrno; int live_p; + #ifdef HAVE_GDBM + GDBM_FILE gdbm_handle; + int access_mark; + #endif #ifdef HAVE_DBM DBM *dbm_handle; #endif *************** *** 137,142 **** --- 148,157 ---- #endif #ifdef HAVE_DBM db->dbm_handle = NULL; + db->access_mark = 0; + #endif + #ifdef HAVE_GDBM + db->gdbm_handle = NULL; #endif db->access_ = 0; db->mode = 0; *************** *** 161,172 **** { char buf[64]; Lisp_Database *db = XDATABASE (obj); ! if (print_readably) error ("printing unreadable object #", db->header.uid); write_c_string ("#fname, printcharfun, 0); sprintf (buf, "\" (%s/%s/%s) 0x%x>", (char *) string_data (XSYMBOL (db->funcs->get_type (db))->name), (char *) string_data (XSYMBOL (db->funcs->get_subtype (db))->name), --- 176,214 ---- { char buf[64]; Lisp_Database *db = XDATABASE (obj); ! #ifdef HAVE_GDBM ! Lisp_Object type; ! #endif if (print_readably) error ("printing unreadable object #", db->header.uid); write_c_string ("#fname, printcharfun, 0); + #ifdef HAVE_GDBM + type = db->funcs->get_type (db); + if (NILP (type) ||EQ (type, Qgdbm)) + sprintf (buf, "\" (%s/%s/%s) 0x%x>", + (char *) string_data (XSYMBOL (db->funcs->get_type (db))->name), + (char *) string_data (XSYMBOL (db->funcs->get_subtype (db))->name), + (!DATABASE_LIVE_P (db) ? "closed" : + (db->access_ == GDBM_READER) ? "readonly" : + (db->access_ == (GDBM_WRITER|GDBM_FAST)) ? "readwrite(fastmode)" : + (db->access_ == GDBM_WRITER) ? "readwrite" : + (db->access_ == (GDBM_WRCREAT|GDBM_FAST)) ? "readwrite(create, fastmode)" : + (db->access_ == GDBM_WRCREAT) ? "readwrite(create)" : + (db->access_ == (GDBM_NEWDB|GDBM_FAST)) ? "create(force, fastmode)" : + /* (db->access_ == GDBM_NEWDB) ? "create(force)" ), */ + "create(force)" ), + db->header.uid); + else + sprintf (buf, "\" (%s/%s/%s) 0x%x>", + (char *) string_data (XSYMBOL (db->funcs->get_type (db))->name), + (char *) string_data (XSYMBOL (db->funcs->get_subtype (db))->name), + (!DATABASE_LIVE_P (db) ? "closed" : + (db->access_ & O_WRONLY) ? "writeonly" : + (db->access_ & O_RDWR) ? "readwrite" : "readonly"), + db->header.uid); + #else sprintf (buf, "\" (%s/%s/%s) 0x%x>", (char *) string_data (XSYMBOL (db->funcs->get_type (db))->name), (char *) string_data (XSYMBOL (db->funcs->get_subtype (db))->name), *************** *** 174,179 **** --- 216,224 ---- (db->access_ & O_WRONLY) ? "writeonly" : (db->access_ & O_RDWR) ? "readwrite" : "readonly"), db->header.uid); + + #endif /* HAVE_GDBM */ + write_c_string (buf, printcharfun); } *************** *** 354,361 **** --- 399,659 ---- dbm_closeit, dbm_lasterr }; + + static Lisp_Object + dbm_open_database (Lisp_Object file, Lisp_Object access_, Lisp_Object mode) + { + int modemask; + int accessmask = 0; + char *filename; + Lisp_Database *db = NULL; + Lisp_Object retval; + DBM *dbase; + + GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); + + if (NILP (access_)) + accessmask = O_RDWR | O_CREAT; + else + { + char *acc; + CHECK_STRING (access_); + acc = (char *) XSTRING_DATA (access_); + + if (strchr (acc, '+')) + accessmask |= O_CREAT; + + { + char *rp = strchr (acc, 'r'); + char *wp = strchr (acc, 'w'); + if (rp && wp) accessmask |= O_RDWR; + else if (wp) accessmask |= O_WRONLY; + else accessmask |= O_RDONLY; + } + } + + if (NILP (mode)) + modemask = 0755; /* rwxr-xr-x */ + else + { + CHECK_INT (mode); + modemask = XINT (mode); + } + + /* Should check directory is writeable or not in case O_RDWR or + O_WRONLY and/or O_CREAT is set. */ + + dbase = dbm_open (file, accessmask, modemask); + if (!dbase) + return Qnil; + + db = allocate_database (); + db->dbm_handle = dbase; + db->funcs = &ndbm_func_block; + db->live_p = 1; + db->fname = file; + db->mode = modemask; + db->access_ = accessmask; + + XSETDATABASE (retval, db); + return retval; + } + #endif /* HAVE_DBM */ + #ifdef HAVE_GDBM + static void + gdbm_map (Lisp_Database *db, Lisp_Object func) + { + datum keydatum, valdatum; + Lisp_Object key, val; + + for (keydatum = gdbm_firstkey (db->gdbm_handle); + keydatum.dptr != NULL; + keydatum = gdbm_nextkey (db->gdbm_handle, keydatum)) + { + valdatum = gdbm_fetch (db->gdbm_handle, keydatum); + key = make_string ((unsigned char *) keydatum.dptr, keydatum.dsize); + val = make_string ((unsigned char *) valdatum.dptr, valdatum.dsize); + call2 (func, key, val); + } + db->access_mark = 1; + } + + static Lisp_Object + gdbm_get (Lisp_Database *db, Lisp_Object key) + { + datum keydatum, valdatum; + + keydatum.dptr = (char *) XSTRING_DATA (key); + keydatum.dsize = XSTRING_LENGTH (key); + valdatum = gdbm_fetch (db->gdbm_handle, keydatum); + db->access_mark = 1; + + return (valdatum.dptr + ? make_string ((unsigned char *) valdatum.dptr, valdatum.dsize) + : Qnil); + } + + static int + gdbm_put (Lisp_Database *db, + Lisp_Object key, Lisp_Object val, Lisp_Object replace) + { + int ret = 0; + datum keydatum, valdatum; + + valdatum.dptr = (char *) XSTRING_DATA (val); + valdatum.dsize = XSTRING_LENGTH (val); + keydatum.dptr = (char *) XSTRING_DATA (key); + keydatum.dsize = XSTRING_LENGTH (key); + db->access_mark = 1; + ret = gdbm_store (db->gdbm_handle, keydatum, valdatum, + NILP (replace) ? GDBM_INSERT : GDBM_REPLACE); + return ((ret == -1) || (ret == 1)) ? 0 : 1; + } + + static int + gdbm_remove (Lisp_Database *db, Lisp_Object key) + { + datum keydatum; + + keydatum.dptr = (char *) XSTRING_DATA (key); + keydatum.dsize = XSTRING_LENGTH (key); + db->access_mark = 1; + return gdbm_delete (db->gdbm_handle, keydatum); + } + + static Lisp_Object + gdbm_type (Lisp_Database *db) + { + return Qgdbm; + } + + static Lisp_Object + gdbm_subtype (Lisp_Database *db) + { + return Qnil; + } + + static Lisp_Object + gdbm_lasterr (Lisp_Database *db) + { + return build_ext_string (gdbm_strerror(gdbm_errno), FORMAT_NATIVE); + } + + static void + gdbm_closeit (Lisp_Database *db) + { + if (db->gdbm_handle) + { + gdbm_close (db->gdbm_handle); + db->gdbm_handle = NULL; + } + } + + static DB_FUNCS gdbm_func_block = + { + gdbm_subtype, + gdbm_type, + gdbm_get, + gdbm_put, + gdbm_remove, + gdbm_map, + gdbm_closeit, + gdbm_lasterr + }; + + static Lisp_Object + gdbm_open_database (Lisp_Object file, Lisp_Object access_, Lisp_Object mode) + { + /* GDBM flags (from gdbm info), + if `flags' is set to; + + GDBM_READER, the user wants to just read the database and any + call to `gdbm_store' or `gdbm_delete' will fail. + Many readers can access the database at the same + time. + + GDBM_WRITER, the user wants both read and write access to the + database and requires exclusive access. + + GDBM_WRCREAT, the user wants both read and write access to the + database and if the database does not exist, + create a new one. + + GDBM_NEWDB, the user want a new database created, regardless + of whether one existed, and wants read and write + access to the new database. + + For all writers (GDBM_WRITER, GDBM_WRCREAT and GDBM_NEWDB) the + value GDBM_FAST can be added to the `flags' field using logical + or. This option causes `gdbm' to write the database without + any disk file synchronization. This allows faster writes, but + may produce an inconsistent database in the event of abnormal + termination of the writer. Any error detected will cause a + return value of NULL and an appropriate value will be in + `gdbm_errno' (see Variables). If no errors occur, a pointer to + the `gdbm' file descriptor will be returned. + */ + int modemask; + int accessmask = 0; + int block_size = 512; + char *filename; + char *acc; + char *rp; + char *wp; + Lisp_Database *db = NULL; + Lisp_Object retval; + GDBM_FILE dbase; + + GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); + + if (NILP (access_)) + accessmask = GDBM_WRCREAT; + else + { + CHECK_STRING (access_); + acc = (char *) XSTRING_DATA (access_); + + rp = strchr (acc, 'r'); + wp = strchr (acc, 'w'); + + if (rp && wp) { + if (strchr (acc, '+')) accessmask = GDBM_WRCREAT; + else accessmask = GDBM_WRITER; + } + else if (rp) accessmask = GDBM_READER; + else accessmask = GDBM_NEWDB; + } + + if (NILP (mode)) + modemask = 0755; /* rwxr-xr-x */ + else { + CHECK_INT (mode); + modemask = XINT (mode); + } + + /* Should check directory is writeable or not in case + GDBM_WRITER, GDBM_WRCREAT or GDBM_NEWDB flag is set. */ + + dbase = gdbm_open (filename, block_size, accessmask, modemask, NULL); + + if (!dbase) + return Qnil; + + db = allocate_database (); + db->gdbm_handle = dbase; + db->funcs = &gdbm_func_block; + db->live_p = 1; + db->fname = file; + db->mode = modemask; + db->access_ = accessmask; + + XSETDATABASE (retval, db); + return retval; + } + #endif /* HAVE_GDBM */ + #ifdef HAVE_BERKELEY_DB static Lisp_Object berkdb_type (Lisp_Database *db) *************** *** 543,591 **** berkdb_close, berkdb_lasterr }; - #endif /* HAVE_BERKELEY_DB */ - - DEFUN ("database-last-error", Fdatabase_last_error, 0, 1, 0, /* - Return the last error associated with DATABASE. - */ - (database)) - { - if (NILP (database)) - return lisp_strerror (errno); - - CHECK_DATABASE (database); ! return XDATABASE (database)->funcs->last_error (XDATABASE (database)); ! } ! ! DEFUN ("open-database", Fopen_database, 1, 5, 0, /* ! Return a new database object opened on FILE. ! Optional arguments TYPE and SUBTYPE specify the database type. ! Optional argument ACCESS specifies the access rights, which may be any ! combination of 'r' 'w' and '+', for read, write, and creation flags. ! Optional argument MODE gives the permissions to use when opening FILE, ! and defaults to 0755. ! */ ! (file, type, subtype, access_, mode)) { - /* This function can GC */ int modemask; int accessmask = 0; - Lisp_Database *db = NULL; char *filename; ! struct gcpro gcpro1, gcpro2; ! ! CHECK_STRING (file); ! GCPRO2 (file, access_); ! file = Fexpand_file_name (file, Qnil); ! UNGCPRO; GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); if (NILP (access_)) ! { ! accessmask = O_RDWR | O_CREAT; ! } else { char *acc; --- 841,861 ---- berkdb_close, berkdb_lasterr }; ! static Lisp_Object ! berkdb_open_database (Lisp_Object file, Lisp_Object type, Lisp_Object subtype, ! Lisp_Object access_, Lisp_Object mode ) { int modemask; int accessmask = 0; char *filename; ! Lisp_Database *db = NULL; ! Lisp_Object retval; GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (XSTRING_DATA (file), filename); if (NILP (access_)) ! accessmask = O_RDWR | O_CREAT; else { char *acc; *************** *** 605,706 **** } if (NILP (mode)) ! { ! modemask = 0755; /* rwxr-xr-x */ ! } else { CHECK_INT (mode); modemask = XINT (mode); } ! #ifdef HAVE_DBM ! if (NILP (type) || EQ (type, Qdbm)) ! { ! DBM *dbase = dbm_open (filename, accessmask, modemask); ! if (!dbase) ! return Qnil; ! ! db = allocate_database (); ! db->dbm_handle = dbase; ! db->funcs = &ndbm_func_block; ! goto db_done; ! } ! #endif /* HAVE_DBM */ ! ! #ifdef HAVE_BERKELEY_DB ! if (NILP (type) || EQ (type, Qberkeley_db)) ! { ! DBTYPE real_subtype; ! DB *dbase; #if DB_VERSION_MAJOR != 1 ! int status; #endif ! if (EQ (subtype, Qhash) || NILP (subtype)) ! real_subtype = DB_HASH; ! else if (EQ (subtype, Qbtree)) ! real_subtype = DB_BTREE; ! else if (EQ (subtype, Qrecno)) ! real_subtype = DB_RECNO; ! else ! signal_simple_error ("Unsupported subtype", subtype); #if DB_VERSION_MAJOR == 1 ! dbase = dbopen (filename, accessmask, modemask, real_subtype, NULL); ! if (!dbase) ! return Qnil; #else ! /* Berkeley DB Version 2 has only the accessmask DB_CREATE and DB_RDONLY, ! other flags shouldn't be set */ ! if (NILP (access_)) ! accessmask = DB_CREATE; ! else ! { ! char *acc; ! CHECK_STRING (access_); ! acc = (char *) XSTRING_DATA (access_); ! accessmask = 0; ! ! if (strchr (acc, '+')) ! accessmask |= DB_CREATE; ! ! if (strchr (acc, 'r') && !strchr (acc, 'w')) ! accessmask |= DB_RDONLY; ! } ! status = db_open (filename, real_subtype, accessmask, ! modemask, NULL , NULL, &dbase); ! if (status) ! return Qnil; ! #endif /* DB_VERSION_MAJOR */ ! db = allocate_database (); ! db->db_handle = dbase; ! db->funcs = &berk_func_block; ! goto db_done; } - #endif /* HAVE_BERKELEY_DB */ ! signal_simple_error ("Unsupported database type", type); ! return Qnil; ! db_done: db->live_p = 1; db->fname = file; db->mode = modemask; db->access_ = accessmask; { ! Lisp_Object retval; ! XSETDATABASE (retval, db); ! return retval; } } DEFUN ("put-database", Fput_database, 3, 4, 0, /* Store KEY and VALUE in DATABASE. ! If optional fourth arg REPLACE is non-nil, ! replace any existing entry in the database. */ (key, value, database, replace)) { --- 875,1134 ---- } if (NILP (mode)) ! modemask = 0755; /* rwxr-xr-x */ else { CHECK_INT (mode); modemask = XINT (mode); } ! DBTYPE real_subtype; ! DB *dbase; #if DB_VERSION_MAJOR != 1 ! int status; #endif ! if (EQ (subtype, Qhash) || NILP (subtype)) ! real_subtype = DB_HASH; ! else if (EQ (subtype, Qbtree)) ! real_subtype = DB_BTREE; ! else if (EQ (subtype, Qrecno)) ! real_subtype = DB_RECNO; ! else ! signal_simple_error ("Unsupported subtype", subtype); #if DB_VERSION_MAJOR == 1 ! dbase = dbopen (filename, accessmask, modemask, real_subtype, NULL); ! if (!dbase) ! return Qnil; #else ! /* Berkeley DB Version 2 has only the accessmask DB_CREATE and DB_RDONLY, ! other flags shouldn't be set */ ! if (NILP (access_)) ! accessmask = DB_CREATE; ! else ! { ! char *acc; ! CHECK_STRING (access_); ! acc = (char *) XSTRING_DATA (access_); ! accessmask = 0; ! if (strchr (acc, '+')) ! accessmask |= DB_CREATE; ! ! if (strchr (acc, 'r') && !strchr (acc, 'w')) ! accessmask |= DB_RDONLY; } ! /* Should check directory is writeable or not in case O_RDWR or ! O_WRONLY and/or O_CREAT is set. */ ! status = db_open (filename, real_subtype, accessmask, ! modemask, NULL , NULL, &dbase); ! if (status) ! return Qnil; ! #endif /* DB_VERSION_MAJOR */ ! ! db = allocate_database (); ! db->db_handle = dbase; ! db->funcs = &berk_func_block; db->live_p = 1; db->fname = file; db->mode = modemask; db->access_ = accessmask; + XSETDATABASE (retval, db); + return retval; + } + #endif /* HAVE_BERKELEY_DB */ + + #ifdef HAVE_GDBM + DEFUN ("reorganize-database", Freorganize_database, 1, 1, 0, /* + Reorganize database DATABASE (gdbm specific function). + Shrink the space used by the `gdbm' file. + Always return nil. + */ + (database)) + { + if (!(EQ (Fdatabase_type(database), Qgdbm))) + signal_simple_error ("Can't reorganize a non-gdbm database", database); + CHECK_LIVE_DATABASE (database); + { + Lisp_Database *db = XDATABASE (database); + int ret = gdbm_reorganize(db->gdbm_handle); + db->access_mark = 1; + + if (0 > ret) + signal_simple_error (gdbm_strerror(gdbm_errno), database); + + return Qnil; + } + } + + DEFUN ("synchronize-database", Fsynchronize_database, 1, 1, 0, /* + Synchronize database DATABASE (gdbm specific function). + Always return nil. + + If you set GDBM_FAST flag to DATABASE, `gdbm' does not wait for writes + to the disk to complete before continuing. This allows faster writing + of DATABASE at the risk of having a corrupted DATABASE if the + application terminates in an abnormal fashion. This function allows + the programmer to make sure the disk version of DATABASE has been + completely updated with all changes to the current time. + + This would usually be called after a complete set of changes have been + made to DATABASE and before some long waiting time. + + `close-database' automatically calls the equivalent of + `synchronize-database' so no call is needed if DATABASE is to be + closed immediately after the set of changes have been made. + */ + (database)) + { + + if (!(EQ (Fdatabase_type(database), Qgdbm))) + signal_simple_error ("Can't synchronize a non-gdbm database", database); + CHECK_LIVE_DATABASE (database); { ! Lisp_Database *db = XDATABASE (database); ! gdbm_sync(db->gdbm_handle); ! db->access_mark = 1; ! return Qnil; } } + DEFUN ("set-database-property", Fset_database_property, 3, 3, 0, /* + Set property PROP to VALUE on DATABASE (gdbm specific function). + Always return nil. + + The valid properties are currently: + cachesize - Set the size of the internal bucket cache. + VALUE should be integer. + This property may only be set once on each DATABASE, and is set + automatically to 100 when DATABASE is opened. + + fastmode - Set fast mode to either on or off. + VALUE should be set to either nil or non-nil. + This allows fast mode to be toggled on an already open and active + DATABASE. + */ + (database, prop, value)) + { + int opt = 0; + int var = 0; + int ret = 0; + Lisp_Database *db; + + CHECK_LIVE_DATABASE (database); + + if (!(EQ (Fdatabase_type(database), Qgdbm))) + signal_simple_error ("Can't set property on a non-gdbm database", database); + + db = XDATABASE (database); + + CHECK_SYMBOL (prop); + if (EQ (prop, Qcachesize)){ + + if (db->access_mark == 1) + /* This option can set only once prior to accessing DATABASE */ + signal_simple_error ("Can't change cachesize of DATABASE already accessed", database); + + if (INTP(value)) + var = XINT(value); + else + signal_simple_error ("VALUE should be integer", value); + + opt = GDBM_CACHESIZE; /* initial value set automatically is 100 */ + + } + else if (EQ (prop, Qfastmode)) { + + if (SYMBOLP(value)) { + var = (EQ (value, Qnil)) ? 0 : 1; + opt = GDBM_FASTMODE; /* TRUE or FALSE */ + + } else + signal_simple_error ("VALUE should be symbol", value); + + } + + ret = gdbm_setopt(db->gdbm_handle, opt, &var, sizeof(int)); + + if (0 > ret) + signal_simple_error (gdbm_strerror(gdbm_errno), database); + + if (EQ (prop, Qfastmode)) + + if (var == 0) + db->access_ &= ~GDBM_FAST; + else + db->access_ |= GDBM_FAST; + + return Qnil; + } + #endif /* HAVE_GDBM */ + + DEFUN ("database-last-error", Fdatabase_last_error, 0, 1, 0, /* + Return the last error associated with DATABASE. + */ + (database)) + { + if (NILP (database)) + return lisp_strerror (errno); + + CHECK_DATABASE (database); + + return XDATABASE (database)->funcs->last_error (XDATABASE (database)); + } + + DEFUN ("open-database", Fopen_database, 1, 5, 0, /* + Return a new database object opened on FILE. + + Optional arguments TYPE and SUBTYPE specify the database type. + TYPE is one of `berkeley-db', `dbm' and `gdbm' symbol (which depends + on compile option of XEmacs). SUBTYPE is only valid for berkeley-db. + + Optional argument ACCESS specifies the access rights, which may be any + combination string of 'r' 'w' and '+', for read, write, and creation + flags. If nil, full access (and create if FILE does not exist) is + granted. + + Optional argument MODE gives the permissions to use when opening FILE, + and defaults to 0755. + */ + (file, type, subtype, access_, mode)) + { + /* This function can GC */ + struct gcpro gcpro1, gcpro2; + + CHECK_STRING (file); + GCPRO2 (file, access_); + file = Fexpand_file_name (file, Qnil); + UNGCPRO; + + #ifdef HAVE_GDBM + if (NILP (type) ||EQ (type, Qgdbm)) { + return gdbm_open_database (file, access_, mode); + } + #endif + #ifdef HAVE_DBM + if (NILP (type) ||EQ (type, Qdbm)) { + return dbm_open_database (file, access_, mode); + } + #endif + #ifdef HAVE_BERKELEY_DB + if (NILP (type) ||EQ (type, Qberkeley_db)) { + return berkdb_open_database (file, type, subtype, access_, mode); + } + #endif + signal_simple_error ("Unsupported database type", type); + } + DEFUN ("put-database", Fput_database, 3, 4, 0, /* Store KEY and VALUE in DATABASE. ! Return t if success, otherwise nil. ! If optional fourth arg REPLACE is non-nil, replace any existing ! entry in the database. */ (key, value, database, replace)) { *************** *** 716,721 **** --- 1144,1150 ---- DEFUN ("remove-database", Fremove_database, 2, 2, 0, /* Remove KEY from DATABASE. + Return t if success, otherwise nil. */ (key, database)) { *************** *** 746,751 **** --- 1175,1181 ---- DEFUN ("map-database", Fmapdatabase, 2, 2, 0, /* Map FUNCTION over entries in DATABASE, calling it with two args, each key and value in the database. + Always return nil. */ (function, database)) { *************** *** 763,768 **** --- 1193,1203 ---- #ifdef HAVE_DBM defsymbol (&Qdbm, "dbm"); #endif + #ifdef HAVE_GDBM + defsymbol (&Qgdbm, "gdbm"); + defsymbol (&Qcachesize, "cachesize"); + defsymbol (&Qfastmode, "fastmode"); + #endif #ifdef HAVE_BERKELEY_DB defsymbol (&Qberkeley_db, "berkeley-db"); defsymbol (&Qhash, "hash"); *************** *** 771,776 **** --- 1206,1216 ---- defsymbol (&Qunknown, "unknown"); #endif + #ifdef HAVE_GDBM + DEFSUBR (Freorganize_database); + DEFSUBR (Fsynchronize_database); + DEFSUBR (Fset_database_property); + #endif /* HAVE_GDBM */ DEFSUBR (Fopen_database); DEFSUBR (Fdatabasep); DEFSUBR (Fmapdatabase); *************** *** 791,796 **** --- 1231,1239 ---- #ifdef HAVE_DBM Fprovide (Qdbm); #endif + #ifdef HAVE_GDBM + Fprovide (Qgdbm); + #endif #ifdef HAVE_BERKELEY_DB Fprovide (Qberkeley_db); #endif *************** *** 804,806 **** --- 1247,1250 ---- #endif #endif /* 0 */ } + /* end of database.c */ ddskk-15.1.54/experimental/dbm/skk-dbm.el0000664000076600007660000003623011425561142017555 0ustar brutusbrutus;;; skk-dbm.el --- SKK dbm interfaces. -*- coding: iso-2022-jp -*- ;; Copyright (C) 1999, 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: NAKAJIMA Mikio ;; Version: $Id: skk-dbm.el,v 1.9 2010/08/02 15:21:06 skk-cvs Exp $ ;; Keywords: japanese, dbm, gdbm ;; Created: Jan. 1, 1999 ;; Last Modified: $Date: 2010/08/02 15:21:06 $ ;; This file is not part of Daredevil SKK yet. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; $B$3$N%W%m%0%i%`$O!"(Bskkserv $B$r2p$9$k%5!<%A$NBeBX$N<-=q%"%/%;%9J}K!$rDs6!$7$^$9!#(B ;; $B%5!<%P!<$r2p$5$:!"(BXEmacs $B$N5!G=$r;HMQ$7!"D>@\(B dbm $B%G!<%?%Y!<%9%U%!%$%k(B ($B0J2<(B ;; $BC1$K!V%G!<%?%Y!<%9!W$H8@$$$^$9(B) $B$r%*!<%W%s$7$F8!:w$7$^$9!#(B ;; --with-database $B%*%W%7%g%s$N;XDj$5$l$?(B XEmacs $B$G(B *$B$N$_(B* $B;HMQ$9$k$3$H$,$G$-$^(B ;; $B$9!#F0:n3NG'$O!"(BXEmacs 21.2b8 $B$G9T$J$$$^$7$?!#(B ;; ;; $B%G!<%?%Y!<%9%i%$%V%i%j$H$7$F(B gdbm $B$r;H$&>l9g$G!"%G!<%?%Y!<%9$r(B gdbm $B7A<0$H$7(B ;; $B$?$$$H$-$O!"(BXEmacs 21.2b8 $B$,(B gdbm $B%U%!%$%k$KD>@\%"%/%;%9$G$-$J$$(B (libgdbm $B$r(B ;; $B%j%s%/$7$F$$$J$,$i(B libndbm $B8_494X?t$7$+;HMQ$7$J$$$N$G(B .dir, .pag $B$r3HD%;R$H$9(B ;; $B$k%U%!%$%k$7$+3+$1$J$$(B) $B$3$H$+$i!"JLES:n6H$,I,MW$H$J$j$^$9!#(B ;; $BJLE:$N(B diff-to-xemacs-21.2.8 $B$r(B xemacs-21.2.8 $B$N%=!<%9$KEv$F!"(B ;; --with-database=gnudbm $B%*%W%7%g%s$r;XDj$7$F(B XEmacs $B$r:F(B configure $B$7!":F%3%s(B ;; $B%Q%$%k$9$kI,MW$,$"$j$^$9!#$3$N%Q%C%A$rEv$F$?(B XEmacs $B$G$O!"(Bgdbm $B%U%!%$%k$N(B ;; synchronize $B$d(B reorganize $B$,2DG=$H$J$kB>!"(Bcashsize $B$d(B fastmode $B$N%*%W%7%g%s$b(B ;; $B;XDj2DG=$H$J$j$^$9!#(B ;; ;; ** berkeley-db $B$b$7$/$O(B ndbm $B%U%!%$%k$@$1$G$"$l$P%Q%C%A$rEv$F$kI,MW$O$"$j$^$;$s!#(B*** ;; ;; skk-search-prog-list $B$rNc$($P!"2<5-$N$h$&$K@_Dj$9$k$3$H$G!"(Bautoload $B$5$l$^$9!#(B ;; ;; (setq skk-search-prog-list ;; '((skk-search-jisyo-file skk-jisyo 0 t) ;; (skk-dbm-search-jisyo-database skk-dbm-large-jisyo 'nomsg))) ;; ;; $B2<5-$N$h$&$K@_Dj$9$k$H!"8D?M<-=q$b%G!<%?%Y!<%92=$7$F8!:w$r9T$J$&$3$H$,$G$-$^$9!#(B ;; ;; (setq skk-search-prog-list ;; '((skk-dbm-search-jisyo-database skk-dbm-jisyo) ;; (skk-dbm-search-jisyo-database skk-dbm-large-jisyo 'nomsg))) ;; ;; pskkserv $BE:IU$N(B makedbmdic $B$G:n$C$?<-=q$G$O2?8N$+8!:w$G$-$^$;$s(B (XEmacs $B$N%G!<(B ;; $B%?%Y!<%95!G=$,%3!<%G%#%s%0%7%9%F%`$rL5;k$7$F$$$k$+$i!)(B)$B!#$3$N%U%!%$%k$N(B ;; skk-dbm-make-jisyo $B4X?t$r;H$C$F%G!<%?%Y!<%9$r:n$C$F2<$5$$!#(B ;; TODO ;; $BJd40!&<+F0Aw$j=hM}BP1~!#(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (unless (or (featurep 'gdbm) (featurep 'dbm) (featurep 'berkeley-db)) (error "%s" "You need XEmacs built with --with-database option")) (defgroup skk-dbm nil "SKK dbm related customization." :prefix "skk-dbm-" :group 'skk) ;; User variables. ;;;###autoload (defcustom skk-dbm-jisyo "~/.skk-jisyo.db" "*dbm $B%G!<%?%Y!<%92=$5$l$?8D?M<-=q$N%U%!%$%kL>!#(B" :type 'file :group 'skk-dbm) ;;;###autoload (defcustom skk-dbm-large-jisyo "/usr/local/share/skk/SKK-JISYO.L.db" "*dbm $B%G!<%?%Y!<%92=$5$l$?(B SKK-JISYO.L $B$N%U%!%$%kL>!#(B" :type 'file :group 'skk-dbm) ;;;###autoload (defcustom skk-dbm-subtype (save-match-data (and (or (string-match "\\.db$" skk-dbm-jisyo) (string-match "\\.db$" skk-dbm-large-jisyo)) 'hash)) "*database $B<-=q$N(B subtype$B!#(B hash, btree, recno $B$N$$$:$l$+!#(B berkeley-db $B$r;HMQ$9$k>l9g$N$_;XDj$9$k$3$H!#(B" :type '(choice (const hash) (const btree) (const recno) (const nil)) :group 'skk-dbm) (and (member '(skk-dbm-search-jisyo-database skk-dbm-jisyo) skk-search-prog-list) (setq skk-update-jisyo-function 'skk-dbm-update-jisyo) (setq skk-save-jisyo-function (function (lambda (quiet) (if (not quiet) (progn (skk-message "SKK $B%G!<%?%Y!<%9<-=q$rJD$8$F$$$^$9(B..." "Closing SKK database jisyo...") (sit-for 1))) (skk-dbm-close-all-database) (if (not quiet) (progn (skk-message "SKK $B%G!<%?%Y!<%9<-=q$rJD$8$F$$$^$9(B...$B40N;(B!" "Closing SKK database jisyo...done") (sit-for 1))))))) ;; System constants and variables. (defvar skk-dbm-alist nil) (defvar skk-dbm-type nil) (defconst skk-dbm-working-buffer " *skk-dbm*") (defconst skk-dbm-coding-system (cdr (assoc "euc" skk-coding-system-alist))) ;; Functions. ;;;###autoload (defun skk-dbm-search-jisyo-database (dbfile &optional nomsg) (setq dbfile (expand-file-name dbfile)) (let ( ;; I want `get-file-database'... (database (cdr (assoc dbfile skk-dbm-alist))) (okurigana (or skk-henkan-okurigana skk-okuri-char)) (midasi (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (henkan-buffer (current-buffer)) string entry-list entry) (or (and database (databasep database) (database-live-p database)) (setq database (skk-dbm-get-jisyo-database dbfile nomsg) ;; this should do in Emacs internal like Vbuffer_alist of ;; buffer.c. skk-dbm-alist (cons (cons dbfile database) skk-dbm-alist))) (skk-dbm-init-working-buffer) (with-current-buffer skk-dbm-working-buffer ;;(and okurigana ;; (setq okurigana (encode-coding-string ;; okurigana skk-dbm-coding-system))) ;;(setq midasi (encode-coding-string midasi skk-dbm-coding-system)) (setq string (get-database midasi database)) (if (not string) nil (erase-buffer) (insert string) ;; skip first character '/'. (goto-char (1+ (point-min))) (setq entry-list (skk-compute-henkan-lists okurigana)) (setq entry (cond ((and okurigana skk-henkan-okuri-strictly) (nth 2 entry-list)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 entry-list) (car entry-list))) (t (car entry-list)))) (and skk-search-end-function (setq entry (funcall skk-search-end-function henkan-buffer midasi okurigana entry))) entry)))) (defun skk-dbm-get-jisyo-database (dbfile &optional nomsg) ;; Return database object. (save-match-data (setq dbfile (expand-file-name dbfile)) (let (database access modes) (if (string= (expand-file-name skk-dbm-jisyo) dbfile) ;; $B8D?M<-=q(B (progn (setq modes 0600) (or (file-exists-p dbfile) ;; $B$J$1$l$P(B plain text $B$N<-=q$+$i%G!<%?%Y!<%9<-=q$r:n@.$9$k!#(B (skk-dbm-make-private-jisyo))) ;; $B6&M-<-=q(B (setq modes 0444) (or (file-exists-p dbfile) ;; $B$J$+$C$?$i%(%i!<$K$9$k!#:n@.$9$k$N$K;~4V$,$+$+$k$b$N$M!#(B (skk-error "$B%G!<%?%Y!<%9<-=q(B %s $B$,8+$D$+$j$^$;$s(B" "Cannot find out database jisyo %s" dbfile)) (or (file-readable-p dbfile) (skk-error "$B%G!<%?%Y!<%9<-=q(B %s $B$,FI$a$^$;$s(B" "Cannot read database jisyo %s" dbfile))) (or nomsg (skk-message "SKK $B<-=q%G!<%?%Y!<%9(B %s $B$r3+$$$F$$$^$9(B..." "Opening SKK dictionary database %s ..." (file-name-nondirectory dbfile))) (setq skk-dbm-type (cond ((and (featurep 'berkeley-db) (string-match "\\.db$" dbfile)) 'berkeley-db) ((and (featurep 'gdbm) (string-match "\\.gdbm$" dbfile)) 'gdbm) ((and (featurep 'dbm) (not (string-match "\\.db$" dbfile)) (not (string-match "\\.gdbm$" dbfile))) 'dbm) (t (skk-error "$B%G!<%?%Y!<%9<-=q$r3+$/$?$a$NE,Ev$J%?%$%W$r7h$a$k$3$H$,$G$-$^$;$s(B" "Cannot find out proper type for opening database jisyo"))) access (if (string= (file-name-nondirectory dbfile) (file-name-nondirectory skk-dbm-jisyo)) "+rw" "r")) (and skk-dbm-subtype (not (eq skk-dbm-type 'berkeley-db)) (skk-error "$B%G!<%?%Y!<%9%?%$%W$H%5%V%?%$%W$,L7=b$7$F$$$^$9(B" "Database type and subtype conflicts")) (and (string= access "+rw") (not (file-writable-p (file-name-directory dbfile))) (skk-error "%s $B$K=q$-9~$_8"8B$,$"$j$^$;$s(B" "You don't have write permission to %s" (file-name-directory dbfile))) (setq database (open-database dbfile skk-dbm-type skk-dbm-subtype access modes)) (or (databasep database) (skk-error "SKK $B<-=q%G!<%?%Y!<%9(B %s $B$r3+$/$3$H$,$G$-$^$;$s(B" "Cannot open SKK dictionary database %s" (file-name-nondirectory dbfile))) (or nomsg (skk-message "SKK $B<-=q%G!<%?%Y!<%9(B %s $B$r3+$$$F$$$^$9(B...$B40N;!*(B" "Opening SKK dictionary database %s ...done" (file-name-nondirectory dbfile))) database))) (defun skk-dbm-init-working-buffer () (or (get-buffer skk-dbm-working-buffer) (with-current-buffer (get-buffer-create skk-dbm-working-buffer) (set-buffer-file-coding-system skk-dbm-coding-system) (buffer-disable-undo) (auto-save-mode -1) (setq buffer-read-only nil case-fold-search nil major-mode 'skk-jisyo-mode mode-name "SKK dbmdic")))) (defun skk-dbm-update-jisyo (word &optional purge) (let* ((database (cdr (assoc (expand-file-name skk-dbm-jisyo) skk-dbm-alist))) (midasi (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (old-str (get-database midasi database)) (inhibit-quit t) (henkan-buffer (current-buffer)) old-entry okurigana) (if (> skk-okuri-index-min -1) (setq word (skk-remove-common word) midasi skk-henkan-key)) (setq okurigana (or skk-henkan-okurigana skk-okuri-char)) (with-current-buffer skk-dbm-working-buffer (let ((skk-okuri-ari-min (point-min)) ; dymmy (skk-okuri-nasi-min (point-min)) ; dymmy buffer-read-only) (setq skk-henkan-key midasi) (erase-buffer) (if (not old-str) nil (goto-char (point-min)) (insert old-str) (goto-char (1+ (point-min))) ;; skk-compute-henkan-lists $B$H(B skk-update-jisyo-1 $B$O!"%]%$%s%H$K0MB8$;(B ;; $B$:!"J8;zNs(B ($B$"$k$$$O%j%9%H(B) $B$r0z?t$K 1 (buffer-size)) nil (goto-char (point-min)) (search-forward " /" nil) (put-database skk-henkan-key (buffer-substring-no-properties (1- (point)) (point-max)) database 'replace)) (and skk-update-end-function (funcall skk-update-end-function henkan-buffer midasi okurigana word purge)))))) ;;;###autoload (defun skk-dbm-make-jisyo (file dbm &optional type subtype nomsg) (save-match-data (let ((start (current-time))) (or nomsg (skk-message "SKK $B%G!<%?%Y!<%9<-=q$r:n@.$7$F$$$^$9(B..." "Making SKK database jisyo...")) (or type (setq type (cond ((featurep 'berkeley-db) 'berkeley-db) ((featurep 'gdbm) 'gdbm) (t 'dbm)))) (and subtype (not (eq type 'berkeley-db)) (skk-error "berkeley-db $B$G$J$$%G!<%?%Y!<%9$K(B subtype $B$r;XDj$9$k$3$H$O$G$-$^$;$s(B" "Cannot specify subtype for a non berkeley-db database")) (save-excursion (set-buffer (get-buffer-create " *skk-work*")) (let ((dbase (or (open-database (expand-file-name dbm) type subtype "+") ;; $B%b!<%I$r;XDj$9$k$H2?8N$+(B database $B$r(B open $B$G$-$J$$!#(B ;;0600) (skk-error "$B%G!<%?%Y!<%9(B %s $B$r3+$/$3$H$,$G$-$^$;$s(B" "Cannot open database %s" dbm))) enable-character-translation enable-character-unification midasi cand) (and (eq type 'gdbm) (fboundp 'set-database-property) (set-database-property dbase 'fastmode t)) (buffer-disable-undo) (erase-buffer) ;; coding-system-for-read $B$,(B undecided $B$d(B automatic-conversion $B$8$cJ8;z%3!<(B ;; $B%I8mH=Dj$K$J$C$F$7$^$&(B... (on XEmacs 21.2b7)$B!#(B (insert-file-contents-as-coding-system (cond ((and skk-jisyo-code (coding-system-p skk-jisyo-code)) skk-jisyo-code) ((and skk-jisyo-code (stringp skk-jisyo-code)) (cdr (assoc skk-jisyo-code skk-coding-system-alist))) (t skk-dbm-coding-system)) (expand-file-name file)) (goto-char (point-min)) (while (= (forward-line 1) 0) (beginning-of-line) (if (or (looking-at ";") (eobp)) nil (setq midasi (buffer-substring-no-properties (point) (search-forward " "))) (and (string-match " $" midasi) (setq midasi (substring midasi 0 (match-beginning 0)))) (setq cand (buffer-substring-no-properties (point) (progn (end-of-line) (point)))) (put-database midasi cand dbase 'replace))) (close-database dbase) (or nomsg (skk-message "SKK $B%G!<%?%Y!<%9<-=q$r:n@.$7$F$$$^$9(B...$B40N;!*(B" "Making SKK database jisyo...done")) (sit-for 1) (or nomsg (skk-message "$B%G!<%?%Y!<%9<-=q$r:n@.$9$k$N$K(B %s $BIC$+$+$j$^$7$?(B" "It took %s minutes to make database jisyo" (skk-time-difference start (current-time)))) (sit-for 2)))))) (defun skk-dbm-make-private-jisyo () (save-match-data (let* ((type (cond ((and (featurep 'berkeley-db) (string-match "\\.db$" skk-dbm-jisyo)) 'berkeley-db) ((and (featurep 'gdbm) (string-match "\\.gdbm$" skk-dbm-jisyo)) 'gdbm) ((and (featurep 'dbm) (not (string-match "\\.db$" skk-dbm-jisyo)) (not (string-match "\\.gdbm$" skk-dbm-jisyo))) 'dbm) (t (skk-error "$B%G!<%?%Y!<%9<-=q$r:n@.$9$k$?$a$NE,Ev$J%?%$%W$r7h$a$k$3$H$,$G$-$^$;$s(B" "Cannot find out proper type for making database jisyo")))) (subtype (and (eq type 'berkeley-db) 'hash))) (skk-dbm-make-jisyo skk-jisyo skk-dbm-jisyo type subtype)))) (defun skk-dbm-close-all-database () (let ((alist skk-dbm-alist) e) (condition-case nil (progn (while alist (and (setq e (car alist)) (database-live-p (cdr e)) (close-database (cdr e))) (setq alist (cdr alist))) ;; set global alist to nil if successfully finished. (setq skk-dbm-alist nil)) (error ;; if error occurred, delete such element from skk-dbm-alist. (setq skk-dbm-alist (delq e skk-dbm-alist)))))) ;; advices. (defadvice close-database (around skk-ad activate) (let ((file (database-file-name (ad-get-arg 0)))) (prog1 ad-do-it ;; this should do in Emacs internal. (setq skk-dbm-alist (delq (assoc file skk-dbm-alist) skk-dbm-alist))))) ;;(add-hook 'kill-emacs-hook 'skk-dbm-close-all-database) (run-hooks 'skk-dbm-load-hook) (provide 'skk-dbm) ;; Local Variables: ;; mode: auto-fill ;; fill-column: 78 ;; End: ;;; skk-dbm.el ends here ddskk-15.1.54/experimental/GUIDELINE0000664000076600007660000000053411543661601016371 0ustar brutusbrutus-*- text -*- $Date: 2011/03/27 16:19:13 $ $Id: GUIDELINE,v 1.5 2011/03/27 16:19:13 skk-cvs Exp $ o $BA4$/?7$7$$5!G=$rDs6!$9$k%W%m%0%i%`$G!":n ;; Copyright (C) 2000, 2001, 2002 TAKAHASHI Kaoru ;; Author: TAKAHASHI Kaoru ;; Yoshiki Hayashi ;; Katsumi Yamaoka ;; Maintainer: TAKAHASHI Kaoru ;; Created: 7 Jul 2000 ;; Keywords: maint, tex, docs, emulation, compatibility ;; 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, 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; Original code: Yoshiki Hayashi ;; makeinfo.el (gnujdoc project) ;; Support texinfmt.el 2.32 or later. ;; Modified by Yamaoka not to use APEL functions. ;; Unimplemented command: ;; @abbr ;; @float, @caption, @shortcaption, @listoffloats ;; @deftypecv[x] ;; @headitem ;; @comma{} ;; @quotation (optional arguments) ;; @acronym (optional argument) ;; @dofirstparagraphindent ;; @indent ;; @verbatiminclude ;; @\ ;; @definfoenclose ;; @deftypeivar ;; @deftypeop ;; @allowcodebreaks ;;; Code: (require 'backquote) (require 'texinfmt) ;;; Broken (defvar ptexinfmt-disable-broken-notice-flag t "If non-nil disable notice, when call `ptexinfmt-broken-facility'. This is last argument in `ptexinfmt-broken-facility'.") (put 'ptexinfmt-broken-facility 'lisp-indent-function 'defun) (defmacro ptexinfmt-broken-facility (facility docstring assertion &optional dummy) "Declare a symbol FACILITY is broken if ASSERTION is nil. DOCSTRING will be printed if ASSERTION is nil and `ptexinfmt-disable-broken-notice-flag' is nil." `(let ((facility ',facility) (docstring ,docstring) (assertion (eval ',assertion))) (put facility 'broken (not assertion)) (if assertion nil (put facility 'broken-docstring docstring) (if ptexinfmt-disable-broken-notice-flag nil (message "BROKEN FACILITY DETECTED: %s" docstring))))) (put 'ptexinfmt-defun-if-broken 'lisp-indent-function 'defun) (defmacro ptexinfmt-defun-if-broken (&rest args) "Redefine a function just like `defun' if it is considered broken." (let ((name (list 'quote (car args)))) (setq args (cdr args)) `(prog1 ,name (if (get ,name 'broken) (defalias ,name (function (lambda ,@args))))))) (put 'ptexinfmt-defun-if-void 'lisp-indent-function 'defun) (defmacro ptexinfmt-defun-if-void (&rest args) "Define a function just like `defun' unless it is already defined." (let ((name (list 'quote (car args)))) (setq args (cdr args)) `(prog1 ,name (if (fboundp ,name) nil (defalias ,name (function (lambda ,@args))))))) (put 'ptexinfmt-defvar-if-void 'lisp-indent-function 'defun) (defmacro ptexinfmt-defvar-if-void (&rest args) "Define a variable just like `defvar' unless it is already defined." (let ((name (car args))) (setq args (cdr args)) `(prog1 (defvar ,name) (if (boundp ',name) nil (defvar ,name ,@args))))) ;; sort -fd (ptexinfmt-broken-facility texinfo-format-printindex "Can't sort on Mule for Windows." (if (and (memq system-type '(windows-nt ms-dos)) ;;; I don't know version threshold. ;;; (string< texinfmt-version "2.37 of 24 May 1997") (boundp 'MULE) (not (featurep 'meadow))) ; Mule for Windows nil t)) ;; @var (ptexinfmt-broken-facility texinfo-format-var "Don't perse @var argument." (condition-case nil (with-temp-buffer (let (texinfo-enclosure-list texinfo-alias-list) (texinfo-mode) (insert "@var{@asis{foo}}\n") (texinfo-format-expand-region (point-min) (point-max)) t)) (error nil))) ;; @xref (ptexinfmt-broken-facility texinfo-format-xref "Can't format @xref, 1st argument is empty." (condition-case nil (with-temp-buffer (let (texinfo-enclosure-list texinfo-alias-list) (texinfo-mode) (insert "@xref{, xref, , file}\n") (texinfo-format-expand-region (point-min) (point-max)) t)) (error nil))) ;; @uref (ptexinfmt-broken-facility texinfo-format-uref "Parse twice @uref argument." (condition-case nil (with-temp-buffer (let (texinfo-enclosure-list texinfo-alias-list) (texinfo-mode) (insert "@uref{mailto:foo@@noncommand.example.com}\n") (texinfo-format-expand-region (point-min) (point-max)) t)) (error nil))) ;; @multitable (ptexinfmt-broken-facility texinfo-multitable-widths "`texinfo-multitable-widths' unsupport wide-char." (if (fboundp 'texinfo-multitable-widths) (with-temp-buffer (let ((str "$BI}9-J8;z(B")) (texinfo-mode) (insert (format " {%s}\n" str)) (goto-char (point-min)) (if (= (car (texinfo-multitable-widths)) (length str)) t nil))) ;; function definition is void nil)) (ptexinfmt-broken-facility texinfo-multitable-item "`texinfo-multitable-item' unsupport wide-char." (not (get 'texinfo-multitable-widths 'broken))) ;;; Hardcopy and HTML (discard) ;; html (put 'documentlanguage 'texinfo-format 'texinfo-discard-line-with-args) (put 'documentencoding 'texinfo-format 'texinfo-discard-line-with-args) (put 'documentdescription 'texinfo-format 'texinfo-discard-line-with-args) ;; size (put 'smallbook 'texinfo-format 'texinfo-discard-line) (put 'letterpaper 'texinfo-format 'texinfo-discard-line) (put 'afourpaper 'texinfo-format 'texinfo-discard-line) (put 'afourlatex 'texinfo-format 'texinfo-discard-line) (put 'afourwide 'texinfo-format 'texinfo-discard-line) (put 'afivepaper 'texinfo-format 'texinfo-discard-line) (put 'pagesizes 'texinfo-format 'texinfo-discard-line-with-args) ;; style (put 'setchapternewpage 'texinfo-format 'texinfo-discard-line-with-args) (put 'kbdinputstyle 'texinfo-format 'texinfo-discard-line-with-args) ;; flags (put 'setcontentsaftertitlepage 'texinfo-format 'texinfo-discard-line) (put 'setshortcontentsaftertitlepage 'texinfo-format 'texinfo-discard-line) (put 'novalidate 'texinfo-format 'texinfo-discard-line-with-args) (put 'frenchspacing 'texinfo-format 'texinfo-discard-line-with-args) ;; head & foot (put 'headings 'texinfo-format 'texinfo-discard-line-with-args) (put 'evenfooting 'texinfo-format 'texinfo-discard-line-with-args) (put 'evenheading 'texinfo-format 'texinfo-discard-line-with-args) (put 'oddfooting 'texinfo-format 'texinfo-discard-line-with-args) (put 'oddheading 'texinfo-format 'texinfo-discard-line-with-args) (put 'everyfooting 'texinfo-format 'texinfo-discard-line-with-args) (put 'everyheading 'texinfo-format 'texinfo-discard-line-with-args) ;; misc (put 'page 'texinfo-format 'texinfo-discard-line) (put 'hyphenation 'texinfo-format 'texinfo-discard-command-and-arg) ;; @slanted{} (makeinfo 4.8 or later) (put 'slanted 'texinfo-format 'texinfo-format-noop) ;; @sansserif{} (makeinfo 4.8 or later) (put 'sansserif 'texinfo-format 'texinfo-format-noop) ;; @tie{} (makeinfo 4.3 or later) (put 'tie 'texinfo-format 'texinfo-format-tie) (ptexinfmt-defun-if-void texinfo-format-tie () (texinfo-parse-arg-discard) (insert " ")) ;;; Directory File ;; @direcategory (put 'dircategory 'texinfo-format 'texinfo-format-dircategory) (ptexinfmt-defun-if-void texinfo-format-dircategory () (let ((str (texinfo-parse-arg-discard))) (delete-region (point) (progn (skip-chars-forward " ") (point))) (insert "INFO-DIR-SECTION " str "\n"))) ;; @direntry (put 'direntry 'texinfo-format 'texinfo-format-direntry) (ptexinfmt-defun-if-void texinfo-format-direntry () (texinfo-push-stack 'direntry nil) (texinfo-discard-line) (insert "START-INFO-DIR-ENTRY\n")) (put 'direntry 'texinfo-end 'texinfo-end-direntry) (ptexinfmt-defun-if-void texinfo-end-direntry () (texinfo-discard-command) (insert "END-INFO-DIR-ENTRY\n\n") (texinfo-pop-stack 'direntry)) ;;; Block Enclosing ;; @detailmenu ... @end detailmenu (put 'detailmenu 'texinfo-format 'texinfo-discard-line) (put 'detailmenu 'texinfo-end 'texinfo-discard-command) ;; @smalldisplay ... @end smalldisplay (put 'smalldisplay 'texinfo-format 'texinfo-format-example) (put 'smalldisplay 'texinfo-end 'texinfo-end-example) ;; @smallformat ... @end smallformat (put 'smallformat 'texinfo-format 'texinfo-format-flushleft) (put 'smallformat 'texinfo-end 'texinfo-end-flushleft) ;; @cartouche ... @end cartouche (put 'cartouche 'texinfo-format 'texinfo-discard-line) (put 'cartouche 'texinfo-end 'texinfo-discard-command) ;;; Conditional ;; @ifnottex ... @end ifnottex (makeinfo 3.11 or later) (put 'ifnottex 'texinfo-format 'texinfo-discard-line) (put 'ifnottex 'texinfo-end 'texinfo-discard-command) ;; @ifnothtml ... @end ifnothtml (makeinfo 3.11 or later) (put 'ifnothtml 'texinfo-format 'texinfo-discard-line) (put 'ifnothtml 'texinfo-end 'texinfo-discard-command) ;; @ifnotplaintext ... @end ifnotplaintext (makeinfo 4.2 or later) (put 'ifnotplaintext 'texinfo-format 'texinfo-discard-line) (put 'ifnotplaintext 'texinfo-end 'texinfo-discard-command) ;; @ifnotdocbook ... @end ifnotdocbook (makeinfo 4.7 or later) (put 'ifnotdocbook 'texinfo-format 'texinfo-discard-line) (put 'ifnotdocbook 'texinfo-end 'texinfo-discard-command) ;; @ifnotinfo ... @end ifnotinfo (makeinfo 3.11 or later) (put 'ifnotinfo 'texinfo-format 'texinfo-format-ifnotinfo) (ptexinfmt-defun-if-void texinfo-format-ifnotinfo () (delete-region texinfo-command-start (progn (re-search-forward "@end ifnotinfo[ \t]*\n") (point)))) ;; @html ... @end html (makeinfo 3.11 or later) (put 'html 'texinfo-format 'texinfo-format-html) (ptexinfmt-defun-if-void texinfo-format-html () (delete-region texinfo-command-start (progn (re-search-forward "@end html[ \t]*\n") (point)))) ;; @docbook ... @end docbook (makeinfo 4.7 or later) (put 'docbook 'texinfo-format 'texinfo-format-docbook) (ptexinfmt-defun-if-void texinfo-format-docbook () (delete-region texinfo-command-start (progn (re-search-forward "@end docbook[ \t]*\n") (point)))) ;; @ifhtml ... @end ifhtml (makeinfo 3.8 or later) (put 'ifhtml 'texinfo-format 'texinfo-format-ifhtml) (defun texinfo-format-ifhtml () (delete-region texinfo-command-start (progn (re-search-forward "@end ifhtml[ \t]*\n") (point)))) ;; @ifplaintext ... @end ifplaintext (makeinfo 4.2 or later) (put 'ifplaintext 'texinfo-format 'texinfo-format-ifplaintext) (ptexinfmt-defun-if-void texinfo-format-ifplaintext () (delete-region texinfo-command-start (progn (re-search-forward "@end ifplaintext[ \t]*\n") (point)))) ;; @ifdocbook ... @end ifdocbook (makeinfo 4.7 or later) (put 'ifdocbook 'texinfo-format 'texinfo-format-ifdocbook) (ptexinfmt-defun-if-void texinfo-format-ifdocbook () (delete-region texinfo-command-start (progn (re-search-forward "@end ifdocbook[ \t]*\n") (point)))) ;;; Marking ;; @indicateurl, @url, @env, @command, (put 'env 'texinfo-format 'texinfo-format-code) (put 'command 'texinfo-format 'texinfo-format-code) (put 'indicateurl 'texinfo-format 'texinfo-format-code) (put 'url 'texinfo-format 'texinfo-format-uref) ; Texinfo 4.7 ;; @acronym (put 'acronym 'texinfo-format 'texinfo-format-var) (ptexinfmt-defun-if-broken texinfo-format-var () (let ((arg (texinfo-parse-expanded-arg))) (texinfo-discard-command) (insert (upcase arg)))) ;; @key (put 'key 'texinfo-format 'texinfo-format-key) (ptexinfmt-defun-if-void texinfo-format-key () (insert (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @email{EMAIL-ADDRESS[, DISPLAYED-TEXT]} (put 'email 'texinfo-format 'texinfo-format-email) (ptexinfmt-defun-if-void texinfo-format-email () "Format EMAIL-ADDRESS and optional DISPLAYED-TXT. Insert < ... > around EMAIL-ADDRESS." (let ((args (texinfo-format-parse-args))) (texinfo-discard-command) ;; if displayed-text (if (nth 1 args) (insert (nth 1 args) " <" (nth 0 args) ">") (insert "<" (nth 0 args) ">")))) ;; @option (put 'option 'texinfo-format 'texinfo-format-option) (ptexinfmt-defun-if-void texinfo-format-option () "Insert ` ... ' around arg unless inside a table; in that case, no quotes." ;; `looking-at-backward' not available in v. 18.57, 20.2 ;; searched-for character is a control-H (if (not (search-backward "\010" (save-excursion (beginning-of-line) (point)) t)) (insert "`" (texinfo-parse-arg-discard) "'") (insert (texinfo-parse-arg-discard))) (goto-char texinfo-command-start)) ;; @verb{TEXT} (makeinfo 4.1 or later) (put 'verb 'texinfo-format 'texinfo-format-verb) (ptexinfmt-defun-if-void texinfo-format-verb () "Format text between non-quoted unique delimiter characters verbatim. Enclose the verbatim text, including the delimiters, in braces. Print text exactly as written (but not the delimiters) in a fixed-width. For example, @verb\{|@|\} results in @ and @verb\{+@'e?`!`+} results in @'e?`!`." (let ((delimiter (buffer-substring-no-properties (1+ texinfo-command-end) (+ 2 texinfo-command-end)))) (unless (looking-at "{") (error "Not found: @verb start brace")) (delete-region texinfo-command-start (+ 2 texinfo-command-end)) (search-forward delimiter)) (delete-backward-char 1) (unless (looking-at "}") (error "Not found: @verb end brace")) (delete-char 1)) ;;; @LaTeX, @registeredsymbol{} (put 'LaTeX 'texinfo-format 'texinfo-format-LaTeX) (ptexinfmt-defun-if-void texinfo-format-LaTeX () (texinfo-parse-arg-discard) (insert "LaTeX")) (put 'registeredsymbol 'texinfo-format 'texinfo-format-registeredsymbol) (ptexinfmt-defun-if-void texinfo-format-registeredsymbol () (texinfo-parse-arg-discard) (insert "(R)")) ;;; Accents and Special characters ;; @euro{} ==> Euro (put 'euro 'texinfo-format 'texinfo-format-euro) (ptexinfmt-defun-if-void texinfo-format-euro () (texinfo-parse-arg-discard) (insert "Euro ")) ;; @pounds{} ==> # Pounds Sterling (put 'pounds 'texinfo-format 'texinfo-format-pounds) (ptexinfmt-defun-if-void texinfo-format-pounds () (texinfo-parse-arg-discard) (insert "#")) ;; @ordf{} ==> a Spanish feminine (put 'ordf 'texinfo-format 'texinfo-format-ordf) (ptexinfmt-defun-if-void texinfo-format-ordf () (texinfo-parse-arg-discard) (insert "a")) ;; @ordm{} ==> o Spanish masculine (put 'ordm 'texinfo-format 'texinfo-format-ordm) (ptexinfmt-defun-if-void texinfo-format-ordm () (texinfo-parse-arg-discard) (insert "o")) ;; @OE{} ==> OE French-OE-ligature (put 'OE 'texinfo-format 'texinfo-format-French-OE-ligature) (ptexinfmt-defun-if-void texinfo-format-French-OE-ligature () (insert "OE" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @oe{} ==> oe (put 'oe 'texinfo-format 'texinfo-format-French-oe-ligature) (ptexinfmt-defun-if-void texinfo-format-French-oe-ligature () ; lower case (insert "oe" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @AA{} ==> AA Scandinavian-A-with-circle (put 'AA 'texinfo-format 'texinfo-format-Scandinavian-A-with-circle) (ptexinfmt-defun-if-void texinfo-format-Scandinavian-A-with-circle () (insert "AA" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @aa{} ==> aa (put 'aa 'texinfo-format 'texinfo-format-Scandinavian-a-with-circle) (ptexinfmt-defun-if-void texinfo-format-Scandinavian-a-with-circle () ; lower case (insert "aa" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @AE{} ==> AE Latin-Scandinavian-AE (put 'AE 'texinfo-format 'texinfo-format-Latin-Scandinavian-AE) (ptexinfmt-defun-if-void texinfo-format-Latin-Scandinavian-AE () (insert "AE" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @ae{} ==> ae (put 'ae 'texinfo-format 'texinfo-format-Latin-Scandinavian-ae) (ptexinfmt-defun-if-void texinfo-format-Latin-Scandinavian-ae () ; lower case (insert "ae" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @ss{} ==> ss German-sharp-S (put 'ss 'texinfo-format 'texinfo-format-German-sharp-S) (ptexinfmt-defun-if-void texinfo-format-German-sharp-S () (insert "ss" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @questiondown{} ==> ? upside-down-question-mark (put 'questiondown 'texinfo-format 'texinfo-format-upside-down-question-mark) (ptexinfmt-defun-if-void texinfo-format-upside-down-question-mark () (insert "?" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @exclamdown{} ==> ! upside-down-exclamation-mark (put 'exclamdown 'texinfo-format 'texinfo-format-upside-down-exclamation-mark) (ptexinfmt-defun-if-void texinfo-format-upside-down-exclamation-mark () (insert "!" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @L{} ==> L/ Polish suppressed-L (Lslash) (put 'L 'texinfo-format 'texinfo-format-Polish-suppressed-L) (ptexinfmt-defun-if-void texinfo-format-Polish-suppressed-L () (insert (texinfo-parse-arg-discard) "/L") (goto-char texinfo-command-start)) ;; @l{} ==> l/ Polish suppressed-L (Lslash) (lower case) (put 'l 'texinfo-format 'texinfo-format-Polish-suppressed-l-lower-case) (ptexinfmt-defun-if-void texinfo-format-Polish-suppressed-l-lower-case () (insert (texinfo-parse-arg-discard) "/l") (goto-char texinfo-command-start)) ;; @O{} ==> O/ Scandinavian O-with-slash (put 'O 'texinfo-format 'texinfo-format-Scandinavian-O-with-slash) (ptexinfmt-defun-if-void texinfo-format-Scandinavian-O-with-slash () (insert (texinfo-parse-arg-discard) "O/") (goto-char texinfo-command-start)) ;; @o{} ==> o/ Scandinavian O-with-slash (lower case) (put 'o 'texinfo-format 'texinfo-format-Scandinavian-o-with-slash-lower-case) (ptexinfmt-defun-if-void texinfo-format-Scandinavian-o-with-slash-lower-case () (insert (texinfo-parse-arg-discard) "o/") (goto-char texinfo-command-start)) ;; @,{c} ==> c, cedilla accent (put '\, 'texinfo-format 'texinfo-format-cedilla-accent) (ptexinfmt-defun-if-void texinfo-format-cedilla-accent () (insert (texinfo-parse-arg-discard) ",") (goto-char texinfo-command-start)) ;; @dotaccent{o} ==> .o overdot-accent (put 'dotaccent 'texinfo-format 'texinfo-format-overdot-accent) (ptexinfmt-defun-if-void texinfo-format-overdot-accent () (insert "." (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @ubaraccent{o} ==> _o underbar-accent (put 'ubaraccent 'texinfo-format 'texinfo-format-underbar-accent) (ptexinfmt-defun-if-void texinfo-format-underbar-accent () (insert "_" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @udotaccent{o} ==> o-. underdot-accent (put 'udotaccent 'texinfo-format 'texinfo-format-underdot-accent) (ptexinfmt-defun-if-void texinfo-format-underdot-accent () (insert (texinfo-parse-arg-discard) "-.") (goto-char texinfo-command-start)) ;; @H{o} ==> ""o long Hungarian umlaut (put 'H 'texinfo-format 'texinfo-format-long-Hungarian-umlaut) (ptexinfmt-defun-if-void texinfo-format-long-Hungarian-umlaut () (insert "\"\"" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @ringaccent{o} ==> *o ring accent (put 'ringaccent 'texinfo-format 'texinfo-format-ring-accent) (ptexinfmt-defun-if-void texinfo-format-ring-accent () (insert "*" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @tieaccent{oo} ==> [oo tie after accent (put 'tieaccent 'texinfo-format 'texinfo-format-tie-after-accent) (ptexinfmt-defun-if-void texinfo-format-tie-after-accent () (insert "[" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @u{o} ==> (o breve accent (put 'u 'texinfo-format 'texinfo-format-breve-accent) (ptexinfmt-defun-if-void texinfo-format-breve-accent () (insert "(" (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @v{o} ==> i dotless i and dotless j (put 'dotless 'texinfo-format 'texinfo-format-dotless) (ptexinfmt-defun-if-void texinfo-format-dotless () (insert (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) ;; @. (put '\. 'texinfo-format 'texinfo-format-\.) (ptexinfmt-defun-if-void texinfo-format-\. () (texinfo-discard-command) (insert ".")) ;; @: (put '\: 'texinfo-format 'texinfo-format-\:) (ptexinfmt-defun-if-void texinfo-format-\: () (texinfo-discard-command)) ;; @- (put '\- 'texinfo-format 'texinfo-format-soft-hyphen) (ptexinfmt-defun-if-void texinfo-format-soft-hyphen () (texinfo-discard-command)) ;; @/ (put '\/ 'texinfo-format 'texinfo-format-\/) (ptexinfmt-defun-if-void texinfo-format-\/ () (texinfo-discard-command)) ;;; Cross References ;; @ref, @xref (put 'ref 'texinfo-format 'texinfo-format-xref) (ptexinfmt-defun-if-broken texinfo-format-xref () (let ((args (texinfo-format-parse-args))) (texinfo-discard-command) (insert "*Note ") (let ((fname (or (nth 1 args) (nth 2 args)))) (if (null (or fname (nth 3 args))) (insert (nth 0 args) "::") (insert (or fname (nth 0 args)) ": ") (if (nth 3 args) (insert "(" (nth 3 args) ")")) (unless (null (nth 0 args)) (insert (nth 0 args))))))) ;; @uref{URL [,TEXT] [,REPLACEMENT]} (put 'uref 'texinfo-format 'texinfo-format-uref) (ptexinfmt-defun-if-broken texinfo-format-uref () "Format URL and optional URL-TITLE. Insert ` ... ' around URL if no URL-TITLE argument; otherwise, insert URL-TITLE followed by URL in parentheses." (let ((args (texinfo-format-parse-args))) (texinfo-discard-command) ;; if url-title (if (nth 1 args) (insert (nth 1 args) " (" (nth 0 args) ")") (insert "`" (nth 0 args) "'")))) ;; @inforef (put 'inforef 'texinfo-format 'texinfo-format-inforef) (ptexinfmt-defun-if-void texinfo-format-inforef () (let ((args (texinfo-format-parse-args))) (texinfo-discard-command) (if (nth 1 args) (insert "*Note " (nth 1 args) ": (" (nth 2 args) ")" (car args)) (insert "*Note " "(" (nth 2 args) ")" (car args) "::")))) ;; @anchor ;; don't emulation ;; If support @anchor for Mule 2.3, We must fix informat.el and info.el: ;; - Info-tagify suport @anthor-*-refill. ;; - info.el support Ref in Tag table. (unless (get 'anchor 'texinfo-format) (put 'anchor 'texinfo-format 'texinfo-discard-command-and-arg)) ;;; New command definition ;; @alias NEW=EXISTING (put 'alias 'texinfo-format 'texinfo-alias) (ptexinfmt-defun-if-void texinfo-alias () (let ((start (1- (point))) args) (skip-chars-forward " ") (save-excursion (end-of-line) (setq texinfo-command-end (point))) (if (not (looking-at "\\([^=]+\\)=\\(.*\\)")) (error "Invalid alias command") (setq texinfo-alias-list (cons (cons (buffer-substring (match-beginning 1) (match-end 1)) (buffer-substring (match-beginning 2) (match-end 2))) texinfo-alias-list)) (texinfo-discard-command)))) ;;; Indent ;; @exampleindent INDENT (makeinfo 4.0 or later) ;; @paragraphindent INDENT (makeinfo 4.0 or later) ;; INDENT: asis, 0, n ;; @firstparagraphindent WORD (makeinfo 4.6 or later) ;; WORD: none, insert ;;; Special ;; @image{FILENAME [, WIDTH] [, HEIGHT]} (put 'image 'texinfo-format 'texinfo-format-image) (ptexinfmt-defun-if-void texinfo-format-image () ;; I don't know makeinfo parse FILENAME. (let ((args (texinfo-format-parse-args)) filename) (when (null (nth 0 args)) (error "Invalid image command")) (texinfo-discard-command) ;; makeinfo uses FILENAME.txt (setq filename (format "%s.txt" (nth 0 args))) (message "Reading included file: %s" filename) ;; verbatim for Info output (goto-char (+ (point) (cadr (insert-file-contents filename)))) (message "Reading included file: %s...done" filename))) ;; @hyphenation command discards an argument within braces (put 'hyphenation 'texinfo-format 'texinfo-discard-command-and-arg) (ptexinfmt-defun-if-void texinfo-discard-command-and-arg () "Discard both @-command and its argument in braces." (goto-char texinfo-command-end) (forward-list 1) (setq texinfo-command-end (point)) (delete-region texinfo-command-start texinfo-command-end)) ;;; @multitable ... @end multitable (ptexinfmt-defvar-if-void texinfo-extra-inter-column-width 0 "*Number of extra spaces between entries (columns) in @multitable.") (ptexinfmt-defvar-if-void texinfo-multitable-buffer-name "*multitable-temporary-buffer*") (ptexinfmt-defvar-if-void texinfo-multitable-rectangle-name "texinfo-multitable-temp-") ;; These commands are defined in texinfo.tex for printed output. (put 'multitableparskip 'texinfo-format 'texinfo-discard-line-with-args) (put 'multitableparindent 'texinfo-format 'texinfo-discard-line-with-args) (put 'multitablecolmargin 'texinfo-format 'texinfo-discard-line-with-args) (put 'multitablelinespace 'texinfo-format 'texinfo-discard-line-with-args) (put 'multitable 'texinfo-format 'texinfo-multitable) (ptexinfmt-defun-if-void texinfo-multitable () "Produce multi-column tables." ;; This function pushes information onto the `texinfo-stack'. ;; A stack element consists of: ;; - type-of-command, i.e., multitable ;; - the information about column widths, and ;; - the position of texinfo-command-start. ;; e.g., ('multitable (1 2 3 4) 123) ;; The command line is then deleted. (texinfo-push-stack 'multitable ;; push width information on stack (texinfo-multitable-widths)) (texinfo-discard-line-with-args)) (put 'multitable 'texinfo-end 'texinfo-end-multitable) (ptexinfmt-defun-if-void texinfo-end-multitable () "Discard the @end multitable line and pop the stack of multitable." (texinfo-discard-command) (texinfo-pop-stack 'multitable)) (ptexinfmt-defun-if-broken texinfo-multitable-widths () "Return list of widths of each column in a multi-column table." (let (texinfo-multitable-width-list) ;; Fractions format: ;; @multitable @columnfractions .25 .3 .45 ;; ;; Template format: ;; @multitable {Column 1 template} {Column 2} {Column 3 example} ;; Place point before first argument (skip-chars-forward " \t") (cond ;; Check for common misspelling ((looking-at "@columnfraction ") (error "In @multitable, @columnfractions misspelled")) ;; Case 1: @columnfractions .25 .3 .45 ((looking-at "@columnfractions") (forward-word 1) (while (not (eolp)) (setq texinfo-multitable-width-list (cons (truncate (1- (* fill-column (read (get-buffer (current-buffer)))))) texinfo-multitable-width-list)))) ;; ;; Case 2: {Column 1 template} {Column 2} {Column 3 example} ((looking-at "{") (let ((start-of-templates (point))) (while (not (eolp)) (skip-chars-forward " \t") (let* ((start-of-template (1+ (point))) (end-of-template ;; forward-sexp works with braces in Texinfo mode (progn (forward-sexp 1) (1- (point))))) (setq texinfo-multitable-width-list (cons (- (progn (goto-char end-of-template) (current-column)) (progn (goto-char start-of-template) (current-column))) texinfo-multitable-width-list)) ;; Remove carriage return from within a template, if any. ;; This helps those those who want to use more than ;; one line's worth of words in @multitable line. (narrow-to-region start-of-template end-of-template) (goto-char (point-min)) (while (search-forward "\n" nil t) (delete-char -1)) (goto-char (point-max)) (widen) (forward-char 1))))) ;; ;; Case 3: Trouble (t (error "\ You probably need to specify column widths for @multitable correctly"))) ;; Check whether columns fit on page. (let ((desired-columns (+ ;; between column spaces (length texinfo-multitable-width-list) ;; additional between column spaces, if any texinfo-extra-inter-column-width ;; sum of spaces for each entry (apply '+ texinfo-multitable-width-list)))) (if (> desired-columns fill-column) (error (format "\ Multi-column table width, %d chars, is greater than page width, %d chars." desired-columns fill-column)))) texinfo-multitable-width-list)) ;; @item A1 @tab A2 @tab A3 (ptexinfmt-defun-if-void texinfo-multitable-extract-row () "Return multitable row, as a string. End of row is beginning of next @item or beginning of @end. Cells within rows are separated by @tab." (skip-chars-forward " \t") (let* ((start (point)) (end (progn (re-search-forward "@item\\|@end") (match-beginning 0))) (row (progn (goto-char end) (skip-chars-backward " ") ;; remove whitespace at end of argument (delete-region (point) end) (buffer-substring start (point))))) (delete-region texinfo-command-start end) row)) (put 'multitable 'texinfo-item 'texinfo-multitable-item) (ptexinfmt-defun-if-void texinfo-multitable-item () "Format a row within a multicolumn table. Cells in row are separated by @tab. Widths of cells are specified by the arguments in the @multitable line. All cells are made to be the same height. This command is executed when texinfmt sees @item inside @multitable." (let ((original-buffer (current-buffer)) (table-widths (reverse (car (cdr (car texinfo-stack))))) (existing-fill-column fill-column) start end (table-column 0) (table-entry-height 0) ;; unformatted row looks like: A1 @tab A2 @tab A3 ;; extract-row command deletes the source line in the table. (unformated-row (texinfo-multitable-extract-row))) ;; Use a temporary buffer (set-buffer (get-buffer-create texinfo-multitable-buffer-name)) (delete-region (point-min) (point-max)) (insert unformated-row) (goto-char (point-min)) ;; 1. Check for correct number of @tab in line. (let ((tab-number 1)) ;; one @tab between two columns (while (search-forward "@tab" nil t) (setq tab-number (1+ tab-number))) (if (/= tab-number (length table-widths)) (error "Wrong number of @tab's in a @multitable row"))) (goto-char (point-min)) ;; 2. Format each cell, and copy to a rectangle ;; buffer looks like this: A1 @tab A2 @tab A3 ;; Cell #1: format up to @tab ;; Cell #2: format up to @tab ;; Cell #3: format up to eob (while (not (eobp)) (setq start (point)) (setq end (save-excursion (if (search-forward "@tab" nil 'move) ;; Delete the @tab command, including the @-sign (delete-region (point) (progn (forward-word -1) (1- (point))))) (point))) ;; Set fill-column *wider* than needed to produce inter-column space (setq fill-column (+ 1 texinfo-extra-inter-column-width (nth table-column table-widths))) (narrow-to-region start end) ;; Remove whitespace before and after entry. (skip-chars-forward " ") (delete-region (point) (save-excursion (beginning-of-line) (point))) (goto-char (point-max)) (skip-chars-backward " ") (delete-region (point) (save-excursion (end-of-line) (point))) ;; Temorarily set texinfo-stack to nil so texinfo-format-scan ;; does not see an unterminated @multitable. (let (texinfo-stack) ;; nil (texinfo-format-scan)) (let (fill-prefix) ;; no fill prefix (fill-region (point-min) (point-max))) (setq table-entry-height (max table-entry-height (count-lines (point-min) (point-max)))) ;; 3. Move point to end of bottom line, and pad that line to fill column. (goto-char (point-min)) (forward-line (1- table-entry-height)) (let* ((beg (point)) ;; beginning of line ;; add one more space for inter-column spacing (needed-whitespace (1+ (- fill-column (progn (end-of-line) (current-column)))))) ;; end of existing line (insert (make-string (if (> needed-whitespace 0) needed-whitespace 1) ? ))) ;; now, put formatted cell into a rectangle (set (intern (concat texinfo-multitable-rectangle-name (int-to-string table-column))) (extract-rectangle (point-min) (point))) (delete-region (point-min) (point)) (goto-char (point-max)) (setq table-column (1+ table-column)) (widen)) ;; 4. Add extra lines to rectangles so all are of same height (let ((total-number-of-columns table-column) (column-number 0) here) (while (> table-column 0) (let ((this-rectangle (int-to-string table-column))) (while (< (length this-rectangle) table-entry-height) (setq this-rectangle (append this-rectangle '(""))))) (setq table-column (1- table-column))) ;; 5. Insert formatted rectangles in original buffer (switch-to-buffer original-buffer) (open-line table-entry-height) (while (< column-number total-number-of-columns) (setq here (point)) (insert-rectangle (eval (intern (concat texinfo-multitable-rectangle-name (int-to-string column-number))))) (goto-char here) (end-of-line) (setq column-number (1+ column-number)))) (kill-buffer texinfo-multitable-buffer-name) (setq fill-column existing-fill-column))) (ptexinfmt-defun-if-broken texinfo-format-printindex () (let ((indexelts (symbol-value (cdr (assoc (texinfo-parse-arg-discard) texinfo-indexvar-alist)))) opoint) (insert "\n* Menu:\n\n") (setq opoint (point)) (texinfo-print-index nil indexelts) (if (memq system-type '(vax-vms windows-nt ms-dos)) (texinfo-sort-region opoint (point)) (shell-command-on-region opoint (point) "sort -fd" 1)))) (ptexinfmt-broken-facility texinfo-format-end-node () (with-temp-buffer (insert (prin1-to-string (symbol-function 'texinfo-format-end-node))) (goto-char (point-min)) (not (search-forward "fill-paragraph" nil t nil)))) (ptexinfmt-defun-if-broken texinfo-format-end-node () (let (start (arg (texinfo-parse-line-arg))) (texinfo-discard-command) ; remove or insert whitespace, as needed (delete-region (save-excursion (skip-chars-backward " \t\n") (point)) (point)) (insert (format " (%d) " texinfo-footnote-number)) ;;(fill-paragraph nil) (save-excursion (if (search-forward "\n--------- Footnotes ---------\n" nil t) (progn ; already have footnote, put new one before end of node (if (re-search-forward "^@node" nil 'move) (forward-line -1)) (setq start (point)) (insert (format "\n(%d) %s\n" texinfo-footnote-number arg)) (fill-region start (point))) ;; else no prior footnote (if (re-search-forward "^@node" nil 'move) (forward-line -1)) (insert "\n--------- Footnotes ---------\n") (setq start (point)) (insert (format "\n(%d) %s\n" texinfo-footnote-number arg)))))) (provide 'ptexinfmt) ;;; ptexinfmt.el ends here ddskk-15.1.54/skk-version.el0000664000076600007660000000416612234442350015242 0ustar brutusbrutus;;; skk-version.el --- version information for SKK -*- coding:iso-2022-jp -*- ;; Copyright (C) 2000, 2001, 2003 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-version.el,v 1.75 2013/10/31 11:54:16 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/10/31 11:54:16 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-and-compile (require 'skk-macs)) (put 'skk-version 'product-name "Daredevil SKK") (put 'skk-version 'version-string "15.1.54") (put 'skk-version 'codename "Oshamambe") ; See also `READMEs/CODENAME.ja' (put 'skk-version 'codename-ja "$BD9K|It(B") ;;;###autoload (defun skk-version (&optional without-codename) "Return SKK version with its codename. If WITHOUT-CODENAME is non-nil, simply return SKK version without the codename." (interactive "P") (if (skk-called-interactively-p 'interactive) (message "%s" (skk-version without-codename)) (if without-codename (format "%s/%s" (get 'skk-version 'product-name) (get 'skk-version 'version-string)) (format "%s/%s (%s)" (get 'skk-version 'product-name) (get 'skk-version 'version-string) (if skk-version-codename-ja (get 'skk-version 'codename-ja) (get 'skk-version 'codename)) )))) (provide 'skk-version) ;;; skk-version.el ends here ddskk-15.1.54/skk-cdb.el0000664000076600007660000000467711541741026014316 0ustar brutusbrutus;; skk-cdb.el --- Directly search words in CDB dictionary ;; Copyright (C) 2010 Yusuke Shinyama ;; Author: Yusuke Shinyama ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method, cdb ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; Usage: Set skk-cdb-large-jisyo in your ~/.skk like the following. ;; ;; (setq skk-cdb-large-jisyo "/usr/share/skk/SKK-JISYO.L.cdb") ;; (require 'cdb) (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (defconst skk-cdb-version "20100719+") ;; skk-cdb-working-buffer ;; (defvar skk-cdb-working-buffer " *skk-cdb*") ;; skk-search-cdb-jisyo ;; ;;;###autoload (defun skk-search-cdb-jisyo (cdb-path) (unless cdb-path (setq cdb-path skk-cdb-large-jisyo)) (when (and (stringp cdb-path) (file-readable-p cdb-path)) (cdb-init cdb-path) (let* ((key (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (bkey (encode-coding-string key skk-cdb-coding-system)) (bval (cdb-get cdb-path bkey)) l) (when bval (with-current-buffer (get-buffer-create skk-cdb-working-buffer) (erase-buffer) (insert (decode-coding-string bval skk-cdb-coding-system)) (goto-char (point-min)) (when (eq (following-char) ?/) (let ((okurigana (or skk-henkan-okurigana skk-okuri-char))) (forward-char 1) (setq l (skk-compute-henkan-lists okurigana)) (when l (cond ((and okurigana skk-henkan-okuri-strictly) (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l))))))))))) (provide 'skk-cdb) ;;; skk-cdb.el ends here ddskk-15.1.54/skk-setup.el.in0000664000076600007660000000405311672222020015310 0ustar brutusbrutus;;; skk-setup.el --- initial setup for SKK -*- emacs-lisp -*- ;; Copyright (C) 2000 NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-setup.el.in,v 1.36 2011/12/14 22:32:48 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2011/12/14 22:32:48 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin St, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: ;;; Autoloads. (unless (featurep 'xemacs) (require 'skk-autoloads)) ;;; Key bindings. (global-set-key "\C-x\C-j" 'skk-mode) (global-set-key "\C-xj" 'skk-auto-fill-mode) (global-set-key "\C-xt" 'skk-tutorial) ;;; Dictionaries. ;;(defvar skk-large-jisyo "@DIC@") ;;(defvar skk-aux-large-jisyo "@AUXDIC@") ;;(defvar skk-tut-file "@TUT@") ;;; Isearch setting. (defun skk-isearch-setup-maybe () (require 'skk-vars) (when (or (eq skk-isearch-mode-enable 'always) (and (boundp 'skk-mode) skk-mode skk-isearch-mode-enable)) (skk-isearch-mode-setup))) (defun skk-isearch-cleanup-maybe () (require 'skk-vars) (when (and (featurep 'skk-isearch) skk-isearch-mode-enable) (skk-isearch-mode-cleanup))) (add-hook 'isearch-mode-hook #'skk-isearch-setup-maybe) (add-hook 'isearch-mode-end-hook #'skk-isearch-cleanup-maybe) (provide 'skk-setup) ;;; skk-setup.el ends here ddskk-15.1.54/vip.el0000664000076600007660000031154310612545243013570 0ustar brutusbrutus;;; vip.el --- a VI Package for GNU Emacs ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: 3.7 ;; Keywords: emulations ;; Last Modified: $Date: 2007/04/22 02:38:27 $ ;; Previous versions: ;; Version 3.5: September 15, 1987 ;; This file is part of GNU Emacs. ;; GNU Emacs 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. ;; GNU Emacs 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., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; A full-featured vi(1) emulator. ;; ;; Send suggestions and bug reports to one of the above addresses. ;; When you report a bug, be sure to include the version number of VIP and ;; Emacs you are using. ;; Execute info command by typing "M-x info" to get information on VIP. ;;; Code: ;; APEL 9.22 required. (require 'poe) ;; external variables ;; Not so easy to work on XEmacs... ;;(defconst vip-xemacs-p (string-match "XEmacs" emacs-version)) (defvar vip-insert-point nil "Remember insert point as a marker. (Buffer-specific.)") (set-default 'vip-insert-point nil) (make-variable-buffer-local 'vip-insert-point) (defvar vip-com-point nil "Remember com point as a marker. (Buffer-specific.)") (set-default 'vip-com-point nil) (make-variable-buffer-local 'vip-com-point) (defvar vip-current-mode nil "Current mode. One of `emacs-mode', `vi-mode', `insert-mode'.") (make-variable-buffer-local 'vip-current-mode) (setq-default vip-current-mode 'emacs-mode) (defvar vip-emacs-mode-line-buffer-identification nil "Value of mode-line-buffer-identification in Emacs mode within vip.") (make-variable-buffer-local 'vip-emacs-mode-line-buffer-identification) (setq-default vip-emacs-mode-line-buffer-identification '("Emacs: %17b")) (defvar vip-current-major-mode nil "vip-current-major-mode is the major-mode vi considers it is now. \(buffer specific\)") (make-variable-buffer-local 'vip-current-major-mode) (defvar vip-last-shell-com nil "Last shell command executed by ! command.") (defvar vip-use-register nil "Name of register to store deleted or yanked strings.") (defvar vip-d-com nil "How to reexecute last destructive command. Value is list (M-COM VAL COM).") (defconst vip-shift-width 8 "*The number of columns shifted by > and < command.") (defconst vip-re-replace nil "*If t then do regexp replace, if nil then do string replace.") (defvar vip-d-char nil "The character remembered by the vi \"r\" command.") (defvar vip-f-char nil "For use by \";\" command.") (defvar vip-F-char nil "For use by \".\" command.") (defvar vip-f-forward nil "For use by \";\" command.") (defvar vip-f-offset nil "For use by \";\" command.") (defconst vip-search-wrap-around t "*if t, search wraps around.") (defconst vip-re-search nil "*if t, search is reg-exp search, otherwise vanilla search.") (defvar vip-s-string nil "Last vip search string.") (defvar vip-s-forward nil "If t, search is forward.") (defconst vip-case-fold-search nil "*If t, search ignores cases.") (defconst vip-re-query-replace nil "*If t then do regexp replace, if nil then do string replace.") (defconst vip-open-with-indent nil "*If t, indent when open a new line.") (defconst vip-help-in-insert-mode nil "*If t then C-h is bound to help-command in insert mode. If nil then it is bound to `delete-backward-char'.") (defvar vip-quote-string "> " "String inserted at the beginning of region.") (defvar vip-tags-file-name "TAGS") (defvar vip-inhibit-startup-message nil) (defvar vip-startup-file (convert-standard-filename "~/.vip") "Filename used as startup file for vip.") ;; SKK related variables (defvar vip-skk-latin-mode nil) (make-variable-buffer-local 'vip-skk-latin-mode) (defvar vip-skk-j-mode nil) (make-variable-buffer-local 'vip-skk-j-mode) (defvar vip-skk-jisx0208-latin-mode nil) (make-variable-buffer-local 'vip-skk-jisx0208-mode) (defvar vip-skk-katakana nil) (make-variable-buffer-local 'vip-skk-katakana) (defvar vip-vi-mode nil) (make-variable-buffer-local 'vip-vi-mode) (defvar vip-insert-mode nil) (make-variable-buffer-local 'vip-insert-mode) ;; basic set up (defmacro vip-move-marker-locally (marker position &optional buffer) (list 'progn (list 'if (list 'not marker) (list 'setq marker (list 'make-marker))) (list 'set-marker marker position buffer))) (global-set-key "\C-z" 'vip-change-mode-to-vi) (defmacro vip-loop (count body) "(COUNT BODY) Execute BODY COUNT times." (list 'let (list (list 'count count)) (list 'while (list '> 'count 0) body (list 'setq 'count (list '1- 'count))))) (defun vip-push-mark-silent (&optional location) "Set mark at LOCATION (point, by default) and push old mark on mark ring. No message." (if (null (mark t)) nil (setq mark-ring (cons (copy-marker (mark-marker)) mark-ring)) (if (> (length mark-ring) mark-ring-max) (progn (move-marker (car (nthcdr mark-ring-max mark-ring)) nil) (setcdr (nthcdr (1- mark-ring-max) mark-ring) nil)))) (set-mark (or location (point)))) (defun vip-goto-col (arg) "Go to ARG's column." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (save-excursion (end-of-line) (if (> val (1+ (current-column))) (error ""))) (if com (vip-move-marker-locally vip-com-point (point))) (beginning-of-line) (forward-char (1- val)) (if com (vip-execute-com 'vip-goto-col val com)))) (defun vip-copy-keymap (map) (if (null map) (make-sparse-keymap) (copy-keymap map))) ;; changing mode ;; the two useule functions below are taken from viper and ;; modified. (defun vip-normalize-minor-mode-map-alist () (setq minor-mode-map-alist (vip-append-filter-alist (list (cons 'vip-vi-mode vip-vi-mode-map) (cons 'vip-insert-mode vip-insert-mode-map) ) minor-mode-map-alist))) ;; Append LIS2 to LIS1, both alists, by side-effect and returns LIS1 ;; LIS2 is modified by filtering it: deleting its members of the form ;; \(car elt\) such that (car elt') is in LIS1. (defun vip-append-filter-alist (lis1 lis2) (let ((temp lis1) elt) ;;filter-append the second list (while temp ;; delete all occurrences (while (setq elt (assoc (car (car temp)) lis2)) (setq lis2 (delq elt lis2))) (setq temp (cdr temp))) (nconc lis1 lis2))) (defun vip-change-mode (new-mode) "change mode to NEW-MODE. NEW-MODE will be either emacs-mode, vi-mode or insert-mode." (let ((skk-mode (if (boundp 'skk-mode) skk-mode nil))) (cond ((eq new-mode 'vi-mode) (if (eq vip-current-mode 'insert-mode) (progn (if skk-mode (vip-skk-mode-off)) (vip-copy-region-as-kill (point) vip-insert-point) (vip-repeat-insert-command)) (if (eq vip-current-mode 'emacs-mode) (setq vip-emacs-mode-line-buffer-identification mode-line-buffer-identification))) (vip-change-mode-line "Vi: ") (setq vip-vi-mode t vip-insert-mode nil) ) ((eq new-mode 'insert-mode) (vip-move-marker-locally vip-insert-point (point)) (if (eq vip-current-mode 'emacs-mode) (setq vip-emacs-mode-line-buffer-identification mode-line-buffer-identification)) (vip-change-mode-line "Insrt") (if skk-mode (vip-skk-mode-on)) (setq vip-vi-mode nil vip-insert-mode t)) ((eq new-mode 'emacs-mode) (vip-change-mode-line "Emacs:") ;;(vip-skk-mode-off) (setq vip-vi-mode nil vip-insert-mode nil))) (setq vip-current-mode new-mode) (vip-normalize-minor-mode-map-alist) (force-mode-line-update) )) ;; SKK related functions ;;;###autoload (defun vip-skk-mode (arg) "Turn on both VIP-MODE and SKK-MODE. if ARG is nil, then toggle SKK-MODE. Then, change mode to insert mode." (interactive "P") (or vip-current-mode (vip-mode)) (cond ((eq vip-current-mode 'vi-mode) (skk-mode arg) (setq vip-skk-latin-mode skk-latin-mode vip-skk-j-mode skk-j-mode vip-skk-jisx0208-latin-mode skk-jisx0208-latin-mode vip-skk-katakana skk-katakana) (vip-change-mode-to-insert)) ((eq vip-current-mode 'emacs-mode) ;; in this case, alwasy enter skk mode (skk-mode 1) (vip-change-mode-to-insert)) ((eq vip-current-mode 'insert-mode) (skk-mode arg) (vip-change-mode-to-insert)))) (defun vip-skk-mode-off () (if skk-abbrev-mode (skk-j-mode-on)) (let ((str (substring (skk-indicator-to-string skk-modeline-input-mode t) 1))) (setq vip-skk-latin-mode skk-latin-mode vip-skk-j-mode skk-j-mode vip-skk-jisx0208-latin-mode skk-jisx0208-latin-mode vip-skk-katakana skk-katakana vip-skk-input-mode-string) (skk-kakutei) (skk-mode-off) (setq skk-modeline-input-mode ;; There was no MODE argument...? ;;(skk-mode-string-to-indicator (concat " [" str "]")) (concat " [" str "]")))) (defun vip-skk-mode-on () (add-hook 'pre-command-hook 'skk-pre-command nil 'local) ;; we need to go back to the mode stored in VIP-SKK-*-MODE. (cond (vip-skk-latin-mode (skk-latin-mode-on)) (vip-skk-j-mode (skk-j-mode-on vip-skk-katakana)) (vip-skk-jisx0208-latin-mode (skk-jisx0208-latin-mode-on)))) (require 'advice) (defadvice skk-pre-command (around vip-ad activate) (if (eq this-command 'vip-delete-backward-char) ;; do nothing nil ad-do-it)) ;; end SKK related functions (defun vip-copy-region-as-kill (beg end) "If BEG and END do not belong to the same buffer, it copies empty region." (condition-case nil (copy-region-as-kill beg end) (error (copy-region-as-kill beg beg)))) (defun vip-change-mode-line (string) "Assuming that the mode line format contains the string \"Emacs:\", this function replaces the string by \"Vi: \" etc." (setq mode-line-buffer-identification (if (string= string "Emacs:") vip-emacs-mode-line-buffer-identification (list (concat string " %12b"))))) ;;;###autoload (defun Vip-mode () "Turn on VIP emulation of VI." (interactive) (if (not vip-inhibit-startup-message) (progn (switch-to-buffer "VIP Startup Message") (erase-buffer) (insert "VIP is a Vi emulation package for GNU Emacs. VIP provides most Vi commands including Ex commands. VIP is however different from Vi in several points. You can get more information on VIP by: 1. Typing `M-x info' and selecting menu item \"vip\". 2. Typing `C-h k' followed by a key whose description you want. 3. Printing VIP manual which can be found as GNU/man/vip.texinfo 4. Printing VIP Reference Card which can be found as GNU/etc/vipcard.tex This startup message appears whenever you load VIP unless you type `y' now. Type `n' to quit this window for now.\n") (goto-char (point-min)) (if (y-or-n-p "Inhibit VIP startup message? ") (progn (save-excursion (set-buffer (find-file-noselect (substitute-in-file-name vip-startup-file))) (goto-char (point-max)) (insert "\n(setq vip-inhibit-startup-message t)\n") (save-buffer) (kill-buffer (current-buffer))) (message "VIP startup message inhibited.") (sit-for 2))) (kill-buffer (current-buffer)) (message "") (setq vip-inhibit-startup-message t))) (vip-change-mode-to-vi)) (defalias 'vip-mode 'Vip-mode) (defun vip-change-mode-to-vi () "Change mode to vi mode." (interactive) (vip-change-mode 'vi-mode)) (defun vip-change-mode-to-insert () "Change mode to insert mode." (interactive) (vip-change-mode 'insert-mode)) (defun vip-change-mode-to-emacs () "Change mode to emacs mode." (interactive) (vip-change-mode 'emacs-mode)) ;; escape to emacs mode temporarily (defun vip-escape-to-emacs (arg &optional events) "Escape to Emacs mode for one Emacs command. ARG is used as the prefix value for the executed command. If EVENTS is a list of events, which become the beginning of the command." (interactive "P") (let ((change-mode-to-vi nil) (change-mode-to-insert nil) (change-mode-to-emacs nil) (save-vi-mode vip-vi-mode) (save-insert-mode vip-insert-mode) (old-buff (current-buffer)) ) (let (com key (vip-vi-mode nil) (vip-insert-mode nil)) (if events (setq unread-command-events events)) (setq prefix-arg arg) ;;(use-local-map vip-emacs-local-map) (unwind-protect (setq com (key-binding (setq key ;;(if vip-xemacs-p ;; (read-key-sequence nil) ;; (read-key-sequence nil t))))) (read-key-sequence nil t)))) nil) (command-execute com prefix-arg) (setq prefix-arg nil);; reset prefix arg ) ;; we must check if the current buffer is the same after executing ;; the command. if not, we have to restore the values of ;; VIP-VI-MODE and VIP-INSERT-MODE (if (eq (current-buffer) old-buff) ;; in case one of the values of CHANGE-MODE-TO-VI/INSERT/EMACS was ;; changed dynamically in executing the command COM, then ;; change mode to the specified mode. otherwise keep the mode. (progn (cond (change-mode-to-vi (vip-change-mode-to-vi)) (change-mode-to-insert (vip-change-mode-to-insert) ) (change-mode-to-emacs (vip-change-mode-to-emacs)) (t (vip-change-mode vip-current-mode)))) ;; since OLD-BUFF may not exist anymore, we have to first ;; check if it still exists. we can check this by the function ;; BUFFER-NAME which return nil for a killed buffer. (if (buffer-name old-buff) (save-excursion (set-buffer old-buff) (setq vip-vi-mode save-vi-mode vip-insert-mode save-insert-mode))) ;; in the new buffer we enter the mode spcified by ;; the local value of VIP-CURRNT-MODE, unless CHANGE-MODE-TO-* ;; is set (cond (change-mode-to-vi (vip-change-mode-to-vi)) (change-mode-to-insert (vip-change-mode-to-insert)) (change-mode-to-emacs (vip-change-mode-to-emacs)) (t (vip-change-mode vip-current-mode))) ) )) (defun vip-message-conditions (conditions) "Print CONDITIONS as a message." (let ((case (car conditions)) (msg (cdr conditions))) (if (null msg) (message "%s" case) (message "%s %s" case (prin1-to-string msg))) (ding))) (defun vip-ESC (arg) "Emulate ESC key in Emacs mode." (interactive "P") (vip-escape-to-emacs arg '(?\e))) (defun vip-ctl-c (arg) "Emulate C-c key in Emacs mode." (interactive "P") (vip-escape-to-emacs arg '(?\C-c))) (defun vip-ctl-x (arg) "Emulate C-x key in Emacs mode." (interactive "P") (vip-escape-to-emacs arg '(?\C-x))) (defun vip-ctl-h (arg) "Emulate C-h key in Emacs mode." (interactive "P") (vip-escape-to-emacs arg '(?\C-h))) ;; prefix argument for vi mode ;; In vi mode, prefix argument is a dotted pair (NUM . COM) where NUM ;; represents the numeric value of the prefix argument and COM represents ;; command prefix such as "c", "d", "m" and "y". (defun vip-prefix-arg-value (char value com) "Compute numeric prefix arg value. Invoked by CHAR. VALUE is the value obtained so far, and COM is the command part obtained so far." (while (and (>= char ?0) (<= char ?9)) (setq value (+ (* (if (numberp value) value 0) 10) (- char ?0))) (setq char (read-char))) (setq prefix-arg value) (if com (setq prefix-arg (cons prefix-arg com))) (while (eq char ?U) (vip-describe-arg prefix-arg) (setq char (read-char))) (setq unread-command-events (list char))) (defun vip-prefix-arg-com (char value com) "Vi operator as prefix argument." (let ((cont t)) (while (and cont (memq char '(?c ?d ?y ?! ?< ?> ?= ?# ?r ?R ?\"))) (if com ;; this means that we already have a command character, so we ;; construct a com list and exit while. however, if char is " ;; it is an error. (progn ;; new com is (CHAR . OLDCOM) (if (memq char '(?# ?\")) (error "")) (setq com (cons char com)) (setq cont nil)) ;; if com is nil we set com as char, and read more. again, if char ;; is ", we read the name of register and store it in vip-use-register. ;; if char is !, =, or #, a complete com is formed so we exit while. (cond ((memq char '(?! ?=)) (setq com char) (setq char (read-char)) (setq cont nil)) ((eq char ?#) ;; read a char and encode it as com (setq com (+ 128 (read-char))) (setq char (read-char)) (setq cont nil)) ((memq char '(?< ?>)) (setq com char) (setq char (read-char)) (if (eq com char) (setq com (cons char com))) (setq cont nil)) ((eq char ?\") (let ((reg (read-char))) (if (or (and (<= ?A reg) (<= reg ?z)) (and (<= ?1 reg) (<= reg ?9))) (setq vip-use-register reg) (error "")) (setq char (read-char)))) (t (setq com char) (setq char (read-char))))))) (if (atom com) ;; com is a single char, so we construct prefix-arg ;; and if char is ?, describe prefix arg, otherwise exit by ;; pushing the char back (progn (setq prefix-arg (cons value com)) (while (eq char ?U) (vip-describe-arg prefix-arg) (setq char (read-char))) (setq unread-command-events (list char))) ;; as com is non-nil, this means that we have a command to execute (if (memq (car com) '(?r ?R)) ;; execute appropriate region command. (let ((char (car com)) (com (cdr com))) (setq prefix-arg (cons value com)) (if (eq char ?r) (vip-region prefix-arg) (vip-Region prefix-arg)) ;; reset prefix-arg (setq prefix-arg nil)) ;; otherwise, reset prefix arg and call appropriate command (setq value (if (null value) 1 value)) (setq prefix-arg nil) (cond ((equal com '(?c . ?c)) (vip-line (cons value ?C))) ((equal com '(?d . ?d)) (vip-line (cons value ?D))) ((equal com '(?d . ?y)) (vip-yank-defun)) ((equal com '(?y . ?y)) (vip-line (cons value ?Y))) ((equal com '(?< . ?<)) (vip-line (cons value ?<))) ((equal com '(?> . ?>)) (vip-line (cons value ?>))) ((equal com '(?! . ?!)) (vip-line (cons value ?!))) ((equal com '(?= . ?=)) (vip-line (cons value ?=))) (t (error "")))))) (defun vip-describe-arg (arg) (let (val com) (setq val (vip-P-val arg) com (vip-getcom arg)) (if (null val) (if (null com) (message "Value is nil, and command is nil.") (message "Value is nil, and command is %c." com)) (if (null com) (message "Value is %d, and command is nil." val) (message "Value is %d, and command is %c." val com))))) (defun vip-digit-argument (arg) "Begin numeric argument for the next command." (interactive "P") (vip-prefix-arg-value last-command-char nil (if (consp arg) (cdr arg) nil))) (defun vip-command-argument (arg) "Accept a motion command as an argument." (interactive "P") (condition-case conditions (vip-prefix-arg-com last-command-char (cond ((null arg) nil) ((consp arg) (car arg)) ((numberp arg) arg) (t (error "strange arg"))) (cond ((null arg) nil) ((consp arg) (cdr arg)) ((numberp arg) nil) (t (error "strange arg")))) (quit (setq vip-use-register nil) (signal 'quit nil)))) (defun vip-p-val (arg) "Get value part of prefix-argument ARG." (cond ((null arg) 1) ((consp arg) (if (null (car arg)) 1 (car arg))) (t arg))) (defun vip-P-val (arg) "Get value part of prefix-argument ARG." (cond ((consp arg) (car arg)) (t arg))) (defun vip-getcom (arg) "Get com part of prefix-argument ARG." (cond ((null arg) nil) ((consp arg) (cdr arg)) (t nil))) (defun vip-getCom (arg) "Get com part of prefix-argument ARG and modify it." (let ((com (vip-getcom arg))) (cond ((eq com ?c) ?C) ((eq com ?d) ?D) ((eq com ?y) ?Y) (t com)))) ;; repeat last destructive command (defun vip-append-to-register (reg start end) "Append region to text in register REG. START and END are buffer positions indicating what to append." (set-register reg (concat (or (get-register reg) "") (buffer-substring start end)))) (defun vip-execute-com (m-com val com) "(M-COM VAL COM) Execute command COM. The list (M-COM VAL COM) is set to vip-d-com for later use by vip-repeat" (let ((reg vip-use-register)) (if com (cond ((eq com ?c) (vip-change vip-com-point (point))) ((eq com (- ?c)) (vip-change-subr vip-com-point (point))) ((eq (abs com) ?C) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register (mark 'force) (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (mark 'force) (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (delete-region (mark 'force) (point))) (open-line 1) (if (eq com ?C) (vip-change-mode-to-insert) (yank))) ((eq com ?d) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register vip-com-point (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) vip-com-point (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (setq last-command (if (eq last-command 'd-command) 'kill-region nil)) (kill-region vip-com-point (point)) (setq this-command 'd-command)) ((eq com ?D) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register (mark 'force) (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (mark 'force) (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (setq last-command (if (eq last-command 'D-command) 'kill-region nil)) (kill-region (mark 'force) (point)) (if (eq m-com 'vip-line) (setq this-command 'D-command))) (back-to-indentation)) ((eq com ?y) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register vip-com-point (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) vip-com-point (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (setq last-command nil) (copy-region-as-kill vip-com-point (point)) (goto-char vip-com-point)) ((eq com ?Y) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (if vip-use-register (progn (cond ((and (<= ?a vip-use-register) (<= vip-use-register ?z)) (copy-to-register vip-use-register (mark 'force) (point) nil)) ((and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (mark 'force) (point))) (t (setq vip-use-register nil) (error ""))) (setq vip-use-register nil))) (setq last-command nil) (copy-region-as-kill (mark 'force) (point))) (goto-char vip-com-point)) ((eq (abs com) ?!) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (shell-command-on-region (mark 'force) (point) (if (eq com ?!) (setq vip-last-shell-com (vip-read-string "!")) vip-last-shell-com) t))) ((eq com ?=) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (if (> (mark 'force) (point)) (exchange-point-and-mark)) (indent-region (mark 'force) (point) nil))) ((eq com ?<) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (indent-rigidly (mark 'force) (point) (- vip-shift-width))) (goto-char vip-com-point)) ((eq com ?>) (save-excursion (set-mark vip-com-point) (vip-enlarge-region (mark 'force) (point)) (indent-rigidly (mark 'force) (point) vip-shift-width)) (goto-char vip-com-point)) ((>= com 128) ;; this is special command # (vip-special-prefix-com (- com 128))))) (setq vip-d-com (list m-com val (if (memq com '(?c ?C ?!)) (- com) com) reg)))) (defun vip-repeat (arg) "(ARG) Re-execute last destructive command. vip-d-com has the form \(COM ARG CH REG), where COM is the command to be re-executed, ARG is the argument for COM, CH is a flag for repeat, and REG is optional and if exists is the name of the register for COM." (interactive "P") (if (eq last-command 'vip-undo) ;; if the last command was vip-undo, then undo-more (vip-undo-more) ;; otherwise execute the command stored in vip-d-com. if arg is non-nil ;; its prefix value is used as new prefix value for the command. (let ((m-com (car vip-d-com)) (val (vip-P-val arg)) (com (car (cdr (cdr vip-d-com)))) (reg (nth 3 vip-d-com))) (if (null val) (setq val (car (cdr vip-d-com)))) (if (null m-com) (error "No previous command to repeat.")) (setq vip-use-register reg) (funcall m-com (cons val com))))) (defun vip-special-prefix-com (char) "This command is invoked interactively by the key sequence #" (cond ((eq char ?c) (downcase-region (min vip-com-point (point)) (max vip-com-point (point)))) ((eq char ?C) (upcase-region (min vip-com-point (point)) (max vip-com-point (point)))) ((eq char ?g) (set-mark vip-com-point) (vip-global-execute)) ((eq char ?q) (set-mark vip-com-point) (vip-quote-region)) ((eq char ?s) (spell-region vip-com-point (point))))) ;; undoing (defun vip-undo () "Undo previous change." (interactive) (message "undo!") (undo-start) (undo-more 2) (setq this-command 'vip-undo)) (defun vip-undo-more () "Continue undoing previous changes." (message "undo more!") (undo-more 1) (setq this-command 'vip-undo)) ;; utilities (defun vip-string-tail (str) (if (or (null str) (string= str "")) nil (substring str 1))) (defun vip-yank-defun () (mark-defun) (copy-region-as-kill (point) (mark 'force))) (defun vip-enlarge-region (beg end) "Enlarge region between BEG and END." (if (< beg end) (progn (goto-char beg) (set-mark end)) (goto-char end) (set-mark beg)) (beginning-of-line) (exchange-point-and-mark) (if (or (not (eobp)) (not (bolp))) (next-line 1)) (beginning-of-line) (if (> beg end) (exchange-point-and-mark))) (defun vip-global-execute () "Call last keyboad macro for each line in the region." (if (> (point) (mark 'force)) (exchange-point-and-mark)) (beginning-of-line) (call-last-kbd-macro) (while (< (point) (mark 'force)) (forward-line 1) (beginning-of-line) (call-last-kbd-macro))) (defun vip-quote-region () "Quote region by inserting the user supplied string at the beginning of each line in the region." (setq vip-quote-string (let ((str (vip-read-string (format "quote string \(default \"%s\"\): " vip-quote-string)))) (if (string= str "") vip-quote-string str))) (vip-enlarge-region (point) (mark 'force)) (if (> (point) (mark 'force)) (exchange-point-and-mark)) (insert vip-quote-string) (beginning-of-line) (forward-line 1) (while (and (< (point) (mark 'force)) (bolp)) (insert vip-quote-string) (beginning-of-line) (forward-line 1))) (defun vip-end-with-a-newline-p (string) "Check if the string ends with a newline." (or (string= string "") (eq (aref string (1- (length string))) ?\n))) (defun vip-read-string (prompt &optional init skk) "Setup MINIBUFFER-LOCAL-MAP appropriately and call READ-STRING. If SKK is on, then read string with SKK-J-MODE on." (setq save-minibuffer-local-map (copy-keymap minibuffer-local-map)) (let (str (input-mode-str (and (boundp 'skk-modeline-input-mode) (skk-indicator-to-string skk-modeline-input-mode t)))) (if (and skk (boundp 'skk-mode) skk-mode) (add-hook 'minibuffer-setup-hook 'skk-j-mode-on)) (define-key minibuffer-local-map "\C-h" 'backward-char) (define-key minibuffer-local-map "\C-w" 'backward-word) (define-key minibuffer-local-map "\e" 'exit-minibuffer) (condition-case conditions (setq str (read-string prompt init)) (quit (setq minibuffer-local-map save-minibuffer-local-map) (if input-mode-str (setq skk-modeline-input-mode (skk-mode-string-to-indicator input-mode-str))) (signal 'quit nil))) (setq minibuffer-local-map save-minibuffer-local-map) (if input-mode-str (setq skk-modeline-input-mode (skk-mode-string-to-indicator input-mode-str))) str)) ;; insertion commands (defun vip-repeat-insert-command () "This function is called when mode changes from insertion mode to vi command mode. It will repeat the insertion command if original insertion command was invoked with argument > 1." (let ((i-com (car vip-d-com)) (val (car (cdr vip-d-com)))) (if (and val (> val 1)) ;; first check that val is non-nil (progn (setq vip-d-com (list i-com (1- val) ?r)) (vip-repeat nil) (setq vip-d-com (list i-com val ?r)))))) (defun vip-insert (arg) "" (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-insert val ?r)) (if com (vip-loop val (yank)) (vip-change-mode-to-insert)))) (defun vip-append (arg) "Append after point." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-append val ?r)) (if (not (eolp)) (forward-char)) (if (eq com ?r) (vip-loop val (yank)) (vip-change-mode-to-insert)))) (defun vip-Append (arg) "Append at end of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-Append val ?r)) (end-of-line) (if (eq com ?r) (vip-loop val (yank)) (vip-change-mode-to-insert)))) (defun vip-Insert (arg) "Insert before first non-white." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-Insert val ?r)) (back-to-indentation) (if (eq com ?r) (vip-loop val (yank)) (vip-change-mode-to-insert)))) (defun vip-open-line (arg) "Open line below." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-open-line val ?r)) (let ((col (current-indentation))) (if (eq com ?r) (vip-loop val (progn (end-of-line) (newline 1) (if vip-open-with-indent (indent-to col)) (yank))) (end-of-line) (newline 1) (if vip-open-with-indent (indent-to col)) (vip-change-mode-to-insert))))) (defun vip-Open-line (arg) "Open line above." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-Open-line val ?r)) (let ((col (current-indentation))) (if (eq com ?r) (vip-loop val (progn (beginning-of-line) (open-line 1) (if vip-open-with-indent (indent-to col)) (yank))) (beginning-of-line) (open-line 1) (if vip-open-with-indent (indent-to col)) (vip-change-mode-to-insert))))) (defun vip-open-line-at-point (arg) "Open line at point." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-open-line-at-point val ?r)) (if (eq com ?r) (vip-loop val (progn (open-line 1) (yank))) (open-line 1) (vip-change-mode-to-insert)))) (defun vip-substitute (arg) "Substitute characters." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (save-excursion (set-mark (point)) (forward-char val) (if (eq com ?r) (vip-change-subr (mark 'force) (point)) (vip-change (mark 'force) (point)))) (setq vip-d-com (list 'vip-substitute val ?r)))) (defun vip-substitute-line (arg) "Substitute lines." (interactive "p") (vip-line (cons arg ?C))) ;; line command (defun vip-line (arg) (let ((val (car arg)) (com (cdr arg))) (vip-move-marker-locally vip-com-point (point)) (next-line (1- val)) (vip-execute-com 'vip-line val com))) (defun vip-yank-line (arg) "Yank ARG lines (in vi's sense)" (interactive "P") (let ((val (vip-p-val arg))) (vip-line (cons val ?Y)))) ;; region command (defun vip-region (arg) (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getcom arg))) (vip-move-marker-locally vip-com-point (point)) (exchange-point-and-mark) (vip-execute-com 'vip-region val com))) (defun vip-Region (arg) (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getCom arg))) (vip-move-marker-locally vip-com-point (point)) (exchange-point-and-mark) (vip-execute-com 'vip-Region val com))) (defun vip-replace-char (arg) "Replace the following ARG chars by the character read." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (setq vip-d-com (list 'vip-replace-char val ?r)) (vip-replace-char-subr (if (eq com ?r) vip-d-char (read-char)) val))) (defun vip-replace-char-subr (char arg) (delete-char arg t) (setq vip-d-char char) (vip-loop (if (> arg 0) arg (- arg)) (insert char)) (backward-char arg)) (defun vip-replace-string () "Replace string. If you supply null string as the string to be replaced, the query replace mode will toggle between string replace and regexp replace." (interactive) (let (str) (setq str (vip-read-string (if vip-re-replace "Replace regexp: " "Replace string: "))) (if (string= str "") (progn (setq vip-re-replace (not vip-re-replace)) (message "Replace mode changed to %s." (if vip-re-replace "regexp replace" "string replace"))) (if vip-re-replace ;; (replace-regexp ;; str ;; (vip-read-string (format "Replace regexp \"%s\" with: " str))) (while (re-search-forward str nil t) (replace-match (vip-read-string (format "Replace regexp \"%s\" with: " str)) nil nil)) (replace-string str (vip-read-string (format "Replace \"%s\" with: " str))))))) ;; basic cursor movement. j, k, l, m commands. (defun vip-forward-char (arg) "Move point right ARG characters (left if ARG negative).On reaching end of buffer, stop and signal error." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-char val) (if com (vip-execute-com 'vip-forward-char val com)))) (defun vip-backward-char (arg) "Move point left ARG characters (right if ARG negative). On reaching beginning of buffer, stop and signal error." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (backward-char val) (if com (vip-execute-com 'vip-backward-char val com)))) ;; word command (defun vip-forward-word (arg) "Forward word." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-word val) (skip-chars-forward " \t\n") (if com (progn (if (eq (abs com) ?c) (progn (backward-word 1) (forward-word 1))) (if (memq com '(?d ?y)) (progn (backward-word 1) (forward-word 1) (skip-chars-forward " \t"))) (vip-execute-com 'vip-forward-word val com))))) (defun vip-end-of-word (arg) "Move point to end of current word." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-char) (forward-word val) (backward-char) (if com (progn (forward-char) (vip-execute-com 'vip-end-of-word val com))))) (defun vip-backward-word (arg) "Backward word." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (backward-word val) (if com (vip-execute-com 'vip-backward-word val com)))) (defun vip-forward-Word (arg) "Forward word delimited by white character." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (re-search-forward "[^ \t\n]*[ \t\n]+" nil t val) (if com (progn (if (eq (abs com) ?c) (progn (backward-word 1) (forward-word 1))) (if (memq com '(?d ?y)) (progn (backward-word 1) (forward-word 1) (skip-chars-forward " \t"))) (vip-execute-com 'vip-forward-Word val com))))) (defun vip-end-of-Word (arg) "Move forward to end of word delimited by white character." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-char) (if (re-search-forward "[^ \t\n]+" nil t val) (backward-char)) (if com (progn (forward-char) (vip-execute-com 'vip-end-of-Word val com))))) (defun vip-backward-Word (arg) "Backward word delimited by white character." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (if (re-search-backward "[ \t\n]+[^ \t\n]+" nil t val) (forward-char) (goto-char (point-min))) (if com (vip-execute-com 'vip-backward-Word val com)))) (defun vip-beginning-of-line (arg) "Go to beginning of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (beginning-of-line val) (if com (vip-execute-com 'vip-beginning-of-line val com)))) (defun vip-bol-and-skip-white (arg) "Beginning of line at first non-white character." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (back-to-indentation) (if com (vip-execute-com 'vip-bol-and-skip-white val com)))) (defun vip-goto-eol (arg) "Go to end of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (end-of-line val) (if com (vip-execute-com 'vip-goto-eol val com)))) (defun vip-next-line (arg) "Go to next line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (line-move val) (setq this-command 'next-line) (if com (vip-execute-com 'vip-next-line val com)))) (defun vip-next-line-at-bol (arg) "Next line at beginning of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (next-line val) (back-to-indentation) (if com (vip-execute-com 'vip-next-line-at-bol val com)))) (defun vip-previous-line (arg) "Go to previous line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (next-line (- val)) (setq this-command 'previous-line) (if com (vip-execute-com 'vip-previous-line val com)))) (defun vip-previous-line-at-bol (arg) "Previous line at beginning of line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (next-line (- val)) (back-to-indentation) (if com (vip-execute-com 'vip-previous-line val com)))) (defun vip-change-to-eol (arg) "Change to end of line." (interactive "P") (vip-goto-eol (cons arg ?c))) (defun vip-kill-line (arg) "Delete line." (interactive "P") (vip-goto-eol (cons arg ?d))) ;; moving around (defun vip-goto-line (arg) "Go to ARG's line. Without ARG go to end of buffer." (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getCom arg))) (vip-move-marker-locally vip-com-point (point)) (set-mark (point)) (if (null val) (goto-char (point-max)) (goto-char (point-min)) (forward-line (1- val))) (back-to-indentation) (if com (vip-execute-com 'vip-goto-line val com)))) (defun vip-find-char (arg char forward offset) "Find ARG's occurrence of CHAR on the current line. If FORWARD then search is forward, otherwise backward. OFFSET is used to adjust point after search." (let ((arg (if forward arg (- arg))) point) (save-excursion (save-restriction (if (> arg 0) (narrow-to-region ;; forward search begins here (if (eolp) (error "") (point)) ;; forward search ends here (progn (next-line 1) (beginning-of-line) (point))) (narrow-to-region ;; backward search begins from here (if (bolp) (error "") (point)) ;; backward search ends here (progn (beginning-of-line) (point)))) ;; if arg > 0, point is forwarded before search. (if (> arg 0) (goto-char (1+ (point-min))) (goto-char (point-max))) (let ((case-fold-search nil)) (search-forward (char-to-string char) nil 0 arg)) (setq point (point)) (if (or (and (> arg 0) (eq point (point-max))) (and (< arg 0) (eq point (point-min)))) (error "")))) (goto-char (+ point (if (> arg 0) (if offset -2 -1) (if offset 1 0)))))) (defun vip-find-char-forward (arg) "Find char on the line. If called interactively read the char to find from the terminal, and if called from vip-repeat, the char last used is used. This behaviour is controlled by the sign of prefix numeric value." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (> val 0) ;; this means that the function was called interactively (setq vip-f-char (read-char) vip-f-forward t vip-f-offset nil) (setq val (- val))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val (if (> (vip-p-val arg) 0) vip-f-char vip-F-char) t nil) (setq val (- val)) (if com (progn (setq vip-F-char vip-f-char);; set new vip-F-char (forward-char) (vip-execute-com 'vip-find-char-forward val com))))) (defun vip-goto-char-forward (arg) "Go up to char ARG forward on line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (> val 0) ;; this means that the function was called interactively (setq vip-f-char (read-char) vip-f-forward t vip-f-offset t) (setq val (- val))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val (if (> (vip-p-val arg) 0) vip-f-char vip-F-char) t t) (setq val (- val)) (if com (progn (setq vip-F-char vip-f-char);; set new vip-F-char (forward-char) (vip-execute-com 'vip-goto-char-forward val com))))) (defun vip-find-char-backward (arg) "Find char ARG on line backward." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (> val 0) ;; this means that the function was called interactively (setq vip-f-char (read-char) vip-f-forward nil vip-f-offset nil) (setq val (- val))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val (if (> (vip-p-val arg) 0) vip-f-char vip-F-char) nil nil) (setq val (- val)) (if com (progn (setq vip-F-char vip-f-char);; set new vip-F-char (vip-execute-com 'vip-find-char-backward val com))))) (defun vip-goto-char-backward (arg) "Go up to char ARG backward on line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (> val 0) ;; this means that the function was called interactively (setq vip-f-char (read-char) vip-f-forward nil vip-f-offset t) (setq val (- val))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val (if (> (vip-p-val arg) 0) vip-f-char vip-F-char) nil t) (setq val (- val)) (if com (progn (setq vip-F-char vip-f-char);; set new vip-F-char (vip-execute-com 'vip-goto-char-backward val com))))) (defun vip-repeat-find (arg) "Repeat previous find command." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val vip-f-char vip-f-forward vip-f-offset) (if com (progn (if vip-f-forward (forward-char)) (vip-execute-com 'vip-repeat-find val com))))) (defun vip-repeat-find-opposite (arg) "Repeat previous find command in the opposite direction." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (vip-find-char val vip-f-char (not vip-f-forward) vip-f-offset) (if com (progn (if vip-f-forward (forward-char)) (vip-execute-com 'vip-repeat-find-opposite val com))))) ;; window scrolling etc. (defun vip-other-window (arg) "Switch to other window." (interactive "p") (other-window arg) (or (not (eq vip-current-mode 'emacs-mode)) (string= (buffer-name (current-buffer)) " *Minibuf-1*") (vip-change-mode-to-vi))) (defun vip-window-top (arg) "Go to home window line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (move-to-window-line (1- val)) (if com (vip-execute-com 'vip-window-top val com)))) (defun vip-window-middle (arg) "Go to middle window line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (move-to-window-line (+ (/ (1- (window-height)) 2) (1- val))) (if com (vip-execute-com 'vip-window-middle val com)))) (defun vip-window-bottom (arg) "Go to last window line." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (move-to-window-line (- val)) (if com (vip-execute-com 'vip-window-bottom val com)))) (defun vip-line-to-top (arg) "Put current line on the home line." (interactive "p") (recenter (1- arg))) (defun vip-line-to-middle (arg) "Put current line on the middle line." (interactive "p") (recenter (+ (1- arg) (/ (1- (window-height)) 2)))) (defun vip-line-to-bottom (arg) "Put current line on the last line." (interactive "p") (recenter (- (window-height) (1+ arg)))) ;; paren match (defun vip-paren-match (arg) "Go to the matching parenthesis." (interactive "P") (let ((com (vip-getcom arg))) (if (numberp arg) (if (or (> arg 99) (< arg 1)) (error "Prefix must be between 1 and 99.") (goto-char (if (> (point-max) 80000) (* (/ (point-max) 100) arg) (/ (* (point-max) arg) 100))) (back-to-indentation)) (cond ((looking-at "[\(\[{]") (if com (vip-move-marker-locally vip-com-point (point))) (forward-sexp 1) (if com (vip-execute-com 'vip-paren-match nil com) (backward-char))) ((looking-at "[])}]") (forward-char) (if com (vip-move-marker-locally vip-com-point (point))) (backward-sexp 1) (if com (vip-execute-com 'vip-paren-match nil com))) (t (error "")))))) ;; sentence and paragraph (defun vip-forward-sentence (arg) "Forward sentence." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-sentence val) (if com (vip-execute-com 'vip-forward-sentence nil com)))) (defun vip-backward-sentence (arg) "Backward sentence." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (backward-sentence val) (if com (vip-execute-com 'vip-backward-sentence nil com)))) (defun vip-forward-paragraph (arg) "Forward paragraph." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (forward-paragraph val) (if com (vip-execute-com 'vip-forward-paragraph nil com)))) (defun vip-backward-paragraph (arg) "Backward paragraph." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getCom arg))) (if com (vip-move-marker-locally vip-com-point (point))) (backward-paragraph val) (if com (vip-execute-com 'vip-backward-paragraph nil com)))) ;; scrolling (defun vip-scroll (arg) "Scroll to next screen." (interactive "p") (if (> arg 0) (while (> arg 0) (scroll-up) (setq arg (1- arg))) (while (> 0 arg) (scroll-down) (setq arg (1+ arg))))) (defun vip-scroll-back (arg) "Scroll to previous screen." (interactive "p") (vip-scroll (- arg))) (defun vip-scroll-down (arg) "Scroll up half screen." (interactive "P") (if (null arg) (scroll-down (/ (window-height) 2)) (scroll-down arg))) (defun vip-scroll-down-one (arg) "Scroll up one line." (interactive "p") (scroll-down arg)) (defun vip-scroll-up (arg) "Scroll down half screen." (interactive "P") (if (null arg) (scroll-up (/ (window-height) 2)) (scroll-up arg))) (defun vip-scroll-up-one (arg) "Scroll down one line." (interactive "p") (scroll-up arg)) ;; splitting window (defun vip-buffer-in-two-windows () "Show current buffer in two windows." (interactive) (delete-other-windows) (split-window-vertically nil)) ;; searching (defun vip-search-forward (arg) "Search a string forward. ARG is used to find the ARG's occurrence of the string. Default is vanilla search. Search mode can be toggled by giving null search string." (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getcom arg))) (setq vip-s-forward t vip-s-string (if vip-re-search (vip-read-string "RE-/") (vip-read-string "/" nil t))) (if (string= vip-s-string "") (progn (setq vip-re-search (not vip-re-search)) (message "Search mode changed to %s search." (if vip-re-search "regular expression" "vanilla"))) (vip-search vip-s-string t val) (if com (progn (vip-move-marker-locally vip-com-point (mark 'force)) (vip-execute-com 'vip-search-next val com)))))) (defun vip-search-backward (arg) "Search a string backward. ARG is used to find the ARG's occurrence of the string. Default is vanilla search. Search mode can be toggled by giving null search string." (interactive "P") (let ((val (vip-P-val arg)) (com (vip-getcom arg))) (setq vip-s-forward nil vip-s-string (vip-read-string (if vip-re-search "RE-?" "?") nil t)) (if (string= vip-s-string "") (progn (setq vip-re-search (not vip-re-search)) (message "Search mode changed to %s search." (if vip-re-search "regular expression" "vanilla"))) (vip-search vip-s-string nil val) (if com (progn (vip-move-marker-locally vip-com-point (mark 'force)) (vip-execute-com 'vip-search-next val com)))))) (defun vip-search (string forward arg &optional no-offset init-point) "(STRING FORWARD COUNT &optional NO-OFFSET) Search COUNT's occurrence of STRING. Search will be forward if FORWARD, otherwise backward." (let ((val (vip-p-val arg)) (com (vip-getcom arg)) (null-arg (null (vip-P-val arg))) (offset (not no-offset)) (case-fold-search vip-case-fold-search) (start-point (or init-point (point)))) (if forward (condition-case conditions (progn (if (and offset (not (eobp))) (forward-char)) (if vip-re-search (progn (re-search-forward string nil nil val) (re-search-backward string)) (search-forward string nil nil val) (search-backward string)) (push-mark start-point)) (search-failed (if (and null-arg vip-search-wrap-around) (progn (goto-char (point-min)) (vip-search string forward (cons 1 com) t start-point)) (goto-char start-point) (signal 'search-failed (cdr conditions))))) (condition-case conditions (progn (if vip-re-search (re-search-backward string nil nil val) (search-backward string nil nil val)) (push-mark start-point)) (search-failed (if (and null-arg vip-search-wrap-around) (progn (goto-char (point-max)) (vip-search string forward (cons 1 com) t start-point)) (goto-char start-point) (signal 'search-failed (cdr conditions)))))))) (defun vip-search-next (arg) "Repeat previous search." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (null vip-s-string) (error "No previous search string.")) (vip-search vip-s-string vip-s-forward arg) (if com (vip-execute-com 'vip-search-next val com)))) (defun vip-search-Next (arg) "Repeat previous search in the reverse direction." (interactive "P") (let ((val (vip-p-val arg)) (com (vip-getcom arg))) (if (null vip-s-string) (error "No previous search string.")) (vip-search vip-s-string (not vip-s-forward) arg) (if com (vip-execute-com 'vip-search-Next val com)))) ;; visiting and killing files, buffers (defun vip-switch-to-buffer () "Switch to buffer in the current window." (interactive) (let (buffer) (setq buffer (vip-read-buffer (format "switch to buffer \(%s\): " (buffer-name (other-buffer (current-buffer)))))) (switch-to-buffer buffer) (vip-change-mode-to-vi))) (defun vip-switch-to-buffer-other-window () "Switch to buffer in another window." (interactive) (let (buffer) (setq buffer (vip-read-buffer (format "Switch to buffer \(%s\): " (buffer-name (other-buffer (current-buffer)))))) (switch-to-buffer-other-window buffer) (vip-change-mode-to-vi))) (defun vip-kill-buffer () "Kill a buffer." (interactive) (let (buffer buffer-name) (setq buffer-name (vip-read-buffer (format "Kill buffer \(%s\): " (buffer-name (current-buffer))))) (setq buffer (if (null buffer-name) (current-buffer) (get-buffer buffer-name))) (if (null buffer) (error "Buffer %s nonexistent." buffer-name)) (if (or (not (buffer-modified-p buffer)) (y-or-n-p "Buffer is modified, are you sure? ")) (kill-buffer buffer) (error "Buffer not killed.")))) (defun vip-read-file-name (prompt) (let ((vip-vi-mode nil) (vip-insert-mode nil)) (read-file-name prompt))) (defun vip-read-buffer (buffer) (let ((vip-vi-mode nil) (vip-insert-mode nil)) (read-buffer buffer))) (defun vip-find-file () "Visit file in the current window." (interactive) (let (file) (setq file (vip-read-file-name "visit file: ")) (switch-to-buffer (find-file-noselect file)) (vip-change-mode-to-vi))) (defun vip-find-file-other-window () "Visit file in another window." (interactive) (let (file) (setq file (vip-read-file-name "Visit file: ")) (switch-to-buffer-other-window (find-file-noselect file)) (vip-change-mode-to-vi))) (defun vip-info-on-file () "Give information of the file associated to the current buffer." (interactive) (message "\"%s\" line %d of %d" (if (buffer-file-name) (buffer-file-name) "") (1+ (count-lines (point-min) (save-excursion (beginning-of-line) (point)))) (1+ (count-lines (point-min) (point-max))))) ;; yank and pop (defun vip-yank (text) "yank TEXT silently." (save-excursion (vip-push-mark-silent (point)) (insert text) (exchange-point-and-mark)) (skip-chars-forward " \t")) (defun vip-put-back (arg) "Put back after point/below line." (interactive "P") (let ((val (vip-p-val arg)) (text (if vip-use-register (if (and (<= ?1 vip-use-register) (<= vip-use-register ?9)) (current-kill (- vip-use-register ?1) 'do-not-rotate) (get-register vip-use-register)) (current-kill 0)))) (if (null text) (if vip-use-register (let ((reg vip-use-register)) (setq vip-use-register nil) (error "Nothing in register %c" reg)) (error ""))) (setq vip-use-register nil) (if (vip-end-with-a-newline-p text) (progn (next-line 1) (beginning-of-line)) (if (and (not (eolp)) (not (eobp))) (forward-char))) (setq vip-d-com (list 'vip-put-back val nil vip-use-register)) (vip-loop val (vip-yank text)))) (defun vip-Put-back (arg) "Put back at point/above line." (interactive "P") (let ((val (vip-p-val arg)) (text (if vip-use-register (if (and (<= ?1 vip-use-register) (<= vip-use-register ?9)) (current-kill (- vip-use-register ?1) 'do-not-rotate) (get-register vip-use-register)) (current-kill 0)))) (if (null text) (if vip-use-register (let ((reg vip-use-register)) (setq vip-use-register nil) (error "Nothing in register %c" reg)) (error ""))) (setq vip-use-register nil) (if (vip-end-with-a-newline-p text) (beginning-of-line)) (setq vip-d-com (list 'vip-Put-back val nil vip-use-register)) (vip-loop val (vip-yank text)))) (defun vip-delete-char (arg) "Delete character." (interactive "P") (let ((val (vip-p-val arg))) (setq vip-d-com (list 'vip-delete-char val nil)) (if vip-use-register (progn (if (and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (point) (- (point) val)) (copy-to-register vip-use-register (point) (- (point) val) nil)) (setq vip-use-register nil))) (delete-char val t))) (defun vip-delete-backward-char (arg) "Delete previous character." (interactive "P") (let ((val (vip-p-val arg)) (skk-mode (if (boundp 'skk-mode) skk-mode nil))) (setq vip-d-com (list 'vip-delete-backward-char val nil)) (if vip-use-register (progn (if (and (<= ?A vip-use-register) (<= vip-use-register ?Z)) (vip-append-to-register (+ vip-use-register 32) (point) (+ (point) val)) (copy-to-register vip-use-register (point) (+ (point) val) nil)) (setq vip-use-register nil))) (if skk-mode (cond ((skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean)) ((eq skk-henkan-mode 'active) (delete-backward-char val t) (skk-kakutei)) ((and (eq skk-henkan-mode 'on) (>= skk-henkan-start-point (point))) (skk-kakutei)) (t (delete-backward-char val t))) (delete-backward-char val t)))) ;; join lines. (defun vip-join-lines (arg) "Join this line to next, if ARG is nil. Otherwise, join ARG lines" (interactive "*P") (let ((val (vip-P-val arg))) (setq vip-d-com (list 'vip-join-lines val nil)) (vip-loop (if (null val) 1 (1- val)) (progn (end-of-line) (if (not (eobp)) (progn (forward-line 1) (delete-region (point) (1- (point))) (fixup-whitespace))))))) ;; making small changes (defun vip-change (beg end) (setq c-string (vip-read-string (format "%s => " (buffer-substring beg end)) nil t)) (vip-change-subr beg end)) (defun vip-change-subr (beg end) (if vip-use-register (progn (copy-to-register vip-use-register beg end nil) (setq vip-use-register nil))) (kill-region beg end) (setq this-command 'vip-change) (insert c-string)) ;; query replace (defun vip-query-replace () "Query replace. If you supply null string as the string to be replaced, the query replace mode will toggle between string replace and regexp replace." (interactive) (let (str) (setq str (if vip-re-query-replace (vip-read-string "Query replace regexp: ") (vip-read-string "Query replace: " nil t))) (if (string= str "") (progn (setq vip-re-query-replace (not vip-re-query-replace)) (message "Query replace mode changed to %s." (if vip-re-query-replace "regexp replace" "string replace"))) (if vip-re-query-replace (query-replace-regexp str (vip-read-string (format "Query replace regexp \"%s\" with: " str))) (query-replace str (vip-read-string (format "Query replace \"%s\" with: " str) nil t)))))) ;; marking (defun vip-mark-beginning-of-buffer () (interactive) (set-mark (point)) (goto-char (point-min)) (exchange-point-and-mark) (message "mark set at the beginning of buffer")) (defun vip-mark-end-of-buffer () (interactive) (set-mark (point)) (goto-char (point-max)) (exchange-point-and-mark) (message "mark set at the end of buffer")) (defun vip-mark-point (char) (interactive "c") (cond ((and (<= ?a char) (<= char ?z)) (point-to-register (- char (- ?a ?\C-a)) nil)) ((eq char ?<) (vip-mark-beginning-of-buffer)) ((eq char ?>) (vip-mark-end-of-buffer)) ((eq char ?.) (push-mark)) ((eq char ?,) (set-mark-command 1)) ((eq char ?D) (mark-defun)) (t (error "")))) (defun vip-goto-mark (arg) "Go to mark." (interactive "P") (let ((char (read-char)) (com (vip-getcom arg))) (vip-goto-mark-subr char com nil))) (defun vip-goto-mark-and-skip-white (arg) "Go to mark and skip to first non-white on line." (interactive "P") (let ((char (read-char)) (com (vip-getCom arg))) (vip-goto-mark-subr char com t))) (defun vip-goto-mark-subr (char com skip-white) (cond ((and (<= ?a char) (<= char ?z)) (let ((buff (current-buffer))) (if com (vip-move-marker-locally vip-com-point (point))) (goto-char (register-to-point (- char (- ?a ?\C-a)))) (if skip-white (back-to-indentation)) (vip-change-mode-to-vi) (if com (if (eq buff (current-buffer)) (vip-execute-com (if skip-white 'vip-goto-mark-and-skip-white 'vip-goto-mark) nil com) (switch-to-buffer buff) (goto-char vip-com-point) (vip-change-mode-to-vi) (error ""))))) ((and (not skip-white) (eq char ?`)) (if com (vip-move-marker-locally vip-com-point (point))) (exchange-point-and-mark) (if com (vip-execute-com 'vip-goto-mark nil com))) ((and skip-white (eq char ?')) (if com (vip-move-marker-locally vip-com-point (point))) (exchange-point-and-mark) (back-to-indentation) (if com (vip-execute-com 'vip-goto-mark-and-skip-white nil com))) (t (error "")))) (defun vip-exchange-point-and-mark () (interactive) (exchange-point-and-mark) (back-to-indentation)) (defun vip-keyboard-quit () "Abort partially formed or running command." (interactive) (setq vip-use-register nil) (keyboard-quit)) (defun vip-ctl-c-equivalent (arg) "Emulate C-c in Emacs mode." (interactive "P") (vip-ctl-key-equivalent "\C-c" arg)) (defun vip-ctl-x-equivalent (arg) "Emulate C-x in Emacs mode." (interactive "P") (vip-ctl-key-equivalent "\C-x" arg)) (defun vip-ctl-key-equivalent (key arg) (let ((char (read-char))) (if (and (<= ?A char) (<= char ?Z)) (setq char (- char (- ?A ?\C-a)))) (vip-escape-to-emacs arg (list (aref key 0) char)))) ;; commands in insertion mode (defun vip-delete-backward-word (arg) "Delete previous word." (interactive "p") (save-excursion (set-mark (point)) (backward-word arg) (delete-region (point) (mark 'force)))) ;; key bindings (set 'vip-vi-mode-map (make-sparse-keymap)) (define-key vip-vi-mode-map "\C-a" 'beginning-of-line) (define-key vip-vi-mode-map "\C-b" 'vip-scroll-back) (define-key vip-vi-mode-map "\C-c" 'vip-ctl-c) (define-key vip-vi-mode-map "\C-d" 'vip-scroll-up) (define-key vip-vi-mode-map "\C-e" 'vip-scroll-up-one) (define-key vip-vi-mode-map "\C-f" 'vip-scroll) (define-key vip-vi-mode-map "\C-g" 'vip-keyboard-quit) (define-key vip-vi-mode-map "\C-h" 'help-command) (define-key vip-vi-mode-map "\C-m" 'vip-scroll-back) (define-key vip-vi-mode-map "\C-n" 'vip-other-window) (define-key vip-vi-mode-map "\C-o" 'vip-open-line-at-point) (define-key vip-vi-mode-map "\C-u" 'vip-scroll-down) (define-key vip-vi-mode-map "\C-x" 'vip-ctl-x) (define-key vip-vi-mode-map "\C-y" 'vip-scroll-down-one) (define-key vip-vi-mode-map "\C-z" 'vip-change-mode-to-emacs) (define-key vip-vi-mode-map "\e" 'vip-ESC) (define-key vip-vi-mode-map " " 'vip-scroll) (define-key vip-vi-mode-map "!" 'vip-command-argument) (define-key vip-vi-mode-map "\"" 'vip-command-argument) (define-key vip-vi-mode-map "#" 'vip-command-argument) (define-key vip-vi-mode-map "$" 'vip-goto-eol) (define-key vip-vi-mode-map "%" 'vip-paren-match) (define-key vip-vi-mode-map "&" 'vip-nil) (define-key vip-vi-mode-map "'" 'vip-goto-mark-and-skip-white) (define-key vip-vi-mode-map "(" 'vip-backward-sentence) (define-key vip-vi-mode-map ")" 'vip-forward-sentence) (define-key vip-vi-mode-map "*" 'call-last-kbd-macro) (define-key vip-vi-mode-map "+" 'vip-next-line-at-bol) (define-key vip-vi-mode-map "," 'vip-repeat-find-opposite) (define-key vip-vi-mode-map "-" 'vip-previous-line-at-bol) (define-key vip-vi-mode-map "." 'vip-repeat) (define-key vip-vi-mode-map "/" 'vip-search-forward) (define-key vip-vi-mode-map "0" 'vip-beginning-of-line) (define-key vip-vi-mode-map "1" 'vip-digit-argument) (define-key vip-vi-mode-map "2" 'vip-digit-argument) (define-key vip-vi-mode-map "3" 'vip-digit-argument) (define-key vip-vi-mode-map "4" 'vip-digit-argument) (define-key vip-vi-mode-map "5" 'vip-digit-argument) (define-key vip-vi-mode-map "6" 'vip-digit-argument) (define-key vip-vi-mode-map "7" 'vip-digit-argument) (define-key vip-vi-mode-map "8" 'vip-digit-argument) (define-key vip-vi-mode-map "9" 'vip-digit-argument) (define-key vip-vi-mode-map ":" 'vip-ex) (define-key vip-vi-mode-map ";" 'vip-repeat-find) (define-key vip-vi-mode-map "<" 'vip-command-argument) (define-key vip-vi-mode-map "=" 'vip-command-argument) (define-key vip-vi-mode-map ">" 'vip-command-argument) (define-key vip-vi-mode-map "?" 'vip-search-backward) (define-key vip-vi-mode-map "@" 'vip-nil) (define-key vip-vi-mode-map "A" 'vip-Append) (define-key vip-vi-mode-map "B" 'vip-backward-Word) (define-key vip-vi-mode-map "C" 'vip-ctl-c-equivalent) (define-key vip-vi-mode-map "D" 'vip-kill-line) (define-key vip-vi-mode-map "E" 'vip-end-of-Word) (define-key vip-vi-mode-map "F" 'vip-find-char-backward) (define-key vip-vi-mode-map "G" 'vip-goto-line) (define-key vip-vi-mode-map "H" 'vip-window-top) (define-key vip-vi-mode-map "I" 'vip-Insert) (define-key vip-vi-mode-map "J" 'vip-join-lines) (define-key vip-vi-mode-map "K" 'vip-kill-buffer) (define-key vip-vi-mode-map "L" 'vip-window-bottom) (define-key vip-vi-mode-map "M" 'vip-window-middle) (define-key vip-vi-mode-map "N" 'vip-search-Next) (define-key vip-vi-mode-map "O" 'vip-Open-line) (define-key vip-vi-mode-map "P" 'vip-Put-back) (define-key vip-vi-mode-map "Q" 'vip-query-replace) (define-key vip-vi-mode-map "R" 'vip-replace-string) (define-key vip-vi-mode-map "S" 'vip-switch-to-buffer-other-window) (define-key vip-vi-mode-map "T" 'vip-goto-char-backward) (define-key vip-vi-mode-map "U" 'vip-nil) (define-key vip-vi-mode-map "V" 'vip-find-file-other-window) (define-key vip-vi-mode-map "W" 'vip-forward-Word) (define-key vip-vi-mode-map "X" 'vip-ctl-x-equivalent) (define-key vip-vi-mode-map "Y" 'vip-yank-line) (define-key vip-vi-mode-map "ZZ" 'save-buffers-kill-emacs) (define-key vip-vi-mode-map "[" 'vip-nil) (define-key vip-vi-mode-map "\\" 'vip-escape-to-emacs) (define-key vip-vi-mode-map "]" 'vip-nil) (define-key vip-vi-mode-map "^" 'vip-bol-and-skip-white) (define-key vip-vi-mode-map "_" 'vip-nil) (define-key vip-vi-mode-map "`" 'vip-goto-mark) (define-key vip-vi-mode-map "a" 'vip-append) (define-key vip-vi-mode-map "b" 'vip-backward-word) (define-key vip-vi-mode-map "c" 'vip-command-argument) (define-key vip-vi-mode-map "d" 'vip-command-argument) (define-key vip-vi-mode-map "e" 'vip-end-of-word) (define-key vip-vi-mode-map "f" 'vip-find-char-forward) (define-key vip-vi-mode-map "g" 'vip-info-on-file) (define-key vip-vi-mode-map "h" 'vip-backward-char) (define-key vip-vi-mode-map "i" 'vip-insert) (define-key vip-vi-mode-map "j" 'vip-next-line) (define-key vip-vi-mode-map "k" 'vip-previous-line) (define-key vip-vi-mode-map "l" 'vip-forward-char) (define-key vip-vi-mode-map "m" 'vip-mark-point) (define-key vip-vi-mode-map "n" 'vip-search-next) (define-key vip-vi-mode-map "o" 'vip-open-line) (define-key vip-vi-mode-map "p" 'vip-put-back) (define-key vip-vi-mode-map "q" 'vip-nil) (define-key vip-vi-mode-map "r" 'vip-replace-char) (define-key vip-vi-mode-map "s" 'vip-switch-to-buffer) (define-key vip-vi-mode-map "t" 'vip-goto-char-forward) (define-key vip-vi-mode-map "u" 'vip-undo) (define-key vip-vi-mode-map "v" 'vip-find-file) (define-key vip-vi-mode-map "w" 'vip-forward-word) (define-key vip-vi-mode-map "x" 'vip-delete-char) (define-key vip-vi-mode-map "y" 'vip-command-argument) (define-key vip-vi-mode-map "zH" 'vip-line-to-top) (define-key vip-vi-mode-map "zM" 'vip-line-to-middle) (define-key vip-vi-mode-map "zL" 'vip-line-to-bottom) (define-key vip-vi-mode-map "z\C-m" 'vip-line-to-top) (define-key vip-vi-mode-map "z." 'vip-line-to-middle) (define-key vip-vi-mode-map "z-" 'vip-line-to-bottom) (define-key vip-vi-mode-map "{" 'vip-backward-paragraph) (define-key vip-vi-mode-map "|" 'vip-goto-col) (define-key vip-vi-mode-map "}" 'vip-forward-paragraph) (define-key vip-vi-mode-map "~" 'vip-nil) (define-key vip-vi-mode-map "\177" 'vip-delete-backward-char) (set 'vip-insert-mode-map (make-sparse-keymap)) (define-key vip-insert-mode-map "\e" 'vip-change-mode-to-vi) (define-key vip-insert-mode-map "\C-z" 'vip-ESC) (define-key vip-insert-mode-map "\C-h" (if vip-help-in-insert-mode 'help-command 'vip-delete-backward-char)) (define-key vip-insert-mode-map "\C-w" 'vip-delete-backward-word) (define-key ctl-x-map "3" 'vip-buffer-in-two-windows) (define-key ctl-x-map "\C-i" 'insert-file) (defun vip-version () (interactive) (message "VIP version 3.7 of August 22, 1999")) ;; implement ex commands (defvar ex-token-type nil "type of token. if non-nil, gives type of address. if nil, it is a command.") (defvar ex-token nil "value of token.") (defvar ex-addresses nil "list of ex addresses") (defvar ex-flag nil "flag for ex flag") (defvar ex-buffer nil "name of ex buffer") (defvar ex-count nil "value of ex count") (defvar ex-g-flag nil "flag for global command") (defvar ex-g-variant nil "if t global command is executed on lines not matching ex-g-pat") (defvar ex-reg-exp nil "save reg-exp used in substitute") (defvar ex-repl nil "replace pattern for substitute") (defvar ex-g-pat nil "pattern for global command") (defvar ex-map (make-sparse-keymap) "save commands for mapped keys") (defvar ex-tag nil "save ex tag") (defvar ex-file nil) (defvar ex-variant nil) (defvar ex-offset nil) (defvar ex-append nil) (defun vip-nil () (interactive) (error "")) (defun vip-looking-back (str) "returns t if looking back reg-exp STR before point." (and (save-excursion (re-search-backward str nil t)) (eq (point) (match-end 0)))) (defun vip-check-sub (str) "check if ex-token is an initial segment of STR" (let ((length (length ex-token))) (if (and (<= length (length str)) (string= ex-token (substring str 0 length))) (setq ex-token str) (setq ex-token-type "non-command")))) (defun vip-get-ex-com-subr () "get a complete ex command" (set-mark (point)) (re-search-forward "[a-z][a-z]*") (setq ex-token-type "command") (setq ex-token (buffer-substring (point) (mark 'force))) (exchange-point-and-mark) (cond ((looking-at "a") (cond ((looking-at "ab") (vip-check-sub "abbreviate")) ((looking-at "ar") (vip-check-sub "args")) (t (vip-check-sub "append")))) ((looking-at "[bh]") (setq ex-token-type "non-command")) ((looking-at "c") (if (looking-at "co") (vip-check-sub "copy") (vip-check-sub "change"))) ((looking-at "d") (vip-check-sub "delete")) ((looking-at "e") (if (looking-at "ex") (vip-check-sub "ex") (vip-check-sub "edit"))) ((looking-at "f") (vip-check-sub "file")) ((looking-at "g") (vip-check-sub "global")) ((looking-at "i") (vip-check-sub "insert")) ((looking-at "j") (vip-check-sub "join")) ((looking-at "l") (vip-check-sub "list")) ((looking-at "m") (cond ((looking-at "map") (vip-check-sub "map")) ((looking-at "mar") (vip-check-sub "mark")) (t (vip-check-sub "move")))) ((looking-at "n") (if (looking-at "nu") (vip-check-sub "number") (vip-check-sub "next"))) ((looking-at "o") (vip-check-sub "open")) ((looking-at "p") (cond ((looking-at "pre") (vip-check-sub "preserve")) ((looking-at "pu") (vip-check-sub "put")) (t (vip-check-sub "print")))) ((looking-at "q") (vip-check-sub "quit")) ((looking-at "r") (cond ((looking-at "rec") (vip-check-sub "recover")) ((looking-at "rew") (vip-check-sub "rewind")) (t (vip-check-sub "read")))) ((looking-at "s") (cond ((looking-at "se") (vip-check-sub "set")) ((looking-at "sh") (vip-check-sub "shell")) ((looking-at "so") (vip-check-sub "source")) ((looking-at "st") (vip-check-sub "stop")) (t (vip-check-sub "substitute")))) ((looking-at "t") (if (looking-at "ta") (vip-check-sub "tag") (vip-check-sub "t"))) ((looking-at "u") (cond ((looking-at "una") (vip-check-sub "unabbreviate")) ((looking-at "unm") (vip-check-sub "unmap")) (t (vip-check-sub "undo")))) ((looking-at "v") (cond ((looking-at "ve") (vip-check-sub "version")) ((looking-at "vi") (vip-check-sub "visual")) (t (vip-check-sub "v")))) ((looking-at "w") (if (looking-at "wq") (vip-check-sub "wq") (vip-check-sub "write"))) ((looking-at "x") (vip-check-sub "xit")) ((looking-at "y") (vip-check-sub "yank")) ((looking-at "z") (vip-check-sub "z"))) (exchange-point-and-mark)) (defun vip-get-ex-token () "get an ex-token which is either an address or a command. a token has type \(command, address, end-mark\) and value." (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (cond ((looking-at "[k#]") (setq ex-token-type "command") (setq ex-token (char-to-string (following-char))) (forward-char 1)) ((looking-at "[a-z]") (vip-get-ex-com-subr)) ((looking-at "\\.") (forward-char 1) (setq ex-token-type "dot")) ((looking-at "[0-9]") (set-mark (point)) (re-search-forward "[0-9]*") (setq ex-token-type (cond ((string= ex-token-type "plus") "add-number") ((string= ex-token-type "minus") "sub-number") (t "abs-number"))) (setq ex-token (string-to-number (buffer-substring (point) (mark 'force))))) ((looking-at "\\$") (forward-char 1) (setq ex-token-type "end")) ((looking-at "%") (forward-char 1) (setq ex-token-type "whole")) ((looking-at "+") (cond ((or (looking-at "+[-+]") (looking-at "+[\n|]")) (forward-char 1) (insert "1") (backward-char 1) (setq ex-token-type "plus")) ((looking-at "+[0-9]") (forward-char 1) (setq ex-token-type "plus")) (t (error "Badly formed address")))) ((looking-at "-") (cond ((or (looking-at "-[-+]") (looking-at "-[\n|]")) (forward-char 1) (insert "1") (backward-char 1) (setq ex-token-type "minus")) ((looking-at "-[0-9]") (forward-char 1) (setq ex-token-type "minus")) (t (error "Badly formed address")))) ((looking-at "/") (forward-char 1) (set-mark (point)) (let ((cont t)) (while (and (not (eolp)) cont) ;;(re-search-forward "[^/]*/") (re-search-forward "[^/]*\\(/\\|\n\\)") (if (not (vip-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\/")) (setq cont nil)))) (backward-char 1) (setq ex-token (buffer-substring (point) (mark 'force))) (if (looking-at "/") (forward-char 1)) (setq ex-token-type "search-forward")) ((looking-at "\\?") (forward-char 1) (set-mark (point)) (let ((cont t)) (while (and (not (eolp)) cont) ;;(re-search-forward "[^\\?]*\\?") (re-search-forward "[^\\?]*\\(\\?\\|\n\\)") (if (not (vip-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\\\?")) (setq cont nil)) (backward-char 1) (if (not (looking-at "\n")) (forward-char 1)))) (setq ex-token-type "search-backward") (setq ex-token (buffer-substring (1- (point)) (mark 'force)))) ((looking-at ",") (forward-char 1) (setq ex-token-type "comma")) ((looking-at ";") (forward-char 1) (setq ex-token-type "semi-colon")) ((looking-at "[!=><&~]") (setq ex-token-type "command") (setq ex-token (char-to-string (following-char))) (forward-char 1)) ((looking-at "'") (setq ex-token-type "goto-mark") (forward-char 1) (cond ((looking-at "'") (setq ex-token nil)) ((looking-at "[a-z]") (setq ex-token (following-char))) (t (error "Marks are ' and a-z"))) (forward-char 1)) ((looking-at "\n") (setq ex-token-type "end-mark") (setq ex-token "goto")) (t (error "illegal token"))))) (defun vip-ex (&optional string) "ex commands within VIP." (interactive) (or string (setq ex-g-flag nil ex-g-variant nil)) (let ((com-str (or string (vip-read-string ":"))) (address nil) (cont t) (dot (point))) (save-window-excursion (set-buffer (get-buffer-create " *ex-working-space*")) (delete-region (point-min) (point-max)) (insert com-str "\n") (goto-char (point-min))) (setq ex-token-type "") (setq ex-addresses nil) (while cont (vip-get-ex-token) (cond ((or (string= ex-token-type "command") (string= ex-token-type "end-mark")) (if address (setq ex-addresses (cons address ex-addresses))) (cond ((string= ex-token "global") (ex-global nil) (setq cont nil)) ((string= ex-token "v") (ex-global t) (setq cont nil)) (t (vip-execute-ex-command) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (cond ((looking-at "|") (forward-char 1)) ((looking-at "\n") (setq cont nil)) (t (error "Extra character at end of a command"))))))) ((string= ex-token-type "non-command") (error (format "%s: Not an editor command" ex-token))) ((string= ex-token-type "whole") (setq ex-addresses (cons (point-max) (cons (point-min) ex-addresses)))) ((string= ex-token-type "comma") (setq ex-addresses (cons (if (null address) (point) address) ex-addresses))) ((string= ex-token-type "semi-colon") (if address (setq dot address)) (setq ex-addresses (cons (if (null address) (point) address) ex-addresses))) (t (let ((ans (vip-get-ex-address-subr address dot))) (if ans (setq address ans)))))))) (defun vip-get-ex-pat () "get a regular expression and set ex-variant if found" (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "!") (progn (setq ex-g-variant (not ex-g-variant) ex-g-flag (not ex-g-flag)) (forward-char 1) (skip-chars-forward " \t"))) (if (looking-at "/") (progn (forward-char 1) (set-mark (point)) (let ((cont t)) (while (and (not (eolp)) cont) (re-search-forward "[^/]*\\(/\\|\n\\)") ;;(re-search-forward "[^/]*/") (if (not (vip-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\/")) (setq cont nil)))) (setq ex-token (if (= (mark 'force) (point)) "" (buffer-substring (1- (point)) (mark 'force)))) (backward-char 1)) (setq ex-token nil)))) (defun vip-get-ex-command () "get an ex command" (save-window-excursion (set-buffer " *ex-working-space*") (if (looking-at "/") (forward-char 1)) (skip-chars-forward " \t") (cond ((looking-at "[a-z]") (vip-get-ex-com-subr) (if (string= ex-token-type "non-command") (error "%s: not an editor command" ex-token))) ((looking-at "[!=><&~]") (setq ex-token (char-to-string (following-char))) (forward-char 1)) (t (error "Could not find an ex command"))))) (defun vip-get-ex-opt-gc () "get an ex option g or c" (save-window-excursion (set-buffer " *ex-working-space*") (if (looking-at "/") (forward-char 1)) (skip-chars-forward " \t") (cond ((looking-at "g") (setq ex-token "g") (forward-char 1) t) ((looking-at "c") (setq ex-token "c") (forward-char 1) t) (t nil)))) (defun vip-default-ex-addresses (&optional whole-flag) "compute default addresses. whole-flag means whole buffer." (cond ((null ex-addresses) (setq ex-addresses (if whole-flag (cons (point-max) (cons (point-min) nil)) (cons (point) (cons (point) nil))))) ((null (cdr ex-addresses)) (setq ex-addresses (cons (car ex-addresses) ex-addresses))))) (defun vip-get-ex-address () "get an ex-address as a marker and set ex-flag if a flag is found" (let ((address (point-marker)) (cont t)) (setq ex-token "") (setq ex-flag nil) (while cont (vip-get-ex-token) (cond ((string= ex-token-type "command") (if (or (string= ex-token "print") (string= ex-token "list") (string= ex-token "#")) (progn (setq ex-flag t) (setq cont nil)) (error "address expected"))) ((string= ex-token-type "end-mark") (setq cont nil)) ((string= ex-token-type "whole") (error "a trailing address is expected")) ((string= ex-token-type "comma") (error "Extra characters after an address")) (t (let ((ans (vip-get-ex-address-subr address (point-marker)))) (if ans (setq address ans)))))) address)) (defun vip-get-ex-address-subr (old-address dot) "returns an address as a point" (let ((address nil)) (if (null old-address) (setq old-address dot)) (cond ((string= ex-token-type "dot") (setq address dot)) ((string= ex-token-type "add-number") (save-excursion (goto-char old-address) (forward-line (if (= old-address 0) (1- ex-token) ex-token)) (setq address (point-marker)))) ((string= ex-token-type "sub-number") (save-excursion (goto-char old-address) (forward-line (- ex-token)) (setq address (point-marker)))) ((string= ex-token-type "abs-number") (save-excursion (goto-char (point-min)) (if (= ex-token 0) (setq address 0) (forward-line (1- ex-token)) (setq address (point-marker))))) ((string= ex-token-type "end") (setq address (point-max-marker))) ((string= ex-token-type "plus") t);; do nothing ((string= ex-token-type "minus") t);; do nothing ((string= ex-token-type "search-forward") (save-excursion (ex-search-address t) (setq address (point-marker)))) ((string= ex-token-type "search-backward") (save-excursion (ex-search-address nil) (setq address (point-marker)))) ((string= ex-token-type "goto-mark") (save-excursion (if (null ex-token) (exchange-point-and-mark) (goto-char (register-to-point (- ex-token (- ?a ?\C-a))))) (setq address (point-marker))))) address)) (defun ex-search-address (forward) "search pattern and set address" (if (string= ex-token "") (if (null vip-s-string) (error "No previous search string") (setq ex-token vip-s-string)) (setq vip-s-string ex-token)) (if forward (progn (forward-line 1) (re-search-forward ex-token)) (forward-line -1) (re-search-backward ex-token))) (defun vip-get-ex-buffer () "get a buffer name and set ex-count and ex-flag if found" (setq ex-buffer nil) (setq ex-count nil) (setq ex-flag nil) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "[a-zA-Z]") (progn (setq ex-buffer (following-char)) (forward-char 1) (skip-chars-forward " \t"))) (if (looking-at "[0-9]") (progn (set-mark (point)) (re-search-forward "[0-9][0-9]*") (setq ex-count (string-to-number (buffer-substring (point) (mark 'force)))) (skip-chars-forward " \t"))) (if (looking-at "[pl#]") (progn (setq ex-flag t) (forward-char 1))) (if (not (looking-at "[\n|]")) (error "Illegal extra characters")))) (defun vip-get-ex-count () (setq ex-variant nil ex-count nil ex-flag nil) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "!") (progn (setq ex-variant t) (forward-char 1))) (skip-chars-forward " \t") (if (looking-at "[0-9]") (progn (set-mark (point)) (re-search-forward "[0-9][0-9]*") (setq ex-count (string-to-number (buffer-substring (point) (mark 'force)))) (skip-chars-forward " \t"))) (if (looking-at "[pl#]") (progn (setq ex-flag t) (forward-char 1))) (if (not (looking-at "[\n|]")) (error "Illegal extra characters")))) (defun vip-get-ex-file () "get a file name and set ex-variant, ex-append and ex-offset if found" (setq ex-file nil ex-variant nil ex-append nil ex-offset nil) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "!") (progn (setq ex-variant t) (forward-char 1) (skip-chars-forward " \t"))) (if (looking-at ">>") (progn (setq ex-append t ex-variant t) (forward-char 2) (skip-chars-forward " \t"))) (if (looking-at "+") (progn (forward-char 1) (set-mark (point)) (re-search-forward "[ \t\n]") (backward-char 1) (setq ex-offset (buffer-substring (point) (mark 'force))) (forward-char 1) (skip-chars-forward " \t"))) (set-mark (point)) (re-search-forward "[ \t\n]") (backward-char 1) (setq ex-file (buffer-substring (point) (mark 'force))))) (defun vip-execute-ex-command () "execute ex command using the value of addresses." (cond ((string= ex-token "goto") (ex-goto)) ((string= ex-token "copy") (ex-copy nil)) ((string= ex-token "delete") (ex-delete)) ((string= ex-token "edit") (ex-edit)) ((string= ex-token "file") (vip-info-on-file)) ;((string= ex-token "global") (ex-global nil)) ((string= ex-token "join") (ex-line "join")) ((string= ex-token "k") (ex-mark)) ((string= ex-token "mark") (ex-mark)) ((string= ex-token "map") (ex-map)) ((string= ex-token "move") (ex-copy t)) ((string= ex-token "put") (ex-put)) ((string= ex-token "quit") (ex-quit)) ((string= ex-token "read") (ex-read)) ((string= ex-token "set") (ex-set)) ((string= ex-token "shell") (ex-shell)) ((string= ex-token "substitute") (ex-substitute)) ((string= ex-token "stop") (suspend-emacs)) ((string= ex-token "t") (ex-copy nil)) ((string= ex-token "tag") (ex-tag)) ((string= ex-token "undo") (vip-undo)) ((string= ex-token "unmap") (ex-unmap)) ;((string= ex-token "v") (ex-global t)) ((string= ex-token "version") (vip-version)) ((string= ex-token "visual") (ex-edit)) ((string= ex-token "write") (ex-write nil)) ((string= ex-token "wq") (ex-write t)) ((string= ex-token "yank") (ex-yank)) ((string= ex-token "!") (ex-command)) ((string= ex-token "=") (ex-line-no)) ((string= ex-token ">") (ex-line "right")) ((string= ex-token "<") (ex-line "left")) ((string= ex-token "&") (ex-substitute t)) ((string= ex-token "~") (ex-substitute t t)) ((or (string= ex-token "append") (string= ex-token "args") (string= ex-token "change") (string= ex-token "insert") (string= ex-token "open") ) (error "%s: no such command from VIP" ex-token)) ((or (string= ex-token "abbreviate") (string= ex-token "list") (string= ex-token "next") (string= ex-token "print") (string= ex-token "preserve") (string= ex-token "recover") (string= ex-token "rewind") (string= ex-token "source") (string= ex-token "unabbreviate") (string= ex-token "xit") (string= ex-token "z") ) (error "%s: not implemented in VIP" ex-token)) (t (error "%s: Not an editor command" ex-token)))) (defun ex-goto () "ex goto command" (if (null ex-addresses) (setq ex-addresses (cons (point) nil))) (push-mark (point)) (goto-char (car ex-addresses)) (beginning-of-line)) (defun ex-copy (del-flag) "ex copy and move command. DEL-FLAG means delete." (vip-default-ex-addresses) (let ((address (vip-get-ex-address)) (end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (goto-char end) (save-excursion (set-mark beg) (vip-enlarge-region (mark 'force) (point)) (if del-flag (kill-region (point) (mark 'force)) (copy-region-as-kill (point) (mark 'force))) (if ex-flag (progn (with-output-to-temp-buffer "*copy text*" (princ (if (or del-flag ex-g-flag ex-g-variant) (current-kill 0) (buffer-substring (point) (mark 'force))))) (condition-case nil (progn (vip-read-string "[Hit return to continue] ") (save-excursion (kill-buffer "*copy text*"))) (quit (save-excursion (kill-buffer "*copy text*")) (signal 'quit nil)))))) (if (= address 0) (goto-char (point-min)) (goto-char address) (forward-line 1)) (insert (current-kill 0)))) (defun ex-delete () "ex delete" (vip-default-ex-addresses) (vip-get-ex-buffer) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (exchange-point-and-mark) (if ex-count (progn (set-mark (point)) (forward-line (1- ex-count))) (set-mark end)) (vip-enlarge-region (point) (mark 'force)) (if ex-flag ;; show text to be deleted and ask for confirmation (progn (with-output-to-temp-buffer " *delete text*" (princ (buffer-substring (point) (mark 'force)))) (condition-case conditions (vip-read-string "[Hit return to continue] ") (quit (save-excursion (kill-buffer " *delete text*")) (error ""))) (save-excursion (kill-buffer " *delete text*"))) (if ex-buffer (if (and (<= ?A ex-buffer) (<= ex-buffer ?Z)) (vip-append-to-register (+ ex-buffer 32) (point) (mark 'force)) (copy-to-register ex-buffer (point) (mark 'force) nil))) (delete-region (point) (mark 'force)))))) (defun ex-edit () "ex-edit" (vip-get-ex-file) (if (and (not ex-variant) (buffer-modified-p) buffer-file-name) (error "No write since last change \(:e! overrides\)")) (vip-change-mode-to-emacs) (set-buffer (find-file-noselect (concat default-directory ex-file))) (vip-change-mode-to-vi) (goto-char (point-min)) (if ex-offset (progn (save-window-excursion (set-buffer " *ex-working-space*") (delete-region (point-min) (point-max)) (insert ex-offset "\n") (goto-char (point-min))) (goto-char (vip-get-ex-address)) (beginning-of-line)))) (defun ex-global (variant) "ex global command" (if (or ex-g-flag ex-g-variant) (error "Global within global not allowed") (if variant (setq ex-g-flag nil ex-g-variant t) (setq ex-g-flag t ex-g-variant nil))) (vip-get-ex-pat) (if (null ex-token) (error "Missing regular expression for global command")) (if (string= ex-token "") (if (null vip-s-string) (error "No previous search string") (setq ex-g-pat vip-s-string)) (setq ex-g-pat ex-token vip-s-string ex-token)) (if (null ex-addresses) (setq ex-addresses (list (point-max) (point-min)))) (let ((marks nil) (mark-count 0) com-str (end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (exchange-point-and-mark) (let ((cont t) (limit (point-marker))) (exchange-point-and-mark) ;; skip the last line if empty (beginning-of-line) (if (and (eobp) (not (bobp))) (backward-char 1)) (while (and cont (not (bobp)) (>= (point) limit)) (beginning-of-line) (set-mark (point)) (end-of-line) (let ((found (re-search-backward ex-g-pat (mark 'force) t))) (if (or (and ex-g-flag found) (and ex-g-variant (not found))) (progn (end-of-line) (setq mark-count (1+ mark-count)) (setq marks (cons (point-marker) marks))))) (beginning-of-line) (if (bobp) (setq cont nil) (forward-line -1) (end-of-line))))) (save-window-excursion (set-buffer " *ex-working-space*") (setq com-str (buffer-substring (1+ (point)) (1- (point-max))))) (while marks (goto-char (car marks)) ; report progress of execution on a slow machine. ;(message "Executing global command...") ;(if (zerop (% mark-count 10)) ;(message "Executing global command...%d" mark-count)) (vip-ex com-str) (setq mark-count (1- mark-count)) (setq marks (cdr marks))))) ;(message "Executing global command...done"))) (defun ex-line (com) "ex line commands. COM is join, shift-right or shift-left." (vip-default-ex-addresses) (vip-get-ex-count) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses))) point) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (exchange-point-and-mark) (if ex-count (progn (set-mark (point)) (forward-line ex-count))) (if ex-flag ;; show text to be joined and ask for confirmation (progn (with-output-to-temp-buffer " *text*" (princ (buffer-substring (point) (mark 'force)))) (condition-case conditions (progn (vip-read-string "[Hit return to continue] ") (ex-line-subr com (point) (mark 'force))) (quit (ding))) (save-excursion (kill-buffer " *text*"))) (ex-line-subr com (point) (mark 'force))) (setq point (point))) (goto-char (1- point)) (beginning-of-line))) (defun ex-line-subr (com beg end) (cond ((string= com "join") (goto-char (min beg end)) (while (and (not (eobp)) (< (point) (max beg end))) (end-of-line) (if (and (<= (point) (max beg end)) (not (eobp))) (progn (forward-line 1) (delete-region (point) (1- (point))) (if (not ex-variant) (fixup-whitespace)))))) ((or (string= com "right") (string= com "left")) (indent-rigidly (min beg end) (max beg end) (if (string= com "right") vip-shift-width (- vip-shift-width))) (goto-char (max beg end)) (end-of-line) (forward-char 1)))) (defun ex-mark () "ex mark" (let (char) (if (null ex-addresses) (setq ex-addresses (cons (point) nil))) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "[a-z]") (progn (setq char (following-char)) (forward-char 1) (skip-chars-forward " \t") (if (not (looking-at "[\n|]")) (error "Extra characters at end of \"k\" command"))) (if (looking-at "[\n|]") (error "\"k\" requires a following letter") (error "Mark must specify a letter")))) (save-excursion (goto-char (car ex-addresses)) (point-to-register (- char (- ?a ?\C-a)) nil)))) (defun ex-map () "ex map" (let (char string) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (setq char (char-to-string (following-char))) (forward-char 1) (skip-chars-forward " \t") (if (looking-at "[\n|]") (error "Missing rhs")) (set-mark (point)) (end-of-buffer) (backward-char 1) (setq string (buffer-substring (mark 'force) (point)))) (if (not (lookup-key ex-map char)) (define-key ex-map char (or (lookup-key vip-vi-mode-map char) 'vip-nil))) (define-key vip-vi-mode-map char (eval (list 'quote (cons 'lambda (list '(count) '(interactive "p") (list 'execute-kbd-macro string 'count)))))))) (defun ex-unmap () "ex unmap" (let (char) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (setq char (char-to-string (following-char))) (forward-char 1) (skip-chars-forward " \t") (if (not (looking-at "[\n|]")) (error "Macro must be a character"))) (if (not (lookup-key ex-map char)) (error "That macro wasn't mapped")) (define-key vip-vi-mode-map char (lookup-key ex-map char)) (define-key ex-map char nil))) (defun ex-put () "ex put" (let ((point (if (null ex-addresses) (point) (car ex-addresses)))) (vip-get-ex-buffer) (setq vip-use-register ex-buffer) (goto-char point) (if (= point 0) (vip-Put-back 1) (vip-put-back 1)))) (defun ex-quit () "ex quit" (let (char) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (setq char (following-char))) (if (eq char ?!) (kill-emacs t) (save-buffers-kill-emacs)))) (defun ex-read () "ex read" (let ((point (if (null ex-addresses) (point) (car ex-addresses))) (variant nil) command file) (goto-char point) (if (not (= point 0)) (next-line 1)) (beginning-of-line) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (if (looking-at "!") (progn (setq variant t) (forward-char 1) (skip-chars-forward " \t") (set-mark (point)) (end-of-line) (setq command (buffer-substring (mark 'force) (point)))) (set-mark (point)) (re-search-forward "[ \t\n]") (backward-char 1) (setq file (buffer-substring (point) (mark 'force))))) (if variant (shell-command command t) (insert-file file)))) (defun ex-set () (eval (list 'setq (read-variable "Variable: ") (eval (read-minibuffer "Value: "))))) (defun ex-shell () "ex shell" (vip-change-mode-to-emacs) (shell)) (defun ex-substitute (&optional repeat r-flag) "ex substitute. If REPEAT use previous reg-exp which is ex-reg-exp or vip-s-string" (let (pat repl (opt-g nil) (opt-c nil) (matched-pos nil)) (if repeat (setq ex-token nil) (vip-get-ex-pat)) (if (null ex-token) (setq pat (if r-flag vip-s-string ex-reg-exp) repl ex-repl) (setq pat (if (string= ex-token "") vip-s-string ex-token)) (setq vip-s-string pat ex-reg-exp pat) (vip-get-ex-pat) (if (null ex-token) (setq ex-token "" ex-repl "") (setq repl ex-token ex-repl ex-token))) (while (vip-get-ex-opt-gc) (if (string= ex-token "g") (setq opt-g t) (setq opt-c t))) (vip-get-ex-count) (if ex-count (save-excursion (if ex-addresses (goto-char (car ex-addresses))) (set-mark (point)) (forward-line (1- ex-count)) (setq ex-addresses (cons (point) (cons (mark 'force) nil)))) (if (null ex-addresses) (setq ex-addresses (cons (point) (cons (point) nil))) (if (null (cdr ex-addresses)) (setq ex-addresses (cons (car ex-addresses) ex-addresses))))) ;(setq G opt-g) (let ((beg (car ex-addresses)) (end (car (cdr ex-addresses))) (cont t) eol-mark) (save-excursion (vip-enlarge-region beg end) (let ((limit (save-excursion (goto-char (max (point) (mark 'force))) (point-marker)))) (goto-char (min (point) (mark 'force))) (while (< (point) limit) (end-of-line) (setq eol-mark (point-marker)) (beginning-of-line) (if opt-g (progn (while (and (not (eolp)) (re-search-forward pat eol-mark t)) (if (or (not opt-c) (y-or-n-p "Replace? ")) (progn (setq matched-pos (point)) (replace-match repl)))) (end-of-line) (forward-char)) (if (and (re-search-forward pat eol-mark t) (or (not opt-c) (y-or-n-p "Replace? "))) (progn (setq matched-pos (point)) (replace-match repl))) (end-of-line) (forward-char)))))) (if matched-pos (goto-char matched-pos)) (beginning-of-line) (if opt-c (message "done")))) (defun ex-tag () "ex tag" (let (tag) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (set-mark (point)) (skip-chars-forward "^ |\t\n") (setq tag (buffer-substring (mark 'force) (point)))) (if (not (string= tag "")) (setq ex-tag tag)) (vip-change-mode-to-emacs) (condition-case conditions (progn (if (string= tag "") (find-tag ex-tag t) (find-tag-other-window ex-tag)) (vip-change-mode-to-vi)) (error (vip-change-mode-to-vi) (vip-message-conditions conditions))))) (defun ex-write (q-flag) "ex write" (vip-default-ex-addresses t) (vip-get-ex-file) (if (string= ex-file "") (progn (if (null buffer-file-name) (error "No file associated with this buffer")) (setq ex-file buffer-file-name)) (setq ex-file (expand-file-name ex-file))) (if (and (not (string= ex-file (buffer-file-name))) (file-exists-p ex-file) (not ex-variant)) (error "\"%s\" File exists - use w! to override" ex-file)) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (write-region (point) (mark 'force) ex-file ex-append t))) (if (null buffer-file-name) (setq buffer-file-name ex-file)) (if q-flag (save-buffers-kill-emacs))) (defun ex-yank () "ex yank" (vip-default-ex-addresses) (vip-get-ex-buffer) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (> beg end) (error "First address exceeds second")) (save-excursion (vip-enlarge-region beg end) (exchange-point-and-mark) (if (or ex-g-flag ex-g-variant) (error "Can't yank within global")) (if ex-count (progn (set-mark (point)) (forward-line (1- ex-count))) (set-mark end)) (vip-enlarge-region (point) (mark 'force)) (if ex-flag (error "Extra characters at end of command")) (if ex-buffer (copy-to-register ex-buffer (point) (mark 'force) nil)) (copy-region-as-kill (point) (mark 'force))))) (defun ex-command () "execute shell command" (let (command) (save-window-excursion (set-buffer " *ex-working-space*") (skip-chars-forward " \t") (set-mark (point)) (end-of-line) (setq command (buffer-substring (mark 'force) (point)))) (if (null ex-addresses) (shell-command command) (let ((end (car ex-addresses)) (beg (car (cdr ex-addresses)))) (if (null beg) (setq beg end)) (save-excursion (goto-char beg) (set-mark end) (vip-enlarge-region (point) (mark 'force)) (shell-command-on-region (point) (mark 'force) command t)) (goto-char beg))))) (defun ex-line-no () "print line number" (message "%d" (1+ (count-lines (point-min) (if (null ex-addresses) (point-max) (car ex-addresses)))))) (if (file-exists-p vip-startup-file) (load vip-startup-file)) (provide 'vip) ;;; vip.el ends here ddskk-15.1.54/context-skk.el0000664000076600007660000003171312074501114015233 0ustar brutusbrutus;;; context-skk.el --- turning off skk when the point enters where skk is unnecessary -*- coding: iso-2022-jp -*- ;; ;; Copyright (C) 2003, 2005 Masatake YAMATO ;; ;; Author: Masatake YAMATO ;; Created: Tue May 13 19:12:23 2003 ;; Version: $Id: context-skk.el,v 1.17 2013/01/13 09:45:48 skk-cvs Exp $ ;; Last Modified: $Date: 2013/01/13 09:45:48 $ ;; ;; 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, 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; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;; ;; ;;; Commentary: ;; $B$3$N%W%m%0%i%`$O(B skk $B$NF0:n!"?6Iq$$$K4X$7$F(B2$B$D$N5!G=$rDs6!$7$^$9!#(B ;; ;; (1) $BJT=8$NJ8L.$K1~$8$F<+F0E*$K(B skk $B$N%b!<%I$r(B latin $B$K@Z$jBX$($^$9!#(B ;; $BL@$i$+$K(B skk $B$K$h$kF|K\8lF~NO$,I,MW$J$$8D=j$G!"(Bskk $B$r%*%s$K$7$?$^$^(B ;; $B%-!l9gF|(B ;; $BK\8lF~NO$OI,MW$"$j$^$;$s!#(B ;; $B$?$H$($P(B emacs lisp $B$G$O!"(B ;; ;; "$B!A(B" $B$d(B ;; $B!A(B ;; ;; $B$H$$$C$?8D=j$G$@$1F|K\8lF~NO$,I,MW$H$J$j$^$9!#(B ;; ;; $B8=:_$NJ8;zNs$H%3%a%s%H$N!V30!W$GJT=83+;O$HF1;~$K(B ;; (skk $B$,%*%s$G$"$l$P(B) skk $B$NF~NO%b!<%I$r(B latin $B$K@Z$jBX$($^$9!#(B ;; $B!V30!W$G$NJT=8$r3+;O$9$k$K$"$?$C$F!"F|K\8lF~NO$,(B on $B$K$J$C$F$$$?$?(B ;; $B$a$KH/@8$9$kF~NO8m$j$H$=$N=$@5A`:n$r2sHr$9$k$3$H$,$G$-$^$9!#(B ;; ;; (1)-C. $B%-!<%^%C%W$,EPO?$5$l$F$$$k$+$I$&$+$rH=Dj(B ;; ------------------------------------------- ;; $B%]%$%s%H2<$K(B `keymap' $B$"$k$$$O(B `local-map' $B$NB0@-$r;}$DJ8;z$"$k$$$O(B ;; $B%*!<%P%l%$$,$"$k$+$I$&$+$rD4$Y$^$9!#%-!<%^%C%W$,@_Dj$5$l$F$$$k>l9g!"(B ;; $B$5$i$K(B skk $B$GJl2;$NF~NO$K;H$&(B ?a, ?i, ?u, ?e, ?o$B$N%-!<$,%-!<%^%C%W(B ;; $BCf$KDj5A$5$l$F$$$k$+D4$Y$^$9!#Dj5A$5$l$F$$$k>l9g!"%-!<%^%C%WCf$N%-!<(B ;; $B$K3dEv$F$i$l$?5!G=$rA0$K0z?tL5$7$G(B ;; $B8F$S=P$5$l!V(Bskk $B$r%*%U$K$9$kJ8L.$K$"$k$H$-(B non-nil $B$rJV$94X?t!W$rDj5A(B ;; $B$7$F!"$3$NJQ?t$K(B `add-hook' $B$7$F2<$5$$!#(B ;; ;; (2) $BJT=8$NJ8L.$K1~$8$F(B skk $B$N@_Dj$rJQ99$7$^$9!#(B ;; skk $B$NJ8;zF~NO4X?t(B `skk-insert' $B$N$^$o$j$K(B `let' $B$rG[CV$7$F!"J8;zF~(B ;; $BNOCf$K0l;~E*$KJQ?t$NB+G{$rJQ99$7$F!"J8;zF~NO$N$?$S$K(B skk $B$N@_Dj$rJQ(B ;; $B99$G$-$^$9!#$3$N%W%m%0%i%`$K$O!"(Bskk $B$K$h$k%F%-%9%H$NF~NO@h$N%P%C%U%!(B ;; $B$r%9%-%c%s$7!"(B($B6gFIE@$Nl9g!"4X?t$r=q$/I,MW$,$"$j$^$9!#(B ;; `context-skk-custumize-functions' $B$N%I%-%e%a%s%H$K=>$$!"4X?t$r=q$-!"(B ;; ;; (add-to-list 'context-skk-custumize-functions ;; 'your-on-the-fly-customize-func) ;; ;; $B$H$7$FEPO?$7$^$9!#(BM-x context-skk-dump-customize $B$K$h$k8=:_$N%]%$%s%H(B ;; $B$KBP$7$F!"(Bcontext-skk $B$K$h$C$F0le=R$7$?(B2$B$D$N5!G=$O(B context-skk-mode $B$H$$$&%^%$%J!<%b!<%I$H$7$Fl9g!"$3(B ;; $B$N%^%$%J!<%b!<%I$,(B on $B$K$J$C$F$$$k$3$H$r0UL#$7$^$9!#(B ;; ;; - $B%$%s%9%H!<%k(B - ;; ~/.emacs $B$K0J2<$r5-=R$7$^$9!#(B ;; ;; (add-hook 'skk-load-hook ;; (lambda () ;; (require 'context-skk))) ;; ;; - todo ;; Handling the prefix arguments ;;; Code: ;; ;; Custom ;; ;;;###autoload (defgroup context-skk nil "Context-skk minor mode related customization." :group 'skk :prefix "context-skk-") ;;;###autoload (defcustom context-skk-context-check-hook '(context-skk-out-of-string-or-comment-in-programming-mode-p context-skk-on-keymap-defined-area-p context-skk-in-read-only-p) "*$BF|K\8lF~NO$r<+F0E*$K(B off $B$K$7$?$$!V%3%s%F%-%9%H!W$K$$$l$P(B t $B$rJV$9(B $B4X?t$rEPO?$9$k!#(B" :type 'hook :group 'context-skk) ;;;###autoload (defcustom context-skk-custumize-functions '(context-skk-customize-kutouten) "*skk $B$K$h$kF~NO3+;OD>A0$K!"F~NO$r%+%9%?%^%$%:$9$k4X?t$rEPO?$9$k!#(B $B4X?t$O0J2<$N7A<0$N%G!<%?$rMWAG$H$9$k%j%9%H$rJV$9$b$N$H$9$k(B: \(VARIABLE VALUE\) `skk-insert' $B$r0O$`(B `let' $B$K$h$C$F(B VARIABLE $B$O(B VALUE $B$KB+G{$5$l$k!#(B $BFC$K$=$N>l$G%+%9%?%^%$%:$9$Y$-JQ?t$,$J$$>l9g(B `nil' $B$rJV$;$PNI$$!#(B $B4X?t$K$O2?$b0z?t$,EO$5$l$J$$!#(B" :type 'hook ; hook? list of function? :group 'context-skk) ;;;###autoload (defcustom context-skk-programming-mode '(ada-mode antlr-mode asm-mode autoconf-mode awk-mode c-mode objc-mode java-mode idl-mode pike-mode cperl-mode ;;?? dcl-mode delphi-mode f90-mode fortran-mode icon-mode idlwave-mode inferior-lisp-mode lisp-mode m4-mode makefile-mode metafont-mode modula-2-mode octave-mode pascal-mode perl-mode prolog-mode ps-mode postscript-mode ruby-mode scheme-mode sh-mode simula-mode ;; sql-mode tcl-mode vhdl-mode emacs-lisp-mode) "*context-skk $B$K$F!V%W%m%0%i%_%s%0%b!<%I!W$H8+Pv$9%b!<%I$N%j%9%H(B" :type '(repeat (symbol)) :group 'context-skk) ;;;###autoload (defcustom context-skk-mode-hook nil "*`context-skk-mode' $B$r@Z$jBX$($k:]$K8F$P$l$k%U%C%/!#(B" :type 'hook :group 'context-skk) ;;;###autoload (defcustom context-skk-mode-on-hook nil "*`context-skk-mode' $B$,(B on $B$K$J$k:]$K8F$P$l$k%U%C%/!#(B" :type 'hook :group 'context-skk) ;;;###autoload (defcustom context-skk-mode-off-hook nil "*`context-skk-mode' $B$,(B off $B$K$J$k:]$K8F$P$l$k%U%C%/!#(B" :type 'hook :group 'context-skk) ;;;###autoload (defcustom context-skk-mode-off-message "[context-skk] $BF|K\8lF~NO(B off" "*`context-skk-mode' $B$,(B off $B$K$J$C$?$H$-$K%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8!#(B" :type 'string :group 'context-skk) ;; ;; Minor mode definition ;; ;; Change autoload cookie for XEmacs. ;;;###autoload (autoload 'context-skk-mode "context-skk" "$BJ8L.$K1~$8$F<+F0E*$K(Bskk$B$NF~NO%b!<%I$r(Blatin$B$K@Z$j49$($k%^%$%J!<%b!<%I!#(B" t) (define-minor-mode context-skk-mode "$BJ8L.$K1~$8$F<+F0E*$K(B skk $B$NF~NO%b!<%I$r(B latin $B$K@Z$j49$($k%^%$%J!<%b!<%I!#(B" t :lighter " ;$B"&(B") ;; ;; Advices ;; (defmacro define-context-skk-advice (target) `(defadvice ,target (around ,(intern (concat (symbol-name target) "-ctx-switch")) activate) "$BJ8L.$K1~$8$F<+F0E*$K(B skk $B$NF~NO%b!<%I$r(B latin $B$K$9$k!#(B" (if context-skk-mode (if (context-skk-context-check) (context-skk-insert) (eval `(let ,(context-skk-custumize) ad-do-it))) ad-do-it))) (define-context-skk-advice skk-insert) (define-context-skk-advice skk-jisx0208-latin-insert) ;; ;; Helper ;; (defun context-skk-context-check () "$BF|K\8lF~NO$r<+F0E*$K(B off $B$K$7$?$$!V%3%s%F%-%9%H!W$K$$$l$P(B t $B$rJV$9(B" (run-hook-with-args-until-success 'context-skk-context-check-hook)) (defun context-skk-custumize () "$B%+%9%?%^%$%:$7$?$$JQ?t$HCM$NAH$rF@$k!#(B" (let (customized-pairs) (dolist (func context-skk-custumize-functions) (setq customized-pairs (append (save-excursion (funcall func)) customized-pairs))) customized-pairs)) (defun context-skk-dump-customize () "$B8=:_$N%]%$%s%H$N0LCV$K$*$1$k(B (context-skk-custumize) $B$N7k2L$rI=<($9$k!#(B" (interactive) (let ((customized-pairs (context-skk-custumize))) (with-output-to-temp-buffer "*context-skk customize result*" (pp customized-pairs)))) (defun context-skk-insert () "skk-latin-mode $B$r(B on $B$K$7$?>e(B `this-command-keys' $B$KBP$9$k4X?t$r8F$S=P$7D>$9!#(B" (message "%s" context-skk-mode-off-message) (skk-latin-mode t) (let* ((keys (this-command-keys)) ;; `this-command-keys' $B$,(B tab $B$rJV$7$?$H$-$J$I(B function-key-map $B$d(B ;; key-translation-map $B$K0MB8$7$F$$$k>l9g$O$=$l$i$N(B keymap $B$r;2>H$9$k(B (binding (or (key-binding keys) (key-binding (lookup-key function-key-map keys)) (key-binding (lookup-key key-translation-map keys))))) (when binding (call-interactively binding)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Predicators ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; $B%j!<%I%*%s%j!<$G$J$$$+!)(B ;; (defun context-skk-in-read-only-p () (or (context-skk-in-read-only-buffer-p) (context-skk-in-read-only-area-p))) (defun context-skk-in-read-only-buffer-p () buffer-read-only) (defun context-skk-in-read-only-area-p () (or (and (get-char-property (point) 'read-only) (get-char-property (point) 'front-sticky)) (and (< (point-min) (point)) (get-char-property (1- (point)) 'read-only) (not (get-char-property (1- (point)) 'rear-nonsticky))))) ;; ;; $BDL>oF|K\8lF~NO$rI,MW$H$7$J$$%W%m%0%i%_%s%0$N%b!<%I$K$$$k$+$I$&$+(B ;; $BJ8;zNs$rJT=8Cf$+$I$&$+(B ;; $B%3%a%s%H$rJT=8Cf$+$I$&$+(B ;; (defun context-skk-out-of-string-or-comment-in-programming-mode-p () "$B%W%m%0%i%_%s%0%b!<%I$K$"$C$FJ8;zNs$"$k$$$O%3%a%s%H$N30$K$$$l$P(B non-nil $B$rJV$9!#(B $B%W%m%0%i%_%s%0%b!<%I$K$$$J$$>l9g$O(B nil $B$rJV$9!#(B $B%W%m%0%i%_%s%0%b!<%I$K$"$C$FJ8;zNs$"$k$$$O%3%a%s%H$NCf$K$$$k>l9g(B nil $B$rJV$9!#(B" (and (context-skk-in-programming-mode-p) (not (or (context-skk-in-string-p) (context-skk-in-comment-p))))) (defun context-skk-in-programming-mode-p () (memq major-mode context-skk-programming-mode)) (defun context-skk-in-string-p () (nth 3 (parse-partial-sexp (point) (point-min)))) (defun context-skk-in-comment-p () (nth 4 (parse-partial-sexp (point) (point-min)))) ;; ;; $B8=:_$N%]%$%s%H2<$K(B keymap $B$,Dj5A$5$l$F$$$k$+$I$&$+!)(B ;; (defun context-skk-on-keymap-defined-area-p () (or (context-skk-on-vowel-key-reserved-p 'keymap) (context-skk-on-vowel-key-reserved-p 'local-map))) (defun context-skk-on-vowel-key-reserved-p (map-symbol) (let ((map (get-char-property (point) map-symbol))) (when map ;; "$B$"$$$&$($*(B" $B$rF~NO$9$k$3$H$rA[Dj$7$F%A%'%C%/$9$k!#(B (or (lookup-key map "a") (lookup-key map "i") (lookup-key map "u") (lookup-key map "e") (lookup-key map "o"))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Customize function ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; $B6gFIE@(B (skk-kutouten-type) ;; ;; Based on a post to skk ml by ;; Kenichi Kurihara (kenichi_kurihara at nifty dot com) ;; Message-ID: ;; (defun context-skk-customize-kutouten () (let ((kuten-jp (context-skk-customize-regexp-scan "$B!#(B" 'forward 0 nil)) (kuten-en (context-skk-customize-regexp-scan "$B!%(B" 'forward 0 nil)) (touten-jp (context-skk-customize-regexp-scan "$B!"(B" 'forward 0 nil)) (touten-en (context-skk-customize-regexp-scan "$B!$(B" 'forward 0 nil))) (if (or (eq kuten-jp kuten-en) (eq touten-jp touten-en)) nil ;; Nothing to customize `((skk-kutouten-type ',(if kuten-jp (if touten-jp 'jp 'jp-en) (if touten-jp 'en-jp 'en))))))) (defun context-skk-customize-regexp-scan (regexp direction from limit) (let ((func (if (eq direction 'forward) 're-search-forward 're-search-backward))) (save-excursion (goto-char from) (if (funcall func regexp limit t) t nil)))) (provide 'context-skk) ;; context-skk.el ends here ddskk-15.1.54/skk-sticky.el0000664000076600007660000002024212130533633015054 0ustar brutusbrutus;;; skk-sticky.el --- Improved sticky-shift on SKK -*- coding: iso-2022-jp -*- ;; Copyright (C) 2008 IRIE Tetsuya ;; Author: IRIE Tetsuya ;; Version: $Id: skk-sticky.el,v 1.5 2013/04/08 12:27:07 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/04/08 12:27:07 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; [$B35MW(B] ;; SKK $B$G$ODL>o!"JQ493+;O$*$h$SAw$j3+;O$N0LCV$rBgJ8;z$G;XDj$7$^$9$,!"$3(B ;; $B$l$rG$0U$N%-!<$G;XDj$G$-$k$h$&$K$7!"(Bsticky-shift $B%i%$%/$JA`:n$r2DG=(B ;; $B$K$7$^$9!#(B ;; ;; ~/.skk.el $B$K(B ;; ;; (setq skk-sticky-key ";") ;; ;; $B$H=q$$$F$*$/$H(B ";" $B%-!<$GJQ490LCV$,;XDj$G$-$k$h$&$K$J$j$^$9!#Nc$($P(B ;; $B!VM-$k!W$,(B ;; ;; "; a ; r u" ;; ;; $B$G$bF~NO$G$-!"%7%U%H%-!<$r2!$9I,MW$,$J$/$J$j$^$9!#A`:n>e$O(B ;; ;; (info "(skk) Q.3-4 $B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B") ;; ;; $B$J$I$K$"$kDL>o$N(B sticky-shift $B$HJQ$o$j$^$;$s$,!"2hLLI=<($O(B ;; ;; $BBG80(B $BDL>o$N(Bsticky skk-sticky ;; ; $BJQ2=$J$7(B $B"&(B ;; a $B"&$"(B $B"&$"(B ;; ; $B"&$"(B $B"&$"(B* ;; r $B"&$"(B*r $B"&$"(B*r ;; ;; $B$HA+0\$7$^$9!#(Bskk-sticky $B$O(B ";" $B$r2!$7$?;~E@$GI=<($,JQ2=$9$k$N$Gl9g$O(B ;; ;; (setq skk-sticky-key ";") ;; ;; $B$N$h$&$K(B string $B$r@_Dj$7$F2<$5$$!#(B`skk-sticky-key' $B$K@_Dj$7$?J8;z(B ;; $B$=$N$b$N$rF~NO$7$?$$>l9g$O(B2$B2sB3$1$FBG$D$HF~NO$G$-$^$9!#(B ;; ;; 2. $BI=<($5$l$J$$%-!<(B ;; ;; "$BL5JQ49(B" $B$N$h$&$JI=<($rH<$o$J$$%-!<$N>l9g$O(B ;; ;; (setq skk-sticky-key [muhenkan]) ; Windows $B4D6-$@$H(B [noconvert] ;; ;; $B$N$h$&$K$=$N%-!<$rI=$o$9(B vector $B$r@_Dj$7$F2<$5$$!#(B ;; ;; 3. $BF1;~BG80(B ;; ;; 2$B$D$N%-!<$rF1;~$KBG80$9$k$3$H$G$bJQ490LCV$r;XDj$G$-$^$9!#Nc$($P(B ;; "f" $B$H(B "j" $B$NF1;~BG80$G;XDj$9$k>l9g$O(B ;; ;; (setq skk-sticky-key '(?f ?j)) ;; ;; $B$N$h$&$K(B character $B$N%j%9%H$r@_Dj$7$F2<$5$$!#(B ;; Dvorak $BG[Ns$N$h$&$J!"2!$7$d$9$$>l=j$KE,Ev$J%-!<$,$J$$4D6-$G$b$3$N(B ;; $B5!G=$r;H$$$?$$>l9g$KJXMx$+$b$7$l$^$;$s!#(B ;; ;; [$BCm0U;v9`(B] ;; o $B$3$l$O$"$/$^$G$b!VG$0U$N%-!<$GJQ490LCV$r;XDj$9$k!W$b$N$G$"$j!"(B ;; sticky-shift $B$=$N$b$N$G$O$"$j$^$;$s!#$7$?$,$C$F!"(Blatin $B%b!<%I$d(B ;; abbrev $B%b!<%I!"$^$?(B SKK $B0J30$G$b(B sticky-shift $B$r;H$$$?$$>l9g$OA0=R(B ;; $B$N(B info $B$N$h$&$J@_Dj$rJ;MQ$9$kI,MW$,$"$j$^$9!#(B ;; ;; o skk-hint.el $B$rJ;MQ$9$k>l9g!"(B`skk-hint-start-char' $B$N%G%U%)%k%H$,(B ;; ";" $B$J$N$G@_Dj$K$h$C$F$O3dEv$F%-!<$,=EJ#$9$k2DG=@-$,$"$j$^$9!#(B ;;; TODO ;; * SPC $B$K3dEv$F$?$$$H$$$&?M$b5o$?$j$9$k(B? ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (defvar skk-sticky-key-orig-output nil) (skk-deflocalvar skk-sticky-okuri-flag nil) ;;; $B=i4|@_Dj(B (cond ((stringp skk-sticky-key) (let ((orig-rule (assoc skk-sticky-key (append skk-rom-kana-rule-list skk-rom-kana-base-rule-list)))) (setq skk-sticky-key-orig-output (car (cddr orig-rule))) (setq skk-rom-kana-rule-list (cons `(,skk-sticky-key nil skk-sticky-set-henkan-point) (delete orig-rule skk-rom-kana-rule-list))))) ((vectorp skk-sticky-key) (define-key skk-j-mode-map skk-sticky-key 'skk-sticky-set-henkan-point))) ;;; Functions (defun skk-sticky-looking-back-okuri-mark () "`point' $B$ND>A0$NJ8;z$,(B `*' $B$J$i$P(B t $B$rJV$9!#(B" (and (not (bobp)) (string= "*" (buffer-substring-no-properties (1- (point)) (point))))) (defun skk-sticky-set-okuri-mark () "$BAw$j3+;OE@$r(B `*' $B$rA^F~$9$k$3$H$GI8<1$7!"Aw$j$"$jJQ49$NBT$A>uBV$KF~$k!#(B" (when (eq skk-henkan-mode 'on) (unless (and skk-sticky-okuri-flag (skk-sticky-looking-back-okuri-mark)) (when (and skk-dcomp-activate (skk-dcomp-marked-p)) (skk-dcomp-before-kakutei)) (insert-and-inherit "*") (setq skk-sticky-okuri-flag t) nil))) (defun skk-sticky-set-henkan-point (&optional arg) "$BJQ493+;O0LCV$b$7$/$OAw$j3+;O0LCV$r;XDj$9$k!#(B" (interactive "*P") (cond ((not (eq skk-henkan-mode 'on)) (skk-set-henkan-point-subr)) ((eq (point) (marker-position skk-henkan-start-point)) (let ((data skk-sticky-key-orig-output)) (when data (skk-kakutei) (when (functionp data) (setq data (funcall data (skk-make-raw-arg arg)))) (when (stringp (if (consp data) (car data) data)) (if (consp data) (if skk-katakana (car data) (cdr data)) data))))) (t (skk-sticky-set-okuri-mark)))) (defadvice skk-kakutei (after skk-sticky-ad activate) "`skk-sticky-okuri-flag' $B$r%/%j%"$9$k!#(B" (setq skk-sticky-okuri-flag nil)) (defadvice keyboard-quit (after skk-sticky-ad activate) "`skk-sticky-okuri-flag' $B$r%/%j%"$9$k!#(B" (setq skk-sticky-okuri-flag nil)) (defadvice skk-insert (before skk-sticky-ad activate) "`*' $B$ND>8e$G$"$l$PF~NO$rBgJ8;z$KJQ49$9$k!#(B" (when (and skk-sticky-okuri-flag (skk-sticky-looking-back-okuri-mark) (string= "" skk-prefix)) (let ((pair (rassq (skk-last-command-char) skk-downcase-alist))) (skk-set-last-command-char (if pair (car pair) (upcase (skk-last-command-char))))))) (defadvice skk-set-henkan-point (before skk-sticky-ad activate) "`point' $BD>A0$N(B `*' $B$r>C$9!#(B" (when (and skk-sticky-okuri-flag (skk-sticky-looking-back-okuri-mark)) (delete-backward-char 1))) ;; `skk-kana-input' $B$ODL>o(B `cancel-undo-boundary' $B$r8F$V$,!"(B ;; `skk-sticky-key' $B$N(B2$BEYBG$A$N:]$KK\Mh$"$k$Y$-(B boundary (C-k $B$N8e$J$I(B) ;; $B$b>C$7$F$7$^$&$?$a!"(Badvice $B$K$F8F$P$J$$$h$&$KBP=h$9$k!#(B ;; $B$3$l$K$h$j!"(B`skk-undo-kakutei-word-only' $B$,(B non-nil $B$G$b(B2$BEYBG$A$N;~(B ;; $B$K(B boundary $B$,F~$C$F$7$^$&I{:nMQ$,$"$k$,!"@h$NLdBj$h$j$O%^%7$@$H9M$((B ;; $B$k!#(B ;;; (defadvice skk-kana-input (around skk-sticky-ad activate) ;;; "$B"&D>8e$N(B `skk-sticky-key' $B$NF~NO$N:](B `cancel-undo-boundary' $B$r8F$P$J$$$h$&$K!#(B" ;;; (if (and (stringp skk-sticky-key) ;;; (eq (skk-last-command-char) (string-to-char skk-sticky-key)) ;;; (eq skk-henkan-mode 'on) ;;; (eq (point) (marker-position skk-henkan-start-point))) ;;; (progn ;;; (let ((skk-self-insert-non-undo-count 20)) ;;; ad-do-it) ;;; (setq skk-self-insert-non-undo-count (1+ skk-self-insert-non-undo-count))) ;;; ad-do-it)) ;;; $BF1;~BG804XO"(B (defun skk-sticky-double-p (first next) "FIRST $B$H(B NEXT $B$,F1;~BG80$G$"$l$P(B non-nil $B$rJV$9!#(B" (let ((char (if (characterp first) first (skk-last-command-char)))) (and (not (eq char next)) (memq char skk-sticky-key) (memq next skk-sticky-key)))) (defadvice skk-insert (around skk-sticky-ad-double activate) "$BF1;~BG80$r8!=P$7$F=hM}$9$k!#(B" (cond ((not (consp skk-sticky-key)) ad-do-it) ((not (memq (skk-last-command-char) skk-sticky-key)) ad-do-it) ((sit-for skk-sticky-double-interval t) ;; No input in the interval. ad-do-it) (t ;; Some key's pressed. (let ((next-event (next-command-event))) (if (skk-sticky-double-p this-command (aref (skk-event-key next-event) 0)) (skk-sticky-set-henkan-point) ad-do-it (skk-unread-event next-event)))))) (provide 'skk-sticky) ;;; skk-sticky.el ends here ddskk-15.1.54/ChangeLog.40000664000076600007660000041756412074714003014372 0ustar brutusbrutus2012-01-01 Tsuyoshi Kitamoto * Version 14.4 Nakatsu Released. * doc/skk.texi, Makefile, skk-version.el: Bump SKK verison to 14.4. 2011-12-30 Tsuyoshi Kitamoto * doc/skk.texi (skk-verbose-intention-face): $B!V$I$N(Bwiki$B!W$r!V$I$l$r;2>H!W(B $B$H=$@0(B. (skk-check-okurigana-on-touroku): footnote $B$+$i(B defvr $B$XJQ99(B. * skk-vars.el (skk-verbose-intention-face): $B!V$I$N(Bwiki$B!W$r!V$I$l$r;2>H!W(B $B$H=$@0(B. (skk-undo-kakutei-return-previous-point): docstring $B$r=$@0(B. 2011-12-27 Tsuyoshi Kitamoto * doc/skk.texi ($BJ8;z%3!<%I$rCN$kJ}K!(B): M-x skk-display-code-for-char-at-point $B$r5-:\(B. * skk-macs.el (skk-split-char): Add comment. 2011-12-24 Tsuyoshi Kitamoto * doc/skk.texi ($B>iD9$J0FFb%a%C%;!<%8$NI=<((B): $B99?7(B. 2011-12-23 Tetsuo Tsukamoto * skk-vars.el: Set coding to iso-2022-7bit-ss2. (skk-annotation-python-program) (skk-annotation-dict-coding-system): In docstrings, modify charset of some characters from chinese-gb2312 to japanese-jisx0208. 2011-12-23 Tsuyoshi Kitamoto * doc/skk.texi: @documentlanguage $B$rDI2C(B. @subsection $B9T$NCf$G;H$o$l$F$$$?(B @code{}, @key{}, @kbd{} $B$r:o=|(B. @subsubsection $B9T$bF1MM(B. 2011-12-18 Tsuyoshi Kitamoto * skk-tut.el (skktut-init-variables-alist): Add skk-show-mode-show. * skk-vars.el (skk-show-mode-invoked): New variable. (skk-show-mode-show): $B%f!<%6%*%W%7%g%s2=(B. (skk-show-mode-style): docstring $B$rJQ99(B. * skk-show-mode.el (skk-cursor-set): $BH=Dj$K(B skk-show-mode-invoked $B$r(B $B2C$($?(B. (skk-show-mode): $B?7$?$J%3%^%s%I(B. * skk.el (skk-require-module): skk-show-mode $B$r(B require. * doc/skk.texi: $B99?7(B. 2011-12-17 Tetsuo Tsukamoto * doc/skk.texi: Set coding to iso-2022-jp-3. 2011-12-17 Tsuyoshi Kitamoto * skk-kcode.el (skk-kcode-read-code-string): RET $B$N%?%$%W$G(B char-list $B$,5/F0$9$k$N$+(B menu $B$,5/F0$9$k$N$+$r!"$"$i$+$8$aI=<((B. 2011-12-15 Tetsuo Tsukamoto * skk-kcode.el (skk-display-code): Check function `char-to-ucs' also at run time. 2011-12-14 Tetsuo Tsukamoto * doc/skk.texi: Set coding to iso-2022-7bit. Replace invisible chars with correct ones. * SKK-MK (SKK-MK-texinfo-coding-system): Default to iso-2022-7bit. (SKK-MK-texinfo-pre-formart, SKK-MK-texinfo-post-format): New functions. (SKK-MK-texinfo-format): Call them. * skk-annotation.el (skk-annotation-lookup-region-or-at-point): Now this is defined with defun, while `skk-annotation-wikipedia-region-or-at-point' is treated as an alias. * skk-emacs.el (skk-emacs-menu-resource-ja): Typo. * skk-setup.el.in (skk-isearch-setup-maybe) (skk-isearch-cleanup-maybe): Requie skk-vars. * skk-vars.el (skk-kcode-charset): Update the custom type. (skk-list-chars-mode-map): Define for the cursor keys. 2011-12-13 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-annotation.el, skk-isearch.el: Update comments. * skk-emacs.el (skk-emacs-modeline-menu-items): Typo. * skk-setup.el.in (skk-isearch-setup-maybe) (skk-isearch-cleanup-maybe): New functions. (isearch-mode-hook, isearch-mode-end-hook): Call them. * skk-vars.el (skk-isearch-mode-enable): Always enable skk-isearch if value is `always'. 2011-12-10 Tsuyoshi Kitamoto * skk-kcode.el (skk-list-chars): $B%3!<%I$r@0M}(B. 2011-12-08 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wait-for-input): Call `lookup-word' if user try to browse the source for a lookup entry. 2011-12-08 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.3.92. 2011-12-07 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-annotation.el (skkannot-wikipedia-format-buffer): Remove uls in ja.wiktionary. * skk-vars.el (skk-annotation-wiktionary-preferred-lang-alist): Add "$B8EE5F|K\8l(B". (skkannot-ja-wiktionary-part-of-speech-regexp): Add "$BOB8l$N4A;zI=(B $B5-(B". * skk-emacs.el (skk-emacs-modeline-menu-items): Add new items for skk-tankan, skk-list-chars, skk-annotation-lookup-region-or-at-point, and skk-clock. (skk-emacs-menu-resource-ja): Update. 2011-12-07 Tsuyoshi Kitamoto * skk-vars.el (skk-search-state, skk-search-ex-state): New internal variables. * skk.el (skk-search, skk-search-extra-jisyo-files): Use it. (skk-search-state): New command. * doc/skk.texi: Update. 2011-12-06 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-lookup.el (skk-lookup-get-content): Simplify just slightly. * skk.el (skk-backward-and-set-henkan-point-1): Ditto. 2011-12-06 Tsuyoshi Kitamoto * skk-lookup.el (skk-lookup-get-content): Remove message(). (skk-lookup-get-content-setup-dic): Add message() and interactive(). * doc/skk.texi: $B99?7(B. 2011-12-05 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-name-radical-alist): $B?7$?$J%j%9%H(B. (skk-tankan-yomi-compread): $B?7$?$J4X?t(B. (skk-tankan): $BIt * skk-vars.el (skk-annotation-other-sources): Add lookup.el. (skkannot-cached-srcs): Renamed from skk-annotation-wikimedia-srcs. * skk-annotation.el (skkannot-in-normal-buffer-p) (skkannot-clear-msg, skkannot-check-lookup): New functions. (skkannot-cache, skk-annotation-wikipedia): Call `skk-lookup-get-content' if source is lookup.el. (skk-annotation-find-and-show): Pass skkannot-cached-srcs to `skk-annotation-show' if skk-annotation-lookup-lookup is nil. 2011-12-04 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-lookup-lookup): New user option. (skk-treat-candidate-sample2): If it is set to `always', call `skk-lookup-get-content'. * skk.el (skk-check-treat-candidate-appearance-function): Check it. * skk-annotation.el (skk-annotation-find-and-show): Call `skk-lookup-get-content' if `skk-annotation-lookup-lookup' is non-nil. * skk-lookup.el (skk-lookup-get-content): If content is a null string, then return nil. Take optional arg listing-p. 2011-12-04 Tsuyoshi Kitamoto * skk-vars.el (skk-tankan-radical-name-face): $B?7$?$J(B FACE. * skk-tankan.el (skk-tankan-radical-name): $B?7$?$JG[Ns(B. (skk-tankan-bushu-compread): skk-tankan-radical-name $B$H(B skk-tankan-radical-name-face $B$r;HMQ(B. * doc/skk.texi: $B99?7(B. 2011-12-03 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2011-11-30 Tetsuo Tsukamoto * skk-annotation.el (skkannot-DictServ-cache) (skk-annotation-lookup-DictionaryServices): Remove unused local variables. 2011-11-28 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-wiktionary-preferred-lang-alist): Modify the default value for en.wiktionary. (skkannot-en-wiktionary-part-of-speech-regexp): Add Kanji, Hanzi, and Hanja. 2011-11-27 Tsuyoshi Kitamoto * skk-show-mode.el (skk-cursor-set): $B%$%s%/%j%a%s%?%k!&%5!<%ACf$N(B $BF~NO%b!<%I@Z$jBX$(;~$K$OI=<($7$J$$!#JQ?t(B skk-isearch-switch $B$GH=CG(B. 2011-11-26 Tetsuo Tsukamoto * skk-annotation.el (skkannot-DictServ-command): New function. (skk-annotation-lookup-DictionaryServices): Accept an optional third arg force. (skk-annotation-wikipedia-1): Call it with the 3rd arg non-nil. * skk-vars.el (skk-annotation-lookup-DictionaryServices): Update doc string. (skkannot-py-none-regexp, skkannot-DictServ-cmd-format-str): New constant variables. * skk.el (skk-check-treat-candidate-appearance-function) (skk-treat-candidate-appearance): New functions. (skk-henkan-candidate-list, skk-treat-new-word): Call them. 2011-11-26 Tetsuo Tsukamoto * skk-version.el: Bump skk-version to 14.3.91. * skk-vars.el (skk-annotation-show-wikipedia-url): Abolish variable. (skk-annotation-lookup-DictionaryServices): Accept `always'. (skk-treat-candidate-sample2): If it is set to `always', call `skk-annotation-lookup-DictionaryServices'. * skk-annotation.el: Update comments. (skk-skkannot-treat-wikipedia): Abolish function. (skk-annotation-find-and-show, skk-annotation-wait-for-input): Do not refer to skk-annotation-show-wikipedia-url. * doc/skk.texi: Update. 2011-11-23 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.3.90. 2011-11-23 Tsuyoshi Kitamoto * skk-vars.el (skk-annotation-delay): $BC10L$,IC$G$"$k;]$r5-:\(B. * doc/skk.texi (skk-annotation-delay): $BDI2C(B. (VIP/VIPER$B$H$NJ;MQ(B): $B!V(BI-search$B4XO"!W$H=g$rF~$lBX$((B. * skk.el (skk-check-size-and-do-save-jisyo): skk-yes-or-no-p() $B$N(B $B0z?t(B JAPANESE $B$H(B ENGLISH $B$N@8@.$,0[$J$C$F$$$?$N$r=$@5(B. 2011-11-21 Tsuyoshi Kitamoto * doc/skk.texi (skk-show-mode-style): $B99?7(B. ($BJ8;z%3!<%I4XO"(B): $B99?7(B. * experimental/skk-search-web.el: $BDI2C(B. * SKK-MK (SKK_MODULES): skk-search-web $B$rDI2C(B. 2011-11-20 Tsuyoshi Kitamoto * skk-show-mode.el (skk-show-mode-inline): New file. * SKK-MK (SKK_MODULES): Add skk-show-mode. * skk-vars.el (skk-show-mode-show, skk-show-mode-functions): New internal variables. (skk-show-mode-style): New user option. * doc/skk.texi (skk-show-mode-style): $BDI2C(B. 2011-11-19 Tsuyoshi Kitamoto * doc/skk.texi (SKK$B$H$O$J$K$+(B): $B99?7(B. * skk-inline.el (skk-add-background-color): docstring $B$r=$@5(B. (skk-inline-show-vertically): $B%=!<%9%3!<%I>e$N%$%s%G%s%HI}8m$j(B $B$r=$@5(B. 2011-11-18 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-wiktionary-preferred-lang-alist): New user option. * skk-annotation.el (skkannot-wikt-preferred-lang-regexp) (skkannot-wikt-find-preferred-langs): New functions. (skkannot-wikipedia-format-buffer): In wiktionary, prefer word langs found in skk-annotation-wiktionary-preferred-lang-alist. 2011-11-15 Tetsuo Tsukamoto * skk-annotation.el (skkannot-dict-exec-find, skkannot-sit-for) (skkannot-py-send-string skkannot-py-send-command) (skkannot-DictServ-cache, skkannot-dict-buffer-format) (skkannot-start-dict-process, skkannot-wikipedia-clean-sup) (skkannot-wikipedia-clean-sub, skkannot-wikipedia-format-buffer) (skkannot-wikipedia-remove-nested, skkannot-wikipedia-retrieved) (skkannot-wikipedia-test-html-tag, skkannot-treat-wikipedia) (skkannot-cache, skkannot-generate-url) (skkannot-wikipedia-normalize-word, skkannot-url-installed-p): Abbreviate function names. (skkannot-treat-wikipedia): Remove autoload cookie. (skk-annotation-show-buffer): Use `skk-reset-henkan-count'. * skk-vars.el (skkannot-remaining-delay, skkannot-buffer-origin) (skkannot-py-buffer, skkannot-url-installed-p) (skkannot-en-wiktionary-lang-regexp) (skkannot-en-wiktionary-part-of-speech-regexp) (skkannot-ja-wiktionary-lang-regexp) (skkannot-ja-wiktionary-part-of-speech-regexp): Abbreviate internal variable names. 2011-11-14 Tsuyoshi Kitamoto * skk-vars.el (skk-lookup-get-content-nth-dic): docstring $B$r=$@5(B. * doc/skk.texi ($B%"%N%F!<%7%g%s$H$7$F(BEPWING$B<-=q$rI=<($9$k(B): $BDI2C(B. 2011-11-14 Tetsuo Tsukamoto * skk-annotation.el: Autoload `run-python'. (skk-annotation-start-python): Abolish the 2nd optional arg. 2011-11-13 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-lookup-DictionaryServices): Update the rule for truncating annotations. * skk-annotation.el (skk-annotation-exclude-dict-maybe): Abolish function. (skk-annotation-send-python-string) (skk-annotation-send-python-command): New functions. (skk-annotation-start-python): Rename the newly created buffer to an skk specific one. Restore the original value of python-buffer after that. * skk-vars.el (skk-annotation-other-sources): Remove `dict' from the default value. Move `ja.wiktionary' to the top. * skk-macs.el (skk-reset-henkan-count) (skk-escape-from-show-candidates): New functions. * skk-annotation.el (skk-annotation-sit-for) (skk-annotation-wait-for-input) * skk.el (skk-henkan-show-candidate-subr): Use them. * skk-vars.el (skk-annotation-python-program): Simply find "python" executable. * skk-annotation.el (skk-annotation-start-python): Call `set-buffer-process-coding-system'. (skk-annotation-lookup-DictionaryServices): Make command a little bit simple. Insert the command if it has not been echoed. Output a header line. (skk-annotation-DictionaryServices-cache): Take word instead of command as an argument. Take optional arg truncate. 2011-11-13 Tsuyoshi Kitamoto * skk-vars.el (skk-lookup-get-content-nth-dic) : New user option. (skk-lookup-get-content-default-dic) (skk-lookup-get-content-default-dic-name): New internal variables. * skk-lookup.el (skk-lookup-pickup-headings): Fix docstring. (skk-lookup-get-content, skk-lookup-get-content-setup-dic): New Function. 2011-11-12 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-lookup-DictionaryServices) (skk-annotation-loop-interval): New user options. (skk-annotation-python-program, skk-annotation-process-buffer): New variables. (skk-annotation-dict-program): Default to skk-annotation-python-program under Darwin. (skk-annotation-other-sources): Add `DictionaryServices'. Move `ja.wikitionary' next to `ja.wikipedia'. * skk-annotation.el (skk-annotation-start-python) (skk-annotation-DictionaryServices-cache) (skk-annotation-lookup-DictionaryServices): New functions. (skk-annotation-find-and-show, skk-annotation-wikipedia) (skk-annotation-wikipedia-1, skk-annotation-wikipedia-cache): Modify to accept `DictionaryServices'. (skk-annotation-lookup-region-or-at-point): Alias to `skk-annotation-wikipedia-region-or-at-point'. (skk-annotation-wait-for-input): Modify according to it. * skk.el (skk-mode-invoke, skk-preload): Call `skk-annotation-start-python' if skk-annotation-lookup-DictionaryServices is non-nil. 2011-11-11 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-lookup-dict): Accept an optional arg truncate for candidate listing. Add autoload cookie. Do not kill or erase buffer before the throw. (skk-annotation-preread-dict): Take an optional arg nowait. (skk-annotation-wikipedia-format-buffer): Avoid a loop in ja.wikitionary articles. (skk-annotation-find-and-show): Fix the order in skk-annotation-wikimedia-srcs. * skk-vars.el (skk-annotation-dict-program) (skk-annotation-dict-program-arguments): Check the system type darwin instead of the feature ns. 2011-11-10 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-dict-coding-system): New user option. * skk-annotation.el (skk-annotation-dict-exec-find) (skk-annotation-exclude-dict-maybe): New functions. (skk-annotation-find-and-show) (skk-annotation-wikipedia-region-or-at-point): Use them. (skk-annotation-start-dict-process): Call `skk-process-kill-without-query' here. Set coding-system-for-read according to skk-annotation-dict-coding-system. 2011-11-10 Tsuyoshi Kitamoto * doc/skk.texi: $BHy=$@5(B. 2011-11-10 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-start-process): Locally set coding-system-for-read. Encode word in utf-8. (skk-annotation-preread-dict): Set skk-annotation-remaining-delay. (skk-annotation-lookup-dict): Do not reset skk-annotation-remaining-delay here. 2011-11-07 Tetsuo Tsukamoto * skk-macs.el (skk-process-kill-without-query): New function. * skk-server.el (skk-open-network-stream): Use it. * skk-annotation.el (skk-annotation-find-and-show): Always call `skk-annotation-show'. (skk-annotation-find-and-show) (skk-annotation-wikipedia-region-or-at-point): Return nil even if `executable-find' causes an error. (skk-annotation-lookup-dict): Call `skk-process-kill-without-query'. 2011-11-07 Tsuyoshi Kitamoto * doc/skk.texi ($BNN0h$NA`:n(B): skk-romaji-*-by-hepburn $B$r(B @defvr. ($BF0E*Jd40(B): skk-dcomp-multiple-activate $B$r99?7(B. ($B30It%3%^%s%I$+$i%"%N%F!<%7%g%s$r * skk-vars.el (skk-annotation-original-buffer): New internal variable. * skk-annotation.el (skk-annotation-sit-for): New function. (skk-annotation-find-and-show, skk-annotation-preread-dict) (skk-annotation-lookup-dict): Use it. Always set process. 2011-11-06 Tetsuo Tsukamoto * skk-vars.el (skk-annotation-delay, skk-annotation-lookup-dict) (skk-annotation-dict-program) (skk-annotation-dict-program-arguments): New user options. (skk-annotation-other-sources): Rename from skk-annotation-wikipedia-sources, which is now defined as an obsolete variable alias. (skk-annotation-remaining-delay, skk-annotation-first-candidate): New variables. * skk.el (skk-start-henkan): When entering henkan-active mode, set skk-annotation-first-candidate to t. * skk-annotation.el (skk-annotation-dict-buffer-format) (skk-annotation-start-dict-process, skk-annotation-preread-dict) (skk-annotation-lookup-dict): New functions. (skk-annotation-find-and-show): If skk-annotation-lookup-dict is non-nil, call them to find an annotation. Wait for skk-annotation-delay before showing the annotation when user is acting quickly. (skk-annotation-wait-for-input): Browse "dict://" instead of "http://" for `dict' annotations. (skk-annotation-message): Modify message. (skk-annotation-wikipedia-1, skk-annotation-wikipedia-cache): When source is `dict', call `skk-annotation-lookup-dict'. (skk-annotation-wikipedia-region-or-at-point): When skk-annotation-dict-program is not available, delete `dict' from skk-annotation-other-sources. 2011-11-06 Tsuyoshi Kitamoto * doc/skk.texi ($B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B, skk-tut-lang) (skk-tooltip-mouse-behavior): $B99?7(B. (skk-tut-use-face, skk-show-num-type-info) (skk-tooltip-parameters): $BDI2C(B. 2011-11-06 Tetsuo Tsukamoto * skk-jisx0201.el: Update comments for JIS X 0201 Roman. 2011-11-05 Tsuyoshi Kitamoto * skk-vars.el (skk-share-private-jisyo): doc string $B$r99?7(B. * doc/skk.texi ($BFI$_$NJd40(B): $B99?7(B. 2011-11-04 Tsuyoshi Kitamoto * doc/skk.texi (skk-extra-jisyo-file-list) ($B<-=q8!:w$N@_Dj$N6qBNNc(B): $B99?7(B. 2011-11-03 Tsuyoshi Kitamoto * skk.el (skk-kana-input): $B%$%s%G%s%H$r=$@5(B. 2011-11-02 Tsuyoshi Kitamoto * doc/skk.texi (skk-read-from-minibuffer-function) ($B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B, $B:F5"E*<-=qEPO?(B) ($B3NDj<-=q(B, $BJQ49$N3X=,(B): $B99?7(B. 2011-11-01 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. 2011-10-31 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. 2011-10-30 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-format-buffer): Fix regexp to detect disambiguation pages. 2011-10-30 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. 2011-10-28 Tsuyoshi Kitamoto * skk-cus.el (skk-cus-params-visual): docstring $B$N(B "$B=u8@E*(B" $B$r(B "$B>iD9$J(B" $B$X(B. * doc/skk.texi (skk-server-portnum): $B5-=R8m$j$r=$@5(B. (skk-customize$B$K$h$k@_DjJQ99(B): @subsection $B2=$7$?(B. (skk-gyakubiki-jisyo-list, $BF0E*Jd40(B): $B=$@5(B. 2011-10-28 Tetsuo Tsukamoto * skk-var.el (skk-verbose, skk-verbose-wait) (skk-verbose-message-interval, skk-verbose-intention-face) (skk-verbose-kbd-face, skk-henkan-on-message): Replace in docstrings "$B=u8@E*(B" to "$B>iD9$J(B" to be more accurate. {These are rather reversions than modifications.} 2011-10-27 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. 2011-10-25 Tsuyoshi Kitamoto * skk-tut.el (skktut-init-variables-alist): $B%A%e!<%H%j%"%k$N5/F0(B $B;~$K(B skk-kcode-method $B$r=i4|2=(B. 2011-10-24 Tsuyoshi Kitamoto * doc/skk.texi (skk-isearch-use-previous-mode): $B5-=R$r99?7(B. * skk.el (skk-setup-shared-private-jisyo): $B%$%s%G%s%H$r@0M}(B. * skk-vars.el (skk-record-file): docstring $B$r99?7(B. 2011-10-23 Tsuyoshi Kitamoto * skk-vars.el (skk-init-file, skk-count-private-jisyo-candidates-exactly) (skk-auto-insert-paren, skk-auto-start-henkan-keyword-list) (skk-delete-implies-kakutei, skk-verbose): docstring $B$r99?7(B. * doc/skk.texi (skk-jisyo-fix-order): $B5-=R$r99?7(B. * skk-annotation.el (skk-annotation-message): (split-string ...) $B$r(B (delete "" (split-string ...)) $B$XJQ99(B [skk 7513]. 2011-10-22 Tsuyoshi Kitamoto * SKK-MK (SKK-MK-what-where): interactive-p() $B$KBe$($F(B noninteractive $B$r;HMQ(B. 2011-10-22 Tsuyoshi Kitamoto * skk-hint.el (skk-hint-setup-hint): $B%a%C%;!<%8$NFbMF$r=$@5(B. * skk-kakasi.el (skk-kakasi-region): $BF1>e(B. * skk.el (skk-record-jisyo-data): docstring $B$r=$@5(B. * doc/skk.texi: $BHy=$@5(B. 2011-10-21 Tsuyoshi Kitamoto * doc/skk.texi: $BHy=$@5(B. 2011-10-18 Tsuyoshi Kitamoto * doc/skk.texi: $BHy=$@5(B. 2011-10-04 Tsuyoshi Kitamoto * doc/skk.texi: $BHy=$@5(B. 2011-08-14 Tetsuo Tsukamoto * skk-emacs.el (skk-tooltip-relative-p): New function. (skk-tooltip-show-at-point): Use it to detect Cocoa Emacs 23. 2011-08-10 Tsuyoshi Kitamoto * bayesian/README.ja: $B%I%-%e%a%s%H$NHy=$@5(B. * bayesian/bskk: $B%I%-%e%a%s%H$NHy=$@5(B. RCS $B$N%-!<%o!<%IE83+(B Id $B$H(B Date $B$rA^F~(B. 2011-07-21 Tsuyoshi Kitamoto * skk-study.el (skk-study-remove-theme): skk-error() $B$KBe$($F(B skk-message() $B$r;HMQ(B. 2011-07-19 Tsuyoshi Kitamoto * skk-azik.el (skk-azik-additional-rom-kana-rule-list): $B!V;R2;(B + $B%T%j%*%I!W$NAH$_9g$;!"6qBNE*$K$O $B$5$s!"(BTeika Kazura $B$5$s$+$i$NDs0F(B [skk 7485]. 2011-07-15 Tsuyoshi Kitamoto * skk-tut.el (skktut-make-windows, skktut-end-tutorial): switch-to-buffer() $B$KBe$($F(B pop-to-buffer() $B$r;HMQ(B. (skktut-end-tutorial): $B=*N;;~%a%C%;!<%8$NJ88@$rHy=$@5(B. 2011-07-14 Tsuyoshi Kitamoto * skk-vars.el (skk-tankan-mode-original-window-configuration): $B?7$?$JJQ?t(B. * skk-tankan.el (skk-tankan): M-x skk-tankan $B * skk-vars.el (skk-update-jisyo-function) (skk-save-jisyo-function): docstring $B$r99?7(B. 2011-07-10 Tsuyoshi Kitamoto * skk.el (skk-kakutei, skk-search-jisyo): $B%3%a%s%H$rDI2C(B. * doc/skk.texi (skk-search-jisyo-file): $B99?7(B. 2011-07-09 Tetsuo Tsukamoto * skk-emacs.el (skk-tooltip-show-at-point): Workaround for NTEmacs with its frame maximized. Eval the frame parameters left and top. 2011-07-09 Tsuyoshi Kitamoto * skk.el (skk-save-jisyo-original, skk-create-file) (skk-get-jisyo-buffer, skk-search-jisyo-file) (skk-compose-ignore-word): $B%3%a%s%H$d(B docstring $B$K5-:\$N$"$C$?C18l(B $B!V%*%W%7%g%s0z?t!W$r!V%*%W%7%g%J%k0z?t!W$XE}0l$7$?(B. * skk-macs.el (skk-erase-prefix): $BF1>e(B. * skk-jisyo-edit-mode.el (skk-edit-private-jisyo): $BF1>e(B. * skk-gadget.el (skk-ad-to-gengo, skk-gengo-to-ad): $BF1>e(B. 2011-07-08 Tsuyoshi Kitamoto * skk-server.el (skk-server-version): skk-error() $B$N0z?t$N=g=x$,5U$G(B $B$"$C$?$?$a!"$3$l$r=$@5(B. 2011-07-02 Tsuyoshi Kitamoto * doc/skk.texi: $B99?7(B. * skk-kcode.el (skk-display-code-for-char-at-point): if() $B$K$D$$$F!"(Bthen $B$G$b(B else $B$G$b(B t $B$rJV$9%3!<%I$G$"$k$?$a!"(Bif() $B$r(B $BH4$1$?$"$H$K(B t $B$rI>2A$9$k$h$&$K$7$?(B. (skk-display-code): "$BH=JL$G$-$J$$J8;z$G$9(B" $B$K$D$$$F!"(Bskk-error() $B$r(B $B$d$a$F%a%C%;!<%82=$7$?(B. $B$3$l$^$G$NI=<(J}K!!J%D!<%k%A%C%W$^$?$O%(%3!<%(%j%"!K$K2C$(!"JL%&%#%s(B $B%I%&$G$NI=<($r%5%]!<%H$7$?(B. skk-show-candidates-always-pop-to-buffer $B$HO"F0$9$k(B. 2011-07-02 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.3.50. 2011-07-01 Tsuyoshi Kitamoto * Version 14.3 Juso released. * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.3. 2011-06-28 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-get-char-data-internal): let $B$G:Q$`2U=j(B $B$r(B let* $B$+$i(B let $B$XJQ99(B. * skk-look.el (skk-look-1): $BF1>e(B. * skk-kcode.el (skk-display-code) (skk-list-chars-find-char-string-for-code): $BF1>e(B. * skk-jisx0201.el (skk-set-okurigana): $BF1>e(B. * skk.el (newline, newline-and-indent): use skk-called-interactively-p instead of interactive-p. 2011-06-26 Tsuyoshi Kitamoto * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.94. 2011-06-26 Tsuyoshi Kitamoto * doc/skk.texi (skk-server-version): ($B%5!<%P%3%s%W%j!<%8%g%s(B): $BDI2C(B. * skk-vars.el (skk-kcode-method): 'this-key $B$rDI2C(B. (skk-server-report-response): docstring $B$r=$@5(B. * skk-kcode.el (skk-input-by-code-or-menu): skk-kcode-method $B$NF0:n$K(B 'this-key $B$rDI2C(B. 2011-06-25 Tsuyoshi Kitamoto * skk-macs.el (skk-fit-window): New function. * skk-annotation.el (skk-annotation-show-buffer): Use it. * skk.el (skk-henkan-show-candidates-buffer) (skk-show-num-type-info): Use it. 2011-06-23 Tsuyoshi Kitamoto * doc/skk.texi (skk-henkan-face): $B2CI.(B. (skk-make-face): $B=$@5(B. 2011-06-21 Tsuyoshi Kitamoto * doc/skk.texi (skk-kcode-method): $BDI2C(B. * skk-kcode.el (skk-list-chars-next-line) (skk-list-chars-previous-line): $B%3!<%I$N8+D>$7(B. 2011-06-19 Tetsuo Tsukamoto * skk-kcode.el (skk-list-chars): Move to skk-list-chars-default-charstr if it is set. (skk-list-chars-jump): Rename from `skk-list-chars-move-to-char'. (skk-list-chars-move-to-char): Redefine as a function to just move point. * skk-vars.el (skk-list-chars-mode-map): Modify for `skk-list-chars-jump'. (skk-list-chars-default-charstr): New variable. 2011-06-19 Tetsuo Tsukamoto * skk-kcode.el (skk-input-by-code-or-menu): Redefine to check skk-kcode-method. (skk-kcode-read-code-string, skk-kcode-parse-code-string) (skk-kcode-find-char-string, skk-list-chars-move-to-char): New functions. (skk-list-chars-code-input): Call `skk-list-chars-move-to-char' with the optional arg non-nil. (skk-display-code): Use `skk-char-charset'. * skk-macs.el (skk-char-charset): New function. * skk-vars.el (skk-kcode-method): New user option. (skk-list-chars-mode-map): Define "g" for `skk-list-chars-move-to-char'. 2011-06-18 Tsuyoshi Kitamoto * skk-vars.el (skk-tooltip-x-offset, skk-tooltip-y-offset) (skk-tut-lang): docstring $B$r=$@5(B. * doc/skk.texi (skk-tut-lang, skk-hint-start-char) (skk-tooltip-hide-delay): $BDI2C(B. ($BJQ490LCV$N;XDjJ}K!(B): $B99?7(B. 2011-06-16 Tsuyoshi Kitamoto * doc/skk.texi (skk-annotation-browse-key): $BDI2C(B. 2011-06-15 Tetsuo Tsukamoto * doc/skk.texi: Modify for ja-dic. 2011-06-12 Tetsuo Tsukamoto * skk-cus.el (skk-cus-set): Accept an optional arg ALIST. * skk-jisyo-edit-mode.el: Require skk-cus instead of custom and cus-edit. (skk-edit-private-jisyo): Call `skk-cus-set' instead of directly calling `custom-save-all'. (skk-jisyo-edit-mode): Move the previous docstring change describing the local key bindings to the docstring of `skk-edit-private-jisyo' which actually binds these keys. 2011-06-12 Tetsuo Tsukamoto * skk-vars.el (skk-jisyo-edit-user-accepts-editing): New Variable. * skk-jisyo-edit-mode.el: Require custom, cus-edit and skk-vars. Require skk-macs at compile time. (skk-edit-private-jisyo): Check skk-jisyo-edit-user-accepts-editing to know if user really wants to edit the private dictionary at her/his own risk. 2011-06-12 Tsuyoshi Kitamoto * skk-jisyo-edit-mode.el (skk-edit-private-jisyo):$B * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.93. 2011-06-11 Tsuyoshi Kitamoto * skk-setup.el.in: 2011-05-20 $B$N!V%-!<%P%$%s%I(B C-f10 $B$K(B skk-edit-private-jisyo $B$r3d$jEv$F!W$OC$7$^$9(B. * skk-vars.el (skk-tooltip-face): docstring $B$r=$@5(B. (skk-display-code-tankan-radical-face) (skk-display-code-tankan-annotation-face) (skk-list-chars-face, skk-list-chars-table-header-face): New face. (skk-verbose-kbd-face): $BB0@-(B inverse-video $B$rC$7!"%G%U%)%k%H(B $B?'$rM?$($?(B. (skk-verbose-intention-face): $BB0@-(B bold $B$r(B t $B$H$7$F$_$?(B. * skk-kcode.el: require font-lock $B$rL58z2=(B($B%3%a%s%H2=(B). (skk-display-code): skk-display-code-tankan-radical-face, skk-display-code-tankan-annotation-face $B$rF3F~(B. (skk-list-chars-sub): skk-list-chars-table-header-face $B$rF3F~(B. (skk-list-chars): skk-list-chars-face $B$rF3F~(B. * doc/skk.texi: skk-jisyo-registration-badge-face, skk-display-code-tankan-radical-face, skk-display-code-tankan-annotation-face, skk-list-chars-face, skk-list-chars-table-header-face $B$K4X$9$k5-=R$rDI2C(B. skk-input-by-code-or-menu $B$K4X$9$k5-=R$rI|3h(B. 2011-06-10 Tsuyoshi Kitamoto * skk-vars.el (skk-jisyo-registration-badge-face) :New face. (skk-verbose-kbd-face): $BB0@-(B inverse-video $B$r(B t $B$H$7$F$_$?(B. * skk.el (skk-henkan-in-minibuff): Use skk-jisyo-registration-badge-face. * context-skk.el (context-skk-insert): message $B4X?t$N;H$$J}$r=$@5(B. * skk-vars.el (skk-rom-kana-base-rule-list): 2010-12-09 $B$N(B commit $B$rD{@5!#(B\ $B$N%?%$%W$O(B skk-input-by-code-or-menu $B$N5/F0$KLa$9(B. 2011-06-10 Tetsuo Tsukamoto * skk.el (skk-toggle-isearch-mode): message $B4X?t$N;H$$J}$r=$@5(B. [skk 7438]. 2011-06-09 Tetsuo Tsukamoto * skk-kcode.el (skk-display-code, skk-input-by-code-or-menu-jump): Add missing format strings to `message'. * skk-vars.el (skk-menu-items): Ditto. 2011-06-09 Tsuyoshi Kitamoto * skk-vars.el (skk-verbose-intention-face, skk-verbose-kbd-face): New face. * skk-annotation.el (skk-annotation-message): Use new face. * skk.el (skk-setup-verbose-messages): Use new face. * doc/skk.texi: $B>e5-(B face $B$K4X$9$k5-=R$rDI2C(B. * skk.el (skk-toggle-isearch-mode): $B4X?t(B message $B$NBh(B1$B0z?t$K(B "%s" $B$r(B $BIU2C(B. * skk-annotation.el (skk-annotation-save-and-quit) (skk-annotation-quote): $BF1>e(B. * skk-macs.el (ignore-errors): 2011-06-04 $B$NJQ99$rC$7(B. [skk 7427]. 2011-06-08 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia): Also search "Word" for "word". This is needed for proper nouns. (skk-annotation-wikipedia-1) (skk-annotation-wikipedia-normalize-word): Take an optional arg PRESERVE-CASE. 2011-06-08 Tsuyoshi Kitamoto * skk-vars.el (skk-kakutei-jisyo, skk-search-prog-list) (skk-jisyo-updated, skk-rom-kana-rule-list): docstring $B$r=$@5(B. 2011-06-06 Tsuyoshi Kitamoto * skk-inline.el (skk-add-background-color): $B0z?t(B COLOR $B$N%A%'%C%/$r(B $B873J$K$9$k$?$a(B color-defined-p $B$rDI2C(B. 2011-06-05 Tsuyoshi Kitamoto * skk-annotation.el (skk-annotation-save-and-quit) (skk-annotation-quote): $BM>J,$J(B %s $B$r:o=|(B. * skk-macs.el (skk-message, skk-error, skk-yes-or-no-p) (skk-y-or-n-p): Update docstring. * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.92. 2011-06-05 Tsuyoshi Kitamoto * doc/skk.texi (skk-search-excluding-word-pattern-function): $BDI2C(B. * skk-vars.el (skk-search-excluding-word-pattern-function): Update docstring. * skk.el (skk-update-jisyo-p): Update docstring. 2011-06-04 Tsuyoshi Kitamoto * skk-macs.el (ignore-errors): GNU Emacs 22 $B0J2<$N>l9g$K(B defmacro $B$7$F$$$^$7$?$,!"(BGNU Emacs 21.4 (cl-macs.el) $B$K$bB8:_$7$F$*$jIaDL$K(B $B;H$($k$3$H$+$i!"(Bskk-macs.el $B$+$i$O:o=|$7$?!#(B * skk-vars.el (skk-read-from-minibuffer-function): Update docstring. * skk-macs.el (skk-downcase): Update docstring. * doc/skk.texi (skk-read-from-minibuffer-function): $BDI2C(B. * skk-tut.el (skktut-init-variables-alist): $B=i4|2=BP>]$NJQ?t$H$7$F(B skk-dcomp-multiple-activate, skk-read-from-minibuffer-function, skk-verbose, debug-on-error $B$rDI2C(B. * skk.el (skk-ovwrt-len, skk-compute-henkan-lists): Use line-end-position instead of (progn (end-of-line) (point)). * skk-tut.el (skktut-next-answer-buffer, skktut-today): Ditto. * skk-server-completion.el (skk-server-completion-search-midasi): Ditto. * skk-auto.el (skk-okuri-search-subr-original): Ditto. * skk-annotation.el (skk-annotation-last-word-1): Ditto. * skk-auto.el, skk-isearch.el, skk-lookup.el, skk-num.el, skk-study.el: * skk-tankan.el, skk-vars.el, skk.el: function foo $B$r(B #'foo $B$X$H=q$-49$((B. * skk-annotation.el, skk-comp.el, skk-cursor.el, skk-cus.el: * skk-develop.el, skk-gadget.el: * skk-isearch.el, skk-jisx0201.el, skk-jisyo-edit-mode.el: * skk-kcode.el, skk-macs.el, skk-num.el, skk-server-completion.el: * skk-tankan.el, skk-tut.el, skk-vars.el, skk.el: lambda $B$O%^%/%mE83+$G(B function $BIU2C$5$l$k$?$a(B #' $B$OITMW(B. 2011-06-02 Tsuyoshi Kitamoto * skk-emacs.el (skk-emacs-menu-replace, skk-tooltip-resize-text): $B%3!<%I$N@0M}(B. * skk-tankan.el (skk-tankan-select-tankanji-kouho): Use cddr instead of cdr cdr. * skk-kcode.el (skk-input-by-code-or-menu-jump): Ditto. * skk-emacs.el (skk-emacs-mouse-position): Ditto. * skk-study.el (skk-study-check-alist-format-1): Use cdar instead of cdr car. * skk-num.el (skk-num-convert): Ditto. * skk.el (skk-current-kuten, skk-nunion): Use cadr instead of car cdr. * skk-macs.el (eval-when-compile, eval-when-compile): Ditto. * skk-kcode.el (skk-input-by-code-or-menu-jump): Ditto. * skk-emacs.el (skk-emacs-mouse-position): Ditto. * skk-study.el (skk-study-check-alist-format-1): Use caar instead of car car. * skk-kcode.el (skk-input-by-code-or-menu-jump): Ditto. * skk-gadget.el (skk-default-current-date): Ditto. 2011-06-01 Tsuyoshi Kitamoto * skk.el (skk-setup-jisyo-buffer, skk-kana-input) (skk-jisx0208-latin-insert, skk-henkan-show-candidate-subr) (skk-check-size-and-do-save-jisyo): Use zerop instead of `= foo 0'. * skk-xemacs.el (skk-xemacs-balloon-help-resize-help-frame): ditto. * skk-tankan.el (skk-tankan-select-tankanji-kouho): ditto. * skk-study.el (skk-study-search-1, skk-study-read-1): ditto. * skk-lookup.el (skk-lookup-process-okurigana): ditto. * skk-look.el (skk-look-1): ditto. * skk-kcode.el (skk-list-chars-sub): ditto. * skk-isearch.el (skk-isearch-redo-function): ditto. * skk-hint.el (skk-previous-candidate): ditto. * skk-dcomp.el (skk-dcomp-multiple-get-candidates) (skk-dcomp-multiple-show): ditto. * skk-comp.el (skk-comp-do): ditto. 2011-05-31 Tsuyoshi Kitamoto * skk-macs.el (skk-key-binding-member): $BITMW$J(B lambda $B$r:o=|(B. * skk-tankan.el (skk-tankan-select-tankanji-kouho): lambda $B$r(B #'lambda $B$XJQ99(B. 2011-05-30 Tsuyoshi Kitamoto * skk-macs.el (skk-delete-overlay): New macro. (skk-inline-hide): Remove function. * skk-dcomp.el (skk-dcomp-multiple-hide): Remove function. (skk-dcomp-cleanup-buffer, skk-dcomp-multiple-show) (skk-dcomp-before-kakutei, skk-dcomp-after-delete-backward-char): Use macro skk-delete-overlay. * skk-inline.el (skk-inline-hide-1): Remove function. (skk-inline-show): Use macro skk-delete-overlay. * skk.el (skk-henkan, skk-henkan-in-minibuff): Use macro skk-delete-overlay. 2011-05-29 Tsuyoshi Kitamoto * skk-develop.el (before-init-hook): $BITI,MW$J%-!<%o!<%I$r:o=|(B. * skk-comp.el (skk-comp-search-current-buffer) (skk-comp-re-search-current-buffer): $B%$%s%G%s%H$r@07A(B. (skk-comp-by-history): Use function skk-remove-duplicates. * skk-emacs.el (skk-emacs-prepare-menu) (skk-emacs-prepare-modeline-properties): $B%$%s%G%s%H$r@07A(B. * skk-vars.el (skk-list-chars-original-window-configuration): New Variable. * skk-kcode.el (skk-list-chars-quit): Use skk-list-chars-original-window-configuration. (skk-list-chars-insert): $BA^F~@h%P%C%U%!$r(B buffer-live-p $B$G3NG'(B. * skk-annotation.el (skk-annotation-message): $B=u8@E*%a%C%;!<%8$r(B face $B$G?'IU$1$7$?(B. (skk-annotation-insert): docstring $B$rIU2C$7$?(B. (skk-annotation-get): $B%3!<%I8+D>$7(B. * skk.el (skk-setup-verbose-messages): $B=u8@E*%a%C%;!<%8$r(B face $B$G?'IU$1$7$?(B. 2011-05-28 Tsuyoshi Kitamoto * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.91. 2011-05-28 Tsuyoshi Kitamoto * skk-vars.el (XXX workaround): while $B$+$i(B dolist $B$XJQ99(B. * skk-tankan.el (skk-tankan): while $B$+$i(B dolist $B$XJQ99(B. * skk-num.el (skk-num-flatten-list): while $B$+$i(B dolist $B$XJQ99(B. * skk-kcode.el (skk-list-chars): while $B$+$i(B dotimes $B$XJQ99(B. * skk-gadget.el (skk-today-execute-char): while $B$+$i(B dolist $B$XJQ99(B. * skk.el (skk-remove-minibuffer-setup-hook, skk-setup-auto-paren) (skk-kill-local-variables, skk-search-extra-jisyo-files) (skk-remove-duplicates): while $B$+$i(B dolist $B$XJQ99(B. (skk-define-j-mode-map, skk-define-jisx0208-latin-mode-map) (skk-define-abbrev-mode-map): while $B$+$i(B dotimes $B$XJQ99(B. (skk-mode-exit, skk-setup-charset-list, skk-setup-verbose-messages): $B%3!<%I8+D>$7(B. 2011-05-27 Tsuyoshi Kitamoto * skk.el (skk-get-jisyo-buffer): $B%$%s%G%s%H$r@07A(B. (skk-search, skk-numeric-program-p, skk-search-server) (skk-update-jisyo-original, skk-quote-char): docstring $B$r=$@5(B. (skk-undo-kakutei): skk-error $B$r=|5n(B. (skk-mode-exit): $B%3!<%I8+D>$7(B. 2011-05-25 Tsuyoshi Kitamoto * skk.el (skk-mode-exit): $B%3!<%I8+D>$7(B. (skk-ovwrt-len): $BITMW$J(B let $B$r:o=|(B. (skk-insert-str): skk-ovwrt-len $B$N8F$S=P$7J}K!$rJQ99(B. (skk-kakutei-cleanup-buffer): skk-ovwrt-len $B$N8F$S=P$7J}K!$rJQ99(B. (skk-show-num-type-info): Use fit-window-to-buffer except XEmacs 21.4. 2011-05-24 Tsuyoshi Kitamoto * skk.el (skk-toggle-kutouten): $B%a%C%;!<%8=g$r!V6gE@(B $BFIE@!W$+$i(B $B!VFIE@(B $B6gE@!W$X(B $BJQ99(B. (skk-search-jisyo): $BITMW$J(B progn $B$r:o=|(B. (skk-mode-exit): skk-mode $B$rH4$1$?:]$O(B *$B8uJd(B*$B%P%C%U%!$H(B *SKK annotation*$B%P%C%U%!$r:o=|$9$k$h$&JQ99$7$?(B. 2011-05-23 Tsuyoshi Kitamoto * skk-macs.el (skk-multiple-line-string-width): $B:o=|(B. * skk.el (skk-henkan-show-candidate-subr): skk-multiple-line-string-width $B$KBe$($F(B skk-max-string-width $B$r;HMQ(B. 2011-05-22 Tsuyoshi Kitamoto * skk.el (skk-multiple-line-string-width): skk-macs.el $B$X0\F0(B. (skk-kakutei-cleanup-buffer): $B%$%s%G%s%H$r@07A(B. * skk-macs.el (skk-max-string-width): New function. (skk-multiple-line-string-width): skk.el $B$+$i0\F0(B. * skk-inline.el (skk-inline-show-vertically): Use skk-max-string-width. (skk-inline-show-vertically): $B%$%s%G%s%H$r@07A(B. * skk-dcomp.el (skk-dcomp-multiple-show): Use skk-max-string-width. (skk-dcomp-do-completion, skk-kana-input, skk-comp-previous) (skk-comp, skk-comp-do): $B%$%s%G%s%H$r@07A(B. * skk-kcode.el (skk-display-code): Use replace-regexp-in-string. 2011-05-22 Tsuyoshi Kitamoto * Makefile (VERSION): * doc/skk.texi: * skk-version.el (skk-version): Bump to 14.2.90. 2011-05-22 Tsuyoshi Kitamoto * doc/skk.texi (skk-tooltip-face): $B5-=R$r=$@5(B. * skk-vars.el (skk-tooltip-face): docstring $B$r=$@5(B. * skk-emacs.el (skk-tooltip-show-at-point, skk-tooltip-show-1): docstring $B$rDI2C(B. * skk.el (skk-henkan-show-candidates) (skk-henkan-show-candidate-subr, skk-henkan-in-minibuff) (skk-show-num-type-info, skk-kakutei-initialize): $B%=!<%9%3!<%I$N%$%s%G%s%H$r=$@5(B. 2011-05-21 Tsuyoshi Kitamoto * skk-dcomp.el (skk-dcomp-multiple-show): $B%3%a%s%H$r=$@5(B. * skk.el (skk-kill-emacs-without-saving-jisyo): docstring $B$H(B $B%a%C%;!<%8$r=$@5(B. (skk-multiple-line-string-width): $B5!G=$OJQ$($:%=!<%9%3!<%I$r8+D>$7$?(B. 2011-05-20 Tsuyoshi Kitamoto * skk-vars.el (skk-auto-okuri-process): docstring $B$r99?7(B. * skk-jisyo-edit-mode.el (skk-jisyo-edit-mode): docstring $B$r99?7(B. (skk-edit-private-jisyo): $B4J0W$J%,%$%@%s%9$rI=<((B. * skk-setup.el.in: $B%-!<%P%$%s%I(B C-f10 $B$K(B skk-edit-private-jisyo $B$r(B $B3d$jEv$F(B. 2011-05-19 Tsuyoshi Kitamoto * skk.el (skk-mode): docstring $B$r99?7(B. * skk-vars.el (skk-background-mode): docstring $B$r99?7(B. (skk-auto-start-henkan-keyword-list): docstring $B$r99?7(B. 2011-05-18 Tsuyoshi Kitamoto * SKK-MK (SKK-MK-generate-autoloads-el): kill-buffer $B$NA0$K(B set-buffer-modified-p $B$r(B nil $B$H$7$?(B. 2011-05-16 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Undo the previous changes. instead, set buffer-file-name. 2011-05-15 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Call `autoload-generate-file-autoloads' if it is defined instead of `generat-file-autoloads'. * skk-comp.el (skk-comp-get-regexp): Add autoload cookie. 2011-05-15 Tsuyoshi Kitamoto * doc/skk.texi: $B?7JQ?t(B context-skk-mode-off-message $B$K4X$9$k5-=R(B. * context-skk.el: RCS $B$N%-!<%o!<%IE83+(B Id $B$H(B Date $B$rA^F~(B. (context-skk-mode-off-message): New variable. 2011-05-08 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Set generated-autoload-file under Emacs 24 or later. * skk-annotation.el (skk-annotation-wikipedia-1): If `url-queue-retrieve' is defined, call it instead of `url-retrieve'. 2011-05-04 Tsuyoshi Kitamoto * skk.el (skk-henkan-skk-region-by-func): typo docstring. (skk-setup-modeline, skk-henkan-1, skk-henkan-show-candidates) (skk-previous-candidate, skk-kakutei, skk-update-jisyo-1) (skk-katakana-region, skk-hiragana-region) (skk-jisx0208-latin-region, skk-latin-region) (skk-henkan-skk-region-by-func): $B%=!<%9%3!<%I$N%$%s%G%s%H$r=$@5(B. (skk-make-face): $B5!G=$OJQ$($:!"%=!<%9%3!<%I$r8+D>$7$?(B. 2011-05-03 Tsuyoshi Kitamoto * skk-vars.el (skk-inhibit-ja-dic-search, skk-jisyo-save-count) (skk-jisyo-updated, skk-kuten-touten-alist): docstring $B$r99?7(B. * skk-tankan.el (skk-tankan-search, skk-tankan-bushu-compread): docstring $B$r99?7(B. * skk-server.el (skk-search-server-1): docstring $B$r99?7(B. * skk-macs.el (skk-string<=): docstring $B$r99?7(B. * skk-kcode.el (skk-make-string): docstring $B$r99?7(B. * skk-kakasi.el (skk-hurigana-1): $B%$%s%G%s%H$r@07A(B. (skk-romaji-region, skk-romaji-message): docstring $B$r99?7(B. * skk-gadget.el (skk-clock): docstring $B$r99?7(B. (skk-ad-to-gengo-1): typo (Unkown -> Unknown). * doc/skk.texi: skk-comp-lisp-symbol $B$N5-=R$rDI2C(B. * skk-comp.el (skk-comp-lisp-symbol, skk-search-smart-find) (skk-search-lisp-symbol): docstring $B$r99?7(B. * skk-annotation.el (skk-annotation-add) (skk-annotation-wikipedia-region-or-at-point): docstring $B$r99?7(B. 2011-05-01 Tsuyoshi Kitamoto * doc/skk.texi ($BJQ495Z$S8D?M<-=q$K4X$9$kE}7W(B): $B99?7(B. * skk-vars.el (skk-dcomp-multiple-activate, skk-gengo-alist) (skk-month-alist, skk-day-of-week-alist, skk-isearch-mode-enable) (skk-isearch-mode-string-alist, skk-isearch-start-mode) (skk-isearch-initial-mode-when-skk-mode-disabled) (skk-show-inline, skk-inline-show-face) (skk-inline-show-background-color, skk-delete-okuri-when-quit) (skk-kakutei-early, skk-henkan-okuri-strictly, skk-keep-record) (skk-record-file, skk-preload, skk-status-indicator) (skk-latin-mode-string, skk-hiragana-mode-string) (skk-katakana-mode-string, skk-jisx0208-latin-mode-string) (skk-abbrev-mode-string, skk-emacs-id): docstring $B$r99?7(B. 2011-05-01 Tsuyoshi Kitamoto * doc/skk.texi: skk-share-private-jisyo $B$N5-=R$rDI2C(B. * skk-vars.el: docstring $BFb$NMQ8l!V<-=q%5!<%P!e(B. * skk-server-completion.el: $BF1>e(B. 2011-04-30 Tetsuo Tsukamoto * skk-macs.el (skk-called-interactively-p): Update. 2011-04-26 Tsuyoshi Kitamoto * skk-vars.el (skk-inhibit-ja-dic-search): docstring $B$r99?7(B. * doc/skk.texi: $BJQ?t(B skk-inhibit-ja-dic-search $B$H(B $B4X?t(B skk-search-ja-dic $B$K$D$$$F!"5-=R$rDI2C(B. docstring $B$+$i@Z$jE=$j$7$?$@$1$G$9$N$G!"$b$&>/$78+D>$7$^$9!#(B 2011-04-23 Tsuyoshi Kitamoto * skk-server.el (skk-server-version): skk-called-interactively-p $B$N0z?t$r(B 'any $B$+$i(B 'interactive $B$X$HJQ99(B [skk 7420]. * skk-tut.el (kill-buffer-hook): Ditto. * skk-version.el (skk-version): Ditto. * skk.el (skk-toggle-kutouten, skk-count-jisyo-candidates) (skk-count-jisyo-candidates-original): Ditto. 2011-04-20 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2011-04-18 Tsuyoshi Kitamoto * skk.el (skk-start-henkan, skk-backward-and-set-henkan-point): Fix docstring (use \\[universal-argument] instead of C-u). * skk-vars.el (skk-tut-lang): Ditto. * skk-tankan.el (skk-tankan): Ditto. * skk-annotation.el (skk-annotation-add): Ditto. 2011-04-17 Tsuyoshi Kitamoto * skk-study.el (skk-study-switch-current-theme): Fix docstring. 2011-04-17 Tsuyoshi Kitamoto * skk-macs.el (skk-called-interactively-p): New macro. interactive-p is an obsolete function (as of Emacs 23.2). use called-interactively-p instead. * skk-server.el (skk-server-version): use skk-called-interactively-p instead of interactive-p. * skk-tut.el (kill-buffer-hook): Ditto. * skk-version.el (skk-version): Ditto. * skk.el (skk-toggle-kutouten): Ditto. (skk-count-jisyo-candidates): Ditto. (skk-count-jisyo-candidates-original): Ditto. 2011-04-14 Tsuyoshi Kitamoto * doc/skk.texi: Add skk-study-switch-current-theme, skk-study-remove-theme, skk-study-copy-theme. 2011-04-09 Tsuyoshi Kitamoto * SKK-MK: Fix [skk 7393] remove-hook 'kill-emacs-hook 'skk-save-jisyo. 2011-03-27 Tetsuo Tsukamoto Suggested by Tatsuya Kinoshita . * experimental/skk-study.el: No longer in the repository. * skk-study.el: Install the experimental version. * experimental/GUIDELINE: Update. 2011-03-22 Tetsuo Tsukamoto * skk-vars.el (skk-tut-file): Fix docstring so as to advise users to specify the Japanese tutorial file. (skk-tut-lang): New user option. (skk-tut-file-alist): Abolish. (skk-tut-file-suffix-alist, skk-tut-current-lang): New variables. * skk-tut.el (skk-tut-find-tut-file, skk-tut-nicola-p): New functions. (skktut-init-variables-alist): Use `skk-tut-nicola-p'. (skktut-enable-tutmap): Ditto. (skk-tutorial): Set skk-tut-current-lang. Call `skk-tut-find-tut-file'. (skktut-nicola-tut-file): Specify file name sans directory. (skktut-setup-working-buffer): Accept an argument. 2011-03-21 Tetsuo Tsukamoto * skk-cdb.el (skk-search-cdb-jisyo): Check cdb-path instead of skk-cdb-large-jisyo. * skk-tankan.el (skk-search-tankanji): Do not try to find SKK-JISYO.L or SKK-JISYO.L.cdb. Call `skk-search-ja-dic-maybe' if no other methods are available. 2011-02-21 Tatsuya Kinoshita * experimental/skk-study.el: Do not require pym. Add defvar for jka-compr-compression-info-list and print-quoted at compile time. Use kill-emacs-hook instead of skk-before-kill-emacs-hook. (ring-elements): Remove definition for Emacs 20. (skk-study-save, skk-study-read-1): Remove APEL dependencies. Use `skk-string<' instead of `string<'. 2011-01-23 Tsuyoshi Kitamoto * doc/skk.texi: $B8m;z$N=$@5!"%=!<%9$N@07A(B. 2011-01-15 Tsuyoshi Kitamoto * skk.el (skk-insert-str): Docstring $B$r=$@5(B. (skk-auto-start-henkan): Docstring $B$r=$@5(B. (skk-what-char-type): Docstring $B$r=$@5(B. 2010-01-13 Tetsuo Tsukamoto * skk.el (skk-preload): Rewrite the docstring bacause 1) the original one was based on the old version of the function and was not complete, and 2) the previous modification by Mr. Tsuyoshii Kitamoto contains some misunderstandings. Of course I appreciate his efforts on improvement of the document so much. Please consult me if there remains any issue about it. (skk-preload-jisyo): Undo the previous indent fix which I believe is unnecessary, even though I really appreciate his attitude toward better and more readble codes. Please feel free to consult me if anyone still thinks it is important. 2011-01-12 Tsuyoshi Kitamoto * skk.el (skk-preload): modify docstring. (skk-preload-jisyo): modify indent. (skk-make-face): modify indent. 2011-01-10 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code-for-char-at-point): interactive. (skk-list-chars): interactive. 2011-01-08 Teika Kazura * doc/skk.texi: Update. 2011-01-07 Tsuyoshi Kitamoto * SKK-CFG: Update comment. * doc/skk.texi: Add $BBPOCE*$J%$%s%9%H!<%k(B. * SKK-MK (SKK_INFO_DIR_FILE): New variable. (SKK-MK-install-info-1): Separate from SKK-MK-install-info. (DDSKK_Interactive_Installer): New. 2011-01-05 Tsuyoshi Kitamoto * SKK-MK (SKK-MK-make-setup-file): search-forward $B<:GT$N860x$G$"$C$?(B STRING $B0c$$(B "Initial setup for SKK" $B$r(B "initial setup for SKK" $B$X=$@5(B. skk-setup.el.in $B$H$N@09g@-$r?^$C$?(B. (SKK-MK-install-info): Fix indent. 2011-01-03 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-bushu-compread): introduce skk-tankan-face. * skk.el (skk-insert): Add comment. 2011-01-03 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.2.50. 2011-01-01 Tsuyoshi Kitamoto * Version 14.2 Mikuni released. * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.2. 2010-12-29 Tsuyoshi Kitamoto * SKK-CFG: Update comment. * doc/skk.texi: Update. 2010-12-26 Tsuyoshi Kitamoto * skk-jisyo-edit-mode.el (skk-edit-private-jisyo): Fix string. * doc/skk.texi: Update. * skk.el (skk-start-henkan): Fix docstring. (skk-backward-and-set-henkan-point): Fix docstring. (skk-check-size-and-do-save-jisyo): Fix docstring. * skk-vars.el (skk-cursor-abbrev-color): Fix string. (skk-kcode): Fix string. * skk-emacs.el (skk-emacs-menu-resource-ja): Fix string. 2010-12-25 Tsuyoshi Kitamoto * skk-vars.el: Update comment. * skk-comp.el: Update comment. * doc/skk.texi: Update. 2010-12-25 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.1.93. 2010-12-23 Tsuyoshi Kitamoto * skk.el (skk-latin-mode): Fix docstring. (skk-jisx0208-latin-mode): Fix docstring. (skk-toggle-characters): Fix docstring. (skk-henkan-in-minibuff): Fix prompt message. * doc/skk.texi (skk-dcomp-multiple-activate): Update. 2010-12-21 Tsuyoshi Kitamoto * skk-kcode.el (skk-list-chars-forward, skk-list-chars-backward): Remove. (skk-list-chars-sub): Propertize mouse-face 'highlight when insert char. * skk-vars.el (skk-list-chars-skip-chars): Remove. (skk-list-chars-mode-map): Use next-completion/previous-completion instead of skk-list-chars-forward/skk-list-chars-backward. (skk-display-code-[prompt|char]-face): Update docstring. * doc/skk.texi: Add skk-tankan-face, skk-display-code-prompt-face and skk-display-code-char-face. 2010-12-19 Tsuyoshi Kitamoto * skk-vars.el (skk-tankan-face): New face. (skk-tankan-overlay): New variable. (skk-display-code-prompt-face): New face. (skk-display-code-char-face): New face. * skk-tankan.el (skk-tankan-overlay): New function. (skk-tankan-mode-prev, skk-tankan-mode-next): Use skk-tankan-overlay. (skk-tankan): Use skk-tankan-face. * skk-kcode.el (skk-display-code): Use skk-display-code-prompt-face and skk-display-code-char-face. 2010-12-17 Tsuyoshi Kitamoto * skk-vars.el (skk-search-prog-list): $BI8=`$K(B skk-tankan-search $B$r2C$($?(B. * doc/skk.texi: Add skk-save-jisyo-instantly. Update FAQ. 2010-12-17 Yu-ji Hosokawa * skk-vars.el (skk-save-jisyo-instantly, skk-jisyo-updated): New variable. (skk-inhibit-ja-dic-search): Fix docstring. * skk.el (skk-henkan-in-minibuff, skk-update-jisyo): Use it. 2010-12-16 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk-macs.el (skk-find-coding-system): Add docstring. 2010-12-12 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk-annotation.el: Update comment. * skk-vars: Insert new line for legible. * skk-tankan.el (skk-search-by-stroke-or-radical): Update Docstring. * skk-kcode.el (skk-list-chars-mode): Update comment. (skk-list-chars-other-charset): intern $B$KBe$($F(B intern-soft $B$r;HMQ(B. 2010-12-12 Tsuyoshi Kitamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.1.92. 2010-12-12 Tsuyoshi Kitamoto * skk-kcode.el (skk-list-chars-next-line): Skip separate line. (skk-list-chars-previous-line): Ditto. * skk-vars.el (skk-list-chars-mode-map): Add C-f, C-b, C-n, C-p. 2010-12-11 Tetsuo Tsukamoto * skk-kcode.el: Require font-lock at compile time. (skk-display-code, skk-list-chars): Require font-lock. (skk-list-chars): Workaround for XEmacs. Refer to variable font-lock-doc-face instead of directly using the face with the same name. 2010-12-11 Tsuyoshi Kitamoto * doc/skk.texi: Update for $BJ8;z%3!<%IF~NO(B. * skk-tankan.el (skk-search-by-stroke-or-radical): $BIt * skk-tankan.el (skk-tankan): $B%3!<%I8+D>$7!#(B * skk-kcode.el (skk-list-chars-code-input): New function. (skk-list-chars-code-input-1): New function. (skk-list-chars): C-u \ $B$G(B $B%+!<%=%k0LCV$NJ8;z$r0z?t$K(B skk-list-chars $B$r * skk-vars.el (skk-rom-kana-base-rule-list): \ $B$N * skk-kcode.el (skk-list-chars): New function. to execute with type C-u $. 2010-12-05 Tsuyoshi Kitamoto * skk-kcode.el (skk-input-by-code-or-menu): $B7ZHy$J=$@5!#(B (skk-display-code): $B7ZHy$J=$@5!#(B 2010-12-04 Tsuyoshi Kitamoto * doc/skk.texi: Replace string from $B4A;z%3!<%I(B to $BJ8;z%3!<%I(B. * skk-kcode.el (skk-input-by-code-or-menu): JIS X 0213 $B$N#2LL$N6hE@(B $BHV9f$rF~NO2DG=$H$7$?!#7A<0(B 00-00-00 $B$r#2LL$H$_$J$9!#(B Unicode $B$NId9f0LCV$rF~NO2DG=$H$7$?!#7A<0(B U+nnnnn $B!#(B (skk-char-to-hex): $B%3!<%I8+D>$7!#(B (skk-display-code): $B?'IU$1(B (font-lock-keyword-face) $B$7$F8+$d$9$/$7$?!#(B 2010-12-02 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-test-html-tag): Bind coding-system-for-write while calling gzip. * skk-inline.el (skk-inline-hide-1): Rename from `skk-inline-hide'. * skk-macs.el (skk-inline-hide): New function. Call `skk-inline-hide-1'. 2010-12-02 Tetsuo Tsukamoto * doc/skk.texi: Update for skk-search-katakana, skk-search-sagyo-henkaku, skk-extra-jisyo-file-list, and ja-dic. * skk-annotation.el (skk-annotation-wikipedia-test-html-tag): New function separated from skk-annotation-wikipedia-retrieved. Check if the html data ends with . Prior to the test gunzip the data if it is gzipped. 2010-12-02 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): Display UNICODE. 2010-12-01 Tetsuo Tsukamoto * doc/skk.texi: Update. * Makefile, SKK-MK: Remove codes related to skk-dic.el.in. * skk-dic.el.in: No longer in the repository. * skk-emacs.el (skk-search-ja-dic): New function. * skk-vars.el (skk-inhibit-ja-dic-search) (skk-extra-jisyo-file-list, skk-search-katakana) (skk-search-sagyo-henkaku): New user options. (skk-search-prog-list): Add `skk-search-ja-dic-maybe', `skk-search-extra-jisyo-files', `skk-search-katakana-maybe' and `skk-search-sagyo-henkaku-maybe'. (skk-tooltip-face): Change group to `skk-tooltip'. * skk.el (skk-search-extra-jisyo-files, skk-search-katakana-maybe) (skk-search-sagyo-henkaku-maybe, skk-search-ja-dic-maybe) (skk-preload-jisyo): New functions. (skk-preload): Also preload jisyo files specified in skk-extra-jisyo-file-list. (skk-search-katakana, skk-search-romaji): Do not do search when user inputs prefix/suffix. 2010-12-01 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-30 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-29 Tsuyoshi Kitamoto * skk-tankan.el: Update comment. * doc/skk.texi: Update. * skk-gadget.el (skk-today): $B%3!<%I8+D>$7!#(B * skk-kakasi.el (skk-gyakubiki-and-henkan): Typo function name. 2010-11-28 Tsuyoshi Kitamoto * skk-kakasi.el (skk-gyakubiki-and-hankan): New command. * skk-gadget.el (skk-today-execute-char): New function. (skk-today): Return this-command-keys's value if skk-henkan-mode on ($B"&(Bmode). Use function skk-today-execute-char. 2010-11-27 Tetsuo Tsukamoto * skk.el (skk-treat-new-word): Fix for the previous change in function where note and word were incorrectly set. 2010-11-27 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-26 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-25 Tetsuo Tsukamoto * skk.el (skk-treat-new-word): Swap car and cdr of return value. (skk-insert-new-word): Modify according to it. 2010-11-24 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk.el: Update docstring. 2010-11-24 Kiyoka Nishiyama * skk-azik.el (skk-azik-additional-rom-kana-rule-list): $BJQ49%k!<%k$r=$@5(B [skk 7327]$B!#(B 2010-11-23 Tsuyoshi Kitamoto * doc/skk.texi: Update. * skk.el (skk-henkan-show-candidate-subr): 2010-11-14 $B$N(B commit $B!J%D!<%k%F%#%C%W$G$N(B [$B;D$j(B99++] $B$N1&4s$;I=<(!K$O!"(BXEmacs $B$G$OL58z(B $B$H$7$^$7$?!#(B 2010-11-22 Tetsuo Tsukamoto * skk.el (skk-undo-kakutei): Do not call `skk-j-mode-on' here. (skk-undo-kakutei-subr): Call `skk-j-mode-on' when skk-mode is nil. (skk-kakutei): Call `skk-j-mode-on' when skk-undo-kakutei-prev-state indicates that the previous state was skk-j-mode. This is needed for the kakutei after user returns to skk-abbrev-mode with M-x skk-undo-kakutei. * skk-xemacs.el: Disable `skk-tooltip-show-at-point' for XEmacs 21.4. 2010-11-22 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-21 Tsuyoshi Kitamoto * skk.el (skk-henkan-show-candidates-buffer): little modify. (skk-undo-kakutei): skk-mode $B$G$O$J$$$H$-$K3NDj%"%s%I%%$rl9g!"(B $B3NDj%"%s%I%%$NK\=hM}$NA0$K(B skk-j-mode-on $B$rDI2C$7$?!#(B[skk 7319]$B!#(B * skk-vars.el: Update docstring. * doc/skk.texi: Update. 2010-11-20 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-11-19 Tetsuo Tsukamoto * doc/skk.texi, Makefile, skk-version.el: Bump SKK version to 14.1.91. 2010-11-18 Tsuyoshi Kitamoto * skk.el (skk-restart): little modify docstring. * skk-vars.el (skk-menu-items): Add menu item "Restart SKK". * skk-emacs.el (skk-emacs-menu-resource-ja): Ditto. * doc/skk.texi (skk-restart): Add description. * skk-tankan.el (skk-tankan): Modify the interactive spec. 2010-11-17 Tetsuo Tsukamoto * skk-isearch.el: Sort isearch-commands (at the last part of the file). 2010-11-16 Tsuyoshi Kitamoto * skk-cus.el: Modify strings. 2010-11-16 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-1): Update docstring. * skk-kcode.el (skk-input-by-code-or-menu): Improve readability. (skk-input-by-code-or-menu-jump, skk-input-by-code-or-menu-1): Enable tooltip. Improve readability. * skk.el (skk-setup-keymap): Fix typo in "skk-abbrev-mode". (skk-toggle-characters): Use `case'. (skk-ovwrt-len, skk-kana-input, skk-jisx0208-latin-insert): Improve readability. 2010-11-14 Tetsuo Tsukamoto * Pre-release 14.1.90. 2010-11-14 Tsuyoshi Kitamoto * skk.el (skk-henkan-show-candidate-subr): $B%D!<%k%F%#%C%W$G$b(B $B%$%s%8%1!<%?!J(B[$B;D$j(B99++]$B!K$r1&4s$;I=<(2DG=$H$7$?!#(B $B$[$+!"(Bdocstring $B$NHy=$@5!#(B * doc/skk.texi (skk-previous-candidate-keys): Add description. 2010-11-14 Tetsuo Tsukamoto * experimental/skk-ja-names.el: Update. * skk-vars.el (skk-previous-candidate-keys): Fix doc string. (skk-previous-candidate-char): Default to nil. 2010-11-14 Tsuyoshi Kitamoto * skk-vars.el (skk-previous-completion-use-backtab): Change default value. * doc/skk.texi: Ditto. 2010-11-13 Tetsuo Tsukamoto * experimental/skk-ja-names.el: New file. * skk-vars.el (skk-previous-candidate-keys): New variable. (skk-previous-candidate-char): Make obsolete. * skk.el (skk-setup-j-mode-map-options): Define keys in skk-previous-candidate-keys. (skk-henkan-show-candidates): Do not refer to skk-previous-candidate-char. Check key binding of the current input instead. (skk-previous-candidate): Update doc string. (skk-henan-off-by-quit): Temporarily check both last-command and this-command. * skk-isearch.el (skk-isearch-setup-keymap): Set keys in skk-previous-candidate-keys instead of skk-previous-candidate-char. * skk-kcode.el (skk-input-by-code-or-menu-jump) (skk-input-by-code-or-menu-1): Do not refer to skk-previous-candidate-char. Check key binding of the current input instead. * skk-macs.el (skk-region-active-p): Check feature xemacs at compile time. 2010-11-13 Tsuyoshi Kitamoto * skk-vars.el :Update Docstring. 2010-11-12 Tsuyoshi Kitamoto * doc/skk.texi: Add skk-inline.el. 2010-11-11 Tetsuo Tsukamoto * skk-comp.el (skk-comp-previous/next): Use `cond' instead of `case'. * skk.el (skk-henkan-off-by-quit): Rename from `skk-henkan-off'. Temporarily set both last-command and this-command. 2010-11-10 Tetsuo Tsukamoto * SKK-MK (SKK_MODULES): Add skk-inline. * doc/skk.texi: Update for skk-previous-completion-backtab-key. * skk-emacs.el: Modify copyright notice. * skk-inline.el: New file. * skk-comp.el (skk-try-completion, skk-completion-wrapper): Move functions from skk.el. (skk-previous-comp-maybe): Give name to anonymous funtion in `skk-setup-keymap'. (skk-comp-do, skk-comp-previous): Add an optional arg set-this-command. * skk-macs.el (skk-color-cursor-display-p): Check skk-running-gnu-emacs at compile time. * skk-tankan.el (skk-tankan): Modify the interactive spec. * skk-tut.el (skktut-init-variables-alist): Bind skk-try-completion-char, skk-next-completion-char and skk-previous-completion-char. * skk-vars.el (skk-quit-commands): New internal variable. (skk-previous-completion-backtab-key): Rename from `skk-previous-completion-backtab-key-description' and change custom type to `key-sequence', allowing users to customize it by C-q [key] in M-x customize-variable. * skk.el (skk-define-minibuffer-maps) (skk-setup-j-mode-map-options, skk-setup-latin-mode-map-options) (skk-setup-jisx0208-latin-mode-map-options) (skk-setup-abbrev-mode-map-options): New functions sepatated from `skk-setup-keymap'. (skk-start-henkan-prog-i): New function. (skk-define-start-henkan-progs): New macro to define `skk-start-henkan-prog-{0-9}'. (skk-inline-show, skk-inline-show-vertical, skk-inline-hide) (skk-add-background-color): Move to skk-inline.el. (skk-henkan-inactivate, skk-henkan-off): New functions called from advised `keyboard-quit' and `abort-recursive-edit'. 2010-11-08 Tsuyoshi Kitamoto * doc/skk.texi: Add description for skk-previous-completion-use-backtab. 2010-11-08 Tetsuo Tsukamoto * skk-vars.el (skk-large-jisyo, skk-aux-large-jisyo) (skk-cdb-large-jisyo, skk-tut-file): Provide some strings even when `locate-file' fails. 2010-11-07 Tsuyoshi Kitamoto * skk-vars.el (skk-previous-completion-use-backtab): New variable. (skk-previous-completion-backtab-key-description): Rename from skk-previous-completion-backtab. * skk.el (skk-setup-keymap): Use it. 2010-11-06 Tsuyoshi Kitamoto * SKK-MK (SKK_MODULES): remove skk-obsolete. * skk-emacs.el (skk-tooltip-resize-text): $B6XB'=hM}$N$7$?!#(B * skk-vars.el (skk-previous-completion-backtab): New variable. * skk.el (skk-setup-keymap): Use it. * doc/skk.texi: Add description for skk-try-completion-char, skk-next-completion-char, skk-previous-completion-char and skk-previous-completion-backtab. 2010-11-05 Tetsuo Tsukamoto * doc/skk.texi: Refer to changes in DDSKK 14.2. * skk-emacs (skk-tooltip-show-1): Avoid modifying tooltip-frame-parameters by side effect. * skk.el (skk-save-jisyo): Do not save in the batch mode. 2010-11-05 Tsuyoshi Kitamoto * skk-emacs.el (skk-tooltip-resize-text): skk-auto-start-henkan-keyword-list $B$rN.MQ$7$?6XB'=hM}!#(B * doc/skk.texi: Remove description with reference to skk-obsolete.el. 2010-11-04 Tsuyoshi Kitamoto * skk-obsolete.el: Remove file. * doc/skk.texi: Remove description with reference to skk-obsolete.el. * skk.el (skk-setup-keymap): Define key in skk-j-mode-map for skk-comp-previous/next. 2010-11-03 Tsuyoshi Kitamoto * skk-kcode.el (skk-input-by-code-or-menu): Modify prompt message. 2010-11-02 Tetsuo Tsukamoto * Makefile (VERSION): * doc/skk.texi (SKK-VERSION): * skk-version.el (skk-version): Bump to 14.1.90. * skk-emacs.el (skk-tooltip-resize-text): Use `memq' and `eq' for char comparisons to determine indent. 2010-11-02 Tsuyoshi Kitamoto * skk-emacs.el (skk-tooltip-resize-text): Bug fix [skk 7297]. 2010-10-29 Tetsuo Tsukamoto * skk-emacs.el: Workaround for Cocoa Emacs 23.2 where variable x-max-tooltip-size is not defined. (skk-emacs-max-tooltip-size): New variable. (skk-tooltip-max-tooltip-size): New function. (skk-tooltip-resize-text): Use it. Under Cocoa Emacs, set top and left as positions on the current frame. 2010-10-27 Tetsuo Tsukamoto * skk-cus.el (skk-custom-mode): Use custom faces. 2010-10-18 Tetsuo Tsukamoto * leim-list.el.in: Remove old codes for Emacs 20. 2010-10-10 Tsuyoshi Kitamoto * skk-emacs.el (skk-tooltip-resize-text): $BF~NO$,D9Bg$J>l9g!"(B $BE,EY$K2~9T$rA^F~$9$k(B [skk 7291]. 2010-10-05 Tsuyoshi Kitamoto * doc/skk.texi (Emacs21.4): Add restriction for Emacs21.4. (skk-dcomp-multiple-activate): Update. (skk-dcomp-multiple-face): Update. (skk-dcomp-multiple-trailing-face): Update. (skk-dcomp-multiple-selected-face): Update. 2010-09-28 Tsuyoshi Kitamoto * doc/skk.texi (skk-comp-circulate): Add new describe. 2010-09-27 Tsuyoshi Kitamoto * doc/skk.texi (skk-tooltip-mouse-behavior): Update. 2010-09-27 Tetsuo Tsukamoto * skk-vars.el (skk-find-window-system): Under Emacs 22 or older, just check the value of window-system. Under Emacs 23 or later, check the return values of function `window-system'. 2010-09-26 Tsuyoshi Kitamoto * doc/skk.texi (skk-dcomp-activate): Add new describe. (skk-show-annotation): Modify message. 2010-09-26 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-message): Modify message. * skk-emacs.el (skk-emacs-tool-bar-height) (skk-emacs-menu-bar-height): New variables. (skk-tooltip-show-at-point): Use them. Modify y-axis calculation. * skk-vars.el (skk-tooltip-y-offset): Default to zero. (skk-find-window-system): New function. (skk-use-color-cursor): Use it. * skk-macs.el (skk-color-cursor-display-p): Ditto. 2010-09-25 Tetsuo Tsukamoto * skk-macs.el (skk-region-active-p): New function. * skk-annotation.el (skk-annotation-wikipedia-region-or-at-point): Use it. 2010-09-23 Tsuyoshi Kitamoto * doc/skk.texi (skk-search-lisp-symbol): Add new describe. 2010-09-22 Tsuyoshi Kitamoto * doc/skk.texi (skk-byte-compile-init-file): Update. * skk-vars.el (skk-preload): Update docstring. 2010-09-21 Tetsuo Tsukamoto * SKK-MK (running-gnu-emacs): New variable. Use it instead of "(not (featurep 'xemacs)". (SKK_MODULES): Always include ccc, skk-cursor and context-skk for GNU Emacs. 2010-09-20 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-09-19 Tsuyoshi Kitamoto * SKK-MK: Update error message. * doc/skk.texi: Update. 2010-09-18 Tsuyoshi Kitamoto * skk.el (skk-setup-verbose-messages): insert a white space between words. * skk-vars.el (skk-verbose, skk-verbose-wait) (skk-verbose-message-interval, skk-henkan-on-message): Unified from $B$-$b$AB?$a$J%a%C%;!<%8(B to $B=u8@E*%a%C%;!<%8(B. * skk-annotation.el (skk-annotation-show-buffer): Use fit-window-to-buffer except XEmacs 21.4. (skk-annotation-insert): *SKK annotation* buffer changed to read only. * skk-macs.el (skk-in-minibuffer-p): Update docstring. * skk-obsolete.el (skk-obsolete-variable-alist): Add obsolete-variables skk-e21-*-face. * doc/skk.texi: typo, and update. 2010-09-17 Tsuyoshi Kitamoto * Makefile (VERSION): 14.1.50. * doc/skk.texi: Update. 2010-09-16 Tsuyoshi Kitamoto * skk-annotation.el (skk-annotation-wikipedia-region-or-at-point): Update docstring. * SKK-MK: Add comment. * SKK-CFG (SKK-MK-debugging): Add comment. 2010-09-13 Tsuyoshi Kitamoto * skk-setup.el.in: 2010-09-12 $B$N(B commit $B$O * SKK-MK, skk-xemacs.el: Require APEL for XEmacs. * skk-cus.el (skk-cus-params-visual): Support skk-show-inline's value `vertical'. * skk.el: Remove unnecessary defaliases. 2010-09-12 Tetsuo Tsukamoto * skk-macs.el, skk.el: Use `case' instead of `cond' where it is suitable. * skk-macs.el (string-to-int-list): Fix definition for XEmacs. (skk-update-minor-mode-map-alist): Use `add-to-list'. * skk.el (skk-setup-modeline): Make `left' precede. (skk-henkan-show-candidate-subr): Fix the condition to call `skk-show-inline'. 2010-09-12 Tsuyoshi Kitamoto * skk-setup.el.in (before-init-hook): add-hook 'before-init-hook for display skk-version on emacs startup screen. * skk-version.el (skk-startup-screen): Remove function. 2010-09-11 Tetsuo Tsukamoto * bayesian/skk-bayesian.el, skk-dcomp.el, skk-tankan.el: Do not use static.el. Use `eval-when-compile' instead. * skk-cus.el: Fix indents. * skk-kakasi.el: Do not require path-util. * skk-lookup.el, skk-vars.el, skk-xemacs.el: Do not use `defalias-maybe'. * skk-macs.el (characterp, int-char, set-buffer-multibyte): Add definitions for Emacsen missing these functions. (skk-string<): Defun instead of defsubst. * skk.el (skk-mode-invoke): Do not check for Emacs 21. * skk-annotation.el (skk-annotation-wikipedia-normalize-word): Make sure word is not a null string. * install.el: Import from APEL 10.8 with minimal modifications. * SKK-MK: Use it. Do not check for APEL except for Emacs 21. Do not require poem. * SKK-CFG: Remove descriptions on APEL_DIR and EMU_DIR. 2010-09-11 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code-for-char-at-point):code reviewd. (skk-display-code): code reviewd. * doc/skk.texi: Update. 2010-09-10 Tetsuo Tsukamoto * SKK-MK: Do not require poem here. No longer use `write-region-as-coding-system' and `insert-file-contents-as-coding-system'. (SKK_MODULES): Remove skk-e21. * ccc.el: Temporarily disable loading poe here. * skk-act.el, skk-azik.el: Use `skk-put-alist' and `skk-del-alist' instead of `put-alist' and `del-alist'. * skk-cus.el (custom-quote): Remove definition. * skk-e21.el: Remove file. * skk-emacs.el: Move contens of skk-e21.el to this file. * skk-lookup.el: static.el is not used. Do not require it. * skk-macs.el: Do not require static.el. Do not use `defun-maybe', `defmacro-maybe'. Use `eval-when-compile' instead. (string-to-char-list, string-to-int-list, character-to-event) (event-to-character, cancel-undo-boundary, skk-put-alist) (skk-del-alist, skk-remove-alist): Define here. (skk-update-minor-mode-map-alist): New function. * skk-num.el (skk-num-initialize): Use `skk-put-alist' instead of `put-alist'. * skk-server.el (skk-open-network-stream): Use skk-running-gnu-emacs. * skk-study.el: Temporarily disable loading pym here. * skk-tut.el (skktut-enable-tutmap, skktut-disable-tutmap): * skk-viper.el (skk-viper-normalize-map): Use `skk-update-minor-mode-map-alist' instead of `set-modified-alist'. * skk-vars.el: Do not use static.el. Use `eval-when-compile' instead (if needed). Also do not use `exec-installed-p' in path-util.el. Use `executable-find' instead. * skk-xemacs.el: Do not require poe. Require overlay. * skk.el: Temporarily disable loading poe, poem, pces, and alist. Use `skk-update-minor-mode-map-alist' instead of `set-modified-alist'. Use `executable-find' instead of `exec-installed-p'. Use skk-running-gnu-emacs. * skk-annotation.el, skk-cursor.el, skk-gadget.el, skk-isearch.el, * skk-jisx0201.el, skk-jisyo-edit-mode.el, skk-kakasi.el, * skk-kcode.el, skk-server.el, skk-viper.el: Do not require static.el. Use `eval-when-compile' instead. 2010-09-10 Tsuyoshi Kitamoto * skk-version.el (skk-startup-screen): Add new function. insert skk-version on emacs startup screen. * doc/skk.texi: Update. 2010-09-09 Tetsuo Tsukamoto * skk-cursor.el (skk-cursor-default-color): Defsubst. * skk-hint.el, skk-jisyo-edit-mode.el: Modify coding system to iso-2022-jp. * skk-var.el (skk-emacs-type): Abolish variable. (skk-running-gnu-emacs): New variable. * skk-kcode.el, skk-macs.el, skk.el: Use skk-running-gnu-emacs. * skk-annotation.el, skk-dcomp.el, skk-lookup.el, skk-macs.el, * skk.el: Remove codes for GNU Emacs 20. * skk-study.el, skk.el: No longer use `write-region-as-coding-system' and `insert-file-contents-as-coding-system'. * skk.el (skk-inline-show-vertical): Make sure beg-col is not negative. 2010-09-09 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-09-08 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-get-char-data, skk-tankan-encode-0213-2): GNU Emacs 23 $B8~$1(B japanese-jisx0213-2 $BBP1~!#(B * skk-kcode.el (skk-display-code): tooltip $B;~$N(B `$' $B%a%C%;!<%8FbMF(B $B$KE,592~9T$r2C$($?!#(B 2010-09-07 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): `$' $B$NI=<($r(B tooltip $B2=(B. 2010-09-07 Tetsuo Tsukamoto * SKK-MK: Define and use variable EMACS_SELF_CONTAINED for NTEmacs, Meadow, Carbon and Cocoa Emacsen. 2010-09-06 Tetsuo Tsukamoto * skk-version.el (skk-version): Bump to 14.1.50. 2010-09-05 Tetsuo Tsukamoto * Version 14.1 Syounai released. 2010-09-05 Tetsuo Tsukamoto * Makefile (VERSION) * skk-version.el (skk-version): Bump to 14.1. 2010-09-04 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan): Code update. * doc/skk.texi: Update. * skk-macs.el: Update docstring. 2010-09-03 Tsuyoshi Kitamoto * context-skk.el: Insert white space for comment and docstring. 2010-09-02 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-09-01 Tetsuo Tsukamoto * SKK-MK (SKK_DICTIONARIES): Also install cdb dictionaries. * doc/skk.texi: Update. 2010-08-31 Tetsuo Tsukamoto * Makefile (cdb): New target to create dic/SKK-JISYO.L.cdb. 2010-08-31 Yusuke Shinyama * etc/skk2cdb.py: New file. 2010-08-30 Tetsuo Tsukamoto * skk-tankan.el (skk-tankan): Add autoload cookie. 2010-08-29 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): Add displaying skk-tankan-get-char-annotation. * skk-tankan.el: Update docstring. 2010-08-28 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan): New interactive function `M-x skk-tankan'. 2010-08-27 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-search): $BAm2h?tJQ49$HIt * skk-annotation.el, skk-cursor.el, skk-dcomp.el, skk-gadget.el, skk-isearch.el, skk-kcode.el, skk-macs.el, skk-tankan.el, skk-tut.el, skk-vars.el, skk-viper.el, skk.el, tut-code/skk-tutcdef.el: Reduce usage of skk-emacs-type. * doc/skk.texi: Update. * skk-kcode.el (skk-display-code): For GNU Emacs 23.1 or later, call `char-charset' with skk-charset-list as the second arg. * skk.el (skk-setup-charset-list): Modify charsets' order. 2010-08-27 Tsuyoshi Kitamoto * skk-kcode.el (skk-display-code): $B%-!<(B `$' $B$r%?%$%W$7$?:]$N%a%C%;!<%8(B $B$K(B "$BAm(B%d$B2h(B(%s$BIt(B%d$B2h(B)" $B$rDI2C!#(B 2010-08-26 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-26 Tetsuo Tsukamoto * doc/skk.texi: Update. * bayesian/skk-bayesian.el (skk-bayesian-history-file) (skk-bayesian-corpus-file): Save in skk-user-directory if it is specified. * skk-tankan.el (skk-search-tankanji): Read a CDB dictionary when available. * skk-vars.el (skk-jisyo-update-vector): Update doc string. (skk-verbose-message-interval): New user option. * skk-annotation.el (skk-annotation-message): Use it. * skk.el (skk-setup-shared-private-jisyo): Make skk-jisyo-update-vector a bit longer than skk-jisyo-save-count. (skk-update-shared-jisyo): Do not call `skk-update-jisyo-1' for null entries. (skk-update-jisyo-original): Call `skk-save-jisyo' when skk-update-jisyo-count reaches skk-jisyo-save-count, i.e. usually before it reaches the length of skk-jisyo-update-vector. 2010-08-25 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-var.sl (skk-verbose-wait): Change default value to 1.5. * skk.el (skk-update-jisyo-original): Ensure that skk-jisyo-save-count is smaller than the length of skk-jisyo-update-vector. (skk-search-server): Check if file is readable. 2010-08-24 Tetsuo Tsukamoto * bayesian/README.ja, patches/README.ja: Convert to junet. * skk-annotation.el (skk-annotation-wikipedia-format-buffer): Check wgCategories to find disambiguation pages. (skk-annotation-wikipedia): Maybe search upcased word. (skk-annotation-wikipedia-1): Remove unused local variable note. * skk-comp.el: Don' warn for dont-bind-my-keys. * skk-gadget.el (skk-ignore-dic-word): Remove unused local variable save-okurigana. * skk-kcode.el (skk-jis2sjis2): Alias to `ignore' for XEmacs. * skk-server.el (skk-search-server-1): Check if file is readable. * skk-study.el: Don't warn for print-quoted. (skk-study-save): Remove unused local variable last-time. * skk-xemacs.el (skk-xemacs-balloon-help-resize-help-frame): Modify calculation of frame size. (skk-xemacs-need-redraw-tooltip, skk-xemacs-redraw-interval): New variables. (skk-tooltip-show-1): Redraw tooltip when skk-xemacs-need-redraw-tooltip is non-nil. * skk.el (skk-setup-delete-selection-mode): Remove unused local variable feature. (skk-compile-rule-list): Remove unused local variable rule. (skk-get-jisyo-buffer): Remove unused local variable obj. * tut-code/skk-tutcode.el (skk-tutcode-display-code-1): Remove codes written for Mule 2. 2010-08-23 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-region-or-at-point): Rename from `skk-annotation-wikipedia-region-or-at-point'. (skk-annotation-wikipedia-region): Redefine as an alias to it. (skk-annotation-wait-for-input): Modify according to the above changes. (skk-annotation-wikipedia-1): Also throw `skk-annotation-wikipedia-suspended' on quit. * skk-vars.el (skk-annotation-en-wiktionary-lang-regexp): Update. (skk-annotation-ja-wiktionary-part-of-speech-regexp): Fix doc string. * skk-xemacs.el (skk-tooltip-default-font-pixel-size): Change the default value to 12. 2010-08-22 Tetsuo Tsukamoto * bayesian: From experimental. * SKK-MK: Modify according to it. * doc/skk.texi: Update. * skk-tut.el (skktut-init-variables-alist): Bind skk-previous-char. (skktut-end-tutorial): Update message. 2010-08-22 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-21 Tetsuo Tsukamoto * Makefile (TAR): Use gtar, assuming the FreeBSD system. 2010-08-21 Tetsuo Tsukamoto * Pre-release 14.0.92. 2010-08-21 Tetsuo Tsukamoto * Makefile (VERSION): Bump to 14.0.92. * skk-tut.el (skktut-update-jisyo): Bind skk-jisyo-update-vector. * skk.el (skk-adjust-user-option): Check the default value of skk-share-private-jisyo. * skk-version.el (skk-version): Bump to 14.0.92. 2010-08-21 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-20 Tetsuo Tsukamoto * skk-tut.el (skktut-init-variables-alist): Bind skk-henkan-show-candidates-rows, skk-show-candidates-always-pop-to-buffer, skk-show-annotation and skk-verbose. (skktut-make-windows): Increase the height of the question window. (skktut-next-answer-buffer): In skktut-question-buffer, move point to bob. * skk-vars.el (skk-show-japanese-menu): Find Cocoa Emacs by checking the feature ns. (skk-candidate-buffer-background-color, skk-henkan-rest-indicator) (skk-henkan-show-candidates-keys-face) (skk-henkan-rest-indicator-face): Modify custom types and/or groups. * patches/README.ja: * patches/emacs22-gtk-fix-dynamic-menus.diff: * patches/emacs23_1-gtk-fix-dynamic-menus.diff: Add patches which fix the menu update problem in Emacs 22/23.1 with GTK 2.18 or later. 2010-08-19 Tetsuo Tsukamoto * doc/skk.texi: Update. * cdb.el: Undo previous changes for Emacs 20. * skk-e21.el (skk-tooltip-show-1): Bind x-gtk-use-system-tooltips to nil in order to use the Emacs' own tooltips and thus preserve text properties. * skk-obsolete.el (skk-obsolete-put-obsolete-mark): Under Emacs 20, call `make-obsolete-variable' with only 2 args. * skk-vars.el (skk-cdb-coding-system): Modify the custom type. * skk.el (skk-henkan-show-candidates-buffer): Do not call `fit-window-to-buffer' under Emacs 20 or XEmacs 21.4. 2010-08-19 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-18 Tetsuo Tsukamoto Suggested by Takeru Naito * skk-e21.el (skk-e21-prepare-menu): Find Cocoa Emacs by checking the feature ns. 2010-08-18 Tetsuo Tsukamoto * *: Update copyright notices. * doc/skk.texi: Update. * skk-emacs.el: New file. * SKK-MK (SKK_MODULES): Add skk-emacs for GNU Emacs. * cdb.el: Require cl at the compile time. (cdb-test-simple): Uncomment. (cdb-hash): Under Emacs 20, call mapcar instead of mapc. * skk-cdb.el: Add comments. * skk-e21.el (skk-jis2sjis2): Move function to skk-emacs.el. * skk-jisyo-edit-mode.el: Don't register "SKK-JISYO" to auto-mode-alist under Emacs 20. * skk-kcode.el: Update comments. * skk-vars.el (skk-show-inline, skk-dcomp-multiple-activate): Update docstrings. (skk-background-mode): defcustom. * skk-macs.el (skk-color-cursor-display-p): Rename from `skk-color-display-p'. (skk-cursor-set, skk-cursor-off): Check `skk-color-cursor-display-p'. * skk-cursor.el: Modify according to it. * skk.el: Require skk-emacs under GNU Emacs. (skk-add-background-color): Workaround for Emacs 21 where :inherit attribute does not always work correctly. (skk-adjust-user-option): Check `skk-color-cursor-display-p'. 2010-08-18 Tsuyoshi Kitamoto * doc/skk.texi: Remove remove README.Mac.ja related. 2010-08-17 Yusuke Shinyama * cdb.el, skk-cdb.el: New files. * SKK-MK (SKK_MODULES): Add cdb and skk-cdb. * skk-vars.el (skk-cdb-large-jisyo, skk-cdb-coding-system): New user options. (skk-search-prog-list): Add `skk-search-cdb-jisyo'. 2010-08-17 Tetsuo Tsukamoto * doc/skk.texi: Update. * skk-kcode.el (skk-jis2sjis2): Move funtion to skk-e21.el simply to avoid a compile error in XEmacs. * skk-xemacs.el (skk-tooltip-default-font-pixel-size): New variable. (skk-tooltip-resize-text): Use it. * skk-vars.el (skk-menu-items): Rename and reorder items. (skk-large-jisyo, skk-aux-large-jisyo, skk-cdb-large-jisyo): Make custom types compatible with Emacs 21. * skk-e21.el (skk-e21-prepare-menu): Avoid a warning for gtk-version-string in Emacs 21. (skk-e21-menu-resource-ja): Modify according to changes in skk-menu-items. * skk-cus.el: Require `cus-edit' instead of `wid-edit'. 2010-08-15 Tsuyoshi Kitamoto * doc/skk.texi: update. 2010-08-14 Tsuyoshi Kitamoto * skk-vars.el (skk-show-japanese-menu): Fix docstring. * doc/skk.texi: update. 2010-08-12 Tsuyoshi Kitamoto * doc/skk.texi: From @code{} to @command{}, @option{} or @env{} replaced. 2010-08-10 Tsuyoshi Kitamoto * skk-vars.el (skk-delete-okuri-when-quit): Fix docstring. * doc/skk.texi: update. 2010-08-09 Tsuyoshi Kitamoto * doc/skk.texi: update. 2010-08-08 Tsuyoshi Kitamoto * doc/skk.texi: update. 2010-08-07 Tsuyoshi Kitamoto * skk-vars.el (skk-candidate-buffer-background-color): Rename option name from `skk-kouho-window-background'. * skk.el (skk-henkan-show-candidates-buffer): Ditto. * doc/skk.texi: Ditto. 2010-08-06 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-08-02 Tetsuo Tsukamoto * *.el: Never provide product.el. * skk-isearch.el (skk-isearch-delete-char): Use `delete-char' intead of `delete-backward-char'. * skk.el (skk-set-henkan-point, keyboard-quit@around@skk-ad) (abort-recursive-edit@around@skk-ad): Ditto. 2010-08-02 Tsuyoshi Kitamoto * skk.el: Fix docstring. * doc/skk.texi: Update. 2010-08-01 Tsuyoshi Kitamoto * skk-vars.el: Fix docstring. 2010-07-31 Tsuyoshi Kitamoto * doc/skk.texi: Update. 2010-07-29 Tsuyoshi Kitamoto * skk-e21.el (skk-e21-visit-openlab): fix url. * skk-xemacs.el (skk-xemacs-visit-openlab): fix url. 2010-07-25 Tsuyoshi Kitamoto * skk.el (skk-kill-emacs-without-saving-jisyo): Fix doc. * doc/skk.texi: Fix. * skk-vars.el (skk-rom-kana-base-rule-list): Add new rule. 2010-07-22 Tsuyoshi Kitamoto * skk-vars.el: tiny fix docstring. 2010-07-21 Tsuyoshi Kitamoto * skk-vars.el (skk-henkan-show-candidates-keys-face) (skk-henkan-rest-indicator-face, skk-kouho-window-background): Change the default value. 2010-07-20 Tsuyoshi Kitamoto * skk-vars.el (skk-kouho-window-background): fix. 2010-07-19 Tsuyoshi Kitamoto * skk-vars.el: tiny fix docstring. * doc/skk.texi: tiny fix. 2010-07-18 Tsuyoshi Kitamoto * skk-vars.el: tiny fix docstring. * skk.el: tiny fix docstring. 2010-07-18 Tetsuo Tsukamoto * doc/skk.texi: Add Fumihiko MACHIDA and Yano Keisuke in Contributors. Update entry for Yuh Ohmura. * skk-jisx0201.el (skk-jisx0201-roman-rule-list): Broken at the last commitment. Fix. 2010-07-17 Tsuyoshi Kitamoto * skk-vars.el (skk-tooltip-function): New variable. * skk.el (skk-henkan-show-candidate-subr): Use it. Switching function that allows user to use to draw a tip. 2010-07-16 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-message): Modify messages. 2010-07-16 Tsuyoshi Kitamoto * skk-obsolete.el (skk-obsolete-put-obsolete-mark): give nil to make-obsolete-variable's 3rd argument. * doc/skk.texi: some update. 2010-07-14 Tetsuo Tsukamoto * skk-annotation.el (skk-annotation-wikipedia-format-buffer): Simplify for wikipedia. Don't remove
tags explicitly. 2010-07-11 Tsuyoshi Kitamoto * skk-vars.el (skk-henkan-rest-indicator-face): New face. * skk.el (skk-henkan-show-candidate-subr): Use it. * doc/skk.texi: Update. 2010-07-10 Tsuyoshi Kitamoto * skk-vars.el (skk-henkan-show-candidates-keys-face): New face. * skk.el (skk-henkan-show-candidate-subr): Use it. * skk-kcode.el (skk-input-by-code-or-menu-jump) (skk-input-by-code-or-menu-1): Use it. * skk-vars.el (skk-henkan-rest-indicator): New user option. * skk.el (skk-henkan-show-candidate-subr) (skk-henkan-show-candidates-buffer): Use it. * skk.el (skk-henkan-show-candidates-buffer): Add `fit-window-to-buffer'. * skk-vars.el (skk-kouho-window-background): New user option. * skk.el (skk-henkan-show-candidates-buffer): Use it. * doc/skk.texi: Update. 2010-07-04 Tsuyoshi Kitamoto * skk-vars.el: $BMQ8l$NE}0l!#$=$N$[$+(B. * make1.bat (install-info): new argument. 2010-07-03 Tsuyoshi Kitamoto * make1.bat (clean): add "goto end". 2010-05-15 Kazuhiro NISHIYAMA * SKK-MK: EMU_DIR $B$N(B load-path $B$X$NDI2C$r(B (requre 'install) $B$NA0$K0\F0(B. 2010-03-07 Tsuyoshi Kitamoto * skk-tankan.el (skk-tankan-search): update indent. 2010-02-26 Tsuyoshi Kitamoto * skk.el: Misc updates. * skk-vars.el: ditto. 2010-02-22 Tsuyoshi Kitamoto * skk.el: s/(SKK)?($B<-=q(B)?$B%5!<%P(B/$B<-=q%5!<%P(B/g * skk-vars.el: ditto. * skk-server.el: ditto. * skk-server-completion.el: ditto * doc/skk.texi: ditto. 2010-02-22 Tsuyoshi Kitamoto * skk-vars.el: s/$B%f!<%6<-=q(B/$B8D?M<-=q(B/g 2010-02-21 Tsuyoshi Kitamoto * skk-macs.el: s/$BHs(Bnil/non-nil/g * skk.el: ditto. * doc/skk.texi: ditto. 2010-02-21 Tsuyoshi Kitamoto * doc/skk.texi (skk-search-jisyo-file): Add content. some function/variable are ditto. 2010-02-18 Tsuyoshi Kitamoto * skk-macs.el (skk-screen-column, skk-move-to-screen-column): Add docstring. 2010-02-14 Tsuyoshi Kitamoto * doc/skk.texi: Tiny Fix. 2010-02-13 Tsuyoshi Kitamoto * doc/skk.texi: some CODE redefined from @example to @lisp. 2010-02-13 Tsuyoshi Kitamoto * doc/skk.texi: some variables defined by @defvr. 2010-02-10 Tsuyoshi Kitamoto * make1.bat: Add 'info' option. 2010-02-10 Tetsuo Tsukamoto * Pre-release 14.0.91. 2010-02-06 Teika Kazura * doc/skk.texi: $B%j%s%/@Z$l$r=$@5!#(Bmakeinfo $B$K$h$k%3%s%Q%$%k$NJ}K!!#(B $B$3$N%U%!%$%k$K4^$^$l$kHs(B Unicode $BJ8;z$K$D$$$F%3%a%s%H!#(B 2010-02-01 Kitamoto Tsuyoshi * doc/skk.texi: Tiny fix. 2010-01-30 Tetsuo Tsukamoto * skk-tut.el (skktut-next-answer-buffer): Use `with-current-buffer' instead of `save-excursion'. 2010-01-28 Tetsuo Tsukamoto * doc/skk.texi: Update for the copyright page i.e. add missing Kitamoto Tsuyoshi's name. * skk-cursor.el (skk-cursor-set-1, skk-cursor-off-1): Modifications for FSF Emacs. Do not set cursor color when default-cursor-color is not yet set. * skk-e21.el (skk-tooltip-show-at-point): Also call `skk-tooltip-resize-text' when skk-tooltip-mouse-behavior is `follow'. 2010-01-27 Tetsuo Tsukamoto * doc/skk.texi: Move footnote for Viper with skk-annotation to subsection "$B%"%N%F!<%7%g%s$N;HMQ(B". * skk-annotation.el (skk-annotation-wikipedia): Do not call `upcase-initials' for wikipedia here. * skk-jisyo-edit-mode.el: Add "SKK-JISYO" to the last of auto-mode-alist. * skk-version.el (skk-version): Bump to 14.0.91. 2010-01-25 Tetsuo Tsukamoto * Pre-release 14.0.90. * doc/skk.texi: Add author Teika Kazura. 2010-01-20 Tetsuo Tsukamoto * skk-e21.el (skk-e21-menu-replace): Workaround for an NTEmacs problem where names of menu items with widget properties do not appear correctly. Encode strings in shift_jis here. Note that this workaround is not needed for Meadow 3 (based on Emacs 22). * skk-version.el (skk-version): Bump to 14.0.90. 2009-12-26 Teika Kazura * doc/skk.texi: Major rewritements, mostly in the chapter $BJXMx$J(B $B1~MQ5!G=(B. Reorganizations. Improvements in various descriptions. 2009-12-16 Tetsuo Tsukamoto * doc/skk.texi: Update email info. 2009-12-16 Teika Kazura * READMEs/NEWS.ja: Minor correction & notice addition. * skk.el (skk-show-num-type-info): Minor doc correction. 2009-11-14 Teika Kazura * doc/skk.texi: Add description for skk-jisyo-fix-order. Also edit skk-edit-private-jisyo. 2009-09-23 Teika Kazura * skk-vars.el (skk-jisyo-fix-order): New user option. * skk.el (skk-update-jisyo-1): When skk-jisyo-fix-order is non-nil, do not modify word order. 2009-11-02 Tetsuo Tsukamoto * skk-macs.el (skk-char-to-unibyte-string): New function. Call `string-make-unibyte' under Emacs 23. (skk-char-to-string): Abolish function. * skk-hint.el (skk-insert@around@skk-hint-ad): * skk-isearch.el (skk-isearch-message, skk-isearch-setup-keymap): * skk-kcode.el (skk-input-by-code-or-menu-jump) (skk-input-by-code-or-menu-1): * skk-tut.el: * skk.el (skk-setup-keymap, skk-define-jisx0208-latin-mode-map) (skk-define-abbrev-mode-map, skk-process-prefix-or-suffix) (skk-kana-input, skk-henkan-show-candidates) (skk-set-henkan-point): Call `skk-char-to-unibyte-string' for key definitions etc, where unibyte strings are expected. * skk-var.el (skk-annotation-en-wiktionary-lang-regexp) (skk-annotation-en-wiktionary-part-of-speech-regexp) (skk-annotation-ja-wiktionary-lang-regexp) (skk-annotation-ja-wiktionary-part-of-speech-regexp): Update. * skk-annotation.el (skk-annotation-wikipedia-1): Remove ") ;; $B$r=|5n(B (skkannot-wikipedia-remove-nested "" "
") ;; (goto-char (point-min)) (when (or (when (re-search-forward "

\\(
\n\\|[^\n]*\\)?[^\n]+[^\n]+" nil t) (goto-char (match-beginning 0)) (if (and (save-excursion (re-search-forward "

" nil t)) (string-match (cond ((eq source 'ja.wikipedia) "$B!#(B\\|$B!%(B") (t "\\.")) (buffer-substring (point) (match-beginning 0)))) t (setq point (point) continue t) nil)) (when (progn (goto-char (point-min)) (re-search-forward "<\\(u\\|o\\)l>" nil t)) (goto-char (if continue point (match-beginning 0))) (setq nop t))) (delete-region (point-min) (point)) (goto-char (point-min)) ;; (cond ((or aimai nop) (setq pt1 (if (re-search-forward "<\\(u\\|o\\)l>" nil t) (match-end 0) nil) pt2 nil) (while (and (not end) (re-search-forward "" nil t)) (setq pt2 (match-end 0)) (save-excursion (goto-char (or pt1 (1+ (point-min)))) (when (re-search-forward "<\\(u\\|o\\)l>" nil t) (setq pt1 (match-end 0)))) (when (or (null pt1) (> pt1 pt2)) (setq end t)))) (t (re-search-forward "

" nil t))) (delete-region (point) (point-max)))))) ;; (setq point nil) (when (> (buffer-size) 0) (html2text) (goto-char (point-min)) (cond ((memq source '(ja.wiktionary en.wiktionary)) ;; wiktionary $B$N@07A7k2L$O6u9T$@$i$1$K$J$k(B... (goto-char (point-min)) (while (re-search-forward "\n[\n]+" nil t) (replace-match "\n")) (goto-char (point-min)) (while (not (eobp)) (beginning-of-line) (setq point (point)) (forward-line 1) (fill-region point (point)))) (t (while (looking-at "^[ \t]*$") (kill-line 1)) (cond ((or aimai nop) (while (not (eobp)) (beginning-of-line) (setq point (point)) (forward-line 1) (fill-region point (point)))) (t (fill-paragraph nil))))) ;; (when aimai (insert (if (eq source 'ja.wikipedia) "\n($B[#Kf$52sHr$N%Z!<%8(B)" "\n(Disambiguation page)"))) ;; (goto-char (point-max)) (while (and (looking-at "^$") (not (string= "" (buffer-string)))) (delete-char -1)) ;; (when (and (not (equal (buffer-string) "")) (not (get-text-property 1 'face))) (put-text-property 1 2 'face 'default)) (setq note (buffer-string))))) ;; (cond ((stringp note) (if (equal note "") nil note)) (t nil)))) (defun skkannot-wikipedia-remove-nested (btag etag &optional ibtag) "
    $B$J$I$NF~$l;R9=B$$r=|5n$9$k!#(B" (unless ibtag (setq ibtag btag)) (let (point pt1 pt2 orig-btag) (setq point nil) (goto-char (point-min)) (while (re-search-forward btag nil t) (setq point (match-beginning 0)) (goto-char point) (cond ((not (search-forward etag nil t)) (delete-region point (match-end 0)) (goto-char (point-min))) (t (setq pt2 (match-end 0)) (goto-char (1+ point)) (cond ((not (re-search-forward ibtag nil t)) (delete-region point pt2) (when orig-btag (setq btag orig-btag orig-btag nil)) (goto-char (point-min))) (t (setq pt1 (match-beginning 0)) (cond ((< pt2 pt1) (delete-region point pt2) (setq point nil) (when orig-btag (setq btag orig-btag orig-btag nil)) (goto-char (point-min))) (t (unless orig-btag (setq orig-btag btag btag ibtag)) (goto-char pt1)))))))))) (defun skkannot-wikipedia-retrieved (&rest args) (cond ((or (member "deleted\n" (assq 'error (memq :error (car args)))) (< (buffer-size) 7) (not (skkannot-wikipedia-test-html-tag))) ;; $BIT40A4$J(B retrieval $B$K$*$$$F$b(B STATUS $B$,(B nil $B$H$J$k$3$H$,$"$k$N$G(B ;; $B$3$3$GD4@0$9$k!#(B (kill-buffer (current-buffer)) (ignore-errors (throw 'skkannot-wikipedia-suspended (cadr args)))) (t (throw 'skkannot-wikipedia-retrieved (current-buffer))))) (defun skkannot-wikipedia-test-html-tag () ;; html $B%G!<%?$,:G8e$N(B $B%?%0$r;}$D$3$H$r3NG'$9$k(B (goto-char (point-min)) (when (re-search-forward "^Content-Encoding: gzip$" nil t) ;; html $B$,(B gzip $B05=L$GAw$i$l$FMh$?>l9g(B (let ((gzip (executable-find "gzip"))) (unless gzip (error "$B$3$NFbMF$rI=<($9$k$K$O(B %s $B$,I,MW$G$9(B" "gzip")) (while (and (not (looking-at "^\n")) (not (eobp))) (forward-line 1)) (forward-line 1) (when (< (point) (point-max)) (let ((coding-system-for-write 'binary)) (call-process-region (point) (point-max) gzip t t t "-cd"))))) (goto-char (point-max)) (search-backward "" nil t)) ;;;###autoload (defalias 'skk-annotation-wikipedia-region-or-at-point 'skk-annotation-lookup-region-or-at-point) (defun skkannot-generate-url (format-string &rest args) (condition-case nil (require 'url-util) (error (error "%s" "$B?7$7$$(B URL $B%Q%C%1!<%8$,I,MW$G$9(B"))) (if (skkannot-url-installed-p) (apply #'format format-string (mapcar (lambda (element) (if (stringp element) (url-hexify-string element) element)) args)) (error "%s" "URL $B%Q%C%1!<%8$^$?$O(B Mule-UCS $B$,MxMQ$G$-$^$;$s(B"))) (defun skkannot-wikipedia-normalize-word (word &optional method preserve-case) ;; $B%9%Z!<%9$O(B %20 $B$G$O$J$/!"%"%s%@!<%9%3%"$KJQ49$9$k(B (replace-regexp-in-string " " "_" (cond ((memq method '(ja.wiktionary en.wiktionary)) (if (and (not preserve-case) (> (length word) 1) (skk-ascii-char-p (aref word 0)) (skk-lower-case-p (aref word 1))) ;; $BFsJ8;z$a$,(B lower case $B$J$i(B downcase (downcase word) ;; $B0lJ8;z$@$C$?$i85$N(B case ;; $BFsJ8;z$a$,(B upper case $B$J$i85$N(B case ;; $B1Q8l0J30$OL$BP1~(B word)) ((eq method 'upcase-initials) (upcase-initials word)) (t (if (> (length word) 1) (concat (vector (upcase (aref word 0))) (substring word 1)) word))))) (defun skkannot-url-installed-p () (when (eq skkannot-url-installed-p 'untested) ;; GNU Emacs 22 $B0J9_0J30$G(B URL $B%Q%C%1!<%8$r%F%9%H$9$k(B (cond ((and (featurep 'xemacs) (= emacs-major-version 21) (= emacs-minor-version 4) (not (featurep 'un-define))) ;; XEmacs 21.4 $B$G(B Mule-UCS $B$b$J$$>l9g(B (setq skkannot-url-installed-p nil)) (t ;; Emacs 21 $B$H(B XEmacs (defadvice url-hexify-string (around multibyte-char activate) (setq ad-return-value (mapconcat (lambda (byte) (if (memq byte url-unreserved-chars) (char-to-string byte) (format "%%%02x" byte))) (if (multibyte-string-p (ad-get-arg 0)) (encode-coding-string (ad-get-arg 0) 'utf-8) (ad-get-arg 0)) ""))) ;; (setq skkannot-url-installed-p t)))) ;; skkannot-url-installed-p) ;;; $B3F (length string) 0) (throw 'found (cons string ccache-buffer)) (setq string (if (and cccache-buffer (get-buffer cccache-buffer)) ;; Word Word (with-current-buffer (get-buffer cccache-buffer) (buffer-string)) "")) (if (> (length string) 0) (throw 'found (cons string cccache-buffer)) (setq string (if (get-buffer cache-buffer) ;; word word (with-current-buffer (get-buffer cache-buffer) (buffer-string)) "")) (if (string= string "") nil (throw 'found (cons string cache-buffer)))))))))))) (provide 'skk-annotation) ;;; skk-annotation.el ends here ddskk-15.1.54/skk-vars.el0000664000076600007660000063651412237155306014545 0ustar brutusbrutus;;; skk-vars.el --- common vars and consts in SKK -*- coding: iso-2022-7bit-ss2 -*- ;; Copyright (C) 1999-2010 SKK Development Team ;; Author: SKK Development Team ;; Maintainer: SKK Development Team ;; Version: $Id: skk-vars.el,v 1.461 2013/11/08 12:36:22 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/11/08 12:36:22 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (require 'wid-edit) (eval-when-compile ;; shut down compiler warnings. (defvar charset-list) (defvar word-across-newline) (defvar emacs-beta-version) (defvar mule-version)) ;; *** 2012.1.15 $B:o=|(B *** ;; (eval-and-compile ;; ;; XEmacs $B$N<1JL$O(B (featurep 'xemacs) $B$rMQ$$$k!#(BGNU Emacs $B$K$D$$$F$O(B ;; ;; Emacs 21 $B$,(B `emacs' feature $B$r(B provide $B$7$J$$$N$G0J2<$rMQ$$$k!#(B ;; ;; Emacs 21 $B%5%]!<%H=*N;8e$O(B (featurep 'emacs) $B$,$h$$$H;W$o$l$k!#(B ;; (defconst skk-running-gnu-emacs (or (featurep 'emacs) ;; (string-match "^GNU" (emacs-version))))) ;; Functions needed prior to loading skk-macs.el. (when (eval-when-compile (featurep 'emacs)) (defsubst find-coding-system (obj) "Return OBJ if it is a coding-system." (if (coding-system-p obj) obj))) (defun skk-find-window-system () (cond ((eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) ;; GNU Emacs 23 or later (let ((frames (frame-list)) val) (while (and (not val) frames) ;; $BJQ?t(B window-system $B$O(B frame local $BCM$r;}$D!#(B ;; $BNc$($P(B window system $B$H(B "emacsclient -nw" $B$NJ;MQ;~$J$I(B ;; $B$$$:$l$+$N(B frame $B$,(B window system $B2<$GF0$$$F$$$k$3$H$r(B ;; $B3NG'$9$k!#(B (setq val (window-system (car frames)) frames (cdr frames))) val)) (t ;; Emacs 22 and XEmacs window-system))) ;;;###autoload (put 'skk-deflocalvar 'lisp-indent-function 'defun) (defmacro skk-deflocalvar (symbol initvalue &optional docstring) (if docstring `(progn (defvar ,symbol ,initvalue ,docstring) (make-variable-buffer-local ',symbol)) `(progn (defvar ,symbol ,initvalue) (make-variable-buffer-local ',symbol)))) (defconst skk-ml-address "skk@ring.gr.jp") (defconst skk-ml-command-address "skk-subscribe@ring.gr.jp") ;;;; Custom group definitions (defgroup skk nil "$BF|K\8lF~NO%7%9%F%`(B SKK $B$N%+%9%?%^%$%:(B" :group 'mule :group 'applications) ;;; by function (defgroup skk-basic nil "SKK $B4pK\$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-dictionary nil "SKK $B<-=q$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-private nil "SKK $B8D?M<-=q$N$$$m$$$m(B" :prefix "skk-" :group 'skk) (defgroup skk-visual nil "SKK $B$N8+$?L\$r%+%9%?%^%$%:(B" :prefix "skk-" :group 'skk) ;;; by filename (defgroup skk-annotation nil "SKK $B%"%N%F!<%7%g%sI=<((B/$BJT=8$N@_Dj(B" :prefix "skk-annotation-" :group 'skk) (defgroup skk-auto nil "SKK $B<+F0Aw$j$,$J5!G=$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-cdb nil "SKK CDB $B<-=q8!:w5!G=$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-comp nil "SKK $BJd405!G=$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-server-completion nil "$B<-=q%5!<%PJd405!G=$K4X$9$k@_Dj(B" :group 'skk) (defgroup skk-cursor nil "SKK $B%+!<%=%k@)8f$N@_Dj(B" :prefix "skk-cursor-" :group 'skk) (defgroup skk-dcomp nil "SKK $BF0E*Jd40$N@_Dj(B" :prefix "skk-dcomp-" :group 'skk) (defgroup skk-gadget nil "SKK $B3Q%+%J(B) $B4XO"$N@_Dj(B" :prefix "skk-jisx0201-" :group 'skk) (defgroup skk-jisx0213 nil "SKK JIS X 0213 $B4XO"$N@_Dj(B" :group 'skk) (defgroup skk-jisyo-edit-mode nil "SKK $B$N<-=qJT=85!G=$N@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-kakasi nil "SKK $B$+$i(B kakasi $B$r;H$&@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-kcode nil "SKK $BJ8;z%3!<%I$r07$&@_Dj(B" :prefix "skk-" :group 'skk) (defgroup skk-look nil "SKK $B$+$i(B look $B%3%^%s%I$rMxMQ$9$k@_Dj(B" :prefix "skk-look-" :group 'skk) (defgroup skk-lookup nil "SKK $B$+$i(B Lookup $B%Q%C%1!<%8$rMxMQ$9$k@_Dj(B" :prefix "skk-lookup-" :group 'skk) (defgroup skk-num nil "SKK $B$G?t;z$r07$&$?$a$N@_Dj(B" :prefix "skk-num-" :group 'skk) (defgroup skk-server nil "$B<-=q%5!<%P$H$NDL?.$K4X$9$k@_Dj(B" :prefix "skk-server-" :group 'skk) (defgroup skk-sticky nil "SKK $BJQ490LCV;XDjJ}<0$N@_Dj(B" :prefix "skk-sticky-" :group 'skk) (defgroup skk-study nil "SKK $B3X=,5!G=$N@_Dj(B" :prefix "skk-study-" :group 'skk) (defgroup skk-tankan nil "SKK $BC14A;zJQ495!G=$N@_Dj(B" :prefix "skk-tankan-" :group 'skk) (defgroup skk-tooltip nil "SKK $B%D!<%k%F%#%C%WI=<($N@_Dj(B" :prefix "skk-tooltip-" :group 'skk) (defgroup skk-tut nil "SKK $B%A%e!<%H%j%"%k$N@_Dj(B" :prefix "skk-tut-" :group 'skk) (defgroup skk-viper nil "SKK/Viper $B4XO"$N@_Dj(B" :prefix "skk-viper-" :group 'skk) (defgroup skk-act nil "SKK $B$G3HD%%m!<%^;zF~NO(B ACT $B$r;H$&@_Dj(B" :prefix "skk-act-" :group 'skk-input-enhanced) (defgroup skk-azik nil "SKK $B$G3HD%%m!<%^;zF~NO(B AZIK $B$r;H$&@_Dj(B" :prefix "skk-azik-" :group 'skk-input-enhanced) (defgroup skk-kanagaki nil "SKK $B$+$JF~NO$N@_Dj(B" :prefix "skk-kanagaki-" :group 'skk-input-enhanced) (defgroup skk-nicola nil "SKK $B?F;X%7%U%HF~NO$N@_Dj(B" :prefix "skk-nicola-" :group 'skk-kanagaki) ;;; skk-vars.el related. (defcustom skk-background-mode ;; from font-lock-make-faces of font-lock.el Welcome! (or frame-background-mode (cond ((featurep 'xemacs) (if (< (apply '+ (color-rgb-components (face-property 'default 'background))) (/ (apply '+ (color-rgb-components (make-color-specifier "white"))) 3)) 'dark 'light)) (t (cond ((and window-system (x-display-color-p)) (let ((bg-resource (x-get-resource ".backgroundMode" "BackgroundMode")) (params (frame-parameters))) (cond (bg-resource (intern (downcase bg-resource))) ((and (eq system-type 'windows-nt) (not (fboundp 'x-color-values))) (if (string-match "light" (cdr (assq 'background-color params))) 'light 'dark)) ((not (null (cdr (assq 'background-mode params)))) ;; Emacs20.x (Meadow) (cdr (assq 'background-mode params))) ((< (apply '+ (x-color-values (cdr (assq 'background-color params)))) (/ (apply '+ (x-color-values "white")) 3)) 'dark) (t 'light)))) (t nil))))) "*SKK $B$NI8=`$N%U%'%$%9?'$r7h$a$k$?$a$NGX7J?'$K4X$9$k>pJs!#(B $BI8=`$G$O(B `frame-background-mode' $B$r@_Dj$7$F$$$k>l9g$O$=$l$K=>$$!"(B $B@_Dj$7$F$$$J$$>l9g$OFH<+$NJ}K!$G(B `light' $B$+(B `dark' $B$+$r7h$a$k!#(B $B$?$@$7!"%?!<%_%J%k$G(B Emacs $B$rMxMQ$7$F$$$k>l9g$OH=Dj$G$-$:!"(B $B%f!<%6$N0U?^$H9g$o$J$$$+$b$7$l$J$$$N$G!"$3$N%*%W%7%g%s$+(B `frame-background-mode' $B$r$"$i$+$8$a@_Dj$7$F$*$/$3$H$,K>$^$7$$!#(B $B$3$N%*%W%7%g%s$O(B ~/.skk $B$K@_Dj$7$F$bH?1G$5$l$J$$!#(B~/.emacs $B$+(B \\[customize] $B$K$F!"(BSKK $B$,FI$_9~$^$l$kA0$K@_Dj$9$k$3$H$,I,MW!#(B" :type '(choice (const dark) (const light) (const :tag "$B<+F0$G7h$a$k(B" nil)) :group 'skk-basic :group 'skk-visual) ;;; skk.el related. (defcustom skk-user-directory nil "*SKK $B$N@_Dj%U%!%$%k$J$I$rCV$/%G%#%l%/%H%jL>!#(B $B3Fl9g$K@_Dj$9$k!#(B ($BNc(B) (setq skk-user-directory \"~/.ddskk\") " :type '(radio (directory :tag "$B%G%#%l%/%H%jL>(B" "~/.ddskk") (const :tag "$B@_Dj$7$J$$(B" nil)) :group 'skk-basic) (defcustom skk-init-file (if skk-user-directory (expand-file-name "init" skk-user-directory) (convert-standard-filename "~/.skk")) "*SKK $B$N=i4|@_Dj$r5-=R$9$k%U%!%$%kL>!#(BSKK $B$r5/F0$7$?:G=i$N0lEY$@$1FI$_(B $B9~$^$l$k!#$3$N%U%!%$%k$K5-=R$9$kBe$o$j$K(B ~/.emacs $B$K(B SKK $B$N3Fl9g$O(B \\[skk-restart] $B$G$OH?1G$5$l$J$$!#(B ~/.emacs $B$G(B $BJQ?t(B `skk-byte-compile-init-file' $B$r@_Dj$9$k$3$H$G(B `skk-init-file' $B$r(B $B<+F0E*$K%P%$%H%3%s%Q%$%k$9$k$3$H$b2DG=!#(B" ;;"*Name of the SKK initialization file. ;;From skk.el 9.x on all customization may be done in ~/.emacs." :type '(file :tag "$B%U%!%$%kL>(B") :group 'skk-basic) (defcustom skk-japanese-message-and-error nil "*Non-nil $B$G$"$l$P!"(BSKK $B$N%a%C%;!<%8$H%(%i!<$rF|K\8l$GI=<($9$k!#(B nil $B$G$"$l$P!"1Q8l$GI=<($9$k!#(B" :type 'boolean :group 'skk-basic) (defcustom skk-version-codename-ja nil "*Non-nil $B$G$"$l$P!"4X?t(B skk-version $B$G$N%3!<%I%M!<%`$rF|K\8l$GI=<($9$k!#(B" :type 'boolean :group 'skk-basic) (defcustom skk-jisyo-fix-order nil "*Non-nil $B$G$"$l$P!"3NDj$N:]$K8D?M<-=q$NF12;8l$N=g=x$rJQ99$;$:!"(B $B8D?M<-=q$K?75,DI2C$9$k:]$O4{=P8l$N8e$KDI2C$9$k!#(B" :type 'boolean :group 'skk-dictionary) (defcustom skk-kakutei-jisyo nil ;; $B%=!<%H$5$l$F$$$kI,MW$,$"$k$+$I$&$+$O@_Djl9g$K$O!"(B (skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t) $B$N$h$&$JMWAG$r(B `skk-search-prog-list' $B$N@hF,$KG[CV$9$k$3$H!#(B" ;; "*The first dictionary to be searched. ;;If non-nil, and this variable is used as a component of ;;`skk-search-prog-list', the indicated dictionary is read into a ;;buffer and searched. ;;The keys must be sorted. ;;Only the first entry in each key is checked; if several entries are ;;present the second and following entries are ignored. ;;By setting the value of `skk-search-prog-list' the dictionaries ;;searched and the order of search can be changed." :type '(radio (file :tag "$B<-=q%U%!%$%kL>(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary) (defcustom skk-initial-search-jisyo nil ;; $B%=!<%H$5$l$F$$$kI,MW$,$"$k$+$I$&$+$O@_Dj(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary) (defcustom skk-large-jisyo nil ;; (FILE . CODE) $B$N7A<0$b$$$1$k$O$:(B "*$B8D?M<-=q$N8!:w$N8e$K8!:w$9$k<-=q!#(B $B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B Non-nil $B$G$"$l$P!";XDj$5$l$?<-=q$r8!:w$N$?$a%P%C%U%!$KFI$_9~$_!"8!:w$r9T$&!#(B" :type `(radio (file :tag "$B<-=q%U%!%$%kL>(B" ,(cond ((featurep 'xemacs) (or (locate-data-file "SKK-JISYO.L") "")) ((fboundp 'locate-file) (or (locate-file "skk/SKK-JISYO.L" (list (expand-file-name "../../.." data-directory))) (locate-file "skk/SKK-JISYO.L" (list data-directory)) "")))) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary) (defcustom skk-aux-large-jisyo nil ;; (FILE . CODE) $B$N7A<0$b$$$1$k$O$:(B "*$B<-=q%5!<%P$,;H$($J$$;~$K!"Be$o$j$K8!:w$9$k<-=q!#(B $B8+=P$78l$O!"%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B Non-nil $B$G$"$l$P!"<-=q%5!<%P$,(B active $B$G$J$$;~$K!"(B $B;XDj$5$l$?<-=q$r%P%C%U%!$KFI$_9~$_!"8!:w$r9T$&!#(B" :type `(radio (file :tag "$B<-=q%U%!%$%kL>(B" ,(cond ((featurep 'xemacs) (or (locate-data-file "SKK-JISYO.L") "")) ((fboundp 'locate-file) (or (locate-file "skk/SKK-JISYO.L" (list (expand-file-name "../../.." data-directory))) (locate-file "skk/SKK-JISYO.L" (list data-directory)) "")))) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary :group 'skk-server) (defcustom skk-inhibit-ja-dic-search nil "*$B!V(BGNU Emacs $BIUB0$N<-=q$rMQ$$$?8!:w!W$N6X;_$r;X<($9$k%*%W%7%g%s!#(B GNU Emacs $B$K$O(B SKK-JISYO.L $B$r85$KJQ49$5$l$?(B ja-dic.el $B$H$$$&<-=q$,IUB0$9$k!#(B $B$3$l$rMQ$$$FDL>o$N$+$J4A;zJQ49(B ($BAw$j$"$j!"Aw$j$J$7!"@\F,<-!"@\Hx<-(B) $B$,2DG=(B $B$G$"$k(B ($B$?$@$7(B SKK-JISYO.L $B$K$h$k1Q?tJQ49!"?tCMJQ49$J$I$O$G$-$J$$(B)$B!#(B DDSKK 14.2 $B$h$j!V(Bja-dic.el $B8!:w5!G=(B `skk-search-ja-dic'$B!W$,DI2C$5$l$?!#(B $B$3$N(B `skk-search-ja-dic' $B$O!"(B `skk-large-jisyo'$B!"(B`skk-aux-large-jisyo'$B!"(B `skk-cdb-large-jisyo' $B5Z$S(B `skk-server-host' $B$NA4$F$,L58z$J>l9g$KM-8z$H$J$k(B $B$,!"$"$i$f$k>lLL$G6X;_$7$?$$>l9g$O!"$3$NJQ?t$r(B Non-nil $B$K@_Dj$9$k!#(B" :type 'boolean :group 'skk-dictionary) (defcustom skk-extra-jisyo-file-list nil "*$B%a%$%s<-=q$NB>$K8!:w$9$k<-=q$N%j%9%H$r;XDj$9$k!#(B $B$$$:$l$N<-=q$b!"8+=P$78l$O%=!<%H$5$l$F$$$J$1$l$P$J$i$J$$!#(B (setq skk-extra-jisyo-file-list (list '(\"/usr/share/skk/SKK-JISYO.JIS3_4\" . euc-jisx0213) \"/usr/share/skk/SKK-JISYO.zipcode\")) SKK $B<-=q$K$O(B SKK OpenLab $B$GG[I[$7$F$$$k$b$N!"Bh;0$K8!:w$7$?$$<-=q$N%U%!%$%kL>$N(B $B%j%9%H$r;XDj$9$k!#%U%!%$%kL>$NBe$o$j$K!"%U%!%$%kL>$H%3!<%I7O$N%Z%"$r;XDj$9$k(B $B$3$H$b$G$-$k!#<-=q$O;XDj$5$l$?=g$K8!:w$5$l$k!#(B" :type '(repeat (file :tag "$B<-=q%U%!%$%kL>(B")) :group 'skk-dictionary) (defcustom skk-itaiji-jisyo nil "$B0[BN;z<-=q(B `SKK-JISYO.itaiji', `SKK-JISYO.itaiji.JIS3_4' $B$X$N%Q%9$r;XDj$9$k!#(B" :type '(radio (file :tag "$B<-=q%U%!%$%kL>(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dictionary) (defcustom skk-search-prog-list '((skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t) (skk-tankan-search 'skk-search-jisyo-file skk-large-jisyo 10000) (skk-search-jisyo-file skk-initial-search-jisyo 10000 t) (skk-search-jisyo-file skk-jisyo 0 t) (skk-okuri-search) (skk-search-cdb-jisyo skk-cdb-large-jisyo) (skk-search-jisyo-file skk-large-jisyo 10000) (skk-search-server skk-aux-large-jisyo 10000) (skk-search-ja-dic-maybe) (skk-search-extra-jisyo-files) (skk-search-katakana-maybe) (skk-search-sagyo-henkaku-maybe) (skk-search-itaiji)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B $B$3$NJQ?t$NCM$r2A$9$k$3$H$K$h$C$F$+$J4A;zJQ49$r]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-1 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-2 nil "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-2 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-3 nil "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-3 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-4 nil "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-4 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-5 '((skk-search-tankanji)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-5 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-6 '((skk-search-identity)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-6 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-7 '((skk-search-katakana)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-7 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-8 '((skk-search-hankaku-katakana)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-8 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-9 '((skk-search-jisx0208-romaji)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-9 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-search-prog-list-0 '((skk-search-romaji)) "*$B8!:w4X?t!"8!:wBP>]$N<-=q$r7hDj$9$k$?$a$N%j%9%H!#(B C-0 SPC $B$G;HMQ$5$l$k(B" :type '(repeat (sexp :tag "S$B<0(B")) :group 'skk-dictionary) (defcustom skk-count-jisyo-candidates-function 'skk-count-jisyo-candidates-original "*`skk-count-jisyo-candidates' $B$G;HMQ$9$k4X?t!#(B" :type 'function :group 'skk-dictionary) (defcustom skk-public-jisyo-to-be-searched-function 'skk-public-jisyo-to-be-searched-original "*`skk-public-jisyo-has-word-p' $B$G;HMQ$9$k4X?t!#(B" :type 'function :group 'skk-dictionary) (defcustom skk-jisyo (if skk-user-directory (expand-file-name "jisyo" skk-user-directory) (convert-standard-filename "~/.skk-jisyo")) "*SKK $B$N8D?M<-=q!#(B" :type `(file :tag "$B<-=q%U%!%$%kL>(B") :group 'skk-private) (defcustom skk-backup-jisyo (if skk-user-directory (expand-file-name "jisyo.bak" skk-user-directory) (convert-standard-filename "~/.skk-jisyo.BAK")) "*SKK $B$N8D?M<-=q$N%P%C%/%"%C%W%U%!%$%k!#(B" :type '(file :tag "$B<-=q%U%!%$%kL>(B") :group 'skk-private) (defcustom skk-jisyo-code nil ;; $B8=:_$N$r;XDj$9$k!#(B $B$?$@$7J8;zNs(B \"euc\", \"ujis\", \"sjis\", \"jis\" $B$N;XDj$b0l1~l9g(B \"euc\" $B$HF1$807$$$K$J$k!#(B $B8D?M<-=q$O$3$N%3!<%G%#%s%0%7%9%F%`$GJ]B8$5$l$k!#(B" :type '(radio coding-system (radio :tag "$B%3!<%I$NDL>N(B" (const "euc") (const "ujis") (const "sjis") (const "jis")) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-private) (defcustom skk-share-private-jisyo nil "\ *Non-nil $B$G$"$l$P!"8D?M<-=q$r99?7$9$k:]$K!VJ#?t$N(B SKK $B%W%m%;%9$,FCDj$N8D(B $B?M<-=q$r6&M-$7$F$$$k!W$r9MN8$7$?>e$G=hM}$r9T$&!#(B SKK $B5/F08e$K$3$NJQ?t$NCM$rJQ99$7$?>l9g$O(B \\[skk-restart] $B$GH?1G$5$;$k;v!#(B" :type 'boolean :group 'skk-basic :group 'skk-private) (defcustom skk-jisyo-save-count 50 "*$B?tCM$G$"$l$P!"$=$N2s?t$@$18D?M<-=q$,99?7$5$l$?$H$-$K<+F0E*$K%;!<%V$9$k!#(B nil $B$G$"$l$P!"8D?M<-=q$N%*!<%H%;!<%V$r9T$o$J$$!#(B SKK $B5/F08e$G!"JQ?t(B `skk-share-private-jisyo' $B$,(B non-nil $B$J>l9g(B $B$K(B `skk-jisyo-save-count' $B$NCM$rJQ99$7$?>l9g$O(B \\[skk-restart] $B$GH?1G$5$;$k;v!#(B" :type '(radio (integer :tag "$B@0?t(B" 50) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-private) (defcustom skk-count-private-jisyo-candidates-exactly nil "*Non-nil $B$G$"$l$P!"(BEmacs $B$r=*N;$9$k$H$-$K(B `skk-record-file' $B$KJ]B8$5$l(B $B$kE}7W>pJs$N!V8l?t!W$r@53N$K?t$($k!#(B nil $B$G$"$l$P!"(B1 $B9T$KJ#?t$N8uJd$,$"$C$F$b(B 1 $B8uJd$H$7$F?t$($k!#(B" :type 'boolean :group 'skk-private) (defcustom skk-compare-jisyo-size-when-saving t "*Non-nil $B$G$"$l$P!"(B`skk-jisyo' $B$N%;!<%V;~$K%U%!%$%k%5%$%:$r%A%'%C%/$9$k!#(B $BA02s%;!<%V$7$?(B `skk-jisyo' $B$H:#2s%;!<%V$7$h$&$H$9$k<-=q$H$N%5%$%:$rHf3S$7!"(B $B8er7o$r;XDj$9$k!#(B $B$3$NJQ?t$K$O0z?t(B 1 $B8D$N4X?t!JKt$O4X?t$N%j%9%H!K$rBeF~$9$k$3$H$H$7!"BeF~$7(B $B$?4X?t$O3NDj$7$?J8;zNs$r0z?t$K(B `skk-update-jisyo-p' $BFb$G(B `funcall' $B$5$l$k!#(B $B4pK\E*$K$3$NJQ?t$O%U%C%/JQ?t$G$"$j!"$=$NCM$r@_Dj$7$?$$>l9g$K$O(B `add-hook' $B$GDI2C$9$k$+(B `remove-hook' $B$G:o=|$9$k!#(B SKK $B$G$O!"$+$J4A;zJQ49!&3NDj$r9T$C$?J8;zNs$OA4$F8D?M<-=q$Ke$KKD$l$k$N$rM^$($kL\E*$K;HMQ(B $B$G$-$k!#(B $B$J$*!"8D?M<-=q$KpJs$rH$9$k$3$H$,$G$-$k!#(B" :type '(list symbol) :group 'skk-private) (defcustom skk-learn-combined-word nil "*$B@\F,<-!"@\Hx<-$NF~NO$N7k2L$r<+F0E*$K3X=,$9$k$+$I$&$+$r@_Dj$9$k!#(B Non-nil $B$J$i$P!"@\F,<-$^$?$O@\Hx<-F~NO$N:]!"@\F,<-$^$?$O@\Hx<-$H7k9g$7$?(B $B8l$r<+F0E*$K3X=,$9$k!#(B" :type 'boolean :group 'skk-private) (defcustom skk-save-jisyo-instantly nil "*non-nil $B$G$"$l$P!"C18lEPO?!JC18l:o=|!K$NETEY!"8D?M<-=q$rJ]B8$9$k!#(B" :type 'boolean :group 'skk-private) (defvar skk-jisyo-updated nil "`skk-henkan-in-minibuff' ($BC18lEPO?(B) $B$5$l$l$P(B t $B$H$J$k!#(B `skk-update-jisyo' $B$G;2>H$7$F$$$k!#(B") (defcustom skk-rom-kana-base-rule-list '(("a" nil ("$B%"(B" . "$B$"(B")) ("bb" "b" ("$B%C(B" . "$B$C(B")) ("ba" nil ("$B%P(B" . "$B$P(B")) ("be" nil ("$B%Y(B" . "$B$Y(B")) ("bi" nil ("$B%S(B" . "$B$S(B")) ("bo" nil ("$B%\(B" . "$B$\(B")) ("bu" nil ("$B%V(B" . "$B$V(B")) ("bya" nil ("$B%S%c(B" . "$B$S$c(B")) ("bye" nil ("$B%S%'(B" . "$B$S$'(B")) ("byi" nil ("$B%S%#(B" . "$B$S$#(B")) ("byo" nil ("$B%S%g(B" . "$B$S$g(B")) ("byu" nil ("$B%S%e(B" . "$B$S$e(B")) ("cc" "c" ("$B%C(B" . "$B$C(B")) ("cha" nil ("$B%A%c(B" . "$B$A$c(B")) ("che" nil ("$B%A%'(B" . "$B$A$'(B")) ("chi" nil ("$B%A(B" . "$B$A(B")) ("cho" nil ("$B%A%g(B" . "$B$A$g(B")) ("chu" nil ("$B%A%e(B" . "$B$A$e(B")) ("cya" nil ("$B%A%c(B" . "$B$A$c(B")) ("cye" nil ("$B%A%'(B" . "$B$A$'(B")) ("cyi" nil ("$B%A%#(B" . "$B$A$#(B")) ("cyo" nil ("$B%A%g(B" . "$B$A$g(B")) ("cyu" nil ("$B%A%e(B" . "$B$A$e(B")) ("dd" "d" ("$B%C(B" . "$B$C(B")) ("da" nil ("$B%@(B" . "$B$@(B")) ("de" nil ("$B%G(B" . "$B$G(B")) ("dha" nil ("$B%G%c(B" . "$B$G$c(B")) ("dhe" nil ("$B%G%'(B" . "$B$G$'(B")) ("dhi" nil ("$B%G%#(B" . "$B$G$#(B")) ("dho" nil ("$B%G%g(B" . "$B$G$g(B")) ("dhu" nil ("$B%G%e(B" . "$B$G$e(B")) ("di" nil ("$B%B(B" . "$B$B(B")) ("do" nil ("$B%I(B" . "$B$I(B")) ("du" nil ("$B%E(B" . "$B$E(B")) ("dya" nil ("$B%B%c(B" . "$B$B$c(B")) ("dye" nil ("$B%B%'(B" . "$B$B$'(B")) ("dyi" nil ("$B%B%#(B" . "$B$B$#(B")) ("dyo" nil ("$B%B%g(B" . "$B$B$g(B")) ("dyu" nil ("$B%B%e(B" . "$B$B$e(B")) ("e" nil ("$B%((B" . "$B$((B")) ("ff" "f" ("$B%C(B" . "$B$C(B")) ("fa" nil ("$B%U%!(B" . "$B$U$!(B")) ("fe" nil ("$B%U%'(B" . "$B$U$'(B")) ("fi" nil ("$B%U%#(B" . "$B$U$#(B")) ("fo" nil ("$B%U%)(B" . "$B$U$)(B")) ("fu" nil ("$B%U(B" . "$B$U(B")) ("fya" nil ("$B%U%c(B" . "$B$U$c(B")) ("fye" nil ("$B%U%'(B" . "$B$U$'(B")) ("fyi" nil ("$B%U%#(B" . "$B$U$#(B")) ("fyo" nil ("$B%U%g(B" . "$B$U$g(B")) ("fyu" nil ("$B%U%e(B" . "$B$U$e(B")) ("gg" "g" ("$B%C(B" . "$B$C(B")) ("ga" nil ("$B%,(B" . "$B$,(B")) ("ge" nil ("$B%2(B" . "$B$2(B")) ("gi" nil ("$B%.(B" . "$B$.(B")) ("go" nil ("$B%4(B" . "$B$4(B")) ("gu" nil ("$B%0(B" . "$B$0(B")) ("gya" nil ("$B%.%c(B" . "$B$.$c(B")) ("gye" nil ("$B%.%'(B" . "$B$.$'(B")) ("gyi" nil ("$B%.%#(B" . "$B$.$#(B")) ("gyo" nil ("$B%.%g(B" . "$B$.$g(B")) ("gyu" nil ("$B%.%e(B" . "$B$.$e(B")) ;;("h" "" ("$B%*(B" . "$B$*(B")) ("ha" nil ("$B%O(B" . "$B$O(B")) ("he" nil ("$B%X(B" . "$B$X(B")) ("hi" nil ("$B%R(B" . "$B$R(B")) ("ho" nil ("$B%[(B" . "$B$[(B")) ("hu" nil ("$B%U(B" . "$B$U(B")) ("hya" nil ("$B%R%c(B" . "$B$R$c(B")) ("hye" nil ("$B%R%'(B" . "$B$R$'(B")) ("hyi" nil ("$B%R%#(B" . "$B$R$#(B")) ("hyo" nil ("$B%R%g(B" . "$B$R$g(B")) ("hyu" nil ("$B%R%e(B" . "$B$R$e(B")) ("i" nil ("$B%$(B" . "$B$$(B")) ("jj" "j" ("$B%C(B" . "$B$C(B")) ("ja" nil ("$B%8%c(B" . "$B$8$c(B")) ("je" nil ("$B%8%'(B" . "$B$8$'(B")) ("ji" nil ("$B%8(B" . "$B$8(B")) ("jo" nil ("$B%8%g(B" . "$B$8$g(B")) ("ju" nil ("$B%8%e(B" . "$B$8$e(B")) ("jya" nil ("$B%8%c(B" . "$B$8$c(B")) ("jye" nil ("$B%8%'(B" . "$B$8$'(B")) ("jyi" nil ("$B%8%#(B" . "$B$8$#(B")) ("jyo" nil ("$B%8%g(B" . "$B$8$g(B")) ("jyu" nil ("$B%8%e(B" . "$B$8$e(B")) ("kk" "k" ("$B%C(B" . "$B$C(B")) ("ka" nil ("$B%+(B" . "$B$+(B")) ("ke" nil ("$B%1(B" . "$B$1(B")) ("ki" nil ("$B%-(B" . "$B$-(B")) ("ko" nil ("$B%3(B" . "$B$3(B")) ("ku" nil ("$B%/(B" . "$B$/(B")) ("kya" nil ("$B%-%c(B" . "$B$-$c(B")) ("kye" nil ("$B%-%'(B" . "$B$-$'(B")) ("kyi" nil ("$B%-%#(B" . "$B$-$#(B")) ("kyo" nil ("$B%-%g(B" . "$B$-$g(B")) ("kyu" nil ("$B%-%e(B" . "$B$-$e(B")) ("ma" nil ("$B%^(B" . "$B$^(B")) ("me" nil ("$B%a(B" . "$B$a(B")) ("mi" nil ("$B%_(B" . "$B$_(B")) ("mo" nil ("$B%b(B" . "$B$b(B")) ("mu" nil ("$B%`(B" . "$B$`(B")) ("mya" nil ("$B%_%c(B" . "$B$_$c(B")) ("mye" nil ("$B%_%'(B" . "$B$_$'(B")) ("myi" nil ("$B%_%#(B" . "$B$_$#(B")) ("myo" nil ("$B%_%g(B" . "$B$_$g(B")) ("myu" nil ("$B%_%e(B" . "$B$_$e(B")) ("n" nil ("$B%s(B" . "$B$s(B")) ("n'" nil ("$B%s(B" . "$B$s(B")) ("na" nil ("$B%J(B" . "$B$J(B")) ("ne" nil ("$B%M(B" . "$B$M(B")) ("ni" nil ("$B%K(B" . "$B$K(B")) ("nn" nil ("$B%s(B" . "$B$s(B")) ("no" nil ("$B%N(B" . "$B$N(B")) ("nu" nil ("$B%L(B" . "$B$L(B")) ("nya" nil ("$B%K%c(B" . "$B$K$c(B")) ("nye" nil ("$B%K%'(B" . "$B$K$'(B")) ("nyi" nil ("$B%K%#(B" . "$B$K$#(B")) ("nyo" nil ("$B%K%g(B" . "$B$K$g(B")) ("nyu" nil ("$B%K%e(B" . "$B$K$e(B")) ("o" nil ("$B%*(B" . "$B$*(B")) ("pp" "p" ("$B%C(B" . "$B$C(B")) ("pa" nil ("$B%Q(B" . "$B$Q(B")) ("pe" nil ("$B%Z(B" . "$B$Z(B")) ("pi" nil ("$B%T(B" . "$B$T(B")) ("po" nil ("$B%](B" . "$B$](B")) ("pu" nil ("$B%W(B" . "$B$W(B")) ("pya" nil ("$B%T%c(B" . "$B$T$c(B")) ("pye" nil ("$B%T%'(B" . "$B$T$'(B")) ("pyi" nil ("$B%T%#(B" . "$B$T$#(B")) ("pyo" nil ("$B%T%g(B" . "$B$T$g(B")) ("pyu" nil ("$B%T%e(B" . "$B$T$e(B")) ("rr" "r" ("$B%C(B" . "$B$C(B")) ("ra" nil ("$B%i(B" . "$B$i(B")) ("re" nil ("$B%l(B" . "$B$l(B")) ("ri" nil ("$B%j(B" . "$B$j(B")) ("ro" nil ("$B%m(B" . "$B$m(B")) ("ru" nil ("$B%k(B" . "$B$k(B")) ("rya" nil ("$B%j%c(B" . "$B$j$c(B")) ("rye" nil ("$B%j%'(B" . "$B$j$'(B")) ("ryi" nil ("$B%j%#(B" . "$B$j$#(B")) ("ryo" nil ("$B%j%g(B" . "$B$j$g(B")) ("ryu" nil ("$B%j%e(B" . "$B$j$e(B")) ("ss" "s" ("$B%C(B" . "$B$C(B")) ("sa" nil ("$B%5(B" . "$B$5(B")) ("se" nil ("$B%;(B" . "$B$;(B")) ("sha" nil ("$B%7%c(B" . "$B$7$c(B")) ("she" nil ("$B%7%'(B" . "$B$7$'(B")) ("shi" nil ("$B%7(B" . "$B$7(B")) ("sho" nil ("$B%7%g(B" . "$B$7$g(B")) ("shu" nil ("$B%7%e(B" . "$B$7$e(B")) ("si" nil ("$B%7(B" . "$B$7(B")) ("so" nil ("$B%=(B" . "$B$=(B")) ("su" nil ("$B%9(B" . "$B$9(B")) ("sya" nil ("$B%7%c(B" . "$B$7$c(B")) ("sye" nil ("$B%7%'(B" . "$B$7$'(B")) ("syi" nil ("$B%7%#(B" . "$B$7$#(B")) ("syo" nil ("$B%7%g(B" . "$B$7$g(B")) ("syu" nil ("$B%7%e(B" . "$B$7$e(B")) ("tt" "t" ("$B%C(B" . "$B$C(B")) ("ta" nil ("$B%?(B" . "$B$?(B")) ("te" nil ("$B%F(B" . "$B$F(B")) ("tha" nil ("$B%F%!(B" . "$B$F$!(B")) ("the" nil ("$B%F%'(B" . "$B$F$'(B")) ("thi" nil ("$B%F%#(B" . "$B$F$#(B")) ("tho" nil ("$B%F%g(B" . "$B$F$g(B")) ("thu" nil ("$B%F%e(B" . "$B$F$e(B")) ("ti" nil ("$B%A(B" . "$B$A(B")) ("to" nil ("$B%H(B" . "$B$H(B")) ("tsu" nil ("$B%D(B" . "$B$D(B")) ("tu" nil ("$B%D(B" . "$B$D(B")) ("tya" nil ("$B%A%c(B" . "$B$A$c(B")) ("tye" nil ("$B%A%'(B" . "$B$A$'(B")) ("tyi" nil ("$B%A%#(B" . "$B$A$#(B")) ("tyo" nil ("$B%A%g(B" . "$B$A$g(B")) ("tyu" nil ("$B%A%e(B" . "$B$A$e(B")) ("u" nil ("$B%&(B" . "$B$&(B")) ("vv" "v" ("$B%C(B" . "$B$C(B")) ("va" nil ("$B%t%!(B" . "$B$&!+$!(B")) ("ve" nil ("$B%t%'(B" . "$B$&!+$'(B")) ("vi" nil ("$B%t%#(B" . "$B$&!+$#(B")) ("vo" nil ("$B%t%)(B" . "$B$&!+$)(B")) ("vu" nil ("$B%t(B" . "$B$&!+(B")) ("ww" "w" ("$B%C(B" . "$B$C(B")) ("wa" nil ("$B%o(B" . "$B$o(B")) ("we" nil ("$B%&%'(B" . "$B$&$'(B")) ("wi" nil ("$B%&%#(B" . "$B$&$#(B")) ("wo" nil ("$B%r(B" . "$B$r(B")) ("wu" nil ("$B%&(B" . "$B$&(B")) ("xx" "x" ("$B%C(B" . "$B$C(B")) ("xa" nil ("$B%!(B" . "$B$!(B")) ("xe" nil ("$B%'(B" . "$B$'(B")) ("xi" nil ("$B%#(B" . "$B$#(B")) ("xka" nil ("$B%u(B" . "$B$+(B")) ("xke" nil ("$B%v(B" . "$B$1(B")) ("xo" nil ("$B%)(B" . "$B$)(B")) ("xtsu" nil ("$B%C(B" . "$B$C(B")) ("xtu" nil ("$B%C(B" . "$B$C(B")) ("xu" nil ("$B%%(B" . "$B$%(B")) ("xwa" nil ("$B%n(B" . "$B$n(B")) ("xwe" nil ("$B%q(B" . "$B$q(B")) ("xwi" nil ("$B%p(B" . "$B$p(B")) ("xya" nil ("$B%c(B" . "$B$c(B")) ("xyo" nil ("$B%g(B" . "$B$g(B")) ("xyu" nil ("$B%e(B" . "$B$e(B")) ("yy" "y" ("$B%C(B" . "$B$C(B")) ("ya" nil ("$B%d(B" . "$B$d(B")) ("ye" nil ("$B%$%'(B" . "$B$$$'(B")) ("yo" nil ("$B%h(B" . "$B$h(B")) ("yu" nil ("$B%f(B" . "$B$f(B")) ("zz" "z" ("$B%C(B" . "$B$C(B")) ("z " nil "$B!!(B") ("z*" nil "$B"((B") ("z," nil "$B!E(B") ("z-" nil "$B!A(B") ("z." nil "$B!D(B") ("z/" nil "$B!&(B") ("z0" nil "$B!{(B") ("z:" nil "$(O!,(B") ("z;" nil "$(O!+(B") ("z@" nil "$B!}(B") ("z[" nil "$B!X(B") ("z]" nil "$B!Y(B") ("z{" nil "$B!Z(B") ("z}" nil "$B![(B") ("z(" nil "$B!J(B") ("z)" nil "$B!K(B") ("za" nil ("$B%6(B" . "$B$6(B")) ("ze" nil ("$B%<(B" . "$B$<(B")) ("zh" nil "$B"+(B") ("zi" nil ("$B%8(B" . "$B$8(B")) ("zj" nil "$B"-(B") ("zk" nil "$B",(B") ("zl" nil "$B"*(B") ("zL" nil "$B"M(B") ("zo" nil ("$B%>(B" . "$B$>(B")) ("zu" nil ("$B%:(B" . "$B$:(B")) ("zya" nil ("$B%8%c(B" . "$B$8$c(B")) ("zye" nil ("$B%8%'(B" . "$B$8$'(B")) ("zyi" nil ("$B%8%#(B" . "$B$8$#(B")) ("zyo" nil ("$B%8%g(B" . "$B$8$g(B")) ("zyu" nil ("$B%8%e(B" . "$B$8$e(B")) ("." nil skk-auto-kutouten) ("," nil skk-auto-kutouten) ("-" nil skk-auto-kutouten) (":" nil "$B!'(B") (";" nil "$B!((B") ("?" nil "$B!)(B") ("[" nil "$B!V(B") ("]" nil "$B!W(B") ("l" nil skk-latin-mode) ("q" nil skk-toggle-kana) ("L" nil skk-jisx0208-latin-mode) ("Q" nil skk-set-henkan-point-subr) ("X" nil skk-purge-from-jisyo) ("/" nil skk-abbrev-mode) ("$" nil skk-display-code-for-char-at-point) ("@" nil skk-today) ("\\" nil skk-input-by-code-or-menu) (skk-kakutei-key nil skk-kakutei) ;; XXX ;;("\t" nil skk-insert) ;;("," nil skk-previous-candidate) ;;("\M-\040" nil skk-start-henkan-with-completion); M-SPC ;;("\M-\121" nil skk-backward-and-set-henkan-point); M-Q ) ;; $B%3%s%9%?%s%H$K$7$F$7$^$o$J$$$N$O!"%m!<%^;zF~NO$H$OA4$/JL$N@_Dj$r(B ;; $B$9$k?M$b$$$k$+$i$G$9!#(B "*$B%-!uBVA+0\5,B'$N%j%9%H!#(B $B%j%9%H$N3FMWAG$O!"$=$l$>$l$,0l$D$N5,B'$G$"$j!"2<5-$N7A<0$rK~$?$7$F$$$J$1$l$P(B $B$J$i$J$$!#(B (INPUT-STATE NEXT-STATE OUTPUT) SKK $B$O(B INPUT-STATE $B$r8!=P$9$k$H!"(BOUTPUT $B$r%P%C%U%!$KA^F~$7!"B3$$$F(B NEXT-STATE $B$K>uBV$r0\$7$?$&$($G!"F~NOBT$A>uBV$H$J$k!#(B $BNc$($P!"(B (\"a\" nil (\"$B%"(B\" . \"$B$"(B\")) (\"ki\" nil (\"$B%-(B\" . \"$B$-(B\")) (\"tt\" \"t\" (\"$B%C(B\" . \"$B$C(B\")) (\"nn\" nil (\"$B%s(B\" . \"$B$s(B\")) (\"n'\" nil (\"$B%s(B\" . \"$B$s(B\")) $B>e5-$N5,B'$O!"$=$l$>$l!"(B a => $B$"(B ki => $B$-(B tt => $B$C(Bt nn => $B$s(B n' => $B$s(B $B$3$N$h$&$K>uBV$,0\$jJQ$o$k$3$H$r0UL#$9$k!#(B INPUT-STATE $B5Z$S(B NEXT-STATE $B$O!"DL>o(B US-ASCII $BJ8;z$+$i@.$kJ8;zNs$rMQ$$$k!#(B $B$?$@$7!"FCJL$J>l9g$K$O(B INPUT-STATE $B$K$=$l0J30$NJ8;zNs$r;XDj$9$k$3$H$,$"$k!#(B OUTPUT $B$K$O!"0J2<$N(B 3$B$D$N7A<0$r;XDj$G$-$k!#(B $BJ8;zNs(B -- $B$+$J%b!<%I!"%+%J%b!<%I$H$b!"$3$l$,A^F~$5$l$k!#(B $BJ8;zNs$HJ8;zNs$N%;%k(B ($B%I%C%H%Z%"(B) -- $B$+$J%b!<%I$K$*$$$F$O(B CDR $B$N!"%+%J%b!<%I$K$*$$$F$O(B CAR $B$NJ8;zNs$,!"(B $B$=$l$>$lA^F~$5$l$k!#(B $B4X?tL>%7%s%\%k(B -- $B4X?t$rJ}$N5,B'$rMx(B $BMQ$9$k$,!"(B `skk-rom-kana-rule-list' $B$NJ}$,M%@h$5$l$k!#=>$C$F%f!<%6$,FH<+$N5,(B $BB'$r@_Dj$7$?$$>l9g$K$O!"(B`skk-rom-kana-rule-list' $B$NJ}$r;H$&$N$,$h$$!#(B" :type '(repeat (list :tag "$B%k!<%k(B" (radio :tag "1 $BF~NO(B" (string :tag "$BJ8;zNs(B") (symbol :tag "$BJQ?tL>(B")) (radio :tag "2 $BuBV(B" (string :tag "$BJ8;zNs(B") (const :tag "nil ($B6u$N>uBV(B)" nil)) (radio :tag "3 $B=PNO(B" (function :tag "$B4X?t$G$-$a$k(B") (string :tag "$BJ8;zNs(B") (cons :tag "$BJ8;zNs$NAH(B" (string :tag "3-1 $B%+%?%+%J(B") (string :tag "3-2 $B$R$i$,$J(B"))))) :group 'skk-input-basic) (defcustom skk-rom-kana-rule-list '(;; $B%f!<%6!<$N9%$_$G@_Dj$,J,$l$=$&$JMWAG$O!"(B ;; skk-rom-kana-base-rule-list $B$+$i$3$A$i$X0\$7$^$7$g$&(B...$B!#(B ("hh" "h" ("$B%C(B" . "$B$C(B")) ;; when you may want to insert $B!V$,$s$^!W(Bby "gamma"... ("mm" "m" ("$B%s(B" . "$B$s(B"))) "*$B>uBVA+0\5,B'$N%j%9%H$G!"%f!<%6$NDI2C@_DjMQ$NJQ?t!#(B $B$3$NJQ?t$O!"(B`skk-rom-kana-base-rule-list' $B$HF1MM$N=q<0$rK~$?$9I,MW$,$"$k!#(B SKK $B$O5/F0;~$K$3$N(B 2 $BJQ?t$rJT=8$7$F(B `skk-rule-tree' $B$r:n@.$9$k$,!"(B `skk-rom-kana-rule-list' $B$N5,B'$O(B `skk-rom-kana-base-rule-list' $B$N5,B'$h$j$b(B $BM%@h$5$l$k!#(B $B%j%9%H$N3FMWAG$O!"$=$l$>$l$,0l$D$N5,B'$G$"$j!"2<5-$N7A<0$rK~$?$7$F$$$J$1$l$P(B $B$J$i$J$$!#(B (INPUT-STATE NEXT-STATE OUTPUT) SKK $B$O(B INPUT-STATE $B$r8!=P$9$k$H!"(BOUTPUT $B$r%P%C%U%!$KA^F~$7!"B3$$$F(B NEXT-STATE $B$K>uBV$r0\$7$?$&$($G!"F~NOBT$A>uBV$H$J$k!#(B $B>\$7$/$O!"(B`skk-rom-kana-base-rule-list' $B$N@bL@$r;2>H$N$3$H!#(B $B%f!<%6$O!"DI2C$7$?$$5,B'$r!"Nc$($P(B (setq skk-rom-kana-rule-list '( (\"hh\" \"h\" (\"$B%C(B\" . \"$B$C(B\")) (\"@\" nil \"$B!w(B\") ... )) $B>e5-$N$h$&$K(B `.emacs' $B$^$?$O(B `skk-init-file' $B$K$F@_Dj$9$k$3$H$,$G$-$k!#(B $B$3$NJQ?t$O!"I8=`$G$O(B (\"hh\" \"h\" (\"$B%C(B\" . \"$B$C(B\")) $B$N@_Dj$,$5$l$F$$$k!#$3$N5,B'$K=>$&$H!"(B ohhonn => $B$*$C$[$s(B ohhira => $B$*$C$R$i(B $B$N$h$&$KA^F~$5$l$k!#$b$7$3$l$r(B ohhonn => $B$*$*$[$s(B ohhira => $B$*$*$R$i(B $B$N$h$&$KJQ99$7$?$1$l$P!"$3$N@_Dj(B (\"hh\" \"h\" (\"$B%C(B\" . \"$B$C(B\")) $B$r:o=|$9$k!#(B $B$^$?!"(B`@' $B$G(B `skk-today' ($BEvF|$NF|IU$NF~NO(B) $B$r5/F0$9$kBe$j$K(B `$B!w(B' $B$rF~(B $BNO$7$?$$>l9g$O!"(B`skk-rom-kana-rule-list' $B$K(B (\"@\" nil \"$B!w(B\") $B$H$$$&MWAG$r2C$($k!#(B $B$b$7!"(BSKK $B$r5/F0$7$?8e$G(B `skk-rom-kana-rule-list' $B$rJQ99$7$?>l9g!"$=$N@_(B $BDj$rH?1G$5$;$k$K$O(B \\[skk-restart] $B$r(B")) (radio :tag "2 $BuBV(B" (string :tag "$BJ8;zNs(B") (const :tag "nil ($B6u$N>uBV(B)" nil)) (radio :tag "3 $B=PNO(B" (function :tag "$B4X?t$G$-$a$k(B") (string :tag "$BJ8;zNs(B") (cons :tag "$BJ8;zNs$NAH(B" (string :tag "3-1 $B%+%?%+%J(B") (string :tag "3-2 $B$R$i$,$J(B"))))) :group 'skk-input-basic) (defcustom skk-kana-input-search-function (lambda () (save-match-data (and (string-match "^h\\([bcdfghjklmnpqrstvwxz]\\)$" skk-prefix) (member (char-to-string (preceding-char)) '("$B$*(B" "$B%*(B")) (cons '("$B%*(B" . "$B$*(B") (match-string 1 skk-prefix))))) "*$B%k!<%k%j%9%H$NCf$K5-$;$J$$JQ49%k!<%k$r=hM}$9$k4X?t!#(B `skk-rom-kana-base-rule-list' $B$H(B `skk-rom-kana-rule-list' $B$NMWAG$rA4$F8!:w(B $B$7$?8e$K%3!<%k$5$l$k!#0z?t$O$J$$!#(B ($B8=:_$NF~NO$KBP$9$k=PNO(B . \"$BB3$/(B unfixed prefix\") $B$H$$$&%;%k$rJV$9!#=PNO$NH$N$3$H!#(B $B%G%U%)%k%H$G$O!"(B\"$B$*(B\" $B$N8e$N(B \"h\" + $B;R2;$NF~NO$r(B \"$B$*$*(B\" + $BB3$/;R2;(B $B=hM}MQ$N(B unfixed prefix $B$KJQ49$7$F$$$k!#(B" :type 'function :group 'skk-input-basic) (defcustom skk-downcase-alist nil "*$BJQ49%-!<(B ($BBgJ8;z%m!<%^;z(B) $B$N>.J8;z$X$NJQ495,B'$rI=$o$9O"A[%j%9%H!#(B $BJQ49%-!<$NF~NO$r3+;O$9$k:]!"(BSKK $B$G$OBgJ8;z$GF~NO$r9T$&$N$G!"(B `skk-set-henkan-point' $B$NCf$G$3$l$r>.J8;z$KJQ49$9$k!#$3$NO"A[(B $B%j%9%H$KBgJ8;z(B -> $B>.J8;z$NJQ49%k!<%k$r=q$$$F$*$/$3$H$G!"%-!l9g$O!"C1$K(B downcase $B$5$l$k!#(B" :type '(repeat (cons character character)) :group 'skk-input-basic) (defcustom skk-jisx0208-latin-vector [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil "$B!!(B" "$B!*(B" "$B!I(B" "$B!t(B" "$B!p(B" "$B!s(B" "$B!u(B" "$B!G(B" "$B!J(B" "$B!K(B" "$B!v(B" "$B!\(B" "$B!$(B" "$B!](B" "$B!%(B" "$B!?(B" "$B#0(B" "$B#1(B" "$B#2(B" "$B#3(B" "$B#4(B" "$B#5(B" "$B#6(B" "$B#7(B" "$B#8(B" "$B#9(B" "$B!'(B" "$B!((B" "$B!c(B" "$B!a(B" "$B!d(B" "$B!)(B" "$B!w(B" "$B#A(B" "$B#B(B" "$B#C(B" "$B#D(B" "$B#E(B" "$B#F(B" "$B#G(B" "$B#H(B" "$B#I(B" "$B#J(B" "$B#K(B" "$B#L(B" "$B#M(B" "$B#N(B" "$B#O(B" "$B#P(B" "$B#Q(B" "$B#R(B" "$B#S(B" "$B#T(B" "$B#U(B" "$B#V(B" "$B#W(B" "$B#X(B" "$B#Y(B" "$B#Z(B" "$B!N(B" "$B!@(B" "$B!O(B" "$B!0(B" "$B!2(B" "$B!F(B" "$B#a(B" "$B#b(B" "$B#c(B" "$B#d(B" "$B#e(B" "$B#f(B" "$B#g(B" "$B#h(B" "$B#i(B" "$B#j(B" "$B#k(B" "$B#l(B" "$B#m(B" "$B#n(B" "$B#o(B" "$B#p(B" "$B#q(B" "$B#r(B" "$B#s(B" "$B#t(B" "$B#u(B" "$B#v(B" "$B#w(B" "$B#x(B" "$B#y(B" "$B#z(B" "$B!P(B" "$B!C(B" "$B!Q(B" "$B!A(B" nil] "*`skk-jisx0208-latin-insert' $B$G;2>H$5$l$kJ8;z%F!<%V%k!#(B $B%-!<$KBP1~$9$k0LCV$KJ8;zNs$,$"$l$P!"A41Q%b!<%I$G3:Ev$N%-!<$r2!$9$3$H$G!"BP1~$9(B $B$kJ8;z$,A^F~$5$l$k!#(B $BNc$($P!"%9%Z!<%9%-!<$KBP1~$7$F!"H>3Q%9%Z!<%9$rA^F~$5$;$k$h$&$KJQ99$7$?$1$l$P!"(B skk.el $B$N%m!<%I8e(B ($B$b$7$/$O(B `skk-load-hook' $B$rMxMQ$7$F(B)$B!"(B (aset skk-jisx0208-latin-vector 32 \" \") $B$H$9$k$+!"$b$7$/$O!"(B`skk-jisx0208-latin-vector' $B$N(B 32 $BHVL\(B (0 $BHV$+$i?t$($F(B) $B$NCM$r(B \" \"$B$H$9$k$h$&$J(B `skk-jisx0208-latin-vector' $B$rD>@\=q$-!"(Bsetq $B$G(B $BBeF~$9$k!#(B32 $B$O!"(B? ($BH>3Q%9%Z!<%9$N(B char type) $B$rI>2A$7$?$H$-$NCM!#(B" :type 'sexp :group 'skk-input-basic) (defcustom skk-special-midashi-char-list '(?> ?< ??) "*$B@\F,<-!"@\Hx<-$NF~NO$r;XDj$9$kJ8;z$N%j%9%H!#(B" ;; "*List of characters for entering prefixes and suffixes." :type '(repeat character) :group 'skk-input-basic) (defcustom skk-kuten-touten-alist '((jp . ("$B!#(B" . "$B!"(B")) (en . ("$B!%(B" . "$B!$(B")) (jp-en . ("$B!#(B" . "$B!$(B")) (en-jp . ("$B!%(B" . "$B!"(B"))) "*$B6gE@$HFIE@$NO"A[%j%9%H!#(B $B3FMWAG$N7A<0$O!"(B ($B%7%s%\%k(B . ($B6gE@$rI=$o$9J8;zNs(B . $BFIE@$rI=$o$9J8;zNs(B)) $B$H$$$&(B cons cell$B!#%7%s%\%k$NItJ,$O!"(B`jp' $B$b$7$/$O(B `en' $B!#(B \\[skk-toggle-kutouten] $B$O!"$3$l$r%H%0%k$G@Z$j49$($k!#(B $B%G%U%)%k%H$N6gFIE@$N%?%$%W$O!"JQ?t(B `skk-kutouten-type' $B$G;XDj$9$k!#(B" :type '(repeat (cons (radio :tag "$BAH$N$J$^$((B" (const jp) (const en) (const jp-en) (const en-jp)) (cons :tag "$B6gFIE@$NAH(B" (string :tag "$B6gE@(B" "$B!#(B") (string :tag "$BFIE@(B" "$B!"(B")))) :group 'skk-input-basic) (defcustom skk-kutouten-type 'jp "*$BI8=`$N6gFIE@$N%?%$%W!#(B $B$3$NJQ?t$NCM$K;XDj$G$-$k%7%s%\%k$H6gFIE@$NAH$H$NBP1~$O0J2<$NDL$j!#(B `jp': $B!V!#!W!V!"!W(B `en': $B!V!%!W!V!$!W(B `jp-en': $B!V!#!W!V!$!W(B `en-jp': $B!V!%!W!V!"!W(B $B$3$NJQ?t$K$O%3%s%9!&%;%k$r;XDj$9$k$3$H$b2DG=!#$=$N>l9g$O(B ($B6gE@$r<($9J8;zNs(B . $BFIE@$r<($9J8;zNs(B) $B$N$h$&$K;XDj$9$k!#(B $B$3$NJQ?t$O(B `skk-use-kana-keyboard' $B$,(B non-nil $B$J$i$PL58z$G$"$k!#(B $B$3$NJQ?t$O(B `setq' $B$9$k$H%P%C%U%!%m!<%+%k2=$5$l$k$?$a!"%0%m!<%P%k$K(B $BCM$r@_Dj$7$?$$>l9g$O(B `setq-default' $B$rMQ$$$k$3$H$,?d>)$5$l$k!#(B" :type '(radio (const jp) (const en) (const jp-en) (const en-jp) (cons :tag "$BG$0U$NAH(B" (string :tag "$B6gE@(B" "$B!#(B") (string :tag "$BFIE@(B" "$B!"(B"))) :group 'skk-input-basic) (make-variable-buffer-local 'skk-kutouten-type) ;;;###autoload (put 'skk-kutouten-type 'safe-local-variable 'symbolp) (defcustom skk-use-auto-kutouten nil "*Non-nil $B$G$"$l$P!"$+$J%b!<%I$K$*$1$kD92;(B($B!<(B)$B!"6gE@(B($B!#(B)$BKt$OFIE@(B($B!"(B)$B$NF0:n$rJQ99$9$k!#(B ASCII $B?t;z$ND>8e$G$"$l$P!"D92;(B($B!<(B)$B$O(B `-' $B$X!"6gE@(B($B!#(B)$B$O(B `.' $B$X!"FIE@(B($B!"(B)$B$O(B `,' $B$X$HJQ99$7!"(BJISX0208($BA43Q(B)$B?t;z$ND>8e$G$"$l$P!"D92;(B($B!<(B)$B$O(B `$B!](B' $B$X!"6gE@(B($B!#(B)$B$O(B `$B!%(B' $B$X!"FIE@(B($B!"(B)$B$O(B `$B!$(B' $B$X$HJQ99$9$k!#(B" :type 'boolean :group 'skk-input-basic) (defcustom skk-auto-insert-paren nil "*Non-nil $B$G$"$l$P!"3g8L$HJD3g8L$r$^$H$a$FA^F~$9$k!#(B $BNc$($P!"(B\"$B!V(B\" $B$rF~NO$7$?$H$-$K(B \"$B!W(B\" $B$r<+F0E*$KA^F~$7!"N>$+$.3g8L$N4V$K(B $B%+!<%=%k$r0\F0$9$k!#(B $BA^F~$9$kJ8;zNs$O!"(B`skk-auto-paren-string-alist' $B$G;XDj$9$k!#(B" :type 'boolean :group 'skk-basic :group 'skk-input-basic) (defcustom skk-auto-paren-string-alist '(("$B!V(B" . "$B!W(B") ("$B!X(B" . "$B!Y(B") ("(" . ")") ("$B!J(B" . "$B!K(B") ("{" . "}")("$B!P(B" . "$B!Q(B") ("$B!R(B" . "$B!S(B") ("$B!T(B" . "$B!U(B") ("[" . "]") ("$B!N(B" . "$B!O(B") ("$B!L(B" . "$B!M(B") ("$B!Z(B" . "$B![(B") ("\"" . "\"")("$B!H(B" . "$B!I(B") ("`" . "'") ;;("<" . ">") ;; skk-special-midashi-char-list $B$NCf$K$"$kJ8;z!#(B ) "*$B<+F0E*$KBP$K$J$kJ8;zNs$rF~NO$9$k$?$a$NO"A[%j%9%H!#(B `skk-auto-insert-paren' $B$,(B non-nil $B$N>l9g!"(Bcar $B$NJ8;zNs$,A^F~$5$l$?$H$-(B $B$K(B cdr $B$NJ8;zNs$r<+F0E*$KA^F~$7!"%+!<%=%k$O$=$N(B 2 $B$D$NJ8;z$N4V$K0\F0$9$k!#(B `skk-special-midashi-char-list' $B$NMWAG$K$J$C$F$$$kJ8;z$O!"(B `skk-auto-paren-string-alist' $B$K4^$a$F$b:o=|$5$l$k!#(B " :type '(repeat (cons string string)) :group 'skk-input-basic) (defcustom skk-start-henkan-char ?\040 ; SPC "*$B4A;zJQ49$r3+;O$9$k%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-henkan) (defcustom skk-previous-candidate-keys (list "x" "\C-p") "*`skk-previous-candidate' $B$r3dEv$F$k%-!$lFCJL$J5!G=$K3d$jEv(B $B$F$i$l$F$$$k$N$G!"$3$N%j%9%H$NCf$K$O4^$a$J$$$3$H!#(B" :type '(repeat character) :group 'skk-henkan) (defface skk-henkan-show-candidates-keys-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*$BA*Br%-!<$N(B face $BB0@-!#(B" :group 'skk-henkan :group 'skk-visual) (defcustom skk-henkan-rest-indicator nil "*Non-nil $B$G$"$l$P(B \[$B;D$j(B 99++\] $B$NI=<($r1&4s$;G[CV$9$k!#(B" :type 'boolean :group 'skk-henkan :group 'skk-visual) (defface skk-henkan-rest-indicator-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*\[$B;D$j(B 99++\] $B$N(B face $BB0@-!#(B" :group 'skk-henkan :group 'skk-visual) (defcustom skk-auto-start-henkan t "*$BC18l$dJ8@a$N6h@Z$j$r<($9J8;z$NBG80$K$h$j<+F0E*$KJQ49$r3+;O$9$k!#(B `skk-auto-start-henkan-keyword-list' $B$K$h$jC18l$dJ8@a$N6h@Z$j$r<($9J8;z$r(B $B;XDj$9$k!#(B" :type 'boolean :group 'skk-henkan) (defcustom skk-auto-start-henkan-keyword-list '("$B$r(B" "$B!"(B" "$B!#(B" "$B!%(B" "$B!$(B" "$B!)(B" "$B!W(B" "$B!*(B" "$B!((B" "$B!'(B" ")" ";" ":" "$B!K(B" "$B!I(B" "$B![(B" "$B!Y(B" "$B!U(B" "$B!S(B" "$B!Q(B" "$B!O(B" "$B!M(B" "}" "]" "?" "." "," "!") ;; $B$"$^$j%-!<%o!<%I$,B?$/$J$k$H!"DL>o$NJQ49$r:$Fq$K$9$k!)(B "*$B<+F0JQ49$r3+;O$9$k%-!<%o!<%I!#(B `skk-auto-start-henkan' $B$,(B non-nil $B$N$H$-!"$3$N%j%9%H$NMWAG$NJ8;z$rBG80(B $B$9$k$H!"(BSPC (`skk-start-henkan-char') $B$r2!$7$?$+$N$h$&$KJQ49$r3+;O$7$F(B $B"'%b!<%I$KF~$k!#(B" :type '(repeat string) :group 'skk-henkan) (defcustom skk-force-registration-mode-char ?. "*$B6/@)E*$K<-=qEPO?%b!<%I$KF~$k%-!<%-%c%i%/%?!#(B $B%(%3!<%(%j%"$G8uJd$rI=<($7$F$$$k$H$-$K$3$NJQ?t$GDj5A$7$?%-!<%-%c%i%/%?$r(B $B%?%$%W$9$k$H!"6/@)E*$K<-=qEPO?%b!<%I$KF~$j$^$9!#(B" :type 'character :group 'skk-henkan) (defcustom skk-show-candidates-toggle-display-place-char ?\C-f "*$B8uJdI=<(0lMw$N0LCV$r%(%3!<%(%j%"$H%P%C%U%!$H$G@Z$jBX$($k%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-henkan) (defcustom skk-backward-and-set-henkan-point-char ?\321 ; M-Q "*$B%]%$%s%H$rLa$7$F"&%b!<%I$KF~$k%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-henkan) (defcustom skk-show-inline nil "*Non-nil $B$G$"$l$P!"JQ498uJd$r%$%s%i%$%sI=<($9$k!#(B `vertical' $B$G$"$l$P!"=DJ}8~$K%$%s%i%$%sI=<($9$k!J(BXEmacs $B$G$OF0:n$7$J$$!K!#(B" :type '(radio (const :tag "$BM-8z(B" t) (const :tag "$BM-8z(B ($B=DI=<((B)" vertical) (const :tag "$BL58z(B" nil)) :group 'skk-basic :group 'skk-henkan) (defcustom skk-inline-show-face 'underline "*$B%$%s%i%$%sI=<($9$kJQ498uJd$rAu>~$9$k%U%'%$%9$r;XDj$9$kJQ?t!#(B $B8uJdJ8;zNs$N%U%'%$%9B0@-$r$=$N$^$^;H$$$?$$>l9g$O(B nil $B$K@_Dj$9$k!#(B" :type '(radio (face :tag "$B%U%'%$%9$r;XDj(B") (const :tag "$B8uJdJ8;zNs$N%U%'%$%9B0@-$r$=$N$^$^;HMQ(B" nil)) :group 'skk-visual) (defcustom skk-inline-show-background-color (if (eq skk-background-mode 'light) "beige" "gray15") "*$B%$%s%i%$%sI=<($9$kJQ498uJd$NGX7J?'$r;XDj$9$kJQ?t!#(B `skk-inline-show-face' $B$^$?$O(B `skk-treat-candidate-appearance-function' $B$G(B $BGX7J?'$,;XDj$5$l$F$$$J$$J8;z$KBP$7$F$N$_:nMQ$9$k!#(B" :type 'string :group 'skk-visual) (defcustom skk-inline-show-background-color-odd (if (eq skk-background-mode 'light) "wheat" "gray20") "*$B%$%s%i%$%sI=<($9$kJQ498uJd$NGX7J?'(B($B4q?t%i%$%s(B)$B$r;XDj$9$kJQ?t!#(B `skk-inline-show-face' $B$^$?$O(B `skk-treat-candidate-appearance-function' $B$G(B $BGX7J?'$,;XDj$5$l$F$$$J$$J8;z$KBP$7$F$N$_:nMQ$9$k!#(B" :type 'string :group 'skk-visual) (defcustom skk-search-end-function nil "*$BC18l8!:w=*N;;~$K%3!<%k$5$l$k4X?t!#(B $B$3$N4X?t$rMxMQ$7$F8!:w$7$?C18l$NM%@h=g0L$rJQ99$9$k$J$I$N:n6H$,2DG=!#(B HENKAN-BUFFER, MIDASI, OKURIGANA, ENTRY $B$N(B 4 $B0z?t$rH<$J$C$F%3!<%k$5$l$k!#(B $B2C9)$7$?(B ENTRY $B$rJV$9$3$H!#(B $B$3$N4X?t$O!"<-=q%P%C%U%!$G%3!<%k$5$l$k$N$G!"JQ49$r9T$C$?%P%C%U%!%m!<%+%k$J(B $B>pJs$r \"$B2>L>(B\" $B$3$NCM$,(B nil $B$G$"$l$P!":G=i$N%9%Z!<%9$G8+=P$78l$r@Z$j5M$a$F$7$^$$!"0J9_$N%9%Z!<(B $B%9!"%?%V!"2~9T$OL5;k$5$l$k!#(B $B$3$NCM$O!"(B`skk-toggle-characters' $B5Z$S(B `skk-backward-and-set-henkan-point' $B$NF0(B $B:n$K1F6A$9$k!#(B" :type 'boolean :group 'skk-henkan) (defcustom skk-delete-okuri-when-quit nil "*Non-nil $B$G$"$l$PJQ49Cf$N(B \\[keyboard-quit] $B$GAw$j2>L>$r>C$7$F"&%b!<%I(B $B$KF~$k!#(B $BNc!K(B \"$B"&$J(B*$B$/(B -> $B"'5c$/(B -> \\[keyboard-quit] ->$B"&$J(B\" nil $B$G$"$l$P!"Aw$j2>L>$r4^$a$?8+=P$78l$r$=$N$^$^;D$7$F"&%b!<%I$KF~$k!#(B $BNc!K(B \"$B"&$J(B*$B$/(B -> $B"'5c$/(B -> \\[keyboard-quit] -> $B"&$J$/(B\"" :type 'boolean :group 'skk-henkan) (defcustom skk-henkan-show-candidates-rows 1 "*$BJQ498uJd72$NI=<(9T?t!#(B" :type 'integer :group 'skk-henkan) (defcustom skk-show-candidates-always-pop-to-buffer nil "*$B$3$NJQ?t$,(B non-nil $B$G$"$l$P!">o$K(B\"*$B8uJd(B*\"$B%P%C%U%!$r:n@=$7$F!"JQ498uJd0lMw$r@lMQ%&%#%s%I%&$KI=<($9$k!#(B $B$3$NJQ?t$,(B nil $B$G$"$l$P!"8uJd0lMw$r%(%3!<%(%j%"$KI=<($9$k!#$?$@$7!"8uJd0lMw$NJ8;zNs$ND9$5$,%U%l!<%`$N2#I}$K<}$^$i$J$$>l9g$O!"(B\"*$B8uJd(B*\"$B%P%C%U%!$r:n@=(B(pop-to-buffer)$B$7$F@lMQ$N%&%#%s%I%&$GI=<($9$k!#(B " :type 'boolean :group 'skk-henkan) (defcustom skk-candidate-buffer-background-color nil "*\"*$B8uJd(B*$B%P%C%U%!(B\"$B$NGX7J?'!#(B" :type '(radio (string :tag "$B?'$NL>A0(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-henkan :group 'skk-visual) (defcustom skk-candidate-buffer-background-color-odd nil "*\"*$B8uJd(B*$B%P%C%U%!(B\"$B$NGX7J?'!J4q?t%i%$%s!K!#(B" :type '(radio (string :tag "$B?'$NL>A0(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-henkan :group 'skk-visual) (defcustom skk-candidate-buffer-display-fringes t "*nil $B$G$"$l$P!"(B\"*$B8uJd(B*$B%P%C%U%!(B\"$B$N(B fringe $B$r>C$9(B." :type 'boolean :group 'skk-henkan :group 'skk-visual) (defvar skk-candidate-buffer-fringe-width (list nil (cdr (assoc 'left-fringe (frame-parameters))) (cdr (assoc 'right-fringe (frame-parameters)))) "skk $B5/F0;~$N(B fringe $B$NI}(B") (defcustom skk-search-katakana nil "*$B$+$J$rC1=c$K%+%?%+%JJQ49$7$?8uJd$rI=<($9$k$+$I$&$+$r7h$a$k%*%W%7%g%s!#(B nil $B$J$i$P4^$a$J$$!#(Bt $B$J$i$PA43Q%+%J8uJd$r4^$a$k!#(B `jisx0201-kana' $B$J$i$PA43Q$K2C$($FH>3Q%+%J8uJd$b4^$a$k!#(B $B$3$N5!G=$O0lHLE*$J(B FEP $B$N;H$$>!3Q%+%J$b4^$a$k(B" jisx0201-kana)) :group 'skk-henkan) (defcustom skk-search-sagyo-henkaku nil "*$B4J0W$J%5JQF0;lJQ495!G=$rM-8z$K$9$k$+$I$&$+7h$a$k%*%W%7%g%s!#(B nil $B$J$i$P!"Aw$j2>L>$,(B \"$B$5(B\" \"$B$7(B\" \"$B$9(B\" \"$B$;(B\" $B$N$$$:$l$+$N;~$K(B $BAw$j$J$78uJd$,JQ498uJd$K8=$l$k!#(B anything $B$K@_Dj$9$k$H!"Aw$j2>L>$,2?$G$"$C$F$bAw$j$J$78uJd$rAw$j$"$jJQ49$K(B $BMQ$$$k!#$3$N>l9g!"Aw$j2>L>$H$$$&$h$j$b!"G$0U$N4A;z$H$+$J$N@Z$jBX$(0LCV$r(B $B;XDj$9$k$h$&$JF~NO$K$J$k!#(B $B$3$N5!G=$OIT@53N$J=PNO$r$9$k2DG=@-$KCm0U$9$kI,MW$,$"$k$,!"8D?M<-=q$r0i$F$?$$(B $B%f!<%6!<8~$1$KDs6!$5$l$k!#(B" :type '(radio (const :tag "$B$3$N5!G=$rL58z$K$9$k(B" nil) (const :tag "$B4J0W%5JQF0;lJQ49$r$9$k(B" t) (const :tag "$B$3$N5!G=$rG$0U$NAw$j$"$jJQ49$K3HD%$9$k(B" anything)) :group 'skk-henkan) (defcustom skk-kakutei-key "\C-j" "*$B4A;zJQ49$N3NDjF0:n$r9T$&%-! $B"'3NDj(B -> $B3NDj(Bs -> $B3NDj$9(B\" $B$N$h$&$KJQ498e!"!V$9!W$N(B prefix $B$G$"$k(B \"s\" $B$rF~NO$7$?;~E@$G3NDj$9$k!#(B nil $B$G$"$l$P!"Nc$($P(B \"$B"&$+$/$F$$(B -> $B"'3NDj(B -> $B"'3NDj(Bs -> $B"'3NDj$9$k(B -> $B3NDj$9$k!#(B\" $B$N$h$&$K(B `skk-kakutei' $B$rD>@\!"4V@\$K%3!<%k$9$k$^$G(B ($B6gFIE@$rF~NO$7$?$j!"(B $B?7$?$J"&%b!<%I$KF~$C$?$j$9$k$H4V@\E*$K(B `skk-kakutei' $B$r%3!<%k$9$k(B) $B$O!"3NDj(B $B$7$J$$$N$G!"$=$N4V$O!"JQ498uJd$rA*$SD>$9$3$H$J$I$,2DG=!#(B $B$3$N%*%W%7%g%sMxMQ;~$O!"(B`skk-process-okuri-early' $B$NCM$O(B nil $B$G$J$1$l$P(B $B$J$i$J$$!#(B" :type 'boolean :group 'skk-basic :group 'skk-kakutei) (defcustom skk-egg-like-newline nil "*Non-nil $B$G$"$l$P!""'%b!<%I$G(B RET $B$r%?%$%W$7$F$b3NDj$N$_9T$$!"2~9T$7$J$$!#(B" :type 'boolean :group 'skk-basic :group 'skk-kakutei) (defcustom skk-delete-implies-kakutei t "*Non-nil $B$G$"$l$P!""'%b!<%I$G(B BS $B$r2!$9$H!"A0$N0lJ8;z$r:o=|$73NDj$9$k!#(B nil $B$G$"$l$P!"0l$DA0$N8uJd$rI=<($9$k!#(B $B%7%s%\%k(B `dont-update' $B$G$"$l$P!"8D?M<-=q$r99?7$7$J$$!#(B $B$J$*!"$3$NJQ?t$NCM$K$+$+$o$i$:!"8uJd0lMw$rI=<($7$F$$$k$H$-$N(B BS $BBG80$O(B $BA08uJd(B($B72(B)$B$NI=<($K$J$k!#(B" :type '(radio (const t) (const dont-update) (const nil)) :group 'skk-basic :group 'skk-kakutei) (defcustom skk-kakutei-when-unique-candidate nil "*Non-nil $B$G$"$l$P!"JQ498uJd$,0l$D$7$+$J$$$H$-3NDjJQ49$9$k!#(B $B$3$NCM$,(B t $B$G$"$l$P$I$NJQ49%b!<%I$G$b3NDjJQ49$9$k!#(B `okuri-ari', `okuri-nasi', `abbrev' $B$N$$$:$l$+$rMWAG$H$9$k%j%9%H$G(B $B$"$l$P!"JQ49%b!<%I$,$=$N>r7o$K9gCW$7$?>l9g$N$_3NDjJQ49$9$k!#(B $B8uJd$,B>$KL5$$;v$r3NG'$9$k$?$a!"(B`skk-search-prog-list' $B$NFbMFl9g(B `skk-kakutei-search-prog-limit' $B$r@_Dj$9$k$3$H$G8!:wBP>]$r@)8B$9$k(B $B$3$H$b2DG=!#(B" :type '(radio (const :tag "$B>o$KM-8z(B" t) (set :tag "$BM-8z$K$9$kJQ49%b!<%I(B" (const :tag "$BAw$jM-$jJQ49(B" okuri-ari) (const :tag "$BAw$jL5$7JQ49(B" okuri-nasi) (const :tag "abbrev $BJQ49(B" abbrev)) (const :tag "$BL58z(B" nil)) :group 'skk-kakutei) (defcustom skk-kakutei-search-prog-limit nil "*$BJ#?t<-=q$K$h$k3NDjJQ49$K$*$$$F!"8!:wBP>]$H$9$k<-=q$r@)8B$9$k!#(B $B$3$l$,?tCM$G$"$l$P!"8!:wBP>]$r(B `skk-search-prog-list' $B$N@hF,$+$i$3(B $B$N8D?t$^$G$N<-=q$K@)8B$9$k!#(B $B$=$l0J30$G$"$l$PL5@)8B$KA4$F$N<-=q$rBP>]$H$9$k!#(B `skk-kakutei-when-unique-candidate' $B$,(B non-nil $B$N$H$-$N$_M-8z!#(B" :type '(radio (integer :tag "$BBP>]$H$9$k<-=q$N?t(B") (const :tag "$B@)8B$7$J$$(B" nil)) :group 'skk-kakutei) (defcustom skk-kakutei-end-function nil "*$B3NDj;~$K%3!<%k$5$l$k4X?t!#(B `skk-kakutei-initialize' $B$,%3!<%k$5$l$kA0$K$3$N4X?t$,%3!<%k$5$l$k$N$G!"(B $B:G8e$N3NDj$K4X$9$k%U%i%0N`$O!"$3$N4X?t$NCf$+$i;2>H$9$k$3$H$,$G$-$k!#(B" :type '(radio (function :tag "$B4X?t(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-kakutei) (defcustom skk-henkan-okuri-strictly nil "*Non-nil $B$G$"$l$P!"8+=P$78l$HAw$j2>L>$,0lCW$7$?$H$-$@$18uJd$H$7$F=PNO$9$k!#(B $BNc$($P!"2<5-$N$h$&$J<-=q%(%s%H%j$,(B `skk-jisyo' ($B8D?M<-=q(B) $B$K$"$C$?(B $B>l9g$K(B \"$B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/\" \"$B"&$*$*(B*$B$/(B\" $B$rJQ49$7$?$H$-!"(B\"$BB?$/(B\" $B$N$_$r=PNO$7!"(B\"$BBg$/(B\" $B$r=PNO$7$J$$!#(B SKK-JISYO.[SML] $B$NAw$j2>L>%(%s%H%j$O>e5-$N7A<0$K$J$C$F$$$J$$$N$G!"(B`skk-jisyo' $B$NAw$j$"$j$N<-=q%(%s%H%j$,$3$N7A<0$N$b$N$r$"$^$j4^$s$G$$$J$$>l9g$O!"$3$N(B $B%*%W%7%g%s$r(B on $B$K$9$k$3$H$G!"$9$0$KC18lEPO?$KF~$C$F$7$^$&$N$GCm0U$9$k$3$H!#(B `skk-process-okuri-early' $B$NCM$,(B nil $B$J$i$P>e5-$N7A<0$G(B `skk-jisyo' $B$,(B $B:n$i$l$k!#(B $B2<5-$N<0$rI>2A$9$k$3$H$G!"C18lEPO?$KF~$C$?$H$-$@$1(B $B0l;~E*$K$3$N%*%W%7%g%s$rL58z$K$9$k$3$H$,$G$-$k!#(B (add-hook 'minibuffer-setup-hook (function (lambda () (if (and (boundp 'skk-henkan-okuri-strictly) skk-henkan-okuri-strictly (not (eq last-command 'skk-purge-from-jisyo))) (progn (setq skk-henkan-okuri-strictly nil) (put 'skk-henkan-okuri-strictly 'temporary-nil t)))))) (add-hook 'minibuffer-exit-hook (function (lambda () (if (and (get 'skk-henkan-okuri-strictly 'temporary-nil) (<= (minibuffer-depth) 1)) (progn (put 'skk-henkan-okuri-strictly 'temporary-nil nil) (setq skk-henkan-okuri-strictly t)))))) $B$3$N%*%W%7%g%sMxMQ;~$O!"(B`skk-process-okuri-early' $B$NCM$O(B nil $B$G$J$1$l$P(B $B$J$i$J$$!#(B" :type 'boolean :group 'skk-basic :group 'skk-okurigana) (defcustom skk-henkan-strict-okuri-precedence nil "*Non-nil $B$G$"$l$P!"8+=P$78l$HAw$j2>L>$,0lCW$7$?8uJd$rM%@h$7$FI=<($9$k!#(B $BNc$($P!"2<5-$N$h$&$J<-=q%(%s%H%j$,(B `skk-jisyo' ($B8D?M<-=q(B) $B$K$"$C$?(B $B>l9g$K(B \"$B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/\" \"$B"&$*$*(B*$B$/(B\" $B$rJQ49$7$?$H$-!"$^$:(B\"$BB?$/(B\" $B$r=PNO$7!"(B $BL>$N%m!<%^;z%W%l%U%#%C%/%9F~NO;~E@$GJQ49$r3+;O$9$k!#(B $BNc$($P!"(B \"UgoK -> $B"'F0(Bk\"$B!#(B $BAw$j2>L>$,J,$i$J$$$^$^JQ49$7$F$$$k$3$H$K$J$k$N$G!"(B`skk-jisyo' $B$,Aw$j2>L>$K(B $BBP1~$7$?7A$K@.D9$7$J$$!#$D$^$j(B \"$B$&$4(Bk /$BF0(B/\" $B$N$h$&$J7ABV$N$^$^$H$J$k!#$?$@$7!"4{$K(B \"$B$&$4(Bk /$BF0(B/[$B$/(B/$BF0(B/]/[$B$+(B/$BF0(B/]/[$B$1(B/$BF0(B/]/[$B$-(B/$BF0(B/]/[$B$3(B/$BF0(B/]/\" $B$N$h$&$J%(%s%H%j$,(B `skk-jisyo' $B$K$"$l$P!"$=$l$rGK2u$7$J$$!#(B nil $B$G$"$l$P!"Aw$j2>L>$NF~NO$,40N;$7$?;~E@$GJQ49$,3+;O$9$k!#Nc$($P!"(B \"UgoK -> $B"&$&$4(B*k\", \"UgoKu -> $B"'F0$/(B\" $B$3$N%*%W%7%g%s$r(B on $B$K$7$F(B `skk-mode' $B$r5/F0$9$k$H!"N>N)$G$-$J$$%*%W%7%g%s(B $B$G$"$k(B `skk-kakutei-early', `skk-auto-okuri-process' $B5Z$S(B `skk-henkan-okuri-strictly' $B$O(B nil $B$K%;%C%H$5$l$k!#(B" :type 'boolean :group 'skk-okurigana) (defcustom skk-check-okurigana-on-touroku nil "*Non-nil $B$G$"$l$P!"Aw$j$"$j$NEPO?;~$K!"M>7W$J2>L>$r%A%'%C%/$9$k!#(B $BNc$($P!"(B \"$B$H$S$@(B*$B$9(B $BHt$S=P(B\" $B$HEPO?$9$k$N$,@5$7$$$K$b$+$+$o$i$:!"%f!<%6$,(B \"$B$H$S$@(B*$B$9(B $BHt$S=P$9(B\" $B$G$&$C$+$j(B [RET] $B$r2!$7$F$7$^$C$?$H$-$K!":G8e$N!V$9!W$,Aw$j2>L>$G$"$k$+$I$&$+(B $BD4$Y$k!#(B $B$3$NJQ?t$O0J2<$NCM$r$H$jF@$k!#4{DjCM$O(B nil$B!#(B ask -- $B%f!<%6$K3NG'$r5a$a!"Aw$j2>L>$HG'$a$i$l$l$P$3$l$r!L>$rH=CG$7$F:o=|$7$F$+$iEPO?$9$k!#(B nil -- $B0l@ZAw$j2>L>$N%A%'%C%/$r$;$:!"A4BN$rC18l$H$7$FEPO?$9$k!#$3$l$O(B SKK $BK\(B $BMh$NF0:n$G$"$k!#(B" :type '(radio (const :tag "$B%f!<%6$K3NG'$9$k(B" ask) (const :tag "$B<+F0E*$K=hM}$9$k(B" auto) (const :tag "$B%A%'%C%/$7$J$$(B" nil)) :group 'skk-basic :group 'skk-okurigana :group 'skk-private) (defcustom skk-okuri-char-alist nil "*$BAw$j2>L>(B prefix $B$rJQ49$9$k%k!<%k$r5-=R$9$kO"A[%j%9%H!#(B car $B$K!Vl9g$N$_$G$"$k!#(B $BNc$($P!"$+9T$NAw$j2>L>F~NO$K(B \"c\" $B$N(B prefix $B$r;H$&$N$G$"$l$P!"(B (setq skk-okuri-char-alist '((\"c\" . \"k\"))) $B$N$h$&$K=q$/!#(B" :type '(repeat (cons string string)) :group 'skk-okurigana) (defcustom skk-emacs-id-file (if skk-user-directory (expand-file-name "emacs-id" skk-user-directory) (convert-standard-filename "~/.skk-emacs-id")) "\ *`skk-jisyo-file' $B$K:G6a%"%/%;%9$7$?(B SKK $B$N(B `skk-emacs-id' $B$rJ]B8$9$k%U%!%$%k!#(B" :type 'file :group 'skk-misc) (defcustom skk-keep-record t "*Non-nil $B$G$"$l$P!"JQ495Z$S8D?M<-=q$K4X$9$kE}7W$r(B `skk-record-file' $B$KpJs$r<}$a$k!#(B" :type 'file :group 'skk-misc) (defcustom skk-byte-compile-init-file nil "*Non-nil $B$G$"$l$P!"(B`skk-mode' $B5/F0;~$K(B `skk-init-file' $B$r%P%$%H%3%s%Q%$%k$9$k!#(B $B@53N$K8@$&$H!"(B (1)`skk-init-file' $B$r%P%$%H%3%s%Q%$%k$7$?%U%!%$%k$,$J$$$+!"(B (2)`skk-init-file' $B$H$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$rHf3S$7$F!"A0C$9!#(B $B$3$NJQ?t$O(B ~/.emacs $B$G@_Dj$9$k$3$H!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-read-from-minibuffer-function nil "\ *$B<-=qEPO?%b!<%I$KF~$C$?$H$-$N%W%m%s%W%H$KI=<($9$k=i4|CM$rDs6!$9$k4X?t!#(B $B$3$N4X?t$OJ8;zNs$rJV$5$J$1$l$P$J$i$J$$!#(B $B4X?t(B `read-from-minibuffer' $B$N0z?t(B INITIAL-CONTENTS $B$K3:Ev$9$k!#(B `skk-henkan-key' $B$r$=$N$^$^=i4|CM$H$7$FMxMQ$7$?$$$H$-$O!"(B (setq skk-read-from-minibuffer-function (lambda () skk-henkan-key)) $B$H;XDj$9$k!#(B" :type '(radio (function :tag "$B4X?t(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-misc) (defface skk-jisyo-registration-badge-face '((((class color) (type tty)) (:inherit default :inverse-video t)) (((class color) (background light)) (:inherit default :inverse-video t)) (((class color) (background dark)) (:inherit default :inverse-video t)) (((class grayscale)) (:inherit default :inverse-video t))) "*$B"-<-=qEPO?Cf"-$KE,MQ$9$k%U%'%$%9!#(B" :group 'skk-visual) ;;;###autoload (defcustom skk-preload nil "*Non-nil $B$J$i$P!"(BEmacs $B5/F0;~$K(B SKK $B%W%m%0%i%`$H<-=q$NFI$_9~$_$r:Q$^$;$k!#(B Emacs $B$N5/F0$=$N$b$N$OCY$/$J$k$,!"(BDDSKK $B$N=i2s5/F0$rAa$/$9$k$3$H$,$G$-$k!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-undo-kakutei-word-only nil "*Non-nil $B$G$"$l$P(B $B"&%b!<%I$H"'%b!<%I;~$N%"%s%I%%>pJs$r5-O?$7$J$$!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-undo-kakutei-return-previous-point nil "*Non-nil $B$G$"$l$P!"3NDj%"%s%I%%=hM}$,40N;$7$?8e$K!"3NDj%"%s%I%%=hM}$N(B $BD>A0$N0LCV$K%+!<%=%k$rLa$9!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-show-japanese-menu (and window-system (or (eq window-system 'w32) (boundp 'mac-carbon-version-string) ; Carbon Emacs (featurep 'ns) ; Cocoa Emacs (and (eq window-system 'x) (boundp 'gtk-version-string) (stringp (symbol-value 'gtk-version-string)) (string< "2.0" (symbol-value 'gtk-version-string)))) (equal current-language-environment "Japanese")) "\ *Non-nil $B$G$"$l$P%a%K%e!<%P!<$rF|K\8l$GI=<($9$k!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-verbose nil "*Non-nil $B$G$"$l$P!"F~NOCf!?JQ49Cf$K%(%3!<%(%j%"$K>iD9$J%a%C%;!<%8$rI=<($9$k!#(B" :type 'boolean :group 'skk-misc) (defcustom skk-verbose-wait 1.5 "*$B>iD9$J%a%C%;!<%8$rI=<($9$k$^$G$NBT$A;~4V(B ($BIC(B)$B!#(B" :type 'number :group 'skk-misc) (defcustom skk-verbose-message-interval 5.0 "*$B>iD9$J%a%C%;!<%8$,J#?t$"$k>l9g!"#1$D$"$?$jI=<(;~4V(B ($BIC(B)$B!#(B $B$3$N;~4V$,7P2a$7$?$iiD9$J%a%C%;!<%8$N(B {$B%"%N%F!<%7%g%s(B} $B$H(B {$B$I$l$r;2>H(B?} $B$KE,MQ$9$k(B $B%U%'%$%9!#(B" :group 'skk-visual) (defface skk-verbose-kbd-face '((((class color) (type tty)) (:inherit default :foreground "cyan")) (((class color) (background light)) (:inherit default :foreground "Purple")) (((class color) (background dark)) (:inherit default :foreground "Cyan")) (((class grayscale)) (:inherit default :foreground "LightGray"))) "*$B>iD9$J%a%C%;!<%8$NA`:n%-!iD9$J%a%C%;!<%8$NFbMF!#(B $BI8=`$G$O<+F0@_Dj$9$k!#(B" :type '(radio (string :tag "$BFbMF$r;XDj(B") (const :tag "$B<+F0@_Dj(B" nil)) :group 'skk-misc) (defcustom skk-j-mode-function-key-usage nil "*$B%-!<%\!<%I>e$N(B F1 $B!A(B F10 $B%-!<$N;H$$J}$r;XDj$9$k!#(B `conversion' $B$J$i$P!"(B`skk-search-prog-list-1' $B!A(B `skk-search-prog-list-0' $B$r(B $B$K!"(B`skk-auto-fill-mode-hook', `skk-load-hook', `skk-init-file' $B$G$b(B $B%+%9%?%^%$%:$,2DG=!#(B" ;; "*Hook run at SKK startup. This hook is also run ;;in skk-auto-fill-mode after skk-auto-fill-mode-hook. ;;skk-auto-fill-mode-hook, skk-load-hook, skk-init-file may also be used ;;for customization." :type 'hook :group 'skk-misc) (defcustom skk-auto-fill-mode-hook nil "*`skk-auto-fill-mode' $B$r5/F0$7$?$H$-$N%U%C%/!#(B $BB>$K!"(B`skk-mode-hook', `skk-load-hook', `skk-init-file' $B$G$b%+%9%?%^%$%:$,(B $B2DG=!#(B" ;; "*Hook run at startup of skk-auto-fill-mode. ;;skk-mode-hook$B!"(Bskk-load-hook, skk-init-file may also be used for ;;customization." :type 'hook :group 'skk-misc) (defcustom skk-load-hook nil "*skk.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B $BB>$K!"(B`skk-mode-hook', `skk-auto-fill-mode-hook', `skk-init-file' $B$G$b%+%9%?(B $B%^%$%:$,2DG=!#(B" ;; "*Hook run when SKK is loaded. ;;skk-auto-fill-mode-hook$B!"(Bskk-mode-hook, skk-init-file may also be used ;;for customization." :type 'hook :group 'skk-misc) (defcustom skk-status-indicator 'left "*SKK $B$N>uBV$r%b!<%I%i%$%s$N$I$N0LCV$KI=<($9$k$+$r7h$a$k!#(B left $B$G$"$l$P:8C<$KI=<($9$k!#(B $B$5$b$J$1$l$P%^%$%J!<%b!<%I$H$7$F$NI=<(K!$ro;~I=<($9$k!#(B" :type 'boolean :set (lambda (symbol value) (prog1 (if (fboundp 'custom-set-default) (custom-set-default symbol value) (set-default symbol value)) (when (and (boundp 'skk-mode-invoked) skk-mode-invoked) (cond (value (if (featurep 'xemacs) (skk-xemacs-prepare-modeline-properties) (skk-emacs-prepare-modeline-properties)) (skk-setup-modeline)) (t (setq skk-icon nil)))))) :group 'skk-visual) (defcustom skk-echo t "*Non-nil $B$G$"$l$P!"2>L>J8;z$N%W%l%U%#%C%/%9$rI=<($9$k!#(B" :type 'boolean :group 'skk-visual) (defcustom skk-use-face (or window-system (fboundp 'selected-frame) ; XEmacs does not have this. (fboundp 'frame-face-alist)) "*Non-nil $B$G$"$l$P!"(BEmacs $B$N(B face $B$N5!G=$r;HMQ$7$FJQ498uJd$r%O%$%i%$%HI=<($9$k!#(B" :type 'boolean :group 'skk-basic :group 'skk-visual) ;; should use defface? however, can I use defface for highlight? (defcustom skk-henkan-face 'skk-henkan-face-default "*$BJQ498uJd$N(B face $BB0@-!#(B`skk-use-face' $B$,(B non-nil $B$N$H$-$N$_M-8z!#(B Emacs $BI8=`$N%U%'%$%9$N$[$+!"?7$?$K(B face $B$r:n$C$F;XDj$9$k$3$H$b2DG=!#(B $B?7$?$J(B face $B$r:n$C$F;XDj$9$k$K$O!"(B (setq skk-henkan-face (skk-make-face 'DimGray/PeachPuff1)) $B$N$h$&$K(B skk-make-face() $B$rMxMQ$9$k$N$,l9g$O!"(B`skk-make-face' $B$G(B $B$OBP1~$G$-$J$$$N$G!"(BEmacs $B$N(B hilit19.el $B$N(B `hilit-lookup-face-create' $B$J$I$rMxMQ$9$k!#(B $B?'$rIU$1$k>l9g$NG[?'$O!"(Bcanna.el $B$N(B `canna:attribute-alist' $B$,NI$$Nc$+$b$7$l$J$$!#(B $B$3$NJQ?t$h$j$b(B `skk-treat-candidate-appearance-function' $B$N@_Dj$,M%@h$5$l$k!#(B" :type 'face :group 'skk-visual) (defface skk-henkan-face-default '((((class color) (type tty)) (:foreground "black" :background "green")) (((class color) (background light)) (:foreground "black" :background "darkseagreen2")) (((class color) (background dark)) (:foreground "white" :background "darkolivegreen")) (((class grayscale)) (:underline t))) "*$BI8=`$NJQ498uJd$N(B face $BB0@-!#(B" :group 'skk-visual) (when (and skk-use-face (boundp 'frame-background-mode) (not frame-background-mode) (fboundp 'face-background) (not (face-background 'skk-henkan-face-default))) (set-face-foreground 'skk-henkan-face-default "black") (set-face-background 'skk-henkan-face-default "darkseagreen2")) (defcustom skk-henkan-overlay-priority 600 "*$BJQ49$7$?8uJd$K=E$M$k(B overlay $B$N(B priority$B!#(B $BNc$($P!"(BViper $B$G(B R $B%3%^%s%I$K$h$j(B replace $B$r9T$&$H$-$K!"(B `viper-replace-overlay' $B$H$$$&(B priority 400 $B$N(B overlay $B$r=E$M$i$l$k$,!"(B `skk-henkan-overlay-priority' $B$N%G%U%)%k%HCM$O$3$N(B overlay $B$h$j(B priority $B$,9b$$$N$G!"M%@h$7$FI=<($5$l$k!#(B" :type 'integer :group 'skk-visual) (defcustom skk-treat-candidate-appearance-function nil "*$B8uJd$NI=<($rAu>~$9$k$?$a$N4X?t$r;XDj$9$kJQ?t!#(B $B%f!<%6$O8uJd$H$J$k$Y$-J8;zNs$KBP$7$F!"$=$NCmr7o$rK~$?$9I,MW$,$"$k!#(B 1. $B0z?t$r#2$Do$NJQ49;~!"(Bnon-nil $B$N;~$O8uJd0lMwI=<(;~$rI=$9(B $B$b$N$H$7$F07$&$3$H!#(B 4. $BJV$jCM$O0J2<$N$$$:$l$+$H$9$k$3$H!#(B a. $BJ8;zNs(B $B$3$N>l9g!"$3$NJ8;zNs$O8uJd$H%"%N%F!<%7%g%s$rN>J}4^$_$&$k$b$N$H$7$F=h(B $BM}$5$l$k!#(B b. cons cell ($B8uJd(B . $B%"%N%F!<%7%g%s(B) $B$3$N>l9g!"8uJd$O$b$&%"%N%F!<%7%g%s$r4^$^$J$$$b$N$H$7$F=hM}$5$l$k!#(B $B%"%N%F!<%7%g%s$K$D$$$F$O@hF,$,(B \";\" $B$+$I$&$+$rD4$Y$?>e$G=hM}$5$l$k!#(B c. cons cell ($B8uJd(B . ($B%;%Q%l!<%?(B . $B%"%N%F!<%7%g%s(B)) $B$3$N>l9g!"8uJd$O$b$&%"%N%F!<%7%g%s$r4^$^$J$$$b$N$H$7$F=hM}$5$l$k!#(B $B%;%Q%l!<%?$ODL>o$N(B \";\" $B$NBe$o$j$KMxMQ$5$l$k!#%"%N%F!<%7%g%s$O$b$&(B $B%;%Q%l!<%?$r4^$^$J$$$b$N$H$7$F=hM}$5$l$k!#(B $B$3$N4X?t$O0J2<$N>l9g$K8F$P$l$k!#(B o $BDL>o$NJQ49F0:n$NETEY(B $B$3$N>l9g$O!"8uJd$O%P%C%U%!$K!"%"%N%F!<%7%g%s$O%(%3!<%(%j%"$J$I!J%f!<%6(B $B$N@_Dj$K$h$C$F0[$J$k>l=j!K$KI=<($5$l$k!#%;%Q%l!<%?$OI=<($5$l$J$$!#(B o $B8uJd0lMw$rI=<($9$k$H$-(B ($B8uJd$NJ8;zNs$N8e$m$K%"%N%F!<%7%g%s$,IU2C$5$l$k(B) $B$3$N>l9g$O!"8uJd!"%;%Q%l!<%?!"%"%N%F!<%7%g%s$N3FJ8;zNs$,I=<($5$l$k!#(B ($B@_DjNc(B) (setq skk-treat-candidate-appearance-function (lambda (candidate listing-p) (cond ((string-match \";\" candidate) (put-text-property 0 (match-beginning 0) 'face (if listing-p 'tooltip 'underline) candidate) (put-text-property (match-beginning 0) (length candidate) 'face 'shadow candidate)) (t (put-text-property 0 (length candidate) 'face (if listing-p 'tooltip 'underline) candidate))) candidate)) " :type '(radio (const :tag "$B@_Dj%5%s%W%k(B1" skk-treat-candidate-sample1) (const :tag "$B@_Dj%5%s%W%k(B2" skk-treat-candidate-sample2) (const :tag "$B;XDj$7$J$$(B" nil) (function :tag "$BG$0U$N4X?t(B")) :group 'skk-annotation :group 'skk-visual) ;; skk-treat-candidate-appearance-function $B$N$?$a$KMQ0U$9$k4X?t(B (defun skk-treat-candidate-sample1 (candidate listing-p) (cond ((string-match ";" candidate) (put-text-property 0 (match-beginning 0) 'face 'skk-tut-question-face candidate) (put-text-property (match-beginning 0) (length candidate) 'face 'skk-tut-hint-face candidate)) (t (put-text-property 0 (length candidate) 'face 'skk-tut-question-face candidate))) candidate) (defun skk-treat-candidate-sample2 (candidate listing-p) (let* ((value (skk-treat-strip-note-from-word candidate)) (cand (car value)) (note (if listing-p (or (and (eq skk-annotation-lookup-lookup 'always) (skk-lookup-get-content cand t)) (and (eq skk-annotation-lookup-DictionaryServices 'always) (skk-annotation-lookup-DictionaryServices cand t)) (cdr value)) (cdr value))) (sep (if note (propertize (if (skk-annotation-display-p 'list) " $B"b(B " " !") 'face 'skk-tut-do-it-face) nil))) (cond (note (put-text-property 0 (length cand) 'face 'skk-tut-question-face cand) (put-text-property 0 (length note) 'face 'skk-tut-hint-face note) (cons cand (cons sep note))) (t (put-text-property 0 (length cand) 'face 'skk-treat-default cand) cand)))) (defface skk-treat-default '((((class color) (background light)) (:foreground "black")) (((class color) (background dark)) (:foreground "white"))) "$BGX7J$J$7$NC1=c$J(B face$B!#(B`default' $B$NBe$o$j$K;H$&!#(B" :group 'skk-visual) ;;; -- Internal constants and variables of skk.el (defconst skk-coding-system-alist (cond ((and (featurep 'emacs) (>= emacs-major-version 23)) '(("euc" . euc-jis-2004) ("ujis" . euc-jis-2004) ("sjis". japanese-shift-jis-2004) ("jis" . iso-2022-jp-3))) ((featurep 'jisx0213) '(("euc" . euc-jisx0213) ("ujis" . euc-jisx0213) ("sjis". shift_jisx0213) ("jis" . iso-2022-jp-3-strict))) (t '(("euc" . euc-japan) ("ujis" . euc-japan) ("sjis". shift_jis) ("jis" . junet)))) "coding-system $B$NJ8;zNsI=8=$H!"%7%s%\%kI=8=$NO"A[%j%9%H!#(B") (defconst skk-kana-rom-vector ["x" "a" "x" "i" "x" "u" "x" "e" "x" "o" "k" "g" "k" "g" "k" "g" "k" "g" "k" "g" "s" "z" "s" "j" "s" "z" "s" "z" "s" "z" "t" "d" "t" "d" "t" "t" "d" "t" "d" "t" "d" "n" "n" "n" "n" "n" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "m" "m" "m" "m" "m" "x" "y" "x" "y" "x" "y" "r" "r" "r" "r" "r" "x" "w" "x" "x" "w" "n"] "$B$+$JJ8;z$+$i%m!<%^;z$X$NJQ49%k!<%k!#(B $B2<5-$N3:Ev$9$k$+$JJ8;z$r$=$NJ8;z$N%m!<%^;z%W%l%U%#%C%/%9$G8=$o$7$?$b$N!#(B $B$!(B $B$"(B $B$#(B $B$$(B $B$%(B $B$&(B $B$'(B $B$((B $B$)(B $B$*(B $B$+(B $B$,(B $B$-(B $B$.(B $B$/(B $B$0(B $B$1(B $B$2(B $B$3(B $B$4(B $B$5(B $B$6(B $B$7(B $B$8(B $B$9(B $B$:(B $B$;(B $B$<(B $B$=(B $B$>(B $B$?(B $B$@(B $B$A(B $B$B(B $B$C(B $B$D(B $B$E(B $B$F(B $B$G(B $B$H(B $B$I(B $B$J(B $B$K(B $B$L(B $B$M(B $B$N(B $B$O(B $B$P(B $B$Q(B $B$R(B $B$S(B $B$T(B $B$U(B $B$V(B $B$W(B $B$X(B $B$Y(B $B$Z(B $B$[(B $B$\(B $B$](B $B$^(B $B$_(B $B$`(B $B$a(B $B$b(B $B$c(B $B$d(B $B$e(B $B$f(B $B$g(B $B$h(B $B$i(B $B$j(B $B$k(B $B$l(B $B$m(B $B$n(B $B$o(B $B$p(B $B$q(B $B$r(B $B$s(B" ;; (length skk-kana-rom-vector) ;; --> 83 ;; (setq kana '("$B$!(B" "$B$"(B" "$B$#(B" "$B$$(B" "$B$%(B" "$B$&(B" "$B$'(B" "$B$((B" "$B$)(B" "$B$*(B" ;; "$B$+(B" "$B$,(B" "$B$-(B" "$B$.(B" "$B$/(B" "$B$0(B" "$B$1(B" "$B$2(B" "$B$3(B" "$B$4(B" ;; "$B$5(B" "$B$6(B" "$B$7(B" "$B$8(B" "$B$9(B" "$B$:(B" "$B$;(B" "$B$<(B" "$B$=(B" "$B$>(B" ;; "$B$?(B" "$B$@(B" "$B$A(B" "$B$B(B" "$B$C(B" "$B$D(B" "$B$E(B" "$B$F(B" "$B$G(B" "$B$H(B" "$B$I(B" ;; "$B$J(B" "$B$K(B" "$B$L(B" "$B$M(B" "$B$N(B" "$B$O(B" "$B$P(B" "$B$Q(B" "$B$R(B" "$B$S(B" "$B$T(B" ;; "$B$U(B" "$B$V(B" "$B$W(B" "$B$X(B" "$B$Y(B" "$B$Z(B" "$B$[(B" "$B$\(B" "$B$](B" ;; "$B$^(B" "$B$_(B" "$B$`(B" "$B$a(B" "$B$b(B" "$B$c(B" "$B$d(B" "$B$e(B" "$B$f(B" "$B$g(B" "$B$h(B" ;; "$B$i(B" "$B$j(B" "$B$k(B" "$B$l(B" "$B$m(B" "$B$n(B" "$B$o(B" "$B$p(B" "$B$q(B" "$B$r(B" "$B$s(B")) ;; (length kana) ;; --> 83 ;; (mapcar (lambda (s) (- (char-octet (string-to-char s) 1) 33)) ;; kana) ;; --> (0 1 2 3 4 5 6 7 8 9 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) ) (defconst skk-default-jisx0208-latin-vector ;; note that skk-jisx0208-latin-vector is a user variable. ;; skk.el $B%m!<%IA0$K(B .emacs $B$J$I$G!"(Bskk-jisx0208-latin-vector $B$NJL$NCM$r%f!<(B ;; $B%6!<$,D>@\=q$$$?$j!"(Bskk.el $B%m!<%I8e$K$3$NCM$r(B aset $B$GD>@\$$$8$C$?$j$7$J(B ;; $B$1$l$P(B default-value $B$G(B skk-jisx0208-latin-vector $B$K%"%/%;%9$9$k$3$H$G(B ;; skk-default-jisx0208-latin-vector $B$NCM$rJ];}$9$k$3$H$b$G$-$h$&$,!"$=$l$O(B ;; $BK>$a$J$$(B...$B!#(B [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil "$B!!(B" "$B!*(B" "$B!I(B" "$B!t(B" "$B!p(B" "$B!s(B" "$B!u(B" "$B!G(B" "$B!J(B" "$B!K(B" "$B!v(B" "$B!\(B" "$B!$(B" "$B!](B" "$B!%(B" "$B!?(B" "$B#0(B" "$B#1(B" "$B#2(B" "$B#3(B" "$B#4(B" "$B#5(B" "$B#6(B" "$B#7(B" "$B#8(B" "$B#9(B" "$B!'(B" "$B!((B" "$B!c(B" "$B!a(B" "$B!d(B" "$B!)(B" "$B!w(B" "$B#A(B" "$B#B(B" "$B#C(B" "$B#D(B" "$B#E(B" "$B#F(B" "$B#G(B" "$B#H(B" "$B#I(B" "$B#J(B" "$B#K(B" "$B#L(B" "$B#M(B" "$B#N(B" "$B#O(B" "$B#P(B" "$B#Q(B" "$B#R(B" "$B#S(B" "$B#T(B" "$B#U(B" "$B#V(B" "$B#W(B" "$B#X(B" "$B#Y(B" "$B#Z(B" "$B!N(B" "$B!@(B" "$B!O(B" "$B!0(B" "$B!2(B" "$B!F(B" "$B#a(B" "$B#b(B" "$B#c(B" "$B#d(B" "$B#e(B" "$B#f(B" "$B#g(B" "$B#h(B" "$B#i(B" "$B#j(B" "$B#k(B" "$B#l(B" "$B#m(B" "$B#n(B" "$B#o(B" "$B#p(B" "$B#q(B" "$B#r(B" "$B#s(B" "$B#t(B" "$B#u(B" "$B#v(B" "$B#w(B" "$B#x(B" "$B#y(B" "$B#z(B" "$B!P(B" "$B!C(B" "$B!Q(B" "$B!A(B" nil] "`skk-jisx0208-latin-region' $B$G;2>H$9$kJ8;z%F!<%V%k!#(B \"ascii\" -> \"$B#a#s#c#i#i(B\" $B$N$h$&$JA43QJ8;z$XJQ49$9$k:]$KMxMQ$9$k!#(B") (defconst skk-kana-cleanup-command-list '(skk-undo skk-kakutei skk-delete-backward-char skk-insert skk-try-completion skk-completion-wrapper skk-previous-candidate)) (defconst skk-delete-backward-char-commands ;; following two are SKK adviced. ;;viper-del-backward-char-in-insert ;;vip-del-backward-char-in-insert '(backward-delete-char-untabify backward-delete-char backward-or-forward-delete-char delete-backward-char picture-backward-clear-column)) (defconst skk-undo-commands '(undo advertised-undo)) (defconst skk-quote-char-alist '((?\; . "\\073") (?/ . "\\057") (?\n . "\\n") (?\r . "\\r") (?\" . "\\\"") (?\\ . "\\\\")) "$B<-=q%(%s%H%jFb$K4^$a$F$O$J$i$J$$J8;z$rCV$-JQ$($k$?$a$NO"A[%j%9%H!#(B `;' $B$O!"Cpl9g$@$1CV49$9$k!#(B") (defvar skk-charset-list nil "SKK $B$,07$&J8;z=89g$N%j%9%H!#(BSKK $B=i2s5/F0;~$K(B GNU Emacs 23 $B0J>e$G$"$l$P@_Dj$5$l$k!#(B") (defvar skk-emacs-id nil "$BJ#?t$N(B emacs $B%W%m%;%9$r<1JL$9$kJ8;zNs!#(B $B$R$H$D$N8D?M<-=q%U%!%$%k$rJ#?t$N(B emacs $B>e$G5/F0$7$F$$$k(B SKK $B$G6&M-$9$k$H(B $B$-$K;2>H$9$k!#(B") (defvar skk-jisyo-update-vector nil "`skk-share-private-jisyo' $BM-8z;~$K<-=q%P%C%U%!99?7>pJs$rJ];}$9$k(B vector. $BD9$5$O(B `skk-jisyo-save-count' $B$h$jD9$/$J$k$h$&$K@_Dj$7$F$$$k!#(B $B<-=q%P%C%U%!99?7$N5-O?$rJ]B8$7!"<-=q%P%C%U%!$r<-=q%U%!%$%k$K%;!<%V$9$k$H$-$K!"(B $BB>$N(B SKK $B$,<-=q%U%!%$%k$K:G6a%"%/%;%9$7$F$$$k$H$-$K$O!"<-=q%U%!%$%k$r%P%C%U%!(B $B$KFI$_9~$s$G$+$i!"(B`skk-jisyo-update-vector' $B$rMQ$$$F%P%C%U%!$r99?7D>$7!"$=$N(B $B7k2L$r%U%!%$%k$K%;!<%V$9$k!#(B") (defvar skk-rule-tree nil "$B%m!<%^;z(B -> $B$+$JJQ49$N>uBVA+0\5,B'$rI=$9%D%j!<$N=i4|>uBV!#(B $B:G=i$K(B `skk-mode' $B$r5/F0$7$?$H$-$K(B `skk-rom-kana-base-rule-list' $B$H(B `skk-rom-kana-rule-list' $B$+$iLZ$N7A$K%3%s%Q%$%k$5$l$k!#(B \\[skk-restart] $B$K$h$C$F$b:F%3%s%Q%$%k$5$l$k!#(B") (defvar skk-insert-new-word-function nil "$B8uJd$rA^F~$7$?$H$-$K(B `funcall' $B$5$l$k4X?t$rJ]B8$9$kJQ?t!#(B") (defvar skk-mode-invoked nil "Non-nil $B$G$"$l$P!"(BEmacs $B$r5/F08e4{$K(B `skk-mode' $B$r5/F0$7$?$3$H$r<($9!#(B") (defvar skk-kakutei-count 0 "$BJQ498uJd$r3NDj$7$?%+%&%s%H$rJ];}$9$kJQ?t!#(B `skk-record-file' $B$N(B \"$B3NDj(B:\" $B9`L\$N%+%&%s%?!e$H$J$C$?$H$-$K8D?M<-=q$,(B $B%*!<%H%;!<%V$5$l$k!#(B $B8D?M<-=q$,%;!<%V$5$l$k$H%$%K%7%c%i%$%:$5$l$k!#(B") (defvar skk-kakutei-history nil "$BAw$j$J$7$G3NDj$5$l$?8+=P$78l!&8uJd$NMzNr!#(B (\"$B$_$@$7$4(B\" \"$B8+=P$78l(B\" buffer) $B$H$$$&7A<0$N%j%9%H!#(B") (defvar skk-minibuffer-origin-mode nil "$BF~NO%b!<%I$rI=$o$9%7%s%\%k!#(B $BM-8z$JCM$O!"(B`hiragana', `katakana', `abbrev', `latin', `jisx0208-latin' $B$b$7$/$O(B nil $B$N$$$:$l$+!#(B") (defvar skk-menu nil) (defvar skk-icon nil "SKK $B$N%"%$%3%s!#(B") (put 'skk-icon 'risky-local-variable t) (skk-deflocalvar skk-modeline-input-mode nil) (put 'skk-modeline-input-mode 'risky-local-variable t) (defvar skk-indicator-alist nil) (defvar skk-buffer-undo-list nil) (defvar skk-inline-overlays nil) (defvar skk-latin-mode-map nil "*$B%"%9%-!<%b!<%I$N%-!<%^%C%W!#(B") (defvar skk-j-mode-map nil "*$B$+$J%b!<%I$N%-!<%^%C%W!#(B") (defvar skk-jisx0208-latin-mode-map nil "*$BA41Q%b!<%I$N%-!<%^%C%W!#(B") (defvar skk-abbrev-mode-map nil "*SKK abbrev $B%b!<%I$N%-!<%^%C%W!#(B") (defvar skk-henkan-in-minibuff-nest-level nil) (defvar skk-menu-items ;; SKK $B%a%K%e!<$NDj5A!#(B '("SKK" ("Convert Region and Echo" ("Gyakubiki" ["to Hiragana" skk-gyakubiki-message skk-use-kakasi] ["to Hiragana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-gyakubiki-message start end 'all-candidates))) skk-use-kakasi] ["to Katakana" skk-gyakubiki-katakana-message skk-use-kakasi] ["to Katakana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-gyakubiki-katakana-message start end 'all-candidates))) skk-use-kakasi]) ("Hurigana" ["to Hiragana" skk-hurigana-message skk-use-kakasi] ["to Hiragana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-hurigana-message start end 'all-candidates))) skk-use-kakasi] ["to Katakana" skk-hurigana-katakana-message skk-use-kakasi] ["to Katakana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-hurigana-katakana-message start end 'all-candidates))) skk-use-kakasi])) ("Convert Region and Replace" ("Gyakubiki" ["to Hiragana" skk-gyakubiki-region skk-use-kakasi] ["to Hiragana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-gyakubiki-region start end 'all-candidates))) skk-use-kakasi] ["to Katakana" skk-gyakubiki-katakana-region skk-use-kakasi] ["to Katakana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-gyakubiki-katakana-region start end 'all-candidates))) skk-use-kakasi]) ("Hurigana" ["to Hiragana" skk-hurigana-region skk-use-kakasi] ["to Hiragana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-hurigana-region start end 'all-candidates))) skk-use-kakasi] ["to Katakana" skk-hurigana-katakana-region skk-use-kakasi] ["to Katakana, All Candidates" (call-interactively (lambda (start end) (interactive "r") (skk-hurigana-katakana-region start end 'all-candidates))) skk-use-kakasi]) ["Hiragana to Katakana" skk-katakana-region t] ["Katakana to Hiragana" skk-hiragana-region t] ["Ascii to Zenkaku" skk-jisx0208-latin-region t] ["Zenkaku to Ascii" skk-latin-region t] ["Kana and Zenkaku to Romaji" skk-romaji-region skk-use-kakasi]) ["Count Jisyo Candidates" skk-count-jisyo-candidates t] ["Save Jisyo" skk-save-jisyo t] ["Undo Kakutei" skk-undo-kakutei t] ["Restart SKK" skk-restart t] ["Version" (message "%s" (skk-version)) t]) "Menu used in SKK mode.") (defvar skk-quit-commands '(keyboard-quit abort-recursive-edit skk-kanagaki-bs skk-kanagaki-esc)) ;; ---- buffer local variables ;; <$B%U%i%0N`(B> ;;(skk-deflocalvar skk-current-henkan-data ;; '(;; global variables ;; ;; $B%P%C%U%!%m!<%+%kJQ?t$N%G%U%)%k%HCM$r@_Dj$9$k$H!"$3$l$rD>@\=q49$($7$?(B ;; ;; $B$H$-$KB>$N%P%C%U%!$+$i8+$($kCM$bJQ$o$C$F$7$^$&!#(Bglobal $B$J%U%i%0$O$3$l(B ;; ;; $B$rMxMQ$7$F%G%U%)%k%HCM$rM?$($F$*$/!#(B ;; ;; Emacs $B$r5/F08e4{$K(B skk-mode $B$r5/F0$7$?$3$H$r<($9(B ;; (invoked . nil) ;; ;; skk-isearch $B4X?t$r%3!<%k$9$k$?$a$N%U%i%0(B ;; (isearch-message . nil) ;; ;; $BJQ498uJd$r3NDj$7$?%+%&%s%H$rJ];}$9$kJQ?t(B ;; (kakutei-count . 0) ;; ;;$BF~NO%b!<%I$rI=$o$9%7%s%\%k(B ;; (minibuffer-origin-mode . nil) ;; ;; $B<-=qEPO?$7$?%+%&%s%H$rJ];}$9$kJQ?t(B ;; (touroku-count . 0) ;; ;; $B<-=q$r99?7$7$?2s?t(B ;; (update-jisyo-count . 0) ;; ;; buffer-local variables. ;; ;; `skk-search-prog-list' $B$N8=:_$NCM$rJ]B8$9$k%j%9%H(B ;; ;; (current-search-prog-list . nil) ;; ;; $B%_%K%P%C%U%!$G8uJd$rL>ItJ,(B ;; ;; (henkan-okurigana . nil) ;; ;; $B"&%b!<%I(B ($BJQ49BP>]$NJ8;zNs7hDj$N$?$a$N%b!<%I(B) $B$G$"$k$3$H$r<($9(B ;; ;; (henkan-on . nil) ;; ;; $BJQ493+;O%]%$%s%H$r<($9%^!<%+!<(B ;; ;; (henkan-start-point . nil) ;; ;; $B3NDj$7$FNI$$8uJd$r8+$D$1$?>uBV$G$"$k$3$H$r;X$9(B ;; ;; (kakutei-flag . nil) ;; ;; $B$+$JJ8;z$N3+;O%]%$%s%H$r<($9%^!<%+!<(B ;; ;; (kana-start-point . nil) ;; ;; $BF~NO%b!<%I$,%+%J%b!<%I$G$"$k$3$H$r<($9(B ;; ;; (katakana . nil) ;; ;; $B<-=q$NAw$jM-$j%(%s%H%j$N=*N;E@$r<($9%P%C%U%!%]%$%s%H(B ;; ;; (okuri-ari-max . nil) ;; ;; $B<-=q$NAw$jM-$j%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H(B ;; ;; (okuri-ari-min . nil) ;; ;; $BJQ49$9$Y$-8l$NAw$j2>L>$NItJ,$N%W%l%U%#%C%/%9(B ;; ;; (okuri-char . nil) ;; ;; `skk-henkan-list' $B$N%$%s%G%/%9$G<+F0Aw$j=hM}!"$b$7$/$O%5JQ8!:w$G(B ;; ;; $B8!:w$7$?:G8e$N8uJd$r;X$9$b$N(B ;; ;; (okuri-index-max . -1) ;; ;; `skk-henkan-list' $B$N%$%s%G%/%9$G<+F0Aw$j=hM}!"$b$7$/$O%5JQ8!:w$G(B ;; ;; $B8!:w$7$?:G=i$N8uJd$r;X$9$b$N(B ;; ;; (okuri-index-min . -1) ;; ;; $B<-=q$NAw$j$J$7%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H(B ;; ;; (okuri-nasi-min . nil) ;; ;; $BAw$j2>L>ItJ,$,F~NOCf$G$"$k$3$H$r<($9(B ;; ;;(okurigana . nil) ;; ;; $BAw$j2>L>$N3+;O%]%$%s%H$r<($9%^!<%+!<(B ;; ;; (okurigana-start-point . nil) ;; ;; $BF~NO$9$k$+$J$r7hDj$9$k$?$a$N%W%l%U%#%C%/%9(B ;; ;; (prefix . "") ;; ;; $B$3$NJQ?t$KJ];}$5$l$k%]%$%s%H$,8=:_$N%]%$%s%H$H0[$J$k>l9g!"(B ;; ;; `skk-with-point-move' $B$,;H$o$l$F$$$J$$%3%^%s%I$rF0:n$5$;$k$H(B ;; ;; `skk-after-point-move' $B$,:nF0$9$k(B ;; ;; (previous-point . nil) ;; ;; `skk-insert' $B$b$7$/$O(B `skk-jisx0208-latin-insert' $B$GO"B3F~NO$7$?(B ;; ;; $BJ8;z?t$rI=$o$9%+%&%s%?!<(B ;; ;; (self-insert-non-undo-count . 1))) (skk-deflocalvar skk-mode nil "\ Non-nil $B$G$"$l$P!"%+%l%s%H%P%C%U%!$G8=:_(B `skk-mode' $B$r5/F0$7$F$$$k$3$H$r<($9!#(B") (skk-deflocalvar skk-latin-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,%"%9%-!<%b!<%I$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-j-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,$+$J!&%+%J%b!<%I$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-katakana nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,%+%J%b!<%I$G$"$k$3$H$r<($9!#(B \"(and (not skk-katakana) skk-j-mode)\" $B$,(B t $B$G$"$l$P!"$+$J%b!<%I$G$"$k$3$H$r(B $B<($9!#(B") (skk-deflocalvar skk-jisx0208-latin-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,A41Q%b!<%I$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-abbrev-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,(B SKK abbrev $B%b!<%I$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-okurigana nil "Non-nil $B$G$"$l$P!"Aw$j2>L>ItJ,$,F~NOCf$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-henkan-mode nil "$BJQ49%b!<%I$r<($9!#(B `on' $B$G$"$l$P!""&%b!<%I!#(B `active' $B$G$"$l$P!""'%b!<%I!#(B `nil' $B$G$"$l$P!"3NDjF~NO%b!<%I!#(B") (skk-deflocalvar skk-kakutei-flag nil "Non-nil $B$J$i3NDj$7$FNI$$8uJd$r8+$D$1$?>uBV$G$"$k$3$H$r;X$9!#(B") (skk-deflocalvar skk-kakutei-henkan-flag nil "Non-nil $B$J$i3NDjJQ49$9$k;v$r;X$9!#(B `skk-search-kakutei-jisyo-file' $B$d!"%f!<%6<+:n$N3NDjJQ49MQ%W%m%0%i%`$O(B $B$3$NJQ?t$r%;%C%H$9$k!#(B $B$3$NJQ?t$,(B Non-nil $B$K%;%C%H$5$l$F$b!"JQ49$7$F:G=i$KF@$i$l$?8uJd$G$J$1$l$P(B $B3NDjJQ49$5$l$J$$$3$H$KCm0U!#(B") (skk-deflocalvar skk-exit-show-candidates nil "$B%_%K%P%C%U%!$G8uJd$rH$5$l$k!#(B") ;; <$B%-!<%^%C%W4XO"(B> (skk-deflocalvar skk-current-rule-tree nil "$B%m!<%^;z(B -> $B$+$JJQ49$N>uBVA+0\5,B'$rI=$o$9%D%j!<$N8=;~E@$N>uBV!#(B $B%m!<%^;zF~NO$N=i4|$G$O(B `skk-rule-tree' $B$HF10l$N>uBV$G!"J8;zF~NO$,?J$`$K(B $B$D$l!"LZ$r$?$I$C$F$f$/>uBV$NA+0\$rI=$9!#(B") ;; <$B<-=q4XO"$NJQ?t(B> (skk-deflocalvar skk-okuri-ari-min nil "SKK $B<-=q$NAw$jM-$j%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H!#(B") (skk-deflocalvar skk-okuri-ari-max nil "SKK $B<-=q$NAw$jM-$j%(%s%H%j$N=*N;E@$r<($9%P%C%U%!%]%$%s%H!#(B `skk-jisyo' $B$N%P%C%U%!$G$O<-=q$N99?7$NI,MW$,$"$k$?$a$K%^!<%+!<$,BeF~$5$l$k!#(B") (skk-deflocalvar skk-okuri-nasi-min nil "SKK $B<-=q$NAw$j$J$7%(%s%H%j$N3+;OE@$r<($9%P%C%U%!%]%$%s%H!#(B `skk-jisyo' $B$N%P%C%U%!$G$O<-=q$N99?7$NI,MW$,$"$k$?$a$K%^!<%+!<$,BeF~$5$l$k!#(B") ;; <$B$=$NB>(B> (skk-deflocalvar skk-mode-line nil "SKK $B$N%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs!#(B `skk-mode-string', `skk-hiragana-mode-string', `skk-katakana-mode-string', `skk-jisx0208-latin-mode-string' $B$N$$$:$l$+$,BeF~$5$l$k!#(B") (skk-deflocalvar skk-previous-point nil "`skk-with-point-move' $B4XO"JQ?t!#(B $B$3$NJQ?t$KJ];}$5$l$k%]%$%s%H$,8=:_$N%]%$%s%H$H0[$J$k>l9g!"(B`skk-with-point-move' $B$,;H$o$l$F$$$J$$%3%^%s%I$rF0:n$5$;$k$H!"(B`skk-after-point-move' $B$,:nF0$9$k!#(B") (skk-deflocalvar skk-prefix "" "$BF~NO$9$k$+$J$r7hDj$9$k$?$a$N%W%l%U%#%C%/%9!#(B") (defface skk-prefix-hiragana-face '((((class color) (type tty)) (:foreground "red")) (((class color) (background light)) (:foreground "coral4")) (((class color) (background dark)) (:foreground "pink")) (((class grayscale)) (:underline t))) "*$B$+$J%b!<%I$N%m!<%^;z%W%l%U%#%C%/%9$N(B face $BB0@-!#(B" :group 'skk-visual) (defface skk-prefix-katakana-face '((((class color) (type tty)) (:foreground "green")) (((class color) (background light)) (:foreground "forestgreen")) (((class color) (background dark)) (:foreground "green")) (((class grayscale)) (:underline t))) "*$B%+%J%b!<%I$N%m!<%^;z%W%l%U%#%C%/%9$N(B face $BB0@-!#(B" :group 'skk-visual) (defface skk-prefix-jisx0201-face '((((class color) (type tty)) (:foreground "blue")) (((class color) (background light)) (:foreground "blueviolet")) (((class color) (background dark)) (:foreground "thistle")) (((class grayscale)) (:underline t))) "*JISX0201 $B%b!<%I$N%m!<%^;z%W%l%U%#%C%/%9$N(B face $BB0@-!#(B" :group 'skk-visual) (skk-deflocalvar skk-prefix-overlay nil "`skk-prefix' $B$rI=<($9$k$?$a$K;HMQ$5$l$k(B overlay$B!#(B `skk-echo' $B$NCM$,(B non-nil $B$N$H$-$K;HMQ$5$l$k!#(B") (skk-deflocalvar skk-henkan-start-point nil "$BJQ493+;O%]%$%s%H$r<($9%^!<%+!L>$N3+;O%]%$%s%H$r<($9%^!<%+!l9g$K$O!"(B\"$B$o$i(Bu\" $B$N$h$&$K!"4A;zItJ,$N(B $BFI$_$,$J(B + $BAw$j2>L>$N:G=i$NJ8;z$N%m!<%^;z$N%W%l%U%#%C%/%9$,BeF~$5$l$k!#(B") (skk-deflocalvar skk-okuri-char nil "$BJQ49$9$Y$-8l$NAw$j2>L>$NItJ,$N%W%l%U%#%C%/%9!#(B $BNc$($P!"(B\"$B$*$/(B*$B$j(B\" $B$rJQ49$9$k$H$-$O!"(B`skk-okuri-char' $B$O(B \"r\"$B!#(B `skk-okuri-char' $B$,(B non-nil $B$G$"$l$P!"Aw$j$"$j$NJQ49$G$"$k$3$H$r<($9!#(B") (skk-deflocalvar skk-henkan-okurigana nil "$B8=:_$NJQ49$NAw$j2>L>ItJ,!#(B $BNc$($P!"(B\"$B"&$&$^$l(B*$B$k(B\" $B$rJQ49$9$l$P!"(B`skk-henkan-okurigana' $B$K$O(B \"$B$k(B\" $B$,BeF~(B $B$5$l$k!#(B") (skk-deflocalvar skk-last-kakutei-henkan-key nil "$B3NDj<-=q$K$h$j:G8e$K3NDj$7$?$H$-$N8+=P$78l!#(B $B3NDj<-=q$K$h$k3NDj$ND>8e$K(B x $B%-!<$r2!$9$H3NDj$,%"%s%I%%$5$l$F!"3NDjA0$N>uBV$G(B $B$3$N8+=P$78l$,%+%l%s%H%P%C%U%!$KA^F~$5$l$k!#(B") (skk-deflocalvar skk-henkan-list nil "$BJQ497k2L$N8uJd$N%j%9%H!#(B $BNc$($P!"(B\"$B"&$J(B*$B$/(B\" $B$H$$$&JQ49$9$l$P!"(B`skk-henkan-list' $B$O(B \(\"$BLD(B\" \"$B5c(B\" \"$BL5(B\" \"$BK4(B\") $B$N$h$&$K$J$k!#(B") (skk-deflocalvar skk-henkan-count -1 "`skk-henkan-list' $B$N%j%9%H$N%$%s%G%/%9$G8=:_$N8uJd$r:9$9$b$N!#(B") (skk-deflocalvar skk-self-insert-non-undo-count 1 "$BO"B3F~NO$7$?J8;z?t$rI=$o$9%+%&%s%?!]$H$J$k!#$3$NF0:n$r%(%_%e%l!<%H$9$k$?$a$N(B $B%+%&%s%?!uBV!#(B") (skk-deflocalvar skk-undo-kakutei-previous-point nil "$B3NDj%"%s%I%%D>A0$N%]%$%s%H$r<($9%^!<%+!]$NJQ497k2L$ND9$5!#(B") (skk-deflocalvar skk-henkan-overlay nil "$B8uJd$rI=<($9$k$H$-$K;HMQ$9$k(B Overlay$B!#(B") (skk-deflocalvar skk-henkan-in-minibuff-flag nil "$B%_%K%P%C%U%!$G<-=qEPO?$r9T$C$?$H$-$K$3$N%U%i%0$,N)$D!#(B `skk-remove-common' $B$G;2>H$5$l$k!#(B") (skk-deflocalvar skk-okuri-index-min -1 "`skk-henkan-list' $B$N%$%s%G%/%9$rA^$9%]%$%s%?$N$R$H$D!#(B $B<+F0Aw$j=hM}$G8!:w$7$?:G=i$N8uJd$r;X$9!#(B") (skk-deflocalvar skk-okuri-index-max -1 "`skk-henkan-list' $B$N%$%s%G%/%9$rA^$9%]%$%s%?$N$R$H$D!#(B $B<+F0Aw$j=hM}$G8!:w$7$?:G8e$N8uJd$r;X$9!#(B") (skk-deflocalvar skk-last-buffer-undo-list nil "$B"&%b!<%I$KF~$kD>A0$N(B `buffer-undo-list' $B$rB`Hr$7$F$*$/JQ?t!#(B") (skk-deflocalvar skk-after-prefix nil "t $B$G$"$l$P!"@\F,<-F~NO8e$N>uBV$K$"$k$3$H$rI=$9!#(B $B@\F,<-F~NO3+;O;~$K(B t $B$K%;%C%H$5$l!"B3$/8l$N3NDj8e$K(B nil $B$K%;%C%H$5$l$k!#(B") ;; skk-act.el related. (defcustom skk-use-act nil "*Non-nil $B$G$"$l$P3HD%%m!<%^;zF~NO(B ACT $B$rMxMQ$9$k!#(B" :type 'boolean :group 'skk-act) (defcustom skk-act-use-normal-y nil "*Non-nil $B$G$"$l$P(B \"y\" $B$r;H$C$?Y92;$NF~NO$rM-8z$K$9$k(B." :type 'boolean :group 'skk-act) (defcustom skk-act-load-hook nil "*skk-act $B$r(B load $B$7$?8e$Kl9g$O!"%-!<%\!<%I$N%?%$%W$N0c$$$r5[<}$9$k3dEv$F$r9T$$$^$;$s!#(B" :type '(radio (const :tag "$BF|K\8l(B 106 $B%-!<%\!<%I(B" jp106) (const :tag "NEC PC-98 $B%-!<%\!<%I(B" jp-pc98) (const :tag "$B1Q8l%-!<%\!<%I(B" us101) (const :tag "$B%-!<%\!<%I0MB8=hM}$rL58z$K$9$k(B" nil)) :group 'skk-azik) (defcustom skk-azik-load-hook nil "*skk-azik $B$r(B load $B$7$?8e$Ko$KI=<((B" t) (const :tag "$B8uJd0lMw$G$OHsI=<((B" (not list)) (const :tag "$B%_%K%P%C%U%!$G$OHsI=<((B" (not minibuf)) (const :tag "$B8uJd0lMw$H%_%K%P%C%U%!$G$OHsI=<((B" (not list minibuf)) (const :tag "$BHsI=<((B" nil)) :group 'skk-basic :group 'skk-annotation) (defcustom skk-annotation-delay 1.0 "*$B%"%N%F!<%7%g%s$rI=<($9$k$^$G$NCY1d!#C10L$OIC!#(B" :type 'number :group 'skk-annotation) (defcustom skk-annotation-loop-interval 0.1 "*$B%"%N%F!<%7%g%s$rI=<(Cf$N%W%m%;%9BT$A;~4V(B ($BIC(B)$B!#(B $B9bB.$J4D6-$G$O>.$5$a$K@_Dj$9$k$H%l%9%]%s%9$,2wE,$K$J$k!#(B $BDcB.$J4D6-$G$OBg$-$a$K@_Dj$9$k$HF0:n$,2~A1$5$l$&$k!#(B" :type 'number :group 'skk-annotation) (defcustom skk-annotation-toggle-display-char ?^ "*$B8uJd0lMw$rI=<(Cf$K%"%N%F!<%7%g%sI=<($r@Z$jBX$($k%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-annotation) (defcustom skk-annotation-copy-key "\C-w" "*$B%"%N%F!<%7%g%s$r%3%T!<$9$k%-!l9g$O(B $BJQ?t(B `interprogram-cut-function' $B$r@_Dj$9$k!#(B" :type (if (get 'key-sequence 'widget-type) 'key-sequence 'sexp) :group 'skk-annotation) (defcustom skk-annotation-browse-key "\C-o" "*$B%"%N%F!<%7%g%s$r(B URL $B$H8+Pv$7$F%V%i%&%:$9$k%-!]$H$9$kJ8;zNs$r0z?t$K$7$F(B `funcall' $B$5$l!"La$jCM(B $B$,(B non-nil $B$G$"$l$P%"%N%F!<%7%g%s$rI=<($9$k!#(B $B8uJd0lMw;~$K$O8F$P$l$J$$!#(B $B%"%N%F!<%7%g%sI=<($NH=CG$O(B `skk-treat-candidate-appearance-function' $B$G$b(B $Bl9g!"(Bpython $B$r(B inferior process $B$H$7$F5/F0$9$k!#(B $B$3$N@_Dj$O(B `skk-annotation-lookup-dict' $B$h$jM%@h$5$l$k!#(B Max OS X $B0J30$N4D6-$G$O5!G=$7$J$$!#(B $B8uJd0lMw$G$b$3$N5!G=$r;H$$$?$$>l9g$O(B `always' $B$K@_Dj$9$k$3$H$Ge=q$-$7$F$7(B $B$^$&$?$a!">e5io$NJQ49;~$K<-=q$r;2>H$9$k(B" t) (const :tag "$B>e5-$K2C$(8uJd0lMw$G$b;2>H$9$k(B" always) (const :tag "$BMxMQ$7$J$$(B" nil)) :group 'skk-annotation) (defcustom skk-annotation-python-program (or (executable-find "python2.6") (executable-find "python")) "*DictionaryServices $B$N$?$a$K5/F0$9$k(B python $B$N%U%!%$%kL>!#(B" :type '(radio (file) (const nil)) :group 'skk-annotation) (defcustom skk-annotation-lookup-lookup nil "*Non-nil $B$G$"$l$P(B elisp `lookup' $B$+$iJQ498uJd$N0UL#$rl9g$O(B `always' $B$K@_Dj$9$k$3$H$Ge=q$-$7(B $B$F$7$^$&$?$a!">e5io$NJQ49;~$K(B lookup $B$r;2>H$9$k(B" t) (const :tag "$B>e5-$K2C$(8uJd0lMw$G$b;2>H$9$k(B" always) (const :tag "$BMxMQ$7$J$$(B" nil)) :group 'skk-annotation :group 'skk-lookup) (defcustom skk-annotation-lookup-dict nil "*Non-nil $B$G$"$l$P!"30It%W%m%0%i%`$rFI$s$GJQ498uJd$N0UL#$rI=<($9$k!#(B $B30It%W%m%0%i%`$O(B `skk-annotation-dict-program' $B$G;XDj$9$k!#(B" :type 'boolean :group 'skk-annotation) (defcustom skk-annotation-dict-program (cond ((eq system-type 'darwin) skk-annotation-python-program) (t nil)) "*$BJQ498uJd$N0UL#$rI=<($9$k$?$a$N30It%W%m%0%i%`$N%U%!%$%kL>!#(B" :type '(radio (file) (const nil)) :group 'skk-annotation) (defcustom skk-annotation-dict-program-arguments (cond ((eq system-type 'darwin) '("-c" "import sys, DictionaryServices; word = sys.argv[1].decode(\"utf-8\"); print DictionaryServices.DCSCopyTextDefinition(None, word, (0, len(word))).encode(\"utf-8\")")) (t nil)) "*$BJQ498uJd$N0UL#$rI=<($9$k$?$a$N30It%W%m%0%i%`$N0z?t$N%j%9%H!#(B" :type '(radio (repeat string) (const nil)) :group 'skk-annotation) (defcustom skk-annotation-dict-coding-system 'utf-8 "*$B30It%W%m%0%i%`$+$i%"%N%F!<%7%g%spJs$N%=!<%9$r;XDj$9$k%*%W%7%g%s!#(B $BI8=`$G$O(B Wiktionary, Wikipedia ($BF|K\8lHG!"1Q8lHG(B) $B$r;2>H$9$k!#(B Mac OS X $B$G$OI8=`$N!V<-=q!W$rMxMQ$G$-$k!#(B" :type '(radio (repeat :tag "\ $BpJs$rMxMQ$7$J$$(B" nil)) :group 'skk-annotation) (make-obsolete-variable 'skk-annotation-wikipedia-sources 'skk-annotation-other-sources "DDSKK 14.4") (defcustom skk-annotation-wikipedia-key "\C-i" "*$B%"%N%F!<%7%g%s$H$7$F(B Wikipedia $B$NFbMF$rI=<($9$k%-!uBV$KLa$9!#(B") (defvar skk-annotation-target-data nil "annotation $B$rIU$1$i$l$k8uJd$K4X$9$k%G!<%?!#(B") (defvar skk-annotation-wikipedia-message nil "SKK Wikipedia $BMxMQJ}K!$r<($9%a%C%;!<%8(B ($B<+F0@_Dj(B)$B!#(B") (defvar skkannot-cached-srcs nil) (defvar skk-annotation-message nil "SKK Annotation $BMxMQJ}K!$r<($9%a%C%;!<%8(B ($B<+F0@_Dj(B)$B!#(B") (defvar skkannot-remaining-delay 0) (defvar skkannot-buffer-origin nil) (defvar skkannot-py-buffer nil) (defvar skkannot-url-installed-p (if (and (featurep 'emacs) (>= emacs-major-version 22)) t 'untested)) (defconst skkannot-py-none-regexp "^\\(Traceback\\|AttributeError\\|None\\)") (defconst skkannot-DictServ-cmd-format-str "word = u\"%s\"; \ print \" %s(word)s in DictionaryServices\" %s {'word': word}; \ print DictionaryServices.DCSCopyTextDefinition(None, word, (0, len(word)))") ;; XXX $B$^$@IT40A4(B (defconst skkannot-en-wiktionary-lang-regexp "\

    .*\ \\(\\)?\ \\(Aari\\|Abanyom\\|Abaza\\|Abenaki\\|Abkhaz\\|Acehnese\\|Acholi\\|Acholi\ \\|Achumawa\\|Adangme\\|Adele\\|Adnyamathanha\\|Adyghe\\|Adzera\\|Afar\ \\|Afrikaans\\|Aghul\\|Ainu\\|Akan\\|Akawaio\\|Akkadian\\|Aklanon\\|Alabama\ \\|Albanian\\|Aleut\\|Algonquin\\|Alsatian\\|Amaimon\\|Amanab\\|Ambai\ \\|Amharic\\|Amoy\\|Amuzgo\\|Ankave\\|Ansus\\|Apala.ANm\\|\\(Egyptian \\)?Arabic\ \\|Aragonese\\|Aramaic\\|Arapaho\\|Arawak\\|Armenian\\|Aromanian\\|Assamese\ \\|Asturian\\|'Auhelawa\\|Avar\\|Avestan\\|Awabakal\\|Aymara\\|Azeri\ \\|Balinese\\|Balti\\|Bambara\\|Bandjalang\\|Baruga\\|Bashkir\\|Basque\ \\|Baure\ \\|Belarusian\\|Bengali\\|Berbice Creole Dutch\\|Betawi\\|Bhojpuri\\|Biak\ \\|Bikol\\|Bislama\\|Blackfoot\\|BokmNel\\|Bosnian\\|Breton\ \\|Broome Pearling Lugger Pidgin\\|Bube\\|Bulgarian\\|Burmese\ \\|Cantonese\\|Capeverdean Crioulo\\|Catalan\\|Catawba\\|Cebuano\ \\|Central Tarahumara\\|Ch'orti'\\|Chamorro\\|Chechen\\|Cherokee\\|Cheyenne\ \\|Chichewa\\|Chickasaw\\|Chinese Pidgin English\\|Chinese\\|Chinook Jargon\ \\|Chiricahua\\|Choctaw\\|TumbalNa Chol\\|Chukchee\\|Chuvash\ \\|Classical Nahuatl\\|CoatlNan Mixe\\|Comorian\\|Coptic\\|Cornish\\|Corsican\ \\|Cree\\|Creek\\|Crimean Tatar\\|Croatian\\|Czech\ \\|Dacian\\|Dadibi\\|Northern Dagara\\\Dalmatian\\|Danish\\|Dargwa\ \\|Darkinjung\\|Darling\\|Dharuk\\|Dhivehi\\|Dhuwal\\|Dieri\\|Dusner\\|Dutch\ \\|Dyirbal\\|Dzongkha\ \\|Egyptian\\|English\\|Erzya\\|Esan\\|Esperanto\\|Estonian\\|Etruscan\\|Ewe\ \\|Fang\\|Faroese\\|Fijian\\|Filipino\\|Finnish\\|Fon\\|French\\|Frisian\ \\|Friulian\\|Fula\ \\|Ga\\|Gabi-Gabi\\|Gagauz\\|Galician\\|Gallo\\|Gamilaraay\\|Ge'ez\\|Georgian\ \\|\\(Middle High\\)?German\\|Gilbertese\\|Golin\\|Gooniyandi\\|Gothic\ \\|\\(Ancient \\|Mycenaean \\)?Greek\\|Greenlandic\\|GuaranNm\\|MbyNa GuaranNm\ \\|Gujarati\\|Guugu Yimidhirr\ \\|Hausa\\|Hawaiian\\|Hebrew\\|Hindi\\|Hittite\\|Hmong\\|Hopi\\|Hungarian\ \\|Icelandic\\|Ido\\|Igbo\\|Ilocano\\|Indoneian\\|Interlingua\\|Inuktitut\ \\|Irish\\|Italian\ \\|Japanese\\|Javanese\\|Jingpho\\|JNhrriais\ \\|Kabardian\\|Kabyle\\|KadiwNiu\\|Kannada\\|Kanuri\\|Kapingamarangi\\|Karelian\ \\|KaritiNbna\\|Kashmiri\\|Kashubian\\|Kaurna\\|Kazakh\\|Khmer\\|Kickapoo\ \\|Kinyarwanda\\|Kiput\\|Kirundi\\|Kokborok\\|Komi\\|Kongo\\|Korean\\|Kriol\ \\|Krisa\\|!Kung\\|Kurdish\\|Kurnai\\|Kwanyama\\|Kyrgyz\ \\|Ladino\\|Lak\\|Lakota\\|Laotian\\|Latin\\|Latvian\\|Lavukaleve\\|Lenape\ \\|Lezgi\\|Limburgish\\|Lingala\\|Lithuanian\\|Livonian\\|Lojban\ \\|Low Saxon\\|Lower Sorbian\\|Luganda\\|Luxembourgish\ \\|Maay\\|Macedonian\\|Makhuwa\\(-Meetto\\|-Shirima\\)?\\|Malagasy\\|Malay\ \\|Malayalam\\|Maliseet\\|Maltese\\|Manchu\\|Mandarin\\|Mandinka\\|Mangarevan\ \\|Mansi\\|Manx\\|Maori\\|Mapudungun\\|Marathi\\|Marau\\|Maroon\\|Marshallese\ \\|Martuthunira\\|Mati Ke\\|Mbabaram\\|Mende\\|Menominee\\|Meriam\\|Mesquakie\ \\|Mi'kmaq\\|Miami\ \\|Middle \\(Dutch\\|English\\|French\\|Korean\\|Norwegian\\|Scots\\)\ \\|Min Nan\\|Mirandese\\|Miskito\\|\\(Alcozauca \\|YosondNza \\)?Mixtec\ \\|Miyako\\|Mohegan\\|Mohican\\|Moldavian\\|Mongolian\\|Montauk\\|Munduapa\ \\|Munggui\\|Munsee\\|Murrinh-Patha\\|Mutsun\ \\|\\(Isthmus-Mecayapan \\)?Nahuatl\\|Nanticoke\\|Narragansett\\|Nauruan\ \\|Navajo\\|Ndonga\\|Neapolitan\\|Nepali\\|Nhanta\\|Niuean\\|Nootka\\|Norfuk\ \\|Norman\\|Norn\\|Northern Sami\\|Norwegian\\|Novial\\|Nynorsk\\|Nyunga\ \\|O'odham\\|Occitan\\|Ohlone\\|Ojibwe\ \\|Old \\(Church Slavonic\\|English\\|French\\|Frisian\\|High German\\|Irish\ \\|Norse\\|Prussian\\|Saxon\\|Slavonic\\)\\|Oriya\\|Oromo\ \\|Pali\\|Pangasinan\\|Panyjima\\|Papiamentu\\|Papuma\\|Pashto\ \\|Passamaquoddy\\|PaumarNm\\|Pennsylvania German\\|Penobscot\ \\|\\(Old \\)?Perian\\|Phoenician\ \\|PirahNc\\|Pitcairnese\\|Pitjantjatjara\\|Pitta-Pitta\\|Pochutec\\|Polish\ \\|Sayula Popoluca\\|Portuguese\\|Potawatomi\\|Powhatan\ \\|Proto-\\(Germanic\\|Indo-European\\|Uralic\\)\\|ProvenNga\\|Punjabi\ \\|Quechua\\|Quenya\ \\|Rarotongan\\|Reconstructed\\|Rohingya\\|Roman\\(i\\|ian\\|sch\\)\\|Rotokas\ \\|Rotuman\\|Russian\\|Rutul\ \\|Saanich\ \\|\\(Inari \\|Kildin \\|Lule \\|Northern \\|Pite \\|Skolt \\|Sourthern \ \\|Ter \\|Ume \\)?Sami\\|Samoan\\( Plantation Pidgin\\)?\\|Sanskrit\ \\|Sardinian\\|Scots\\|Scottish Gaelic\\|Serbian\\|Serbo-Croatian\\|Seri\ \\|Shabo\\|Shawnee\\|Shelta\\|Shona\\|Shoshoni\\|Shuar\\|Sicilian\\|Sindarin\ \\|Sindhi\\|Sinhalese\\|Slovak\\|Slovene\\|Somali\\|Upper Sorbian\\|Spanish\ \\|Sranan\\|Sumerian\\|Swahili\\|Swazi\\|Swedish\\|Syriac\ \\|Tabassaran\\|TAchelhit\\|Tagalog\\|Tahitian\\|Taimyr Pidgin Russian\\|Tajik\ \\|Tamasheq\\|Tamazight\\|Tamil\\|Tatar\\|Tausug\\|TaNmno\\|Telugu\\|Tetum\ \\|Thai\\|Tibetan\\|Tigrinya\\|Tiwi\\|Tocharian \\(A\\|B\\)\\|Tok Pisin\ \\|Tokelauan\\|Tongan\\|Torres Strait Creole\\|Translingual\\|Tsakhur\ \\|Tshiluba\\|Tswana\\|Tuamotuan\\|Tumbuka\\|Tupi\\|TupinambNa\\|Turkish\ \\|Turkmen\\|Tuvaluan\\|Tuvan\\|Twi\\|Tz'utujil\ \\|Ugaritic\\|Ukrainian\\|Umbundu\\|Unami\\|Unserdeutsch\\|Urdu\\|Uyghur\ \\|Uzbek\ \\|Vandalic\\|Venda\\|Veps\\|Vietnamese\\|VolapN|k\\|Votic\\|VNuro\ \\|Wageman\\|Walloon\\|Wampanoag\\|Wangaaybuwan-Ngiyambaa\\|Warlpiri\\|Welsh\ \\|Wembawemba\\|Western Apache\\|West Frisian\\|Wik-Mungkan\\|Wiradhuri\ \\|Woi\\|Woiwurrung\\|Wolof\\|Worimi\ \\|XavNante\\|Xhosa\\|!XNsNu\ \\|Yapese\\|Yiddish\\|Yidiny\\|Yindjibarndi\\|Yoruba\\|Yucatec\\|Yup'ik\ \\|\\(Yatzachi \\|Zoogocho \\|Isthmus \\)Zapotec\\|Zenga\\|Zhuang\ \\|Zulgo-Gemzek\\|Zulu\\|Zuni\\)\ \\(\\)?\

    " "en.wiktionary $B$K$*$$$F8@8l$rI=$9%X%C%@$N@55,I=8=(B") (defconst skkannot-en-wiktionary-part-of-speech-regexp "\ \ \\(\\)?\ \\(Article\\|Noun\\|Proper Noun\\|Adjective\\|Proper Adjective\ \\|Verb\\( form\\)?\\|Intransitive\\( verb\\)?\\|Transitive\\( verb\\)?\ \\|Adverb\ \\|Conjunction\\|Interjection\\|Numeral\\|Prefix\\|Suffix\\|Particle\ \\|Preposition\\|Contraction\\|Determiner\\|Demonstrative determiner\ \\|Interrogative determiner\\|Pronoun\\|Pronominal possessive adjective\ \\|Demonstrative pronoun\\|Demonstrative adjective\ \\|Quasi-Adjective\\|Proverb\\|Counter\\|Personal pronoun\ \\|Kanji\\|Hanja\\|Hanzi\ \\|Interrogative pronoun\\|Relative pronoun\\|Auxiliary verb\\( form\\)?\ \\|Indefinite article\\|Abbreviation\\|Initialism\\|Acronym\\|Symbol\ \\|\\(Han \\|Hiragana \\|Katakana \\)character\\|Phrase\\|Letter\\)\ \\(\\)?\ " "en.wiktionary $B$K$*$$$FIJ;l$rI=$9%X%C%@$N@55,I=8=(B") (defconst skkannot-ja-wiktionary-lang-regexp "\

    .*\ \\(\\)?\ \\(.+$B8l(B\\|$B%$%s%?!<%j%s%0%"(B\\|$B%(%9%Z%i%s%H(B\\|$B%5%s%9%/%j%C%H(B\\|$B%H%-%]%J(B\ \\|$B%H%/!&%T%8%s(B\\|$B5-9f(B\\|$B4A;z(B\\)\ \\(\\)?\ " "ja.wiktionary $B$K$*$$$F8@8l$rI=$9%X%C%@$N@55,I=8=(B") (defconst skkannot-ja-wiktionary-part-of-speech-regexp "\ \ \\(\\)?\ \\(\ \\(\\($B8GM-(B\\|\\($B?M>N(B\\|$B5?Ld(B\\)?$BBe(B\\)?$BL>(B\\|\\($B=u(B\\)?$BF0(B\\|$B7AMFF0(B?\\|\ $B@\B3(B\\|$BA0CV(B\\|$BI{(B\\|$B4'(B\\|$B4X78(B\\|$B4VEj(B\\|$B=u(B\\|$B?t(B\\|$BJ,(B\\|$BN`JL(B\\|$B46F0(B\\)\ $B;l(B.*\ \\|$B4A;z:.$8$jI=5-(B\\|$B0U5A(B\\|$BN@\<-(B\\|$BJ?2>L>(B\\|$BJR2>L>(B\\|$B0U5A(B\\|$B4A;z(B\\|$BOB8l$N4A;zI=5-(B\\)\ \\(\\)?\ " "ja.wiktionary $B$K$*$$$FIJ;l$rI=$9%X%C%@$N@55,I=8=(B") (skk-deflocalvar skk-annotation-mode nil "Non-nil $B$G$"$l$P!"(Bannotation $B%b!<%I$G$"$k$3$H$r<($9!#(B") ;;; skk-auto.el related. (defcustom skk-auto-okuri-process nil "*Non-nil $B$G$"$l$P!"Aw$j2>L>ItJ,$r<+F0G'<1$7$FJQ49$r9T$&!#(B $BNc$($P!"(B \"Uresii (\"UreSii\" $B$G$O$J$/(B) -> $B4r$7$$(B\" $B$N$h$&$KJQ49$5$l$k!#C"$7!"(B`skk-jisyo' ($B8D?M<-=q(B) $B$,!"(B \"$B$&$l(Bs /$B4r(B/[$B$7(B/$B4r(B/]/\" $B$N$h$&$J7A<0$K$J$C$F$$$k$3$H$,I,MW$G$"$k(B (SKK-JISYO.[SML] $B$O$3$N7A<0$KBP1~$7(B $B$F$$$J$$$N$G!"(B`skk-jisyo' $B$K$3$N%(%s%H%j$,$J$1$l$P$J$i$J$$(B)$B!#(B $B$3$N%*%W%7%g%sMxMQ;~$O!"(B`skk-process-okuri-early' $B$NCM$O(B nil $B$G$J$1$l$P(B $B$J$i$J$$!#(B" :type 'boolean :group 'skk-okurigana :group 'skk-auto) (defcustom skk-okuri-search-function 'skk-okuri-search-subr-original "*`skk-okuri-search' $B$G;HMQ$9$k4X?t!#(B" :type 'function :group 'skk-auto) (defcustom skk-auto-load-hook nil "*skk-auto.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-auto) ;; skk-cdb.el related. (defcustom skk-cdb-large-jisyo nil "*$B8D?M<-=q$N8!:w$N8e$K8!:w$9$k(B CDB $B7A<0<-=q%U%!%$%kL>!#(B Non-nil $B$G$"$l$P!";XDj$5$l$?(B CDB $B7A<0<-=q$r(B Emacs $B$+$iD>@\MxMQ$7!"(B $B9bB.$J8!:w$r9T$&!#(B" :type `(radio (file :tag "$B<-=q%U%!%$%kL>(B" ,(cond ((featurep 'xemacs) (or (locate-data-file "SKK-JISYO.L.cdb") "")) ((fboundp 'locate-file) (or (locate-file "skk/SKK-JISYO.L.cdb" (list (expand-file-name "../../.." data-directory))) (locate-file "skk/SKK-JISYO.L.cdb" (list data-directory)) "")))) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-cdb :group 'skk-dictionary) (defcustom skk-cdb-coding-system 'euc-jp "*$B8D?M<-=q$N8!:w$N8e$K8!:w$9$k(B CDB $B7A<0<-=q$N%3!<%G%#%s%0!&%7%9%F%`!#(B" :type 'coding-system :group 'skk-cdb :group 'skk-dictionary) ;;; skk-comp.el related. (defcustom skk-try-completion-char ?\011 ; TAB "*$B8+=P$78l$NJd40F0:n$r9T$&%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-comp) (defcustom skk-next-completion-char ?. "*$B8+=P$78l$NJd40F0:n$G!"e8B!#(B" :type 'integer :group 'skk-comp) (defcustom skk-comp-circulate nil "*$B8+=P$78l$rJd40$9$k:]$N!"8uJd$NI=<(=g$r@)8f$9$k!#(Bnon-nil $B$G$"$l$P!"(B $B:G8e$N8+=P$78l$,I=<($5$l$?>uBV$G99$KJd40$r9T$&$HF~NOJ8;zNs$KLa$k!#(B nil $B$G$"$l$P!":G8e$N8+=P$78l$,I=<($5$l$?>uBV$GDd;_$9$k!#(B" :type 'boolean :group 'skk-comp) (defcustom skk-comp-use-prefix nil "*$B8+=P$78l$rJd40$9$k:]$K%W%l%U%#%C%/%9(B(`skk-prefix')$B$b;H$&$+!#(B $BNc$($P!"(B\"$B"&$"(Bk\" $B$H$"$k>uBV$GJd40$r$7$?;~$K!"(Bnon-nil $B$G$"$l$P(B \"$B$"$5(B\" $B$OBP>]$H$J$i$:!"(B\"$B$"$+(B\", \"$B$"$-(B\" $B$J$I$K9J$i$l$k!#(B $B$7$+$7l9g$K$OM=$aI,MW$J$b$N$@$1@_Dj$7$F$*$/$3$H!#(B" :type '(repeat (cons string regexp)) :group 'skk-comp) (defcustom skk-comp-kana-list-filter-function (lambda (kana-list prefix) ;; "t" $B0J30$G(B "$B$C(B" $B$rJd40$7$J$$(B (unless (string= prefix "t") (setq kana-list (delete "$B$C(B" kana-list))) ;; "m" $B$G(B "$B$s(B" $B$rJd40$7$J$$(B (when (string= prefix "m") (setq kana-list (delete "$B$s(B" kana-list))) ;; "w" $B$G(B "$B$&(B" $B$rJd40$7$J$$(B (when (string= prefix "w") (setq kana-list (delete "$B$&(B" kana-list))) ;; "x" $B$G(B "$B$+(B", "$B$1(B" $B$rJd40$7$J$$(B ;; in skk-rom-kana-base-rule-list, "xka"$B"*(B"$B$+(B", "xke"$B"*(B"$B$1(B" (when (string= prefix "x") (setq kana-list (delete "$B$+(B" kana-list)) (setq kana-list (delete "$B$1(B" kana-list))) ;; $B$$$A$*$&%+%J%b!<%I$r9M$($F(B (when (string= prefix "v") (add-to-list 'kana-list "$B%t(B")) ;; $BJ?2>L>!&JR2>L>$N$_(B ($B5-9fN`$OITMW(B) (save-match-data (delq nil (mapcar (lambda (kana) (when (string-match "\\(\\cH\\|\\cK\\)" kana) kana)) kana-list)))) "*`skk-comp-prefix-regexp-alist' $B$K<+F0$GMWAG$rDI2C$9$k:]$KMxMQ$5$l$k4X?t!#(B `skk-rule-tree' $B$+$i%W%l%U%#%C%/%9$KBP1~$9$k(B \"$B$+$J(B\" $B$r=8$a$?8e!"(B $B$3$N4X?t$K$h$C$FD4@0$r9T$&!#(B" :type '(radio (function :tag "$B4X?t(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-comp) (defcustom skk-completion-prog-list '((skk-comp-by-history) (skk-comp-from-jisyo skk-jisyo) (skk-look-completion)) "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-comp-first' $B$,(B t $B$G$"$k;~$K(B $B?75,Jd408uJd72$N@8@.$r3+;O$7!"(B1$B2s$NI>2A$K$D$-(B 1$B$D$N8uJd$rJV$9(B S $B<0!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-1 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-1 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-2 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-2 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-3 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-3 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-4 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-4 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-5 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-5 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-6 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-6 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-7 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-7 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-8 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-8 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-9 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-9 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-prog-list-0 nil "*$BJd40%W%m%0%i%`$N%j%9%H!#(B $B%j%9%H$NMWAG$O!"(B`skk-completion-prog-list' $B$HA4$/F1MM!#(B C-0 TAB $B$G;H$o$l$k!#(B" :type '(repeat (sexp)) :group 'skk-comp) (defcustom skk-completion-search-char ?~ "*`skk-completion-search' $B$rMxMQ$9$kJQ49$r;XDj$9$k%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-comp) (defcustom skk-smart-find-file-path load-path "*`smart-find' $B$K%U%!%$%kL>$rC5:w$5$;$k%Q%9!#(B $B$3$NCM$,;XDj$5$l$J$1$l$P!"(B`smart-find-file-path' $B$NCM$,Be$o$j$K;HMQ$5$l$k!#(B" :type '(repeat (directory)) :group 'skk-comp) (defcustom skk-smart-find-ignored-file-regexp "\ \\(\\.\\(elc\\|o\\(rig\\|ld\\)?\\|diff\\)\\|,v\\|~\\|/\\)$" "*`smart-find' $B$KL5;k$5$l$k%U%!%$%kL>$r;XDj$9$k@55,I=8=!#(B" :type 'regexp :group 'skk-comp) ;; ---- buffer local variables ;; $B6uJ8;zNs$KBP$7$F(B skk-comp-do $B$r8F$V$3$H$b$"$j$&$k$N$G!"(B"" $B$r(B nil $B$G$OBe(B ;; $BMQ$G$-$J$$!#(B (skk-deflocalvar skk-comp-key "" "$BJd40$9$Y$-8+=P$78l!#(B") ;; $B<-=qEPO?;~%_%K%P%C%U%!$GJd40$7$?>l9g!"85$N%P%C%U%!$KLa$C$?$H$-$K(B ;; skk-comp-key $B$NCM$,GK2u$5$l$F$$$J$$J}$,%Y%?!%j%9%H$r3JG<$9$k!#(B") (defvar skk-comp-lisp-symbols nil "$BJd40$5$l$?(B lisp symbol $B$N%j%9%H$r3JG<$9$k!#(B") ;;; skk-server-completion.el related. (defcustom skk-server-completion-search-char ?~ "*server completion $B$rMxMQ$7$?JQ49$r9T$&%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-server-completion) (defvar skk-server-completion-words nil "server completion $B$K$h$jF@$i$l$?8+=P$78l$N%j%9%H!#(B") (defvar skk-server-disable-completion nil "Non-nil $B$J$i(B server completion $B$N5!G=$rL58z$K$9$k!#(B server completion $B$,]$N%U%'%$%9!#(B" :group 'skk-dcomp) (defcustom skk-dcomp-activate nil "*Non-nil $B$G$"$l$P8+=P$78l$NF0E*Jd40$N5!G=$rM-8z$K$9$k!#(B $B$3$NJQ?t$NCM$,(B `eolp' $B$@$C$?>l9g!"%]%$%s%H$,9TKv$K$"$k;~$@$1Jd40$9$k!#(B" :type '(radio (const :tag "always on" t) (const :tag "only at the end of a line" eolp) (const :tag "off" nil) (sexp :tag "$BG$0U$N%k!<%k(B")) :group 'skk-dcomp) (defcustom skk-dcomp-face-priority 700 "*Overlay/extent priority of `skk-dcomp-face'." :type 'integer :group 'skk-dcomp) (defcustom skk-dcomp-keep-completion-keys nil ;; (delq ;; nil ;; (list ;; (car (rassoc (list nil 'skk-toggle-kana) ;; skk-rom-kana-rule-list)) ;; (car (rassoc (list nil 'skk-toggle-characters) ;; skk-rom-kana-rule-list)) ;; (car (rassoc (list nil 'skk-toggle-kana) ;; skk-rom-kana-base-rule-list)) ;; (car (rassoc (list nil 'skk-toggle-characters) ;; skk-rom-kana-base-rule-list)))) "*$BF0E*Jd40$5$l$?8+=P$78l$r>C$5$J$$%-!<$N%j%9%H!#(B $BDL>o$O8+=P$78l$NJd408e!"C$($F$7$^$&$,!"$3$N%j%9%H$K;XDj$5$l$?%-!<(B $BF~NO$,$"$C$?$H$-$OF0E*Jd40$5$l$?8+=P$78l$r>C$5$J$$!#(B" :type '(radio (repeat :tag "$B%j%9%H(B" (string :tag "$B%-!<(B($BJ8;z(B)")) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-dcomp) (defcustom skk-dcomp-multiple-activate nil "*Non-nil $B$G$"$l$P!"F0E*Jd40$N8uJd$rJ#?tI=<($9$k!#(B $B4X?t$G$"$l$P!"$=$NI>2A7k2L$,(B non-nil $B$N;~$@$1F0E*Jd40$N8uJd$rJ#?tI=<($9$k!#(B $B$3$N5!G=$O(B XEmacs $B$G$OF0:n$7$J$$!#(B" :type '(radio (const :tag "always on" t) (const :tag "off" nil) (sexp :tag "$BG$0U$N%k!<%k(B")) :group 'skk-dcomp) (defcustom skk-dcomp-multiple-rows 7 "*$BF0E*Jd40$N8uJd$rJ#?tI=<($9$k>l9g$NI=<(?t!#(B" :type 'integer :group 'skk-dcomp) (defcustom skk-dcomp-multiple-keep-point-buffer-list (list (concat " *" (file-name-nondirectory skk-jisyo) "*")) "*$BJ#?tI=<($N0Y$KJd408uJd$r8!:w$9$k:]$K(B `point' $B$rJ];}$9$k%P%C%U%!$N%j%9%H!#(B $BF0E*Jd40$G8uJd$rJ#?tI=<($9$k:]$K8!:wBP>]%P%C%U%!(B $BFb$N(B `point' $B$rF0$+$7$F$7$^$&$HDL>o$NJd40$,@5>o$K5!G=$7$J$/$J$k!#(B $B$=$N$?$a!"J#?tI=<(MQ$N8!:w$,=*$o$C$?8e$G(B `point' $B$rLa$9$Y$-%P%C%U%!(B $B$r$3$N%j%9%H$K@_Dj$9$k!#(B $B6qBNE*$K$O(B `skk-comp-from-jisyo' $B$r;HMQ$7$F8uJd$r8!:w$9$k>l9g!"$=(B $B$NBP>]%P%C%U%!$O$3$N%j%9%H$K@_Dj$9$kI,MW$,$"$k!#(B" :type '(repeat string) :group 'skk-dcomp) (skk-deflocalvar skk-dcomp-start-point nil) (skk-deflocalvar skk-dcomp-end-point nil) (skk-deflocalvar skk-dcomp-extent nil) (skk-deflocalvar skk-dcomp-multiple-candidates nil) (skk-deflocalvar skk-dcomp-multiple-key "") (skk-deflocalvar skk-dcomp-multiple-prefix "") (skk-deflocalvar skk-dcomp-multiple-search-done nil) (skk-deflocalvar skk-dcomp-multiple-select-index -1) (skk-deflocalvar skk-dcomp-multiple-overlays nil) (defvar skk-dcomp-face 'skk-dcomp-face) ;;; skk-gadget.el related. (defcustom skk-gengo-alist '((heisei "$BJ?@.(B" "H") (showa "$B>$N1Q8lI=5-$H$=$NB>$NI=5-K!$NO"A[%j%9%H!#(B $B3F(B cons cell $B$N(B car $B$O(B Emacs $BI8=`4X?t(B `current-time-string' $B$,JV$97A<0!#(B cdr $B$OBP1~$9$kG$0U$N7A<0!#(B" :type '(repeat (list (string :tag "English") (string :tag "$BF|K\<0(B") (string :tag "Deutsch"))) :group 'skk-gadget) (defcustom skk-day-of-week-alist '(("Sun" "$BF|(B" "So") ("Mon" "$B7n(B" "Mo") ("Tue" "$B2P(B" "Di") ("Wed" "$B?e(B" "Mi") ("Thu" "$BLZ(B" "Do") ("Fri" "$B6b(B" "Fr") ("Sat" "$BEZ(B" "Sa")) "*$BMKF|$N1Q8lI=5-$H$=$NB>$NI=5-K!$NO"A[%j%9%H!#(B $B3F(B cons cell $B$N(B car $B$O(B Emacs $BI8=`4X?t(B `current-time-string' $B$,JV$97A<0!#(B cdr $B$OBP1~$9$kG$0U$N7A<0!#(B" :type '(repeat (list (string :tag "English") (string :tag "$BF|K\8l(B") (string :tag "Deutsch"))) :group 'skk-gadget) (defcustom skk-default-current-date-function (lambda (date-information format gengo and-time) (skk-default-current-date date-information nil skk-number-style gengo 0 0 0 and-time)) "*`skk-current-date' $B$G%3!<%k$5$l$k%G%U%)%k%H$N4X?t!#(B $B;~4V>pJs$r0z?t$KNqI=<($9$k!#(B nil $B$G$"$l$P!"859fI=<($9$k!#(B" :type 'boolean :group 'skk-gadget) (defcustom skk-number-style 1 "*`skk-today', `skk-clock' $B$GI=<($9$k?t;z$N7A<0$rJQ2=$5$;$k!#(B 0 , nil : ASCII $B?t;z(B 1 , t : $BA43Q?t;z(B 2 : $B4A?t;z(B($B0LpJs$NO"A[%j%9%H!#(B $B3FMWAG$O(B ($B4p=`$H$J$kC10L(B ($BJQ49$9$kC10L(B . $BJQ49;~$NG\N((B)) $B$N7A<0$K$h$k!#(B `skk-gadget-units-conversion' $B$G;2>H$9$k!#(B" :type 'sexp :group 'skk-gadget) (defcustom skk-gadget-load-hook nil "*skk-gadget.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-gadget) ;;; skk-isearch.el related. (defcustom skk-isearch-mode-enable t "*Non-nil $B$G$"$l$P!"%$%s%/%j%a%s%?%k!&%5!<%A$G(B skk-isearch $B$rMxMQ$9$k!#(B $BDL>o$O(B SKK $B%b!<%I$,(B ON $B$N%P%C%U%!$G$N$_(B skk-isearch $B$,M-8z$K$J$k$,!"$3(B $B$NCM$,(B `always' $B$G$"$l$P(B SKK $B%b!<%I$,(B OFF $B$N%P%C%U%!$G$bM-8z$K$J$k!#(B $B$3$NCM$,(B nil $B$J$i$P(B skk-isearch $B$OL58z$K$J$k!#(Bmigemo $B$rMxMQ$7$?$$>l9g(B $B$J$I$K$O(B nil $B$K@_Dj$9$k$+!"$b$7$/$OJ;MQ$9$k$N$G$"$l$P(B `skk-isearch-start-mode' $B$r(B `latin' $B$K$9$k$N$,NI$$!#(B" :type '(radio (const :tag "SKK $B%b!<%I$,(B ON $B$N;~$@$1MxMQ$9$k(B" t) (const :tag "$B>o$KMxMQ$9$k(B" always) (const :tag "$BMxMQ$7$J$$(B" nil)) :group 'skk-isearch) (defcustom skk-isearch-mode-string-alist '((hiragana . "[$B$+(B] ") (katakana . "[$B%+(B] ") (jisx0208-latin . "[$B1Q(B] ") (latin . "[aa] ") (abbrev . "[a$B$"(B] ") (nil . "[--] ")) ;; "*Alist of (MODE-SYMBOL . PROMPT-STRING). ;;MODE-SYMBOL is a symbol indicates canonical mode of skk for skk-isearch. ;;Valid MODE-SYMBOL is one of `hiragana', `katakana', `jisx0208-latin', ;;`latin' or nil. ;;PROMPT-STRING is a string used in prompt to indicates current mode of ;;skk for skk-isearch. " "*$B%$%s%/%j%a%s%?%k!&%5!<%A;~$N%W%m%s%W%HI=<($N$?$a$NO"A[%j%9%H!#(B $B3FMWAG$O!"(B (MODE-SYMBOL . PROMPT-STRING) $B$H$$$&(B cons cell$B!#(B MODE-SYMBOL $B$OF~NO%b!<%I$rI=$o$9%7%s%\%k$G!"2<5-$N$$$:$l$+$r;XDj$9$k!#(B $B$+$J%b!<%I!'(B `hiragana' $B%+%J%b!<%I!'(B `katakana' $BA41Q%b!<%I!'(B `jisx0208-latin' $B%"%9%-!<%b!<%I!'(B `latin' Abbrev $B%b!<%I!'(B `abbrev' nil : SKK $B%b!<%I%*%U(B PROMPT-STRING $B$O!"F~NO%b!<%I$K1~$8$F%W%m%s%W%HI=<($9$kJ8;zNs!#(B" :type '(list (cons (const :tag "$B$+$J%b!<%I(B" hiragana) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "$B%+%J%b!<%I(B" katakana) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "$BA41Q%b!<%I(B" jisx0208-latin) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "$B%"%9%-!<%b!<%I(B" latin) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "Abbrev $B%b!<%I(B" abbrev) (string :tag "$B%W%m%s%W%H(B")) (cons (const :tag "SKK$B%b!<%I%*%U(B" nil) (string :tag "$B%W%m%s%W%H(B"))) :group 'skk-isearch) (defcustom skk-isearch-start-mode nil ;; "*Specifies the search mode when isearch is called. ;;This variable is valid only when `skk-isearch-use-previous-mode' is nil. ;;If nil, it means that if skk-mode has been called in this buffer, same as ;;the mode of the buffer, otherwise perform ascii search. ;;If `latin' or `ascii' perfrom ascii search. ;;If `hiragana', `hirakana' or `kana' -> hira kana search. ;;If `jisx0208-latin' or `eiji', perform zenkaku eiji (i.e. JIS X0208 ;;alphabet) search." "*$B%+%l%s%H%P%C%U%!$G%$%s%/%j%a%s%?%k!&%5!<%A$r9T$&:]$NF~NO%b!<%I!#(B `skk-isearch-use-previous-mode' $B$,(B nil $B$N>l9g$N$_M-8z!#(B $B%$%s%/%j%a%s%?%k!&%5!<%A$r9T$&>l9g!">o$K$3$NJQ?t$G;XDj$7$?F~NO%b!<%I$,;HMQ$5$l$k(B ($B%f!<%6!<$,L@<(E*$KJQ99$9$k$3$H$O2D(B)$B!#(B $B2<5-$N$$$:$l$+$N%7%s%\%k$G;XDj$9$k!#(B nil: $B%+%l%s%H%P%C%U%!$G(B SKK $B%b!<%I$,5/F0$5$l$F$$$l$P$=$N%b!<%I!"(B $B5/F0$5$l$F$$$J$1$l$P(B $B%"%9%-!<%b!<%I!#(B `hiragana' (`hiragana' or `kana'): $B$+$J%b!<%I(B `jisx0208-latin' (`eiji') : $BA41Q%b!<%I(B `latin' (`ascii'): $B%"%9%-!<%b!<%I(B" :type '(radio (const :tag "$B8!:wCf%P%C%U%!$N%b!<%I$r7Q>5(B" nil) (const :tag "$B%"%9%-!<%b!<%I(B" latin) (const :tag "$B$+$J%b!<%I(B" hiragana) (const :tag "$BA41Q%b!<%I(B" jisx0208-latin)) :group 'skk-isearch) (defcustom skk-isearch-use-previous-mode nil ;; "*Non-nil means use the same search mode as that of the last search." "*Non-nil $B$G$"$l$P!"F1$8%P%C%U%!$G$N:G8e$N8!:w;~$N%b!<%I$r;HMQ$9$k!#(B" :type 'boolean :group 'skk-isearch) (defcustom skk-isearch-initial-mode-when-skk-mode-disabled 'latin ;; "*Symbol indicates the mode to use as initial mode for skk-isearch when ;;skk is turned off in the current buffer." "*SKK $B%b!<%I$,%*%U$N%P%C%U%!$G!":G=i$K%$%s%/%j%a%s%?%k!&%5!<%A$r9T$&:]$NF~NO%b!<%I!#(B" :type '(radio (const :tag "$B%"%9%-!<%b!<%I(B" latin) (const :tag "$B$+$J%b!<%I(B" hiragana) (const :tag "$BA41Q%b!<%I(B" jisx0208-latin)) :group 'skk-isearch) (defcustom skk-isearch-whitespace-regexp "\\(\\s \\|[ \t\n\r\f]\\)*" ;; "*Regular expression to match a sequence of whitespace chars. ;;This applies to regular expression incremental search." "$B6uGrJ8;z$NO"B3$H$7$F%^%C%A$5$;$k$Y$-@55,I=8=!#(B regexp isearch $B$N:]!"$3$N@55,I=8=$K%^%C%A$9$kJ8;z$,8!:wJ8;zNs$N4V$K4^$^$l$F$$$F(B $B$b%^%C%A$9$k!#(B" :type 'regexp :group 'skk-isearch) (defconst skk-isearch-mode-canonical-alist '((hiragana . 0) (katakana . 1) (jisx0208-latin . 2) (latin . 3)) "Alist of (SYMBOL . NUMBER). The SYMBOL is canonical skk mode, and NUMBER is its numerical representation.") (defconst skk-isearch-mode-alias-alist '((hirakana . hiragana) (kana . hiragana) (eiji . jisx0208-latin) (ascii . latin)) "Alist of (ALIAS . CANONICAL). The both ALIAS and CANONICAL should be symbol. ALIAS can be used as an alias of CANONICAL. CANONICAL should be found in `skk-isearch-mode-canonical-alist'. ") (defconst skk-isearch-breakable-character-p-function (cond ((eval-when-compile (featurep 'emacs)) (lambda (char) ;; see emacs/lisp/fill.el how the category `|' is ;; treated. (aref (char-category-set char) ?|))) (t (lambda (char) (string-match word-across-newline (char-to-string char))))) "Function to test if we can insert a newline around CHAR when filling.") (defconst skk-isearch-working-buffer " *skk-isearch*" "Work buffer for skk isearch.") (defvar skk-isearch-message nil "skk-isearch $B4X?t$r%3!<%k$9$k$?$a$N%U%i%0!#(B Non-nil $B$G$"$l$P!"(B`skk-isearch-message' $B4X?t$r%3!<%k$9$k!#(B") (defvar skk-isearch-mode nil "Current search mode. 0 means hira kana search. 1 means kana search. 2 means zenkaku eiji (i.e. JIS X0208 alphabet) search. 3 means ascii search.") (defvar skk-isearch-incomplete-message "" "Incomplete isearch message") (defvar skk-isearch-mode-map nil "Keymap for skk isearch mode. This map should be derived from `isearch-mode-map'.") (defvar skk-isearch-overriding-local-map (if (featurep 'xemacs) 'overriding-local-map 'overriding-terminal-local-map) "Variable holding overriding local map used in `isearch-mode'.") (defvar skk-isearch-last-mode-string "") (defvar skk-isearch-last-mode-regexp "") ;;;###autoload (defvar skk-isearch-switch nil) (defvar skk-isearch-state nil) (defvar skk-isearch-in-editing nil) (defvar skk-isearch-current-buffer nil) ;;; skk-hint.el related. (defcustom skk-hint-start-char ?\73 ; ; "*$B%R%s%HJQ49$r3+;O$9$k%-!<%-%c%i%/%?(B" :type 'character :group 'skk-hint) (skk-deflocalvar skk-hint-henkan-hint nil "$B%R%s%HIU$-JQ49;~$N%R%s%HItJ,!#(B `skk-henkan-key', `skk-henkan-okurigana', `skk-okuri-char' $B$N%j%9%H!#(B") (skk-deflocalvar skk-hint-start-point nil) (skk-deflocalvar skk-hint-end-point nil) (skk-deflocalvar skk-hint-okuri-char nil) (skk-deflocalvar skk-hint-state nil) (skk-deflocalvar skk-hint-inhibit-kakutei nil) (skk-deflocalvar skk-hint-inhibit-dcomp nil) ;;; skk-jisx0201.el related. (defcustom skk-use-jisx0201-input-method nil "\ *Non-nil $B$J$i(B $BH>3Q%+%J$H(B Japanese Roman $B$NF~NO5!G=$,MxMQ2DG=$K$J$k!#(B" :type 'boolean :group 'skk-jisx0201) (defcustom skk-jisx0201-mode-string "(I6@6E(B" "*SKK $B$,(B JISX0201 $B%b!<%I$G$"$k$H$-$K%b!<%I%i%$%s$KI=<($5$l$kJ8;zNs!#(B" :type 'string :group 'skk-jisx0201) (defvar skk-jisx0201-base-rule-tree nil) (defvar skk-jisx0201-roman-rule-tree nil) (defvar skk-jisx0201-orig-rule-tree nil) (skk-deflocalvar skk-jisx0201-roman nil) (skk-deflocalvar skk-jisx0201-mode nil "Non-nil $B$G$"$l$P!"F~NO%b!<%I$,(B JISX0201 $B%b!<%I$G$"$k$3$H$r<($9!#(B") ;;; skk-jisx0213.el related. (defcustom skk-jisx0213-prohibit nil "*Non-nil $B$G$"$l$P(B JISX0213 $B$NJ8;zNs$r4^$`8uJd$N=PNO$r$7$J$$!#(B JISX0213 $B$r07$($J$$$H$-$O$3$NCM$OF0:n$K1F6A$7$J$$!#(B" :type 'boolean :group 'skk-jisx0213) ;;; skk-jisyo-edit-mode.el related (defcustom skk-jisyo-edit-user-accepts-editing nil "*Non-nil $B$G$"$l$P!"%f!<%6$,8D?M<-=q$NJT=8$r<+8J@UG$$K$F9T$&;]3NG':Q$G$"$k!#(B nil $B$G$"$l$P!"(B`skk-edit-private-jisyo' $B$N \"shi\" nil $B$G$"$l$P!"71Na<0(B \"($B!VF|K\<0!W$H$b8@$&$h$&$@(B)\" $B$rMQ$$$k!#(B $BNc$($P!"(B \"$B$7(B\" -> \"si\" $B>H$9$k5U0z$-%f!<%6<-=q$N%j%9%H!#(B" :type '(repeat file) :group 'skk-kakasi) ;;; skk-kanagaki.el related. (defcustom skk-use-kana-keyboard nil "\ *Non-nil $B$J$i2>L>F~NOMQ$N@_Dj$r%m!<%I$9$k!#(B SKK $B;HMQCf$K$3$NJQ?t$NCM$r@Z$jBX$($k$3$H$G(B $B%m!<%^;zF~NO(B $B"+"*(B $B2>L>F~NO(B $B$N(B $B@Z$jBX$($,$G$-$k!#(B" :type 'boolean :set (lambda (symbol value) (prog1 (if (fboundp 'custom-set-default) (custom-set-default symbol value) (set-default symbol value)) (when (and value (boundp 'skk-mode-invoked) skk-mode-invoked) (require 'skk-kanagaki) (skk-kanagaki-initialize)))) :group 'skk-kanagaki) ;;; skk-kcode.el related. (defcustom skk-kcode-method (if (featurep 'emacs) 'code-or-char-list 'code-or-menu) "*`skk-input-by-code-or-menu' $B$G;H$o$l$kJ8;zA^F~$N$?$a$N%$%s%?!<%U%'!<%9!#(B `char-list' $B$G$"$l$P!"J8;z0lMwI=(B (`skk-list-chars') $B$+$iA*Br$9$k!#(B `code-or-char-list' $B$G$"$l$P!"$^$:(B JIS $B%3!<%I(B/$B6hE@%3!<%IF~NO%W%m%s%W%H$rI=<((B $B$7!"M-8z$JF~NO$,F@$i$l$J$+$C$?>l9g$K(B `skk-list-chars' $B$r8F$S=P$9!#(B `code-or-menu' $B$G$"$l$P=>Mh$N$h$&$K!"$^$:(B JIS $B%3!<%I(B/$B6hE@%3!<%IF~NO%W%m%s%W%H(B $B$rI=<($7!"M-8z$JF~NO$,3NDj$7$J$+$C$?>l9g$K$O8uJdJ8;z0lMw$rI=<($9$k!#(B" :type '(radio (const :tag "$B>o$KJ8;z%3!<%II=$+$iA*$V(B" char-list) (const :tag "$B%3!<%IF~NO(B $B"*(B $BJ8;z%3!<%II=(B" code-or-char-list) (const :tag "$B%3!<%IF~NO(B $B"*(B $BJ8;z8uJd(B ($B5lMh$N%a%K%e!<(B)" code-or-menu) (const :tag "$BJ8;z%3!<%II=!?%3!<%IF~NO$OMxMQ$7$J$$(B" this-key)) :group 'skk-kcode) (defcustom skk-input-by-code-menu-keys1 '(?a ?s ?d ?f ?g ?h ?q ?w ?e ?r ?t ?y) "*$B%a%K%e!<7A<0$G(B JIS $BJ8;z$rF~NO$9$k$H$-$K;HMQ$9$kA*Br%-!<$N%j%9%H!#(B $BBh(B 1 $BCJ3,$N%a%K%e!<$G;HMQ$9$k!#(B 12 $B8D$N%-!<(B (char type) $B$r4^$`I,MW$,$"$k!#(B" :type '(repeat character) :group 'skk-kcode) (defcustom skk-input-by-code-menu-keys2 '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?t ?y ?u) "*$B%a%K%e!<7A<0$G(B JIS $BJ8;z$rF~NO$9$k$H$-$K;HMQ$9$kA*Br%-!<$N%j%9%H!#(B $BBh(B 2 $BCJ3,$N%a%K%e!<$G;HMQ$9$k!#(B 16 $B8D$N%-!<(B (char type) $B$r4^$`I,MW$,$"$k!#(B" :type '(repeat character) :group 'skk-kcode) (defcustom skk-kcode-charset (cond ((find-coding-system 'euc-jisx0213) 'japanese-jisx0213-1) (t 'japanese-jisx0208)) "*`skk-input-by-code-or-menu' $B$G;H$o$l$kJ8;z%;%C%H!#(B" :type (let ((list (if (find-coding-system 'euc-jisx0213) '((const japanese-jisx0213-1) (const japanese-jisx0208)) '((const japanese-jisx0208)))) (prompt (if (get 'charset 'widget-type) '(charset) '(symbol)))) (append '(radio) list prompt)) :group 'skk-jisx0213 :group 'skk-kcode) (defcustom skk-kcode-load-hook nil "*skk-kcode.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-kcode) (defconst skk-code-n1-min 161) (defconst skk-code-n1-max (if (find-coding-system 'euc-jisx0213) 254 244)) (defconst skk-code-n2-min 161) (defconst skk-code-n2-max 254) (defconst skk-code-null 128) (defconst skk-kcode-charset-list (mapcar (lambda (x) (list (symbol-name x))) (if (eval-when-compile (featurep 'emacs)) charset-list (charset-list)))) (defvar skk-display-code-method 'code "*Non-nil $B$G$"$l$P%]%$%s%H$K$"$kJ8;z$N%3!<%I$rI=<($9$k!#(B nil $B$G$"$l$P(B `this-command-keys' $B$rA^F~$9$k!#(B") (defvar skk-input-by-code-or-menu-jump-default skk-code-n1-min) (defface skk-display-code-prompt-face '((((class color) (type tty)) (:inherit default :foreground "cyan")) (((class color) (background light)) (:inherit default :foreground "cyan")) (((class color) (background dark)) (:inherit default :foreground "cyan")) (((class grayscale)) (:inherit default))) "*skk-display-code `$' $B$G%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8Cf$N(B KUTEN:$B!"(BJIS:$B!"(BEUC:$B!"(B SJIS: $B5Z$S(B UNICODE: $B$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) (defface skk-display-code-char-face '((((class color) (type tty)) (:inherit default :foreground "black" :background "yellow")) (((class color) (background light)) (:inherit default :foreground "black" :background "yellow")) (((class color) (background dark)) (:inherit default :foreground "black" :background "yellow")) (((class grayscale)) (:inherit default))) "*skk-display-code `$' $B$G%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8Cf$NEv3:J8;z$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) (defface skk-display-code-tankan-radical-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*skk-display-code `$' $B$G%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8Cf$NAm2h?t$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) (defface skk-display-code-tankan-annotation-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*skk-display-code `$' $B$G%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8Cf$NJ8;zL>$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) ;;; skk-list-chars (in skk-kcode.el) related. (defvar skk-list-chars-buffer-name "*skk-list-chars*" "Docstring.") (defvar skk-list-chars-original-window-configuration nil "skk-list-chars-mode $B$KF~$kA0$N(B window configuration$B!#(B `skk-list-chars-quit' $B$NuBV$KI|5"$9$k!#(B") (defvar skk-list-chars-destination-buffer nil "skk-list-chars-insert $B$NA^F~@h%P%C%U%!(B") (defvar skk-list-chars-point nil "C-x C-x (skk-list-chars-goto-point) $B$N%8%c%s%W@h(B") (defvar skk-list-chars-default-charstr nil) (defvar skk-list-chars-mode-map (let ((map (make-sparse-keymap))) (define-key map "$" 'skk-list-chars-display-code) (define-key map "w" 'skk-list-chars-copy) (define-key map "q" 'skk-list-chars-quit) (define-key map (kbd "C-x C-x") 'skk-list-chars-goto-point) (define-key map "c" 'skk-list-chars-code-input) ;; (define-key map (kbd "C-a") '$B6h$N@hF,$X(B) ;; (define-key map (kbd "C-e") '$B6h$NKvHx$X(B) ;; (define-key map "<" '$B%P%C%U%!@hF,$X(B) ;; (define-key map ">" '$B%P%C%U%!KvHx$X(B) (define-key map (kbd "C-f") 'next-completion) (define-key map "f" 'next-completion) (define-key map "l" 'next-completion) (define-key map [right] 'next-completion) (define-key map (kbd "C-b") 'previous-completion) (define-key map "b" 'previous-completion) (define-key map "h" 'previous-completion) (define-key map [left] 'previous-completion) (define-key map (kbd "C-n") 'skk-list-chars-next-line) (define-key map "n" 'skk-list-chars-next-line) (define-key map "j" 'skk-list-chars-next-line) (define-key map [down] 'skk-list-chars-next-line) (define-key map (kbd "C-p") 'skk-list-chars-previous-line) (define-key map "p" 'skk-list-chars-previous-line) (define-key map "k" 'skk-list-chars-previous-line) (define-key map [up] 'skk-list-chars-previous-line) (define-key map (kbd "RET") 'skk-list-chars-insert) (define-key map "i" 'skk-list-chars-insert) (define-key map "g" 'skk-list-chars-jump) (define-key map "o" 'skk-list-chars-other-charset) (define-key map "\\" 'skk-list-chars-other-charset) map) "Keymap used in skk-list-chars mode.") (defface skk-list-chars-face '((((class color) (type tty)) (:inherit default)) (((class color) (background light)) (:inherit default)) (((class color) (background dark)) (:inherit default)) (((class grayscale)) (:inherit default))) "*skk-list-chars $B%P%C%U%!$K$*$1$k!"L\E*J8;z$r;X$7<($9MQES$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-kcode :group 'skk-visual) (defface skk-list-chars-table-header-face '((((class color) (type tty)) (:inherit default :foreground "red")) (((class color) (background light)) (:inherit default :foreground "Firebrick")) (((class color) (background dark)) (:inherit default :foreground "chocolate1")) (((class grayscale)) (:inherit default :foreground "LightGray"))) "*skk-list-chars $B%P%C%U%!$K$*$1$k!"0lMw8+=P$7$dOH@~$KE,MQ$9$k(B face $BB0@-!#(B" :group 'skk-visual) ;;; skk-look.el related. (defcustom skk-use-look nil "*UNIX look $B%3%^%s%I$rMxMQ$7$?Jd40!&JQ49$r9T$&$+$I$&$+$r;XDj$9$k!#(B t $B$J$i$P!"Jd40;~$H1Q?t;zJQ49;~$K(B look $B$r;HMQ$9$k!#(B `completion' $B$J$i$P!"Jd40;~$@$1(B look $B$r;HMQ$9$k!#(B `conversion' $B$J$i$P!"1Q?t;zJQ49;~$@$1(B look $B$r;HMQ$9$k!#(B nil $B$J$i$P!"(Blook $B$r;HMQ$7$J$$!#(B SKK abbrev $B%b!<%I$GJd40$9$k$H!"8D?M<-=q$r8!:w$7?T$7$?8e$G!"(BUNIX look $B%3%^%s(B $B%I$K$h$k1QC18lJd40$r9T$&!#Nc$($P!"(B $B"&(Babstr (TAB) ---> $B"&(Babstract SKK abbrev $B%b!<%I$G!"!V1QJ8;z(B + $B%"%9%?%j%9%/!W$K$FJQ49$9$k$H!"(Blook $B%3%^%s%I(B $B$K$h$k[#Kf8!:w$r9T$&$3$H$,$G$-$k!#Nc$($P!"(B $B"&(Babstra* (SPC) ---> $B"'(Babstract $B$3$N>uBV$G3NDj$9$k$H!"(B`abstra*' $B$r8+=P$78l!"(B`abstract' $B$r8uJd$H$9$k%(%s%H%j(B $B$,8D?M<-=q$KDI2C$5$l$k!#(B`skk-search-excluding-word-pattern-function' $B$K$h(B $B$j!"3NDj$7$F$b$3$N$h$&$J%(%s%H%j$rDI2C$7$J$$$h$&$K@_Dj$9$k$3$H$,$G$-$k!#(B" :type '(radio (const :tag "$BJd40;~$H1Q?t;zJQ49;~$KM-8z(B" t) (const :tag "$BJd40;~$@$1M-8z(B" completion) (const :tag "$B1Q?t;zJQ49;~$@$1M-8z(B" conversion) (const :tag "$BL58z(B" nil)) :group 'skk-basic :group 'skk-look) (defcustom skk-look-command (executable-find "look") "*UNIX look $B%3%^%s%I$NL>A0!#(B" :type `(file :tag "$B%U%!%$%kL>(B" ,(or (executable-find "look") "")) :group 'skk-look) (defcustom skk-look-conversion-arguments (concat "-df %s " (cond ((file-exists-p "/usr/share/dict/words") "/usr/share/dict/words") ((file-exists-p "/usr/share/lib/dict/words") "/usr/share/lib/dict/words") ((file-exists-p "/usr/dict/words") "/usr/dict/words") (t ""))) "*look $B%3%^%s%I$,1Q?t!VJQ49!W;~$K8F$S=P$5$l$k:]$KEO$90z?t$r;XDj$9$kJQ?t!#(B $B0lHL$K(B look $B%3%^%s%I$O0J2<$N7A<0$G8F$S=P$5$l$k!#(B look [-df] [-t termchar] string [file] $B$=$l$>$l$N0UL#$K$D$$$F$O(B \\[man] look $B$r;2>H$5$l$?$$!#(B $B$3$NJQ?t$K$O!">e5-$N$h$&$JA40z?t$N$&$A(B string $B$r(B %s $B$KCV49$7$?$b$N$r;XDj$9$k!#(B $BCm0U;v9`$H$7$F!"(Blook $B%3%^%s%I$KEO$90z?t(B -d $B$H(B -f $B$K4X$7$F$O!"(B file $B$,(B $BF1$8(B $B0z?t$G(B sort $B$5$l$F$$$kI,MW$,$"$k!#Nc$($P(B look -df $B$G8!:w$9$k$H$-$O(B sort -df $B$G!"(B look -d $B$G8!:w$9$k$H$-$O(B sort -d $B$G(B sort $B$5$l$F$$$kI,MW$,$"$k!#$3$N$3$H(B $B$K4X$7$F$O(B \\[man] sort $B$b;2>H$5$l$?$$!#(B $B$b$&$R$H$D$NCm0UE@$H$7$F!"(B look $B$N:G8e$N0z?t$H$7$F(B file $B$rEO$5$J$$$H(B ($B>JN,$9$k(B $B$H(B) $B6/@)E*$K0z?t(B -d $B$H(B -f $B$N5!G=$,M-8z$K$J$k!#$b$7(B look $B$r;W$$DL$j@)8f$7$?$1$l(B $B$PE,@Z$J(B file $B$r;XDj$9$k$Y$-$G$"$k!#(B ($B@_DjNc(B) (setq skk-look-conversion-arguments \"-df %s /usr/share/dict/words\") " :type 'string :group 'skk-look) (defcustom skk-look-completion-arguments (concat "%s " (cond ((file-exists-p "/usr/share/dict/words") "/usr/share/dict/words") ((file-exists-p "/usr/share/lib/dict/words") "/usr/share/lib/dict/words") ((file-exists-p "/usr/dict/words") "/usr/dict/words") (t ""))) "*look $B%3%^%s%I$,1Q?t!VJd40!W;~$K8F$S=P$5$l$k:]$KEO$90z?t$r;XDj$9$kJQ?t!#(B look $B%3%^%s%I$K4X$7$F$OJQ?t(B `skk-look-conversion-arguments' $B$N%I%-%e%a%s%H!"(B $B5Z$S(B \\[man] look $B$r;2>H$5$l$?$$!#(B ($B@_DjNc(B) (setq skk-look-completion-arguments \"-d %s /usr/share/dict/words.case\") " :type 'string :group 'skk-look) (defcustom skk-look-recursive-search nil "*Non-nil $B$J$i$P(B look $B%3%^%s%I$,8+$D$1$?1QC18l$rJQ49%-!<$K$7$F:F8!:w$r9T$&!#(B $B:F8!:w$N7k2L!"8uJd$,8+$D$+$i$J$1$l$P!"85$N1QC18l<+?H$r8uJd$H$7$F=PNO$9$k!#(B" :type 'boolean :group 'skk-look) (defcustom skk-look-expanded-word-only t "*Non-nil $B$J$i$P(B look $B$N=PNO$KBP$9$k:F8!:w$,@.8y$7$?8uJd$N$_$rI=<($9$k!#(B `skk-look-recursive-search' $B$,(B non-nil $B$G$"$k$H$-$N$_M-8z!#(B" :type 'boolean :group 'skk-look) (defcustom skk-look-use-ispell nil "*look $B$K$h$k8!:w$N:]!"(Bispell $B$rJ;MQ$9$k$+$I$&$+$r;XDj$9$k!#(B t $B$J$i$P!"Jd40;~$H1Q?t;zJQ49;~$K(B ispell $B$rJ;MQ$9$k!#(B `completion' $B$J$i$P!"Jd40;~$@$1(B ispell $B$rJ;MQ$9$k!#(B `conversion' $B$J$i$P!"1Q?t;zJQ49;~$@$1(B ispell $B$rJ;MQ$9$k!#(B nil $B$J$i$P!"(Bispell $B$r;HMQ$7$J$$!#(B" :type '(radio (const :tag "$BJd40;~$H1Q?t;zJQ49;~$KM-8z(B" t) (const :tag "$BJd40;~$@$1M-8z(B" completion) (const :tag "$B1Q?t;zJQ49;~$@$1M-8z(B" conversion) (const :tag "$BL58z(B" nil)) :group 'skk-look) (defvar skk-look-completion-words nil) ;;;; skk-lookup.el related. (defcustom skk-lookup-search-agents nil "*$B8!:w%(!<%8%'%s%H$N@_Dj$N%j%9%H!#(B $B%j%9%H$N3FMWAG$OJN,2DG=$G!"%(!<%8%'%s%H$KBP$9$k%*%W%7%g%s$r;XDj$9$k!#(B $BNc(B: (setq skk-lookup-search-agents '((ndtp \"dserver\" :port 2010) (ndeb \"/cdrom\" :enable (\"EIWA\"))))" :type '(repeat (sexp :tag "Agent")) ; type $B$O$A$g$C$H$d$d$3$7$9$.!&!&(B :group 'skk-lookup) (defcustom skk-lookup-option-alist '(;; "[spla -> splat]" ("ispell" exact nil nil (not skk-okuri-char) ("-> \\([^ ]+\\)]$" . 1) nil nil) ;; what's this? ("jedict" exact nil nil (not skk-okuri-char) nil nil nil) ;; $BCN7CB"(B ;; `$B"'#I#M#F!N(BInternational Monetary Fund$B!?(BInternational ;; Metalworkers Federation$B!O(B' ;; `$B#I#M#F!J9q:]DL2_4p6b!K!Z(BInternational Monetary Fund$B![(B' ("CHIEZO" exact exact prefix t ("$B!J(B\\(.+\\)$B!K(B\\|$B!Z(B\\(.+\\)$B![(B$\\|$B!N(B\\(.+\\)$B!O(B$\\|^\\([^$B!J!Z!N!O![!K(B]+\\)$" . (cond ((match-beginning 1) 1) ((match-beginning 2) 2) ((match-beginning 3) 3) ((match-beginning 4) 4))) "$B!?(B\\|$B!"(B\\|, " nil) ;; $B!V<-!&E5!&HW!W(B ;; `$B$"$+#3(B $B^@(B", "ethanol' ("CHUJITEN" exact exact prefix t ("[$B#0(B-$B#9(B]* *\\([^ ]+\\)$" . 1) nil nil) ;; `($BHiIf$J$I$N(B)$B$"$+(B ", "$B!T1Q!U(B ($B%Q%$%W$J$I$N(B)$B$"$+(B ' ("COLLOC" exact exact prefix t ("\\([^ $B!T!U(B]+\\) <[a-z]+>$" . 1) nil nil) ;; $B%8!<%K%"%91QOB(B, $B%8!<%K%"%91QOB!&OB1Q<-E5(B ;; `$B$"$+(B[$B^@(B]' ;; `$B$$$l$+$((B[$BF~$lBX$((B,$BF~$l49$((B]' ("GENIUS" exact exact prefix t ;;("\\[\\(.+\\)\\]$" . 1) ;;can I use `$' for GENIUS? ("\\[\\(.+\\)\\]" . 1) "," nil) ;; Super$BE}9g<-=q(B99 Disk1, 2/$B8=BeMQ8l$N4pACCN<1(B ;; `$B"!$B0%(B' ;; `$B$@$7!Z=P$7![!Z=P$7!&!R=P=A!S![!Z!P;3$7$e$.!Z!=(B[$B!<$!(B-$B$s(B]+$B!Z!=(B\\([^$B!Z![(B]+\\)$B![(B$\\|\ \$B!Z(B\\([a-zA-Z]+\\) [$B!<%!(B-$B%s(B]+$B![(B$\\|$B!Z(B\\([^$B!Z![(B]+\\)$B![(B\\|\ ^$B!{(B\\(.+\\)$" . (cond ((match-beginning 2) '(1 2)) ((match-beginning 3) 3) ((match-beginning 4) 4) ((match-beginning 5) 5))) "$B!&(B" ;;"$B!>(B[$B!<$!(B-$B$s(B]+$B!Z!=(B\\|$B![(B$" nil) ;; KOJIEN: $B9-<-1qBh(B5$BHG(B($B4dGH(B,EPWING) ;; `$B$G$s$7!>%V%C%/!ZEE;R!=![(B' ("KOJIEN" exact exact prefix t ("^\\([^$B!Z![(B]+\\)$B!>(B[$B!<$!(B-$B$s(B]+$B!Z!=(B\\([^$B!Z![(B]+\\)$B![(B$\\|\ \$B!Z(B\\([a-zA-Z]+\\) [$B!<%!(B-$B%s(B]+$B![(B$\\|\ \$B!Z(B\\([^$B!Z![(B]+\\)$B![(B\\|\ ^[$B!<$!(B-$B$s(B]+$B!>(B\\([$B!<%!(B-$B%s(B]+\\)$B!Z(B\\([^$B!Z![(B]+\\)$B!=![(B$\\|\ ^$B!{(B\\(.+\\)$" . (cond ((match-beginning 2) '(1 2)) ((match-beginning 3) 3) ((match-beginning 4) 4) ((match-beginning 5) '(6 5)) ((match-beginning 7) 7))) "$B!&(B" ;;"$B!>(B[$B!<$!(B-$B$s(B]+$B!Z!=(B\\|$B![(B$" nil) ;; KOKUGO: $B;0>JF2(B $BF|K\8l<-E5!J8=Be9q8l!"30Mh8l!K(B ;; `$B!R(B' $B$O!"EvMQ4A;zI=$K$J$$4A;z$G!"(B`$B!T(B' $B$O!"EvMQ4A;zI=$K$O$"$k$,!"$=$N2;!"(B ;; $B71$,EvMQ4A;zI=$N2;71I=$K$J$$4A;z!#(B ("KOKUGO" exact exact prefix t ("$B!Z(B\\([^$B!Z![(B]+\\)$B![(B" . 1) "$B!&(B" "[$B!T!R(B]") ;; $B!V<-!&E5!&HW!WImB0$N%^%$%Z%G%#%"(B ;;`$BBgOB74;3(B($B;T(B)' ;;`$B%o%7%s%H%s(B(George Washington)' ;;`$B%o%7%s%H%s(B($B=#(B)' ;;`$B%o%7%s%H%s(B Washington' ;;`$B%"%$%s%7%e%?%$%s(B(Albert Einstein)' ;;`$B9aNI='(B($BD.(B)' ;;`$B%+%i%9(B ($B1((B)' ;;`$B%+%i%9(B(Maria Callas)' ("MYPAEDIA" exact exact prefix t ("\\([^ ]+\\)(.+)$\\|.+ (\\([^ ]+\\))$\\|^\\([^ ()]+\\)$" . (cond ((match-beginning 1) 1) ((match-beginning 2) 2) ((match-beginning 3) 3))) nil nil) ;; mypaedia-fpw $B$+$i@8@.$7$?(B PC Success $BHG%^%$%Z%G%#%"(B (FreePWING $B<-=q(B) ;; `$BBgOB74;3(B [$B$d$^$H$3$*$j$d$^(B] ($B;T(B)' ;; `$B%"%$%s%7%e%?%$%s(B (Albert Einstein)' ;; `$B%o%7%s%H%s(B (Washington) ($B=#(B)' ;; `$B%o%7%s%H%s(B (Washington)' ;; `$B%o%7%s%H%s(B (George Washington)' ;; `$B9aNI='(B [$B$+$i$9(B] ($BD.(B)' ;; `$B%+%i%9(B ($B1((B) [$B%+%i%9(B]' ;; `$B%+%i%9(B (Maria Callas)' ;;("MYPAEDIA" exact exact prefix t ;; ("^\\([^ ]+\\) \\[.+\\] (.+)$\\|^[^ ]+ (\\(.+\\)) \\[.+\\]$\\|\ ;; ^\\([^][() ]+\\)\\( .+\\)?$" . ;; (cond ((match-beginning 1) 1) ;; ((match-beginning 2) 2) ;; ((match-beginning 3) 3))) ;; nil nil) ;; ;; $B%K%e!<%"%s%+!<1QOB(B ;; "$B$"$+#2(B $B9$(B" ("NEWANC" exact exact prefix t ("[$B#0(B-$B#9(B]* *\\([^ ]+\\)$" . 1) nil nil) ;; what's this? ;; `$B!!$"$+(B ', ;; `$B!!!V$"$+!W(B ' ("PLUS" exact exact prefix t ("^$B!!(B\\(.+\\) <[a-z$B#0(B-$B#9(B]+>$" . 1) nil nil) ("lsd" exact exact prefix t ("^\\([^$B!L!M(B]+\\)$B!L(B.+$B!M(B$" . 1) nil nil)) "*$B<-=qKh$N8!:w!"J8;z@Z$j=P$7%*%W%7%g%s!#(B $B%j%9%H$N3FMWAG$O2<5-$NDL$j!#(B 0th: `lookup-dictionary-name' $B$,JV$9J8;zNs(B ($B<-=qL>7hDj$N8e$K8!:w$r3+;O$9$k$N$G!"Aw$j2>L>$,FCDj$G$-$k(B) $B$N(B search method $B$r<($9%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(Bnil $B$r;XDj$9$k$H!"(B $BAw$j$"$jJQ49$N:]$O$=$N<-=q$r8!:w$7$J$$!#(B 3th: $BAw$j$"$jJQ49$G!"$+$D(B `skk-process-okuri-early' $B$G$"$k$H$-(B ($BAw$j2>L>(B $B7hDj$NA0$K8!:w$r3+;O$7$F$*$j!"Aw$j2>L>$,FCDj$G$-$J$$$N$G!"Aw$j2>L>$N$+$J(B prefix $B$r=|$$$?ItJ,$r8!:w%-!<$H$7$F(B lookup $B$KEO$7$F$$$k(B) $B$N(B search method $B$r<($9(B $B%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(Bnil $B$r;XDj$9$k$HAw$j$"$jJQ49(B $B$N:]$O$=$N<-=q$r8!:w$7$J$$!#(B 4th: S $B<0!#$3$N(B S $B<0$rI>2A$7$F(B nil $B$K$J$k$H$-$O8!:w$7$J$$!#$"$k0lDj$N>r7o$rK~(B $B$7$?>l9g$K8!:w$7$J$$$h$&$K;XDj$G$-$k!#(B 5th: `lookup-entry-heading' $B$,JV$9(B heading $B$+$i8uJd$H$7$F=PNO$9$kJ8;zNs$r@Z$j(B $B=P$9$?$a$N(B regexp $B;XDj5Z$S@Z$j=P$7%*%W%7%g%s!#(B car $B$K(B regexp $B$r<($9J8;zNs!"(Bcdr $B$K(B `match-string' $B$KEO$9(B count $B$r;XDj(B $B$9$k(B (5th $B$KJ8;zNs$@$1$r;XDj$7$?>l9g$O(B `match-string' $B$K$O(B 1 $B$,(B $BEO$5$l$k(B)$B!#(B cdr $BIt$K(B S $B<0$r;XDj$9$k$3$H$b2DG=!#2<5-$N$h$&$K(B cond $B<0$G>r7oH=Dj$9$l$P(B $BJ#?t$N(B regexp $B$r(B or $B;XDj$9$k$3$H$,2DG=!#(B (cond ((match-beginning 1) 1) ((match-beginning 2) 2) ((match-beginning 3) 3) ((match-beginning 4) 4)) cdr $BIt$NI>2A7k2L$,?t;z$N%j%9%H$K$J$k$H$-$O!"$=$N?t;z$r=g$K(B match-string $B$KEO$7$FJ8;zNs$r@Z$j=P$7!"$=$l$iO"7k$7$?J8;zNs$r8uJd$H$7$FJV$9!#Nc$($P!"(B (cond ((match-beginning 5) '(6 5))) $B$H;XDj$9$k$H!"(B(match-beginning 5) $B$,(B non-nil $B$K$J$C$?>l9g!"(B (match-string 6) $B$H(B (match-string 5) $B$r$=$N=g$KO"7k$7$?J8;zNs$r8uJd$H$7(B $B$F=PNO$9$k!#(B $B@Z$j=P$5$:$KJ8;zNsA4BN$rBP>]$K$9$k$H$-$O!"(B5th $B$K(B nil $B$r;XDj$9$k!#(B 6th: $B@Z$j=P$5$l$?J8;zNs$NCf$K99$KJ#?t$N8uJd$r4^$`>l9g$N6h@Z$j$rI=$o$9(B regexp$B!#(B $BJ#?t$N8uJd$,F10l(B heading $B$NCf$K=PNO$5$l$J$$$H$-$O!"(Bnil $B$r;XDj$9$k!#(B 7th: $B@Z$j=P$5$l$?J8;zNs$+$iFCDj$NJ8;zNs$rl9g$K;XDj$9$k(B regexp$B!#(B $B<-=q$N=PNO$,<-=qFCM-$N5-9fJ8;z$r4^$`>l9g$K;XDj$9$k!#(B $B8=:_BP1~$7$F$$$k<-=qL>$O(B \"ispell\", \"jedict\", \"CHIEZO\", \"CHUJITEN\", \"COLLOC\", \"GENIUS\", \"GN99EP01\", \"GN99EP02\", \"IWAKOKU\", \"KANWA\", \"KOUJIEN\", \"KOJIEN\", \"KOKUGO\", \"MYPAEDIA\", \"NEWANC\", \"PLUS\" $B5Z$S(B \"lsd\"$B!#(B `lookup-entry-heading' $B$,<+J,$N;HMQ$9$k<-=q$+$i$I$N$h$&$JJ8;zNs$rJF2(B $B%K%e!<%;%s%A%e%j!<1QOB!&?7%/%i%&%sOB1Q<-E5(B ;; KANJIGEN: Super$BE}9g<-=q(B99 Disk2/$B4A;z8;(B : EPWING ;; RIKAGAKU: $BM}2=3X<-E5(B ;; WAEI: what's this? "*$B%G%U%)%k%H$N<-=q8!:w!"J8;z@Z$j=P$7%*%W%7%g%s!#(B $B$^$:<-=qL>$r%-!<$K$7$F(B `skk-lookup-option-alist' $B$r0z$-!"$=$3$K<-=q8!:w!"J8;z@Z(B $B$j=P$7$N%*%W%7%g%s$,8+$D$+$l$P$=$l$r;HMQ$7!"8+$D$+$i$J$+$C$?>l9g$K$3$NJQ?t$G(B $B;XDj$5$l$k<-=q8!:w!"J8;z@Z$j=P$7$N%*%W%7%g%s$r;HMQ$9$k!#(B $B%j%9%H$N3FMWAG$O2<5-$NDL$j!#(B 0th: $BAw$j$J$7JQ49$N:]$N(B search method $B$r<($9%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(B 1th: $BAw$j$"$jJQ49$G!"$+$D(B `skk-process-okuri-early' $B%*%W%7%g%s$r;XDj$7$F$$$J(B $B$$$H$-(B ($BAw$j2>L>7hDj$N8e$K8!:w$r3+;O$9$k$N$G!"Aw$j2>L>$,FCDj$G$-$k(B) $B$N(B search method $B$r<($9%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(Bnil $B$r;XDj$9$k$H!"Aw$j(B $B$"$jJQ49$N:]$O$=$N<-=q$r8!:w$7$J$$!#(B 2th: $BAw$j$"$jJQ49$G!"$+$D(B `skk-process-okuri-early' $B$G$"$k(B ($BAw$j2>L>7hDj$NA0(B $B$K8!:w$r3+;O$7$F$*$j!"Aw$j2>L>$,FCDj$G$-$J$$$N$G!"Aw$j2>L>$N$+$J(B prefix $B$r=|$$$?ItJ,$r8!:w%-!<$H$7$F(B lookup $B$KEO$7$F$$$k(B) $B$H$-$N(B search method $B$r<($9%7%s%\%k!#(Bregexp $B$O;XDjIT2D!#(Bnil $B$r;XDj$9$k$HAw$j$"$jJQ49$N:]$O$=(B $B$N<-=q$r8!:w$7$J$$!#(B 3th: S $B<0!#$3$N(B S $B<0$rI>2A$7$F(B nil $B$K$J$k$H$-$O8!:w$7$J$$!#$"$k0lDj$N>r7o$rK~(B $B$7$?>l9g$K8!:w$7$J$$$h$&$K;XDj$G$-$k!#(B 4th: `lookup-entry-heading' $B$,JV$9(B heading $B$+$i8uJd$H$7$F=PNO$9$kJ8;zNs$r@Z$j(B $B=P$9$?$a$N(B regexp $B;XDj5Z$S@Z$j=P$7%*%W%7%g%s!#(B car $B$K(B regexp $B$r<($9J8;zNs!"(Bcdr $B$K(B `match-string' $B$KEO$9(B count $B$r;XDj$9(B $B$k(B (4th $B$KJ8;zNs$@$1$r;XDj$7$?>l9g$O(B `match-string' $B$K$O(B 1 $B$,EO$5$l$k(B)$B!#(B cdr $BIt$K(B S $B<0$r;XDj$9$k$3$H$b2DG=!#2<5-$N$h$&$K(B cond $B<0$G>r7oH=Dj$9$l$P(B $BJ#?t$N(B regexp $B$r(B or $B;XDj$9$k$3$H$,2DG=!#(B (cond ((match-beginning 1) 1) ((match-beginning 2) 2) ((match-beginning 3) 3) ((match-beginning 4) 4)) cdr $BIt$NI>2A7k2L$,?t;z$N%j%9%H$K$J$k$H$-$O!"$=$N?t;z$r=g$K(B `match-string' $B$KEO$7$FJ8;zNs$r@Z$j=P$7!"$=$l$iO"7k$7$?J8;zNs$r8uJd$H$7$FJV$9!#Nc$($P!"(B (cond ((match-beginning 5) '(6 5))) $B$H;XDj$9$k$H!"(B(match-beginning 5) $B$,(B non-nil $B$K$J$C$?>l9g!"(B (match-string 6) $B$H(B (match-string 5) $B$r$=$N=g$KO"7k$7$?J8;zNs$r8uJd$H$7(B $B$F=PNO$9$k!#(B $B@Z$j=P$5$:$KJ8;zNsA4BN$rBP>]$K$9$k$H$-$O!"(B4th $B$K(B nil $B$r;XDj$9$k!#(B 5th: $B@Z$j=P$5$l$?J8;zNs$NCf$K99$KJ#?t$N8uJd$r4^$`>l9g$N6h@Z$j$rI=$o$9(B regexp$B!#(B $BJ#?t$N8uJd$,F10l(B heading $B$NCf$K=PNO$5$l$J$$$H$-$O!"(Bnil $B$r;XDj$9$k!#(B 6th: $B@Z$j=P$5$l$?J8;zNs$+$iFCDj$NJ8;zNs$rl9g$K;XDj$9$k(B regexp$B!#(B $B<-=q$N=PNO$,<-=qFCM-$N5-9fJ8;z$r4^$`>l9g$K;XDj$9$k!#(B $B$3$N%*%W%7%g%s$GBP1~$7$F$$$k<-=qL>$O!"(B\"CRCEN\", \"KANJIGEN\", \"RIKAGAKU\" $B5Z$S(B \"WAEI\". `lookup-entry-heading' $B$G$+!Z0!2J![!E%/%o(B\" \"$B$"$+!Zod2@![(B\" \"$B$3!>$7$g$&!Z>.@+!&>.@-![!E%7%d%&(B\" `lookup-entry-heading' $B$,<+J,$N;HMQ$9$k<-=q$+$i$I$N$h$&$JJ8;zNs$rL>$N2C9)J}K!$r<($9%^%8%C%/%J%s%P!<(B $B$rF~$l$?(B cons cell$B!#(B $B%^%8%C%/%J%s%P!<$O!"(B0 $B$,Aw$j$J$7$rI=$o$9(B ($BK\(B function $B$G$O;HMQ$9$k$3$H$O$J$$(B)$B!#(B 1 $B$OAw$j$"$jJQ49$G(B `skk-process-okuri-early' $B$,(B nil $B$N>l9g!#(B 2 $B$OAw$j$"$jJQ49$G(B `skk-process-okuri-early' $B$,(B non-nil $B$N>l9g$rI=$o$9!#(B $B6a$$>-Mh!"(Bskk-lookup.el $BA4BN$rDL$8$F$3$N$h$&$J%^%8%C%/%J%s%P!<$r;H$o$J$$$h$&$K(B $B2~NI$5$l$k2DG=@-$,$"$k!#(B" :type '(radio (function :tag "$B4X?t(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-lookup) (defcustom skk-lookup-kana-vector ["$B$!(B" "$B$"(B" "$B$#(B" "$B$$(B" "$B$%(B" "$B$&(B" "$B$'(B" "$B$((B" "$B$)(B" "$B$*(B" "$B$+(B" "$B$,(B" "$B$-(B" "$B$.(B" "$B$/(B" "$B$0(B" "$B$1(B" "$B$2(B" "$B$3(B" "$B$4(B" "$B$5(B" "$B$6(B" "$B$7(B" "$B$8(B" "$B$9(B" "$B$:(B" "$B$;(B" "$B$<(B" "$B$=(B" "$B$>(B" "$B$?(B" "$B$@(B" "$B$A(B" "$B$B(B" "$B$C(B" "$B$D(B" "$B$E(B" "$B$F(B" "$B$G(B" "$B$H(B" "$B$I(B" "$B$J(B" "$B$K(B" "$B$L(B" "$B$M(B" "$B$N(B" "$B$O(B" "$B$P(B" "$B$Q(B" "$B$R(B" "$B$S(B" "$B$T(B" "$B$U(B" "$B$V(B" "$B$W(B" "$B$X(B" "$B$Y(B" "$B$Z(B" "$B$[(B" "$B$\(B" "$B$](B" "$B$^(B" "$B$_(B" "$B$`(B" "$B$a(B" "$B$b(B" "$B$c(B" "$B$d(B" "$B$e(B" "$B$f(B" "$B$g(B" "$B$h(B" "$B$i(B" "$B$j(B" "$B$k(B" "$B$l(B" "$B$m(B" "$B$n(B" "$B$o(B" "$B$p(B" "$B$q(B" "$B$r(B" "$B$s(B"] "*`skk-kana-rom-vector' $B$N(B prefix $B$KBP1~$9$k$+$JJ8;z$N%Y%/%H%k!#(B $B$"$k(B prefix $B$,$I$N$+$JJ8;z$KBP1~$9$k$+$N%^%C%W$r:n$k$?$a$K;2>H$9$k!#(B" :type 'sexp :group 'skk-lookup) (defvar skk-lookup-agent-list nil) (defvar skk-lookup-default-module nil) (defvar skk-lookup-module-list nil) (defvar skk-lookup-prefix-and-kana-map nil) (defvar skk-lookup-get-content-nth-dic 0 "*$B4X?t(B `skk-lookup-get-content' $B$N=hM}BP>]$r?tCM$G;XDj$9$k(B. $B?tCM$O!V4X?t(B `skk-lookup-default-module' $B$NI>2A7k2L$N$&$A2?HVL\$N(B agent $B$r(B $B;HMQ$9$k$+!W$r!"%<%m$r5/E@$K?t$($k(B. *scratch* $B%P%C%U%!$G2A$7$F$_$k$H$h$$(B. \(let ((n 0)) (dolist (i (lookup-module-dictionaries (skk-lookup-default-module))) (insert (format \"%d %s\" n (lookup-dictionary-name i)) 10) ;10$B$O2~9T(B (setq n (1+ n)))) $B$J$*!"(BDDSKK $B$N5/F08e$KJQ?t$NCM$rJQ99$7$?>l9g$O!"(B*scratch* $B%P%C%U%!$G(B $B4X?t(B `skk-lookup-get-content-setup-dic' $B$rI>2A$9$k$3$H(B.") (defvar skk-lookup-get-content-default-dic nil) (defvar skk-lookup-get-content-default-dic-name nil) ;;; skk-num.el related. (defcustom skk-use-numeric-conversion t "*Non-nil $B$G$"$l$P!"?tCMJQ49$r9T$&!#(B" :type 'boolean :group 'skk-num) (defcustom skk-non-numeric-prog-list nil "*$B?tCMJQ49$K;H$o$J$$<-=q8!:w%W%m%0%i%`$N%j%9%H!#(B `skk-use-numeric-conversion' $B$,(B non-nil $B$N>l9g$N$_M-8z!#%j%9%H$NMWAG$H$7$F$O!"(B 1. $B%W%m%0%i%`$N4X?tL>$rI=$9%7%s%\%k(B 2. $B%W%m%0%i%`$r0z?t$NCM$^$G;XDj$7$?7A$N%j%9%H(B $B$N$$$:$l$G$b;XDj$G$-$k!#(B $BA0$N0lCW$7$?A4%W%m%0%i%`$,0lCW$HH=CG$5$l$k!#8e5Z$S(B $B$9$Y$F$N0z?t$,0lCW$7$?>l9g$N$_0lCW$HH=CG$5$l$k!#(B $B0lCW$NI>2A$O!"(B 1 $B$O4X?t(B `eq' $B$K$h$C$F!"(B 2 $B$O%j%9%H$KBP$7$F(B `equal' $B$K$h$C$F(B $B9T$o$l$k!#(B ($B@_DjNc(B) (setq skk-non-numeric-prog-list '(skk-look skk-tankan-search (skk-search-jisyo-file \"/usr/share/skk/SKK-JISYO.jinmei\" 10000))) " :type '(repeat (radio (symbol :tag "$B4X?tL>$N$_$G;XDj(B") (list :tag "$B4X?tL>$H0z?t$N%j%9%H(B"))) :group 'skk-num) (defcustom skk-show-num-type-info t "*Non-nil $B$J$i$P!"?tCMJQ49%(%s%H%j$N<-=qEPO?;~$KJQ49%?%$%W$N0FFb$rI=<($9$k!#(B" :type 'boolean :group 'skk-num) (defcustom skk-num-type-alist '((0 . identity) (1 . skk-num-jisx0208-latin) (2 . skk-num-type2-kanji) (3 . skk-num-type3-kanji) (4 . skk-num-recompute) (5 . skk-num-type5-kanji) (8 . skk-num-grouping) (9 . skk-num-shogi)) "*$B?tCM$NJQ49$N$?$a$N!"%$%s%G%/%9$HJQ49$K;HMQ$9$k4X?t$H$NO"A[%j%9%H!#(B $B4X?t(B `skk-num-exp' $B$,;2>H$7$F$$$k!#(B $B3FMWAG$O!"(B`($B%$%s%G%/%9(B . $B4X?tL>(B)' $B$H$$$&9=@.$K$J$C$F$$$k!#(B $B%$%s%G%/%9$K$O!"Nc$($P8+=P$78l$,(B \"$BJ?@.(B#1$BG/(B\" $B$N$H$-!"(B`#' $B5-9f$ND>8e$KI=<((B $B$5$l$k(B integer `1' $B$rBeF~$9$k!#(B $B%$%s%G%/%9$H4X?t$N4X78(B ($B%G%U%)%k%HCM(B) $B$O2<5-$NDL$j!#(B 0 -> $BL5JQ49(B 1 -> $BA43Q?t;z$XJQ49(B 2 -> $B4A?t;z(B ($B0L $B4A?t;z(B ($B0L $B$=$N?t;z$=$N$b$N$r%-!<$K$7$F<-=q$r:F8!:w(B 5 -> $B4A?t;z(B ($B $B7e6h@Z$j$XJQ49(B (1,234,567) 9 -> $B>-4}$G;HMQ$9$k?t;z(B (\"$B#3;M(B\" $B$J$I(B) $B$KJQ49(B" :type '(repeat (cons (radio :tag "$B%$%s%G%/%9(B" (const 0) (const 1) (const 2) (const 3) (const 4) (const 5) (const 8) (const 9)) (function :tag "$B4X?t(B"))) :group 'skk-num) (defcustom skk-num-convert-float nil "*Non-nil $B$G$"$l$P!"IbF0>.?tE@?t$r;H$C$?8+=P$78l$KBP1~$7$FJQ49$r9T$&!#(B $B$3$NCM$r(B non-nil $B$K$9$k$3$H$G!"(B\"#.# /#1$B!%(B#1/#0$B7n(B#0$BF|(B/\" $B$J$I$N<-=q8+=P$7$,;HMQ(B $B$G$-$J$/$J$k$N$G!"Cm0U!#(B" :type 'boolean :group 'skk-num) (defcustom skk-num-uniq (or (assq 4 skk-num-type-alist) (and (assq 2 skk-num-type-alist) (or (assq 3 skk-num-type-alist) (assq 5 skk-num-type-alist)))) "\ *Non-nil $B$G$"$l$P!"0[$J$k?tCMI=8=$G$bJQ497k2L$,F1$8?tCM$r=EJ#$7$F=PNO$7$J$$!#(B" :type 'boolean :group 'skk-num) (defcustom skk-num-load-hook nil "*skk-num.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-num) (defconst skk-num-alist-type1 '((?0 . "$B#0(B") (?1 . "$B#1(B") (?2 . "$B#2(B") (?3 . "$B#3(B") (?4 . "$B#4(B") (?5 . "$B#5(B") (?6 . "$B#6(B") (?7 . "$B#7(B") (?8 . "$B#8(B") (?9 . "$B#9(B") (?. . "$B!%(B") ; $B>.?tE@!#(B(?. . ".") $B$NJ}$,NI$$?M$b$$$k$+$b(B...$B!#(B (? . "")) "ascii $B?t;z$N(B char type $B$HA43Q?t;z$N(B string type $B$NO"A[%j%9%H!#(B \"1995\" -> \"$B#1#9#9#5(B\" $B$N$h$&$JJ8;zNs$XJQ49$9$k:]$KMxMQ$9$k!#(B") (defconst skk-num-alist-type2 '((?0 . "$B!;(B") (?1 . "$B0l(B") (?2 . "$BFs(B") (?3 . "$B;0(B") (?4 . "$B;M(B") (?5 . "$B8^(B") (?6 . "$BO;(B") (?7 . "$B<7(B") (?8 . "$BH,(B") (?9 . "$B6e(B") (?\ . "")) "ascii $B?t;z$N(B char type $B$H4A?t;z$N(B string type $B$NO"A[%j%9%H!#(B \"1995\" -> \"$B0l6e6e8^(B\" $B$N$h$&$JJ8;zNs$XJQ49$9$k:]$KMxMQ$9$k!#(B") (defconst skk-num-alist-type3 (append '((ju . "$B==(B") (hyaku . "$BI4(B") (sen . "$B@i(B") (man . "$BK|(B") (oku . "$B2/(B") (cho . "$BC{(B") (kei . "$B5~(B")) skk-num-alist-type2) "$B?t;z$N4A;zI=5-$rI=$9O"A[%j%9%H!#(B \"1995\" -> \"$B@i6eI46e==8^(B\" $B$N$h$&$JJ8;zNs$XJQ49$9$k:]$KMxMQ$9$k!#(B") (defconst skk-num-alist-type5 '((ju . "$B=&(B") (hyaku . "$BI4(B") (sen . "$Bot(B") (man . "$Bh_(B") (oku . "$B2/(B") (cho . "$BC{(B") (kei . "$B5~(B") (?0 . "$BNm(B") (?1 . "$B0m(B") (?2 . "$BFu(B") (?3 . "$B;2(B") (?4 . "$B;M(B") (?5 . "$B8`(B") (?6 . "$BO;(B") (?7 . "$B<7(B") (?8 . "$BH,(B") (?9 . "$B6e(B") (?\ . "")) "$B?t;z$N4A;zI=5-$rI=$9O"A[%j%9%H!#(B \"1995\" -> \"$B0mot6eI46e=&8`(B\" $B$N$h$&$JJ8;zNs$XJQ49$9$k:]$KMxMQ$9$k!#(B") (skk-deflocalvar skk-num-list nil "`skk-henkan-key' $B$NCf$K4^$^$l$k?t;z$rI=$9J8;zNs$N%j%9%H!#(B $BNc$($P!"(B\"$B"&$X$$$;$$(B7$B$M$s(B10$B$,$D(B\" $B$rJQ49$9$k$H$-!"(B`skk-henkan-key' $B$O(B \"$B$X$$$;$$(B7$B$M$s(B10$B$,$D(B\" $B$G$"$j!"(B`skk-num-list' $B$O(B (\"7\" \"10\") $B$H$J$k!#(B \(buffer local)") (defvar skk-num-recompute-key nil "#4 $B%?%$%W$N%-!<$K$h$j?tCM$N:F7W;;$r9T$C$?$H$-$N8!:w%-!Kt$O(B IP $B%"%I%l%9!#(B" :type `(radio (string :tag "$B%[%9%HL>(B" ,(or (getenv "SKKSERVER") "localhost")) (const nil)) :group 'skk-server) (defcustom skk-server-prog (getenv "SKKSERV") "*$B<-=q%5!<%P%W%m%0%i%`L>!#(B $B%U%k%Q%9$G=q$/!#(B `skk-server-inhibit-startup-server' $B$,(B nil $B$N;~$K;2>H$5$l!"(B $B$3$N%W%m%0%i%`$,(B SKK $B$h$j5/F0$5$l$k!#(B" :type '(radio (file :tag "$B<-=q%5!<%PL>(B") (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-file :group 'skk-server) (defcustom skk-server-jisyo (getenv "SKK_JISYO") "*$B<-=q%5!<%P%W%m%0%i%`$KEO$9<-=q%U%!%$%kL>!#(B $B%U%k%Q%9$G=q$/!#(B `skk-server-inhibit-startup-server' $B$,(B nil $B$N;~$K;2>H$5$l$k!#(B $B<-=q%U%!%$%k$N;XDjK!$O<-=q%5!<%P$K$h$j0[$J$k$N$GCm0U!#(B % skkserv jisyo $B$N7A<0$N;~$N$_MxMQ$G$-$k%*%W%7%g%s$G$"$k!#(B" :type `(radio (file :tag "$B<-=q%U%!%$%kL>(B" ,(or skk-aux-large-jisyo "")) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-file :group 'skk-server) (defcustom skk-server-portnum (if (eq system-type 'windows-nt) 1178 nil) "*Non-nil $B$G$"$l$P!"$=$NCM$r(B port number $B$H$7$F(B skkserv $B$H(B TCP $B@\B3$9$k!#(B /etc/services $B$rD>@\=q$-49$($k8"8B$,$J$$%f!<%6!<$N$?$a$NJQ?t!#(B Microsoft Windows $B$G$O%G%U%)%k%HCM$H$7$F(B 1178 $B$,@_Dj$5$l$k!#(B" :type '(radio (integer :tag "$B%]!<%HHV9f(B" 1178) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-server) (defcustom skk-servers-list nil "*$B<-=q%5!<%PKh$N>pJs%j%9%H!#(B $BJ#?t$N%[%9%H$GF0$$$F$$$k<-=q%5!<%P$K%"%/%;%9$G$-$k>l9g$K$O!"0J2<$N$h$&$K%j%9%H$N(B $B3FMWAG$K=g$K%[%9%HL>!"%U%k%Q%9$G$N<-=q%5!<%PL>!"<-=q%5!<%P$KEO$9<-=q%U%!%$%kL>!"(B $B<-=q%5!<%P$,;HMQ$9$k%]!<%HHV9f$r=q$-!"@_Dj$r$9$k$3$H$,$G$-$k!#(B (setq skk-servers-list '((\"host1\" \"/path/to/skkserv\" \"/path/to/SKK-JISYO.L\" 1178) (\"host2\" \"/path/to/skkserv\"))) $B$3$N>l9g!":G=i$K;XDj$7$?<-=q%5!<%P$K%"%/%;%9$G$-$J$/$J$k$H!"<+F0E*$K=gl9g$O(B nil $B$r;XDj$9$k$+!"(B $B2?$b=q$+$J$$$GNI$$!#(B $B$J$*!"%f!<%6!<<+?H$Kl9g$O!"(B (setq skk-servers-list '((\"host1\") (\"host2\"))) $B$N$h$&$K!"%[%9%HL>$@$1$r=q$/$3$H$,$G$-$k!#>e5-$N@_DjNc$G$O!"(Bhost1, host2 $B$K$*(B $B$1$k(B skkserv $B%5!<%S%9$N(B TCP $B@\B3$N3+;O$N$_;n$_!"<-=q%5!<%P$N5/F0$O;n$_$J$$!#(B" :type '(repeat (list (string :tag "$B%[%9%HL>(B") (radio :tag "$B<-=q%5!<%PL>(B" file (const :tag "$B;XDj$7$J$$(B" nil)) (radio :tag "$B<-=q%U%!%$%k(B" file (const :tag "$B;XDj$7$J$$(B" nil)) (radio :tag "$B%]!<%HHV9f(B" integer (const :tag "$B;XDj$7$J$$(B" nil)))) :group 'skk-server) (defcustom skk-server-report-response nil "*Non-nil $B$G$"$l$P!"<-=q%5!<%P$N1~Ez>u67$rJs9p$9$k!#(B $B6qBNE*$K$O!"JQ49;~$K<-=q%5!<%P$NAw=P$9$kJ8;z$r!#(B" :type 'file :group 'skk-server) (defcustom skk-server-inhibit-startup-server t "*Non-nil $B$G$"$l$P(B `call-process' $B$G$N<-=q%5!<%P5/F0$r6X;_$9$k!#(B" :type 'boolean :group 'skk-server) (defcustom skk-server-load-hook nil "*skk-server.el $B$r%m!<%I$7$?8e$K%3!<%k$5$l$k%U%C%/!#(B" :type 'hook :group 'skk-server) ;;(defvar skk-server-debug nil ;; "*Non-nil $B$G$"$l$P!"<-=q%5!<%P%W%m%0%i%`$r%G%#%P%C%0%b!<%I$G5/F0$9$k!#(B ;;$B%G%#%P%C%0!&%b!<%I$G(B skkserv $B$rAv$i$;$k$H!"$=$N$^$^(B foreground $B$GAv$j!"(B ;;$B%a%C%;!<%8$r=PNO$9$k!#%-!<%\!<%I$+$i3d$j$3$_$r$+$1$k$3$H$b$G$-$k!#(B") (defconst skkserv-working-buffer " *skkserv*") (defvar skkserv-process nil) ;;; skk-sticky related. (defcustom skk-sticky-key nil "*$BJQ493+;O0LCV$b$7$/$OAw$j3+;O0LCV$N;XDj$r$9$k%-!l9g$O(B (setq skk-sticky-key \";\") $B$N$h$&$K(B string $B$r@_Dj$7$F2<$5$$!#(B`skk-sticky-key' $B$K@_Dj$7$?J8(B $B;z$=$N$b$N$rF~NO$7$?$$>l9g$O(B2$B2sB3$1$FBG$D$HF~NO$G$-$^$9!#(B 2. $BI=<($5$l$J$$%-!<(B \"$BL5JQ49(B\" $B$N$h$&$JI=<($rH<$o$J$$%-!<$N>l9g$O(B (setq skk-sticky-key [muhenkan]) ; Windows $B4D6-$@$H(B [noconvert] $B$N$h$&$K$=$N%-!<$rI=$o$9(B vector $B$r@_Dj$7$F2<$5$$!#(B 3. $BF1;~BG80(B 2$B$D$N%-!<$rF1;~$KBG80$9$k$3$H$G$bJQ490LCV$r;XDj$G$-$^$9!#Nc$($P(B \"f\" $B$H(B \"j\" $B$NF1;~BG80$G;XDj$9$k>l9g$O(B (setq skk-sticky-key '(?f ?j)) $B$N$h$&$K(B character $B$N%j%9%H$r@_Dj$7$F2<$5$$!#(B" :type '(radio (string :tag "$BI=<(2DG=$J%-!<(B") (vector :tag "$BI=<($5$l$J$$%-!<(B" symbol) (list :tag "$BF1;~BG80(B" character character) (const :tag "$B;XDj$7$J$$(B" nil)) :group 'skk-sticky) (defcustom skk-sticky-double-interval 0.1 "*$B$3$N;~4V0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B $BC10L$OIC!#%G%U%)%k%H$O(B 0.1 $BIC!#(B" :type 'number :group 'skk-sticky) ;;; skk-study.el related. (defcustom skk-study-file (if skk-user-directory (expand-file-name "study" skk-user-directory) (convert-standard-filename "~/.skk-study")) "*$B3X=,7k2L$rJ]B8$9$k%U%!%$%k!#(B" :type 'file :group 'skk-study) (defcustom skk-study-backup-file (if skk-user-directory (expand-file-name "study.bak" skk-user-directory) (convert-standard-filename "~/.skk-study.BAK")) "*$B3X=,7k2L$rJ]B8$9$k%U%!%$%k$N%P%C%/%"%C%W!#(B" :type 'file :group 'skk-study) (defcustom skk-study-associates-number 5 "*$BJ]B8$9$k4XO"8l$N?t!#(B" :type 'integer :group 'skk-study) (defcustom skk-study-sort-saving nil "*Non-nil $B$G$"$l$P3X=,7k2L$r%=!<%H$7$F%;!<%V$9$k!#(B" :type 'boolean :group 'skk-study) (defcustom skk-study-check-alist-format nil "*Non-nil $B$G$"$l$P!"3X=,7k2L$NFI$_9~$_;~$KO"A[%j%9%H$N%U%)!<%^%C%H$r%A%'%C%/$9$k!#(B" :type 'boolean :group 'skk-study) (defcustom skk-study-search-times 5 "*$B8=:_$NJQ49%-!<$KBP$9$k4XO"JQ49%-!<$r$$$/$D$^$GAL$C$F8!:w$9$k$+!#(B" :type 'integer :group 'skk-study) (defcustom skk-study-first-candidate t "*Non-nil $B$G$"$l$P!"Bh0l8uJd$G3NDj$7$?:]$b3X=,$9$k!#(B" :type 'boolean :group 'skk-study) (defcustom skk-study-max-distance 30 "*$BD>A0$K3NDj$7$?%]%$%s%H$H:#2s$NJQ49%]%$%s%H$,$3$N5wN%0J>eN%$l$F$$$k$H3X=,$7$J$$!#(B nil $B$N>l9g$OD>A0$K3NDj$7$?%]%$%s%H$H$N5wN%$r9MN8$;$:$K3X=,$9$k!#(B" :type '(radio integer (const nil)) :group 'skk-study) ;;; system internal variables and constants. ;; global variable (defconst skk-study-file-format-version "0.2") (defvar skk-kakutei-end-function nil) (defvar skk-study-alist nil) (defvar skk-study-data-ring nil "$BD>A0$N(B `skk-study-search-times' $B8DJ,$NJQ49%-!<$H3NDj8l%G!<%?!#(B ring.el $B$rMxMQ$7$F$*$j!"6qBNE*$K$O!"2<5-$N$h$&$J9=B$$K$J$C$F$$$k!#(B \(2 3 . [\(\"$B$3$&$>$&(B\" . \"$B9=B$(B\"\)\ \(\"$B$0$?$$$F$-(B\" . \"$B6qBNE*(B\"\) \(\"$B$+$-(B\" . \"$B2<5-(B\"\)]\)") (defvar skk-study-last-save nil) (defvar skk-study-last-read nil) ;;; skk-tankan.el related. (defcustom skk-tankan-search-key ?@ "*$BC14A;zJQ49$r9T$&%-!<%-%c%i%/%?!#(B" :type 'character :group 'skk-jisx0213 :group 'skk-tankan) ;;; $BJ8;z=89g$NJ8;z$KBP$7$F(B ($BIte$H(B XEmacs 21.5 $B0J>e$GF0:n$9$k!#(B XEmacs 21.4 $B$G$O%(%i!<$K$J$i$J$$$+$b$7$l$J$$$,!"6K$a$FIT40A4$JF0:n$7$+$7$J$$!#(B" :type 'boolean :group 'skk-basic :group 'skk-tooltip) (defcustom skk-tooltip-hide-delay 1000 "*tooltip $B$r;H$C$F8uJd$J$II=<($9$k>l9g$K!"I=<($9$k;~4V(B ($BIC(B)$B!#(B $B$3$N;~4V$,7P2a$9$k$H<+F0E*$K(B tooltip $B$O>C$($k!#(B" :type 'integer :group 'skk-tooltip) (defcustom skk-tooltip-face nil "*$B%D!<%k%F%#%C%W$KI=<($9$kJ8;zNs$KE,MQ$9$k%U%'%$%9$r;XDj$9$kJQ?t!#(B $B8uJdJ8;zNs$N%U%'%$%9B0@-!J(B`skk-treat-candidate-appearance-function' $B$K$h$k(B $B2C9)$J$I!K$r$=$N$^$^;H$$$?$$>l9g$O(B nil $B$K@_Dj$9$k!#(B ($B@_DjNc(B) (setq skk-tooltip-face 'font-lock-doc-face)" :type '(radio (face :tag "$B%U%'%$%9$r;XDj(B" tooltip) (const :tag "$B8uJdJ8;zNs$N%U%'%$%9B0@-$r$=$N$^$^;HMQ(B" nil)) :group 'skk-henkan :group 'skk-tooltip) (defcustom skk-tooltip-parameters nil "*tooltip $B$r;H$&>l9g$N(B SKK $BFH<+$N(B tooltip $B%U%l!<%`%Q%i%a!<%?@_Dj!#(B ($B@_DjNc(B) (setq skk-tooltip-parameters '((foreground-color . \"navy blue\") (background-color . \"alice blue\") (border-color . \"royal blue\") (border-width . 1))) " :type '(radio (const :tag "$B@_DjNc$r;n$9(B" ((foreground-color . "navy blue") (background-color . "alice blue") (border-color . "royal blue") (border-width . 1))) (repeat :tag "$BG$0U$N@_Dj(B" (cons (symbol :tag "$B%Q%i%a!<%?L>(B") (sexp :tag "$BCM(B (S$B<0(B)")))) :group 'skk-tooltip) (defcustom skk-tooltip-mouse-behavior (cond ((featurep 'xemacs) 'banish) (t 'banish)) "*Tooltip $B$rI=<($9$k>l9g$N!"%^%&%9%]%$%s%?$N5sF0!#(B `follow' $B$J$i$P(B tip $B$N0LCV$K0\F0$9$k!#(B `avoid' $B$J$i$P!"%&%#%s%I%&$NC<$KB`Hr$9$k!#(B `avoid-maybe' $B$J$i$P!"%&%#%s%I%&>e$K$"$k%^%&%9%]%$%s%?$N$_B`Hr$9$k!#(B `banish' $B$J$i$P!"%&%#%s%I%&$NC<$KB`Hr$7$?$^$^5"$C$F$3$J$$!#(B `nil' $B$J$i$P!"B`Hr$7$J$$!#$3$N>l9g!"(Btip $B$N%F%-%9%H$H%^%&%9%]%$%s%?$,(B $B=E$J$C$?$j!"$&$^$/(B tip $B$,I=<($G$-$J$+$C$?$j$9$k$N$GCm0U!#(B $B$3$N5!G=$O(B GNU Emacs 22 $B0J>e$+(B XEmacs 21.5 $B0J>e$GF0:n$9$k!#(B" :type '(radio (const :tag "Tip $B$K=>$&(B" follow) (const :tag "$B%&%#%s%I%&$NC<$KF($2$k(B" avoid) (const :tag "$BF($2$?$[$&$,$h$5$=$&$J$H$-$@$1F($2$k(B" avoid-maybe) (const :tag "$BF($2$?$^$^5"$i$J$$(B" banish) (const :tag "$B5o:B$k(B" nil)) :group 'skk-tooltip) (defcustom skk-tooltip-x-offset (if (featurep 'xemacs) 0 (/ (1+ (frame-char-height)) 2)) "*Tooltip $B$NI=<(0LCV$r1&$K$:$i$9%T%/%;%k?t!#(B $BIi$N@0?t$r;XDj$9$k$H:8$K$:$l$k!#(B" :type 'integer :group 'skk-tooltip) (defcustom skk-tooltip-y-offset 0 "*Tooltip $B$NI=<(0LCV$r2<$K$:$i$9%T%/%;%k?t!#(B $BIi$N@0?t$r;XDj$9$k$H>e$K$:$l$k!#(B" :type 'integer :group 'skk-tooltip) (defcustom skk-tooltip-function (lambda (tooltip-str) (skk-tooltip-show-at-point tooltip-str 'listing)) "*Tip $BIA2h5!9=$N4X?t$r;XDj$9$k!#(B $B%G%U%)%k%H$G$O(B Emacs $BI8=`$N(B Tooltip $B$r;HMQ$9$k!#(B $BB>$N(B Tip $BIA2h5!9=(B $B$G$"$k(B pos-tip $B$d(B popup-tip $B$b;XDj$G$-$k!#(B" :type 'function :group 'skk-tooltip) ;;; skk-tut.el related. (defcustom skk-tut-file (cond ((featurep 'xemacs) (or (locate-data-file "SKK.tut") "/usr/local/share/skk/SKK.tut")) ((fboundp 'locate-file) (or (locate-file "skk/SKK.tut" (list (expand-file-name "../../.." data-directory))) (locate-file "skk/SKK.tut" (list data-directory)) "/usr/local/share/skk/SKK.tut")) (t "/usr/local/share/skk/SKK.tut")) "*SKK $BF|K\8l%A%e!<%H%j%"%k$N%U%!%$%kL>(B ($B%Q%9$r4^$`(B)$B!#(B" :type 'file :group 'skk-tut) (defcustom skk-tut-lang "Japanese" "*SKK $B%A%e!<%H%j%"%k$GMQ$$$k8@8l!#(B \\[universal-argument] \\[skk-tutorial] $B$K$h$k8@8l;XDj$O!"$3$NJQ?t$h$j$bM%@h(B $B$9$k!#(B" :type '(radio (string "Japanese") (string "English")) :set (lambda (symbol value) (prog1 (if (fboundp 'custom-set-default) (custom-set-default symbol value) (set-default symbol value)) (setq skk-tut-current-lang nil))) :group 'skk-tut) (defvar skk-tut-file-suffix-alist `(("Japanese" . "") ("English" . ".E")) "Alist of (LANGUAGE . suffix) pairs. For example, if filename of the Japanese version is \"SKK.tut\", then filename of the English version will be \"SKK.tut.E\".") (defvar skk-tut-current-lang nil) (defcustom skk-tut-use-face skk-use-face "*Non-nil $B$G$"$l$P!"%A%e!<%H%j%"%k$G(B face $B$rMxMQ$7$FI=<($9$k!#(B" :type 'boolean :group 'skk-tut) (defface skk-tut-section-face '((((class color) (background light)) (:foreground "yellow" :background "dodgerblue")) (((class color) (background dark)) (:foreground "yellow" :background "slateblue")) (((class grayscale)) (:bold t) (:italic t))) "*$B%A%e!<%H%j%"%kCf$N%;%/%7%g%s$NI=<(ItJ,$N(B face$B!#(B" :group 'skk-tut) (defface skk-tut-do-it-face '((((class color) (background light)) (:foreground "DarkGoldenrod")) (((class color) (background dark)) (:foreground "LightGoldenrod")) (((class grayscale)) (:bold t))) "*$B%A%e!<%H%j%"%kCf$N;X<(9`L\$NI=<(ItJ,$N(B face$B!#(B" :group 'skk-tut) (defface skk-tut-question-face '((((class color) (background light)) (:foreground "Blue")) (((class color) (background dark)) (:foreground "LightSkyBlue")) (((class grayscale)) (:underline t))) "*$B%A%e!<%H%j%"%kCf$NLdBj$NI=<(ItJ,$N(B face$B!#(B" :group 'skk-tut) (defface skk-tut-key-bind-face '((((class color) (background light)) (:foreground "Firebrick")) (((class color) (background dark)) (:foreground "OrangeRed")) (((class grayscale)) (:bold t))) "*$B%A%e!<%H%j%"%kCf$N%-!<%P%$%s%I$NI=<(ItJ,$N(B face$B!#(B" :group 'skk-tut) (defface skk-tut-hint-face '((((class color) (background light)) (:foreground "CadetBlue")) (((class color) (background dark)) (:foreground "Aquamarine")) (((class grayscale)) (:italic t))) "*$B%A%e!<%H%j%"%kCf$N%R%s%H$NI=<(ItJ,$N(B face$B!#(B $B8=:_$N$H$3$m!"(BSKK.tut.E $B$G$7$+;HMQ$5$l$F$$$J$$!#(B" :group 'skk-tut) ;;; skk-show-mode.el related. (defvar skk-show-mode-invoked nil) (defvar skk-show-mode-functions '((inline . skk-show-mode-inline) (tooltip . skk-show-mode-tooltip))) (defcustom skk-show-mode-show nil "*Non-nil $B$G$"$l$P!"$+$J%b!<%I$d%"%9%-!<%b!<%I$X@Z$jBX$o$C$?$H$-$K%+!<%=%kIU6a$K(B skk-*-mode-string $B$rI=<($9$k!#(B $BI=<(%9%?%$%k$O(B `skk-show-mode-style' $B$G;XDj$9$k!#(B" :type 'boolean :group 'skk-visual) (defcustom skk-show-mode-style 'inline "*skk-show-mode $B$NI=<(%9%?%$%k!#(B" :type '(radio (const :tag "tooltip" tooltip) (const :tag "inline" inline)) :group 'skk-visual) (defvar skk-show-mode-inline-overlays nil "$BFbIt%9%?%C%/MQ(B") (defface skk-show-mode-inline-face '((((class color) (type tty)) (:inherit default :background "gray")) (((class color) (background light)) (:inherit default :background "gray")) (((class color) (background dark)) (:inherit default :background "dark slate gray" :box t)) (((class grayscale)) (:inherit default))) "*inline $B8~$1$NGX7J?'(B" :group 'skk-visual) ;; XXX workaround ;; face $B$N(B property $B$,0lIt$N>u67$GH?1G$5$l$J$$$3$H$KBP=h(B (when (and (not noninteractive) window-system) (dolist (f '(skk-tut-section-face skk-tut-section-face skk-tut-do-it-face skk-tut-question-face skk-tut-key-bind-face skk-tut-hint-face)) (set-face-foreground f (face-foreground f)))) ;;; skk-viper.el related. (defcustom skk-use-viper nil "*Non-nil $B$G$"$l$P!"(BVIPER $B$KBP1~$9$k!#(B" :type 'boolean :group 'skk-viper) (defvar skk-viper-saved-cursor-color (when (and (featurep 'viper) (boundp 'viper-insert-state-cursor-color)) (symbol-value 'viper-insert-state-cursor-color))) (make-variable-buffer-local 'viper-insert-state-cursor-color) (defconst skk-viper-use-vip-prefix (not (fboundp 'viper-normalize-minor-mode-map-alist))) (defconst skk-viper-normalize-map-function (if skk-viper-use-vip-prefix 'vip-normalize-minor-mode-map-alist 'viper-normalize-minor-mode-map-alist) "Viper $B$,(B `minor-mode-map-alist' $B$rD4@0$9$k$?$a$N4X?t!#(B") (provide 'skk-vars) ;;; skk-vars.el ends here ddskk-15.1.54/skk-server.el0000664000076600007660000002562211656053065015073 0ustar brutusbrutus;;; skk-server.el --- $B<-=q%5!<%P$N$?$a$N%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, ;; 1997, 1998, 1999, 2000, 2001 ;; Masahiko Sato ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk-server.el,v 1.54 2011/11/07 22:05:41 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2011/11/07 22:05:41 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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 versions 2, or ;; (at your option) any later version. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (defun skk-server-live-p (&optional process) "Return t if PROCESS is alive. When PROCESS is nil, check `skkserv-process' instead." (unless process (setq process skkserv-process)) (and process (eq (process-status process) 'open))) ;;;###autoload (defun skk-server-version () "Return version information of SKK server. When called interactively, print version information." (interactive) (cond ((skk-called-interactively-p 'interactive) (message "%s" (skk-server-version))) ((not (or skk-server-host skk-servers-list)) (skk-error "$B<-=q%5!<%P$N%[%9%H>pJs$,$"$j$^$;$s(B" "Lack of host information of SKK server")) ((skk-server-live-p (skk-open-server)) (let (v) (save-match-data (with-current-buffer skkserv-working-buffer (erase-buffer) ;; $B<-=q%5!<%P$N%P!<%8%g%s$rF@$k!#(B (process-send-string skkserv-process "2") (while (eq (buffer-size) 0) (accept-process-output)) (setq v (buffer-string)) (erase-buffer) ;; $B%[%9%HL>$rF@$k!#(B (process-send-string skkserv-process "3") (while (eq (buffer-size) 0) (accept-process-output)) (goto-char (point-min)) (format (concat "SKK SERVER version %s" (if skk-japanese-message-and-error "($B%[%9%HL>(B %s)" "running on HOST %s")) v (prog1 (buffer-string) (erase-buffer))))))))) ;;;###autoload (defun skk-search-server-1 (file limit) "`skk-search-server' $B$N%5%V%k!<%A%s!#(B" (let ((key (if skk-use-numeric-conversion (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) ;; $B%P%C%U%!%m!<%+%kCM$N$N0l;~JQ?t$K]$,3NG'$G$-$k!#(B ;; $B0J2<$NBP:v$G$[$\2sHr$G$-$kLOMM!#(B (sit-for 0.01) ;; (setq count (1+ count)) (when (> (buffer-size) 0) (if (eq (char-after 1) ?1) ;?1 ;; found key successfully, so check if a whole line ;; is received. (when (eq (char-after (1- (point-max))) ?\n) ;?\n (setq cont nil)) ;; not found or error, so exit (setq cont nil)))) (goto-char (point-min)) (when skk-server-report-response (skk-message "$B<-=q%5!<%P$N1~Ez$r(B %d $B2sBT$A$^$7$?(B" "Waited for server response %d times" count)) (when (eq (following-char) ?1) ;?1 (forward-char 2) (setq l (skk-compute-henkan-lists okurigana)) (when l (cond ((and okurigana skk-henkan-okuri-strictly) ;; $BAw$j2>L>$,F10l$N%(%s%H%j$N$_$rJV$9!#(B (nth 2 l)) ((and okurigana skk-henkan-strict-okuri-precedence) (skk-nunion (nth 2 l) (car l))) (t (car l)))))))) (t ;; server is not active, so search file instead (when (and (stringp file) (file-readable-p file)) (skk-search-jisyo-file file limit)))))) (defun skk-open-server () "$B<-=q%5!<%P$H@\B3$9$k!#%5!<%P!<%W%m%;%9$rJV$9!#(B" (unless (skk-server-live-p) (setq skkserv-process (skk-open-server-1)) (when (skk-server-live-p) (let ((code (cdr (assoc "euc" skk-coding-system-alist)))) (set-process-coding-system skkserv-process code code)))) skkserv-process) (defun skk-open-server-1 () "`skk-open-server' $B$N%5%V%k!<%A%s!#(B skkserv $B%5!<%S%9$r%*!<%W%s$G$-$?$i(B process $B$rJV$9!#(B" (let* ((host (or skk-server-host (getenv "SKKSERVER"))) (prog (or skk-server-prog (getenv "SKKSERV"))) (jisyo (or skk-server-jisyo (getenv "SKK_JISYO"))) (port skk-server-portnum) ;; skk-server-host $B$N>pJs$r(B skk-servers-list $B$KH?1G$9$k(B (list (cond ((null skk-servers-list) (if host (list (list host prog jisyo port)) (setq skk-server-prog nil))) ((and host (not (assoc host skk-servers-list))) ;; skk-servers-list $B$K(B host $B$,F~$C$F$$$J$$>l9g(B (cons (list host prog jisyo port) skk-servers-list)) (t skk-servers-list))) elt process) ;; (while (and (not (skk-server-live-p process)) list) ;; $B%5!<%S%9$,MxMQ2DG=$G$J$$%[%9%H$N>pJs$O(B skk-servers-list $B$+$i>C$9(B (setq skk-servers-list list elt (car list) process (or (skk-open-network-stream (car elt) (nth 3 elt)) ;; $B%5!<%S%9$,MxMQ2DG=$G$J$$>l9g$O%5!<%S%9$r5/F0(B ;; $B$G$-$k$+$I$&$+;n$_$k(B (if (not skk-server-inhibit-startup-server) (apply #'skk-startup-server elt) nil)) list (cdr list))) ;; (unless (skk-server-live-p process) ;; clear skk-server-host to disable server search in this session (setq skk-server-host nil skk-server-prog nil skk-servers-list nil)) ;; $B4D6-JQ?t(B SKKSERVER $B$r(B clear $B$7$F:FEY$NLd$$9g$o$;$rKI$0!#(B (setenv "SKKSERVER" nil t) ;; process)) (defun skk-open-network-stream (&optional host port) "HOST $B$K;XDj$5$l$?%[%9%H$K$*$1$k(B skkserv $B%5!<%S%9$N(B TCP $B@\B3$r%*!<%W%s$9$k!#(B HOST $B$,(B nil $B$J$i$P(B `skk-server-host' $B$r;2>H$9$k!#(B $B%W%m%;%9$rJV$9!#(B" (ignore-errors (let ((process (open-network-stream "skkservd" skkserv-working-buffer (or host skk-server-host) (or port "skkserv")))) (skk-process-kill-without-query process) process))) (defun skk-startup-server (host prog jisyo port) "HOST $B$N(B skkserv $B$rD>@\5/F0$9$k!#(B $B5/F08e$=$N%5!<%S%9$K@\B3$r;n$_$k!#@\B3$G$-$?>l9g$O%W%m%;%9$rJV$9!#(B" (when (and host prog) (let (;;(msgbuff (get-buffer-create " *skkserv-msg*")) (count 7) arg process) ;; skkserv $B$KM?$($k0z?t$r@_Dj$9$k!#(B ;; skkserv $B$N5/F0%*%W%7%g%s$O2<5-$NDL$j!#(B ;; skkserv [-d] [-p NNNN] [JISHO] ;; `-d' $B%G%#%P%C%0!&%b!<%I(B ;; `-p NNNN' $BDL?.MQ$N%]!<%HHV9f$H$7$F(BNNNN$B$r;H$&(B. ;; `~/JISYO' ~/JISYO$B$r<-=q$H$7$FMxMQ(B. (when jisyo ;; skkserv $B$O0z?t$K<-=q$,;XDj$5$l$F$$$J$1$l$P!"(BDEFAULT_JISYO $B$r(B ;; $B;2>H$9$k!#(B (setq arg (list jisyo))) ;;(if skk-server-debug ;; (setq arg (cons "-d" arg))) (when port (setq arg (nconc (list "-p" (number-to-string port)) arg))) ;; skkserv $B$N5/F0%H%i%$%"%k$r7+$jJV$9(B...? (while (> count 0) (skk-message "%s $B$N<-=q%5!<%P$,5/F0$7$F$$$^$;$s!#5/F0$7$^$9(B%s" "SKK SERVER on %s is not active, I will activate it%s" host (make-string count ?.)) (if (or (string= host (system-name)) (string= host "localhost")) ;; server host is local machine (apply 'call-process prog nil ;;msgbuff 0 nil arg) (apply 'call-process skk-server-remote-shell-program nil ;; 0 $B$K$7$F%5%V%W%m%;%9$N=*N;$rBT$C$F$O$$$1$J$$M}M3$,$"$k!)(B ;; $B$J$1$l$P(B msgbuf $B$K%(%i!<=PNO$rl9g$O$3$N(B while $B%k!<%W<+?H$,$$$i$J$$!)(B ;; msgbuff 0 nil host prog arg)) (sleep-for 3) (if (and (setq process (skk-open-network-stream host port)) (skk-server-live-p process)) (setq count 0) (setq count (1- count)))) ;; (cond ((skk-server-live-p process) (skk-message "$B%[%9%H(B %s $B$N<-=q%5!<%P$,5/F0$7$^$7$?(B" "SKK SERVER on %s is active now" skk-server-host) (sit-for 1) ;; process $B$rJV$jCM$H$9$k(B process) (t (skk-message "%s $B$N<-=q%5!<%P$r5/F0$9$k$3$H$,$G$-$^$;$s$G$7$?(B" "Could not activate SKK SERVER on %s" skk-server-host) (sit-for 1) (ding) nil))))) ;;;###autoload (defun skk-adjust-search-prog-list-for-server-search (&optional non-del) "$BJQ?t(B `skk-search-prog-list' $B$rD4@0$9$k!#(B `skk-server-host' $B$b$7$/$O(B `skk-servers-list' $B$,(B nil $B$G$"$l$P!"(B `skk-search-prog-list' $B$+$i(B `skk-search-server' $B$r(B car $B$K;}$D%j%9%H$r>C$9!#(B non-nil $B$G$"$l$P!"2C$($k!#(B" (when (and (or skk-server-host skk-servers-list) (not (assq 'skk-search-server (default-value 'skk-search-prog-list)))) ;; skk-search-prog-list $B$,(B nil $B$H$$$&$3$H$O$^$:$J$$$@$m$&$,!"G0$N$?(B ;; $B$a!"(Bsetq $B$7$F$*$/!#(B (setq-default skk-search-prog-list ;; $BKvHx$KIU$1$k!#KvHx$K$O(B (skk-okuri-search) $B$r;}$C$F$-$?$$?M(B ;; $B$b$$$k$+$b!#%*%W%7%g%s$GIU$1$k>l=j$rJQ99$9$k$h$&$K$7$?J}$,(B ;; $BNI$$!)(B (nconc (default-value 'skk-search-prog-list) (list '(skk-search-server skk-aux-large-jisyo 10000)))))) ;;;###autoload (defun skk-disconnect-server () "$B<-=q%5!<%P$r@Z$jN%$9!#(B" (when (and skk-server-host (skk-server-live-p)) ;; disconnect server (process-send-string skkserv-process "0") ;; Workaround is needed for NTEmacs. It cannot receive output from ;; a server at least in noninteractive mode. (unless (and (eq system-type 'windows-nt) (not (featurep 'meadow)) noninteractive) (accept-process-output skkserv-process)))) ;;(add-hook 'skk-mode-hook 'skk-adjust-search-prog-list-for-server-search) (add-hook 'kill-emacs-hook 'skk-disconnect-server) (run-hooks 'skk-server-load-hook) (provide 'skk-server) ;;; skk-server.el ends here ddskk-15.1.54/make1.bat0000775000076600007660000000373511413770637014151 0ustar brutusbrutusecho off rem MAKE1.BAT for SKK. rem Copyright (C) 1999 Yuh Ohmura, mailto:yutopia@t3.rim.or.jp rem rem Author: Yuh Ohmura, mailto:yutopia@t3.rim.or.jp rem Maintainer: SKK Development Team mailto:skk@ring.gr.jp rem Version: $Id: make1.bat,v 1.8 2010/07/04 02:27:43 skk-cvs Exp $ rem Created: March 23, 1999 rem Last Modified: $Date: 2010/07/04 02:27:43 $ rem --- argument rem --- elc : byte compile rem --- all, install : install rem --- info : generate info file rem --- install-info : install info file rem --- clean : cleaning garbage file rem --- what-where : print where to install rem --- rem --- check calling from makeit.bat if not "%SUBMAKEOK%"=="OK" goto prnusage set SUBMAKEOK= rem argument check set arg1=%1 if "%arg1%"=="elc" goto compile if "%arg1%"=="all" goto install if "%arg1%"=="install" goto install if "%arg1%"=="info" goto info if "%arg1%"=="install-info" goto installinfo if "%arg1%"=="what-where" goto listing if "%arg1%"=="clean" goto clean echo Unrecognized argument: specify either 'elc', 'all', echo 'install', 'info', 'install-info', 'clean' or 'what-where'. goto pauseend :compile %EMACS% -batch -q -no-site-file -l SKK-MK -f SKK-MK-compile goto end :install %EMACS% -batch -q -no-site-file -l SKK-MK -f SKK-MK-install goto end :info %EMACS% -batch -q -no-site-file -l SKK-MK -f SKK-MK-compile-info goto end :installinfo %EMACS% -batch -q -no-site-file -l SKK-MK -f SKK-MK-install-info goto end :listing %EMACS% -batch -q -no-site-file -l SKK-MK -f SKK-MK-what-where goto end :clean del leim-list.el skk-autoloads.el skk-setup.el auto-autoloads.el custom-load.el *.elc doc\skk.info* *~ goto end rem --- This file should not be executed by itself. Use makeit.bat. :prnusage echo This file should not be executed by itself. Use makeit.bat. rem --- If error occurs, stay display until any key is typed. :pauseend echo Type any key when you're done reading the error message. pause :end  ddskk-15.1.54/ChangeLog.2.daredevil0000664000076600007660000027633111675101126016323 0ustar brutusbrutus2000-10-31 Mikio Nakajima * doc/skk-faq.texi: Sync up with maintrunk. * doc/skk.texi: Ditto. 2000-10-30 Mikio Nakajima * skk-vars.el (skk-lookup-option-alist): Use "MYPAEDIA" spec of $B!V<-!&E5!&HW!W(B version MYPAEDIA. * skk-annotation.el (skk-nunion): New advice. 2000-10-29 Mikio Nakajima * skk-vars.el (skk-lookup-option-alist): Doc updated. Created new element "CHIEZO". Specified 7th element of "IWAKOKU" in order to remove "$B!R(B", "$B!S(B", "$B!P(B", "$B!Q(B", "( and ")". Specified 5th element of "MYPAEDIA" in order to pick up necessary strings between parens and/or blackets. (skk-lookup-default-option-list): Doc updated. * experimental/skk-annotation.el (skk-annotation-add): Bug fixed. * experimental/skk-annotation.el (skk-annotation-mode-map): Change key bind skk-annotation-quit to "\C-c\C-k". (skk-annotation-add): Document updated. Use `skk-annotation-setup'. (skk-annotation-quit): Call `kill-buffer'. Rename to `skk-annotation-kill'. (skk-annotation-quote): Use `skk-annotation-setup'. (skk-annotation-remove): Use `skk-annotation-setup'. Abolish optional argument NO-PREVIOUS-ANNOTATION. (skk-annotation-setup): New function. * skk-vars.el (skk-annotation-annotated-word): New internal variable. 2000-10-28 Mikio Nakajima * experimental/skk-annotation.el (skk-annotation-quit): New function. (skk-annotation-add): Bug fixed. Put out skk-annotation-quit key bind, too. (skk-annotation-last-word-1): Bug fixed. (skk-annotation-remove): Do not change END to marker. (skk-annotation-save-and-quit): Ditto. (skk-annotation-show-message): Do not insert ANNOTATION. Do not sit for a second. (skk-annotation-last-word-1): Call FUNCTION all okuri ari candidates that are the same word and has different okurigana. Set BEG and END markers respectively and set such markers to nil after FUNCTION is called. * skk-vars.el (skk-annotation): New group. (skk-annotation-buffer): New internal constants. (skk-annotation-function): New user variable. (skk-annotation-mode-hook): Ditto. (skk-annotation-show-message): New user option. (skk-annotation-mode-map): New keymap. (skk-annotation-original-window-configuration): New internal variable. (skk-annotation-mode): Ditto. * experimental/skk-annotation.el: Require `skk-macs' and `skk-vars'. (skk-annotation-insert): New inline function. (skk-annotation-quote-1): Ditto. (skk-annotation-show): Rename to `skk-annotation-show-buffer'. (skk-annotation-show): New function. (skk-annotation-show-1): Ditto. (skk-annotation-show-message): Ditto. (skk-annotation-last-word-1): Ditto. (skk-annotation-add): New command. (skk-annotation-save-and-quit): Ditto. (skk-annotation-remove): Ditto. (skk-annotation-quote): Ditto. 2000-10-27 Mikio Nakajima * SKK-MK (SKK_MODULES): Add skk-annotation. * skk-vars.el (skk-show-annotation): New user option. * skk-jisx0213.el: Require `skk-macs' and `skk-vars'. * skk.el (skk-quote-char): Quote ";". (skk-insert-new-word): Divide WORD into two pieace, real WORD and ANNOTATION and call `skk-annotation-show' if `skk-show-annotation' is non-nil. * experimental/skk-annotation.el: New experimental program. 2000-10-26 Tetsuo Tsukamoto * READMEs/FAQ.txt (Emacs 20 $B$K(B SKK 9.6 $B$,%$%s%9%H!<%k$G$-$^$;$s!#(B, $BA4$/4A;z$,=P$F$-$^$;$s!#(B, $B%A%e!<%H%j%"%k$,5/F0$G$-$^$;$s!#(B, $B%9%Z!<(B $B%9$r2!$7$F$bJQ49$G$-$^$;$s!#(B): New questions. * READMEs/NEWS: Add description. * missing, mkinstalldirs: No longer in the repository. 2000-10-25 Mikio Nakajima * skk-vars.el (skk-coding-system-alist): Define "euc" and "ujis" for euc-jisx0213, "sjis" for shift_jisx0213 and "jis" for iso-2022-jp-3-compatible if emacs has a feature 'jisx0213. (skk-code-n1-max): Set 254 if emacs has a feature 'jisx0213. (skk-kcode-charset): Set 'japanese-jisx0213-1 if emacs has a feature 'jisx0213. * skk-kakasi.el: Update Takahashi-san's email address and description about a ftp site to get kakasi. * skk-lookup.el (skk-lookup-get-method): Use `skk-lookup-get-1'. (skk-lookup-get-1): Simplified slightly. 2000-10-25 Tetsuo Tsukamoto * READMES/FAQ.txt ($B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B): New question. 2000-10-25 Mikio Nakajima * skk-vars.el (skk-lookup-option-alist): Bug fixed. 2000-10-25 Tetsuo Tsukamoto * skk-vars.el (skk-lookup-option-alist): Bug fixed. 2000-10-24 Mikio Nakajima * skk-vars.el (skk-lookup-option-alist): Change 6th element regexp to cons cell and defcustom type accordingly. Add new element 7th and defcustom type accordingly. Add new lists of which headers are "KOUJIEN", "KOJIEN" and "KOKUGO" (skk-lookup-default-option-list): Change 5th element regexp to cons cell and defcustom type accordingly. Add new element 6th and defcustom type accordingly. * skk-lookup.el (skk-lookup-get-1): New inline function. (skk-lookup-get-cleanup-regexp): Ditto. (skk-lookup-get-nonsearch-sex): Use `skk-lookup-get-1'. (skk-lookup-get-pickup-regexp): Ditto. (skk-lookup-get-split-regexp): Ditto. (skk-lookup-process-heading): Use cdr part of 6th element of `skk-lookup-option-alist' or 5th element of `skk-lookup-default-option-alist' in order to get a matched string. Remove unnecessary strings from CANDIDATES-STRING by using 7th element of `skk-lookup-option-alist' or 6th element of `skk-lookup-default-option-alist'. * skk-kcode.el (skk-input-by-code-or-menu): Use `match-string-no-properties' instead of `match-string'. 2000-10-22 Mikio Nakajima * doc/skk-faq.texi ([Q.1-4] SKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+!)(B): * skk.el (skk-abbrev-comma): Bug fixed. * ccc.el (ccc-defadvice): Check if FUNCTION is fboundp or not. Fixed warning message. * skk-macs.el (skk-defadvice): Ditto. 2000-10-21 Mikio Nakajima * ccc.el (ccc-defadvice): Delete interactive call from advice definition if trying to add an advice to subr/non-command. * skk-macs.el (skk-defadvice): Ditto. * skk.el (keyboard-quit): Use `skk-defadvice' instead of `defadvice'. (abort-recursive-edit): Ditto. (newline): Ditto. (newline-and-indent): Ditto. (exit-minibuffer): Ditto. (undo): Ditto. (kill-buffer): Ditto. (save-buffers-kill-emacs): Ditto. (minibuffer-keyboard-quit): Ditto. * skk-cursor.el (minibuffer-keyboard-quit): Use `skk-defadvice' instead of `defadvice'. * skk-jisx0201.el (newline): Ditto. (newline-and-indent): Ditto. (exit-minibuffer): Ditto. * skk-tut.el (kill-buffer): Ditto. (other-frame): Ditto. (save-buffers-kill-emacs): Ditto. * skk-viper.el (read-from-minibuffer): Ditto. * skk-develop.el: Add `skk-defadvice' regexp for hilit19 and font-lock. 2000-10-20 Tetsuo Tsukamoto * READMEs/NEWS: Add description about leim-list.el, etc. * skk-setup.el.in (isearch-message-prefix): Move the advice * skk-isearch.el: to here. (skk-isearch-delete-char): Update only the 2nd element of `isearch-cmds'. 2000-10-19 Mikio Nakajima * ccc.el (ccc-defadvice): New macro. * skk-macs.el (skk-defadvice): Ditto. 2000-10-19 Tsuyoshi AKIHO * READMEs/NEWS: $B?75!G=$dGQ;_$5$l$?4X?t$K$D$$$F2CI.!#(B 2000-10-19 Tetsuo Tsukamoto * skk-leim.el: In "auto-autoloads.el", require "skk-setup". * skk-setup.el.in: Override "C-x C-j" under XEmacs. * skk.el (skk-save-jisyo-original): Check if `skk-emacs-id-file' exists. 2000-10-19 Tsuyoshi AKIHO * SKK-MK (SKK_LISPDIR): "make PREFIX=dir install" $B$G(B PREFIX $B$N$H(B $B$*$j$K(B elisp $B$,%$%s%9%H!<%k$5$l$k$h$&$K=$@5(B. 2000-10-18 Tetsuo Tsukamoto * ccc.el (ccc-apply): New macro. (ccc-ads): New variable. 2000-10-18 Mikio Nakajima * READMEs/README.win: Move $B!V(B`MAKE.BAT'$B$NJT=8$H%$%s%9%H!<%k(B (Windows 95,98/NT)$B!W(B to header (change to non-section). Section structer rearranged (change `****' section to `***', `***' to `**' and `**' section to `*'). New sections $B!V(B* Windows $B>e$GF0$/%5!<%P$K$D$$$F!W(B,$B!V(Bwskkserve$B!W(B, $B!V(B cygwin $B$rMxMQ$7$F%=!<%9$+$i%3%s%Q%$%k$7$FMxMQ$9$k!W(B,$B!V(Bscript $B8@(B $B8l$G * ccc.el: Apply Tsukamoto-san's patch Message-ID: . * READMEs/CVS_on_Windows: Typo fixed. 2000-10-16 Mikio Nakajima * READMEs/README.win (SKK95 (Windows 95/98/NT)): Remove the sentence $B!V(BWindows 95 $B$G$O>e5-$N(B SKKIME $B$,F0:n$7$J$$$?$a$3$A$i$r;H(B $BMQ$7$^$9!#!W(B. SKKIME98 now works on Windows 95 (using Winsock version 1). Updated the link to kmc. (wskkserve): Merged into "skkserve on Windows". (skkserve on Windows): Moved before the section "SKK on Windows". * skk-develop.el (skk-submit-bug-report): Do not put out skk-henkan-face information. Dump variables `isearch-mode-hook' and `isearch-mode-end-hook'. Use skk-exserv.el when `skk-exserv-list' is non-nil. Use new `skk-version'. * skk-abbrev.el: Require product and call product-provide for its feature. * skk-auto.el: Ditto. * skk-comp.el: Ditto. * skk-cursor.el: Ditto. * skk-develop.el: Ditto. * skk-gadget.el: Ditto. * skk-isearch.el: Ditto. * skk-jisx0201.el: Ditto. * skk-jisx0213.el: Ditto. * skk-kakasi.el: Ditto. * skk-kcode.el: Ditto. * skk-leim.el: Ditto. * skk-look.el: Ditto. * skk-lookup.el: Ditto. * skk-macs.el: Ditto. * skk-num.el: Ditto. * skk-obsolete.el: Ditto. * skk-server.el: Ditto. * skk-tut.el: Ditto. * skk-vars.el: Ditto. * skk-viper.el: Ditto. * skk-xm20_4.el: Ditto. * skk.el: Ditto. * experimental/skk-correct.el: Ditto. * experimental/skk-dos.el: Ditto. * experimental/skk-dcomp.el: Ditto. * experimental/skk-study.el: Ditto. * experimental/tut-code/skk-tutcode.el: Ditto. * experimental/tut-code/skk-tutcdef.el: Ditto. * experimental/skk-is-n.el: Ditto. * experimental/skk-exserv.el: Ditto. * experimental/skk-exsearch.el: Ditto. * experimental/skk-e18.el: Ditto. * experimental/dbm/skk-dbm.el: Ditto. * experimental/rdbms/skk-rdbms.el: Ditto. * SKK-MK (SKK_MODULES): Add `skk-version'. * skk-tut.el (skktut-end-tutorial): Use `(product-string-1 'skk-version t)' instead of `skk-branch-name'. (kill-buffer): Specify original interactive spec. (skk-tutorial): Check skk version using `product-version>='. * skk-vars.el (skk-version): Removed. (skk-major-version): Ditto. (skk-minor-version): Ditto. (skk-branch-name): Ditto. (skk-codename): Ditto. * skk.el (skk-version): Removed. Check APEL version using `product-version>='. (kill-buffer): Specify original interactive spec. * ccc.el (buffer-local-frame-params-ad-targets): Removed. Check a function if a subr that has an interactive spec when adding advices, and put on a mirroring original interactive spec to advice. * skk-version.el: New file. * skk-study.el: Move it back to experimental directory. 2000-10-15 Mikio Nakajima * skk.el (skk-toggle-characters): Hand 'vcontract to `skk-katakana-region' as VCONTRACT argument . 2000-10-15 Tetsuo Tsukamoto * skk-cursor.el (skk-cursor-buffer-local-frame-params-ad-targets): Add `skk-j-mode-on'. (minibuffer-setup-hook): No longer call `set-buffer-local-cursor-color' under FSF Emacs. (skk-cursor-current-color): No longer check if `skk-jisx0201-mode' is bound. 2000-10-13 Tetsuo Tsukamoto * skk-cursor.el: Changes for XEmacs. (minibuffer-keyboard-quit): New advice. (minibuffer-exit-hook): Call `set-face-property' in the minibuffer. * skk-macs.el (skk-emacs-type, skk-detect-emacs): Check the feature `xemacs'. 2000-10-12 Tetsuo Tsukamoto * ccc.el (buffer-local-cursor-color-default, buffer-local-foreground-color-default, buffer-local-background-color-default): Check the feature `xemacs'. * skk-cursor.el: Ditto. (minibuffer-setup-hook): Call `set-buffer-local-cursor-color' under FSF Emacs. * skk-gadget.el (skk-clock): Don't perform redisplay in `sit-for'. * skk-isearch.el (skk-isearch-delete-char): Use `when'. * skk-jisx0201.el (skk-jisx0201-insert, skk-toggle-katakana): Don't call `skk-cursor-set-properly'. Call `set-face-property' or `set-buffer-local-cursor-color' instead. * skk-obsolete.el (skk-obsolete-function-alist): Don't check `skk-set-cursor-color' and `skk-set-cursor-properly'. * skk-vars.el (skk-emacs-type): Check the feature `xemacs'. * skk.el (skk-setup-modeline): Don't use `mapcar'. 2000-10-08 Tetsuo Tsukamoto * skk.el (skk-count-jisyo-candidates): Use `default-directory' instead of "~/". Show "candidate" instead of "candidates" if `count' is 1. 2000-10-05 Tetsuo Tsukamoto * skk.el (skk-count-jisyo-candidates): Show "candidates", not "entries". (skk-count-jisyo-candidates-original): Don't search slashes in midashi words. 2000-10-03 Mikio Nakajima * READMEs/FAQ.txt: Change filename description in end of filename tag. 2000-10-02 Tetsuo Tsukamoto * skk-leim.el (locate-libraries, load-libraries): New functinos from egg-util.el in Tamago 4. * skk-setup.el.in: Load all `leim-list.el' files. 2000-10-02 Mikio Nakajima * skk-vars.el (skk-num-uniq): Check if `skk-num-type-alist' has indexes 2 and 3 or 5. * skk.el (skk-henkan-show-candidates): Use `skk-henkan-list-filter' instead of `skk-num-uniq'. Do not use `(skk-num-multiple-convert 7)'. 2000-10-01 Mikio Nakajima * skk-lookup.el: Require bitmap when running on MULE. * SKK-MK (SKK_MODULES): Add skk-jisx0213 if available. (SKK_DICTIONARIES): Add "SKK-JISYO.JIS2", "SKK-JISYO.JIS3_4", "SKK-JISYO.pubdic+", "SKK-JISYO.edict", "SKK-JISYO.office.zipcode" and "SKK-JISYO.zipcode". * skk-jisx0213.el: New file. * skk-vars.el (skk-jisx0213-prohibit): New user option. * skk.el (skk-henkan): Use `skk-get-current-candidate-1'. (skk-previous-candidate): Use new `skk-get-current-candidate'. (skk-kakutei): Ditto. (skk-purge-from-jisyo): Ditto. (skk-henkan-show-candidates): Use `skk-num-multiple-convert' instead of `skk-num-convert*7'. (skk-get-current-candidate): New funcition. (skk-henkan-1): Call `skk-search' until getting NEW-WORD even if skk-henkan-count is 0. * skk-num.el (skk-num-convert-1): New subroutine. (skk-num-process-user-minibuf-input): Removed. (skk-num-convert): Call `skk-num-uniq' if type 4 numeric conversion is done. Abolish argument KEY. Do not return CURRENT. (skk-num-exp): Use `save-match-data'. (skk-num-process-user-minibuf-input): Ditto. (skk-num-convert*7): Removed. (skk-num-multiple-convert): New function. (skk-henkan-list-filter): New funcition. * skk-macs.el (skk-get-current-candidate-simply): Abolish optional argument NOCONV and renamed it to `skk-get-current-candidate-1'. 2000-09-29 Mikio Nakajima * READMEs/FAQ.txt: Fixed a description about $B!V8!:w$9$k<-=q$rA}$d(B $B$7$?$$$N$G$9$,!W(B. Sync up with a description about $B!V(BWnn $B$G$b(B Canna $B$G$bM9JXHV9f<-=q(B $B$,;H$($k$1$l$I!"(BSKK $B$G$O;H$($J$$$N(B ?$B!W(B * READMEs/FAQ.txt: Add a description about $B!V8!:w$9$k<-=q$rA}$d$7(B $B$?$$$N$G$9$,!W(B. * READMEs/skk-faq.txt: Rename to FAQ.txt. 2000-09-28 Tetsuo Tsukamoto * ptexinfmt.el: Sync with Wanderlust. 2000-09-27 Mikio Nakajima * Makefile: Change Maintainer to SKK Development Team. * SKK-CFG: Ditto. * SKK-MK: Ditto. * ccc.el: Ditto. * doc/skk.texi: Ditto. * etc/SKK.tut.E: Ditto. * etc/SKK.tut: Ditto. * experimental/skk-correct.el: Ditto. * experimental/skk-dcomp.el: Ditto. * experimental/skk-dos.el: Ditto. * experimental/skk-e18.el: Ditto. * experimental/skk-exsearch.el: Ditto. * experimental/skk-exserv.el: Ditto. * experimental/skk-is-n.el: Ditto. * experimental/tut-code/skk-def.el: Ditto. * experimental/tut-code/skk-tutcode.el: Ditto. * make.bat: Ditto. * skk-abbrev.el: Ditto. * skk-auto.el: Ditto. * skk-comp.el: Ditto. * skk-cursor.el: Ditto. * skk-develop.el: Ditto. * skk-gadget.el: Ditto. * skk-isearch.el: Ditto. * skk-jisx0201.el: Ditto. * skk-kakasi.el: Ditto. * skk-kcode.el: Ditto. * skk-leim.el: Ditto. * skk-look.el: Ditto. * skk-lookup.el: Ditto. * skk-num.el: Ditto. * skk-obsolete.el: Ditto. * skk-server.el: Ditto. * skk-setup.el.in: Ditto. * skk-study.el: Ditto. * skk-tut.el: Ditto. * skk-vars.el: Ditto. * skk-viper.el: Ditto. * skk-xm20_4.el: Ditto. * skk.el: Ditto. * tinyinstall.el: Ditto. * vip.el: Ditto. 2000-09-26 Tetsuo Tsukamoto * skk-num.el (skk-num-type3-kanji-1, skk-num-type5-kanji-1): Don't miss "$BK|(B" {"$Bh_(B"}, "$B2/(B", "$BC{(B", "$B5~(B". 2000-09-25 Mikio Nakajima * READMEs/skk-faq.txt: Update a description about how to get skk-tools. 2000-09-25 Shuhei KOBAYASHI * skk-num.el: Eliminate CL dependency. (skk-num-compute-henkan-key, skk-num-convert): Expand `setf' to `setcar'/`nthcdr' pair. * skk.el: (skk-insert, skk-previous-candidate): Fix interactive spec. 2000-09-25 Tetsuo Tsukamoto * ptexinfmt.el: Sync with Wanderlust. 2000-09-22 Tetsuo Tsukamoto * READMEs/CVS_00readme: Update for CVS 1.11. 2000-09-18 Tetsuo Tsukamoto * Makefile (package): Call `SKK-MK-compile-package'. * SKK-MK (SKK-MK-compile-package, SKK-MK-generate-autoloads-el-package): New functions. (SKK-MK-install-package): Call `SKK-MK-compile-package'. 2000-09-17 Mikio Nakajima * skk-vars.el: Grouping by function and filename. (skk-custom-by-function): New group. (skk-custom-by-filename): Ditto. (skk-use-look): Doc sync up with READMEs/skk-faq.txt. (skk-kutouten-type): Use `defcustom' instead of `skk-deflocalvar'. (skk-faces): Removed. (skk-decoration): Ditto. (skk-dictionary): Ditto. (skk-filenames): Ditto. (skk-hooks-and-functions): Ditto. (skk-keybinds): Ditto. (skk-okurigana): Ditto. (skk-misc): Ditto. (skk-abbrev): Ditto. (skk-auto): Change its group to skk-custom-by-filename. (skk-comp): Ditto. (skk-cursor): Ditto. (skk-gadget): Ditto. (skk-isearch): Ditto. (skk-jisx0201): Ditto. (skk-kakasi): Ditto. (skk-kcode): Ditto. (skk-look): Ditto. (skk-lookup): Ditto. (skk-num): Ditto. (skk-server): Ditto. (skk-init-file): Use `defcustom' instead of `defvar'. 2000-09-17 Tetsuo Tsukamoto * skk-isearch.el: Add comments. * skk-jisx0201.el: No real changes. Just a matter of appearance. * skk-leim.el: Don't check for `register-input-method'. 2000-09-16 Tetsuo Tsukamoto * SKK-CFG: Rewrite. 2000-09-16 Mikio Nakajima * READMEs/README: Updated. 2000-09-15 Mikio Nakajima * READMEs/Contributors (Contributors): Change Akiho san's e-mail address. * doc/skk.texi ($B$*4j$$(B): Change `skk-jisyo@kuis.kyoto-u.ac.jp' to `skk@ring.gr.jp'. 2000-09-14 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-delete-char): Rewrite the last change. 2000-09-13 Tetsuo Tsukamoto * patch/e18/README.ja: Update. * patch/e18/bytecomp-2.07/eval.c-e19.patch: <= eval.c.patch. * patch/e18/bytecomp-2.07/eval_c-e18.patch: New file. 2000-09-13 Mikio Nakajima * patch/custom-1.9962.patch: Moved to e19 subdirectory. 2000-09-12 Tetsuo Tsukamoto * SKK-MK: Emacs 18 only. Work around for a bug in cl.el. * experimental/skk-e18.el: Modify the error message. * patch/e18: New repository. * patch/e18/{README.ja, advice.el, cl.elc, cl_el-defsetf.patch}: New files. * patch/e18/bytecomp-2.07: New repository. * patch/e18/bytecomp-2.07/{README.en, README.ja, byte-optimize.el, bytecomp-runtime.el, bytecomp.el, bytecomp_el-mule-1_1_pl04.patch, disass.el, eval.c.patch, make-docfile.c}: New files. * skk-isearch.el (skk-isearch-find-keys-define): Simplify. (skk-isearch-delete-char): Do not show white-space regular expressions. 2000-09-12 Mikio Nakajima * READMEs/skk-faq.txt (http): Update. * experimental/GUIDELINE: Update. * experimental/tut-code/skk-def.el: Update comments for daredevil. * experimental/tut-code/skk-tutcdef.el: Ditto. * experimental/tut-code/skk-tutcode.el: Ditto. 2000-09-11 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-find-keys-define): Use `dolist'. (skk-isearch-delete-char): Ditto. (skk-isearch-setup-keymap): Use `do'. (skk-isearch-search-string-regexp): Ditto. * skk-vars.el (skk-num-list): Remove autoload cookie. 2000-09-11 Mikio Nakajima * Makefile (DATE): Do not use universal time. (MD5): New variable. (SNAPBASE): Ditto. (TAR): Do not specify absolute path. (tar): Rearrange for making archive in openlab.ring.gr.jp. (snapshot): Ditto. (clean): Remove files that match `.#*' (files which make by CVS when it finds there are conflicts). 2000-09-10 Tetsuo Tsukamoto * READMEs/CVS_00readme: Use overlays instead of text properties. * READMEs/CVS_on_Windows: Update. * SKK-MK: Tiny bug fix for Emacs 18. * skk-look.el (skk-look-ispell): Set VAR. 2000-09-10 Mikio Nakajima * Makefile (snapshot): Bug fixed. * Makefile (tar): Modify to make archive in openlab.ring.gr.jp. (snapshot): Ditto. * READMEs/skk-faq.txt: Updated. * skk-setup.el.in (isearch-mode-end-hook): Remove skk-set-cursor-properly from the hook. * doc/skk.texi ($BF~NO%b!<%I$N0l;~JQ99(B): Typo fixed. * skk-look.el (skk-look-ispell): Call `skk-look-1' for a word originally handed to when ispell puts miss and guess out. Slightly simplify condition. Comment modified. 2000-09-09 Tetsuo Tsukamoto * Makefile (package): New target. * SKK-MK (SKK-MK-running-xemacs): Abolish. Check the feature xemacs instead. (SKK_INFOS): Abolish. Stop guessing how many files resulting info will be split into. (SKK_INFO): New variable. (PACKAGE_DATADIR): <= `SKK_PACKAGE_DATADIR'. (PACKAGE_LISPDIR): <= `SKK_PACKAGE_LISPDIR' (SKK_PACKAGE_NOT_USE): Abolish. (SKK-MK-install-package): Use `SKK-MK-compile'. (SKK-MK-generate-autoloads-el): Modify for XEmacs. * skk-look.el (skk-look-ispell): Use the original word as well as misses and guesses. 2000-09-09 Mikio Nakajima * skk-look.el (skk-look-ispell): Call `skk-look-1' for a word originally handed to when ispell recognize spelling of WORD is right. * experimental/skk-exsearch.el (search-engine): Do not put out originally handed word. 2000-09-09 Tetsuo Tsukamoto * READMEs/CVS_00readme: Update. * skk-cursor.el (skk-mode-hook): Call `skk-mode-once-again'. * skk-vars.el (skk-coding-system-alist): sjis => shift_jis. * skk.el (skk-henkan-show-candidate-subr): If the selected frame has 2 or more windows, delete other windows. If point is not visible in the selected window, put point in the center of the window. 2000-09-09 Mikio Nakajima * experimental/skk-cursor2.el: Merged skk-cursor2 and skk-cursor3 into skk-cursor.el. * experimental/skk-cursor3.el: Ditto. * skk-cursor.el: Ditto. * SKK-MK (SKK_MODULES): Remove skk-cursor2 and skk-cursor3. Add ccc if FSF Emacs is running. (SKK_DAREDEVIL_NOT_USE): Add `skk-cursor2' and `skk-cursor3'. * experimental/ccc.el (ccc-before-update-function): Removed. (update-buffer-local-frame-params): Do not call `ccc-before-update-function'. (buffer-local-cursor-color-default): Bug fixed. (buffer-local-foreground-color-default): Ditto. (buffer-local-background-color-default): Ditto. * experimental/skk-cursor2.el: Use `set-buffer-local-cursor-color' for advice of each element of `skk-cursor2-buffer-local-frame-params-ad-targets'. Do not set `ccc-before-update-function'. * skk-look.el (skk-look): Typo fixed. * skk-viper.el (skk-cursor-set-properly): Removed advice. (skk-cursor-current-color): (read-from-minibuffer): Add `update-buffer-local-frame-params' to `minibuffer-setup-hook' instead of `skk-cursor-setup-minibuffer'. 2000-09-08 Mikio Nakajima * skk-look.el (skk-look-1): Do not put out originally handed word. (skk-look-ispell): Call look command by each candidate put out by ispell. Set symbol `error' to POSS if ispell-parse-output returns nil (and make a error message if POSS is equal to symbol `error'. (skk-look): Do not union lists made by `skk-look-1' and `skk-look-ispell'. (skk-look-completion): Ditto. Do not remove `skk-look-completion-words' from a list made by `skk-look-1' or `skk-look-ipell' (as it is removed already). 2000-09-07 Tetsuo Tsukamoto * Makefile (set_jisyo): New variable. * SKK-MK (SKK_SET_JISYO): New variable. (SKK-MK-install): Set `skk-large-jisyo' if `SKK_SET_JISYO' is non-nil. (SKk-MK-install-package): Ditto. * skk-vars.el (skk): Place this group under "Mule" and "Leim". 2000-09-07 Mikio Nakajima * skk-look.el (skk-look-ispell): Return not only miss but also guess. 2000-09-07 Tetsuo Tsukamoto * skk-look.el (skk-look): Bug fixed. (skk-look-ispell): Ditto. 2000-09-06 Tetsuo Tsukamoto * SKK-MK (SKK-MK-server-installed-p): New function. (SKK-MK-install): Don't set `skk-large-jisyo' if a local server is found. (SKk-MK-install-package): Ditto. * skk-isearch.el (skk-isearch-mode-setup): Don't call `toggle-input-method' so that the SKK status is preserverd. * skk-setup.el.in (skk-aux-large-jisyo): Use @AUXDIC@ instead of @DIC@. * skk-vars.el (skk-look-use-ispell): Check if ispell.el is installed. 2000-09-06 Mikio Nakajima * READMEs/MEMO.txt: Add some idea. * READMEs/CVS_digest: Typo fixed. Add description about pySKK. 2000-09-06 Tetsuo Tsukamoto * skk-leim.el (skk-leim-exit-from-minibuffer): New function. (skk-activate, skk-auto-fill-activate): In minibuffer, add `skk-leim-exit-from-minibuffer' to `minibuffer-exit-hook'. 2000-09-04 Tetsuo Tsukamoto * SKK-MK: Under Emacs 18, load bytecomp-runtime.el if possible. * experimental/nicola: New repository. Import NICOLA-DDSKK. ChangeLog files in this repository will show details. * skk-cursor.el (execute-extended-command): Advise this function under XEmacs only. * skk-isearch.el (skk-isearch-mode-setup): Activate input method in the working buffer, if `current-input-method' is japanese-skk{-auto-fill}. (skk-isearch-mode-cleanup): Inactivate input method in the working buffer, if `default-input-method' is japanese-skk{-auto-fill}. (skk-isearch-find-keys-define): Don't overwrite the keymaps for prefix keys. (skk-isearch-setup-keymap): Keys for `toggle-input-method' call `skk-isearch-skk-mode', if `default-input-method' is japanese-skk{-auto-fill}. (skk-isearch-skk-mode): Add an autoload cookie. * skk-leim.el: Now don't set `current-input-method-title'. Always show `skk-input-mode-string'. * skk-setup.el.in (isearch-mode-end-hook): Call `skk-isearch-mode-cleanup' if the feature skk-isearch is provided. (isearch-mode-map): Make sure C-\ is bound to `isearch-toggle-input-method'. (isearch-toggle-input-method): New advice. Invoke skk-isearch if `default-input-method' is japanese-skk{-auto-fill}. (isearch-message-prefix): Don't show `current-input-method-title' if `default-input-method' is japanese-skk{-auto-fill}. 2000-09-04 Mikio Nakajima * skk-look.el (skk-look-ispell): New function. (skk-look-completion): Use `skk-look-ispell' if `skk-look-use-ispell' is non-nil. (skk-look): Ditto. * skk-vars.el (skk-look-use-ispell): New user option. 2000-08-31 Tetsuo Tsukamoto * SKK-MK: Under Emacs 18, Use `if' instead of `when' where it is not yet defined. * ptexinfmt.el: Sync with Wanderlust. * skk-jisx0201.el (skk-toggle-katakana): Set the extent for `skk-input-mode-string' under XEmacs. * skk-macs.el (skk-mode-off, skk-j-mode-on, skk-latin-mode-on, skk-jisx0208-latin-mode-on, skk-abbrev-mode-on): Ditto. * skk.el: Changes for XEmacs -- (skk-mode): Create extents for `skk-input-mode-string'. (skk-setup-modeline): If `skk-status-indicator' is left, Add an extent to the modeline format, as well as `skk-input-mode-string'. 2000-08-28 Tetsuo Tsukamoto * SKK-MK (SKK-MK-compile): Require cl for Emacs 18. * experimental/skk-e18.el: Don't require cl here. * skk-kcode.el (skk-make-char): Typo. 2000-08-27 Tetsuo Tsukamoto * experimental/skk-e18.el (call-process): Work around for Emacs 18.55. * ptexinfmt.el: New file imported from Wanderlust. * SKK-MK (SKK-MK-texinfo-format): Require ptexinfmt. (SKK-MK-compile): Work around for Emacs 18.55. * skk-num.el (skk-num-convert): Work around for Emacs 18.55. 2000-08-26 Tetsuo Tsukamoto * doc/skk.texi ($B"#%b!<%I$K$*$1$kJ8;zJQ49(B, $B?t;z$d5-9fJ8;z$NF~NO(B, etc):Update for SKK 10 and lator. (SKKIME): New section. 2000-08-25 Tetsuo Tsukamoto * experimental/skk-dos.el (skk-save-jisyo): Advise to preserve file modes. 2000-08-23 Tetsuo Tsukamoto * experimental/skk-dos.el: Work around for Demacs 1.2.0. * skk-vars.el (skk-isearch-switch): Default to nil. * skk.el (comint-send-input): New advice. (skk-make-temp-jisyo): Use short file name under MS-DOS. (skk-make-temp-file): Expand DIR before passing it to `expand-file-name'. 2000-08-20 Tetsuo Tsukamoto * skk-isearch.el (skk-isearch-delete-char): Call `skk-kakutei' if point in the working buffer is the same as {or less than} `skk-henkan-start-point'. 2000-08-19 Tetsuo Tsukamoto * READMEs/CVS_00readme: Update. 2000-08-19 YOSHIZAWA Masahiro * skk.el (skk-okurigana-prefix): Fix the condition description. 2000-08-18 Tetsuo Tsukamoto * READMEs/PROPOSAL: tm ML => APEL ML. * skk.el (skk-okurigana-prefix): Don't use `skk-char-octet' under Nemacs. 2000-08-16 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Provide skk-autoloads. * skk-cursor.el (skk-cursor-current-color): No longer check if `skk-jisx0201-mode' is bound. * skk-jisx0201.el: Move variables to skk-vars.el. (skk-setup-modeline): No longer redefine this function. * skk-vars.el (skk-use-jisx0201-input-method): New user option. (skk-cursor-jisx0201-color, skk-jisx0201-mode-string, skk-jisx0201-mode-map, skk-jisx0201-base-rule-tree, skk-jisx0201-roman-rule-tree, skk-jisx0201-roman, skk-jisx0201-current-rule-tree, skk-jisx0201-mode): From skk-jisx0201.el. * skk.el (skk-regularize): Require skk-jisx0201 if `skk-use-jisx0201-input-method' is non-nil. Require skk-kanagaki if `skk-use-kana-keyboard' is non-nil. -- in this function instead of `skk-mode'. 2000-08-16 Tetsuo Tsukamoto * SKK-MK (SKK-MK-generate-autoloads-el): Always generate autoloads here. 2000-08-15 Tetsuo Tsukamoto * SKK-MK (SKK-MK-install,SKK-MK-generate-autoloads-el): if $(EMACS) is Emacs 20 or lator, generate autoloads by `update-autoloads-from-directories'. Don't install leim-list.el for Emacs 19 or earlier. (SKK_MODULES): Don't install skk-leim.el for Emacs 19 or earlier. * skk-leim.el: Register input methods here. (skk-activate, skk-auto-fill-activate): Advise `skk-setup-modeline' to do nothing. * skk-setup.el.in: Don't register input methods here. 2000-08-14 Tetsuo Tsukamoto * skk-jisx0201.el: Modify doc string. 2000-08-12 Tetsuo Tsukamoto * skk-gadget.el (skk-clock): Quit by any event. Play sounds, if available, under XEmacs. * skk-vars.el (skk-use-kana-keyboard): Default to nil. 2000-08-11 Tetsuo Tsukamoto * Makefile (tar, snapshot): Fix the problem that the resulting tar ball contains "..". * SKK-MK (SKK-MK-compile): Expand "." before passing it to `compile-elisp-modules'. * skk-tut.el (skktut-setup-question-buffer, skktut-setup-answer-buffer): Don't bind a key for a non-existent command `skktut-error-command'. * skk-vars.el (skk-use-kana-keyboard): New user option. * skk.el (skk-mode): Require `skk-kanagaki' if `skk-use-kana-keyboard' is non-nil. 2000-08-08 Tetsuo Tsukamoto * experimental/skk-kanagaki.el: Add comments. (skk-kanagaki-set-henkan-point-key, skk-kanagaki-abbrev-mode-key, skk-kanagaki-katakana-mode-key, skk-kanagaki-latin-jisx0208-mode-key, skk-kanagaki-hankaku-mode-key, skk-kanagaki-latin-mode-key, skk-kanagaki-code-input-key): New default value for Emacs 18. 2000-08-07 Tetsuo Tsukamoto * experimental/skk-kanagaki.el: New file. * skk-vars.el (skk-rom-kana-base-rule-list, skk-rom-kana-rule-list, skk-jisx0208-latin-vector, skk-kana-rom-vector, skk-isearch-mode-string-alist, skk-server-host, skk-server-prog, skk-server-jisyo, skk-lookup-kana-vector): Fix the custom type descriptions. * skk.el (skk-mode): Don't use `skk-previous-candidate-char' under skk-kanagaki. (skk-henkan-show-candidates): Work even if the last event is not invoked by a character key. (skk-previous-candidate): Ditto. 2000-08-04 Tetsuo Tsukamoto * skk-jisx0201.el, skk-tut.el, skk.el: Replace `canna-henkan-region-or-self-insert' with `skk-insert'. 2000-08-02 Tetsuo Tsukamoto * skk.el (skk-search): Undo the previous change. 2000-08-02 Tetsuo Tsukamoto * experimental/skk-e18.el (frame-width): Call `screen-width'. * skk-look.el (skk-look): Bind `skk-use-numeric-conversion' to nil. * skk.el (skk-search): When `skk-use-numeric-conversion' is non-nil, also do non-numeric conversion after numeric conversion. (skk-henkan-show-candidate-subr): If Emacs has MULE 4.0 or greater, call `string-bytes' instead of `string-width'. When candidates are displayed using a normal window, assign one line to each candidate. 2000-07-21 Mikio Nakajima * skk-tut.el (skktut-init-variables-alist): Set `skk-cursor-change-width' nil instead of t. 2000-07-18 Tetsuo Tsukamoto * skk-vars.el (skk-isearch-switch, skk-isearch-state, skk-isearch-in-editing): New internal variables. * skk-isearch.el (skk-isearch-initial-mode): Restore the previous SKK status for the isearch after `isearch-edit-string'. (skk-isearch-setup): Set `skk-isearch-switch' to t. Set `skk-isearch-in-editing' to nil. (skk-isearch-cleanup): Set `skk-isearch-switch' to nil. If `skk-isearch-in-editing' is nil, set `skk-isearch-state' to nil. (skk-isearch-newline): Turn on SKK mode when `skk-isearch-current-mode' reurns nil. (isearch-repeat): Advise this function only when `skk-isearch-switch' is t. (isearch-search): Ditto. (isearch-edit-string): Ditto. Save the value `skk-isearch-current-mode' returns. Set `skk-isearch-in-editing' to t. 2000-07-18 Mikio Nakajima * skk-tut.el (skktut-init-variables-alist): Removed `(skk-previous-completion-function . 'skk-previous-completion-original)' and `(skk-completion-function . 'skk-completion-original)' pairs. * skk-comp.el (skk-completion-original): Merged into `skk-completion'. (skk-completion-1): New subroutine. (skk-completion): Do not use temporary variable `COMPLETION-WORD'. (skk-previous-completion-original): Merged into `skk-previous-completion'. * skk-vars.el (skk-package-data-directory): Removed. * experimental/skk-exsearch.el: Require path-util. Remove all unnecessary spaces between paren. (skk-look-search): Remove `(skk-look-search)' from `skk-current-search-prog-list'. (look): Use `exec-installed-p'. (cdbget): Ditto. 2000-07-11 Mikio Nakajima * experimental/skk-cursor3.el: Change all the second argument of set-face-property to `background'. (skk-mode): Remove t condition (set cursor to `skk-cursor-latin-color'). (skk-auto-fill-mode): Ditto. * skk-leim.el Do not register input-method. (skk-leim-change-input-method-title): New function. (skk-abbrev-mode): New advice. (skk-auto-fill-mode): Ditto. (skk-jisx0201-mode): Ditto. (skk-jisx0208-latin-mode): Ditto. (skk-kakutei): Ditto. (skk-latin-mode): Ditto. (skk-mode): Ditto. (skk-toggle-kana): Ditto. * skk-setup.el.in (isearch-mode-end-hook): Separate into two parts, isearch cleanup parts and cursor parts. Add advice to `toggle-input-method'. Add title of japanese-skk. Add hook `isearch-mode-hook' only when * skk.el (skk-setup-modeline): Change condition t to `(eq skk-status-indicator 'minor-mode)'. (skk-mode): When exit, set `skk-input-mode-string' null string unless `skk-status-indicator' is `minor-mode'. When entering into skk-mode, set `skk-input-mode-string' `skk-hiragana-mode-string' if `skk-status-indicator' is `left'. * skk-jisx0201.el: Change condition t to `(eq skk-status-indicator 'minor-mode)'. 2000-07-09 Mikio Nakajima * skk-setup.el.in (isearch-mode-end-hook): Check if skk-cursor feature is provided or not. * SKK-MK (SKK_MODULES): Add skk-cursor3. 2000-07-09 YOSHIZAWA Masahiro * skk-setup.el.in (isearch-mode-end-hook): Bug fixed. 2000-07-08 Mikio Nakajima * experimental/skk-cursor3.el: New experimental program. * SKK-MK (SKK_MODULES): Add `skk-cursor2' and `ccc'. * skk-setup.el.in: Add check if skk-cursor2 feature is exists or not. * experimental/ccc.el: New experimental program. * experimental/skk-cursor2.el: Ditto (modified version of skk-cursor.el which uses `ccc.el'. 2000-06-24 Mikio Nakajima * skk-viper.el (viper-forward-word-kernel): Add check whether following character is Japanese JISX0213 or not. (viper-backward-word-kernel): Ditto. (viper-join-lines): Ditto. * skk-macs.el (skk-jisx0213-p): New inline function. * doc/skk.texi (Makefile$B$NJT=8$H%$%s%9%H!<%k(B): Change required APEL version 9.22 to 10.2. * skk.el (skk-version): Use `apel-version'. 2000-06-23 Mikio Nakajima * skk-vars.el (skk-last-input-mode): Removed. * skk-cursor.el (skk-cursor-current-color): Add comment. * skk-macs.el (skk-abbrev-mode-on): Do not initialize `skk-katakana'. * skk.el (skk-abbrev-mode): Do not set `skk-last-input-mode'. (skk-kakutei): Do not refer to `skk-last-input-mode'. (skk-start-henkan): Keep `skk-katakana'. 2000-06-23 Takao KAWAMURA * skk-lookup.el (skk-lookup-agent-list): Set `skk-lookup-search-agents' correctly. 2000-06-22 Mikio Nakajima * skk-obsolete.el (skk-obsolete-function-alist): Add `(skk-toggle-kana . skk-toggle-characters)' and `(skk-current-insert-mode . skk-current-input-mode)' pairs. * skk-abbrev.el: Remove unnecessary spaces between parens. * skk-auto.el: Ditto. * skk-comp.el: Ditto. * skk-develop.el: Ditto. * skk-gadget.el: Ditto. * skk-isearch.el: Ditto. * skk-kakasi.el: Ditto. * skk-kcode.el: Ditto. * skk-look.el: Ditto. * skk-lookup.el: Ditto. * skk-obsolete.el: Ditto. * skk-server.el: Ditto. * skk-study.el: Ditto. * skk-tut.el: Ditto. * skk-vars.el: Ditto. * skk-viper.el: Ditto. * skk-xm20_4.el: Ditto. * skk.el: Ditto. * vip.el: Ditto. * experimental/skk-dcomp.el: Ditto. * experimental/tut-code/skk-def.el: Ditto. * experimental/tut-code/skk-tutcdef.el: Ditto. * experimental/tut-code/skk-tutcode.el: Ditto. * skk-cursor.el (skk-cursor-current-color): Check if `skk-abbrev-mode' is nil or not in a upper region of the function. * skk-isearch.el (skk-isearch-mode-cleanup): Use `skk-current-input-mode'. * skk-vars.el (skk-last-input-mode): New internal variable. * skk.el (skk-toggle-kana): Renamed to `skk-toggle-characters'. Bug and doc fixed. Call *-region function intead of *-henkan not to call `skk-kakutei'. Do not setup `skk-input-mode-string'. Do not call `force-mode-line-update'. (skk-kakutei): Check if `skk-mode' is nil or non-nil in a lower region of the function in order not to initialize internal variables before calling `skk-search-excluding-word-pattern-function'. Do not call `force-mode-line-update'. (skk-mode): Do not setup `skk-input-mode-string'. (skk-abbrev-mode): Set current input mode to `skk-last-input-mode'. Call `skk-kakutei' only when `skk-henkan-active' is non-nil. * skk-lookup.el (skk-lookup-search): Add temporary variable V. * skk-macs.el (skk-j-mode-on): Setup `skk-input-mode-string'. (skk-current-insert-mode): Renamed to `skk-current-input-mode'. * READMEs/MEMO.txt: New file. 2000-06-21 Mikio Nakajima * skk-lookup.el (skk-lookup-process-okurigana): When `skk-henkan-okuri-strictly' is nil check prefix of OKURIGANA is equal to `skk-okuri-char' or not. (skk-lookup-search): Call `skk-lookup-process-henkan-key-function' to process HENKAN-KEY when `skk-lookup-process-henkan-key-function' is non-nil. * skk-vars.el (skk-lookup-kana-vector): New user variable. (skk-lookup-process-henkan-key-function): Ditto. (skk-lookup-prefix-and-kana-map): New internal variable. * skk-tut.el (skktut-init-variables-alist): Bug fixed. * skk.el (skk-okurigana-prefix): Return nil when OKURIGANA is not hirakana string. 2000-06-20 Mikio Nakajima * SKK-CFG: Remove unnecessary comments. * skk-num.el: Remove unnecessary spaces between parens. 2000-06-19 YOSHIZAWA Masahiro * SKK-MK (SKK-MK-install-package): Missing quote. 2000-06-19 TSUKAMOTO Tetsuo * SKK-MK (SKK_MODULES): Do not install skk-study.el under Emacs 18. * tinyinstall.el (data-directory): Give it the same value as `exec-directory', under Emacs 18. 2000-06-19 Mikio Nakajima * skk-num.el (skk-num-update-jisyo): Not to show debug message. Bind `skk-use-numeric-conversion' to nil temporarily. Set buffer to ` *.skk-jisyo*'. * Makefile (clean): Add leim-list.el as a target. * skk.el (skk-henkan-show-candidate-subr): Bug fixed. * skk-num.el (skk-num-recompute): Setup `skk-num-recompute-key' in a upper region of the function code. * skk-vars.el (skk-lookup-search-agents): Change its default value to nil and remove require tag. (skk-num-recompute-key): Change to global internal variable. * skk-lookup.el: All variables and constants are moved to skk-vars.el. (skk-lookup-search): Not to search if `skk-num-list' or `skk-num-recompute-key is non-nil. Do not convert `skk-henkan-key' by `skk-num-compute-henkan-key'. (skk-lookup-agent-list): Initialize `skk-lookup-search-agents' when it has a null value. 2000-06-18 Mikio Nakajima * skk-lookup.el (skk-lookup-process-okurigana): Bug fixed. 2000-06-17 Mikio Nakajima * SKK-MK (SKK-MK-install): Bug fixed. (SKK-MK-install-package): Ditto. (SKK-MK-install): Copy skk-setup.el to leim-list.el and install both of them. (SKK-MK-install-package): Ditto. * skk-lookup.el (skk-lookup-process-okurigana): Return nil if STRING is a null string. * skk-leim.el: Remove unnecessary spaces between parens. * skk-setup.el.in: Register SKK as an input method if Emacs has `register-input-method'. Add `skk-tut-file' setup strings. * SKK-MK (SKK-MK-make-setup-file): Change its argument `DICTIONARY' to `SPEC'. (SKK-MK-install-package): Do not use multiple let scopes. Use `SKK-MK-compile-info'. Use new `SKK-MK-make-setup-file'. (SKK-MK-install): Ditto. Make `SKK-MK-make-setup-file' to setup as to tutorial file. 2000-06-03 Mikio Nakajima * SKK-MK (SKK-MK-install): Bug fixed. (SKK-MK-install-package): Ditto. 2000-05-31 Mikio Nakajima * skk-cursor.el: Add `keyboard-quit' to FUNCS list. Remove duplicate `kill-buffer' from FUNCS list. * experimental/GUIDELINE: Renewed. 2000-05-15 Mikio Nakajima * skk-lookup.el (skk-lookup-option-alist): Typo fixed. (skk-lookup-default-option-list): Ditto. 2000-05-14 Mikio Nakajima * skk-lookup.el: Add install notes to Commentary. Remove unnecessary blanks between parens. (skk-lookup-option-alist): As to the list whose car is "GENIUS", change 6th element nil to ",". Change all S expressions in nested lists which represent regexp to search to symbol `prefix'. Doc fixed. Change sexp choice in option to `(const nil)'. (skk-lookup-default-option-list): Ditto. 2000-04-28 Mikio Nakajima * skk.el (skk-truncate-message): Removed. (skk-henkan-show-candidate-subr): Pop up another buffer to display long string that cannot displayed wholly in the echo area. (skk-henkan-show-candidates): Use `save-window-excursion' for the purpose above. 2000-04-27 Mikio Nakajima * READMEs/README.win: Change file name descriptions `Readme' to `README' and `Install' to `INSTALL'. 2000-4-27 Yuh Ohmura * READMEs/README.win: add SKK on Windows and skkserve on windows. 2000-04-27 Mikio Nakajima * READMEs/README.win: Reorganize it as outline mode. * READMEs/INSTALL: Typo fixed. 2000-04-26 Yuh Ohmura * make.bat: Change maintenner. * READMEs/README.win: add about dictionary 2000-04-26 Mikio Nakajima * READMEs/INSTALL: Add description about dictionaries. * doc/skk.texi (Makefile$B$NJT=8$H%$%s%9%H!<%k(B): Ditto. (.emacs$B$N@_Dj(B): Add description about `skk-setup.el', and change description about isearch-mode-end-hook. Change open parens to closed ones. Change `SKK 10' to `Daredevil SKK'. * SKK-MK (SKK-MK-make-setup-file): New function. (DICDIR): New variable. (SKK_DICTIONARIES): Ditto. (SKK-MK-install): Install dictionaries if they exist in ./dic subdirectory. (SKK-MK-install-package): Ditto. * Makefile (clean): Add `skk-setup.el'. * dic/README: New file. * skk-setup.el.in: New file. 2000-04-09 Takao KAWAMURA * skk-vars.el (skk-keep-record): change type from 'boolean to '(choice integer (const t) (const nil)) * skk.el (skk-save-jisyo-original): Move calling `skk-record-jisyo-data' into `skk-before-kill-emacs-hook'. (skk-record-jisyo-data): if `skk-keep-record' is a integer, skk-record-file does not grow over it. 2000-04-06 Mikio Nakajima * experimental/skk-exsearch.el (core-engine): Bug fixed. (search-engine): New argument ARGUMENT. (skk-cdbget-search): Take SKK-HENKAN-KEY as its second argument. 2000-04-03 Murata Shuuichirou * skk-viper.el (skk-viper-normalize-map): Use local-variable-if-set-p instead of local-variable-p, when running on FSF emacs. Sync with XEmacs case. 2000-03-29 Yuh Ohmura * READMEs/CVS_on_Windows: cancel below change 2000-03-29 Yuh Ohmura * READMEs/CVS_on_Windows: add about timezone. 2000-03-24 Mikio Nakajima * experimental/skk-exserv.el (server-version): Bug fixed. * SKK-MK (SKK_MODULES): Add `skk-exserv'. * experimental/skk-exserv.el: New experimental program. * experimental/skk-exsearch.el (search-engine): Convert `skk-henkan-key' by `skk-num-compute-henkan-key' if `skk-use-numeric-conversion' is non-nil. Remove arg ARGUMENT. (skk-cdbget-search): Remove second argument `skk-henkan-key'. 2000-03-22 Mikio Nakajima * skk-server.el (skk-adjust-search-prog-list-for-server-search): Remove unproper comments. 2000-03-21 Mikio Nakajima * experimental/skk-exsearch.el (search-engine): Get forward one character if there is a candidates string in the working buffer. (synchronous-search-engine): Removed (server is connecting with TCP network stream, not started by `start-process'...) (server-search-engine): Removed. (synchronous-search-engine): New slot `success-exit-code' and `error-exit-code' are provided. (core-engine): Refer to slot of eigine `success-exit-code' and `error-exit-code'. If error occured, show stderr as error message. Bug fixed as to BUFFER argument of `call-process'. 2000-03-20 Mikio Nakajima * skk-server.el (skk-open-server): Use temporary variable PROC for NEmacs. * experimental/skk-exsearch.el (search-engine): New superclass. (synchronous-search-engine): Change it to class (not superclass). (asynchronous-search-engine): Specify `search-engine' as its superclass. Doc fixed. (setup-synchronous-engine): New function. 2000-03-19 Mikio Nakajima * SKK-MK (SKK_MODULES): Add skk-exsearch. * experimental/skk-exsearch.el: New experimental program. * skk-develop.el: Move edebug specs of `skk-save-point' and `skk-with-point-move' to skk-macs.el. 2000-03-16 Mikio Nakajima * SKK-MK (SKK-MK-cleanup-trouble-makers): Removed. (SKK-MK-install): Do not use `SKK-MK-cleanup-trouble-makers'. (SKK-MK-install-package): Ditto. (LISPDIR): Remove space between a S expression and paren. (SKK-MK-install): Ditto. (SKK-MK-install-package): Ditto. (SKK-MK-texinfo-format): Ditto. (SKK-MK-what-where): Ditto. (SKK-MK-texinfo-format): Bind `standard-output' to nil. (SKK-MK-generate-autoloads-el): Ditto. (SKK-MK-compile): Remove local `standard-output'. (write-region): Removed. 2000-03-13 Takao KAWAMURA * Makefile (clean): Doesn't remove ../ddskk*. (tar): Remove ../ddskk*. (snapshot): Ditto. 2000-03-12 Mikio Nakajima * skk-vars.el (skk-codename): Specify station name only. * Makefile (snapshot): New entry. 2000-03-11 Mikio Nakajima * Makefile (tar): Modify for tar 1.12. (clean): Remove old archive, links and backup file initiated with dot. * ChangeLog: Move issues before 1999 to ChangeLog.0. 2000-02-25 Daiki Ueno * skk.el (skk-setup-modeline): Use `add-minor-mode' under XEmacs. * skk-kcode.el (skk-input-by-code-or-menu-jump): Use "%s" for the 1st argument of `message'. 2000-02-06 Kenichi OKADA * skk-vars.el (skk-emacs-type): Add `mule5'. (skk-kcode-charset): Ditto. (skk-coding-system-alist): Ditto. (skk-kcode-charset-list): Ditot. * skk.el (skk-jisx0208-to-ascii): Ditto. (skk-mode): Ditto. * skk-macs.el (skk-emacs-type): Ditto. (skk-detect-emacs): Ditto. (skk-str-length): Ditto. (skk-substring): Ditto. (skk-ascii-char-p): Ditto. (skk-str-ref): Ditto. (skk-jisx0208-p): Ditto. * skk-kcode.el (skk-make-char): Ditto. (skk-display-code): Ditto. 2000-02-05 Tsukamoto Tetsuo * experimental/skk-e18.el (insert-and-inherit): Sync with APEL. (number-to-string): Ditto. 2000-01-31 Mikio Nakajima * skk.el (skk-auto-fill-mode): Add defition for Emacs 18. * skk-macs.el (skk-do-auto-fill): Add defition for Emacs 18. 2000-01-30 Tsukamoto Tetsuo * experimental/skk-dos.el (require): Fix. * experimental/skk-e18.el (insert-file-contents-as-coding-system): Sync with APEL. * skk-macs.el (skk-j-mode-on): Create a local keymap here. (skk-latin-mode-on): Ditto. (skk-jisx0208-latin-mode-on): Ditto. (skk-abbrev-mode-on): Ditto. * skk-vars.el (skk-kakutei-key): The value is not necessarily a string. * skk.el (skk-e18-setup): Do not let local key bindings in `skk-j-mode-map', `skk-latin-mode-map', `skk-jisx0208-latin-mode-map', `skk-abbrev-mode-map'. These are not local variables. 2000-01-30 Tsukamoto Tetsuo * skk.el (skk-isearch-forward, skk-isearch-forward-regexp, skk-isearch-backward, skk-isearch-backward-regexp): Enclose with `static-unless' instead of `unless'. 2000-01-30 Mikio Nakajima * experimental/skk-e18.el (skk-hiragana-to-katakana): Moved to skk.el. (skk-katakana-to-hiragana): Ditto. (unread-command-events): Removed. * skk-macs.el (skk-lisp-prog-p): Use `skk-ascii-char-p'. (skk-unread-event): Add definition for Emacs 18. 2000-01-29 Tsukamoto Tetsuo * skk.el: Check `emacs-major-version' instead of `emacs-version' under Emacs 18. 2000-01-29 Tsukamoto Tetsuo * skk-jisx0208.el (skk-setup-modeline): Set the value of `mode-line-format' in each buffer. * skk.el (skk-setup-modeline): Ditto. 2000-01-29 Tsukamoto Tetsuo * experimental/skk-e18.el (skk-hiragana-to-katakana): New function for Nemacs. (skk-katakana-to-hiragana): Ditto. (window-minibuffer-p): Refer to WINDOW when it is given. * skk.el (skk-search-and-replace): Use `goto-char' to go back to the beginning of the match, instead of `backward-char'. 2000-01-29 Daiki Ueno * skk-macs.el (skk-charsetp): Rearrange conditionals. 2000-01-28 Tsukamoto Tetsuo * skk.el (skk-e18-setup): Add `skk-abbrev-mode-map'. 2000-01-28 Mikio Nakajima * skk.el (skk-make-char): Moved to skk-kcode.el. * skk-vars.el (skk-cursor-change-width): Bind default variable to nil for nemacs. (skk-use-color-cursor): Ditto. (skk-hankaku-alist): Define for mule1 and nemacs, too. (skk-coding-system-alist): Define string and number data for nemacs. * experimental/skk-e18.el (skk-j-mode-on): Removed (skk-j-mode-on): Ditto. (skk-latin-mode-on): Ditto. (skk-jisx0208-latin-mode-on): Ditto. (skk-abbrev-mode-on): Ditto. (skk-hankaku-alist): Ditto. (skk-emulate-original-map): Ditto. (skk-mode): Remove advice. (skk-e18-setup): Moved to skk.el. (skk-current-local-map): Ditto. (skk-e18-self-insert-keys): Ditto. 2000-01-27 Tsukamoto Tetsuo * experimental/skk-e18.el (overlayp): New emulation. 2000-01-27 Mikio Nakajima * experimental/skk-correct.el: New experimental program. * SKK-MK (SKK_MODULES): Add skk-correct. * skk.el: Do not occur error even on Emacs 18 (just warning...). (skk-jisx0208-to-ascii): Add defition taken from skk-e18.el for nemacs and mule1. * experimental/skk-e18.el (skk-jisx0208-to-ascii): Removed. 2000-01-26 Tsukamoto Tetsuo * experimental/skk-e18.el (save-match-data): `defmacro-maybe' instead of `defmacro'. 2000-01-26 Mikio Nakajima * skk-macs.el (skk-ascii-char-p): typo fixed. 2000-01-26 Tsukamoto Tetsuo * experimental/skk-e18.el (skk-hankaku-alist): New variable. (skk-jisx0208-to-ascii): New function. 2000-01-26 Mikio Nakajima * skk.el (skk-henkan-show-candidate-subr): Revive. 2000-01-25 Mikio Nakajima * skk-macs.el (skk-str-length): Use `string-to-char-list' for Emacsen other than XEmacs, Mule4 and Mule3 (hereinafter referred to as `old Emacs'. (skk-str-ref): Ditto. (skk-read-event): Use `read-char' for old Emacs. (skk-substring): Use last definition for old Emacs. (skk-ascii-char-p): Compare character using `<' for Mule1 and NEmacs. (skk-jisx0208-p): Ditto. * skk-kcode.el (skk-make-string): Do not use `skk-make-char' for NEmacs. * skk.el (skk-make-temp-file): Use `expand-file-name'. Set end slashed directory to temporary variable DIR. Do not access A drive even if system-type is MS-DOS oriented one. (skk-make-char): Use last definition for mule1. (skk-mode): Use static-if for for the place using `skk-emacs-type'. (skk-kill-emacs-without-saving-jisyo): Ditto. (skk-henkan-show-candidates): Ditto. * experimental/skk-e18.el (read-event): Removed. (skk-in-minibuffer-p): Ditto. (skk-lisp-prog-p): Ditto. (skk-make-string): Ditto. (skk-make-temp-file): Ditto. (skk-str-length): Ditto. (skk-str-ref): Ditto. (skk-make-char): Ditto. (window-minibuffer-p): Temporarily defined until poe-18.el defines it. 2000-01-25 Tsukamoto Tetsuo * SKK-MK (SKK_MODULES): Do not install skk-cursor.el for Emacs 18. * experimental/skk-e18.el (skk-use-color-cursor): Default to nil under Emacs 18. (skk-cursor-change-width): Ditto. (skk-e18-self-insert-keys): New variable. (skk-lisp-prog-p): Don't redefine here -- use the original. (skk-in-minibuffer-p): Ditto. (skk-str-length): New inline function. (skk-str-ref): Ditto. (search-backward): New advice -- by $BCfEg$5$s(B. (re-search-backward): Ditto. (window-minibuffer-p): New function -- by $BCfEg$5$s(B. (skk-e18-define-j-mode-map): Abolish. (insert-file-contents-as-coding-system): Work arond for Mule 1. (skk-make-string): This is only for Nemacs. (skk-make-char): This is for Mule 1. * skk-macs.el (skk-emacs-type): Add `mule1'. (skk-detect-emacs): Ditto. * skk-vars.el (skk-emacs-type): Ditto. (skk-background-mode): Avoid an error under Emacs 18. (skk-cursor-default-color): Ditto. (skk-isearch-overriding-local-map): Ditto. * skk.el (skk-isearch-forward): This function is not obsolete for Emacs 18 -- though Emacs 18 seems obsolete ;^) (skk-isearch-forward-regexp): Ditto. (skk-isearch-backward): Ditto. (skk-isearch-backward-regexp): Ditto. 2000-01-24 Takao KAWAMURA * SKK-MK (SKK-MK-generate-autoloads-el): corrected the indentation. 2000-01-23 Tsukamoto Tetsuo * Makefile (clean): Delete experimental/skk-isearch.el. * SKK-MK: Copy "experimental/skk-is-n.el" to "experimental/skk-isearch.el" under Emacs 18. (SKK-MK-compile): Also gather autoloads from "experimental/skk-isearch.el". (SKK-MK-generate-autoloads-el): Use a file name without its directory name. * experimental/skk-is-n.el: New file. 2000-01-23 Tsukamoto Tetsuo * Makefile (clean): Delete experimental/*.elc. * SKK-MK: Require "skk-e18" if `emacs-major-version' is 18. (SKK-MK-texinfo-coding-system): Modify for Emacs 18. (SKK_MODULES): Ditto. (SKK-MK-compile): Ditto. (SKK-MK-install): Ditto. (SKK_INFOS): Creating info files is not yet supported under Emacs 18. (SKK-MK-compile-info): Do nothing if `SKK_INFOS' is nil. (SKK-MK-generate-autoloads-el): Make sure the point is eobp before the last comment is inserted. * experimental/skk-e18.el: New file. * skk-macs.el (skk-emacs-type): Modify for Nemacs. (skk-detect-emacs): Ditto. * skk-server.el: Require "static" at the compile time. (skk-open-server): Use `static-cond'. Call `process-kanji-code' under Nemacs. * skk-vars.el (skk-emacs-type): Modify for Nemacs. (skk-cursor-default-color): Default to nil under Nemacs. (skk-background-mode): Ditto. (skk-kcode-charset): Ditto -- It's OK. Don't use this variable. (skk-isearch-breakable-character-p-function): Ditto. (skk-check-okurigana-on-touroku): Rename from `skk-check-okurigana-on-toroku'. * skk.el: Don't refer to `skk-branch-name' before "skk-vars" is loaded. Require "skk-e18" under Emacs 18. If loading "easymenu" fails, ignore `easy-menu-define'. (skk-setup-delete-backward-char): If `overriding-local-map' is not used, use the return value of `current-global-map' instead. * tinyinstall.el: (emacs-major-version): New variable for Emacs 18. (member): New function for Emacs 18. 2000-01-23 Mikio Nakajima * skk.el (skk-henkan-show-candidates): Remove unnecessary temporary variable STR. 2000-01-21 Mikio Nakajima * skk.el (skk-insert-new-word): Change for new `skk-eval-string'. (skk-henkan-show-candidate-subr): Ditto. (skk-nunion): Change open parens to closed ones. * skk-macs.el (skk-eval-string): Return STRING. 2000-01-19 Tsukamoto Tetsuo * SKK-MK: Typo. * skk-isearch.el (skk-isearch-find-keys-define): New function. (skk-isearch-setup-keymap): Call it. * skk.el (skk-truncate-message): Use `truncate-string' instead of `truncate-string-to-width'. 2000-01-19 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-setup-keymap): Find keys that invoke SKK in `current-global-map', and let them execute `skk-isearch-skk-mode' in isearch-mode. * skk-jisx0201.el: Modify comments. 2000-01-19 Mikio Nakajima * skk.el (skk-insert-new-word): Use `skk-eval-string'. (skk-insert-new-word): Remove unnecessary temporary variable FUNC. * skk-macs.el (skk-lisp-prog-p): Move from skk.el and make it inline. (skk-eval-string): New inline function. 2000-01-18 Tsukamoto Tetsuo * SKK-MK (standard-character-unification-table-for-decode): Under Emacs 20.2, set this variable and compile skk-jisx0201.el properly. 2000-01-17 Murata Shuuichirou * skk.el (skk-kakutei-cleanup-buffer): Convert hiragana as okurigana into katakana even if skk-okurigana is nil. 2000-01-17 FURUE Hideyuki * skk-cursor.el (skk-cursor-current-color): Evaluate the clauses in original order. (^_^; (keyboard-quit): Remove advice. 2000-01-17 FURUE Hideyuki * SKK-MK (SKK-MK-compile): Keep ``standard-output'' t. * make.bat (target to clean): Typo fixed. * READMEs/README.win: Correct sample ``.emacs'' files. 2000-01-17 SAKAI Kiyotaka * skk-leim.el: Not to overwrite user's input method setting. 2000-01-15 Tsukamoto Tetsuo * skk-jisx0201.el: Require "static" at the compile time. (skk-jisx0201-zenkaku): Use `static-cond'. (skk-jisx0201-hankaku): Ditto. (skk-setup-modeline): Ditto. 2000-01-08 Mikio Nakajima * skk.el (skk-setup-delete-selection-mode): Setup for pending-del on XEmacs. (skk-lisp-prog-p): Check first character by aref instead of skk-str-ref. Check second character is more than ?\37, too. 2000-01-02 Tsukamoto Tetsuo * experimental/skk-dos.el: Fix comments. (require): Fix the advice. 1999-12-31 Mikio Nakajima * skk-lookup.el (skk-lookup-get-method): Omit check by `skk-lisp-prog-p'. (skk-lookup-search-1): New subroutine. (skk-lookup-search): Use `skk-lookup-search-1'. 1999-12-30 Tsukamoto Tetsuo * skk-jisx0201.el: Add Comments. (skk-jisx0201-roman-rule-list, skk-jisx0201-base-rule-tree, skk-jisx0201-roman-rule-tree. skk-jisx0201-roman): New variables. (skk-toggle-jisx0201): New function. (skk-jisx0201-mode-on): Accept an optional argument. (skk-kakutei): Refer to `skk-jisx0201-roman'. 1999-12-30 Tsukamoto Tetsuo * SKK-MK (LISPDIR): Select a good place for MS-DOS and Windows. (VERSION_SPECIFIC_LISPDIR): Ditto. (standard-translation-table-for-decode): Under Emacs 20.3 or later, set this variable and compile skk-jisx0201.el properly. * etc/Emacs.ad: Typo. * experimental/skk-dos.el: New file. * skk-isearch.el: Always require "skk". * skk-jisx0201.el (skk-setup-modeline): Don't check the feature "xemacs". Refer to `skk-emacs-type' instead. * skk-study.el (skk-study-file): Let the default value appropriate for MS-DOS. (skk-study-backup-file): Ditto. (skk-study-save): Don't use `copy-file' under MS-DOS. * skk-vars.el (skk-cursor-change-width): Ugh, fix the default value. * tinyinstall.el (install-prefix): Select a good place for MS-DOS and Windows. 1999-12-27 Tsukamoto Tetsuo * skk-vars.el (skk-background-mode): Don't call `x-color-values' if it is not defined. (skk-init-file, skk-jisyo, skk-backup-jisyo, skk-record-file): Let the default values appropriate for MS-DOS. (skk-use-color-cursor, skk-cursor-change-width): nil by default under MS-DOS. 1999-12-26 Mikio Nakajima * skk-vars.el (skk-rule-tree): Doc fixed. (skk-cursor-change-width): Change default value to value of variable `window-system'. * skk.el (skk-mode): Remove locally skk-pre-command from pre-command-hook and skk-after-point-move from post-command-hook when exit skk-mode. * skk-macs.el (skk-get-char): Comment (it is not used). (skk-set-char): Ditto. (skk-set-prefix): Ditto. Use `cdr' instead of `nthcdr'. (skk-charsetp): Simplify. (skk-color-display-p): Add fboundp check of `x-display-color-p'. Omit `window-system' is eq `x' or not. 1999-12-23 Mikio Nakajima * skk-macs.el: Eliminate all spaces which existed between parens. (skk-get-last-henkan-data): Renamed to `skk-get-last-henkan-data'. (skk-put-last-henkan-data): Renamed to `skk-put-last-henkan-datum'. (skk-put-last-henkan-data): New inline function. * skk.el (skk-update-jisyo-original): Get HENKAN-BUFFER temporary variable only when `skk-update-end-function' is non-nil. (skk-remove-redundant-okurgana): New function. (skk-henkan-in-minibuff): Use `skk-remove-redundant-okurgana'. Doc fixed. Remove OKURIGANA temporary variable. (skk-version): Remove a `,' between version number and code name. (skk-remove-redundant-okurgana): Bug fixed. * skk-vars.el: Remove unnecessary blanks between parens. * skk-viper.el (skk-viper-normalize-map): Use `static-if' instead of `if'. Call `skk-viper-normalize-map-function' even if SKK related minor mode map is in minor-mode-map-alist. 1999-12-21 Murata Shuuichirou * skk-macs.el (skk-color-display-p): Check whether X or not, before use `x-display-color-p'. * skk-viper.el (read-from-minibuffer): Advice only when skk-use-color-cursor is no-nil. 1999-12-20 Mikio Nakajima * skk.el (kill-buffer): Doc fixed. (minibuffer-keyboard-quit): Add advice only for XEmacs. * READMEs/PROPOSAL ($BJ,3d$7$?%U%!%$%k$KI,?\$N5-=R(B): Modify for Daredevil. * READMEs/README.win (Message-ID): Ditto. 1999-12-19 Mikio Nakajima * skk.el: Eliminate all spaces which existed between parens. (skk-mode): Require `skk-cursor.el' everytime skk-mode is called. (skk-mode-once-again): New function. (minibuffer-keyboard-quit): Apply Tsukamoto san's Message-Id: <199912181531.AAA24324@ring.etl.go.jp> patch. * skk-vars.el: Eliminate all spaces which existed between parens. (skk-cursor): New group. (skk-cursor-default-color): Change its group to skk-cursor. (skk-cursor-hiragana-color): Ditto. (skk-cursor-katakana-color): Ditto. (skk-cursor-jisx0208-latin-color): Ditto. (skk-cursor-latin-color): Ditto. (skk-cursor-abbrev-color): Ditto. (skk-cursor-report-set-error): Ditto. (skk-cursor-change-width): Ditto. * skk-cursor.el: Eliminate all spaces which existed between parens. Check if display supports color. (isearch-mode-end-hook): Add `skk-cursor-set-properly' to the hook. (skk-cursor-current-color): Slightly simplified. (skk-cursor-set-color): Omit check of `skk-use-color-cursor' is nil or non-nil. Check if COLOR is non-nil. (skk-cursor-set-properly): New optional arg COLOR. (skk-cursor-setup-minibuffer): New function. (minibuffer-setup-hook): Hook `skk-cursor-setup-minibuffer'. (skk-mode-hook): Hook `skk-mode-once-again'. (minibuffer-exit-hook): Set cursor in the latest current buffer (not minibuffer). * skk-viper.el: Eliminate all spaces which existed between parens. (skk-cursor-set-properly): Change function to advice. (skk-mode-hook): Hook `skk-mode-once-again'. (viper-toggle-case): Japanized version. Hirakana to Katakana and vice versa. (viper-intercept-ESC-key): Doc fixed. (vip-intercept-ESC-key): Ditto. (vip-Append): New advice of skk-viper-cursor-ad. (vip-Insert): Ditto. (vip-insert): Ditto. (vip-intercept-ESC-key): Ditto. (vip-open-line): Ditto. (viper-Append): Ditto. (viper-Insert): Ditto. (viper-hide-replace-overlay): Ditto. (viper-insert): Ditto. (viper-intercept-ESC-key): Ditto. (viper-open-line): Ditto. (skk-abbrev-mode): Ditto. (skk-jisx0208-latin-mode): Ditto. (skk-kakutei): Ditto. (skk-latin-mode): Ditto. (skk-mode): Ditto. (skk-toggle-kana): Ditto. (skk-viper-saved-cursor-color): New internal variable. (viper-read-string-with-history): New advice of skk-viper-ad. (read-from-minibuffer): Ditto. (skk-mode): Change class of skk-viper-cusror-ad to after. (skk-cursor-set-properly): Change its class to around. Set `viper-insert-state-cursor-color' to the value of `skk-viper-saved-cursor-color' if insert-state. (viper-insert-state-cursor-color): Make it buffer-local variable. ;; * skk-isearch.el: Eliminate all spaces which existed between parens. Modify doc string about hooks. 1999-12-18 Tsukamoto Tetsuo * experimental/skk-hankaku-mode.el: Hey, is she still there? She's coming home. :-) No longer in the repository. * skk-cursor.el (minibuffer-setup-hook): Fix the behaviour under XEmacs. 1999-12-18 Tsukamoto Tetsuo * skk-jisx0201.el (skk-setup-modeline): If `skk-status-indicator' is left and the face `modeline' is not proportional, use the same number of columns to display each SKK status, except for `skk-jisx0201-mode'. * skk.el (skk-setup-modeline): Ditto. 1999-12-18 Tsukamoto Tetsuo * skk-cursor.el: (abort-recursive-edit): Advise under XEmacs. (skk-mode): Call `skk-cursor-set-properly'. (skk-auto-fill-mode): Seems this advice is not needed -- though I'm not sure. (skk-insert): New advice. Call `skk-cursor-set-properly' when `skk-abbrev-mode' is non-nil. (minibuffer-setup-hook): Adjust cusor color under XEmacs. 1999-12-17 Tsukamoto Tetsuo * skk-isearch.el (isearch-search): New advice. 1999-12-16 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-abbrev-mode-p): New function. (skk-isearch-current-mode): Enable to recognize abbrev mode. (isearch-repeat): This should be `after' advice. (isearch-edit-string): New advice. * skk-vars.el (skk-isearch-mode-string-alist): Add a string for abbrev mode. 1999-12-16 Yuh Ohmura * make.bat: correct bug. 1999-12-15 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-setup-keymap): No longer check if `skk-kakutei-key' is defined. 1999-12-15 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-delete-char): Fix regexp by `regexp-quote'. 1999-12-15 Tsukamoto Tetsuo * skk-isearch.el (isearch-repeat): Delete unnecessary or unreasonable elements from `isearch-cmds'. 1999-12-15 Mikio Nakajima * skk.el (skk-mode): Move skk-cursor.el related codes to skk-cursor.el. * skk-cursor.el (skk-mode): Remove duplicated advice. Do not use skk-cursor-set-properly. Add codes in the top level in order to set cursor properly when first time skk-cursor.el is loaded. 1999-12-14 Tsukamoto Tetsuo * skk-isearch.el: Require `skk-vars' also at the load time. (skk-isearch-mode-setup): Make sure `skk-isearch-mode-map' is a keymap. (isearch-repeat): Rewrite the advice so that it look like advice. :-) There should be no changes in its behaviour. 1999-12-14 FURUE Hideyuki * skk-cursor.el (set-buffer, erase-buffer): Remove advices. 1999-12-14 Mikio Nakajima * SKK-MK (SKK_DAREDEVIL_NOT_USE): Add skk-vip. 1999-12-13 Mikio Nakajima * skk-viper.el (skk-cursor-set-properly): Sync up with skk-cursor-set-properly in skk-cursor.el. * skk-cursor.el (skk-save-jisyo-original): Change defadvice for `skk-save-jisyo'. (skk-cursor-set-properly): Check current buffer has a window or not first. 1999-12-13 FURUE Hideyuki * skk-cursor.el (skk-cursor-current-color): Change order again. (keyboard-quit): New advice. (newline): Revive advice. (skk-latin-mode): Ditto. (skk-jisx0208-latin-mode): Ditto. (skk-abbrev-mode): Ditto. (skk-auto-fill-mode): Ditto. (skk-toggle-kana): Ditto. (skk-kakutei): Ditto. (skk-save-jisyo-original): Ditto. (skk-katakana-region): Ditto. (skk-hiragana-region): Ditto. (skk-jisx0208-latin-region): Ditto. (skk-latin-region): Ditto. (skk-jisx0201-region): Ditto. (skk-gyakubiki-message): Ditto. (skk-gyakubiki-katakana-region): Ditto. (skk-gyakubiki-katakana-message): Ditto. (skk-hurigana-region): Ditto. (skk-hurigana-message): Ditto. (skk-hurigana-katakana-region): Ditto. (skk-romaji-region): Ditto. (skk-romaji-message): Ditto. (skk-delete-backward-char): Ditto. (skk-start-henkan): Ditto. (force-mode-line-update): Remove advice. 1999-12-13 FURUE Hideyuki * skk-comp.el (skk-completion-original): Bug fixed. (skk-previous-completion-original): Ditto. * skk-cursor.el (skk-cursor-current-color): Change order to evaluate `skk-abbrev-mode' first. (newline): Remove advice. (skk-latin-mode): Ditto. (skk-jisx0208-latin-mode): Ditto. (skk-abbrev-mode): Ditto. (skk-auto-fill-mode): Ditto. (skk-toggle-kana): Ditto. (skk-kakutei): Ditto. (skk-save-jisyo-original): Ditto. (skk-katakana-region): Ditto. (skk-hiragana-region): Ditto. (skk-jisx0208-latin-region): Ditto. (skk-latin-region): Ditto. (skk-jisx0201-region): Ditto. (skk-gyakubiki-message): Ditto. (skk-gyakubiki-katakana-region): Ditto. (skk-gyakubiki-katakana-message): Ditto. (skk-hurigana-region): Ditto. (skk-hurigana-message): Ditto. (skk-hurigana-katakana-region): Ditto. (skk-romaji-region): Ditto. (skk-romaji-message): Ditto. (skk-delete-backward-char): Ditto. (skk-start-henkan): Ditto. (force-mode-line-update): New advice. (after-make-frame-hook): Remove hook. (minibuffer-setup-hook): Simplify hook. 1999-12-12 Mikio Nakajima * skk-cursor.el (skk-cursor-set-properly): Bug fixed. * skk.el (skk-mode): Call `skk-cursor-set-properly` if `skk-use-color-cursor' or `skk-cursor-change-width' is non-nil. Not required skk-num.el expressly. (skk-num-list $B$H$$$&(B buffer local $BJQ?t$K4X$9$k%(%i!<$r2sHr$9$k$?$a$K(B skk-use-numeric-conversion $B$,(B non-nil $B$G$"$l$P(B skk-mode $BFb$G@h$K(B skk-num.el $B$r(B require $B$7$F$$$?$N$@$,!">e5-$NLdBj$O(B daredevil $B$K8B$C(B $B$F$O5/$3$k2DG=@-$,$J$$$N$G!"L@<(E*$J(B require $B$r;_$a$?(B ($BI,MW$H$J$C(B $B$?$H$-$K(B autoload $B$5$l$k(B)$B!#(B skk-use-numeric-conversion $B$,(B non-nil $B$G!"(Bskk-num.el $B$N(B load $BA0$K(B let $B$G(B temporary $BJQ?t$H$7$F(B bind $B$7!"$=$N(B let $BFb$G(B skk-num.el $B$r(B require $B$7$?$H$-!"(Blet $B$r=P$?8e$K(B skk-num-list $B$,(B void $B$K$J$k$H$$$&(B $B%(%i!<$,$"$C$?!#(BDaredevil $B$G$OJQ?t$OA4$F(B skk-vars.el $B$KF~$C$F$*$j!"(B $B$3$l$r(B skk.el $B$,(B require $B$7$F$$$k$N$G!"(Bskk-num-list $BJQ?t$O(B skk.el $B$N(B load $BD>8e$+$iB8:_$7$F$$$k$N$G!"$3$NLdBj$OH/@8$7$J$$!#(B * skk-vars.el (skk-completion-function): Add descriptions to doc string. (skk-previous-completion-function): Ditto. 1999-12-10 FURUE Hideyuki * skk.el (skk-delete-okuri-mark): Bug fixed. 1999-12-09 FURUE Hideyuki * skk.el (keyboard-quit): Typo fixed. (query-replace-regexp): Disable advice because don't work correctly. (query-replace): Ditto. * skk-cursor.el (goto-line): Removed. (insert-file): Ditto. (execute-extended-command): Ditto. (read-from-minibuffer): Ditto. (completing-read): Ditto. (minibuffer-keyboard-quit): Ditto. (exit-minibuffer): Ditto. (abort-recursive-edit): Ditto. (delete-window, select-window, select-frame, delete-frame, set-buffer, erase-buffer): New advices. (kill-buffer, bury-buffer, switch-to-buffer, pop-to-buffer, other-window): Included among the above advices. (skk-cursor-current-color): New function. Extracted from ``skk-cursor-set-properly''. (skk-cursor-set-properly): Call ``skk-cursor-current-color''. (minibuffer-setup-hook): Preserve cursor color in ``skk-cursor-color-before-entering-minibuffer''. (minibuffer-exit-hook): Retrieve cursor color from ``skk-cursor-color-before-entering-minibuffer''. * skk-vars.el (skk-cursor-color-before-entering-minibuffer): New internal buffer local variable. * doc/skk.texi ($B8+=P$78l$NJd40(B): Moved @footnote outside @group block. 1999-12-08 Tsukamoto Tetsuo * skk-cursor.el (exit-minibuffer): Set cursor color even if the point still exists in the minibuffer. (minibuffer-keyboard-quit): Ditto. * skk-vars.el (skk-check-okurigana-on-toroku): Fix doc string. 1999-12-07 Tsukamoto Tetsuo * skk-vars.el (skk-check-okurigana-on-toroku): New variable. * skk.el (skk-henkan-in-minibuff): If `skk-check-okurigana-on-toroku' is non-nil, prompt user to check okurigana. 1999-12-07 Tsukamoto Tetsuo * skk-cursor.el (completing-read): Fix the advice. (read-from-minibuffer): Ditto. 1999-12-07 Tsukamoto Tetsuo * skk-cursor.el (completing-read): Don't use `unwind-protect'. Use `condition-case'. Don't advise to XEmacs' `completing-read'. (read-from-minibuffer): New advice. Call `skk-cursor-set-properly'. * skk-jisx0201.el (fence-mode-map): defvar under Mule 2. 1999-12-07 Mikio Nakajima * skk-macs.el (skk-detect-emacs): New macro. * skk-cursor.el (completing-read): Disabled. * SKK-MK (write-region): New advice, but does not work (;_;)... 1999-12-06 Tsukamoto Tetsuo * skk-isearch.el (isearch-repeat): Compile the advice at the compile time. 1999-12-06 Tsukamoto Tetsuo * READMEs/CVS_00readme: New file, whose contents written by $B 1999-12-05 Takao KAWAMURA * SKK-MK (SKK-MK-compile-info): New function. * Makefile (info): New entry. 1999-12-05 Tsukamoto Tetsuo * skk-cursor.el (completing-read): New advice. Call `skk-cursor-set-properly'. 1999-12-04 Mikio Nakajima * skk-isearch.el (skk-isearch-redo-function): Use list for handler of condition-case. * skk.el (skk-kakutei-initialize): Remove skk-num and skk-look related code. (skk-undo-kakutei): Use list for handler of condition-case. * skk-look.el (skk-kakutei-initialize): New advice for initialize skk-look related variables. * skk-num.el (skk-kakutei-initialize): New advice for initialize skk-num related variables. 1999-12-04 Tsukamoto Tetsuo * etc/Emacs.ad: New file. This is for displaying menu items in Japanese under XEmacs. 1999-12-04 Tsukamoto Tetsuo * skk-jisx0201.el (skk-jisx0201-insert): When starting conversion, call `skk-cursor-set-properly'. 1999-12-04 Tsukamoto Tetsuo * skk-isearch.el (isearch-repeat): New advice. 1999-12-04 Tsukamoto Tetsuo * skk-jisx0201.el (skk-toggle-katakana): Set `skk-input-mode-string'. 1999-12-04 Tsukamoto Tetsuo * skk-cursor.el (skk-cursor-set-properly): Change cursor color to `skk-cursor-jisx0201-color' when needed. * skk-jisx0201.el (skk-toggle-katakana): Call `skk-cursor-set-properly'. 1999-12-04 Tsukamoto Tetsuo * skk.el (skk-define-menu-bar-map): Call lambda expressions by `call-interactively'. 1999-12-04 Murata Shuuichirou * skk-macs.el (skk-find-coding-system): Check symbolicity of arg, before pass it to `find-coding-system'. xemacs's `find-coding-system' doesn't like string argument. 1999-12-03 Mikio Nakajima * skk-study.el: Remove ``;; -*- mode: emacs-lisp; byte-compile-dynamic: t;-*-'' and ``;; -*- byte-compile-dynamic-docstring: t;-*-'' cooklies. * skk-isearch.el: Remove ``;; -*- byte-compile-dynamic-docstring: t;-*-'' cookie. * skk-look.el: Remove ``;; -*-byte-compile-dynamic: t;-*-'' cookie. 1999-12-03 Tsukamoto Tetsuo * SKK-MK (SKK_INFOS): Add skk.info-5 and skk.info-6. * doc/.cvsignore: Ditto. * experimental/dbm/skk-dbm.el: Don't require `skk-foreword'. * experimental/skk-dcomp.el: Ditto. (skk-dcomp-extent): Now this is a local variable. * skk-jisx0201.el: Load "jisx0201" under Mule 2. (newline, newline-and-indent, exit-minibuffer): New advices. Check if `skk-egg-like-newline' is non-nil. (skk-jisx0201-string-conversion): New function. (skk-jisx0201-zenkaku, skk-jisx0201-hankaku): New functions that call it. (skk-jisx0201-insert): Call `skk-jisx0201-zenkaku' instead of `japanese-zenkaku'. (skk-hiragana-to-jisx0201-region): Call `skk-jisx0201-hankaku' instead of `japanese-hankaku'. (skk-katakana-to-jisx0201-region): Ditto. 1999-12-02 Yuh Ohmura (yutopia@t3.rim.or.jp> * READMEs/CVS_on_Windows: update * make.bat: add what-where and clean option 1999-12-01 Mikio Nakajima * skk-abbrev.el: Do not require stack-m. (skk-completion-original): Do not use stack-all. * skk-look.el: Do not require stack-m and path-util. (skk-look-completion): Do not use stack-all. (skk-look-1): Use `with-temp-buffer'. Do not use `condition-case'. * skk-comp.el: Do not require stack-m. (skk-completion-original): Do not use stack-nth, stack-push, stack-pop. (skk-previous-completion-original): Ditto. * skk-vars.el (skk-completion-depth): Doc modified slightly. (skk-look-working-buffer): Ditto. * SKK-MK (SKK_MODULES): Remove stack-m. (SKK_DAREDEVIL_NOT_USE): Add stack-m. * stack-m: Removed. 1999-11-30 Mikio Nakajima * skk-vars.el (skk-start-henkan-with-completion-char): Use `?\240' instead of 160 to represent character. (skk-backward-and-set-henkan-point-char): Use `?\321' instead of 209 to represent character. 1999-11-29 Tsukamoto Tetsuo * SKK-MK: Require `poe'. 1999-11-29 Murata Shuuichirou * skk-macs.el (skk-find-coding-system): New macro. * skk-study.el (skk-study-save,skk-study-read-1): Use `skk-find-coding-system'. * skk.el (skk-save-jisyo-1): Ditto. * skk.el (skk-get-jisyo-buffer): Use `skk-find-coding-system'. Accept pair of filename and coding-system as an argument. * skk-obsolete.el (skk-obsolete-function-alist): Replace `skk-set-cursor-color-properly' with `skk-set-cursor-properly'. 1999-11-29 Tsukamoto Tetsuo * skk-cursor.el (skk-cursor-set-properly): Set color properly on `skk-abbrev-mode'. 1999-11-29 Tsukamoto Tetsuo * skk-cursor.el (newline, execute-extended-command, skk-delete-backward-char, skk-start-henkan): Advise, maybe, more effectively. 1999-11-29 Takao KAWAMURA * Makefile (clean): Remove skk-autoloads.el. (tar): Depend on clean. 1999-11-28 FURUE Hideyuki * skk-comp.el (skk-completion-original): Use `skk-completion-depth' to search completed word. (skk-previous-completion-original): Ditto. * skk-kakasi.el (skk-gyakubiki-message): Use "%s" as the first message argument to display properly string containing `%'. (skk-gyakubiki-katakana-message): Ditto. (skk-hurigana-message): Ditto. (skk-hurigana-katakana-message): Ditto. (skk-romaji-message): Ditto. * skk.el (skk-mode): Bind `skk-start-henkan-with-completion-char' and `skk-backward-and-set-henkan-point-char' for each skk related maps. (skk-insert): Set this-command to `skk-completion' when last-command-char is equal to `skk-previous-completion-char', and call `skk-kana-input' when last-command-is neither `skk-previous-completion-char' nor `skk-next-completion-char'. * skk-vars.el (skk-start-henkan-with-completion-char): New user variable. (skk-backward-and-set-henkan-point-char): Ditto. (skk-completion-depth): New internal variable. 1999-11-28 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-delete-char): Check the car of the cdr of each element of `isearch-cmds', and update it, if necessary, according to the return value of `skk-isearch-mode-string'. 1999-11-28 Tsukamoto Tetsuo * skk-cursor.el (newline): New advice. Call `skk-cursor-set-properly'. (skk-delete-backward-char): Ditto. (skk-start-henkan): Ditto. (minibuffer-setup-hook): If `skk-insert' or `skk-start-henkan' has just been executed, call `skk-cursor-set-properly', else set cursor color to `skk-cursor-default-color'. 1999-11-28 Mikio Nakajima * skk.el (minibuffer-keyboard-quit): Use `static-cond'. * READMEs/CVS_on_Windows: New file. 1999-11-28 Takao KAWAMURA * SKK-MK (SKK-MK-generate-autoloads-el): Generate skk-autoloads.el. * skk.el (skk-version): Add `;;;###autoload' cookie. * skk-server.el (skk-server-version): Ditto. * skk-num.el (skk-num-compute-henkan-key): Ditto. (skk-num): Ditto. * skk-jisx0201.el (skk-toggle-katakana): Ditto. * skk-study.el (skk-study-check-alist-format): Remove `;;;###autoload' cookie. 1999-11-28 Tsukamoto Tetsuo * skk-study.el: Force emacs-lisp-mode. (skk-study-check-alist-format-1): Use `skk-str-length' instead of `length' for okuri-ari and okuri-nasi entries. 1999-11-28 Mikio Nakajima * READMEs/INSTALL: Change outline mode and add descriptions about custom package. * skk-study.el (skk-study-file-format-version): Change version number to string. * SKK-MK (SKK_PACKAGE_NOT_USE): New constant. (SKK_DAREDEVIL_NOT_USE): Ditto. (SKK-MK-install): Make directories, SKK_LISPDIR, SKK_DATADIR and SKK_INFODIR if they do not exist. Remove SKK_DAREDEVIL_NOT_USE from SKK_MODULES and delete related files. (SKK-MK-install-package): Remove SKK_PACKAGE_NOT_USE and SKK_DAREDEVIL_NOT_USE from SKK_MODULES and delete related files. * doc/skk.texi (Makefile$B$NJT=8$H%$%s%9%H!<%k(B): Doc fixed. * skk-tut.el (skktut-end-tutorial): Refer to `skk-branch-name', `skk-ml-command-address' and `skk-ml-address'. Doc fixed. * skk.el (skk-version): Refer to `skk-branch-name'. (skk-%-to-%%): Removed. * skk-vars.el (skk-branch-name): New constant. (skk-ml-command-address): New constant. (skk-codename): Contain rail company name. 1999-11-28 FURUE Hideyuki * skk-num.el (skk-num-convert): Bug fixed. * skk.el (skk-henkan-show-candidates): Ditto. (skk-henkan-show-candidate-subr): Do not use `skk-%-to-%%'. * skk-kcode.el (skk-char-to-hex): Bug fixed. 1999-11-25 Tsukamoto Tetsuo * skk-jisx0201.el (skk-setup-modeline): Make sure, under XEmacs, `modeline-format' in each buffer is a list. * skk.el (skk-setup-modeline): Ditto. 1999-11-25 TSUMURA Tomoaki * skk.el (skk-katakana-region): Fix the problem that lambda function returns `nil' on byte-compiled code. (skk-hiragana-region): Ditto. 1999-11-25 Takao KAWAMURA * skk-autoloads.el: Added an entry for `skk-compile-rule-list'. * skk.el (skk-compile-rule-list): ;;;###autoload * skk-tut.el (skk-tutorial): Fixed to be used with the version 11 or later. (skktut-end-tutorial): Modified for Daredevil SKK. Activated (require 'skk-vars) while being loaded. 1999-11-24 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-mode-setup): Call `skk-isearch-setup-keymap' in this function, not at top level, so that `skk-kakutei-key' can be set in `skk-init-file'. 1999-11-24 FURUE Hideyuki * skk-isearch.el (skk-isearch-mode-setup): Call `skk-erase-prefix' with its argument non-nil in `skk-isearch-working-buffer'. 1999-11-24 Mikio Nakajima * SKK-MK (SKK-MK-install-package): delete 'skk-autoloads from SKK_MODULES. * skk-isearch.el (skk-isearch-mode-message): Adjust doc string. 1999-11-24 FURUE Hideyuki * skk.el (skk-mode): Call `skk-create-file' for `skk-jisyo'. 1999-11-23 Tsukamoto Tetsuo * skk-jisx0201.el (skk-setup-modeline): Fix typo -- use `default-modeline-format', not `default-mode-line-format' under XEmacs. * skk.el (skk-setup-modeline): Ditto. 1999-11-22 Tsukamoto Tetsuo * doc/.cvsignore: Add skk.info-4. 1999-11-22 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-search-string): Use `>' instead of `/='. 1999-11-22 Tsukamoto Tetsuo * skk-isearch.el: Use `static-if', requiring "static" at the compile time. 1999-11-22 Tsukamoto Tetsuo * skk-isearch.el (skk-isearch-setup-keymap): Define `skk-kakutei-key' instead of "\C-j" if the symbol value is already set. Define backward-deleting keys to run `skk-isearch-delete-char', not merely writing "\177". (skk-isearch-newline): Do not call `isearch-printing-char' if no ASCII approximation to `last-command-char' is returned. * skk.el (skk-setup-modeline): Use `static-cond'. 1999-11-22 Mikio Nakajima * skk.el (skk-katakana-region): Use `skk-search-and-replace'. (skk-hiragana-region): Ditto. (skk-jisx0208-latin-region): Ditto. (skk-latin-region): Ditto. * skk-jisx0201.el (skk-jisx0201-search-and-replace): Moved to skk.el and renamed to `skk-search-and-replace'. (skk-hiragana-to-jisx0201-region): Use `skk-search-and-replace'. Do not use `identity' to return just a string. (skk-katakana-to-jisx0201-region): Ditto. 1999-11-22 Takao KAWAMURA * SKK-MK (SKK_MODULES): Bound `lookup-byte-compile' to t when (require 'lookup) is executed. * skk-vars.el: Added (require 'path-util). 1999-11-22 Mikio Nakajima * READMEs/CVS_digest: Add descriptions abount only DES based crypt is available for a passwd of the cvs account. Change slighly descriptions about making encrypted passwd. Debian Linux -> Debian GNU/Linux. Reorganize structure of sections. 1999-11-21 Tsukamoto Tetsuo * skk.el (skk-mode): Set cursor color if `skk-mode-invoked' is nil and the function is called interactively. 1999-11-21 Mikio Nakajima * READMEs/CVS_digest: Add descriptions about creating encrypted passwd. 1999-11-18 Mikio Nakajima * READMEs/AUTHORS: Add descriptions for Daredeveil branch. * READMEs/CVS_digest: New file. * READMEs/Codename: New file. * READMEs/Contributors: Filename typo fixed. 1999-11-18 TSUMURA Tomoaki * skk-cursor.el (skk-change-cursor-when-ovwrt): Renamed to `skk-cursor-change-when-ovwrt'. * skk-viper.el (skk-cursor-set-properly): Use `skk-cursor-change-when-ovwrt'. * skk.el (skk-mode): Put off setting `skk-mode-invoked'. 1999-11-14 Mikio Nakajima * skk-abbrev.el (skk-completion-original): Bug fixed. 1999-11-09 Shuhei KOBAYASHI * skk-look.el (skk-look): Use copy-sequence instead of `copy-list' not to depend on CL package on FSF Emacs. * skk-num.el (skk-num-flatten-list): Do not use `mapcan' not to depend on CL package on FSF Emacs. 1999-11-09 Mikio Nakajima * skk-develop.el: Remove def-edebug-spec for `skk-defun-cond', `skk-defsubst-cond', `skk-defmacro-cond'. (skk-submit-bug-report): Remove code for a certain specific version of Mew and Wanderlust. * skk-macs.el (skk-face-on): Use `defmacro' and `static-cond' instead of `skk-defmacro-cond' and `cond'. (skk-defun-cond): Removed. (skk-defsubst-cond): Removed. (skk-defmacro-cond): Removed. * skk-kcode.el (skk-display-code): Use `defun' and `static-cond' instead of `skk-defun-cond' and `cond'. Require static.el. * skk-cursor.el (skk-change-cursor-when-ovwrt): Use `defun' and `static-cond' instead of `skk-defun-cond' and `cond'. Require static.el. * skk.el (skk-detach-extent): Use `defun' and `static-cond' instead of `skk-defun-cond' and `cond'. (skk-jisx0208-to-ascii): Ditto. (skk-make-char): Ditto. * skk-macs.el (skk-str-length): Use `defsubst' and `static-cond' instead of `skk-defsubst-cond' and `cond'. (skk-substring): Ditto. (skk-read-event): Ditto. (skk-char-to-string): Ditto. (skk-ascii-char-p): Ditto. (skk-str-ref): Ditto. (skk-jisx0208-p): Ditto. (skk-char-octet): Ditto. (skk-charsetp): Ditto. 1999-11-07 Mikio Nakajima * skk-jisx0201.el (skk-jisx0201-cursor-color): Renamed to `skk-cursor-jisx0201-color'. * SKK-MK (SKK_MODULES): Arrange for new files. * skk.el (skk-terminal-face-p): Removed. (skk-mode): Require skk-xm20_4.el. * skk-viper.el: (viper-intercept-ESC-key): Remove cursor control and change class to before. (vip-intercept-ESC-key): Ditto. (skk-set-cursor-properly): Renamed to `skk-cursor-set-properly'. * skk-cursor.el: Revive to simplify skk.el. (skk-default-cursor-color): Renamed to `skk-cursor-default-color' (for grouping of customize). (skk-hiragana-cursor-color): Renamed to `skk-cursor-hiragana-color'. (skk-katakana-cursor-color): Renamed to `skk-cursor-katakana-color'. (skk-jisx0208-latin-cursor-color): Renamed to `skk-cursor-jisx0208-latin-color'. (skk-latin-cursor-color): Renamed to `skk-cursor-latin-color'. (skk-abbrev-cursor-color): Renamed to `skk-cursor-abbrev-color'. (skk-report-set-cursor-error): Renamed to `skk-cursor-report-set-error'. (skk-use-cursor-change): Renamed to `skk-cursor-change-width'. * skk.el (abort-recursive-edit): Remove cursor control. (exit-minibuffer): Ditto. (kill-buffer): Ditto. And change class to before. (skk-kakutei): Ditto. (skk-save-jisyo-original): Ditto. (minibuffer-keyboard-quit): Ditto (as to XEmacs advice only). (skk-auto-fill-mode): Ditto. (skk-toggle-kana): Ditto. (skk-katakana-region): Ditto. (skk-hiragana-region): Ditto. (skk-jisx0208-latin-region): Ditto. (skk-latin-region): Ditto. (skk-mode-off): Ditto. (skk-j-mode-on): Ditto. (skk-latin-mode-on): Ditto. (skk-jisx0208-latin-mode-on): Ditto. (skk-abbrev-mode-on): Ditto. (overwrite-mode): Moved to skk-cursor.el. (goto-line): Ditto. (yank): Ditto. (yank-pop): Ditto. (recenter): Ditto. (insert-file): Ditto. (bury-buffer): Ditto. (switch-to-buffer): Ditto. (hilit-yank): Ditto. (hilit-yank-pop): Ditto. (hilit-recenter): Ditto. (execute-extended-command): Ditto. (pop-to-buffer): Ditto. (other-window): Ditto. (skk-set-cursor-color): Ditto. (skk-set-cursor-properly): Ditto. (skk-change-cursor-when-ovwrt): Ditto. (kill-buffer): Ditto. (skk-default-cursor-color): Ditto. (skk-hiragana-cursor-color): Ditto. (skk-katakana-cursor-color): Ditto. (skk-jisx0208-latin-cursor-color): Ditto. (skk-latin-cursor-color): Ditto. (skk-abbrev-cursor-color): Ditto. (skk-report-set-cursor-error): Ditto. (skk-use-cursor-change): Ditto. (skk-mode): Require skk-cursor.el when `skk-use-color-cursor' or `skk-use-cursor-change' is non-nil. * skk-kakasi.el (skk-gyakubiki-region): Remove cursor control. (skk-gyakubiki-message): Ditto. (skk-gyakubiki-katakana-region): Ditto. (skk-gyakubiki-katakana-message): Ditto. (skk-hurigana-region): Ditto. (skk-hurigana-message): Ditto. (skk-hurigana-katakana-region): Ditto. (skk-hurigana-katakana-message): Ditto. (skk-romaji-region): Ditto. (skk-romaji-message): Ditto. * skk-develop.el (skk-submit-bug-report): Add `skk-share-private-jisyo' to BASE list. * skk.el (skk-emacs-id-file): New user option. (skk-share-private-jisyo): Ditto. (skk-mode): Add code for `skk-share-private-jisyo'. (skk-save-jisyo-original): Ditto. (skk-update-jisyo-original): Ditto. * experimental/skk-jisx0201.el (skk-jisx0201-mode-string): Change mode indicator to `jisx0201' and doc fixed. (skk-jisx0201-rule-list): Define latin-jisx0201 characters. (skk-setup-modeline): Change mode indicator to `jisx0201'. * skk-vars.el: Renamed to skk-xm20_4.el. * skk-vars.el: New file for definitions of user variables. (skk-emacs-id): New internal variable. (skk-jisyo-update-vector): Ditto. ;; Local Variables: ;; coding: iso-2022-jp ;; mode: change-log ;; End: ddskk-15.1.54/doc/0000775000076600007660000000000012251335161013203 5ustar brutusbrutusddskk-15.1.54/doc/skk.texi0000664000076600007660000127711012240152115014671 0ustar brutusbrutus\input texinfo @c -*- mode: texinfo; coding: iso-2022-jp-3 -*- @setfilename skk.info @settitle SKK Manual @documentlanguage ja @paragraphindent 1 @c $B%a%b(B @c 1 makeinfo $B$G%3%s%Q%$%k$9$k$3$H$b$G$-$^$9!#0l=V$G=*$o$j!"%j%s%/@Z$l$r4^$`(B @c $B%(%i!<$N8!=P$KJXMx$G$9!#(B(make info $B$O%j%s%/@Z$l$r8!=P$7$^$;$s(B) @c $BJ}K!$O!"$3$N%U%!%$%k$r(B utf-8 $B$GJ]B8$7!"(Bmakeinfo skk.texi $B$H$7$^$9!#(B @c $B@8@.$5$l$k(B info $B$O!"(Bmake info $B$N$=$l$H$O0[$J$j$^$9!#FC$K2~9T$O(B @c $BJQ$K$J$j$^$9!#(B @c 2 @ref $B$J$I$N%3%^%s%I$O!"2~9T$5$l$k$H@5>o$KF/$-$^$;$s!#(B @w $B$NCf$KF~$l$F2<$5$$!#(B @c $B$"$k$$$O!"(B3 $B$D0z?t$rEO$9$N$bNI$$$G$7$g$&!#(B @c 3 @footnote $B$O!"$=$N%Z!<%8$N0l$DL\$G$O!"(Btexi $B$N2~9T(B/$BHs2~9T$,$=$N$^$^(B @c info $B$N2~9T(B/$BHs2~9T$K$J$j!"Fs$DL\0J9_$OB>$NJ8$HF1MM!"<+F0E*$K2~9T$5$l$^$9!#(B @c $B$?$@$7!"Nc30$b$"$k$h$&$G$9!#(B @c $B$^$?!"(B@footnote $B0J30$K$b!"2~9T$,JT=8$5$l$J$$%1!<%9$,$"$k$h$&$G$9!#(B @c @c Author: Masahiko Sato @c Yukiyoshi Kameyama @c NAKAJIMA Mikio @c IRIE Tetsuya @c Kitamoto Tsuyoshi @c Teika Kazura @c Tsukamoto Tetsuo @c Tsuyoshi AKIHO @c SAKAI Kiyotaka @c Satoshi Harauchi @c Maintainer: SKK Development Team @c Keywords: japanese @c @set SKK-VERSION 15.1.54 @set UPDATED $Date: 2013/11/11 12:57:49 $ @dircategory Emacs @dircategory GNU Emacs Lisp @direntry * SKK: (skk). Simple Kana to Kanji conversion program. @end direntry @c Texinfo $B$KDI2C$G$-$?$iNI$$$J$!$H;W$&E@$r=R$Y$^$9!#CfEg$OC1$J$k(B LaTeX @c $B%f!<%6$G!"(BPlain TeX $B%^%/%m$NAH$_J}$J$s$FA4A3CN$j$^$;$s$N$G!"%f!<(B @c $B%6!<$NN)>l$G$d$j$?$$$3$H$rB4D>$K!"$^$?L5@UG$$K=R$Y$k$KN1$a$^$9!#$"$7(B @c $B$+$i$:!#/$78+$K$/$$5$$,$9$k!#(Binfo $B$G$O%"%9%-!3Q%9%Z!<%9$rA^F~$7$F$O$I$&$+(B? @c @c (3)LaTeX $B$NI=$r=q$/%3%^%s%I$r!K(B, @w{Kitamoto Tsuyoshi}$B!JKLK\9d!K(B, @w{Teika Kazura}$B!JDj2H!K(B, @w{Tsukamoto Tetsuo}$B!JDMK\E0M:!K(B and @w{Tsuyoshi AKIHO}$B!J=)J]6/!K(B. Revised by @w{Kiyotaka Sakai}$B!JpJs(B:: * $B$h$/$"$kO$N9`L\$G$9!#(B --- $B$O$8$a$K(B * $B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B:: * SKK$B$H$O$J$K$+(B:: $B%$%s%9%H!<%k(B * APEL $B$N%$%s%9%H!<%k(B:: * DDSKK $B$N%$%s%9%H!<%k(B:: * $B<-=q$K$D$$$F(B:: * $B<-=q$NF~uBVKh$N%b!<%I(B * $B%$%s%/%j%a%s%?%k!&%5!<%A(B:: * $B%A%e!<%H%j%"%k(B:: $BJXMx$J1~MQ5!G=(B -- $BM=HwCN<1(B * $B%U%!%$%k9=@.(B:: $B1~MQ5!G=$r;H$$$3$J$9$?$a$NM=HwCN<1!#(B * $B%f!<%6%*%W%7%g%s$N@_DjJ}K!(B:: $BJXMx$J1~MQ5!G=(B -- $BF~NO4X78(B * $B%+%?%+%J!"1Q;zF~NO$NJXK!(B:: $B$3$l$H $B!V$+$7$?$s$]$;$-$K$s!W(B * $BJXMx$JJQ49!"$=$NB>$NJQ49(B:: $BC14A;z!"@\F,<-!"4A?t;z!"Ey!9!#(B $BJXMx$J1~MQ5!G=(B -- $BMM!9$J@_Dj(B * $B%-!<@_Dj(B:: $B%m!<%^;z$N%k!<%k$J$I$bJQ99$G$-$^$9!#(B * $BJQ49!"3NDj$NA08e(B:: $B8mJQ49$ND{@5!"0lH/3NDj!"3NDj$N%?%$%_%s%0$J$I(B * $BAw$j2>L>4XO"(B:: $BAw$j2>L>$N=hM}$K$D$$$F!#(B * $B8uJd$N=g=x(B:: $B4XO"$N$"$k8l$O>e0L$KI=<($J$I!"8zN($r5a$a$F(B * $B<-=q4XO"(B:: $B<-=q$K$^$D$o$k@_Dj5Z$S5!G=!#(B $BJXMx$J1~MQ5!G=(B -- $BB>(B * $BCm~$j$D$1(B:: $BMM!9$JI=<($N@_Dj!#(B * $B%f!<%6%,%$%@%s%94XO"(B:: * I-search$B4XO"(B:: $B%$%s%/%j%a%s%?%k!&%5!<%A$K$^$D$o$k5!G=!#(B * VIP/VIPER$B$H$NJ;MQ(B:: * picture-mode$B$H$NJ;MQ(B:: picture-mode $B$H$NJ;MQ$N:]$NLdBjE@!#(B $B%m!<%^;zF~NO0J30$NF~NOJ}<0(B * AZIK:: * ACT:: * TUT-code:: * $B$+$JF~NO$H?F;X%7%U%H(B:: SKK$B$K4X$9$k>pJs(B * $B:G?7>pJs(B:: * SKK$B%a!<%j%s%0%j%9%H(B:: * SKK$B4XO"%=%U%H%&%'%"(B:: * SKK$B<-=q$K$D$$$F(B:: * $B<-=q%D!<%k(B:: * SKK$B$N:n!#(B @end detailmenu @end menu @end ifinfo @node $B$O$8$a$K(B @chapter $B$O$8$a$K(B @cindex $B$O$8$a$K(B @menu * $B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B:: * SKK$B$H$O$J$K$+(B:: @end menu @node $B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B @section $B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B Daredevil SKK $B!J0J2)(B) @item GNU Emacs 23.1 $B0J9_(B ($B?d>)(B) @item GNU Emacs 24.1 $B0J9_(B ($B?d>)(B) @item Mule $B5!G=IU$-$G%3%s%Q%$%k$5$l$?(B XEmacs 21.4 $B$N:G?7HG(B @item Mule $B5!G=IU$-$G%3%s%Q%$%k$5$l$?(B XEmacs 21.5 $B$N:G?7HG(B @end itemize XEmacs $B$K4X$7$F$O!"(BXEmacs $BK\BN$H$OJL$KG[I[$5$l$F$$$k%Q%C%1!<%872$O:G?7HG$,MW(B $B5a$5$l$^$9!#>/$J$/$H$b(B xemacs-base $B%Q%C%1!<%8$,:G?7$G$"$k$3$H$K2C$($F!"(Bfsf-compat $B%Q(B $B%C%1!<%8$,I,?\$G$9!#(B $BAmO@$H$7$F!"8=:_$O(B XEmacs $B$h$j$b(B GNU Emacs $B$G$NF0:n$,$h$/%F%9%H$5$l$F$*(B $B$j!":G6a$G$O(B XEmacs $B$G$N%F%9%H$O=e$G$NMxMQ$,:G$b?d>)$5$l$^$9!#(B $B8=;~E@$G(B Emacs $B$N%P!<%8%g%s$4$H$K>/$J$/$H$b0J2<$N@)8B$,$"$j$^$9!#(B @table @b @item GNU Emacs 20.x DDSKK 14.2 $B0J9_$O(B GNU Emacs 20 $B$O%5%]!<%HBP>]30$G$9!#(B GNU Emacs 20 $B$N%f!<%6!<$O(B DDSKK 14.1 $B$r$*;H$$$/$@$5$$!#(B @item GNU Emacs 21.4 DDSKK 15.1 $B0J9_$O(B GNU Emacs 21 $B$O%5%]!<%HBP>]30$G$9!#(B GNU Emacs 21 $B$N%f!<%6!<$O(B DDSKK 14.4 $B$r$*;H$$$/$@$5$$!#(B @item GNU Emacs 22.3 @itemize @bullet @item JIS X 0213 $BBP1~$K$O(B Mule-UCS $B$NF3F~$,I,MW$G$9!#(B @item X Window System $B>e$G$N%a%K%e!<%P!<$NF|K\8lI=<($O(B GTK $BBP1~HG$N$_$G$9!#(B @end itemize @item GNU Emacs 23.3 @itemize @bullet @item X Window System $B>e$G$N%a%K%e!<%P!<$NF|K\8lI=<($O(B GTK $BBP1~HG$N$_$G$9!#(B @end itemize @item GNU Emacs 24.3 GNU Emacs 24.3 $B$H(B DDSKK 14 $B$NAH$_9g$o$;$G(B isearch $B;HMQ;~$NIT6q9g$,H/8+$5$l$F$$$^$9!#(B GNU Emacs 24.3 $B$N%f!<%6!<$O(B DDSKK 15 $B$r$*;H$$$/$@$5$$!#(B @url{http://mail.ring.gr.jp/skk/201211/msg00000.html} @url{http://mail.ring.gr.jp/skk/201212/msg00000.html} @item GNU Emacs 24.4 GNU Emacs 24.4 $B$+$i!"(Bcoding tag $B$rL@<($7$F$$$J$$%U%!%$%k$O(B utf-8 $B$HIU$1$i$l!"$=$NL>(B $B$O(B Combinatory Logic $B$G$NM-L>$JEy<0(B @samp{SKK = I} $B$K$bM3Mh$7$F$$$^(B $B$9(B @footnote{@samp{SKK = I} $B$K$D$$$F>\$7$/$O(B @url{http://openlab.jp/skk/SKK.html} $B$r(B $B$4;2>H2<$5$$!#(B}$B!#(B Daredevil SKK (DDSKK) $B$O!"(B SKK $B$N99$J$k3HD%HG$G$9(B @footnote{@samp{Daredevil} $B$NL>$NM3Mh$K$D$$$F$O(B @ref{Q1-1 Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B?} $B$r;2>H$7$F2<$5$$!#(B}$B!#(B $B$?$@$7!"(B@samp{SKK $B%b!<%I(B}$B!"(B@samp{SKK $B<-=q(B}$B!"(B@samp{SKK $B%5!<%P(B} $B$H$$$C$?Nr(B $B;KE*$JMQ8l$O0z$-B3$-;HMQ$7$F$*$j!"(BDDSKK $B$H8F$P$J$$>l9g$b$"$j$^$9!#$^$?!"(B SKK $BJ}<0$NF~NOJ}K!$r:NMQ$7$?%W%m%0%i%`$J$I!"9-$/(B SKK family $B$r0UL#$9$k>l(B $B9g$bF1MM$G$9!#(B DDSKK $B$NBP1~$N$+$JF~NO$N$[$+!"(BAZIK$B!"(BACT$B!"(BTUT-code $B$N3FJ}<0$K$h$kF~NO$b2DG=!#(B @item $BJ8K!E*CN<1$rMQ$$$J$$9bB.$J!V$+$J(B $B"*(B $B4A;z!WJQ49!#(B @item $B%7!<%`%l%9$+$D:F5"E*$JC18lEPO?%b!<%I!#(B @item $B3NDj8l$r8D?M<-=q$X<+F0EPO?$9$k$3$H$K$h$C$F!"JQ498uJd$r8zN(E*$KI=<($9$k!#(B @item $B%^%$%J!<%b!<%I$H$7$Fe$rMxMQ$9$k>l9g(B $B$K$*$$$F$O(B APEL $B$rJLES%$%s%9%H!<%k$9$kI,MW$,$J$/$J$j$^$7$?!#(BAPEL $B$K0MB8$7(B $B$F$$$kB>$N(B elisp $B%W%m%0%i%`$r;HMQ$7$F$$$J$1$l$P!"%$%s%9%H!<%k:Q$N(B APEL $B$O(B $B:o=|$9$k$3$H$,2DG=$G$9!#(B XEmacs $B$r$*;H$$$N>l9g$O!"(B DDSKK $B$r%$%s%9%H!<%k$9$kA0$K(B APEL (APEL 10.8 $B0J>e$r?d>)(B) $B$r%$%s%9%H!<%k$7$F2<$5$$!#(B APEL $B$Oe$G(B @command{make} $B%3%^%s%I$,MxMQ$G$-$k4D6-$rA[Dj$7$^$9(B @footnote{Microsoft Windows $B4D6-$G$O!"(B@command{makeit.bat} $B$r;HMQ$9$k$3$H$G(B $BF1MM$NA`:n$G%$%s%9%H!<%k$G$-$^$9!#(B@url{http://openlab.jp/skk/skk/main/READMEs/README.w32.ja} cygwin $B4D6-$r%$%s%9%H!<%k$5$l$F$$$kJ}$O(B @command{make} $B%3%^%s%I$,;HMQ$G$-$k(B $B$N$G!"K\J8$N2r@b$,$=$N$^$^Ev$F$O$^$j$^$9!#(B Apple Mac OS X $B4D6-$NJ}$O(B @url{http://openlab.jp/skk/skk/main/READMEs/README.MacOSX.ja} $B$r;2>H$7$F$/$@$5$$!#(B }$B!#(B $B$^$:!"(BDDSKK $B$N%"!<%+%$%V(B @file{ddskk-VERSION.tar.gz} $B$r(B @command{tar} $B%3(B $B%^%s%I$H(B @command{gzip} $B%3%^%s%I$r;HMQ$7$FE83+$7$^$9!#(B @example % gzip -cd ddskk-@value{SKK-VERSION}.tar.gz | tar xvf - @end example $B /usr/local/share/emacs/24.3.50/site-lisp/skk @print{}SKK infos: @print{} skk.info @print{} -> /usr/local/share/info @print{}SKK tutorials: @print{} SKK.tut, SKK.tut.E, NICOLA-SKK.tut, skk.xpm @print{} -> /usr/local/share/skk @end group @end example emacs $B$Nl9g(B $B$O(B @file{SKK-CFG} $B%U%!%$%k$rJT=8$7$F$/$@$5$$!#JT=88e$OI,$:(B @command{make what-where} $B$r(B $Bl9g$O!"(B @example % make install EMACS=mule @end example @noindent $B$H;XDj$7$^$9!#(B @node XEmacs $B$X$N%$%s%9%H!<%k(B @subsection XEmacs $B$X$N%$%s%9%H!<%k(B XEmacs $B$G%Q%C%1!<%8$H$7$F%$%s%9%H!<%k$9$k>l9g$O!"(B $B$^$:!"(B@option{what-where-package} $B$r0z?t$K(B @command{make} $B%3%^%s%I$r /usr/share/xemacs/site-packages/lisp/skk @print{}SKK infos: @print{} skk.info @print{} -> /usr/share/xemacs/site-packages/info @print{}SKK tutorials: @print{} SKK.tut, SKK.tut.E, NICOLA-SKK.tut, skk.xpm @print{} -> /usr/share/xemacs/site-packages/etc/skk @end group @end example $B$D$.$K!"%9!<%Q!<%f!<%6$K$J$C$F(B @option{install-package} $B$r0z?t(B $B$K(B @command{make} $B$rMh$N(B DDSKK $B$O!"8e=R$9$k(B SKK $B<-=q$rJLES%$%s%9%H!<%k$9$kI,MW$,$"$j$^$7$?(B $B$,!"(BDDSKK 14.2 $B$+$i$O(B GNU Emacs $BF1:-$N<-=q%G!<%?(B @file{ja-dic} $B$rMxMQ$7$?(B $B$+$J4A;zJQ49$KBP1~$7$^$7$?$N$G!"(BSKK $B<-=q%U%!%$%k$rJLES%$%s%9%H!<%k$7$J$/(B $B$F$b:GDc8B$N;HMQ$,$G$-$^$9!#(BXEmacs $B$G$O(B @file{ja-dic} $B$OMxMQ$G$-$^$;$s!#(B @file{ja-dic} $B$O(B Emacs $B$NF~NO%a%=%C%I(B LEIM $B$N$?$a$K(B @file{SKK-JISYO.L} $B$+(B $B$iJQ49$7$F@8@.$5$l$?$b$N$G$9!#$7$+$7!"JQ49@8@.$N:]$K1Q?tJQ49$d?tCMJQ49$J(B $B$I$N%(%s%H%j!"$*$h$S!VBg>fIW!W$J$IJ#9g8l$H$_$J$7F@$k8l$,BgI}$K:o=|$5$l$F(B $B$$$^$9!#$=$N$?$a!"(B@file{SKK-JISYO.L} $B$rMxMQ$7$?$+$J4A;zJQ49$HF1Ey$N7k2L$O(B $BF@$i$l$^$;$s!#(B $BM-;V$NCN7C$r7k=8$7$F:n$i$l$F$$$k3F.8BI,MW$J8l$r<}O?!K(B @item SKK-JISYO.M M $B<-=q!JIaDL$K;H$&J,$K$OB-$j$kDxEY!K(B @item SKK-JISYO.ML M $B<-=q$H(B L $B<-=q$NCf4V$N%5%$%:$N<-=q!#(BL $B<-=q<}O?8l$NFb!"(BEPWING $B<-=q$d%*%s(B $B%i%$%s<-=q$G@5$7$$$HH=JL$5$l$?8l$r%Y!<%9$K$7$F2C=|!#(B @item SKK-JISYO.L L $B<-=q!J$"$i$f$kC18l$r<}O?!K(B @item zipcode $BM9JXHV9f<-=q(B @item SKK-JISYO.JIS2 JIS X 0208 $B$GDj$a$i$l$F$$$kBh#2?e=`$NJ8;z$r!"It\:Y$O!"H$7$F2<$5$$!#(B @url{http://openlab.jp/skk/skk/dic/READMEs/committers.txt} @node $B<-=q$r(B DDSKK $B$HF1;~$K%$%s%9%H!<%k$9$k(B @section $B<-=q$r(B DDSKK $B$HF1;~$K%$%s%9%H!<%k$9$k(B DDSKK $B$N%=!<%9$rE83+$9$k$H!"Cf$K(B @file{dic} $B$H$$$&%G%#%l%/%H%j$,B8:_$7$^(B $B$9!#(B@file{SKK-JISYO.L} $B$J$I$r$3$N%G%#%l%/%H%j$K%3%T!<$7$F$+$i(B @command{make install} $B$r(B $BuBV$G(B @command{make install} $B$rl9g$O(B $B<-=q%5!<%P$rMxMQ$9$k$3$H$G>J%a%b%j8z2L$rF@$i$l$^$9!#$^$?!"<-=q%5!<%P$K$h(B $B$C$F$OJ#?t<-=q$N8!:w!"(BEPWING $B<-=q$N8!:w$,$G$-$?$j$9$k$b$N$b$"$j$^$9!#(B DDSKK $B$OFCDj$N<-=q%5!<%P$N$l$N%&%'%V%5%$%H$r$4;2>H2<$5$$!#(B @table @b @item $B<-=q%5!<%P$N@bL@$H%j%s%/(B @url{http://openlab.jp/skk/skkserv-ja.html} @end table @node $B$O$8$a$N@_Dj(B @chapter $B$O$8$a$N@_Dj(B $BI8=`E*$K%$%s%9%H!<%k$7$?>l9g$O!"FCCJ$N@_Dj$J$7$K(B Emacs $B$r5/F0(B $B$9$k$@$1$G(B DDSKK $B$,;H$($k>uBV$K$J$j$^$9!#(B $B<+F0E*$K(B @file{skk-setup.el} $B$H$$$&%U%!%$%k$,FI$_9~$^$l!"@_Dj$5$l$^$9(B @footnote{Emacs $B$,5/F0$9$k2aDx$G(B @file{SKK_LISPDIR/leim-list.el} $B$,FI$_9~(B $B$^$l$^$9!#(B @file{leim-list.el} $B$O(B @file{skk-autoloads.el} $B$H(B @file{skk-setup.el} $B$r(B @code{require} $B$7$^$9!#(B @file{skk-autoloads.el} $B$O%$%s%9%H!<%k;~$K<+F0E*$K@8@.$5$l$k%U%!%$%k$G$"(B $B$j!"3F4X?t$r<+F0%m!<%I(B(autoload)$B$9$k$h$&Dj5A$7$F$$$^$9!#(B @file{skk-setup.el} $B$O%-!<%P%$%s%I!J(B@kbd{C-x C-j} @result{} @code{'skk-mode}$B!K!"JQ?t(B @code{skk-tut-file} $B$NDj5A5Z$S%$%s%/%j%a%s%?%k!&%5!<%A$NDj5A$r9T$C$F$$$^$9!#(B}$B!#(B $B$3$N<+F0@_Dj$K$h$i$:$Kl9g$O!"0J2<$N@bL@$r;2>H$7$F$/$@$5$$!#(B @menu * $B:G$b4pK\E*$J@_Dj(B:: * $B%$%s%/%j%a%s%H8!:w$N@_Dj(B:: * $B<-=q%5!<%P$r;H$$$?$$$H$-$N@_Dj(B:: * DDSKK $B$r(B Emacs $B$N(B Input Method $B$H$9$k(B:: @end menu @node $B:G$b4pK\E*$J@_Dj(B @section $B:G$b4pK\E*$J@_Dj(B @vindex skk-cdb-large-jisyo $B<+F0@_Dj$K$h$i$:l9g$O!"l9g$OITMW(B} (global-set-key "\C-x\C-j" 'skk-mode) (global-set-key "\C-xj" 'skk-auto-fill-mode) (global-set-key "\C-xt" 'skk-tutorial) @end group @end lisp $B<-=q%5!<%P$r;H$o$J$$>l9g$O!"<-=q%U%!%$%k$r;XDj$9$kI,MW$,$"$j$^$9!#(B @lisp (setq skk-large-jisyo "/your/path/to/SKK-JISYO.L") @end lisp @noindent $B<-=q%5!<%P$r;H$o$J$$>l9g$O(B Emacs $B$N%P%C%U%!$K(B @code{skk-large-jisyo} $B$,;X(B $B$9%U%!%$%k$rc$H(B $B$J$k>l9g$O!">e5-$N(B @file{SKK-JISYO.L} $B$r(B @file{SKK-JISYO.M}$B!"(B@file{SKK-JISYO.ML} $BKt(B $B$O(B @file{SKK-JISYO.S} $B$KJQ99$7$F$/$@$5$$!#(B @cindex CDB $B7A<0<-=q%U%!%$%k(B DDSKK 14.1 $B0J9_$O<-=q%5!<%P$r7PM3$;$:$H$b(B CDB $B7A<0(B@footnote{constant database $B$N(B $B$3$H!#>\$7$/$O(B @url{http://cr.yp.to/cdb.html} $BKt$O(B @url{http://ja.wikipedia.org/wiki/Cdb} $B$r;2>H$N$3$H!#(B} $B$N<-=q%U%!%$%k$rD>@\MxMQ$G$-$k$h$&$K$J$j$^$7$?!#(BCDB $B7A<0<-=q%U%!%$%k(B@footnote{ SKK $B<-=q(B $B$N(B @file{Makefile} $BCf$N(B cdb $B%?!<%2%C%H$rl9g$O!"0J2<$N$h$&$K;XDj$7$F$/$@$5$$!#(B @lisp (setq skk-cdb-large-jisyo "/your/path/to/SKK-JISYO.L.cdb") @end lisp @noindent $BJQ?t(B @code{skk-large-jisyo} $B$H(B $BJQ?t(B @code{skk-cdb-large-jisyo} $B$rF1;~$K;X(B $BDj$7$?>l9g$O!"I8=`$G$O(B CDB $B7A<0<-=q%U%!%$%k$NJ}$,@h$K8!:w$5$l$^$9!#$3$l$K4X$7$F(B $B$O(B @w{@ref{$B<-=q8!:w$N@_Dj$N6qBNNc(B}} $B$b;2>H$7$F$/$@$5$$!#(B @node $B%$%s%/%j%a%s%H8!:w$N@_Dj(B @section $B%$%s%/%j%a%s%H8!:w$N@_Dj(B @vindex isearch-mode-hook @vindex isearch-mode-end-hook $B4pK\E*$J@_Dj$O(B @file{skk-setup.el} $B$,FI$_9~$^$l$?;~E@$G40N;$7$F$$$^$9(B @footnote{@file{skk-setup.el} $B$G$O!"4X?t(B @code{isearch-mode-hook} $B$K(B @code{skk-isearch-setup-maybe} $B$r!"(B $B4X?t(B @code{isearch-mode-end-hook} $B$K(B @code{skk-isearch-cleanup-maybe} $B$r(B $B!"$=$l$>$l(B hook $B$KDI2C$7$F$$$^$9!#(B @code{skk-isearch-@{setup|cleanup@}-maybe} $B$H$b(B @file{skk-setup.el} $B$GDj5A$5$l$F$*$j!"(B $BKt$O(B IP $B%"%I%l%9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-server-portnum $B<-=q%5!<%P$,;H$&%]!<%HHV9f!#(B@file{/etc/services} $B$K(B skkserv $B$N%(%s%H%j$,(B $B5-=R$5$l$F$$$l$P(B @code{skk-server-portnum} $B$r;XDj$9$kI,MW$OL5$$!#(B @end defvr @vindex skk-server-inhibit-startup-server $B<-=q%5!<%P$,5/F0$7$F$$$J$+$C$?$H$-$K(B Emacs $B$+$i(B skkserv $B%W%m%;%9$rN)$A>e$2$k(B $B;v$b$G$-$^$9!#(B@code{skk-server-inhibit-startup-server} $B$r(B @code{nil} $B$K(B $B$9$k;v$G$3$N5!G=$,M-8z$K$J$j$^$9!#(B@ref{$B%5!<%P4XO"(B} $B$b;2>H$7$F$/$@$5$$!#(B Emacs $B$+$iN)$A>e$2$FMxMQ$9$k;v$,$G$-$k<-=q%5!<%P$O!"(B @example skkserv [-p port] [jisyo] @end example @noindent $B$N$h$&$J%*%W%7%g%s$r@\5/F0$9$k$b$N$K8B$i(B $B$l$^$9!#(B $B<-=q%5!<%P%W%m%0%i%`$H<-=q%U%!%$%k$O!"\$7$/$O3F<-=q%5!<%P$N@bL@=q$rFI$s$G2<$5$$!#(B @end defvr @noindent $B$3$l$i$N@_Dj$O!"4D6-JQ?t$rMxMQ$7$F2<5-$N$h$&$K$9$k$3$H$b$G$-$^$9!#(B @cindex @code{SKKSERVER} @cindex @code{SKKSERV} @cindex @code{SKK_JISYO} @table @b @item B $B%7%'%k$N>l9g(B (sh, bash, ksh, zsh $B$J$I(B) @example export SKKSERVER=example.org export SKKSERV=/your/path/to/skkserv export SKK_JISYO=/your/path/to/SKK-JISYO.L @end example @item C $B%7%'%k$N>l9g(B (csh, tcsh $B$J$I(B) @example setenv SKKSERVER example.org setenv SKKSERV /your/path/to/skkserv setenv SKK_JISYO /your/path/to/SKK-JISYO.L @end example @end table $B4XO"9`L\(B: @w{@ref{$B<-=q%5!<%P$NF~O$G$O!"(BDDSKK $B$N4pK\E*$J;HMQJ}K!$r@bL@$7$^$9!#$3$l$rFI$a$P!"$H$j$"$($:(B DDSKK $B$r;H$C$F$_$k$K$O=O$N!VJXMx$J1~MQ5!G=!W$O!"6=L#$N$"$k8D=j$N$_$r%T%C%/%"%C%W$7$F(B $B$*FI$_$K$J$k$N$,$$$$$G$7$g$&!#(B @menu * $B5/F0$H=*N;(B:: * $BF~NO%b!<%I(B:: $BJ8;zuBVKh$N%b!<%I(B * $B%$%s%/%j%a%s%?%k!&%5!<%A(B:: * $B%A%e!<%H%j%"%k(B:: @end menu @node $B5/F0$H=*N;(B @section $B5/F0$H=*N;(B @kindex C-x C-j @kindex C-x j SKK $B%b!<%I$KF~$k$K$O(B @kbd{C-x C-j}$B!"$b$7$/$O(B @kbd{C-x j} $B$H%?%$%W$7$^$9!#(B $B%b!<%I%i%$%s$N:8C<$K$O!"2<5-$N$h$&$K(B @w{@samp{--$B$+$J(B:}} $B$,DI2C$5$l$^$9(B @footnote{@file{skk.el} $B$N(B @code{skk-setup-modeline} $B$K$F!"(B@code{mode-line-format} $B$K(B @code{skk-icon} $B$H(B @code{skk-modeline-input-mode} $B$rDI2C$7$F$$$^$9(B}$B!#(B @example --$B$+$J(B:MULE/7bit----- Buffer-name (Major-mode)--- @end example $B$^$?!"%+!<%=%k$N?'$,JQ2=$7$^$9(B @footnote{$B%+%i!<%G%#%9%W%l%$$r;HMQ$7!"%+%i!l9g!#(B @w{@xref{$BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B}.}}$B!#(B @kbd{C-x C-j}$B!"$b$7$/$O(B @kbd{C-x j} $B$r:FEY%?%$%W$9$k$3$H$G!"(BSKK $B%b!<%I$K(B $BF~$kA0$N%b!<%I$KLa$j!"%+!<%=%k?'$b85$KLa$j$^$9(B @footnote{$B$?$@$7!"(B@b{$B!V%"%9%-!<%b!<%I!W(B}$B$rMxMQ$9$l$P(B SKK $B%b!<%I$+$iH4$1$k(B $BI,MW$O$[$H$s$I$"$j$^$;$s!#(B @xref{$BF~NO%b!<%I(B, , $B%"%9%-!<%b!<%I(B}.}$B!#(B @defvr {$B%f!<%6JQ?t(B} skk-status-indicator $B%G%U%)%k%H$O%7%s%\%k(B @code{'left} $B$G$9!#$3$NJQ?t$r%7%s%\%k(B @code{'minor-mode} $B$H(B $B@_Dj$9$l$P!"%$%s%8%1!<%?$O%b!<%I%i%$%s$N%^%$%J!<%b!<%I$N0LCV$KI=<($5$l$^$9!#(B @example -MULE/7bit----- Buffer-name (Major-mode $B$+$J(B)--- @end example @end defvr @defvr {$B%f!<%6JQ?t(B} skk-preload @file{~/.emacs} $B$K$FJQ?t(B @code{skk-preload} $B$r(B @code{non-nil} $B$H@_Dj$9$k$3(B $B$H$K$h$j!"(BDDSKK $B$N=i2s5/F0$rB.$/$9$k$3$H$,$G$-$^$9!#(B @lisp (setq skk-preload t) @end lisp $B$3$l$O!"(BSKK $BK\BN%W%m%0%i%`$NFI$_9~$_$HJQ?t(B @code{skk-search-prog-list} $B$K(B $B;XDj$5$l$?<-=q$NFI$_9~$_$r(B Emacs $B$N5/F0;~$K:Q$^$;$F$7$^$&$3$H$K$h$juBV$K$+$+$o$i$:6/@)E*$K%*!<%H%U%#%k%b!<%IIU$G(B SKK $B%b!<%I$KF~(B $B$j$?$$>l9g$O!"(B@kbd{M-1 C-x j} $B$d(B @kbd{C-u C-x j} $B$J$I$H%?%$%W$7!"$3$N%3(B $B%^%s%I$K@5$N0z?t$rEO$7$^$9(B @footnote{$B!V0z?t!W$K$D$$$F$O!"(B @display @ref{Arguments, , Arguments, emacs, GNU Emacs Manual}. @end display @noindent $B$r;2>H$N$3$H!#(B}$B!#(B @kindex C-u -1 C-x j @kindex M-- C-x j $B%*!<%H%U%#%k%b!<%I$r%*%U$K$7!"$+$D(B SKK $B%b!<%I$b=*N;$7$?$$>l9g$K$O(B @w{@kbd{M-- C-x j}} $B$d(B @w{@kbd{C-u -1 C-x j}} $B$J$I$H%?%$%W$7!"$3$N%3%^%s(B $B%I$KIi$N0z?t$rEO$7$^$9!#(B @node $B<-=q$NJ]B8(B @subsection $B<-=q$NJ]B8(B @vindex skk-backup-jisyo @vindex skk-jisyo Emacs $B$r=*N;$9$k$H$-$O!"J]B8A0$N8D?M<-=q$r(B @file{~/.skk-jisyo.BAK} $B$KB`Hr(B $B$7$F$+$i!"8D?M<-=q(B (@pxref{$B<-=q$N$rJQ99$7$?$1(B $B$l$P!"$=$l$>$l(B @code{skk-jisyo} $B$d(B @code{skk-backup-jisyo} $B$NCM$rJQ99$7$F(B $B2<$5$$!#(B @findex skk-kill-emacs-without-saving-jisyo @kindex M-x skk-kill-emacs-without-saving-jisyo $B8D?M<-=q$rJ]B8$;$:$K(B Emacs $B$r=*N;$5$;$?$$>l9g$K$O!"(B @example @kbd{M-x skk-kill-emacs-without-saving-jisyo} @end example @noindent $B$H%?%$%W$7$^$9!#(B $B8D?M<-=q$NJ]B8F0:n$K$D$$$F99$K>\$7$/$O!"(B@ref{$B8D?M<-=q$NJ]B8F0:n(B} $B$r;2>H(B $B$7$F$/$@$5$$!#(B @node $BF~NO%b!<%I(B @section $BF~NO%b!<%I(B SKK $B%b!<%I$O!"J8;zuBV$K$h$j#3$D$N(B@b{$B!VJQ49%b!<%I!W(B}$B$r;}$A$^$9!#(B @menu * $BF~NO%b!<%I$N@bL@(B:: * $BF~NO%b!<%I$r@Z$jBX$($k%-!<(B:: @end menu @node $BF~NO%b!<%I$N@bL@(B @subsection $BF~NO%b!<%I$N@bL@(B @table @b @cindex $B$+$J%b!<%I(B @item $B!V$+$J%b!<%I!W(B $B%"%9%-!<>.J8;z$r$R$i$,$J$KJQ49$9$k%b!<%I!#(B $B%^%$%J!<%b!<%I$NI=<((B: @samp{$B$+$J(B} $B%+!<%=%k?'(B: $B@V7O(B @cindex $B%+%J%b!<%I(B @item $B!V%+%J%b!<%I!W(B $B%"%9%-!<>.J8;z$r%+%?%+%J$KJQ49$9$k%b!<%I!#(B $B%^%$%J!<%b!<%I$NI=<((B: @samp{$B%+%J(B} $B%+!<%=%k?'(B: $BNP7O(B @cindex $BA41Q%b!<%I(B @item $B!VA41Q%b!<%I!W(B $B%"%9%-!<>.J8;z!?BgJ8;z$rA43Q%"%k%U%!%Y%C%H(B@footnote{JIS X 0208 $B1Q;z$N$3$H!#(B $B$3$N%^%K%e%"%k$G$O!VA43Q%"%k%U%!%Y%C%H!W$HI=5-$9$k!#(B}$B$KJQ49$9$k%b!<%I!#(B $B%^%$%J!<%b!<%I$NI=<((B: @samp{$BA41Q(B} $B%+!<%=%k?'(B: $B2+7O(B @cindex $B%"%9%-!<%b!<%I(B @item $B!V%"%9%-!<%b!<%I!W(B $BJ8;z$rJQ49$7$J$$%b!<%I!#F~NO$5$l$?%-!<$O(B @kbd{C-j} $B$r=|$$$FDL>o$N(B Emacs $B$N(B $B%3%^%s%I$H$7$F2rH$7$F$/$@$5$$!#(B @node $BF~NO%b!<%I$r@Z$jBX$($k%-!<(B @subsection $BF~NO%b!<%I$r@Z$jBX$($k%-!<(B @table @kbd @item q $B!V$+$J%b!<%I!W!"!V%+%J%b!<%I!W4V$r%H%0%k$9$k!#(B @item l $B!V$+$J%b!<%I!WKt$O!V%+%J%b!<%I!W$+$i!V%"%9%-!<%b!<%I!W$X!#(B @item L $B!V$+$J%b!<%I!WKt$O!V%+%J%b!<%I!W$+$i!VA41Q%b!<%I!W$X!#(B @item C-j $B!V%"%9%-!<%b!<%I!WKt$O!VA41Q%b!<%I!W$+$i!V$+$J%b!<%I!W$X!#(B @end table $B@\%P%C(B $B%U%!$XF~NO$9$k%b!<%I!#F~NO%b!<%I$K1~$8$F%m!<%^;z$+$i$R$i$,$J!"%m!<%^;z$+(B $B$i%+%?%+%J!"$"$k$$$O%"%9%-!]$H$J$kJ8;zNs!V8+=P$78l!W$rF~NO$9$k%b!<%I!#(B @item $B!V"'%b!<%I!W(B $B8+=P$78l$K$D$$$F!"<-=qJQ49$r9T$&%b!<%I!#(B @end table $B$^$?!""&%b!<%I$NJQl9g!"%G%U%)%k%H$NF~NOJ}K!(B $B$O$$$o$f$k%m!<%^;zF~NO$G$9!#71Na<0!"%X%\%s<0$N$I$A$i$K$h$C$F$bF~NO$9$k$3(B $B$H$,$G$-$^$9!#8e$K(B @samp{n}$B!"(B @samp{y} $B0J30$N;R2;$,B3$/$H$-$O(B @kbd{n} $B$@$1$GF~NO$G$-$k!#(B @item $BB%2;$O!"(B@kbd{c h o t t o} @result{} @samp{$B$A$g$C$H(B}$B!"(B@kbd{m o p p a r a} @result{} @samp{$B$b$C$Q$i(B} $B$N$h$&$K.J8;z(B)$B$rC1FH$GF~NO$9$k$H$-$O!"(B@kbd{x a} @result{} @samp{$B$!(B}$B!"(B@kbd{x y a} @result{} @samp{$B$c(B} $B$J$I$N$h$&$K(B @kbd{x} $B$rMQ$$$k!#(B @item $BD92;$O!"(B@kbd{-} $B$GF~NO$9$k!#(B@kbd{-} @result{} @samp{$B!<(B}$B!#(B @end itemize @node $B"&%b!<%I(B @subsection $B"&%b!<%I(B @cindex $B<-=qJQ49BP>]$NJ8;zNs$N7hDj(B @cindex $B"&%b!<%I(B @b{$B!V"&%b!<%I!W(B}$B$G$O!"<-=qJQ49$NBP>]$H$J$kJ8;zNs$rF~NO$7$^$9!#$+$J%b!<%I!"(B $B$b$7$/$O%+%J%b!<%I(B@footnote{@xref{$BF~NO%b!<%I(B, , $B$+$J%b!<%I!"%+%J%b!<%I(B}.} $B$G!"$+$D!""#%b!<%I$G$"$k$H$-$K!"%-!]$H$J$kJ8;z(B $BNs!V8+=P$78l!W$rF~NO$7$^$9!#(B@samp{$B"&(B}$B%^!<%/$O!V"&%b!<%I$G$"$k!W(B $B$H$$$&I=<($G$9$,!"8+=P$78l$N3+;OE@$r<($9I=<($G$b$"$j$^$9!#(B @menu * $B8e$+$i"&%b!<%I$KF~$kJ}K!(B:: * $B"&%b!<%I$rH4$1$kJ}K!(B:: @end menu @node $B8e$+$i"&%b!<%I$KF~$kJ}K!(B @subsubsection $B8e$+$i"&%b!<%I$KF~$kJ}K!(B @cindex $B8e$+$i"&%b!<%I$KF~$kJ}K!(B @kindex Q $B<-=qJQ49$NBP>]$H$7$?$$J8;zNs$G$"$C$?$K$b4X$o$i$:!"@hF,$NJ8;z$rBgJ8;z$GF~NO$7K:$l$?>l(B $B9g$O!"$=$N0LCV$^$G%]%$%s%H(B@footnote{@xref{Point, ,$B%]%$%s%H(B, emacs, GNU Emacs Manual}.} $B$rLa$7$F$+$i(B @kbd{Q} $B$r%?%$%W$9$k$3$H$G!""&%b!<%I$KF~$k$3$H$,$G$-$^$9!#Nc$($P!"(B $B2<5-$N$h$&$KA`:n$7$^$9(B (@point{} $B$NCOE@$K%+!<%=%k$,$"$j$^$9(B)$B!#(B @example @kbd{k a n j i} @group ------ Buffer: foo ------ $B$+$s$8(B@point{} ------ Buffer: foo ------ @end group @kbd{C-u 3 C-b} @group ------ Buffer: foo ------ @point{}$B$+$s$8(B ------ Buffer: foo ------ @end group @kbd{Q} @group ------ Buffer: foo ------ $B"&(B@point{}$B$+$s$8(B ------ Buffer: foo ------ @end group @kbd{C-e} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @end example @cindex $B?t;z$+$i;O$^$k8+=P$78l$NF~NO(B @samp{7$B$,$D(B24$B$K$A(B} $B$N$h$&$KBgJ8;z$+$i;O$a$k$3$H$,$G$-$J$$J8;zNs$r8+=P$78l(B $B$H$7$?$$>l9g$O!"(B @kbd{Q} $B$r%?%$%W$7$F"&%b!<%I$K$7$F$+$i(B @samp{7$B$,$D(B24$B$K$A(B} $B$N(B $BJ8;zNs$rF~NO$7$^$9!#(B $B$J$*!""&%b!<%I$G$O!"J8;zNs$N4V$K6uGr$r4^$a$k$3$H$O$G$-$^$;$s!#(B $B$3$l$O!"<-=q%(%s%H%j$N8+=P$78l$K6uGr$r4^$a$k$3$H$,$G$-$J$$@)8B$+$i$-$F$$$^$9!#(B @node $B"&%b!<%I$rH4$1$kJ}K!(B @subsubsection $B"&%b!<%I$rH4$1$kJ}K!(B @kindex C-g @kindex C-j $B8m$C$F"&%b!<%I$KF~$C$F$7$^$C$?$H$-$O!"(B @kbd{C-j} $B$H%?%$%W$7$F"#%b!<%I$KLa(B $B$k$+!"(B @kbd{C-g} $B$H%?%$%W$7$F8+=P$78l$r>C5n$9$k$+!"$I$A$i$+$NJ}K!$,$"$j$^$9!#(B $B6qBNNc$r2<5-$K<($7$^$9!#(B @example @kbd{K a n j i} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @kbd{C-j} @group ------ Buffer: foo ------ $B$+$s$8(B@point{} ------ Buffer: foo ------ @end group @end example @noindent $B$"$k$$$O!"(B @example @kbd{K a n j i} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @kbd{C-g} @group ------ Buffer: foo ------ @point{} ------ Buffer: foo ------ @end group @end example @node $B"'%b!<%I(B @subsection $B"'%b!<%I(B @cindex Overlays @cindex $B%O%$%i%$%H(B @cindex $B0EL[$N3NDj(B @cindex $BJQ493+;O(B @b{$B!V"'%b!<%I!W(B} $B$G$O!""&%b!<%I$GF~NO$7$?8+=P$78l$r!"<-=q$K=>$C$FJQ49$9$k:n(B $B6H$r9T$$$^$9!#"&%b!<%I$G8+=P$78l$rF~NO$7$?8e$K(B @key{SPC} $B$r%?%$%W$9$k$3(B $B$H$G"'%b!<%I$KF~$j$^$9!#(B@samp{$B"&(B} $B%^!<%/$+$i(B @key{SPC} $B$r%?%$%W$7$?$H$-(B $B$N%]%$%s%H$^$G$NJ8;zNs$,8+=P$78l$H$7$F3NDj$5$l!"(B @samp{$B"&(B} $B%^!<%/$O(B @samp{$B"'(B} $B%^!<%/$GCV$-49$($i$l!"$3$N8+=P$78l$,<-=q$NCf$G8!:w$5$l$^$9!#(B @menu * $BAw$j2>L>$,L5$$>l9g(B:: * $BL>$,M-$k>l9g(B:: @end menu @node $BAw$j2>L>$,L5$$>l9g(B @subsubsection $BAw$j2>L>$,L5$$>l9g(B $B2>$K!"<-=q$K(B @example $B$+$s$8(B /$B4A;z(B/$B44;v(B/ @end example @noindent $B$H$$$&%(%s%H%j(B @footnote{$BK\%^%K%e%"%k$G$O!"8+=P$78l$H8uJd72$r9g$o$;$?0l9T$r!V%(%s%H%j!W(B $B$H8F$S$^$9!#>\:Y$O!"(B@ref{$BAw$j$"$j%(%s%H%j$HAw$j$J$7%(%s%H%j(B}$B$r;2>H$7$F$/(B $B$@$5$$!#(B}$B$r4^$`$H$7$F!"Nc$r<($7$^$9!#(B @example @kbd{K a n j i} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'4A;z(B@point{} ------ Buffer: foo ------ @end group @end example @noindent $B$3$NNc$G$O!""&%b!<%I$K$*$1$k(B @samp{$B"&(B} $B%^!<%/$+$i%]%$%s%H$^$G$N4V$NJ8;zNs(B @samp{$B$+$s$8(B} $B$r<-=qJQ49$NBP>]J8;zNs$H$7$F3NDj$7!"$=$l$K$D$$$F<-=qFb$G$N(B $B8!:w$r9T$C$F$$$^$9!#C$($^$9!#(B $B$^$?!"(B @kbd{C-j} $B$r%?%$%W$;$:$K?7$?$J3NDjF~NO$rB3$1$k$+Kt$O?7$?$JJQ49(B $B$r3+;O$9$k$H!"D>A0$NJQ49$O<+F0E*$K3NDj$5$l$^$9!#$3$l$r(B @b{$B!V0EL[$N3NDj!W(B} $B$H(B $B8F$s$G$$$^$9!#I{:nMQ$H$7$F3NDj$rH<$&%-!<$O!"0u;z2DG=$JJ8;z(B $BA4$F$H(B @key{RET} $B$G$9!#>\:Y$O(B @ref{$B0EL[$N3NDj$N%?%$%_%s%0(B} $B$r;2>H$7$F$/(B $B$@$5$$!#(B @node $Be$"$k$H$-$O!"#5HVL\0J9_$N8uJd$O#7$D$:$D$^$H$a$F%(%3!<%(%j(B $B%"$KI=<($5$l$^$9!#Nc$($P!"<-=q$,(B @example @group $B$-$g(B /$B5w(B/$B5p(B/$B5o(B/$B?~(B/$B13(B/$B5q(B/$B5r(B/$B5u(B/$B5s(B/$B5v(B/$B5t(B/$B?x(B/$B5n(B/ @end group @end example @noindent $B$H$$$&%(%s%H%j$r4^$`$H$-$K(B @kbd{K y o} $B$N8e$K(B @key{SPC} $B$r#52sB3$1$F(B $B%?%$%W$9$l$P(B @example @group -------------------- Echo Area -------------------- A:$B13(B S:$B5q(B D:$B5r(B F:$B5u(B J:$B5s(B K:$B5v(B L:$B5t(B [$B;D$j(B 2] -------------------- Echo Area -------------------- @end group @end example @noindent $B$,%(%3!<%(%j%"(B @footnote{$B%(%3!<%(%j%"$H%_%K%P%C%U%!$O;k3PE*$K$OF10l$N>l=j$K$"$j$^$9$,!"(B $B%(%3!<%(%j%"$,C1$K%f!<%6$X$N%a%C%;!<%8$rI=<($9$k$N$_$G$"$k$N$KBP$7!"%_(B $B%K%P%C%U%!$OFHN)$7$?%P%C%U%!$H$7$F5!G=$9$kE@$,0[$J$j$^$9!#(B}$B$KI=<($5$l$^$9!#(B $B$3$3$G2>$K(B @samp{$B5v(B} $B$rA*Br$7$?$1$l$P(B @kbd{k} $B$rF~NO$7$^$9!#(B @samp{A}, @samp{S}, @samp{D}, @samp{F}, @samp{J}, @samp{K}, @samp{L} $B$N(B $B3FJ8;z$O!"2!$70W$5$r9MN8$7$F%-!<%\!<%I$N%[!<%`%]%8%7%g%s$+$i2#J}8~$K0lD>(B $B@~$KG[CV$5$l$F$$$k%-!<$,A*$P$l$F$$$^$9!#$^$?!"8uJd$NA*Br$N$?$a$K2!$9%-!<(B $B$O!"BgJ8;z!">.J8;z$N$$$:$l$G$b9=$$$^$;$s!#8uJd$NA*Br$KMQ$$$k%-!<$NJQ99$K(B $B$D$$$F$O!"(B@w{@ref{$B8uJd$NA*Br$KMQ$$$k%-!<(B}} $B$r;2>H$7$F$/$@$5$$!#(B @key{SPC} $B$rO"BG$7$F$7$^$$5a$a$k8uJd$r8m$C$FDL2a$7$F$7$^$C$?$H$-$O(B @kbd{x} $B$r%?%$%W$9$l$PA08uJd!?A08uJd72$KLa$k$3$H$,$G$-$^$9(B @footnote{@samp{x} $B$O>.J8;z$GF~NO$9$kI,MW$,$"$j$^$9(B}$B!#(B $B8uJd$r\$7$/$O(B docstring $B$r;2>H$N$3$H!#(B @end defvr @node $BAw$j2>L>$,M-$k>l9g(B @subsubsection $BAw$j2>L>$,M-$k>l9g(B $BL>$N$"$kC18l$K$D$$$F@bL@$7$^$9!#(B @samp{$BF0$/(B} $B$rJQ49$K$h$j5a$a$?$$$H$-$O(B @kbd{U g o K u} $B$N$h$&$K!"$^$:(B $B"&(B $B%b!<%I(B $B$KF~$k$?$a$K(B @kbd{U} $B$rBgJ8;z$GF~NO$7!"L>$N3+;O$r(B DDSKK $B$K65$($k$?$a$K(B @kbd{K} $B$rBgJ8;z$GF~NO$7$^$9!#Aw$j2>L>$N(B @kbd{K} $B$r%?%$%W(B $B$7$?;~E@$G(B @key{SPC} $B$r%?%$%W$9$k$3$H$J$/!""'%b!<%I(B $B$KF~$j<-=qJQ49$,9T$o(B $B$l$^$9!#(B $BAw$j2>L>$NF~NO;~!J%m!<%^;z%W%l%U%#%C%/%9$,A^F~$5$l$?=V4V!K!"%W%l%U%#%C%/(B $B%9$ND>A0$K(B @samp{*} $B$r0l=VA^F~$7!"Aw$j2>L>$N3+;O;~E@$rL@<($7$^$9!#%W%l(B $B%U%#%C%/%9$KB3$/%-!C$($^$9!#(B $B%-!/$7>\$7$/@bL@$7$^$9!#(B @example @kbd{U g o} @group ------ Buffer: foo ------ $B"&$&$4(B@point{} ------ Buffer: foo ------ @end group @kbd{K} @group ------ Buffer: foo ------ $B"&$&$4(B*k@point{} ------ Buffer: foo ------ @end group @kbd{u} @group ------ Buffer: foo ------ $B"'F0$/(B@point{} ------ Buffer: foo ------ @end group @end example $B$3$N$h$&$K!"(BDDSKK $B$G$OAw$j2>L>$N3+;OCOE@$r%f!<%6$,L@<(E*$KF~NO$9$k$N$G!"(B $B%7%9%F%`B&$GAw$j2>L>$rJ,2r$9$kI,MW$,$"$j$^$;$s!#$3$l$K$h$j!"9bB.$G%R%C%H(B $B8zN($,9b$$JQ49$,2DG=$K$J$j$^$9!#(B@xref{$BAw$j2>L>$N<+F0=hM}(B}. $B$?$@$7!"%5JQF0;l$NJQ49$G$O!"%5JQF0;l$N8l44$H$J$kL>;l$r(B @b{$B!VAw$j$J$7JQ49!W(B} @footnote{$B>\:Y$O!"(B@ref{$BAw$j2>L>$,L5$$>l9g(B}$B$r;2>H$7$F$/$@$5$$!#(B} $B$H$7$FJQ49$7!"$=$N8e(B @samp{$B$9$k(B} $B$r"#%b!<%I$GF~NO$7$?J}$,8zN($,NI$/$J$j(B $B$^$9!#(B@xref{$B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B, , $B%5JQF0;l$NF~NO(B}. @node $B<-=qEPO?%b!<%I(B @subsection $B<-=qEPO?%b!<%I(B @cindex $B<-=qEPO?(B DDSKK $B$K$OFHN)$7$?<-=qEPO?%b!<%I$O$"$j$^$;$s!#$=$NBe$o$j!"<-=q$K$J$$C18l$K(B $B4X$7$FJQ49$r9T$C$?>l9g$K!"<+F0E*$K<-=qEPO?%b!<%I$KF~$j$^$9!#Nc$($P<-=q$K(B @example $B$X$s$+$s$A$e$&(B /$BJQ49Cf(B/ @end example @noindent $B$N%(%s%H%j$,$J$$>l9g$K!"(B@samp{$BJQ49Cf(B} $B$rF~NO$7$h$&$H$7$F!"(B@w{@kbd{H e n k a n t y u u @key{SPC}}} $B$H%?%$%W$9$k$H!"2<5-$N$h$&$K!"%+%l%s%H%P%C%U%!(B $B$O(B $B"'%b!<%I(B $B$N$^$^(B @samp{$B$X$s$+$s$A$e$&(B} $B$KBP$7$FJQ49$,$G$-$J$$>uBV$G5Y(B $B;_$7!"F1;~$K%_%K%P%C%U%!$K(B @samp{$B$X$s$+$s$A$e$&(B} $B$H$$$&%W%m%s%W%H$,I=<((B $B$5$l$^$9!#(B @example @group ------ Buffer: foo ------ $B"'$X$s$+$s$A$e$&(B ------ Buffer: foo ------ ------ Minibuffer ------- [$B<-=qEPO?(B] $B$X$s$+$s$A$e$&(B: @point{} ------ Minibuffer ------- @end group @end example @menu * $BAw$j2>L>$,L5$$>l9g$N<-=qEPO?(B:: * $BAw$j2>L>$,M-$k>l9g$N<-=qEPO?(B:: * $B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B:: * $B:F5"E*<-=qEPO?(B:: * $B2~9TJ8;z$r4^$`<-=qEPO?(B:: @end menu $B$b$A$m$s!"8m$C$FEPO?$7$?C18l$O:o=|$G$-$^$9!#(B (@w{@pxref{$B8m$C$?EPO?$N:o=|(B}}, @w{@pxref{$B8D?M<-=q%U%!%$%k$NJT=8(B}}) @defvr {$B%f!<%6JQ?t(B} skk-read-from-minibuffer-function $B$3$NJQ?t$K!VJ8;zNs$rJV$94X?t!W$r<}$a$k$H!"$=$NJ8;zNs$r<-=qEPO?%b!<%I$KF~(B $B$C$?$H$-$N%W%m%s%W%H$K=i4|I=<($7$^$9!#4X?t(B @code{read-from-minibuffer} $B$N(B $B0z?t(B INITIAL-CONTENTS $B$KAjEv$7$^$9!#(B @lisp @group (setq skk-read-from-minibuffer-function (lambda () skk-henkan-key)) @end group @end lisp @end defvr @defvr {$B%f!<%6JQ?t(B} skk-jisyo-registration-badge-face $BJQ?t(B @code{skk-show-inline} $B$,(B @code{non-nil} $B$G$"$l$P!"<-=qEPO?%b!<%I$K(B $B0\$C$?$3$H$rL@<($9$k$?$a$K%+%l%s%H%P%C%U%!$K!V(B@b{$B"-<-=qEPO?Cf"-(B}$B!W$H%$%s(B $B%i%$%sI=<($7$^$9!#$3$N!V"-<-=qEPO?Cf"-!W$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @node $BAw$j2>L>$,L5$$>l9g$N<-=qEPO?(B @subsubsection $BAw$j2>L>$,L5$$>l9g$N<-=qEPO?(B @noindent $B<-=qEPO?%b!<%I$G$O!"%-!$K<-=q$K(B @example @group $B$X$s$+$s(B /$BJQ49(B/ $B$A$e$&(B /$BCf(B/ @end group @end example @noindent $B$N$h$&$J%(%s%H%j$,$"$k$H$7$F!"%_%K%P%C%U%!$G(B @samp{$BJQ49Cf(B} $B$NJ8;zNs$r(B @samp{$BJQ49(B} $B$H(B @samp{$BCf(B} $B$H$KJ,$1$F:n$j$^$9!#(B @example @group @kbd{H e n k a n @key{SPC} T y u u @key{SPC}} ----------- Minibuffer ------------ [$B<-=qEPO?(B] $B$X$s$+$s$A$e$&(B: $BJQ49"'Cf(B@point{} ----------- Minibuffer ------------ @end group @end example @cindex $B0EL[$N3NDj(B @noindent $B$3$3$G(B @key{RET} $B$r%?%$%W$9$l$P(B @samp{$BJQ49Cf(B} $B$,8D?M<-=q$KEPO?$5$l!"<-=q(B $BEPO?%b!<%I$O=*N;$7$^$9(B @footnote{$B$3$3$G$O!V0EL[$N3NDj!W$,9T$o$l$k$N$G(B @kbd{C-j} $B$r%?%$%W$9$kI,MW(B $B$O$"$j$^$;$s!#$?$@$7!"(B@ref{$B"'%b!<%I$G$N(BRET} $B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B $BF1;~$K!"JQ49$r9T$C$F$$$k%+%l%s%H%P%C%U%!$K$O(B @samp{$BJQ49Cf(B} $B$,A^F~$5$l3NDj(B $B$5$l$^$9!#(B@xref{$B<-=q$NL>$,M-$k>l9g$N<-=qEPO?(B @subsubsection $BAw$j2>L>$,M-$k>l9g$N<-=qEPO?(B $BAw$j2>L>$N$"$kC18l$NEPO?$G$O!"%_%K%P%C%U%!$G:n$k8uJd$KAw$j2>L>$=$N$b$N$r(B $BEPO?$7$J$$$h$&$KCm0U$7$J$1$l$P$$$1$^$;$s!#2>$K<-=q$K(B @example $B$&$4(Bk /$BF0(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$J$$$H$7$F!"Nc$r5s$2$F@bL@$7$^$9!#(B @example @group @kbd{U g o K u} @end group @group ------ Buffer: foo ------ $B"'$&$4$/(B ------ Buffer: foo ------ ------ Minibuffer ------- [$B<-=qEPO?(B] $B$&$4(B*$B$/(B: @point{} ------ Minibuffer ------- @end group @end example @noindent $B%_%K%P%C%U%!$G<-=qEPO?$9$Y$-J8;zNs$O(B @samp{$BF0(B} $B$@$1$G$"$j!"Aw$j2>L>$N(B @samp{$B$/(B} $B$O4^$a$F$O$$$1$^$;$s!#(B @samp{$BF0$/(B} $B$HEPO?$7$F$7$^$&$H!"(B $BL>$N%A%'%C%/$r9T$$$^$9!#(B $B%7%s%\%k(B @code{ask} $B$r@_Dj$9$l$P!"%f!<%6$K3NG'$r5a$a!"Aw$j2>L>$HG'$a$i$l(B $B$l$PAw$j2>L>$r!L>$r(B $BH=CG$7$F:o=|$7$F$+$iEPO?$7$^$9!#(B @end defvr @node $B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B @subsubsection $B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B @cindex $B%5JQF0;l$N<-=qEPO?$K4X$9$kCm0U(B $B%5JQF0;l!JL>;l$N8e$K(B @samp{$B$9$k(B} $B$rIU$1$?7A$G9=@.$5$l$kF0;l!K$K$D$$$F$O(B @samp{$B$9$k(B} $B$rAw$j2>L>$H$7$?Aw$j$"$jJQ49(B (@w{@pxref{$BAw$j2>L>$,M-$k>l9g(B}}) $B$r$7$J$$$G!"(B@samp{$B1?F0(B} $B$H(B @samp{$B$9$k(B} $B$H$KJ,$1$FF~NO$9$k$3$H$rA0Ds$H$7$F(B $B$$$^$9!#(B@footnote{@file{SKK-JISYO.L} $B$J$I6&M-<-=q$N%a%s%F%J%s%9>e!"86B'$H(B $B$7$F%5JQF0;l$rAw$j$"$j%(%s%H%j$KDI2C$7$F$$$^$;$s!#$=$N$?$a!"(B@samp{$B$9$k(B} $B$r(B $BAw$j2>L>$H$7$?Aw$j$"$jJQ49$G$O!"<-=q$K8uJd$,$J$/<-=qEPO?%b!<%I$KF~$C$F$7(B $B$^$&$N$G!"L>;l$H$7$FJ,2r$7$FF~NO$9$k$3$H$,0lHLE*$G$9!#$?$@$7!"(BDDSKK 13 $B0J(B $B9_$G$O;CDjE*$K%5JQF0;l$NAw$j$"$jJQ49$r2DG=$K$9$k5!G=$rMQ0U$7$^$7$?!#(B (@w{@pxref{$B%5JQF0;lJQ49(B}})} $BNc$($P(B @samp{$B1?F0$9$k(B} $B$O(B @kbd{U n d o u @key{SPC} s u r u} $B$H%?%$%W$9$k(B $B$3$H$K$h$jF~NO$G$-$^$9!#L>;l$+$i:n$i$l$k7AMF;lEy$bF1MM$G$9!#(B @node $B:F5"E*<-=qEPO?(B @subsubsection $B:F5"E*<-=qEPO?(B @cindex $B:F5"E*<-=qEPO?(B $B%_%K%P%C%U%!$r:F5"E*$K;H$C$F<-=qEPO?$r:F5"E*$K9T$&$3$H$,$G$-$^$9!#(B $B2>$K<-=q$K(B @example @group $B$5$$$-$F$-(B /$B:F5"E*(B/ $B$5$$$-(B /$B:F5"(B/ @end group @end example @noindent $B$N$h$&$J%(%s%H%j$,$J$/!"$+$D(B @example @group $B$5$$(B /$B:F(B/ $B$-(B /$B5"(B/ $B$F$-(B /$BE*(B/ @end group @end example @noindent $B$N$h$&$J%(%s%H%j$,$"$k$H$7$^$9!#(B $B$3$3$G(B @kbd{S a i k i t e k i @key{SPC}} $B$H%?%$%W$9$k$H!"8+=P$78l(B @samp{$B$5(B $B$$$-$F$-(B} $B$KBP$9$k8uJd$r8+$D$1$i$l$J$$$N$G!"%_%K%P%C%U%!$K(B @samp{$B$5$$$-(B $B$F$-(B} $B$H$$$&%W%m%s%W%H$rI=<($7$F<-=qEPO?%b!<%I$KF~$j$^$9!#(B @samp{$B$5$$$-$F$-(B} $B$KBP$9$k<-=q%(%s%H%j$r:n$k$?$a(B @kbd{S a i k i @key{SPC}} $B$H%?%$%W$9$k$H!"99$K$3$N8uJd$b8+$D$1$i$l$J$$$N$G!"%_%K%P%C%U%!$K(B @samp{$B$5$$$-(B} $B$H$$$&%W%m%s%W%H$rI=<($7$F!":F5"E*$K(B @samp{$B$5$$$-(B} $B$N<-=q(B $BEPO?%b!<%I$KF~$j$^$9!#(B @kbd{S a i @key{SPC} K i @key{SPC}} $B$H%?%$%W$9$k$H!"%_%K%P%C%U%!$O!"(B @example ------ Minibuffer ------- [[$B<-=qEPO?(B]] $B$5$$$-(B: $B:F"'5"(B ------ Minibuffer ------- @end example @noindent $B$H$J$j$^$9!#%W%m%s%W%H$,(B @samp{[[$B<-=qEPO?(B]]} $B$H$J$j!"(B@samp{[]} $B$,$R$H$DA}(B $B$($F$$$^$9$,!"$3$N(B @samp{[]} $B$N?t$,:F5"E*$J<-=qEPO?%b!<%I$N?<$5$rI=$o$7$F(B $B$$$^$9!#$3$3$G(B @key{RET} $B$r%?%$%W$9$k$H!"8D?M<-=q$K$O(B @example $B$5$$$-(B /$B:F5"(B/ @end example @noindent $B$H$$$&%(%s%H%j$,EPO?$5$l!"%_%K%P%C%U%!$O(B @samp{$B$5$$$-$F$-(B} $B$N<-=qEPO?%b!<(B $B%I$KLa$j!"%W%m%s%W%H$O(B @samp{$B$5$$$-$F$-(B} $B$H$J$j$^$9!#(B $B:#EY$O(B @samp{$B:F5"(B} $B$,JQ492DG=$J$N$G(B @kbd{S a i k i @key{SPC} T e k i @key{SPC}} $B$H%?%$%W$9$k$H!"(B @example ------ Minibuffer ------- [$B<-=qEPO?(B] $B$5$$$-$F$-(B: $B:F5""'E*(B ------ Minibuffer ------- @end example @noindent $B$H$J$j$^$9!#$3$3$G(B @key{RET} $B$r%?%$%W$9$k$3$H$G!"(B@samp{$B$5$$$-$F$-(B} $B$N<-(B $B=qEPO?%b!<%I$+$iH4$1!"8D?M<-=q$K(B @example $B$5$$$-$F$-(B /$B:F5"E*(B/ @end example @noindent $B$H$$$&%(%s%H%j$,EPO?$5$l$^$9!#%+%l%s%H%P%C%U%!$N%]%$%s%H$K$O!"(B@samp{$B:F5"(B $BE*(B} $B$,A^F~$5$l$^$9!#(B @node $B2~9TJ8;z$r4^$`<-=qEPO?(B @subsubsection $B2~9TJ8;z$r4^$`<-=qEPO?(B @kindex C-q C-j @cindex $B2~9TJ8;z$r4^$`J8;zNs$N<-=qEPO?(B $B2~9TJ8;z$r4^$`J8;zNs$r<-=q$KEPO?$9$k$K$O!"<-=qEPO?%b!<%I$G2~9TJ8;z$r(B @kbd{C-q C-j} $B$K$h$jF~NO$7$^$9!#Nc$($P!"(B @example @group $B")(B980 $B@gBf;T@DMU6hJRJ?(B2-1-1 $BElKLBg3XEE5$DL?.8&5f=j(B @end group @end example @noindent $B$r<-=q$KEPO?$9$k$K$O!"<-=qEPO?%b!<%I$G!"(B @example @group @samp{$B")(B980} @kbd{C-q C-j} @samp{$B@gBf;T@DMU6hJRJ?(B2-1-1} @kbd{C-q C-j} @samp{$BElKLBg3XEE5$DL?.8&5f=j(B} @key{RET} @end group @end example @noindent $B$HF~NO$7$^$9!#(B @node $B%$%s%/%j%a%s%?%k!&%5!<%A(B @section $B%$%s%/%j%a%s%?%k!&%5!<%A(B @cindex @file{isearch.el} @cindex I-search @cindex Incremental search DDSKK $B$G$O!"@lMQ$N%$%s%/%j%a%s%?%k!&%5!<%A%W%m%0%i%`$r(B Emacs $BE:IU$N(B @file{isearch.el} $B$N%i%C%Q!<$H$7$Fo$N%P%C%U%!$K$*$1$k3FF~NO%b!<(B $B%I!"JQ49%b!<%I$G$NF~NOJ}K!$HF10l$G$9!#(B @kindex C-r @kindex C-s @kindex M-C-s @kindex M-C-r @kbd{C-s} $B$d(B @kbd{C-r}$B!"$"$k$$$O(B @kbd{M-C-s} $B$d(B @kbd{M-C-r} $B$G%$%s%/%j%a(B $B%s%?%k!&%5!<%A$r5/F0$9$k$H!"%$%s%/%j%a%s%?%k!&%5!<%A$r5/F0$7$?%P%C%U%!$N(B $BF~NO%b!<%I$HF10l$NF~NO%b!<%I$G!"%-!<$H$J$kJ8;z$NF~NO$,2DG=$H$J$j$^$9!#(B @node skk-isearch$B$HF~NO%b!<%I(B @subsection skk-isearch$B$HF~NO%b!<%I(B @vindex skk-isearch-mode-string-alist $BF~NO%b!<%I$K9g$o$;$F!"%$%s%/%j%a%s%?%k!&%5!<%A$N%W%m%s%W%H$,I=<($5$l$^$9!#(B $B%W%m%s%W%H$Nl9g$O!"$3$N%W%m%s%W%H$,I=<($5$l$^$9!#(B @end table @node $B%A%e!<%H%j%"%k(B @section $B%A%e!<%H%j%"%k(B @cindex $B%A%e!<%H%j%"%k(B @vindex skk-tut-file @findex skk-tutorial @kindex M-x skk-tutorial DDSKK $B$K$O!"4pK\E*$JA`:nJ}K!$r3X=,$G$-$k%A%e!<%H%j%"%k$,ImB0$7$F$$$^$9!#(B $BF|K\8lHG%A%e!<%H%j%"%k$O(B @kbd{M-x skk-tutorial} $B$G!"1Q8lHG%A%e!<%H%j%"%k$O(B @kbd{C-u M-x skk-tutorial @key{RET} English @key{RET}} $B$Gl=j$KCV$+$l$F$$$J$$>l9g$O!"(B @file{~/.emacs} $B$G(B @lisp (setq skk-tut-file "/usr/local/share/skk/SKK.tut") @end lisp @noindent $B$H=q$/$3$H$K$h$j!";XDj$7$?%A%e!<%H%j%"%k%U%!%$%k$r;HMQ$5$;$k$3$H$,(B $B$G$-$^$9!#1Q8lHG$N%A%e!<%H%j%"%k%U%!%$%k$O!"(B @samp{skk-tut-file} $B$K(B @file{.E} $B$,IU$$$?%U%!%$%kL>$G$9!#$3$N>l9g$G$"$l$P!"(B @file{/usr/local/share/skk/SKK.tut.E} $B$K$J$j$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tut-lang $B%A%e!<%H%j%"%k$GMQ$$$k8@8l$rJ8;zNs!J(B@code{"Japanese"} $BKt(B $B$O(B @code{"English"}$B!K$G;XDj$7$^$9!#(B $B$3$NJQ?t$h$j$b(B @kbd{C-u M-x skk-tutorial} $B$K$h$k8@8l;XDj$,M%@h$5$l$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tut-use-face @code{Non-nil} $B$G$"$l$P!"%A%e!<%H%j%"%k$G(B face $B$rMxMQ$7$FI=<($9$k!#(B @end defvr @node $BJXMx$J1~MQ5!G=(B @chapter $BJXMx$J1~MQ5!G=(B @menu $BM=HwCN<1(B * $B%U%!%$%k9=@.(B:: $B1~MQ5!G=$r;H$$$3$J$9$?$a$NM=HwCN<1!#(B * $B%f!<%6%*%W%7%g%s$N@_DjJ}K!(B:: @noindent $BF~NO4X78(B * $B%+%?%+%J!"1Q;zF~NO$NJXK!(B:: $B$3$l$H $B!V$+$7$?$s$]$;$-$K$s!W(B * $BJXMx$JJQ49!"$=$NB>$NJQ49(B:: $BC14A;z!"@\F,<-!"4A?t;z!"Ey!9!#(B @noindent $BMM!9$J@_Dj(B * $B%-!<@_Dj(B:: $B%m!<%^;z$N%k!<%k$J$I$bJQ99$G$-$^$9!#(B * $BJQ49!"3NDj$NA08e(B:: $B8mJQ49$ND{@5!"0lH/3NDj!"3NDj$N%?%$%_%s%0$J$I(B * $BAw$j2>L>4XO"(B:: $BAw$j2>L>$N=hM}$K$D$$$F!#(B * $B8uJd$N=g=x(B:: $B4XO"$N$"$k8l$O>e0L$KI=<($J$I!"8zN($r5a$a$F(B * $B<-=q4XO"(B:: $B<-=q$K$^$D$o$k@_Dj5Z$S5!G=!#(B @noindent $BB>(B * $BCm~$j$D$1(B:: $BMM!9$JI=<($N@_Dj!#(B * $B%f!<%6%,%$%@%s%94XO"(B:: * I-search$B4XO"(B:: $B%$%s%/%j%a%s%?%k!&%5!<%A$K$^$D$o$k5!G=!#(B * VIP/VIPER$B$H$NJ;MQ(B:: * picture-mode$B$H$NJ;MQ(B:: picture-mode $B$H$NJ;MQ$N:]$NLdBjE@!#(B @end menu @node $B%U%!%$%k9=@.(B @section $B%U%!%$%k9=@.(B @cindex @file{ccc.el} @cindex @file{leim-list.el} @cindex @file{skk.el} SKK $B$N4pK\E*$J5!G=$O!"(B@file{skk.el} $B$K<}$a$i$l$F$$$^$9!#0lJ}!"(B DDSKK $B$G1~MQ5!G=$rDs6!$9$k%W%m%0%i%`$N$[$H$s$I$O(B @file{skk.el} $B$H(B $B$OJL$N%U%!%$%k$K<}$a$F$$$^$9!#$3$l$i$O!"I,MW$K1~$8$F%*!<%H%m!<%I$9$k$h$&$K(B $B@_7W$5$l$F$$$^$9!#3F1~MQ5!G=$N35N,$H3:Ev$N%U%!%$%kL>$K$D$$$F@bL@$7$^$9!#(B @cindex @file{skk-vars.el} $B$^$?!"(BDDSKK $B$NJQ?t$O(B @file{skk-vars.el} $B$K=8Ls$5$l$F$$$^$9!#(B $B%+%9%?%^%$%:$7$?$$>l9g$J$I$K$3$N%U%!%$%k$r8+$k$H;29M$K$J$k$+$b$7$l$^$;$s!#(B @table @file @item context-skk.el @cindex @file{context-skk.el} $BJT=8$NJ8L.$K1~$8$F<+F0E*$K(B skk $B$N%b!<%I$r@Z$jBX$($?$j!"(BSKK $B$N3FL>$N<+F0=hM}$r9T$&%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BAw$j2>L>$N<+F0=hM}(B}. @item skk-autoloads.el @cindex @file{skk-autoloads.el} $B%*!<%H%m!<%I$N@_Dj$r5-=R$7$?%U%!%$%k!#(BXEmacs $B$G(B DDSKK $B$r%Q%C%1!<%8$H$7$F(B $B%$%s%9%H!<%k$7$?>l9g$O(B @file{auto-autoloads.el} $B$H$$$&%U%!%$%k$,$3$l$KAj(B $BEv$7$^$9!#(B @item skk-azik.el @cindex @file{skk-azik.el} $B3HD%%m!<%^;zF~NO(B "AZIK" $B$N@_Dj$rDs6!$7$^$9!#(B @xref{AZIK}. @item skk-bayesian.el @cindex @file{bayesian/skk-bayesian.el} SKK $B$N3X=,5!G=$N$R$H$D$G!"%f!<%6$N2a5n$NF~NO$+$iJQ498uJd$rM=B,$7$^$9!#(B @url{http://openlab.jp/skk/skk/main/bayesian/README.ja} @item skk-cdb.el @cindex @file{skk-cdb.el} CDB $B7A<0<-=q%U%!%$%k$r<-=q%5!<%P$J$7$KD>@\MxMQ$G$-$k%W%m%0%i%`!#(B @xref{$B:G$b4pK\E*$J@_Dj(B}. @item skk-comp.el @cindex @file{skk-comp.el} $B8+=P$78l$NJd40$r9T$&%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BJd40(B}. @item skk-cursor.el @cindex @file{skk-cursor.el} $B%+!<%=%k$N?'$r@)8f$9$k%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B}. @item skk-cus.el @cindex @file{skk-cus.el} @kbd{M-x customize-group} $B$K$h$kBPOCE*$J@_DjJQ995!G=$N4J0WHG$rDs6!$7$^$9!#(B @xref{Customize $B$K$h$k@_DjJQ99(B}. @item skk-dcomp.el @cindex @file{skk-dcomp.el} skk-comp $B$K$h$kJd40$r<+F0E*$K(B: @file{skk-e21.el}$B!K(B GNU Emacs 21 $B0J9_$N3HD%5!G=$rMxMQ$9$k%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B $B%$%s%8%1!<%?$N%+%i!<2=$d2hA|I=<(!"%D!<%k%F%#%C%WMxMQ$J$I!#(B @item skk-gadget.el @cindex @file{skk-gadget.el} $B%W%m%0%i%`3Q%+%J!#0J23Q(B $B%+%J!W$H5-=R$7$^$9!#(B}$B$rMxMQ$9$k5!G=$rDs6!$7$^$9!#(B @item skk-jisx0213.el @cindex @file{skk-jisx0213.el} JIS X 0213 $BJ8;z=89g$r07$&%W%m%0%i%`$G$9!#$3$N5!G=$O(B Emacs 23 $B$G$OI8=`$G(B $BMxMQ$G$-$^$9!#$=$lL$K~$N%P!<%8%g%s$N(B Emacs $B$K$*$$$F$O!"(BMule-UCS $B$rF3F~$9(B $B$k$J$I$NBP:v$,I,MW$G$9!#(BMule-UCS $B$K$D$$$F$O(B @uref{http://tats.haun.org/mule-ucs/, Mule-UCS Unofficial Site} $B$r;2>H(B $B$7$F$/$@$5$$!#(B @item skk-jisyo-edit-mode.el @cindex @file{skk-jisyo-edit-mode.el} SKK $B<-=q$rJT=8$9$k$?$a$N%a%8%c!<%b!<%I$rDs6!$7$^$9!#(B @item skk-kakasi.el @cindex @file{skk-kakasi.el} KAKASI $B%$%s%?!<%U%'%$%9%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BNN0h$NA`:n(B}. @item skk-kanagaki.el @cindex @file{skk-kanagaki.el} $B%-!<%\!<%I$N$+$JG[Ns$J$I$KBP1~$9$kOHAH$_$rDs6!$7$^$9!#(B $B8=CJ3,$G$O5l(B JIS $BG[Ns$N$+$J%-!<%\!<%I5Z$S(B NICOLA $B5,3J$N?F;X%7%U%HG[(B $BNs$KBP1~$7$F$$$^$9!#(B @xref{$B$+$JF~NO$H?F;X%7%U%H(B}. @item skk-kcode.el @cindex @file{skk-kcode.el} $BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO$r9T$&%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO(B}. @item skk-leim.el @cindex @file{skk-leim.el} LEIM $B4XO"%W%m%0%i%`%U%!%$%k!#(BDDSKK $B$r(B Emacs $B$N(B input method $B$H$7$FMxMQ$G(B $B$-$k$h$&$K$7$^$9!#(B @item skk-look.el @cindex @file{skk-look.el} @command{look} $B%3%^%s%I$H$N%$%s%?!<%U%'%$%9%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{skk-look}. @item skk-lookup.el @cindex @file{skk-lookup.el} Lookup $B$G8!:w$G$-$k<-=q$r;H$C$FC18l$N8uJd$r=PNO$9$k%W%m%0%i%`!#(B @xref{skk-lookup}. @item skk-macs.el @cindex @file{skk-macs.el} $BB>$N%U%!%$%k$G6&DL$7$F;HMQ$9$k%^%/%m$J$I$rCf?4$K$^$H$a$?%U%!%$%k!#(B @item skk-num.el @cindex @file{skk-num.el} $B?tCMJQ49$r9T$&%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{$B?tCMJQ49(B}. @item skk-server-completion.el @cindex @file{skk-server-completion.el} $B3HD%$5$l$?<-=q%5!<%P$K$h$k8+=P$78lJd405!G=$rMxMQ$G$-$^$9!#(B @xref{$B%5!<%P%3%s%W%j!<%8%g%s(B}. @item skk-server.el @cindex @file{skk-server.el} $B<-=q%5!<%P$HDL?.$7$FJQ49$9$k5!G=$rDs6!$7$^$9!#(B @xref{$B%5!<%P4XO"(B}. @item skk-setup.el @cindex @file{skk-setup.el} $B<+F0E*$K8D?M@_Dj$r9T$&$?$a$N%U%!%$%k!#(B @item skk-show-mode.el @cindex @file{skk-show-mode.el} $B%+!<%=%kIU6a$KF~NO%b!<%I$rI=<($9$k5!G=$rDs6!$7$^$9!#(B @xref{$BF~NO%b!<%I$r@Z$jBX$($k%-!<(B}. @item skk-sticky.el @cindex @file{skk-sticky.el} $BJQ493+;O0LCV5Z$SAw$j3+;O0LCV$N;XDjJ}K!$rJQ992DG=$K$9$k!#(B @xref{$BJQ490LCV$N;XDjJ}K!(B}. @item skk-study.el @cindex @file{skk-study.el} $BD>A0$K3NDj$7$?$$$/$D$+$N8l$H$N4XO"@-$r3NG'$7!"8uJd=g$rA`:n$9$k3X=,8z2L(B $B$rDs6!$9$k%W%m%0%i%`!#(B @xref{$BJQ49$N3X=,(B}. @item skk-tankan.el @cindex @file{skk-tankan.el} SKK $B$r;H$C$FC14A;zJQ49$r9T$&%W%m%0%i%`$G$9!#(B @xref{$BC14A;zJQ49(B}. @item skk-tut.el @cindex @file{skk-tut.el} SKK $B%A%e!<%H%j%"%k%W%m%0%i%`!#(B @xref{$B%A%e!<%H%j%"%k(B}. @item skk-tutcode.el @cindex @file{skk-tutcode.el} SKK $B$G(B TUT-code $BF~NO$rpJs$rDs6!$9$k%W%m%0%i%`%U%!%$%k!#(B @item skk-viper.el @cindex @file{skk-viper.el} VIPER $B%$%s%?!<%U%'%$%9%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B @xref{VIP/VIPER$B$H$NJ;MQ(B}. @item skk-xemacs.el @cindex @file{skk-xemacs.el} XEmacs $B$N3HD%5!G=$rMxMQ$9$k%W%m%0%i%`$r=8$a$?%U%!%$%k!#(B $B%$%s%8%1!<%?$N%+%i!<2=$d2hA|I=<(!"%D!<%k%F%#%C%WMxMQ$J$I!#(B @end table $B$J$*!"(BElib $B$h$j(B @file{queue-m.el} $B%U%!%$%k$r<}O?$7$F$$$^$9!#(B @cindex @file{queue-m.el} @node $B%f!<%6%*%W%7%g%s$N@_DjJ}K!(B @section $B%f!<%6%*%W%7%g%s$N@_DjJ}K!(B @cindex @file{~/.emacs} @cindex @file{~/.emacs.d/init.el} @cindex @file{~/.xemacs/init.el} @cindex @file{~/.skk} DDSKK $B$N%+%9%?%^%$%:$O!"(B@file{~/.emacs} $B$"$k$$$O(B @file{~/.skk} $B$K5-=R$7(B $B$^$9!#$^$?!"3F%U%!%$%k$NDs6!$9$k%U%C%/$bMxMQ$7$^$9!#>e5-$N%U%!%$%k$d%U%C(B $B%/$rMxMQ$7$?@_Dj$,$$$DM-8z$K$J$k$N$+!"$H$$$&E@$K$D$$$F$3$3$G@bL@$7$^$9(B @footnote{$B0JA0$N%P!<%8%g%s$G$O!"$I$N$h$&$J%+%9%?%^%$%:$,9T$o$l$F$$$k>l9g(B $B$G$b%A%e!<%H%j%"%k;HMQ;~$KI8=`@_Dj$KLa$9L\E*$G!"JQ?t$N@k8@$K(B @code{defconst} $B$r;HMQ$7$F$$$?$N$G!"A4$F$N%+%9%?%^%$%:$O(B @file{~/.skk} $B$G9T$&I,MW$,$"$j$^$7$?$,!"(BDDSKK 11 $B0J9_$G$O!"(B@code{defcustom} $B$r;HMQ$7$?(B $B@k8@$r9T$C$F$$$k$N$G!"$3$N@)8B$O$J$/$J$j$^$7$?!#(B}$B!#(B @menu * $B@_Dj%U%!%$%k(B:: * $B%U%C%/(B:: * Customize $B$K$h$k@_DjJQ99(B:: $B$3$N%^%K%e%"%k$G2r@b$5$l$F$$$J$$JQ?t$b@_Dj$G$-$^$9!#(B * skk-customize $B$K$h$k@_DjJQ99(B:: @end menu @node $B@_Dj%U%!%$%k(B @subsection $B@_Dj%U%!%$%k(B @table @file @item ~/.emacs @itemx ~/.emacs.d/init.el @itemx ~/.xemacs/init.el Emacs $B$r5/F0$7$?$H$-$K0lEY$@$1FI$_9~$^$l$^$9!#(B $B$3$N%^%K%e%"%k$O(B @file{~/.emacs} $B$H$$$&5-=R$GE}0l$7$F$$$^$9!#(B @xref{Init File, ,.emacs, emacs, GNU Emacs Manual}. @item ~/.skk DDSKK $B$r5/F0$7$?:G=i$N0lEY$@$1FI$_9~$^$l$^$9!#%U%!%$%kL>$N%G%U%)%k%H$O!"(BOS $B$N$OJQ?t(B @code{skk-init-file} $B$GJQ99$9$k$3$H$,$G(B $B$-$^$9!#$^$?!"(BDDSKK $B$K$O$3$N%U%!%$%k$r<+F0E*$K%P%$%H%3%s%Q%$%k$9$k5!G=$,(B $B$"$j$^$9!#(B @xref{skk-init-file$B$N<+F0%3%s%Q%$%k(B}. @end table @defvr {$B%f!<%6JQ?t(B} skk-user-directory DDSKK $B$O!"(B@file{~/.skk} $B$d(B @file{~/.skk-jisyo} $B$H$$$C$?J#?t$N%U%!%$%k$r(B $B;HMQ$7$^$9!#$3$l$i$N%U%!%$%k$r$R$H$D$N%G%#%l%/%H%j$K$^$H$a$FCV$-$?$$>l9g(B $B$O!"JQ?t(B @code{skk-user-directory} $B$K$=$N%G%#%l%/%H%jL>$r@_Dj$7$^$9!#(B $B$3$NJQ?t$N%G%U%)%k%H$O(B @code{nil} $B$G$9!#$3$NJQ?t$O(B @file{~/.emacs} $B$G@_Dj(B $B$7$F$/$@$5$$!#(BDDSKK $B5/F0;~$K(B @code{skk-user-directory} $B$,;X$9%G%#%l%/%H%j(B $B$,B8:_$7$J$$>l9g$O!"<+F0E*$K:n$i$l$^$9!#(B @lisp (setq skk-user-directory "~/.ddskk") @end lisp $B$3$NJQ?t$r@_Dj$7$?>l9g!JNc$($P>e5-(B @code{~/.ddskk}$B!K!"0J2<$K5s$2$k3FJQ(B $B?t$N%G%U%)%k%HCM$,JQ99$5$l$^$9!#(B @example @group $B1F6A$rl9g$G$b!"3FJQ?t$r8DJL$K@_Dj$7(B $B$F$$$k>l9g$O$=$N8DJL$N@_Dj$,M%@h$5$l$^$9!#(B @end defvr @menu * skk-init-file$B$N<+F0%3%s%Q%$%k(B:: @end menu @node skk-init-file$B$N<+F0%3%s%Q%$%k(B @subsubsection skk-init-file$B$N<+F0%3%s%Q%$%k(B @defvr {$B%f!<%6JQ?t(B} skk-byte-compile-init-file @cartouche @smallformat $B$3$3$G$O(B @itemize @minus @item $B!V(BDDSKK $B$N@_Dj%U%!%$%k!W$r(B @code{el} $B$H!"(B @item $B!V(BDDSKK $B$N@_Dj%U%!%$%k$r%P%$%H%3%s%Q%$%k$7$?%U%!%$%k!W$r(B @code{elc} $B$H(B @end itemize $B$=$l$>$l8F$V$3$H$H$7$^$9!#(B @end smallformat @end cartouche DDSKK $B$N5/F0;~$K!"(B @itemize @bullet @item $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"(B @itemize @minus @item @code{elc} $B$,B8:_$7$J$$$+!"Kt$O(B @item @code{elc} $B$h$j$b(B @code{el} $B$,?7$7$$$H$-(B @end itemize $B$O!"(B@code{el} $B$r%P%$%H%3%s%Q%$%k$7$?(B @code{elc} $B$r@8@.$7$^$9!#(B @item $B$3$NJQ?t$NCM$,(B @code{nil} $B$G$"$l$P!"(B @code{elc} $B$h$j$b(B @code{el} $B$,?7$7$$$H$-$O!"(B@code{elc} $B$r>C5n$7$^$9!#(B @end itemize $B0J>e$N5!G=$rM-8z$K$7$?$$>l9g$O!"(B@file{~/.emacs} $B$K(B @lisp (setq skk-byte-compile-init-file t) @end lisp @noindent $B$H5-=R$7$^$9!#$3$NJQ?t$O(B @file{~/.skk} $B$,FI$_9~$^$l$kA0$KD4$Y$i$l$k$?(B $B$a!"(B@file{~/.skk} $B$K>e5-$N@_Dj$r5-=R$7$F$b$3$N5!G=$OM-8z$K$J$j$^$;$s!#(B @end defvr @node $B%U%C%/(B @subsection $B%U%C%/(B @table @code @item skk-mode-hook @vindex skk-mode-hook @kbd{C-x C-j} $B$HF~NO$7$F(B SKK $B%b!<%I$KF~$kEY$K8F$P$l$^$9!#8e$K8F$P$l$k%U%C%/!#(B @end table @findex eval-after-load @code{load-hook} $B$,Ds6!$5$l$F$$$J$$%W%m%0%i%`$G$"$C$F$b!"%m!<%I40N;8e$K2?$i$+(B $B$N@_Dj$r9T$$$?$$>l9g$O!"4X?t(B @code{eval-after-load} $B$r;HMQ$7$^$9!#Nc$((B $B$P!"(B @lisp @group (eval-after-load "skk-look" '( @dots{} )) @end group @end lisp @noindent $B$N$h$&$K5-=R$7$^$9!#(B @node Customize $B$K$h$k@_DjJQ99(B @subsection Customize $B$K$h$k@_DjJQ99(B @cindex Customize Emacs $BI8=`$N(B Customize $B5!G=$r;H$C$F(B SKK $B$r@_Dj$9$k$3$H$b$G$-$^$9!#(B $B$?$@$7!"(B Customize $B$G$N@_Dj$O(B @file{~/.emacs} $B$G$N@_Dj$HF1MM!"(B @file{~/.skk} $B$K$h$k@_Dj$G>e=q$-$5$l$F$7$^$$$^$9$N$GCm0U$7$F$/$@$5$$!#(B @kindex M-x customize-group @kindex M-x skk-emacs-customize @kbd{M-x customize-group} $B$rH$7$F$/$@$5$$!#(B @display @xref{Easy Customization, , Easy Customization, emacs, GNU Emacs Manual}. @end display skk $B$G@_Dj$G$-$kJQ?t$NCf$K$O!"$^$@$3$N%^%K%e%"%k$G2r@b$5$l$F$$$J$$$b$N$b(B $B$"$j$^$9!#(B Customize $B$r;H$&$H!"$=$l$i$K$D$$$F$bCN$k$3$H$,$G$-$^$9!#(B @node skk-customize $B$K$h$k@_DjJQ99(B @subsection skk-customize $B$K$h$k@_DjJQ99(B @kindex M-x skk-customize $BA0=R$N!V(BEmacs $BI8=`$N(B Customize $B5!G=(B (@kbd{M-x customize-group}) $B!W$K$h$k(B $B@_Dj$,J#;($9$.$k$H46$8$k%f!<%6$N$?$a$K!"4J0WHG$H$7$F(B @kbd{M-x skk-customize} $B$r(B $BMQ0U$7$F$$$^$9!#$3$l$O(B SKK $B%0%k!<%W$N%f!<%6%*%W%7%g%s$N$&$A!"$h$/;H$&$b$N(B $B$@$1H4?h$7$F@_Dj$G$-$k$h$&$K$7$?$b$N$G$9!#(B $B$3$l$O!"%b!<%I%i%$%s$N(B SKK $B%$%s%8%1!<%?$r%^%&%9$N1&%\%?%s!JBh#3%\%?%s!K$G(B $B%/%j%C%/$7$FI=<($5$l$k%a%K%e!<$+$i(B ``SKK $B$r%+%9%?%^%$%:(B ($B4J0WHG(B)'' $B$rA*$s(B $B$G8F$S=P$9$3$H$b$G$-$^$9!#(B @node $B%+%?%+%J!"1Q;zF~NO$NJXK!(B @section $B%+%?%+%J!"1Q;zF~NO$NJXK!(B $B$3$N@a$G$O!"%+%?%+%J$dA41QJ8;z$rF~NO$9$k$?$a$N!"JXMx$JJ}K!$r@bL@$7$^$9!#(B $BC1=c$K3F%b!<%I$rMQ$$$kJ}K!$K$D$$$F$OA0=R$7$^$7$?!#(B (@w{@pxref{$BF~NO%b!<%I(B, , $B%+%J%b!<%I!"A41Q%b!<%I(B}}) @menu * $B$+$J%b!<%I$+$i%+%?%+%J$rF~NO(B:: * $BA41QJ8;z$NF~NO(B:: * $BNN0h$NA`:n(B:: $BNN0h$NCf$NJ8;zeO$r=q$/$H$-$K!"$=$NETEY(B @kbd{q} $B%-!<$r2!$7$FF~NO(B $B%b!<%I$r@Z$j49$($kI,MW$,$"$j$^$;$s(B @footnote{$BA41QJ8;z$H%"%9%-!$NBgJ8;z$K$h$j"&(B $B%b!<%I$KF~$k$3$H$,$G$-$J$$$N$G!"$+$J(B $B"N(B $B%+%J(B $B$N$H$-$HF1MM$K%H%0%kJQ49$G(B $B$-$k$o$1$G$O$"$j$^$;$s!#$+$J%b!<%I(B/$B%+%J%b!<%I$K$*$$$F!"4{$KF~NO$5(B $B$l$?A41QJ8;z!"%"%9%-!]$H$7$?%3%^%s%I$G$b!V$+$J"+"*%+%J!W$N%H%0%kJQ49$r9T$&$3$H$,$G$-(B $B$^$9!#(B(@w{@pxref{$BNN0h$NA`:n(B}}) @node $BA41QJ8;z$NF~NO(B @subsection $BA41QJ8;z$NF~NO(B @kindex / @kindex C-q $B$^$:!"$+$J%b!<%I$KF~$j$^$9!#$NJQ49$HF1MM!"(B @key{SPC} $B$r2!$9$HJQ49%b!<%I$KF~$C$F$7$^$$$^$9$N$G!"(B SKK abbrev $B%b!<%I$+(B $B$i%"%9%-!l9g0J30$OITJX$G$9!#(B (@w{@pxref{$B%"%9%-!H$;$:$K%"(B $B%9%-!l9g$O(B @command{kakasi} $B$rMxMQ$9$k5!G=$,3%?'$K$J$j;HMQ$G$-$^$;$s!#(B @w{@xref{Menu Bars, ,$B%a%K%e!<%P!<(B, emacs, GNU Emacs Manual}.}}$B!#(B @table @kbd @item M-x skk-hiragana-region @kindex M-x skk-hiragana-region @findex skk-hiragana-region $B%+%?%+%J$r$R$i$,$J$XJQ49!#(B @item M-x skk-katakana-region @kindex M-x skk-katakana-region @findex skk-katakana-region $B$R$i$,$J$r%+%?%+%J$XJQ49!#(B @item M-x skk-latin-region @kindex M-x skk-latin-region @findex skk-latin-region $BA41QJ8;z$r%"%9%-!R2p$9$k!V4A;z$+$iFI$_$r5a$a$k%3%^%s%I!W$O!"30It%W%m%0%i%`(B @command{KAKASI} @footnote{@uref{http://kakasi.namazu.org/, KAKASI - $B4A;z"*$+$J(B($B%m!<%^;z(B)$BJQ49%W%m%0%i%`(B}} $B$,I,MW$G$9!#(B @command{KAKASI} $B$,%$%s%9%H!<%k$5$l$F$$$J$1$l$P;HMQ$9$k$3$H$,$G$-$^$;$s!#(B @table @kbd @item M-x skk-gyakubiki-region @kindex M-x skk-gyakubiki-region @findex skk-gyakubiki-region $B4A;z$r$R$i$,$J$XJQ49!#6qBNE*$JJQ49Nc$r$"$2$k$H!"(B @example ``$B4A;z$r$R$i$,$J$XJQ49!#(B''@expansion{}``$B$+$s$8$r$R$i$,$J$X$X$s$+$s!#(B'' @end example @noindent $B$N$h$&$K$J$j$^$9!#0z?t$rEO$7$F!"(B @kbd{C-u M-x skk-gyakubiki-region} $B$N$h$&$K$9$k$H!"J#?t$N8uJd$,$"$k>l9g$K!"(B`@{@}' $B$G0O$C$FI=<($7$^$9!#Nc$((B $B$P(B @example ``$BCfEg(B''@expansion{}``@{$B$J$+$7$^(B|$B$J$+$8$^(B@}'' @end example @noindent $B$N$h$&$K$J$j$^$9!#(B $BAw$j2>L>$,$"$k8l$O!"Aw$j2>L>$^$G4^$a$FNN0h$K;XDj$7$^$9(B ($B$5$b$J$$$H8mJQ49(B $B$N860x$H$J$j$^$9(B)$B!#(B $BNc$($P!"(B@samp{$B8^7nGh$$(B} $B$K$D$$$F!"Aw$j2>L>(B @samp{$B$$(B} $B$r4^$a$:$K$3$N%3%^%s%I$rl9g$K!"(B`@{@}' $B$G0O$C$FI=<($7$^$9!#(B @item M-x skk-hurigana-region @kindex M-x skk-hurigana-region @findex skk-hurigana-region $B4A;z$K$U$j$,$J$rIU$1$k!#Nc$($P!"(B @example ``$B4A;z$NOF$K(B''@expansion{}``$B4A;z(B[$B$+$s$8(B]$B$NOF(B[$B$o$-(B]$B$K(B'' @end example @noindent $B$N$h$&$K$J$j$^$9!#0z?t$rEO$7$F(B @kbd{C-u M-x skk-hurigana-region} $B$N$h$&(B $B$K$9$k$H!"J#?t$N8uJd$,$"$k>l9g$K!"(B`@{@}' $B$G0O$C$FI=<($7$^$9!#(B @item M-x skk-hurigana-katakana-region @kindex M-x skk-hurigana-katakana-region @findex skk-hurigana-katakana-region $B4A;z$K%+%?%+%J$N$U$j$,$J$rIU$1$k!#(B $B0z?t$rEO$7$F!"(B@kbd{C-u M-x skk-hurigana-katakana-region} $B$N$h$&$K$9$k$H!"(B $BJ#?t$N8uJd$,$"$k>l9g$K!"(B`@{@}' $B$G0O$C$FI=<($7$^$9!#(B @item M-x skk-romaji-region @kindex M-x skk-hurigana-region @findex skk-romaji-region $B4A;z!"$R$i$,$J!"%+%?%+%J$r%m!<%^;z$X!"A41QJ8;z$r%"%9%-!]$H$9$k$3$H$,$G$-$^$9!#(B @lisp (setq skk-gyakubiki-jisyo-list (list skk-jisyo)) @end lisp @end defvr @defvr {$B%f!<%6JQ?t(B} skk-romaji-*-by-hepburn $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!"(B $B%3%^%s%I(B @code{skk-romaji-@{region|message@}} $B$K$h$k%m!<%^;z$X$NJQ49MM<0(B $B$K71Na<0$rMQ$$$^$9!#%G%U%)%k%H$O(B @code{t} $B$G$9!#(B $BNc$($P!"(B @example ``$B$7(B'' @expansion{} ``si'' @end example @noindent $B$N$h$&$K$J$j$^$9(B @footnote{$B>l9g$O!"$^$:8+=P$78l$r$R$i$,$J$KJQ49$7$F$+$i<-(B $B=q$N8!:w$KF~$k$h$&@_7W$5$l$F$$$^$9!#$J$*!"$3$N>l9g$NAw$j$"$jJQ49$G$NAw(B $B$j2>L>$O!"%+%?%+%J$K$J$j$^$9!#(B @node $BJ8L.$K1~$8$?<+F0%b!<%I@Z$jBX$((B @subsection $BJ8L.$K1~$8$?<+F0%b!<%I@Z$jBX$((B @cindex $BJ8L.$K1~$8$?<+F0%b!<%I@Z$jBX$((B @cindex @file{context-skk.el} @kindex M-x context-skk-mode @file{context-skk.el} $B$O!"JT=8Cf$NJ8L.$K1~$8$F(B SKK $B$NF~NO%b!<%I$r<+F0E*$K(B $B%"%9%-!<%b!<%I$K@Z$jBX$($kEy$N5!G=$rDs6!$7$^$9!#(B @file{context-skk.el} $B$r%m!<%I$9$k$K$O!"(B@file{~/.emacs} $B$K(B @lisp @group (add-hook 'skk-load-hook (lambda () (require 'context-skk))) @end group @end lisp $B$H=q$$$F$/$@$5$$!#(B $B$"$k%W%m%0%i%_%s%08@8l$N%W%m%0%i%`$r=q$$$F$$$k$H$-!"F|K\8lF~NO$NI,MW$,$"(B $B$k$N$O0lHL$K!"$=$N%W%m%0%i%_%s%08@8l$NJ8;zNsCf$+%3%a%s%HCf$K8B$i$l$^$9!#(B $B$?$H$($P(B Emacs Lisp $B$GF|K\8lF~NO$NI,MW$,$"$k$N$O(B @lisp @group "$BJ8;zNs(B" ;; $B%3%a%s%H(B @end group @end lisp $B$H$$$C$?8D=j$@$1$G$7$g$&!#(B $BJ8;zNs!&%3%a%s%H$N!V30!W$rJT=8$9$k$H$-$O!"B?$/$N>l9g$OF|K\8lF~NO$OI,MW$"(B $B$j$^$;$s!#(B $B8=:_$NJ8;zNs!&%3%a%s%H$N!V30!W$GJT=83+;O$HF1;~$K!J(Bskk $B$,%*%s$G$"$l$P!K(B skk $B$NF~NO%b!<%I$r%"%9%-!<%b!<%I$K@Z$jBX$($^$9!#(B $B%(%3!<%(%j%"$K(B @example @group -------------------- Echo Area -------------------- [context-skk] $BF|K\8lF~NO(B off -------------------- Echo Area -------------------- @end group @end example $B$HI=<($5$l!"%"%9%-!<%b!<%I$K@Z$jBX$o$C$?$3$H$,J,$+$j$^$9!#(B $B$3$l$K$h$j!"J8;zNs!&%3%a%s%H$N!V30!W$G$NJT=8$r3+;O$9$k$K$"$?$C$F!"F|K\8l(B $BF~NO$,(B on $B$K$J$C$F$$$?$?$a$KH/@8$9$kF~NO8m$j$H$=$N=$@5A`:n$r2sHr$9$k$3$H(B $B$,$G$-$^$9!#(B $B>e5-$N5!G=$O(B context-skk-mode $B$H$$$&%^%$%J!<%b!<%I$H$7$Fl9g!"%b!<%I%i%$%s$N%a%8%c!<%b!<%IL>$NNY$K!V(B;$B"&!W$HI=<($5$l$^$9!#(B @defvr {$B%f!<%6JQ?t(B} context-skk-programming-mode context-skk $B$,!V%W%m%0%i%_%s%0%b!<%I!W$H8+Pv$9%a%8%c!<%b!<%I!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} context-skk-mode-off-message $B%"%9%-!<%b!<%I$K@Z$jBX$o$C$?=V4V$K%(%3!<%(%j%"$KI=<($9$k%a%C%;!<%8!#(B @end defvr @node $BJd40(B @section $BJd40(B @cindex $B8+=P$78l$NJd40(B @cindex $BFI$_$NJd40(B @cindex $BJd40(B $BFI$_$NA0H>$@$1$rF~NO$7$F(B @key{TAB} $B$r2!$;$P;D$j$r<+F0E*$KJd$C$F$/$l$k!"(B $B$3$l$,Jd40$G$9!#(B Emacs $B%f!<%6$K$O$*$J$8$_$N5!G=$,(B DDSKK $B$G$b;H$($^$9!#(B @menu * $BFI$_$NJd40(B:: $B!V$+$+!W(B + Tab -> $B!V$+$+$_$,$O$i$7!W(B ! * $BJd40$7$J$,$iJQ49(B:: $B!V$+$7$?$s!W(B + M-SPC -> $B!V`laSC4J]@UG$!W(B !! * $BF0E*Jd40(B:: $BF~NO$7$J$,$i8uJd$rI=<((B @end menu $B$h$/;H$&D9$$8l$r8zN(NI$/F~NO$9$k$K$O!"%"%k%U%!%Y%C%H$NN,8l$rEPO?$9$kJ}K!$b$"$j$^$9!#(B (@w{@pxref{$B%"%9%-!(B $BA0$K"&%b!<%I$GF~NO$5$l$?J8;zNs$r(B X $B$H8F$V$3$H$K$7$^$9!#$3$N$H$-!"8D?M<-=q(B $B$NAw$j$J$7%(%s%H%j$NCf$+$i!V@hF,$,(B X $B$H0lCW$7!W$+$D!VD9$5$,(B X $B$h$j$bD9$$(B $B8+=P$78l!W$r8!:w$7$F!"$=$N$h$&$J8l$,3:Ev$9$l$P(B X $B$NBe$o$j$KI=<($7$^$9!#(B}$B!#(B $B8+=P$78lJd40$O!"8D?M<-=q$NFb!"Aw$j$J$7%(%s%H%j$KBP$7$F9T$o$l$^$9!#(B $B8D?M<-=q$K8B$C$F$$$k$N$O!"6&M-<-=q$G$O@hF,$NJ8;z$r6&DL$K$9$k8+=P$78l$,B?$9$.$F!"(B $BK>$_$NJd40$,9T$($k3NN($,Dc$$$?$a$G$9!#(B @kindex , @kindex . $Be0L$KMh$k$h$&$K$J$C$F$$$k$?$a$G$9!#(B@footnote{@ref{$B<-=q$N=q<0(B}} $B$$$C$?$s(B @key{SPC} $B$rF~NO$7$F"'%b!<%I$KF~$k$H!"0J8e$O8+=P$78lJd40$O9T$o$l$^$;$s!#(B @kindex @kbd{C-u @key{TAB}} $B$^$?!"(B@kbd{.} $B$NBe$o$j$K(B @kbd{C-u @key{TAB}} $B$rF~NO(B $B$9$k$H!"8=:_$N8uJd$KBP$7$FJd40$r$7$^$9!#>e$NNc$G$O(B @samp{$B$5(B} $B$KBP$7!"(B @samp{$B$5$H$&(B} $B$,Jd40$5$l$?;~$K(B @kbd{C-u @key{TAB}} $B$r2!$9$H!"(B $B0J8e$NJd40$O!"(B@samp{$B$5$H$&(B} $B$r4^$`8l(B ($BNc$($P!"(B@samp{$B$5$H$&$;$s$;$$(B}$B$J$I(B) $B$K$D$$$F9T$o$l$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-comp-circulate @kbd{.} $B!J%T%j%*%I!K$G$K$"$j$^$;$s!W$H%(%3!<%(%j%"$KI=<($7$FF0:n$,;_(B $B$^$j$^$9!#$3$NJQ?t$,(B @code{non-nil} $B$G$"$l$PEv=i$N8+=P$78l$r:F$SI=<($7$F(B $B8+=P$78lJd40$r:F3+$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-try-completion-char $B8+=P$78lJd40$r3+;O$9$k%-!<%-%c%i%/%?$G$9!#%G%U%)%k%H$O(B @key{TAB} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-next-completion-char $B(B $B$NJd40$r9T$$$^$9!#(B @lisp @group (add-to-list 'skk-completion-prog-list '(skk-comp-lisp-symbol) t) @end group @end lisp @end defun @node $BJd40$7$J$,$iJQ49(B @subsection $BJd40$7$J$,$iJQ49(B @kindex M-@key{SPC} $BA0@a$G8+=P$78l$NJd40$K$D$$$F=R$Y$^$7$?!#K\@a$G$O!"8+=P$78l$NJd40F0:n$r9T(B $B$C$?8e!"(B@key{SPC} $B$rF~NO$7!""'%b!<%I$KF~$k$^$G$NF0:n$r0l2s$NA`:n$G9T(B $B$&J}K!$K$D$$$F@bL@$7$^$9!#(B $B$d$jJ}$O4JC1!#(B@key{TAB}$B!&(B@key{SPC} $B$HBG80$7$F$$$?$H$3$m$r(B @kbd{M-@key{SPC}} $B$K(B $B49$($k$H!"8+=P$78l$rJd40$7$?>e$GJQ49$r3+;O$7$^$9!#(B $B$3$NJ}K!$K$h$k$H!"Jd40$5$l$k8+=P$78l$,$"$i$+$8$aJ,$+$C$F$$$k>u67$G$O!"%-!<(B $BF~NO$r0l2sJ,>JN,$G$-$k$N$G!"FI$_$,D9$$8+=P$78l$NC18l$rO"B3$7$FF~NO$9$k>l9g(B $B$J$I$K0RNO$rH/4x$7$^$9!#(B @example @group @kbd{K a s i t a n n p o s e k i n i n n} ------ Buffer: foo ------ $B"&$+$7$?$s$]$;$-$K$s(B@point{} ------ Buffer: foo ------ @end group @group @key{SPC}, @key{RET} ------ Buffer: foo ------ $B`laSC4J]@UG$(B@point{} ------ Buffer: foo ------ @end group @group @kbd{K a} ------ Buffer: foo ------ $B"&$+(B@point{} ------ Buffer: foo ------ @end group @group @kbd{M-@key{SPC}} ------ Buffer: foo ------ $B"'`laSC4J]@UG$(B@point{} ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-start-henkan-with-completion-char $B%G%U%)%k%H$O(B @kbd{M-@key{SPC}} $B$G$9!#(B @end defvr @node $BF0E*Jd40(B @subsection $BF0E*Jd40(B @cindex @file{skk-dcomp.el} $B"&%b!<%I$G$O!"(B@key{TAB} $B$r2!$5$J$/$H$b!"J8;z$rF~NO$9$kETEY!"<+F0E*$K8+(B $B=P$78lJd40$NFI$_$rI=<($5$;$k;v$,$G$-$^$9!#$3$N5!G=$r0J2H$7$FJd40$7$h$&$H$9$k5!G=(B}$B$r%$%a!<%8$9$k$HJ,$+$j$d$9$$$+$bCN$l(B $B$^$;$s!#F0E*Jd40$b!"8D?M<-=q$NAw$j$J$7%(%s%H%j$KBP$7$F$N$_9T$J$o$l$^$9!#(B $BF0E*Jd40$rMxMQ$9$k$K$O(B @file{~/.skk} $B$KuBV$+$i(B @key{SPC} $B$r2!$7$FJQ49$9$k$J$j!"(B@kbd{q} $B$r2!$7$F%+%?%+%J$K(B $B$9$k$J$j!"(BDDSKK $BK\Mh$NF0:n$r2?$G$b9T$&$3$H$,$G$-$^$9!#(B $BJd40$5$l$?8+=P$78l$,<+J,$N0U?^$7$?$b$N$G$J$$>l9g$O!"$+$^$o$:uBV$,<+J,$N0U?^$7$?$b$N$G$"$k>l9g$b!"Jd40$5$l$?ItJ,$rC1$KL5(B $B;k$9$k$@$1$G(B OK $B$G$9!#2<5-$NNc$G$O!"(B@samp{$B$[(B} $B$r8+=P$78l$H$7$?JQ49$r9T$C(B $B$F$$$^$9!#(B @example @group @kbd{H o} ---------------- Buffer: foo ------------------ $B"&$[(B@point{}$B$s$H$&(B ---------------- Buffer: foo ------------------ @key{SPC} ---------------- Buffer: foo ------------------ $B"'J](B ---------------- Buffer: foo ------------------ @end group @end example $BJd40$5$l$?>uBV$+$i(B @key{BS} $B$r2!$9$H!">C$5$l$?Jd40A0$N8+=P$78l$+$i:FEYJd(B $B40F0:n$r9T$$$^$9!#(B @example @group @kbd{H o} ---------------- Buffer: foo ------------------ $B"&$[(B@point{}$B$s$H$&(B ---------------- Buffer: foo ------------------ @kbd{k a} ---------------- Buffer: foo ------------------ $B"&$[$+(B@point{}$B$s(B ---------------- Buffer: foo ------------------ @key{BS} ---------------- Buffer: foo ------------------ $B"&$[(B@point{}$B$s$H$&(B ---------------- Buffer: foo ------------------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-dcomp-activate $B$3$NJQ?t$NCM$,(B @code{Non-nil} $B$G$"$l$P!"%+!<%=%k0LCV$K4X$o$i$:>o$KF0E*Jd40$,M-8z$H$J$j$^$9!#(B $BCM$,%7%s%\%k(B @code{eolp} $B$G$"$l$P!"%+!<%=%k$,9TKv$K$"$k$H$-$K8B$C$FF0E*Jd40$,M-8z$H$J$j$^$9!#(B $BCM$,(B @code{nil} $B$G$"$l$P!"F0E*Jd405!G=$OL58z$H$J$j$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-face $B$3$NJQ?t$NCM$O%U%'%$%9$G$"$j!"$3$N%U%'%$%9$K$h$C$FF0E*$KJd40$5$l$?ItJ,$,(B $BAu>~$5$l$^$9!#I8=`$O(B ``DarkKhaki'' $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-activate @b{XEmacs $B$G$OF0:n$7$^$;$s!#(B} @code{Non-nil} $B$G$"$l$P!"F0E*Jd40$N8uJd$r%$%s%i%$%s$KJ#?tI=<($7$^$9(B @footnote{$B8=:_$O8uJd72$N1&B&(B1$B%+%i%`$N%U%'%$%9$,%G%U%)%k%H$KLa$k!"$H$$$&@)Ls$,$"$j$^$9!#(B}$B!#(B @example @group ---------------- Buffer: foo ------------------ $B"&$[(B@point{}$B$s$H$&(B $B!!$[$s$H$&(B $B!!$[$+$s(B $B!!$[$C$+$$$I$&(B $B!!$[$&$[$&(B $B!!(B@dots{} ---------------- Buffer: foo ------------------ @end group @end example @kindex @key{TAB} @kindex , @kindex . @kindex SHIFT TAB $B8uJd$NA*Br$K$O(B @key{TAB} $BKt$O(B @kbd{@key{SHIFT}+@key{TAB}} $B$r2!$7$^$9!#$^$?!"(B $BIaDL$NJd40$HF1MM$K(B @kbd{.} ($B%T%j%*%I(B) $B$H(B @kbd{,} ($B%3%s%^(B) $B$bMxMQ$G$-$^(B $B$9!#(B@w{@ref{$BFI$_$NJd40(B}} @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-rows $BF0E*Jd40$N8uJd$rJ#?tI=<($9$k>l9g$NI=<(9T?t!#I8=`$O(B 7$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-face $BF0E*Jd40$NJ#?tI=<(72$N%U%'%$%9!#>e5-Nc$G$O!V$[!W$N%U%'%$%9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-trailing-face $BF0E*Jd40$NJ#?tI=<(74$NJd40ItJ,$N%U%'%$%9!#>e5-Nc$G$O!V$s$H$&!W!"!V$+$s!W(B $B!V$C$+$$$I$&!W!"!V$&$[$&!W$N%U%'%$%9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-dcomp-multiple-selected-face $BF0E*Jd40$NJ#?tI=<(74$NA*BrBP>]$N%U%'%$%9!#>e5-Nc$G$O(B @key{TAB} $B$r2!$9$?$S(B $B$K!V$[$s$H$&!W!"!V$[$+$s!W!"!V$[$C$+$$$I$&!W$HA*Br0LCV$,0\$j$^$9!#$=$N8=:_(B $BA*Br0LCV$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @node $BJXMx$JJQ49!"$=$NB>$NJQ49(B @section $BJXMx$JJQ49!"$=$NB>$NJQ49(B @menu * $BC14A;zJQ49(B:: $B0lJ8;z$@$14A;z$KJQ49(B * $B8uJd$N9J$j9~$_(B:: $B!V$o!W$@$1$I!Vr2;VOA?MEA!W$N!VOA!W$,M_$7$$(B * $B@\F,<-!&@\Hx<-(B:: $B@\F,<-!&@\Hx<-$@$1$rJQ49(B * $B?tCMJQ49(B:: $B?t$r4^$`J8;zNs$NJQ49!#(B * $B%"%9%-! $B!V%o!<%-%s%0%0%k!<%W!W(B * $B:#F|$NF|IU$NF~NO(B:: $B:#F|$NF|IU$r0lH/F~NO!#(B * $B%W%m%0%i%`:=g$G%=!<%H$7$FI=<($7$^$9!#(B @menu * $B8!:w%-!<$N@_Dj(B:: * $B<-=q$N@_Dj(B:: * $BAm2h?t$K$h$kC14A;zJQ49(B:: * $BIt(B;9$B2h(B($BL\It(B4$B2h(B) L:$BC@(B;9$B2h(B($BFyIt(B5$B2h(B) [$B;D$j(B 50+++++] ----- Buffer: *$B8uJd(B* ----- @end group @end example $B0J>e$N$H$*$j!"Am2h?t$N>:=g$G%=!<%H$5$l$?8uJd$,l9g$O!"(B@code{skk-search-prog-list} $B$N(B $B@hF,$NMWAG$O(B @code{skk-search-kakutei-jisyo-file} $B$G$J$1$l$P$$$1$^$;$s$N$G!"(B @code{skk-search-prog-list} $B$N#2HVL\$NMWAG$K(B @code{skk-tankan-search} $B$rDI2C$7$^$9!#(B @lisp @group ;; skk-search-prog-list $B$N#2HVL\$NMWAG$K(B skk-tankan-search $B$rDI2C$9$k(B (setq skk-search-prog-list (cons (car skk-search-prog-list) (cons '(skk-tankan-search 'skk-search-jisyo-file skk-large-jisyo 10000) (cdr skk-search-prog-list)))) @end group @end lisp $B$J$*!"3NDjJQ49$r;HMQ$7$J$$>l9g$O!"(B @code{skk-search-prog-list} $B$NMWAG(B $B$N@hF,$,(B @code{skk-tankan-search} $B$G$bBg>fIW$G$9!#(B @lisp @group (add-to-list 'skk-search-prog-list '(skk-tankan-search 'skk-search-jisyo-file skk-large-jisyo 10000)) @end group @end lisp @xref{$B<-=q$N8!:wJ}K!$N@_Dj(B}. @node $BAm2h?t$K$h$kC14A;zJQ49(B @subsubsection $BAm2h?t$K$h$kC14A;zJQ49(B @cindex $B2h?tJQ49(B @kindex C-u $BAm2h?t(B M-x skk-tankan $B"&%b!<%I$GAm2h?t$rF~NO$7$F:G8e$K(B @kbd{@@} $B$rIU2C$7$F$+$iJQ49$r3+;O$7$^$9(B @footnote{@kbd{C-u $BAm2h?t(B M-x skk-tankan} $B$G$b2D!#(B}$B!#(B @example Q 1 0 @@ @group ----- Buffer: foo ----- $B"&(B10@@@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: *$B8uJd(B* ----- A:$B7p(B;10$B2h(B($B?MIt(B8$B2h(B) S:$B7q(B;10$B2h(B($B?MIt(B8$B2h(B) D:$B8D(B;10$B2h(B($B?MIt(B8$B2h(B) F:$B8u(B;10$B2h(B($B?MIt(B8$B2h(B) J:$B8v(B;10$B2h(B($B?MIt(B8$B2h(B) K:$B on a completion to select it. In this buffer, type RET to select the completion near point. Possible completions are: 001 $B0l(B ($B$$$A(B) 002 $B!C(B ($B$\$&!"$?$F$\$&(B) 003 $BP&(B ($B$F$s(B) 004 $BP((B ($B$N(B) 005 $B25(B ($B$*$D(B) 006 $BP-(B ($B$O$M$\$&(B) $B!'(B $B!'(B ------ *Completions* ------- @end group @kindex M-v @kbd{0 1 8 @key{RET}} @footnote{@kbd{M-v} $B$NBG80$G!"%+!<%=%k$r(B *Completions* $B%P%C%U%!$X0\$9$3$H$b$G$-$^$9!#(B} @group ----- Buffer: *$B8uJd(B* ----- A:$B@Z(B;4$B2h(B($BEaIt(B2$B2h(B) S:$B4"(B;4$B2h(B($BEaIt(B2$B2h(B) D:$B4)(B;5$B2h(B($BEaIt(B3$B2h(B) F:$BQd(B;5$B2h(B($BEaIt(B3$B2h(B) J:$BQf(B;6$B2h(B($BEaIt(B4$B2h(B) K:$B7:(B;6$B2h(B($BEaIt(B4$B2h(B) L:$BQe(B;6$B2h(B($BEaIt(B4$B2h(B) [$B;D$j(B 51+++++++] ----- Buffer: *$B8uJd(B* ----- @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-tankan-face @kbd{M-x skk-tankan} $B$rA0$N>.!9@a!VIt$NFI$_!W(B($B%R%s%H(B)$B$rM?$($k$H8uJd$O(B ``$B4VF;(B'' $B$K0l0U$K7h$^$j$^$9!#(B $B%R%s%H$O(B @kbd{;} $B$KB3$1$FF~NO$7$^$9!#(B @example @kbd{K a n d o u ; a i d a} $B"((B @samp{;} $B<+BN$OI=<($5$l$^$;$s!#(B ----- Buffer: foo ----- $B"&$+$s$I$&$"$$$@(B ----- Buffer: foo ----- @key{SPC} ----- Buffer: foo ----- $B"'4VF;(B ----- Buffer: foo ----- @end example @file{skk-hint.el} $B$O!"#2$D$NFI$_$N87L)$J@Q=89g$ro$NJQ498uJd$N$J$+$G%R%s%H$H$7$FM?$($i$l$?FI$_$r4^$s$@4A;z$r;}$D$b$N$K(B $B8uJd$r9J$j$^$9!#$3$Nl9g$K!"$=$3$+$i8uJd$r9J(B $B$j$3$`o$KM-8z$G$9!#Nc$($P(B @example $B"&$o(B @end example $B$rJQ49$9$k$H!"NX!"4D!"OC!"OB!"1)!"(B@dots{}$B$HBgNL$K8uJd$,=P$F$-$^$9!#(B $B$3$NCf$+$i(B ``$BOB(B'' $B$rA*$S$?$$$H$7$^$9!#IaDL$KJQ49$7$F$$$F$b(B $B$=$N$&$A(B ``$BOB(B'' $B$,I=<($5$l$^$9$,!"$3$l$r(B @kbd{W a ; h e i w a} $B$HF~NO$7(B $BJQ49$9$k$H!"!V"'$X$$$o!W$N8uJd$G$"$k!VJ?OB!W$K4^$^$l$k(B @example $B"'OB(B @end example $B$,M#0l$N8uJd$H$J$j$^$9!#(B @example @kbd{W a ; h e i w a} ----- Buffer: foo ----- $B"&$o$X$$$o(B ----- Buffer: foo ----- @key{SPC} ----- Buffer: foo ----- $B"'OB(B ----- Buffer: foo ----- @end example @defvr {$B%f!<%6JQ?t(B} skk-hint-start-char $B%R%s%HJQ49$r3+;O$9$k%-!<$r(B character $B$G;XDj$7$^$9!#(B @end defvr @node $B@\F,<-!&@\Hx<-(B @subsection $B@\F,<-!&@\Hx<-(B @cindex $B@\F,<-(B @cindex $B@\Hx<-(B $B@\F,<-(B (prefix)$B!"@\Hx<-(B (suffix)$B$NF~NO$N$?$a$KFCJL$JJ}K!$,MQ0U$5$l$F$$$^(B $B$9!#$?$H$($P!"!V$7!W$N8uJd$OBt;3$"$j!"!V$7!W$+$i!V;a!W$rJQ49$9$k$N$O!"$=$N$^$^$G$O(B $B8zN($,0-$$$G$9!#@\Hx<-$N!V$7!W$J$i$P!"!V;a!W$d!V;T!W$,M%@h$5$l$k$G$7$g$&!#(B $B@\F,<-!&@\Hx<-$O<-=q$NCf$G$O!"(B@samp{>} $B$J$I$G<($5$l$^$9!#(B @example >$B$7(B /$B;a(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-!"(B@samp{$B>.NS;a(B}$B$r@\Hx<-F~NO$rMQ$$$F!"0J2<$N$h$&(B $B$KF~NO$9$k$3$H$,$G$-$^$9!#(B @example @kbd{K o b a y a s h i} @group ------ Buffer: foo ------ $B"&$3$P$d$7(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'>.NS(B@point{} ------ Buffer: foo ------ @end group @kbd{>} @group ------ Buffer: foo ------ $B>.NS"&(B>@point{} ------ Buffer: foo ------ @end group @kbd{s i} @group ------ Buffer: foo ------ $B>.NS"&(B>$B$7(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B>.NS"';a(B@point{} ------ Buffer: foo ------ @end group @kbd{C-j} @group ------ Buffer: foo ------ $B>.NS;a(B@point{} ------ Buffer: foo ------ @end group @end example $B@\F,<-$bF1MM$G$9!#<-=q$K(B @example $B$A$g$&(B> /$BD6(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-!"(B@samp{$BD6Bg7?(B} $B$r@\F,<-F~NO$rMQ$$$F!"0J2<$N$h$&(B $B$KF~NO$9$k$3$H$,$G$-$^$9!#(B @example @kbd{T y o u} @group ------ Buffer: foo ------ $B"&$A$g$&(B@point{} ------ Buffer: foo ------ @end group @kbd{>} @group ------ Buffer: foo ------ $B"'D6(B@point{} ------ Buffer: foo ------ @end group @kbd{O o g a t a} @group ------ Buffer: foo ------ $BD6"&$*$*$,$?(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $BD6"'Bg7?(B@point{} ------ Buffer: foo ------ @end group @kbd{C-j} @group ------ Buffer: foo ------ $BD6Bg7?(B@point{} ------ Buffer: foo ------ @end group @end example $B%-!<(B @kbd{>} $B$r2!$7$?$@$1$G!"(B@key{SPC} $B$,2!$5$l$?$+$N$h$&$KJQ49$5$l$^$9!#(B $BB>$N@\F,<-$rA*$S$?$$$H$-$O!"(B@key{SPC} $B$r2!$7$F2<$5$$!#(B @defvr {$B%f!<%6JQ?t(B} skk-special-midashi-char-list $B"&%b!<%I$^$?$O"'%b!<%I$K$*$$$F!"$3$NJQ?t$NCM$K4^$^$l$kJ8;z$NF~NO$,$"$C$?(B $B>l9g!"@\F,<-!&@\Hx<-$NF~NO$r3+;O$7$^$9!#$3$NJQ?t$N%G%U%)%k%H$O!"(B @lisp (?> ?< ??) @end lisp @noindent $B$G$9!#$D$^$j!"(B@samp{>} $B$H(B @samp{<} $B$H(B @samp{?} $B$rF~NO$7$?;~$K@\F,<-!&@\Hx<-F~(B $BNO$r9T$$$^$9!#(B@samp{?} $B$rF~NO$7$?$H$-$K@\F,<-!&@\Hx<-F~NO$r9T$o$J$$>l9g$O(B @samp{?} $B$r30$7$F(B @lisp (setq skk-special-midashi-char-list '(?> ?<)) @end lisp @noindent $B$H$7$^$9!#(B L $B<-=q$N@\F,!&@\Hx<-$O!"@N$O(B @samp{<}, @samp{?} $B$b;H$o$l$F$$$^$7$?$,!"(B $B8=:_$O(B @samp{>} $B$KE}0l$5$l$F$$$^$9!#(B @end defvr @node $B?tCMJQ49(B @subsection $B?tCMJQ49(B @cindex #0 @cindex #1 @cindex #2 @cindex #3 @cindex #4 @cindex #5 @cindex #8 @cindex #9 @cindex $B?t$r%Q%i%a!<%?$H$9$k8l$NJQ49(B @cindex $B?tCM:FJQ49(B @cindex $BBg;z(B @cindex $B4A?t;z(B @cindex $B6b3[(B DDSKK $B$O!"(B@b{$B?t;z$r4^$`8+=P$78l(B}$B$rMM!9$J8uJd$KJQ49$9$k$3$H$,$G$-$^$9!#(B $BNc$($P!"8+=P$78l(B @samp{$B$@$$(B12$B$+$$(B} $B$rJQ49$9$k$H(B @samp{$BBh#1#22s(B}$B!"(B @samp{$BBh0lFs2s(B}$B!"(B@samp{$BBh==Fs2s(B} $B$H$$$C$?8uJd$r5s$2$^$9!#(B $B$3$N@a$G$O!"$3$N$h$&$J8uJd$r<-=q$KEPO?$9$kJ}K!$r@bL@$7$^$9!#4pK\$O!"(B $B?t;z$NItJ,$r(B @samp{#} $B$GCV$-BX$($k$3$H$G$9!#<-=q(B @file{SKK-JISYO.L} $B$N%((B $B%s%H%j!<$+$i6qBNNc$r8+$F$_$^$7$g$&!#(B @example $B$@$$(B#$B$+$$(B /$BBh(B#1$B2s(B/$BBh(B#0$B2s(B/$BBh(B#2$B2s(B/$BBh(B#3$B2s(B/$BBh(B #0 $B2s(B/ @end example @noindent @samp{$B$@$$(B12$B$+$$(B} $B$N$h$&$J(B@b{$B?t;z$r4^$`8+=P$78l(B}$B$rJQ49$7$?>l9g!"8+=P$7(B $B8l$NCf$N?t;z$NItJ,$O<+F0E*$K(B @samp{#} $B$KCV$-49$($i$l$^$9$N(B $B$G!"<-=q%(%s%H%j!<$N:8JU!J$D$^$j8+=P$78l!K(B @samp{$B$@$$(B#$B$+$$(B} $B$K%^%C%A$7$^$9!#(B $B<-=q%(%s%H%j!<$N1&JU$N(B @samp{#1}$B!"(B@samp{#2} $B$J$I$O!V$I$N$h$&$K?t;z$r2C9)(B $B$9$k$+!W$N%?%$%W$rI=$7$^$9!#0J2.@Z-4}$N4}Ih$NF~NOMQ!#(B@samp{$BA43Q?t;z(B + $B4A?t;z(B} $B$KJQ49$7$^$9!#$3(B $B$l$K$D$$$F$O8e$GNc$r5s$2$F@bL@$7$^$9!#(B @end table $B0J2<$K$$$/$D$+Nc$r<($7$^$9!#<-=q$K(B @example # /#3/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-$K!"(B @example @group @kbd{Q 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 @key{SPC}} @end group @end example @noindent $B$HF~NO(B@footnote{$B$^$?$O(B @kbd{/ 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 @key{SPC}}} $B$9$l$P!"(B@samp{$BI4C{Fs@i;02/;M==K|8^I4(B} $B$HJQ49$5$l$^$9(B @footnote{SHIFT $B%-!<$rH<$C$F?t;z$rF~NO$7;O$a$k$3$H$O$G$-$J$$$N$G!"(B@kbd{Q} $B$^$?$O(B @kbd{/} $B$G"&%b!<%I$KF~$kI,MW$,$"$j$^$9!#(B}$B!#(B $B<-=q$K(B @example #m#d /#0$B7n(B#0$BF|(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-$K!"(B@kbd{/ 2 m 2 5 d @key{SPC}} $B$HF~NO$9$l$P!"(B @samp{2$B7n(B25$BF|(B}$B$HJQ49$5$l$^$9(B @footnote{@samp{m} $B$d(B @samp{d} $B$J$I%"%9%-!l9g$O(B @kbd{/} $B%-!<$r:G=i$KF~NO$7$F(B SKK abbrev $B%b!<%I$KF~$C$F$+$i(B $BF~NO$9$kI,MW$,$"$j$^$9!#(B @w{@xref{$B%"%9%-!~6h(B/ @end group @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$-$K!"(B@kbd{/ p 1 2 5 @key{SPC}} $B$HF~NO$9$l$P!"8+=P(B $B$78l(B @samp{p125} $B$N8uJd$,(B @samp{#4} $B$J$N$G!"8+=P$78l$N?t;zItJ,$N(B @samp{125} $B$KBP$7<-=q$,:F8!:w$5$l!"(B@samp{$BEl5~ET3k>~6h(B} $B$HJQ49$5$l$^$9!#(B $B:G8e$K!".?tE@?t$r;H$C$?8+=P$78l(B $B$KBP1~$7$F?tCMJQ49$r9T$$$^$9!#$?$@$7!"<-=q$K$*$$$F(B @example #.# /#1$B!%(B#1/#0$B7n(B#0$BF|(B/ @end example $B$J$I$N8+=P$78l$,;HMQ$G$-$J$/$J$j$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-show-num-type-info @code{Non-nil} $B$G$"$l$P!"<-=qEPO?%b!<%I$KF~$k$N$HF1;~$KJQ49%?%$%W$N0FFb$r(B $BI=<($9$k!#%G%U%)%k%H$O(B @code{t} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-num-grouping-separator $B%?%$%W(B 8 (@samp{#8}) $B$G;HMQ$9$k5-9f!#%G%U%)%k%H$O(B @samp{,}$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-num-grouping-places $B%?%$%W(B 8 (@samp{#8}) $B$K$D$$$F!"2?7eKh$K6h@Z$k$N$+$r?tCM$G;XDj$9$k!#%G%U%)%k%H$O(B 3$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-use-numeric-conversion $B$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9$k$H!"K\@a$G@bL@$7$??tCMJQ49$N5!G=$rA4$F(B $BL58z$K$7$^$9!#(B @end defvr @node $B%"%9%-!$K!"<-=q$K(B @example is /$B%$%s%/%j%a%s%?%k!&%5!<%A(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$7$F!"0J2<$KNc$r<($7$^$9!#(B @example @kbd{/} @group ------ Buffer: foo ------ $B"&(B@point{} ------ Buffer: foo ------ @end group @kbd{i s} @group ------ Buffer: foo ------ $B"&(Bis@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'%$%s%/%j%a%s%?%k!&%5!<%A(B@point{} ------ Buffer: foo ------ @end group @kbd{C-j} @group ------ Buffer: foo ------ $B%$%s%/%j%a%s%?%k!&%5!<%A(B@point{} ------ Buffer: foo ------ @end group @end example $B8uJd$r3NDj$9$k$H(B SKK abbrev $B%b!<%I$rH4$1$F$+$J%b!<%I$KLa$j$^$9!#(B SKK abbrve $B%b!<%I$G;H$o$l$k<-=q$O!"IaDL$N$+$J4A;zJQ49$HF1$8$G$9!#8+=P$78l(B $B$,%"%9%-!e5-$NNc$K$*$$$F(B @key{SPC} $B$NBe$o$j$K(B @kbd{C-q} $B$r%?%$%W$9$k$3$H$G!"F~NO(B $B$7$?%"%9%-!Nq$G!"(B@code{nil} $B$G$"$l$P859f$G(B $BI=<($7$^$9!#%G%U%)%k%H$O(B @code{nil} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-number-style $B$3$NJQ?t$NCM$O0J2<$N$h$&$K2re5-$N(B @samp{1996$BG/(B}$B!"(B@samp{$B#1#9#9#6G/(B}$B!"(B@samp{$B0l6e6eO;G/(B} $B$NItJ,$O!"JQ(B $B?t(B @code{skk-date-ad} $B$NCM$,(B @code{nil} $B$G$"$l$P(B @samp{$BJ?@.(B8$BG/(B} $B$N$h$&(B $B$K859f$GI=<($5$l$^$9!#(B @end defvr L $B<-=q(B @footnote{@ref{$B<-=q$N$C$F!"(B@kbd{/ t o d a y @key{SPC}} $B$HF~NO$9$k$H!":#F|$NF|IU(B $B$,>e5-$N7A<0$G=g\:Y$O(B @file{skk-gadget.el} $B$N%3%a%s%H$r;2(B $B>H$7$F$/$@$5$$!#(B $B$J$*!"(B@kbd{@@} $B$N%?%$%W$GF|IU$rA^F~$9$k$N$G$O$J$/!"J8;z$I$*$j(B @samp{@@} $B$r(B $BA^F~$7$?$$>l9g$Ol9g$Oo$NC18l$HF1MM$K9T$&$3$H$,$G$-$^$9$,!"$=$NCf$K2~(B $B9T$r4^$^$J$$$h$&$K=q$/I,MW$,$"$j$^$9(B @footnote{$BDL>o$NC18l$G$O!"2~9T$r4^$`$3$H$,2DG=$G$9!#$=$l$O!"I>2A$9$k$H$=$N0LCV$K(B $B2~9T$rA^F~$9$k$h$&$JNq!?859fJQ49$d4JC1$J7W;;$J$I%W%m%0%i%`e$G!"(B @code{skk-calc} $B$KM?$($i$l$?0z?t(B ($B$3$N>l9g$O(B @samp{*}) $B$r1i;;;R$H$7$F1i(B $B;;$r9T$$$^$9!#(B @end defun @defun skk-gadget-units-conversion $B4p=`C10L(B $B?tCM(B $BJQ49C10L(B $B?tCM$K$D$$$F!"4p=`C10L$+$iJQ49C10L$X$NJQ49$r9T$$$^$9!#(B @example @kbd{/ 1 3 m i l e} @group ------ Buffer: foo ------ $B"&(B13mile@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'(B20.9209km@point{} ------ Buffer: foo ------ @end group @key{RET} @group ------ Buffer: foo ------ 20.9209km@point{} ------ Buffer: foo ------ @end group @end example $BC10LJQ49$N>pJs$O!"JQ?t(B @code{skk-units-alist} $B$GDj5A$5$l$F$$$^$9!#(B @end defun @defvr {$B%f!<%6JQ?t(B} skk-units-alist $B$3$NJQ?t$O0J2<$N7A<0$NO"A[%j%9%H$G$9!#(B @example ($B4p=`$H$J$kC10L(B ($BJQ49$9$kC10L(B . $BJQ49;~$NG\N((B) ($B!D(B . $B!D(B)) @end example $B4X?t(B @code{skk-gadget-units-conversion} $B$GMxMQ$5$l$F$$$^$9!#%G%U%)%k%H$G(B $B$O!"0J2<$NC10LJQ49$N>pJs$rDj5A$7$F$$$^$9!#(B @lisp @group ("mile" ("km" . 1.6093) ("yard" . 1760)) ("yard" ("feet" . 3) ("cm" . 91.44)) ("feet" ("inch" . 12) ("cm" . 30.48)) ("inch" ("feet" . 0.5) ("cm" . 2.54)) @end group @end lisp @end defvr @defun skk-relative-date pp-function format and-time &key (yy 0) (mm 0) (dd 0) @code{skk-current-date} $B$N3HD%HG!#(B@code{PP-FUNCTION}, @code{FORMAT}, @code{AND-TIME} $B$N(B $B0UL#$O(B @code{skk-current-date} $B$N(B docstring $B$r;2>H$N$3$H!#(B $B%-!<%o!<%IJQ?t(B @code{:yy}, @code{:mm}, @code{:dd} $B$K@5$^$?$OIi$N?tCM$r;XDj$9$k$3$H$G(B $BL@F|!"L@8eF|!"0l:rF|$J$I$NF|IU$r5a$a$k$3$H$,$G$-$k!#(B $B>\:Y$O(B @file{skk-gadget.el} $B$N%3%a%s%H$r;2>H$N$3$H!#(B @end defun @node $B6uGr!&2~9T!&%?%V$r4^$s$@8+=P$78l$NJQ49(B @subsection $B6uGr!&2~9T!&%?%V$r4^$s$@8+=P$78l$NJQ49(B $BJQ49$N:]!"8+=P$78l$NCf$N6uGr!"2~9T!"%?%V$OL5;k$5$l$^$9!#(B @example @group ---------------- Buffer: foo ------------------ $B"&$8$s$8$g$&$7$g(B $B$&$,$C$3$&(B@point{} ---------------- Buffer: foo ------------------ @end group @key{SPC} @group ---------------- Buffer: foo ------------------ $B"'?R>o>.3X9;(B@point{} ---------------- Buffer: foo ------------------ @end group @end example $B%*!<%H%U%#%k%b!<%I$G@^$jJV$5$l$?J8;zNs$KBP$7!"@^$jJV$5$l$?>u(B $BBV$N$^$^JQ49$9$k$3$H$b$G$-$^$9!#(B @example @group ---------------- Buffer: foo ------------------ $B2>L>4A;zJQ49%W%m%0%i%`$r$5(B $B$/$;$$$7$^$7$?!#(B@point{} ---------------- Buffer: foo ------------------ @end group @kbd{C-u 10 C-b Q} @group ---------------- Buffer: foo ------------------ $B2>L>4A;zJQ49%W%m%0%i%`$r"&(B@point{}$B$5(B $B$/$;$$$7$^$7$?!#(B ---------------- Buffer: foo ------------------ @end group @kbd{C-u 5 C-f} @group ---------------- Buffer: foo ------------------ $B2>L>4A;zJQ49%W%m%0%i%`$r"&$5(B $B$/$;$$(B@point{}$B$7$^$7$?!#(B ---------------- Buffer: foo ------------------ @end group @key{SPC} @group ---------------- Buffer: foo ------------------ $B2>L>4A;zJQ49%W%m%0%i%`$r"':n@.(B@point{}$B$7$^$7$?!#(B ---------------- Buffer: foo ------------------ @end group @end example $B$3$3$G$O2~9T$r1[$($F8+=P$78l$rC5$7!"JQ49$9$kNc$r<($7$^$7$?!#F1MM$K!"6uGr!"(B $B%?%VJ8;z$rCf4V$K4^$`J8;zNs$KBP$7$F$bJQ49$r9T$&$3$H$,$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-allow-spaces-newlines-and-tabs $B$3$NJQ?t$r(B @code{nil} $B$K@_Dj$9$k$H!"K\@a$G@bL@$7$?$h$&$J#29T0J>e$K$^$?$,(B $B$kJ8;zNs$KBP$9$kJQ49$r6X;_$7$^$9!#(B @end defvr @node $B%+%?%+%JJQ49(B @subsection $B%+%?%+%JJQ49(B @defvr {$B%f!<%6JQ?t(B} skk-search-katakana $BDL>o!"(BSKK $B$G%+%?%+%J8l$rF~NO$9$k$K$O!"(B @itemize @bullet @item @kbd{q} $B$G%+%J%b!<%I$K0\$C$F$+$i%+%?%+%J$rF~NO$9$k(B @item $B"&%b!<%I$G(B @kbd{q} $B$K$h$j%+%?%+%J$XJQ49$9$k(B@footnote{@ref{$B$+$J%b!<%I$+$i%+%?%+%J$rF~NO(B}} @end itemize $B$N$I$A$i$+$G$9!#$3$l$i$NJ}K!$OR2p$9$kJ}K!$G$O%+%?%+%J8l$,IaDL$NJQ498uJd$H$7$F8=$l!"8D?M(B $B<-=q$K$bEPO?$5$l$^$9!#@_Dj$9$k$K$O0J2<$r(B @file{~/.skk} $B$K5-=R$7$^$9(B @footnote{@code{skk-search-prog-list} $B$N@_Dj$r%f!<%6$,JQ99$7$F$$$k>l9g$O(B $B4|BT$I$*$j$KF0:n$7$J$$>l9g$,$"$j$^$9!#$=$N>l9g$O(B@code{skk-search-prog-list} $B$N(B $B@_Dj$K4X?t(B @code{skk-search-katakana} $B$N8F$S=P$7$,$"$k$3$H$r3NG'$7$F$/$@(B $B$5$$!#$^$?$3$N5!G=$N@_Dj$O(B DDSKK 14.1 $B0JA0$G$O0[$J$j$^$9!#>\$7$/$O%=!<%9(B $B$KIUB0$N%I%-%e%a%s%H!"@_DjNc$r$4Mw$/$@$5$$!#(B}$B!#(B @lisp (setq skk-search-katakana t) @end lisp $B$^$?!"CM$r%7%s%\%k(B@code{'jisx0201-kana} $B$H$9$k$H!"%+%?%+%J8uJd$K2C$(H>3Q(B $B%+%?%+%J8uJd$bJQ498uJd$K8=$l$^$9!#(B @lisp (setq skk-search-katakana 'jisx0201-kana) @end lisp @end defvr @node $B%5JQF0;lJQ49(B @subsection $B%5JQF0;lJQ49(B @defvr {$B%f!<%6JQ?t(B} skk-search-sagyo-henkaku $BDL>o!"(BSKK $B$G$O=tHL$N;v>p$K$h$j%59TJQ3J3hMQ$NF0;l$OAw$j$J$7JQ49$r$9$kA0Ds(B $B$K$J$C$F$$$^$9!#$3$N$3$H$O6&M-<-=q$N%a%s%F%J%s%9$K$*$1$kJX59>e$d$`$r$($J(B $B$$$N$G$9$,!"8D?M<-=q$,0i$?$J$$(B ($B%5JQF0;l$HL>;l$N6hJL$,$G$-$J$$(B) $B$H$$$&R2p$9$kJ}K!$G$OG$0U$NAw$j$J$78uJd$rMxMQ$7$F%59T$NAw$j%W%l(B $B%U%#%C%/%9$K8BDj$7$FAw$j$"$jJQ49$,2DG=$K$J$j!"8D?M<-=q$r0i$F$k$3$H$,2DG=(B $B$K$J$j$^$9!#@_Dj$9$k$K$O0J2<$r(B @file{~/.skk} $B$K5-=R$7$^$9!#(B @footnote{@code{skk-search-prog-list} $B$N@_Dj$r%f!<%6$,JQ99$7$F$$$k>l9g$O(B $B4|BT$I$*$j$KF0:n$7$J$$>l9g$,$"$j$^$9!#$=$N>l9g$O(B @code{skk-search-prog-list} $B$N@_Dj$K4X?t(B @code{skk-search-sagyo-henkaku} $B$N8F$S=P$7$,$"$k$3$H$r3NG'(B $B$7$F$/$@$5$$!#$^$?$3$N5!G=$N@_Dj$O(B DDSKK 14.1 $B0JA0$G$O0[$J$j$^$9!#>\$7$/(B $B$O%=!<%9$KIUB0$N%I%-%e%a%s%H!"@_DjNc$r$4Mw$/$@$5$$!#(B} @lisp (setq skk-search-sagyo-henkaku t) @end lisp $BNc$($P(B @samp{$B$*Cc$9$k(B} $B$NJQ49$O0J2<$N$h$&$KJQ2=$7$^$9!#(B @itemize @bullet @item $B=>Mh(B $B!D(B @kbd{O c h a @key{SPC} s u r u} @item $B%5JQ(B $B!D(B @kbd{O c h a S u r u} @end itemize $BJQ?t$NCM$r(B @code{anything} $B$K@_Dj$9$k$H!"%59T$K8B$i$:G$0U$NAw$j2>L>$r5v(B $B2D$7!"Aw$j$"$jJQ49$r$7$^$9!#$3$l$K$h$j!"Aw$j$"$jJQ49$NMxMQHO0O$r7AMF;l!&(B $BF0;l$NJQ49$N$_$J$i$:!"$"$i$f$k$R$i$,$J3+;OE@$N;XDj$K3HD%$9$k$3$H$,$G$-$^(B $B$9!#(B $B$3$N%5JQF0;lAw$j$"$jJQ495!G=$O!"%+%?%+%JJQ495!G=$HAH$_9g$o$;$k$H$5$i$KM-(B $B8z$G$9!#(B(@w{@pxref{$B%+%?%+%JJQ49(B}}) @end defvr @node $B0[BN;z$XJQ49$9$k(B @subsection $B0[BN;z$XJQ49$9$k(B @samp{$BJU(B} (42$B6h(B53$BE@(B) $B$N0[BN;z$G$"$k(B @samp{$Bn4(B} (78$B6h(B20$BE@(B) $B$d(B @samp{$Bn5(B} (78 $B6h(B21$BE@(B) $B$rF~NO$7$?$$$H$-$,$"$j$^$9(B@footnote{$B<-=q$,=<@\A^F~$9(B $B$k$3$H$b$G$-$^$9!#(B}$B!#(B @example @point{}$BJU(B @kbd{Q} $B"&(B@point{}$BJU(B @kbd{C-f} $B"&JU(B@point{} @key{SPC} $B"'n4(B@point{} @key{SPC} $B"'n5(B@point{} @end example @defvr {$B%f!<%6JQ?t(B} skk-itaiji-jisyo $B<-=q%U%!%$%k(B @file{SKK-JISYO.itaiji} $BKt$O(B @file{SKK-JISYO.itaiji.JIS3_4} $B$X(B $B$N%Q%9$r;XDj$9$k!#(B $BB>$N<-=q%U%!%$%k$H0[$J$j!"$3$N(B 2 $B$D$N<-=q%U%!%$%k$O8+=P$78l$,4A;z$G$9!#(B @end defvr @defun skk-search-itaiji not documented @url{http://mail.ring.gr.jp/skk/200303/msg00071.html} @end defun @node $B%U%!%s%/%7%g%s%-!<$N;H$$J}(B @subsection $B%U%!%s%/%7%g%s%-!<$N;H$$J}(B @defvr {$B%f!<%6JQ?t(B} skk-j-mode-function-key-usage $B%7%s%\%k(B @code{conversion} $B$J$i$P!"(B@code{skk-search-prog-list-1} $B!A(B @code{skk-search-prog-list-9} $B$*$h$S(B @code{skk-search-prog-list-0} $B$r(B $BiD9$J0FFb%a%C%;!<%8$NI=<((B}}) @itemize @bullet @item @key{[F5]} $B!D(B $BC14A;z(B @item @key{[F6]} $B!D(B $BL5JQ49(B @item @key{[F7]} $B!D(B $B%+%?%+%J(B @item @key{[F8]} $B!D(B $BH>3Q%+%J(B @item @key{[F9]} $B!D(B $BA43Q%m!<%^(B @item @key{[F10]} $B!D(B $B%m!<%^(B @end itemize $B%7%s%\%k(B @code{kanagaki} $B$J$i$P!"$+$J%-!<%\!<%IF~NOMQ$K<+F0@_Dj$7$^$9!#(B @code{nil} $B$J$i$P!"<+F0@_Dj$7$^$;$s!#(B @end defvr @node $B%-!<@_Dj(B @section $B%-!<@_Dj(B @cindex $B%-!<@_Dj(B @menu $BJ8;z$NF~NO(B * $B$+$J%b!<%I(B/$B%+%J%b!<%I$N%-!<@_Dj(B:: * $BA41Q%b!<%I$N%-!<@_Dj(B:: * $BJD$83g8L$N<+F0F~NO(B:: @noindent $BJQ49!"3NDj$J$I(B * $B3NDj$9$k%-!<(B:: RET $B0J30$G3NDj$5$l$k$K$O(B * $B8uJd$NA*Br$KMQ$$$k%-!<(B:: asdfjkl $B0J30(B * $B"'%b!<%I$G$N(BRET:: $B2~9T$bF1;~$K$9$k(B? $B$7$J$$(B? * $B"'%b!<%I$G$N(BBS:: $B:o=|(B vs $BA08uJd(B * $BAw$j$"$jJQ49Cf$N(BC-g:: * $BJQ490LCV$N;XDjJ}K!(B:: $BBgJ8;z0J30$G$bJQ490LCV$r;XDj2DG=$K!#(B @noindent $BB>(B * 1$B2s$NC$7A`:n(B(undo)$B$NBP>](B:: @end menu $B4XO"9`L\(B: @w{@ref{$B%m!<%^;zF~NO0J30$NF~NOJ}<0(B}} @node $B$+$J%b!<%I(B/$B%+%J%b!<%I$N%-!<@_Dj(B @subsection $B$+$J%b!<%I(B/$B%+%J%b!<%I$N%-!<@_Dj(B @menu * $B%m!<%^;z$N%k!<%k$N@_Dj(B:: * $B%m!<%^;z%k!<%k$NJQ99Nc(B:: $BN,9f$J$I$b@_Dj$G$-$^$9!#(B * $B"#%b!<%I$K4XO"$9$k$=$NB>$NJQ?t(B:: * $B?t;z$d5-9fJ8;z$NF~NO(B:: @end menu @node $B%m!<%^;z$N%k!<%k$N@_Dj(B @subsubsection $B%m!<%^;z$N%k!<%k$N@_Dj(B @table @code @item skk-rom-kana-base-rule-list @vindex skk-rom-kana-base-rule-list @item skk-rom-kana-rule-list @vindex skk-rom-kana-rule-list @end table DDSKK $B$N"#%b!<%I$K$*$1$kJ8;zJQ49$O!"$3$l$i#2$D$NJQ?t$rMQ$$$F9T$o$l$^$9!#(B @code{skk-rom-kana-base-rule-list} $B$K$O4pK\E*$J%m!<%^;z$+$JJQ49$N%k!<%k$,(B $BDj$a$i$l$F$$$^$9!#0lJ}!"(B@code{skk-rom-kana-rule-list} $B$O%f!<%6$,FH<+$N%k!<%k$r(B $BDj$a$k$?$a$KMQ0U$5$l$F$*$j!"(B@code{skk-rom-kana-base-rule-list} $B$h$j$bM%@h$5$l$^$9!#(B $B$3$l$i$O!VF~=PNO$N>uBV$,$$$+$K0\$jJQ$o$k$Y$-$+!W$r7hDj$7$^$9!#$=$NFbMF$O!"(B @lisp @example ($BF~NO$5$l$kJ8;zNs(B $B=PNO8e$K<+F0E*$KF~NO$KDI2C$5$l$kJ8;zNs(B $B=PNO(B) @end example @end lisp @noindent $B$H$$$&7A$N%j%9%H$rNs5s$7$?$b$N$G$9!#(B @itemize @bullet @item $BF~NO$5$l$kJ8;zNs!DJQ49$5$l$kA0$N%"%9%-!uBV$K0\$k$H$-$K%P%C%U%!$KA^F~$5$l$kJ8;zNs$NAH$_9g(B $B$o$;$G$"$j!"(B @w{@code{("$B%"(B" . "$B$"(B")}} $B$N$h$&$J%3%s%9%;%k$G$9!#(B @end itemize @code{skk-rom-kana-base-rule-list} $B$N0lIt$r8+$F$_$^$7$g$&!#(B @lisp @example ("a" nil ("$B%"(B" . "$B$"(B")) ("ki" nil ("$B%-(B" . "$B$-(B")) ("tt" "t" ("$B%C(B" . "$B$C(B")) ("nn" nil ("$B%s(B" . "$B$s(B")) ("n'" nil ("$B%s(B" . "$B$s(B")) @end example @end lisp @noindent $B$N$h$&$J5,B'$,$"$j$^$9!#$3$l$K$h$k$H(B @example a @expansion{}$B$"(B ki @expansion{}$B$-(B tt @expansion{}$B$C(Bt nn @expansion{}$B$s(B n' @expansion{}$B$s(B @end example @noindent $B$N$h$&$K$J$j$^$9!#(B @code{skk-rom-kana-base-rule-list} $B$K$O!"$&$H(B @example hannou @expansion{}$B$O$s$*$&(B han'ou @expansion{}$B$O$s$*$&(B hannnou @expansion{}$B$O$s$N$&(B @end example @noindent $B$N$h$&$K$J$j$^$9!#$3$3$G(B @lisp @group (setq skk-rom-kana-rule-list (append skk-rom-kana-rule-list '(("nn" "n" ("$B%s(B" . "$B$s(B"))))) @end group @end lisp @noindent $B$N$h$&$J@_Dj$K$9$k$3$H$G(B @example hannou @expansion{}$B$O$s$N$&(B @end example @noindent $B$N$h$&$K%m!<%^;z$+$JJQ49$,9T$o$l$k$h$&$K$J$j$^$9!#(B $BB>$NNc$H$7$F!"N,9f$r@_Dj$9$k$3$H$b$G$-$^$9!#(B @example tp @expansion{}$BElKLBg3X(B skk @expansion{}skk skK @expansion{}SKK @end example @noindent $B$H$$$C$?JQ49$O!"(B @lisp @group ("tp" nil ("$BElKLBg3X(B" . "$BElKLBg3X(B")) ("sk" nil ("" . "")) ("skk" nil ("skk" . "skk")) ("skK" nil ("SKK" . "SKK")) @end group @end lisp @noindent $B$N$h$&$J5,B'$rDI2C$9$k$3$H$GA0$rF~NO$9$k$3$H$O$h$/(B $B$"$k$N$G!"E,Ev$J>JN,7A$rMQ$$$F!"$3$N%j%9%H$KDI2C$7$F$*$/!"$H$$$C$?MxMQ$r(B $B$*4+$a$7$^$9!#(B $B99$K(B @code{skk-rom-kana-rule-list} $B$rMQ$$$l$P(B TUT-code $B$K$h$kF|K\8lF~NO$r(B $BH$7$F$/$@$5(B $B$$!#(B@w{(@pxref{$B%m!<%^;zF~NO0J30$NF~NOJ}<0(B})} @node $B"#%b!<%I$K4XO"$9$k$=$NB>$NJQ?t(B @subsubsection $B"#%b!<%I$K4XO"$9$k$=$NB>$NJQ?t(B @defvr {$B%f!<%6JQ?t(B} skk-kana-input-search-function $B%k!<%k%j%9%H$NCf$K5-$;$J$$JQ49%k!<%k$r=hM}$9$k4X?t!#(B $B$3$l$O(B @code{skk-rom-kana-base-rule-list} $B$H(B @code{skk-rom-kana-rule-list} $B$N(B $BMWAG$rA4$F8!:w$7$?8e$K%3!<%k$5$l$^$9!#0z?t$O$"$j$^$;$s!#%P%C%U%!$NJ8;z$r!"(B $BD>@\(B @code{preceding-char} $B$J$I$GD4$Y$F2<$5$$!#(B $B=i4|@_Dj$G$O(B @kbd{h} $B$G!"D92;$rI=$9$?$a$K;H$o$l$F$$$^$9!#l9g$O!"(B @example ($B6gE@$r<($9J8;zNs(B . $BFIE@$r<($9J8;zNs(B) @end example $B$N$h$&$K;XDj$7$^$9!#Nc$H$7$F!"l9g$O!"(B @lisp (setq-default skk-kutouten-type 'en) @end lisp $B$N$h$&$K4X?t(B @code{setq-default} $B$rMQ$$$F$/$@$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-use-auto-kutouten $B%G%U%)%k%H$O(B @code{nil}$B!#(B@code{Non-nil} $B$G$"$l$P!"%+!<%=%kD>A0$NJ8;z$N%-!<$HF1MM$K(B @code{skk-insert} $B4X?t$K%P%$%s%I$5$l$F$$$^$9!#(B @example @group ! # % & ' * + - 0 1 2 3 4 5 6 7 8 9 : ; < = > ? " ( ) [ ] @{ @} ^ _ ` | ~ @end group @end example $B$3$l$i$N?t;z$d5-9fJ8;z$N%-!<$KBP1~$7A^F~$5$l$kJ8;z$O!"JQ?t(B @code{skk-input-vector} $B$NCM$K$h$j7hDj$5$l$F$$$^$7$?$,!"(BDDSKK 10 $B$K$F$3(B $B$NJQ?t$OGQ;_$5$l$^$7$?!#%+%9%?%^%$%:$9$k$?$a$K$O!"Be$o$j$KJQ?t(B @code{skk-rom-kana-rule-list} $B$rMxMQ$7$^$9!#Nc$($P!"(BSKK 9.6 $B0JA0$K$*$$$F!"(B @lisp @group (aset skk-input-vector ?! nil) (aset skk-input-vector ?, nil) (aset skk-input-vector ?. nil) (aset skk-input-vector ?: nil) (aset skk-input-vector ?; nil) (aset skk-input-vector ?? nil) @end group @end lisp @noindent $B$3$N$h$&$J@_Dj$r$7$F$$$?>l9g!"(BDDSKK 10.x $B0J9_$GF1MM$NF~NO$r$9$k$?$a$K$O!"(B @lisp @group (setq skk-rom-kana-rule-list (append skk-rom-kana-rule-list '(("!" nil "!") ("," nil ",") ("." nil ".") (":" nil ":") (";" nil ";") ("?" nil "?")))) @end group @end lisp @noindent $B$N$h$&$J@_Dj$KJQ99$9$kI,MW$,$"$j$^$9!#(B @code{skk-insert} $B$O!"(BEmacs $B$N%*%j%8%J%k4X?t(B @code{self-insert-command} $B$r%(%_%e%l!<%H$7$F$$$^$9!#6qBNE*$K$O!"0z?t$rEO$9$3$H$K$h$C$FF1$8J8;z$rJ#(B $B?t!"0lEY$KA^F~$9$k$3$H$,2DG=$G$9(B @footnote{$B$+$D$F$O!"(B@samp{$B"&$"(B} $B$J$I$rF~NO$9$k>l9g$K$O0z?tEO$7$,(B $B$G$-$J$+$C$?$N$G$9$,!"K\%P!<%8%g%s$G$O$3$l$b$G$-$k$h$&$K3HD%$5$l$F$$$^$9!#(B}$B!#(B @example @group @kbd{C-u 2 !} ------ Buffer: foo ------ $B!*!*(B ------ Buffer: foo ------ @end group @end example @node $BA41Q%b!<%I$N%-!<@_Dj(B @subsection $BA41Q%b!<%I$N%-!<@_Dj(B $BA41Q%b!<%I$K$*$1$k0u;z2DG=$JA4$F$N%-!<$O%3%^%s%I(B @code{skk-jisx0208-latin-insert} $B$K3d$jIU$1$i$l$F$$$^$9!#$^$?!"JQ?t(B @code{skk-jisx0208-latin-vector} $B$NCM$K$h$jA^F~$5$l$kJ8;z$,7hDj$5$l$^$9!#(B @code{skk-jisx0208-latin-vector} $B$N%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9!#(B @lisp @group [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil "$B!!(B" "$B!*(B" "$B!I(B" "$B!t(B" "$B!p(B" "$B!s(B" "$B!u(B" "$B!G(B" "$B!J(B" "$B!K(B" "$B!v(B" "$B!\(B" "$B!$(B" "$B!](B" "$B!%(B" "$B!?(B" "$B#0(B" "$B#1(B" "$B#2(B" "$B#3(B" "$B#4(B" "$B#5(B" "$B#6(B" "$B#7(B" "$B#8(B" "$B#9(B" "$B!'(B" "$B!((B" "$B!c(B" "$B!a(B" "$B!d(B" "$B!)(B" "$B!w(B" "$B#A(B" "$B#B(B" "$B#C(B" "$B#D(B" "$B#E(B" "$B#F(B" "$B#G(B" "$B#H(B" "$B#I(B" "$B#J(B" "$B#K(B" "$B#L(B" "$B#M(B" "$B#N(B" "$B#O(B" "$B#P(B" "$B#Q(B" "$B#R(B" "$B#S(B" "$B#T(B" "$B#U(B" "$B#V(B" "$B#W(B" "$B#X(B" "$B#Y(B" "$B#Z(B" "$B!N(B" "$B!@(B" "$B!O(B" "$B!0(B" "$B!2(B" "$B!F(B" "$B#a(B" "$B#b(B" "$B#c(B" "$B#d(B" "$B#e(B" "$B#f(B" "$B#g(B" "$B#h(B" "$B#i(B" "$B#j(B" "$B#k(B" "$B#l(B" "$B#m(B" "$B#n(B" "$B#o(B" "$B#p(B" "$B#q(B" "$B#r(B" "$B#s(B" "$B#t(B" "$B#u(B" "$B#v(B" "$B#w(B" "$B#x(B" "$B#y(B" "$B#z(B" "$B!P(B" "$B!C(B" "$B!Q(B" "$B!A(B" nil] @end group @end lisp $BA^F~$5$l$kJ8;z$NJQ99J}K!$rCN$j$?$$>l9g$O!"(B@w{@ref{$B?t;z$d5-9fJ8;z$NF~NO(B}} $B$r;2>H$7$F$/$@$5$$!#(B @code{skk-jisx0208-latin-insert} $B$b(B Emacs $B%*%j%8%J%k$N4X?t(B @code{self-insert-command} $B$r%(%_%e%l!<%H$7$F$$$^$9!#$D$^$j!"0z?t$rEO$9(B $B$3$H$K$h$jF1$8J8;z$rJ#?t!"0lEY$KA^F~$9$k$3$H$,$G$-$^$9!#(B @code{skk-insert} $B$K$*$1$kF0:n$HF1$8$G$9$+$i!"(B @w{@ref{$B?t;z$d5-9fJ8;z$NF~NO(B}} $B$K$*$1$kNc$r;29M$K$7$F$/$@$5$$!#(B @node $BJD$83g8L$N<+F0F~NO(B @subsection $BJD$83g8L$N<+F0F~NO(B @c $Beo!"(B`$B!V(B' $B$rF~NO$7$?$i!"(B`$B!W(B' $B$r8e$GF~NO$9$kI,MW$,$"$j$^$9!#(B`$B!V(B' $B$NF~(B $BNO;~E@$G!"BP$K$J$kJ8;z$r<+F0A^F~$7$F$/$l$k$HBG80?t$r8:$i$9$3$H$,$G$-$^$9(B $B$7!"F1;~$KF~NOK:$l$NKI;_$K$b$J$k$G$7$g$&!#(B @vindex skk-auto-insert-paren $B$=$N$?$a$KJQ?t(B @code{skk-auto-insert-paren} $B$,MQ0U$5$l$F$$$^$9!#$3$NCM$r(B @code{non-nil} $B$K$9$k$H!">e5-$N<+F0A^F~$r9T$$$^$9!#(B @example @group ------ Buffer: foo ------ $BH`$O$3$&8@$C$?(B@point{} ------ Buffer: foo ------ @kbd{[} ------ Buffer: foo ------ $BH`$O$3$&8@$C$?!V(B@point{}$B!W(B ------ Buffer: foo ------ @end group @end example @noindent @c @samp{$B!V(B}$B$d(B@samp{$B!W(B}$B$,>ee5-$N$h$&$K(B `$B!V(B' $B$NF~NO;~E@$GBP$H$J$k(B`$B!W(B'$B$r<+F0A^F~$7!"(B`$B!V(B'$B$H(B`$B!W(B'$B$N4V$K(B $B%]%$%s%H$r:FG[CV$9$k$N$G!"$=$N0LCV$+$i$+$.$+$C$3$K0O$^$l$?J8;zNs$rB(;O$a(B $B$k$3$H$,$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-auto-paren-string-alist $B<+F0A^F~$9$Y$-%Z%"$NJ8;zNs$r;XDj$7$^$9!#%G%U%)%k%H$O2<5-$N$H$*$j!#(B @lisp @group (("$B!V(B" . "$B!W(B") ("$B!X(B" . "$B!Y(B") ("(" . ")") ("$B!J(B" . "$B!K(B") ("@{" . "@}") ("$B!P(B" . "$B!Q(B") ("$B!R(B" . "$B!S(B") ("$B!T(B" . "$B!U(B") ("[" . "]") ("$B!N(B" . "$B!O(B") ("$B!L(B" . "$B!M(B") ("$B!Z(B" . "$B![(B") ("\"" . "\"") ("$B!H(B" . "$B!I(B") ("`" . "'")) @end group @end lisp $B$3$l$O!"$R$H8@$G$^$H$a$k$H!"!V3+$-3g8L$HJD$83g8L$H$N%3%s%9%;%k$r=8$a$?%j(B $B%9%H!W$G$9!#3F%3%s%9%;%k$N(B @code{car} $B$K$"$kJ8;zNs$rA^F~$7$?$H$-$K!"(B @code{cdr} $B$K$"$kJ8;zNs$,<+F0A^F~$5$l$^$9!#(B @vindex skk-rom-kana-rule-list @footnote{$B$3$N%j%9%H$N3FMWAG$N(B @code{car} $B$NJ8;zNs$O!"I,$:JQ?t(B @code{skk-rom-kana-rule-list} $B$N5,B'$K$h$C$FF~NO$5$l$J$1$l$P$J$j$^$;$s!#(B $BNc$($P!"(B@samp{(} $B$KBP$9$k(B @samp{)} $B$r<+F0A^F~$9$k$K$O(B @lisp @group (setq skk-rom-kana-rule-list (append skk-rom-kana-rule-list '(("(" nil "(")))) @end group @end lisp @noindent $B$N$h$&$K@_Dj$9$kI,MW$,$"$j$^$9!#(B} @footnote{$B4{$K(B SKK $B%b!<%I$K$J$C$F$$$k%P%C%U%!$GJQ?t(B @code{skk-auto-paren-string-alist} $B$rJQ99$7$?>l9g$O!"(B@kbd{C-x C-j} $B$b$7(B $B$/$O(B @kbd{C-x j} $B$r(B 2 $BEY%?%$%W$7$F(B @code{skk-mode} $B$b$7$/$O(B @code{skk-auto-fill-mode} $B$r5/F0$7D>$9I,MW$,$"$j$^$9!#(B} @end defvr $B%-!<$H$J$kJ8;z$,A^F~$5$l$F$b!"$=$NA^F~8e$N%]%$%s%H$K<+F0A^F~$9$Y$-J8;z$,(B $B4{$KB8:_$7$F$$$k>l9g$K$O!"<+F0A^F~$5$l$J$$$h$&$K@_7W$5$l$F$$$^$9!#(B @example @group ------ Buffer: foo ------ @point{}$B!W(B ------ Buffer: foo ------ @kbd{[} ------ Buffer: foo ------ $B!V(B@point{}$B!W(B ------ Buffer: foo ------ @end group @end example $BBP$K$J$kJ8;z$rJ#?tA^F~$7$?$$>l9g$O!"0z?t$rEO$7$FJ8;z$r;XDj$7$^$9!#(B @example @group @kbd{C-u 2 [} ------ Buffer: foo ------ $B!V!V(B@point{}$B!W!W(B ------ Buffer: foo ------ @end group @end example @vindex yatex-mode @code{yatex-mode} $B$J$I!"4{$KF1MM$N5!G=$,IU$$$F$$$k%b!<%I$,$"$j$^$9!#$=$N(B $B$h$&$J%b!<%I$K$*$$$F$b$3$N<+F0A^F~$N5!G=$,l9g$O!"Ev3:%b!<%I$KF~$C$?(B $B$H$-$K%3!<%k$5$l$k%U%C%/JQ?t$rMxMQ$7$F@_Dj$9$k$3$H$,$G$-$^$9!#(B @lisp @group (add-hook 'yatex-mode-hook (lambda () (when skk-auto-insert-paren (make-local-variable 'skk-auto-insert-paren) (setq skk-auto-insert-paren nil)))) @end group @end lisp $BFCDj$N%b!<%I$K$*$$$F!"<+F0A^F~$9$Y$-J8;z$rJQ99$7$?$$>l9g$K$bF1MM$K%U%C%/(B $BJQ?t$rMQ$$$FA`:n$G$-$^$9!#(B @vindex tex-mode-hook @lisp @group (add-hook 'tex-mode-hook (lambda () (when skk-auto-insert-paren (make-local-variable 'skk-auto-paren-string-alist) (setq skk-auto-paren-string-alist (cons '("$" . "$") skk-auto-paren-string-alist))))) @end group @end lisp @noindent $BF1MM$K!"FCDj$N%Z%"$r:o=|$7$?$$>l9g$O!"Nc$($P2<5-$N$h$&$K@_Dj$7$^$9!#(B @c @footnote{$B2?8N4X?t(B @code{copy-sequence} $B$r;HMQ$9$k$N$+$K$D$$$F$O!"(B @c @w{@ref{$B?t;z$d5-9fJ8;z$NF~NO(B}} $B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B @lisp @group (add-hook 'tex-mode-hook (lambda () (when skk-auto-insert-paren (make-local-variable 'skk-auto-paren-string-alist) (setq skk-auto-paren-string-alist (delete '("$" . "$") (copy-sequence skk-auto-paren-string-alist)))))) @end group @end lisp @node $B3NDj$9$k%-!<(B @subsection $B3NDj$9$k%-!<(B @kindex C-j @defvr {$B%f!<%6JQ?t(B} skk-kakutei-key $B$3$NJQ?t$NCM$O!"L@<(E*$J3NDjF0:n$r9T$&%-!<$r;XDj$7$^$9!#(B $BI8=`@_Dj$G$O(B @kbd{C-j} $B$H$J$C$F$$$^$9!#(B @end defvr $B4XO";v9`(B: @w{@ref{$B0EL[$N3NDj$N%?%$%_%s%0(B}} @node $B8uJd$NA*Br$KMQ$$$k%-!<(B @subsection $B8uJd$NA*Br$KMQ$$$k%-!<(B $BJQ49$K$*$$$F!"8uJd$,#5$D0J>e$"$k$H$-$O!"#5HVL\0J9_$N8uJd$O#7$D$:$D(B $B$^$H$a$F%(%3!<%(%j%"$K2<5-$N$h$&$KI=<($5$l$^$9(B @footnote{@ref{$B"'%b!<%I(B}.}$B!#(B @example @group -------------------- Echo Area -------------------- A:$B13(B S:$B5q(B D:$B5r(B F:$B5u(B J:$B5s(B K:$B5v(B L:$B5t(B [$B;D$j(B 2] -------------------- Echo Area -------------------- @end group @end example $B$3$N:]!"8uJd$NA*Br$KMQ$$$k%-!<$O!".J8;z$H$9$k(B @footnote{@kbd{x}, @key{SPC} $B5Z$S(B @kbd{C-g} $B$O!"$=$l$>$l8uJdA*BrCf$K(B $B$*$1$kA08uJd72$NI=<(!"e5-$N#2$D$NJQ?t$NMWAG$O(B@b{$BA4$F>.J8;z$G;XDj$9$k$3$H(B}$B$r6/$/$*4+$a$7$^$9(B @c @footnote{$B>.J8;z$,;XDj$5$l$?>l9g$O!"8uJd$NA*Br$N:]$KBP1~$9$kBgJ8;z%-!<$,(B @c $BF~NO$5$l$F$b8uJd$NA*Br$,2DG=$H$J$k$h$&$K@_7W$5$l$F$$$^$9!#$=$N0lJ}$G!"Bg(B @c $BJ8;z$,;XDj$5$l$?>l9g!"8uJd$NA*Br$N:]$KBP1~$9$k>.J8;z%-!<$,F~NO$5$l$F$b8u(B @c $BJd$NA*Br$,$G$-$^$;$s!#$3$l$O8=:_$N;EMM$G$9!#(B}$B!#(B @c @defvr {$B%f!<%6JQ?t(B} skk-henkan-show-candidates-keys-face $BA*Br%-!<$rI=<($9$k:]$N%U%'%$%9$r;XDj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-henkan-rest-indicator $B%G%U%)%k%H$O(B @code{nil}$B!#(B@code{Non-nil} $B$G$"$l$P(B @samp{[$B;D$j(B 99++]} $B$NI=<($r1&4s$;G[CV$9$k!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-henkan-rest-indicator-face @samp{[$B;D$j(B 99++]} $B$N(B face $BB0@-!#%G%U%)%k%H$O(B @code{default}$B!#(B @end defvr @node $B"'%b!<%I$G$N(BRET @subsection $B"'%b!<%I$G$N(BRET $BI8=`@_Dj$G$O!"(B @example @kbd{K a k u t e i @key{SPC}} @group ------ Buffer: foo ------ $B"'3NDj(B@point{} ------ Buffer: foo ------ @end group @key{RET} @group ------ Buffer: foo ------ $B3NDj(B @point{} ------ Buffer: foo ------ @end group @end example @noindent $B$N$h$&$K!""'%b!<%I$G(B @key{RET} $B$rF~NO$9$k$H!"3NDj$7!"$+$D2~9T$r9T$$$^$9!#(B $B$3$N5sF0$rJQ$($k$?$a$N%f!<%6%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-egg-like-newline $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K$9$k$H!""'%b!<%I$G(B @key{RET} $B$rF~NO$7$?(B $B$H$-$K3NDj$N$_9T$$!"2~9T$O$7$^$;$s(B@footnote{$B=>$C$F!"<-=qEPO?%b!<%I$K$*$$$F"'%b!<%I$G$"$k$H$-$N(B @key{RET} $BF~NO;~$N5sF0$bJQ2=$7$^$9!#I8=`$N3NDj!"EPO?$NF0:n$K$D$$$F$O!"(B @w{@ref{$B<-=qEPO?%b!<%I(B}} $B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B @end defvr @example @kbd{K a k u t e i @key{SPC}} @group ------ Buffer: foo ------ $B"'3NDj(B@point{} ------ Buffer: foo ------ @end group @key{RET} @group ------ Buffer: foo ------ $B3NDj(B@point{} ------ Buffer: foo ------ @end group @end example @node $B"'%b!<%I$G$N(BBS @subsection $B"'%b!<%I$G$N(BBS @kindex @key{BS} $BI8=`@_Dj$G$O!""'%b!<%I$G(B @key{BS} $B$r2!$9$H!"A0$N0lJ8;z$r:o=|$7$?>e$G3NDj(B $B$7$^$9!#(B @example @kbd{D e n k i y a @key{SPC}} @group ------ Buffer: foo ------ $B"'EE5$20(B@point{} ------ Buffer: foo ------ @end group @key{BS} @group ------ Buffer: foo ------ $BEE5$(B@point{} ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-delete-implies-kakutei $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!""'%b!<%I$G(B @key{BS} $B$r2!$7$?;~(B $B$K0l$DA0$N8uJd$rI=<($7$^$9!#Nc$($P!"(B @example $B$G$s$-(B /$BEE5$(B/$BEA5-(B/ @end example @noindent $B$H$$$&<-=q%(%s%H%j$,$"$k$H$-!"0J2<$N$h$&$K$J$j$^$9!#(B @example @kbd{D e n k i} @group ------ Buffer: foo ------ $B"&$G$s$-(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'EE5$(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'EA5-(B@point{} ------ Buffer: foo ------ @end group @key{BS} @group ------ Buffer: foo ------ $B"'EE5$(B@point{} ------ Buffer: foo ------ @end group @key{BS} @group ------ Buffer: foo ------ $B"&$G$s$-(B@point{} ------ Buffer: foo ------ @end group @end example @end defvr $BJQ?t(B @code{skk-delete-implies-kakutei} $B$,%7%s%\%k(B @code{dont-update} $B$G(B $B$"$l$P!"(B@code{non-nil} $B;~$HF1$8F0:n$N$&$($G8D?M<-=q$r99?7$7$^$;$s!#(B $B$J$*!"JQ?t(B @code{skk-delete-implies-kakutei} $B$NCM$K$+$+$o$i$:!"(B*$B8uJd(B*$B%P%C%U%!(B $B$rI=<($7$F$$$k>l9g$O0l$DA0$N8uJdI=<($KLa$kF0:n$H$J$j$^$9!#(B @node $BAw$j$"$jJQ49Cf$N(BC-g @subsection $BAw$j$"$jJQ49Cf$N(BC-g @kindex C-g $BAw$j$"$j$NJQ49Cf$K(B @kbd{C-g} $B$rF~NO$9$k$H!""'%b!<%I$rH4$1!"$=$N8+=P$78l(B $B$HAw$j2>L>$r8=:_$N%P%C%U%!$KA^F~$7!""&%b!<%I$KF~$j$^$9!#(B @example @kbd{N a K u} @group ------ Buffer: foo ------ $B"'5c$/(B@point{} ------ Buffer: foo ------ @end group @kbd{C-g} @group ------ Buffer: foo ------ $B"&$J$/(B@point{} ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-delete-okuri-when-quit $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"Aw$j$"$j$NJQ49Cf$K(B @kbd{C-g} $B$r(B $BF~NO$7$?$H$-$N5sF0$,JQ2=$7$^$9!#"&%b!<%I$KF~$k$N$OF1$8$G$9$,!"F1;~$K(B $BAw$j2>L>$r>C$7$^$9!#Aw$j2>L>$NF~NO4V0c$$$r=$@5$9$k$N$K$OJXMx$G$9!#(B $BNc$($P!"0J2<$N$h$&$K$J$j$^$9!#(B @end defvr @example @kbd{N a K u} @group ------ Buffer: foo ------ $B"'5c$/(B@point{} ------ Buffer: foo ------ @end group @kbd{C-g} @group ------ Buffer: foo ------ $B"&$J(B@point{} ------ Buffer: foo ------ @end group @end example @node $BJQ490LCV$N;XDjJ}K!(B @subsection $BJQ490LCV$N;XDjJ}K!(B @cindex @file{skk-sticky.el} @kindex ; SKK $B$G$ODL>o!"!V4A;zJQ49$N3+;O0LCV!W$H!VAw$j2>L>$N3+;O0LCV!W$rBgJ8;z$G;XDj$7$^$9(B $B$,!"$3$l$i$rG$0U$N%-!<$G;XDj$9$k$3$H$G(B sticky-shift $B%i%$%/$JA`:n(B @footnote{$B$"$/$^$G$b!VG$0U$N%-!<$GJQ493+;O0LCV$r;XDj$9$k!W$b$N$G$"$j!"(B sticky-shift $B$=$N$b$N$G$O$"$j$^$;$s!#$7$?$,$C$F!"%"%9%-!<%b!<%I$d(B abbrev $B%b!<%I!"$^$?(B SKK $B0J30$G$b(B sticky-shift $B$r;H$$$?$$>l9g$OA0=R$N$h$&$J(B $B@_Dj$rJ;MQ$9$kI,MW$,$"$j$^$9!#(B}$B$b2DG=$G$9!#(B @lisp (setq skk-sticky-key ";") @end lisp @noindent $B$H@_Dj$9$k$H(B @kbd{;} $B%-!<$G(B @footnote{@file{skk-hint.el} $B$rJ;MQ$9$k>l9g$O(B @code{skk-hint-start-char} $B$N%G%U%)%k%H$b(B @kbd{;} $B$G$"$k$?$a!"$I$A$i$+$rJL$N%-!<$K3d$jEv$F$kI,MW$,(B $B$"$j$^$9!#(B@w{@pxref{$B8uJd$N9J$j9~$_(B}}} $B4A;zJQ490LCV$,;XDj$G$-$k$h$&$K$J$j(B $B$^$9!#(B $BNc$($P(B @samp{$BM-$k(B} $B$H$$$&C18l$rF~NO$9$k$K$O(B @example @kbd{; a ; r u} @end example $B$H$$$&%-!e$O(B @w{@pxref{Q3-4 $B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B}} $B$J$I$K$"$kDL(B $B>o$N(B sticky-shift $B$HJQ$o$j$^$;$s$,!"2hLLI=<($O(B @display @group @multitable {$BBG80(B } {$BDL>o$N(B@tie{}sticky} {skk-sticky} @item $BBG80(B @tab $BDL>o$N(B@tie{}sticky @tab skk-sticky @item @kbd{;} @tab $BJQ2=$J$7(B @tab $B"&(B @item @kbd{a} @tab $B"&$"(B @tab $B"&$"(B @item @kbd{;} @tab $B"&$"(B @tab $B"&$"(B* @item @kbd{r} @tab $B"&$"(B*r @tab $B"&$"(B*r @end multitable @end group @end display @noindent $B$HA+0\$7$^$9!#DL>o$N(B sticky $B$HHf$Y$F(B skk-sticky $B$O(B @kbd{;} $B$r2!$7$?;~E@$G(B $B2hLLI=<($,JQ2=$9$k$N$Gl9g$O(B @lisp (setq skk-sticky-key ";") @end lisp $B$N$h$&$K(B @code{string} $B$r@_Dj$7$F2<$5$$!#(B@code{skk-sticky-key} $B$K@_Dj$7$?(B $BJ8;z$=$N$b$N$rF~NO$7$?$$>l9g$O(B2$B2sB3$1$FBG$D$HF~NO$G$-$^$9!#(B @item $BI=<($rH<$o$J$$%-!<(B $B!Z(B@key{$BL5JQ49(B}$B![$N$h$&$JI=<($rH<$o$J$$%-!<$N>l9g$O(B @lisp (setq skk-sticky-key [muhenkan]) ;Microsoft Windows $B$G$O(B [noconvert] @end lisp $B$N$h$&$K$=$N%-!<$rI=$o$9(B @code{vector} $B$r@_Dj$7$F2<$5$$!#(B @item $BF1;~BG80(B $B#2$D$N%-!<$rF1;~$KBG80$9$k$3$H$G$b4A;zJQ490LCV$r;XDj$G$-$^$9!#Nc$($P(B @kbd{f} $B$H(B @kbd{j} $B$NF1;~BG80$G;XDj$9$k>l9g$O(B @lisp (setq skk-sticky-key '(?f ?j)) @end lisp $B$N$h$&$K(B @code{character} $B$N%j%9%H$r@_Dj$7$F2<$5$$!#(B Dvorak $BG[Ns$N$h$&$J!"2!$7$d$9$$>l=j$KE,Ev$J%-!<$,$J$$4D6-$G$b$3$N5!G=$r;H(B $B$$$?$$>l9g$KJXMx$+$b$7$l$^$;$s!#(B @end enumerate @defvr {$B%f!<%6JQ?t(B} skk-sticky-double-interval $B$3$NJQ?t$,;XDj$9$kIC?t0JFb$KBG80$5$l$?$b$N$rF1;~BG80$HH=Dj$9$k!#(B $B%G%U%)%k%H$O(B 0.1 $BIC!#(B @end defvr @node 1$B2s$NC$7A`:n(B(undo)$B$NBP>](B @subsection 1$B2s$NC$7A`:n(B(undo)$B$NBP>](B @cindex @file{keyboard.c} @findex self-insert-command @findex skk-abbrev-comma @findex skk-abbrev-period @findex skk-kana-input @findex skk-insert @findex skk-set-henkan-point @findex skk-jisx0208-latin-insert @vindex skk-self-insert-non-undo-count Emacs $B$G$OK\Mh!"O"B3$9$k(B 20 $BJ8;z$NA^F~$,0l2s$NC$7A`:n(B ($B%"%s%I%%(B) $B$N(B $BBP>]$H$J$C$F$$$^$9!#$=$3$G(B DDSKK $B$N$+$J!&%+%J!&A41Q%b!<%I$K$*$1$kF~NO$b!"(B $B$3$l$HF1MM$NF0:n$r$9$k$h$&$K@_7W$5$l$F$$$^$9(B @footnote{@code{buffer-undo-list} $B$K(B Emacs $B$,A^F~$7$?%"%s%I%%$N6-L\$NL\0u$r(B $BJN,7A(B $B$H$7$F$N8+=P$78l$rA^F~$9$k$?$a$N%b!<%I$G$9$+$i!"D9$$8+=P$78l$rA^F~$9$k$3(B $B$H$O$"$^$j$J$$$H9M$($i$l$^$9!#(B}$B$N3F4X?t$K%P%$%s%I$5$l$?%-!]$H$7$F$$$^$9(B @footnote{`20' $B$O(B Emacs $B$N%=!<%9%U%!%$%k$N0lIt$G$"$k(B @file{keyboard.c} $B$KDj$a$i$l$?%^%8%C%/%J%s%P!<$H0lCW$7$^$9!#(B}$B!#(B $B$?$@$7!"$3$l$i$N(B DDSKK $B$N%3%^%s%I$H(B Emacs $BK\Mh$N(B @code{self-insert-command} $B$r?%$j:.$<$F%-!l9g(B @footnote{$B$+$J%b!<%I$G$NF~NOCf!"%"%9%-!<%b!<%I$K0\9T$7$FF~NO$7$?>l9g$J$I(B $B$,$3$l$K$"$?$j$^$9!#(B}$B$O!"$3$N%(%_%e%l!<%7%g%s$O@5>o$KF0:n$7$^$;$s$,!"$3(B $B$l$O8=:_$N;EMM$G$9!#(B @example @group @kbd{a i u e o k a k i k u k e k o s a s i s u s e s o t a t i t u t e t o} ------------------------- Buffer: foo ------------------------- $B$"$$$&$($*$+$-$/$1$3$5$7$9$;$=$?$A$D$F$H(B@point{} ;@r{$BO"B3$9$k(B20$BJ8;z!#(B} ------------------------- Buffer: foo ------------------------- @end group @group @kbd{C-_} ------------------------- Buffer: foo ------------------------- @point{} ;@r{20$BJ8;zA4$F$,%"%s%I%%$NBP>]$H$J$k!#(B} ------------------------- Buffer: foo ------------------------- @end group @group @kbd{a i u e o k a k i k u k e k o s a s i s u s e s o t a t i t u t e t o n a} -------------------------- Buffer: foo -------------------------- $B$"$$$&$($*$+$-$/$1$3$5$7$9$;$=$?$A$D$F$H$J(B@point{} ;@r{$BO"B3$9$k(B21$BJ8;z!#(B} -------------------------- Buffer: foo -------------------------- @end group @group @kbd{C-_} -------------------------- Buffer: foo -------------------------- $B$"$$$&$($*$+$-$/$1$3$5$7$9$;$=$?$A$D$F$H(B@point{} ;@r{$B:G8e$N(B1$BJ8;z$N$_$,%"%s%I%%$NBP>]$H$J$k!#(B} -------------------------- Buffer: foo -------------------------- @end group @end example @node $BJQ49!"3NDj$NA08e(B @section $BJQ49!"3NDj$NA08e(B @menu * $B%]%$%s%H$rLa$7$F"&%b!<%I$X(B:: $B"&%b!<%I$KF~$jK:$l$?(B! * $BD>A0$N3NDj$r:FJQ49(B:: $B4V0c$C$F3NDj$7$?$i!":FJQ49(B * $B<+F0JQ493+;O(B:: @key{SPC} $B$r2!$5$J$/$F$b!V$r!W!V!#!W$GJQ493+;O!#(B * $B0EL[$N3NDj$N%?%$%_%s%0(B:: $BJQ49$N8e!"$$$D3NDj$9$k$+!#(B * $B@Q6KE*$J3NDj(B:: $B8uJd$,0l$D(B? $B$8$c3NDj$G$7$g!#(B * $B3NDj<-=q(B:: $BFCDj$N8l$O0lH/3NDj(B @end menu $B4XO";v9`(B: @itemize @bullet @item @w{@ref{$BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B}} @item @w{@ref{$BJQ490LCV$N;XDjJ}K!(B}} ($BBgJ8;z0J30$GJQ490LCV$r;XDj$9$kJ}K!$r@bL@(B) @end itemize @node $B%]%$%s%H$rLa$7$F"&%b!<%I$X(B @subsection $B%]%$%s%H$rLa$7$F"&%b!<%I$X(B @cindex $B8e$+$i"&%b!<%I$KF~$kJ}K!(B @findex skk-backward-and-set-henkan-point @vindex skk-allow-spaces-newlines-and-tabs $B"&%b!<%I$KF~$jK:$l$?>l9g$K!"A0$NJ8;zNs$K$D$$$FAv::$7!"(B $BF1r7o$KL5;k$5$l$^$9!#$?$@$7!"$R$i$,$J$N>l9g$O(B @samp{$B$r(B} $B$,!"%+%?%+%J(B $B$N>l9g$O(B @samp{$B%r(B} $B$,8+$D$+$C$?;~E@$GJQ493+;O0LCV$NAv::$r;_$a!""&%b!<%I$K(B $BF~$j$^$9!#JQ493+;O%]%$%s%H$r(B @samp{$B$r(B}$B!"(B@samp{$B%r(B} $B$ND>A0$G;_$a$k$N$O!"$?$$(B $B$F$$$=$ND>8e$+$iC18l$,;O$^$k$+$i$G$9!#(B $B0J>e$O(B @kbd{M-Q} $B$r0z?t$rM?$($J$$$Gl9g$G$9!#0lJ}$G!"(B@kbd{C-u 5 M-Q} $B$N$h$&$K0z?t$rEO$7$Fl9g$OJ8;zr7o$K%]%$%s%H$rLa$7$^$9!#(B @vindex skk-allow-spaces-newlines-and-tabs $B8eJ}$K%]%$%s%H$rLa$9ESCf$G9TF,$KE~C#$7$?>l9g$O!"99$K>e$N9T$K$D$$$F!"9TKv(B $B$NJ8;zNs$+$iF1MM$NAv::$r9T$$!"I,MW$,$"$l$P99$K%]%$%s%H$rLa$7$^$9!#$3$&$7(B $B$?!V9T$rD6$($F$NAv::!W$r$d$a$k$?$a$K$O!"JQ?t(B @code{skk-allow-spaces-newlines-and-tabs} $B$NCM$r(B @code{nil} $B$K@_Dj$7$^$9!#(B @node $BD>A0$N3NDj$r:FJQ49(B @subsection $BD>A0$N3NDj$r:FJQ49(B @cindex $B3NDj%"%s%I%%(B @cindex $B:FJQ49(B @kindex M-x skk-undo-kakutei $B0lHV:G8e!JD>6a!K$N3NDj$rC$7$F!":FJQ49$9$k$3$H$,$G$-$^$9!#(B $B$3$l$r(B@b{$B!V3NDj%"%s%I%%!W(B}$B$H8F$S$^$9!#(B $BNc$($P!"<-=q%(%s%H%j$,(B @example $B$3$&$3$&(B /$B9b9;(B/$B9'9T(B/$B9R9T(B/ @end example @noindent $B$N$h$&$K$J$C$F$$$k$H$7$^$9!#(B @example @kbd{K o u k o u @key{SPC}} @group ------ Buffer: foo ------ $B"'9b9;(B@point{} ------ Buffer: foo ------ @end group @kbd{s u r u} @group ------ Buffer: foo ------ $B9b9;$9$k(B@point{} ------ Buffer: foo ------ @end group @kbd{M-x skk-undo-kakutei} @group ------ Buffer: foo ------ $B"'9'9T(B@point{}$B$9$k(B ------ Buffer: foo ------ @end group @end example @noindent $B$3$NNc$G$O!"(B@samp{$B9b9;(B} $B$N3NDj$rC$7$F$$$^$9!#$9$k$H!"<-=q$NBh(B $B0l8uJd$G$"$k(B @samp{$B9b9;(B} $B$r$H$P$7$F!"8e$G$J$/$H$bM-8z$G$9!#(B $B$h$j@53N$K$O!"l9g$OL^O@!"!V0EL[$N3NDj(B $B!W$r9T$C$?>l9g$bF1MM$G$9!#(B}$B$r9T$&$^$G$O3NDj$K4X$9$k>pJs$,J];}$5$l$F$$$k(B $B$N$G!"3NDj%"%s%I%%$9$k$3$H$,$G$-$^$9!#(B $B$^$?!"JQ49!"3NDj$K4XO"$7$J$$J8;zNs$O!"3NDj%"%s%I%%$r9T$C$F$b:o=|$5$l$J(B $B$$$h$&$K@_7W$5$l$F$$$^$9!#>e5-$NNc$G$O!"(B@samp{$B$9$k(B} $B$,$=$N$^$^%+%l%s%H%P(B $B%C%U%!$K;D$C$F$$$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-undo-kakutei-return-previous-point $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"3NDj%"%s%I%%=hM}$,40N;$7$?8e$K!"(B $B3NDj%"%s%I%%=hM}$ND>A0$N0LCV$K%+!<%=%k$,La$j$^$9!#(B $B>e$NNc$N>l9g!"3NDj%"%s%I%%=hM}$,40N;$7$?8e$N%+!<%=%k0LCV$O!"%G%U%)%k(B $B%H(B @code{nil} $B$G$O(B @samp{$B9'9T(B} $B$ND>8e$N$^$^$G$9$,!"(B@code{non-nil} $B$G$"$l(B $B$P(B @samp{$B$9$k(B} $B$ND>8e$KI|5"$7$^$9!#(B @end defvr @node $B<+F0JQ493+;O(B @subsection $B<+F0JQ493+;O(B $B"&%b!<%I$G8+=P$78l$rF~NO$7$F$$$k$H$-$K!V$r!W$d!V!#!W$J$I$NJ8;z$rBG80$9$k(B $B$H!"(B@key{SPC} $B$r2!$7$?$+$N$h$&$KJQ49$r3+;O(B@footnote{$B"&%^!<%/$+$i%]%$%s%H(B $B$ND>A0$NJ8;z$^$G$r8+=P$78l$H$7$^$9!#:G8e$KF~NO$5$l$?J8;z!J!V$r!W$d!V!#!W(B $B!K$O8+=P$78l$K$O4^$^$l$^$;$s!#(B}$B$7!""'%b!<%I$KF~$k$h$&$K$J$C$F$$$^$9!#(B @example @kbd{K a n j i} @group ------ Buffer: foo ------ $B"&$+$s$8(B@point{} ------ Buffer: foo ------ @end group @group @kbd{w o} ------ Buffer: foo ------ $B"'4A;z$r(B@point{} ------ Buffer: foo ------ @end group @end example @vindex skk-auto-okuri-process $BJQ?t(B @code{skk-auto-okuri-process} $B$NCM$r(B @code{non-nil} $B$K@_Dj$7$F(B $BAw$j(B $B2>L>$N<+F0=hM}(B @w{(@pxref{$BAw$j2>L>$N<+F0=hM}(B})} $B$r9T$C$F$$$k>l9g$O!"0J2<(B $B$N$h$&$JJQ49$b2DG=$G$9!#$?$@$7!"8D?M<-=q$K(B @samp{$B$G$-(Br /$B=PMh(B/[$B$k(B/$B=PMh(B/]/} $B$H$$$&$h$&$J%(%s%H%j$,$"$k$H2>Dj$7$^$9!#(B @example @kbd{D e k i r u n n d e s u} @group ------ Buffer: foo ------ $B"&$G$-$k$s$G$9(B ------ Buffer: foo ------ @end group @group @kbd{.} ------ Buffer: foo ------ $B"'=PMh$k$s$G$9!#(B ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-auto-start-henkan-keyword-list $B$3$NJQ?t$NCM$O!"C18l$dJ8@a$N6h@Z$j$H$J$k$h$&$JJ8;zNs$N%j%9%H$G$9!#(B $B%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9!#(B @end defvr @lisp @group ("$B$r(B" "$B!"(B" "$B!#(B" "$B!%(B" "$B!$(B" "$B!)(B" "$B!W(B" "$B!*(B" "$B!((B" "$B!'(B" ")" ";" ":" "$B!K(B" "$B!I(B" "$B![(B" "$B!Y(B" "$B!U(B" "$B!S(B" "$B!Q(B" "$B!O(B" "$B!M(B" "@}" "]" "?" "." "," "!" ) @end group @end lisp @defvr {$B%f!<%6JQ?t(B} skk-auto-start-henkan $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!"K\@a$G@bL@$7$?<+F0JQ493+;O5!G=(B $B$rL58z$K$7$^$9!#%G%U%)%k%H$O(B @code{t} $B$G$9!#(B @end defvr @node $B0EL[$N3NDj$N%?%$%_%s%0(B @subsection $B0EL[$N3NDj$N%?%$%_%s%0(B @cindex $B0EL[$N3NDj(B @vindex skk-process-okuri-early $BI8=`$N@_Dj$G$O!"3NDj$,:Q$`A0$K$A$K3NDj$5$l$^$9(B @footnote{$B@53N$K$O!"0u;z2DG=$JJ8;z$^$?$O(B @key{RET} $B$,F~NO$5$l$?$H$-$G$9!#(B}$B!#(B $B$3$l$r!V0EL[$N3NDj!W$H8F$s$G$$$^$9!#6qBNE*$K$O0J2<$N$h$&$K$J$j$^$9!#(B @example @kbd{K a k u t e i} @group ------ Buffer: foo ------ $B"&$+$/$F$$(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'3NDj(B@point{} ------ Buffer: foo ------ @end group @kbd{s} @group ------ Buffer: foo ------ $B3NDj(Bs@point{} ; $B0EL[$N3NDj(B ------ Buffer: foo ------ @end group @kbd{u} @group ------ Buffer: foo ------ $B3NDj$9(B@point{} ------ Buffer: foo ------ @end group @end example @defvr {$B%f!<%6JQ?t(B} skk-kakutei-early $B$3$NJQ?t$NCM$r(B @code{nil} $B$K$9$k$H!"!V0EL[$N3NDj!W$rCY$i$;$^$9!#(B $B6qBNE*$K$O!"(B @itemize @bullet @item $B3g8L(B @kbd{(} @kbd{)} @kbd{[} @kbd{]} $B$NF~NO;~(B @item $B6gFIE@(B @kbd{,} @kbd{.} $B$NF~NO;~(B @item $Bl9g$O(B @code{skk-process-okuri-early} $B$NCM$r(B @code{nil} $B$K$9$kI,MW$,$"$j$^(B $B$9!#(B}$B!#(B @end defvr @example @kbd{K a k u t e i} @group ------ Buffer: foo ------ $B"&$+$/$F$$(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B"'3NDj(B@point{} ------ Buffer: foo ------ @end group @kbd{s} @group ------ Buffer: foo ------ $B"'3NDj(Bs@point{} ------ Buffer: foo ------ @end group @kbd{u r u} @group ------ Buffer: foo ------ $B"'3NDj$9$k(B@point{} ------ Buffer: foo ------ @end group @kbd{.} @group ------ Buffer: foo ------ $B3NDj$9$k!#(B@point{} ; $B0EL[$N3NDj(B ------ Buffer: foo ------ @end group @end example @node $B@Q6KE*$J3NDj(B @subsection $B@Q6KE*$J3NDj(B $BJQ498uJd$,0l$D$7$+8+$D$+$i$J$$>l9g$O<+F0E*$K3NDj$9$k!"$H$$$&@_Dj$,$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-kakutei-when-unique-candidate $B$3$NCM$,(B @code{non-nil} $B$N>l9g!"$3$N5!G=$,M-8z$K$J$j$^$9!#(B @code{t} $B$G$"$l$PAw$j$"$jJQ49!"Aw$j$J$7JQ49!"(Babbrev $B%b!<%I$G$NJQ49!"A4$F(B $B$G$3$N5!G=$,M-8z$K$J$j$^$9!#(B $B$^$?!"(B@samp{okuri-ari}, @samp{okuri-nasi}, @samp{abbrev} $B$rMWAG$H$9$k%j%9(B $B%H$G$"$k$3$H$b$G$-$^$9!#$=$N>l9g$OJQ49BP>]$,$=$N>r7o$K9gCW$7$?>l9g$N$_3N(B $BDjJQ49$,5!G=$7$^$9!#(B $BNc(B: @samp{'(okuri-nasi abbrev)} $B$3$N5!G=$O!"A4$F$N<-=q$r8!:w$7$?>e$GJQ498uJd$,M#0l$+H]$+$rD4$Y$^$9!#$=$N(B $B$?$a!"(B@code{skk-search-prog-list} $B$NFbMF$K$h$C$F$O%l%9%]%s%9$,0-$/$J$k2D(B $BG=@-$,$"$j$^$9!#(B(@w{@pxref{$B<-=q$N8!:wJ}K!$N@_Dj(B}} @end defvr @defvr {$B%f!<%6JQ?t(B} skk-kakutei-search-prog-limit $B$3$NCM$,?tCM$G$"$C$?>l9g!"@Q6KE*$J3NDj(B(@code{skk-kakutei-when-unique-candidate}) $B$K(B $B$*$1$k!VJQ498uJd$,M#0l$+H]$+!W$NH=Dj$r(B @code{skk-search-prog-list} $B$N@hF,$+(B $B$i?t$($F$3$N8D?t$^$G$N<-=q$K@)8B$7$^$9!#(B $B?tCM0J30$G$"$l$P!"L5@)8B$KA4$F$N<-=q$r8!:wBP>]$H$7$^$9!#(B @end defvr @node $B3NDj<-=q(B @subsection $B3NDj<-=q(B @cindex $B3NDjJQ49(B @cindex $B3NDj<-=q(B @findex skk-search-kakutei-jisyo-file @vindex skk-kakutei-jisyo $BFCDj$N8l$O!"JQ49$7$?$iB(:B$K3NDj$5$;$k;v$,$G$-$^$9!#$3$l$r(B@b{$B3NDjJQ49(B}$B$H(B $B8F$S!"MxMQ$9$k$K$O!V3NDj<-=q!W$rMQ0U$7$^$9!#Nc$($P!"(B @example $B$8$7$g(B /$B<-=q(B/ @end example @noindent $B$H$$$&%(%s%H%j$,3NDj<-=q$K$"$C$?$H$7$^$9!#$3$N$H$-!"(B @example @group @kbd{Z i s h o} @group ------ Buffer: foo ------ $B"&$8$7$g(B@point{} ------ Buffer: foo ------ @end group @key{SPC} @group ------ Buffer: foo ------ $B<-=q(B@point{} ------ Buffer: foo ------ @end group @end group @end example @cindex $B0EL[$N3NDj(B @noindent $B$N$h$&$K!"(B@key{SPC} $B$r2!$7$?$@$1$G$$$-$J$j3NDj$7$^$9!#%(%s%H%j$N8uJd$,$R(B $B$H$D$@$1$@$+$i$G$9!#(B $B3NDj<-=q0J30$N<-=q$KEPO?$5$l$F$$$k$G$"$m$&F12;0[5A8l$rF@$k$K$O!"3NDjJQ49(B $B$ND>8e$K(B @kbd{x} $B$r%?%$%W$7$^$9!#$9$k$H!""'%b!<%I$KLa$C$Fl9g$O(B $B!"6&M-<-=q$HF1MM!"%=!<%H$7$FFsJ,8!:w$r9T$$!"%5%$%:$,>.$5$1$l$PE,Ev$JG[CV(B $B$GD>@~E*8!:w$r9T$&$3$H$r$*4+$a$7$^$9!#H$7$F$/$@$5$$!#(B@* @w{@ref{$B<-=q8!:w$N$?$a$N4X?t(B}}@* @w{@ref{$B%(%s%H%j$NG[Ns(B}} }$B!#(B $B$3$N<-=q$O!"I8=`$NG[I[%Q%C%1!<%8$K$O4^$^$l$F$$$J$$$N$G!";HMQ$9$k$N$G$"$l(B $B$P%f!<%6B&$GMQ0U$9$kI,MW$,$"$j$^$9!#(B@* (@w{@pxref{$B<-=q$N=q<0(B}}) @code{nil} $B$G$"$l$P!"3NDjJQ49$O9T$o$l$^$;$s!#(B @end defvr @node $BAw$j2>L>4XO"(B @section $BAw$j2>L>4XO"(B SKK $B$NAw$j2>L>$N=hM}$O!"9%$_$,J,$+$l$k$H$3$m$G$9!#?'!9$J(B $BBP:v$,MQ0U$5$l$F$$$^$9$N$G!";n$7$F$_$F2<$5$$!#(B @menu * $BAw$j2>L>$N87L)$J%^%C%A(B:: $B!VB?$-$$!WBP:v!"$=$N(B 1 * $BAw$j2>L>$NM%@hE*$J%^%C%A(B:: $B!VB?$-$$!WBP:v!"$=$N(B 2 * $BAw$j2>L>$N<+F0=hM}(B:: $BAw$j2>L>$,$"$C$F$b!"8e$+$i(B SPC * $BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B:: @end menu @node $BAw$j2>L>$N87L)$J%^%C%A(B @subsection $BAw$j2>L>$N87L)$J%^%C%A(B @vindex minibuffer-exit-hook @vindex minibuffer-setup-hook $B:#!"8D?M<-=q$K(B @example $B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/ @end example @noindent $B$H$$$&Aw$j$"$j%(%s%H%j$,$"$k$H2>Dj$7$^$9!#(B $B$3$3$G(B @kbd{O o K i i @key{SPC}} $B$HF~NO$7$?>l9g!"IaDL$O(B @samp{$BBg$-$$(B} $B$H(B @samp{$BB?$-$$(B} $B$H$$$&(B 2 $BDL$j$N8uJd$,=PNO$5$l$^$9$,!"$3$N$&$A(B @samp{$BB?$-$$(B} $B$O8=Be$NF|K\8l$H$7$F@5$7$/$"$j$^$;$s!#$3$N$h$&$J>l9g$K!"=PNO$5$l$k8uJd$r(B $B@5$7$$I=8=$N$_$K9J$j$3$`J}K!$K$D$$$F!"@bL@$7$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-henkan-okuri-strictly @vindex skk-process-okuri-early $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"8+=P$78l$,%^%C%A$9$k$+$I$&(B $B$+$N%A%'%C%/$N>e$K!"Aw$j2>L>$,%^%C%A$9$k$+$I$&$+$N%A%'%C%/$,9T$o$l$^(B $B$9!#7k2L$H$7$FAw$j2>L>$,%^%C%A$7$J$$8uJd$O=PNO$5$l$^$;$s!#>e5-$NNc$G$O!"(B $BAw$j2>L>(B @samp{$B$-(B} $B$,%^%C%A$9$k(B @samp{$BBg$-$$(B} $B$O=PNO$5$l$^$9$,!"(B @samp{$BB?$-$$(B} $B$O=PNO$5$l$^$;$s(B @footnote{$B$3$N5!G=$O!"JQ?t(B @code{skk-process-okuri-early} $B$NCM$r(B @code{non-nil} $B$K@_Dj$7$?>uBV$H6&B8$G$-$^$;$s!#$3$NM}M3$rCN$j$?$$>l9g$O(B @ref{$BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B}$B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B $B8D?M<-=q$NAw$j$"$j%(%s%H%j$,=<L>$N%^%C%A$,87L)$K9T$o$l$^$9!#$3$l$O<-(B $B=qEPO?$N:]4uK>$9$k8uJd$rF@$k$?$a$K$O>c32$H$J$j$^$9!#$=$N$h$&$J>c32$rHr(B $B$1$k$?$a$K$O!"2<5-$N$h$&$K%U%C%/JQ?t$r@_Dj$7$^$9!#$3$l$K$h$j!"<-=qEPO?(B $B;~$@$1$O!"0l;~E*$KAw$j2>L>$N87L)$J%^%C%A$r$7$J$$$h$&$K$J$j$^$9(B @footnote{$BH$5$l$k$N$G!"%_%K%P%C%U%!$N%P%C%U%!%m!<%+%kCM$rJQ99$7$F$b$&$^$/$$$-$^(B $B$;$s!#>-Mh$N%P!<%8%g%s$G$O!"$3$l$r2~NI$7!"<-=q%P%C%U%!$G$NF0:n$K1F6A$9$k(B $B%f!<%6JQ?t$r%P%C%U%!%m!<%+%k2=$G$-$k$h$&$K$9$kM=Dj$G$9!#(B @w{@xref{$B:G?7>pJs(B}.}}$B!#(B @lisp @group (add-hook 'minibuffer-setup-hook (lambda () (when (and (boundp 'skk-henkan-okuri-strictly) skk-henkan-okuri-strictly (not (eq last-command 'skk-purge-jisyo))) (setq skk-henkan-okuri-strictly nil) (put 'skk-henkan-okuri-strictly 'temporary-nil t)))) @end group @group (add-hook 'minibuffer-exit-hook (lambda () (when (and (get 'skk-henkan-okuri-strictly 'temporary-nil) (<= (minibuffer-depth) 1)) (put 'skk-henkan-okuri-strictly 'temporary-nil nil) (setq skk-henkan-okuri-strictly t)))) @end group @end lisp @node $BAw$j2>L>$NM%@hE*$J%^%C%A(B @subsection $BAw$j2>L>$NM%@hE*$J%^%C%A(B @ref{$BAw$j2>L>$N87L)$J%^%C%A(B} $B$G$O!"8+=P$78l$HAw$j2>L>$,0lCW$7$?>l9g$N$_(B $B8uJd$rI=<($7$^$9!#$3$3$G$O!"$=$N>r7o$r4K$a$FM%@hE*$KI=<($9$kJ}K!$r>R2p$7(B $B$^$9(B@footnote{@samp{$BBg$/(B}$B$J$I$N8uJd$O]5F+$7$$$,!"$9$0$KC18lEPO?$KF~$C$F(B $B$7$^$&$N$b7y$J?M$K$*$9$9$a$G$9!#(B}$B!#(B $B:#!"8D?M<-=q$K(B @example $B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/ @end example @noindent $B$H$$$&Aw$j$"$j%(%s%H%j$,$"$k$H2>Dj$7$^$9!#(B $B$3$3$G(B @kbd{O o K i i @key{SPC}} $B$HF~NO$7$?>l9g!"IaDL$O(B @samp{$BBg$-$$(B} $B$H(B @samp{$BB?$-$$(B} $B$H$$$&(B 2 $BDL$j$N8uJd$,=PNO$5$l$^$9$,!"$3$N$&$A(B @samp{$BB?$-$$(B} $B$O8=Be$NF|K\8l$H$7$F@5$7$/$"$j$^$;$s!#$3$N$h$&$J>l9g$K!"=PNO$5$l$k8uJd$r(B $B@5$7$$I=8=$,M%@hE*$K$9$k@_Dj$r>R2p$7$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-henkan-strict-okuri-precedence @vindex skk-henkan-okuri-strictly @vindex skk-process-okuri-early $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"8+=P$78l$HAw$j2>L>$,%^%C%A(B $B$7$?8uJd$rM%@h$7$FI=<($7$^$9!#(B $B>e5-$NNc$G$O(B @samp{$B"&$*$*(B*$B$/(B} $B$rJQ49$7$?$H$-!"$^$:(B @samp{$BB?$/(B} $B$r=PNO$7!"(B $Bl9g$O!"(B@ref{$BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B} $B$r;2>H$7$F$/$@$5$$!#(B}$B!#$^$?JQ?t(B @code{skk-henkan-okuri-strictly} $B$,(B @code{non-nil} $B$N$H$-$O!"$3$NJQ?t$OL5;k$5$l$^$9!#(B @end defvr @node $BAw$j2>L>$N<+F0=hM}(B @subsection $BAw$j2>L>$N<+F0=hM}(B $B$3$N@a$G$O!"!V$"$2$k!W$HF~NO$7$F$+$i(B @key{SPC} $B$r2!$7$F$b!V>e$2$k!W$HJQ49(B $B$9$k5!G=$r>R2p$7$^$9!#(B @menu * $B$I$N$h$&$KJQ49$5$l$k$+(B:: * $B<-=qEPO?$N:]$KCm0U$9$Y$-$3$H(B:: @end menu @node $B$I$N$h$&$KJQ49$5$l$k$+(B @subsubsection $B$I$N$h$&$KJQ49$5$l$k$+(B @defvr {$B%f!<%6JQ?t(B} skk-auto-okuri-process $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"Aw$j2>L>$N<+F0=hM}$,9T$o(B $B$l$^$9!#(B @end defvr $BNc$($P!"(B@kbd{T a t i a g e r u @key{SPC}} $B$HF~NO$7$?>l9g$r9M$($^$9!#(B $B$3$N$H$-!"8!:w$5$l$k8+=P$78l$NJQ2=$rDI$&$H!"(B @example @samp{$B$?$A$"$2$k(B} @result{} @samp{$B$?$A$"$2(Br} @result{} @samp{$B$?$A$"(Bg} @result{} @samp{$B$?$A(Ba} @result{} @samp{$B$?(Bt} @end example @noindent $B$N$h$&$K$J$j$^$9!#2>$K8D?M<-=q%(%s%H%j$,!"(B @example @group $B$?$A$"(Bg /$BN)$A>e(B/[$B$2(B/$BN)$A>e(B/]/[$B$,(B/$BN)$A>e(B/]/ $B$?(Bt /$B7z(B/$BCG(B/$B7P(B/$BN)(B/[$B$D(B/$B7z(B/$BCG(B/$B7P(B/$BN)(B/]/[$B$A(B/$B7z(B/$BCG(B/$B7P(B/$BN)(B/]/[$B$F(B/$B7P(B/$BN)(B/$B7z(B/]/ @end group @end example @noindent $B$N(B 2 $B$D$N%(%s%H%j$r4^$`$H$9$k$H!"8+=P$78l$r8eJ}$+$i=g$K@Z$j5M$a$k2aDx$G(B @samp{$B$?$A$"(Bg} $B$H(B @samp{$B$?(Bt} $B$N(B 2 $B$D$N8+=P$78l$N8!:w;~$K$3$l$i$N<-=q%(%s(B $B%H%j$,%^%C%A$7$^$9!#(B @noindent $B$D$^$j!"(B@samp{$B$?$A$"$2$k(B} $B$H$$$&8+=P$78l$KBP$7!"8+=P$78l$r:G8eHx$+$i(B1$BJ8(B $B;z$:$D@Z$j5M$a!"!V@Z$j5M$a$N7k2L;D$C$?J8;zNs!W$H!"!V@Z$jL>$N<+F0=hM}$N8!:w$K(B $B0\$j$^$9!#(B} @noindent $B(B $BL>$H$7$FL>%V%m%C(B $B%/ItJ,(B @footnote{@ref{$BAw$j$"$j%(%s%H%j$N%V%m%C%/7A<0(B}.}$B$rMxMQ$7$^$9!#(B @samp{$B$?$A$"(Bg} $B$N>l9g$NAw$j2>L>%A%'%C%/$NBP>]$O!"@Z$je(B/] @end example @noindent $B$NItJ,$,$"$k$3$H$+$i!"Aw$j2>L>$H$7$Fl9g$NAw$j2>L>%A%'%C%/$NBP>]$O!"(B@samp{$B$A(B} $B$G$9!#8D?M<-=q$K(B @example [$B$A(B/$B7z(B/$BCG(B/$B7P(B/$BN)(B/] @end example @noindent $B$NItJ,$,$"$k$3$H$+$i!"Aw$j2>L>$H$7$FL>$,%^%C%A$9$k8uJd$,(B @samp{$BN)$A>e(B}$B!"(B@samp{$B7z(B}$B!"(B@samp{$BCG(B}$B!"(B @samp{$B7P(B}$B!"(B@samp{$BN)(B} $B$N(B 5 $B$D$K9J$i$l$^$9!#$3$l$i$OJ8;zNs$ND9$5=g$K>:=g$K(B $B%=!<%H$5$l(B @footnote{$BD9$5=g$K%=!<%H$9$k$N$O!"JQ49$5$l$?ItJ,$,$h$jD9$$8uJd$r@h=g0L(B $B$H$7$F=PNO$9$k$?$a$G$9!#(B}$B!"$=$l$>$l$N8uJd$H3:Ev$N8+=P$78l$+$i@Z$jL>$H$_$J(B $B$7$F=hM}$7$F$$$^$9!#(B}$B$r!"Aw$j2>L>$N<+F0=hM}$N:G=*8uJd$H$7$FJV$7$^$9!#>e(B $B5-$NNc$O!"(B@samp{$BN)$A>e$2$k(B}$B!"(B@samp{$B7z$A$"$2$k(B}$B!"(B@samp{$BCG$A$"$2$k(B}$B!"(B @samp{$B7P$A$"$2$k(B}$B!"(B@samp{$BN)$A$"$2$k(B} $B$N(B 5 $B$D$,:G=*8uJd$K$J$j$^$9!#(B $B<+F0Aw$j5!G=$O!"8D?M<-=q$N$_$r8!:w$7$^$9!#(B $B$3$3$G!"<+F0Aw$j5!G=$ND9=j$r9M$($F$_$k$H!"(B @itemize @bullet @item $BAw$j2>L>$N:G=i$N%m!<%^;zI=8=$rBgJ8;z$G;O$a$kI,MW$,$J$$!#(B @item $BAw$j2>L>$r@53N$K;W$$=P$;$J$$>l9g$KAw$j2>L>$r;XDj$7$J$/$H$bJQ49$G$-(B $B$k!#(B @end itemize $B$J$I$,$"$j$^$9!#0lJ}C;=j$H$7$F$O!"(B @itemize @bullet @item $B0U?^$7$J$$JQ49$r$5$l$k3d9g$,A}$($k!#(B @item $B8D?M<-=q$NAw$j$"$j%(%s%H%j$,IOl9g$O!"<+F0=hM}$,$G$-$J$$2DG=@-(B $B$,9b$$!#(B @end itemize $B$J$I$,9M$($i$l$^$9!#JQ?t(B @code{skk-auto-okuri-process} $B$NCM$r(B @code{non-nil} $B$K@_Dj$7$F$b!"=>MhDL$j$NAw$j$"$jJQ49$bF1;~$K$G$-$^$9$+$i!"(B $B0lEY$3$N5!G=$r;n$7$F$_$k$3$H$r$*4+$a$7$^$9(B @footnote{$B@l$iJd40E*$K<+F0Aw$j=hM}$rMxMQ$9$k$N$G$"$l$P!"(B @code{(skk-okuri-search)} $B$r(B @code{skk-search-prog-list} $B$N:G8e$K$b$C$F$/(B $B$k$H$$$&L>$N<+F0=hM}$r9T$C$F$$$k>l9g(B@footnote{$BJQ?t(B @code{skk-auto-okuri-process} $B$NCM$r(B @code{non-nil} $B$K@_Dj$7$F$$$k!#(B}$B$K(B $B$O!"<-=qEPO?$N:]$KCm0U$9$Y$-$3$H$,$"$j$^$9!#(B $B8D?M<-=q$K8+=P$78l(B @samp{$B$o$?(Bs} $B$K$D$$$F$N%(%s%H%j$,A4$/$J$$>l9g!"$"$k$$(B $B$O8D?M<-=q$N%(%s%H%j$,(B @example $B$o$?(Bs /$BEO(B/[$B$7(B/$BEO(B/]/ @end example @noindent $B$N$h$&$JAw$j2>L>$N%V%m%C%/$r;}$?$J$$>l9g$r9M$($F$_$^$9!#$3$3$G!"(B@kbd{W a t a s i t a @key{SPC}}$B$HF~NO$9$k$H!"Aw$j2>L>$N<+F0=hM}$K$*$$$F$OAw$j2>L>(B $B$,%^%C%A$7$J$$$N$G!"8uJd$,8+$D$+$i$:$K<-=qEPO?%b!<%I$KF~$j$^$9!#(B @example @group @kbd{W a t a s i t a @key{SPC}} ------ Buffer: foo ------ $B"'$o$?$7$?(B ------ Buffer: foo ------ ------ Minibuffer ------- [$B<-=qEPO?(B] $B$o$?$7$?(B@point{} ------ Minibuffer ------- @end group @end example @noindent $B<-=qEPO?%b!<%I$G(B @kbd{W a t a S i t a @key{RET}} $B$HAw$j2>L>$rL@<(E*$KF~(B $BNO$7!"(B@samp{$BEO$7$?(B} $B$HJQ49$7$FEPO?$7$?$H$7$^$9!#$3$N>l9g!"EPO?$9$k8l$N:G(B $B8e$,J?2>L>$G=*$o$k$N$G!"$=$N:G8e$NJ?2>L>$NJ8;zNs(B ($B>e5-$NNc$G$O!"(B@samp{$B$7(B $B$?(B}) $B$,8+=P$78l$N:G8e$H0lCW$9$k$+$rD4$Y$^$9!#0lCW$9$k>l9g$K$O!"<-=q$NEP(B $BO?$rAw$j$"$j%(%s%H%j$H$7$F9T$&$N$+$I$&$+$N3NG'$r5a$a$^$9!#(B @example @group @kbd{W a t a S i t a} ------ Minibuffer ------- [$B<-=qEPO?(B] $B$o$?$7$?(B $BEO$7$?(B@point{} ------ Minibuffer ------- @end group @group @key{RET} -------------------------- Echo Area -------------------------- Shall I register this as okuri-ari word: $B$o$?(Bs /$BEO(B/ ? (y or n) -------------------------- Echo Area -------------------------- @end group @end example @noindent $B$3$N3NG'$KBP$7!"(B@samp{y} $B$H2sEz$7$?>l9g$O!"(B @example $B$o$?(Bs /$BEO(B/[$B$7(B/$BEO(B/]/ @end example @noindent $B$H$$$&<-=q%(%s%H%j$,8D?M<-=q$NAw$j$"$j%(%s%H%j$K=q$-9~$^$l$^$9!#0lJ}(B @samp{n} $B$H2sEz$7$?>l9g$O!"8D?M<-=q$NAw$j$J$7%(%s%H%j$K(B @example $B$o$?$7$?(B /$BEO$7$?(B/ @end example @noindent $B$H$$$&%(%s%H%j$,=q$-9~$^$l$^$9!#K\Nc$N>l9g$O!"(B@samp{y} $B$H2sEz$9$k$N$,@5(B $B2r$G$9!#(B @table @code @item skk-kana-rom-vector @vindex skk-kana-rom-vector @c XXX $B$3$NJQ?t$ODj?t$K$J$C$?!#(B $B$3$NJQ?t$O!"Aw$j2>L>ItJ,$r%m!<%^;z%W%l%U%#%C%/%9$KJ,2r$9$k:]$K!";2>H$5$l(B $B$^$9!#(B @end table $BJQ?t(B @code{skk-kana-rom-vector} $B$N%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9!#(B @example @group ["x" "a" "x" "i" "x" "u" "x" "e" "x" "o" "k" "g" "k" "g" "k" "g" "k" "g" "k" "g" "s" "z" "s" "j" "s" "z" "s" "z" "s" "z" "t" "d" "t" "d" "x" "t" "d" "t" "d" "t" "d" "n" "n" "n" "n" "n" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "m" "m" "m" "m" "m" "x" "y" "x" "y" "x" "y" "r" "r" "r" "r" "r" "x" "w" "x" "x" "w" "n"] @end group @end example $B$3$N%Y%/%H%k$O!"$=$l$>$l2<5-$N$+$JJ8;z$r$=$N%m!<%^;z%W%l%U%#%C%/%9$G8=$7(B $B$?$b$N$G$9!#(B @example @group $B$!(B $B$"(B $B$#(B $B$$(B $B$%(B $B$&(B $B$'(B $B$((B $B$)(B $B$*(B $B$+(B $B$,(B $B$-(B $B$.(B $B$/(B $B$0(B $B$1(B $B$2(B $B$3(B $B$4(B $B$5(B $B$6(B $B$7(B $B$8(B $B$9(B $B$:(B $B$;(B $B$<(B $B$=(B $B$>(B $B$?(B $B$@(B $B$A(B $B$B(B $B$C(B $B$D(B $B$E(B $B$F(B $B$G(B $B$H(B $B$I(B $B$J(B $B$K(B $B$L(B $B$M(B $B$N(B $B$O(B $B$P(B $B$Q(B $B$R(B $B$S(B $B$T(B $B$U(B $B$V(B $B$W(B $B$X(B $B$Y(B $B$Z(B $B$[(B $B$\(B $B$](B $B$^(B $B$_(B $B$`(B $B$a(B $B$b(B $B$c(B $B$d(B $B$e(B $B$f(B $B$g(B $B$h(B $B$i(B $B$j(B $B$k(B $B$l(B $B$m(B $B$n(B $B$o(B $B$p(B $B$q(B $B$r(B $B$s(B @end group @end example @noindent $B$3$l$K=>$&$H!"8+=P$78lCf$NAw$j2>L>$,%m!<%^;z%W%l%U%#%C%/%9$KJ,2r$5$l$k:]!"(B $BNc$($P(B @samp{$B$8(B} $B$O(B @samp{j} $B$K!"(B@samp{$B$A(B} $B$O(B @samp{t} $B$K!"(B@samp{$B$U(B} $B$O(B @samp{h} $B$K!"$=$l$>$lJ,2r$5$l$^$9!#$3$l$i$r$=$l$>$l(B @samp{z}$B!"(B@samp{c}$B!"(B @samp{f} $B$KJQ99$9$k$3$H$b$G$-$^$9!#$=$l$K$OJQ?t(B @code{skk-kana-rom-vector} $B$N3:EvItJ,$r(B "z"$B!"(B"c"$B!"(B"f" $B$KJQ99$7$^$9!#(B @lisp @group (setq skk-rom-kana-vector ["x" "a" "x" "i" "x" "u" "x" "e" "x" "o" "k" "g" "k" "g" "k" "g" "k" "g" "k" "g" "s" "z" "s" "z" "s" "z" "s" "z" "s" "z" "t" "d" "c" "d" "x" "t" "d" "t" "d" "t" "d" "n" "n" "n" "n" "n" "h" "b" "p" "h" "b" "p" "f" "b" "p" "h" "b" "p" "h" "b" "p" "m" "m" "m" "m" "m" "x" "y" "x" "y" "x" "y" "r" "r" "r" "r" "r" "x" "w" "x" "x" "w" "n"]) @end group @end lisp $Bl9g$O!">e5-$HF1MM$K<-=qEPO?$r$7!"(B @example @group Shall I register this as okuri-ari entry: $B$"$j$,(Bs /$BM-2l(B/ ? (y or n) @end group @end example @noindent $B$N3NG'$KBP$7(B @samp{n} $B$H2sEz$7$^$9!#$3$N7k2L!"8D?M<-=q$NAw$j$J$7%(%s%H%j(B $B$K$O!"(B @example $B$"$j$,$5$D$-(B /$BM-2l$5$D$-(B/ @end example @noindent $B$H$$$&%(%s%H%j$,=q$-9~$^$l$^$9!#(B @node $BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B @subsection $BAw$j$"$jJQ49$NJQ493+;O$N%?%$%_%s%0(B @kindex C-x C-j @kindex C-x j @defvr {$B%f!<%6JQ?t(B} skk-process-okuri-early @vindex skk-auto-okuri-process @vindex skk-henkan-okuri-strictly @vindex skk-kakutei-early $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"Aw$j$"$jJQ49$NJQ493+;O$N%?(B $B%$%_%s%0$,Aa$a$i$l$^$9!#$D$^$j!"Aw$j2>L>$N%m!<%^;z%W%l%U%#%C%/%9$NF~NO(B $B;~E@$GJQ49$r3+;O$7$^$9!#(B @example @group @kbd{U g o K} ------ Buffer: foo ------ $B"'F0(Bk ------ Buffer: foo ------ @end group @end example $BAw$j2>L>$,J,$+$i$J$$$^$^JQ49$7$F$$$k$?$a!"8D?M<-=q$,Aw$j2>L>$KBP1~$7$?7A$K(B $B@.D9$7$^$;$s!#$D$^$j(B @samp{$B$&$4(Bk /$BF0(B/} $B$N$h$&$J7ABV$N$^$^$H$J$j$^$9!#$?(B $B$@$7!"(B @example @group $B$&$4(Bk /$BF0(B/[$B$/(B/$BF0(B/]/[$B$+(B/$BF0(B/]/[$B$1(B/$BF0(B/]/[$B$-(B/$BF0(B/]/[$B$3(B/$BF0(B/]/ @end group @end example @noindent $B$N$h$&$J%(%s%H%j$,4{$K8D?M<-=q$K$"$k>l9g!"$=$l$rGK2u$9$k$3$H$O$"$j$^$;$s(B @footnote{@ref{$B<-=q$N=q<0(B}$B$r;2>H$7$F$/$@$5$$!#(B}$B!#(B $B$3$N%f!<%6%*%W%7%g%s$r(B @code{non-nil} $B$K@_Dj$7$F(B SKK $B%b!<%I$r5/F0$9$k(B $B$H!"N>N)$G$-$J$$%*%W%7%g%s$G$"$k2<5-%*%W%7%g%s$O<+F0E*$K(B @code{nil} $B$K(B $B@_Dj$5$l$^$9!#(B @itemize @bullet @item @code{skk-kakutei-early} @item @code{skk-auto-okuri-process} @item @code{skk-henkan-okuri-strictly} @end itemize $B4{$K(B SKK $B%b!<%I$KF~$C$?8e$G$3$NJQ?t$N@_Dj$rJQ99$7$?>l9g$O!"%+%l%s%H%P%C(B $B%U%!$G(B @kbd{C-x C-j} $B$b$7$/$O(B @kbd{C-x j} $B$r(B 2 $B2s%?%$%W$7$F(B SKK $B%b!<%I$r(B $B5/F0$7D>$9$3$H$G!"$3$l$i$NJQ?t4V$N>WFM$rD4@0$7$^$9!#(B @display @xref{$B0EL[$N3NDj$N%?%$%_%s%0(B, , skk-kakutei-early}. @xref{$BAw$j2>L>$N<+F0=hM}(B, , skk-auto-okuri-process}. @xref{$BAw$j2>L>$N87L)$J%^%C%A(B, , skk-henkan-okuri-strictly}. @end display @end defvr @node $B8uJd$N=g=x(B @section $B8uJd$N=g=x(B skk $B$N=i4|@_Dj$G$O!"JQ49$G3NDj$5$l$?C18l$O!"e0L$KI=<((B * $B8uJd$N=g=x$N8GDj(B:: $B$$$D$bF1$8=g=x$G8uJd$rI=<((B * $B%Y%$%:E}7W$rMQ$$$?3X=,(B:: @end menu $B$3$3$G2r@b$9$k$[$+!"3NDj<-=q(B (@w{@pxref{$B3NDj<-=q(B}}) $B$rMQ$$$?JQ49$b!"8uJd$N=g=x$K1F6A$rM?$($^$9!#(B @node $BJQ49$N3X=,(B @subsection $BJQ49$N3X=,(B @cindex @file{skk-study.el} @vindex skk-study-associates-number @vindex skk-study-search-times @file{skk-study.el} $B$O!"$"$k8l(B A $B$r3NDj$7$?>l9g$K!"(BA $B5Z$S$=$N8+=P$7(B $B8l(B A' $B$KBP$7$F!"D>A0$KJQ49$7$?8l(B B $B$H$=$N8+=P$78l(B B' $B$r4XO"8l$H$7$FEP(B $BO?$7$F$*$-!":FEY8+=P$78l(B A' $B$NJQ49$r9T$C$?$H$-$K!"(BB $B5Z$S(B B' $B$N%Z%"$,D>(B $BA0$N2?2s$+$K3NDj$7$?8l$NCf$K8+$D$+$l$P!"(BA $B$rM%@h$7$F=PNO$9$kC1=c$J3X=,(B $B8z2L$rDs6!$9$k%W%m%0%i%`$G$9!#(B @file{~/.skk} $B$K(B @code{(require 'skk-study)} $B$H=q$$$F(B DDSKK $B$r5/F0$7$F2<(B $B$5$$!#0J9_!"$+$J4A;zJQ49$N3X=,$r;O$a$^$9!#(B $BNc$($P!"(B@samp{$BG_1+$K$O1+$,9_$k(B} $B$HJQ49$7$?>l9g!"(B @itemize @bullet @item @samp{$B1+(B} (@samp{$B$"$a(B}) $B$N4XO"8l(B @expansion{} @samp{$BG_1+(B} (@samp{$B$D$f(B})$B!"(B @item @samp{$B9_$k(B} (@samp{$B$U(Br}) $B$N4XO"8l(B @expansion{} @samp{$B1+(B} (@samp{$B$"$a(B})$B!"(B @end itemize @noindent $B$H$$$&Iw$K!VD>A0$K3NDj$7$?8l!W$r4XO"8l$H$7$F!"8l$H8l$N4XO"@-$r3X=,$7$^$9!#(B $B$3$3$GB3$1$F!"(B@samp{$B;1$r?6$k(B} $B$HJQ49$9$k$H!"8D?M<-=q$,%"%C%W%G!<%H$5$l(B $B$F$7$^$$!"8+=P$78l(B @samp{$B$U(Br} $B$NBh0l8uJd$O(B @samp{$B?6$k(B} $B$K$J$C$F$7$^$$(B $B$^$9!#(B $B$7$+$7!"99$KB3$1$F(B @kbd{A m e @key{SPC} g a H u R u} $B$H(B type $B$9$k$H!"(B @kbd{H u R u} (@samp{$B$U(Br}) $B$KBP$7$F(B @samp{$B1+(B} (@samp{$B$"$a(B}) $B$,4X(B $BO"8l$K$J$C$F$$$k$?$a!"(B@samp{$B$U(Br} $B$HBP$G5-21$5$l$F$$$k(B @samp{$B9_$k(B} $B$KJQ(B $B49$5$l$k$H$$$&$o$1$G$9!#(B $B$G$O!"$^$?$3$3$G(B @samp{$B;1$r?6$k(B} $B$HJQ49$7!"8D?M<-=q$NBh0l8uJd$,(B @samp{$B?6$k(B} $B$K$J$C$?>uBV$G!"(B @display @kbd{A m e @key{SPC} g a T a i r y o u @key{SPC} n i H u R u} @end display @noindent $B$HJQ49$9$l$P(B @kbd{$B$U(Br} $B$O$I$&JQ49$5$l$k$G$7$g$&$+!)(B $B!!:#EY$O(B @samp{$B1+(B} @w{(@samp{$B$"$a(B})} $B$H(B @kbd{$B$U(Br} $B$N4V$K(B @samp{$BBgNL(B} @w{(@samp{$B$?$$$j$g$&(B})} $B$,F~$C$F$$$^$9(B@footnote{@samp{$B$U(Br} $B$KBP$7$F(B @samp{$BBgNL(B} @w{(@samp{$B$?$$$j$g$&(B})} $B$,(B $B4XO"8l$H$7$FJ]B8$5$l$^$9!#L^O@(B @w{(@samp{$B$U(Br})} $B$KBP$9$k(B @samp{$B1+(B} @w{(@samp{$B$"$a(B})} $B$N3X=,$b(B $B$^$@@8$-$F$$$^$9!#(B}$B!#(B $B$C$F!"$3$N>l9g$@$H!"(B2 $B$DA0$N3NDj>pJs$rC5$7$?:]$K(B @samp{$B1+(B} @w{(@samp{$B$"$a(B})} $B8+$D$1!"$3$l$r4XO"8l$H$7$F!"(B@w{@samp{$B$U(Br}} $B$NCM$r(B $B7h$a$h$&$H$9$k$N$G$9!#(B @file{skk-study.el} $B$K4X$9$k$=$NB>$N%*%W%7%g%s$r@bL@$7$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-study-max-distance $B$3$NJQ?t$K$O(B integer $B$r;XDj$7$^$9!#D>A0$K3NDj$7$?%]%$%s%H$H:#2s$NJQ49%](B $B%$%s%H$,$3$N5wN%0J>eN%$l$F$$$k$H3X=,%G!<%?$rC_@Q$7$J$$$h$&$K$7$^$9!#(B $B$3$NJQ?t$O!"I,$:$7$bJ8>O$,%P%C%U%!$N(B @code{point-min} $B$+(B $B$i(B @code{point-max} $B$XN.$l$k$h$&$K=q$+$l$k$b$N$G$O$J$/!"%]%$%s%H$rA0$KLa(B $B$7$?$j8e$X0\F0$7$?$j$7$F=q$+$l$k$3$H$rA[Dj$7$F$$$^$9!#(B $B$3$NJQ?t$K(B integer $B$r@_Dj$9$k$H!"D>A0$NJQ49$h$j$bA0$N%]%$%s%H$GJQ49$7$?(B $B>l9g$K3X=,%G!<%?$rC_@Q$7$J$$$h$&$K$7$^$9!#$3$NJQ?t$K(B @code{nil} $B$r;XDj$9(B $B$k$HD>A0$K3NDj$7$?%]%$%s%H$H$N5wN%$r9MN8$;$:$K3X=,$7$^$9!#$3$NJQ?t$N%G%U(B $B%)%k%HCM$O(B 30 $B$G$9!#(B $B$J$*!"$3$NJQ?t$NCM$K$+$+$o$i$:!"D>A0$NJQ49%P%C%U%!$H8=:_JQ49$r9T$C$F$$$k(B $B%P%C%U%!$,0[$J$k>l9g$O3X=,%G!<%?$rC_@Q$7$^$;$s!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-first-candidate $B$3$NJQ?t$,(B @code{non-nil} $B$G$"$l$P!"Bh0l8uJd(B $B$G3NDj$7$?:]$b3X=,$7$^$9!#(B@code{nil} $B$G$"$l$P!"Bh0l8uJd$G3NDj$7$?$H$-(B $B$N$_3X=,%G!<%?$rC_@Q$7$^$;$s!#3X=,%G!<%?$r$G$-$k$@$1>.$5$/$7$?$$>l9g!"(B $B$3$NJQ?t$r(B @code{nil} $B$K$9$k$H8z2L$,$"$k$+$b$7$l$^$;$s!#(B $B$3$NJQ?t$N%G%U%)%k%HCM$O(B @code{t} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-file $B3X=,7k2L$rJ]B8$9$k%U%!%$%kL>$G$9!#(B $B$3$NJQ?t$N%G%U%)%k%HCM$O(B @file{~/.skk-study} $B$G$9!#(B $BJQ?t(B @code{skk-user-directory} $B$+$i$b@_Dj$,$G$-$^$9!#(B (@w{@pxref{$B@_Dj%U%!%$%k(B}}) @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-backup-file @file{~/.skk-study} $B$N%P%C%/%"%C%W%U%!%$%k$G$9!#(B $B$3$NJQ?t$N%G%U%)%k%HCM$O(B @file{~/.skk-study.BAK} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-sort-saving $B3X=,%G!<%?$N%G!<%?9=B$$K4X$9$k$b$N$G$9!#$3$NJQ?t$NCM$,(B @code{non-nil} $B$G(B $B$"$l$P3X=,7k2L$r%=!<%H$7$F%;!<%V$7$^$9!#$3$NJQ?t$,1F6A$r5Z$\$9$N$O3X=,%G(B $B!<%?$NC1$J$k8+1G$($NLdBj$@$1$G$9!#(B $B$3$NJQ?t$N%G%U%)%k%HCM$O(B @code{nil} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-study-check-alist-format $B3X=,%G!<%?$N%G!<%?9=B$$K4X$9$k$b$N$G$9!#$3$NJQ?t$NCM$,(B @code{non-nil} $B$G(B $B$"$l$P!"3X=,7k2L$NFI$_9~$_;~$KO"A[%j%9%H$N%U%)!<%^%C%H$r%A%'%C%/$7$^$9!#(B $B$3$l$O$rF~NO$7(B $B$F$/$@$5$$!#Nc$($P!"2J3X$NOCBj$r=q$/%P%C%U%!$G$O(B science $B$H!"K!N'$NOCBj(B $B$r=q$/%P%C%U%!$G$O(B law $B$J$I$HF~NO$7$F$/$@$5$$!#(B @kindex M-x skk-study-remove-theme @item M-x skk-study-remove-theme $BITMW$J3X=,%F!<%^$r>C5n$7$^$9!#(B @kindex M-x skk-study-copy-theme @item M-x skk-study-copy-theme $B3X=,%F!<%^$rJ#@=$7$^$9!#(B @end table @node $B8uJd$N=g=x$N8GDj(B @subsection $B8uJd$N=g=x$N8GDj(B skk $B$N=i4|@_Dj$G$O!"JQ49!"A*Br$5$l$?8uJd$O!"@\JT=8$9$k$+!"(B $B%3%^%s%I(B @kbd{M-x skk-edit-private-jisyo} $B$rA0$KJQ49$7$?$P$+$j$NC18l$O!"8D?M<-=q$NAw$j$"$j!?$J$7%(%s%H%j$N0lHV>e$K(B $B$"$j$^$9$N$G!"$9$0$K8+$D$1$k$3$H$,$G$-$^$9!#(B @node $B%Y%$%:E}7W$rMQ$$$?3X=,(B @subsection $B%Y%$%:E}7W$rMQ$$$?3X=,(B @c $B5-:\FbMF$r=<<-=q$K$^$D$o$kF0:n$d@_Dj$r@bL@$7$^(B $B$9!#(B @menu $B<-=q$N@_Dj(B * $B<-=q$N]$H8!:w=g=x$N@_Dj!#(B * Emacs $BIUB0$N<-=q(B:: * $B%5!<%P4XO"(B:: * $B%5!<%P%3%s%W%j!<%8%g%s(B:: @noindent $B<-=q$N4IM}(B * $B<-=q$N=q<0(B:: * $B6/@)E*$K<-=qEPO?%b!<%I$XF~$k(B:: * $B8m$C$?EPO?$N:o=|(B:: $B:o=|$bEPO?$_$?$$$K$G$-$^$9!#(B * $B8D?M<-=q%U%!%$%k$NJT=8(B:: $B8D?M<-=q$rJT=8$9$k%3%^%s%I$,$"$j$^$9!#(B * $B8D?M<-=q$NJ]B8F0:n(B:: $B$$$D8D?M<-=q$,99?7!"J]B8$5$l$k$+!#(B * $BJQ495Z$S8D?M<-=q$K4X$9$kE}7W(B:: @noindent $BB>(B * $B<-=q%P%C%U%!(B:: * $B<-=q%P%C%U%!$NJ8;z%3!<%I$N@_Dj(B:: * $B<-=q%P%C%U%!$N(Bbuffer-file-name:: @end menu @node $B<-=q$No!"8D?M<-=q$h$j$b%5%$%:$,Bg$-$/!">J;q8;$NLL$+$i%f!<%64V$G6&M-$7$F(B $B;2>H$5$l$^$9!#(B $B%f!<%6$NJQ49A`:n$K$h$C$FFbMF$,=q$-BX$($i$l$k$3$H$O$"$j$^$;$s!#(B $B$3$l$i0J30$K$b!"6&M-<-=q$H$7$F;H$($k%U%!%$%k$,G[I[$5$l$F$$$^$9!#(B $B$=$l$>$l$N<-=q$N>\:Y$K$D$$$F$O(B @url{http://openlab.jp/skk/dic.html} $B$r(B $B$4;2>H2<$5$$!#(B @item $B8D?M<-=q(B @cindex $B8D?M<-=q(B @vindex skk-jisyo $BJQ?t(B @code{skk-jisyo} $B$G;XDj$5$l$k%U%!%$%k!#(BDDSKK $B$r0lHV:G=i$K;H$$;O$a$?(B $B$H$-$K%[!<%`%G%#%l%/%H%j$K<+F0E*$K:n$i$l$^$9!#$=$N8e$N;HMQ$K$h$jF|!99o!9(B $B$H%(%s%H%j$,DI2C$5$l!"99?7$5$l$F$$$-$^$9!#(B $B$J$*!":G=i$N8D?M<-=q$H$7$F(B S $B<-=q$r%j%M!<%`$7$F;HMQ$9$k$N$bNI$$$+$b$7$l(B $B$^$;$s!#(B @item @code{skk-initial-search-jisyo} @itemx @code{skk-kakutei-jisyo} @vindex skk-initial-search-jisyo @vindex skk-kakutei-jisyo $B$3$l$i$O6&M-<-=q!"8D?M<-=q$H$$$&6hJ,$N$$$:$l$K$bB0$7$^$;$s!#$3$l$i$O8D?M(B $BKh$K;}$D$b$N$r;HMQ$9$k$+!"%f!<%64V$G6&M-$7$F$$$k$b$N$r;HMQ$7$^$9!#$=$N@-(B $B3J$+$i!"<-=qFbMF$N99?7$O9T$o$l$:!";2>H$N$_9T$o$l$^$9!#$^$?;HMQL\E*$+$i!"(B $BDL>o$O>.$5$$<-=q$r;HMQ$7$^$9!#(B @end table $B8D?M<-=q!"(B@code{skk-initial-search-jisyo}, @code{skk-kakutei-jisyo} $B$O(B Emacs $B$N%P%C%U%!$KFI$_9~$s$G8!:w$r9T$$$^$9!#(B $B6&M-<-=q$O@_Dj$K$h$j(B Emacs $B$N%P%C%U%!$KFI$_9~$s$G;HMQ$9$k$+!"$^$?$O<-=q(B $B%5!<%P7PM3$G;HMQ$7$^$9!#(B @node $B<-=q%U%!%$%k$N;XDj(B @subsection $B<-=q%U%!%$%k$N;XDj(B $B$3$N@a$G$O!"<-=q%U%!%$%k$r;XDj$9$kJQ?t$r@bL@$7$^$9!#(B $B8D?M<-=q$H%P%C%/%"%C%W$N%G%#%l%/%H%j$O!"JQ?t(B @code{skk-user-directory} $B$G(B $B$bJQ99$G$-$^$9!#(B(@w{@pxref{$B@_Dj%U%!%$%k(B}}) @defvr {$B%f!<%6JQ?t(B} skk-kakutei-jisyo $B3NDjJQ49(B(@w{@pxref{$B3NDj<-=q(B}})$B$N$?$a$N<-=q$G$9!#0lHV:G=i$K;2>H$5$l$^$9!#(B $B3NDjJQ49$r$7$J$$;~$O!"=i4|@_Dj$N(B @code{nil} $B$N$^$^$GNI$$$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-initial-search-jisyo $B3NDj<-=q$N8e!"$+$D!"8D?M<-=q$NA0$K8!:w$r9T$&<-=q$G$9!#(B $B$3$N<-=q$rE,Ev$K;XDj$9$k$3$H$K$h$j!":G=i$K=P$F$/$k8uJd$rA`:n$9$k$3$H$,$G(B $B$-$^$9!#Nc$($P!"J#?t$N@lLgMQ8lKh$N<-=q$rMQ0U$7$F$*$$(B $B$F(B @code{skk-initial-search-jisyo} $B$NCM$r@Z$jBX$($k$3$H$K$h$j!"@lLgJ,Ln(B $BKh$N@lLgMQ8l$r@Z$jBX$($FF~NO$9$k$3$H$,$G$-$^$9!#(B $B$3$N<-=q$O!"I8=`$NG[I[%Q%C%1!<%8$K$O4^$^$l$F$$$J$$$N$G!";HMQ$9$k$N$G$"$l(B $B$P%f!<%6B&$GMQ0U$9$kI,MW$,$"$j$^$9!#(B $BITMW$J$i$P!"=i4|@_Dj$N(B @code{nil} $B$N$^$^$GNI$$$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-jisyo $B8D?M<-=q!#(BDDSKK $B$r0lHV:G=i$K5/F0$7$?$H$-!"JQ?t(B @code{skk-jisyo} $B$,;X$9%U(B $B%!%$%k$,B8:_$7$J$1$l$P<+F0E*$K:n$i$l$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-backup-jisyo $B8D?M<-=q$NM=Hw(B ($B%P%C%/%"%C%W(B) $B$G$9!#8!:w$NBP>]$G$O$J$/!"$"$/$^$G8D?M<-=q(B $B$N%P%C%/%"%C%W$H$7$F;XDj$7$F$/$@$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cdb-large-jisyo $B6&M-<-=q$N$&$A(B CDB $B7A<0$KJQ49$7$?<-=q$G$9!#;XDj$7$?>l9g$O(B @code{skk-large-jisyo} $B$h(B $B$j$b@h$K8!:w$5$l$^$9!#(BDDSKK 14.1 $B$+$i$O<-=q%5!<%P$r7PM3$;$:$H$b(B CDB $B7A<0(B $B<-=q%U%!%$%k$rD>@\8!:w$G$-$k$h$&$K$J$j$^$7$?!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-large-jisyo $B6&M-<-=q$N$R$H$D!#%P%C%U%!$KFI$_9~$s$G8!:w$r9T$$$^$9!#(B $BNc$($P(B @code{skk-large-jisyo} $B$K(B S $B<-=q$+(B M $B<-=q$r;XDj$7!"(B @code{skk-aux-large-jisyo} $B$K(B L $B<-=q$r;XDj$9$k!"$H$$$&A*Br;h$b$"$j$^$9!#(B $B$^$?!"<-=q%5!<%P7PM3$N%"%/%;%9$b7h$7$FCY$/$O$J$$$N$G!V6&M-<-=q$O%P%C%U%!$K$O(B $BFI$_9~$^$J$$!W$H$$$&@_Dj$b<+A3$G$"$j!"$3$l$K$O(B @code{skk-large-jisyo} $B$r(B @code{nil} $B$K@_Dj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-aux-large-jisyo $B6&M-<-=q$N$R$H$D!#<-=q%5!<%P$K@\B3$G$-$J$$;~$K%P%C%U%!$KFI$_9~$s$G8!:w$r9T$&(B $B<-=q$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-extra-jisyo-file-list SKK $B$G$O8D?M<-=q$NB>$K!"6&M-<-=q(B (@code{skk-large-jisyo}$B!"(B @code{skk-cdb-large-jisyo}) $B$^$?$O<-=q%5!<%P$r@_Dj$7$FMxMQ$9$k$N$,0lHLE*(B $B$G$9$,!"M9JXHV9f<-=q(B @file{SKK-JISYO.zipcode} $B$r$O$8$a$H$7$?B?:L$J<-=q$b(B $B%a%s%F%J%s%9$5$l$F$$$^$9!#(B $B$3$l$i$N<-=q$rMxMQ$9$k$?$a$KJQ?t(B @code{skk-search-prog-list} $B$r$N%j%9%H$r;XDj$7$^$9(B @footnote{@code{skk-search-prog-list} $B$KEPO?$5$l$F$$$k4X(B $B?t(B @code{skk-search-extra-jisyo-files} $B$,!"(B@code{skk-extra-jisyo-file-list} $B$N(B $B3FMWAG$rC`e5-$NNcCf$N(B @file{SKK-JISYO.JIS3_4} $B$N(B $B$h$&$K!V%U%!%$%kL>$HJ8;z%3!<%I$N%Z%"!W$r5-=R$7$^$9!#(B @end defvr $B$3$l$i$NJQ?t$N0UL#$9$k$H$3$m$O=i4|@_Dj$G$N$b$N$G$9$,!"(B @code{skk-search-prog-list} $B$N@_Dj$GJQ99$9$k$3$H$b$G$-$^$9!#(B (@w{@pxref{$B<-=q8!:w$N$?$a$N4X?t(B}}) @node $B<-=q$N8!:wJ}K!$N@_Dj(B @subsection $B<-=q$N8!:wJ}K!$N@_Dj(B $B<-=q$N8!:wJ}K!$N;XDj$O!"JQ?t(B @code{skk-search-prog-list} $B$G9T$o$l$^$9!#(B $BFC$KI,MW$,L5$1$l$P!"FI$_Ht$P$7$F2<$5$$!#(B @menu * $B<-=q8!:w$N@_Dj$N6qBNNc(B:: * $B<-=q8!:w$N$?$a$N4X?t(B:: @end menu @node $B<-=q8!:w$N@_Dj$N6qBNNc(B @subsubsection $B<-=q8!:w$N@_Dj$N6qBNNc(B @vindex skk-search-prog-list $B$3$N@a$G$O!"(B@code{skk-search-prog-list} $B$N=i4|@_Dj$r<($7!"BgBN(B $B$NN.$l$r@bL@$7$^$9!#(B DDSKK $B$G$O!"J#?t$N<-=q$r07$&$3$H$,2DG=$G$9!#J#?t$N<-=q$,F1;~$K(B $B8!:w$5$l$k$N$G$O$J$/!";XDj$7$?=gHV$K8!:w$7$^$9!#(B @code{skk-search-prog-list} $B$O%j%9%H$G$"$j!"Bg;(GD$K8@$($P!"(B $B3NDj$5$l$k$^$G!"@hF,$NMWAG$+$i=g$K(B lisp $B$H$7$FI>2A$5$l$^$9!#(B @lisp @group ((skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t) (skk-search-jisyo-file skk-initial-search-jisyo 10000 t) (skk-search-jisyo-file skk-jisyo 0 t) (skk-okuri-search) (skk-search-cdb-jisyo skk-cdb-large-jisyo) (skk-search-jisyo-file skk-large-jisyo 10000) (skk-search-server skk-aux-large-jisyo 10000) (skk-search-ja-dic-maybe) (skk-search-extra-jisyo-files) (skk-search-katakana-maybe) (skk-search-sagyo-henkaku-maybe))) @end group @end lisp $B$3$NNc$G$O!"(B @enumerate @item @code{skk-kakutei-jisyo} (@w{@pxref{$B3NDj<-=q(B}}), @code{skk-initial-search-jisyo}, @code{skk-jisyo} ($B8D?M<-=q(B) $B$N=g$K8!:w$r(B $B9T$$!"(B @item $BL>$N<+F0=hM}$r9T$$!"(B(@w{@pxref{$BAw$j2>L>$N<+F0=hM}(B}}) @item $B$=$N8e!"(B@code{skk-cdb-large-jisyo} $B$H(B @code{skk-large-jisyo} $B$N8!:w$r=g(B $B$K9T$$!"(B @item $B:G8e$K(B @code{skk-aux-large-jisyo} $B$K<-=q%5!<%P7PM3$G%"%/%;%9$7$F$$$^$9!#(B @end enumerate $B$3$l$i$N<-=q$N0UL#$K$D$$$F$O!"(B@w{@pxref{$B<-=q%U%!%$%k$N;XDj(B}} $B;2>H!#(B $B$b$73NDj<-=q$G8uJd$,8+$D$+$C$?$i$=$N$^$^<+F0E*$K3NDj$5$l$^$9!#(B1 $B2s(B @key{SPC} $B$r2!$9F0:n$KBP$7!"%W%m%0%i%`B&$G$O?7$?$J8uJd$r8+$D$1$k$^$G>e5-(B $B$NF0:n$r?J$a$^$9!#Nc$($P!"(B @enumerate @item $B3NDj<-=q$G$O8uJd$O8+$D$1$i$l$J$+$C$?$,(B @code{skk-initial-search-jisyo} $B$K8uJd$,$"$k>l9g!"$=$3$G$$$C$?$s;_$^$j%f!<%6$K$=$N8uJd$rI=<($7$^$9!#(B @item $B99$K(B @key{SPC} $B$,2!$5$l$k$H!"o$N8!:w$r9T$&%W%m%0%i%`!#JQ?t(B @code{skk-henkan-key} $B$r8+=P$78l!J8!:wJ8(B $B;zNs!K$H$7$F!"(B FILE $B$rHo8!:wBP>]$H$7$FJQ498!:w$rl9g$O$3$N4X?t$r;HMQ$7$^$9!#(B $BBh#10z?t(B @code{FILE} $B$O!"Ho8!:wBP>]$H$J$k<-=q%U%!%$%k$r;XDj$7$^$9!#(B @code{nil} $B$r;XDj$7$?$H$-$O!"8!:w$r9T$$$^$;$s!#(B @code{FILE} $B$G;XDj$7$?<-=q%U%!%$%k$O(B Emacs $B$N%P%C%U%!$KFI$_9~$^$l$^$9!#(B @cindex $BFsJ,8!:w(B @cindex $BD>@~E*8!:w(B $BBh#20z?t(B @code{LIMIT} $B$OFsJ,8!:w!J%P%$%J%j!&%5!<%A!K$,9T$J$o$l$kNN0h$NBg(B $B$-$5$r;XDj$7$^$9!#0l$D$N8+=P$78l$KBP$9$kJQ49F0:n$KBP$7!"8!:wBP>]$NNN0h$N(B $BBg$-$5(B@footnote{$B!V8!:wNN0h$N@hF,%]%$%s%H!W$H!VF1KvHx%]%$%s%H!W$N:9(B}$B$,Bh#2(B $B0z?t$K;XDj$5$l$??tCM$h$j>.$5$/$J$k$^$G$OFsJ,8!:w$,9T$o$l!":G8e$KD>@~E*8!(B $B:w!J%j%K%"!&%5!<%A(B, search-forward$B!K$,#12s9T$o$l$^$9!#(B $BBh#20z?t$K(B 0 $B$r;XDj$9$k$H!">o$KD>@~E*8!:w$N$_$,9T$o$l$^$9!#(B $B8D?M<-=q(B @code{skk-jisyo} $B$O%=!<%H$5$l$F$*$i$:FsJ,8!:w$,IT2DG=$G$"$k$?$a(B @code{LIMIT} $B$r(B 0 $B$K$7$F2<$5$$!#(B $BBh#30z?t(B @code{NOMSG} $B$,(B @code{nil} $B$J$i$P!"<-=q%U%!%$%k$r%P%C%U%!$K(B $BFI$_9~$`4X?t(B @code{skk-get-jisyo-buffer} $B$N%a%C%;!<%8$r%_%K%P%C%U%!$K=PNO$7(B $B$^$9!#(B@code{non-nil} $B$rM?$($k$H=PNO$7$^$;$s!#(B @end defun @defun skk-search-cdb-jisyo CDB-PATH not documented @end defun @defun skk-search-kakutei-jisyo-file FILE LIMIT &optional NOMSG @cindex $B3NDjJQ49(B @vindex skk-kakutei-henkan-flag @b{$B!V3NDjJQ49!W(B}$B$r9T$&8!:w%W%m%0%i%`!#8!:wBP>]$N<-=q%U%!%$%k$O(B Emacs $B$N(B $B%P%C%U%!$KFI$_9~$^$l$^$9!#8!:wBP>]$N%U%!%$%k$+$i8uJd$r8+$D$1$k$H!"FbIt(B $BJQ?t(B @code{skk-kakutei-henkan-flag} $B$rN)$F$F!"$$$-$J$j3NDj$7$^$9!#$3$N$?$a(B $B%f!<%6!<$,3NDjA`:n$r9T$&I,MW$O$"$j$^$;$s!#(B $B0z?t$N0UL#$O$$$:$l$b(B @code{skk-search-jisyo-file} $B$N>l9g$HF1MM$G$9!#(B @end defun @w{@xref{$B3NDj<-=q(B}.} @defun skk-okuri-search $B7A<0(B: (skk-okuri-search) $B<+F0Aw$j=hM}$r9T$&%W%m%0%i%`!#JQ?t(B @code{skk-auto-okuri-process} $B$NCM(B $B$,(B @code{non-nil} $B$N$H$-$@$15!G=$7$^$9!#(B $B8D?M<-=q$NAw$j$"$j%(%s%H%j$r8!:wBP>]$H$7$F$$$k$N$G!"8D?M<-=q$N%P%C%U%!$r(B $BN.MQ$7$^$9!#$=$N$?$a!"@lMQ$N<-=q%P%C%U%!$O:n$j$^$;$s!#(B @w{@xref{$BAw$j2>L>$N<+F0=hM}(B}.} @end defun @defun skk-search-server FILE LIMIT &optional NOMSG $B<-=q%5!<%P7PM3$G8!:w$9$k%W%m%0%i%`!#(B $B<-=q%5!<%P$,;HMQITG=$K$J$k$H<-=q%U%!%$%k$r(B Emacs $B$N%P%C%U%!$KFI$_9~$s$G(B $B8!:w$r9T$$$^$9!#0z?t$N0UL#$O$$$:$l$b(B @code{skk-search-jisyo-file} $B$H(B $BF1$8$G$9$,!"$3$l$i$O<-=q$r(B Emacs $B$N%P%C%U%!$KFI$_9~$s$@$H$-$N$_MxMQ$5$l$^$9!#(B $B<-=q%5!<%P$,;H$&<-=q%U%!%$%k$N@_Dj$K$D$$$F$O!"(B @itemize @bullet @item @w{@pxref{$B<-=q%5!<%P$r;H$$$?$$$H$-$N@_Dj(B}} @item @w{@pxref{$B%5!<%P4XO"(B}} @end itemize $B$r$4Mw2<$5$$!#(B @end defun @node Emacs $BIUB0$N<-=q(B @subsection Emacs $BIUB0$N<-=q(B GNU Emacs $B$K$O!"(B @file{SKK-JISYO.L} $B$r85$KJQ49$5$l$?(B @file{leim/ja-dic/ja-dic.el} $B$H$$(B $B$&<-=q$,IUB0$7$F$$$^$9!#(B DDSKK 14.2 $B$+$i$O!"$3$N(B @file{ja-dic.el} $B$rMxMQ$7$?$+$J4A;zJQ49(B ($BAw$j$"$j!"(B $BAw$j$J$7!"@\F,<-!"@\Hx<-(B) $B$,2DG=$H$J$j$^$7$?!#(B $B$D$^$j!"(B@file{SKK-JISYO.L} $B$J$I$N<-=q%U%!%$%k$rJLES=`Hw$7$J$/$F$b0l1~(B $B$O(B DDSKK $B$N;HMQ$,2DG=!"$H$$$&$3$H$G$9!#(B DDSKK 14.2 $B$+$iDI2C$5$l$?!V(Bja-dic.el $B8!:w5!G=!W(B(@code{skk-search-ja-dic}) $B$O!"(B @itemize @bullet @item @code{skk-large-jisyo} @item @code{skk-aux-large-jisyo} @item @code{skk-cdb-large-jisyo} @item @code{skk-server-host} @end itemize $B$NA4$F$,L58z$J>l9g$KM-8z$H$J$j$^$9!#(B $B$?$@$7!"(B@file{SKK-JISYO.L} $B$rMxMQ$9$k>l9g$HHf$Y$F1Q?tJQ49$d?tCMJQ49$J$I$,(B $B$G$-$^$;$s!#2DG=$J8B$j(B @file{SKK-JISYO.L} $B$J$I$N<-=q$rMxMQ$9$k$3$H$r?d>)(B $B$7$^$9!#(B $B4XO"9`L\(B: @w{@ref{$B<-=q$NF~lLL$G(B @code{skk-search-ja-dic} $B$rL58z$H$7$^$9!#(B @end defvr @defun skk-search-ja-dic GNU Emacs $B$KIUB0$9$k$+$J4A;zJQ49<-=q(B @file{ja-dic.el} $B$rMQ$$$F8!:w$9$k!#(B $B8=:_$N(B Emacs $B$K$O(B @file{SKK-JISYO.L} $B$r4p$KJQ49$5$l$?(B @file{ja-dic.el} $B$,IUB0$7$F$$$k!#(B $B$3$N<-=q%G!<%?$rMQ$$$FAw$j$"$j!"Aw$j$J$7!"@\F,<-!"@\Hx<-$NJQ49$r9T$&!#(B $B$?$@$7!"(B@file{SKK-JISYO.L} $B$N$h$&$J1Q?tJQ49!"?tCMJQ49$J$I$O$G$-$:!"$^$?!VBg>fIW!W(B $B$N$h$&$KJ#9g8l$H$_$J$7$&$k8lWC$,BgI}$K:o=|$5$l$F$$$k!#(B @end defun @node $B%5!<%P4XO"(B @subsection $B%5!<%P4XO"(B $B<-=q%5!<%P$N4pK\E*$J@_Dj$O!"(B@w{@pxref{$B<-=q%5!<%P$r;H$$$?$$$H$-$N@_Dj(B}} $B$r(B $B$4Mw2<$5$$!#(B @defvr {$B%f!<%6JQ?t(B} skk-servers-list $B$3$NJQ?t$r;H$&$H!"J#?t$N%[%9%H>e$N<-=q%5!<%P$r;H$$J,$1$k$3$H$,$G$-$^$9!#(B $B$3$NJQ?t$NCM$O!"<-=q%5!<%PKh$N>pJs%j%9%H$G$9!#3F%j%9%H$O(B @item $B<-=q%5!<%PL>(B ($B%U%k%Q%9(B) @item $B<-=q%5!<%P$,FI$_9~$`<-=q%U%!%$%kL>(B @item $B<-=q%5!<%P$,;HMQ$9$k%]!<%HHV9f(B @end itemize $B$?$@$7!"<-=q%U%!%$%kL>5Z$S%]!<%HHV9f$O!"<-=q%5!<%P<+?H$,7hDj$9$k$3$H$b$"$k$?$a!"$=$N$h$&$J>l9g$O(B @code{nil} $B$H$7$F9=$$$^$;$s!#(B $BNc$($P!"0J2<$N$h$&$K@_Dj$7$^$9!#(B @lisp @group (setq skk-servers-list '(("host1" "/your/path/to/skkserv" nil nil) ("host2" "/your/path/to/skkserv" nil nil))) @end group @end lisp $B>e5-$N@_Dj$N>l9g!"$^$:(B host1 $B>e$N<-=q%5!<%P$H@\B3$7$^$9!#@\B3$G$-$J$/$J$k$H!"(B $Be$N<-=q%5!<%P$H@\B3$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-server-report-response $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"JQ49;~$K!"<-=q%5!<%P$NAw=P$9$kJ8;z$r(B $Bl9g$K(B @code{call-process} $B$G<-=q%5!<%P%W%m%0%i%`$N5/F0(B $B$r;n$_$^$9!#(B inetd $B7PM3$G5/F0$9$kB?$/$N<-=q%5!<%P$O(B @code{call-process} $B$G5/F0$9$k$3(B $B$H$,$G$-$^$;$s$,!"(B@file{skkserv} $B$N$h$&$K(B @code{call-process} $B$G5/F0$9$k(B $B$3$H$,$G$-$k<-=q%5!<%P$rMxMQ$7$F$$$k>l9g$K$O!"$3$NJQ?t$r(B @code{nil} $B$K@_(B $BDj$9$k$N$,NI$$$+$b$7$l$^$;$s!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-server-remote-shell-program $B$3$NJQ?t$K$O!"%j%b!<%H%7%'%k$N%W%m%0%i%`L>$r;XDj$7$^$9!#%G%U%)%k%H$O!"%7%9%F(B $B%`0MB8@-$r9MN8$9$kI,MW$,$"$k$?$a!"0J2<$N(B Emacs Lisp $B%3!<%I$rI>2A$9$k$3$H(B $B$K$h$j7hDj$5$l$F$$$^$9!#(B @lisp @group (or (getenv "REMOTESHELL") (and (boundp 'remote-shell-program) remote-shell-program) (cond ((eq system-type 'berkeley-unix) (if (file-exists-p "/usr/ucb/rsh") "/usr/ucb/rsh" "/usr/bin/rsh")) ((eq system-type 'usg-unix-v) (if (file-exists-p "/usr/ucb/remsh") "/usr/ucb/remsh" "/bin/rsh")) ((eq system-type 'hpux) "/usr/bin/remsh") ((eq system-type 'EWS-UX/V) "/usr/ucb/remsh") ((eq system-type 'pcux) "/usr/bin/rcmd") (t "rsh"))) @end group @end lisp @end defvr @defun {$B%3%^%s%I(B} skk-server-version $B<-=q%5!<%P$+$iF@$?%P!<%8%g%sJ8;zNs$H%[%9%HL>J8;zNs$rI=<($9$k!#(B @example (skk-server-version) @print{} SKK SERVER version (wceSKKSERV) 0.2.0.0 ($B%[%9%HL>(B foo:192.168.0.999: ) @end example @end defun @node $B%5!<%P%3%s%W%j!<%8%g%s(B @subsection $B%5!<%P%3%s%W%j!<%8%g%s(B Server completion $B$KBP1~$7$?<-=q%5!<%P$G$"$l$P!"8+=P$78l$+$i;O$^$kA4$F$N8l6g(B $B$N8!:w$,2DG=$G$9!#(B @defun skk-comp-by-server-completion $B$3$N4X?t$r(B @code{skk-completion-prog-list} $B$NMWAG$KDI2C$9$k$H!""&%b!<%I$K$*(B $B$$$F8+=P$78lJd40$r(B $B$l!"(B@samp{/} $B$K$h$C$F6h@Z$i$l$F$$$^$9!#(BSKK $B$G$O!"8+=P$78l$H8uJd72$r9g$o(B $B$;$?(B @w{@samp{$B$F$s(B /$BE@(B/$B!&(B/$BE7(B/}} $B$N0l9T$r(B@b{$B!V%(%s%H%j!W(B}$B$H8F$S$^$9!#(B @cindex $B%(%s%H%j(B $B<-=q$OC1=c$J%F%-%9%H%U%!%$%k$G!"I,$:2<5-$N(B 2 $B$D$N9T$r;}$C$F$$$^$9!#(B @example @group ;; okuri-ari entries. ;; okuri-nasi entries. @end group @end example @noindent $B$3$N(B 2 $B$D$N9T$O!"$=$l$>$lAw$j2>L>$"$j!"Aw$j2>L>$J$7$N%(%s%H%j$N3+;OCOE@(B $B$r<($9%^!<%/$G$9!#(B @samp{;; okuri-ari entries.} $B$^$G$N9T$G(B @samp{;} $B$r9T(B $BF,$K;}$D9T$O%3%a%s%H9T$H$7$FL5;k$5$l$^$9!#(B@samp{;; okuri-ari entries.} $B0J9_$K%3%a%s%H9T$r4^$`$3$H$O$G$-$^$;$s!#(B @w{@samp{;; okuri-ari entries.}} $B$H(B @w{@samp{;; okuri-nasi entries.}} $B$N(B $B4V$K0O$^$l$?>eH>J,$NItJ,$,Aw$j2>L>$"$j$N%(%s%H%j$G$9!#$3$l$r(B@b{$B!VAw$j$"(B $B$j%(%s%H%j!W(B}$B$H8F$S$^$9!#(B @cindex $BAw$j$"$j%(%s%H%j(B @w{@samp{;; okuri-nasi entries.}}$B0J2<$N2J,ItJ,$,Aw$j2>L>$J$7$N%(%s%H(B $B%j$G$9!#$3$l$r(B@b{$B!VAw$j$J$7%(%s%H%j!W(B}$B$H8F$S$^$9!#(B @cindex $BAw$j$J$7%(%s%H%j(B @cindex $BAw$j$"$jJQ49(B @cindex $BAw$j$J$7JQ49(B $BAw$j$"$j%(%s%H%j$r8!:w$9$kJQ49$r(B@b{$B!VAw$j$"$jJQ49!W(B}$B!"Aw$j$J$7%(%s%H%j$r(B $B8!:w$9$kJQ49$r(B@b{$B!VAw$j$J$7JQ49!W(B}$B$H8F$S$^$9!#(BSKK $B$G$OAw$j2>L>$NM-L5$,JQ(B $B49J}K!$N(B 1 $B$D$NL>$,$"$kJQ49$G$OAw$j$"$j%(%s%H(B $B%j$N$_$,8!:w$5$l!"Aw$j2>L>$,$J$$JQ49$G$OAw$j$J$7%(%s%H%j$N$_$,8!:w$5$l$^(B $B$9!#(B 1 $B$D$N8+=P$78l$K$D$$$F$N%(%s%H%j$O(B 1 $B9TFb$K=q$+$l$^$9!#(B2 $B9T0J>e$K$^$?$,(B $B$k$3$H$O$G$-$^$;$s!#2~9T$r4^$`8uJd$K$D$$$F$O!"(B@code{(concat "$B2~(B\n$B9T(B")} $B$N$h$&$K!"I>2A$9$k$H2~9T$r3:Ev8D=j$KA^F~$9$k$h$&$J(B Lisp $B%W%m%0%i%`(B (@w{@pxref{$B%W%m%0%i%`L>ItJ,$O!"Aw$j2>L>$r%m!<%^;zI=8=$7$?$H$-$N(B 1 $BJ8;zL\(B @footnote{$B$"$k$+$JJ8;z$r%m!<%^;zI=8=$7$?$H$-$N(B 1 $BJ8;zL\$r(B@b{$B!V%m!<%^;z%W(B $B%l%U%#%C%/%9!W(B}$B$H8F$S$^$9!#(B}$B$GI=8=$5$l$F$$$^$9!#(B $B$3$N(B 1 $B%(%s%H%j$G(B @samp{$B;}$?(B}$B!"(B@samp{$B;}$A(B}$B!"(B@samp{$B;}$D(B}$B!"(B@samp{$B;}$F(B}$B!"(B @samp{$B;}$H(B} $B$N(B 5 $B$D$N8uJd$KBP1~$7$^$9!#$=$N(B 5 $B$D$N8uJd$NAw$j2>L>$r%m!<%^(B $B;z%W%l%U%#%C%/%9$GI=8=$9$l$P!"$$$:$l$b(B @samp{t} $B$K$J$j$^$9!#(B @node $BAw$j$"$j%(%s%H%j$N%V%m%C%/7A<0(B @subsubsection $BAw$j$"$j%(%s%H%j$N%V%m%C%/7A<0(B $B8D?M<-=q$NAw$j$"$j%(%s%H%j$K$O(B @samp{[} $B$H(B @samp{]} $B$K0O$^$l$?%V%m%C%/$,(B $B$"$j$^$9!#$3$l$O!"$=$N%V%m%C%/$N@hF,$K$"$kJ?2>L>$rAw$j2>L>$Kl9g$O(B @samp{$B$((B} $B$rAw$j2>L>$H$9(B $B$k(B 1 $B$D$N%V%m%C%/$+$i9=@.$5$l$F$$$^$9!#8+=P$78l(B @samp{$B$U$/(Bm} $B$N>l9g$O!"(B @samp{$B$^(B}$B!"(B@samp{$B$_(B}$B!"(B@samp{$B$`(B}$B!"(B@samp{$B$a(B}$B!"(B@samp{$B$b(B} $B$rAw$j2>L>$H$9$k(B 5 $B%V%m%C%/$KJ,$1$i$l$F$$$^$9!#(B @vindex skk-auto-okuri-process @vindex skk-henkan-okuri-strictly $B$3$NAw$j2>L>Kh$N%V%m%C%/ItJ,$O!"(B@code{skk-henkan-okuri-strictly} $B$"$k$$(B $B$O(B @code{skk-auto-okuri-process} $B$N$$$:$l$+$NJQ?t$,(B @code{non-nil} $B$G(B $B$"$k>l9g$K;HMQ$5$l$^$9!#$=$N>l9g!"8!:w$K$*$$$F!"8+=P$78l$N0lCW$K2C$($F!"(B $B99$KAw$j2>L>$b%^%C%A$9$k$+$I$&$+$r%F%9%H$7$^$9!#Nc$($P!"(B @example $B$*$*(Bk /$BBg(B/$BB?(B/[$B$/(B/$BB?(B/]/[$B$-(B/$BBg(B/]/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$7$^$9!#F1$88+=P$78l(B @samp{$B$*$*(Bk} $B$G$"$C$F$b!"Aw$j(B $B2>L>$,(B @samp{$B$-(B} $B$G$"$l$P!"8uJd$O(B @samp{$BBg(B} $B$N$_$G(B @samp{$BB?(B} $B$OL5;k$5$l$^(B $B$9!#(B @footnote{@xref{$BAw$j2>L>$N<+F0=hM}(B, , skk-henkan-okuri-strictly}. @xref{$BAw$j2>L>$N87L)$J%^%C%A(B, , skk-auto-okuri-process}. @xref{$BAw$j2>L>$NM%@hE*$J%^%C%A(B, , skk-henkan-strict-okuri-precedence}. } @vindex skk-process-okuri-early $B8=:_(B @url{http://openlab.jp/skk/dic.html} $B$GG[I[$5$l$F$$$k6&M-<-=q$G$O!"(B @samp{[} $B$H(B @samp{]} $B$r;HMQ$7$?Aw$j2>L>Kh$N%V%m%C%/$N7A<0$KBP1~$7$F$$$^$;$s!#(B $B8D?M<-=q$N$_$,$3$N7A<0$G=q$-9~$^$l$F$$$-$^$9!#(B @code{skk-henkan-okuri-strictly} $B$,(B @code{nil} $B$G$"$C$F$bAw$j2>L>$N%V%m%C(B $B%/7A<0$G=q$-9~$^$l$^$9!#(B@footnote{$B$?$@$7(B @code{skk-process-okuri-early} $B$NCM$,(B @code{non-nil} $B$G$"$l$P!"Aw$j2>L>$r7hDj$9$kA0$KJQ49$r3+;O$9$k$3$H(B $B$K$J$k$N$G!"Aw$j2>L>$rL@<(E*$KF~NO$7$F$$$F$b8D?M<-=q$K$O%V%m%C%/7A<0$O:n(B $B$i$l$^$;$s!#(B} @node $B%(%s%H%j$NG[Ns(B @subsubsection $B%(%s%H%j$NG[Ns(B @cindex $B<-=q$N%=!<%HJ}K!(B $B6&M-<-=q$O!"Aw$j$"$j%(%s%H%j$O(B @w{@samp{;; okuri-ari entries.}} $B$+$i=g(B $B$K2:=g(B}$B$KG[CV$5$l$^$9!#(B $B9_=g!?>:=g$KG[CV$5$l$k$N$O!"<-=q%5%$%:$,Bg$-$$$3$H$KG[N8$7$FFsJ,8!:w(B $B$r9T$&$?$a$G$9(B @footnote{$B%=!<%H$9$k:]$K$O!"8+=P$78l$r(B unsigned-char $B$H8+$J$7$^$9!#(B $B$3$N=g=x$O(B Emacs $B$,(B $B4X?t(B @code{string<} $B$GJ8;zNs$rHf3S$9$k$H$-$N=g=x$G$"(B $B$j!"(BUNIX $B$N(B @command{sort} $B%3%^%s%I$G$NI8=`$N=g=x$H$O0[$J$j$^$9!#(B Emacs $B$N%3%^%s%I(B @code{sort-lines}$B$rMQ$$$l$P%U%!%$%k$r$3$N=g=x$G%=!<%H$9(B $B$k$3$H$,$G$-$^$9!#(BEmacs $B$N%3%^%s%I(B @code{sort-columns} $B$OFbItE*$K(B UNIX $B%3(B $B%^%s%I$N(B @command{sort} $B$r;H$C$F$$$k$N$G!"<-=q$N%=!<%H$K$O;H$($^$;$s!#(B}$B!#(B $B0lJ}!"8D?M<-=q$O!"0lHV:G8e$KJQ49$5$l$?8l$,:G$b$l$N%(%s%H%j$,(B @w{@samp{;; okuri-ari entries.}}, @w{@samp{;; okuri-nasi entries.}} $B$r(B $B4pE@$H$7$F:G>.%]%$%s%H$KA^F~$5$l$F<-=q$,(B $B99?7$5$l$^$9(B @footnote{$B@53N$K8@$($P!"Aw$j$"$jJQ49$G$O(B @w{@code{skk-okuri-ari-min}+ 1} $B$N0LCV!"Aw$j$J$7JQ49$G$O(B @w{@code{skk-okuri-nasi-min}+ 1} $B$N0LCV!#(B}$B!#(B $B8D?M<-=q$O!"DL>o$O6&M-<-=q$[$I$O%5%$%:$,Bg$-$/$J$$$N$G!"8!:w;~$K$O$=$l$>(B $B$l$N4pE@$+$iD>@~E*$K8!:w$,9T$o$l$^$9!#(B $B:G8e$K3NDj$5$l$?8l$O!"0l$D$N%(%s%H%j$NCf$N:G=i$N0LCV$KCV$+$l$^$9!#(B @node $B6/@)E*$K<-=qEPO?%b!<%I$XF~$k(B @subsection $B6/@)E*$K<-=qEPO?%b!<%I$XF~$k(B @kindex . $B"'%b!<%I$K$F!"%(%3!<%(%j%"$KJQ498uJd$,I=<($5$l$F$$$k$H$-$K(B @kbd{.} $B$r%?%$(B $B%W$9$k$H!"6/@)E*$K<-=qEPO?%b!<%I$XF~$j$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-force-registration-mode-char $B6/@)E*$K<-=qEPO?%b!<%I$XF~$k$?$a$N%-!<%-%c%i%/%?$r$3$NJQ?t$GDj5A$7$^$9!#(B $BI8=`@_Dj$O(B @kbd{.} $B$G$9!#(B @end defvr @node $B8m$C$?EPO?$N:o=|(B @subsection $B8m$C$?EPO?$N:o=|(B @cindex $B8D?M<-=q%(%s%H%j$N:o=|(B @cindex $B8mEPO?(B @kindex X $B8m$C$F8D?M<-=q$KEPO?$7$?C18l$O:o=|$G$-$^$9!#(B $B:o=|$7$?$$C18l$rJQ49$K$h$j5a$a!"$=$NC18l$,I=<($5$l$?;~E@$G(B @kbd{X} $B$rF~NO(B $B$7$^$9!#%_%K%P%C%U%!$K3NG'%W%m%s%W%H$,=P$k$N$G(B @kbd{y e s} $B$HEz$($k$H!"8D(B $B?M<-=q$NBP1~$9$k%(%s%H%j$,:o=|$5$l$^$9!#8=:_$N%P%C%U%!$K@hDxF~NO$7$?!V8m(B $B$j$NJQ497k2L!W$b:o=|$5$l$^$9!#(B $BNc$($P!"(B @example $B$5$$$-$F$-(B /$B:F5/E*(B/ @end example @noindent $B$H$$$&%(%s%H%j$r8m$C$FEPO?$7$F$7$^$C$?$H$$$&2>Dj$G!"$3$N8mEPO?$r:o=|$9$k(B $B>l9g$r@bL@$7$^$9!#(B @example @kbd{S a i k i t e k i @key{SPC}} @group ------ Buffer: foo ------ $B"':F5/E*(B@point{} ------ Buffer: foo ------ @end group @kbd{X} @group ------------------ MiniBuffer ------------------ Really purge ``$B$5$$$-$F$-(B /$B:F5/E*(B/''?(yes or no) @point{} ------------------ MiniBuffer ------------------ @end group @kbd{y e s @key{RET}} @group ------ Buffer: foo ------ @point{} ------ Buffer: foo ------ @end group @end example @node $B8D?M<-=q%U%!%$%k$NJT=8(B @subsection $B8D?M<-=q%U%!%$%k$NJT=8(B @kindex M-x skk-edit-private-jisyo @b{$B9=J8%A%'%C%/$,==J,$G$O$"$j$^$;$s!#8D?M<-=q%U%!%$%k$NJT=8$O!"<+8J@UG$(B $B$N$b$H9T$C$F$/$@$5$$!#(B} $B%3%^%s%I(B @kbd{M-x skk-edit-private-jisyo} $B$r;H$&$H!"8D?M<-=q%U%!%$%k$,(B $B3+$+$l$^$9(B@footnote{$BA0CV0z?t$rH<$C$F$K$b>/$7@)8B$,$"$j$^$9$,!"(B $B5$$K$J$i$J$$$G$7$g$&!#(B) $BJT=8$,=*$o$C$?$i!"(B@kbd{C-c C-c} $B$H2!$9$H8D?M<-=q%U%!%$%k$r%;!<%V$7$F%P%C(B $B%U%!$rJD$8$^$9!#(B @node $B8D?M<-=q$NJ]B8F0:n(B @subsection $B8D?M<-=q$NJ]B8F0:n(B @cindex $B8D?M<-=q(B @cindex $B8D?M<-=q$N%*!<%H%;!<%V(B @kindex C-x C-c @vindex skk-save-jisyo-instantly $B8D?M<-=q$NJ]B8F0:n$K$D$$$F@bL@$7$^$9!#(B $B8D?M<-=q$NJ]B8$,9T$o$l$k>l9g$H$7$F!"l9g!#(B @item @kbd{M-x skk-save-jisyo} $B$HF~NO$7$?$+!"%a%K%e!<%P!<$N(B @samp{Save Jisyo} $B$r(B $BA*Br$7$?>l9g!#(B @item $B8D?M<-=q$,!VJQ?t(B @code{skk-jisyo-save-count} $B$G;XDj$5$l$?2s?t!W$N99?7$,9T(B $B$o$l$?7k2L$H$7$F!"<+F0J]B8(B ($B%*!<%H%;!<%V(B) $B5!G=$,F/$/$H$-!#(B @item $BJQ?t(B @code{skk-save-jisyo-instantly} $B$,(B @code{non-nil} $B$G$"$l$P!"(B $BC18lEPO?!JC18l:o=|!K$N$?$S$K8D?M<-=q$rJ]B8$9$k!#(B @end enumerate $BJ]B8F0:n$rJ,@O$7$F9M$($^$9!#$^$:!"(B Emacs $B$KFI$_9~$s$@8D?M<-=q$,99?7$5$l(B $B$F$$$k$+$I$&$+$rD4$Y$^$9!#99?7$5$l$F$$$?$iJ]B8F0:n$KF~$j$^$9!#(BEmacs $B$N8D(B $B?M<-=q%P%C%U%!$r0l;~%U%!%$%k$KJ]B8$7$F!"$=$N%U%!%$%k%5%$%:$,8=B8$N(B ($B%;!<(B $B%VA0$N(B) $B8D?M<-=q$h$j>.$5$/$J$$$+$I$&$+$r%A%'%C%/$7$^$9!#8D?M<-=q$h$j>.$5(B $B$$$H$-$O!"J]B8F0:n$r7QB3$9$k$+$I$&$+!"3NG'$N$?$a$No$N;HMQ$NHO0O$G$O(B @kbd{M-x skk-purge-from-jisyo} $B$7$?>l9g!"$"(B $B$k$$$O8D?M<-=q$r%f!<%6$,0U?^E*$KJT=8$7$?>l9g!"J#?t$N(B Emacs $B$G(B DDSKK $B$r(B $B;HMQ$7$?>l9g$J$I$K!"8D?M<-=q$,>.$5$/$J$k$3$H$,$"$j$^$9!#B>$N>l9g$O%P%0$N(B $B2DG=@-$,$"$j$^$9!#(B}$B!#(B @example @group --------------------------- Minibuffer ----------------------------- New ~/.skk-jisyo will be 11bytes smaller. Save anyway?(yes or no) --------------------------- Minibuffer ----------------------------- @end group @end example @noindent $B$3$3$G(B @kbd{n o @key{RET}} $B$HEz$($?>l9g$O!"$=$3$GJ]B8F0:n$,Cf;_$5$l!"8D(B $B?M<-=q$O0JA0$N>uBV$N$^$^$K$J$j$^$9!#(B@kbd{y e s @key{RET}} $B$HEz$($?>l9g$O(B $B85$N8D?M<-=q$rB`HrMQ$N<-=q(B @file{~/.skk-jisyo.BAK} $B$KB`Hr$7!"0l;~%U%!%$(B $B%k$KJ]B8$7$??7$7$$8D?M<-=q$r(B @code{skk-jisyo} $B$KJ]B8$7$^$9!#(B $B$b$7!"0l;~%U%!%$%k$N%5%$%:$,(B 0 $B$G$"$k>l9g$O!"$J$s$i$+$N0[>o$H9M$($i$l$k(B $B$?$aJ]B8F0:n$OD>$A$KCf;_$5$l$^$9!#$=$N>l9g$O(B @kindex M-x skk-kill-emacs-without-saving-jisyo @kbd{M-x skk-kill-emacs-without-saving-jisyo} @noindent $B$G(B Emacs $B$r=*N;$5$;!"8D?M<-=q(B (@code{skk-jisyo}) $B5Z$S8D?M<-=q$NB`HrMQ<-(B $B=q(B (@code{skk-backup-jisyo}) $B$r%A%'%C%/$9$k$h$&6/$/$*4+$a$7$^$9(B @footnote{@code{skk-jisyo} $B$,4{$K2u$l$F$$$F$b!"JQ?t(B @code{skk-backup-jisyo} $B$,(B $B;X$7<($9%U%!%$%k$K$=$l0JA0$N8D?M<-=q$,;D$C$F$$$k2DG=@-$,$"$j$^$9!#(B}$B!#(B @defvr {$B%f!<%6JQ?t(B} skk-compare-jisyo-size-when-saving $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!"J]B8A0$N8D?M<-=q$H$N%5%$%:$rHf3S(B $B$7$^$;$s!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-jisyo-save-count $B$3$NJQ?t$G;XDj$5$l$?2s?t!"8D?M<-=q$,99?7$5$l$?>l9g$K8D?M<-=q$,<+F0J]B8$5(B $B$l$^$9!#%G%U%)%k%H$O(B 50 $B$G$9!#$^$?!"$3$NCM$r(B @code{nil} $B$K$9$k$H!"8D?M<-(B $B=q$N<+F0J]B85!G=$,L58z$K$J$j$^$9!#(B $B$3$3$G!"8D?M<-=q$N99?72s?t$O3NDj2s?t$H0lCW$7$^$9!#$^$?!"F1$88uJd$K$D$$$F(B $B3NDj$7$?>l9g$G$b$=$l$>$l(B 1 $B2s$H?t$($i$l$^$9(B @footnote{$B$3$l$O!"8D?M<-=q$N:G>.%]%$%s%H$K!">o$K:G8e$KJQ49$r9T$C$?%(%s(B $B%H%j$r0\F0$5$;$k$?$a$K!"%(%s%H%j?t!"8uJd?t$,A4$/A}$($F$$$J$/$H$b!"3NDj$K(B $B$h$j8D?M<-=q$,99?7$5$l$F$$$k$+$i$G$9!#(B}$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-save-jisyo-instantly $B$3$NJQ?t$,(B @code{non-nil} $B$G$"$l$P!"C18l$rEPO?$9$k$?$S!J:o=|$9$k$?$S!K$K(B $B8D?M<-=q$rJ]B8$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-share-private-jisyo @code{Non-nil} $B$G$"$l$P!"J#?t$N(B SKK $B$K$h$k8D?M<-=q$N6&M-$r9MN8$7$F<-=q$r(B $B99?7$9$k!#(B SKK $B5/F08e$K$3$NJQ?t$rJQ99$7$?>l9g$O(B @kbd{M-x skk-restart} $B$G(B $BH?1G$5$;$k$3$H!#(B @end defvr @node $BJQ495Z$S8D?M<-=q$K4X$9$kE}7W(B @subsection $BJQ495Z$S8D?M<-=q$K4X$9$kE}7W(B DDSKK $B$O!"$+$J4A;zJQ495Z$S8D?M<-=q$K4X$9$kE}7W$re5-$N!V8l?t(B:$B!W$N?t$O8D?M<-=q(B @file{skk-jisyo} $B$KEPO?$5$l$F$$$k8uJd?t$G$9(B $B$,!"$3$3$G$O(B 1 $B9T$r(B 1 $B8l$H$7$F?t$($F$$$^$9!#$=$N$?$a!"(B1 $B$D$N8+=P$78l$KBP(B $B$7$FJ#?t$N8uJd$r;}$C$F$$$k>l9g$O!"(B2 $B$DL\0J9_$N8uJd$rL5;k$7$F$$$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-record-file $BE}7W>pJs$rJ]B8$9$k%U%!%$%kL>$r;XDj$7$^$9!#(B (@w{@pxref{$B@_Dj%U%!%$%k(B}}) @end defvr @defvr {$B%f!<%6JQ?t(B} skk-keep-record $B$3$NJQ?t$NCM$r(B @code{nil} $B$K@_Dj$9$k$H!"K\@a$G@bL@$7$?E}7W5!G=$rL58z$K(B $B$7$^$9!#?tCM$r@_Dj$9$k$H!"(B@code{skk-record-file} $B$r;XDj?tCM$N9T?t$h(B $B$jBg$-$/$7$^$;$s!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-count-private-jisyo-candidates-exactly $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"!V8l?t!W$N?t$(J}$rJQ99$7$^$9!#(B $B6qBNE*$K$O!"(B 1 $B9T$r(B 1 $B8l$H$7$F?t$($k$N$G$O$J$/!"@53N$K8l?t$r?t$($^$9!#(B $B$J$*!"$=$NJ,;~4V$,$+$+$j$^$9!#$^$?!"$3$N>l9g$G$b(B @samp{[} $B$H(B @samp{]} $B$K0O$^$l$?Aw$j2>L>Kh$N%V%m%C%/7A<0Fb$O?t$($^$;$s!#(B @end defvr @cindex Menu Bars @cindex $B%a%K%e!<%P!<(B @findex skk-count-jisyo-candidates @kindex M-x skk-count-jisyo-candidates @noindent @kbd{M-x skk-count-jisyo-candidates} $B$3$N%3%^%s%I$r;H$&$H!"<-=q$N8uJd?t$r?t$($k$3$H$,$G$-$^$9!#(B @example @group @kbd{M-x skk-count-jisyo-candidates} --------------- MiniBuffer -------------- Jisyo file: (default: /your/home/.skk-jisyo) ~/@point{} --------------- MiniBuffer -------------- @end group @group @kbd{. s k k - j i s y o @key{RET}} -------------- Echo Area -------------- Counting jisyo candidates@dots{} 100% done -------------- Echo Area -------------- @end group @group ------ Echo Area ------ 3530 candidates ------ Echo Area ------ @end group @end example $B$?$@$7!"(B@samp{[} $B$H(B @samp{]} $B$K0O$^$l$?Aw$j2>L>Kh$N%V%m%C%/7A<0Fb$O?t$($^$;(B $B$s!#(B $B$^$?!"%a%K%e!<%P!<$,;HMQ$G$-$k4D6-$G$O!"%a%K%e!<%P!<$r;H$C$F$3$N%3%^%s%I(B $B$r8F$S=P$9$3$H$,$G$-$^$9!#(B@w{@xref{Menu Bars, ,$B%a%K%e!<%P!<(B, emacs, GNU Emacs Manual}.} @node $B<-=q%P%C%U%!(B @subsection $B<-=q%P%C%U%!(B @cindex @file{dabbrev.el} @cindex @samp{ *SKK-JISYO.L*} @findex fundamental-mode @vindex major-mode @vindex mode-name @vindex skk-large-jisyo @cindex $B<-=q%P%C%U%!$NL>IU$15,B'(B $B<-=q8!:w%W%m%0%i%`$rA0$O!"(B $B!V6uGr(B+@samp{*}+$B<-=q%U%!%$%kL>(B($B%G%#%l%/%H%jH4$-(B)+@samp{*}$B!W(B @noindent $B$H$$$&5,B'$K4p$E$$$FIU$1$i$l$^$9!#Nc$($P!"JQ?t(B @code{skk-large-jisyo} $B$N(B $BCM$,(B @file{/usr/local/share/skk/SKK-JISYO.L} @noindent $B$G$"$k$H$-!"$3$l$KBP$9$k<-=q%P%C%U%!L>$O!"(B @samp{ *SKK-JISYO.L*} @noindent $B$H$J$j$^$9!#(B $B$3$N%P%C%U%!$N%a%8%c!<%b!<%I$O(B @code{fundamental-mode} $B$G$9!#$7$+$7!"=t(B $BHL$N;v>p$K$h$j!"JQ?t(B @code{major-mode} $B$NCM$r%7%s%\%k(B @code{skk-jisyo-mode} $B$H!"(B $BJQ?t(B @code{mode-name} $B$NCM$rJ8;zNs(B @samp{SKK dic} $B$H$7$F$$$^$9(B @footnote{$B$3$l$O!"(BEmacs $B$N(B @file{dabbrev.el} $B$N5!G=$H$ND4OB$r9M$($F$NA<(B $BCV$G$9!#(B Dabbrev $B$K$*$$$F$O!"8=:_$N%P%C%U%!$HF1$8%b!<%I$NB>$N%P%C%U%!$r8!:w$7$F(B abbreviation $B$NE83+$r9T$&$h$&$K@_Dj$9$k$3$H$,$G$-$k$N$G$9$,!"2>$K<-=q(B $B%P%C%U%!$K$*$1$kJQ?t(B @code{major-mode} $B$NCM$,(B @code{fundamental-mode} $B$N$^(B $B$^$@$H$9$k$H!"(B Dabbrev $B$,<-=q%P%C%U%!$r8!:w$7$F$7$^$&2DG=@-$,$"$j$^$9!#(B $B$3$NAl9g(B @code{euc-jp}, @code{shift_jis}, @code{junet} $B$J$I$N(B symbol $B$GI=$5$l!"(B@kbd{M-x describe-coding-system} $B$G(B $BD4$Y$k$3$H$,$G$-$^$9!#(BXEmacs $B$N>l9g(B symbol $B$O(B coding system $B$=$N$b$N$G$O(B $B$J$/(B coding system object $B$r;X<($9$k$?$a$N(B symbol $B$H$7$F07$o$l$^$9!#(B $B6qBNE*$K$O(B GNU Emacs $B$G$O(B @code{(coding-system-p 'euc-jp)} $B$,(B @code{t} $B$r(B $BJV$9$N$KBP$7!"(B XEmacs $B$G$O(B @code{nil} $B$rJV$7$^$9$,!"Be$o$j$K(B symbol $B$,<((B $B$9(B coding system object $B$rJV$9(B @code{find-coding-system} $B4X?t$,B8:_$7$^$9!#(B} @item @code{nil} @end itemize $B%G%U%)%k%H$O(B @code{nil} $B$G$9!#$3$N>l9g!"(BDDSKK $BB&$G<-=q$NJ8;z%3!<%I$r@_Dj$9$k(B $B$3$H$O$;$:!"(BEmacs $B$KG$$;$^$9!#(B @end defvr @node $B<-=q%P%C%U%!$N(Bbuffer-file-name @subsection $B<-=q%P%C%U%!$N(Bbuffer-file-name @vindex buffer-file-name @findex save-some-buffers Emacs $B$K$O(B @code{save-some-buffers} $B$H$$$&4X?t$,$"$j$^$9!#$3$N4X?t$O!"%U%!(B $B%$%k$K4XO"IU$1$i$l$F$$$k3F%P%C%U%!$K$D$$$F!"JQ99$,$"$l$P%U%!%$%k$KJ]B8$7(B $B$^$9$,!"$H4XO"IU$1$i$l$F$$$?$H$7$?$i!"$3$&$7$?%3%^%s%I$r(B $BpJs8;$+$ie5-$N$H$*$j!"(B@code{;} $B$ND>8e$K(B @code{*} $B$,<+F0E*$K?6$i$l$k(B @footnote{@code{*} $B$NJ8;z$OJQ49;~$K$OI=<($5$l$^$;$s(B}$B$3$H$K$h$C$F%f!<%6$,(B $BFH<+$KEPO?$7$?%"%N%F!<%7%g%s$G$"$k$3$H$,J,$+$j$^$9!#(B $B0lJ}!"6&M-<-=q$K85!9EPO?$5$l$F$$$k%"%N%F!<%7%g%s$r!V%7%9%F%`%"%N%F!<(B $B%7%g%s!W$H8F$S!"$3$l$O(B @code{;} $B$ND>8e$K(B @code{*} $B$NJ8;z$rH<$$$^$;$s!#(B $B%7%9%F%`%"%N%F!<%7%g%s$O!"e5-$N$$$:$l$G$b$J$/!"30It$N<-E5$=$NB>$N>pJs8;$+$iF@$i$l$k$b$N$r!V30It%"(B $B%N%F!<%7%g%s!W$H$$$$$^$9!#30It%"%N%F!<%7%g%s$O(B Emacs Lisp $B%Q%C%1!<%8$G$"(B $B$k(B lookup.el$B!"(B Mac OS X $BIUB0$N<-=q!"(BWiktionary/Wikipedia $B$J$I$+$io$KI=<($7$^$9!#(B @item (setq skk-show-annotation '(not list)) *$B8uJd(B*$B%P%C%U%!(B@footnote{@code{skk-show-candidates-always-pop-to-buffer}}$B$G$O!"%"%N%F!<%7%g%s$rI=<($7$^$;$s!#(B @item (setq skk-show-annotation '(not minibuf)) $B%_%K%P%C%U%!$K$*$1$k$+$J4A;zJQ49!JC18lEPO?;~!K$G$O!"%"%N%F!<%7%g%s$rI=<($7$^$;$s!#(B @item (setq skk-show-annotation '(not list minibuf)) *$B8uJd(B*$B%P%C%U%!5Z$S%_%K%P%C%U%!$G$O!"%"%N%F!<%7%g%s$rI=<($7$^$;$s!#(B @item (setq skk-show-annotation nil) $B$$$+$J$k>l9g$b%"%N%F!<%7%g%s$rI=<($7$^$;$s!#(B @end table @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-delay $B%"%N%F!<%7%g%s$rI=<($9$k$^$G$NCY1d$rIC$G;XDj$9$k!#%G%U%)%k%H$O(B 1.0 $BIC!#(B @end defvr @kindex C-w @defvr {$B%f!<%6JQ?t(B} skk-annotation-copy-key @kbd{C-w} $B$r%?%$%W$9$k$H!"8=:_I=<($5$l$F$$$k%"%N%F!<%7%g%s$r(B kill ring $B$K(B $BJ]B8$7$^$9!#J]B8$7$?FbMF$r(B Emacs $B0J30$N%"%W%j%1!<%7%g%s$GMxMQ$7$?$$>l9g$O(B $BJQ?t(B @code{interprogram-cut-function} $B$r@_Dj$7$F$/$@$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-show-as-message @code{Non-nil} ($B%G%U%)%k%H(B) $B$G$"$l$P!"%"%N%F!<%7%g%s$r%(%3!<%(%j%"$KI=<($7$^$9!#(B @code{nil} $B$G$"$l$P!"(Bother-window $B$r0l;~E*$K3+$$$F%"%N%F!<%7%g%s$rI=<($7$^$9!#(B other-window $B$O!"$=$N8uJd$r3NDj$9$k$+!"$=$N8uJd$NA*Br$r;_$a$k(B ($Bl9g$O%"%N%F!<%7%g%s$r%D!<%k%F%#%C%W$GI=<($7$^$9!#(B @end defvr @kindex ^ @defvr {$B%f!<%6JQ?t(B} skk-annotation-toggle-display-char $B!V(B*$B8uJd(B*$B%P%C%U%!!W$GJQ498uJd$r0lMwI=<($7$F$$$k$H$-$K%"%N%F!<%7%g%s$N(B $BI=<(!?HsI=<($rF0E*$K@Z$jBX$($k%-!<$r@_Dj$7$^$9!#(B $B%G%U%)%k%H$O(B @kbd{^} $B$G$9!#(B @example @group ----- Buffer: *$B8uJd(B* ----- A:$Bl9g$K(B $B8B$C$F%"%N%F!<%7%g%s$,I=<($5$l$^$9!#(B @lisp @group (setq skk-annotation-function (lambda (annotation) (eq (aref annotation 0) ?*))) @end group @end lisp @noindent $B>e5-$NNc$G$O!"%"%N%F!<%7%g%s$N@hF,$,(B @code{*} $B$G;O$^$k!V%f!<%6%"%N%F!<(B $B%7%g%s!W$N>l9g$K(B @code{t} $B$rJV$9&K<0$r(B @code{skk-annotation-function} $B$K(B $BDj5A$7$^$7$?!#$3$l$K$h$C$F%f!<%6%"%N%F!<%7%g%s$@$1$,I=<($5$l$^$9!#(B @end defvr @node $B%"%N%F!<%7%g%s$NEPO?(B @subsection $B%"%N%F!<%7%g%s$NEPO?(B @findex skk-annotation-add @findex skk-annotation-kill @findex skk-annotation-remove @kindex M-x skk-annotation-add @kindex M-x skk-annotation-kill @kindex M-x skk-annotation-remove @defun {$B%3%^%s%I(B} skk-annotation-add &optional NO-PREVIOUS-ANNOTATION $B%"%N%F!<%7%g%s$rEPO?!?=$@5$9$k$K$O!"%"%N%F!<%7%g%s$rIU$1$?$$C18l$r3NDj$7(B $B$?D>8e$KF1$8%P%C%U%!$G(B @kbd{M-x skk-annotation-add} $B$HO$rJT=8$7$F$/$@$5$$!#(B $BJT=8$,=*$o$C$?$i(B @kbd{C-c C-c} $B$H%?%$%W$7$^$9!#(B $B$=$NC18l$K4{$K%"%N%F!<%7%g%s$,IU$$$F$$$k>l9g$O!"$"$i$+$8$aEv3:%"%N%F!<%7%g(B $B%s$rA^F~$7$F(B *SKK annotation* $B$r3+$-$^$9!#(B @end defun @defun {$B%3%^%s%I(B} skk-annotation-kill $B>e5-(B @kbd{M-x skk-annotation-add} $B$ro$K(B $B%$%s%9%H!<%k$5$l$F$$$k$3$H$,A0Ds$G$9!#(BLookup $B$r?75,$K%$%s%9%H!<%k$7$?>l(B $B9g$O!"(BSKK $B$r%$%s%9%H!<%k$7D>$9I,MW$,$"$j$^$9!#(B EPWING $B<-=q$NFbMF$r%"%N%F!<%7%g%sI=<($9$k$K$O!"#2$D$NJ}K!$,$"$j$^$9!#(B @enumerate @item @code{skk-treat-candidate-appearance-function} $B$r@_Dj$9$kJ}K!(B $B8uJd$NI=<($rAu>~$9$k4X?t$r;XDj$9$kJQ?t(B @code{skk-treat-candidate-appearance-function} $B$r@_Dj$9$k>l9g$O!"(B @file{etc/dot.skk} $B$K<($5$l$F$$$k@_DjNc$r0J2<$N$h$&$KJQ99$7$F$/$@$5$$!#(B @lisp @group + (require 'skk-lookup) (setq skk-treat-candidate-appearance-function #'(lambda (candidate listing-p) (let* ((value (skk-treat-strip-note-from-word candidate)) (cand (car value)) ;$B8uJd(B - (note (cdr value)) ;$BCm2A$7$F$_$F$/$@$5$$!#(B @end defvr @noindent @kbd{M-x skk-lookup-get-content-setup-dic} @kindex M-x skk-lookup-get-content-setup-dic @b{DDSKK $B$N5/F08e$KJQ?t(B @code{skk-lookup-get-content-nth-dic} $B$N?tCM$rJQ(B $B99$7$?>l9g$O!"$3$N%3%^%s%I$rI,$:e=q$-$7$^$9!#(B@code{skk-treat-candidate-appearance-function} $B$r(B $B<+J,$G@_Dj$9$k>l9g$O(B @code{skk-annotation-lookup-lookup} $B$K$O(B @code{t} $B$^$?$O(B @code{nil} $B$rI,MW$K1~$8$F@_Dj$7$^$9!#(B} @lisp (setq skk-annotation-lookup-lookup 'always) @end lisp @end defvr @end enumerate @node Mac OS X $B!V<-=q!W%5!<%S%9$+$i%"%N%F!<%7%g%s$rl9g$O(B @example % easy_install readline @end example @noindent $B$J$I$NJ}K!$G%$%s%9%H!<%k$7$^$9!#(B} @defvr {$B%f!<%6JQ?t(B} skk-annotation-lookup-DictionaryServices @code{Non-nil} $B$J$i$P(B OS X $B$N<-=q%5!<%S%9$rMxMQ$7$F%"%N%F!<%7%g%s$re=q$-$7$^$9!#(B@code{skk-treat-candidate-appearance-function} $B$r(B $B<+J,$G@_Dj$7$?$$>l9g$O(B @code{skk-annotation-lookup-DictionaryServices} $B$K$O(B @code{t} $B$^$?$O(B @code{nil} $B$rI,MW$K1~$8$F@_Dj$7$^$9!#(B} @lisp (setq skk-annotation-lookup-DictionaryServices 'always) @end lisp @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-python-program $B%"%N%F!<%7%g%s!#(B @lisp (setq skk-annotation-python-program "/usr/bin/python") @end lisp @end defvr $B:#$N$H$3$m!"%"%N%F!<%7%g%s$re0L$K;XDj$9$l$P;H$$$d$9$/$J$j$^$9!#(B @node Wikipedia/Wiktionary $B$+$i%"%N%F!<%7%g%s$rl9g!"%"%N%F!<%7%g%s$KBe$($F(B @uref{http://ja.wiktionay.org/, Wiktionary}, @uref{http://ja.wikipedia.org/, Wikipedia} $B$K$h$k2r@b$rI=<($9$k$3$H$,$G$-$^$9!#B>$N%"%N%F!<%7%g%s$,JQ49;~$K<+F0E*$K(B $BI=<($5$l$k$N$KBP$7!"(B Wikipedia/Wiktionary $B%"%N%F!<%7%g%s$O4pK\E*$K%f!<%6(B $B$N;X<($K$h$C$Fl9g!"%D!<%k%F%#%C%W$GI=<($7$^$9!#(B} $B$7$^$9!#(B @example B o k u j o u @group ----- Buffer: foo ----- $B"&$\$/$8$g$&(B@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"'KR>l(B@point{} ----- Buffer: foo ----- @end group @kbd{C-i} @group ----------------------------- Echo Area ------------------------------ $BKR>l!J$\$/$8$g$&!K$H$O!"%&%7!"%&%^$J$I$N2HC\$r;tM\$9$k;\@_!#71FI$_$5$l(B $B$F$^$-$P$H8F$P$l$k$3$H$b$"$k!#(B ----------------------------- Echo Area ------------------------------ @end group @end example $B%(%3!<%(%j%"$K2r@b$,I=<($5$l$F$$$k:GCf$K(B @kbd{C-o} $B$r2!$9$H!"(B $B4X?t(B @code{browse-url} $B$rMQ$$$F$=$N2r@b$N85$H$J$C$?(B URL $B$r%V%i%&%:$7$^$9!#(B @kindex C-i @defvr {$B%f!<%6JQ?t(B} skk-annotation-wikipedia-key $B%G%U%)%k%H$O(B @kbd{C-i} $B$G$9!#(B @end defvr @kindex C-o @defvr {$B%f!<%6JQ?t(B} skk-annotation-browse-key $B%G%U%)%k%H$O(B @kbd{C-o} $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-other-sources $B%"%N%F!<%7%g%s$r$r;XDj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-annotation-dict-program-arguments $B%"%N%F!<%7%g%s$ru(B $B67$G<-=q0z$-5!G=$H$7$F;H$&$3$H$,$G$-$^$9!#$=$N$?$a$K$O!"%3%^%s%I(B @code{skk-annotation-lookup-region-or-at-point} $B$rG$0U$K%-!R2p$7$^$9!#(B @lisp (global-set-key "\M-i" 'skk-annotation-lookup-region-or-at-point) @end lisp @noindent $B$3$N$h$&$K$7$F$*$/$H!"2?$+$N0UL#$,D4$Y$?$/$J$C$?$H$-!"NN0hA*Br$7$F(B @kbd{M-i} $B$H%?%$%W$9$l$P$=$N>l$G<-=q$r0z$/$3$H$,$G$-$^$9!#(B @noindent $B$5$i$K!"%f!<%6%*%W%7%g%s(B @code{skk-annotation-other-sources} $B$N(B 3 $BHV(B $BL\(B (Mac OS X $B$G$O(B 4 $BHVL\(B) $B$OI8=`$G(B @code{en.wiktionary} $B$K$J$C$F$$$^$9!#(B $BNc$($P!"1QJ8$rFI$s$G$$$F(B buffer $B$H$$$&8l$N@53N$J0UL#$r;2>H$7$?$/$J$C$?$H(B $B$7$^$9!#$=$N$H$-$O(B $BC18l(B buffer $B$K%]%$%s%H$r9g$o$;!"(B@kbd{M-3 M-i} (Max OS X $B$G$O(B @kbd{M-4 M-i}) $B$H%W%l%U%#%C%/%9IU$G%3%^%s%I$rl9g$O(B @code{en.wiktionary} $B$O(B 4 $BHVL\(B (Mac OS X $B$G$O(B 5 $BHV(B $BL\(B) $B$K$J$j$^$9!#(B} @example @group ----- Buffer: *scratch* ----- ;; This buffer@point{} is for notes you don't want to save, and for @dots{} ----- Buffer: *scratch* ----- @end group @kbd{M-3 M-i} (Max OS X $B$G$O(B @kbd{M-4 M-i}) @end example @noindent $B$9$k$H(B SKK $B%b!<%I$G$N%"%N%F!<%7%g%s$HF1MM!"0J2<$N$h$&$J@bL@$,I=<($5$l$^(B $B$9!#(B @example @group -------------------- Echo Area -------------------- English, Noun buffer (plural buffers) 1: Someone or something that buffs. 2: (chemistry) A solution used to stabilize the pH (acidity) of a liquid. 3: (computing) A portion of memory set aside to store data, often before it is sent to an external device or as it is received from an external device. [@dots{}] -------------------- Echo Area -------------------- @end group @end example @node $BJ8;z%3!<%I4XO"(B @section $BJ8;z%3!<%I4XO"(B @menu * $BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO(B:: * $B%a%K%e!<$K$h$kJ8;zF~NO(B:: * $BJ8;z%3!<%I0lMw(B:: * $BJ8;z%3!<%I$rCN$kJ}K!(B:: @end menu $B4XO"9`L\(B @w{@xref{$B<-=q%P%C%U%!$NJ8;z%3!<%I$N@_Dj(B}.} @node $BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO(B @subsection $BJ8;z%3!<%I$^$?$O%a%K%e!<$K$h$kJ8;zF~NO(B @cindex JIS$B%3!<%I(B @cindex EUC$B%3!<%I(B @kindex \ @kindex C-u \ @vindex skk-kcode-charset $B$+$J%b!<%I$G(B @kbd{\} $B%-!<$rF~NO$9$k$H!"%_%K%P%C%U%!$K(B @example @group ---------------------------- Minibuffer ----------------------------- $B!{!{$NJ8;z$r;XDj$7$^$9!#(B7/8 $B%S%C%H(B JIS $B%3!<%I(B (00nn), $B6hE@%3!<%I(B (00-00), UNICODE (U+00nn), $B$^$?$O(B [RET] ($BJ8;z0lMw(B): @point{} ---------------------------- Minibuffer ----------------------------- @end group @end example @noindent $B$H$$$&%W%m%s%W%H$,I=<($5$l!"J8;z%3!<%I!J(BJIS $B%3!<%I!"(BEUC $B%3!<%I$^$?$O6hE@HV9f!K(B $B$^$?$O%a%K%e!<$K$h$kJ8;zF~NO$,B%$5$l$^$9!#(B $B>e5-Nc<($N!{!{ItJ,$O(B $BJQ?t(B @code{skk-kcode-charset} $B$NCM$G$"$j!"(B $B$=$N=i4|CM$O(B @code{japanese-jisx0208} $BKt$O(B @code{japanese-jisx0213-1} $B$G$9!#(B $B=i4|CM$O4D6-$K$h$C$F<+F0E*$K@_Dj$5$l$^$9!#(B $B%-!<(B @kbd{\} $B$NBe$o$j$K(B @kbd{C-u \} $B$HF~NO$9$k$H!"0[$J$kJ8;z=89g(B (charset) $B$r;XDj$9(B $B$k;v$,$G$-$^$9!#(B $B$3$3$G!"J8;z%3!<%I$,$"$i$+$8$aJ,$+$C$F$$$k>l9g$K$O!"$=$NJ8;z%3!<%I$rF~NO(B $B$7$^$9!#Nc$($P(B @samp{$B!n(B} $B$NJ8;z%3!<%I$O!"(BJIS $B%3!<%I$G$O(B @samp{216e}$B!"(BEUC $B%3!<%I$G$O(B @samp{a1ee} $B$J$N$G!"$$$:$l$+$NJ8;z%3!<%I$rF~NO$9$l$P(B @samp{$B!n(B} $B$,8=:_$N%P%C%U%!$KA^F~$5$l$^$9!#(B $B6hE@HV9f$GF~NO$9$k$K$O(B @samp{01-78} $B$N$h$&$K6h$HE@$N4V$K%O%$%U%s(B @samp{-} $B$r(B $BF~$l$kI,MW$,$"$j$^$9!#%O%$%U%s(B @samp{-} $B$G6h@Z$C$?#3AH$N?t;z$O(B JIS X 0213 $B$N(B $B#2LL$r;XDj$7$?$H$_$J$7$^$9!#Nc$($P(B @samp{2-93-44} $B$G!V5{2V!W!J$[$C$1!K$,F~NO(B $B$G$-$^$9!#(B @node $B%a%K%e!<$K$h$kJ8;zF~NO(B @subsection $B%a%K%e!<$K$h$kJ8;zF~NO(B $BJ8;z%3!<%I$,ITL@$NJ8;z$rF~NO$9$k$K$O!"J8;z%3!<%I$rF~NO$;$:$K$=$N$^$^(B @key{RET} $B%-!<$rF~NO$7$^$9!#$9$k$H%_%K%P%C%U%!$K0J2<$N$h$&$JI=<($,8=$l$^(B $B$9!#(B @c $Bu$G$O$3$N%U%!%$%k$r(B utf-8 $B$GJ]B8$G$-$:!"$^$?(B emacs-23 $B$G$O(B @c $B$3$l$i$,GrH4$-$NOH(B ($B$$$o$f$kF&Ie(B) $B$GI=<($5$l$k!#$7$+$7>e=R$N$b$N$KCV$-49$($k$H!"(B @c $B:#EY$O(B iso-2022-jp $B$GJ]B8$G$-$J$$!#$7$P$i$/$O$3$N%U%!%$%k$O(B utf-8 $B$h$j$b(B @c iso-2022-jp $B$N$[$&$,NI$$$@$m$&!#(B (2010 $BG/(B 2 $B7n(B) @example @group ---------------------------- Minibuffer ----------------------------- A:$B!!(B S:$B!1(B D:$B!A(B F:$B!Q(B G:$B!a(B H:$B!q(B Q:$B"!(B W:$(Q"1(B E:$B"A(B R:$(Q"Q(B T:$B"a(B Y:$(Q"q(B ---------------------------- Minibuffer ----------------------------- @end group @end example @kindex x $B$3$l$r(B@b{$B!VBh#1CJ3,$N%a%K%e!e5-$NNc$G$O!"(BJIS $B%3!<%I(B 2121 ($BA43Q%9%Z!<%9(B)$B!"(B2131$B!"(B2141$B!"(B2151$B!"(B @dots{} $B$NJ8;z$,$=$l$>$lI=<($5$l$F$$$^$9!#(B}$B!#$3$3$G(B @key{SPC} $B$rF~NO$9$k(B $B$H.J8;z$G$b9=$$$^$;$s!#$J$*!"Bh#1CJ3,!&Bh#2CJ3,$H$b(B $B$K!"%a%K%e!<$N%-!<$rJQ99$9$k$3$H$,$G$-$^$9!#(B @w{@ref{$B8uJd$NA*Br$KMQ$$$k%-!<(B}} $B$r;2>H$7$F$/$@$5$$!#(B} $B!"$=$N%-!<$KBP1~$9$kJ8;z$+$i;O$^$k(B 16 $B8D$NJ8;z$,J8;z%3!<%I=g$KI=<($5$l$^(B $B$9!#$3$l$r(B@b{$B!VBh#2CJ3,$N%a%K%e!e5-$N>uBV$N$H$-$K(B @kbd{d} $B$rF~NO$9$k$H(B $BBh#2CJ3,$N%a%K%e!<$O0J2<$N$h(B $B$&$K$J$j$^$9!#(B @smallexample @group --------------------------------- Minibuffer ---------------------------------- A:$B!A(B S:$B!B(B D:$B!C(B F:$B!D(B G:$B!E(B H:$B!F(B J:$B!G(B K:$B!H(B L:$B!I(B Q:$B!J(B W:$B!K(B E:$B!L(B R:$B!M(B T:$B!N(B Y:$B!O(B U:$B!P(B --------------------------------- Minibuffer ---------------------------------- @end group @end smallexample $B$3$3$G!"%-!<(B @kbd{a}, @kbd{s}, @kbd{d}, @kbd{f}, @kbd{g}, @kbd{h}, @kbd{j}, @kbd{k}, @kbd{l}, @kbd{q}, @kbd{w}, @kbd{e}, @kbd{r}, @kbd{t}, @kbd{y}, @kbd{u}, $B$N$$$:$l$+$r(B $BF~NO$9$k$H!"BP1~$9$kJ8;z$,%+%l%s%H%P%C%U%!$KA^F~$5$l$F%a%K%e!<$K$h$kF~NO(B $B$,=*N;$7$^$9!#(B $BBh#2CJ3,$N%a%K%e!<$,I=<($5$l$F$$$k$H$-$b(B @key{SPC} $B$H(B @kbd{x} $B%-!<$K$h(B $B$jBh#2CJ3,$N%a%K%e!<$,A0?J!"8eB`$7$^$9!#(B @kindex < @kindex > @kindex ? $B$^$?(B @kbd{<}$B!"(B@kbd{>} $B$K$h$j%a%K%e!<$r#1J8;zJ,$@$10\F0$7$^$9!#Nc$($P!"(B $BBh#2CJ3,$N%a%K%e!<$,>e5-$N>uBV$N$H$-$K(B @kbd{<} $B$rF~NO$9$k$H!"%a%K%e!<$O(B $B0J2<$N$h$&$K$J$j$^$9!#(B @smallexample @group --------------------------------- Minibuffer ---------------------------------- A:$B!@(B S:$B!A(B D:$B!B(B F:$B!C(B G:$B!D(B H:$B!E(B J:$B!F(B K:$B!G(B L:$B!H(B Q:$B!I(B W:$B!J(B E:$B!K(B R:$B!L(B T:$B!M(B Y:$B!N(B U:$B!O(B --------------------------------- Minibuffer ---------------------------------- @end group @end smallexample $BBh#1CJ3,$"$k$$$OBh#2CJ3,$N%a%K%e!<$,I=<($5$l$F$$$k$H$-$K(B @kbd{?} $B$rF~(B $BNO$9$k$H!"$=$N$H$-$N%-!<(B @kbd{A} $B$KBP1~$9$kJ8;z(B ($B>e5-$NNc$G$O!"(B@samp{$B!@(B}) $B$NJ8;z%3!<%I$,I=<($5$l$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-kcode-method @kbd{\} $B$NBG80$G5/F0$9$k(B @code{skk-input-by-code-or-menu} $B$N5sF0$rD4@a$7$^$9!#(B @table @code @item 'char-list @kbd{\} $B$NBG80$G!VJ8;z%3!<%I0lMw!W!J(Bskk-list-chars$B!K$r5/F0$7$^$9!#(B @item 'code-or-char-list @kbd{\} $B$NBG80$G!VJ8;z%3!<%I!W!J(Bskk-input-by-code$B!K$r5/F0$7$^$9!#(B JIS $B%3!<%I(B/$B6hE@%3!<%IF~NO%W%m%s%W%H$NI=<($KBP$7$FC1$K(B @key{RET} $B$r%?%$%W$7$?>l9g!"(B $B!VJ8;z%3!<%I0lMw!W!J(Bskk-list-chars$B!K$r5/F0$7$^$9!#(B @item 'this-key @kbd{\} $B$NBG80$G(B @samp{\} $B$rA^F~$7$^$9!#(B @item $B>e5-%7%s%\%k0J30(B @kbd{\} $B$NBG80$G!VJ8;z%3!<%I!W!J(Bskk-input-by-code$B!K$r5/F0$7$^$9!#(B JIS $B%3!<%I(B/$B6hE@%3!<%IF~NO%W%m%s%W%H$NI=<($KBP$7$FC1$K(B @key{RET} $B$r%?%$%W$7$?>l9g!"(B $B!V%a%K%e!$C$F%P%C%U%!(B @code{*skk-list-chars*} $B$KJ8;z$N(B JIS $B%3!<%I0l(B $BMw$,I=<($5$l$^$9!#(B $B%W%l%U%#%C%/%9IU$-$G!"$D$^$j(B @kbd{C-u M-x skk-list-chars} $B$HH=`$r$"$o$9$h$&%3!<%I0lMw$rI=<($7$^$9!#(B @example @group -------------------- *skk-list-chars* -------------------- variable skk-kcode-charset's value is `japanese-jisx0208'. 01-#x--- 0-- 1-- 2-- 3-- 4-- 5-- 6-- 7-- 8-- 9-- A-- B-- C-- D-- E-- F $B!!(B 2120 $B!!!!!!!!!"!!!#!!!$!!!%!!!&!!!'!!!(!!!)!!!*!!!+!!!,!!!-!!!.!!!/(B $B!!(B 2130 $B!0!!!1!!!2!!!3!!!4!!!5!!!6!!!7!!!8!!!9!!!:!!!;!!!!!!?(B $B!!(B 2140 $B!@!!!A!!!B!!!C!!!D!!!E!!!F!!!G!!!H!!!I!!!J!!!K!!!L!!!M!!!N!!!O(B $B!!(B 2150 $B!P!!!Q!!!R!!!S!!!T!!!U!!!V!!!W!!!X!!!Y!!!Z!!![!!!\!!!]!!!^!!!_(B $B!!(B 2160 $B!`!!!a!!!b!!!c!!!d!!!e!!!f!!!g!!!h!!!i!!!j!!!k!!!l!!!m!!!n!!!o(B $B!!(B 2170 $B!p!!!q!!!r!!!s!!!t!!!u!!!v!!!w!!!x!!!y!!!z!!!{!!!|!!!}!!!~(B -------------------- *skk-list-chars* -------------------- @end group @end example @table @kbd @item f @itemx C-f @itemx l $B%+!<%=%k0\F0(B @item b @itemx C-b @itemx h $B%+!<%=%k0\F0(B @item n @itemx C-n @itemx j $B%+!<%=%k0\F0(B @item p @itemx C-p @itemx k $B%+!<%=%k0\F0(B @item C-x C-x $B%+!<%=%k0\F0(B @item \ @itemx o $BJ8;z=89g$N@Z$jBX$((B @item c $BJ8;z%3!<%IF~NO(B @item i @itemx RET $BJ8=q%P%C%U%!$XJ8;z$rA^F~(B @item q skk-list-chars $B$rH4$1$k!#(B @item $ $B%+!<%=%k0LCV$NJ8;z$NJ8;z%3!<%I$rI=<((B @end table $B$[$+!"(BEmacs $B$N%3%^%s%I(B @kbd{M-x list-charset-chars} $B$bM-MQ$G$7$g$&!#(B @defvr {$B%f!<%6JQ?t(B} skk-list-chars-table-header-face $B%3!<%I0lMw$NOH@~$J$I$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-list-chars-face $B%W%l%U%#%C%/%9IU$-$GH=`$N%U%'%$%9$G$9!#(B @end defvr @node $BJ8;z%3!<%I$rCN$kJ}K!(B @subsection $BJ8;z%3!<%I$rCN$kJ}K!(B @kindex $ @cindex JIS$B%3!<%I(B @cindex EUC$B%3!<%I(B @kindex M-x skk-display-code-for-char-at-point $B$+$J(B/$B%+%J%b!<%I$G(B @kbd{$} $B$rF~NO$9$k(B @footnote{$B%j!<%I%*%s%j!<$J%P%C%U%!$G$O(B @kbd{M-x skk-display-code-for-char-at-point} $B$r8e$K$"$k(B $BJ8;z$NJ8;z%3!<%I$r%(%3!<%(%j%"(B@footnote{$BJQ?t(B @code{skk-show-tooltip} $B$,(B @code{non-nil} $B$G$"$l$P%D!<%k%F%#%C%W$GI=<($7$^$9!#(B $BJQ?t(B @code{skk-show-candidates-always-pop-to-buffer} $B$,(B @code{non-nil} $B$G(B $B$"$l$P(B other-window $B$KI=<($7$^$9!#(B@code{skk-show-tooltip} $B$,M%@h$7$^$9!#(B} $B$KI=<($7$^$9!#(B $BNc$($P!"%+!<%=%k$rJ8;z(B @samp{$B'!(B} $B$N>e$KCV$$$F(B @kbd{$} $B$rF~NO$9$k$H!"(B @example @group -------------------- Echo Area -------------------- `$B'!(B',KUTEN:07-01, JIS:#x2721, EUC:#xa7a1, SJIS:#x8440, UNICODE:U+0410, $B%-%j!<%kBgJ8;z(BA,CYRILLIC CAPITAL LETTER A -------------------- Echo Area -------------------- @end group @end example @noindent $B$H%(%3!<%(%j%"$KI=<($5$l!"$3$NJ8;z$,%-%j%kJ8;z$G$"$k$3$H$,$o$+$j$^$9!#(B @c $B%W%l%U%#%C%/%9IU$-$G(B @kbd{\}$B!J$D$^$j(B @kbd{C-u \}$B!K$H%?%$%W$9$k$H!"(B @c $B%]%$%s%HD>8e$NJ8;z$K$D$$$FJ8;z%3!<%I0lMw$,I=<($5$l$^$9!#(B @c @c @example @c @group @c -------------------- *skk-list-chars* -------------------- @c 07-#x--- 0-- 1-- 2-- 3-- 4-- 5-- 6-- 7-- 8-- 9-- A-- B-- C-- D-- E-- F @c $B!!(B 2720 $B!!!!'!!!'"!!'#!!'$!!'%!!'&!!''!!'(!!')!!'*!!'+!!',!!'-!!'.!!'/(B @c $B!!(B 2730 $B'0!!'1!!'2!!'3!!'4!!'5!!'6!!'7!!'8!!'9!!':!!';!!'!!'?(B @c -------------------- *skk-list-chars* -------------------- @c @end group @c @end example @c $B$[$+!"(B Emacs $B$N%3%^%s%I(B @kbd{M-x describe-char} $B$b(B@footnote{Emacs 21 $B$G$O(B @kbd{M-x describe-char-after} $B$G$9!#(B}$BM-MQ$G$7$g$&!#(B @defvr {$B%f!<%6JQ?t(B} skk-display-code-prompt-face $B%(%3!<%(%j%"$KI=<($5$l$k%a%C%;!<%8Cf(B @samp{KUTEN:}$B!"(B@samp{JIS:}@samp{EUC:}$B!"(B@samp{SJIS:} $B5Z$S(B @samp{UNICODE:} $B$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-display-code-char-face $B%(%3!<%(%j%"$KI=<($5$l$k%a%C%;!<%8Cf$NEv3:J8;z$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-display-code-tankan-radical-face $B%(%3!<%(%j%"$KI=<($5$l$k%a%C%;!<%8Cf$NAm2h?tI=<($KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-display-code-tankan-annotation-face $B%(%3!<%(%j%"$KI=<($5$l$k%a%C%;!<%8Cf$NJ8;zL>I=<($KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @node DDSKK $B0J30$N%D!<%k$rMQ$$$?<-=qJQ49(B @section DDSKK $B0J30$N%D!<%k$rMQ$$$?<-=qJQ49(B @menu * skk-lookup:: Lookup $B$rMQ$$$?<-=qJQ49(B * skk-look:: look $B%3%^%s%I$rMQ$$$?<-=qJQ49(B * Lisp $B%7%s%\%kL>$NJd408!:wJQ49(B:: @end menu @node skk-lookup @subsection skk-lookup @cindex @file{skk-lookup.el} @cindex Lookup @vindex skk-lookup-search-agents @findex skk-lookup-search @file{skk-lookup.el} $B$r;HMQ$9$k$H!"<-=q8!:w%D!<%k$N(B Lookup (@url{http://openlab.jp/edict/lookup/}) $B$G8!:w$G$-$k<-=q$rMQ$$$FC18l(B $B$N8uJd$r=P$9$3$H$,$G$-$k$h$&$K$J$j$^$9(B @footnote{@file{skk-lookup.el} $B$O(B @file{skk-look.el} $B$H$OJL$b$N$G$9!#(B}$B!#(B DDSKK $B$N%$%s%9%H!<%k2aDx$G(B @code{(require 'lookup)} $B$,@.8y$9$k>l9g$O(B @file{skk-lookup.el} $B$b<+F0E*$K%$%s%9%H!<%k$5$l$^$9!#(B $B$^$:$O(B @samp{make what-where} $B$rl9g$O!"(B@file{SKK-CFG} $B$rJT=8$7$F(B @file{lookup.el} $B$,CV$+$l$F$$$k%Q%9$r(B @code{ADDITIONAL_LISPDIR} $B$K@_Dj$7!":FEY(B DDSKK $B$r%$(B $B%s%9%H!<%k$7$F2<$5$$(B @footnote{$B4X?t(B @code{skk-lookup-search} $B$,(B @file{skk-autoloads.el} $B$K(B $BDI2C$5$l$^$9(B (@pxref{$B<-=q8!:w$N$?$a$N4X?t(B}).}$B!#(B @file{~/.skk} $B$K0J2<$N$h$&$K@_Dj$7$^$9!#(B @lisp @group (setq skk-search-prog-list (append skk-search-prog-list (list '(skk-lookup-search)))) @end group @end lisp @noindent @code{skk-lookup-search} $B$O!"(B DDSKK $B$,MQ0U$7$F$$$k8!:w%W%m%0%i%`$NCf$G:G(B $B$bCY$$$b$N$G$9!#$7$?$,$C$F!"(B@code{skk-search-prog-list} $B$N@_Dj$K$"$C$F$O(B $B<-=q%5!<%P$N8!:w(B (@code{skk-search-server}) $B$h$j$b8eJ}$KCV$/$h$&@_Dj$7$^$9!#(B Lookup $B$N(B agent $B$GMxMQ$9$k$N$O!"(B @code{lookup-search-agents} $B$+$i(B @code{ndkks}, @code{ndcookie} $B5Z$S(B @code{ndnmz} $B$rl9g!"$3$NJQ?t$N@_Dj$rJQ99$9$l$P(B $B2DG=$G$9(B}$B!#(B @node skk-look @subsection skk-look @cindex @file{skk-look.el} @file{skk-look.el} $B$O!"(B @command{look} $B%3%^%s%I$r;H$C$FA0$,;w$F$$(B $B$^$9$,A4$/$NJL$b$N$G$9(B}$B!#(B @menu * $B1QC18l$NJd40(B:: * $B1QC18l$r$"$$$^$$$KJQ49$7$Fo$NJd40$HF1MM$K(B @kbd{.} $B$Gl9g!"(B $B%f!<%6JQ?t(B @code{skk-search-excluding-word-pattern-function} $B$rE,@Z$K(B $B@_Dj$7$^$9!#(B $BNc$($P](B/ abstraction /$B%"%V%9%H%i%/%7%g%s(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$H$7$F2r@b$7$^$9(B @footnote{edict $B<-=q(B @file{SKK-JISYO.edict} $B$,$"$l$P!"Nc$($P!"(B @lisp @group (setq skk-search-prog-list (append skk-search-prog-list (list '(skk-search-jisyo-file "/your-path/SKK-JISYO.edict" 0 t)))) @end group @end lisp @noindent $B$N$h$&$K@_Dj$9$k$3$H$K$h$j!"(B edict $B<-=q$r;HMQ$G$-$^$9!#(B}$B!#(B $BJQ?t(B @code{skk-look-recursive-search} $B$NCM$r(B @code{non-nil} $B$K%;%C%H$7$F(B $B2<$5$$!#(B @example $B"&(Babstr* @key{SPC} $B"'(Babstract @key{SPC} $B"'%"%V%9%H%i%/%H(B @key{SPC} $B"'Cj>](B @key{SPC} $B"'(Babstraction @key{SPC} $B"'%"%V%9%H%i%/%7%g%s(B @end example @noindent $B$3$N$h$&$K1QC18l(B + $B$=$N1QC18l$r8+=P$78l$K$7$?8uJd$N!V%;%C%H!W$rJQ49(B $B7k2L$H$7$F=PNO$9$k$3$H$,$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-look-expanded-word-only $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!":F5"8!:w$K@.8y$7$?1QC18l$N!V%;%C(B $B%H!W$@$1$r=PNO$9$k$3$H$,$G$-$^$9!#:F5"8!:w$G8!=P$5$l$J$+$C$?1QC18l$OL5;k(B $B$7$F=PNO$7$^$;$s!#(B @end defvr @node Lisp $B%7%s%\%kL>$NJd408!:wJQ49(B @subsection Lisp $B%7%s%\%kL>$NJd408!:wJQ49(B SKK abbrev $B%b!<%I$K$F!"(BLisp $B%7%s%\%kL>$rJd40$7$F8!:w$7!"8!:w7k2L$r8uJd$H(B $B$7$FJV$9$3$H$,$G$-$^$9!#1QJ8;z$N8e$m$K(B @samp{~} $B$rIU2C$7$F$+$iJQ49$r3+;O(B $B$7$F$/$@$5$$!#(B $B$^$:$OF0:nNc$r<($7$^$9!#(B @example / d e f i ~ @group ----- Buffer: foo ----- $B"&(Bdefi~@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"&(Bdefimage@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"&(Bdefine-abbrev@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"&(Bdefine-abbrev-table@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: foo ----- $B"&(Bdefine-abbrevs@point{} ----- Buffer: foo ----- @end group @key{SPC} @group ----- Buffer: *$B8uJd(B* ----- A:define-auto-insert S:define-category D:define-ccl-codepoint-translation-table F:define-ccl-constant-translation-table J:define-ccl-identity-translation-table K:define-ccl-program L:define-ccl-slide-translation-table ----- Buffer: *$B8uJd(B* ----- @end group @end example $B$3$N5!G=$rM-8z$H$9$k$K$O!"%j%9%H(B @code{skk-search-prog-list} $B$NMWAG$K(B $B4X?t(B @code{skk-search-lisp-symbol} $B$r2C$($F$/$@$5$$!#(B @lisp @group (add-to-list 'skk-search-prog-list '(skk-search-lisp-symbol) t) @end group @end lisp $B$J$*!"8+=P$78l$K(B @samp{~} $B$r4^$`<-=q$b$"$j$^$9!#Nc$($P(B @file{SKK-JISYO.JIS3_4} $B$K$O(B @lisp A~ /$B%A%k%IIU$-(BA(LATIN CAPITAL LETTER A WITH TILDE)/ @end lisp $B$HEPO?(B@footnote{$B@\5-:\$9$k$N$OHr$1$^$7$?!#(B}$B$5$l$F$$$^$9!#(B $B$7$?$,$C$F!""&(BA~ @key{SPC} $B$HJQ49$7$?$H$-$K!V%A%k%IIU$-(BA$B!W$,I=<($5$l$k$+!"(BLisp $B%7%s%\%kL>$,Jd40$5$l$k$+$O!"%j%9%H(B @code{skk-search-prog-list} $BFb$NMWAG$N=g$K$h$j$^$9!#(B @defun skk-search-lisp-symbol &optional PREDICATE NOT-ABBREV-ONLY WITHOUT-CHAR-MAYBE $B%*%W%7%g%s(B @code{PREDICATE} $B$GJd408!:w$9$kHO0O!J4X?tL>!"JQ?tL>!"%3%^%s%IL>!K$r8BDj$9$k$3$H$,$G$-$^$9!#(B $B>\:Y$O(B docstring $B$r;2>H$7$F$/$@$5$$!#(B @end defun @defvr {$B%f!<%6JQ?t(B} skk-completion-search-char @code{skk-completion-search} $B$K$h$kJQ495!G=$r;X<($9$k%-!<%-%c%i%/%?!#(B $B%G%U%)%k%H$O(B @kbd{~} $B$G$9!#(B @end defvr @node $B>~$j$D$1(B @section $B>~$j$D$1(B @menu * $B2>L>J8;z$N%m!<%^;z%W%l%U%#%C%/%9$N%(%3!<(B:: * $BF~NO%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs$NJQ99(B:: * $BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B:: * $BJQ498uJd0lMw$NI=<(J}K!(B:: * $B"'%b!<%I$K$*$1$kJQ498uJd$N%O%$%i%$%HI=<((B:: * $BJQ498uJd$N99$J$kAu>~(B:: * $B%b!<%I%i%$%s$NAu>~(B:: @end menu @node $B2>L>J8;z$N%m!<%^;z%W%l%U%#%C%/%9$N%(%3!<(B @subsection $B2>L>J8;z$N%m!<%^;z%W%l%U%#%C%/%9$N%(%3!<(B @defvr {$B%f!<%6JQ?t(B} skk-echo $B$3$NJQ?t$NCM$O!"2>L>J8;z$N%m!<%^;z%W%l%U%#%C%/%9(B @footnote{@xref{$BAw$j$"$j%(%s%H%j$HAw$j$J$7%(%s%H%j(B, $B%m!<%^;z%W%l%U%#%C%/%9(B}.} $B$N%(%3!<$NM-L5$r@)8f$7$^$9!#(B @end defvr $BJQ?t(B @code{skk-echo} $B$NCM$,(B @code{non-nil} $B$G$"$l$P!"2>L>J8;z$N%m!<%^;z(B $B%W%l%U%#%C%/%9$,!"F~NO;~E@$G$$$C$?$s8=:_$N%P%C%U%!$KA^F~$5$l!"B3$/Jl2;$NF~(B $BNO$N:]$K!"$+$JJ8;z$KJQ49$5$l$?;~E@$G8=:_$N%P%C%U%!$+$i>C5n$5$l$^$9!#(B @example @group @kbd{t} ------ Buffer: foo ------ t@point{} ------ Buffer: foo ------ @end group @group @kbd{a} ------ Buffer: foo ------ $B$?(B@point{} ------ Buffer: foo ------ @end group @end example $BJQ?t(B @code{skk-echo} $B$NCM$,(B @code{nil} $B$G$"$l$P!"2>L>J8;z$N%m!<%^;z%W%l(B $B%U%#%C%/%9$N%(%3!<$O9T$o$l$^$;$s!#$3$l$r>e5-$NNc$G9M$($k$H!"(B@samp{t} $B$,8=(B $B:_$N%P%C%U%!$KA^F~$5$l$:!"B3$/Jl2;(B (@kbd{a}) $B$,F~NO$5$l$?$H$-(B @samp{$B$?(B} $B$NJ8;z$,A^F~$5$l$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-prefix-hiragana-face $B$+$J%b!<%I$K$*$1$k%m!<%^;z%W%l%U%#%C%/%9$N%U%'%$%9$r;XDj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-prefix-katakana-face $B%+%J%b!<%I$K$*$1$k%m!<%^;z%W%l%U%#%C%/%9$N%U%'%$%9$r;XDj$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-prefix-jisx0201-face JIS X 0201 $B%b!<%I$K$*$1$k%m!<%^;z%W%l%U%#%C%/%9$N%U%'%$%9$r;XDj$7$^$9!#(B @end defvr @node $BF~NO%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs$NJQ99(B @subsection $BF~NO%b!<%I$r<($9%b!<%I%i%$%s$NJ8;zNs$NJQ99(B $B2<5-$NJQ?t$NCM$rJQ99$9$k$3$H$K$h$C$F!"%b!<%I%i%$%s>e$N!VF~NO%b!<%I$r<($9J8;z(B $BNs!W$rJQ99$9$k$3$H$,$G$-$^$9(B@footnote{skk-show-mode $B$NI=<($bO"F0$7$^$9!#(B}$B!#(B @defvr {$B%f!<%6JQ?t(B} skk-latin-mode-string $B%"%9%-!<%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``SKK''$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-hiragana-mode-string $B$+$J%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``$B$+$J(B''$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-katakana-mode-string $B%+%J%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``$B%+%J(B''$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-jisx0208-latin-mode-string $BA41Q%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``$BA41Q(B''$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-abbrev-mode-string SKK abbrev $B%b!<%I$r<($9J8;zNs!#I8=`$O!"(B``a$B$"(B''$B!#(B @end defvr @node $BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B @subsection $BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B @defvr {$B%f!<%6JQ?t(B} skk-use-color-cursor $B$3$NJQ?t$,(B @code{non-nil} $B$J$i$P!"%+!<%=%k$r?'IU$1$7$^$9!#(B@code{nil} $B$J$i$P!"$3$N5!G=$rL58z$K$7$^$9!#(B $BI8=`$G$O!"%&%#%s%I%&%7%9%F%`$r;HMQ$7$F!"$+$D!"?'I=<($,2DG=$J>l9g$K8B(B $B$C$F!"$3$N5!G=$,M-8z$K$J$j$^$9!#(B @end defvr $B$3$N5!G=$,M-8z$K$J$C$F$$$k$H$-!"0J2<$NJQ?t$NCM$rJQ99$9$k$3$H$G!"3F%b!<%I(B $B$K$*$1$k%+!<%=%k$N?'$rJQ99$G$-$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-cursor-default-color SKK $B%b!<%I$,%*%U$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$G$O!"%+!<%=%k$N$"$k3:Ev(B $B%U%l!<%`$K$*$1$kI8=`$N%+!<%=%k?'$r;H$$$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-hiragana-color $B$+$J%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"GX7J$NL@0E$K$h$j(B coral4 $B$^$?(B $B$O(B pink $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-katakana-color $B%+%J%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"GX7J$NL@0E$K$h$j(B forestgreen $B$^$?(B $B$O(B green $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-jisx0201-color JIS X 0201 $B%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"GX7J$NL@0E$K$h$j(B blueviolet $B$^$?(B $B$O(B thistle $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-jisx0208-latin-color $BA41Q%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"(Bgold $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-latin-color $B%"%9%-!<%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"GX7J$NL@0E$K$h$j(B ivory4 $B$^$?(B $B$O(B gray $B$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-cursor-abbrev-color skk abbrev $B%b!<%I$G$"$k$3$H$r<($9%+!<%=%k?'!#I8=`$O!"(Broyalblue $B$G$9!#(B @end defvr @page @node $BJQ498uJd0lMw$NI=<(J}K!(B @subsection $BJQ498uJd0lMw$NI=<(J}K!(B $BJQ498uJd0lMw$NI=<(J}K!$O!"~$9$k%U%'%$%9$r;XDj$7$^$9!#%G%U%)%k%H(B $B$O(B @code{'underline} $B$G$9!#(B @lisp (setq skk-inline-show-face 'font-lock-doc-face) @end lisp @code{skk-treat-candidate-appearance-function} $B$K$h$kAu>~$rM%@h$9$k$K$O(B @code{nil} $B$K@_Dj$7$F2<$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-inline-show-background-color $B%$%s%i%$%sI=<($9$kJQ498uJd$NGX7J?'$r;XDj$7$^$9!#(B @code{skk-inline-show-face} $B$^$?$O(B @code{skk-treat-candidate-appearance-function} $B$K$F!"GX7J?'$,;XDj$5$l$F$$(B $B$J$$J8;z$KBP$7$F$N$_:nMQ$7$^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-inline-show-background-color-odd $B%$%s%i%$%sI=<($9$kJQ498uJd$NGX7J?'!J4q?t%i%$%s!K$r;XDj$7$^$9!#(B @end defvr @end cartouche @end defvr @page @defvr {$B%f!<%6JQ?t(B} skk-show-tooltip $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"8uJd0lMw$r%D!<%k%F%#%C%W$GI=<($7(B $B$^$9!#F1;~$K!"!VCml9g$O(B @code{nil} $B$K@_Dj$7$F2<$5$$!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tooltip-mouse-behavior $B%D!<%k%F%#%C%W$rI=<($9$k0LCV5Z$S%^%&%9%]%$%s%?$N5sF0$r;XDj$7$^$9!#(B $B2<5-$K7G$2$k%7%s%\%k0J30$N%7%s%\%k$r;XDj$7$?>l9g$O(B @code{nil} $B$H$J$j$^$9!#(B @table @code @item 'follow $B%^%&%9%]%$%s%?$r%+!<%=%k0LCV$X0\F0$5$;$F%D!<%k%F%#%C%W$rI=<($7$^$9!#(B $B%D!<%k%F%#%C%W$NI=<($r=*$($k$H%^%&%9%]%$%s%?$O85$N0LCV$XLa$j$^$9!#$?$@$7!"85$N%^%&%9%]%$%s%?$,(B Emacs $B%U%l!<%`30$G$"$C$?$J$i$P%D!<%k%F%#%C%W$NI=<($r=*$($F$b%^%&%9%]%$%s%?$O%+!<%=%k0LCV$N$^$^$G$9!#(B @item 'banish $B%^%&%9%]%$%s%?$r(B Emacs $B%U%l!<%`1&>e6y$X0\F0$5$;$F%D!<%k%F%#%C%W$rI=<($7$^$9!#(B $B%D!<%k%F%#%C%W$NI=<($r=*$($b$F%^%&%9%]%$%s%?$O(B Emacs $B%U%l!<%`1&>e6y$N$^$^$G$9!#(B @item 'avoid $B%^%&%9%]%$%s%?$r(B Emacs $B%U%l!<%`1&>e6y$X0\F0$5$;$F%D!<%k%F%#%C%W$rI=<($7$^$9!#(B $B%D!<%k%F%#%C%W$NI=<($r=*$($k$H%^%&%9%]%$%s%?$O85$N0LCV$XLa$j$^$9!#$?$@$7!"85$N%^%&%9%]%$%s%?$,(B Emacs $B%U%l!<%`30$G$"$C$?$J$i$P%D!<%k%F%#%C%W$NI=<($r=*$($F$b%^%&%9%]%$%s%?$O(B Emacs $B%U%l!<%`1&>e6y$N$^$^$G$9!#(B @item 'avoid-maybe $B%^%&%9%]%$%s%?$,(B Emacs $B%U%l!<%`Fb$G$"$l$P(B @code{'avoid} $B$HF1$8F0:n$G$9!#(B $B%^%&%9%]%$%s%?$,(B Emacs $B%U%l!<%`30$G$"$l$P%^%&%9%]%$%s%?0LCV$rJQ99$;$:!"$=$N0LCV$K%D!<%k%F%#%C%W$rI=<($7$^$9!#(B @item nil $B%^%&%9%]%$%s%?$r0l@Z0\F0$;$:!"$=$N0LCV$K%D!<%k%F%#%C%W$rI=<($7$^$9!#(B $B%D!<%k%F%#%C%W$N%F%-%9%H$H%^%&%9%]%$%s%?$,=E$J$C$?$j!"$&$^$/%D!<%k%F%#%C%W$,I=<($G$-$J$+$C$?$j$9$k>l9g$,$"$j$^$9!#(B @end table @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tooltip-hide-delay $B%D!<%k%F%#%C%W$rI=<($9$kIC?t!#%G%U%)%k%H$O(B 1,000$BIC!#$3$N;~4V$,7P2a$9$k$H!"(B $B%D!<%k%F%#%C%W$O<+F0E*$K>C$($k!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-tooltip-parameters $B%G%U%)%k%H$O(B @code{nil}$B!#(BSKK $BFH<+$N%U%l!<%`%Q%i%a!<%?$r@_Dj$9$k!#(B @code{nil} $B$N>l9g!"(B@code{tooltip-frame-parameters} $B$,E,MQ$5$l$k!#(B @end defvr @end cartouche @end defvr @page @defvr {$B%f!<%6JQ?t(B} skk-show-candidates-always-pop-to-buffer $B$3$NCM$,(B @code{non-nil} $B$G$"$l$P!"2hLL$r>e2<$KJ,3d$7$?$&$($G!"JQ490lMw$r@lMQ(B $B$N!V(B*$B8uJd(B*$B%P%C%U%!!W$GI=<($7$^$9!#(B $B8uJd0lMwI=<(Cf$K!"$3$NCM$rF0E*$K@Z$j49$($kl9g$O(B @code{nil} $B$r;XDj$9$k$3$H!J%G%U%)%k%H!K!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-candidate-buffer-background-color-odd *$B8uJd(B*$B%P%C%U%!$NGX7J?'!J4q?t%i%$%s!K$r;XDj$7$^$9!#(B @end defvr @end cartouche @end defvr @noindent $B%G%U%)%k%H$G$O#3$D$NJQ?t(B @itemize @bullet @item @code{skk-show-inline} @item @code{skk-show-tooltip} @item @code{skk-show-candidates-always-pop-to-buffer} @end itemize $B$H$b(B @code{nil} $B$G$"$j!"$3$N>uBV$G$O8uJd0lMw$O%(%3!<%(%j%"$KI=<((B @footnote{@code{frame-width} $B$,ITB-$9$k>l9g$O(B *$B8uJd(B*$B%P%C%U%!$KI=<($7$^$9!#(B} $B$7$^$9!#(B $B$b$7$b!"$3$l$iJQ?t$N$&$A#2$D0J>e$,(B @code{non-nil} $B$N>l9g!"M%@h=g0L$O>e5-(B $B$N2r@b$N=g$G$9!#(B @page @node $B"'%b!<%I$K$*$1$kJQ498uJd$N%O%$%i%$%HI=<((B @subsection $B"'%b!<%I$K$*$1$kJQ498uJd$N%O%$%i%$%HI=<((B @cindex @file{canna.el} @cindex @file{rgb.txt} @defvr {$B%f!<%6JQ?t(B} skk-use-face $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"(BEmacs $B$N%U%'%$%95!G=$r;H$C$FJQ49(B $B8uJd$r%O%$%i%$%HI=<($7$^$9!#(B @cindex Overlays @cindex Extents @cindex Text Properties $B$3$N%O%$%i%$%HI=<($K$O(B Emacs $B$N%*!<%P!<%l%$(B (overlay) $B$N5!G=$r;H$$$^$9(B @footnote{$B0JA0$N%P!<%8%g%s$G$O%F%-%9%HB0@-(B (text property) $B$r;HMQ$7$F$$(B $B$^$7$?!#(B $B%*!<%P!<%l%$B0@-$O%F%-%9%HB0@-$H0[$J$j!"%F%-%9%H$N0lIt$H$O8+$J$5$l$^$;$s!#(B $B$=$N$?$a!"%F%-%9%H$N%3%T!<$N:]$K%*!<%P!<%l%$B0@-$OJ]B8$5$l$^$;$s!#$=$NB>(B $B$K$b!"%*!<%P!<%l%$$N0\F0$d$=$NB0@-$NJQ99$O%P%C%U%!$NJQ99$H$O8+$J$5$l$J$$(B $B$3$H!"%*!<%P!<%l%$$NJQ99$O%P%C%U%!$N%"%s%I%%%j%9%H$K5-O?$5$l$J$$$3$H!"$J(B $B$I$,FCD'$H$7$F5s$2$i$l$^$9!#(B $B$J$*!"(BXEmacs $B$K$O%*!<%P!<%l%$5!G=$O$"$j$^$;$s!#Be$o$j$K(B extent $B$H$$$&$b(B $B$N$,MQ0U$5$l$F$$$k$N$G$=$l$rMxMQ$7$^$9!#(B}$B!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-henkan-face $B$3$NJQ?t$NCM$O%U%'%$%9$G$"$j!"$3$N%U%'%$%9$K$h$C$FJQ498uJd$,%O%$%i%$%HI=(B $B<($5$l$^$9!#I8=`$G$O!"GX7J$NL@0E$K$h$j(B ``black/darkseagreen2'' $BKt$O(B ``white/darkolivegreen'' $B$rMQ$$$^$9!#(B $B$J$*!"$3$NJQ?t$h$j$b(B @code{skk-treat-candidate-appearance-function} $B$N@_(B $BDj$,M%@h$5$l$^$9!#(B @end defvr $BJQ?t(B @code{skk-henkan-face} $B$K$O!"4{B8$N%U%'%$%9(B @footnote{Emacs $BI8=`(B $B$G$O(B @code{default}, @code{modeline}, @code{region}, @code{secondary-selection}, @code{highlight}, @code{underline}, @code{bold}, @code{italic}, @code{bold-italic} $B$,$"$j$^$9!#(B}$B$r;XDj$G$-$^(B $B$9$,!"?7$?$K%U%'%$%9$r:n$k$3$H$b$G$-$^$9!#$=$N$?$a$K!"0J2<$N4X?t$,MQ0U$5(B $B$l$F$$$^$9!#(B @defun skk-make-face FACE $B7A<0(B: (skk-make-face FACE) $B$3$N4X?t$O!"0z?t(B FACE $B$HF1$8L>A0$N%U%'%$%9$r:n@.$7$F!"$=$N%U%'%$%9$rJV$7(B $B$^$9!#%U%'%$%9$NA07J?'!&GX7J?'$O!"0z?t(B FACE $B$K%9%i%C%7%e$r4^$a$k$3$H$h$C(B $B$F!"Nc$($P0J2<$NNc$N$h$&$K7hDj$5$l$^$9!#(B @lisp (setq skk-henkan-face (skk-make-face 'DimGray/PeachPuff1)) @end lisp $B$3$N>l9g!"A07J?'$O(B DimGray $B$K!"GX7J?'$O(B PeachPuff1 $B$K$J$j$^$9!#(B $B$b$&$R$H$DNc$r5s$2$^$9!#(B @lisp (setq skk-henkan-face (skk-make-face 'RosyBrown1)) @end lisp $B$3$N>l9g!"A07J?'$O(B RosyBrown1 $B$K$J$j$^$9!#GX7J?'$,L5;XDj$N>l9g$O%P%C%U%!(B $B$NGX7J?'$,$=$N$^$^8+$($^$9!#(B @end defun @node $BJQ498uJd$N99$J$kAu>~(B @subsection $BJQ498uJd$N99$J$kAu>~(B $BJQ498uJd$K$D$$$F%f!<%6$NG$0U$N2C9)$r;\$9$?$a$NJQ?t$rMQ0U$7$F$"$j$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-treat-candidate-appearance-function $B$3$NJQ?t$KE,@Z$J7A<0$G4X?t$r<}$a$k$3$H$K$h$C$F!"JQ498uJd$r%f!<%6$NG$0U$K(B $B2C9)$9$k$3$H$,$G$-$^$9!#!VE,@Z$J7A<0!W$H$O!"o$NJQ49;~!"(B@code{non-nil} $B$N;~$O8uJd0lMwI=(B $B<(;~$rI=$9$b$N$H$7$F07$&$3$H!#(B @item $BJV$jCM$Ol9g!"$3$NJ8;zNs$O8uJd$HCmJ}4^$_$&$k$b$N$H$7$F=hM}$5$l$k!#(B @item ($B8uJd(B . $BCml9g!"8uJd$O$b$&Cme$G=hM}$5$l$k!#(B @item ($B8uJd(B . ($B%;%Q%l!<%?(B . $BCml9g!"8uJd$O$b$&Cmo(B $B$N(B @samp{;} $B$NBe$o$j$KMxMQ$5$l$k!#Cm~$r;n$7$F(B $B$/$@$5$$!#(B @lisp (setq skk-treat-candidate-appearance-function 'skk-treat-candidate-sample1) @end lisp @lisp (setq skk-treat-candidate-appearance-function 'skk-treat-candidate-sample2) @end lisp @end defvr @node $B%b!<%I%i%$%s$NAu>~(B @subsection $B%b!<%I%i%$%s$NAu>~(B XEmacs $B5Z$S(B Emacs 21 $B0J9_$G$O!"0J2<$N5!G=$,;HMQ$G$-$^$9!#(B @menu * $B%$%s%8%1!<%?(B:: * $B%"%$%3%s(B:: @end menu @node $B%$%s%8%1!<%?(B @subsubsection $B%$%s%8%1!<%?(B @defvr {$B%f!<%6JQ?t(B} skk-indicator-use-cursor-color DDSKK $B$N%$%s%8%1!<%?$r%b!<%I%i%$%s$N:8$KI=<((B @footnote{$B%G%U%)%k%H$G$O!":8$G$9!#(B@w{@xref{$B5/F0$H=*N;(B}.}} $B$7$F$$$k>l9g!"%$%s%8%1!<%?$N?'$,%+!<%=%k$N?'$HF14|$7$^$9!#(B $B%$%s%8%1!<%?$K?'$rIU$1$?$/$J$$>l9g$O!"$3$NJQ?t$r(B @code{nil} $B$K$7$^$9!#(B @end defvr @xref{$BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B}. $B%$%s%8%1!<%?$KFH<+?'$r;H$$$?$$>l9g$O!"0J2<$N%U%'%$%9(B@footnote{ $BJQ?t(B @code{window-system} $B$,(B @code{nil} $B$N>l9g$O!"$3$l$i%U%'%$%9$OL$Dj5A$H(B $B$J$j$^$9!#(B} $B$r@_Dj$7$^$9!#$3$N>l9g%+!<%=%k$N?'$O;2>H$5$l$^$;$s!#(B Emacs 21 $B0J>e(B @footnote{$BJQ?t(B @code{mule-version} $B$NCM$,(B 5.0 $B0J>e$N(B Emacs} $B$N>l9g(B @vindex skk-emacs-hiragana-face @vindex skk-emacs-katakana-face @vindex skk-emacs-jisx0208-latin-face @vindex skk-emacs-jisx0201-face @vindex skk-emacs-abbrev-face @itemize @bullet @item @code{skk-emacs-hiragana-face} @item @code{skk-emacs-katakana-face} @item @code{skk-emacs-jisx0208-latin-face} @item @code{skk-emacs-jisx0201-face} @item @code{skk-emacs-abbrev-face} @end itemize XEmacs $B$N>l9g(B @vindex skk-xemacs-hiragana-face @vindex skk-xemacs-katakana-face @vindex skk-xemacs-jisx0208-latin-face @vindex skk-xemacs-latin-face @vindex skk-xemacs-jisx0201-face @vindex skk-xemacs-abbrev-face @itemize @bullet @item @code{skk-xemacs-hiragana-face} @item @code{skk-xemacs-katakana-face} @item @code{skk-xemacs-jisx0208-latin-face} @item @code{skk-xemacs-latin-face} @item @code{skk-xemacs-jisx0201-face} @item @code{skk-xemacs-abbrev-face} @end itemize $B$J$*!"%$%s%8%1!<%?$r1&%/%j%C%/$9$k$H%]%C%W%"%C%W%a%K%e!<$,I=<($5$l$^$9!#(B @node $B%"%$%3%s(B @subsubsection $B%"%$%3%s(B @cindex @file{skk-icon} @defvr {$B%f!<%6JQ?t(B} skk-show-icon $BJQ?t(B @code{skk-show-icon} $B$NCM$r(B @code{non-nil} $B$H@_Dj$9$k$3$H$K$h$j!"%b!<(B $B%I%i%$%s$K(B SKK $B$N%"%$%3%s$,I=<($5$l$^$9!#(B $B%"%$%3%s$N2hA|%U%!%$%k(B @file{skk.xpm} $B$X$N%Q%9$O!"JQ?t(B @code{skk-icon} $B$G(B $BDj5A$5$l$F$$$^$9!#(B @end defvr @node $B%f!<%6%,%$%@%s%94XO"(B @section $B%f!<%6%,%$%@%s%94XO"(B @menu * $B%(%i!<$J$I$NF|K\8lI=<((B:: * $B>iD9$J0FFb%a%C%;!<%8$NI=<((B:: @end menu @node $B%(%i!<$J$I$NF|K\8lI=<((B @subsection $B%(%i!<$J$I$NF|K\8lI=<((B $BI8=`$G$O!"%(%i!2A$7$?$H(B $B$-$N%3!<%I%M!<%`$rF|K\8l$GI=<($7$^$9!#(B @end defvr @node $B>iD9$J0FFb%a%C%;!<%8$NI=<((B @subsection $B>iD9$J0FFb%a%C%;!<%8$NI=<((B @c http://mail.ring.gr.jp/skk/200704/msg00036.html @defvr {$B%f!<%6JQ?t(B} skk-verbose $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"F~NOCf!?JQ49Cf$K>iD9$J%a%C%;(B $B!<%8$rI=<($7$^$9!#(B @lisp (setq skk-verbose t) @end lisp @end defvr @table @asis @item $B"&%b!<%I(B $B%U%!%s%/%7%g%s%-!<(B (@key{F1} $B!A(B @key{F10}) $B$K3d$jEv$F$i$l$F$$$k5!G=$rI=<((B $B$7$^$9!#JQ?t(B @code{skk-verbose} $B$N@_Dj$HF1;~$KJQ?t(B @code{skk-j-mode-function-key-usage} $B$r0J2<$N$h$&$K@_Dj$7$F$_$F$/$@$5$$!#(B @vindex skk-j-mode-function-key-usage @lisp (setq skk-j-mode-function-key-usage 'conversion) @end lisp @noindent $B"&%b!<%I$K$*$$$F%-!3Q%+%J(B [F9]$BA43Q%m!<%^(B [F10]$B%m!<%^(B -------------------- Echo Area -------------------- @end group @end smallexample @noindent $B$3$N0FFb$K=>$C$F%U%!%s%/%7%g%s%-!<$r2!$9$3$H$G!"0l;~E*$KC14A;zJQ49$d%+%?(B $B%+%JJQ49$r9T$&$3$H$,$G$-$^$9!#(B @item $B"'%b!<%I(B Wikipedia $B%"%N%F!<%7%g%s5!G=$N;H$$J}$r%a%C%;!<%8$G0FFb$7$^$9!#(B $BJQ?t(B @code{skk-verbose} $B$N@_Dj$HF1;~$KJQ?t(B @code{skk-show-annotation} $B$r(B @code{non-nil} $B$K@_Dj$7$F$_$F$/$@$5$$!#(B @vindex skk-show-annotation @lisp (setq skk-show-annotation t) @end lisp @noindent $B"'%b!<%I$K$*$$$F%-!H(B?@}}[C-1 C-i]ja.wikipedia [C-2 C-i]en.wiktionary [C-3 C-i]simple.wikipedia [C-4 C-i]en.wikipedia [C-5 C-i]ja.wiktionary -------------------- Echo Area -------------------- @end group @end smallexample @noindent $B$3$N0FFb$K=>$C$F!"Nc$($P(B @kbd{C-1 C-i} $B$r%?%$%W$9$k$HF|K\8l(B Wikipedia $B$N3:Ev5-(B $B;v$rD4$Y$F!"$"$l$P$=$N0lIt$r%"%N%F!<%7%g%s$H$7$FI=<($7$^$9!#(B $B0lJ}!"8=:_$NJQ498uJd$KBP$9$k%"%N%F!<%7%g%s$,4{$KI=<($5$l$F$$$k$H$-$O!"(B $B0J2<$N%a%C%;!<%8$,>e5-$N$b$N$H8r8_$KI=<($5$l$^$9!#(B @smallexample @group -------------------- Echo Area -------------------- @b{@{$B%"%N%F!<%7%g%s(B@}}[C-w]$B%3%T!<(B [C-o]URL$B%V%i%&%:(B [C-i]$B%G%U%)%k%H$N%=!<%9$r;2>H(B -------------------- Echo Area -------------------- @end group @end smallexample @noindent $B$3$N0FFb$K=>$C$F(B @kbd{C-w} $B$r%?%$%W$9$l$P%"%N%F!<%7%g%s$NA4J8$r(B kill ring $B$K(B $BJ]B8$7$FMxMQ$9$k$3$H$,$G$-$^$9!#$^$?(B @kbd{C-o} $B$r2!$7$?>l9g$K$O!"$b$78=(B $B:_$N%"%N%F!<%7%g%s$,(B Wikipedia $B%"%N%F!<%7%g%s$G$"$l$P$=$N=PE5$H$J$k(B Wikipedia/Wiktionary $B$N%Z!<%8$r%&%'%V%V%i%&%6$GI=<($7$^$9!#(B @end table @defvr {$B%f!<%6JQ?t(B} skk-verbose-wait $B>iD9$J%a%C%;!<%8$rI=<($9$k$^$G$NBT$A;~4V(B ($BIC(B)$B!#I8=`$O(B 1.5 $BIC$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-verbose-message-interval $B>iD9$J%a%C%;!<%8$,J#?t$"$k>l9g$N#1%a%C%;!<%8$"$?$jI=<(;~4V$rIC$G;XDj$9$k!#(B $BI8=`$O(B 5.0 $BIC$G$9!#(B $B$3$N;~4V$,7P2a$7$?$iI=<($riD9$J%a%C%;!<%8$K@Z$jBX$($^$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-verbose-intention-face $B!V$I$l$r;2>H(B?$B!W$H!V%"%N%F!<%7%g%s!W$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @defvr {$B%f!<%6JQ?t(B} skk-verbose-kbd-face @samp{[F5]} $B$d(B @samp{[C-1 C-i]} $B$KE,MQ$9$k%U%'%$%9$G$9!#(B @end defvr @node I-search$B4XO"(B @section I-search$B4XO"(B @cindex I-search @cindex Incremental search @cindex @file{~/.skk} @menu * $B5/F0;~$NF~NO%b!<%I$N;XDj(B:: * $B4V$K6uGrEy$r4^$`J8;zNs$N8!:w(B:: @end menu @node $B5/F0;~$NF~NO%b!<%I$N;XDj(B @subsection $B5/F0;~$NF~NO%b!<%I$N;XDj(B @defvr {$B%f!<%6JQ?t(B} skk-isearch-start-mode $B%$%s%/%j%a%s%?%k!&%5!<%A$r5/F0$7$?$H$-$NF~NO%b!<%I$r$3$NJQ?t$G;XDj$G$-$^$9!#(B $B0J2<$N$$$:$l$+$N%7%s%\%k$r;XDj$G$-$^$9$,!"JQ?t(B @code{skk-isearch-use-previous-mode} $B$N(B $B@_Dj$,M%@h$5$l$^$9!#(B @table @code @item nil $B%+%l%s%H%P%C%U%!$G(B SKK $B%b!<%I$,5/F0$5$l$F$$$l$P!"$=$N%b!<%I$r!#(B $B5/F0$5$l$F$$$J$1$l$P%"%9%-!<%b!<%I!#(B @item hiragana $B$+$J%b!<%I(B @item jisx0208-latin $BA41Q%b!<%I(B @item latin $B%"%9%-!<%b!<%I(B @end table @end defvr @defvr {$B%f!<%6JQ?t(B} skk-isearch-use-previous-mode $B$3$NJQ?t$NCM$,(B @code{non-nil} $B$G$"$l$P!"l9g$K!"(B $B%P%C%U%!$,0J2<$N$h$&$J>uBV$K$J$C$F$$$k$3$H$,$"$j$^$9!#(B @example @group -------- Buffer: foo -------- $B$3$N9TKv$+$i;O$^$kJ8;zNs$r8!(B $B:w$7$F2<$5$$!#(B -------- Buffer: foo -------- @end group @end example $B$3$N$h$&$J>l9g$N$?$a$K!"(BEmacs $B$O@55,I=8=$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A$r(B $BDs6!$7$F$$$^$9!#(BDDSKK $B$O$3$N@55,I=8=$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A$K$bBP(B $B1~$7$F$$$k$?$a!"6uGr$d2~9T$r4^$s$@8!:w$b2DG=$G$9!#(B @table @kbd @item M-x isearch-forward-regexp @findex isearch-forward-regexp @kindex M-x isearch-forward-regexp @kindex C-u C-s @kindex M-C-s $BA0J}$X$N@55,I=8=$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A!#(B @kbd{C-u C-s} $B$^$?$O(B @kbd{M-C-s} $B$G5/F0$7$^$9!#(B @item M-x isearch-backward-regexp @findex isearch-backward-regexp @kindex M-x isearch-backward-regexp @kindex C-u C-r @kindex M-C-r $B8eJ}$X$N@55,I=8=$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A!#(B @kbd{C-u C-r} $B$^$?$O(B @kbd{M-C-r} $B$G5/F0$7$^$9!#(B @end table @c $B0J2<$O6uGr$d2~9T$N=hM}$r@)8f$9$kJQ?t$G$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-isearch-whitespace-regexp $B$3$NJQ?t$NCM$O@55,I=8=$G$9!#$3$N@55,I=8=$K%^%C%A$9$kMWAG$O!V@55,I=8=$K$h(B $B$k%$%s%/%j%a%s%?%k!&%5!<%A$K$*$$$F$O!"C18l$r6h@Z$kMWAG$G$O$J$$!W$HH=CG$5(B $B$l$^$9!#$3$NJQ?t$N%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9!#(B @example "\\(\\s \\|[ \t\n\r\f]\\)*" @end example $B$3$NJQ?t$NCM$rJQ99$9$k$3$H$G!"@55,I=8=(B $B$K$h$k%$%s%/%j%a%s%?%k!&%5!<%A$r3HD%$9$k$3$H$,$G$-$^$9!#Nc$($P!"EE;R%a!<(B $B%k$N0zMQItJ,$r8!:w$9$k>l9g$r9M$($^$9!#(B @example > $B0zMQItJ,$b8!(B > $B:w$G$-$k!#(B @end example $B>e5-$N$&$A!"!V8!:w!W$H$$$&8l$O(B 2 $B9T$KEO$C$F$$$k>e!"0zMQ%^!<%/$,A^F~$5(B $B$l$F$$$^$9!#$3$3$G(B @lisp (setq skk-isearch-whitespace-regexp "\\(\\s \\|[ \t\n\r\f<>|]\\)*") @end lisp $B$H@_Dj$9$k$3$H$K$h$j!"!V8!:w!W$r8!:w$G$-$k$h$&$K$J$j$^$9!#(B @end defvr @node VIP/VIPER$B$H$NJ;MQ(B @section VIP/VIPER$B$H$NJ;MQ(B @cindex VIP @cindex VIPER @cindex @file{vip.el} @cindex @file{viper.el} @defvr {$B%f!<%6JQ?t(B} skk-use-viper @c XXX VIP 3.7 $B$K$D$$$F8@5Z$9$k!#(B $B$3$NJQ?t$NCM$r(B @code{non-nil} $B$K@_Dj$9$k$H!"(BVIPER $B$KBP1~$7$^$9!#(B @end defvr VIPER $B$K$D$$$F$O(B @ref{Top, , VIPER, viper, VIPER Manual}. $B$r;2>H$7$F$/$@$5$$!#(B $B$^$?!"(BVIPER $B$NA0?H$G$"$k(B VIP $B$K$bBP1~$7$^$9!#$?$@$7!"@5<0$KBP1~$7$F$$$k(B $B%P!<%8%g%s$O(B 3.5 $B$N$_$G$9!#$3$l$O(B Mule 2.3 $B$KI8=`E:IU$7$^$9(B @footnote{$B$A$J$_$K!"(BVIP 3.5 $B$N:nM@65l9g$O!"0J2<$N$h$&$JLd(B $BBjE@$,$"$j$^$9!#$?$@$7!"$3$l$i$O(B @code{picture-mode} $B$NLdBj$J$N$G!"8=:_(B $B$N$H$3$m(B DDSKK $BB&$G$OBP=h$7$F$$$^$;$s!#(B @enumerate @item SKK $B%b!<%I$GA43QJ8;z$rF~NO$7$?>l9g$K!"(B@key{BS} $B$GA43QJ8;z$r>C$9$3$H$,$G$-(B $B$^$;$s!#8=>u$G$O!"8eJ}$K$"$kJ8;z$r>C$7$?$$>l9g$O!"$=$NJ8;z$K%]%$%s%H$r9g(B $B$o$;!"(B@kbd{C-c C-d} $B$G0lJ8;z$:$D>C$9I,MW$,$"$j$^$9!#(B @item $B%3%^%s%I(B @code{picture-movement-up} $B$d(B @code{picture-movement-down} $B$K$h(B $B$j>e2<$KA43QJ8;z$rA^F~$7$?>l9g$K!"7e$,$:$l$k>l9g$,$"$j$^$9!#(B @end enumerate $B4X?t(B @code{move-to-column-force} $B$NCf$G;HMQ$5$l$F$$$k4X?t(B @code{move-to-column} $B$N0z?t$H$7$F!"A43QJ8;z$rL5;k$7$?7e?t$,M?$($i$l$k$3(B $B$H$,$"$j!"$=$N$H$-%+!<%=%k0\F0$,$G$-$J$$$?$a!"$3$l$i$NLdBj$,@8$8$^$9!#(B @node $B%m!<%^;zF~NO0J30$NF~NOJ}<0(B @chapter $B%m!<%^;zF~NO0J30$NF~NOJ}<0(B DDSKK $B$O!"(BSKK $B5lMh$N%m!<%^;z<0$+$JF~NO(B ($B71Na<0!"%X%\%s<0(B) $BJ}<0$N$[$+!"3F(B $Be$G$N3HD%$G$"$k$3$H$,FCD'$G$9!#(B @uref{http://hp.vector.co.jp/authors/VA002116/azik/azikindx.htm, $B3HD%%m!<%^;zF~NO!X#A#Z#I#K!Y!&!X#A#C#T!Y$G2wE,$JF|K\8lF~NO$r!*(B} azik $B$H(B skk $B$G;EMM$,=E$J$kItJ,$,$"$k$?$a!"(B@file{skk-azik.el} $B$G$O0J2<$N$H(B $B$*$jBP1~$7$F$$$^$9!#(B @table @b @item @kbd{q} AZIK $B$G$OY{2;!V$s!W$rF~NO$9$k$K$O(B @kbd{q} $B$r;H$&$3$H$H$5$l$F$$$^$9$,!"(Bskk $B$G(B $B$O4{$K(B @kbd{q} $B$K(B @code{skk-toggle-kana} $B$r3d$jEv$F$F$$$^$9!#(B $B$=$N$?$a(B @file{skk-azik.el} $B$G$O(B @code{skk-toggle-kana} $B$N$l;HMQ$7$^$9!#(B @item @kbd{@@} $B>e5-$N$H$*$j!"(B@code{skk-toggle-kana} $B$N$l(B @kbd{x@@} $B$H!"(B @kbd{x[} $B$GBeMQ$G$-$k$h$&$K$7$F$"$j$^$9!#(B @item @kbd{l} @itemx @kbd{xx} AZIK $B$G$OC1FH$NY92;!V$c$e$g$!$#$%$'$)$n!W$rF~NO$9$k$K$O(B @kbd{l} $B$rA0CV$9(B $B$k$3$H$H$5$l$F$$$^$9$,!"(Bskk $B$G$O4{$K(B @kbd{l} $B$K!V%"%9%-!<%b!<%I$X$N@Z$j(B $BBX$(!W$r3d$jEv$F$F$$$^$9!#(B $B$=$N$?$a(B @file{skk-azik.el} $B$G$O!"Y92;$N$&$A!V$!$#$%$'$)!W$NF~NO$K$D$$$F(B $B$O(B @kbd{xx} $B$rA0CV$9$k$3$H$H$7$F$$$^$9!#(B @itemize @bullet @item @kbd{xxa} @expansion{} $B$!(B @item @kbd{xxi} @expansion{} $B$#(B @item @kbd{xxu} @expansion{} $B$%(B @item @kbd{xxe} @expansion{} $B$'(B @item @kbd{xxo} @expansion{} $B$)(B @end itemize $B$J$*!"Y92;$N$&$A!V$c$e$g$n!W$NC1FHF~NO$O!"(BAZIK $B3HD%(B @file{skk-azik.el} $B$G(B $B$O$J$/!"I8=`(B @file{skk-vars.el} $B$G$9!#(B @itemize @bullet @item @kbd{xya} @expansion{} $B$c(B @item @kbd{xyu} @expansion{} $B$e(B @item @kbd{xyo} @expansion{} $B$g(B @item @kbd{xwa} @expansion{} $B$n(B @end itemize @item @kbd{X} @itemx $B8m$C$?EPO?$N:o=|(B skk $B$G$O!""'%b!<%I$G$N(B @kbd{X} $B$O(B $B4X?t(B @code{skk-purge-from-jisyo} $B$r@\F~NOJ}<0$N0l$D$G$9!#(B @url{http://plone.crew.sfc.keio.ac.jp/groups/tut-code} $B;HMQ$9$k$K$O!"(BSKK $B$N%$%s%9%H!<%k;~$K$$$/$D$+$N%U%!%$%k$r%$%s%9%H!<%k$9$k(B $BI,MW$,$"$j$^$9!#(BSKK $B%=!<%9$N(B @file{tut-code} $B%G%#%l%/%H%j$K$"$k(B @file{skk-tutcdef.el} $B$H(B @file{skk-tutcode.el} $B$r!"(BSKK $B%=!<%9$N%H%C%W%G%#%l%/%H%j$K%3%T!<$7$F!"(BSKK $B$N%$%s%9%H!<%k$r:FEY9T$$$^$9!#(B @xref{DDSKK $B$N%$%s%9%H!<%k(B}. $B$=$N8e!"(B@file{~/.skk} $B$K(B @lisp (require 'skk-tutcdef) @end lisp @noindent $B$H=q$-$^$9!#(B @node $B$+$JF~NO$H?F;X%7%U%H(B @section $B$+$JF~NO$H?F;X%7%U%H(B @cindex $B$+$JF~NO(B @cindex $B?F;X%7%U%H(B @cindex NICOLA DDSKK $B$O%m!<%^;z<0$G$O$J$$!"$$$o$f$k$+$JF~NOJ}<0$r%5%]!<%H$7$^$9!#6qBNE*(B $B$K$O(B @itemize @bullet @item $B5l(B JIS $BG[Ns$G$N$+$JF~NO(B @item $B?F;X%7%U%HJ}<0$G$N$+$JF~NO(B @end itemize @noindent $B$KBP1~$7$F$$$^$9!#$3$l$r;H$&$K$O$^$:!"(Bnicola-ddskk $B3HD%%Q%C%1!<%8$r%$%s(B $B%9%H!<%k$9$kI,MW$,$"$j$^$9!#(BSKK $B%=!<%9%G%#%l%/%H%j$N(B @file{nicola} $B%G%#(B $B%l%/%H%j$K0\F0$7!"%I%-%e%a%s%H$K=>$C$F%$%s%9%H!<%k$7$F$/$@$5$$!#(B @url{http://openlab.jp/skk/skk/main/nicola/README.ja} $BB3$$$F@_Dj$r$7$^$9!#(B @defvr {$B%f!<%6JQ?t(B} skk-use-kana-keyboard $B$3$NJQ?t$r(B @code{non-nil} $B$K@_Dj$9$k$H!"$+$JF~NO%5%]!<%H$,(B SKK $B5/F0;~$KM-8z$K(B $B$J$j$^$9!#(B @lisp (setq skk-use-kana-keyboard t) @end lisp @end defvr @defvr {$B%f!<%6JQ?t(B} skk-kanagaki-keyboard-type $B$3$NJQ?t$G!"$+$JF~NO%5%]!<%H$NR2p$7$^$9!#(B @menu * $B8r$<=q$-JQ49(B:: * Google CGI API for Japanese Input $B$rMxMQ$7$?$+$J4A;zJQ49(B:: @end menu @node $B8r$<=q$-JQ49(B @section $B8r$<=q$-JQ49(B @file{skk-mazegaki.el} $B$r%$%s%9%H!<%k$9$k$H!"8r$<=q$-JQ49$,2DG=$H$J$j$^$9!#(B @itemize @bullet @item $B$-H$7$F$/$@$5$$!#(B @url{http://www.google.co.jp/ime/cgiapi.html} @node SKK$B$K4X$9$k>pJs(B @chapter SKK$B$K4X$9$k>pJs(B @menu * $B:G?7>pJs(B:: * SKK$B%a!<%j%s%0%j%9%H(B:: * SKK$B4XO"%=%U%H%&%'%"(B:: * SKK$B<-=q$K$D$$$F(B:: * $B<-=q%D!<%k(B:: * SKK$B$N:npJs(B @section $B:G?7>pJs(B DDSKK $B$K$D$$$F$N:G?7>pJs$O!"(B @display @url{http://openlab.jp/skk/} @end display @noindent $B$+$iF@$k$3$H$,$G$-$^$9!#(B SKK $B$N3+H/$O!"(B CVS $B$K$h$C$F$J$5$l$F$$$^$9!#(BCVS $B$r;H$C$F:G?7$N(B SKK $B$rl9g!"(BCVS account $B$rl9g$O!"0J2<$r;2>H$7$F$/(B $B$@$5$$!#(B @display @url{http://openlab.jp/skk/cvs-ja.html} @end display $B:G?7HG(B DDSKK $B$NJQ99FbMF$H99$K2a5n$NJQ99E@$K$D$$$F$O0J2<$N%j%=!<%9$r;2>H(B $B$7$F$/$@$5$$!#(B @display @url{http://openlab.jp/skk/skk/main/READMEs/NEWS.ja} @end display $B$^$?!">-Mh$N%P!<%8%g%s$K$*$1$k3HD%%"%$%G%#%"$K$D$$$F$O!"(BTODO $B$H$7$F$^$H(B $B$a$i$l$F$$$^$9!#(B @display @url{http://openlab.jp/skk/skk/main/READMEs/TODO.ja} @end display SKK Openlab $B$G$O!"3+H/O$N@0Hw$K$46(NO$$$?$@$1$kJ}!"%F%9%?!o$KJg=8$7$F$$$^$9!#$^$?MWK>!"3HD%$N6qBNE*%"%$%G%#(B $B%"$,$"$l$P!"%a!<%j%s%0%j%9%H$KO"Mm$$$?$@$1$k$3$H$r4|BT$7$^$9!#(B @display @xref{SKK$B%a!<%j%s%0%j%9%H(B}. @end display @node SKK$B%a!<%j%s%0%j%9%H(B @section SKK$B%a!<%j%s%0%j%9%H(B SKK Openlab $B%a!<%j%s%0%j%9%H$O!"E}0l$5$l$?0l$D$N(B ML $B$G$9!#MxMQ!"(BSKK $B<-=q!"(BDDSKK $B$N3+H/5DO@$,Cf?4$G$9$,!"<-=q(B $B%5!<%P$d%U%m%s%H%(%s%I!"(B SKK $B<-=q%D!<%k$NOCBj$J$I$b5DO@$NHO0O$KF~$j$^$9!#(B @table @asis @item $B%a!<%j%s%0%j%9%H$K;22C$9$k(B $B%"%I%l%9(B @email{skk-subscribe@@ring.gr.jp} $B08$F$K6u$N%a!<%k$rAw$C$F2<$5$$!#(B $B3NG'$N0Y$N%a%C%;!<%8$,;XDj$5$l$?%"%I%l%908$KAw?.$5$l$^$9!#$=$N3NG'$N0Y$N(B $B%a%C%;!<%8$KBP$7$FJV?.$9$k$3$H$G2CF~H$7$F$/$@$5$$!#(B @uref{http://openlab.jp/skk/wiki/wiki.cgi?page=%A5%EA%A5%F3%A5%AF%BD%B8, SKK $B<-=q(B Wiki $B$K$*$1$k%j%s%/=8(B} @node SKK$B<-=q$K$D$$$F(B @section SKK$B<-=q$K$D$$$F(B SKK $B<-=q$OB?$/$N%f!<%6$NJ}!9$+$iDs6!$5$l$?<-=q$K$h$j%3%T!<%U%j!<$N<-=q$H(B $B$7$F$O:GBg5,LO$N<-=q$K$J$C$F$$$^$9!#:#8e$b$3$NJ}<0$K$h$j(B SKK $B<-=q$r$h$j(B $B=<%U%)!<%`$r1?MQ$7$F$$$^$9!#(B SKK $B<-=q$KDI2C$7$?$$C18l!"8mEPO?$H$7$F:o=|$7$?$$C18l$,$"$j$^$7$?$i!"(B $B@'Hs$4MxMQ2<$5$$!#(B @node $B<-=q%D!<%k(B @section $B<-=q%D!<%k(B SKK $B<-=q$K4X$9$k%D!<%k$K$O!"(BPerl, C, Ruby $B$N3F8@8l$K$h$j=q$+$l$?%D!<%k$,$"$j$^$9$,!"(BPerl $B$K$h$k%D!<%k$O8=:_==J,%a%s%F%J%s%9$5$l$F$$$^$;$s!#(B $B8=:_$O(B C, Ruby $B$N%D!<%k$,3+H/!&%a%s%F%J%s%9$5$l$F$$$^$9!#(B @uref{http://openlab.jp/skk/wiki/wiki.cgi?page=%BC%AD%BD%F1%A5%E1%A5%F3%A5%C6%A5%CA%A5%F3%A5%B9%A5%C4%A1%BC%A5%EB, $B<-=q%a%s%F%J%s%9%D!<%k(B} @node SKK$B$N:nM@65$G$9!#$3$3$KF~$C$F$$$J$$9W8%l9g!"(Bemail address $B$,JQ99$K$J$j(B credit $B$r$3$l$K9g$o$;$?$$>l9g$K$O!"DI2C!"=$@5$$$?$7(B $B$^$9$N$G!"$41sN8$J$/(B @email{skk-owner@@ring.gr.jp, SKK Openlab $B$N4IM}?M(B} $B$^(B $B$G$40lJs$/$@$5$$!#(B @itemize @minus @item @email{hisashi@@rst.fujixerox.co.jp, $BCfDE;3(B $B91(B} @item @email{kose@@emailizard.tamra.co.jp, $B>.4X(B $B5HB'(B} @item @email{takao@@hirata.nuee.nagoya-u.ac.jp, $B>.Ln(B $B9'CK(B} @item @email{mat@@nuis.ac.jp, $B>>0f9'M:(B/MATUI Takao} @item @email{shindo@@super.ees.saitama-u.ac.jp, $B?JF#M5;V(B} @item @email{jshen@@cas.org, $BD@;VM&(B} @item @email{ma-tsuge@@kdd.co.jp, $BDS?"(B $B@5Bg(B} @item @email{amotoki@@dd.iij4u.or.jp, Akihiro Motoki} @item @email{unbound@@papaya.juice.or.jp, Chikanobu Toyofuku} @item @email{ueno@@unixuser.org, Daiki Ueno} @item @email{eguchi@@kyoto-wu.ac.jp, EGUCHI Satoshi} @item @email{obata@@suzuki.kuee.kyoto-u.ac.jp, Eiji Obata} @item @email{fukano-m@@alp.cs.uec.ac.jp, FUKANO Masaaki} @item @email{SFUKAYA@@oracle.co.jp, Fukaya Shigeru} @item @email{machida@@users.sourceforge.jp, Fumihiko MACHIDA} @item @email{furue@@kke.co.jp, FURUE Hideyuki} @item @email{gunji@@sils.shoin.ac.jp, GUNJI Takao} @item @email{grothendieck@@max.hi-ho.ne.jp, G. Yoshida} @item @email{mizu@@cs3.cs.oki.co.jp, Haru Mizuno} @item @email{hal@@sics.se, Haru'yasu Ueda} @item @email{sakurada@@kuis.kyoto-u.ac.jp, Hideki Sakurada} @item @email{lapis-lazuli@@pop06.odn.ne.jp, Hiroya Murata} @item @email{noir@@st.rim.or.jp, Hiroyuki KUROSAKI } @item @email{kuroda@@msi.co.jp, Hisao Kuroda} @item @email{iida@@ring.gr.jp, IIDA Yosiaki} @item @email{irie@@t.email.ne.jp, IRIE Tetsuya} @item @email{ml@@be.to, ISHIKAWA Naoya} @item @email{nakamura@@pluto.ai.kyutech.ac.jp, Jun-ichi Nakamura} @item @email{tomioka@@culle.l.chiba-u.ac.jp, Katuya Tomioka} @item @email{hirokawa@@rics.co.jp, Kazuo Hirokawa} @item @email{kazushi@@kubota.co.jp, Kazushi Marukawa} @item @email{kxn30@@po.cwru.edu, Keisuke Nishida} @item @email{okada@@opaopa.org, Kenichi OKADA} @item @email{kenji@@reseau.toyonaka.osaka.jp, Kenji Rikitake} @item @email{kenji@@cs.titech.ac.jp, Kenji Yamashita} @item @email{fukuchi@@users.sourceforge.net, Kentaro Fukuchi} @item @email{deton@@m1.interq.or.jp, KIHARA Hideto} @item @email{kimura@@oa1.kb.nec.co.jp, Kimura Chikahiro} @item @email{fuyuki@@hadaly.org, Kimura Fuyuki} @item @email{tsuyoshi.kitamoto@@gmail.com, Kitamoto Tsuyoshi} @item @email{kmori@@onsei2.rilp.m.u-tokyo.ac.jp, Koichi MORI} @item @email{hide@@koie.org, KOIE Hidetaka ($B8q9>1QN4(B)} @item @email{uchida@@cfd.tytlabs.co.jp, Koji Uchida} @item @email{kenichi_kurihara@@nifty.com, KURIHARA Kenichi} @item @email{matusita@@ics.es.osaka-u.ac.jp, Makoto MATSUSHITA} @item @email{kaw@@lp.nm.fujitsu.co.jp, Manabu Kawashima} @item @email{martin@@xemacs.org, Martin Buchholz} @item @email{suzmasa@@sm.sony.co.jp, Masahiko Suzuki} @item @email{xdote@@rp.open.cs.fujitsu.co.jp, Masahiro Doteguchi} @item @email{masaka-t@@ascii.co.jp, Masakazu Takahashi} @item @email{masata-y@@is.aist-nara.ac.jp, Masatake YAMATO} @item @email{minakaji@@osaka.email.ne.jp, NAKAJIMA Mikio} @item @email{minoura@@uni.zool.s.u-tokyo.ac.jp, MINOURA Itsushi} @item @email{clefs@@mail.goo.ne.jp, MITA Yuusuke} @item @email{minkov@@fuzzy.or.jp, MIYOSHI Tsutomu} @item @email{mouri@@jaist.ac.jp, Motohiko Mouri} @item @email{mrt@@notwork.org, Murata Shuuichirou} @item @email{nao@@mimo.jaist-east.ac.jp, Naoki HAMADA} @item @email{naoki-w@@ht-net21.ne.jp, Naoki Wakamatsu} @item @email{tnemoto@@mvi.biglobe.ne.jp, NEMOTO Takashi} @item @email{knishida@@nn.iij4u.or.jp, NISHIDA Keisuke} @item @email{nmaeda@@dd.iij4u.or.jp, Norio Maeda } @item @email{onoto@@ma.nma.ne.jp, ONODA Arata } @item @email{furukawa@@tcp-ip.or.jp, Rei FURUKAWA} @item @email{gnu@@ipri.go.jp, Ryoichi Hashimoto} @item @email{ksakai@@kso.netwk.ntt-at.co.jp, SAKAI Kiyotaka} @item @email{satoshi@@sys.sdl.melco.co.jp, Satoshi Harauchi} @item @email{sn@@asahi-net.email.ne.jp, Seiichi NAMBA} @item @email{sekita@@mri.co.jp, Sekita Daigo} @item @email{shigeru@@okunet.gr.jp, Shigeru OKUMURA} @item @email{shuhei@@aqua.ocn.ne.jp, Shuhei KOBAYASHI} @item @email{ashizawa@@zuken.co.jp, Shuji Ashizawa} @item @email{simo@@festa.or.jp, SIMOYAMA Takasi} @item @email{steve@@altair.xemacs.org, SL Baur} @item @email{sphere@@pop12.odn.ne.jp, sphere} @item @email{turnbull@@sk.tsukuba.ac.jp, Stephen Turnbull} @item @email{sigh@@kuzirabekon.econ.nagasaki-u.ac.jp, SUZUKI Hitoshi} @item @email{kaoru@@kaisei.org, TAKAHASHI Kaoru} @item @email{kawamura@@ike.tottori-u.ac.jp, Takao KAWAMURA} @item @email{ohtani@@iias.flab.fujitsu.co.jp, Takeshi OHTANI} @item @email{tats@@vega.ocn.ne.jp, Tatsuya Kinoshita} @item @email{teika@@lavabit.com, Teika Kazura } @item @email{Thierry.Emery@@nmu.alcatel.fr, Thierry Emery} @item @email{tokuya@@crab.fuji-ric.co.jp, TOKUYA Junichi} @item @email{cooper@@saitama.fujimic.fujisankei-g.co.jp, Tomotaka SUWA} @item @email{hiro@@momo.it.okayama-u.ac.jp, Tomoyuki Hiro} @item @email{toru@@maid.ne.jp, Toru YANO} @item @email{toyono-y@@is.aist-nara.ac.jp, Toyonobu Yoshida} @item @email{enami@@ptgd.sony.co.jp, Tsugutomo Enami} @item @email{czkmt@@remus.dti.ne.jp, Tsukamoto Tetsuo} @item @email{tsumura@@kuis.kyoto-u.ac.jp, TSUMURA Tomoaki} @item @email{akiho@@sky.email.ne.jp, Tsuyoshi AKIHO} @item @email{matsui@@atr-rd.atr.co.jp, Wataru Matsui} @item @email{matsui@@gf.hm.rd.sanyo.co.jp, Wataru Matsui} @item @email{ynyaaa@@ybb.ne.jp, YAGI Tatsuya} @item @email{ysjj@@unixuser.org, YAMASHITA Junji} @item @email{yano@@moon.email.ne.jp, Yano Keisuke} @item @email{toyono-y@@is.aist-nara.ac.jp, Yoshida Toyonobu} @item @email{ynakai@@redhat.com, Yukihiro Nakai} @item @email{yoshiki@@xemacs.org, Yoshiki Hayashi} @item @email{manbou@@ceres.dti.ne.jp, YOSHIZAWA Masahiro} @item @email{yutopia@@giga.ocn.ne.jp, Yuh Ohmura} @item @email{yu-ji@@hoso.net, Yu-ji Hosokawa} @item @email{kameyama@@kuis.kyoto-u.ac.jp, Yukiyoshi Kameyama} @item @email{yusuke@@example.com, Yusuke Shinyama} @item @email{kiyoka@@sumibi.org, Kiyoka Nishiyama.} @end itemize @node SKK$B$NNr;K(B @section SKK$B$NNr;K(B SKK $B$N@.$jN)$A$HNr;K$K4X$7$F$O0J2<$N(B URL $B$r;2>H$7$F$/$@$5$$!#(B @uref{http://openlab.jp/skk/born-ja.html, SKK $B$NCB@8HkOC(B} @uref{http://openlab.jp/skk/SKK.html, ``SKK = I''} @uref{http://openlab.jp/skk/history-ja.html, SKK $B$NNr;K(B ($BIU(B Emacs $B$NNr;K$N0lIt(B)} @uref{http://mail.ring.gr.jp/skk/201212/msg00007.html, SKK $B$N(B 25$BG/(B} @node $B$3$N%^%K%e%"%k$K$D$$$F(B @section $B$3$N%^%K%e%"%k$K$D$$$F(B $BK\%^%K%e%"%k$O!"(BSKK $B%*!<%W%s%i%\$NM-;V$N9W8%$K$h$j!"=>Mh$N%^%K%e%"%k$K2C(B $BI.=$@5$7$?$b$N$G$9!#(B @node $Be$NF|K\8lF~NO%7%9%F%`(B Kanzen $B$N1F6A$r!#(B @end menu @node Introduction @section SKK $B$N$J$<$J$K(B @menu * Q1-1 Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B?:: * Q1-2 SKK $B$O%7%s%W%k$J$N$,D9=j$@$C$?$N$G$O(B?:: * Q1-3 DDSKK $B$O$I$N(B Emacs $B$G;H$($^$9$+(B?:: * Q1-4 DDSKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+(B?:: * Q1-5 APEL $B$C$F2?(B? $BI,MW$G$9$+(B?:: @end menu @node Q1-1 Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B? @unnumberedsubsec Q1-1 Daredevil SKK $B$C$F(B SKK $B$H$O0c$&$N$G$9$+(B? SKK Openlab $B$G3+H/!"%j%j!<%9$5$l$k(B SKK $B$O!"5~Bg$N:4F#@h@8$,Cf?4$K$J$C(B $B$F3+H/$7$F$$$?(B SKK $B$H6hJL$9$k$?$a$K!"(B@samp{Daredevil SKK} $B$H8F$V$3$H$K(B $B$7$^$7$?!#$=$NN,>N$O(B @samp{DDSKK} $B$G!"(BSKK Openlab $B$G:G=i$K(B @samp{Daredevil SKK} $B$H$7$F%j%j!<%9$5$l$?(B version $B$O(B 11.1 $B$G$9(B ($B%*%j%8(B $B%J%k$N(B version $B$r7Q>5$7$^$7$?(B)$B!#(B $B$J$*!"(B@samp{Daredevil} $B$NL>A0$N:NBr$O!"3+H/?X$N0l?M$,9VFI$7$F$$$kK?%i(B $B%8%*1Q2qOC9V:B$N!"$"$kF|$N%9%-%C%HL>$,!V(BDaredevil $B$J$s$H$+!W$G!"$=$NFb(B $BMF$O!V$H$K$+$/$d$C$F$_$h$&!#$&$.$c$!$!$!!"$d$i$l$?$!!W$H$$$&$b$N$G$7$?!#(B $B$3$l$,$"$^$j$K<+J,$N3+H/%]%j%7!<$K9gCW$7$F$$$?!"$H$$$&$3$H$KM3Mh$7$^$9!#(B @node Q1-2 SKK $B$O%7%s%W%k$J$N$,D9=j$@$C$?$N$G$O(B? @unnumberedsubsec Q1-2 SKK $B$O%7%s%W%k$J$N$,D9=j$@$C$?$N$G$O(B? $B$+$h$&$J5DO@$O(B 10 $BG/Mh9T$o$l$F$-$F$*$j!"7kO@$O=P$F$$$^$;$s$,!";vN)$G$-$k!W(B @end display @noindent $B$H$$$&$N$,8=:_$N3+H/?X$N9M$($G$"$k$h$&$G$9!#(B SKK $B$,(B Simple Kana to Kanji conversion program $B$NN,$G$"$k$H$*$j!"$+$J$r4A(B $B;z$KJQ49$9$k%k!<%A%s$N4JC1$5$,(B SKK $B$rDj5AIU$1$F$$$^$9!#$=$N<~JU$N3HD%$K(B $B4X$9$k@)Ls$O4pK\E*$K$O$"$j$^$;$s!#(B $BB?5!G=2=$H8@$C$F$bB?$/$O%f!<%6%*%W%7%g%s$K$h$C$FL58z$K$9$k$3$H$,$G$-$^(B $B$9$7!"(B@file{skk.el} $BK\BN$,J#;(2=$7$J$$$h$&$K%b%8%e!<%k2=$5$l$F$$$^$9!#(B @node Q1-3 DDSKK $B$O$I$N(B Emacs $B$G;H$($^$9$+(B? @unnumberedsubsec Q1-3 DDSKK $B$O$I$N(B Emacs $B$G;H$($^$9$+(B? $B4pK\E*$K$O!"(BGNU Emacs $B$H(B Mule $B5!G=IU$-$N(B XEmacs $B$G;H$($^$9!#(B $BBP1~$9$k(B Emacs $B$N%P!<%8%g%s$K$D$$$F$O0J2<$r$4Mw$/$@$5$$!#(B @display @xref{$B$3$N%P!<%8%g%s$N(BSKK$B$K$D$$$F(B}. @end display @node Q1-4 DDSKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+(B? @unnumberedsubsec Q1-4 DDSKK $B$O$I$s$J%*%Z%l!<%F%#%s%0%7%9%F%`$G;H$($^$9$+(B? SKK $B$,%5%]!<%H$7$F$$$k(B Emacs $B$,$=$N(B OS $B$GF0$$$F$$$k$J$i!"(BSKK $B$N4pK\E*(B $B$J5!G=$OF0$/$O$:$G$9!#(B Microsoft Windows $B$G$b(B Apple Mac OS X $B$G$b;H$($^$9!#(B $B3HD%5!G=$K$D$$$F$O!"(BUNIX $B$N3FpJs$K$D$$$F$O!"0J2<$N%U%!%$%k$r;2>H$7$F$/$@$5$$!#(B @display @url{http://openlab.jp/skk/skk/main/READMEs/README.MacOSX.ja} @end display @node Q1-5 APEL $B$C$F2?(B? $BI,MW$G$9$+(B? @unnumberedsubsec Q1-5 APEL $B$C$F2?(B? $BI,MW$G$9$+(B? APEL $B$O(B A Portable Emacs Library $B$NN,$G$9!#(BAPEL $B$Ne$G$O(B APEL $B$OITMW$H$J$j$^$7$?!#$3$NJQ99$O(B 2010 $BG/(B 9 $B7n$K(B CVS $B$K(B commit $B$5$l!"(B2011 $BG/(B 1 $B7n$K(B DDSKK 14.2 $B$H$7$F%j%j!<%9$5$l$^$7$?!#(B @node Installation @section SKK $B$NF~H$7$F$/$@$5$$!#(B @display @xref{SKK$B<-=q$K$D$$$F(B}. @end display @node Q2-3 SKK $B%5!<%P$O$I$3$K$"$j$^$9$+(B? @unnumberedsubsec Q2-3 SKK $B%5!<%P$O$I$3$K$"$j$^$9$+(B? DDSKK 15 $B$O<-=q%5!<%P$N.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B:: * Q3-5 $BA4$/4A;z$,=P$F$-$^$;$s!#(B:: * Q3-6 $B%A%e!<%H%j%"%k$,5/F0$G$-$^$;$s!#(B:: @end menu @node Q3-1 $B!V!%!W!"!V!$!W(B $B$,F~NO$G$-$k$h$&$K%+%9%?%^%$%:$7$?$$$N$G$9$,!#(B @unnumberedsubsec Q3-1 $B!V!%!W!"!V!$!W(B $B$,F~NO$G$-$k$h$&$K%+%9%?%^%$%:$7$?$$$N$G$9$,!#(B 3$BDL$j$NJ}K!$r>R2p$7$^$9!#(B @enumerate @item $BDL>o(B @samp{.} $B$G!V!%!W!"(B@samp{,} $B$G!V!$!W$rF~NO$7$?$$>l9g(B @file{~/.skk} $B$K0J2<$r@_Dj$7$^$9!#(B @lisp (setq skk-kutouten-type 'en) @end lisp @item $B0l;~E*$K(B @samp{.} $B$G!V!%!W!"(B@samp{,} $B$G!V!$!W$rF~NO$7$?$$>l9g(B @kbd{M-x skk-toggle-kutouten} $B$rl$G!V!$!W!V!%!W$K@Z$jBX$($k(B $B$3$H$,$G$-$^$9!#!V!"!W!V!#!W$KLa$9$K$O!"$b$&0lEY(B @kbd{M-x skk-toggle-kutouten} $B$rl9g$O!"(B File Variables (@pxref{File Variables, , File Variables, emacs, GNU Emacs Manual}) $B$r;2>H2<$5$$!#(B $BNc$($P!"(B tex $B%b!<%I$G$N$_!V!$!W!V!%!W$K@Z$jBX$($?$$>l9g$O!"$D$.$N@_Dj$r(B tex $B%U%!%$%k$N:G8e$KDI2C$7$^$9!#(B @example % Local Variables: % skk-kutouten-type: en % end: @end example @item $B>o$K(B @samp{.} $B$G!V!%!W!"(B@samp{,} $B$G!V!$!W$rF~NO$7$?$$>l9g(B @code{skk-rom-kana-rule-list} $B$rD>@\JQ99$7$^$9!#(B $B$J$*!"$3$N@_Dj$r$9$k$H!"(B@kbd{M-x skk-toggle-kutouten} $B$G$N@Z$jBX$($,(B $B8z$+$J$/$J$k$N$G!"Cm0U$7$F2<$5$$!#(B @file{~/.skk} $B$K0J2<$rDI2C$7$^$9!#(B @lisp @group (setq skk-rom-kana-rule-list (append '(("." nil "$B!%(B") ("," nil "$B!$(B")) skk-rom-kana-rule-list)) @end group @end lisp $B$3$N@_DjJ}K!$O1~MQ$,8z$-!":Y$+$/@)8f$9$k$3$H$,2DG=$G$9!#(B @samp{$B!%(B} $B$H(B @samp{$B!$(B} $B$N$H$3$m$r$=$l$>$l!"(B@samp{.} $B$H(B @samp{,} $B$H$9$k$3$H$G!"(B $B!V$+$J%b!<%I!W!V%+%J%b!<%I!W$G$b!"(B@samp{.} $B$H(B@samp{,} $B$rD>@\F~NO$9$k$3$H$,(B $B$G$-$^$9!#(B @end enumerate @node Q3-2 $B!V$p!W$d!V%p!W(B $B$,F~NO$G$-$k$h$&$K%+%9%?%^%$%:$7$?$$$N$G$9$,!#(B @unnumberedsubsec Q3-2 $B!V$p!W$d!V%p!W(B $B$,F~NO$G$-$k$h$&$K%+%9%?%^%$%:$7$?$$$N$G$9$,!#(B $B0l$DA0$N(B Q $B$NJQ7ALdBj$G$9$M!#$+$J(B/$B%+%J%b!<%I$G$=$l$>$l=PNO$9$kJ8;z(B $B$rJQ$($k$d$jJ}$G$9!#(B @file{~/.skk} $B$K(B @lisp @group (setq skk-rom-kana-rule-list (append '(("wi" nil ("$B%p(B" . "$B$p(B"))) skk-rom-kana-rule-list)) @end group @end lisp @noindent $B$H=q$$$F$_$^$7$g$&!#(B $B0lHVFbB&$N(B cons cell $B$O(B car $B$,%+%J%b!<%I!"(Bcdr $B$,$+$J%b!<(B $B%I$G$NF~NOJ8;z$rI=$7$F$$$^$9!#(B $B0l$DA0$N(B Q $B$KBP$9$kEz$($N$h$&$K!"%+%J%b!<%I!"$+$J%b!<%I$H$b$KF~NO$9(B $B$kJ8;z$,JQ$o$i$J$1$l$P!"(Bcons cell $B$NBe$j$KJ8;zNs$r=q$/$3$H$,$G$-$^$9!#(B @node Q3-3 $B8!:w$9$k<-=q$rA}$d$7$?$$$N$G$9$,!#(B @unnumberedsubsec Q3-3 $B8!:w$9$k<-=q$rA}$d$7$?$$$N$G$9$,!#(B @code{skk-search-prog-list} $B$G@_Dj$r$7$^$7$g$&!#(B @vindex skk-search-prog-list $B$^$:!"8=:_$N@_Dj$r3NG'$7$^$7$g$&$M!#(B*scratch* $B%P%C%U%!$K(B @code{skk-search-prog-list} $B$H=q$$$F$=$N%7%s%\%k$NKvHx$K%]%$%s%H$rCV$$$F(B @kbd{C-j} $B$7$F$_$^$7$g$&!#Nc$($Pe5-$NNc$O(B 2 $B$D$NMWAG$r;}$C$?%j%9%H$K$J$C$F$$$^$9!#@_Dj$K$h$j$b$C$HB?(B $B$/$NMWAG$,$"$k$+$b$7$l$^$;$s!#(B $B3FMWAG$O8!:w$9$k4X?t$H<-=q$r;XDj$7$?%j%9%H$G$9!#MWAG$N=gHV$K8!:w$,$J$5(B $B$l$^$9!#>e5-$NNc$@$H$^$::G=i$K(B @code{skk-jisyo} ($B8D?M<-=q(B) $B$r(B @code{skk-search-jisyo} $B$H$$$&4X?t$r;H$C$F%j%K%"%5!<%A!"l9g$O$I$&$9$l$PNI$$$G$7$g$&(B? $B$b$&J,(B $B$+$j$^$9$h$M(B? $B<-=q%5!<%P$r;H$C$?8!:w<0$Nl9g$J$I$O!"(B @lisp (skk-search-jisyo-file "~/dic/SKK-JISYO.L" 10000) @end lisp @noindent $B$N$h$&$K$9$k$HNI$$$G$7$g$&!#(BSKK $B$O(B Emacs $B$N%P%C%U%!$KFI$_9~$^$l$?(B @file{~/dic/SKK-JISYO.L} $B$N8!:w%j!<%8%g%s$N%]%$%s%H:9$,(B 10,000 $BL$K~$K$J(B $B$k$^$G$O%P%$%J%j%5!<%A$r9T$$!"$=$N8e%j%K%"%5!<%A$r9T$$$^$9!#Bg$-$J<-(B $B=q$G$O%P%$%J%j%5!<%A$r9T$&J}$,$O$k$+$K8zN($,NI$$$G$9!#13$@$H;W$&$J$i!"(B @file{SKK-JISYO.L} $B$rFI$_9~$s$G%j%K%"%5!<%A$9$k$h$&$J@_Dj$K$7$F;n$7$F$_(B $B$F2<$5$$!#(B $B$A$J$_$K!"(B@file{SKK-JISYO.JIS2} $B$O!":GBg$G$b%j!<%8%g%s4V$N%]%$%s%H:9$,(B 8,500 $BDxEY$G$9!#(B @node Q3-4 $B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B @unnumberedsubsec Q3-4 $B:8.;X$r(B SHIFT $B$G9s;H$7$?$/$"$j$^$;$s!#(B SKK $B$rI8=`$N>uBV$G;H$C$F$$$k>l9g!"JQ49$N$?$a$K%7%U%H%-!<$rB?MQ$7$^$9$N(B $B$G>.;X$X$NIiC4$,Bg$-$/$J$j$^$9!#(B @footnote{$B$3$N$?$a!"$"$k?M!9$O(B SKK $B$r>.;X%-%i!<$H8F$S$^$9!#(B} $B$3$N6l$7$_$r2sHr$9$k$?$a$K$3$3$G$O(B 4 $B$D$NJ}K!$r>R2p$7$^$9!#(B @enumerate @item $B?F;X$N6a$/$K$"$k%-!<$rMxMQ$7$F%7%U%H%-!<$NBeMQ$H$9$k!#(B $BF|K\8l(B 106 $B%-!<%\!<%I$N$h$&$KL5JQ49!"JQ49$J$I$N%-!<$,$"$k>l9g$O!"$3$l(B $B$i$r%7%U%H%-!<$NBeMQ$H$9$k$3$H$,2DG=$G$9!#$3$&$9$k$H!"Nc$($P(B @display @key{SHIFT} $B$r2!$7$J$,$i(B @kbd{a} $B$r2!$9(B @end display @noindent $B$H$$$&%-!A0$GG'<1$7$F$$$k$+D4$Y$^$9!#$=$l$K$O(B @example @kbd{M-x describe-key} @end example @noindent $B$H$$$&%3%^%s%I$re$G(B $B$J$i!"$*$=$i$/(B @example muhenkan is undefined @end example @noindent $B$H$$$&Ez$($,JV$C$F$/$k$G$7$g$&!#A0$r;H$C$F(B @file{~/.emacs} $B$K@_Dj$r=q$-$3$_$^$9!#0J2<$O(B @key{$BL5JQ49(B} = @key{muhenkan} $B$N>l9g$NNc$G(B $B$9!#(B @lisp @group (unless (keymapp key-translation-map) (setq key-translation-map (make-sparse-keymap))) (let ((i ?a)) (while (<= i ?z) (define-key key-translation-map (vector 'muhenkan i) (vector (- i 32))) (setq i (1+ i)))) @end group @end lisp @vindex key-translation-map $B$3$N@_Dj$r=*$($k$H!"(B@kbd{@key{muhenkan}-a} $B$G(B @kbd{A} $B$,F~NO$G$-$k$h$&$K(B $B$J$j$^$9!#B3$$$F(B SKK $B$r5/F0$7$F$_$^$7$g$&!#(B@kbd{@key{muhenkan}-a} $B$G(B @samp{$B"&$"(B} $B$H$J$j$^$9!#Aw$j$N3+;OE@$b!"$b$A$m$sF1MM$NA`:n$G;XDj$G$-$^$9!#(B @footnote{$BJQ?t(B @code{key-translation-map} $B$N0UL#$rD4$Y$F$_$F$/$@$5$$!#(B @kbd{M-x describe-variable} @key{RET} key-translation-map} @item xmodmap $B$r;H$&!#(B X Window System $B>e$G$O!"(B@command{xmodmap} $B$H$$$&%W%m%0%i%`$r;H$C$F%-!o$N%7%U%H%-!<$HF1$8$h$&$J46$8$G;H$($k$h(B $B$&$K$J$j$^$9!#(B @item @file{skk-sticky.el} $B$r;H$&!#(B @w{@xref{$BJQ490LCV$N;XDjJ}K!(B}.} @item $B?F;X%7%U%HF~NO$N%(%_%e%l!<%7%g%s5!G=$rMxMQ$9$k!#(B @cindex $B?F;X%7%U%HF~NO(B $B$3$l$O(B 1, 2 $B$H$O$+$J$j0c$C$?%"%W%m!<%A$G$9!#(BSKK $BK\Mh$N%m!<%^;zE*F~NO$r\:Y$K$D$$$F$O!"$3$3$G$O=R$Y$^$;$s!#6=L#$,$"$k(B $B>l9g$O!"F|K\8lF~NO%3%s%=!<%7%"%`$N(B Web $B%5%$%H(B @display @url{http://nicola.sunicom.co.jp/} @end display @noindent $B$rK,$l$F$/$@$5$$!#(B} @cindex OASYS @cindex NICOLA @cindex $BF|K\8lF~NO%3%s%=!<%7%"%`(B DDSKK $B$K$O(B NICOLA-DDSKK $B$H$$$&%W%m%0%i%`$,IUB0$7$F$*$j!"$3$l$r%$%s%9%H!<(B $B%k$9$k$H?F;X%7%U%HF~NO$,2DG=$K$J$j$^$9!#%$%s%9%H!<%k<+BN$O4JC1$G!"(B @example % cd nicola % make install @end example @noindent $B$H$7$?8e$K!"(B@file{~/.skk} $B$K(B @lisp @group (setq skk-use-kana-keyboard t) (setq skk-kanagaki-keyboard-type 'omelet-jis) @end group @end lisp @noindent $B$H=q$/$@$1$G$9!#>\$7$$$3$H$O!"(BNICOLA-DDSKK $BIUB0$N%I%-%e%a%s%H$r;2>H$7(B $B$F$/$@$5$$!#(B NICOLA $BG[Ns$O!"FCJL$KF|K\8lF~NO$N$?$a$K9M$($i$l$?G[Ns$J$N$G!"47$l$l$P(B $BHs>o$K8zN(E*$JF|K\8lF~NO$,$G$-$k$h$&$K$J$k$H4|BT$5$l$^$9!#0lJ}$G!"%m!<(B $B%^;zE*F~NOJ}<0$K47$l$F$7$^$C$F$$$k?M$K$H$C$F$O!"(BNICOLA $BG[Ns$K47$l$k$^(B $B$G$+$J$jN}=,$rMW$9$k$3$H$O3N$+$G$9!#(B @end enumerate @node Q3-5 $BA4$/4A;z$,=P$F$-$^$;$s!#(B @unnumberedsubsec Q3-5 $BA4$/4A;z$,=P$F$-$^$;$s!#(B $B62$i$/<-=q$N@_Dj$,$G$-$F$$$J$$$N$G$7$g$&!#(B @file{SKK-JISYO.L} $B$H$$$&%U%!%$%k$,%$%s%9%H!<%k$5$l$F$$$k>l=j$r3NG'$7$F(B $B$/$@$5$$!#IaDL$O(B @display @file{/usr/local/share/skk} @file{/usr/share/skk} @end display @noindent $B$H$$$C$?>l=j$K%$%s%9%H!<%k$5$l$F$$$^$9!#(BXEmacs $B$N%Q%C%1!<%8$J$i$P(B @display @file{/usr/local/lib/xemacs/mule-packages/etc/skk} @end display @noindent $B$J$I$r3NG'$7$^$9!#$=$N8e$G(B @file{~/.skk} $B$K(B @lisp (setq skk-large-jisyo "/usr/local/share/skk/SKK-JISYO.L") @end lisp @noindent $B$N$h$&$K@_Dj$7$^$9!#(B $B$J$*!"<-=q%5!<%P$r;H$C$F$$$k>l9g$O$3$N@_Dj$OI,MW$"$j$^$;$s!#$=$N>l9g$O!"(B $B<-=q%5!<%P$N@_Dj$d!"$=$l$,$A$c$s$H5/F0$7$F$$$k$+$I$&$+$r3NG'$7$F$/$@$5(B $B$$!#(B $B$^$?!"$I$3$K$b<-=q$,%$%s%9%H!<%k$5$l$F$$$J$$>l9g$O(B @display @url{http://openlab.jp/skk/dic/} @end display @noindent $B$+$il=j$r3NG'$7$F$/$@(B $B$5$$!#IaDL$O(B @display @file{/usr/local/share/skk} @file{/usr/share/skk} @end display @noindent $B$H$$$C$?>l=j$K%$%s%9%H!<%k$5$l$F$$$^$9!#(BXEmacs $B$N%Q%C%1!<%8$J$i$P(B @cindex $B%Q%C%1!<%8(B @display @file{/usr/local/lib/xemacs/mule-packages/etc/skk} @end display @noindent $B$J$I$r3NG'$7$^$9!#$=$N8e$G(B @file{~/.emacs} $B$K(B @lisp (setq skk-tut-file "/usr/local/share/skk/SKK.tut") @end lisp @vindex skk-tut-file @noindent $B$N$h$&$K@_Dj$7$^$9!#(B @node Dictionaries @section SKK $B<-=q4XO"(B @menu * Q4-1 SKK $B$K$OM9JXHV9f<-=q$,$"$j$^$9$+(B?:: * Q4-2 SKK $B$N<-=q$K$O!"IJ;l>pJs$,$J$$$s$G$9$M!#(B:: * Q4-3 $BJ#?t$N(B SKK $B<-=q$r7k9g$G$-$^$9$+(B?:: * Q4-4 SKK $B7A<0$N1QOB<-=q$,$"$k$HJ9$$$?$N$G$9$,!#(B:: @end menu @node Q4-1 SKK $B$K$OM9JXHV9f<-=q$,$"$j$^$9$+(B? @unnumberedsubsec Q4-1 SKK $B$K$OM9JXHV9f<-=q$,$"$j$^$9$+(B? CVS $B$+$i<-=q$rl9g$O!"(B@file{zipcode} $B$H$$$&%G%#%l%/%H%j$KF~$C$F(B $B$$$^$9!#(BWWW $B$G$O!"(B @display @url{http://openlab.jp/skk/dic/} @end display @noindent $B$h$jF~pJs$,$J$$$s$G$9$M!#(B @unnumberedsubsec Q4-2 SKK $B$N<-=q$K$O!"IJ;l>pJs$,$J$$$s$G$9$M!#(B @cindex $BIJ;l>pJs(B SKK $B$O4A;z$H$+$J$H$N6h@Z$j$r%f!<%6$,;XDj$9$kJ}<0$K$h$j!"IJ;l>pJs$r;H$C(B $B$?2r@O$rMQ$$$k$3$H$J$/8zN(E*F~NO$,$G$-$^$9!#(B TODO $B$H$7$F$O!"<-=q$KIJ;l>pJs$r;}$?$;$k$3$H$G99$J$kF~NO$N8zN(2=$,$G$-(B $B$k$H$$$&Ds0F$,$J$5$l$F$*$j!"$=$N$h$&$J<-=q$N:n@.$,4{$K;n$_$i$l$F$$$^$9!#(B $B6=L#$N$"$kJ}$O(B @display @url{http://openlab.jp/skk/wiki/wiki.cgi?page=SKK%BC%AD%BD%F1} @end display $B$K$*$1$k(B @file{SKK-JISYO.notes} $B$N9`L\$r$4Mw$/$@$5$$!#(B @node Q4-3 $BJ#?t$N(B SKK $B<-=q$r7k9g$G$-$^$9$+(B? @unnumberedsubsec Q4-3 $BJ#?t$N(B SKK $B<-=q$r7k9g$G$-$^$9$+(B? @cindex $B<-=q$N%^!<%8(B SKK $BK\BN$N%Q%C%1!<%8$K$OF1Iu$5$l$F$$$^$;$s$,!"(Bskk-tools $B$H$$$&JL%Q%C%1!<(B $B%8$,$"$j$^$9!#0J2<$r$4Mw$/$@$5$$!#(B @display @xref{$B<-=q%D!<%k(B}. @end display @node Q4-4 SKK $B7A<0$N1QOB<-=q$,$"$k$HJ9$$$?$N$G$9$,!#(B @unnumberedsubsec Q4-4 SKK $B7A<0$N1QOB<-=q$,$"$k$HJ9$$$?$N$G$9$,!#(B @cindex @file{edict2skk.awk} @cindex @code{skkdic-expr} @cindex @code{skkdic-sort} @cindex edict @cindex $B1QOB<-=q(B edict $B$OOB1Q<-=q$G$9$,!"$3$l$r(B SKK $B<-=q7A<0$N1QOB<-=q$KJQ49$7$?$b$N$r(B @display @url{http://openlab.jp/skk/dic/SKK-JISYO.edict} @end display @noindent $B$H$7$FCV$$$F$$$^$9!#$3$l$O(B edict $B$rC1=c$K5!3#E*$KJQ49$7$?8e!"%P%0$N=$@5(B $B$d!"%(%s%H%j!&8uJd$NDI2C$,(B SKK Openlab $B$GFH<+$K9T$o$l$F$$$k$b$N$G$9!#(B edict $B$r<+J,$G2C9)$7$F>e5-$HF1Ey$N$b$N$r:n@.$9$k$3$H$b$G$-$^$9!#(Bedict $B$O(B @display @url{ftp://ftp.u-aizu.ac.jp:/pub/SciEng/nihongo/ftp.cc.monash.edu.au/} @end display @noindent $B$J$I$+$iF~ temp % skkdic-expr temp | skkdic-sort > SKK-JISYO.E2J % rm temp @end example $B$G$-$?(B @file{SKK-JISYO.E2J} $B$NMxMQJ}K!$O?'!9$"$j$^$9$,!"(B @example % skkdic-expr SKK-JISYO.E2J + /usr/local/share/skk/SKK-JISYO.L | \ skkdic-sort > SKK-JISYO.L @end example @noindent $B$J$I$H$7$F!"(B@file{SKK-JISYO.L} $B$H%^!<%8$7$F;H$&$N$,r7o$O(B GNU GPL (General Public License) $B$G$O$"$j$^$;$s!#(B @display @url{http://www.csse.monash.edu.au/groups/edrdg/newlic.html} @end display @noindent $B$r$4Mw2<$5$$!#(B@file{SKK-JISYO.edict} $B$N%X%C%@!(B @menu * Q5-1 SKK abbrev $B%b!<%I$G$b$C$H1QC18l$rMxMQ$7$?JQ49$,$G$-$^$;$s$+(B?:: * Q5-2 $B;THN$N(B CD-ROM $B<-=q$d%M%C%H%o!<%/$N<-=q%5!<%P$,MxMQ$G$-$^$9$+(B?:: * Q5-3 $BB>$N(B FEP $B$r;HMQCf$K$b(B SHIFT $B$r2!$7$F$7$^$$$^$9!#(B:: @end menu @node Q5-1 SKK abbrev $B%b!<%I$G$b$C$H1QC18l$rMxMQ$7$?JQ49$,$G$-$^$;$s$+(B? @unnumberedsubsec Q5-1 SKK abbrev $B%b!<%I$G$b$C$H1QC18l$rMxMQ$7$?JQ49$,$G$-$^$;$s$+(B? @cindex @code{look} @cindex @file{skk-look.el} @cindex edict @cindex $B1QC18l$N8!:w(B @cindex $BOB1QJQ49(B @kindex , @kindex . @vindex skk-look-expanded-word-only @vindex skk-look-recursive-search @vindex skk-look-use-ispell @vindex skk-use-look UNIX @command{look} $B%3%^%s%I$H(B @file{skk-look.el} $B$rMxMQ$9$k$H!"?'!9$G$-$^(B $B$9$h!#$^$:!"(B @file{~/.skk} $B$G(B @code{skk-use-look} $B$r(B @code{t} $B$K%;%C%H$7$F(B Emacs/SKK $B$rN)$A>e$2D>$7$F2<$5$$!#(B $B$5$!!"2<5-$N$h$&$J7]Ev$,2DG=$K$J$j$^$7$?!#(B @enumerate @item $B1QC18l$NJd40$,$G$-$^$9!#(B @example $B"&(Babstr(@key{TAB}) @expansion{} $B"&(Babstract @end example $BDL>o$NJd405!G=$HF1MM$K(B @kbd{.} $B$Ge5-F1MM!"(B @code{skk-look-use-ispell} $B$NCM$,(B @code{non-nil} $B$G$"$l$P!"(B@command{look} $B$G8!:w$9$kA0$K(B @command{ispell} $B$G%9%Z%k%A%'%C%/!&=$@5$r$7$^$9!#(B @example $B"&(Babstr* (@key{SPC}) @expansion{} $B"'(Babstract @end example $B8+=P$78l$K(B @samp{*} $B$rF~$l$k$N$r$*K:$l$J$/!#(B @item $B$"$$$^$$$KJQ49$7$?8e!"99$K:F5"E*$J1QOBJQ49$r9T$&$3$H$,$G$-$^$9!#(B $B$^$:!"(B@code{skk-look-recursive-search} $B$NCM$r(B @code{non-nil} $B$K%;%C%H(B $B$7$F2<$5$$!#(BEmacs/SKK $B$r:F5/F0$9$kI,MW$O$"$j$^$;$s!#$9$k$H!"Nc$($P!"(B @example $B"&(Babstr* (@key{SPC}) @expansion{} $B"'(Babstract (@key{SPC}) @expansion{} $B"'%"%V%9%H%i%/%H(B (@key{SPC}) @expansion{} $B"'Cj>](B (@key{SPC}) @expansion{} $B"'(Babstraction (@key{SPC}) @expansion{} $B"'%"%V%9%H%i%/%7%g%s(B @end example $B$3$N$h$&$K1QC18l(B + $B$=$N1QC18l$r8+=P$78l$K$7$?8uJd$N!V%;%C%H!W$rJQ497k2L(B $B$H$7$F=PNO$9$k$3$H$,$G$-$^$9!#(B $B$3$N:]!"(B@code{skk-look-expanded-word-only} $B$NCM$,(B @code{non-nil} $B$G$"(B $B$l$P!":F5"8!:w$K@.8y$7$?1QC18l$N!V%;%C%H!W$@$1$r=PNO$9$k$3$H$,$G$-$^$9(B ($B:F5"8!:w$G8!=P$5$l$J$+$C$?1QC18l$OL5;k$7$F=PNO$7$^$;$s(B) $B!#(B $B$b$A$m$s!"(BSKK $B<-=q$K(B @example abstract /$B%"%V%9%H%i%/%H(B/$BCj>](B/ abstraction /$B%"%V%9%H%i%/%7%g%s(B/ @end example @noindent $B$H$$$&%(%s%H%j$,$"$k$3$H$rA0Ds$H$7$F$$$^$9!#(Bedict $B$r(B SKK $B<-=q7A<0$KJQ49(B $B$9$k$HNI$$$G$9$M!#(B @end enumerate $B$J$*!"(B@file{skk-look.el} $B$r;H$C$?Jd40!&JQ49$,4|BT$9$k%9%T!<%I$h$j$bCY(B $B$$!"Jd40!&JQ49$GM>J,$J8uJd$,=P$k!"$H$*46$8$N5.J}$O!"(B @code{skk-look-use-ispell} $B$NCM$r(B @code{nil} $B$K$7$F(B @command{ispell} $B$K$h(B $B$k%9%Z%k%A%'%C%/!&=$@5$r%*%U$K$7$F$*;n$72<$5$$!#(B @node Q5-2 $B;THN$N(B CD-ROM $B<-=q$d%M%C%H%o!<%/$N<-=q%5!<%P$,MxMQ$G$-$^$9$+(B? @unnumberedsubsec Q5-2 $B;THN$N(B CD-ROM $B<-=q$d%M%C%H%o!<%/$N<-=q%5!<%P$,MxMQ$G$-$^$9$+(B? @cindex @file{skk-lookup.el} @cindex Lookup @vindex skk-search-prog-list @findex skk-lookup-search Lookup $B$,07$($k<-=q$O$[$H$s$I;H$($^$9!#(BLookup $B$,%$%s%9%H!<%k$5$l$F$$$k(B $B>uBV$G(B SKK $B$r%$%s%9%H!<%k$9$k$H!"(BSKK $B$H(B Lookup $B$N%2!<%H%&%'%$%W%m%0%i(B $B%`(B @file{skk-lookup.el} $B$,%$%s%9%H!<%k$5$l$^$9!#(B $B%$%s%9%H!<%k$GCm0U$9$Y$-$O!"(B@command{make} $B$G8F$S=P$5$l$k(B Emacs $B$O(B @option{-q -no-site-file} $B%U%i%0IU$-$G8F$P$l$k$N$G!"(B@file{~/.emacs} $B$d(B @file{site-start.el} $B$J$I$OFI$_9~$^$l$J$$$3$H$G$9!#%G%U%)%k%H$G(B @code{load-path} $B$NDL$C$F$$$k%G%#%l%/%H%j$K(B lookup $B$r%$%s%9%H!<%k$9$k$+!"(B @file{SKK-CFG} $B$NCf$G(B @var{VERSION_SPECIFIC_LISPDIR} $B$J$I$K%G%#%l%/%H%j(B $B$rL@<($9$k$3$H$G2r7h$G$-$^$9!#(B $B$5$!!"(B@file{~/.skk} $B$G(B @code{skk-search-prog-list} $B$N(B $BMWAG$K(B @code{(skk-lookup-search)} $B$rDI2C$7$^$7$g$&!#B>$N8!:w%(%s%8%s$h$j(B $B$b8!:w$OHf3SE*CY$$$N$G!":G8e$NJ}$,NI$$$H;W$$$^$9!#(B $B$3$s$J46$8$G$9!#(B @lisp @group (setq skk-search-prog-list '((skk-search-jisyo-file skk-jisyo 0 t) (skk-search-server skk-aux-large-jisyo 10000) (skk-lookup-search))) @end group @end lisp Lookup $B$K$D$$$F$O!"(B @display @url{http://openlab.jp/edict/lookup/} @end display @noindent $B$r$4;2>H2<$5$$!#(B @node Q5-3 $BB>$N(B FEP $B$r;HMQCf$K$b(B SHIFT $B$r2!$7$F$7$^$$$^$9!#(B @unnumberedsubsec Q5-3 $BB>$N(B FEP $B$r;HMQCf$K$b(B SHIFT $B$r2!$7$F$7$^$$$^$9!#(B $B<#$9$K$O(B SKK $B$r$d$a$k$7$+$"$j$^$;$s(B :-) Emacs $B>e0J30$G$b(B SKK $B$_$?$$$JA`:n@-$r ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin St, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; This file registers SKK as input methods for Emacs. ;; Currently this file is for FSF Emacs only (not for XEmacs). ;;; Code: (unless noninteractive ;; No need to load this file when Emacs is called for `make' or most of other ;; batch processings. ;; `register-input-method' is called in skk-autoloads.el. `skk-activate' is ;; also autoloaded there. (require 'skk-autoloads) ;; Doubt. This is a matter of preference. (require 'skk-setup)) ;;; skk/leim-list.el ends here ddskk-15.1.54/skk-kakasi.el0000664000076600007660000002542711650421530015021 0ustar brutusbrutus;;; skk-kakasi.el --- KAKASI $B4XO"%W%m%0%i%`(B -*- coding: iso-2022-jp -*- ;; Copyright (C) 1996, 1998, 1999, 2000, 2001 ;; NAKAJIMA Mikio ;; Author: NAKAJIMA Mikio ;; Maintainer: SKK Development Team ;; Version: $Id: skk-kakasi.el,v 1.36 2011/10/22 01:58:48 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2011/10/22 01:58:48 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; skk-kakasi.el $B$O(B KAKASI $B$r(B SKK $B$NCf$+$i;H$&%$%s%?!<%U%'%$%9$G$9!#(BKAKASI $B$O!"(B ;; $B9b66M5?.$5$s(B $B$K$h$k!"!V4A;z$+$J$^$8$jJ8$r$R$i$,(B ;; $B$JJ8$d%m!<%^;zJ8$KJQ49$9$k$3$H$rL\E*$H$7$F:n@.$7$?%W%m%0%i%`$H<-=q$NAm>N!W(B ;; $B$G$9!#;d<+?H$,%K%e!<%9$d%a!<%k$rFI$s$G$$$F!"F|>oFI$_$,J,$i$J$/$FCQ$:$+$7$$(B ;; $B;W$$$r$9$k$3$H$,B?$$$N$G!"5U0z$-$r$7$?$/$F:n$j$^$7$?!#(B ;; ;; KAKASI $B$O!"(B ;; ;; ftp://kakasi.namazu.org/pub/kakasi/ ;; ;; $B$K$"$j(B anonymous ftp $B$GF~L>$rA4$F$R$i$,$J$KJQ49$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B $BCfEg(B -> {$B$J$+$7$^(B|$B$J$+$8$^(B}" (interactive "*r\nP") (let ((str (skk-gyakubiki-1 start end all))) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-gyakubiki-and-henkan (start end) "$BNN0h$N4A;z$r$R$i$,$J$KJQ49$7!"$=$N$R$i$,$J$r8+=P$78l$H$7$F$+$J4A;zJQ49$rL>$rA4$F$R$i$,$J$KJQ498e!"%(%3!<$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B $BCfEg(B -> {$B$J$+$7$^(B|$B$J$+$8$^(B}" (interactive "r\nP") (let ((str (skk-gyakubiki-1 start end all))) (save-match-data (when (string-match "^[ $B!!(B\t]+" str) ;; $B@hF,$N6uGr$rL>$rA4$F%+%?%+%J$KJQ49$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B $BCfEg(B -> {$B%J%+%7%^(B|$B%J%+%8%^(B}" (interactive "*r\nP") (let ((str (skk-gyakubiki-1 start end all 'katakana))) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-gyakubiki-katakana-message (start end &optional all) "$BNN0h$N4A;z!"Aw$j2>L>$rA4$F%+%?%+%J$KJQ498e!"%(%3!<$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B $BCfEg(B -> {$B%J%+%7%^(B|$B%J%+%8%^(B}" (interactive "r\nP") (let ((str (skk-gyakubiki-1 start end all 'katakana))) (save-match-data (when (string-match "^[ $B!!(B\t]+" str) ;; $B@hF,$N6uGr$r \"$BJQ49A0(B[$B$X$s$+$s$^$((B]$B$N4A;z(B[$B$+$s$8(B]$B$NOF(B[$B$o$-(B]$B$K(B\" $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B \"$BCfEg(B\" -> \"$BCfEg(B[{$B$J$+$7$^(B|$B$J$+$8$^(B}]\"" (interactive "*r\nP") (let ((str (skk-hurigana-1 start end all))) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-hurigana-message (start end &optional all) "$BNN0h$N4A;z$KA4$F$U$j$,$J$rIU$1!"%(%3!<$9$k!#(B $BNc$($P!"(B \"$BJQ49A0$N4A;z$NOF$K(B\" -> \"$BJQ49A0(B[$B$X$s$+$s$^$((B]$B$N4A;z(B[$B$+$s$8(B]$B$NOF(B[$B$o$-(B]$B$K(B\" $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B \"$BCfEg(B\" -> \"$BCfEg(B[{$B$J$+$7$^(B|$B$J$+$8$^(B}]\"" (interactive "r\nP") (message "%s" (skk-hurigana-1 start end all))) ;;;###autoload (defun skk-hurigana-katakana-region (start end &optional all) "$BNN0h$N4A;z$KA4$F%U%j%,%J$rIU$1$k!#(B $BNc$($P!"(B \"$BJQ49A0$N4A;z$NOF$K(B\" -> \"$BJQ49A0(B[$B%X%s%+%s%^%((B]$B$N4A;z(B[$B%+%s%8(B]$B$NOF(B[$B%o%-(B]$B$K(B\" $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B \"$BCfEg(B\" -> \"$BCfEg(B[{$B%J%+%7%^(B|$B%J%+%8%^(B}]\"" (interactive "*r\nP") (let ((str (skk-hurigana-1 start end all 'katakana))) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-hurigana-katakana-message (start end &optional all) "$BNN0h$N4A;z$KA4$F%U%j%,%J$rIU$1!"%(%3!<$9$k!#(B $BNc$($P!"(B \"$BJQ49A0$N4A;z$NOF$K(B\" -> \"$BJQ49A0(B[$B%X%s%+%s%^%((B]$B$N4A;z(B[$B%+%s%8(B]$B$NOF(B[$B%o%-(B]$B$K(B\" $B%*%W%7%g%J%k0z?t$N(B ALL $B$,(B non-nil $B$J$i$P!"J#?t$N8uJd$,$"$k>l9g$O!"(B\"{}\" $B$G$/(B $B$/$C$FI=<($9$k!#(B $BNc$($P!"(B \"$BCfEg(B\" -> \"$BCfEg(B[{$B%J%+%7%^(B|$B%J%+%8%^(B}]\"" (interactive "r\nP") (message "%s" (skk-hurigana-1 start end all 'katakana))) (defun skk-hurigana-1 (start end all &optional katakana) ;; skk-hurigana-* $B$N%5%V%k!<%A%s!#(B ;; $B%*%W%7%g%J%k0z?t$N(B KATAKANA $B$,(B non-nil $B$G$"$l$P!"%+%?%+%J$XJQ49$9$k!#(B (let ((arg (if katakana '("-JK" "-f") '("-JH" "-f")))) (when skk-allow-spaces-newlines-and-tabs (setq arg (cons "-c" arg))) (when all (setq arg (cons "-p" arg))) (skk-kakasi-region start end arg))) ;;;###autoload (defun skk-romaji-region (start end) "$BNN0h$N4A;z!"$R$i$,$J!"%+%?%+%J!"A41QJ8;z$rA4$F%m!<%^;z$KJQ49$9$k!#(B $BJQ49$K$O!"%X%\%s<0$rMQ$$$k!#(B $BNc$($P!"(B \"$B4A;z$+$J:.$8$jJ8$r%m!<%^;z$KJQ49(B\" -> \" kan'zi kana ma ziri bun' woro-ma zi ni hen'kan' \" `skk-romaji-*-by-hepburn' $B$,(B nil $B$G$"$l$P!"%m!<%^;z$X$NJQ49MM<0$r71Na<0$KJQ99$9(B $B$k!#Nc$($P!"(B\"$B$7(B\" $B$O%X%\%s<0$G$O(B \"shi\" $B$@$,!"71Na<0$G$O(B \"si\" $B$H$J$k!#(B" (interactive "*r") (let ((arg '("-Ha" "-Ka" "-Ja" "-Ea" "-ka" "-s")) str) (when skk-allow-spaces-newlines-and-tabs (setq arg (cons "-c" arg))) (unless skk-romaji-*-by-hepburn (setq arg (cons "-rk" arg))) (setq str (skk-kakasi-region start end arg)) (delete-region start end) (goto-char start) (insert-and-inherit str))) ;;;###autoload (defun skk-romaji-message (start end) "$BNN0h$N4A;z!"$R$i$,$J!"%+%?%+%J!"A41QJ8;z$rA4$F%m!<%^;z$KJQ49$7!"%(%3!<$9$k!#(B $BJQ49$K$O!"%X%\%s<0$rMQ$$$k!#(B $BNc$($P!"(B \"$B4A;z$+$J:.$8$jJ8$r%m!<%^;z$KJQ49(B\" -> \" kan'zi kana ma ziri bun' woro-ma zi ni hen'kan' \" `skk-romaji-*-by-hepburn' $B$,(B nil $B$G$"$l$P!"%m!<%^;z$X$NJQ49MM<0$r71Na<0$KJQ99$9(B $B$k!#Nc$($P!"(B\"$B$7(B\" $B$O%X%\%s<0$G$O(B \"shi\" $B$@$,!"71Na<0$G$O(B \"si\" $B$H$J$k!#(B" (interactive "r") (let ((arg '("-Ha" "-Ka" "-Ja" "-Ea" "-ka" "-s"))) (when skk-allow-spaces-newlines-and-tabs (setq arg (cons "-c" arg))) (unless skk-romaji-*-by-hepburn (setq arg (cons "-rk" arg))) (message "%s" (skk-kakasi-region start end arg)))) (defun skk-kakasi-region (start end arglist) ;; START $B$H(B END $B4V$NNN0h$KBP$7(B kakasi $B%3%^%s%I$rE,MQ$9$k!#(BARGLIST $B$r(B ;; kakasi $B$N0z?t$H$7$FEO$9!#(Bkakasi $B$N=PNO$rJV$9!#(B (unless (or skk-use-kakasi skk-kakasi-command) (skk-error "KAKASI $B$,%$%s%9%H!<%k$5$l$F$$$J$$$+!";HMQ$7$J$$@_Dj(B(%s)$B$K$J$C$F$$$^$9(B" "KAKASI was not installed, or %s is nil" "skk-use-kakasi")) ;; $BJ#?t<-=qBP1~(B (dolist (jisyo skk-gyakubiki-jisyo-list) (setq arglist (append arglist (list (expand-file-name jisyo))))) (let ((str (buffer-substring-no-properties start end))) ;; $BIQEY>pJs$r;H$C$F2?$+$*$b$7$m$$;H$$J}$,$G$-$k$+$J!)(B $B8=>u$G$O;H$C$F(B ;; $B$$$J$$!#(B ;;(hindo-file (skk-make-temp-file "skkKKS")) (with-temp-buffer ;; current buffer $B$,(B read-only $B$N$H$-$K(B current buffer $B$G(B call-process ;; $B$r8F$V$H(B destination buffer $B$rJL$K;XDj$7$F$$$F$b%(%i!<$K$J$k$N$G!"%j!<(B ;; $B%8%g%s$NJ8;zNs$r%o!<%/%P%C%U%!$KB`Hr$9$k!#(B (insert str) (unless (and (eq (apply 'call-process-region (point-min) (point) skk-kakasi-command ;; kakasi-2.2.5.hindo.diff $B$,Ev$C$F$$$k$H(B ;; $BI8=`%(%i!<=PNO$KIQEY>pJs$,=PNO$5$l$k!#(B 'delete-original-text ;;(list t hindo-file) '(t nil) nil (cons "-ieuc" (cons "-oeuc" arglist))) 0) (> (buffer-size) 0)) (skk-error "$BJQ49$G$-$^$;$s(B" "Cannot convert!")) (buffer-string)))) (run-hooks 'skk-kakasi-load-hook) (provide 'skk-kakasi) ;;; skk-kakasi.el ends here ddskk-15.1.54/skk-hint.el0000664000076600007660000001671712074457613014536 0ustar brutusbrutus;;; skk-hint.el --- SKK conversion with hints -*- coding: iso-2022-jp -*- ;; Copyright (C) 2001, 2003 Yoshiki Hayashi ;; Author: Yoshiki Hayashi ;; Keywords: japanese ;; This file is part of Daredevil SKK. ;; 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, 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 Daredevil SKK, see the file COPYING. If not, write to the ;; Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, ;; MA 02110-1301, USA. ;;; Commentary ;; $B$3$l$O"&%b!<%I$H"'%b!<%I$GFI$_$N@Q=89g(B ($B$_$?$$$J$b$N(B) $B$ruBV$K$J$j$^$9!#(B ;; ;; $B87L)$K@Q=89g$ruBV$K$J$j$^$9!#(B ;; ;; $B$D$^$j!"DL>o$NJQ498uJd$N$J$+$G!"%R%s%H$H$7$FM?$($i$l$?FI$_$r4^$s$@(B ;; $B4A;z$r;}$D$b$N$K8uJd$r9J$j$^$9!#(B ;; ;; -- Tips -- ;; ;; skk-hint.el $B$OC14A;z$N8uJd$,$?$/$5$s$"$k>l9g$K!"$=$3$+$i8uJd$r9J$j(B ;; $B$3$`o$KM-8z$G$9!#Nc$($P(B ;; ;; $B"&$+(B ;; ;; $B$rJQ49$9$k$H!"2c!"2=!"2D!"2!W$K4^$^$l$k(B ;; ;; $B"'2_(B ;; ;; $B$,>e0L$K8=$l$^$9!#(B ;;;Code (eval-when-compile (require 'skk-macs)) (require 'skk-vars) ;; is this necessary? (require 'skk-comp) (defadvice skk-search (around skk-hint-ad activate) ;; skk-current-search-prog-list $B$NMWAG$K$J$C$F$$$k%W%m%0%i%`$rI>2A$7$F!"(B ;; skk-henkan-key $B$r%-!<$K$7$F8!:w$r9T$&!#(B (if (null skk-hint-henkan-hint) ad-do-it (let (l kouho hint) (while (and (null l) skk-current-search-prog-list) (setq l (eval (car skk-current-search-prog-list))) (let ((skk-henkan-key (nth 0 skk-hint-henkan-hint)) (skk-henkan-okurigana (nth 1 skk-hint-henkan-hint)) (skk-okuri-char (nth 2 skk-hint-henkan-hint))) (setq hint (skk-nunion hint (eval (car skk-current-search-prog-list))))) (setq kouho (skk-nunion kouho l)) (setq l (skk-hint-limit kouho hint)) (setq skk-current-search-prog-list (cdr skk-current-search-prog-list))) (setq ad-return-value l)))) (defun skk-hint-setup-hint () (cond ((eq skk-hint-state 'kana) (skk-kana-cleanup t) (let ((hint (buffer-substring-no-properties skk-hint-start-point (point)))) (unless (string= hint "") (setq skk-hint-henkan-hint (list (if skk-katakana (skk-katakana-to-hiragana hint) hint)))))) ((eq skk-hint-state 'okuri) (let ((henkan-key (buffer-substring-no-properties skk-hint-start-point skk-hint-end-point)) (okurigana (buffer-substring-no-properties skk-hint-end-point (point)))) (unless (or (string= henkan-key "") (string= okurigana "")) (when skk-katakana (setq henkan-key (skk-katakana-to-hiragana henkan-key) okurigana (skk-katakana-to-hiragana okurigana))) (setq skk-hint-henkan-hint (list (concat henkan-key skk-hint-okuri-char) okurigana skk-hint-okuri-char))))) (t (skk-error "$BM=4|$7$J$$>uBV$G(B %s $B$,8F$P$l$^$7$?(B" "%s is called from unexpected place" "skk-hint-setup-hint"))) (setq skk-hint-inhibit-kakutei nil)) (defadvice skk-insert (around skk-hint-ad activate) (cond ((and skk-henkan-mode (eq (skk-last-command-char) skk-hint-start-char) (not skk-hint-state)) (skk-with-point-move (when (featurep 'skk-dcomp) (skk-dcomp-before-kakutei)) (setq skk-hint-inhibit-dcomp t) (skk-set-marker skk-hint-start-point (point)) (setq skk-hint-state 'kana skk-hint-inhibit-kakutei t))) ((and (eq skk-hint-state 'kana) (eq (skk-last-command-char) skk-start-henkan-char)) (skk-with-point-move (skk-hint-setup-hint) (delete-region skk-hint-start-point (point)) (setq skk-hint-state 'henkan) (setq skk-henkan-count -1) (setq skk-henkan-list nil) (skk-start-henkan arg))) ((and (eq skk-hint-state 'kana) (memq (skk-last-command-char) skk-set-henkan-point-key)) (skk-with-point-move (setq skk-hint-end-point (point)) (setq skk-hint-state 'okuri) (skk-set-last-command-char (skk-downcase (skk-last-command-char))) (setq skk-hint-okuri-char (skk-char-to-unibyte-string (skk-last-command-char))) (skk-kana-input arg) (when (skk-jisx0208-p (char-before)) (skk-hint-setup-hint) (delete-region skk-hint-start-point (point)) (setq skk-hint-state 'henkan) (setq skk-henkan-count -1) (setq skk-henkan-list nil) (skk-start-henkan arg)))) ((eq skk-hint-state 'okuri) (skk-with-point-move (skk-kana-input arg) (skk-hint-setup-hint) (delete-region skk-hint-start-point (point)) (setq skk-hint-state 'henkan) (setq skk-henkan-count -1) (setq skk-henkan-list nil) (skk-start-henkan arg))) (t ad-do-it))) (defadvice keyboard-quit (before skk-hint-ad activate) (setq skk-hint-inhibit-kakutei nil)) (defadvice abort-recursive-edit (before skk-hint-ad activate) (setq skk-hint-inhibit-kakutei nil)) (defadvice skk-previous-candidate (before skk-hint-ad activate) (when (and (eq skk-henkan-mode 'active) (not (string= skk-henkan-key "")) (zerop skk-henkan-count)) (setq skk-hint-henkan-hint nil skk-hint-state nil)) (setq skk-hint-inhibit-kakutei nil)) (defadvice skk-kakutei (around skk-hint-ad activate) (unless skk-hint-inhibit-kakutei ad-do-it)) (defadvice skk-kakutei-initialize (after skk-hint-ad activate) (setq skk-hint-henkan-hint nil skk-hint-start-point nil skk-hint-state nil skk-hint-inhibit-dcomp nil skk-hint-inhibit-kakutei nil)) (defadvice skk-delete-backward-char (before skk-hint-ad activate) (when (and (markerp skk-hint-start-point) (or (eq (1+ skk-hint-start-point) (point)) (eq skk-hint-start-point (point)))) (setq skk-hint-state nil skk-hint-inhibit-kakutei nil))) (defun skk-hint-member (char kouho) ;; $BJ8;zNs$N%j%9%H(B KOUHO $B$NCf$KJ8;z(B CHAR $B$r4^$`$b$N$,$"$l$P!"$=$NJ8;zNs$rJV$9(B (catch 'found (dolist (word kouho) (let ((length (length word))) (dotimes (i length) (if (eq char (aref word i)) (throw 'found word))))))) (defun skk-hint-limit (kouho hint) ;; $BJQ498uJd(B KOUHO $B$r!"J8;zNs$N%j%9%H(B HINT $B$NCf$N$I$l$+$NJ8;z$,(B ;; $B4^$^$l$F$$$k$b$N$N$_$K@)8B$9$k!#(B (let ((kouho (copy-sequence kouho)) result) (dolist (string hint) (let ((length (length string))) (dotimes (i length) (let (ret) (when (setq ret (skk-hint-member (aref string i) kouho)) (unless (eq (aref string i) ?\;) (setq result (cons ret result)) (delete ret kouho))))))) (nreverse result))) (provide 'skk-hint) ;;; Local Variables: ;;; End: ;;; skk-hint.el ends here ddskk-15.1.54/ChangeLog.10000664000076600007660000011674311675101126014364 0ustar brutusbrutus1999-11-03 Mikio Nakajima * experimental/skk-jisx0201.el (skk-jisx0201-search-and-replace): New function. (skk-hiragana-to-jisx0201-region): Use `skk-jisx0201-search-and-replace' and bug fixed. (skk-katakana-to-jisx0201-region): Ditto. 1999-10-31 Mikio Nakajima * skk-autoloads.el: Add autoload of `skk-jisx0201-mode', `skk-toggle-katakana' and `skk-jisx0201-henkan'. * SKK-MK (SKK_MODULES): Add `skk-jisx0201' and `skk-hankaku-mode'. * experimental/skk-hankaku-mode.el (skk-hankaku-henkan, skk-hankaku-region, skk-hiragana-to-hankaku-region, skk-katakana-to-hankaku-region): New function. (skk-toggle-zenkaku-hankaku): Convert hiragana/katakana in midasi into hankaku katakana in $B"&(B mode. 1999-10-30 Tsukamoto Tetsuo * experimental/skk-hankaku-mode.el: New experimental program. 1999-10-27 FUKANO Masaaki * doc/skk.texi ($BF~NO%b!<%I$r<($9%+!<%=%k?'$K4X$9$k@_Dj(B): typo fixed. 1999-10-25 Tsukamoto Tetsuo * skk.el (skk-status-indicator): New variable which decides where to show the current status of SKK. (skk-setup-modeline): New function. (skk-mode): Call it when `skk-init-file' is loaded. Set the value of `skk-input-mode-string' on entering/exiting skk-mode, if `skk-status-indicator' is left. 1999-10-24 Tsuyoshi AKIHO * skk-leim.el (default-input-method): Set `default-input-method' string "japanese-skk" instead of the symbol. 1999-10-23 Mikio Nakajima * skk-autoloads.el: Add autoload of `skk-abbrev-search'. * skk-vars.el: Ditto. * experimental/skk-study.el (skk-study-last-update): New internal variable. (skk-study-last-read): Ditto. (skk-study-time-lessp): New function. (skk-study-save): Refer to `skk-study-last-read', and refer to and set `skk-study-last-save'. (skk-study-read): Set `skk-study-last-read. * SKK-MK (SKK_MODULES): Add skk-abbrev. * experimental/skk-abbrev.el: New experimental program. * skk.el (skk-read-from-minibuffer-function): New user variable. (skk-henkan-in-minibuff): Use `skk-read-from-minibuffer-function'. 1999-10-23 Takeshi Ohmura * make.bat: set EMACS and PREFIX default value to be proper to Meadow 1.10. * READMEs/README.win: Update for Meadow 1.10. 1999-10-22 Mikio Nakajima * skk.el (skk-make-temp-file): New `skk-file-exists-and-writable-p'. Provide "~/tmp" as last choice of working directory. * skk-foreword.el (skk-file-exists-and-writable-p): New inline function. 1999-10-20 Mikio Nakajima * experimental/skk-lookup.el: Require poe.el for `defalias-maybe'. Define `skk-okurigana-prefix' as an alias for `skk-auto-okurigana-prefix' if `skk-okurigana-prefix' is not defined. (skk-lookup-option-alist): New 2th element, search method for okuri-ari and `skk-process-okuri-early' is nil. New 3th element, search method for okuri-ari and `skk-process-okuri-early' is non-nil. Make meaning of 4th element reverse. Not seach if nil. Change :type accordingly. (skk-lookup-default-option-list): New 1th element, search method for okuri-ari and `skk-process-okuri-early' is nil. New 2th element, search method for okuri-ari and `skk-process-okuri-early' is non-nil. Make meaning of 3th element reverse. Not seach if nil. Change :type accordingly. (skk-lookup-get-method): Get proper method according to okurigana and `skk-process-okuri-early'. (skk-lookup-get-nonsearch-sex): Change index accordingly. (skk-lookup-get-pickup-regexp): Ditto. (skk-lookup-get-split-regexp): Ditto. (skk-lookup-process-okurigana): New function. (skk-lookup-search): Use `skk-lookup-process-okurigana'. (skk-lookup-process-heading): Ditto. (skk-lookup-test-regexp): Add doc string. (skk-lookup-pickup-headings): Ditto. * experimental/skk-study.el (skk-study-save): Check coding-system by `find-coding-system', too. * skk.el (skk-auto-okurigana-prefix): Rename to `skk-okurigana-prefix'. (skk-remove-common): Use `skk-okurigana-prefix'. 1999-10-17 Mikio Nakajima * experimental/skk-study.el (skk-study-update): make-ring for `skk-study-data-ring' if nil. * experimental/skk-lookup.el (skk-lookup-option-alist): New 2th element, search method for okuri-nasi. And new 3th element, S expression not to search. (skk-lookup-default-option-list): Likewise. (skk-lookup-get-nonsearch-sex): New inline function. (skk-lookup-get-method): Pick up 1th element when okuri-ari, otherwise 0th. (skk-lookup-search): Change for `skk-lookup-option-alist' and `skk-lookup-default-option-list'. (skk-lookup-process-heading): Likewise. * SKK-MK (SKK-MK-config-package): Removed. (SKK-MK-config): Ditto. (default-load-path): Ditto. 1999-10-16 Mikio Nakajima * skk-leim.el: Specify `japanese-skk' and `japanese-skk-auto-fill' as string for `register-input-method' to work around Emacs bug. 1999-10-15 Mikio Nakajima * skk-num.el (skk-num-recompute): Use `with-temp-buffer' instead of `save-excursion'. * skk.el (skk-reread-private-jisyo): Rename optional argument QUIET to FORCE. 1999-10-15 Takao KAWAMURA , Mikio Nakajima * experimental/skk-study.el (skk-study-read): New optional argument FORCE. 1999-10-15 Mikio Nakajima * experimental/skk-study.el (skk-study-update): Bug fixed. 1999-10-12 Mikio Nakajima * skk-look.el (skk-look-command): Change defcustom type to `file'. * skk-isearch.el (skk-isearch-mode-cleanup): Remove minibuffer hooks. * skk.el (skk-use-relation, skk-use-rdbms): Remove experimental user options. (skk-regularize, skk-purge-from-jisyo, skk-mode, skk-public-jisyo-has-entry-p): Remove `skk-use-relation' and `skk-use-rdbms' related codes. 1999-10-11 Mikio Nakajima * make.bat: Don't set `PACKAGEDIR' and `V_S_LISPDIR' environment variables. 1999-10-10 Mikio Nakajima * experimental/skk-study.el (skk-study-search-1): New function. (skk-study-search): Use `skk-study-search-1'. (skk-study-update): If current update data is just same as the last one, don't save the current one. (skk-study-save): Keep fundamental mode for skk-study-file not to fontify by font-lock.el unnecessarily. (skk-study-read-1): Modify VERSION-STRING accordingly. Check `skk-jisyo-code' by `find-coding-system', too. (skk-study-convert-alist-format): Removed. (skk-study-save): Not to use `skk-study-convert-alist-format'. (skk-kakutei-initialize, skk-undo-kakutei): New advices. 1999-10-07 Mikio Nakajima * skk.el (skk-jisyo-code): :type fixed. (skk-rom-kana-base-rule-list): Doc modified. (skk-rom-kana-rule-list): Ditto. 1999-10-06 Tomotaka SUWA (skk-make-temp-file): Bug fixed. 1999-10-06 Mikio Nakajima * skk.el (skk-remove-common): Assign proper value to `skk-char-okurigana'. * SKK-MK (EMU_PREFIX): get environment variable `EMU_PREFIX' first. 1999-10-05 Mikio Nakajima * experimental/skk-study.el (skk-study-file): Use `convert-standard-filename'. (skk-study-backup-file): Ditto. (skk-study-working-buffer): Remove. (skk-study-read-1): Use `with-temp-buffer' instead of `save-excursion'. Check with `find-coding-system' if `coding-system-p ' returns nil. * experimental/skk-lookup.el (skk-lookup-test-regexp): New function. (skk-lookup-option-alist): Add "IWAKOKU" entry. 1999-10-04 Mikio Nakajima * experimental/skk-lookup.el (skk-lookup-get-method): Search `skk-lookup-option-alist' with index attaching prefix of book's name to NAME. (skk-lookup-get-pickup-regexp): Ditto. (skk-lookup-get-split-regexp): Ditto. (skk-lookup-search-agents): Use `copy-sequence' instead of `copy-list' for compatibility. (skk-lookup-option-alist): Add entries of jedict, GENIUS, GN99EP01, GN99EP02 and NEWANC. (skk-lookup-search): Bug fixed and slightly simplified. * skk-autoloads.el: Update autoloads. 1999-10-03 Mikio Nakajima * skk-vars.el: Update autoloads. * doc/skk.texi ($B$*4j$$(B): Add skk-dic ML e-mail address. * experimental/skk-lookup.el (skk-lookup-pickup-headings): Bind `lookup-gaiji-alternate' to null string and not bind `lookup-enable-gaiji' to nil. (skk-lookup-search): Ditto. New temporary variable PICKUP-REGEXP and SPLIT-REGEXP. Do not use `skk-lookup-process-heading' when both PICKUP-REGEXP and SPLIT-REGEXP is nil. (skk-lookup-process-heading): Simplify slighly. New arguments PICKUP-REGEXP and SPLIT-REGEXP. Discard temporary variable of the same names. Process properly when only SPLIT-REGEXP is specified and PICKUP-REGEXP is nil. * skk.el (skk-mode): Require skk-leim.el when running Mule3, Mule4, XEmacs 20.3 or later. * skk-leim.el: Set `current-language-environment' to "Japanese". Set `default-input-method' to `japanese-skk'. * skk-gadget.el (skk-number-style): Modify document. * skk-tut.el (skk-tut): New group. * skk-isearch.el (skk-isearch-mode-string-alist): Tagify. * (skk-isearch-mode-string-alist): Specify type and tagify. * skk-num.el (skk-num-type-alist): Specify type and tagify. * skk-gadget.el (skk-number-style): Ditto. * skk-server.el (skk-servers-list): Ditto. * skk-kakasi.el (skk-use-kakasi): Bind default variable to return variable of `(exec-installed-p "kakasi")'. * skk-num.el (skk-num-type5-kanji): Bug fixed. * experimental/skk-lookup.el (skk-lookup-search-agents): Use `copy-list' instead of `coyu-sequence'. 1999-10-02 Mikio Nakajima * experimental/skk-lookup.el (skk-lookup-pickup-pattern, skk-lookup-split-pattern): Removed. (skk-lookup-search-agents, skk-lookup-option-alist, skk-lookup-default-option-list, skk-lookup-search-modules): New user variables. (skk-lookup-agent-list, skk-lookup-default-module, skk-lookup-module-list): New internal variables. (skk-lookup-get-method, skk-lookup-get-pickup-regexp, skk-lookup-get-split-regexp): New inline functions. (skk-lookup-search): Use `skk-lookup-default-module'. Bind `lookup-enable-gaiji' to nil not to put out gaiji. Get search method by each dictionary. (skk-lookup-process-heading): Get regexp from name of dictionary. (skk-lookup-default-module, skk-lookup-module-list, skk-lookup-new-module, skk-lookup-agent-list, skk-lookup-pickup-headings): New functions. 1999-09-30 Mikio Nakajima * skk-num.el: Require cl only when compiling. * experimental/skk-lookup.el: Require cl when compiling. (skk-lookup-pickup-pattern): Change regexp for multiple `$B!Z(B' and `$B![(B' pair. (skk-lookup-process-heading): New function. (skk-lookup-search): Use `skk-lookup-process-heading'. * skk-foreword.el (skk-get-current-candidate-simply): Add error checking. * skk.el (kill-buffer): Do `skk-kakutei' only when `kill-buffer' is called interactively. 1999-09-29 Mikio Nakajima * experimental/skk-lookup.el: New file. 1999-09-28 Mikio Nakajima * doc/skk.texi (SKK$B4XO"%=%U%H%&%'%"(B): Add `skkfep$BFbB"(Bjvim' node. 1999-09-27 Mikio Nakajima * experimental/tut-code/skk-tutcdef.el (skk-tutcode-use-touch16+): Add Touch16+ code to `skk-rom-kana-rule-list' when `skk-tutcode-use-touch16+' is non-nil. * experimental/tut-code/skk-tutcode.el (skk-tutcode-display-code-1): Use `skk-char-octet' instead of `char-octet'. (skk-tutcode): New group. (skk-tutcode-use-touch16+): New user variable. 1999-09-26 Mikio Nakajima * doc/skk.texi (SKK$B4XO"%=%U%H%&%'%"(B): Add `SKK95' node. 1999-09-25 Mikio Nakajima * SKK-MK: Rewritten to get Emacs Lisp variables from shell variables in the command line. * skk-kcode.el (skk-input-by-code-or-menu-jump): Use temporary variable `REST' and `CH'. * tinyinstall.el (tinyinstall-add-load-path): New function. * skk-autoloads.el (skk-submit-bug-report): Add `skk-submit-bug-report' entry. * skk-develop.el: Move from experimental directory. (skk-submit-bug-report): Take from skk.el. Define Wanderlust as mail-user-agent when `mail-user-agent' is `wl-user-agent'. (skk-ml-address): Take from skk.el. * skk-kcode.el (skk-display-code): Use `skk-char-octet' instead of `char-octet'. * skk.el (skk-auto-okurigana-prefix): Ditto. (skk-set-henkan-point): Ditto. (skk-make-temp-file): Use `temporary-file-directory'. * skk-viper.el (skk-jisx0208-p): Removed. 1999-09-24 Mikio Nakajima * skk-foreword.el (skk-str-length, skk-substring, skk-read-event, skk-char-to-string, skk-ascii-char-p, skk-str-ref, skk-jisx0208-p, skk-jisx0208-numeric-char-p): Define with `skk-defsubst-cond'. (skk-make-char, skk-charsetp, skk-jisx0208-to-ascii): Define with `skk-defun-cond'. * skk-kcode.el (skk-display-code): New function. (skk-display-code-for-char-at-point): Use `skk-display-code'. * SKK-MK (SKK-MK-config): Recalc `SKK_LISPDIR' variable when `PREFIX' is specified in command line. * doc/skk.texi (SKK$B4XO"%=%U%H%&%'%"(B): Add `dbskkd-cdb' node. 1999-09-23 Mikio Nakajima * experimental/skk-develop.el: `def-edebug-spec' for `skk-defun-cond', `skk-defmacro-cond' and `skk-defsubst-cond'. * experimental/skk-dcomp.el: New file. * skk.el (skk-henkan-face): Simply specify 'highlight. (skk-faces): New group. (skk-henkan-face-on): Define using `defun' instead of `skk-defun-cond'. (skk-henkan-face-off): Ditto. (skk-henkan-face-on): Use `skk-face-on'. (skk-detach-extent): New function. (skk-henkan-face-off): Use 'skk-detach-extent'. (skk-set-jisyo-code): Remove. (skk-get-jisyo-buffer): Not to use `skk-set-jisyo-code'. * skk-foreword.el (skk-defmacro-cond): New macro. (skk-face-on): New macro. * skk-tut.el (skk-tut-section-face): Use `defface' instead of `defcustom'. (skk-tut-do-it-face): Ditto. (skk-tut-question-face): Ditto. (skk-tut-key-bind-face): Ditto. (skk-tut-hint-face): Ditto. 1999-09-22 TSUMURA Tomoaki * skk.el (skk-get-jisyo-buffer): Add check using `find-coding-system' to check using `coding-system-p'. (skk-save-jisyo-1): Ditto. 1999-09-22 Mikio Nakajima * skk.el (skk-face-on): Moved from skk-dcomp.el. (skk-detach-extent): Ditto. (skk-henkan-face-on): Use `skk-face-on'. (skk-henkan-face-off): Use `skk-detach-extent'. * SKK-CFG: Add `APEL_SPECIFIC_LISPDIR' entry. * SKK-MK: Ditto. Require `tinyinstall.el'. Load `SKK-CFG' before cunstructing `load-path'. Add `APEL_SPECIFIC_LISPDIR' directory to `load-path' if `APEL_SPECIFIC_LISPDIR' is existing directory. * tinyinstall.el: New file. 1999-09-21 Masahiko Sato * vip.el (vip-escape-to-emacs): Bug fix. Use (buffer-name old-buff) to check if the buffer OLD-BUFF still exists. 1999-09-20 Mikio Nakajima * skk.el (skk-submit-bug-report): Remove `skk-use-rdbms' from LIST (because it is an experimental option). 1999-09-20 Yuh Ohmura * make.bat: set `PREFIX' variable. * READMEs/README.win: Add description about `PACKAGEDIR'. 1999-09-20 Rei FURUKAWA * skk-foreword.el (skk-make-char): Bug fixed. 1999-09-19 Mikio Nakajima * skk.el (skk-get-jisyo-buffer): Not to use temporary variable `FILE'. Use first argument `FILE' directly instead. 1999-09-17 Mikio Nakajima * SKK-MK (SKK-MK-running-xemacs): New constant. (SKK-MK-texinfo-coding-system): Use `SKK-MK-running-xemacs'. (SKK-MK-install): Call `SKK-MK-cleanup-trouble-makers' when either `SKK-MK-running-xemacs' and `SKK-MK-cleanup-trouble-makers' are non-nil. (SKK-MK-cleanup-trouble-makers): Bug fixed. Bind default variable to nil. (SKK-MK-running-xemacs): Declare on top of file. (SKK-MK-texinfo-coding-system): Ditto. (SKK_MODULES): Add `skk-vars' if `skk-leim.el' is dumped into XEmacs. (skk-vars.el): Revive (for XEmacs dumped with non-package SKK 10.38). * Makefile (CHMOD): New variable. (checkin): New entry. (tar): Refer to `CHMOD' variable. 1999-09-16 Yuh Ohmura * READMEs/README.win: New file. 1999-09-16 Mikio Nakajima * experimental/skk-tutcdef.el: Apply patch of14294.63921.879835.8921F@osaka.email.ne.jp. * SKK-CFG: Add `SKK-MK-cleanup-trouble-makers' entry. * make.bat: Change default EMACS variable to `c:\usr\meadow\1.00\bin\meadow95.exe'. * SKK-MK (SKK-MK-config): Recalculate `LISPDIR', `SKK_DATADIR' and `SKK_INFODIR' when `PREFIX' is specified in command line, and `SKK_LISPDIR' when `LISPDIR is done.' (SKK-MK-config-package): Recalculate `PACKAGE_INFODIR', `SKK_PACKAGE_DATADIR' and `SKK_PACKAGE_LISPDIR' when `PACKAGEDIR' is specified in command line. (SKK-MK-cleanup-trouble-makers): New function. (SKK-MK-install): Not to `cd' DOCDIR, ETCDIR and `..'. (SKK-MK-install-package): Ditto. Call `SKK-MK-cleanup-trouble-makers' if `SKK-MK-cleanup-trouble-makers' is non-nil. (SKK-MK-texinfo-format): Bound `buffer-read-only' to nil. Expand file name of each arg in DOCDIR. * skk-tut.el: Change Iida San's mail address. (skktut-init-variables-alist): Bug fixed. (skk-tut-file): Specify `/usr/local/share/skk' directory for non-package install instead of `data-directory'. * doc/skk.texi: Add `@directry' for XEmacs package install. Remove obsolete `skk-insert-[aiue]' descriptions. 1999-09-15 Mikio Nakajima * skk-foreword.el (skk-package-data-directory): New constant. * skk-tut.el: Require skk.el. (skk-tut-file): Search package installed data file for XEmacs referring to `skk-package-data-directory'. (skk-tut-file-alist): Refer to `skk-tut-file'. * skk.ex: New file to make tarball easily. * Move all lisp program to top directory. * SKK-MK, SKK-CFG: Totally rewritten for easy configurations referring to WL-MK of Wanderlust. * SKK-ELS: discarded. * Makefile: Change for new SKK-MK. * make.bat: Ditto. * skk.el (exit-minibuffer): Adjust `minibuffer-setup-hook' and cursor color before doing actual job. (skk-reread-private-jisyo): Use `with-current-buffer' instead of `save-excursion'. * vip.el: Require poe.el for `convert-standard-filename'. (vip-insert-point, vip-com-point): Set initial value to nil to keep buffer local variable. (vip-move-marker-locally): New macro. (vip-Region, vip-backward-Word, vip-backward-char, vip-backward-paragraph, vip-backward-sentence, vip-backward-word, vip-beginning-of-line, vip-bol-and-skip-white, vip-change-mode, vip-end-of-Word, vip-end-of-word, vip-find-char, vip-find-char-backward, vip-find-char-forward, vip-forward-Word, vip-forward-char, vip-forward-paragraph, vip-forward-sentence, vip-forward-word, vip-goto-char-backward, vip-goto-char-forward, vip-goto-col, vip-goto-eol, vip-goto-line, vip-goto-mark-subr, vip-line, vip-next-line, vip-next-line-at-bol, vip-paren-match, vip-previous-line, vip-previous-line-at-bol, vip-region, vip-repeat-find, vip-repeat-find-opposite, vip-search-backward, vip-search-forward, vip-window-bottom, vip-window-middle, vip-window-top): Use `vip-move-marker-locally' instead of `move-marker'. (vip-escape-to-emacs): Use `eq' instead of `equal' to compare buffer type lisp objects. 1999-09-11 Mikio Nakajima * lisp/vip.el (vip-startup-file): `convert-standard-filename' takes regular UNIX filename only. 1999-09-10 Mikio Nakajima * lisp/skk.el (skk-init-file, skk-jisyo, skk-backup-jisyo, skk-record-file, skk-emacs-id-file): Use `convert-standard-filename'. 1999-09-04 GUNJI Takao * experimental/tut-code/skk-tutcode.el (skk-tutcode-display-code-1): Bug fixed. 1999-09-03 Mikio Nakajima * lisp/skk-foreword.el (skk-uninsertable-p): Removed. * lisp/skk.el (skk-insert): Do not use `skk-uninsertable-p'. 1999-09-02 Mikio Nakajima * lisp/skk-develop.el: Move to experimental directory. * lisp/skk-isearch.el: Require skk.el. Modify install note for isearch-mode-end-hook. * lisp/skk.el (skk-update-jisyo-1): Bug fixed. 1999-08-31 Mikio Nakajima * lisp/SKK-ELS (skk-modules): Add skk-autoloads to `skk-modules'. * lisp/SKK-MK (config-skk-package): Remove skk-autoloads from `skk-modules'. * lisp/skk-foreword.el (skk-erase-prefix): When error is occured by deleting `skk-prefix', initialize `skk-kana-start-point', `skk-prefix' and `skk-current-rule-tree'. * lisp/skk.el (skk-delete-okuri-mark): Check `skk-okurigana-start-point' is a marker. (skk-mode): Require skk-autoloads. 1999-08-30 TSUMURA Tomoaki * lisp/skk-tut.el (skktut-init-variables-alist): Bug fixed. 1999-08-30 Mikio Nakajima * lisp/skk.el (skk-delete-backward-char): Delete `*' and initialize okuri-ari related variables for okuri-ari. 1999-08-29 Mikio Nakajima * lisp/skk-develop.el: Created. * lisp/skk-tut.el (skktut-init-variables-alist): Remove `skk-use-vip' entry. * lisp/skk.el (skk-save-jisyo-original): Initialize `skk-update-jisyo-count'. (skk-update-jisyo-original): Do not initialize `skk-update-jisyo-count'. (skk-kana-cleanup-command-list): New constant. (skk-uninsertable-p): Move skk-foreword.el and make it inline. Define with `skk-defsubst-cond' and check all extents, not just text-properties for XEmacs. (skk-henkan-face-on, skk-henkan-face-off): Use `skk-defun-cond. Use extent for XEmacs. (skk-change-cursor-when-ovwrt): Use `skk-defun-cond. (skk-save-jisyo-original): Call `fillarray' instead of `make-vector'. * lisp/skk-foreword.el (skk-pre-command): Use `skk-kana-cleanup-command-list'. (skk-terminal-face-p): Move to skk.el. (skk-defun-cond, skk-defsubst-cond): New macros (borrowed from poe.el). * lisp/skk-viper.el (skk-viper-or-vip): Rename to `skk-viper-use-vip-prefix'. (skk-viper-normalize-map-function, skk-viper-advice-select, viper-hide-replace-overlay): Use `skk-viper-use-vip-prefix'. 1999-08-29 Masahiko Sato * vip.el (vip-delete-backward-char): skk-mode $B$,(B t $B$N$H$-$N=hM}$r(B $B2~NI!#(B 1999-08-28 Masahiko Sato * vip.el (skk-pre-command): defadvice $B$G(B skk-foreword.el $B$G$NDj5A(B $B$rJQ99!#(B * skk-foreword.el (skk-pre-command): this-command $B$,(B vip-delete-backward-char $B$N>l9g$N=hM}$r(B vip.el $B$K0\$7$?!#(B 1999-08-27 Masahiko Sato * vip.el (vip-skk-mode-on): (add-hook 'pre-command-hook 'skk-pre-command nil 'local) $B$rDI2C!#(B (vip-skk-mode-off): $B0J2<$N9T$r:o=|(B (setq skk-mode nil) (vip-skk-mode-off): (if skk-abbrev-mode (skk-j-mode-on)) $B$r@hF,$KDI2C!#JQ?t(B vip-skk-abbrev-mode $B$,ITMW$K$J$C$?!#(B * skk-foreword.el (skk-pre-command): skk-pre-command $B$r * skk.el: vip $B4XO"$N%3!<%I$r$9$Y$F:o=|!#(B (skk-mode): $B:G=i$K(B skk-mode $B$KF~$C$?$H$-!'(B (require 'skk-autoloads) (if skk-use-numeric-conversion (require 'skk-num)) $B$rDI2C(B. (skk-input-mode-string): buffer local $B$K$7$?!#M}M3$OJ#?t$N(B mode line $B$,$"$k$H$-!"B>$N(B mode line $B$K1F6A$7$J$$$h$&$K$9$k$?$a!#(B (skk-update-jisyo-original): $BCzEY(B skk-jisyo-save-count $B2s$@$1<-=q(B $B$r99?7$7$?$H$-$K%;!<%V$9$k$h$&$K$7$?!#$3$l$^$G$O!"Nc$($P!"(B skk-jisyo-save-count $B$,(B 50 $B$J$i$P(B 51 $B2s99?7$7$?$H$-$K<-=q$,%;!<%V(B $B$5$l$F$$$?!#(B * skk-foreword.el (skk-erase-prefix): skk-kana-start-point $B$,(B (point-max) $B$+$I$&$+$r%A%'%C%/$9$k$h$&$K$7$?!#(B * skk-autoloads.el: (provide 'skk-autoloads) $B$rDI2C!#(B (autoload 'skk-version "skk" nil t nil) $B$r(B comment out$B!#(B * vip.el: minor mode $B$H$7$F 12b (vip-info-on-file): line number $B$N7W;;$r=$@5!#(B (vip-delete-backward-char): $B:G8e$NItJ,$r0J2<$N$h$&$KJQ99!#(B (if (and skk-mode (skk-get-prefix skk-current-rule-tree)) (skk-erase-prefix 'clean) (delete-backward-char val t)))) 1999-08-19 Yuh Ohmura * lisp/skk.el (skk-rom-kana-base-rule-list): Remove `("mm" "c" ("$B%C(B" . "$B$C(B"))' entry. * (skk-rom-kana-rule-list): Add `("mm" "m" ("$B%s(B" . "$B$s(B"))' entry to insert $B!V$,$s$^!W(B by "gamma". 1999-08-19 Mikio Nakajima * lisp/skk-look.el (skk-look-1): Bug fixed. 1999-08-19 GUNJI Takao * lisp/skk.el (skk-kuten-touten-alist): Typo and bug fixed. * (skk-rom-kana-base-rule-list): Bug fixed. * (skk-insert): Enable to include same string as `skk-start-henkan-char' in car of `skk-rom-kana-base-rule-list'. 1999-08-18 TSUMURA Tomoaki * lisp/skk-foreword.el (skk-substring): For mule2. Bug fixed. 1999-08-18 Mikio Nakajima * lisp/skk.el (skk-henkan-face-on): Omit check whether `skk-henkan-start-point' and `skk-henkan-end-point' have really buffer local markers of current buffer. * Do not use CBUF temporary variable. 1999-08-17 SAKAI Kiyotaka * lisp/skk.el (skk-uninsertable-p): New function. * (skk-insert): Use `skk-uninsertable-p' to check if point is really insertable or not. 1999-08-16 Mikio Nakajima * lisp/skk-viper.el (skk-jisx0208-p): Can use on Mule 2 or earlier. * (viper-join-lines): Use `progn' instead of `skk-save-point'. * (vip-join-lines): Ditto. * lisp/skk-vip.el (skk-jisx0208-p): New inline function. * (vip-join-lines): Adviced. Remove white spaces that exists between the joined line if characters of both side are JISX0208. 1999-08-15 Mikio Nakajima * lisp/SKK-ELS: Remove unnecessary `progn'. * Require vip.el even if there is viper.el. * Check 'berkdb feature to examine XEmacs has the database feature. * lisp/skk-vip.el (vip-change-mode-to-vi): Adviced. If `skk-mode' is non-nil, kakutei and turn on skk-latin-mode. * lisp/skk-autoloads.el (skk-vip-mode): Add autoload definition. 1999-08-02 IIDA Yosiaki * lisp/skk-kcode.el (skk-input-by-code-or-menu): Bug fixed. 1999-04-11 Mikio Nakajima * experimental/skk-study.el: New experimental program. * lisp/skk.el (skk-kana-input): Use `skk-get-prefix' to access skk-prefix. (skk-menu-modified-user-option): Removed. 1999-04-10 Mikio Nakajima * lisp/skk-server.el (skk-server): Change group prefix to `skk-server-'. (skk-report-server-response): Renamed to `skk-server-report-response'. (skk-remote-shell-program): Renamed to `skk-server-remote-shell-program'. * lisp/skk-obsolete.el (skk-obsolete-check-all-files): New command. (skk-obsolete-check-all-files-1): New function. (skk-obsolete-check): Renamaed to `skk-obsolete-check-1'. (skk-obsolete-check): Cover function/command for `skk-obsolete-check-1'. Do not check all relative files (check one file per one command session). Enable to designate filename interactively. * lisp/skk-num.el (skk-num): Change group prefix to `skk-num-'. (skk-numeric-conversion-float-num): Rename to `skk-num-convert-float'. (skk-update-jisyo-for-numerals): Renamed to `skk-num-update-jisyo'. (skk-compute-numeric-henkan-key): Renamed to `skk-num-compute-henkan-key'. (skk-numeric-convert): Renamed to `skk-num-convert'. (skk-numeric-convert*7): Renamed to `skk-num-convert*7'. (skk-raw-number-to-skk-rep): Renamed to `skk-num-rawnum-exp'. (skk-raw-number-to-skk-rep-1): Renamed to `skk-num-rawnum-exp-1'. (skk-flatten-list): Renamed to `skk-num-flatten-list'. (skk-jisx0208-latin-num-str): Renamed to `skk-num-jisx0208-latin'. (skk-shogi-num-str): Renamed to `skk-num-shogi'. (skk-recompute-numerals): Renamed to `skk-num-recompute'. (skk-recompute-numerals-key): Renamed to `skk-num-recompute-key'. (skk-uniq-numerals): Renamed to `skk-num-uniq'. (skk-init-numeric-conversion-variables): Renamed to `skk-num-initialize'. (skk-numeric-midasi-word): Renamed to `skk-num-henkan-key'. (skk-kanji-num-str): Renamed to `skk-num-type2-kanji'. (skk-kanji-num-str2): Renamed to `skk-num-type3-kanji'. (skk-kanji-num-str2-subr): Renamed to `skk-num-type3-kanji-1'. (skk-kanji-num-str3): Renamed to `skk-num-type5-kanji'. (skk-kanji-num-str3-subr): Renamed to `skk-num-type5-kanji-1'. (skk-adjust-numeric-henkan-data): Renamed to `skk-num-process-user-minibuf-input'. * lisp/skk.el (skk-kakutei-cleanup-henkan-buffer): Renamed to `skk-kakutei-cleanup-buffer' (Shorten its name). * lisp/skk-vip.el (skk-kakutei-cleanup-henkan-buffer): Likewise. * lisp/skk-num.el (skk-last-num-list, skk-init-numeric-conversion-variables): Remove `skk-last-num-list' (Merged into `skk-last-henkan-data'). * lisp/skk-foreword.el (skk-mode-off): Remove `skk-last-henkan-results'. * experimental/dbm/skk-dbm.el (skk-dbm-update-jisyo): Likwise. * lisp/skk.el (skk-setup-auto-paren): Remove unnecessary temporary variable `cell'. (skk-update-jisyo-original): Remove temporary variable `last'. Add `henkan-buffer'. (skk-search-jisyo-file): Add temporary variable `henkan-buffer'. (skk-kakutei): Remove `skk-last-henkan-results'. (skk-last-kakutei-henkan-key, skk-henkan-1, skk-previous-candidate): Remove `skk-last-kakutei-henkan-key'. (skk-last-henkan-key, skk-last-henkan-okurigana, skk-last-henkan-list, skk-last-okuri-char): Merged into `skk-last-henkan-data'. (skk-previous-candidate, skk-undo-kakutei): Use `skk-get-last-henkan-data'. (skk-kakutei-save-and-init-variables): Renamed to `skk-kakutei-initialize' (Shorten its name). * lisp/skk-foreword.el (skk-get-last-henkan-data): New inline function. * lisp/skk-tut.el (skktut-end-tutorial): Remove unnecessary temporary variable `exit'. * experimental/skk-attr.el (skk-attr-default-update-function): Removed. * lisp/skk.el (skk-search-jisyo-file): Funcall `skk-search-end-function' instead of `skk-attr-search-function'. * experimental/dbm/skk-dbm.el (skk-dbm-search-jisyo-database): Likewise. * lisp/skk.el (skk-update-jisyo-original): Funcall `skk-update-end-function' instead of `skk-update-relation. * experimental/dbm/skk-dbm.el (skk-dbm-update-jisyo): Likewise. * lisp/skk.el (skk-search-end-function, skk-update-end-function): New user variables. 1999-04-08 Mikio Nakajima * lisp/skk.el (skk-mode): Do not funcall `skk-viper-normalize-map-function' (as it is called in skk-viper.el). * lisp/skk-tut.el (skktut-enable-tutmap): Bind `inhibit-quit' to t. (skktut-disable-tutmap): Likewise. * lisp/skk-kakasi.el (skk-gyakubiki-region): Do not use `combine-after-change-calls'. (skk-gyakubiki-katakana-region): Likewise. (skk-hurigana-region): Likewise. (skk-hurigana-katakana-region): Likewise. (skk-romaji-region): Likewise. * lisp/skk-tut.el (skktut-enable-tutmap, skktut-disable-tutmap): Use `set-modified-alist'. * lisp/skk-viper.el (skk-viper-normalize-map): Likewise. * lisp/skk-server.el (skk-adjust-search-prog-list-for-server-search): Use `remove-alist'. 1999-04-07 Mikio Nakajima * lisp/SKK-CFG: Search APEL installed directory and add it to load-path. 1999-04-05 Mikio Nakajima * lisp/skk-foreword.el: Require alist.el. * lisp/skk.el: Use `set-modified-alist' for minor-mode-map-alist. (skk-henkan-show-candidates): Print null message to clear out candidates in echo area after a candidate are selected. (skk-setup-auto-paren): Use `remove-alist'. 1999-04-03 Mikio Nakajima * lisp/skk.el (minibuffer-exit-hook): Use `remove-hook' instead of `remove-local-hook'. * lisp/skk-foreword.el (skk-mode-off): Likewise. * lisp/skk.el (abort-recursive-edit, query-replace-regexp, query-replace, minibuffer-keyboard-quit, skk-mode, skk-henkan-in-minibuff, minibuffer-exit-hook): Use `add-hook' instead of `add-local-hook'. * lisp/skk-obsolete.el (skk-obsolete-function-alist): Add `(skk-set-cursor-color-properly . skk-set-cursor-properly)' entry. 1999-03-27 Mikio Nakajima * lisp/skk-look.el (skk-look-1): Do not output null candidate. (skk-look-working-buffer): Downcase its name. 1999-03-27 Yuh Ohmura * lisp/make.bat: Created. 1999-03-26 Mikio Nakajima * lisp/skk-kcode.el (skk-input-by-code-or-menu-jump): Use `?\040' instead of `?\ '. 1999-03-25 Mikio Nakajima * experimental/dbm/skk-dbm.el (skk-dbm-make-jisyo): Use `insert-file-contents-as-coding-system' instead of `insert-file-contents'. 1999-03-22 SUZUKI Hitoshi * lisp/skk-look.el (skk-look-1): Bug fixed. 1999-03-22 Mikio Nakajima * lisp/skk-tut.el (kill-buffer): Remove unnecessary `interactive' form. * lisp/skk-isearch.el (skk-isearch): Change `skk-' prefix to `skk-isearch'. * lisp/skk-kcode.el (skk-kcode): Likewise. * lisp/skk-look.el (skk-look): Likewise. * experimental/dbm/skk-dbm.el (skk-dbm): Likewise. * lisp/skk-kcode.el: Rearrange `;;;###autoload' cookies, (skk-kcode-load-hook): Bug fixed. * lisp/skk.el: Rearrange `;;;###autoload' cookies, (skk-save-jisyo-1): Use `write-region-as-coding-system' instead of `write-region'. (skk-get-jisyo-buffer): Use `insert-file-contents-as-coding-system' instead of `insert-file-contents'. (skk-set-jisyo-code): Remove `set-file-coding-system' (APEL has an alias to `set-buffer-file-coding-system'). 1999-03-20 Mikio Nakajima * lisp/skk-num.el (skk-numeric-convert): Hand integer instead of character to `skk-num-exp'. (skk-num-type-alist): Change each element of alist `(character . function)' to `(integer . function)'. * lisp/skk-isearch.el (skk-isearch-mode-string-alist, skk-isearch-start-mode, skk-isearch-use-previous-mode, skk-isearch-initial-mode-when-skk-mode-disabled, skk-isearch-whitespace-regexp): Documented in Japanese. * lisp/skk-comp.el (skk-dabbrev-like-completion): Doc improved. 1999-03-16 Mikio Nakajima * lisp/skk-foreword.el (skk-make-raw-arg): Bug fixed. 1999-03-14 Mikio Nakajima * lisp/skk.el (skk-make-face, skk-remove-common): Remove unused temporary variable. * lisp/skk-server.el (skk-open-server-1): Likewise. * lisp/skk-kakasi.el (skk-hurigana-1): Likewise. * lisp/skk-auto.el (skk-okuri-search-subr-original): Likewise. 1999-03-09 Seiichi NAMBA * lisp/skk.el (newline): Work around with `do-auto-fill' which always returns t. 1999-03-01 Kenji Yamashita * lisp/skk-kcode.el (skk-display-code-for-char-at-point): Bug fixed. 1999-02-20 $B>>0f9'M:(B/MATUI Takao * lisp/skk-isearch.el (skk-isearch-breakable-character-p-function): Bug fixed. 1999-02-19 Murata Shuuichirou * lisp/skk-leim.el (skk-auto-fill-inactivate): New function. * (skk-auto-fill-activate): Bug fixed. 1999-02-11 Mikio Nakajima * lisp/skk-obsolete.el (skk-obsolete-variable-alist): Put in `skk-num-type-list' and `skk-num-type-alist' pair. * lisp/skk-num.el (skk-kanji-num-str2-subr, skk-kanji-num-str3-subr): Bug fixed. (skk-last-num-list): New internal variable. (skk-init-numeric-conversion-variables): Keep previous variable of `skk-num-list' in `skk-last-num-list'. (skk-num-type-list): Renamed to `skk-num-type-alist'. * lisp/skk.el (skk-undo-kakutei): Bug fixed. 1999-02-07 Mikio Nakajima * lisp/skk-kcode.el: (skk-jis-char-to-hex): Removed. (skk-char-to-hex): New optional arg JISCHAR. (skk-input-by-code-or-menu): Use `skk-error' instead of `error'. * lisp/skk-num.el (skk-kanji-num-str2-subr): Bug fixed. (skk-compute-numeric-henkan-key): Can use `,' in midasi number key. (skk-kanji-num-str3-subr): New function. (skk-num-alist-type5): New constant. 1999-01-31 Mikio Nakajima * lisp/skk-foreword.el (skk-with-point-move): New macro. (skk-after-point-move): New inline function. * lisp/skk.el (skk-previous-point): New internal local variable. (skk-mode): Make `post-command-hook' local variable and add `skk-after-point-move' to the hook. (skk-try-completion, skk-insert, skk-abbrev-period, skk-abbrev-comma, skk-jisx0208-latin-insert, skk-delete-backward-char, skk-previous-candidate, skk-kakutei, skk-undo-kakutei, skk-start-henkan, skk-set-henkan-point-subr, skk-purge-from-jisyo, skk-hiragana-henkan, skk-jisx0208-latin-henkan, skk-latin-henkan): Use `skk-with-point-move'. 1999-01-27 Mikio Nakajima * lisp/skk-isearch.el (skk-isearch-mode-cleanup): Synchronize mode-line string with the current insert mode. 1999-01-26 Murata Shuuichirou * lisp/skk.el (skk-lisp-prog-p): Bug fixed. 1999-01-20 Hideki SAKURADA * lisp/skk-attr.el, lisp/skk-dbm.el, lisp/skk-look.el, lisp/skk-rdbms.el: Symbolic link removed. * lisp/Makefile.am (SOURCES, EXTRA_DIST): Prepend pathnames like `../experimental' to some targets. Move skk-obsoletes.el. (install-lispLISP, uninstall-lispLISP): New target to install all elc in $(DESTDIR)$(lispdir) using basename. (clean-lisp): New target to clean not only $(ELCFILES) but also skk-vars.el. * lisp/make-vars.el (skk-files): Removed. (make-skk-vars): Use command-line-args-left instead of skk-files. 1999-01-19 Mikio Nakajima * lisp/skk.el (skk-katakana-henkan, skk-hiragana-henkan, skk-jisx0208-latin-henkan, skk-latin-henkan, skk-*-henkan-1): Bug fixed. 1999-01-16 Mikio Nakajima * experimental/dbm/skk-dbm.el (skk-dbm-database-subtype): New user variable. (skk-dbm-get-jisyo-database): Determine database type, subtype, and opening permission according to its file name and hand them as options to `open-database'. Do writable check of directory only when dictionary is private one. (skk-dbm-make-jisyo): Determine coding-system-for-read according to `skk-jisyo-code'. `set-database-property' only for gdbm file. Create new optional arg SUBTYPE. (skk-dbm-large-jisyo): Change its default value to berkeley-db type file naming. * lisp/Makefile.am (SOURCES): Comment out skk-dbm.el and skk-rdbms.el. 1999-01-16 Murata Shuuichirou * lisp/skk.el (skk-delete-backward-char): Bug fixed. 1999-01-08 Takao KAWAMURA * lisp/skk.el (skk-kill-emacs-without-saving-jisyo): Bug fixed. 1999-01-02 Mikio Nakajima * experimental/dbm/skk-dbm.el: Add new experimental program. ;; Local Variables: ;; coding: iso-2022-jp ;; End: ddskk-15.1.54/skk.el0000664000076600007660000061623712232230451013562 0ustar brutusbrutus;; skk.el --- Daredevil SKK (Simple Kana to Kanji conversion program) -*- coding: iso-2022-jp -*- ;; Copyright (C) 1988-1997 Masahiko Sato ;; Copyright (C) 1999-2010 SKK Development Team ;; Author: Masahiko Sato ;; Maintainer: SKK Development Team ;; Version: $Id: skk.el,v 1.631 2013/10/24 14:39:37 skk-cvs Exp $ ;; Keywords: japanese, mule, input method ;; Last Modified: $Date: 2013/10/24 14:39:37 $ ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; SKK-MODE is a mode for inputting Japanese to a current buffer which is ;; composed of four minor modes described below. ;; ;; +---------------+-------- skk-mode -----+--------------------+ ;; | | | | ;; | | | | ;; skk-j-mode skk-latin-mode skk-jisx0208-latin-mode skk-abbrev-mode ;; ASCII JISX0208 LATIN ABBREVIATION ;; (C-j wakes up skk-j-mode) (ZEN'KAKU EIMOJI) ;; ;; skk-j-mode-map skk-jisx0208-latin-mode-map ;; skk-latin-mode-map skk-abbrev-mode-map ;; ;; skk-katakana: nil ;; HIRAKANA ;; ;; skk-katakana: t ;; KATAKANA ;;; Code: (eval-when-compile ; shut up compiler warning. (defvar enable-character-translation) (defvar epoch::version) (defvar jka-compr-compression-info-list) (defvar message-log-max) (defvar migemo-isearch-enable-p) (defvar minibuffer-local-ns-map) (defvar self-insert-after-hook) (defvar skk-rdbms-private-jisyo-table) (defvar this-command-char)) ;; Daredevil SKK 13.1 $B$O(B APEL 10.7 $B$rMW5a$9$k!#(B ;; APEL 10.7 $B$Oe$N=EBg$J7g4Y$KBP1~$7$F$$$k$?$a!"I,?\$G$"$k!#(B ;; make-temp-file() $B$N7g4Y$K$D$$$F$O4X?t(B skk-save-jisyo-original() $B$N%3%a(B ;; $B%s%H$r;2>H!#(B (eval-when-compile (require 'cl)) ;; Elib 1.0 is required. (require 'queue-m) ;; Emacs standard library. (require 'advice) (require 'easymenu) (eval-and-compile ;; SKK common. (require 'skk-autoloads) (require 'skk-vars) (require 'skk-macs) ;; SKK version dependent. (cond ((featurep 'xemacs) (require 'skk-xemacs)) (t (require 'skk-emacs))) ;; Shut up, compiler. (autoload 'skk-jisx0213-henkan-list-filter "skk-jisx0213") (autoload 'skk-kanagaki-initialize "skk-kanagaki") (autoload 'skk-rdbms-count-jisyo-candidates "skk-rdbms")) ;; aliases. (defalias 'skk-toggle-kana 'skk-toggle-characters) ;;;###autoload (defun skk-mode (&optional arg) "$BF|K\8lF~NO%b!<%I!#(B $B%^%$%J!<%b!<%I$N0l \"$B"&$Y$s$j(B\", and pressing space produces \"$B"'JXMx(B\" \(the solid triangle indicates that conversion is in progress\). Backspace steps through the candidate list in reverse. A candidate can be accepted by pressing `\C-j', or by entering a self-inserting character. \(Unlike other common Japanese input methods, RET not only accepts the current candidate, but also inserts a line break.\) Inflected words \(verbs and adjectives\), like non-inflected words, begin input with a capital letter. However, for these words the end of the kanji string is signaled by capitalizing the next mora. Eg, \"TuyoI\" => \"$B"'6/$$(B\". If no candidate is available at that point, the inflection point will be indicated with an asterisk \"*\", and trailing characters will be displayed until a candidate is recognized. It will be immediately displayed \(pressing space is not necessary\). Space and backspace are used to step forward and backward through the list of candidates. For more information, see the `skk' topic in Info. \(Japanese only.\) A tutorial is available in Japanese or English via \\[skk-tutorial]. Use a prefix argument to choose the language. The default is system- dependent." (interactive "P") (setq skk-mode (cond ((null arg) (not skk-mode)) ;; - $B$O(B -1 $B$KJQ49$5$l$k!#(B ((> (prefix-numeric-value arg) 0) t) (t nil))) (if (not skk-mode) ;; exit skk-mode (skk-mode-exit) ;; enter into skk-mode. (unless skk-mode-invoked ;; enter `skk-mode' for the first time in this session. (skk-mode-invoke)) ;; $B0J2<$O(B skk-mode $B$KF~$k$?$S$KKh2s%3!<%k$5$l$k%3!<%I!#(B (skk-create-file skk-jisyo "$B6u$N(B SKK $B8D?M<-=q$r:n$j$^$7$?(B" "I have created an empty SKK Jisyo file for you") (when (eval-when-compile (featurep 'xemacs)) (easy-menu-add skk-menu)) (skk-require-module) ;; To terminate kana input. (when (eval-when-compile (featurep 'xemacs)) (make-local-hook 'pre-command-hook)) (skk-add-skk-pre-command) (when (eval-when-compile (featurep 'xemacs)) (make-local-hook 'post-command-hook)) (add-hook 'post-command-hook 'skk-after-point-move nil 'local) (skk-j-mode-on) (run-hooks 'skk-mode-hook))) ;;;###autoload (defun skk-auto-fill-mode (&optional arg) "$BF|K\8lF~NO%b!<%I!#<+F0@^$jJV$75!G=IU$-!#(B $B%^%$%J!<%b!<%I$N0l (prefix-numeric-value arg) 0) t)))) (auto-fill-mode (if auto-fill 1 -1)) (skk-mode arg) (run-hooks 'skk-auto-fill-mode-hook))) (defun skk-kill-emacs-without-saving-jisyo (&optional query) "$B8D?M<-=q$rJ]B8$;$:$K(B Emacs $B$r=*N;$9$k!#(B" (interactive "P") ;; format $B$r0z?t$K;}$?$;$?>l9g$O!"(Bskk-yes-or-no-p $B$r;H$&$H$+$($C$F>iD9$K$J(B ;; $B$k!#(B (when (yes-or-no-p (format (if skk-japanese-message-and-error "$B8D?M<-=q$rJ]B8$;$:$K(B %s $B$r=*N;$7$^$9!#NI$$$G$9$+!)(B " "Do you really wish to kill %s without saving Jisyo? ") (if (featurep 'xemacs) "XEmacs" "Emacs"))) (let ((buff (skk-get-jisyo-buffer skk-jisyo 'nomsg))) (remove-hook 'kill-emacs-hook 'skk-save-jisyo) (when buff (set-buffer buff) (set-buffer-modified-p nil) (kill-buffer buff)) (save-buffers-kill-emacs query)))) (defun skk-restart () "`skk-init-file' $B$N:F%m!<%I5Z$S3Fl9g$O(B $B;H$&$Y$-$G$J$$!#(B `skk-kakutei-key' $B$NJQ99$K$OBP1~$G$-$F$$$J$$!#(B" (interactive) (skk-save-jisyo) (setq skk-jisyo-update-vector nil) (when (featurep 'skk-server) (skk-disconnect-server)) (setq skk-server-disable-completion nil) (kill-local-variable 'skk-rule-tree) (setq skk-rule-tree nil) ;; $B$$$C$=(B unload-feature $B$H$+$7$?$[$&$,$$$$$N$+$b$7$l$J$$!#(B ;; skk-kakutei-key $B$K4X$7$F$O(B minibuffer-local-map $B$J$I$N=hM}$b!#(B (mapatoms (lambda (sym) ;; skk-user-directory, skk-init-file $B0J30$N(B defcustom $B$G@k8@(B ;; $B$5$l$?JQ?t$N$&$A!"(Bsaved-value $B$r;}$?$J$$$b$N$r:F=i4|2=!#(B ;; $BB>$K$b=|30$9$Y$-JQ?t$,$J$$$+MW8!F$!#(B (when (and (string-match "^skk-" (symbol-name sym)) (not (memq sym '(skk-user-directory skk-init-file))) (not (plist-member (symbol-plist sym) 'saved-value)) (plist-member (symbol-plist sym) 'standard-value)) (set-default sym (eval (car (get sym 'standard-value))))))) (dolist (feature '(skk-act skk-azik)) (when (featurep feature) (unload-feature feature))) (let (skk-mode-invoked) (skk-mode 1))) (defun skk-require-module () ;; skk-mode $B$KF~$k$?$S$KpJsMQ%U%!%$%k$r:n$j$^$7$?(B" "I have created an SKK record file for you")) (skk-setup-auto-paren) ; necessary to call before compiling skk-rule-tree. ;; SKK $B3HD%F~NO5!G=$N@_Dj(B (cond (skk-use-act ;; $B3HD%%m!<%^;zF~NO(B ACT (require 'skk-act)) (skk-use-azik ;; $B3HD%%m!<%^;zF~NO(B AZIK (require 'skk-azik)) ((featurep 'skk-tutcdef) ;; TUT-code (require 'skk-tutcode)) (skk-use-kana-keyboard ;; $B2>L>F~NO(B ($BF|K\8l5l(B JIS $B$^$?$O?F;X%7%U%H(B) (skk-kanagaki-initialize))) (when (eval-when-compile (featurep 'emacs)) (skk-emacs-prepare-menu)) (when (eval-when-compile (and (featurep 'emacs) (>= emacs-major-version 23))) (skk-setup-charset-list)) (skk-setup-delete-selection-mode) (when skk-annotation-lookup-DictionaryServices (skk-annotation-start-python)) (setq skk-mode-invoked t)) ;;; setup (defun skk-setup-shared-private-jisyo () ;; vector $B$ND9$5$O!"(B`skk-save-jisyo' $B$,<:GT$7$J$$A0Ds$J$i$P(B ;; skk-jisyo-save-count $B$HF1$8$G$h$$!#%(%i!<$=$NB>$G<:GT$9$k2DG=@-$r(B ;; $B9MN8$9$k$H!"$=$l$h$j>/$7D9$$J}$,LdBj$,5/$3$j$K$/$$!#(B ;; ($B0J2<$N6qBNE*$J?t;z$K$O:,5r$O$J$$(B) (setq skk-jisyo-update-vector (make-vector (max (* 2 skk-jisyo-save-count) (+ 20 skk-jisyo-save-count)) nil)) (setq skk-emacs-id (concat (system-name) ":" (number-to-string (emacs-pid)) ":" (mapconcat 'int-to-string (current-time) "") ":")) (skk-create-file skk-emacs-id-file nil nil 384) ; 0600 (with-temp-buffer (insert-file-contents skk-emacs-id-file) (insert skk-emacs-id "\n") (write-region 1 (point-max) skk-emacs-id-file nil 'nomsg))) (defun skk-setup-charset-list () (setq skk-charset-list (delq nil (mapcar (lambda (c) (when (skk-charsetp c) c)) '(ascii japanese-jisx0208 japanese-jisx0213-1 japanese-jisx0213-2 japanese-jisx0213.2004-1 katakana-jisx0201 latin-jisx0201 japanese-jisx0212 japanese-jisx0208-1978))))) (defun skk-setup-keymap () "SKK $B$N%-!<$r@_Dj$9$k!#(B" (cond (skk-j-mode (skk-define-j-mode-map) (skk-setup-j-mode-map-options)) (skk-latin-mode (skk-define-latin-mode-map) (skk-setup-latin-mode-map-options)) (skk-jisx0208-latin-mode (skk-define-jisx0208-latin-mode-map) (skk-setup-jisx0208-latin-mode-map-options)) (skk-abbrev-mode (skk-define-abbrev-mode-map) (skk-setup-abbrev-mode-map-options))) (skk-define-minibuffer-maps) ;; (unless skk-rule-tree (setq skk-rule-tree (skk-compile-rule-list skk-rom-kana-base-rule-list skk-rom-kana-rule-list)))) (defun skk-define-menu (map) "SKK $B$N%W%k%@%&%s%a%K%e!<$rDj5A$9$k!#(B" (easy-menu-define skk-menu map "Menu used in SKK mode." skk-menu-items)) (defun skk-define-j-mode-map () "$B%-!<%^%C%W(B `skk-j-mode-map' $B$rDj5A$9$k!#(B" (unless (keymapp skk-j-mode-map) (setq skk-j-mode-map (make-sparse-keymap)) (skk-update-minor-mode-map-alist 'skk-j-mode skk-j-mode-map) (skk-update-minor-mode-map-alist 'skk-jisx0201-mode skk-j-mode-map)) (unless (eq (lookup-key skk-j-mode-map "a") 'skk-insert) (dotimes (i 95) ;from " " to "~". (define-key skk-j-mode-map (skk-char-to-unibyte-string (+ 32 i)) 'skk-insert)) (skk-define-menu skk-j-mode-map))) (defun skk-define-latin-mode-map () "$B%-!<%^%C%W(B `skk-latin-mode-map' $B$rDj5A$9$k!#(B" (unless (keymapp skk-latin-mode-map) (setq skk-latin-mode-map (make-sparse-keymap)) (skk-update-minor-mode-map-alist 'skk-latin-mode skk-latin-mode-map) (skk-define-menu skk-latin-mode-map))) (defun skk-define-jisx0208-latin-mode-map () "$B%-!<%^%C%W(B `skk-jisx0208-latin-mode-map' $B$rDj5A$9$k!#(B" (unless (keymapp skk-jisx0208-latin-mode-map) (setq skk-jisx0208-latin-mode-map (make-sparse-keymap)) (skk-update-minor-mode-map-alist 'skk-jisx0208-latin-mode skk-jisx0208-latin-mode-map)) (unless (eq (lookup-key skk-jisx0208-latin-mode-map "a") 'skk-jisx0208-latin-insert) (dotimes (i 128) (when (aref skk-jisx0208-latin-vector i) (define-key skk-jisx0208-latin-mode-map (skk-char-to-unibyte-string i) 'skk-jisx0208-latin-insert))) (define-key skk-jisx0208-latin-mode-map "\C-q" 'skk-toggle-characters) (skk-define-menu skk-jisx0208-latin-mode-map))) (defun skk-define-abbrev-mode-map () "$B%-!<%^%C%W(B `skk-abbrev-mode-map' $B$rDj5A$9$k!#(B" (unless (keymapp skk-abbrev-mode-map) (setq skk-abbrev-mode-map (make-sparse-keymap)) (skk-update-minor-mode-map-alist 'skk-abbrev-mode skk-abbrev-mode-map) (dotimes (i 95) (define-key skk-abbrev-mode-map (skk-char-to-unibyte-string (+ 32 i)) 'skk-abbrev-insert)) (define-key skk-abbrev-mode-map "," 'skk-abbrev-comma) (define-key skk-abbrev-mode-map "." 'skk-abbrev-period) (define-key skk-abbrev-mode-map "\C-q" 'skk-toggle-characters) (skk-define-menu skk-abbrev-mode-map))) (defun skk-define-minibuffer-maps () (unless (eq (lookup-key minibuffer-local-map skk-kakutei-key) 'skk-kakutei) (define-key minibuffer-local-map skk-kakutei-key #'skk-kakutei) (define-key minibuffer-local-completion-map skk-kakutei-key #'skk-kakutei) ;; XEmacs doesn't have minibuffer-local-ns-map (when (and (boundp 'minibuffer-local-ns-map) (keymapp (symbol-value 'minibuffer-local-ns-map))) (define-key minibuffer-local-ns-map skk-kakutei-key #'skk-kakutei)))) (skk-define-abbrev-mode-map) (skk-define-latin-mode-map) (skk-define-jisx0208-latin-mode-map) (skk-define-j-mode-map) (defun skk-setup-j-mode-map-options () (unless (eq (lookup-key skk-j-mode-map (skk-char-to-unibyte-string skk-try-completion-char)) 'skk-insert) (when (vectorp skk-kakutei-key) (define-key skk-j-mode-map skk-kakutei-key #'skk-kakutei)) (define-key skk-j-mode-map (skk-char-to-unibyte-string skk-try-completion-char) #'skk-insert) ;; Workaround for key translation. (when (eval-when-compile (featurep 'emacs)) (when (eq skk-try-completion-char 9) ;; tab $B%-!<$O(B $B$NDj5A$,L5$1$l$P(B TAB $B$NDj5A$,3d$jEv$F$i$l$k!#(B ;; Org-mode $B$J$I$O(B $B$rDj5A$9$k$N$G!$(BSKK $B$NJ}$G$b(B $B$rDj5A(B ;; $B$9$kI,MW$,$"$k!#(B (define-key skk-j-mode-map [(tab)] #'skk-comp-wrapper))) ;; comp $B$H(B dcomp $B$G$NA08uJd$XLa$kF0:n$r(B Shift TAB $B$G$b2DG=$H$9$k!#(B (when skk-previous-completion-use-backtab (define-key skk-j-mode-map skk-previous-completion-backtab-key #'skk-previous-comp-maybe)) ;; (when (characterp (symbol-value 'skk-previous-candidate-char)) (add-to-list 'skk-previous-candidate-keys (skk-char-to-unibyte-string (symbol-value 'skk-previous-candidate-char)))) (unless (featurep 'skk-kanagaki) (dolist (key skk-previous-candidate-keys) (define-key skk-j-mode-map key #'skk-previous-candidate))) ;; (when skk-use-jisx0201-input-method ;; This command is autoloaded. (define-key skk-j-mode-map "\C-q" #'skk-toggle-katakana)) (unless skk-use-viper (define-key skk-j-mode-map (skk-char-to-unibyte-string skk-start-henkan-with-completion-char) #'skk-comp-start-henkan) (define-key skk-j-mode-map (skk-char-to-unibyte-string skk-backward-and-set-henkan-point-char) #'skk-backward-and-set-henkan-point)) (skk-setup-delete-backward-char) (skk-setup-undo) ;; (when (eq skk-j-mode-function-key-usage 'conversion) (define-key skk-j-mode-map [f1] #'skk-start-henkan-prog-1) (define-key skk-j-mode-map [f2] #'skk-start-henkan-prog-2) (define-key skk-j-mode-map [f3] #'skk-start-henkan-prog-3) (define-key skk-j-mode-map [f4] #'skk-start-henkan-prog-4) (define-key skk-j-mode-map [f5] #'skk-start-henkan-prog-5) (define-key skk-j-mode-map [f6] #'skk-start-henkan-prog-6) (define-key skk-j-mode-map [f7] #'skk-start-henkan-prog-7) (define-key skk-j-mode-map [f8] #'skk-start-henkan-prog-8) (define-key skk-j-mode-map [f9] #'skk-start-henkan-prog-9) (define-key skk-j-mode-map [f10] #'skk-start-henkan-prog-0)))) (defun skk-setup-latin-mode-map-options () (unless (eq (lookup-key skk-latin-mode-map skk-kakutei-key) 'skk-kakutei) (define-key skk-latin-mode-map skk-kakutei-key #'skk-kakutei))) (defun skk-setup-jisx0208-latin-mode-map-options () (unless (eq (lookup-key skk-jisx0208-latin-mode-map skk-kakutei-key) 'skk-kakutei) (define-key skk-jisx0208-latin-mode-map skk-kakutei-key #'skk-kakutei) (unless skk-use-viper (define-key skk-jisx0208-latin-mode-map (skk-char-to-unibyte-string skk-backward-and-set-henkan-point-char) #'skk-backward-and-set-henkan-point)))) (declare-function skk-start-henkan-with-completion "skk-comp") (defun skk-setup-abbrev-mode-map-options () (unless (eq (lookup-key skk-abbrev-mode-map skk-kakutei-key) 'skk-kakutei) (define-key skk-abbrev-mode-map skk-kakutei-key #'skk-kakutei) (define-key skk-abbrev-mode-map (skk-char-to-unibyte-string skk-start-henkan-char) #'skk-start-henkan) (define-key skk-abbrev-mode-map (skk-char-to-unibyte-string skk-try-completion-char) #'skk-try-completion) (unless skk-use-viper (define-key skk-abbrev-mode-map (skk-char-to-unibyte-string skk-start-henkan-with-completion-char) #'skk-start-henkan-with-completion)))) (defun skk-make-indicator-alist () "SKK $B%$%s%8%1!<%?7?%*%V%8%'%/%H$rMQ0U$7!"O"A[%j%9%H$K$^$H$a$k!#(B" (cond ((eval-when-compile (featurep 'xemacs)) (skk-xemacs-prepare-modeline-properties)) (t (skk-emacs-prepare-modeline-properties))) ;; (let ((mode-string-list '(skk-latin-mode-string skk-hiragana-mode-string skk-katakana-mode-string skk-jisx0208-latin-mode-string skk-abbrev-mode-string skk-jisx0201-mode-string)) mode string base) (save-match-data (cons (cons 'default (cons "" (skk-mode-string-to-indicator 'default ""))) (mapcar (lambda (symbol) (setq mode (prin1-to-string symbol)) (string-match "skk-\\([-a-z0-9]+\\)-mode-string" mode) (setq mode (intern (match-string-no-properties 1 mode))) (setq string (symbol-value symbol)) ;; $BK\Mh$J$i$3$N$h$&$K%f!<%6JQ?t$r2C9)$9$k$N$O$*$+$7$$$,!"(B ;; $B0\9T4|$N=hCV$H$7$F;CDjE*$K9T$J$&!#(B (cond ((string-match "^ +" string) ;; minor-mode setting (setq base (substring string (match-end 0)))) ((string-match "^--" string) ;; mode-line left setting (setq base (substring string (match-end 0))) (when (string-match "::*$" base) (setq base (substring base 0 (match-beginning 0))))) (t (setq base string))) (cons mode (cons (concat " " base) (skk-make-indicator-alist-1 mode base)))) mode-string-list))))) (defun skk-make-indicator-alist-1 (mode base) ;; faces.el (Emacs 24.2) ;; Make `modeline' an alias for `mode-line', for compatibility. ;; (put 'modeline 'face-alias 'mode-line) ;; * Incompatible Lisp Changes in Emacs 24.3 ;; ** Some obsolete functions, variables, and faces have been removed: ;; *** `modeline' (let* ((ml (if (skk-facep 'mode-line) 'mode-line ;GNU Emacs (2012-10-02 Remove obsolete face `modeline') 'modeline)) ;XEmacs (string (concat "--" base (cond ((skk-face-proportional-p ml) ":") ((memq mode '(latin abbrev)) "::") (t ":"))))) (skk-mode-string-to-indicator mode string))) (defun skk-setup-modeline () "$B%b!<%I%i%$%s$X$N%9%F!<%?%9I=<($r=`Hw$9$k!#(B" (setq skk-indicator-alist (skk-make-indicator-alist)) (case skk-status-indicator (left (unless (memq 'skk-modeline-input-mode (default-value 'mode-line-format)) (setq-default mode-line-format (append '("" skk-modeline-input-mode) (default-value 'mode-line-format)))) (skk-loop-for-buffers (buffer-list) (when (and (listp mode-line-format) (skk-local-variable-p 'mode-line-format) (null (memq 'skk-modeline-input-mode mode-line-format))) (setq mode-line-format (append '("" skk-modeline-input-mode) mode-line-format)))) (when skk-icon (unless (memq 'skk-icon (default-value 'mode-line-format)) (setq-default mode-line-format (append '("" skk-icon) (default-value 'mode-line-format)))) (skk-loop-for-buffers (buffer-list) (when (and (listp mode-line-format) (skk-local-variable-p 'mode-line-format) (null (memq 'skk-icon mode-line-format))) (setq mode-line-format (append '("" skk-icon) mode-line-format))))) (force-mode-line-update t)) ;; (t (when (and (listp mode-line-format) (equal (car mode-line-format) "") (eq 'skk-modeline-input-mode (nth 1 mode-line-format))) ;; for skk-restart. (setq-default mode-line-format (nthcdr 2 mode-line-format))) (skk-loop-for-buffers (buffer-list) (when (and (listp mode-line-format) (equal (car mode-line-format) "") (eq 'skk-modeline-input-mode (nth 1 mode-line-format))) ;; for skk-restart. (setq mode-line-format (nthcdr 2 mode-line-format)))) (setq-default skk-modeline-input-mode "") (add-minor-mode 'skk-mode 'skk-modeline-input-mode)))) (defun skk-setup-emulation-commands (commands emulation) (let ((map (if (and (boundp 'overriding-local-map) (keymapp 'overriding-local-map)) overriding-local-map (current-global-map)))) (dolist (command commands) (dolist (key (where-is-internal command map)) (define-key skk-abbrev-mode-map key emulation) (define-key skk-j-mode-map key emulation))))) (defun skk-setup-delete-backward-char () "$B!V8eB`!W7O$N%-!<$K%3%^%s%I(B `skk-delete-backward-char' $B$r3dEv$F$k!#(B" (skk-setup-emulation-commands skk-delete-backward-char-commands 'skk-delete-backward-char)) (defun skk-setup-undo () "$B!V$d$jD>$7!W7O$N%-!<$K%3%^%s%I(B `skk-undo' $B$r3dEv$F$k!#(B" (skk-setup-emulation-commands skk-undo-commands 'skk-undo)) (defun skk-setup-verbose-messages () (unless skk-henkan-on-message (let ((list (split-string (apply 'format ;; fotmat#STRING (case skk-j-mode-function-key-usage (conversion "\ \[F5]%s [F6]%s [F7]%s [F8]%s [F9]%s [F10]%s") (t "\ \[C-5 SPC]%s [C-6 SPC]%s [C-7 SPC]%s [C-8 SPC]%s [C-9 SPC]%s [C-0 SPC]%s")) ;; format#OBJECTS (mapcar (lambda (x) (cdr (assoc (caar (symbol-value (intern-soft (format "skk-search-prog-list-%d" x)))) '((skk-search-tankanji . "$BC14A;z(B") (skk-search-identity . "$BL5JQ49(B") (skk-search-katakana . "$B%+%?%+%J(B") (skk-search-hankaku-katakana . "$BH>3Q%+%J(B") (skk-search-jisx0208-romaji . "$BA43Q%m!<%^(B") (skk-search-romaji . "$B%m!<%^(B") (nil . "$BL$Dj5A(B")) ))) '(5 6 7 8 9 0))) " ")) new) ; END varlist ;; BODY (dolist (x list) (let* ((y (split-string x "]")) (s1 (car y)) (s2 (nth 1 y))) (setq new (concat new (propertize (concat s1 "]") 'face 'skk-verbose-kbd-face) s2 " ")))) (setq skk-henkan-on-message new)) )) (defun skk-compile-init-file-maybe () "$BI,MW$J$i(B `skk-init-file' $B$r%P%$%H%3%s%Q%$%k$9$k!#(B `skk-byte-compile-init-file' $B$,(B non-nil $B$N>l9g$G!"(B`skk-init-file' $B$r%P%$%H%3(B $B%s%Q%$%k$7$?%U%!%$%k$,B8:_$7$J$$$+!"$=$N%P%$%H%3%s%Q%$%k:Q%U%!%$%k$h$j(B `skk-init-file' $B$NJ}$,?7$7$$$H$-$O!"(B`skk-init-file' $B$r%P%$%H%3%s%Q%$%k$9$k!#(B `skk-byte-compile-init-file' $B$,(B nil $B$N>l9g$G!"(B`skk-init-file' $B$r%P%$%H%3%s%Q(B $B%$%k$7$?%U%!%$%k$h$j(B `skk-init-file' $B$NJ}$,?7$7$$$H$-$O!"$=$N%P%$%H%3%s%Q%$(B $B%k:Q%U%!%$%k$r>C$9!#(B" (save-match-data (let* ((file (expand-file-name skk-init-file)) (init-file (if (file-exists-p (concat file ".el")) (concat file ".el") file)) (elc (concat init-file (if (string-match "\\.el$" init-file) "c" ".elc")))) (if skk-byte-compile-init-file (when (and (file-exists-p init-file) (or (not (file-exists-p elc)) (file-newer-than-file-p init-file elc))) (save-window-excursion ; for keep window configuration. (skk-message "%s $B$r%P%$%H%3%s%Q%$%k$7$^$9(B" "Byte-compile %s" skk-init-file) (sit-for 2) (byte-compile-file init-file))) (when (and (file-exists-p init-file) (file-exists-p elc) (file-newer-than-file-p init-file elc)) (delete-file elc)))))) (defun skk-setup-delete-selection-mode () "Delete Selection $B%b!<%I$N$?$a$N@_Dj$r$9$k!#(B Delete Selection $B%b!<%I$,(B SKK $B$r;H$C$?F|K\8lF~NO$KBP$7$F$b5!G=$9$k$h$&$K(B $B%;%C%H%"%C%W$9$k!#(B" (let ((property (cond ((featurep 'xemacs) 'pending-delete) (t 'delete-selection))) (funcs '(skk-current-kuten skk-current-touten skk-input-by-code-or-menu skk-insert skk-today)) (supersede-funcs '(skk-delete-backward-char))) (unless (get 'skk-insert property) (dolist (func funcs) (put func property t)) (dolist (func supersede-funcs) (put func property 'supersede))))) (defun skk-setup-auto-paren () (when (and skk-auto-insert-paren skk-auto-paren-string-alist) ;; skk-auto-paren-string-alist $B$NCf$+$i!"(B ;; skk-special-midashi-char-list $B$NMWAG$K4XO"$9$k$b$N$r$N=PNOJ8;z$K(B ;; $B%P%$%s%I$5$l$F$$$J$$$+$I$&$+$r3NG'$9$k!#(B (null (assoc str skk-rom-kana-base-rule-list)) (null (assoc str skk-rom-kana-rule-list))) ;; skk-auto-paren-string-alist $B$N3FMWAG$N(B car $B$NJ8;z$,(B ;; ascii char $B$G$"$k>l9g$O!"(Bskk-rom-kana-rule-list, ;; skk-rom-kana-base-rule-list $B$K$=$NJ8;z$r=q$-9~$`!#(B ;; $BK\Mh$O(B ascii char $B$O(B skk-rom-kana-rule-list, ;; skk-rom-kana-base-rule-list $B$K=q$/I,MW$,$J$$(B ;; --- skk-emulate-original-map$B$K$h$kF~NO$,9T$J$o$l$k(B --- ;; $B$,!"(Bskk-auto-paren-string-alist $B$K;XDj$5$l$?BP$K$J$k(B ;; $BJ8;z$NA^F~$N$?$a$K$O!"%-!<$H$J$kJ8;z$r=q$$$F$*$/I,MW$,(B ;; $B$"$k!#(B (setq skk-rom-kana-rule-list (cons (list str nil str) skk-rom-kana-rule-list)))))))) (defun skk-setup-minibuffer () "$B%+%l%s%H%P%C%U%!$NF~NO%b!<%I$K=>$C$F%_%K%P%C%U%!$NF~NO%b!<%I$r@_Dj$9$k!#(B" (case skk-minibuffer-origin-mode (hiragana (skk-j-mode-on)) (katakana (skk-j-mode-on t)) (abbrev (skk-abbrev-mode-on)) (latin (skk-latin-mode-on)) (jisx0208-latin (skk-jisx0208-latin-mode-on)))) (defun skk-setup-jisyo-buffer () "SKK $B$N<-=q%P%C%U%!$rMQ0U$9$k!#(B `skk-jisyo' $B$N<-=q%P%C%U%!$G!"(B (1)$B6u%P%C%U%!$G$"$l$P!"?7$7$/%X%C%@!<$r:n$j!"(B (2)$B<-=q%(%s%H%j$,$"$k4{B8$N<-=q%P%C%U%!$J$i$P!"%X%C%@!<$,@5$7$$$+$I$&$+$r(B $B%A%'%C%/$9$k!#(B" ;; skk-okuri-ari-min $B$H(B skk-okuri-nasi-min $B$N0LCV$rJQ99$7$?!#(B ;; $B"-(B $B?7$7$$(B skk-okuri-ari-min ;; ;; okuri-ari entries. ;; $B"+(B $B0JA0$N(B skk-okuri-ari-min ;; ;; $B"-(B skk-okuri-ari-max $B"-(B $B?7$7$$(B skk-okuri-nasi-min ;; ;; okuri-nasi entries. ;; $B"+(B $B0JA0$N(B skk-okuri-nasi-min ;; ;; ;; $BJQ99A0$N0LCV$G$"$l$P!"2<5-$N$h$&$J6u<-=q$N>l9g!"(B ;; ;; ;; okuri-ari entries. ;; ;; okuri-nasi entries. ;; ;; skk-okuri-ari-min $B$H(B skk-okuri-ari-max $B$N%^!<%+!<$,=E$J$C$F$7$^$$!"(B ;; skk-okuri-ari-min $B$N0LCV$KA^F~$7$?8uJd$,(B skk-okuri-ari-max $B$N%^!<%+!<(B ;; $B$r8eJ}$K2!$7$d$i$J$$!#(B ;; ;; case-fold-search $B$O!"<-=q%P%C%U%!$G$O>o$K(B nil$B!#(B (save-match-data (when (zerop (buffer-size)) ;; $B6u%P%C%U%!$@$C$?$i!"%X%C%@!<$N$_A^F~!#(B (insert ";; okuri-ari entries.\n" ";; okuri-nasi entries.\n")) (goto-char (point-min)) (unless (re-search-forward "^;; okuri-ari entries.$" nil 'noerror) (skk-error "$BAw$j$"$j%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*(B" "Header line for okuri-ari entries is missing!")) ;; $B8GDj%]%$%s%H$J$N$G!"(B(point) $B$G==J,!#(B (setq skk-okuri-ari-min (point)) (unless (re-search-forward "^;; okuri-nasi entries.$" nil 'noerror) (skk-error "$BAw$j$J$7%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*(B" "Header line for okuri-nasi entries is missing!")) (beginning-of-line) ;; $B6&M-<-=q$J$i8GDj%]%$%s%H$G$bNI$$$N$@$,!"<-=q%P%C%U%!$GJT=8$r9T(B ;; $B$J$C$?$H$-$N$3$H$rG[N8$7$F%^!<%+!<$K$7$F$*$/!#(B (setq skk-okuri-ari-max (point-marker)) (forward-line 1) (backward-char 1) (setq skk-okuri-nasi-min (point-marker)))) (defun skk-emulate-original-map (arg) "$B%-!l9g$O!"(Bnil $B$rJV$9!#(B" (while (not (or (zerop (length key)) (eq command (key-binding key)))) (setq key (vconcat (cdr (append key nil))))) (unless (zerop (length key)) key)) (defun skk-adjust-user-option () "$B%f!<%6%*%W%7%g%s$NIT@09g$rD4@0$9$k!#(B" (unless (skk-color-cursor-display-p) (setq skk-use-color-cursor nil)) ;; $BN>N)$G$-$J$$%*%W%7%g%s$rD4@0$9$k!#(B (when skk-process-okuri-early ;; skk-process-okuri-early $B$NCM$,(B non-nil $B$G$"$k$H$-$K2<5-$NCM$,(B non-nil ;; $B$G$"$l$P@5>o$KF0$+$J$$$N$G$3$NJQ?t$NM%@h=g0L$r9b$/$7$?!#(B (setq skk-kakutei-early nil skk-auto-okuri-process nil skk-henkan-okuri-strictly nil skk-henkan-strict-okuri-precedence nil)) (unless skk-jisyo-save-count ;; $B8=:_$N8e(B) $B$H%+!<%=%k$N4V$NJ8;zNs$K$D$$(B $B$F!"$R$i$,$J$H%+%?%+%J$rF~$lBX$($k!#(B" (interactive "P") (let ((show t)) (cond ((eq skk-henkan-mode 'on) ;$B"&%b!<%I(B (let (char-type) (skk-save-point (goto-char skk-henkan-start-point) (while (and (>= skk-save-point (point)) ;; (not (eobp)) (or ;; "$B!<(B" $B$G$OJ8;zuBV$KLa$9!#(B `edit-picture-hook' $B$K(B `add-hook' $B$7$F;HMQ$9$k!#(B" ;; $B4{B8$N%P%C%U%!$r(B picture mode $B$K$7$?$H$-!"(Bpicture-mode $B4X?t$O(B ;; kill-all-local-variables $B4X?t$r8F$P$J$$$N$G!"(BSKK $B4XO"$N%P%C%U%!%m!<%+%k(B ;; $BJQ?t$,85$N%P%C%U%!$NCM$N$^$^$K$J$C$F$7$^$&!#$=$3$G!"(Bpicture mode $B$KF~$C$?(B ;; $B$H$-$K%U%C%/$rMxMQ$7$F$3$l$i$N%P%C%U%!%m!<%+%kJQ?t$r(B kill $B$9$k!#(B ;; RMS $B$O(B picture-mode $B$G(B kill-all-local-variables $B4X?t$r8F$P$J$$$N$O!"%P%0(B ;; $B$G$O$J$$!"$H8@$C$F$$$?!#(B ;; ;; picture-mode $B$G(B SKK $B$r;HMQ$74A;zF~NO$r$7$?>l9g$K!"(BBS $B$GA43QJ8;z$,>C$;$J$$(B ;; $B$N$O!"(BSKK $B$NIT6q9g$G$O$J$/!"(Bpicture.el $B$NLdBj(B (move-to-column-force $B4X?t(B ;; $B$NCf$G;HMQ$7$F$$$k(B move-to-column $B$GA43QJ8;z$rL5;k$7$?%+%i%`?t$,M?$($i$l(B ;; $B$?$H$-$K%+!<%=%k0\F0$,$G$-$J$$$+$i(B) $B$G$"$k!#>C$7$?$$J8;z$K%]%$%s%H$r9g$o(B ;; $B$;!"(BC-c C-d $B$G0lJ8;z$:$D>C$9$7$+J}K!$O$J$$!#(B (when skk-mode (skk-kill-local-variables))) (defun skk-kill-local-variables () "SKK $B4XO"$N%P%C%U%!%m!<%+%kJQ?t$rL58z$K$9$k!#(B" (skk-mode -1) (let (v vstr) (dolist (lv (buffer-local-variables)) (setq v (car lv) vstr (prin1-to-string v)) (when (and (> (length vstr) 3) (string= "skk-" (substring vstr 0 4))) (kill-local-variable v))))) ;;;; kana inputting functions (defun skk-insert (&optional arg prog-list-number) "SKK $B$NJ8;zF~NO$r9T$J$&!#(B" (interactive "p") (unless prog-list-number (setq prog-list-number current-prefix-arg)) (barf-if-buffer-read-only) (skk-with-point-move (let ((ch (skk-last-command-char))) (cond ((and skk-henkan-mode (memq ch skk-special-midashi-char-list)) (if (= skk-henkan-start-point (point)) ;; `$B"&(B' $B$KB3$/(B `>' $B$G$OJQ49=hM}$r3+;O$7$J$$(B (progn (skk-set-last-command-char ?>) (skk-kana-input arg)) ;; $B@\F,<-!&@\Hx<-$N=hM}!#(B (skk-process-prefix-or-suffix arg))) ;; start writing a midasi key. ((and (memq ch skk-set-henkan-point-key) (or skk-okurigana (not (skk-get-prefix skk-current-rule-tree)) (not (skk-select-branch skk-current-rule-tree ch)))) ;; normal pattern ;; skk-set-henkan-point -> skk-kana-input. (skk-set-henkan-point arg)) ;; start conversion. ((and skk-henkan-mode ; $B"&%b!<%I(B or $B"'%b!<%I(B (eq ch skk-start-henkan-char)) ; SPC (skk-start-henkan arg prog-list-number)) ;; just input kana. ((not (eq skk-henkan-mode 'on)) ; not $B"&%b!<%I(B (skk-kana-input arg)) ;; for completion. ;; $B%3%s%W%j!<%7%g%s4XO"$N4X?t$O(B skk-rom-kana-base-rule-list $B$NCf$K2!(B ;; $B$79~$a!"(Bskk-kana-input $B$NCf$+$i@)8f$9$Y$-!#(B ;; $BC"$7!"(BTAB $B$O(B self-insert-command $B$G$O$J$$$N$G!"(Bskk-j-mode-map $B$N(B ;; $B%-!<%^%C%W$G(B substitute-key-definition $B$7$F$b(B skk-insert $B$K%P%$%s(B ;; $B%I$G$-$J$$!#(Bskk-j-mode-map $B$G(B $BD>@\(B "\t" $B$r(B skk-insert $B$K%P%$%s%I(B ;; $B$7$F!"(Bcompletion $B$H(B skk-current-kuten/skk-current-touten $B$r%3%s%H(B ;; $B%m!<%k$9$k%3%^%s%IL>$r(B skk-rom-kana-base-rule-list $B$K=q$1$PNI$$$+(B ;; $B$b!#(B ;; $B$G$b!"(Bskk-comp $B$H(B skk-current-kuten/skk-current-touten $B$N%3%s%H%m(B ;; $B!<%k$,%O!<%I%3!<%G%#%s%0$5$l$k$N$O$^$:$$$+$b(B (skk-comp $B$O;H$C$F$b(B ;; skk-current-kuten/skk-current-touten $B$O;H$o$J$$!"$H$$$&?M$,$$$k$+(B ;; $B$b(B)$B!#(B ((and (eq skk-henkan-mode 'on) ; $B"&%b!<%I(B (eq ch skk-try-completion-char)) (skk-comp (or prog-list-number ; C-u TAB $B$GJd40%-!<$r=i4|2=(B (not (eq last-command 'skk-comp-do))))) ;; ((and (eq skk-henkan-mode 'on) ; $B"&%b!<%I(B (memq ch (list skk-next-completion-char skk-previous-completion-char)) (eq last-command 'skk-comp-do)) (skk-comp-previous/next ch)) ;; just input Kana. (t (skk-kana-input arg))) ;; verbose message (skk-henkan-on-message)))) (defun skk-process-prefix-or-suffix (&optional arg) "$B@\F,<-$^$?$O@\Hx<-$NF~NO$r3+;O$9$k!#(B $B$3$l$O!"IaDL(B `skk-special-midashi-char-list' $B$K;XDj$5$l$?J8;z$NF~NO$,$"$C$?>l(B $B9g$KHsBPOCE*$K8F$S=P$5$l$k$,!"BPOCE*$K8F=P$9$3$H$b2DG=$G$"$k!#(B" ;; SKK 10 $B$^$G$O!"(B> < ? $B$N(B 3 $B$D$K$D$$$F07$$$,J?Ey$G$J$+$C$?!#(BDaredevil SKK ;; 11 $B0J9_$G$O!"<-=q$K$*$1$kI=8=$r(B > $B$GE}0l$9$k$3$H$K$h$j!"(B3 $B)) (on ;; $B@\F,<-$N=hM}(B (skk-kana-cleanup 'force) (insert-and-inherit ?>) (skk-set-marker skk-henkan-end-point (point)) (skk-set-henkan-count 0) (setq skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point (point)) skk-prefix "") (setq skk-after-prefix t) (skk-henkan)) (t (if (skk-last-command-char) ;; `skk-insert' $B$+$i8F$P$l$k>l9g$K$O!"$3$N%1!<%9$O$J$$!#(B (let ((i (prefix-numeric-value arg)) (str (skk-char-to-unibyte-string (skk-last-command-char)))) (while (> i 0) (skk-insert-str str) (setq i (1- i)))) nil)))) (defun skk-kana-input (&optional arg) "$B$+$JJ8;z$NF~NO$r9T$&%k!<%A%s!#(B" ;; Message-Id: <19980610190611B.sakurada@kuis.kyoto-u.ac.jp> ;; From: Hideki Sakurada ;; Date: Wed, 10 Jun 1998 19:06:11 +0900 (JST) ;; ;; $B?7$7$$(B skk-kana-input $B$O(B, $B4JC1$K@bL@$9$k$H(B, ;; $B$"$i$+$8$a%k!<%k$rLZ$N7A$KI=8=$7$F$*$$$F(B, $BF~NO$r8+(B ;; $B$FLZ$rC)$j(B, $B$=$l0J>eC)$l$J$/$J$C$?$i$=$N@a$KEPO?$5(B ;; $B$l$F$$$k2>L>$rF~NO$9$k(B. $B$H$$$&$7$/$_$G$9(B. ;; ;; $BNc$($P(B, n a t $B$N$_$+$i$J$k0J2<$N%k!<%k(B ;; ;; a $B"*(B $B$"(B ;; n $B"*(B $B$s(B ;; nn $B"*(B $B$s(B ;; na $B"*(B $B$J(B ;; ta $B"*(B $B$?(B ;; tt $B"*(B $B$C(B ($BuBV(B t) ;; ;; $B$r%k!<%kLZ$KJQ49$9$k$H(B, ;; ;; $B!?(B/$B!@(B ;; $B!?(B / $B!@(B ;; a $B!?(B / t $B!@(B n ;; $B!?(B / $B!@(B ;; $B$"(B $B!&(B $B$s(B ;; $B!?(B| / $B!@(B ;; a $B!?(B | t a / $B!@(B n ;; $B!?(B | / $B!@(B ;; $B$?(B $B$C(B $B$J(B $B$s(B ;; ($BuBV(B "t") ;; ;; $B$H$$$&7A$K$J$j$^$9(B. ;; ;; $B=i4|>uBV(B($BLZ$N:,(B)$B$G(B `a' $B$rF~NO$9$k$H(B, $BLZ$N:,$+$i(B ;; $B!V$"!W$K0\F0$7$^$9(B. $BuBV$,@_Dj$5$l$F$$$k>l9g$O(B, $B@_Dj$5$l$F$$(B ;; $B$kJ8;zNs$r%-%e!<$KLa$7$F$+$i:,$KLa$j$^$9(B. ;; ;; $B=i4|>uBV$G(B `n' $B$rF~NO$9$k$H(B, $B!V$s!W$K0\F0$7$^$9(B. ;; $Bl9g$O(B, `t' $B$G$O2<$KC)$l$J$$$N$G(B, ;; $B!V$s!W$r=PNO$7$F(B `t' $B$r%-%e!<$KLa$7$^$9(B. ;; ;; $B$3$3$G(B, $B=i4|>uBV(B, $B8=>uBV$r$=$l$>$l(B skk-rule-tree, ;; skk-current-rule-tree $B$GI=$7(B. ;; $BLZ$r2<$KC)$k(B, $B$H$$$&A`:n$O(B, skk-select-branch $B$r(B ;; $BMQ$$$F(B, ;; ;; (skk-select-branch rule-tree ?a) ;; ;; $B$N$h$&$K$7$^$9(B. $B8=>uBV$K@_Dj$5$l$F$$$k$+$J(B(("$B%"(B". "$B$"(B")$B$J$I(B), ;; $BuBV(B("t" $B$J$I(B)$B$O(B, $B$=$l$>$l(B skk-get-kana, ;; skk-get-nextstate $B$Gkana rule (setq data d queue (nconc (string-to-list (skk-get-nextstate skk-current-rule-tree)) queue) skk-current-rule-tree nil)) (t ;; SKK-CURRENT-RULE-TREE does not have any roma->kana rule (let ((dd (when skk-kana-input-search-function (funcall skk-kana-input-search-function)))) (cond (dd (setq data (car dd) queue (nconc (string-to-list (cdr dd)) (cdr queue)) skk-current-rule-tree nil)) ((eq skk-current-rule-tree skk-rule-tree) ;; typo on the root of tree (setq queue nil skk-current-rule-tree nil)) (t ;; otherwise move to root of the tree, and redo (setq skk-current-rule-tree nil))))))))) (cond ((not data) (if skk-current-rule-tree (progn ;;(digit-argument arg) ;; $B$&!A$s!"$h$&J,$+$i$s!#$H$j$"$($:!#(B (unless skk-isearch-message (setq prefix-arg arg)) (setq skk-prefix (skk-get-prefix skk-current-rule-tree)) (skk-insert-prefix skk-prefix)) ;;(skk-kana-cleanup 'force) (when (eq skk-henkan-mode 'active) (skk-kakutei)) (setq skk-prefix "") (unless (or queue (and (not (eq this-command 'skk-insert)) skk-henkan-mode)) (skk-emulate-original-map (skk-make-raw-arg arg))))) (t ;;(skk-cancel-undo-boundary) (setq skk-prefix "") (when (functionp data) (setq data (funcall data (skk-make-raw-arg arg)))) (when (stringp (if (consp data) (car data) data)) (let* ((str (if (consp data) (if skk-katakana (car data) (cdr data)) data)) (pair (when skk-auto-insert-paren (cdr (assoc str skk-auto-paren-string-alist)))) (count0 arg) (count1 arg) (inserted 0)) (when (and (eq skk-henkan-mode 'active) ;$B"'%b!<%I(B skk-kakutei-early (not skk-process-okuri-early)) (skk-kakutei)) ;; arg $B$OJ]B8$7$F$*$+$J$$$H!"(B0 $B$K$J$C$F$7$^$$!"(Bqueue ;; $B$,$?$^$C$F$$$F:FEY$3$3$X$d$C$FMh$?$H$-$KJ8;zF~NO$,(B ;; $B$G$-$J$/$J$k!#(B (skk-cancel-undo-boundary) (while (> count0 0) (skk-insert-str str) (setq count0 (1- count0))) (when pair (while (> count1 0) (unless (string= pair (skk-char-to-unibyte-string (following-char))) (setq inserted (1+ inserted)) (skk-insert-str pair)) (setq count1 (1- count1))) (unless (zerop inserted) (backward-char inserted))) (when (and skk-okurigana (null queue)) (skk-set-okurigana))))))) ;; XXX I don't know how skk-isearch-message works.... (when skk-isearch-message (skk-isearch-message))))) ;;; tree procedure ($B%D%j!<$K%"%/%;%9$9$k$?$a$N%$%s%?!<%U%'!<%9(B) (defun skk-search-tree (tree char-list) "TREE $B$N:,$+$i@hC<$X(B CHAR-LIST $B$K=>$C$FC)$k!#(B $B@.8y$7$?>l9g$O(B nil $B$H(B $B7k2L$NLZ$NAH$rJV$7!"<:GT$7$?>l9g$OC)$l$J$+$C$?(B CHAR-LIST $B$N;D$j$HC)$l$J$/$J$C$?@aE@$NLZ$NAH$rJV$9!#(B" (catch 'return (let (next char rest) (while char-list (setq char (car char-list) rest (cdr char-list) next (skk-select-branch tree char)) (if next (setq tree next char-list rest) (throw 'return (cons char-list tree)))) (cons nil tree)))) (defun skk-add-rule (tree rule) (let* ((prefix (nth 0 rule)) (l (length prefix)) (result (skk-search-tree tree (string-to-list prefix))) (rest (car result)) (addpoint (cdr result))) (while rest (let ((addtree (skk-make-rule-tree (car rest) (if (vectorp prefix) prefix (substring prefix 0 (1+ (- l (length rest))))) nil nil nil))) (skk-add-branch addpoint addtree) (setq addpoint addtree rest (cdr rest)))) (skk-set-nextstate addpoint (nth 1 rule)) (skk-set-kana addpoint (nth 2 rule)))) (defun skk-delete-rule (tree string) "$BF~NO(B STRING $B$KBP$9$k%k!<%k$r%k!<%kLZ(B TREE $B$+$i:o=|$9$k!#(B" (catch 'return (let ((char-list (string-to-list string)) (cutpoint tree) ;; TREE $B$N:,$+$i=P$k;^$,(B1$BK\$7$+$J$$>l9g(B ;; $B$N$?$a$K0l1~=i4|2=$7$F$*$/(B (cuttree (car (skk-get-branch-list tree))) next) (while char-list (setq next (skk-select-branch tree (car char-list)) char-list (cdr char-list)) (if next (if (> (length (skk-get-branch-list tree)) 1) (setq cutpoint tree ; $B;^$,(B2$BK\0J>e$N;~(B cutpoint cuttree cuttree next ; $B$r(B update tree next) (setq tree next)) (throw 'return nil))) (skk-set-branch-list cutpoint (delq cuttree (skk-get-branch-list cutpoint)))))) ;; convert skk-rom-kana-rule-list to skk-rule-tree. ;; The rule tree follows the following syntax: ;; := nil | ( . ) ;; := ( ) ;; := (<$B$R$i$,$JJ8;zNs(B> . <$B%+%?%+%JJ8;zNs(B>) | nil ;; := <$B1Q>.J8;z(B> ;; := <$B1Q>.J8;zJ8;zNs(B> | nil ;;;###autoload (defun skk-compile-rule-list (&rest rule-lists) "rule list $B$rLZ$N7A$K%3%s%Q%$%k$9$k!#(B" (let ((tree (skk-make-rule-tree nil "" nil nil nil)) key) (dolist (rule-list rule-lists) (dolist (rule rule-list) (setq key (car rule)) (ignore-errors (when (symbolp key) (setq key (eval key)) (when (stringp key) (setq rule (cons key (cdr rule))))) (unless (or (not (stringp key)) (string-match "\\w" key) (eq (key-binding key) 'self-insert-command)) (define-key skk-j-mode-map key 'skk-insert))) (when (stringp key) (skk-add-rule tree rule)))) tree)) (defun skk-insert-str (str) "STR $B$rA^F~$9$k!#(B $BI,MW$G$"$l$P(B `skk-auto-start-henkan' $B$r%3!<%k$9$k!#(B $BI,MW$G$"$l$P(B `self-insert-after-hook' $B$r%3!<%k$9$k!#(B `overwrite-mode' $B$G$"$l$P!"E,@Z$K>e=q$-$9$k!#(B" (insert-and-inherit str) (if (eq skk-henkan-mode 'on) ;; $B"&%b!<%I(B (when (and skk-auto-start-henkan (not skk-okurigana)) (skk-auto-start-henkan str)) ;; $B"&%b!<%I0J30(B (when (and (boundp 'self-insert-after-hook) self-insert-after-hook) (funcall self-insert-after-hook (- (point) (length str)) (point))) (when overwrite-mode (skk-del-char-with-pad (skk-ovwrt-len str)))) ;; SKK 9.6 $B$G$O$3$N%?%$%_%s%0$G(B fill $B$,9T$o$l$F$$$?$,!"(BSKK 10 $B$G$O9T$o$l$F$$(B ;; $B$J$+$C$?!#(B (when (and skk-j-mode (not skk-henkan-mode)) (skk-do-auto-fill))) (defun skk-ovwrt-len (str) "$B>e=q$-$7$FNI$$D9$5$rJV$9!#(B" (min (string-width (buffer-substring-no-properties (point) (line-end-position))) (string-width str))) (defun skk-del-char-with-pad (length) "$BD9$5(B LENGTH $B$NJ8;z$r>C5n$9$k!#(B $BD4@0$N$?$a!"I,MW$G$"$l$P!"KvHx$K%9%Z!<%9$rA^F~$9$k!#(B" (let ((p (point)) (len 0)) (while (< len length) (forward-char 1) (setq len (string-width (buffer-substring-no-properties (point) p)))) (delete-region p (point)) (unless (= length len) (insert-and-inherit " ") (backward-char 1)))) (defun skk-cancel-undo-boundary () ;; skk-insert, skk-jisx0208-latin-insert $B$GO"B3$7$FF~NO$5(B ;; $B$l$?(B 20 $BJ8;z$r(B 1 $B2s$N%"%s%I%%$NBP>]$H$9$k!#(B`20' $B$O(B ;; keyboard.c $B$KDj$a$i$l$?%^%8%C%/%J%s%P!JN,7A$H$7$F$N(B ;; $B8+=P$78l$rA^F~$9$k$?$a$N%b!<%I$G$"$k$N$G!"D9$$8+=P$78l$r(B ;; $BA^F~$9$k$3$H$O$"$^$j$J$/!"LdBj$b>.$5$$$H9M$($i$l$k!#(B ;;skk-abbrev-comma ;;skk-abbrev-period self-insert-command))) (cancel-undo-boundary) (when (null skk-current-rule-tree) ;; $B$^$@$+$JJ8;z$,40@.$7$F$$$J$$$H$-$O!"(Bundo count $B$r%$%s%/%j%a%s%H(B ;; $B$7$J$$!#(B (setq skk-self-insert-non-undo-count (1+ skk-self-insert-non-undo-count)))) (t (setq skk-self-insert-non-undo-count 1)))) (defun skk-set-okurigana () "$B8+=P$78l$+$i(B `skk-henkan-okurigana', `skk-henkan-key' $B$N3FCM$r%;%C%H$9$k!#(B" (cancel-undo-boundary) ;;(and skk-katakana (skk-hiragana-region skk-henkan-start-point (point))) (skk-set-marker skk-henkan-end-point skk-okurigana-start-point) ;; just in case (skk-save-point (goto-char skk-okurigana-start-point) (unless (eq (following-char) ?*) (insert-and-inherit "*"))) (setq skk-henkan-okurigana (buffer-substring-no-properties (1+ skk-okurigana-start-point) (point))) (setq skk-henkan-key (concat (buffer-substring-no-properties skk-henkan-start-point skk-henkan-end-point) (or (skk-okurigana-prefix (if skk-katakana (skk-katakana-to-hiragana skk-henkan-okurigana) skk-henkan-okurigana)) skk-okuri-char)) skk-prefix "") (when skk-katakana (setq skk-henkan-key (skk-katakana-to-hiragana skk-henkan-key) skk-henkan-okurigana (skk-katakana-to-hiragana skk-henkan-okurigana))) (delete-region skk-okurigana-start-point (1+ skk-okurigana-start-point)) (skk-set-henkan-count 0) (skk-henkan) (setq skk-okurigana nil)) (defun skk-set-char-before-as-okurigana (&optional no-sokuon) "$B%]%$%s%H$ND>A0$NJ8;z$rAw$j2>L>$H8+Jo$7$F!"JQ49$r3+;O$9$k!#(B $B$?$@$7!"(B $B$b$&$R$H$DA0$NJ8;z$,B%2;$@$C$?>l9g$K$O!"(B $B$=$l0J9_$rAw$j2>L>$H8+Jo$9!#(B" (interactive) (let ((pt1 (point)) pt2 okuri sokuon) (setq okuri (skk-save-point (backward-char 1) (buffer-substring-no-properties (setq pt2 (point)) pt1))) (when okuri (unless no-sokuon (setq sokuon (skk-save-point (backward-char 2) (buffer-substring-no-properties (point) pt2))) (unless (member sokuon '("$B$C(B" "$B%C(B")) (setq sokuon nil))) ;; (skk-save-point (backward-char (if sokuon 2 1)) (skk-set-marker skk-okurigana-start-point (point))) (setq skk-okuri-char (skk-okurigana-prefix okuri)) (unless skk-current-search-prog-list (setq skk-current-search-prog-list skk-search-prog-list)) (skk-set-okurigana)))) ;;; other inputting functions (defun skk-toggle-kutouten () "$B6gFIE@$N= ?9 chr) skk-use-auto-kutouten) (nth 0 output)) ((and (<= ?$B#0(B chr) (>= ?$B#9(B chr) skk-use-auto-kutouten) (nth 1 output)) (t (nth 2 output))))) (defun skk-abbrev-insert (arg) (interactive "*p") (self-insert-command arg)) (defun skk-abbrev-period (arg) "SKK abbrev $B%b!<%I$G8+=P$78l$NJd40Cf$G$"$l$P!"8e$G$J$1$l$P!"%*%j%8%J%k$N%-!<3d$jIU$1$N%3%^%s%I$r%(%_%e%l!<%H$9$k!#(B" (interactive "*P") (skk-with-point-move (if (eq last-command 'skk-comp-do) (progn (setq this-command 'skk-comp-do) (skk-comp-do nil)) (skk-emulate-original-map arg)))) (defun skk-abbrev-comma (arg) "SKK abbrev $B%b!<%I$G8+=P$78l$NJd40Cf$G$"$l$P!"D>A0$N8uJd$rI=<($9$k!#(B $BJd40$ND>8e$G$J$1$l$P!"%*%j%8%J%k$N%-!<3d$jIU$1$N%3%^%s%I$r%(%_%e%l!<%H$9$k!#(B" (interactive "*P") (skk-with-point-move (if (eq last-command 'skk-comp-do) (progn (setq this-command 'skk-comp-do) (skk-comp-previous)) (skk-emulate-original-map arg)))) (defun skk-jisx0208-latin-insert (arg) "$BA41QJ8;z$r%+%l%s%H%P%C%U%!$KA^F~$9$k!#(B `skk-jisx0208-latin-vector' $B$r%F!<%V%k$H$7$F!":G8e$KF~NO$5$l$?%-!<$KBP1~$9$k(B $BJ8;z$rA^F~$9$k!#(B `skk-auto-insert-paren' $B$NCM$,(B non-nil $B$N>l9g$G!"(B`skk-auto-paren-string-alist' $B$KBP1~$9$kJ8;zNs$,$"$k$H$-$O!"$=$NBP1~$9$kJ8;zNs(B ($B$+$C$3N`(B) $B$r<+F0E*$KA^F~$9(B $B$k!#(B" (interactive "p") (barf-if-buffer-read-only) (skk-with-point-move (let* ((str (aref skk-jisx0208-latin-vector (skk-last-command-char))) (arg2 arg) (pair-str (if skk-auto-insert-paren (cdr (assoc str skk-auto-paren-string-alist)) nil)) (pair-str-inserted 0)) (if (not str) (skk-emulate-original-map arg) (skk-cancel-undo-boundary) (while (> arg 0) (skk-insert-str str) (setq arg (1- arg))) (when pair-str (while (> arg2 0) (unless (string= pair-str (char-to-string (following-char))) (setq pair-str-inserted (1+ pair-str-inserted)) (skk-insert-str pair-str)) (setq arg2 (1- arg2))) (unless (zerop pair-str-inserted) (backward-char pair-str-inserted))))))) (defun skk-delete-backward-char (arg) "$B"'%b!<%I$G(B `skk-delete-implies-kakutei' $B$J$iD>A0$NJ8;z$r>C$7$F3NDj$9$k!#(B $B"'%b!<%I$G(B `skk-delete-implies-kakutei' $B$,(B nil $B$@$C$?$iA08uJd$rI=<($9$k!#(B $B"&%b!<%I$G(B`$B"&(B'$B$h$j$bA0$N%]%$%s%H$GC$9!#(B" (interactive "*P") (skk-with-point-move (let ((count (prefix-numeric-value arg))) (cond ((eq skk-henkan-mode 'active) (if (and (not skk-delete-implies-kakutei) (= (+ skk-henkan-end-point (length skk-henkan-okurigana)) (point))) (skk-previous-candidate) ;; overwrite-mode $B$G!"%]%$%s%H$,A43QJ8;z$K0O$^$l$F$$$k$H(B ;; $B$-$K(B delete-backward-char $B$r;H$&$H!"A43QJ8;z$O>C$9$,H>(B ;; $B3QJ8;zJ,$7$+(B backward $BJ}8~$K%]%$%s%H$,La$i$J$$(B (Emacs ;; 19.31 $B$K$F3NG'(B)$B!#JQ49Cf$N8uJd$KBP$7$F$O(B ;; delete-backward-char $B$GI,$:A43QJ8;z(B 1 $BJ8;zJ,(B backward ;; $BJ}8~$KLa$C$?J}$,NI$$!#(B (if overwrite-mode (progn (backward-char count) (delete-char count arg)) (skk-emulate-original-map arg)) ;; XXX assume skk-prefix has no multibyte chars. (if (> (length skk-prefix) count) (setq skk-prefix (substring skk-prefix 0 (- (length skk-prefix) count))) (setq skk-prefix "")) (when (>= skk-henkan-end-point (point)) (if (eq skk-delete-implies-kakutei 'dont-update) (let ((skk-update-jisyo-function #'ignore)) (skk-kakutei)) (skk-kakutei))))) ((and skk-henkan-mode (>= skk-henkan-start-point (point)) (not (skk-get-prefix skk-current-rule-tree))) (skk-set-henkan-count 0) (skk-kakutei)) ;; $BF~NOCf$N8+=P$78l$KBP$7$F$O(B delete-backward-char $B$G(B ;; $BI,$:A43QJ8;z(B 1$BJ8;zJ,(B backward $BJ}8~$KLa$C$?J}$,NI$$!#(B ((and skk-henkan-mode overwrite-mode) (backward-char count) (delete-char count arg)) (t (skk-delete-okuri-mark) (if (skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean) (skk-set-marker skk-kana-start-point nil) (skk-emulate-original-map arg))))))) ;;; henkan routines (defun skk-henkan (&optional prog-list-number) "$B%+%J$r4A;zJQ49$9$k%a%$%s%k!<%A%s!#(B" (let (mark prototype new-word pair kakutei-henkan) (if (string= skk-henkan-key "") (skk-kakutei) ;; we use mark to go back to the correct position after henkan (unless (eobp) (setq mark (skk-save-point (forward-char 1) (point-marker)))) (unless (eq skk-henkan-mode 'active) (skk-change-marker) (setq skk-current-search-prog-list (cond ((and (integerp prog-list-number) (<= 0 prog-list-number) (<= prog-list-number 9)) (let ((list (symbol-value (intern (format "skk-search-prog-list-%d" prog-list-number))))) (or list skk-search-prog-list))) (t skk-search-prog-list)))) ;; skk-henkan-1 $B$NCf$+$i%3!<%k$5$l$k(B skk-henkan-show-candidates ;; $B$+$i(B throw $B$5$l$k!#$3$3$G%-%c%C%A$7$?>l9g$O!"(B?x $B$,%9%H%j!<%`$K(B ;; $BLa$5$l$F$$$k$N$G!"$3$N4X?t$r=P$F!"(Bskk-previous-candidate $B$X$f$/!#(B (catch 'unread (cond ((setq prototype (skk-henkan-1)) (setq new-word prototype)) ((setq prototype (skk-henkan-in-minibuff)) (setq new-word (skk-quote-semicolon prototype)))) (setq kakutei-henkan skk-kakutei-flag) (when new-word (setq pair (skk-insert-new-word new-word)))) (skk-delete-overlay skk-inline-overlays) ;; (if mark (progn (goto-char mark) ;; $B;2>H$5$l$F$$$J$$%^!<%+!<$O!"(BGarbage Collection $B$,%3!<%k$5$l$?$H(B ;; $B$-$K2s<}$5$l$k$,!"$=$l$^$G$N4V!"%F%-%9%H$N$I$3$+$r;X$7$F$$$k$H!"(B ;; $B%F%-%9%H$N%"%C%W%G!<%H$N:]$K$=$N%^!<%+!e$N$H$-!#(B (setq new-word (skk-get-current-candidate)) (unless new-word ;; $B?7$7$$8uJd$r8+$D$1$k$+!"(Bskk-current-search-prog-list $B$,6u$K$J(B ;; $B$k$^$G(B skk-search $B$rO"B3$7$F%3!<%k$9$k!#(B (while (and skk-current-search-prog-list (not new-word)) (setq skk-henkan-list (skk-nunion skk-henkan-list (skk-search))) (skk-henkan-list-filter) (setq new-word (skk-get-current-candidate)))) (when (and new-word (> (skk-henkan-count) 3)) ;; show candidates in minibuffer (setq new-word (skk-henkan-show-candidates))))) new-word)) (defun skk-get-current-candidate (&optional noconv) (let ((candidate (skk-get-current-candidate-1))) (cond ((not (and (skk-numeric-p) (consp candidate))) candidate) (noconv (car candidate)) (t (cdr candidate))))) (defun skk-henkan-list-filter () (when (skk-numeric-p) (skk-num-uniq) (skk-num-multiple-convert)) (when (and (featurep 'jisx0213) ;Mule-UCS skk-jisx0213-prohibit) (skk-jisx0213-henkan-list-filter))) (defun skk-multiple-line-message-clear () (skk-multiple-line-message nil) (remove-hook 'pre-command-hook 'skk-multiple-line-message-clear)) (defun skk-multiple-line-message (fmt &rest args) (if (featurep 'emacs) (apply #'message fmt args) ;; XEmacs (save-selected-window (select-window (minibuffer-window)) (let* ((str (if fmt (apply #'format fmt args) "")) (lines 1) (last-minibuffer-height (window-height)) (tmp str)) ;; (setq lines (count ?\n tmp)) (while (string-match "\n" tmp) (setq lines (1+ lines) tmp (substring tmp (match-end 0)))) (condition-case nil (progn (enlarge-window (- lines last-minibuffer-height)) (apply #'message fmt args) ;; We also need to clear `current-message' in case ;; running under XEmacs so that the height of ;; `minibuffer-window' is left unchanged. (unless (equal str "") ;; (make-local-hook 'pre-command-hook) ;; (add-hook 'pre-command-hook ;; (function skk-multiple-line-message-clear)))) (add-hook 'pre-command-hook #'skk-multiple-line-message-clear))) (quit (shrink-window (- (window-height) last-minibuffer-height)))) str)))) (defun skk-henkan-show-candidates () "$BJQ49$7$?8uJd72$r%(%3!<%(%j%"$KI=<($9$k!#(B" (skk-save-point (let* ((max-candidates (* 7 skk-henkan-show-candidates-rows)) (candidate-keys ; $BI=<(MQ$N%-!<%j%9%H(B (mapcar (lambda (c) (when (or (memq c '(?\C-g skk-start-henkan-char)) (skk-key-binding-member (skk-char-to-unibyte-string c) '(skk-previous-candidate))) (skk-error "`%s' $B$KL58z$J%-!<$,;XDj$5$l$F$$$^$9(B" "Illegal key in `%s'" "skk-henkan-show-candidates-keys")) (skk-char-to-unibyte-string (upcase c))) skk-henkan-show-candidates-keys)) key-num-alist ; $B8uJdA*BrMQ$NO"A[%j%9%H(B (key-num-alist1 ; key-num-alist $B$rAH$_N)$F$k$?$a$N:n6HMQO"A[%j%9%H!#(B ;; $B5U$5$^$K$7$F$*$$$F!"I=<($9$k8uJd$N?t$,>/$J$+$C$?$i@h(B ;; $BF,$+$i4v$D$+:o$k!#(B (let (alist) (dotimes (i max-candidates alist) (push (cons (nth i skk-henkan-show-candidates-keys) i) alist)))) (loop 0) inhibit-quit (echo-keystrokes 0) henkan-list new-one reverse n) ;; Emacs 19.28 $B$@$H(B Overlay $B$r>C$7$F$*$+$J$$$H!" ;; skk-henkan-in-minibuff -> skk-henkan ;; -> skk-henkan-show-candidates $B$N=g$G!":F$S$3$N4X?t$,8F$P$l(B ;; $B$?$H$-$O!"$3$3$G(B henkan-list $B$H(B loop $B$r7W;;$9$k!#(B (setq henkan-list (nthcdr (skk-henkan-count) skk-henkan-list) loop (car (skk-exit-show-candidates))) (skk-set-exit-show-candidates nil)) (t ;; skk-henkan-show-candidates-keys $B$N:G=*$N%-!<$KBP1~$9$k8uJd(B ;; $B$,=P$F$/$k$^$G%5!<%A$rB3$1$k!#(B (while (and skk-current-search-prog-list (null (nthcdr (+ 4 max-candidates (* loop max-candidates)) skk-henkan-list))) ;; $B?75,$K8uJd$,F@$i$l$?;~$N$_(B skk-henkan-list-filter $B$r8F$V!#(B ;; skk-look $B$d(B skk-server-completion-search $B$rMxMQ$7$?M9JXHV9f$+$i$N(B ;; $BJQ49;~$J$I$N$h$&$K!"?tCM$r4^$_3n$DBgNL$N8uJd$,$"$k;~$NB.EY2~A1!#(B (let ((cands (skk-search))) (when cands (setq skk-henkan-list (skk-nunion skk-henkan-list cands)) (skk-henkan-list-filter)))) (setq henkan-list (nthcdr (+ 4 (* loop max-candidates)) skk-henkan-list)))) (save-window-excursion (setq n (skk-henkan-show-candidate-subr candidate-keys henkan-list)) (when (> n 0) (condition-case nil (let* ((event (next-command-event)) (char (event-to-character event)) (key (skk-event-key event)) num) ;; clear out candidates in echo area (skk-multiple-line-message "") (if (and (null char) (null key)) (skk-unread-event event) (setq key-num-alist (nthcdr (- max-candidates n) key-num-alist1)) (when (and key-num-alist char) (setq num (cdr (or (assq char key-num-alist) (assq (if (skk-lower-case-p char) (upcase char) (downcase char)) key-num-alist))))) (cond (num (skk-set-henkan-count (+ 4 (* loop max-candidates) num)) (setq new-one (nth num henkan-list) skk-kakutei-flag t loop nil)) ((or (eq char skk-start-henkan-char) ; SPC (skk-key-binding-member key '(skk-nicola-self-insert-rshift) skk-j-mode-map)) ;; (if (or skk-current-search-prog-list (nthcdr max-candidates henkan-list)) (setq loop (1+ loop)) ;; $B8uJd$,?T$-$?!#$3$N4X?t$+$iH4$1$k!#(B (let ((last-showed-index (+ 4 (* loop max-candidates)))) (skk-set-exit-show-candidates ;; cdr $BIt$O!"<-=qEPO?$KF~$kA0$K:G8e$KI=<($7(B ;; $B$?8uJd72$NCf$G:G=i$N8uJd$r;X$9%$%s%G%/%9(B (cons loop last-showed-index)) ;; $B<-=qEPO?$KF~$k!#(Bskk-henkan-count $B$O(B ;; skk-henkan-list $B$N:G8e$N8uJd$NuBV$KLa$9!#(B (skk-escape-from-show-candidates 4)) (t ;; $B0l$DA0$N8uJd72$r%(%3!<%(%j%"$KI=<($9$k!#(B (setq reverse t)))) ((eq char skk-annotation-toggle-display-char) (skk-annotation-toggle-display-p)) ((skk-key-binding-member key skk-quit-commands skk-j-mode-map) ;; (signal 'quit nil)) (t (skk-message "`%s' $B$OL58z$J%-!<$G$9!*(B" "`%s' is not valid here!" (or (key-description key) (key-description char))) (sit-for 1))))) (quit ;; skk-previous-candidate $B$X(B (skk-escape-from-show-candidates 0)))))) ; end of while loop ;; (or (cdr-safe new-one) new-one)))) (defun skk-henkan-show-candidate-subr (keys candidates) "$B8uJd72$rI=<($9$k4X?t!#(B KEYS $B$H(B CANDIDATES $B$rAH$_9g$o$;$F#7$NG\?t8D$N8uJd72(B ($B8uJd?t$,(B $BK~$?$J$+$C$?$i$=$3$GBG$A@Z$k(B) $B$NJ8;zNs$r:n$j!"%$%s%i%$%s!"%D!<%k%F%#%C%W!"(B $B%(%3!<%(%j%"Kt$O8uJd%P%C%U%!$KI=<($9$k!#(B" (let* ((max-candidates (* 7 skk-henkan-show-candidates-rows)) (workinglst (skk-henkan-candidate-list candidates max-candidates)) str tooltip-str message-log-max) (when workinglst (dotimes (i (length workinglst)) (let ((cand (if (consp (nth i workinglst)) (cdr (nth i workinglst)) (nth i workinglst))) (key (concat (propertize (nth i keys) 'face 'skk-henkan-show-candidates-keys-face) ":"))) (when (and (zerop (% i 7)) ; $B3FNs$N:G=i$N8uJd(B (not (zerop i))) (setq str (concat str "\n"))) (setq str (concat str (if (zerop (% i 7)) "" " ") key cand) tooltip-str (concat tooltip-str key cand "\n")))) (setq str (concat str (propertize (format " [$B;D$j(B %d%s]" (- (length candidates) (length workinglst)) (make-string (length skk-current-search-prog-list) ?+)) 'face 'skk-henkan-rest-indicator-face)) tooltip-str (concat tooltip-str (format "[$B;D$j(B %d%s]" (- (length candidates) (length workinglst)) (make-string (length skk-current-search-prog-list) ?+)))) (cond ;; (1) $B8=:_$N%P%C%U%!$NCf$KI=<($9$k(B ($B%$%s%i%$%sI=<((B) ((and (featurep 'emacs) skk-show-inline (not skk-isearch-switch) (not (skk-in-minibuffer-p))) (skk-inline-show str skk-inline-show-face tooltip-str max-candidates)) ;; (2) tooptip $B$GI=<($9$k(B ((and window-system skk-show-tooltip (not (eq (symbol-function 'skk-tooltip-show-at-point) 'ignore))) (when (and (not (eval-when-compile (featurep 'xemacs))) skk-henkan-rest-indicator) (let* ((body (substring tooltip-str 0 (string-match "\\[$B;D$j(B" tooltip-str))) (rest (substring tooltip-str (- (length body) (length tooltip-str))))) (setq tooltip-str (concat body (make-string (- (car (skk-tooltip-max-tooltip-size)) (string-width rest) 3) ? ) rest)))) (funcall skk-tooltip-function tooltip-str)) ;; (3) $B%(%3!<%(%j%"$r;H$&(B ((and (not skk-show-candidates-always-pop-to-buffer) (> (frame-width) (skk-max-string-width (split-string str "\n")))) (when skk-henkan-rest-indicator (let* ((body (substring str 0 (string-match " \\[$B;D$j(B" str))) (rest (substring str (- (length body) (length str))))) (setq str (concat body (make-string (- (frame-width) (string-width str) 1) ? ) rest)))) (skk-multiple-line-message "%s" str)) ;; (4) $B0l;~%P%C%U%!$r(B pop up $B$7$F;H$&(B (t (skk-henkan-show-candidates-buffer str keys)))) ;; $BI=<($9$k8uJd?t$rJV$9!#(B (length workinglst))) (defun skk-check-treat-candidate-appearance-function () (when (or (eq skk-annotation-lookup-lookup 'always) (eq skk-annotation-lookup-DictionaryServices 'always)) ;; Mac OS X $B$N<-=q%5!<%S%9$r8uJd0lMw$G$b;H$&>l9g$O!"(B ;; `skk-treat-candidate-appearance-function' $B$rD4@a$9$kI,MW$"$j(B (setq skk-treat-candidate-appearance-function 'skk-treat-candidate-sample2)) ;; (functionp skk-treat-candidate-appearance-function)) (defun skk-treat-candidate-appearance (candidate listing-p) (funcall skk-treat-candidate-appearance-function candidate listing-p)) (defun skk-henkan-candidate-list (candidates max) ;; CANDIDATES $B$N@hF,$N(B max $B8D$N$_$N%j%9%H$rJV$9!#(B (let ((count 0) e sep note v) (while (> max count) (setq e (nth count candidates)) (setq sep nil note nil) (when (and (skk-numeric-p) (consp e)) (setq e (cdr e))) (cond (e ;; $B$^$@8uJd$,;D$C$F$$$k>l9g(B (when (skk-check-treat-candidate-appearance-function) ;; skk-treat-candidate-appearance-function $B$K$h$C$F%f!<%6$O(B ;; $BG$0U$K8uJdJ8;zNs$HCm~$9$k$3$H$,$G$-$k!#(B ;; $B%f!<%6$,JV$9CM$O(B cons cell $B$^$?$OJ8;zNs$H$J$k!#(B (let ((value (save-match-data ;; $B8uJd0lMwI=<($N:]$O(B ;; skk-treat-candidate-appearance-function $B$N(B ;; $BBh(B 2 $B0z?t$r(B non-nil $B$H$9$k!#(B (skk-treat-candidate-appearance e 'list)))) (cond ((consp value) ;; $BJV$jCM$,(B cons cell $B$@$C$?>l9g(B (setq e (car value)) (cond ((consp (cdr value)) ;; ($B8uJd(B . ($B%;%Q%l!<%?(B . $BCml9g(B (setq e value note nil))))) ;; $B%f!<%6$,Cml9g$O$b$&Cm$`Cml9g(B (setq count max)))) ;; $B8uJd$r=P8==g$K%=!<%H$7D>$7$FJV$9!#(B (nreverse v))) (defun skk-henkan-show-candidates-buffer (str keys) ;; $B%(%3!<%(%j%"$NBe$o$j$K0l;~%P%C%U%!$r(B pop up $B$7$F8uJd0lMw$rI=<($9$k!#(B (let ((buff (get-buffer-create "*$B8uJd(B*")) (case-fold-search t)) (with-current-buffer buff (erase-buffer) (insert str) (goto-char (point-min)) ;; 1 $B8uJd$K(B 1 $B9T$r3d$jEv$F$k!#(B (forward-char 2) (while (re-search-forward (concat " " (mapconcat 'identity keys ":\\| ") ":\\|" " \\[$B;D$j(B [0-9]+\\(\\++\\)?\\]") nil t) (goto-char (match-beginning 0)) (delete-char 2) (insert "\n")) (goto-char (point-min)) ;; $B1&C<$KM>Gr$r@_$1$k(B (while (and (move-to-column (- (frame-width) 2)) (not (eobp)) (>= (frame-width) (current-column))) (unless (eolp) ;; $B6XB'=hM}(B (unless (member (char-to-string (char-before)) skk-auto-start-henkan-keyword-list) (backward-char 1)) (insert "\n ") (forward-line -1)) (forward-line 1)) ;; [$B;D$j(B 99++] $B$r1&C<$X(B (when skk-henkan-rest-indicator (let ((col (progn (goto-char (point-max)) (skk-screen-column)))) (beginning-of-line) (insert-char 32 (- (frame-width) col 1)))) ;;$B8uJd%P%C%U%!$NGX7J?'(B (when skk-candidate-buffer-background-color (unless skk-candidate-buffer-background-color-odd (setq skk-candidate-buffer-background-color-odd skk-candidate-buffer-background-color)) (goto-char (point-min)) (let ((background-color skk-candidate-buffer-background-color)) (while (null (eobp)) (let* ((eol (save-excursion (end-of-line) (unless (eobp) (forward-char)) (point))) (bol (progn (beginning-of-line) (point))) (ovl (make-overlay bol eol))) (when (or (string-match "[ASDFJKL]:" (buffer-substring bol (+ 2 bol))) (string-match "\\[$B;D$j(B [0-9]+\\(\\++\\)?\\]" (buffer-substring bol eol))) (setq background-color (if (string= background-color skk-candidate-buffer-background-color) skk-candidate-buffer-background-color-odd skk-candidate-buffer-background-color))) (overlay-put ovl 'face `(:background ,background-color))) (forward-line)))) (goto-char (point-min))) (let ((minibuf-p (skk-in-minibuffer-p)) (window (get-buffer-window (skk-minibuffer-origin)))) (when minibuf-p (if window (select-window window) (other-window 1))) (unless (eq (next-window) (selected-window)) ;; *$B8uJd(B* $B%P%C%U%!$r8+0W$/$9$k!#(B ;; `save-window-excursion' $B$NCf$J$N$GBg>fIW$J$O$:!#(B (delete-other-windows)) (save-selected-window (pop-to-buffer buff) (let ((lines (count-lines (point-min) (point-max)))) ;; window-height() includes mode-line (when (> lines (1- (window-height))) (enlarge-window (- lines (1- (window-height)))))) (unless (pos-visible-in-window-p) (recenter '(1))) (skk-fit-window) (apply 'set-window-fringes (if skk-candidate-buffer-display-fringes skk-candidate-buffer-fringe-width '(nil 0 0)))) (when minibuf-p (select-window (minibuffer-window)))))) (defun skk-henkan-in-minibuff () "$B<-=qEPO?%b!<%I$KF~$j!"EPO?$7$?C18l$NJ8;zNs$rJV$9!#(B" (unless (numberp skk-henkan-in-minibuff-nest-level) (setq skk-henkan-in-minibuff-nest-level (minibuffer-depth))) (when (and window-system skk-show-tooltip) (skk-tooltip-hide)) (when skk-show-inline (skk-inline-show "$B"-<-=qEPO?Cf"-(B" 'skk-jisyo-registration-badge-face)) (save-match-data (let ((enable-recursive-minibuffers t) (depth (- (1+ (minibuffer-depth)) skk-henkan-in-minibuff-nest-level)) ;; XEmacs $B$G$Ol9g!#:G8e$K%(%3!<%(%j%"$KI=<($7$?8uJd72$r:FI=(B ;; $B<($9$k!#(B (progn (skk-set-henkan-count (cdr (skk-exit-show-candidates))) (skk-henkan)) ;; skk-henkan-show-candidates $B$KF~$kA0$K8uJd$,?T$-$?>l9g(B (skk-set-henkan-count (1- (skk-henkan-count))) (if (= (skk-henkan-count) -1) ;; $BAw$j$"$j$NJQ49$G<-=qEPO?$KF~$j!"6uJ8;z$rEPO?$7$?8e!"$=$N(B ;; $B$^$^:FEYAw$j$J$7$H$7$FJQ49$7$?>l9g$O(B ;; skk-henkan-okurigana, skk-okuri-char $B$NCM$r(B nil $B$K$7$J$1(B ;; $B$l$P!"$=$l$>$l$NCM$K8E$$Aw$j2>L>$,F~$C$?$^$^$G8!:w$K<:GT(B ;; $B$9$k!#(B (progn (setq skk-henkan-okurigana nil skk-okurigana nil skk-okuri-char nil) (skk-change-marker-to-white)) ;; $B<-=qEPO?$KF~$kD>A0$N8uJd$KCmH(B new-one)))) (defun skk-compute-henkan-key2 () ;; skk-henkan-okurigana $B$,(B non-nil $B$J$i(B skk-henkan-key $B$+$i!"$+$D$F(B ;; skk-henkan-key2 $B$H8F$P$l$F$$$?$b$N$r:n$k!#(B ;; skk-henkan-key2 $B$H$O!"!V4A;zItJ,$NFI$_(B + "*" + $BAw$j2>L>!W$N7A<0$NJ8;zNs$r(B ;; $B8@$&!#(B (when skk-henkan-okurigana (save-match-data (string-match "[a-z]+$" skk-henkan-key) (concat (substring skk-henkan-key 0 (match-beginning 0)) "*" skk-henkan-okurigana)))) (defun skk-remove-redundant-okurigana (word) "$B<-=q$KEPO?$5$l$k8uJd$N;}$DM>7W$JAw$j2>L>$rL>$r>C$7$F$+$i(B [RET] $B$r2!$5$J$1$l$P@5$7$/EPO?(B $B$G$-$J$$!#(B $B$=$3$G!"%f!<%6$,4V0c$($FAw$j2>L>$r>C$7K:$l$F$$$J$$$+$I$&$+!"(B SKK $B$NB&$G%A%'%C%/$G$-$kHO0O$K$D$$$F$O%f!<%6$N3NG'$rl9g$N$_M-8z!#(B auto $B$K@_Dj$9$k$H%f!<%6$K3NG'$7$J$$!#(B $BJQ49$,9T$o$l$?%P%C%U%!$G$$Aw$j2>L>$r-4}4}IhMQ(B")) ;; skk-henkan-show-candidates-buffer $B$+$i$R$C$Q$C$F$-$?%3!<%I(B (let ((minibuf-p (skk-in-minibuffer-p)) (window (get-buffer-window (skk-minibuffer-origin)))) (when minibuf-p (if window (select-window window) (other-window 1))) (unless (eq (next-window) (selected-window)) (delete-other-windows)) (save-selected-window (pop-to-buffer buff) (skk-fit-window) (unless (pos-visible-in-window-p) (recenter '(1)))) (when minibuf-p (select-window (minibuffer-window))))))) (defun skk-previous-candidate (&optional arg) "$B"'%b!<%I$G$"$l$P!"0l$DA0$N8uJd$rI=<($9$k!#(B $B"'%b!<%I0J30$G$O%+%l%s%H%P%C%U%!$K%?%$%W$7$?J8;z$rA^F~$9$k!#(B $B3NDj<-=q$K$h$k3NDj$ND>8e$K8F$V$H3NDj$r%"%s%I%%$7!"8+=P$7$KBP$9$kC$7$F$*$+$J$$$H!"C$7!"$=$N>l=j$XJQ497k2L$NJ8;zNs$rA^F~$9$k!#(B" (save-match-data (let (retval note face) (while (and (setq retval (skk-treat-new-word (or retval word))) (stringp retval)) ;; nextword-or-retval $B$KJ8;zNs$,BeF~$5$l$?>l9g(B (`skk-ignore-dic-word' ;; $B$K$h$C$FA0$N8uJd$,%9%-%C%W$5$l$?>l9g(B) $B$O$=$NJ8;zNs$r?7$7$$8uJd$H$7$F(B ;; $B=hM}$r7+$jJV$9!#J8;zNs0J30$,BeF~$5$l$?$i%k!<%W$r=*N;$9$k!#(B ()) (when (consp retval) (setq word (car retval) note (cdr retval))) (unless (eq retval 'none) ;; $BA^F~$9$Y$-8uJd$,$"$k!#(B (when skk-use-face (skk-henkan-face-off)) (delete-region skk-henkan-start-point skk-henkan-end-point) (goto-char skk-henkan-start-point) ;; word $B$rA^F~$9$kA0$K$=$N(B face $BB0@-$r=|5n$9$k!#$?$@$7!$=|5n$9$kA0$K(B ;; face $BB0@-$rJQ?t$KB`Hr$9$k!#$3$N(B face $BB0@-$Ol9g!#(B (skk-kakutei)) (cons word note))))) (defun skk-treat-new-word (word) "`skk-insert-new-word' $B$N%5%V%k!<%A%s!#A^F~$9$Y$-C18l$rAu>~$9$k!#(B $B%k!<%WFb$G$h$P$l$k!#=hM}Cf$K(B `skk-ignore-dic-word' $B$,8F$P$l$?>l9g$O$=$3$+$i(B catch $B$9$k!#(Bcatch $B$7$?CM$,J8;zNs$J$i$P!"$=$l$rJV$9(B (word $B$r$=$l$KCV$-49$($F(B $B:FEY8F$S=P$5$l$k(B)$B!#(B catch $B$7$J$+$C$?>l9g$OA^F~$9$Y$-J8;zNs$,F@$i$l$k!#$3$N>l9g(B $B$OCml9g!"(Bnext-word $B$KJ8;zNs$,%;%C%H$5$l$F$$$k!#(B ;; $B$3$N>l9g(B word $B$r(B next-word $B$KCV$-49$($F=hM}$r$d$jD>$9!#(B ;; $B8uJd0lMw$GA*Br$5$l$?8uJd$rA^F~$9$k:]$O!"(B ;; skk-kakutei-flag $B$,(B t $B$K$J$C$F$$$k!#$3$N>l9g$OAu>~(B ;; $B$7$F$b$7$+$?$J$$!#(B (when (and (not skk-kakutei-flag) (skk-check-treat-candidate-appearance-function)) ;; skk-treat-candidate-appearance-function $B$K$h$C$F(B ;; $B%f!<%6$OG$0U$K8uJdJ8;zNs$HCm~(B ;; $B$9$k$3$H$,$G$-$k!#(B ;; $B%f!<%6$,JV$9CM$O(B cons cell $B$^$?$OJ8;zNs$H$J$k!#(B (save-match-data (let ((value (skk-treat-candidate-appearance word nil))) (if (consp value) ;; $BJV$jCM$,(B cons cell $B$@$C$?>l9g(B (setq word (car value) note (cond ((consp (cdr value)) ;; ($B8uJd(B . ($B%;%Q%l!<%?(B . $BCml9g(B (setq word value))))) ;; $B%f!<%6$N0U?^$K$h$C$FCml9g$O(BSKK $B$NJ}$G$OBP=h$7$J$$!#(B (when (and (not (stringp note)) (string-match ";" word)) (setq note (substring word (match-end 0)) word (substring word 0 (match-beginning 0)))) ;; word $B$NJ}$,(B S $B<0$NJ8;zNs$@$C$?$i!"$=$l$rI>2A$7$?(B ;; $BJ8;zNs$rJV$9!#(B ;; note $B$NJ}$b(B S $B<0$N>l9g$,$"$j$&$k$,!"$=$l$NI>2A$O(B ;; skk-annotation $B$,$d$C$F$/$l$k!#(B (setq word (skk-eval-string word)) (cons word note)))) (defun skk-treat-strip-note-from-word (word) "$BJQ498uJd$NJ8;zNs(B WORD $B$r!"8uJd$=$N$b$N$HCm (\"word\" . nil) \"word;\" --> (\"word\" . \"\") \"word;note\" --> (\"word\" . \"note\") " (save-match-data (let (cand note) (if (string-match ";" word) (setq cand (substring word 0 (match-beginning 0)) note (substring word (match-end 0))) (setq cand word)) (cons cand note)))) (defun skk-kakutei (&optional arg word) "$B8=:_I=<($5$l$F$$$k8l$G3NDj$7!"<-=q$r99?7$9$k!#(B $B%+%l%s%H%P%C%U%!$G(B SKK $B%b!<%I$K$J$C$F$$$J$+$C$?$i(B SKK $B%b!<%I$KF~$k!#(B $B%*%W%7%g%J%k0z?t$N(B WORD $B$rEO$9$H!"8=:_I=<($5$l$F$$$k8uJd$H$OL54X78$K(B WORD $B$G3NDj$9$k!#(B" ;; read only $B$G%(%i!<$K$J$k$h$&$K$9$k$H(B read only $B%P%C%U%!$G(B SKK $B$,5/F0$G$-(B ;; $B$J$/$J$k!#(B (interactive "P") (let ((inhibit-quit t) converted kakutei-word) (when skk-henkan-mode ;'on or 'active (case skk-henkan-mode (active ;$B"'%b!<%I(B (setq kakutei-word ;; $B3NDj<-=q$N8l$G3NDj$7$?$H$-$O!"<-=q$K$=$N8l$r=q$-9~$`I,MW$b$J(B ;; $B$$$7!"99?7$9$kI,MW$b$J$$$H;W$C$F$$$?$,!"Jd40$r9T$&$H$-$O!"(B ;; $B8D?M<-=q$r;2>H$9$k(B ($B3NDj<-=q$O;2>H$7$J$$(B) $B$N$G!"B?>/;q8;$H;~(B ;; $B4V$rL5BL$K$7$F$b!"8D?M<-=q$K3NDj<-=q$N%(%s%H%j$r=q$-9~$s$G99(B ;; $B?7$b$7$F$*$/!#(B (or word (skk-get-current-candidate 'noconv))) (when (and kakutei-word (skk-update-jisyo-p kakutei-word)) (skk-update-jisyo kakutei-word) ;; $B@\Hx<-!&@\F,<-$K4X$9$k=hM}(B (cond ((not skk-learn-combined-word) ;; $B%f!<%6$,4uK>$7$J$$8B$j2?$N=hM}$b$7$J$$!#(B (setq skk-after-prefix nil)) ((and skk-after-prefix (not (string-match "^[^\000-\177]+>$" skk-henkan-key))) ;; $B$3$N%P%C%U%!$K$*$$$F!"@\F,<-$KB3$/F~NO$,?J9TCf!#(B (let* ((history (cdr skk-kakutei-history)) (list1 (car skk-kakutei-history)) ; ($B$j$h$&(B $BMxMQ(B) (list2 (catch 'list ; ($B$5$$(B> $B:F(B) (while history (if (eq (nth 2 list1) (nth 2 (car history))) ;; $BF1$8%P%C%U%!$@$C$?$i(B (throw 'list (car history)) (setq history (cdr history)))))) (list1-word (car (skk-treat-strip-note-from-word (nth 1 list1)))) (list2-word (car (skk-treat-strip-note-from-word (nth 1 list2)))) skk-henkan-key comb-word) (when (and (stringp list2-word) (string-match "^[^\000-\177]+>$" (car list2)) (skk-save-point (ignore-errors (goto-char (- skk-henkan-start-point (length list1-word))) (looking-at list2-word)))) (setq skk-henkan-key (concat (substring (car list2) 0 (1- (length (car list2)))) (car list1)) ; $B$5$$$j$h$&(B comb-word (concat list2-word list1-word)) ; $B:FMxMQ(B (skk-update-jisyo comb-word)) (setq skk-after-prefix nil))) ((and (stringp (caar skk-kakutei-history)) (string-match "^>[^\000-\177]+$" (caar skk-kakutei-history))) ;; $B:#2s$N3NDj$,@\Hx<-$@$C$?>l9g!"A02s$N3NDj$H:#2s$N@\Hx<-$r(B ;; $B9g$o$;$?8l$r<-=qEPO?$9$k!#(B (let* ((history (cdr skk-kakutei-history)) (list1 (car skk-kakutei-history)) ; (>$B$F$-(B $BE*(B) (list2 (catch 'list ; ($B$+$s$I$&(B $B46F0(B) (while history (if (eq (nth 2 list1) (nth 2 (car history))) ;; $BF1$8%P%C%U%!$@$C$?$i(B (throw 'list (car history)) (setq history (cdr history)))))) (list1-word (car (skk-treat-strip-note-from-word (nth 1 list1)))) (list2-word (car (skk-treat-strip-note-from-word (nth 1 list2)))) skk-henkan-key comb-word) (when (stringp list2-word) (setq skk-henkan-key (concat (car list2) (substring (car list1) 1)) ; $B$+$s$I$&$F$-(B comb-word (concat list2-word list1-word)) ; $B46F0E*(B (skk-update-jisyo comb-word))))) ;; (when (skk-numeric-p) (setq converted (skk-get-current-candidate)) (skk-num-update-jisyo kakutei-word converted)))) (t ;; $B"&%b!<%I$G3NDj$7$?>l9g!#JX59E*$K8=:_$N%]%$%s%H$^$G$r8+=P$78l$r07$$(B ;; $B$7$FMzNr$r99?7$9$k!#(B (when (and (> skk-kakutei-history-limit 0) (< skk-henkan-start-point (point)) (skk-save-point (goto-char skk-henkan-start-point) (eq (skk-what-char-type) 'hiragana))) (skk-update-kakutei-history (buffer-substring-no-properties skk-henkan-start-point (point)))))) (when (and window-system skk-show-tooltip) (skk-tooltip-hide)) (when skk-mode (skk-kakutei-cleanup-buffer) (when (and skk-undo-kakutei-word-only (consp buffer-undo-list)) ;; $B"&%b!<%I$K0\$C$F$+$i8=:_$^$G$N(B undo $B>pJs$+$i@hF,0J30$N(B ;; nil $B$r:o=|$9$k(B (setq buffer-undo-list (cons (car buffer-undo-list) (nconc (delq nil (cdr (butlast buffer-undo-list (length skk-last-buffer-undo-list)))) skk-last-buffer-undo-list)))) ;; KAKUTEI-WORD $B$J$I$N>pJs$,I,MW$G$"$l$P!"(Bskk-last-henkan-data ;; $B$+$iF@$i$l$k!#I,MW$J%G!<%?$,$=$l$i$NJQ?t$K8BDj$5$l$J$$$N$G!"(B ;; $B0z?t$K$7$J$$!#(B (when skk-kakutei-end-function (funcall skk-kakutei-end-function)) (skk-kakutei-initialize (if (skk-numeric-p) (cons kakutei-word converted) kakutei-word)))) (skk-do-auto-fill) (when (and skk-undo-kakutei-return-previous-point (numberp skk-undo-kakutei-previous-point) (numberp skk-undo-kakutei-previous-length) (markerp skk-henkan-end-point) (markerp skk-henkan-start-point)) (goto-char (+ skk-undo-kakutei-previous-point (if (>= skk-undo-kakutei-previous-point (1- (+ skk-henkan-start-point skk-undo-kakutei-previous-length))) (- skk-henkan-end-point skk-henkan-start-point skk-undo-kakutei-previous-length) 0)))) (setq skk-undo-kakutei-previous-point nil skk-undo-kakutei-previous-length nil) (cond ((not skk-mode) (skk-mode 1)) (skk-undo-kakutei-prev-state (cond ((cdr (assq 'skk-latin-mode skk-undo-kakutei-prev-state)) (skk-latin-mode-on)) ((cdr (assq 'skk-jisx0208-latin-mode skk-undo-kakutei-prev-state)) (skk-jisx0208-latin-mode-on)) ;; skk-mode $B$,%*%U$N>uBV$KLa$=$&$H$9$k$H(B ;; `skk-mode-exit' $BFb$G:FEY(B `skk-kakutei' $B$r8F$V$?(B ;; $B$aL58B%k!<%W$K$J$C$F$7$^$&(B ;; ((not (cdr (assq 'skk-mode skk-undo-kakutei-prev-state))) ;; (skk-mode -1)) ((cdr (assq 'skk-j-mode skk-undo-kakutei-prev-state)) ;; M-x skk-undo-kakutei $B$G(B skk-abbrev-mode $B$KLa$C$?:]!"(B ;; $B3NDj8e$K(B skk-j-mode $B$KLa$k$?$a$K$O0J2<$,I,MW!#(B (skk-j-mode-on skk-katakana))) (setq skk-undo-kakutei-prev-state nil)) ((not (or skk-j-mode skk-jisx0201-mode)) (skk-j-mode-on skk-katakana)))) nil) (defun skk-update-jisyo-p (word) "WORD $B$,8D?M<-=q$KEPO?$5$l$k$Y$-$+H]$+$rH=Dj$9$k!#(B $BJQ?t(B `skk-search-excluding-word-pattern-function' $B$,4X?t$G$"$l$P!"(BWORD $B$r(B $B0z?t$K$7$F$=$N4X?t$r$l$N4X?t$rH$N$3$H!#(B" (save-match-data (not (run-hook-with-args-until-success 'skk-search-excluding-word-pattern-function word)))) (defun skk-kakutei-cleanup-buffer () "$B3NDjD>8e$N%P%C%U%!$r@07A$9$k!#(B" (when skk-okurigana ;; $B3NDjJQ49$N$H$-$K$3$3$K$/$k!#(B ;; $B:FJQ49$N:]$KAw$j2>L>4XO"%U%i%0$,(B clear $B$5$l$F$$$k$H$h$m$7$/$J$$$N$G(B ;; `skk-delete-okuri-mark' $B$N(B NOCLEAR $B$r%;%C%H$7$F8F$V!#(B (skk-delete-okuri-mark t)) (skk-delete-henkan-markers) (when (and (boundp 'self-insert-after-hook) self-insert-after-hook) (funcall self-insert-after-hook skk-henkan-start-point (point))) (when overwrite-mode (skk-del-char-with-pad (skk-ovwrt-len (buffer-substring-no-properties skk-henkan-start-point (point)))))) (defun skk-kakutei-initialize (&optional kakutei-word) "$B3NDj;~$KJQ?t$N=i4|2=$H%"%s%I%%$N$?$a$NJQ?t$NJ]B8$r9T$&!#(B" (when (and kakutei-word (or (consp kakutei-word) (not (string= kakutei-word "")))) (setq skk-kakutei-count (1+ skk-kakutei-count)) ;; skk-undo-kakutei $B$N$?$a$K:G8e$NJQ49$N%G!<%?$rJ]B8$9$k!#(B (skk-put-last-henkan-data (list (cons 'henkan-key skk-henkan-key) (cons 'okuri-char skk-okuri-char) (cons 'henkan-okurigana skk-henkan-okurigana) (cons 'henkan-list ;; $B3NDj$7$?8l$r@hF,$K$9$k!#(B (cons kakutei-word (delete kakutei-word skk-henkan-list))) (cons 'henkan-buffer (current-buffer)) (cons 'henkan-point (let ((hpoint (skk-get-last-henkan-datum 'henkan-point))) (if hpoint (set-marker hpoint (point)) (point-marker)))) (cons 'abbrev-mode skk-abbrev-mode) ;; (eq last-command 'skk-kakutei-henkan) $B$G%]!<%?%V%k$K3NG'$G$-(B ;; $B$k$N$G$"$($F$$$i$J$$$+!#(B ;; (cons 'kakutei-henkan (eq this-command 'skk-kakutei-henkan)) ;; $B>e5-0J30$N(B henkan data $B$r(B skk-last-henkan-data $B$K;D$7$?$+$C$?$i!"(B ;; skk-kakutei-end-function $B$rMxMQ$9$k!#(B ))) (skk-set-henkan-count -1) (skk-set-exit-show-candidates nil) (setq skk-abbrev-mode nil skk-henkan-in-minibuff-flag nil skk-henkan-key nil skk-henkan-list nil skk-henkan-okurigana nil skk-henkan-mode nil skk-kakutei-flag nil skk-kakutei-henkan-flag nil skk-undo-kakutei-flag nil skk-okuri-char nil skk-okuri-index-min -1 skk-okuri-index-max -1 ;; skk-prefix "" )) (defun skk-undo-kakutei () "$B0lHV:G8e$N3NDj$r%"%s%I%%$7!"8+=P$78l$KBP$9$k8uJd$rI=<($9$k!#(B $B:G8e$K3NDj$7$?$H$-$N8uJd$O%9%-%C%W$5$l$k!#(B $BB>$K8uJd$,$J$$$H$-$O!"%(%3!<%(%j%"$G$N<-=qEPO?$KF~$k!#(B" (interactive) (let (jmsg emsg) (cond ((eq last-command 'skk-undo-kakutei) (setq jmsg "$B3NDj%"%s%I%%$OO"B3;HMQ$G$-$^$;$s(B" emsg "Cannot undo kakutei repeatedly")) ((eq skk-henkan-mode 'active) (setq jmsg "$B"'%b!<%I$G$O3NDj%"%s%I%%$G$-$^$;$s(B" emsg "Cannot undo kakutei in $B"'(B mode")) ((or (not (skk-get-last-henkan-datum 'henkan-key)) (string= (skk-get-last-henkan-datum 'henkan-key) "") (null skk-henkan-end-point)) ;; skk-henkan-key may be nil or "". (setq jmsg "$B%"%s%I%%%G!<%?$,$"$j$^$;$s(B" emsg "Lost undo data"))) (if jmsg (skk-message jmsg emsg) (skk-with-point-move (condition-case nil (skk-undo-kakutei-subr) ;; skk-undo-kakutei $B$+$iESCf$GH4$1$?>l9g$O!"3F= (point-max) end) ;; $B:G8e$NJQ49ItJ,$N%F%-%9%H$r>C$9!#Aw$j2>L>$rGD0.$7$F$$$k$N$J$i(B ;; (skk-process-okuri-early $B$,(B non-nil $B$J$iAw$j2>L>$rGD0.$G$-$J$$(B)$B!"(B ;; $BAw$j2>L>$r4^$a$?ItJ,$^$G$r>C$9!#(B (delete-region skk-henkan-start-point end)) (when skk-undo-kakutei-word-only (setq skk-last-buffer-undo-list buffer-undo-list)) (goto-char skk-henkan-start-point) (insert-and-inherit "$B"'(B") (skk-set-marker skk-henkan-start-point (point)) (cond (skk-okuri-char ;; $BAw$j$"$j(B (insert-and-inherit (substring skk-henkan-key 0 (1- (length skk-henkan-key)))) (skk-set-marker skk-henkan-end-point (point)) (when skk-henkan-okurigana (insert-and-inherit skk-henkan-okurigana))) (t (insert-and-inherit skk-henkan-key) (skk-set-marker skk-henkan-end-point (point)))) (skk-message "$B3NDj%"%s%I%%!*(B" "Undo kakutei!") (skk-set-henkan-count 1) (skk-henkan))) (defun skk-set-henkan-point (&optional arg) "$BJQ49$r3+;O$9$k%]%$%s%H$r%^!<%/$7!"BP1~$9$k(B `skk-prefix' $B$+Jl2;$rF~NO$9$k!#(B" (let* ((last-char (skk-downcase (skk-last-command-char))) (normal (not (eq last-char (skk-last-command-char)))) (sokuon (if (string= skk-prefix (skk-char-to-unibyte-string last-char)) (/= last-char ?o) nil)) (henkan-active (eq skk-henkan-mode 'active))) (cond ((not (eq skk-henkan-mode 'on)) (if normal (skk-set-henkan-point-subr) (when skk-henkan-mode (skk-set-henkan-point-subr)) (if henkan-active (skk-emulate-original-map arg) ;; What's to be here? ;;(skk-insert arg) ))) ((not normal) ;; special char (insert-and-inherit last-char) (skk-set-marker skk-henkan-end-point (point)) (skk-set-henkan-count 0) (setq skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point (point)) skk-prefix "") (skk-henkan)) ;; prepare for the processing of okurigana if not skk-okurigana ;; and the preceding character is not a numeric character. ;; if the previous char is a special midashi char or a ;; numeric character, we assume that the user intended to type the ;; last-command-char in lower case. ((and (or ;; for KAnji, KanJIru (not (skk-get-prefix skk-current-rule-tree)) (if (/= skk-kana-start-point skk-henkan-start-point) (prog1 t (unless sokuon ; for TaSSi or TasSi (skk-kana-cleanup))) ; for NEko nil)) (not skk-okurigana) (or (= skk-henkan-start-point (point)) (let ((p (char-before))) (not (or ;; previous char is a special midashi char (memq p skk-special-midashi-char-list) ;; previous char is an ascii numeric char (and (<= ?0 p) (<= p ?9)) ;; previous char is a JIS X 0208 numeric char (and (skk-jisx0208-p p) (= (skk-char-octet p 0) 35) ;?# (<= 48 (skk-char-octet p 1)) ; ?0 (<= (skk-char-octet p 1) 57)) ; ?9 ))))) (cond (skk-process-okuri-early (skk-set-marker skk-henkan-end-point (point)) (let ((char (skk-char-to-unibyte-string last-char))) (setq skk-okuri-char (or (cdr (assoc char skk-okuri-char-alist)) char))) (cond (sokuon (setq skk-henkan-key (concat (buffer-substring-no-properties skk-henkan-start-point skk-kana-start-point) (if skk-katakana "$B%C(B" "$B$C(B") skk-henkan-okurigana)) (skk-erase-prefix) (insert-and-inherit (if skk-katakana "$B%C(B " "$B$C(B ")) (setq skk-prefix "") (skk-set-henkan-count 0) (skk-henkan) (delete-char -2)) (t (setq skk-henkan-key (concat (buffer-substring-no-properties skk-henkan-start-point (point)) skk-okuri-char)) (insert-and-inherit " ") (setq skk-prefix "") (skk-set-henkan-count 0) (skk-henkan) (delete-char -1))) ;; we set skk-kana-start-point here, since the marker may no ;; longer point at the correct position after skk-henkan. (skk-set-marker skk-kana-start-point (point))) ((/= skk-henkan-start-point (point)) (when sokuon (skk-erase-prefix 'clean) (insert-and-inherit (if skk-katakana "$B%C(B" "$B$C(B"))) (cond ((and (not sokuon) (skk-get-prefix skk-current-rule-tree) normal (eq (char-before) (string-to-char skk-prefix))) ;; SKK $B$N;EMM$K$J$$Nc30$N=hM}!#(B ;; $BNc$($P!$%f!<%6$,(B $B!VJb$/!W$rA^F~$7$?$/$F(B "AruKu" $B$HBG$D$Y$-(B ;; $B$H$3$m$r(B "ArukU" $B$HBG$C$F$7$^$C$?>l9g!#$3$N>l9g(B SKK $BB&$G(B ;; $B$I$&=hM}$9$k$Y$-$+!"7h$^$C$F$$$J$$!#$3$3$G$O2>$N=hCV$H$7$F!"(B ;; "AruKu" $B$HF1MM$NJQ49$r$9$k$h$&$K$7$F$*$/!#(B (setq skk-okuri-char nil skk-okurigana nil normal nil) (skk-set-last-command-char last-char) (let ((skk-dcomp-activate nil)) (skk-kana-input arg)) (skk-set-char-before-as-okurigana)) (t (when (and skk-dcomp-activate (skk-dcomp-marked-p)) ;; $B?7$7$$(B marker $B$r(B set $B$9$kA0$K(B skk-dcomp $B$N(B marker $B$r%/%j%"(B ;; $B$7$F$*$/!#(B (skk-dcomp-before-kakutei)) (skk-set-marker skk-okurigana-start-point (point)) (insert-and-inherit "*") (skk-set-marker skk-kana-start-point (point)) (setq skk-okuri-char (skk-char-to-unibyte-string last-char) skk-okurigana t))))))) (when normal (skk-set-last-command-char last-char) (skk-kana-input arg)))) ;;;###autoload (defun skk-henkan-on-message () (condition-case nil (when (and skk-verbose (not (or skk-isearch-switch (skk-in-minibuffer-p))) (eq skk-henkan-mode 'on) (< (marker-position skk-henkan-start-point) (point)) (sit-for skk-verbose-wait)) (skk-setup-verbose-messages) (message "%s" skk-henkan-on-message)) (quit (keyboard-quit))) nil) (defun skk-start-henkan (arg &optional prog-list-number) "$B"&%b!<%I$G$O4A;zJQ49$r3+;O$9$k!#"'%b!<%I$G$Ol9g$O!"8+=P$78l$rJ?2>L>$K(B $BJQ49$7$F$+$i4A;zJQ49$r3+;O$9$k!#(B $B8+=P$78l$rJQ49$;$:$K$=$N$^$^4A;zJQ49$r9T$$$?$1$l$P!"(B\\[universal-argument] SPC (arg $B$,(B 4 $B$K$J$k(B) $B$H%?%$%W$9$k!#(B" (interactive "*p") (unless prog-list-number (setq prog-list-number current-prefix-arg)) (skk-with-point-move (cancel-undo-boundary) (if (eq skk-henkan-mode 'active) ;$B"'%b!<%I(B (progn (skk-set-henkan-count (1+ (skk-henkan-count))) (skk-henkan)) ;; $B"&%b!<%I(B (save-match-data (let (pos) (skk-kana-cleanup 'force) (when (skk-get-prefix skk-current-rule-tree) ;; Never. `skk-erase-prefix' called by `skk-kana-cleanup' ;; initializes `skk-prefix'. (skk-error "$B%U%#%C%/%9$5$l$F$$$J$$(B skk-prefix $B$,$"$j$^$9(B" "Have unfixed skk-prefix")) (setq pos (point)) (when (< pos skk-henkan-start-point) (skk-error "$B%+!<%=%k$,JQ493+;OCOE@$h$jA0$K$"$j$^$9(B" "Henkan end point must be after henkan start point")) (setq skk-henkan-key (buffer-substring-no-properties skk-henkan-start-point pos)) (when (and skk-katakana ;; C-u $B$r;H$C$F$$$J$$>l9g(B ;; prog-list-number $B$O(B skk-insert() $B$K$*$1$k(B current-prefix-arg (not (and prog-list-number (listp prog-list-number)))) (setq skk-henkan-key (skk-katakana-to-hiragana skk-henkan-key))) (when (and skk-okurigana (string-match "\\* *$" skk-henkan-key)) (skk-error "$B6u$NAw$j2>L>$G4A;z$rEPO?$7$h$&$H$7$F$$$^$9(B" "No okurigana!")) (if skk-allow-spaces-newlines-and-tabs ;; skk-henkan-key $B$NCf$N(B "[ \n\t]+" $B$r40A4$K (point) skk-henkan-start-point) (skk-error "$BJQ49%-!<$K2~9T$,4^$^$l$F$$$^$9(B" "Henkan key may not contain a new line character"))) ;; $B:G=i$N%9%Z!<%9$G(B skk-henkan-key $B$r%+%C%H$9$k$@$1!#(B (setq skk-henkan-key (substring skk-henkan-key 0 (string-match " " skk-henkan-key)))) (skk-set-marker skk-henkan-end-point pos) (skk-set-henkan-count 0) (setq skk-annotation-first-candidate t) (skk-henkan prog-list-number) (when (and skk-abbrev-mode (eq skk-henkan-mode 'active)) ;; $B$3$&$7$F$*$+$J$$$HJQ498e!"l9g$KJQ49$r3+;O$9$k!#(B $B4X?t(B `skk-insert-str' $B$N (point) skk-henkan-start-point) (let ((skk-prefix "")) (skk-start-henkan (prefix-numeric-value current-prefix-arg))))))) (defun skk-backward-and-set-henkan-point (arg) "$B%]%$%s%H$ND>A0$K$"$kJ8;zNs$N@hF,$KJQ493+;O%]%$%s%H$r<($9(B \"$B"&(B\" $B$rIU$1$k!#(B $B%+!<%=%k$ND>A0$K$"$kJ8;z(B ($B%9%Z!<%9J8;z!"%?%VJ8;z!"D92;$rI=$o$9!V!r7o(B $B$K%9%-%C%W$5$l$k(B) $B$r(B `skk-what-char-type' $B$K$FH=JL$7!"F1l9g$O!V$r!W$ND>A0$G!"%+%?%+%J$N>l9g$O!V%r!W$ND>A0$G;_$^$k!#(B \\[universal-argument] ARG $B$G(B ARG $B$rM?$($k$H!"$=$NJ8;zJ,$@$1La$C$FF1$8F0:n$r9T$&!#(B" (interactive "*P") (if (not skk-mode) (skk-emulate-original-map arg) (catch 'exit1 (skk-save-point ;; $B$H$j$"$($::G=i$N(B SPC, TAB, $BA43Q(B SPC $B$@$1%8%c%s%W$9$k!#(B (skip-chars-backward " \t$B!!(B") ;; $B0z?t$"$j!#(B (cond (arg (if (not skk-allow-spaces-newlines-and-tabs) (backward-char (prefix-numeric-value arg)) (setq arg (prefix-numeric-value arg)) (while (> arg 0) (skip-chars-backward " \t$B!!(B") (if (bolp) ;; $B9TF,$@$C$?$i0l9TA0$N9TKv$^$GLa$k$,!"(Barg $B$O8:$i$5$J$$!#(B (backward-char 1) (backward-char 1) (setq arg (1- arg)))))) (t ;; $B0z?t$J$7!#(B (let ((limit (if (not skk-allow-spaces-newlines-and-tabs) (skk-save-point (beginning-of-line) (point)) (point-min))) ;; $B!2!1!0!/!.!-!,!+!*!)!(!'!&!%!$!#(B (unknown-chars-regexp (if skk-allow-spaces-newlines-and-tabs "[ $B!!(B\n\t$B! (point) limit) ;; unknown-chars-regexp $B$G$OJ8;z (point) limit) (bolp)) ;; 1 $B9T>e$N9TKv$X!#(B (backward-char 1) ;; $B%]%$%s%H$,H=JL$G$-$J$$J8;ze$K$"$k4V$O(B ;; backward $BJ}8~$X%]%$%s%H$rLa$9!#(B ;;(while (and (> (point) limit) ;; (looking-at unknown-chars-regexp)) ;; (backward-char 1)) (when ;;(or (> 0 (skk-backward-and-set-henkan-point-1 type)) ;;(eq (skk-what-char-type) type)) (setq p (point))))))) (goto-char p) (skip-chars-forward unknown-chars-regexp)))) (skk-set-henkan-point-subr))))) (defun skk-backward-and-set-henkan-point-1 (type) "`skk-backward-and-set-henkan-point' $B$N%5%V%k!<%A%s!#(B TYPE ($BJ8;z$NC$9!#(B" (when (marker-position skk-henkan-start-point) (save-match-data (skk-save-point (goto-char (1- skk-henkan-start-point)) (cond ((eq skk-henkan-mode 'active) (when skk-use-face (skk-henkan-face-off)) (if (looking-at "$B"'(B") (delete-char 1) (unless nomesg (skk-message "$B"'$,$"$j$^$;$s(B" "It seems that you have deleted $B"'(B")))) ((looking-at "$B"&(B") (delete-char 1)) ((not nomesg) (skk-message "$B"&$,$"$j$^$;$s(B" "It seems that you have deleted $B"&(B"))))))) (defun skk-delete-okuri-mark (&optional noclear) "$BAw$j2>L>4XO"%U%i%0$r>C$9!#(B $BAw$j2>L>F~NOCf$K%+%l%s%H%P%C%U%!$KI=$o$l$k(B `*' $B%^!<%/$r>C$7!"(B NOCLEAR $B$,(B nil $B$G$"$l$PAw$j2>L>4XO"%U%i%0$r(B nil $B$K%;%C%H$9$k!#(B" (when (and skk-okurigana skk-okurigana-start-point (markerp skk-okurigana-start-point) (marker-position skk-okurigana-start-point)) (skk-save-point (when (eq ?* (char-after skk-okurigana-start-point)) (delete-region skk-okurigana-start-point (1+ skk-okurigana-start-point)))) (setq skk-okurigana nil) (unless noclear (setq skk-okuri-char nil skk-henkan-okurigana nil)))) ;; "[F7] $B%+%?%+%J(B" $B$N$h$&$J4JC1$JJQ495!G=$r3d$jEv$F$k$?$a$N%3%^%s%IDj5A(B (defun skk-start-henkan-prog-null-handler (arg) (condition-case nil (skk-emulate-original-map arg) (error (let ((key (this-command-keys))) (when (keymapp (let (skk-j-mode) (key-binding key))) (define-key skk-j-mode-map key nil) (skk-unread-event (if (vectorp key) (aref key 0) (string-to-char key)))))))) (defun skk-start-henkan-prog-i (i arg) (cond ((and skk-henkan-mode (symbol-value (intern (format "skk-search-prog-list-%d" i)))) (when (eq skk-henkan-mode 'active) (let ((skk-verbose-wait 0)) (skk-henkan-inactivate))) (skk-start-henkan arg i)) (t (skk-start-henkan-prog-null-handler arg)))) (eval-when-compile (defmacro skk-define-start-henkan-progs () (let (list) (dotimes (i 10) (setq list (nconc list `((defun ,(intern (format "skk-start-henkan-prog-%d" i)) (arg) (interactive "*p") (skk-start-henkan-prog-i ,i arg)))))) (cons 'progn list)))) (skk-define-start-henkan-progs) ;;; jisyo related functions (defun skk-purge-from-jisyo (&optional arg) "$B"'%b!<%I$G8=:_$N8uJd$r<-=q%P%C%U%!$+$i>C5n$9$k!#(B" (interactive "*P") (skk-with-point-move (cond ((not (eq skk-henkan-mode 'active)) (skk-emulate-original-map arg)) ((and (eq skk-henkan-mode 'active) (not (string= skk-henkan-key "")) (yes-or-no-p (format (if skk-japanese-message-and-error "%s /%s/%s$B$r<-=q$+$i:o=|$7$^$9!#NI$$$G$9$+!)(B " "Really purge \"%s /%s/%s\"? ") skk-henkan-key (skk-get-current-candidate) (cond ((not (and skk-henkan-okurigana (or skk-henkan-okuri-strictly skk-henkan-strict-okuri-precedence))) " ") (skk-japanese-message-and-error (format " ($BAw$j2>L>(B: %s) " skk-henkan-okurigana)) (t (format " (okurigana: %s) " skk-henkan-okurigana)))))) ;; skk-henkan-start-point $B$+$i(B point $B$^$G:o=|$7$F$7$^$C$F$b!"JQ49D>8e(B ;; $B$K(B ($B%+!<%=%k$rF0$+$9$3$H$J$/(B) skk-purge-from-jisyo $B$r8F$Y$PLdBj$J$$(B ;; $B$,!"%+!<%=%k$,0c$&>l=j$X0\F0$7$F$$$?>l9g$O!":o=|$9$Y$-$G$J$$$b$N$^(B ;; $B$G:o=|$7$F$7$^$&2DG=@-$,$"$k!#$=$3$G!"Aw$j2>L>$,$"$l$P$=$ND9$5$r4^(B ;; $B$a$?(B end $B$r5a$a!":#2s$NJQ49$K4XO"$7$?8D=j$@$1$r@53N$K@Z$jC$7$F$*$+$J$$$H!"$,4XO"IU$1$i$l$F$$$kI,MW$,$"$k!#(B (let ((buffer-file-name (expand-file-name skk-jisyo)) (buffer-file-truename (file-truename skk-jisyo))) (set-buffer-modified-p nil))) (t (set-buffer-modified-p nil))) (unless quiet (skk-message "SKK $B<-=q$rJ]B8$7$F$$$^$9(B...$B40N;!*(B" "Saving SKK jisyo...done") (sit-for 1)))))) (setq skk-update-jisyo-count 0)) (defun skk-init-shared-jisyo () (fillarray skk-jisyo-update-vector nil) (with-temp-buffer (insert skk-emacs-id "\n") (write-region 1 (point-max) skk-emacs-id-file nil 'nomsg))) (defun skk-jisyo-is-shared-p () (and (file-exists-p skk-emacs-id-file) (with-temp-buffer (insert-file-contents skk-emacs-id-file) (goto-char (point-min)) ;; $B8D?M<-=q$,B>$N(B emacs $B>e$N(B skk $B$K$h$j99?7$5$l$?$+$r%A%'%C%/(B (not (search-forward skk-emacs-id nil t))))) (defun skk-update-shared-jisyo () "$B8D?M<-=q$,6&M-$5$l$F$$$k>l9g$K!"?7$7$$>pJs$K99?7$9$k!#(B $B8=:_$N<-=q%P%C%U%!$NFbMF$r>C5n$7$F!"B>$N(B Emacs $B>e$N(B SKK $B$,99?7$7$?(B `skk-jisyo' $B$rFI$_9~$`!#(B" (erase-buffer) (insert-file-contents skk-jisyo) (skk-setup-jisyo-buffer) ;; skk-jisyo-update-vector $B$K$7$?$,$C$F%P%C%U%!$r99?7$9$k!#(B (let ((index 0) (len (length skk-jisyo-update-vector)) list skk-henkan-key) (while (and (< index len) (setq list (aref skk-jisyo-update-vector index))) ;; skk-update-jisyo-1, skk-search-jisyo ;; $B$G;2>H$5$l$k(B skk-henkan-key $B$r%;%C%H$9$k(B (when (setq skk-henkan-key (car list)) (skk-update-jisyo-1 ;; okurigana word (nth 1 list) (nth 2 list) (skk-search-jisyo (nth 1 list) 0 'delete) ;; purge (nth 3 list))) (setq index (1+ index))))) (defun skk-save-jisyo-as (file) (save-match-data (let (buffer-read-only) (goto-char (point-min)) (unless (re-search-forward "^;; okuri-ari entries.$" nil 'noerror) (skk-error "\ $BAw$j$"$j%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s!*(B SKK $B<-=q$N%;!<%V$rCf;_$7$^$9(B" "\ Header line for okuri-ari entries is missing! Stop saving SKK jisyo")) (unless (re-search-forward "^;; okuri-nasi entries.$" nil 'noerror) (skk-error "\ $BAw$j$J$7%(%s%H%j$N%X%C%@!<$,$"$j$^$;$s(B $B!*(B SKK $B<-=q$N%;!<%V$rCf;_$7$^$9(B" "\ Header line for okuri-nasi entries is missing! Stop saving SKK jisyo"))) (let ((coding-system-for-write (skk-find-coding-system skk-jisyo-code)) jka-compr-compression-info-list) (write-region 1 (point-max) file nil 'nomsg)))) (defun skk-check-size-and-do-save-jisyo (new-file) (skk-bind-last-command-char nil (let ((new-size (nth 7 (file-attributes new-file))) old-size ;; yes-or-no-p $B$K2sEz$7!"(Bnewline $B$9$k$H!"(Bthis-command $B$,JQ$C$F$7$^$&!#(B this-command this-command-char last-command) (when (zerop new-size) (delete-file new-file) (skk-error "SKK $B<-=q$,6u$K$J$C$F$$$^$9!*(B $B<-=q$N%;!<%V$rCf;_$7$^$9(B" "Null SKK jisyo! Stop saving jisyo")) (cond ((or (not skk-compare-jisyo-size-when-saving) ;; $B5l<-=q$H$N%5%$%:$rHf3S$7$J$$!#(B (progn ;; (1)skk-jisyo $B$,$J$$$+!"(B ;; (2)new-file $B$H(B skk-jisyo $B$,F10l$N%5%$%:$+(B ;; (skk-(aux-)large-jisyo $B$+$i?75,$NC18l$rFI$_9~$^$J$+$C$?$j!"(B ;; $B?75,C18l$NEPO?$r9T$o$J$+$C$?>l9g$O%5%$%:$,F1$8(B)$B!"(B ;; (3)new-file $B$NJ}$,Bg$-$$(B ;; $B>l9g(B ($B>e5-$N(B 3 $BDL$j$G$"$l$P$$$:$l$b@5>o(B)$B!#(B (setq old-size (nth 7 (file-attributes skk-jisyo))) (or (not old-size) (>= new-size old-size)))) (skk-make-new-jisyo new-file)) ((skk-yes-or-no-p (format "%s $B$,(B %dbytes $B>.$5$/$J$j$^$9$,!"%;!<%V$7$FNI$$$G$9$+!)(B" skk-jisyo (- old-size new-size)) (format "New %s will be %dbytes smaller. Save anyway?" skk-jisyo (- old-size new-size))) ;; $B$H$K$+$/%;!<%V!#(B (skk-make-new-jisyo new-file)) (t ;; $B%;!<%V$H$j;_$a!#(B (delete-file new-file) (with-output-to-temp-buffer "*SKK warning*" (if skk-japanese-message-and-error (princ "\ $B%;!<%V$7$h$&$H$9$k<-=q$N%5%$%:$,85$N%5%$%:$h$j$b>.$5$/$J$C$F$7$^$&$?$a!"(B $B%;!<%V$rCf;_$7$^$7$?!#<-=q$N%5%$%:$,>.$5$/$J$C$?860x$K$O!"Nc$($P!"(B (a) M-x skk-purge-from-jisyo $B$rl9g$O0[>o$G$O$"$j$^$;$s!#(B \(c) $B$N>l9g$OJT=8$NFbMF$K$h$j$^$9!#860x$r?5=E$K3NG'$7$F$+$i<-=q$rJ]B8$9$k$3(B $B$H$r$*4+$a$7$^$9!#(B $B85$N<-=q$r:F$SFI$_9~$`$K$O!"(B M-x skk-reread-private-jisyo $B$rpJs$r(B `skk-record-file' $B$KJ]B8$9$k!#(B" (unless (or (not skk-keep-record) (> 1 skk-kakutei-count)) (with-temp-file skk-record-file (insert-file-contents skk-record-file) (goto-char (point-min)) (insert (format "%s $BEPO?(B: %3d $B3NDj(B: %4d $B3NDjN((B: %3d%% $B8l?t(B:%6d\n" (current-time-string) skk-touroku-count skk-kakutei-count (/ (* 100 (- skk-kakutei-count skk-touroku-count)) skk-kakutei-count) (cond ((featurep 'skk-rdbms) ;; RDBMS $B$r;H$($P$b$C$H6=L#?<$$E}7W$,@\%U%!%$%kL>$G;XDj$G$-$k(B ;; permission $B$,$J$$>l9g$,B?$$$h$M(B...$B!#(B ;;(read-file-name ;; (format "Jisyo table: (default: %s) " ;; skk-rdbms-private-jisyo-table)) skk-rdbms-private-jisyo-table)))) ;; mule@emacs19.31 $B$@$H2<5-$N$h$&$K$9$k$H(B (`$B%!(B' $B$,860x$N$h$&(B) $B2?8N$+(B ;; default-directory $B$NKvHx$K2~9T$,IU$/!#(B ;; $BDL>o$O5$$,IU$+$J$$$,!"(Brsz-mini.el $B$r;H$C$F(B resize-minibuffer-mode $B$r(B ;; non-nil $B$K$7$F$$$k$HITMW$J(B 2 $B9TL\$,=P8=$9$k!#(B ;; (interactive "f$B<-=q%U%!%$%k(B: ") (let ((count (funcall skk-count-jisyo-candidates-function file-or-table))) (if (skk-called-interactively-p 'interactive) (message (if (= count 1) "%d candidate" "%d candidates") count) count))) (defun skk-count-jisyo-candidates-original (file) "SKK $B<-=q$N8uJd?t$r?t$($k!#(B `[' $B$H(B `]' $B$K0O$^$l$?Aw$j2>L>Kh$N%V%m%C%/Fb$O?t$($J$$!#(B" (let ((orig-buffer (find-buffer-visiting file))) (with-current-buffer (let ((find-file-visit-truename t)) (or orig-buffer (find-file-noselect file))) (save-match-data (let ((count 0) (min (point-min)) (max (and (skk-called-interactively-p 'interactive) (point-max))) (interactive-p (skk-called-interactively-p 'interactive))) (goto-char min) (unless (and ;; $B$3$A$i$O(B skk-save-point $B$r;H$o$:!"%]%$%s%H$r0\F0$5$;$k!#(B (re-search-forward "^;; okuri-ari entries.$" nil t nil) (skk-save-point (re-search-forward "^;; okuri-nasi entries.$" nil t nil))) (skk-error "$B$3$N%U%!%$%k$O(B SKK $B<-=q$G$O$"$j$^$;$s(B" "This file is not an SKK dictionary")) (beginning-of-line) (while (looking-at ";") (forward-line 1) (beginning-of-line)) (search-forward " " nil t) (while (search-forward "/" nil t) (cond ((or (eolp) (looking-at "\\[")) (forward-line 1) (beginning-of-line) (while (looking-at ";") (forward-line 1) (beginning-of-line)) (search-forward " " nil t)) (t (setq count (1+ count)))) (when interactive-p (message "Counting jisyo candidates...%3d%% done" (/ (* 100 (- (point) min)) max)))) (prog1 count (unless orig-buffer (kill-buffer (current-buffer))))))))) (defun skk-create-file (file &optional japanese english modes) "FILE $B$,$J$1$l$P!"(BFILE $B$H$$$&L>A0$N6u%U%!%$%k$r:n$k!#(B $B%*%W%7%g%J%k0z?t$N(B JAPANESE/ENGLISH $B$r;XDj$9$k$H!"%U%!%$%k:n@.8e$=$N%a%C%;!<%8(B $B$r%(%3!<%(%j%"$KI=<($9$k!#(B" (let ((file (expand-file-name file))) (if (file-exists-p file) (when modes (set-file-modes file modes)) (write-region 1 1 file nil 0) (when modes (set-file-modes file modes)) (when (or japanese english) (message "%s" (if skk-japanese-message-and-error japanese english)) (sit-for 3))))) (defun skk-get-jisyo-buffer (file &optional nomsg) "FILE $B$r3+$$$F(B SKK $B<-=q%P%C%U%!$r:n$j!"%P%C%U%!$rJV$9!#(B $B%*%W%7%g%J%k0z?t$N(B NOMSG $B$r;XDj$9$k$H%U%!%$%kFI$_9~$_$N:]$N%a%C%;!<%8$rI=<($7$J(B $B$$!#(B" (when file (let* ((inhibit-quit t) (code (skk-find-coding-system (if (consp file) (cdr file) skk-jisyo-code))) (file (or (car-safe file) file)) (enable-character-translation (not (memq code '(euc-japan shift_jis junet)))) (buf-name (concat " *" (file-name-nondirectory file) "*")) (buf (get-buffer buf-name))) ;; $B<-=q%P%C%U%!$H$7$F%*!<%W%s$5$l$F$$$k$J$i!"2?$b$7$J$$!#(B (unless (buffer-live-p buf) (setq buf (get-buffer-create buf-name)) (setq file (expand-file-name file)) (with-current-buffer buf (buffer-disable-undo) (auto-save-mode -1) ;; $B%o!<%-%s%0%P%C%U%!$N%b!<%I%i%$%s$O%"%C%W%G!<%H$5$l$J$$!)(B ;;(make-local-variable 'line-number-mode) ;;(make-local-variable 'column-number-mode) ;;(setq column-number-mode nil ;; line-number-mode nil) (setq buffer-read-only nil case-fold-search nil ;; buffer-file-name $B$r(B nil $B$K$7$F$*$/$H(B M-x compile $B$J$I(B ;; $BFbIt$G(B save-some-buffers $B$r%3!<%k$7$F$$$k%3%^%s%I$r(B ;; $B;H$C$?$H$-$G$b%;!<%V$9$k$+$I$&$+$r?R$M$F$3$J$/$J$k!#(B ;; buffer-file-name file ;; cache-long-line-scans nil ;; dabbrev $B$N%5!<%A$H$J$k%P%C%U%!$K$J$i$J$$$h$&$KB8:_$7(B ;; $B$J$$%b!<%IL>$K$7$F$*$/!#2A$9$k!#(B" (let (l prog) (while (and (null l) skk-current-search-prog-list) (setq prog (car skk-current-search-prog-list)) (setq l (if (and skk-use-numeric-conversion (string-match "[0-9]" skk-henkan-key) (skk-numeric-program-p prog)) ;; -- 12.2.1 $B$+$i$NJQ99(B -- ;; $B?tCMJQ49;~$K!"Hs?tCMJQ49$bF1;~$K8!:w$7$F8uJd$K(B ;; $B4^$a$k!#(B (skk-nunion (let (skk-use-numeric-conversion) (eval prog)) (eval prog)) (let (skk-use-numeric-conversion) (eval prog)))) (setq skk-current-search-prog-list (cdr skk-current-search-prog-list))) (setq skk-search-state (list skk-henkan-key prog l)) l)) (defun skk-search-state () (interactive) (with-output-to-temp-buffer "*skk search state*" (with-current-buffer standard-output (insert (format "skk-henkan-key: %s\n" (nth 0 skk-search-state)) (format "skk-search-prog: %s\n" (nth 1 skk-search-state)) (format "skk-search() result: %s\n\n" (nth 2 skk-search-state))) (when (equal (nth 1 skk-search-state) '(skk-search-extra-jisyo-files)) (mapconcat #'(lambda (x) (insert (format "%s\n" x))) skk-search-ex-state ""))))) (defun skk-numeric-program-p (program) "$B<-=q8!:w%W%m%0%i%`(B PROGRAM $B$,?tCMJQ49M-8z$+$I$&$+H=Dj$9$k!#(B $B$b$7%W%m%0%i%`$,(B `skk-non-numeric-prog-list' $B$K;XDj$5$l$F$$$?$i(B nil $B$rJV$9!#(B $B$5$b$J$1$l$P(B non-nil $B$rJV$9!#(B" (not (or (memq (car program) skk-non-numeric-prog-list) (member program skk-non-numeric-prog-list)))) (defun skk-search-jisyo-file (file limit &optional nomsg) "SKK $B<-=q%U%)!<%^%C%H$N(B FILE $B$G(B `skk-henkan-key' $B$r%-!<$K$7$F8!:w$9$k!#(B $B8!:wNN0h$,(B LIMIT $B0J2<$K$J$k$^$G%P%$%J%j%5!<%A$r9T$$!"$=$N8e%j%K%"%5!<%A$r9T$&!#(B LIMIT $B$,(B 0 $B$G$"$l$P!"%j%K%"%5!<%A$N$_$r9T$&!#(B $B<-=q$,%=!<%H$5$l$F$$$J$$>l9g$O(B LIMIT $B$r(B 0 $B$H$9$kI,MW$,$"$k!#(B $B%*%W%7%g%J%k0z?t$N(B NOMSG $B$,(B non-nil $B$G$"$l$P(B `skk-get-jisyo-buffer' $B$N(B $B%a%C%;!<%8$r=PNO$7$J$$!#(B FILE $B$K$O<-=q%U%!%$%k$@$1$G$J$/!"(B ($B<-=q%U%!%$%k(B . $B%3!<%G%#%s%0%7%9%F%`(B) $B$N%Z%"$bH$N$3$H!#(B" (if (or skk-server-host skk-servers-list) (skk-search-server-1 file limit) ;; $B<-=q%5!<%P$,MxMQ2DG=$G$J$1$l$P(B file $B$r8!:w$9$k!#(B ;; $B0z?t(B file $B$ODL>o(B `skk-aux-large-jisyo' $B$,;XDj$5$l$k!#(B (when (and (stringp file) (file-readable-p file)) (skk-search-jisyo-file file limit nomsg)))) (defun skk-okuri-search () "$B8+=P$78l$rAw$j2>L>$r4^$`$b$N$H$7$F8!:w$9$k!#(B $BNc$($P!"(B`skk-auto-okuri-process' $B$,(B non-nil $B$J$i$P(B \"Uresii\" $B$N$h$&$KAw$j2>(B $BL>$b4^$a$F%?%$%W$7$F$bAw$j$"$j$N(B \"$B4r$7$$(B\" $B$rC5$7=P$9!#(B" (when skk-auto-okuri-process (skk-okuri-search-1))) (defun skk-search-jisyo-buf (buf limit) "$B%P%C%U%!$r(B BUF $B$K0\F0$7$F!"$=$3$r<-=q$H$7$F8!:w$9$k!#(B" (when (buffer-live-p buf) ;; skk-henkan-key $B$H(B skk-henkan-okurigana $B$O%+%l%s%H%P%C%U%!$N(B ;; $B%m!<%+%kCM$J$N$G!"$"$i$+$8$apJs$rJV$9!#(B DELETE $B$,(B non-nil $B$G$"$l$P(B `skk-henkan-key' $B$K%^%C%A$9$k%(%s%H%j$r:o=|$9$k!#(B" (let ((key (concat "\n" skk-henkan-key " /")) min max size p) (save-match-data ;; skk-okuri-ari-min $B$H(B skk-okuri-ari-max $B$O<-=q%P%C%U%!$N%m!<%+%kCM!#(B (if okurigana (setq min skk-okuri-ari-min max skk-okuri-ari-max) (setq min skk-okuri-nasi-min max (point-max))) (when (> limit 0) ;; $BFsJ,C5:w(B (while (> (setq size (- max min)) limit) (goto-char (+ min (/ size 2))) (beginning-of-line) (setq p (point)) (if (= p min) (setq max min) ; return (let ((p-is-further ;; $BAw$j$"$j$J$i5U=g$KHf3S$9$k!#(B (if okurigana (skk-string< (buffer-substring-no-properties p (1- (search-forward " "))) skk-henkan-key) (skk-string< skk-henkan-key (buffer-substring-no-properties p (1- (search-forward " "))))))) (if p-is-further (setq max p) (setq min p)))))) (goto-char min) ;; key $B$,8!:w3+;OCOE@$K$"$C$?>l9g$G$b8!:w2DG=$J$h$&$K0lJ8;zLa$k!#(Bkey $B$,(B ;; $B$=$N@hF,ItJ,$K(B "\n" $B$r4^$s$G$$$k$3$H$KCm0U!#(B (unless (bobp) (backward-char 1)) ;; case-fold-search $B$O!"<-=q%P%C%U%!$G$O>o$K(B nil$B!#(B (when (search-forward key max 'noerror) (prog1 (skk-compute-henkan-lists okurigana) (when delete (beginning-of-line) (delete-region (point) (progn (forward-line 1) (point))))))))) (defun skk-select-words-from-list (list buffer midasi okurigana) "`skk-search-jisyo' $B$,JV$7$?8uJd%j%9%H$+$i8=:_MW5a$5$l$F$$$k8uJd$rA*$S$@$9!#(B" (when list (let ((words (cond ((and okurigana skk-henkan-okuri-strictly) ;; $BAw$j2>L>$,F10l$N8uJd$N$_$rJV$9!#(B (nth 2 list)) ((and okurigana skk-henkan-strict-okuri-precedence) ;; $BAw$j2>L>$,F10l$N8uJd$N$&$7$m$K!"(B ;; $B$=$NB>$N8uJd$r$D$1$F$+$($9!#(B (skk-nunion (nth 2 list) (car list))) (t (car list))))) (dolist (function skk-search-end-function) (setq words (funcall function buffer midasi okurigana words))) words))) (defun skk-compute-henkan-lists (okurigana) "$B<-=q8uJd72$r(B 4 $B$D$N%j%9%H$KJ,2r$9$k!#(B $B>\$7$/$O!"$3$N4X?t$N%3%a%s%H$r;2>H!#(B" ;; $BAw$j$J$7(B ($BNc$($P!"<-=q%(%s%H%j(B "$B$F$s$5$$(B /$BE>:\(B/$BE7:R(B/$BE7:M(B/" $B$N=hM}(B) ;; words1 := ("$BE>:\(B" "$BE7:R(B" "$BE7:M(B") == $BA48uJd72(B ;; words2 := nil ;; words3 := nil ;; words4 := nil ;; ;; $BAw$j$"$j(B ($BNc$($P!"!V5c$/!W$NJQ49$r9T$C$?>l9g$N!"<-=q%(%s%H%j(B ;; "$B$J(Bk /$BK4(B/$BL5(B/$BLD(B/$B5c(B/[$B$/(B/$BL5(B/$BLD(B/$B5c(B/]/[$B$-(B/$BK4(B/]/" $B$N=hM}(B) ;; words1 := ("$BK4(B" "$BL5(B" "$BLD(B" "$B5c(B") == $B4A;zItJ,$NA48uJd72(B ;; words2 := ("[$B$/(B") == $BB>$NAw$j2>L>$r;H$&4A;z8uJd72(B ($B$"$l(B ;; $B$P(B) + $B:#2s$NJQ49$NAw$j2>L>ItJ,(B ;; words3 := ("$BL5(B" "$BLD(B" "$B5c(B") == $B:#2s$NJQ49$NAw$j2>L>$r;H$&2DG=@-$N(B ;; $B$"$kA44A;z8uJd72(B ;; words4 := ("]" "[$B$-(B" "$BK4(B" "]") == $BB>$NAw$j2>L>$r;H$&4A;z8uJd72(B ($B;D(B ;; $B$j!#$"$l$P(B) ;; ;; * "[" $B$OD>8e$KB3$/$R$i$,$J$rAw$j2>L>$K;}$D4A;z$N8uJd72$N=i$^$j$rI=$7!"(B ;; "]" $B$O!"3:Ev$NAw$j2>L>%0%k!<%W$N=*$j$r<($9!#(B ;; ;; $B$3$N4X?t$O!"JQ49;~$H!"3NDjD>8e$N<-=q$N%"%C%W%G!<%H;~$N(B 2 $BEY8F$P$l$k(B ;; ($BJQ49;~$K8!:w$r9T$C$?<-=q$,!"(Bskk-jisyo $B$H$O8B$i$J$$$N$G!"(B2 $BEY7W;;$;$6$k(B ;; $B$rF@$J$$(B)$B!#(B ;; ;; $BJQ49;~$O!"(Bskk-henkan-okuri-strictly $B$,(B non-nil $B$G$"$l$P!"(B ;; $B7W;;7k2L$N(B words3$B$r!"(Bskk-henkan-okuri-strictly $B$,(B nil $B$G$"$C$F(B ;; $B$+$D(B skk-henkan-strict-okuri-precedence $B$,(B non-nil $B$"$l$P(B ;; (skk-nunion words3 words1) $B$rl9g$O(B words1 $B$rl9g$O!"Bg0hJQ?t(B `skk-kakutei-henkan-flag' $B$K(B non-nil $B$rBeF~$9$k!#(B $B0z?t$K$D$$$F$O(B `skk-search-jisyo-file' $B$r;2>H!#(B $BMxMQ$9$k>l9g$O(B `skk-search-prog-list' $B$N@hF,$KG[$9$k;v!#(B" (setq skk-kakutei-henkan-flag (skk-search-jisyo-file file limit nomsg))) (defun skk-update-jisyo (word &optional purge) (funcall skk-update-jisyo-function word purge) (when (and skk-save-jisyo-instantly (or skk-jisyo-updated ; skk-henkan-in-minibuff $B$G(B setq purge)) (skk-save-jisyo 'quiet) (setq skk-jisyo-updated nil))) (defun skk-update-jisyo-original (word &optional purge) "$BuBV(B/ ;; $B49>:(B $B$=$&$K$e$&(B /$BA^F~(B/ ;; $B=g=g(B $B$+$J(B /$B2>L>(B/ ;; $B"-(B ... ;; ... ;; ;; $B!ZJQ998e![(B ;; ;; okuri-ari entries. ;; $BJQ$G(B $B$G(Bt /$B=P(B/[$B$F(B/$B=P(B/]/[$B$?(B/$B=P(B/]/ ;; $B49>:(B $B$D(Bi /$BIU(B/[$B$$(B/$BIU(B/]/ ;; $B=g=g(B $B$1(Bs /$B>C(B/[$B$9(B/$B>C(B/]/[$B$7(B/$B>C(B/]/[$B$;(B/$B>C(B/]/[$B$5(B/$B>C(B/]/ ;; $B"-(B $B$+$((Bs /$BJV(B/[$B$7(B/$BJV(B/]/[$B$9(B/$BJV(B/]/[$B$5(B/$BJV(B/]/[$B$;(B/$BJV(B/]/ ;; ... ;; ... ;; $B$J$,(Bs /$BD9(B/$BN.(B/[$B$7(B/$BN.(B/]/[$B$5(B/$BD9(B/]/[$B$=(B/$BN.(B/]/ ;; ;; okuri-nasi entries. ;; $BJQ$G(B $B$8$g$&$?$$(B /$B>uBV(B/ ;; $B49>:(B $B$=$&$K$e$&(B /$BA^F~(B/ ;; $B=g=g(B $B$+$J(B /$B2>L>(B/ ;; $B"-(B ... ;; ... ;; ;; skk-auto-okuri-process $B$,(B non-nil $B$N$H$-$K!"(B(j-okuri-search $B2~$a(B) ;; skk-okuri-search $B$O8+=P$78l$ND9$$=g$K8uJd$rJV$9I,MW$,$"$k!#(B ;; SKK 8.6 $B$^$G$O!"(Bskk-okuri-search $B$,(B j-okuri-ari-min $B$+$i(B j-okuri-ari-max ;; $B$^$G$r=g$KC5$7!"8+$D$1$?$b$N=g$K8uJd$rJV$9$?$a$K8D?M<-=q$,8+=P$7(B ;; $B8l$r%-!<$H$7$F9_=g$K%=!<%H$5$l$F$$$kI,MW$,$"$C$?!#(B ;; SKK 9.x $B$G$O!"(Bskk-okuri-search $B$,!"8+IU$1$?8uJd$r8+=P$78l$r%-!<$H$7$F>:=g(B ;; $B$K%=!<%H$7$FJV$9$?$a!"8D?M<-=q$N%=!<%H$OI,MW$G$J$$!#$h$C$F!":G8e(B ;; $B$KJQ49$7$?$b$N$r(B (j-okuri-ari-min $B2~$a(B) skk-okuri-ari-min $B$N0LCV$KA^F~$9(B ;; $B$k!#(B ;; (let* ((jisyo-buffer (skk-get-jisyo-buffer skk-jisyo 'nomsg)) (cand (car (skk-treat-strip-note-from-word word))) (midasi (if (and (skk-numeric-p) (or (string-match "#[0-9]" cand) (skk-lisp-prog-p cand))) (skk-num-compute-henkan-key skk-henkan-key) skk-henkan-key)) (henkan-buffer (and skk-update-end-function (current-buffer)))) ;; $BF~NOMzNr$r99?7$9$k!#(B ;; $BAw$j$"$jF~NO$O>JN,$7!"Aw$j$J$7F~NO$N$_MzNr$r$H$k!#(B (unless skk-henkan-okurigana (skk-update-kakutei-history midasi word)) (when jisyo-buffer (let ((inhibit-quit t) buffer-read-only old-words-list okurigana) (when (> skk-okuri-index-min -1) (setq word (skk-remove-common word) ;; skk-henkan-key $B$O(B skk-remove-common $B$K$h$C$F(B ;; $BJQ99$5$l$F$$$k2DG=@-$,$"$k!#(B midasi skk-henkan-key)) (setq okurigana (or skk-henkan-okurigana skk-okuri-char)) (with-current-buffer jisyo-buffer ;; $B4{B8%(%s%H%j$r8!:w8e>C5n$9$k!#A^F~$9$Y$-8uJd$,(B words1 $B$K(B 1 $B$D(B ;; $B$7$+$J$/!"(Bword $B$HF1$8J8;z$G$"$C$F$b!"$$$C$?$s>C$7$F$=$N%(%s%H(B ;; $B%j$r(B min $B%]%$%s%H$K0\F0$5$;$J$1$l$P$J$i$J$$!#$3$l$O!"FI$_$NJd(B ;; $B40$r9T$&$H$-$K!"(B min $B%]%$%s%H$+$i8+=P$7$rC5$9$?$a!"?7$7$$8+=P(B ;; $B$7$[$I!"(Bmin $B%]%$%s%H$K6a$$$H$3$m$K$J$1$l$P$J$i$J$$$+$i$G$"$k!#(B (setq skk-henkan-key midasi old-words-list (skk-search-jisyo okurigana 0 'delete)) (skk-update-jisyo-1 okurigana word old-words-list purge) ;; $BJ#?t$N(B emacs $B$G(B SKK $B$,5/F0$5$l$F$$$k$H$-$K8D?M<-=q$r@09gE*$K(B ;; $B99?7$9$k$?$a$K3NDj$NF0:n$r5-O?$9$k!#(B (when (and (skk-share-private-jisyo-p) (< skk-jisyo-save-count (length skk-jisyo-update-vector))) (aset skk-jisyo-update-vector skk-update-jisyo-count (list midasi okurigana word purge))) (dolist (function skk-update-end-function) (funcall function henkan-buffer midasi okurigana word purge)) (setq skk-update-jisyo-count (1+ skk-update-jisyo-count)) ;; skk-share-private-jisyo $B$,(B non-nil $B$N$H$-$O(B skk-jisyo-save-count ;; $B$b(B non-nil $B$G$"$k$3$H$rA0Ds$H$9$k(B (when (and skk-jisyo-save-count (<= skk-jisyo-save-count skk-update-jisyo-count)) ;; auto save. (skk-save-jisyo 'quiet))))))) (defun skk-update-jisyo-1 (okurigana word old-words-list purge) "$B8D?M<-=q$K?7$7$$%(%s%H%j$rA^F~$9$k!#(B $B4{B8%(%s%H%j$+$i7W;;$7$?(B words[1-4] $B$NCM$H!":#2s$NJQ49$N7k2L(B word $B$H$r(B $B7k9g$7$F!"?7$?$J%(%s%H%j$r7W;;$7!"A^F~$9$k!#(B" (let ((words1 (car old-words-list)) (words2 (nth 1 old-words-list)) (words3 (nth 2 old-words-list)) (words4 (nth 3 old-words-list))) (cond ((not purge) ;; words1 $B$r99?7(B (if skk-jisyo-fix-order (if (consp words1) ;; $B?75,$N;~$O!"B>$NF12;8l$N8e$KDI2C(B (unless (member word words1) (setcdr (last words1) (cons word nil))) ;; $B:#2s$NFI$_$N8l!"$=$N$b$N$,?75,(B (setq words1 (cons word nil))) ;; words1 $B$N@hF,$N8uJd$r(B word $B$K$9$k!#(B (setq words1 (cons word (delete word words1))))) ;; $BAw$j$J$7!"$b$7$/$O(B skk-henkan-okuri-strictly $B$H(B ;; skk-henkan-strict-okuri-precedence $B$,(B nil $B$N>l9g!#(B (t ;; words1 $B$r(B purge$B!#6&MQ<-=q$K$"$k8uJd$@$C$?$i!"(B ;; skk-ignore-dic-word $B$G%/%)!<%H$7$FC$9!#(B (setq words1 (if (skk-public-jisyo-has-word-p okurigana word) (skk-compose-ignore-word words1 word) (delete word words1))))) (when words1 ;; words1 $B$,(B null $B$G$"$l$P!"$b$&2?$b$9$k$3$H$O$J$$!#(B (goto-char (if okurigana skk-okuri-ari-min skk-okuri-nasi-min)) (insert "\n" skk-henkan-key " /") ;; words1 -- $BA48uJd72(B ($BAw$j$J$7$N>l9g(B) $B!"$^$?$O(B ;; $BA48uJd72$N4A;zItJ,(B ($BAw$j$"$j$N>l9g(B) (insert (mapconcat 'skk-quote-char words1 "/") "/") (when okurigana ;; words2 $B0J9_$N8uJd72$r=hM}$9$k$N$O!"Aw$j$"$j$N>l9g$N$_!#(B ;; $B@h$KA^F~$9$Y$-8uJd72$r7W;;!"D4@0$9$k!#(B (cond (words3 (cond ((not purge) (if skk-jisyo-fix-order (unless (member word words3) (setcdr (last words3) (cons word nil))) (setq words3 (cons word (delete word words3))))) (t (setq words3 (delete word words3)) (when (null words3) ;; words3 $B$H$7$FA^F~$9$k$b$N$,A4$/$J$1$l$P!"(B"/[$B$/(B/]/" $B$N$h(B ;; $B$&$JAw$j2>L>$N$_$N8uJd$r:n$i$J$$$h$&$K$9$k(B ($BI,MW$G(B ;; $B$"$l$P!"(Bwords2 $B$N:G8eJ}$H(B) words4 $B$N@hF,$N(B "]" $B$r:o=|!#(B (let* ((len (length words2)) (last2 (case len (0 nil) (1 (list nil (car words2))) (t (nthcdr (- (length words2) 2) words2))))) ;; words2 $B$N:G8eJ}$O>o$K(B "[$BAw$j2>L>(B" $B$H$O8B$i$J$$!#(B (when (and last2 (string= (nth 1 last2) (concat "[" okurigana))) (case len (1 (setq words2 nil)) (t (setcdr last2 nil)))) ;; words4 $B$N@hF,$O>o$K(B "]"$B!#(B (setq words4 (cdr words4))))))) (t ;; words3 $B$,(B null $B$G$"$l$P(B (unless (or skk-process-okuri-early purge) ;; skk-process-okuri-early $B$,(B non-nil $B$J$iAw$j2>L>$,J,$i$J$$$N$G(B ;; $B2?$b$7$J$$!#(B-- $B:#2s;HMQ$7$?Aw$j2>L>$,$o$+$i$J$$$^$^JQ49$7$F$$(B ;; $B$k$N$G!"A4$F$N8uJd$,(B words2 $B$KF~$C$F$$$k(B -- words3, words4 $B$O(B ;; null$B!#(B ;; words3 $B$H$7$FA^F~$9$k$b$N$,A4$/$J$1$l$P!"2?$b$7$J$$(B -- words3 ;; $B$,(B purge $BA0$+$i(B null $B$J$i!"(Bwords2 $B$NKvHx$O(B "[" $B$G$J$$$7!"(B ;; words4 $B$O(B null $B$@$+$i(B words[234] $B$NA`:n$OITMW!#(B (setq words2 (nconc words2 (list (concat "[" okurigana))) words3 (list word) ;; purge $BA0$+$i(B words3 $B$,(B null $B$@$C$?$N$@$+$i(B ;; words4 $B$b(B null$B!#(B words4 (list "]")))))) (when words2 ;; words2 -- $B:#2s;HMQ$7$J$+$C$?Aw$j2>L>$r;H$&4A;z$N8uJd72(B ;; + "[" ;; + $B:#2s;HMQ$7$?Aw$j2>L>(B ($BAw$j2>L>$N$_!#$=$NAw$j(B ;; $B2>L>$r;HMQ$9$k4A;z$N8uJd72$O!"(Bwords3 $B$K4^$^$l$k(B) (insert (mapconcat #'skk-quote-char words2 "/") "/") ;; words2 $B$,(B null $B$J$i(B words3 $B$b(B null$B!#(B (when words3 ;; words3 -- $B:#2s;HMQ$7$?Aw$j2>L>$r;H$&A44A;z8uJd(B (insert (mapconcat #'skk-quote-char words3 "/") "/")) ;; purge $B$G(B words3 $B$,(B null $B$K$J$C$?>l9g$O(B words4 $B$,;D$C$F$$$k(B ;; $B$H$-$,$"$k!#(B (when words4 ;; words4 -- "]" + $BB>$NAw$j2>L>$r;H$&A44A;z8uJd(B ;; (words2 $B$N;D$j(B)$B!#(B (insert (mapconcat #'skk-quote-char words4 "/") "/")))))) (defun skk-quote-char (word) "WORD $B$r<-=q%(%s%H%j$H$7$F@5$7$$7A$K@07A$9$k!#(B $B<-=q7A<0$N@)8B$+$i!"<-=q%(%s%H%jFb$K4^$a$F$O$J$i$J$$J8;z$,(B WORD $B$NCf$K$"$l$P!"(B $BI>2A$7$?$H$-$K$=$NJ8;z$H$J$k$h$&$J(B Lisp $B%3!<%I$rJV$9!#(B" (save-match-data (cond ((and word (string-match "[/\n\r\"]" word) ;; we should not quote WORD if it is a symbolic expression (not (skk-lisp-prog-p word)) ;; has an annotation (not (string-match ";" word))) (format "(concat \"%s\")" (skk-quote-char-1 word (cdr skk-quote-char-alist)))) (t word)))) (defun skk-quote-semicolon (word) "WORD $B$r<-=q%(%s%H%j$H$7$F@5$7$$7A$K@07A$9$k!#(B `skk-quote-char' $B$H;w$F$$$k$,!"Cpl9g$K$O$3$N4X?t$rMQ$$$k$H$h$$!#(B" (unless (or skk-henkan-okurigana (string-match ">$" skk-henkan-key) ; $B@\F,<-(B (string-match "^>" skk-henkan-key)) ; $B@\Hx<-(B (let ((key skk-henkan-key) char words) (with-temp-buffer (insert key) ;; $B@\F,<-!&@\Hx<-$NF~NO$@$C$?$i(B ">" $B$r>C$7$F$*$/!#(B (goto-char (1- (point))) ; (when (looking-at ">") ;(looking-back ">") (delete-char 1)) (goto-char (point-min)) (when (looking-at ">") (delete-char 1)) ;; (while (and (not (eobp)) ;; "$B!<(B" $B$G$OJ8;z3Q%+%J$K$7$F!"%j%9%H$K$7$FJV$9!#(B" (cdr (skk-search-katakana t))) (defun skk-search-romaji (&optional jisx0208) "$BJQ49%-!<$r%m!<%^;z$KJQ49$7$?8uJd$rJV$9!#(B" (when (executable-find "kakasi") (unless (or skk-henkan-okurigana (string-match ">$" skk-henkan-key) ; $B@\F,<-(B (string-match "^>" skk-henkan-key)) ; $B@\Hx<-(B (let ((key skk-henkan-key) words chars) (with-temp-buffer (insert key) ;; $B@\F,<-!&@\Hx<-$NF~NO$@$C$?$i(B ">" $B$r>C$7$F$*$/!#(B (goto-char (1- (point))) (when (looking-at ">") (delete-char 1)) (goto-char (point-min)) (when (looking-at ">") (delete-char 1)) ;; (while (not (eobp)) (add-to-list 'chars (skk-what-char-type)) (forward-char 1)) (when (memq 'hiragana chars) (skk-romaji-region (point-min) (point-max)) (setq words (list (buffer-string)))) (when (and jisx0208 words) (skk-jisx0208-latin-region (point-min) (point-max)) (setq words (nconc words (list (buffer-string)))))) words)))) (defun skk-search-jisx0208-romaji () "$B8+=P$78l$rA43Q%m!<%^;z$KJQ49$7$F!"%j%9%H$K$7$FJV$9!#(B" (cdr (skk-search-romaji t))) (defun skk-search-upcase (&optional initial) "$BJQ49%-!<$N(B ascii $B>.J8;z$rBgJ8;z$KJQ49$7$?8uJd$rJV$9!#(B $B$3$N4X?t$O(B `skk-abbrev-mode' $B@lMQ!#(B" (if skk-abbrev-mode (list (if initial (upcase-initials skk-henkan-key) (upcase skk-henkan-key))) nil)) (defun skk-search-identity (&rest args) "$BJQ49%-!<$r$=$N$^$^8uJd$H$7$FJV$9!#(B $B$3$N4X?t$OAw$j$J$7JQ49@lMQ!#(B" (if skk-henkan-okurigana nil (list (identity skk-henkan-key)))) (defun skk-search-function-usage () "Emacs Lisp $B4X?t$N(B usage $B$rJV$9!#(B" (when (eval-when-compile (featurep 'emacs)) (unless skk-henkan-okurigana (let* ((symbol (intern (format "%s" skk-henkan-key))) def doc usage arglist result) (when (fboundp symbol) (setq def (symbol-function symbol) doc (documentation symbol) usage (help-split-fundoc doc symbol) arglist (help-function-arglist symbol)) (cond (usage (setq result (car usage))) ((listp arglist) (setq result (format "%S" (help-make-usage symbol arglist)))) ((stringp arglist) (setq result arglist)) ((let ((fun symbol)) (while (and (symbolp fun) (setq fun (symbol-function fun)) (not (setq usage (help-split-fundoc (documentation fun) symbol))))) usage) (setq result (car usage))) ((or (stringp def) (vectorp def)) (setq result (format "\nMacro: %s" (format-kbd-macro def))))) (when result (list (format "(quote %s)" result)))))))) (defun skk-search-progs (key &optional prog-list remove-note) ;; prog-list $B$,>JN,$5$l$?;~$O(B skk-search-prog-list $B$NA4$F$,BP>](B ;; $B$b$70z?t$r$5$i$KDI2C$9$k$h$&$J;v$,$"$l$P(B ;; okuri-nasi $BAw$jM-$j$N%A%'%C%/$r%Q%9(B ;; allow-duplicate skk-nunion $B$G$J$/(B nconc $B$r;H$&(B ;; $B$"$?$j$+(B (save-match-data (let ((skk-henkan-key key) skk-henkan-okurigana skk-okuri-char skk-auto-okuri-process words) ;; $B:.$<=q$-$J?M$C$FAw$jM-$jJQ49$9$k$N$+$J(B \cj $B$N$[$&$,$$$$(B? (when (string-match "[$B$!(B-$B$s(B][a-z]$" key) (setq skk-henkan-okurigana "" skk-okuri-char (substring key (1- (length key))))) (ignore-errors (dolist (form (or prog-list skk-search-prog-list)) (dolist (word (eval form)) (when (and remove-note (string-match ";" word)) (setq word (substring word 0 (match-beginning 0)))) (setq words (skk-nunion words (list word)))))) words))) (defun skk-search-sagyo-henkaku-maybe () (when skk-search-sagyo-henkaku (skk-search-sagyo-henkaku nil (eq skk-search-sagyo-henkaku 'anything)))) (defun skk-search-sagyo-henkaku (&optional okuri-list anything) "$B8+=P$78l$r%59TJQ3J3hMQ$NF0;l$H$_$J$7$F!"Aw$j$"$j8uJd$r8!:w$9$k!#(B" (unless okuri-list (setq okuri-list '("$B$5(B" "$B$7(B" "$B$9(B" "$B$;(B"))) (when (and skk-henkan-okurigana (or (member skk-henkan-okurigana okuri-list) anything)) (skk-search-progs (substring skk-henkan-key 0 (1- (length skk-henkan-key)))))) (defun skk-search-ja-dic-maybe () (when (eval-when-compile (featurep 'emacs)) (unless (or (and (stringp skk-large-jisyo) (file-readable-p skk-large-jisyo)) (and (stringp skk-aux-large-jisyo) (file-readable-p skk-aux-large-jisyo)) (and (stringp skk-cdb-large-jisyo) (file-readable-p skk-cdb-large-jisyo)) skk-server-host skk-inhibit-ja-dic-search) (skk-search-ja-dic)))) (defun skk-search-with-suffix () (unless (or skk-henkan-okurigana (get 'skk-search-with-suffix 'active)) (let ((i 1) (len (length skk-henkan-key)) key suf-key words suffixes list) (put 'skk-search-with-suffix 'active t) (while (< i len) (setq key (substring skk-henkan-key 0 i) suf-key (substring skk-henkan-key i)) (setq words (skk-search-progs key nil 'remove) suffixes (skk-search-progs (concat ">" suf-key) nil 'remove)) (when (and words suffixes) (dolist (word words) (dolist (suffix suffixes) (setq list (nconc list (list (concat word suffix))))))) (setq i (1+ i))) (put 'skk-search-with-suffix 'active nil) list))) (defun skk-katakana-region (start end &optional vcontract) "$BNN0h$N$R$i$,$J$r%+%?%+%J$KJQ49$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B VCONTRACT $B$,(B non-nil $B$G$"$l$P!"(B\"$B$&!+(B\" $B$r(B \"$B%t(B\" $B$KJQ49$9(B $B$k!#(B $B0z?t$N(B START $B$H(B END $B$O?t;z$G$b%^!<%+!<$G$bNI$$!#(B" (interactive "*r\nP") (when vcontract (skk-search-and-replace start end "$B$&!+(B" (lambda (matched) nil "$B%t(B"))) (skk-search-and-replace start end "[$B$!(B-$B$s(B]+" (lambda (matched) (skk-hiragana-to-katakana matched)))) (defun skk-hiragana-region (start end &optional vexpand) "$BNN0h$N%+%?%+%J$r$R$i$,$J$KJQ49$9$k!#(B $B%*%W%7%g%J%k0z?t$N(B VEXPAND $B$,(B non-nil $B$G$"$l$P!"(B\"$B%t(B\" $B$r(B \"$B$&!+(B\" $B$KJQ49$9$k!#(B $B0z?t$N(B START $B$H(B END $B$O?t;z$G$b%^!<%+!<$G$bNI$$!#(B \"$B%u(B\" $B$H(B \"$B%v(B\" $B$OJQ99$5$l$J$$!#$3$N(B 2 $B$D$NJ8;z$OBP1~$9$k$R$i$,$J$,$J$$$N$G!"(B $B%+%?%+%J$H$7$F$O07$o$l$J$$!#(B" (interactive "*r\nP") (when vexpand (skk-search-and-replace start end "$B%t(B" (lambda (matched) nil "$B$&!+(B"))) (skk-search-and-replace start end "[$B%!(B-$B%s(B]+" (lambda (matched) (skk-katakana-to-hiragana matched)))) (defun skk-jisx0208-latin-region (start end) "$BNN0h$N(B ascii $BJ8;z$rBP1~$9$kA43Q1QJ8;z$KJQ49$9$k!#(B" (interactive "*r") (skk-search-and-replace start end "[ -~]" (lambda (matched) (aref skk-default-jisx0208-latin-vector (string-to-char matched))))) (defun skk-latin-region (start end) "$BNN0h$NA43Q1QJ8;z$rBP1~$9$k(B ascii $BJ8;z$KJQ49$9$k!#(B" (interactive "*r") (skk-search-and-replace start end "\\cj" (lambda (matched) (or (skk-jisx0208-to-ascii matched) matched)))) (defun skk-search-and-replace (start end regexp func) (let (matched replace) (save-match-data (skk-save-point ;; END may be changed when length of MATCHED and one of REPLACE ;; are different. (setq end (set-marker (make-marker) end)) (goto-char start) (while (re-search-forward regexp end 'noerror) (setq matched (buffer-substring-no-properties (match-beginning 0) (match-end 0)) replace (funcall func matched)) (goto-char (match-beginning 0)) ;; firstly insert a new string, secondly delete an old string to save ;; the cursor position. (insert-and-inherit replace) (delete-region (+ (match-beginning 0) (length replace)) (+ (match-end 0) (length replace)))) (set-marker end nil))))) (defun skk-jisx0208-to-ascii (string) (require 'japan-util) (let ((char (get-char-code-property (string-to-char string) 'ascii))) (if char (char-to-string char) nil))) (defun skk-henkan-skk-region-by-func (func &optional arg) "`skk-henkan-start-point' $B$H(B `skk-henkan-end-point' $B$N4V$NJ8;zNs$rJQ49$9$k!#(B $BJQ492DG=$+$I$&$+$N%A%'%C%/$r$7$?8e$K(B ARG $B$r0z?t$H$7$F(B FUNC $B$rE,MQ$7!"(B `skk-henkan-start-point' $B$H(B `skk-henkan-end-point' $B$N4V$NJ8;zNs$rJQ49$9$k!#(B" (skk-with-point-move (case skk-henkan-mode (active ;$B"'%b!<%I(B nil) (on ;$B"&%b!<%I(B (skk-set-marker skk-henkan-end-point (point)) (when (and (> skk-kakutei-history-limit 0) (< skk-henkan-start-point (point)) (skk-save-point (goto-char skk-henkan-start-point) (eq (skk-what-char-type) 'hiragana))) (skk-update-kakutei-history (buffer-substring-no-properties skk-henkan-start-point (point)))) ;; $BJQ492DG=$+$I$&$+$N:G=*%A%'%C%/(B (when (skk-get-prefix skk-current-rule-tree) (skk-error "$BF~NOESCf$N2>L>%W%l%U%#%C%/%9$,$"$j$^$9(B" "There remains a kana prefix")) (when (< (point) skk-henkan-start-point) (skk-error "$B%+!<%=%k$,JQ493+;OCOE@$h$jA0$K$"$j$^$9(B" "Henkan end point must be after henkan start point")) (when (and (not skk-allow-spaces-newlines-and-tabs) (skk-save-point (beginning-of-line) (> (point) skk-henkan-start-point))) (skk-error "$BJQ49%-!<$K2~9T$,4^$^$l$F$$$^$9(B" "Henkan key may not contain a line feed")) ;; (apply func skk-henkan-start-point skk-henkan-end-point (if arg (list arg) nil)) (skk-kakutei)) (t (skk-emulate-original-map arg))))) (defun skk-hiragana-to-katakana (hiragana) (let ((diff (- ?$B%"(B ?$B$"(B))) (mapconcat (lambda (e) (if (and (<= ?$B$!(B e) (>= ?$B$s(B e)) (char-to-string (+ e diff)) (char-to-string e))) (string-to-int-list hiragana) ""))) (defun skk-katakana-to-hiragana (katakana) (let ((diff (- ?$B%"(B ?$B$"(B))) (mapconcat (lambda (e) (if (and (<= ?$B%!(B e) (>= ?$B%s(B e)) (char-to-string (- e diff)) (char-to-string e))) (string-to-int-list katakana) ""))) (defun skk-splice-in (org offset spliced) ;; ORG := '(A B C), SPLICED := '(X Y), OFFSET := 1 ;; -> '(A B X Y C) (let (tmp tail) (unless (> offset 0) (error "%s" "Cannot splice in!")) (setq tmp (nthcdr (1- offset) org) tail (cdr tmp)) (setcdr tmp nil) ;cut off (setcdr tmp (if tail (nconc spliced tail) spliced)) org)) ;; (defun skk-chomp (nth list) ;; ;; LIST := '(A B C D), NTH := 1 ;; ;; -> '(A B) ;; (and (> nth -1) (setcdr (nthcdr nth list) nil)) ;; list) (defun skk-henkan-face-on (&optional face) "SKK $B$N(B face $BB0@-$r(B ON $B$K$9$k!#(B `skk-use-face' $B$,(B non-nil $B$N>l9g!"(B`skk-henkan-start-point' $B$H(B `skk-henkan-end-point' $B$N4V$N(B face $BB0@-$r(B `skk-henkan-face' $B$NCM$KJQ99$9$k!#(B" ;; SKK 9.4 $B$h$j(B Text Properties $B$r;HMQ$9$k$N$r;_$a$F!"(BOverlays $B$r;HMQ$9$k$h(B ;; $B$&$K$7$?(B (egg.el, canna.el, wnn-egg.el $B$r;29M$K$7$?(B)$B!#(B ;; Overlays $B$O!"%F%-%9%H$N0lIt$G$O$J$$$N$G!"%P%C%U%!$+$iJ8;z$r@Z$j=P$7$F$b%3(B ;; $B%T!<$NBP>]$K$J$i$J$$$7!"%"%s%I%%;~$bL5;k$5$l$k$N$G!"JQ49$5$l$?8uJd$NI=<((B ;; $B$r0l;~E*$KJQ99$9$k$K$O(B Text Properties $B$h$j$b9%ET9g$G$"$k!#(B (unless face (setq face skk-henkan-face)) (when (and face (marker-position skk-henkan-start-point) (marker-position skk-henkan-end-point)) (setq skk-henkan-overlay nil) (skk-face-on skk-henkan-overlay skk-henkan-start-point skk-henkan-end-point face skk-henkan-overlay-priority))) (defun skk-henkan-face-off () "SKK $B$N(B face $BB0@-$r(B OFF $B$K$9$k!#(B `skk-henkan-start-point' $B$H(B `skk-henkan-end-point' $B$N4V$NI=<($rJQ99$7$F$$$k(B `skk-henkan-overlay' $B$r>C$9!#(B" (when skk-henkan-face (skk-detach-extent skk-henkan-overlay))) (defun skk-detach-extent (object) (cond ((eval-when-compile (featurep 'xemacs)) (when (extentp object) (detach-extent object))) (t (when (overlayp object) (delete-overlay object))))) (defun skk-make-face (face) "$B?7$7$$(B FACE $B$r:n@.$9$k!#(B FACE $B$O!VA07J?'!WKt$O!VA07J?'(B + $B%9%i%C%7%e(B + $BGX7J?'!W$N7A<0$G;XDj$9$k!#(B" ;; hilit-lookup-face-create $B$N%5%V%;%C%H!#(Btutorial $B$G?'IU$1$r9T$&>l9g$G$b(B ;; hilit19 $B$K0MB8$;$:$H$j$"$($:(B face $B$r<+A0$G:n$k$3$H$,$G$-$k$h$&$K!"$H$$$&(B ;; $BL\E*$G:n$C$?$b$N$G!"4JC1$J?'IU$1$7$+$G$-$J$$!#$"$^$j8-$/$O$J$$!#J#;($J(B ;; face $B$r:n$j$?$$?M$O(B hilit-lookup-face-create $BEy$r;H$C$F2<$5$$!#(B (unless (car (memq face (face-list))) (save-match-data (let* ((list (split-string (symbol-name face) "/")) (bg (nth 1 list))) (setq face (make-face face)) (set-face-foreground face (car list)) (when bg (set-face-background face bg))))) face) ;; skk-auto.el, skk-rdbms.el $B$NN>J}$G;H$&$N$G!"(Bskk-auto.el $B$h$j0\F0$7$?!#(B (defun skk-remove-common (word) "WORD $B$NAw$j2>L>0J30$NItJ,$rJV$9!#(B `skk-henkan-key' $B$H(B WORD $B$N4V$K6&DL$NAw$j2>L>$rL>0J30$NItJ,(B $B$NJ8;zNs$rJV$9!#(B`skk-henkan-key' $B$H(B `skk-henkan-okurigana' $B$NCM$r%;%C%H$9$k!#(B $BNc$($P!"(BWORD == $B;}$C$F$-$?(B $B$G$"$l$P!"(B`skk-henkan-key' := $B$b(Bt , `skk-henkan-okurigana' := $B$C$F(B , WORD := $B;}(B $B$N$h$&$KJ,2r$7!"(BWORD $B$rJV$9!#(B `skk-auto-okuri-process' $B$NCM$,(B non-nil $B$G$"$k$H$-$K$3$N4X?t$r;HMQ$9$k!#(B $BJQ49$,9T$o$l$?%P%C%U%!$G%3!<%k$5$l$k(B ($B<-=q%P%C%U%!$G$O$J$$(B)$B!#(B" (when (and (not (skk-numeric-p)) (not skk-abbrev-mode) (or skk-henkan-in-minibuff-flag (and (<= skk-okuri-index-min (skk-henkan-count)) (<= (skk-henkan-count) skk-okuri-index-max)))) (let ((midasi skk-henkan-key) (midasi-len (length skk-henkan-key)) (word-len (length word)) (cont t) char pos pos2 midasi-tail word-tail new-word okuri-first new-skk-okuri-char new-skk-henkan-key) (when (and (>= midasi-len 2) (>= word-len 2)) ;; check if both midasi and word end with the same ascii char. (when (and (skk-ascii-char-p (aref midasi (1- midasi-len))) (eq (aref midasi (1- midasi-len)) (aref word (1- word-len)))) ;; if so chop off the char from midasi and word. ;; assume size of an ASCII char is always 1. (setq midasi (substring midasi 0 -1) midasi-len (1- midasi-len) word (substring word 0 -1) word-len (1- word-len))) (setq midasi-tail (substring midasi (1- midasi-len) midasi-len) word-tail (substring word (1- word-len) word-len)) (when (and (string= midasi-tail word-tail) (or (and (skk-string<= "$B$!(B" midasi-tail) (skk-string<= midasi-tail "$B$s(B")) (member midasi-tail '("$B!"(B" "$B!#(B" "$B!$(B" "$B!%(B")))) ;; $B8+=P$78l$HC18l$H$NKvHx$,F10l$N$+$JJ8;z$N>l9g!#(B ;; $BAw$j$J$7$rAw$j$"$j$X(B (setq pos (1- word-len) new-word new-skk-henkan-key) (while (and cont (> pos 0)) (setq char (substring word (1- pos) pos)) (if (and (skk-string<= "$B0!(B" char) (skk-string<= char "$Bt$(B")) ;; char is the right-most Kanji (setq cont nil) (setq pos (1- pos)))) (setq pos2 (- midasi-len (- word-len pos))) ;; check if midasi and word has the same tail of length (when (string= (substring midasi pos2 midasi-len) (substring word pos word-len)) (setq okuri-first (substring word pos (1+ pos))) (setq skk-henkan-okurigana (if (and (string= okuri-first "$B$C(B") (<= (+ pos 2) word-len)) ;; in this case okuriga consits of two ;; characters, e.g., $B!V;D$C$?!W(B (substring word pos (+ pos 2)) okuri-first)) (setq new-word (substring word 0 pos) new-skk-okuri-char (skk-okurigana-prefix skk-henkan-okurigana) new-skk-henkan-key (concat (substring midasi 0 pos2) new-skk-okuri-char)) (let (inhibit-quit) ; allow keyboard quit (cond ((not skk-henkan-in-minibuff-flag) (setq word new-word skk-henkan-key new-skk-henkan-key)) ;; $B<-=qEPO?%b!<%I$GEPO?$5$l$?>l9g!#(B ;; ask if register as okuri-ari word. ((y-or-n-p (format (if skk-japanese-message-and-error "%s /%s/ $B$rAw$j$"$j8uJd$H$7$FEPO?$7$^$9$+!)(B " "Shall I register this as okuri-ari word: %s /%s/ ? ") new-skk-henkan-key new-word)) (setq word new-word skk-okuri-char new-skk-okuri-char skk-henkan-key new-skk-henkan-key)) (t (setq skk-henkan-okurigana nil skk-okuri-char nil) (message ""))))))))) ;; $BJ,2r$7$?(B word ($BAw$j2>L>ItJ,$r=|$$$?$b$N(B) $B$rJV$9!#(B word) (defun skk-okurigana-prefix (okurigana) (let ((headchar (substring okurigana 0 1))) (cond ((string= headchar "$B$s(B") "n") ((not (and (skk-string<= "$B$!(B" headchar) (skk-string<= headchar "$B$s(B"))) nil) ((and (string= headchar "$B$C(B") (not (string= okurigana "$B$C(B"))) (aref skk-kana-rom-vector ;; assume the character is hiragana of JIS X 0208. (- (skk-char-octet (string-to-char (substring okurigana 1 2)) 1) 33))) (t (aref skk-kana-rom-vector (- (skk-char-octet (string-to-char headchar) 1) 33)))))) (defun skk-time-difference (a b) ;; from type-break.el. Welcome! ;; Compute the difference, in seconds, between a and b, two structures ;; similar to those returned by `current-time'. ;; Use addition rather than logand since that is more robust; the low 16 ;; bits of the seconds might have been incremented, making it more than 16 ;; bits wide. (+ (lsh (- (car b) (car a)) 16) (- (nth 1 b) (nth 1 a)))) (defun skk-update-kakutei-history (midasi &optional word) "$BJQ?t(B `skk-kakutei-history' $B$r99?7$9$k!#(B $B$3$NMzNr$O(B skk-comp.el $B$K$*$$$FMxMQ$5$l$k!#(B" (cond ((<= skk-kakutei-history-limit 0) (setq skk-kakutei-history nil)) (t (setq skk-kakutei-history (cons (list midasi word (current-buffer)) skk-kakutei-history)) (when (> (length skk-kakutei-history) skk-kakutei-history-limit) (setcdr (nthcdr (1- skk-kakutei-history-limit) skk-kakutei-history) nil))))) ;; ??? Workaround for XEmacs isearch. (defun skk-henkan-count () (cond ((eval-when-compile (featurep 'xemacs)) (if skk-isearch-switch (with-current-buffer skk-isearch-working-buffer skk-henkan-count) skk-henkan-count)) (t skk-henkan-count))) ;; ??? Workaround for XEmacs isearch. (defun skk-set-henkan-count (i) (cond ((eval-when-compile (featurep 'xemacs)) (if skk-isearch-switch (with-current-buffer skk-isearch-working-buffer (setq skk-henkan-count i)) (setq skk-henkan-count i))) (t (setq skk-henkan-count i)))) ;; ??? Workaround for XEmacs isearch. (defun skk-exit-show-candidates () (cond ((eval-when-compile (featurep 'xemacs)) (if skk-isearch-switch (with-current-buffer skk-isearch-working-buffer skk-exit-show-candidates) skk-exit-show-candidates)) (t skk-exit-show-candidates))) ;; ??? Workaround for XEmacs isearch. (defun skk-set-exit-show-candidates (list) (cond ((eval-when-compile (featurep 'xemacs)) (if skk-isearch-switch (with-current-buffer skk-isearch-working-buffer (setq skk-exit-show-candidates list)) (setq skk-exit-show-candidates list))) (t (setq skk-exit-show-candidates list)))) ;;; functions for hooks. (defun skk-after-point-move () (when (and (not (and skk-previous-point (= skk-previous-point (point)))) (skk-get-prefix skk-current-rule-tree)) (skk-with-point-move (skk-erase-prefix 'clean)))) (defun skk-pre-command () (when (and (memq last-command '(skk-insert skk-previous-candidate)) (null (memq this-command skk-kana-cleanup-command-list))) (skk-kana-cleanup t))) (defun skk-remove-minibuffer-setup-hook (&rest args) ;; Remove all args from minibuffer-setup-hook. (dolist (hook args) (remove-hook 'minibuffer-setup-hook hook))) (defun skk-add-skk-pre-command () (add-hook 'pre-command-hook 'skk-pre-command nil 'local)) (defun skk-remove-skk-pre-command () (remove-hook 'pre-command-hook 'skk-pre-command 'local)) (add-hook 'edit-picture-hook #'skk-misc-for-picture 'append) (add-hook 'kill-emacs-hook #'skk-record-jisyo-data) ;; add 'skk-save-jisyo only to remove easily. (add-hook 'kill-emacs-hook #'skk-save-jisyo) (add-hook 'minibuffer-exit-hook (lambda () (skk-remove-skk-pre-command) (skk-remove-minibuffer-setup-hook 'skk-j-mode-on 'skk-setup-minibuffer 'skk-add-skk-pre-command) (skk-exit-henkan-in-minibuff))) ;;;###autoload (defun skk-preload () "Emacs $B5/F0;~$K$"$i$+$8$a(B SKK $B$r8F$V$3$H$G(B SKK $B$N1~Ez$rB.$/$9$k!#(B $B@hFI$_$NBP>]$K$J$k$N$O0J2 (prefix-numeric-value arg) 0) t))) (when (boundp 'migemo-isearch-enable-p) (if skk-isearch-mode-enable (setq migemo-isearch-enable-p nil) (setq migemo-isearch-enable-p t))) (message "SKK isearch is %s" (if skk-isearch-mode-enable "enabled" "disabled"))) (defun skk-henkan-inactivate () "$B"'%b!<%I$r%-%c%s%;%k$7$F"&%b!<%I$KLa$k!#J8;zNs$O0];}$9$k!#(B" (skk-set-henkan-count 0) (if (and skk-delete-okuri-when-quit skk-henkan-okurigana) (let ((count (length skk-henkan-okurigana))) (skk-previous-candidate nil) ;; $B$3$3$G$O(B delete-backward-char $B$KBhFs0z?t$rEO$5$J$$J}$,%Y%?! (point) skk-henkan-start-point) (point) skk-previous-point)) (skk-kakutei))) ;;; cover to original functions. (skk-defadvice keyboard-quit (around skk-ad activate preactivate) "$B"'%b!<%I$G$"$l$P!"8uJd$NI=<($r$d$a$F"&%b!<%I$KLa$9(B ($B8+=P$78l$O;D$9(B)$B!#(B $B"&%b!<%I$G$"$l$P!"8+=P$78l$r:o=|$9$k!#(B $B>e5-$N$I$A$i$N%b!<%I$G$b$J$1$l$P(B `keyboard-quit' $B$HF1$8F0:n$r$9$k!#(B" (if (not skk-mode) ad-do-it (cond ((eq skk-henkan-mode 'active) (skk-henkan-inactivate)) ((eq skk-henkan-mode 'on) (skk-henkan-off-by-quit)) (t (if (skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean) ad-do-it))))) (skk-defadvice abort-recursive-edit (around skk-ad activate preactivate) "$B"'%b!<%I$G$"$l$P!"8uJd$NI=<($r$d$a$F"&%b!<%I$KLa$9(B ($B8+=P$78l$O;D$9(B)$B!#(B $B"&%b!<%I$G$"$l$P!"8+=P$78l$r:o=|$9$k!#(B $B>e5-$N$I$A$i$N%b!<%I$G$b$J$1$l$P(B `abort-recursive-edit' $B$HF1$8F0:n$r$9$k!#(B" ;; subr command but no arg. (skk-remove-minibuffer-setup-hook 'skk-j-mode-on 'skk-setup-minibuffer 'skk-add-skk-pre-command) (if (not skk-mode) ad-do-it (cond ((eq skk-henkan-mode 'active) (skk-henkan-inactivate)) ((eq skk-henkan-mode 'on) (skk-henkan-off-by-quit)) (t (if (skk-get-prefix skk-current-rule-tree) (skk-erase-prefix 'clean) ad-do-it))))) (defadvice newline (around skk-ad activate) "`skk-egg-like-newline' $B$,(B non-nil $B$G$"$l$P!"3NDj$N$_9T$$!"2~9T$7$J$$!#(B" (if (not (or skk-j-mode skk-jisx0201-mode skk-abbrev-mode)) ad-do-it (let (;;(arg (ad-get-arg 0)) ;; `skk-kakutei' $B$rr7o$K(B nil $B$K$J$k$N$G!"J]B8$7$F$*$/I,MW$,$"$k!#(B (no-newline (and skk-egg-like-newline skk-henkan-mode)) (auto-fill-function (if (skk-called-interactively-p 'interactive) auto-fill-function nil))) ;; fill $B$5$l$F$b(B nil $B$,5"$C$F$/$k(B :-< ;;(if (skk-kakutei) ;; (setq arg (1- arg))) ;;(if skk-mode ;; (let ((opos (point))) ;; ;; skk-kakutei (skk-do-auto-fill) $B$K$h$C$F9T$,@^$jJV$5$l$?$i(B ;; ;; arg $B$r(B 1 $B$D8:$i$9!#(B ;; (skk-kakutei) ;; (if (and (not (= opos (point))) (integerp arg)) ;; (ad-set-arg 0 (1- arg))))) (when skk-mode (skk-kakutei)) (undo-boundary) (unless no-newline ad-do-it)))) (defadvice newline-and-indent (around skk-ad activate) "`skk-egg-like-newline' $B$,(B non-nil $B$G$"$l$P!"3NDj$N$_9T$$!"2~9T$7$J$$!#(B" (if (not (or skk-j-mode skk-jisx0201-mode skk-abbrev-mode)) ad-do-it (let ((no-newline (and skk-egg-like-newline skk-henkan-mode)) (auto-fill-function (if (skk-called-interactively-p 'interactive) auto-fill-function nil))) (when skk-mode (skk-kakutei)) (undo-boundary) (unless no-newline ad-do-it)))) (skk-defadvice exit-minibuffer (around skk-ad activate) ;; subr command but no arg. "`skk-egg-like-newline' $B$,(B non-nil $B$G$"$l$P!"3NDj$N$_9T$$!"2~9T$7$J$$!#(B" (skk-remove-minibuffer-setup-hook 'skk-j-mode-on 'skk-setup-minibuffer 'skk-add-skk-pre-command) (if (not (or skk-j-mode skk-jisx0201-mode skk-abbrev-mode)) ad-do-it (let ((no-newline (and skk-egg-like-newline skk-henkan-mode))) (when skk-mode (skk-kakutei)) (unless no-newline ad-do-it)))) (defadvice picture-mode-exit (before skk-ad activate) "SKK $B$N%P%C%U%!%m!<%+%kJQ?t$rL58z$K$7!"(B`picture-mode-exit' $B$r%3!<%k$9$k!#(B `picture-mode' $B$+$i=P$?$H$-$K$=$N%P%C%U%!$G(B SKK $B$r@5>o$KF0$+$9$?$a$N=hM}!#(B" (when skk-mode (skk-kill-local-variables))) (defadvice undo (before skk-ad activate) "SKK $B%b!<%I$,(B on $B$J$i(B `skk-self-insert-non-undo-count' $B$r=i4|2=$9$k!#(B" (when skk-mode (setq skk-self-insert-non-undo-count 0))) (defadvice next-line (before skk-ad activate) (when (eq skk-henkan-mode 'active) (skk-kakutei))) (defadvice previous-line (before skk-ad activate) (when (eq skk-henkan-mode 'active) (skk-kakutei))) (defadvice backward-kill-sentence (before skk-ad activate) ;; C-x DEL ;; $B$I$N$h$&$JF0:n$r$9$k$Y$-$+L$7hDj(B (when skk-mode (skk-kakutei))) (defmacro skk-wrap-newline-command (cmd) "[return]$B%-!<$K3d$jEv$F$i$l$F$$$k$G$"$m$&%3%^%s%I(B (CMD) $B$r%i%C%W$7$F!"(B skk $B$NF0:n$H@09g$5$;$k!#(B [return]$B%-!<$K%3%^%s%I$r3d$jEv$F$F$$$k%a!<%8%c%b!<%I$G(B skk $B$r;H$&$H!"(Bskk $B$,(B `skk-kakutei' $B$r8F$S=P$95!2q$,$J$$$?$a$KJQ49$r3NDj$G$-$:(B `$B"'(B' $B$,%P%C%U%!$K(B $B;D$C$F$7$^$&$H$$$&LdBj$,$"$k!#(B $BK\%^%/%m$rMQ$$$k$H!"JQ49$r3NDj$7$F$+$i(B (skk-kakutei() $B$r