diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 0698b3237..75d934705 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -4381,8 +4381,9 @@ as a whole, to include whitespace. with a colon, this will mean that the (non-regexp) snippets of the Boolean search must match as full words. -This command searches the agenda files, and in addition the files listed -in `org-agenda-text-search-extra-files'." +This command searches the agenda files, and in addition the files +listed in `org-agenda-text-search-extra-files' unless a restriction lock +is active." (interactive "P") (if org-agenda-overriding-arguments (setq todo-only (car org-agenda-overriding-arguments) @@ -4492,10 +4493,20 @@ in `org-agenda-text-search-extra-files'." (if hdl-only (setq regexp (concat org-outline-regexp-bol ".*?" regexp)))) (setq files (org-agenda-files nil 'ifmode)) - (when (eq (car org-agenda-text-search-extra-files) 'agenda-archives) - (pop org-agenda-text-search-extra-files) - (setq files (org-add-archive-files files))) - (setq files (append files org-agenda-text-search-extra-files) + ;; Add `org-agenda-text-search-extra-files' unless there is some + ;; restriction. + (unless (get 'org-agenda-files 'org-restrict) + (when (eq (car org-agenda-text-search-extra-files) 'agenda-archives) + (pop org-agenda-text-search-extra-files) + (setq files (org-add-archive-files files)))) + ;; Uniquify files. However, let `org-check-agenda-file' handle + ;; non-existent ones. + (setq files (cl-remove-duplicates + (append files org-agenda-text-search-extra-files) + (lambda (a b) + (and (file-exists-p a) + (file-exists-p b) + (file-equal-p a b)))) rtnall nil) (while (setq file (pop files)) (setq ee nil) @@ -4550,12 +4561,12 @@ in `org-agenda-text-search-extra-files'." (point-at-bol) (if hdl-only (point-at-eol) end))) (mapc (lambda (wr) (when (string-match wr str) - (goto-char (1- end)) - (throw :skip t))) + (goto-char (1- end)) + (throw :skip t))) regexps-) (mapc (lambda (wr) (unless (string-match wr str) - (goto-char (1- end)) - (throw :skip t))) + (goto-char (1- end)) + (throw :skip t))) (if todo-only (cons (concat "^\\*+[ \t]+" org-not-done-regexp)