From: rubikitch Date: 2006-02-13T23:34:46+09:00 Subject: [ruby-list:41827] Re: RRSE 0.1 From: rubikitch Subject: [ruby-list:41826] Re: RRSE 0.1 Date: Mon, 13 Feb 2006 22:51:51 +0900 > ReFeの扱っているメソッド名のリストは > /usr/local/share/refe/method_document_comp > にそのまま載っています。 これは引数の情報までは書いていないのでダメですね…。 今気付いたのですが、rrse-get-specs関数が見付かりません。 > すでに生成されたデータを使えば初期化にかかる時間は短縮できると思います。 さっそくですがこれについてやってみました。 あらかじめ ~/.rrse-table, ~/.rrse-rev-table を作成しておきます。 diff -u rrse-0.1/rrse-refe-listdescs /home/rubikitch/compile/rrse-0.1/rrse-refe-listdescs --- rrse-0.1/rrse-refe-listdescs 2006-02-13 14:23:25.000000000 +0900 +++ /home/rubikitch/compile/rrse-0.1/rrse-refe-listdescs 2006-02-13 23:17:30.000000000 +0900 @@ -57,10 +57,10 @@ db.method_document.complete(nil, nil, '*').each do |spec| case spec when /^man\..*$/ - when /^[A-Za-z0-9_:]+(#|\.)[^#.]+$/ + when /^[A-Za-z0-9_:]+(#|\.)[^#\.]+$/ descs << Description.new(spec, db.method_document[spec]) else - raise "invalid information" + $stderr.puts "invalid information: #{spec}" end end diff -u rrse-0.1/rrse.el /home/rubikitch/compile/rrse-0.1/rrse.el --- rrse-0.1/rrse.el 2006-02-13 14:23:25.000000000 +0900 +++ /home/rubikitch/compile/rrse-0.1/rrse.el 2006-02-13 23:27:22.000000000 +0900 @@ -46,6 +46,9 @@ (defvar rrse-idle-delay 0.5) +(defvar rrse-table-file "~/.rrse-table") +(defvar rrse-rev-table-file "~/.rrse-rev-table") + ;;;; Utitility functions (defun rrse-id-char-p (c) "Return whether character C is in [a-zA-Z0-9_]" @@ -106,28 +109,21 @@ (t (rrse-filter fun (cdr list))))) ;;;; Table Creation -(defun rrse-make-table () + +(defun rrse-make-table (file) (with-temp-buffer - (rrse-call-process t) + (insert-file-contents file) + (goto-char 1) (let ((table (make-vector (count-lines (point-min) (point-max)) nil))) (rrse-each-line (lambda (line) (aset table (count-lines (point-min) (point)) (split-string line "[\t\n]")))) table))) -(defun rrse-make-rev-table () - (with-temp-buffer - (rrse-call-process t "-r") - (let ((table (make-vector (count-lines (point-min) (point-max)) nil))) - (rrse-each-line (lambda (line) - (aset table (count-lines (point-min) (point)) - (split-string line "[\t\n]")))) - table))) - (defun rrse-prepare-table () (if (null rrse-forward-table) - (setq rrse-forward-table (rrse-make-table) - rrse-rev-table (rrse-make-rev-table)))) + (setq rrse-forward-table (rrse-make-table rrse-table-file) + rrse-rev-table (rrse-make-table rrse-rev-table-file)))) ;;;; Find suitable methods -- rubikitch http://www.rubyist.net/~rubikitch/