[xyzzy:04328] 関数一覧
- Subject: [xyzzy:04328] 関数一覧
- From: Masahiro Hayashi <hayashi@xxxxxxxxxxxxxx>
- X-mailer: EdMax Ver2.61
どうも、林です。またまた質問です。いつの日か、逆に質問に答えられる
ようになりたいですね。
さて質問なのですが、相変わらず 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....