[#37492] ReFe 0.6 — Minero Aoki <aamine@...>

あおきです。

27 messages 2003/04/01
[#37525] ReFe 0.7 (Re: ReFe 0.6) — Minero Aoki <aamine@...> 2003/04/06

あおきです。

[#37528] Re: ReFe 0.7 (Re: ReFe 0.6) — Koji Arai <JCA02266@...> 2003/04/07

新井です。

[#37545] Re: ReFe 0.7 (Re: ReFe 0.6) — Kazuhiro NISHIYAMA <zn@...> 2003/04/10

西山和広です。

[#37546] Re: ReFe 0.7 (Re: ReFe 0.6) — Koji Arai <JCA02266@...> 2003/04/10

新井です。

[#37551] Re: ReFe 0.7 (Re: ReFe 0.6) — Kazuhiro NISHIYAMA <zn@...> 2003/04/11

西山和広です。

[#37554] refe.el (Re: ReFe 0.7 (Re: ReFe 0.6)) — Koji Arai <JCA02266@...> 2003/04/12

新井です。

[#37619] net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド — Keisuke Minami <keisuke@...>

こんにちは。三並です。

18 messages 2003/04/26

[#37622] net/imapのTHREAD Extension 対応 — wanowa.kimura@... (kimura wataru)

 木村といいます。

31 messages 2003/04/27
[#37628] Re: net/imapのTHREAD Extension 対応 — Shugo Maeda <shugo@...> 2003/04/28

前田です。

[#37632] Re: net/imap のTHREAD Extension 対応 — wanowa.kimura@... (kimura wataru) 2003/04/28

 木村といいます。

[#37635] Re: net/imap のTHREAD Extension 対応 — Shugo Maeda <shugo@...> 2003/04/30

前田です。

[#37638] Re: net/imap のTHREAD Extension 対応 — wanowa.kimura@... (kimura wataru) 2003/05/01

 木村です。

[#37641] Re: net/imap のTHREAD Extension 対応 — Shugo Maeda <shugo@...> 2003/05/02

前田です。

[#37647] Re: net/imap のTHREAD Extension 対応 — wanowa.kimura@... (kimura wataru) 2003/05/06

 木村です。

[#37648] マッチした部分を配列にしまう方法 — Hirano Satoshi <hirano@...> 2003/05/07

こんにちは。

[ruby-list:37554] refe.el (Re: ReFe 0.7 (Re: ReFe 0.6))

From: Koji Arai <JCA02266@...>
Date: 2003-04-12 07:03:37 UTC
List: ruby-list #37554
新井です。

In message "[ruby-list:37551] Re: ReFe 0.7 (Re: ReFe 0.6)"
  on 11 Apr 2003 20:38:39 +0900,
  Kazuhiro NISHIYAMA <zn@mbf.nifty.com> wrote:
> 西山和広です。

> [ruby-list:37547]の方の話ですが、今だとKernel#Arrayのような
> クラス名と同名のメソッドがひけないみたいです。

refe と同様 Kernel#Array とすれば出ますね。

> Net::HTTP#get
> Net::HTTP.get
> Net::HTTP.get_print
> もgetがひけませんでした。

これらは、--- で始まらない説明が出るために前提が崩れますね。
":" 始まりも許せばいいのでしょうけど。

[ruby-list:37547] を実装しました。例によって即興です。

--
新井康司 (Koji Arai)


(defvar refe-program-name
  (if (featurep 'meadow)
      "ruby"
    "refe"))
(defvar refe-program-args
  (if (featurep 'meadow)
      '("-S" "refe")
    nil))
(defvar refe-buffer-name "*Refe*")
(defvar refe-completion-table nil)

(defun refe-call-process (buf &rest args)
  (let ((coding-system-for-read 'euc-japan))
    (apply 'call-process refe-program-name nil buf nil
           (append refe-program-args args))))

(defun refe-make-completion-table ()
  (setq refe-completion-table (make-vector 547 0))
  (with-temp-buffer
    (refe-call-process t)
    (goto-char (point-min))
    (while (looking-at "^[A-Z][A-Za-z_0-9:]*")
      (intern (match-string 0) refe-completion-table)
      (forward-line)))

  (with-temp-buffer
    (refe-call-process t "*")
    (goto-char (point-min))
    (while (looking-at "^[A-Z][A-Za-z_0-9:]*[#.]\\(.*\\)")
      (intern (match-string 1) refe-completion-table)
      (intern (match-string 0) refe-completion-table)
      (forward-line)))
  nil)

(refe-make-completion-table)

(defun refe-get-word-at-point ()
  (save-excursion
    (while (looking-at "\\sw\\|\\s_")
      (forward-char 1))
    (if (or (re-search-backward "\\sw\\|\\s_"
				(save-excursion (beginning-of-line) (point))
				t)
	    (re-search-forward "\\(\\sw\\|\\s_\\)+"
			       (save-excursion (end-of-line) (point))
			       t))
	(progn (goto-char (match-end 0))
	       (buffer-substring (point)
				 (progn (forward-sexp -1)
					(while (looking-at "\\s'")
					  (forward-char 1))
					(point))))
      nil)))

(defun refe ()
  (interactive)
  (let* ((default (refe-get-word-at-point))
	 (completion-ignore-case t)
	 (word (completing-read (if default
				    (format "Class or Method (default %s): " default)
				  "Class or Method: ")
				refe-completion-table nil nil nil nil default))
	 (buf (or (get-buffer refe-buffer-name)
		  (generate-new-buffer refe-buffer-name)))
	(pop-up-windows t)
	(pop-up-frames nil))
    (set-buffer buf)
    (setq buffer-read-only nil)
    (erase-buffer)

    (refe-call-process buf word)

    (goto-char (point-min))
    (if (re-search-forward "^---" nil t)
	nil
      (let ((klass-table (make-vector 17 0))
	    (completion-ignore-case t)
	    klass)
	(goto-char (point-min))
	(while (looking-at "^\\([A-Z][A-Za-z_0-9:]*\\)[#.]")
	  (intern (match-string 1) klass-table)
	  (forward-line))
	(if (= (point) (point-min))
	    nil ; (message "no such class or method: %s" word)
	  (setq klass (completing-read "Class: "
				       klass-table nil nil nil nil nil))
	  (erase-buffer)
	  (refe-call-process buf klass word))))

    (set-buffer-modified-p nil)
    (setq buffer-read-only t)
    (goto-char (point-min))
    (display-buffer buf)))

In This Thread