久住憲嗣
nel****@soran*****
2004年 7月 4日 (日) 12:14:52 JST
久住です。 On 2004/07/04, at 11:50, nishi****@hh***** wrote: > fuyuk****@hadal***** (Kimura Fuyuki) writes: > >> gosh> (info-apropos "cdr") >> (("cdr") ("sys-tcdrain") ("set-cdr!") ("car+cdr")) >> >> のような結果にならなきゃいけない気がします。が、私もelispはよく知らな >> いので、それ以上追いかけていません。 >> (そもそもstringをカッコでくくる意味がわからん) > > たぶん、iLISP側(elisp)で > > (try-completion "cdr" '(("cdr") ("sys-tcdrain") ("set-cdr!") > ("car+cdr"))) > => t > (try-completion "cd" '(("cdr") ("sys-tcdrain") ("set-cdr!") > ("car+cdr"))) > => "cdr" こちら、FSF Emacsでは (try-completion "cd" '("cdr" "sys-tcdrain" "set-cdr!" "car+cdr")) でも、通るようなのですが、XEmacsではだめでした。 ;;; Gaucheのaproposと仕様の違うinfo-aproposを取り込んでもらうのはアレな気が ;;; してきましたので、iLISPに添付する形にすると思います。はい。 とりあえずpatchを添付しておきます。 Index: lib/gauche/interactive.scm =================================================================== RCS file: /cvsroot/gauche/Gauche/lib/gauche/interactive.scm,v retrieving revision 1.13 diff -c -r1.13 interactive.scm *** lib/gauche/interactive.scm 9 Dec 2003 19:45:47 -0000 1.13 --- lib/gauche/interactive.scm 4 Jul 2004 03:08:41 -0000 *************** *** 36,42 **** (define-module gauche.interactive (export apropos describe d ;; autoloaded symbols follow ! info reload reload-modified-modules module-reload-rules reload-verbose) ) (select-module gauche.interactive) --- 36,42 ---- (define-module gauche.interactive (export apropos describe d ;; autoloaded symbols follow ! info info-apropos reload reload-modified-modules module-reload-rules reload-verbose) ) (select-module gauche.interactive) *************** *** 135,140 **** --- 135,141 ---- ;; Autoload online info viewer (autoload gauche.interactive.info info) + (autoload gauche.interactive.info info-apropos) ;; Autoload module reloader (autoload gauche.reload reload reload-modified-modules Index: lib/gauche/interactive/info.scm =================================================================== RCS file: /cvsroot/gauche/Gauche/lib/gauche/interactive/info.scm,v retrieving revision 1.6 diff -c -r1.6 info.scm *** lib/gauche/interactive/info.scm 5 Jul 2003 03:29:11 -0000 1.6 --- lib/gauche/interactive/info.scm 4 Jul 2004 03:08:41 -0000 *************** *** 40,46 **** (use file.util) (use gauche.process) (use gauche.config) ! (export info) ) (select-module gauche.interactive.info) --- 40,46 ---- (use file.util) (use gauche.process) (use gauche.config) ! (export info info-apropos) ) (select-module gauche.interactive.info) *************** *** 93,108 **** )) (define (info fn) (unless *info* (set! *info* (open-info-file (find-info-file))) (for-each (lambda (p) (hash-table-put! *info-index* (car p) (cdr p))) (info-parse-menu (info-get-node *info* ! "Function and Syntax Index")))) ! (let1 nodename (hash-table-get *info-index* (x->string fn) #f) ! (unless nodename (errorf "no info document for ~a" fn)) ! (viewer (ref (info-get-node *info* nodename) 'content))) ! (values)) (provide "gauche/interactive/info") --- 93,119 ---- )) (define (info fn) + (initialize-info) + (let1 nodename (hash-table-get *info-index* (x->string fn) #f) + (unless nodename (errorf "no info document for ~a" fn)) + (viewer (ref (info-get-node *info* nodename) 'content))) + (values)) + + (define (info-apropos key) + (initialize-info) + (filter-map (lambda (k) + (if (string-scan k key) + (list k) + #f)) + (hash-table-keys *info-index*))) + + (define (initialize-info) (unless *info* (set! *info* (open-info-file (find-info-file))) (for-each (lambda (p) (hash-table-put! *info-index* (car p) (cdr p))) (info-parse-menu (info-get-node *info* ! "Function and Syntax Index"))))) (provide "gauche/interactive/info")