From 0ef84fc806f9f4c08f1ce0ba046fbc46af2ff9e6 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Tue, 30 Mar 2010 19:38:45 +0300 Subject: [PATCH] * replace.el (occur-accumulate-lines): Move occur-engine related functions `occur-accumulate-lines' and `occur-engine-add-prefix' to be located after `occur-engine'. --- lisp/ChangeLog | 6 ++++++ lisp/replace.el | 46 +++++++++++++++++++++++----------------------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 301d061c822..426db447d51 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -2,6 +2,12 @@ * dired-x.el (dired-omit-mode): Doc fix. +2010-03-30 Juri Linkov + + * 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 Make occur handle multi-line matches cleanly with context. diff --git a/lisp/replace.el b/lisp/replace.el index 14a1869b4f9..487974073aa 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1005,23 +1005,6 @@ which means to discard all text properties." :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 @@ See also `multi-occur'." (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 @@ See also `multi-occur'." 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. -- 2.39.2