Anonymous avatar Anonymous committed 226399d

new files

Comments (0)

Files changed (8)

 	lisp/lookup-utils.elc lisp/lookup-vars.elc lisp/lookup-vse.elc \
 	lisp/lookup.elc lisp/ndcookie.elc lisp/ndeb.elc lisp/ndic.elc \
 	lisp/ndict.elc lisp/ndkks.elc lisp/ndmisc.elc lisp/ndnmz.elc \
-	lisp/ndspell.elc lisp/ndtp.elc lisp/stem-english.elc
+	lisp/ndspell.elc lisp/ndtp.elc lisp/stem-english.elc \
+	lisp/lookup-select.elc lisp/ndsrd.elc lisp/sdicf.elc
 
 PRELOADS = -eval "(setq lookup-byte-compile t)"
 
 DATA_FILES = 
 
-INFO_FILES = texi/lookup.info*
+INFO_FILES = texi/lookup*.info*
 
-TEXI_FILES = texi/lookup.texi
+TEXI_FILES = texi/lookup.texi texi/lookup-guide.texi
 
 AUTOLOAD_PATH = lisp
 
+Lookup $B%;%C%H%"%C%W%,%$%I(B
+=========================
+
+Lookup $B$N%$%s%9%H!<%k$,40N;$7$^$7$?!#I,MW$K1~$8$F!"0J2<$N@_Dj$r9T$J$C$F(B
+$B2<$5$$!#(B
+
+load-path $B$N@_Dj(B
+----------------
+
+$B<!$N$h$&$K$7$F(B load-path $B$N@_Dj$r9T$J$C$F2<$5$$!#$3$l$O%$%s%9%H!<%k$7$?(B
+$B%W%m%0%i%`%U%!%$%k$rFI$_9~$`$?$a$KI,MW$J$b$N$G$9!#%Q%9$,DL$C$F$$$k$3$H$,(B
+$B$o$+$C$F$$$k$J$i!"$J$/$F$b9=$$$^$;$s!#(B
+
+  (setq load-path (cons "@install-lisp-directory@" load-path))
+
+info $B%G%#%l%/%H%j$N@_Dj(B
+-----------------------
+
+$B<!$N$h$&$K$7$F(B Info-default-directory-list $B$N@_Dj$r9T$J$C$F2<$5$$!#$3$l(B
+$B$O%$%s%9%H!<%k$7$?(B info $B%U%!%$%k$rFI$_9~$`$?$a$KI,MW$J$b$N$G$9!#%Q%9$,(B
+$BDL$C$F$$$k$3$H$,$o$+$C$F$$$k$J$i!"$J$/$F$b9=$$$^$;$s!#(B
+
+  (setq Info-default-directory-list
+        (cons "@install-info-directory@" Info-default-directory-list))
+
+dir $B%U%!%$%k$N@_Dj(B
+------------------
+
+$B$3$N%$%s%9%H!<%i$O(B info $B%U%!%$%k$N0lMw%U%!%$%k(B(dir $B%U%!%$%k(B)$B$X$N=q$-=P$7(B
+$B$r<+F0$G$O9T$J$$$^$;$s!#I,MW$K1~$8$F!"<!$N3F9T$r(B dir $B%U%!%$%k$KDI2C$7$F(B
+$B2<$5$$!#(B
+
+* Lookup: (lookup).             Lookup, a Search Interface.
+* Lookup Guide: (lookup-guide). The Lookup Startup Guide.
+
+$B0J>e$G%$%s%9%H!<%k$O=*N;$G$9!#$3$3$G(B C-c C-c $B$H%?%$%W$9$k$H%9%?!<%H%"%C(B
+$B%W%,%$%I$,3+$+$l$^$9$N$G!"$^$:$O$=$A$i$+$i$4Ms2<$5$$!#(B
+
+-- EOF --
+;;; install.el --- Lookup installer
+;; Copyright (C) 1999 NISHIDA Keisuke <knishida@ring.aist.go.jp>
+
+;; $Id$
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 2
+;; of the License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; Code:
+
+(if (string< emacs-version "19.29")
+    (setq command-line-args-left (cdr command-line-args-left)))
+
+(defconst install-elisp-files
+  '("evi.el" "evi-mule.el" "lookup.el" "lookup-utils.el" "lookup-types.el"
+    "lookup-vars.el" "lookup-vse.el" "lookup-package.el"
+    "lookup-entry.el" "lookup-content.el" "lookup-select.el"
+    "ndic.el" "ndeb.el" "ndtp.el" "ndict.el" "ndkks.el" "ndsrd.el"
+    "ndspell.el" "ndcookie.el" "ndmisc.el" "sdicf.el" "stem-english.el"))
+
+(defconst install-info-files
+  '("lookup.info" "lookup-guide.info"))
+
+(defvar install-lisp-directory nil)
+(defvar install-info-directory nil)
+(defvar install-lookup-version "unknown")
+
+(defun install-check-directory (directory)
+  (and (not (file-exists-p directory))
+       (y-or-n-p (format "Directory %s is not exist.  Creat 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)))
+
+(or (fboundp 'with-current-buffer)
+    (defmacro with-current-buffer (buffer &rest body)
+      (` (save-current-buffer
+	   (set-buffer (, buffer))
+	   (,@ body)))))
+
+;; get the version number of lookup
+(with-current-buffer (get-buffer-create " *work lookup-version*")
+  (erase-buffer)
+  (setq install-lookup-version
+	(condition-case nil
+	    (progn
+	      (insert-file-contents "VERSION")
+	      (goto-char (point-min))
+	      (buffer-substring (point-min) (progn (end-of-line) (point))))
+	  (error "unknown")))
+  (kill-buffer (current-buffer)))
+
+;; message
+
+(if noninteractive nil
+  (switch-to-buffer (generate-new-buffer "*Lookup Installer*"))
+  (insert "Lookup $B%$%s%9%H!<%i(B\n")
+  (insert "===================\n\n")
+  (insert "Lookup $B$N%$%s%9%H!<%k$r;O$a$^$9!#(B")
+  (insert "$BESCf$GCfCG$9$k$K$O(B C-g $B$r2!$7$F2<$5$$!#(B\n\n"))
+
+;; directory
+
+(if noninteractive nil
+  (insert "$B%G%#%l%/%H%j$N7hDj(B\n")
+  (insert "------------------\n\n")
+  (insert "elisp $B%U%!%$%k$N%G%#%l%/%H%j$rF~NO$7$F2<$5$$(B:\n"))
+(let ((default "~/emacs/lisp/lookup/"))
+  (setq install-lisp-directory
+	(install-check-directory
+	 (if noninteractive
+	     (or (car command-line-args-left) default)
+	   (read-file-name "Lisp directory: " default default)))))
+(if noninteractive nil
+  (insert "    -> " install-lisp-directory "\n\n") (sit-for 0))
+
+(if noninteractive nil
+  (insert "info $B%U%!%$%k$N%G%#%l%/%H%j$rF~NO$7$F2<$5$$(B:\n"))
+(let ((default "~/emacs/info/"))
+  (setq install-info-directory
+	(install-check-directory
+	 (if noninteractive
+	     (or (car (cdr command-line-args-left)) default)
+	   (read-file-name "Info directory: " default default)))))
+(if noninteractive nil
+  (insert "    -> " install-info-directory "\n\n") (sit-for 0))
+
+;; lookup-vars.el
+
+(if noninteractive nil
+  (insert "$B%$%s%9%H!<%k$N<B9T(B\n")
+  (insert "------------------\n\n")
+  (insert "lookup-vars.el.in $B$+$i(B lookup-vars.el $B$r@8@.Cf(B...") (sit-for 0))
+(with-current-buffer (find-file-noselect "lisp/lookup-vars.el.in" t)
+  (if (search-forward "@VERSION@")
+      (replace-match install-lookup-version))
+  (if (search-forward "@pkgemacsdir@")	;needs to be fixed to the correct one
+      (replace-match install-lisp-directory))
+  (write-file "lookup-vars.el")
+  (kill-buffer (current-buffer))
+  )
+(message "Copied lookup-vars.el.in to lookup-vars.el")
+(if (not noninteractive) (insert "done\n"))
+
+;; compile
+
+(if noninteractive nil
+  (insert "elisp $B%U%!%$%k$N%3%s%Q%$%kCf(B...") (sit-for 0))
+(let* ((default-directory (expand-file-name "lisp/"))
+       (lookup-compile-directory default-directory)
+       (command-line-args-left (if (string< emacs-version "19.29")
+				   (cons nil install-elisp-files)
+				 install-elisp-files)))
+  (load (expand-file-name "lookup-compile.el")))
+(if (not noninteractive) (insert "done\n"))
+
+;; install
+
+(if noninteractive nil
+  (insert "elisp $B%U%!%$%k$N%$%s%9%H!<%kCf(B...") (sit-for 0))
+(mapcar (lambda (file)
+	  (copy-file (expand-file-name file "lisp/")
+		     (expand-file-name file install-lisp-directory) t)
+	  (message "Installed %s to %s" file install-lisp-directory)
+	  (setq file (byte-compile-dest-file file))
+	  (copy-file (expand-file-name file "lisp/")
+		     (expand-file-name file install-lisp-directory) t)
+	  (message "Installed %s to %s" file install-lisp-directory))
+	install-elisp-files)
+(if (not noninteractive) (insert "done\n"))
+
+(if noninteractive nil
+  (insert "info $B%U%!%$%k$N%U%)!<%^%C%HCf(B...") (sit-for 0))
+(mapcar (lambda (info)
+	  (if (file-readable-p (expand-file-name info "texi/"))
+	      t
+	    ;; the pre-formatted .info file does not exist; format it here
+	    (let ((texi (concat (file-name-sans-extension info) ".texi")))
+	      (save-current-buffer
+		      (let ((buf (find-file-noselect 
+				  (expand-file-name texi "texi/") t)))
+			(set-buffer buf)
+			(texinfo-format-buffer t) ; t for nosplit
+			(save-buffer 0)
+			(kill-buffer (current-buffer))
+			(kill-buffer buf))))))
+	install-info-files)
+(if (not noninteractive) (insert "done\n"))
+
+(if noninteractive nil
+  (insert "info $B%U%!%$%k$N%$%s%9%H!<%kCf(B...") (sit-for 0))
+(mapcar (lambda (info)
+	  (mapcar (lambda (file)
+		    (copy-file (expand-file-name file "texi/")
+			       (expand-file-name file install-info-directory)
+			       t)
+		    (message "Installed %s to %s" file install-info-directory))
+		  (directory-files "texi/" nil info)))
+	install-info-files)
+(if (not noninteractive) (insert "done\n"))
+
+;; clean
+
+(if noninteractive nil
+  (insert "$B0l;~%U%!%$%k$N:o=|Cf(B...") (sit-for 0))
+(let ((default-directory (expand-file-name "lisp/")))
+  (delete-file "lookup-vars.el")
+  (mapcar (lambda (file)
+	    (delete-file (byte-compile-dest-file (expand-file-name file))))
+	  install-elisp-files))
+(message "Removed lookup-vars.el, *.elc")
+(if (not noninteractive) (insert "done\n"))
+
+;; initialize
+
+(if noninteractive nil
+  (insert "Lookup $B$N=i4|2=Cf(B...")
+  (sit-for 0)
+  (lookup-initialize)
+  (insert "done\n")
+  (kill-buffer (current-buffer)))
+
+;; congratulate
+
+(if noninteractive
+    (message "\nSee etc/SETUP for the setup after installation")
+  (switch-to-buffer (generate-new-buffer "*Congratulations!*"))
+  (insert-file-contents "etc/SETUP")
+  (if (search-forward "@install-lisp-directory@")
+      (replace-match install-lisp-directory))
+  (if (search-forward "@install-info-directory@")
+      (replace-match install-info-directory))
+  (goto-char (point-min))
+  (set-buffer-modified-p nil)
+  (view-mode)
+  (local-set-key "\C-c\C-c" 'install-open-info))
+
+(defun install-open-info ()
+  (interactive)
+  (require 'info)
+  (Info-find-node (expand-file-name "lookup-guide" install-info-directory)
+		  "Top"))
+
+;;; install.el ends here

lisp/lookup-select.el

+;;; lookup-select.el --- lookup-select-mode
+;; Copyright (C) 1999 Lookup Development Team <lookup@ring.gr.jp>
+
+;; Author: Keisuke Nishida <kei@psn.net>
+;; Version: $Id$
+
+;; This file is part of Lookup.
+
+;; Lookup is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2 of the License, or
+;; (at your option) any later version.
+
+;; Lookup 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 Lookup; if not, write to the Free Software Foundation,
+;; Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+;;; Code:
+
+(require 'lookup)
+
+;;;;;;;;;;;;;;;;;;;;
+;: Construct Buffer
+;;;;;;;;;;;;;;;;;;;;
+
+(defun lookup-select-display (session)
+  (with-current-buffer (lookup-open-buffer (lookup-select-buffer))
+    (lookup-select-mode)
+    (let ((inhibit-read-only t))
+      (erase-buffer)
+      (insert "Type `m' to select, `u' to unselect, `?' for help.\n\n")
+      (lookup-table-insert
+       "%c %-12t %-20t %s\n"
+       (append '((?% "Identfier" "Title" "Method")
+		 (?- "---------" "-----" "------"))
+	       (mapcar (lambda (dic)
+			 (list (if (lookup-dictionary-selected-p dic) ?* ? )
+			       (lookup-dictionary-id dic)
+			       (lookup-dictionary-title dic)
+			       (mapconcat 'lookup-method-key
+					  (lookup-dictionary-methods dic) "")))
+		       (lookup-module-dictionaries
+			(lookup-session-module session)))))
+      (lookup-select-goto-first))
+    (lookup-pop-to-buffer (current-buffer))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;:  Lookup Select mode
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar lookup-select-mode-map nil
+  "*Keymap for Lookup Select mode.")
+
+(unless lookup-select-mode-map
+  (setq lookup-select-mode-map (make-sparse-keymap))
+  (define-key lookup-select-mode-map " " 'lookup-select-next-line)
+  (define-key lookup-select-mode-map "n" 'lookup-select-next-line)
+  (define-key lookup-select-mode-map "p" 'lookup-select-previous-line)
+  (define-key lookup-select-mode-map "\en" 'lookup-history-next)
+  (define-key lookup-select-mode-map "\ep" 'lookup-history-previous)
+  (define-key lookup-select-mode-map "\ef" 'lookup-module-forward)
+  (define-key lookup-select-mode-map "\eb" 'lookup-module-backward)
+  (define-key lookup-select-mode-map "m" 'lookup-select-do-select)
+  (define-key lookup-select-mode-map "u" 'lookup-select-do-unselect)
+  (define-key lookup-select-mode-map "a" 'lookup-select-do-select-all)
+  (define-key lookup-select-mode-map "\C-m" 'lookup-select-do-select-only)
+  (define-key lookup-select-mode-map "d" 'lookup-select-mark-disable)
+  (define-key lookup-select-mode-map "x" 'lookup-select-do-execute)
+;  (define-key lookup-select-mode-map "i" 'lookup-select-info)
+  (define-key lookup-select-mode-map "M" 'lookup-select-menu)
+  (define-key lookup-select-mode-map "f" 'lookup-select-search-pattern)
+  (define-key lookup-select-mode-map "o" 'delete-other-windows)
+  (define-key lookup-select-mode-map "/" 'lookup-select-text-search)
+  (define-key lookup-select-mode-map "g" 'lookup-select-update)
+  (define-key lookup-select-mode-map "q" 'lookup-suspend)
+  (define-key lookup-select-mode-map "Q" 'lookup-exit)
+  (define-key lookup-select-mode-map "R" 'lookup-restart)
+  (define-key lookup-select-mode-map "?" 'lookup-select-help))
+
+(defconst lookup-select-mode-help
+  "Lookup Select $B%b!<%I(B:
+
+`n'(ext)    - $B<!$N<-=q$X(B        `p'(revios) - $BA0$N<-=q$X(B
+
+`m'(ark)    - $B<-=q$rA*Br(B        `u'(nmark)  - $B<-=q$rHsA*Br(B
+`a'(ll)     - $BA4$F$N<-=q$rA*Br(B  `RET'       - $B$=$N<-=q$@$1$rA*Br(B
+`d'(isable) - $B<-=q$rL58z2=(B   (e)`x'(ecute)  - $BL58z2=$r<B9T(B
+
+`f'(ind)    - $B8!:w$r<B9T(B        `M'(enu)    - $B<-=q$N%a%K%e!<$rI=<((B
+`o'(pen)    - $B2hLL$r:GBg2=(B      `/'         - $B$=$N<-=q$+$iA4J88!:w(B
+
+`q'    - $B%P%C%U%!$rH4$1$k(B       `g'    - $B%b%8%e!<%k$r=i4|2=$7D>$9(B
+`Q'    - Lookup $B$r=*N;$9$k(B      `R'    - Lookup $B$r:F5/F0$9$k(B")
+
+(defvar lookup-select-mode-hook nil)
+
+(defun lookup-select-mode ()
+  (interactive)
+  (kill-all-local-variables)
+  (buffer-disable-undo)
+  (setq major-mode 'lookup-select-mode)
+  (setq mode-name "Select")
+  (setq mode-line-buffer-identification '("Lookup:%12b"))
+  (setq buffer-read-only t)
+  (setq truncate-lines t)
+  (use-local-map lookup-select-mode-map)
+  (run-hooks 'lookup-select-mode-hook))
+
+;;;
+;:: Interactive commands
+;;;
+
+(defun lookup-select-next-line ()
+  "$B<!$N9T$K?J$`!#(B"
+  (interactive)
+  (if (eobp) (ding) (forward-line)))
+
+(defun lookup-select-previous-line ()
+  "$BA0$N9T$KLa$k!#(B"
+  (interactive)
+  (if (bobp) (ding) (forward-line -1)))
+
+(defun lookup-select-do-select ()
+  "$B%]%$%s%H9T$N<-=q$rA*Br$9$k!#(B"
+  (interactive)
+  (lookup-select-set-selected t))
+
+(defun lookup-select-do-unselect ()
+  "$B%]%$%s%H9T$N<-=q$rHsA*Br$K$9$k!#(B"
+  (interactive)
+  (lookup-select-set-selected nil))
+
+(defun lookup-select-toggle-selected ()
+  "$B%]%$%s%H9T$N<-=q$NA*Br>uBV$r%H%0%k$9$k!#(B"
+  (interactive)
+  (let ((dict (lookup-select-point-dictionary)))
+    (lookup-select-set-selected
+     (not (lookup-dictionary-selected-p dict)))))
+
+(defun lookup-select-do-select-all ()
+  "$BA4$F$N<-=q$rA*Br$9$k!#(B"
+  (interactive)
+  (save-excursion
+    (lookup-select-goto-first)
+    (while (not (eobp))
+      (lookup-select-set-selected t))))
+
+(defun lookup-select-do-select-only ()
+  "$B%]%$%s%H9T$N<-=q$N$_$rA*Br$9$k!#(B"
+  (interactive)
+  (if (not (lookup-select-point-dictionary))
+      (error "No dictionary on current line")
+    (save-excursion
+      (lookup-select-goto-first)
+      (while (not (eobp))
+	(lookup-select-set-selected nil)))
+    (lookup-select-set-selected t t)))
+
+(defun lookup-select-mark-disable ()
+  "$B%]%$%s%H9T$N<-=q$KL58z2=$N%^!<%/$rIU$1$k!#(B"
+  (interactive)
+  (lookup-select-mark ?D t))
+
+(defun lookup-select-do-execute ()
+  "$BL58z2=$r<B9T$9$k!#(B"
+  (interactive)
+  (save-excursion
+    (lookup-select-goto-first)
+    (let* ((inhibit-read-only t)
+	   (module (lookup-session-module lookup-current-session))
+	   (dicts (lookup-module-dictionaries module)))
+      (while (re-search-forward "^D" nil t)
+	(setq dicts (delq (lookup-select-point-dictionary) dicts))
+	(kill-region (progn (beginning-of-line) (point))
+		     (progn (forward-line) (point))))
+      (lookup-module-set-dictionaries module dicts))))
+
+(defun lookup-select-menu ()
+  "$B<-=q$,%a%K%e!<$KBP1~$7$F$$$k>l9g!"$=$l$r;2>H$9$k!#(B"
+  (interactive)
+  (let* ((dict (lookup-select-point-dictionary))
+	 (entries (lookup-vse-get-menu dict)))
+    (if entries
+	(let* ((module (lookup-session-module lookup-current-session))
+	       (title (lookup-dictionary-title dict))
+	       (query (lookup-make-query 'reference title)))
+	  (lookup-display-entries module query entries))
+      (error "This dictionary has no menu"))))
+
+(defun lookup-select-search-pattern (pattern)
+  "$BA*Br$5$l$?<-=q$+$i8!:w$r9T$J$&!#(B"
+  (interactive (list (lookup-read-string "Look up" nil 'lookup-input-history)))
+  (lookup-search-pattern (lookup-session-module lookup-last-session) pattern))
+
+(defun lookup-select-text-search (string &optional force)
+  "$B%]%$%s%H9T$N<-=q$+$iA4J88!:w$r9T$J$&!#(B"
+  (interactive
+   (list (let ((dictionary (lookup-select-point-dictionary)))
+	   (if (memq 'text (lookup-dictionary-methods dictionary))
+	       (lookup-read-string "Look up" nil 'lookup-input-history)
+	     (error "This dictionary does not support text search")))
+	 current-prefix-arg))
+  (let ((module (lookup-session-module lookup-current-session))
+	(dictionary (lookup-select-point-dictionary))
+	(query (lookup-make-query 'text string)))
+    (message "searcing...")
+    (lookup-display-entries module query
+			    (lookup-vse-search-query dictionary query))
+    (message "searcing...done")))
+
+(defun lookup-select-update ()
+  "$B8=:_$N8!:w%b%8%e!<%k$r=i4|2=$7D>$9!#(B
+$B$?$@$7@_Dj%U%!%$%k$rJQ99$7$?>l9g$K$O!"JQ99$rH?1G$9$k$K$O(B
+\\[lookup-restart] $B$rMQ$$$kI,MW$,$"$k!#(B"
+  (interactive)
+  (let ((module (lookup-session-module lookup-current-session)))
+    (message "Updating %s..." (lookup-module-name module))
+    (lookup-module-clear module)
+    (lookup-module-init module)
+    (lookup-select-dictionary module)
+    (message "Updating %s...done" (lookup-module-name module))))
+
+(defun lookup-select-help ()
+  "Select $B%b!<%I$N4J0W%X%k%W$rI=<($9$k!#(B"
+  (interactive)
+  (with-current-buffer (lookup-open-buffer (lookup-help-buffer))
+    (help-mode)
+    (let ((inhibit-read-only t))
+      (erase-buffer)
+      (insert lookup-select-mode-help))
+    (lookup-display-help (current-buffer))))
+
+;;;
+;:: Internal functions
+;;;
+
+(defun lookup-select-goto-first ()
+  (goto-char (point-min))
+  (forward-line 4))
+
+(defun lookup-select-point-dictionary ()
+  (save-excursion
+    (beginning-of-line)
+    (forward-char 2)
+    (if (looking-at "[^ ]+") (lookup-get-dictionary (match-string 0)))))
+
+(defun lookup-select-set-selected (value &optional dont-move)
+  (let ((dict (lookup-select-point-dictionary)))
+    (when dict
+      (lookup-dictionary-set-selected dict value)
+      (lookup-select-mark (if value ?* ? ) (not dont-move)))))
+
+(defun lookup-select-mark (mark &optional down-after)
+  (save-excursion
+    (let ((inhibit-read-only t))
+      (beginning-of-line)
+      (delete-char 1)
+      (insert-char mark 1)))
+  (if down-after (forward-line)))
+
+(provide 'lookup-select)
+
+;;; lookup-select.el ends here
+;;; ndsrd.el --- search agent for $B>.3X4[!X%i%s%@%`%O%&%91Q8l<-E5!Y(B
+;; Copyright (C) 1999 Lookup Development Team <lookup@ring.gr.jp>
+
+;; Author: Keisuke Nishida <kei@psn.net>
+;; Version: $Id$
+
+;; This file is part of Lookup.
+
+;; Lookup is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2 of the License, or
+;; (at your option) any later version.
+
+;; Lookup 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 Lookup; if not, write to the Free Software Foundation,
+;; Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+;;; Commentary:
+
+;; $BMxMQ$9$k$K$O!"(B~/.emacs $B$G<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+;; 
+;; (setq lookup-search-agents
+;;       '((ndsrd "/usr/local/dict/srd"
+;;                :fmt "/usr/local/dict/srd/csrd.fmt"
+;;                :gai "/usr/local/dict/srd/csrd.gai")))
+
+;;; Code:
+
+(require 'lookup)
+
+(defconst ndsrd-version "0.3")
+
+;;;
+;:: Customizable variables
+;;;
+
+(defgroup ndsrd nil
+  "Lookup csrd interface."
+  :group 'lookup-agents)
+
+(defcustom ndsrd-program-name "csrd"
+  "*csrd $B$N%3%^%s%IL>!#(B"
+  :type 'string
+  :group 'ndsrd)
+
+(defcustom ndsrd-process-coding-system lookup-process-coding-system
+  "*Coding system for csrd process."
+  :type 'symbol
+  :group 'ndsrd)
+
+
+;;;
+;:: types
+;;;
+
+(put 'ndsrd ':methods '(exact prefix suffix substring))
+
+(put 'ndsrd ':arranges
+     '(lookup-arrange-default-headings
+       lookup-arrange-fill-lines))
+
+(put 'ndsrd ':adjusts
+     '(lookup-adjust-goto-min))
+
+
+;;;
+;:: Interface functions
+;;;
+
+(put 'ndsrd 'setup 'ndsrd-setup)
+(defun ndsrd-setup (agent)
+  (let* ((directory (lookup-agent-location agent))
+	 (format (lookup-agent-option agent ':fmt))
+	 (gaiji (lookup-agent-option agent ':gai))
+	 opts dictionary)
+    (if gaiji (setq opts (cons (concat "-g" gaiji) opts)))
+    (if format (setq opts (cons (concat "-f" format) opts)))
+    (setq opts (cons (concat "-d" directory) opts))
+    (list (lookup-new-dictionary agent opts "srd" "$B%i%s%@%`%O%&%91Q8l(B"))))
+
+(put 'ndsrd 'clear 'ndsrd-clear)
+(defun ndsrd-clear (agent) nil)
+
+(put 'ndsrd 'search 'ndsrd-dictionary-search)
+(defun ndsrd-dictionary-search (dictionary query)
+  (with-temp-buffer
+    (lookup-with-coding-system ndsrd-process-coding-system
+      (apply 'call-process ndsrd-program-name nil t nil
+	     (append (lookup-dictionary-code dictionary)
+		     (list lookup-search-pattern))))
+    (goto-char (point-min))
+    (let (start content heading entries)
+      (while (re-search-forward "^$B""(B \\([^ \n]*\\)" nil 0)
+	(when start
+	  (setq content (buffer-substring start (match-beginning 0)))
+	  (setq entries (cons (lookup-make-entry dictionary content heading)
+			      entries)))
+	(setq start (match-beginning 0) heading (match-string 1)))
+      (when start
+	(setq content (buffer-substring start (point)))
+	(setq entries (cons (lookup-make-entry dictionary content heading)
+			    entries)))
+      (nreverse entries))))
+
+(put 'ndsrd 'content 'ndsrd-dictionary-content)
+(defun ndsrd-dictionary-content (dictionary entry)
+  (lookup-entry-code entry))
+
+(provide 'ndsrd)
+
+;;; ndsrd.el ends here
+;;; sdicf.el --- Search library for SDIC format dictionary
+;;; $Id$
+
+;; Copyright (C) 1999 TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp>
+
+;; Author: TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp>
+;;	   NISHIDA Keisuke <knishida@ring.aist.go.jp>
+;; Created: 1 Feb 1999
+;; Version: 0.9
+;; Keywords: dictionary
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 2
+;; of the License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+;;; Commentary:
+
+;; $B$3$l$O!"(BSDIC$B7A<0<-=q$r8!:w$9$k$?$a$N%i%$%V%i%j$G$9!#<!$N4X?t$+$i@.(B
+;; $B$j$^$9!#(B
+
+;;     sdicf-open           - SDIC $B<-=q$N%*!<%W%s(B
+;;     sdicf-close          - SDIC $B<-=q$N%/%m!<%:(B
+;;     sdicf-search         - SDIC $B<-=q$+$i8!:w(B
+;;     sdicf-entry-headword - $B%(%s%H%j$N8+=P$78l$rF@$k(B
+;;     sdicf-entry-keywords - $B%(%s%H%j$N8!:w%-!<$N%j%9%H$rF@$k(B
+;;     sdicf-entry-text     - $B%(%s%H%j$NK\J8$rF@$k(B
+
+;; $B$=$l$>$l$N4X?t$N>\:Y$O!"4X?t$N@bL@J8;zNs$K5-=R$5$l$F$$$^$9!#(B
+
+
+;;; Note:
+ 
+;; * GNU Emacs 19.30 $B0J9_$G$"$l$P!"(B`auto-compression-mode' $B$rM-8z$K$9$k(B
+;;   $B$3$H$G!"(B`direct' $BJ}<0$G05=L$7$?<-=q$rMQ$$$k$3$H$,=PMh$k!#E83+$O<+(B
+;;   $BF0$G9T$J$o$l$k$?$a!"FCJL$J@_Dj$OI,MW$"$j$^$;$s!#(B
+;; 
+;; * $BB.EY=E;k$N$?$a(B `save-match-data' $B$K$h$k0lCW%G!<%?$NB`Hr$H2sI|$O0l(B
+;;   $B@Z$7$F$$$^$;$s!#(B
+
+
+
+;;;------------------------------------------------------------
+;;;		Customizable variables
+;;;------------------------------------------------------------
+
+(defun sdicf-find-program (&rest programs)
+  (if programs
+      (catch 'which
+	(mapcar (lambda (file)
+		  (mapcar (lambda (path)
+			    (if (file-executable-p (expand-file-name file path))
+				(throw 'which (expand-file-name file path))))
+			  exec-path))
+		programs))))
+
+(defvar sdicf-egrep-command (sdicf-find-program "egrep" "egrep.exe" "grep" "grep.exe")
+  "*Executable file name of egrep")
+
+(defvar sdicf-fgrep-command (sdicf-find-program "fgrep" "fgrep.exe" "grep" "grep.exe")
+  "*Executable file name of fgrep")
+
+(defvar sdicf-array-command (sdicf-find-program "array" "array.exe")
+  "*Executable file name of array")
+
+(defvar sdicf-default-coding-system
+  (if (>= emacs-major-version 20)
+      (if (featurep 'mule)
+	  (if (string-match "XEmacs" emacs-version)
+	      (cond
+	       ((memq 'euc-japan-unix (coding-system-list)) 'euc-japan-unix)
+	       ((memq 'euc-jp-unix (coding-system-list)) 'euc-jp-unix))
+	    'euc-japan-unix))
+    (and (boundp 'MULE) *euc-japan*unix))
+  "*Default coding system for sdicf.el")
+
+;; Error Symbols
+(put 'sdicf-missing-file 'error-conditions '(error sdicf-errors sdicf-missing-file))
+(put 'sdicf-missing-file 'error-message "Can't find file")
+(put 'sdicf-missing-executable 'error-conditions '(error sdicf-errors sdicf-missing-executable))
+(put 'sdicf-missing-executable 'error-message "Can't find executable")
+(put 'sdicf-invalid-strategy 'error-conditions '(error sdicf-errors sdicf-invalid-strategy))
+(put 'sdicf-invalid-strategy 'error-message "Invalid search strategy")
+(put 'sdicf-decide-strategy 'error-conditions '(error sdicf-errors sdicf-decide-strategy))
+(put 'sdicf-decide-strategy 'error-message "Can't decide strategy automatically")
+(put 'sdicf-invalid-method 'error-conditions '(error sdicf-errors sdicf-invalid-method))
+(put 'sdicf-invalid-method 'error-message "Invalid search method")
+
+
+
+;;;------------------------------------------------------------
+;;;		Internal variables
+;;;------------------------------------------------------------
+
+(defconst sdicf-version "0.9" "Version number of sdicf.el")
+
+(defconst sdicf-strategy-alist
+  '((array sdicf-array-available sdicf-array-init sdicf-array-quit sdicf-array-search)
+    (grep sdicf-grep-available sdicf-grep-init sdicf-grep-quit sdicf-grep-search)
+    (direct sdicf-direct-available sdicf-direct-init sdicf-direct-quit sdicf-direct-search))
+  "$BMxMQ$G$-$k(B strategy $B$NO"A[G[Ns(B
+$BG[Ns$N3FMWAG$O!"(B
+    strategy $B$N%7%s%\%k(B
+    strategy $B$NMxMQ2DG=@-$r8!::$9$k4X?t(B
+    strategy $B$r=i4|2=$9$k4X?t(B
+    strategy $B$r=*N;$9$k4X?t(B
+    strategy $B$r;H$C$F8!:w$9$k4X?t(B
+$B$N(B4$B$D$NMWAG$+$i$J$k%j%9%H$H$J$C$F$$$k!#(Bstrategy $B$N<+F0H=Dj$r9T$&$H$-$O!"(B
+$B$3$NO"A[G[Ns$K@h$KEPO?$5$l$F$$$k(B strategy $B$,;H$o$l$k!#(B")
+
+
+
+;;;------------------------------------------------------------
+;;;		Internal functions
+;;;------------------------------------------------------------
+
+(defsubst sdicf-object-p (sdic)
+  "$B<-=q%*%V%8%'%/%H$+$I$&$+8!::$9$k(B"
+  (and (vectorp sdic) (eq 'SDIC (aref sdic 0))))
+
+(defsubst sdicf-entry-p (entry)
+  (and (stringp entry) (string-match "^<.>\\([^<]+\\)</.>" entry)))
+
+(defsubst sdicf-get-filename (sdic)
+  "$B<-=q%*%V%8%'%/%H$+$i%U%!%$%kL>$rF@$k(B"
+  (aref sdic 1))
+
+(defsubst sdicf-get-coding-system (sdic)
+  "$B<-=q%*%V%8%'%/%H$+$i(B coding-system $B$rF@$k(B"
+  (aref sdic 2))
+
+(defsubst sdicf-get-strategy (sdic)
+  "$B<-=q%*%V%8%'%/%H$+$i(B strategy $B$rF@$k(B"
+  (aref sdic 3))
+
+(defsubst sdicf-get-buffer (sdic)
+  "$B<-=q%*%V%8%'%/%H$+$i8!:wMQ%P%C%U%!$rF@$k(B"
+  (aref sdic 4))
+
+(defun sdicf-common-init (sdic) "\
+$B6&DL$N<-=q=i4|2=4X?t(B
+$B:n6HMQ%P%C%U%!$,B8:_$9$k$3$H$r3NG'$7!"$J$1$l$P?7$7$/@8@.$9$k!#:n6HMQ%P%C(B
+$B%U%!$rJV$9!#(B"
+  (or (and (buffer-live-p (sdicf-get-buffer sdic))
+	   (sdicf-get-buffer sdic))
+      (aset sdic 4 (generate-new-buffer (format " *sdic %s*" (sdicf-get-filename sdic))))))
+
+(defun sdicf-common-quit (sdic) "\
+$B6&DL$N<-=q=*N;4X?t(B"
+  (if (buffer-live-p (sdicf-get-buffer sdic)) (kill-buffer (sdicf-get-buffer sdic))))
+
+(defsubst sdicf-search-internal () "\
+$B8=:_9T$r%A%'%C%/$7!"%(%s%H%j$J$i$P8=:_9T$NFbMF$r(B entries $B$K2C$($k!#(B
+$B%]%$%s%H$r9T$N@hF,$K0\F0$7$F$*$+$J$1$l$P$J$i$J$$!#4X?t$N<B9T8e!"%]%$%s(B
+$B%H$O<!$N9TF,$K0\F0$9$k!#(B"
+  (if (eq (following-char) ?<)
+      (progn
+	(setq entries (cons (buffer-substring (point) (progn (end-of-line) (point))) entries))
+	(forward-char))
+    (forward-line)))
+
+(defun sdicf-encode-string (string) "\
+STRING $B$r%(%s%3!<%I$9$k(B
+$B%(%s%3!<%I$7$?J8;zNs$rJV$9(B"
+  (let ((start 0) ch list)
+    (while (string-match "[&<>\n]" string start)
+      (setq ch (aref string (match-beginning 0))
+	    list (cons (if (eq ch ?&) "&amp;"
+			 (if (eq ch ?<) "&lt;"
+			   (if (eq ch ?>) "&gt;" "&lf;")))
+		       (cons (substring string start (match-beginning 0)) list))
+	    start (match-end 0)))
+    (eval (cons 'concat (nreverse (cons (substring string start) list))))))
+
+(defun sdicf-decode-string (string) "\
+STRING $B$r%G%3!<%I$9$k(B
+$B%G%3!<%I$7$?J8;zNs$rJV$9(B"
+  (let ((start 0) list)
+    (while (string-match "&\\(\\(lt\\)\\|\\(gt\\)\\|\\(lf\\)\\|\\(amp\\)\\);" string start)
+      (setq list (cons (if (match-beginning 2) "<"
+			 (if (match-beginning 3) ">"
+			   (if (match-beginning 4) "\n" "&")))
+		       (cons (substring string start (match-beginning 0)) list))
+	    start (match-end 0)))
+    (eval (cons 'concat (nreverse (cons (substring string start) list))))))
+
+(defun sdicf-insert-file-contents (filename coding-system &optional visit beg end replace) "\
+CODING-SYSTEM $B$rL@<(E*$K;XDj$7$F(B insert-file-contents $B$r8F$S=P$9(B
+CODING-SYSTEM $B0J30$N0z?t$N0UL#$O(B insert-file-contents $B$HF1$8(B"
+  (let ((coding-system-for-read coding-system)
+	(file-coding-system-for-read coding-system))
+    (insert-file-contents filename visit beg end replace)))
+
+(defun sdicf-call-process (program coding-system &optional infile buffer display &rest args) "\
+CODING-SYSTEM $B$rL@<(E*$K;XDj$7$F(B call-process $B$r8F$S=P$9(B
+CODING-SYSTEM $B0J30$N0z?t$N0UL#$O(B call-process $B$HF1$8(B"
+  (let ((coding-system-for-read coding-system)
+	(coding-system-for-write coding-system)
+	(process-input-coding-system coding-system)
+	(process-output-coding-system coding-system)
+	(default-process-coding-system (cons coding-system coding-system)))
+    (apply 'call-process program infile buffer display args)))
+
+(defun sdicf-start-process (name buffer program coding-system &rest args) "\
+start-process $B$r<B9T$7$?8e!"@8@.$5$l$?%W%m%;%9$K(B CODING-SYSTEM $B$r@_Dj$9$k(B
+CODING-SYSTEM $B0J30$N0z?t$N0UL#$O(B start-process $B$HF1$8(B"  
+  (let ((proc (apply 'start-process name buffer program args)))
+    (if (fboundp 'set-process-coding-system)
+	(set-process-coding-system proc coding-system coding-system)
+      (set-process-input-coding-system proc coding-system)
+      (set-process-output-coding-system proc coding-system))
+    proc))
+
+
+
+;;; Strategy `direct'
+
+(defun sdicf-direct-available (sdic)
+  (or (file-readable-p (sdicf-get-filename sdic))
+      (signal 'sdicf-missing-file (list (sdicf-get-filename sdic)))))
+
+(defun sdicf-direct-init (sdic)
+  (or (buffer-live-p (sdicf-get-buffer sdic))
+      (save-excursion
+	(sdicf-common-init sdic)
+	(set-buffer (sdicf-get-buffer sdic))
+	(delete-region (point-min) (point-max))
+	(sdicf-insert-file-contents (sdicf-get-filename sdic) (sdicf-get-coding-system sdic))
+	(while (re-search-forward "^#" nil t)
+	  (delete-region (1- (point)) (progn (end-of-line) (min (1+ (point)) (point-max)))))
+	(setq buffer-read-only t)
+	(set-buffer-modified-p nil)
+	t)))
+
+(defalias 'sdicf-direct-quit 'sdicf-common-quit)
+
+(defun sdicf-direct-search (sdic pattern &optional case regexp) "\
+$B8!:wBP>]$N%U%!%$%k$r%P%C%U%!$KFI$_9~$s$G8!:w$r9T$&(B
+
+$B8+$D$+$C$?%(%s%H%j$N%j%9%H$rJV$9!#(BCASE $B$,(B nil $B$J$i$P!"BgJ8;z>.J8;z$N0c(B
+$B$$$r6hJL$7$F8!:w$9$k!#(BREGEXP $B$,(B Non-nil $B$J$i$P!"(BPATTERN $B$r@55,I=8=$H8+(B
+$B$J$7$F8!:w$9$k!#(B"
+  (sdicf-direct-init sdic)
+  (save-excursion
+    (set-buffer (sdicf-get-buffer sdic))
+    (let ((case-fold-search case) entries)
+      (goto-char (point-min))
+      (if regexp
+	  (while (re-search-forward pattern nil t)
+	    (forward-line 0)
+	    (sdicf-search-internal))
+	(while (search-forward pattern nil t)
+	  (forward-line 0)
+	  (sdicf-search-internal)))
+      (nreverse entries))))
+
+
+
+;;; Strategy `grep'
+
+(defun sdicf-grep-available (sdic)
+  (and (or (file-readable-p (sdicf-get-filename sdic))
+	   (signal 'sdicf-missing-file (list (sdicf-get-filename sdic))))
+       (or (and (stringp sdicf-fgrep-command)
+		(file-executable-p sdicf-fgrep-command))
+	   (signal 'sdicf-missing-executable '(fgrep grep)))
+       (or (and (stringp sdicf-egrep-command)
+		(file-executable-p sdicf-egrep-command))
+	   (signal 'sdicf-missing-executable '(egrep grep)))))
+
+(defalias 'sdicf-grep-init 'sdicf-common-init)
+
+(defalias 'sdicf-grep-quit 'sdicf-common-quit)
+
+(defun sdicf-grep-search (sdic pattern &optional case regexp) "\
+fgrep / egrep $B$^$?$O(B grep $B$r;H$C$F8!:w$r9T$&(B
+
+$B8+$D$+$C$?%(%s%H%j$N%j%9%H$rJV$9!#(BCASE $B$,(B nil $B$J$i$P!"BgJ8;z>.J8;z$N0c(B
+$B$$$r6hJL$7$F8!:w$9$k!#(BREGEXP $B$,(B nil $B$J$i$P(B sdicf-fgrep-command $B$G;XDj(B
+$B$5$l$?%3%^%s%I$r;H$C$F8!:w$9$k!#(BREGEXP $B$,(B Non-nil $B$J$i$P(B 
+sdicf-egrep-command $B$G;XDj$5$l$?%3%^%s%I$r;H$&!#(B"
+  (sdicf-grep-init sdic)
+  (save-excursion
+    (set-buffer (sdicf-get-buffer sdic))
+    (delete-region (point-min) (point-max))
+    (apply 'sdicf-call-process
+	   (if regexp sdicf-egrep-command sdicf-fgrep-command)
+	   (sdicf-get-coding-system sdic)
+	   nil t nil
+	   (if regexp (if case (list "-i" "-e" pattern (sdicf-get-filename sdic))
+			(list "-e" pattern (sdicf-get-filename sdic)))
+	     (if case (list "-i" pattern (sdicf-get-filename sdic))
+	       (list "-e" pattern (sdicf-get-filename sdic)))))
+    (goto-char (point-min))
+    (let (entries)
+      (while (not (eobp)) (sdicf-search-internal))
+      (nreverse entries))))
+
+
+
+;;; Strategy `array'
+
+(defun sdicf-array-available (sdic)
+  (and (or (file-readable-p (sdicf-get-filename sdic))
+	   (signal 'sdicf-missing-file (list (sdicf-get-filename sdic))))
+       (or (file-readable-p (concat (sdicf-get-filename sdic) ".ary"))
+	   (signal 'sdicf-missing-file (list (concat (sdicf-get-filename sdic) ".ary"))))
+       (or (and (stringp sdicf-array-command)
+		(file-executable-p sdicf-array-command))
+	   (signal 'sdicf-missing-executable '(array)))))
+
+(defun sdicf-array-init (sdic)
+  (sdicf-common-init sdic)
+  (let ((proc (get-buffer-process (sdicf-get-buffer sdic))))
+    (or (and proc (eq (process-status proc) 'run))
+	(progn
+	  (setq proc (sdicf-start-process "array"
+					  (sdicf-get-buffer sdic)
+					  sdicf-array-command
+					  (sdicf-get-coding-system sdic)
+					  (sdicf-get-filename sdic)))
+	  (accept-process-output proc)
+	  (process-send-string proc "style line\n")
+	  (accept-process-output proc)
+	  (process-send-string proc "order index\n")
+	  (accept-process-output proc)
+	  (process-kill-without-query proc)
+	  (set-process-filter proc 'sdicf-array-wait-prompt)
+	  t))))
+
+(defun sdicf-array-quit (sdic)
+  (if (buffer-live-p (sdicf-get-buffer sdic))
+      (let ((proc (get-buffer-process (sdicf-get-buffer sdic))))
+	(and proc
+	     (eq (process-status proc) 'run)
+	     (set-process-filter proc nil)
+	     (process-send-string proc "quit\n"))
+	(kill-buffer (sdicf-get-buffer sdic)))))
+
+(defun sdicf-array-send-string (proc string) "\
+$B;XDj$5$l$?J8;zNs(B STRING $B$r%3%^%s%I$H$7$F(B PROC $B$KEO$7$F%W%m%s%W%H$,8=$l$k$^$GBT$D4X?t(B"
+  (save-excursion
+    (let ((sdicf-array-wait-prompt-flag t))
+      (set-buffer (process-buffer proc))
+      (set-marker (process-mark proc) (point-max))
+      (process-send-string proc (concat string "\n"))
+      (while sdicf-array-wait-prompt-flag (accept-process-output proc)))))
+
+(defun sdicf-array-wait-prompt (proc string) "\
+$B%W%m%s%W%H(B ok $B$,8=$l$?$3$H$r8!CN$7$F!"(Bsdicf-array-wait-prompt-flag $B$r(B nil $B$K$9$k%U%#%k%?4X?t(B"
+  (save-excursion
+    (save-match-data ; Emacs-19.34 $B0J9_$O<+F0E*$K8!:w7k2L$NBTHr(B/$B2sI|$,9T$o$l$k$N$GITMW(B
+      (set-buffer (process-buffer proc))
+      (goto-char (process-mark proc))
+      (insert string)
+      (set-marker (process-mark proc) (point))
+      (skip-chars-backward " \t\n")
+      (forward-line 0)
+      (if (looking-at "ok\n")
+	  (setq sdicf-array-wait-prompt-flag nil))
+      )))
+
+(defun sdicf-array-search (sdic pattern &optional case regexp) "\
+array $B$r;H$C$F8!:w$r9T$&(B
+
+$B8+$D$+$C$?%(%s%H%j$N%j%9%H$rJV$9!#(Barray $B$O@55,I=8=8!:w$*$h$SBgJ8;z>.J8(B
+$B;z$N0c$$$r6hJL$7$J$$8!:w$O=PMh$J$$!#=>$C$F!"(BCASE $B$,(B Non-nil $B$N>l9g$O!"(B
+$BBgJ8;z>.J8;z$r6hJL$7$F8!:w$7$?>l9g$N7k2L$rJV$9!#(BREGEXP $B$,(B Non-nil $B$N>l(B
+$B9g$O6u$j%9%H$rJV$9!#(B"
+  (sdicf-array-init sdic)
+  (if regexp
+      (signal 'sdicf-invalid-method '(regexp))
+    (save-excursion
+      (let ((proc (get-buffer-process (set-buffer (sdicf-get-buffer sdic))))
+	    (case-fold-search nil))
+	(sdicf-array-send-string proc "init")
+	(delete-region (point-min) (point-max))
+	(sdicf-array-send-string proc (concat "search " pattern))
+	(if (looking-at "FOUND:")
+	    (progn
+	      (delete-region (point-min) (point-max))
+	      (sdicf-array-send-string proc "show")
+	      (let (entries cons)
+		(while (not (eobp)) (sdicf-search-internal))
+		(setq entries (sort entries 'string<)
+		      cons entries)
+		(while (cdr cons)
+		  (if (equal (car cons) (car (cdr cons)))
+		      (setcdr cons (cdr (cdr cons)))
+		    (setq cons (cdr cons))))
+		entries)))))))
+
+
+;;;------------------------------------------------------------
+;;;		Interface functions
+;;;------------------------------------------------------------
+
+(defun sdicf-open (filename &optional coding-system strategy) "\
+SDIC$B7A<0$N<-=q$r%*!<%W%s$9$k(B
+
+FILENAME $B$O<-=q$N%U%!%$%kL>!#(BSTRATEGY $B$O8!:w$r9T$J$&J}<0$r;XDj$9$k0z?t(B
+$B$G!"<!$N$$$:$l$+$NCM$r<h$k!#(B
+
+    `direct' - $B<-=q$r%P%C%U%!$KFI$s$GD>@\8!:w!#(B
+    `grep'   - grep $B%3%^%s%I$rMQ$$$F8!:w!#(B
+    `array'  - SUFARY $B$rMQ$$$?9bB.8!:w!#(B
+
+STRATEGY $B$,>JN,$5$l$?>l9g$O(B sdicf-strategy-alist $B$NCM$r;H$C$F<+F0E*$K(B
+$BH=Dj$9$k!#(BCODING-SYSTEM $B$,>JN,$5$l$?>l9g$O!"(Bsdicf-default-coding-system
+$B$NCM$r;H$&!#(B
+
+SDIC $B<-=q%*%V%8%'%/%H$O(B CAR $B$,(B `SDIC' $B$N%Y%/%?$G$"$k!#0J2<$N(B4$B$D$NMWAG(B
+$B$r;}$D!#(B
+    $B!&%U%!%$%kL>(B
+    $B!&<-=q$N(B coding-system
+    $B!&(Bstrategy
+    $B!&:n6HMQ%P%C%U%!(B
+"
+  (let ((sdic (vector 'SDIC filename (or coding-system sdicf-default-coding-system) nil nil)))
+    (aset sdic 3 (if strategy
+		     (if (assq strategy sdicf-strategy-alist)
+			 (if (funcall (nth 1 (assq strategy sdicf-strategy-alist)) sdic)
+			     strategy)
+		       (signal 'sdicf-invalid-strategy (list strategy)))
+		   (catch 'found-strategy
+		     (mapcar (lambda (e)
+			       (if (condition-case nil
+				       (funcall (nth 1 e) sdic)
+				     (sdicf-errors nil))
+				   (throw 'found-strategy (car e))))
+			     sdicf-strategy-alist)
+		     (signal 'sdicf-decide-strategy nil))))
+    sdic))
+
+(defun sdicf-close (sdic)
+  "SDIC$B7A<0$N<-=q$r%/%m!<%:$9$k(B"
+  (or (sdicf-object-p sdic)
+      (signal 'wrong-type-argument (list 'sdicf-object-p sdic)))
+  (funcall (nth 3 (assq (sdicf-get-strategy sdic) sdicf-strategy-alist)) sdic))
+
+(defun sdicf-search (sdic method word) "\
+SDIC$B7A<0$N<-=q$+$i(B WORD $B$r%-!<$H$7$F8!:w$r9T$&(B
+
+$B8+IU$+$C$?%(%s%H%j$N%j%9%H$rJV$9!#(BMETHOD $B$O8!:wK!$G!"<!$N$$$:$l$+$NCM(B
+$B$r<h$k!#(B
+
+    `prefix' - $BA0J}0lCW8!:w(B
+    `suffix' - $B8eJ}0lCW8!:w(B
+    `exact'  - $B40A40lCW8!:w(B
+    `text'   - $BA4J88!:w(B
+    `regexp' - $B@55,I=8=8!:w(B
+
+$BA0J}0lCW8!:w!"8eJ}0lCW8!:w!"40A40lCW8!:w$N>l9g$OBgJ8;z(B/$B>.J8;z$r6hJL$7(B
+$B$F8!:w$r9T$&!#A4J88!:w$*$h$S@55,I=8=8!:w$N>l9g$O!"(Bcase-fold-search $B$N(B
+$BCM$K$h$C$FJQ2=$9$k!#$?$@$7!"(Bstrategy $B$K$h$C$F$O!";XDj$5$l$?8!:wJ}<0$K(B
+$BBP1~$7$F$$$J$$>l9g$,$"$k$N$G!"Cm0U$9$k$3$H!#BP1~$7$F$$$J$$>l9g$NJV$jCM(B
+$B$O!"(Bstrategy $B$K$h$k!#(B"
+  (or (sdicf-object-p sdic)
+      (signal 'wrong-type-argument (list 'sdicf-object-p sdic)))
+  (or (stringp word)
+      (signal 'wrong-type-argument (list 'stringp word)))
+  (let ((case-fold-search (if (eq method 'text) case-fold-search)))
+    (funcall (nth 4 (assq (sdicf-get-strategy sdic) sdicf-strategy-alist))
+	     sdic
+	     (cond
+	      ((eq method 'prefix) (concat "<K>" (sdicf-encode-string (downcase word))))
+	      ((eq method 'suffix) (concat (sdicf-encode-string (downcase word)) "</K>"))
+	      ((eq method 'exact) (concat "<K>" (sdicf-encode-string (downcase word)) "</K>"))
+	      ((eq method 'text) word)
+	      ((eq method 'regexp) word)
+	      (t (signal 'sdicf-invalid-method (list method))))
+	     (and (or (eq method 'text) (eq method 'regexp)) case-fold-search)
+	     (eq method 'regexp))))
+
+(defun sdicf-entry-headword (entry)
+  "$B%(%s%H%j(B ENTRY $B$N8+=P$78l$rJV$9!#(B"
+  (or (sdicf-entry-p entry)
+      (signal 'wrong-type-argument (list 'sdicf-entry-p entry)))
+  (sdicf-decode-string (substring entry (match-beginning 1) (match-end 1))))
+
+(defun sdicf-entry-keywords (entry &optional add-headword) "\
+$B%(%s%H%j(B ENTRY $B$N8!:w%-!<$N%j%9%H$rJV$9(B
+ADD-HEADWORD $B$,(B Non-nil $B$N>l9g$O8!:w%-!<$K8+=P$78l$r2C$($?%j%9%H$rJV$9(B"
+  (or (sdicf-entry-p entry)
+      (signal 'wrong-type-argument (list 'sdicf-entry-p entry)))
+  (let ((start (match-end 0))
+	(keywords (if (or add-headword (string-match "^<K>" entry))
+		      (list (sdicf-decode-string (substring entry (match-beginning 1) (match-end 1)))))))
+    (while (eq start (string-match "<.>\\([^<]+\\)</.>" entry start))
+      (setq start (match-end 0)
+	    keywords (cons (sdicf-decode-string (substring entry (match-beginning 1) (match-end 1))) keywords)))
+    (nreverse keywords)))
+
+(defun sdicf-entry-text (entry)
+  "$B%(%s%H%j(B ENTRY $B$NK\J8$rJV$9!#(B"
+  (or (stringp entry)
+      (signal 'wrong-type-argument (list 'stringp entry)))
+  (sdicf-decode-string (substring entry (string-match "[^>]*$" entry))))
+
+
+(provide 'sdicf)
+
+;;; sdicf.el ends here

texi/lookup-guide.texi

+\input texinfo  @c -*-texinfo-*-
+@c %**start of header
+@setfilename lookup-guide.info
+@settitle Lookup User's Guide
+@footnotestyle end
+@setchapternewpage on
+@c %**end of header
+
+@set UPDATED 1999-07-02
+@set EDITION 1.0
+@set VERSION 1.0
+
+@ifinfo
+@dircategory The Emacs editor and associated tools
+@direntry
+* Lookup Guide: (lookup-guide). The Lookup User's Guide.
+@end direntry
+
+This file documents Lookup, a search interface.
+
+Copyright @copyright{} 1999 NISHIDA Keisuke
+
+Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries a copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation
+approved by the Free Software Foundation.
+@end ifinfo
+
+@titlepage
+@title Lookup User's Guide
+@subtitle for Lookup @value{VERSION}
+@author NISHIDA Keisuke
+
+@page
+@vskip 0pt plus 1filll
+Edition @value{EDITION} @*
+Updated for Lookup @value{VERSION} @*
+@value{UPDATED} @*
+
+Copyright @copyright{} 1999 NISHIDA Keisuke
+
+Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation
+approved by the Free Software Foundation.
+@end titlepage
+
+@contents
+
+@c #####################################################################
+@node Top, Preface, (dir), (dir)
+@ifinfo
+@top Lookup User's Guide
+
+$B$3$l$O(B Lookup $B$rMxMQ$9$k$?$a$N:G=i$N%9%F%C%W$K$D$$$F$^$H$a$?<j0z$-=q$G$9!#(B
+$B=i?4<T$K$H$C$F=EMW$J>pJs$r%3%s%Q%/%H$K$^$H$a$F$"$k$N$G!"$^$:$O$3$3$G35MW(B
+$B$rGD0.$7!"=i4|@_Dj$r@0$($F2<$5$$!#(B
+@end ifinfo
+
+@menu
+* Preface::                     $B$O$8$a$K(B
+
+* What is Lookup::              Lookup $B$C$F2?(B?
+* Fundamental Knowledge::       $B:GDc8B$N4pACCN<1(B
+
+* Preparation::                 $B=`HwJT(B
+
+* Free Dictionary::             $B%U%j!<<-=q$rMxMQ$9$k(B
+* CD-ROM Dictionary::           CD-ROM $B<-=q$rMxMQ$9$k(B
+* Network Dictionary::          $B%M%C%H%o!<%/<-=q$rMxMQ$9$k(B
+* Miscellaneous Dictionary::    $B$=$NB>$NFC<l$J8!:w%7%9%F%`(B
+
+* Utilization::                 $B3hMQJT(B
+
+* Setup Example::               $B4pK\E*$J@_DjNc(B
+* Run Lookup::                  $B5/F0$9$k$K$O(B
+* Search Pattern::              $B8!:w$7$F$_$h$&(B
+* See Result::                  $B7k2L$r8+$F$$$/(B
+
+* Information::                 $B>pJsJT(B
+
+* Lookup Homepage::             $B%[!<%`%Z!<%8$N9=@.(B
+* Source of Information::       $BCN$C$F$*$/$H4r$7$$>pJs8;(B
+* Attention for Emacsen::       $B3F<o(B Emacs $BKh$NCm0UE@(B
+@end menu
+
+@c *********************************************************************
+@node Preface, Preparation, Top, Top
+@unnumbered $B$O$8$a$K(B
+
+@menu
+* What is Lookup::              Lookup $B$C$F2?(B?
+* Fundamental Knowledge::       $B:GDc8B$N4pACCN<1(B
+@end menu
+
+@c =====================================================================
+@node What is Lookup, Fundamental Knowledge, Preface, Preface
+@unnumberedsec Lookup $B$C$F2?(B?
+
+$B!VEE;R<-=q$r$b$C$H?H6a$K;H$$$d$9$/(B!$B!W$=$l$,(B Lookup $B$N4pK\$H$J$kM}G0$G$9!#(B
+$B$A$g$C$HJ,$+$i$J$$MQ8l$,$"$l$P!"$5$C$H%-!<$rC!$1$PD4$Y$i$l$k!#$=$&$7$?(B
+$B2wE,$5$rDI5Z$9$k$?$a!"%=%U%H%&%'%"3+H/$H<-=q>pJs$N@0Hw$K<h$jAH$s$G$$$^$9!#(B
+
+
+
+@enumerate
+@item
+$B$I$s$J<-=q$G$bF1$8$h$&$K8!:w$7$?$$(B!
+
+$B$I$l$bF1$8$3$H$r$9$k$@$1$J$N$K!"<-=qKh$K8!:w%=%U%H$rJQ$($k$J$s$F$?$^$C$?(B
+$B$b$s$8$c$"$j$^$;$s!#;H$$47$l$?0l$D$N%=%U%H$G!"$"$i$f$k<-=q$r8!:w$7$?$$!#(B
+$B$=$l$OEvA3!"K~$?$5$l$k$Y$-MW5a$G$9!#(BLookup $B$O$"$i$f$k<oN`$N<-=q$KBP1~(B
+$B$7$h$&$H$7$^$9!#$=$l$,2DG=$G$"$j!"5a$a$i$l!"$=$7$F5v$5$l$k8B$j!#(B
+
+@item
+$BAGAa$/<j7Z$K8!:w$7$?$$(B!
+
+$B!V$3$l$C$F$I$&$$$&0UL#$@$m$&(B?$B!W$=$&;W$C$?$H$-$K!"$A$g$$$H;X$rF0$+$;$P!"(B
+$BB(:B$K8!:w=PMh$k$N$,%Y%9%H$G$9!#$I$s$J$K9bEY$J%G!<%?%Y!<%9$G$b!"F~NO$K(B
+$B<j4V<h$C$F$7$^$&$N$G$OHs8zN(!#(BLookup $B$OM>7W$JF~NO$rMW5a$7$^$;$s!#(B
+
+$BBe$o$j$KI,MW$J$N$,!"<+J,$G<-=q$r@0M}$9$k$3$H!#4X?4$"$kJ,Ln$N>pJs$@$1$r(B
+$B<j85$KCV$$$F!"$=$3$+$i0l5$$K8!:w$7$^$9!#8!:w$NEY$K<-=q$rA*$VI,MW$b$"$j(B
+$B$^$;$s!#A4It8+IU$1$F$=$l$+$iA*$VJ}$,3Z$G$9$h$M(B?
+
+@item
+$B7k2L$O8+$d$9$/I=<($7$?$$(B!
+
+
+@end enumerate
+
+
+
+@c =====================================================================
+@node Fundamental Knowledge,  , What is Lookup, Preface
+@unnumberedsec $B:GDc8B$N4pACCN<1(B
+
+Lookup $B$N%$%s%9%H!<%k$dI,MW:G>.8B$N@_Dj$K$D$$$F$O!"(BLookup $BG[I[J*$KImB0$N(B
+$B%U%!%$%k(B @file{README} $B$r;2>H$7$F2<$5$$!#$3$3$G$O35G0E*$J;vJA$K$D$$$F(B
+$B@bL@$7$^$9!#(B
+
+Lookup $B$G$OB?$/$N<oN`$N<-=q$r0lEY$K07$&$3$H$,=PMh$^$9$,!"$=$N$?$a(B
+$B<-=q$H$NO"MmLr(B
+
+Lookup $B$OMM!9$J<oN`$N<-=q$KBP1~$7$F$*$j!"$=$l$>$l$N<-=q$H$NO"Mm78$H$J$k(B
+$BItJ,$rFC$K(B @dfn{$B8!:w%(!<%8%'%s%H(B} $B$H8F$s$G$$$^$9!#(B
+
+User <-> Lookup <-> Search Agent <-+-> Dictionary
+              Supplement Package --+
+
+
+@c *********************************************************************
+@node Preparation, Utilization, Preface, Top
+@chapter $B=`HwJT(B
+
+$B$3$3$G$O(B Lookup $B$GMQ$$$k<-=q$N=`Hw9`L\$K$D$$$F@bL@$7$^$9!#(B
+
+@menu
+* Free Dictionary::             $B%U%j!<<-=q$rMxMQ$9$k(B
+* CD-ROM Dictionary::           CD-ROM $B<-=q$rMxMQ$9$k(B
+* Network Dictionary::          $B%M%C%H%o!<%/<-=q$rMxMQ$9$k(B
+* Miscellaneous Dictionary::    $B$=$NB>$NFC<l$J8!:w%7%9%F%`(B
+@end menu
+
+@c =====================================================================
+@node Free Dictionary, CD-ROM Dictionary, Preparation, Preparation
+@section $B%U%j!<<-=q$rMxMQ$9$k(B
+
+Lookup $B$G$O%M%C%H%o!<%/$GG[I[$5$l$F$$$k$$$/$D$+$N%U%j!<$^$?$OL5NA$N<-=q$r(B
+$BMxMQ$9$k$3$H$,=PMh$^$9!#$=$N$h$&$J<-=q$N0lMw$,!"<-=q%G!<%?%Y!<%9(B
+@footnote{@url{http://openlab.ring.gr.jp/lookup/dicts/}} $B$N%Z!<%8$K(B
+$B$^$H$a$i$l$F$$$k$N$G;2>H$7$F2<$5$$!#(B
+
+Lookup $B$,I8=`$GBP1~$7$F$$$k%U%j!<<-=q$N7A<0$O!"!V(BSDIC $B%U%)!<%^%C%H!W$H(B
+$B!V(Bdictd $B%U%)!<%^%C%H!W$NFs$D$G$9!#MxMQ$9$k<-=q$K9g$o$;$F=`Hw$7$F2<$5$$!#(B
+
+@menu
+* SDIC format::                 SDIC $B%U%)!<%^%C%H(B
+* dictd format::                dictd $B%U%)!<%^%C%H(B
+@end menu
+
+@c ---------------------------------------------------------------------
+@node SDIC format, dictd format, Free Dictionary, Free Dictionary
+@subsection SDIC $B%U%)!<%^%C%H(B
+
+@dfn{SDIC $B%U%)!<%^%C%H(B} $B$H$O!"(BEmacs $B$G;H$($k%7%s%W%k$J<-=q8!:w%=%U%H(B SDIC
+@footnote{@url{http://pine.kuee.kyoto-u.ac.jp/member/tsuchiya/sdic/index.html}}
+$B$G:NMQ$5$l$F$$$k9T;X8~$N<-=q7A<0$G$9!#(Bgrep $B0l$D$G9bB.$K8!:w$r9T$J$($k$N$,(B
+$BFCD'$G$9!#(B
+
+@subsubheading SDIC $B<-=q$N=`Hw(B
+
+SDIC $B<-=q$O(B @file{.sdic} $B$r3HD%;R$K;}$DC10l$N%U%!%$%k$+$i$J$j$^$9!#(B
+$BC1=c$f$($N=@Fp@-$G!"MW5a$K1~$8$F;0$D$N8!:wJ}<0$,MQ0U$5$l$F$$$^$9!#(B
+
+@enumerate
+@item
+direct $BJ}<0(B
+
+$B<-=q$r(B Emacs $B$N%P%C%U%!$KFI$_9~$s$G!"D>@\8!:w$r9T$J$&J}<0$G$9!#(B
+$B%a%b%j$r05Gw$9$k$J$I$N%G%a%j%C%H$b$"$j$^$9$,!"(BEmacs $B0J30$N30It%3%^%s%I$r(B
+$BI,MW$H$7$J$$$?$a(B Windows $B%f!<%6$K$b<j7Z$KMxMQ=PMh$k$H$$$&MxE@$,$"$j$^$9!#(B
+
+@item
+grep $BJ}<0(B
+
+$B30It%3%^%s%I$H$7$F(B @code{fgrep} $B$b$7$/$O(B @code{grep} $B$rMQ$$$F(B
+$B8!:w$r9T$J$&J}<0$G$9!#==J,$K9bB.$GJXMx$J$?$a!"DL>o$O$3$l$rMxMQ$7$^$9!#(B
+
+@item
+array $BJ}<0(B
+
+$B30It%3%^%s%I$H$7$F(B SUFARY
+@footnote{@url{http://cactus.aist-nara.ac.jp/lab/nlt/ss/}}
+$B$H$$$&%=%U%H%&%'%"$rMQ$$$F8!:w$r9T$J$&J}<0$G$9!#(B
+$B$3$l$O$"$i$+$8$aFCJL$J%$%s%G%C%/%9$r@8@.$9$k$3$H$G8!:w$r9bB.2=$7$^$9!#(B
+5MB $B$rD6$($k$h$&$JBg$-$J%5%$%:$N<-=q$rMQ$$$k>l9g$K$O!"$3$A$i$NMxMQ$,(B
+$BM-8z$+$b$7$l$^$;$s!#(B
+@end enumerate
+
+grep $BJ}<0$rMQ$$$k$K$O!"30It%3%^%s%I$H$7$F(B @code{fgrep} $B$b$7$/$O(B
+@code{grep} $B$r<B9T%Q%9$KCV$$$F2<$5$$!#0lHLE*$J(B UNIX $B%7%9%F%`$G$"$l$P(B
+$BI8=`$GImB0$7$F$$$^$9!#(Barray $BJ}<0$rMQ$$$k$K$O!"(BSUFARY $B$r%$%s%9%H!<%k$7$F(B
+@code{mkary} $B$G%$%s%G%C%/%9$r@8@.$7$F2<$5$$!#(B
+
+$B<-=q$O9%$-$J%G%#%l%/%H%j$KCV$$$F9=$$$^$;$s!#(Bdirect $BJ}<0$rMQ$$$k>l9g$O!"(B
+Emacs 19.34 $B0J9_$J$i<-=q$r(B @code{gzip} $B$J$I$G05=L$7$F$*$/$3$H$b=PMh$^$9!#(B
+@file{~/.emacs} $B$G(B @code{(auto-compression-mode t)} $B$H$7$F$*$$$F2<$5$$!#(B
+
+@subsubheading SDIC $B<-=q$NMxMQ(B
+
+SDIC $B<-=q$O!"(BLookup $B$N(B ndic $B%(!<%8%'%s%H$GMxMQ$9$k$3$H$,=PMh$^$9!#(B
+$B<-=q$rCV$$$?%G%#%l%/%H%j$r0z?t$K$7$F!"Nc$($P<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@lisp
+(setq lookup-search-agents '((ndic "/usr/local/dict")))
+@end lisp
+
+$B%G%#%l%/%H%j$K4^$^$l$kA4$F$N(B @file{.sdic} $B%U%!%$%k$,<-=q$H$7$FG'<1$5$l$^$9!#(B
+
+@c ---------------------------------------------------------------------
+@node dictd format,  , SDIC format, Free Dictionary
+@subsection dictd $B%U%)!<%^%C%H(B
+
+@dfn{dictd $B%U%)!<%^%C%H(B} $B$H$O!"(BDICT $B%W%m%H%3%k(B(@sc{RFC 2229})$B$KBP1~$7$?(B
+$B<-=q%5!<%P$G$"$k(B dictd @footnote{@url{http://www.dict.org}} $B$,FH<+$K:NMQ(B
+$B$7$F$$$k<-=q7A<0$G$9!#C1=c$+$D==J,$K<BMQE*$J%U%)!<%^%C%H$G$9!#(B
+
+@subsubheading dictd $B<-=q$N=`Hw(B
+
+dictd $B<-=q$O!"(B@file{.index} $B$r3HD%;R$K;}$D%$%s%G%C%/%9!&%U%!%$%k$H!"(B
+@file{.dict} $B$r3HD%;R$K;}$D%G!<%?!&%U%!%$%k$NFs$D$+$i$J$j$^$9!#(B
+$BN>J}$N%U%!%$%k$rE,Ev$JF1$8%G%#%l%/%H%j$KCV$$$F2<$5$$!#(B
+
+@file{.dict} $B%U%!%$%k$O(B dictd $B$KImB0$N(B @code{dictzip} $B$H$$$&%3%^%s%I$G(B
+$B05=L$9$k$3$H$,=PMh$^$9!#>\$7$/$O(B dictd $B$N%^%K%e%"%k$r;2>H$7$F2<$5$$!#(B
+
+@subsubheading dictd $B<-=q$NMxMQ(B
+
+dictd $B<-=q$O!"(BLookup $B$N(B ndic $B$b$7$/$O(B ndict $B%(!<%8%'%s%H$GMxMQ$9$k$3$H$,(B
+$B=PMh$^$9!#(Bndic $B$G$O<-=q$ND>@\8!:w$r9T$J$$!"(Bndict $B$G$O(B DICT $B%W%m%H%3%k$r(B
+$BMQ$$$F%5!<%P$+$i8!:w$r9T$J$$$^$9!#(Bndic $B$NJ}$,$*<j7Z$G$9$,!"(Bndict $B$NJ}$,(B
+$B$h$j9bB.$J8!:w$,2DG=$G$9!#(B
+
+@enumerate
+@item
+ndic $B$rMQ$$$k>l9g(B
+
+$B<-=q$rCV$$$?%G%#%l%/%H%j$r0z?t$K$7$F!"Nc$($P<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@lisp
+(setq lookup-search-agents '((ndic "/usr/local/dict")))
+@end lisp
+
+$B%G%#%l%/%H%j$K4^$^$l$kA4$F$N(B @file{.index} $B%U%!%$%k$,<-=q$H$7$FG'<1$5$l$^$9!#(B
+$B@h$N(B SDIC $B<-=q$H:.:_$7$F$"$C$F$b9=$$$^$;$s!#<-=q$r05=L$7$F$"$k>l9g$K$O!"(B
+@code{dictzip} $B%3%^%s%I$r<B9T%Q%9$NDL$C$?%G%#%l%/%H%j$K%$%s%9%H!<%k$7$F(B
+$B$*$$$F2<$5$$!#(B
+
+@item
+ndict $B$rMQ$$$k>l9g(B
+
+$B$"$i$+$8$a(B DICT $B%5!<%P$rN)$A>e$2$F$*$$$F!"<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@lisp
+(setq lookup-search-agents '((ndict "dict-server")))
+@end lisp
+
+DICT $B%5!<%P$NN)$A>e$2$K$D$$$F$O!"(B@ref{DICT server} $B$r;2>H$7$F2<$5$$!#(B
+@end enumerate
+
+@c =====================================================================
+@node CD-ROM Dictionary, Network Dictionary, Free Dictionary, Preparation
+@section CD-ROM $B<-=q$rMxMQ$9$k(B
+
+Lookup $B$G$OB?$/$N;THN$N(B CD-ROM $B<-=q$rMxMQ$9$k$3$H$,=PMh$^$9!#MxMQ2DG=$J(B
+$B<-=q$N0lMw$,!"<-=q%G!<%?%Y!<%9(B
+@footnote{@url{http://openlab.ring.gr.jp/lookup/dicts/}}
+$B$N%Z!<%8$K$^$H$a$i$l$F$$$k$N$G;2>H$7$F2<$5$$!#(B
+
+Lookup $B$OI8=`$G!"EE;R%V%C%/$d(B EPWING $B5,Ls$K=`5r$7$?(B CD-ROM $B=q@R$NMxMQ$K(B
+$BBP1~$7$F$$$^$9!#JLG[I[$N@lMQ%W%m%0%i%`$rMQ0U$9$k$3$H$G!"FH<+%U%)!<%^%C%H(B
+$B$N(B CD-ROM $B<-=q$K$D$$$F$bMxMQ=PMh$k$b$N$,$"$j$^$9!#(B
+
+@menu
+* EPWING format::               $BEE;R%V%C%/!&(BEPWING
+* Original format::             $BFH<+%U%)!<%^%C%H(B
+* Setup Gaiji::                 $B30;zI=<($N@_Dj(B
+@end menu
+
+@c ---------------------------------------------------------------------
+@node EPWING format, Original format, CD-ROM Dictionary, CD-ROM Dictionary
+@subsection $BEE;R%V%C%/!&(BEPWING
+
+$BEE;R%V%C%/$d(B EPWING $B5,Ls$O!"F|K\$G0lHLE*$JEE;R<-=q$N6&DL5,3J$G$9!#(B
+$B%Q%C%1!<%8$N30H"$K=q$+$l$?!V(B@sc{EBXA}$B!W$H$+!V(B@sc{EPWING}$B!W$H$$$C$?%m%4$,(B
+$BL\0u$G$9!#(B($B0J2<!"$^$H$a$F(B EPWING $B<-=q$H8F$V(B)
+
+@subsubheading EPWING $B<-=q$N=`Hw(B
+
+EPWING $B<-=q$O(B CD-ROM $B$+$iD>@\8!:w$;$:$H$b!"$"$i$+$8$a%O!<%I%G%#%9%/$K(B
+$B%3%T!<$7$F$*$/$3$H$G!"$h$jJXMx$K9bB.$K8!:w$r9T$J$($^$9!#%G%#%9%/MFNL$K(B
+$BM>M5$N$"$k?M$O!"G'$a$i$l$?HO0OFb$G%3%T!<$7$F$*$/$H$$$$$G$7$g$&!#(B
+
+$B$3$N$H$-!"B@ED;a:n$N(B EPWUTIL
+@footnote{@url{ftp://ftp.nerimadors.or.jp/pub/epwutil/}} $B$d!"3^86;a:n$N(B EB
+$B%i%$%V%i%j(B @footnote{@url{http://www.sra.co.jp/people/m-kasahr/eb/}}
+$B$K4^$^$l$k(B @code{ebzip} $B$H$$$C$?%D!<%k$rMQ$$$k$3$H$G!"<-=q$N%5%$%:$r(B
+$B>.$5$/<}$a$k$3$H$,2DG=$G$9(B(1/2 $B!A(B 1/10 $BDxEY(B)$B!#>\$7$/$O!"$=$l$>$l$N(B
+$B%W%m%0%i%`$KImB0$N%I%-%e%a%s%H$r;2>H$7$F2<$5$$!#(B
+
+@subsubheading EPWING $B<-=q$NMxMQ(B
+
+EPWING $B<-=q$O!"(BLookup $B$N(B ndeb $B$b$7$/$O(B ndtp $B%(!<%8%'%s%H$GMxMQ$9$k$3$H$,(B
+$B=PMh$^$9!#(Bndeb $B$O8D?M$G$N(B CD-ROM $B<-=qMxMQ$K8~$$$F$*$j!"(Bndtp $B$O%M%C%H%o!<%/$r(B
+$B2p$7$?<-=q$N6&M-$K8~$$$F$$$^$9!#(B
+
+@enumerate
+@item
+ndeb $B$rMQ$$$k>l9g(B
+
+$B8!:w$r9T$J$&$?$a$N30It%3%^%s%I$H$7$F(B @code{eblook}
+@footnote{@url{http://openlab.ring.gr.jp/lookup/eblook/}} $B$,I,MW$G$9!#(B
+$B$"$i$+$8$aF~<j$7$F%$%s%9%H!<%k$7$F$*$$$F2<$5$$!#(B
+
+$B$b$730;z$rI=<(=PMh$k4D6-$K$J$$$+!"30;z$rMQ$$$?$/$J$$$H$$$&>l9g$K$O!"(B
+$B30;zCV$-49$(@_Dj%U%!%$%k$G$"$k(B Appendix
+@footnote{@url{http://www.sra.co.jp/people/m-kasahr/eb/}} $B$bF~<j$7$F2<$5$$!#(B
+
+Lookup $B$N@_Dj$O!"Nc$($P<!$N$h$&$K$7$F2<$5$$!#(B
+
+@lisp
+(setq lookup-search-agents '((ndeb "/cdrom" :appendix "/your/appendix")))
+@end lisp
+
+@item
+ndtp $B$rMQ$$$k>l9g(B
+
+$B$"$i$+$8$a(B NDTP $B%5!<%P$rN)$A>e$2$F$*$$$F!"<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@lisp
+(setq lookup-search-agents '((ndtp "dserver")))
+@end lisp
+
+NDTP $B%5!<%P$NN)$A>e$2$K$D$$$F$O!"(B@ref{NDTP server} $B$r;2>H$7$F2<$5$$!#(B
+@end enumerate
+
+@c ---------------------------------------------------------------------
+@node Original format, Setup Gaiji, EPWING format, CD-ROM Dictionary
+@subsection $BFH<+%U%)!<%^%C%H(B
+
+$B8=:_!">.3X4[$N!V%i%s%@%`%O%&%91Q8l<-E5!W$+$i8!:w$,9T$J$($k$h$&$K$J$C$F(B
+$B$$$^$9$,!"$^$@3+H/CJ3,$K$"$j$^$9!#6=L#$N$"$kJ}$O!"EE;R<-=q%*!<%W%s%i%\(B
+@footnote{@url{http://openlab.ring.gr.jp/edict/}} $B$N(B edict ML $B$G?R$M$F2<$5$$!#(B
+
+@c ---------------------------------------------------------------------
+@node Setup Gaiji,  , Original format, CD-ROM Dictionary
+@subsection $B30;zI=<($N@_Dj(B
+
+Lookup $B$O(B CD-ROM $B=q@R$J$I$K4^$^$l$k30;z$NI=<($r%5%]!<%H$7$F$$$^$9!#(B
+$B30;z$rI=<($9$k$K$O!"$=$l$>$l$N8!:w%(!<%8%'%s%H$GE,@Z$J@_Dj$r9T$J$C$?>e$G!"(B
+Lookup $B$r<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@enumerate
+@item
+GNU Emacs $B5Z$S(B Mule $B$N>l9g(B:
+
+Emacs $B$G%S%C%H%^%C%WI=<($r9T$J$&$?$a$N(B bitmap-mule $B%Q%C%1!<%8(B
+@footnote{@url{ftp://ftp.jaist.ac.jp/pub/GNU/elisp/bitmap-mule/}}
+$B$rMQ$$$F30;z$rI=<($7$^$9!#ImB0$N%I%-%e%a%s%H$J$I$r;29M$K%$%s%9%H!<%k$r(B
+$B9T$J$C$F2<$5$$!#$b$7@_Dj$,$h$/$o$+$i$J$1$l$P!"(B
+Lookup $B$N(B FAQ $B$K$b>pJs$,$"$k$N$G;29M$K$7$F2<$5$$!#(B
+
+bitmap-mule $B$N=`Hw$,=PMh$?$i!"<!$N$$$:$l$+$NJ}K!$G=`Hw$,40N;$G$9!#(B
+
+@enumerate
+@item
+Lookup $B$N5/F0A0$K(B bitmap-mule $B$r%m!<%I$9$k!#(B
+
+$BNc$($P(B @file{~/.emacs} $B$K(B @code{(require 'bitmap)} $B$H=q$$$F$*$$$F2<$5$$!#(B
+
+@item
+$B=i4|2=%U%!%$%k$G(B @code{lookup-use-bitmap} $B$r(B @code{t} $B$K%;%C%H$9$k!#(B
+
+$B$3$N>l9g!"<B:]$K30;z$rI=<($9$k:]$K(B bitmap-mule $B$,FI$_9~$^$l$^$9!#(B
+@end enumerate
+
+@item
+XEmacs $B$N>l9g(B:
+
+$BFCJL$J=`Hw$OI,MW$"$j$^$;$s!#(BLookup $B$O(B XEmacs $B$N(B glyph $B$N5!G=$rMxMQ$7$F!"(B
+$B30;z$r0l<o$N2hA|$H$7$F07$$$^$9!#@_Dj$O<+F0$G9T$J$o$l$^$9!#(B
+@end enumerate
+
+$B5U$K!"30;z$rI=<($5$;$?$/$J$$>l9g$K$O!"JQ?t(B @code{lookup-enable-gaiji} $B$r(B
+@code{nil} $B$K@_Dj$7$F2<$5$$!#$3$l$O%G%U%)%k%H$G(B @code{t} $B$H$J$C$F$$$^$9!#(B
+
+@c =====================================================================
+@node Network Dictionary, Miscellaneous Dictionary, CD-ROM Dictionary, Preparation
+@section $B%M%C%H%o!<%/<-=q$rMxMQ$9$k(B
+
+$BEE;R<-=q$r%M%C%H%o!<%/$G6&M-$7$FMxMQ$7$?$$>l9g$O!"<-=q%5!<%P$rN)$A>e$2$F(B
+$B8!:w%5!<%S%9$rDs6!$9$k$N$,0l$D$NJ}K!$G$9!#$^$?!"%$%s%?!<%M%C%H$K$O<+M3$K(B
+$B%"%/%;%9=PMh$k<-=q%5!<%P$bB8:_$7!"$=$l$i$K%"%/%;%9$9$k$3$H$b2DG=$G$9!#(B
+
+Lookup $B$,BP1~$7$F$$$k<-=q%5!<%P$O!"(B@dfn{NDTP $B%5!<%P(B} $B$H(B
+@dfn{DICT $B%5!<%P(B} $B$NFs$D$G$9!#$3$3$G$O$=$l$>$l$K$D$$$F!"(B
+$B%5!<%P$N>R2p$H(B Lookup $B$N@_Dj$K$D$$$F@bL@$7$^$9!#(B
+
+@menu
+* NDTP server::                 NDTP $B%5!<%P(B
+* DICT server::                 DICT $B%5!<%P(B
+@end menu
+
+@c ---------------------------------------------------------------------
+@node NDTP server, DICT server, Network Dictionary, Network Dictionary
+@subsection NDTP $B%5!<%P(B
+
+NDTP(Network Dictionary Transport Protocol)$B$H$O!"<g$KF|K\$G;H$o$l$F$$$k!"(B
+CD-ROM $B<-=q$r%M%C%H%o!<%/$GMxMQ$9$k$?$a$N8!:wMQ%W%m%H%3%k$G$9!#(B
+
+@subsubheading NDTP $B%5!<%P$N=`Hw(B
+
+NDTP $B%5!<%P$H$7$F$O!"8=:_(B NDTPD
+@footnote{@url{http://www.sra.co.jp/people/m-kasahr/ndtpd/}}
+$B$,<g$KMQ$$$i$l$F$$$^$9!#ImB0$N%I%-%e%a%s%H$r;2>H$7$F!"(B
+$B%$%s%9%H!<%k!"5Z$S@_Dj$r9T$J$C$F2<$5$$!#(B
+
+@table @asis
+@item NDPTD
+@end table
+
+@subsubheading NDTP $B%5!<%P$NMxMQ(B
+
+$BNc$($P<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@lisp
+(setq lookup-search-agents '((ndtp "dserver")))
+@end lisp
+
+@c ---------------------------------------------------------------------
+@node DICT server,  , NDTP server, Network Dictionary
+@subsection DICT $B%5!<%P(B
+
+DICT $B$H$O!"(B@sc{RFC 2229} $B$GDj5A$5$l$F$$$k<-=q8!:w$N$?$a$N%W%m%H%3%k$G$9!#(B
+
+@subsubheading DICT $B%5!<%P$N=`Hw(B
+
+DICT $B%5!<%P$H$7$F!"(BDICT $B%W%m%8%'%/%H(B @footnote{@url{http://www.dict.org}}
+$B$K$h$j(B @code{dictd} $B$,8x3+$5$l$F$$$^$9!#ImB0$N%I%-%e%a%s%H$r;2>H$7$F!"(B
+$B%$%s%9%H!<%k!"5Z$S@_Dj$r9T$J$C$F2<$5$$!#(B
+
+@subsubheading DICT $B%5!<%P$NMxMQ(B
+
+$BNc$($P<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@example
+(setq lookup-search-agents '((ndict "dict.org")))
+@end example
+
+@c =====================================================================
+@node Miscellaneous Dictionary,  , Network Dictionary, Preparation
+@section $B$=$NB>$NFC<l$J8!:w%7%9%F%`(B
+
+Lookup $B$G$OB>$K$b!"<!$N$h$&$JFC<l$J8!:w%(!<%8%'%s%H$,I8=`$GMxMQ2DG=$G$9!#(B
+$B9%$_$K1~$8$F=`Hw$r@0$($F2<$5$$!#(B
+
+@menu
+* ndkks agent::                 $BF|K\8l$NFI$_$rD4$Y$k(B
+* ndspell agent::               $B%9%Z%k%A%'%C%/$H%9%Z%k8!:w(B
+* ndcookie agent::              $B:#F|$N1?@*$r%A%'%C%/$9$k(B
+@end menu
+
+@c ---------------------------------------------------------------------
+@node ndkks agent, ndspell agent, Miscellaneous Dictionary, Miscellaneous Dictionary
+@subsection $BF|K\8l$NFI$_$rD4$Y$k(B
+
+`ndkks' $B$O!"F|K\8l$N4A;z$NFI$_$rD4$Y$k$?$a$N8!:w%(!<%8%'%s%H$G$9!#4A;z$r(B
+$B4^$`8!:w8l$,;XDj$5$l$?>l9g!"4A;z$+$JJQ49%W%m%0%i%`(B KAKASI $B$rMQ$$$F$=$N(B
+$BFI$_$rD4$Y$^$9!#(B
+
+$B4A;z$N4^$^$l$k8!:w8l$r;XDj$7$?>l9g!"4A;z$+$JJQ49%W%m%0%i%`(B KAKASI $B$rMQ$$(B
+$B$F$=$NFI$_$rD4$Y$FI=<($7$^$9!#(B
+
+KAKASI $B$O<!$N$H$3$m$+$i(B @file{kakasi-2.2.5.tar.gz}($BK\BN%U%!%$%k(B)$B$H(B
+@file{kakasidict.940620.gz}($B<-=q%U%!%$%k(B)$B$NL>>N$GF~<j2DG=$G$9!#(B
+
+@example
+@url{ftp://sunsite.sut.ac.jp/pub/asia-info/japanese-src/packages/}
+@end example
+
+$B<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@lisp
+(setq lookup-search-agents '((ndkks)))
+@end lisp
+
+@c ---------------------------------------------------------------------
+@node ndspell agent, ndcookie agent, ndkks agent, Miscellaneous Dictionary
+@subsection $B%9%Z%k%A%'%C%/$H%9%Z%k8!:w(B
+
+`ndspell' $B$O!"(BLookup $B$G%9%Z%k%A%'%C%/$r9T$J$&$?$a$N8!:w%(!<%8%'%s%H$G$9!#(B
+$B$b$78!:w8l$rIaDL$K8!:w$7$F2?$b8+IU$+$i$J$+$C$?>l9g!"%9%Z%k%A%'%C%/$r(B
+$B9T$J$C$F$+$i$b$&0lEY:F8!:w$r;n$_$^$9!#(B
+
+ndspell $B$O30It%3%^%s%I$H$7$F(B Ispell $B$H(B grep $B$rMxMQ$7$F$$$^$9!#(BIspell $B$O(B
+$BBPOC7?$N%9%Z%k%A%'%C%/%3%^%s%I$G!"(Bgrep $B$O8@$o$:$HCN$l$?(B UNIX $B%D!<%k$G$9!#(B
+$B$I$A$i$b(B GNU $B$N(B FTP $B%5%$%H$J$I$+$iF~<j2DG=$G$9!#(B
+
+@example
+@url{ftp://ftp.gnu.org/pub/GNU/}
+@end example
+
+$B$3$N%(!<%8%'%s%H$OC1FH$G$OMQ$$$:$K!"B>$N<-=q$HAH$_9g$o$;$F!"Nc$($P(B
+$B<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@lisp
+(setq lookup-search-agents '((ndic "/usr/local/dict") (ndspell)))
+@end lisp
+
+@c ---------------------------------------------------------------------
+@node ndcookie agent,  , ndspell agent, Miscellaneous Dictionary
+@subsection $B:#F|$N1?@*$r%A%'%C%/$9$k(B
+
+`ndcookie' $B$O!"8!:w;~$K(B cookie $B%U%!%$%k(B($B0zMQ=8(B)$B$+$i0l6gH4$-=P$7$FI=<($9$k(B
+$B$?$a$N8!:w%(!<%8%'%s%H$G$9!#(B@code{fortune} $B%W%m%0%i%`$HF1MM$NF/$-$r$7$^$9!#(B
+
+$BMxMQ=PMh$k%U%!%$%k$NNc$H$7$F$O!"(BEmacs $B$KImB0$N(B Zippy $B%U%!%$%k$,$"$j$^$9!#(B
+$B<!$N$h$&$K@_Dj$7$F2<$5$$!#(B
+
+@lisp
+(setq lookup-search-agents '((ndcookie "yow.lines")))
+@end lisp
+
+@c *********************************************************************
+@node Utilization, Information, Preparation, Top
+@chapter $B3hMQJT(B
+
+$B$3$3$G$O(B Lookup $B$G<B:]$K<-=q$rMQ$$$F8!:w$r9T$J$&J}K!$K$D$$$F@bL@$7$^$9!#(B
+
+@menu
+* Setup Example::               $B4pK\E*$J@_DjNc(B
+* Run Lookup::                  $B5/F0$9$k$K$O(B
+* Search Pattern::              $B8!:w$7$F$_$h$&(B
+* See Result::                  $B7k2L$r8+$F$$$/(B
+@end menu
+
+@c =====================================================================
+@node Setup Example, Run Lookup, Utilization, Utilization
+@section $B4pK\E*$J@_DjNc(B
+
+$B0J>e$,=*$o$l$P!"(B@file{~/.emacs} $B%U%!%$%k$K@_Dj$r=q$-9~$_$^$9!#4pK\E*$K$O(B
+$BJQ?t(B @code{lookup-search-agents} $B$r%;%C%H$9$k$@$1$G$9!#MxMQ$7$?$$8!:w%(!<(B
+$B%8%'%s%H$N?t$@$1!"@_Dj$rJB$Y$k$3$H$,=PMh$^$9!#(B
+
+$BNc$($P!"(BNDTP $B%5!<%P$,%[%9%H(B @samp{dserver} $B$GF0$$$F$*$j!"(BCD-ROM $B<-=q$r(B
+@file{/cdrom} $B$K%^%&%s%H$7$F$$$k$N$G$"$l$P!"@_Dj$O<!$N$h$&$K$J$j$^$9!#(B
+
+@lisp
+(setq lookup-search-agents '((ndtp "dserver") (ndeb "/cdrom")))
+@end lisp
+
+$B$5$"!"<-=q$N@_Dj$O=*$o$j$^$7$?!#$7$+$7<B:]$K$O!"4IM}<T$NJ}$,FCJL$K@_Dj$r(B
+$B9T$J$C$F$G$b$$$J$$8B$j!"B>$K$b$$$/$D$+$N@_Dj$,I,MW$H$J$j$^$9!#<BMQ>e!"(B
+@file{~/.emacs} $B$K$O<!$N$h$&$K=q$$$F$*$/$H$h$$$G$7$g$&!#(B
+
+@lisp
+;;;
+;;; Lookup Setup Example
+;;;
+
+;; $B%*!<%H%m!<%I$N@_Dj(B
+(autoload 'lookup "lookup" nil t)
+(autoload 'lookup-region "lookup" nil t)
+(autoload 'lookup-pattern "lookup" nil t)
+
+;; $B%-!<%P%$%s%I$N@_Dj(B
+(define-key ctl-x-map "l" 'lookup)              ; C-x l - lookup
+(define-key ctl-x-map "y" 'lookup-region)       ; C-x y - lookup-region
+(define-key ctl-x-map "\C-y" 'lookup-pattern)   ; C-x C-y - lookup-pattern
+
+;; $B8!:w%(!<%8%'%s%H$N@_Dj(B
+(setq lookup-search-agents '((ndtp "dserver") (ndeb "/cdrom")))
+@end lisp
+
+$B:G=i$NCJMn$G$O!"(BLookup $B$N3F%3%^%s%I$r<B9T$7$?$H$-!"<+F0E*$K%W%m%0%i%`$r(B
+$BFI$_9~$`$h$&$K@_Dj$7$F$$$^$9!#$b$7(B Emacs $B5/F0;~$K=i4|2=$r:Q$^$;$F$7$^$&(B
+$B$3$H$,$*9%$_$J$i!"Be$o$j$K(B @code{(require 'lookup)} $B$J$I$H=q$$$F$*$1$P$h(B
+$B$$$G$7$g$&!#(B
+
+$BFsHVL\$NCJMn$G$O!"%3%^%s%I$r<B9T$9$k$?$a$N%-!<%P%$%s%I$rDj5A$7$F$$$^$9!#(B
+$B$3$l$OI,?\$G$O$"$j$^$;$s$,!">e5-$N%3%^%s%I$O$h$/MQ$$$k$N$G!"E,Ev$J%-!<$K(B
+$B3d$jEv$F$F$*$/$HJXMx$G$9!#3F<+$G9%$_$N%-!<$K%P%$%s%I$7$F2<$5$$!#(B
+
+$B:G8e$NCJMn$G$O!"MxMQ$9$k8!:w%(!<%8%'%s%H$r@_Dj$7$F$$$^$9!#$3$l$OA0@a$G@b(B
+$BL@$7$?DL$j$G$9!#3F<+$N$b$N$K9g$o$;$F@_Dj$7$F2<$5$$!#(B
+
+$B0J>e$,=*$o$l$P!"<0$rI>2A$9$k$J$j!"(BEmacs $B$r:F5/F0$9$k$J$j$7$F!"@_Dj$rM-8z(B
+$B$K$7$F2<$5$$!#(B
+
+@c =====================================================================
+@node Run Lookup, Search Pattern, Setup Example, Utilization
+@section $B5/F0$9$k$K$O(B
+
+$B$*BT$?$;$7$^$7$?!#$=$l$G$O(B Lookup $B$rF0$+$7$F$$$-$^$7$g$&!#$^$:<j;O$a$K(B
+@kbd{M-x lookup} $B$H$7$F!"%W%m%0%i%`$,5/F0$9$k$3$H$r3NG'$7$F2<$5$$!#(B
+
+@example
+
+@kbd{M-x lookup @key{RET}} @result{}
+
+======== Lookup Windows ========================================
+----------------------------------------------------------------
+Type `m' to select, `u' to unselect, `?' for help.
+
+% Identifier          Title                Method
+- ----------          -----                ------
+* ndtp+dserver:KOKUGO $B9q8l<-E5(B             =<>
+* ndeb+/cdrom:EIWA    $B1QOB<-E5(B             =<>
+* ndeb+/cdrom:WAEI    $BOB1Q<-E5(B             =<>
+
+
+
+
+
+----------------------------------------------------------------
+-J:%*  Lookup: *Dictionary List*      (Select Abbrev)--L5--C0--A
+----------------------------------------------------------------
+================================================================
+
+@end example
+
+$B>e$N$h$&$J2hLL$,I=<($5$l$^$7$?$+(B? $B$b$7%(%i!<$,5/$3$C$?$j!"$"$k$$$O0lMw$,(B
+$BI=<($5$l$J$$$h$&$J$i!"<-=q$d%W%m%0%i%`$N@_Dj$K<:GT$7$F$$$k$+$b$7$l$^$;$s!#(B
+$BLdBjE@$r3NG'$7$F!"$b$&0lEY$d$jD>$7$F$_$F2<$5$$!#$h$/$"$k%_%9$J$i(B FAQ $B$K(B
+$B>pJs$,$"$k$+$b$7$l$^$;$s$7!"$o$+$i$J$$$3$H$,$"$l$P%a!<%k$G?R$M$F$b$i$C$F(B
+$B$b0l8~$K9=$$$^$;$s!#(B
+
+@cindex $B<-=q0lMw%P%C%U%!(B
+$B$3$N$H$-I=<($5$l$k%P%C%U%!$r(B @dfn{$B<-=q0lMw%P%C%U%!(B} $B$H8F$S$^$9!#>e$NNc$G(B
+$B$O!"!V9q8l<-E5!W!V1QOB<-E5!W!VOB1Q<-E5!W$N;0$D$N<-=q$,;H$($k$h$&$K$J$C$F(B
+$B$$$^$9!#0J2<!"$3$l$i$N<-=q$rNc$K@bL@$7$F$$$-$^$9!#(B
+
+$B9TF,$K(B @samp{*}($B%"%9%?%j%9%/(B)$B$N%^!<%/$,IU$$$F$$$k$N$O!"$=$N<-=q$r8!:w$K(B
+$BMQ$$$k$b$N$H$7$F!"<-=q$,A*Br$5$l$F$$$k$H$$$&$3$H$rI=$o$7$F$$$^$9!#>e$N>l(B
+$B9g!";0$DA4$F$N<-=q$+$i0lEY$K8!:w$,9T$J$o$l$k$H$$$&0UL#$K$J$j$^$9!#DL>o!"(B
+$B:G=i$OMxMQ=PMh$kA4$F$N<-=q$,A*Br>uBV$K$J$C$F$$$^$9!#(B
+
+@cindex $B<-=qL>(B
+@cindex $B<-=q(BID
+@cindex $B%(!<%8%'%s%H(BID
+@samp{Identifier} $B$H$"$k%3%i%`$K$O!"<-=q$rFCDj$9$k$?$a$NL>>N$,I=<($5$l$F(B
+$B$$$^$9!#$3$l$OMxMQ$7$F$$$k8!:w%(!<%8%'%s%H(B(@var{agent})$B$H!"<-=q$N=j:_(B
+(@var{location})$B!"5Z$S<-=qL>(B(@var{name})$B$H$rAH$_9g$o$;$F!"(B
+@samp{@var{agent+location:name}} $B$H$$$&7A$GI=$o$5$l$^$9!#K\=q$G$O$3$l$r(B
+@dfn{$B<-=q(BID} $B$H8F$S!"(B@samp{@var{name}} $B$GI=$o$5$l$k(B @dfn{$B<-=qL>(B} $B$H$O6h(B
+$BJL$7$^$9!#$^$?F1MM$K!"(B@samp{@var{agent+location}} $B$NItJ,$O(B @dfn{$B%(!<%8%'(B
+$B%s%H(BID} $B$H8F$S$^$9!#(B
+
+@samp{Title} $B$H$"$k%3%i%`$K$O!"<-=q$N%?%$%H%k$,I=<($5$l$^$9!#$3$l$O8!:w(B
+$B7k2L$N=PNO$J$I$K!"IaCJMQ$$$i$l$k$b$N$G$9!#%*%W%7%g%s@_Dj$K$h$j<+M3$KJQ99(B
+$B$9$k$3$H$b2DG=$G$9$+$i!"8e$G8+$d$9$$$b$N$KJQ$($F$*$-$^$7$g$&!#(B
+
+$B:G8e$N(B @samp{Methods} $B$H$"$k%3%i%`$K$O!"<-=q$,BP1~$7$F$$$k8!:wJ}<0$,<($5(B
+$B$l$F$$$^$9!#$3$l$O3F<o8!:wJ}<0$,$=$l$>$l0l$D$N5-9f$GI=$o$5$l$F$*$j!">e$N(B
+$B>l9g$O$I$N<-=q$b!VA0J}0lCW8!:w!W!V8eJ}0lCW8!:w!W!V40A40lCW8!:w!W$KBP1~$7(B
+$B$F$$$k$H$$$&0UL#$K$J$j$^$9!#>\$7$/$O8e$[$I@bL@$7$^$9!#(B
+
+$B$3$N%P%C%U%!$G$O<-=q$N0lMw$r3NG'$9$k0J30$K$b!"<-=q$NA*Br>uBV$r@Z$jBX$($k(B
+$B$J$I$$$/$D$+$NA`:n$,2DG=$H$J$C$F$$$^$9!#;n$7$K(B @kbd{?} $B$r2!$7$F$_$F2<$5(B
+$B$$!#JL$N%P%C%U%!$K%3%^%s%I$N0lMw$,I=<($5$l$^$7$?$M(B? Lookup $B$N3F%P%C%U%!(B
+$B$G$O!"(B@kbd{?} $B%-!<$r2!$9$3$H$G4JC1$J%3%^%s%I0lMw$,=P$k$h$&$K$J$C$F$$$k$N(B
+$B$G!"$A$g$C$HD4$Y$?$$$H$-$K$4MxMQ2<$5$$!#(B
+
+$B$I$3$G$b;H$($k%-!<A`:n$r$b$&0l$D!#(B@kbd{q} $B$r2!$;$P!"$=$N%P%C%U%!$rH4$1$F(B
+$B85$N:n6H$KLa$k$3$H$,=PMh$^$9!#$5$"!"$=$l$G$O<-=q$N3NG'$O$3$NJU$K$7$F!"<!(B
+$B$N%9%F%C%W$K?J$_$^$7$g$&!#(B
+
+@c =====================================================================
+@node Search Pattern, See Result, Run Lookup, Utilization
+@section $B8!:w$7$F$_$h$&(B
+
+$B$$$h$$$h8!:w$r9T$J$$$^$9!#:G$bBeI=E*$J8!:w%3%^%s%I$H$7$F!"(B@kbd{M-x
+lookup-region} $B$H(B @kbd{M-x lookup-pattern} $B$NFs$D$,$"$j$^$9!#$=$l$>$l(B
+$B%j!<%8%g%s$NFbMF!"5Z$S%_%K%P%C%U%!$+$i$NF~NO$r8!:w8l$K!"8!:w$r3+;O$7$^$9!#(B
+
+@example
+
+@kbd{M-x lookup-pattern @key{RET} test @key{RET}} @result{}
+
+======== Lookup Windows ========================================
+----------------------------------------------------------------
+$B9q8l<-E5(B            @point{}$B%F%9%H(B
+$B1QOB<-E5(B            test
+
+
+----------------------------------------------------------------
+-J:%*  Lookup: *Entry* @{*:test@} [2]      (Entry Abbrev)--L1--C20
+----------------------------------------------------------------
+$B%F%9%H(B
+[$BL>(B] 1. $B;n83(B....
+
+
+
+
+----------------------------------------------------------------
+-J:%*  Lookup: *Content* @{$B%F%9%H(B@}      (Content Abbrev)--L1--C0-
+----------------------------------------------------------------
+================================================================
+
+@end example
+
+@cindex Entry $B%P%C%U%!(B
+$BFs$D$N%P%C%U%!$,I=<($5$l$^$7$?!#>eB&$N%P%C%U%!$O(B @dfn{Entry $B%P%C%U%!(B} $B$H(B
+$B8@$$!"8!:w$N7k2L8+IU$+$C$?%(%s%H%j$r0lMw$7$^$9!#$3$3$G$OFs$D$N%(%s%H%j$,(B
+$BI=<($5$l$F$$$^$9!#(B@point{} $B$H$"$k$N$O!"$=$3$K%]%$%s%H$,$"$k$H$$$&0u$G$9!#(B
+$B$D$^$j!"8=:_0l$DL\$N!V%F%9%H!W$H$$$&%(%s%H%j$,A*Br$5$l$F$$$^$9!#(B
+
+@cindex Content $B%P%C%U%!(B
+$B2<B&$N%P%C%U%!$O(B @dfn{Content $B%P%C%U%!(B} $B$H8@$$!"A*Br$5$l$F$$$k%(%s%H%j$N(B
+$BK\J8$,I=<($5$l$^$9!#(BEntry $B%P%C%U%!$G(B @key{SPC} $B$r2!$7$F$$$1$P!"FbMF$,<!!9(B
+$B$HI=<($5$l$^$9!#(B
+
+$B>e$NNc$G$O(B @samp{test} $B$H$$$&8!:w8l$G8!:w$r9T$J$$$^$7$?$,!"$3$3$GF~NO$r(B
+$B<!$N$h$&$K$9$k$3$H$G!"8!:wJ}<0$rMM!9$K@Z$j49$($k$3$H$,=PMh$^$9!#(B
+
+@table @t
+@item word
+$BC18l8!:w!#I8=`$N8!:wJ}K!!#(B
+@item word*
+$BA0J}0lCW8!:w!#;XDj$7$?J8;zNs$G;O$^$k8l$r8+IU$1$k!#(B
+@item *word
+$B8eJ}0lCW8!:w!#;XDj$7$?J8;zNs$G=*$o$k8l$r8+IU$1$k!#(B
+@item *word*
+$BItJ,0lCW8!:w!#;XDj$7$?J8;zNs$r4^$s$@8l$r8+IU$1$k!#(B
+@item 'word'
+$B40A40lCW8!:w!#;XDj$7$?J8;zNs$H0lCW$9$k8l$r8+IU$1$k!#(B
+@item @@word
+$B%-!<%o!<%I8!:w!#;XDj$7$?J8;zNs$r%-!<%o!<%I$K;}$D%(%s%H%j$r8+IU$1$k!#(B
+@end table
+
+$B$R$H$^$:$3$l$@$13P$($F$*$1$P==J,$G$7$g$&!#8!:wJ}<0$OB>$K$b$^$@$$$/$D$+(B
+$B$"$j$^$9$,!">\$7$/$O8e$[$I@bL@$7$^$9!#$3$3$G$O$b$&>/$7!"8!:w7k2L$N8+J}$K(B
+$B$D$$$FOC$r?J$a$F$$$-$^$9!#(B
+
+@c =====================================================================
+@node See Result,  , Search Pattern, Utilization
+@section $B7k2L$r8+$F$$$/(B
+
+$B0J2<!"(BEntry $B%P%C%U%!$G$h$/MQ$$$i$l$k%3%^%s%I$K$D$$$F@bL@$7$^$9!#%-!<A`:n(B
+$B$rK:$l$F$7$^$C$?$H$-$K$O!"(B@kbd{?} $B$r2!$;$P3NG'=PMh$^$9!#(B
+
+@itemize @bullet
+@item
+$BK\J8$N%9%/%m!<%k(B
+@table @kbd
+@item @key{SPC}
+$B0l2hLLJ,!"@h$K?J$`!#(B
+@item @key{DEL}
+$B0l2hLLJ,!"A0$KLa$k!#(B
+@item <
+$B%P%C%U%!$N@hF,$XLa$k!#(B
+@item >
+$B%P%C%U%!$N:G8e$X?J$`!#(B
+@end table
+
+@item
+$B%(%s%H%j$NA*Br(B
+@table @kbd
+@item n
+$B<!$N%(%s%H%j$K0\F0!#(B
+@item p
+$BA0$N%(%s%H%j$K0\F0!#(B
+@item M-n
+$B8!:wMzNr$r<!$K?J$`!#(B
+@item M-p
+$B8!:wMzNr$rA0$KLa$k!#(B
+@end table
+
+@item
+$BK\J8$KBP$9$kA`:n(B
+@table @kbd
+@item s
+Content $B%P%C%U%!$G(B @code{isearch-forward} $B$r<B9T!#(B
+@item w
+Content $B%P%C%U%!$NFbMF$r%-%k%j%s%0$K%;!<%V!#(B
+@item L
+$B%j%U%!%l%s%9$r0lMw!#(B
+@end table
+@end itemize
+
+@cindex Overview $B%b!<%I(B
+$B$^$@$^$@$"$j$^$9!#8+IU$+$C$?%(%s%H%j$,B?$/$F0lMw$,8+?I$$$H$-$K$O!"(B
+@kbd{v} $B$r2!$9$3$H$G(B @dfn{Overview $B%b!<%I(B} $B$KF~$j$^$9!#(B
+Overview $B%b!<%I$G$O(B Content $B%P%C%U%!$,%/%m!<%:$5$l!"(BEntry $B%P%C%U%!$r(B
+$B9-$/8+$k$3$H$,=PMh$^$9!#(BOverview $B%b!<%I$rH4$1$k$K$O!"$b$&0lEY(B @kbd{v}
+$B$H$9$k$+!"$"$k$$$O(B @key{SPC} $B$r2!$7$F2<$5$$!#(B
+
+$B5U$K%(%s%H%j$NK\J8$r9-$/8+$?$$$H$-$K$O!"(B@kbd{o} $B$,;H$($^$9!#$3$l$O(B
+Lookup $B$N%&%#%s%I%&$r%U%l!<%`0lGU$K9-$2!"0l;~E*$KI=<(NN0h$r9-$/<h$j$^$9!#(B
+@kbd{q} $B$G%P%C%U%!$rJD$8$l$P!"<!$+$i$^$?85$KLa$j$^$9!#(B
+
+$B0lEY%P%C%U%!$rJD$8$?8e$G$b!"$b$&0lEY(B @kbd{M-x lookup} $B$H$9$k$3$H$G!":G8e(B
+$B$K(B Lookup $B$rH4$1$?$H$-$N>uBV$,<h$jLa$5$l$^$9!#(B@kbd{q} $B$H(B @kbd{M-x lookup}
+$B$r7+$jJV$9$3$H$G!"2?EY$G$b8!:w7k2L$r8+D>$9$3$H$,=PMh$^$9!#(B
+
+$B8!:w7k2L$rI=<($7$?$^$^:G=i$N%P%C%U%!$KLa$j$?$$$H$-$K$O!"(B@kbd{r} $B$r2!$;$P(B
+OK $B$G$9!#(B@kbd{h} $B$rO"BG$9$l$P!"(BEntry $B%P%C%U%!$H(B Content $B%P%C%U%!$N4V$r(B
+$B1}I|$9$k$3$H$b=PMh$^$9!#(B
+
+$B$3$l$@$13P$($F$*$1$P!"F|>o$N:n6H$O==J,$K9T$J$($k$G$7$g$&!#$7$+$7(B Lookup
+$B$K$O!">l9g$K$h$C$FLr$KN)$D$$$/$D$+$N%3%^%s%I$,B>$K$bMQ0U$5$l$F$$$^$9!#(B
+$B<!>O0J9_$G!"$=$l$i$r4^$`(B Lookup $B$N40A4$J5!G=$K$D$$$F@bL@$7$^$9!#(B
+
+$B$5$F!"0J>e$G(B Lookup $B$r;H$&$?$a$NC;$+$$%D%"!<$b=*N;$G$9!#$$$+$,$G$7$g$&$+(B?
+Lookup $B$O$"$J$?$NMWK>$rK~$?$7$F$/$l$=$&$G$9$+(B? $B$b$7;H$C$F$$$F!V$b$C$H$3(B
+$B$s$J5!G=$,M_$7$$$>!W$H$+$$$&$3$H$,$"$j$^$7$?$i!"1sN8$J$/%a!<%k$G$G$bEA$((B
+$B$F2<$5$$!#(B
+
+$B$=$l$G$O!"$"$J$?$N$h$j2wE,$J8!:w%i%$%U$r5'$C$F!#(BHappy Looking Up!
+
+@c *********************************************************************
+@node Information,  , Utilization, Top
+@chapter $B>pJsJT(B
+
+$B$3$3$G$O(B Lookup $B$H4XO"$N$"$k>pJs$K$D$$$F$^$H$a$F>R2p$7$^$9!#(B
+
+@menu
+* Lookup Homepage::             $B%[!<%`%Z!<%8$N9=@.(B
+* Source of Information::       $BCN$C$F$*$/$H4r$7$$>pJs8;(B
+* Attention for Emacsen::       $B3F<o(B Emacs $BKh$NCm0UE@(B
+@end menu
+
+@c =====================================================================
+@node Lookup Homepage, Source of Information, Information, Information
+@section $B%[!<%`%Z!<%8$N9=@.(B
+
+@menu
+* General Information::         $B0lHL>pJs(B
+* User Information::            $B%f!<%6>pJs(B
+* Developer Information::       $B3+H/<T>pJs(B
+@end menu
+
+@c ---------------------------------------------------------------------
+@node General Information, User Information, Lookup Homepage, Lookup Homepage
+@subsection $B0lHL>pJs(B
+
+@table @asis
+@item $B%@%&%s%m!<%I%5%$%H0lMw(B
+@item $B%9%/%j!<%s%7%g%C%H(B
+@item $B%a!<%j%s%0%j%9%H(B
+@item $BA4J88!:w(B
+@end table
+
+@c ---------------------------------------------------------------------
+@node User Information, Developer Information, General Information, Lookup Homepage
+@subsection $B%f!<%6>pJs(B
+
+@table @asis
+@item $B%f!<%6!<%:%,%$%I(B (@inforef{Top, Lookup User's Guide, lookup-guide})
+$B$3$N%,%$%I$G$9!#(B
+@item $B%f!<%6!<%:%^%K%e%"%k(B (@inforef{Top, Lookup Manual, lookup})
+Lookup $B$N@_Dj$HMxMQJ}K!$K$D$$$F40A4$K@bL@$7$?%^%K%e%"%k$G$9!#(B
+$B$3$N%,%$%I$N<!$KFI$`$Y$->pJs8;$G$9!#(B
+@item $B<-=q%G!<%?%Y!<%9(B (@url{http://openlab.ring.gr.jp/lookup/dicts/})
+Lookup $B$G;H$($k<-=q$N>pJs$r=8$a$?%Z!<%8$G$9!#%U%j!<$J<-=q%G!<%?$d!"(B
+$B<-=q$r$h$j;H$$$d$9$/$9$k$?$a$N@_Dj%U%!%$%k=8$J$I$,$^$H$a$i$l$F$$$^$9!#(B
+@item Lookup NEWS (@file{NEWS})
+Lookup $B$N%P!<%8%g%s%"%C%W$KH<$J$&<g$JJQ99E@$r$^$H$a$?%U%!%$%k$G$9!#(B
+$B$I$3$,JQ$o$C$?$+3NG'$7!"I,MW$G$"$l$P@_Dj%U%!%$%k$r99?7$7$F2<$5$$!#(B
+@item Lookup FAQ (@file{etc/FAQ})
+$B$h$/$"$k<ALd$H$=$N2sEz$N%j%9%H$G$9!#2?$+5?Ld$K;W$&$3$H$,$"$k$H$-$K$O!"(B
+$B$^$::G=i$K$3$l$r8+$F$_$F2<$5$$!#(B
+@item Lookup PROBLEMS (@file{etc/PROBLEMS})
+$B4{CN$NLdBjE@$N%j%9%H$G$9!#%P%0$+$J(B? $B$H;W$&A0$K!"(B
+$B4{$KCN$i$l$?LdBj$G$J$$$+3NG'$7$F$_$F2<$5$$!#(B
+@end table
+
+@c ---------------------------------------------------------------------
+@node Developer Information,  , User Information, Lookup Homepage
+@subsection $B3+H/<T>pJs(B
+
+@table @asis
+@item Lookup TODO (@file{etc/TODO})
+$B$3$l$+$i$d$k$Y$-$3$H$N%j%9%H$G$9!#(B
+@end table
+
+@c =====================================================================
+@node Source of Information, Attention for Emacsen, Lookup Homepage, Information
+@section $BCN$C$F$*$/$H4r$7$$>pJs8;(B
+
+$B$3$l$+$i99$K(B Lookup $B$rCN$m$&$H$9$k?M$N$?$a$K!"$$$/$D$+$NLrN)$D>pJs8;$r(B
+$B$^$H$a$F>R2p$7$F$*$-$^$9!#(B
+
+@menu
+* Related Softwares::           $B4XO"%=%U%H%&%'%"(B
+* Dictionary Links::            $BEE;R<-=q4XO"%j%s%/(B
+* Mailing Lists::               $B%a!<%j%s%0%j%9%H(B
+@end menu
+
+@c ---------------------------------------------------------------------
+@node Related Softwares, Dictionary Links, Source of Information, Source of Information
+@subsection $B4XO"%=%U%H%&%'%"(B
+
+@table @asis
+@item SDIC (@url{http://pine.kuee.kyoto-u.ac.jp/member/tsuchiya/sdic/index.html})
+$B%U%j!<$KG[I[$5$l$F$$$k1Q8l<-=q$+$i<j7Z$K8!:w$r9T$J$&$3$H$rL\E*$H$7$?(B
+elisp $B$N8!:w%=%U%H%&%'%"$G$9!#$3$N%=%U%H%&%'%"$GMQ$$$i$l$F$$$k(B SDIC
+$B$H$$$&<-=q7A<0$O!"(BLookup $B$N(B ndic $B%(!<%8%'%s%H$G$bMxMQ=PMh$^$9!#(B
+@item eblook (@url{http://openlab.ring.gr.jp/lookup/eblook/})
+Lookup $B$+$i$NMxMQ$rA[Dj$7$F:n$i$l$F$$$k(B CD-ROM $B<-=q8!:w%3%^%s%I$G$9!#(B
+$B8!:w$N$?$a$K(B EB $B%i%$%V%i%j$rMxMQ$7$F$*$j!"B?$/$NEE;R%V%C%/$d(B EPWING
+$B5,Ls$K=`5r$7$?(B CD-ROM $B<-=q$r07$&$3$H$,=PMh$^$9!#(B
+@item NDTPD (@url{http://www.sra.co.jp/people/m-kasahr/ndtpd/})
+CD-ROM $B<-=q$+$i8!:w$r9T$J$&<-=q%5!<%P$G$9!#(BNDTP $B$H$$$&8!:w%W%m%H%3%k$r(B
+$B<BAu$7$F$*$j!"(BEPWING $B$J$I$K=`5r$7$?;THN$N(B CD-ROM $B=q@R$r%M%C%H%o!<%/$G(B
+$B6&M-$9$k$3$H$,=PMh$^$9(B($B<-=q$N%i%$%;%s%9$OJLESI,MW$G$9(B)$B!#(B
+@item DICT $B%W%m%8%'%/%H(B (@url{http://www.dict.org})
+$B%$%s%?!<%M%C%H$N<-=q8!:w%W%m%H%3%k(B DICT(RFC 2229) $B$J$I$r3+H/$7$F$$$k(B
+$B%W%m%8%'%/%H$G$9!#<-=q%5!<%P(B dictd $B$d!"$=$l$GMQ$$$k$3$H$N=PMh$k(B
+$B%U%j!<$J<-=q$J$I$,G[I[$5$l$F$$$^$9!#(B
+@item Namazu (@url{http://openlab.ring.gr.jp/namazu/"})
+$BB??t$N%U%!%$%k$+$i9bB.$K8!:w$r9T$J$&$?$a$NA4J88!:w%(%s%8%s$G$9!#(B
+$B%a!<%j%s%0%j%9%H$J$IBgNL$N>pJs$r$"$i$+$8$a%$%s%G%C%/%92=$7$F$*$/$3$H$G!"(B
+$BL\E*$N8l$r4^$s$@%U%!%$%k$rB(:B$K8+IU$1=P$;$^$9!#(B
+@end table
+
+@c ---------------------------------------------------------------------
+@node Dictionary Links, Mailing Lists, Related Softwares, Source of Information
+@subsection $BEE;R<-=q4XO"%j%s%/(B
+
+@table @asis
+@item $BEE;R%V%C%/$N9->l(B (@url{http://www.ebxa.gr.jp})
+$BEE;R%V%C%/5,3J$N8x<0>pJs%Z!<%8$G$9!#5,3J$N@bL@$d@=IJ>R2p$J$I$,$"$j$^$9!#(B
+@item EPWING $B%3%s%=!<%7%"%`(B (@url{http://www.epwing.or.jp})
+EPWING $B5,Ls$N8x<0>pJs%Z!<%8$G$9!#5,Ls$N@bL@$d@=IJ>R2p$J$I$,$"$j$^$9!#(B
+@item EB $B%i%$%V%i%j(B (@url{http://www.sra.co.jp/people/m-kasahr/eb/})
+$BEE;R%V%C%/$d(B EPWING $B5,Ls$KBP1~$7$?8!:wMQ%i%$%V%i%j$G$9!#>e5-$N(B eblook
+$B$d(B NDTPD $B$O$3$l$rMQ$$$F8!:w$7$F$k$?$a!"(BLookup $B$N(B CD-ROM $B8!:w$O$[$H$s$I(B
+$B$3$N%i%$%V%i%j$K0MB8$7$F$$$^$9!#(B
+@item $BEE;R<-=q%*!<%W%s%i%\(B (@url{http://openlab.ring.gr.jp/edict/})
+$BEE;R<-=q4X78$N>pJs8r49$d3+H/$rL\E*$H$7$?%[!<%`%Z!<%8$G$9!#(B
+EB $B%i%$%V%i%j$,BP1~$7$F$J$$$$$/$D$+$N(B CD-ROM $B<-=q$+$i8!:w$r9T$J$&$?$a$N(B
+$B%=%U%H$J$I$,G[I[$5$l$F$$$^$9!#(B
+@end table
+
+@c ---------------------------------------------------------------------
+@node Mailing Lists,  , Dictionary Links, Source of Information
+@subsection $B%a!<%j%s%0%j%9%H(B
+
+@table @asis
+@item lookup ML (@url{http://openlab.ring.gr.jp/lookup/ml.html})
+Lookup $B$K$D$$$F>pJs8r49$r9T$J$&$?$a$N%a!<%j%s%0%j%9%H$G$9!#1Q8lHG$H(B
+$BF|K\8lHG$H$,$"$j$^$9!#(BLookup $B$N:G?7>pJs$O!"$3$N%a!<%j%s%0%j%9%H$G(B
+$BF@$k$3$H$,=PMh$^$9!#(B
+@item edict ML (@url{http://openlab.ring.gr.jp/edict/})
+$BEE;R<-=q0lHL$K$D$$$F>pJs8r49$r9T$J$&$?$a$N%a!<%j%s%0%j%9%H$G$9!#(B
+$B<-=q$r9XF~$9$k>e$G$N%N%&%O%&$d!"%U%j!<$J8!:w%D!<%k$K$D$$$F$N(B
+$BOCBj$J$I$,=P$F$$$^$9!#(B
+@item ndtpd ML (@url{http://www.sra.co.jp/people/m-kasahr/ndtpd/ml-ja.html})
+$B<-=q%5!<%P(B NDTPD $B$N%a!<%j%s%0%j%9%H$G$9!#;THN$N(B CD-ROM $B<-=q$r(B
+$BMxMQ$9$k$?$a$N>pJs$,$d$j$H$j$5$l$^$9!#$3$N%=%U%H%&%'%"$K4^$^$l$k(B
+EB $B%i%$%V%i%j$O(B Lookup $B$N(B CD-ROM $B8!:w$N$+$J$a$H$J$C$F$$$k$N$G!"(B
+CD-ROM $B<-=q$rMxMQ$5$l$kJ}$O$3$A$i$K$b;22C$5$l$k$3$H$r$*4+$a$7$^$9!#(B
+@end table
+
+@c =====================================================================
+@node Attention for Emacsen,  , Source of Information, Information
+@section $B3F<o(B Emacs $BKh$NCm0UE@(B
+
+Lookup PROBLEMS(@file{etc/PROBLEMS})$B$r;2>H!#(B
+
+@bye
+
+@c Local Variables:
+@c mode:outline-minor
+@c outline-regexp:"@\\(ch\\|sec\\|subs\\)"
+@c End:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.