[Gauche-devel-jp] Re: iLISP

Back to archive index

久住憲嗣 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")




Gauche-devel-jp メーリングリストの案内
Back to archive index