(occur-engine-add-prefix): New function.
(occur-engine): Avoid using macrolet, incf and decf.
Use occur-engine-add-prefix instead.
Rename `l' to `lines' and `c' to `matches'.
(occur-engine, occur-mode-mouse-goto)
(occur-mode-find-occurrence, occur-mode-goto-occurrence)
(occur-mode-goto-occurrence-other-window)
(occur-mode-display-occurrence): A position is just a marker,
not a list.
(occur-revert-arguments):
Renamed from occur-revert-properties. All uses changed.
(occur-buffer, occur-nlines): Delete.
(occur-revert-properties): Rename to `occur-revert-properties'.
(occur-mode): Handle it. Set up font lock.
(occur-revert-function): Simply apply `occur-1'.
(occur-mode-find-occurence, occur-mode-mouse-goto)
(occur-mode-goto-occurrence-other-window)
(occur-mode-display-occurrence): Handle buffer property.
(list-matching-lines-face): Use defcustom.
(list-matching-lines-buffer-name-face): New variable.
(occur-accumulate-lines): Renamed from `ibuffer-accumulate-lines',
in ibuffer.el.
(occur-read-primary-args): Move out of `occur'.
(occur): Delete. Now simply call `occur-1'.
(multi-occur, multi-occur-by-filename-regexp): New functions.
(occur-1): New function.
(occur-engine): Renamed from `ibuffer-occur-engine' to replace the
previous implementation of `occur'; taken from ibuf-ext.el.
(occur-fontify-on-property): New function.
(occur-fontify-region-function, occur-unfontify-region-function):
New functions.
(keep-lines, flush-lines, how-many): Use keep-lines-read-args to
read arguments interactively. Add parameters RSTART and REND.
Operate on the active region in Transient Mark mode.
value of tab-width in the original buffer. Choose a line number
format that's a multiple of the original buffer's tab width, so
that lines appear right.
them instead of the check for a region in Transient Mark mode.
(query-replace-read-args): Return two more list elements for the
start and end of the region in Transient Mark mode.
(query-replace, query-replace-regexp, query-replace-regexp-eval)
(map-query-replace-regexp, replace-string, replace-regexp): Add
optional last arguments START and END and pass them to
perform-replace.
when MATCH-AGAIN is nil, and REGEXP-FLAG is t. We don't want
to do that because it leaves point 1 position after the last
replacement, after everything has been replaced.
(replace-eval-replacement, replace-loop-through-replacements)
(replace-match-string-symbols): New functions.
(perform-replace): Allow REPLACEMENTS to be (FUNCTION . DATA).
Use replace-loop-through-replacements.