diff options
-rw-r--r-- | lisp/ChangeLog | 6 | ||||
-rw-r--r-- | lisp/replace.el | 28 |
2 files changed, 24 insertions, 10 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 06972d33e23..da4dd53eda3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2008-01-03 Richard Stallman <rms@gnu.org> + + * replace.el (occur-context-lines): New subroutine, + broken out of occur-engine. + (occur-engine): Call it. + 2008-01-03 Alexandre Julliard <julliard@winehq.org> * vc-git.el (vc-git--ls-files-state): New function. diff --git a/lisp/replace.el b/lisp/replace.el index b76c64085c2..8bf6da30386 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1246,16 +1246,9 @@ See also `multi-occur'." (if (= nlines 0) ;; The simple display style out-line - ;; The complex multi-line display - ;; style. Generate a list of lines, - ;; concatenate them all together. - (apply #'concat - (nconc - (occur-engine-add-prefix (nreverse (cdr (occur-accumulate-lines (- (1+ (abs nlines))) keep-props)))) - (list out-line) - (if (> nlines 0) - (occur-engine-add-prefix - (cdr (occur-accumulate-lines (1+ nlines) keep-props))))))))) + ;; The complex multi-line display style. + (occur-context-lines out-line nlines keep-props) + ))) ;; Actually insert the match display data (with-current-buffer out-buf (let ((beg (point)) @@ -1293,6 +1286,21 @@ See also `multi-occur'." ;; Return the number of matches globalcount))) +;; Generate context display for occur. +;; OUT-LINE is the line where the match is. +;; NLINES and KEEP-PROPS are args to occur-engine. +;; Generate a list of lines, add prefixes to all but OUT-LINE, +;; then concatenate them all together. +(defun occur-context-lines (out-line nlines keep-props) + (apply #'concat + (nconc + (occur-engine-add-prefix + (nreverse (cdr (occur-accumulate-lines + (- (1+ (abs nlines))) keep-props)))) + (list out-line) + (if (> nlines 0) + (occur-engine-add-prefix + (cdr (occur-accumulate-lines (1+ nlines) keep-props))))))) ;; It would be nice to use \\[...], but there is no reasonable way ;; to make that display both SPC and Y. |