Mercurial > emacs
changeset 87529:56186447f050
(occur-context-lines): New subroutine, broken out of occur-engine.
(occur-engine): Call it.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 03 Jan 2008 09:51:52 +0000 |
parents | 464b6da4642f |
children | a1f69c31913c |
files | lisp/replace.el |
diffstat | 1 files changed, 18 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/replace.el Thu Jan 03 07:35:42 2008 +0000 +++ b/lisp/replace.el Thu Jan 03 09:51:52 2008 +0000 @@ -1246,16 +1246,9 @@ (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 @@ ;; 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.