📄 namazu.el
字号:
;; -*- Mode: Emacs-Lisp -*-;;;; Mule $B>e$G(B Namazu $B$rMxMQ$7$?8!:w$r9T$&$?$a$N(B elisp $B$G$9!#(B;;;; $Id: namazu.el,v 1.13 2000/02/24 06:48:33 kose Exp $(defconst namazu-version "namazu.el 1.0.3");; Namazu $B$K$h$k8!:w7k2L$,;X$9%I%-%e%a%s%H(B($BN`(B)$B$,(B;; $B%m!<%+%k%G%#%9%/>e$K$"$k>l9g$K$O$=$l$rD>@\;2>H$7!"(B;; $B%M%C%H%o!<%/>e$K$"$k>l9g$K$O(B brouse-url $B$N5!G=$rMQ$$$F(B;; $B$=$l$r;2>H$9$k$3$H$,$G$-$^$9!#(B;;;; $B%m!<%+%k%G%#%9%/>e$N%I%-%e%a%s%H(B($BN`(B)$B$,05=L$7$F$"$k>l9g!"(B;; jka-compr $B$N5!G=$rMQ$$$F$=$l$rE83+$7$h$&$H$7$^$9!#(B;;;; Namazu $B%b!<%I$G$O%m!<%+%k%G%#%9%/$K$J$$%U%!%$%k$X$N(B;; $B%"%/%;%9$K$D$$$F$O(B brouse-url $B$K0lG$$7$F$$$^$9!#(B;; $B$=$&$$$C$?$o$1$G$9$N$G(B browse-url-browser-function $B$K(B;; $BE,@Z$J@_Dj$r$7$F$*$+$J$$$H!"30It$K$"$k%j%=!<%9$r(B;; $B;2>H$9$k$3$H$O$G$-$^$;$s!#$?$H$($P$3$s$J@_Dj$r$7$^$9(B:;;;; (autoload 'namazu "namazu" nil t);; (setq browse-url-browser-function 'browse-url-netscape);;;; font-lock $B$d(B hilit19 $B$,%m!<%I$7$F$"$l$P(B;; $B8!:w7k2L$O(B($B$$$/$i$+(B)$B2Z$d$+$KI=<($5$l$k$G$7$g$&!#(B;;;; $BMQ0U$9$kI,MW$,$"$k$+$bCN$l$J$$$b$N(B:;; $BA0=R$NDL$j(B browse-url $B$,I,MW$G$9$,!"(B19.28 $B%Y!<%9$N(B Mule $B$K$O(B;; $B$3$l$,4^$^$l$F$$$J$$$h$&$G$9!#F1:-$N(B "browse-url-for-emacs-19.28.el";; $B$r$*;H$$2<$5$$!#(B;;;; $B8!:wJ}K!(B:;; $B>e5-$N@_Dj$r=*$($?$i(B M-x namazu $B$H%?%$%W$7$F$/$@$5$$!#(B;; $B$9$k$H8!:w$N%-!<(B($B>r7o<0(B)$B$rJ9$$$F$-$^$9$N$G(B namazu $B$H$+(B;; ruby & perl $B$H$$$C$?8!:w%-!<$rF~NO$7$^$9!#(B;; $BF~NO$r=*$($k$H(B Namazu $B$,5/F0$5$l!"(B;; $B8!:w7k2L$rI=<($9$k%P%C%U%!$,:n$i$l$^$9!#(B;; $B$3$N%P%C%U%!Fb$G$O0J2<$N%-!<A`:n$,Dj5A$5$l$F$$$^$9!#(B;;;; $BA0%Z!<%8(B $BA09`(B $B<!9`(B $B<!%Z!<%8(B;; $BI8=`(B(1) P p n N;; $BI8=`(B(2) [BkSp] [Space];; $BI8=`(B(3) M-[Tab] [Tab];; vi $BIw(B h k j l;; $B%+!<%=%k(B [left] [up] [down] [right];;;; $B%Z!<%8$N@hF,$X(B <;; $B%Z!<%8$NKvHx$X(B >;; $B%I%-%e%a%s%H$N;2>H(B g $B$^$?$O(B [Enter];; $B>r7o$rDI2C$7$F:F8!:w(B r;; $B8!:w7k2L$N>C5n(B q;; namazu $B=*N;(B Q;; $B%X%k%WI=<((B ?;;;; $B$^$?!"(Bmouse $B$N$^$s$J$+$N%\%?%s$r2!$9$H!"2!$7$?0LCV$K$h$C$F!"(B;; "$B%I%-%e%a%s%H$N;2>H(B"$B!"(B"$BA0%Z!<%8(B"$B!"(B "$B<!%Z!<%8(B" $B$N$I$l$+$NF0:n$r9T$J(B;; $B$$$^$9!#(B;;;; $B%G%U%)%k%H0J30$N%$%s%G%C%/%9(B(NMZ.*)$B$r;HMQ$7$?$$>l9g$O!"(B;; C-u M-x namazu $B$H%?%$%W$9$k$3$H$G%$%s%G%C%/%9$NCV$$$F$"$k%G%#%l%/%H(B;; $B%j$r;XDj$9$k$3$H$b=PMh$^$9!#$^$?!"8D!9$N%G%#%l%/%H%j$KBP$7$FJLL>$r(B;; $BDj5A$9$k$3$H$b2DG=$G$9!#@_DjNc$J$I>\$7$$$3$H$O(B namazu-dir-alist $B$N(B;; $B@bL@$r;2>H$7$F$/$@$5$$(B :-P$B!#(B;;;; $B:G?7HG$NF~<j$K$D$$$F(B:;; namazu.el $B$N:G?7HG$O(B namazu $B$KIUB0$9$k$b$N$d!"(Bnamazu ML $B$J$I$G(B;; $BF~<j2DG=$G$9(B.;;;; $BG[I[>r7o$J$I(B:;; $B$3$l$O(B $B$^$D$b$H(B $B$f$-$R$m(B <matz@netlab.co.jp> $B$5$s$,:n@.$7!"(B;; $BF1;a$H(B $BGO>l(B $BH%(B <baba@kusastro.kyoto-u.ac.jp> $B$5$s!"(B;; $B9bNS(B $BE/(B <ccsatoru@vega.aichi-u.ac.jp> $B$5$s!"(B;; Toshiaki Tanaka <toshiaki@ksj1.kansai-sc.toshiba.co.jp>$B$5$s!"(B;; $B1|@>(B $BF#OB(B <fuji0924@mbox.kyoto-inet.or.jp> $B$5$s$N$46(NO$N2<$G(B;; $B$d$^$@(B $B$"$-$i(B <akira@linux.or.jp> $B$5$s$,2~B$$r2C$($?$b$N$r!"(B;; $BEZ20(B $B2mL-(B <tsuchiya@pine.kuee.kyoto-u.ac.jp> $B$5$s!"(B;; $BKY8}63B@O:(B <kyota@po.ntts.co.jp> $B$5$sC#$N<8S#7cNe$K$h$j(B;; Namazu Project $B$,2~B$$7$F$$$k$b$N$G$9!#(B;; $B$$$+$J$k7A$G$NMxMQ!&:FG[I[$K$D$$$F$b8"Mx$NN`$O0l@Z<gD%$7$^$;$s!#(B;; $B<+M3$K07$C$F$b$i$C$F9=$$$^$;$s!#(B;;;; $B$*LsB+(B:;; $B$3$l$O2?$i$+$NJ]>Z$rH<$&$b$N$G$O$"$j$^$;$s!#(B;; $BDs6!$5$l$k5!G=$r;H$C$?7k2L!"MxMQ<T$,D>@\E*$"$k$$$O4V@\E*$K(B;; $BB;32$rHo$C$?$H$7$F$b!"$=$l$O:n<TC#$N4XCN$9$k$H$3$m$G$O$"$j$^$;$s!#(B;; $B$"$/$^$G(B at your own risk $B$G$4MxMQ2<$5$$!#(B;;;; CUSTOM emulation derived from BBDB and APEL.(eval-and-compile (condition-case () (require 'custom) (error nil)) (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) nil ;; We've got what we needed ;; We have the old custom-library, hack around it! (defmacro defgroup (&rest args) nil) (defmacro defcustom (var value doc &rest args) (` (defvar (, var) (, value) (, doc)))) (defmacro defface (var value doc &rest args) (` (make-face (, var)))) (defmacro define-widget (&rest args) nil)))(defgroup namazu nil "Namazu front-end for Emacs." :group 'external)(defcustom namazu-command "namazu" "*Namazu $B$N8!:wMQ%W%m%0%i%`L>$G$9!#(B$BDL>o$O(B namazu $B$J$I$G$7$g$&$,!"$=$&$G$O$J$$>l9g$d(BPATH $B$,DL$C$F$$$J$$>l9g$K$OE,Ev$J%W%m%0%i%`L>$r;XDj$7$^$9!#(B" :type 'string :group 'namazu)(defcustom namazu-search-num 30 "*Namazu $B$N8!:w7k2L$r0lEY$KI=<($9$k7o?t$G$9!#(B" :type 'integer :group 'namazu)(defcustom namazu-default-dir nil "*Namazu $B$,;2>H$9$k%$%s%G%C%/%9$NCV$$$F$"$k%G%#%l%/%H%jL>$G$9!#(B$BFC$K;XDj$7$J$1$l$P%G%U%)%k%H$N%$%s%G%C%/%9$r;2>H$7$^$9!#(B$BJ#?t$N%$%s%G%C%/%9$r;XDj$9$k>l9g$K$O$=$l$>$l$r6uGr$G6h@Z$C$F$/$@$5$$!#(B" :type '(choice (item :tag "Auto" :value nil) (directory :tag "Default Index")) :group 'namazu)(defcustom namazu-dir-alist nil "*$B%$%s%G%C%/%9$,CV$$$F$"$k%G%#%l%/%H%j$K(B$B%7%s%\%j%C%/$JL>A0$r$D$1$k$?$a$N(B alist $B$G$9!#(B '((\"Namazu\" . \"/usr/doc/namazu/index /var/lib/namazu/index\") (\"Ruby\" . \"/usr/doc/ruby/namazu\"))$B$J$I$N$h$&$K@_Dj$7$F$*$/$H!"8D!9$N%$%s%G%C%/%9%U%!%$%k$N$"$k(B$B%G%#%l%/%H%jL>$r;XDj$9$kBe$o$j$K(B Namazu $B$d(B Ruby $B$H$$$C$?(B$B$$$o$PJLL>$r;XDj$9$k$3$H$,$G$-$^$9!#(B$BJ#?t$N%$%s%G%C%/%9$r;XDj$9$k>l9g$K$O$=$l$>$l$r6uGr$G6h@Z$C$F$/$@$5$$!#(B" :type '(repeat (cons :format "%v" (string :tag "Alias") (string :tag "Index path"))) :group 'namazu)(defcustom namazu-always-query-index-directory nil "*nil $B0J30$NCM$r@_Dj$9$k$H!"?tCM0z?t$,$J$$$H$-$K(B$B%$%s%G%C%/%9%U%!%$%k$r;XDj$G$-!"?tCM0z?t$,$"$k$H$-$K(B$B%G%U%)%k%H$N%$%s%G%C%/%9$r;2>H$9$k$h$&$K$J$j$^$9!#(B$B>o$K%$%s%G%C%/%9%U%!%$%k$r;XDj$7$F8!:w$r9T$$$?$$(B$B>l9g$J$I$KJXMx$+$b$7$l$^$;$s!#(B" :type 'boolean :group 'namazu)(defcustom namazu-auto-turn-page nil "*nil $B0J30$NCM$r@_Dj$9$k$H!"<+F0E*$K%Z!<%8$a$/$j$r$7$^$9!#(B" :type 'boolean :group 'namazu)(defcustom namazu-mode-hook nil "*Namazu $B%b!<%I$r:n@.$9$k%?%$%_%s%0$G8F$P$l$k(B hook $B$G$9!#(B" :type 'hook :group 'namazu)(defcustom namazu-display-hook nil "*Namazu $B$N=PNO$rI=<($9$k$H$-$K8F$P$l$k(B hook $B$G$9!#(B" :type 'hook :group 'namazu)(defcustom namazu-url-regex "^\\(https?://\\|ftp://\\)" "*URL $B$H8+$J$9%U%!%$%kL>$N%Q%?!<%s$r@_Dj$7$^$9!#(B" :type 'regexp :group 'namazu)(defcustom namazu-view-function-alist '(("[^/]+\\.s?html?" . namazu-browse-url) ("/Mail\\|News/.*/[1-9][0-9]*$" . namazu-view-msg) ("man/man" . namazu-man) ;; ("/usr/local/info/\\|\\.info" . namazu-info) ;; $BL$:n@.(B ("." . namazu-view-file)) "*$B%U%!%$%kL>$N%Q%?!<%s$H$=$l$KBP1~$9$k1\Mw4X?t$r@_Dj$7$^$9!#(B" :type '(repeat (cons :format "%v" (regexp :tag "Filename Regexp") (symbol :tag "Function Name"))) :group 'namazu)(defcustom namazu-view-other-window nil "*If non-nil, make an other window when namazu-view." :type 'boolean :group 'namazu)(defcustom namazu-view-other-frame nil "*If non-nil, make an other frame when namazu-view." :type 'boolean :group 'namazu)(defcustom namazu-msg-visible-field (list "subject" "from" "to" "newsgroups" "date") "*Visible header list for namazu-view-msg." :type '(repeat (string :tag "Header")) :group 'namazu)(defcustom namazu-msg-highlight-function nil "*A function, view-msg highlight method.e.g. namazu-msg-highlight-mew -- use Mew functions(require Mew 1.94 or later)." :type '(radio (function-item :tag "use Mew functions" :format "%t\n" namazu-msg-highlight-mew) (function :tag "Other")) :group 'namazu)(defvar namazu-cs-write (if (memq system-type '(OS/2 emx windows-nt)) (if (> emacs-major-version 19) 'sjis-dos '*sjis*dos) (if (> emacs-major-version 19) 'euc-jp '*euc-japan*)) "*Coding system for namazu process (output).")(defvar namazu-cs-read (if (> emacs-major-version 19) 'undecided '*autoconv*) "*Coding system for namazu process (input).")(defvar namazu-config-file-path (list (getenv "NAMAZUCONFPATH") (getenv "NAMAZUCONF") ; obsolete? "./.namazurc" "~/.namazurc" "/usr/local/etc/namazu/namazurc" "/usr/local/namazu/lib/namazurc") ;obsolete? "*Search path for a Namazu configuration file.")(defvar namazu-argument "-H" "*Namazu $B$N8!:wMQ%W%m%0%i%`$r5/F0$9$k:]$K;XDj$9$k0z?t$G$9!#(B");;;; $B$3$3$+$i@h$r$$$8$C$F!"AGE($K$J$C$?$i65$($F$/$@$5$$$M!#(B;;(defvar namazu-fill-prefix "\t")(defvar namazu-header-prefix " ")(defvar namazu-index-history '(""))(defvar namazu-keyword-history '(""))(defvar namazu-mode-map nil)(defvar namazu-minibuffer-map nil)(defvar namazu-minibuffer-field-map nil)(defvar namazu-buffer "*namazu*")(defvar namazu-last-dir nil "$B8=:_$N8!:w$G;2>H$7$F$$$k%$%s%G%C%/%9$N:_=h(B")(defvar namazu-current-page 0 "$B1\MwCf$N8!:w7k2L$N%Z!<%8HV9f(B")(defvar namazu-max-page 0 "$B8=:_$N8!:w7k2L$N:GBg%Z!<%8HV9f(B")(defvar namazu-output-title-pattern "^\\([0-9]+\\.\\) \\(.*\\) \\(([^)]*)\\)$" "$B8!:w7k2L$NCf$N%I%-%e%a%s%H$N%?%$%H%k$r<($99T$N%Q%?!<%s(B")(defvar namazu-output-header-pattern (format "^%s\\([^:]+:.*\\)$" namazu-header-prefix) "$B8!:w7k2L$NCf$N(B From$B!"(BDate $B%X%C%@$r<($9%Q%?!<%s(B")(defvar namazu-output-url-pattern "^\\(\\(~?/\\|[a-z]+:\\)[^ ]+\\) \\(.*\\)$" "$B8!:w7k2L$NCf$N%I%-%e%a%s%H$N:_=h(B(URL)$B$r<($99T$N%Q%?!<%s(B")(defvar namazu-output-current-list-pattern "^[^:]+: [0-9]+ - [0-9]+$" "$B8!:w7k2L$NCf$N$I$NItJ,$r1\MwCf$+$r<($99T$N%Q%?!<%s(B")(defvar namazu-output-pages-pattern "^[^:]+: \\(\\[[0-9]+\\]\\)*\\[\\([0-9]+\\)\\]$" "$B8!:w7k2L$N%Z!<%8?t$r<($99T$N%Q%?!<%s(B")(defvar namazu-view-vismark nil)(and (locate-library "browse-url") (require 'browse-url))(and (locate-library "jka-compr") (require 'jka-compr))(provide 'namazu)(defun namazu (&optional page-num namazu-dir key) "namazu-command $B$r5/F0$7$F8!:w$r9T$$$^$9!#(B" (interactive (list 0 (if (or (and (not namazu-always-query-index-directory) current-prefix-arg) (and namazu-always-query-index-directory (not current-prefix-arg))) (read-from-minibuffer "Namazu index directory: " nil namazu-minibuffer-map nil 'namazu-index-history) nil) (read-from-minibuffer "Enter Keyword: " nil namazu-minibuffer-field-map nil 'namazu-keyword-history))) (let ((buffer (get-buffer-create namazu-buffer)) (dir (or namazu-dir (progn (or namazu-default-dir (setq namazu-default-dir (namazu-get-default-index-dir))) (expand-file-name namazu-default-dir)))) (arg-list (if (listp namazu-argument) namazu-argument (list namazu-argument)))) (setq arg-list (append arg-list (list "-n" (int-to-string namazu-search-num) "-w" (int-to-string (* page-num namazu-search-num)) key))) (if (and dir (not (string= dir "")) (string-match "[^ \t]" dir)) (setq arg-list (append arg-list (namazu-split-dir (namazu-expand-dir-alias dir))))) (set-buffer buffer) (setq buffer-read-only nil) (buffer-disable-undo (current-buffer)) (erase-buffer) (message "Namazu running ...") (let ((default-process-coding-system (cons namazu-cs-read namazu-cs-write)) (process-input-coding-system namazu-cs-read) (process-output-coding-system namazu-cs-write) (coding-system-for-read namazu-cs-read) (coding-system-for-write namazu-cs-write)) (apply (function call-process) namazu-command nil t nil arg-list)) (if (not (and buffer (get-buffer buffer) (buffer-name (get-buffer buffer)))) (message "Namazu exits with no output") (pop-to-buffer buffer) (goto-char (point-min)) (save-excursion (namazu-fill) (if (re-search-forward namazu-output-pages-pattern nil t) (setq namazu-max-page (+ -1 (string-to-int (buffer-substring (match-beginning 2) (match-end 2))))) (setq namazu-max-page 0))) ;(goto-char (point-min)) (setq namazu-current-page page-num) (setq namazu-last-dir dir) (namazu-mode) (setq buffer-read-only t) (run-hooks 'namazu-display-hook) (message "Namazu running ... done.") )))(defun namazu-fill () "namazu-command $B$G$N8!:w7k2L$r@07A$7$^$9!#(B" (while (re-search-forward "^[0-9]+\. " nil t)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -