»¨µÄ¡¤Î¤Ë¤Ã¤
2004-08-11 (¿å)
_ [xyzzy] PL/SQL ¤Î list-function (from shj's diary)
- ¤Ï¤º¤«¤·¤Ê¤¬¤é PL/SQL ¤òÁ´¤¯ÃΤé¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢¤³¤ó¤Ê´¶¤¸¤Ê¤ó¤Ç¤·¤ç¤¦¤«¡£
- ¥Æ¥±¥È¡¼¤Ë½¤Àµ¤·¤Æ¤ä¤Ã¤Æ¤¯¤À¤µ¤¤¡£(^^;;
(in-package "editor") (defun PL/SQL-build-summary-of-functions () (let (result package-range-alist package begin end func) (save-excursion ;; search package range (goto-char (point-min)) (while (scan-buffer "^[ \t]*create[ \t]+or[ \t]+replace[ \t]+package[ \t]+body[ \t]+\\([^ \t\n]+\\)[ \t]+is" :regexp t :case-fold t) (setq package (match-string 1)) (push (list (current-line-number) (concat "package " package)) result) (setq begin (point)) (if (scan-buffer (concat "end[ \t\n]+" (regexp-quote package) ";") :regexp t :case-fold t :tail t) (setq end (point)) (setq end (point-max))) (push (cons package (cons begin end)) package-range-alist) (goto-char end) (forward-char)) (goto-char (point-min)) ;; search function/procedure/cursor (while (scan-buffer "^[ ^t]*\\(?:function\\|procedure\\|cursor\\)[ \t]+\\([^ \t\n(]+.+?\\)[ \t]+is" :regexp t :case-fold t) (setq func (match-string 1)) (setq package (car (rassoc-if #'(lambda (range) (and (< (car range) (point)) (< (point) (cdr range)))) package-range-alist))) (when package (setq func (concat package "." func))) (push (list (current-line-number) func) result) (next-line))) (stable-sort result #'< :key #'car))) (add-hook '*sql-mode-hook* #'(lambda () (make-local-variable 'build-summary-function) (setq build-summary-function 'PL/SQL-build-summary-of-functions)))
ËÜÆü¤Î¥Ä¥Ã¥³¥ß(Á´2·ï) [¥Ä¥Ã¥³¥ß¤òÆþ¤ì¤ë]
_ ¤Õ¤©¤Ê¤ß [list-function ¤¢¤ê¤¬¤È¡¼¤´¤¶¤¤¤Þ¤¹¡£¼ê¸µ¤Î¥½¡¼¥¹¤Ç³Îǧ¤·¤Ê¤¬¤é¥«¥¹¥¿¥Þ¥¤¥º¤·¤Æ¤Þ¤¹¡£:-) # ¤Ê¤ó¤Ç..]
_ OHKUBO [²ÆµÙ¤ß¼«Í³¸¦µæ¤Îȯɽ¤ò³Ú¤·¤ß¤Ë¤·¤Æ¤¤¤Þ¤¹ (^^;;]