Mercurial > emacs
changeset 107656:a788d758fe0a
* replace.el (occur-accumulate-lines): Move occur-engine related
functions `occur-accumulate-lines' and `occur-engine-add-prefix'
to be located after `occur-engine'.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Tue, 30 Mar 2010 19:38:45 +0300 |
parents | 0958f6c3f7c6 |
children | 5e0627e338dc |
files | lisp/ChangeLog lisp/replace.el |
diffstat | 2 files changed, 29 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue Mar 30 19:29:02 2010 +0300 +++ b/lisp/ChangeLog Tue Mar 30 19:38:45 2010 +0300 @@ -4,6 +4,12 @@ 2010-03-30 Juri Linkov <juri@jurta.org> + * replace.el (occur-accumulate-lines): Move occur-engine related + functions `occur-accumulate-lines' and `occur-engine-add-prefix' + to be located after `occur-engine'. + +2010-03-30 Juri Linkov <juri@jurta.org> + Make occur handle multi-line matches cleanly with context. http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01280.html
--- a/lisp/replace.el Tue Mar 30 19:29:02 2010 +0300 +++ b/lisp/replace.el Tue Mar 30 19:38:45 2010 +0300 @@ -1005,23 +1005,6 @@ :group 'matching :version "22.1") -(defun occur-accumulate-lines (count &optional keep-props pt) - (save-excursion - (when pt - (goto-char pt)) - (let ((forwardp (> count 0)) - result beg end moved) - (while (not (or (zerop count) - (if forwardp - (eobp) - (and (bobp) (not moved))))) - (setq count (+ count (if forwardp -1 1))) - (setq beg (line-beginning-position) - end (line-end-position)) - (push (occur-engine-line beg end keep-props) result) - (setq moved (= 0 (forward-line (if forwardp 1 -1))))) - (nreverse result)))) - (defun occur-read-primary-args () (list (read-regexp "List lines matching regexp" (car regexp-history)) @@ -1175,12 +1158,6 @@ (set-buffer-modified-p nil) (run-hooks 'occur-hook))))))) -(defun occur-engine-add-prefix (lines) - (mapcar - #'(lambda (line) - (concat " :" line "\n")) - lines)) - (defun occur-engine (regexp buffers out-buf nlines case-fold-search title-face prefix-face match-face keep-props) (with-current-buffer out-buf @@ -1356,6 +1333,29 @@ str) (buffer-substring-no-properties beg end))) +(defun occur-engine-add-prefix (lines) + (mapcar + #'(lambda (line) + (concat " :" line "\n")) + lines)) + +(defun occur-accumulate-lines (count &optional keep-props pt) + (save-excursion + (when pt + (goto-char pt)) + (let ((forwardp (> count 0)) + result beg end moved) + (while (not (or (zerop count) + (if forwardp + (eobp) + (and (bobp) (not moved))))) + (setq count (+ count (if forwardp -1 1))) + (setq beg (line-beginning-position) + end (line-end-position)) + (push (occur-engine-line beg end keep-props) result) + (setq moved (= 0 (forward-line (if forwardp 1 -1))))) + (nreverse result)))) + ;; Generate context display for occur. ;; OUT-LINE is the line where the match is. ;; NLINES and KEEP-PROPS are args to occur-engine.