[mew-dist 26404] Re: namazu
Hideyuki SHIRAI ( 白井秀行 )
shirai at example.com
2005年 6月 2日 (木) 19:41:43 JST
From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [mew-dist 26397] namazu
Message-ID: <20050602.163804.225794400.kazu at example.com>
Date: Thu, 02 Jun 2005 16:38:04 +0900 (JST)
> namazu ですが、インデックスをバックグラウンドで作ることはできないでしょ
> うか?
Emacs の中で、ということですよね?
# そういえば、cron でたたく shell script 書かないといけないのだ
# よな。
> "kM" と違うのは、
>
> * タイマーを使いバックグランドで作る (ユーザはコマンドを入力しない)
> * すべてのフォルダが対象
こんな感じ↓で良いならあとでマージしてみます。
(1) "kA" で mew-nmz-mknmz-interval-time で指定した時間(分)間隔で、
すべての folder のインデックス作成を繰り返します。
(2) "kS" で止まります。
(3) mew-nmz-mknmz-automatically に時間(分)を書くと、Mew を立ち
上げて、n分後に自動的に開始します。
(4) folder 構成が変わったら、適当なときに "ks" しておくと、次に
mknmz がはじまったときに反映されます。または、"C-ukA" で動か
すと OK。
(5) どこかで mknmz/gcnmz が動いているときは、mode-line に "NMZ"
と表示します。(mew-nmz.xpm 募集中)
## indicator つくったから、mew-nmz 中の (ding) やめよう。。。
> # めざせ spotlight です。
# めざせ google desktop とか
--
白井秀行 (mailto:shirai at example.com)
(defcustom mew-nmz-mknmz-automatically nil
"*Automatic mknmz start delay. If `nil' don't execute automatically."
:group 'mew-nmz
:type '(choice (const :tag "Not use"nil)
(integer :tag "Delay time (minutes)")))
(defcustom mew-nmz-mknmz-interval-time 120
"*Minute of interval time to execute automatic mknmz."
:group 'mew-nmz
:type '(integer :tag "interval time (minutes)"))
(define-key mew-summary-mode-map "kA" 'mew-nmz-auto-mknmz-start)
(define-key mew-summary-mode-map "kS" 'mew-nmz-auto-mknmz-stop)
(defvar mew-nmz-check-timer nil)
(defvar mew-nmz-auto-timer nil)
(defvar mew-nmz-format nil)
(defvar mew-nmz-format2 nil)
(defvar mew-nmz-process nil)
(defvar mew-nmz-process-regex (concat "^" (regexp-opt `(,mew-nmz-prog-mknmz
,mew-nmz-prog-gcnmz))
"-"))
(cond
(mew-gemacs-p
(setq mew-nmz-format nil)
(setq mew-nmz-format2
(if (display-graphic-p)
(let ((data-directory mew-icon-directory))
(concat " "
(propertize "NMZ" 'display
(find-image '((:type xpm :file "mew-nmz.xpm" :ascent center))))))
" [NMZ]")))
(mew-xemacs-p
(setq mew-nmz-format
(if window-system
(let ((data-directory mew-icon-directory))
(make-glyph [xpm :file "mew-nzm.xpm"]))
" [NMZ]"))
(setq mew-nmz-format2 nil))
(t
(setq mew-nmz-format " [NMZ]")
(setq mew-nmz-format2 nil)))
;; これ↓ Emacs22 だと "l%l" を最後にした方が見やすくない?
(setq mew-mode-line-format
`(""
(mew-summary-buffer-raw "*")
(mew-summary-buffer-secure-process ,mew-secure-format2)
(mew-nmz-process ,mew-nmz-format2)
(mew-summary-buffer-left-msgs mew-summary-buffer-left-msgs "L%l")))
(setq mew-mode-line-process
'((mew-summary-buffer-secure-process mew-secure-format)
(mew-summary-buffer-process mew-summary-buffer-process-status)
(mew-nmz-process mew-nmz-format)))
(defun mew-nmz-get-process ()
(setq mew-nmz-process
(or mew-nmz-mknmz-all-folders
(let ((procs (process-list))
procname)
(catch 'detect
(while (and procs (setq procname (process-name (car procs))))
(setq procs (cdr procs))
(and (string-match mew-nmz-process-regex procname)
(throw 'detect t))))))))
(unless mew-nmz-check-timer
(setq mew-nmz-check-timer (mew-timer 1 'mew-nmz-get-process)))
(defun mew-nmz-auto-mknmz-start (&optional args)
"Start automatic mknmz for full folders."
(interactive "P")
(if args (mew-nmz-auto-mknmz-stop))
(if mew-nmz-auto-timer
(if (interactive-p)
(message "Another automatic mknmz running"))
(let ((min (* mew-nmz-mknmz-interval-time 60)))
(setq mew-nmz-auto-timer (mew-timer min 'mew-nmz-auto-mknmz)))
(mew-nmz-auto-mknmz args)
(message "Automatic mknmz start")))
(defun mew-nmz-auto-mknmz-stop ()
"Stop automatic mknmz for full folders."
(interactive)
(when mew-nmz-auto-timer
(cancel-timer mew-nmz-auto-timer))
(setq mew-nmz-auto-timer nil)
(when mew-nmz-mknmz-all-folders
(mew-nmz-mknmz-kill-process))
(if (interactive-p)
(message "Automatic mknmz stop")))
(defun mew-nmz-auto-mknmz (&optional args)
"Automatic mknmz for full folders."
(unless mew-nmz-mknmz-all-folders
(let ((ifile (expand-file-name mew-nmz-mknmz-index-file mew-conf-path))
(inbox (mew-inbox-folder (and (mew-summary-or-virtual-p)
(mew-case:folder-case (buffer-name)))))
allflds)
(if (and (file-readable-p ifile)
(not args))
(with-temp-buffer
(mew-frwlet
mew-nmz-mknmz-index-file-coding-system mew-cs-text-for-write
(insert-file-contents ifile)
(goto-char (point-min))
(while (not (eobp))
(when (looking-at "^\\([^\t]+\\)\t")
(setq allflds (cons (match-string 1) allflds)))
(forward-line 1))
(setq mew-nmz-mknmz-all-folders (nreverse allflds))))
(mew-nmz-setup)
(setq mew-nmz-mknmz-all-folders (mew-nmz-mknmz-get-all-folders)))
(when mew-nmz-mknmz-all-folders
(setq mew-nmz-mknmz-all-folders
(cons inbox
(delete inbox mew-nmz-mknmz-all-folders)))
(setq current-prefix-arg nil)
(mew-nmz-mknmz (car mew-nmz-mknmz-all-folders) 'all)))))
;; auto run when mew start.
(when (and mew-nmz-mknmz-automatically
(numberp mew-nmz-mknmz-automatically))
(run-at-time (* mew-nmz-mknmz-automatically 60) nil 'mew-nmz-auto-mknmz))
Mew-dist メーリングリストの案内