[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:04328] 関数一覧



どうも、林です。またまた質問です。いつの日か、逆に質問に答えられる
ようになりたいですね。

さて質問なのですが、相変わらず delphi-mode を作っておりまして、
list-functionで関数一覧をとりたいのですが、どうも後一歩決まりませ
ん。したのようにやると、関数一覧にprocedure の名称がうまく取れたの
で、正規表現を使って、procedure と function を取れるようにコメント
部分のように変更したのですが、名称が取れずに、procedure function 
となってしまいます。

(defun delphi-build-summary-of-functions ()
  (let ((result nil))
    (save-excursion
      (goto-char (point-min))
      (while 
	  (scan-buffer "^[ \t]*procedure[ \t]+\\([^ \t\n{(]+\\)"
			  :regexp t :tail t)
;	  (scan-buffer "^[ \t]*\\(procedure\\|function\\)[ \t]+\\([^ \t\n{(]+\\)"
;			  :regexp t :tail t)
	(push (list (current-line-number) (match-string 1)) result)
      )
    )
    (nreverse result)
  ))

コメント部分に変えて、なぜそのようにかわってしまうのでしょうか?


どうも分からなかったので、while部分を以下のように変えてみました。

      (while (or
	  (scan-buffer "^[ \t]*procedure[ \t]+\\([^ \t\n{(]+\\)"
			  :regexp t :tail t)
	  (scan-buffer "^[ \t]*function[ \t]+\\([^ \t\n{(]+\\)"
			  :regexp t :tail t)
	     )
;	  (scan-buffer "^[ \t]*\\(procedure\\|function\\)[ \t]+\\([^ \t\n{(]+\\)"
;			  :regexp t :tail t)
	(push (list (current-line-number) (match-string 1)) result)
      )

こうしてみると、名称はきちんと取れるのですが、まず procedure を探
して、procedureが見つからなくなってから、functionを探そうとするの
で、procedureの間のfunctionみたいなものはうまく取れません。

HATTORIさんのperlfns.lを元に作ってみているので、いまいち
 delphi-build-summary-of-functions
の中身でどのような動きをすれば良いのか、分かっていないのですが、bu
ild-summary-of-functionsはどのような動きをすれば良いのでしょうか。
また何故にうまくいかないのでしょうか。
 まだまだ、common-lispの勉強が足りないとは思うのですが、よろしく
お願いいたします。

-- 
--------------------------------------------
(株)インテック  システム事業本部
        データウェアシステム部
  開発グループ     林 雅大  (Masahiro.H)
         e-mail: hayashi@xxxxxxxxxxxxxx
 〒136-8637 東京都江東区新砂 1-3-3
 TEL (03)5665-5137  FAX (03)5665-5186
--------------------------------------------
                             (_ _) ZZZzzz....

Index Home