# HG changeset patch # User Richard M. Stallman # Date 1199353912 0 # Node ID 56186447f0501fd498c7f68044c57ec66bf841ae # Parent 464b6da4642fe9824fb21c9be3cc1e5c494f2000 (occur-context-lines): New subroutine, broken out of occur-engine. (occur-engine): Call it. diff -r 464b6da4642f -r 56186447f050 lisp/replace.el --- 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.