Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs
authorEli Zaretskii <eliz@gnu.org>
Tue, 9 Oct 2018 14:49:59 +0000 (17:49 +0300)
committerEli Zaretskii <eliz@gnu.org>
Tue, 9 Oct 2018 14:49:59 +0000 (17:49 +0300)
1  2 
lisp/replace.el

diff --cc lisp/replace.el
index 04e5d4273e03239267facc53401b471de2a9014f,a134e4e3e583a195b9902e898a319a8d2f7003dc..7d313842c0443d8e5166ecb289109ad812be7a00
@@@ -1206,34 -1205,9 +1205,21 @@@ To return to ordinary Occur mode, use \
            (move-to-column col)))))))
  
  \f
- (defun occur--parse-occur-buffer()
-   "Retrieve a list of the form (BEG END ORIG-LINE BUFFER).
- BEG and END define the region.
- ORIG-LINE and BUFFER are the line and the buffer from which
- the user called `occur'."
-   (save-excursion
-     (goto-char (point-min))
-     (let ((buffer (get-text-property (point) 'occur-title))
-           (beg-pos (get-text-property (point) 'region-start))
-           (end-pos (get-text-property (point) 'region-end))
-           (orig-line (get-text-property (point) 'current-line)))
-       (list beg-pos end-pos orig-line buffer))))
  (defun occur-revert-function (_ignore1 _ignore2)
    "Handle `revert-buffer' for Occur mode buffers."
 -  (apply #'occur-1 (append occur-revert-arguments (list (buffer-name)))))
 +  (if (cdr (nth 2 occur-revert-arguments)) ; multi-occur
 +      (apply 'occur-1 (append occur-revert-arguments (list (buffer-name))))
 +    (pcase-let ((`(,region-start ,region-end ,orig-line ,buffer)
 +                 (occur--parse-occur-buffer))
 +                (regexp (car occur-revert-arguments)))
 +      (if (not (or region-start region-end))
 +          (apply 'occur-1 (append occur-revert-arguments (list (buffer-name))))
 +        (with-current-buffer buffer
 +          (when (wholenump orig-line)
 +            (goto-char (point-min))
 +            (forward-line (1- orig-line)))
 +          (save-excursion
 +            (occur regexp nil (list (cons region-start region-end)))))))))
  
  (defun occur-mode-find-occurrence ()
    (let ((pos (get-text-property (point) 'occur-target)))