使用 Anything 实现增量 occur
首页 程序设计 GNU Emacs 的配置与扩展
(defun wl-anything-delayed-occur-candidates ()
(setq anything-occur-buf (get-buffer-create "*Anything Occur*"))
(with-current-buffer anything-occur-buf
(erase-buffer)
(let ((count (occur-engine anything-pattern
(list anything-c-source-occur-current-buffer)
anything-occur-buf
list-matching-lines-default-context-lines
(if (and case-fold-search search-upper-case)
(isearch-no-upper-case-p anything-pattern t)
case-fold-search)
list-matching-lines-buffer-name-face
nil list-matching-lines-face
(not (eq occur-excluded-properties t)))))
(when (> count 0)
(let ((lines (split-string (buffer-string) "\n" t)))
(cdr lines))))))
(defvar wl-anything-c-source-delayed-occur
'((name . "Occur")
(init . (lambda ()
(setq anything-c-source-occur-current-buffer
(current-buffer))))
(candidates . wl-anything-delayed-occur-candidates)
(action . (("Goto line" .
(lambda (candidate)
(goto-line (string-to-number candidate)
anything-c-source-occur-current-buffer)))))
(requires-pattern . 3)
(volatile)
(delayed)))
(defun wl-search ()
(interactive)
(anything 'wl-anything-c-source-delayed-occur nil nil nil nil "*Anything Occur*"))
Date: 2012-05-14 12:42:19
Author: 王亮
Org version 7.8.06 with Emacs version 24
Validate XHTML 1.0