org-occur-in-agenda-files: Respect agenda restriction

* lisp/org.el (org-occur-in-agenda-files): Respect agenda restriction
when searching.

Reported-by: Alain.Cochard@unistra.fr
Link: https://orgmode.org/list/25514.61148.396137.347019@gargle.gargle.HOWL
This commit is contained in:
Ihor Radchenko 2022-12-27 16:41:57 +03:00
parent b86989c8df
commit a9c0d4cde2
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
1 changed files with 24 additions and 8 deletions

View File

@ -18551,24 +18551,40 @@ block from point."
(interactive "sOrg-files matching: ")
(let* ((files (org-agenda-files))
(tnames (mapcar #'file-truename files))
(extra org-agenda-text-search-extra-files))
(when (eq (car extra) 'agenda-archives)
(extra org-agenda-text-search-extra-files)
(narrows nil))
(when (and (eq (car extra) 'agenda-archives)
(not org-agenda-restrict))
(setq extra (cdr extra))
(setq files (org-add-archive-files files)))
(dolist (f extra)
(unless (member (file-truename f) tnames)
(unless (member f files) (setq files (append files (list f))))
(setq tnames (append tnames (list (file-truename f))))))
(unless org-agenda-restrict
(dolist (f extra)
(unless (member (file-truename f) tnames)
(unless (member f files) (setq files (append files (list f))))
(setq tnames (append tnames (list (file-truename f)))))))
(multi-occur
(mapcar (lambda (x)
(with-current-buffer
;; FIXME: Why not just (find-file-noselect x)?
;; Is it to avoid the "revert buffer" prompt?
(or (get-file-buffer x) (find-file-noselect x))
(widen)
(if (eq (current-buffer) org-agenda-restrict)
(progn
;; Save the narrowing state.
(push (list (current-buffer) (point-min) (point-max))
narrows)
(widen)
(narrow-to-region org-agenda-restrict-begin
org-agenda-restrict-end))
(widen))
(current-buffer)))
files)
regexp)))
regexp)
;; Restore the narrowing.
(dolist (narrow narrows)
(with-current-buffer (car narrow)
(widen)
(narrow-to-region (nth 1 narrow) (nth 2 narrow))))))
(add-hook 'occur-mode-find-occurrence-hook
(lambda () (when (derived-mode-p 'org-mode) (org-fold-reveal))))