Merge: Respect narrowing in org-ql-find

This commit is contained in:
Adam Porter 2024-08-26 07:19:18 -05:00
commit b0cb7618e9
4 changed files with 87 additions and 62 deletions

View file

@ -556,6 +556,10 @@ Simple links may also be written manually in either sexp or non-sexp form, like:
** 0.9-pre ** 0.9-pre
*Changes*
+ Command ~org-ql-find~ respects narrowing of the current buffer by default, allowing searching within the narrowed region. (Using one ~C-u~ argument widens the current buffer, and using two ~C-u~ arguments prompts for the buffers to search.)
+ Function ~org-ql-completing-read~ accepts a new ~NARROWP~ argument, which is passed to ~org-ql-select~.
*Compatibility* *Compatibility*
+ Fix compilation error on Emacs 30. ([[https://github.com/alphapapa/org-ql/issues/433][#433]]. Thanks to [[https://github.com/akirak][Akira Komamura]] and [[https://github.com/monnier][Stefan Monnier]].) + Fix compilation error on Emacs 30. ([[https://github.com/alphapapa/org-ql/issues/433][#433]]. Thanks to [[https://github.com/akirak][Akira Komamura]] and [[https://github.com/monnier][Stefan Monnier]].)

View file

@ -134,7 +134,7 @@ value, or nil."
;;;###autoload ;;;###autoload
(cl-defun org-ql-completing-read (cl-defun org-ql-completing-read
(buffers-files &key query-prefix query-filter (buffers-files &key query-prefix query-filter narrowp
(action #'org-ql-completing-read-action) (action #'org-ql-completing-read-action)
;; FIXME: Unused argument. ;; FIXME: Unused argument.
;; (annotate #'org-ql-completing-read-snippet) ;; (annotate #'org-ql-completing-read-snippet)
@ -145,6 +145,8 @@ value, or nil."
"Return marker at entry in BUFFERS-FILES selected with `org-ql'. "Return marker at entry in BUFFERS-FILES selected with `org-ql'.
PROMPT is shown to the user. PROMPT is shown to the user.
NARROWP is passed to `org-ql-select', which see.
QUERY-PREFIX may be a string to prepend to the query entered by QUERY-PREFIX may be a string to prepend to the query entered by
the user (e.g. use \"heading:\" to only search headings, easily the user (e.g. use \"heading:\" to only search headings, easily
creating a custom command that saves the user from having to type creating a custom command that saves the user from having to type
@ -323,6 +325,7 @@ single predicate)."
bow (or ,@query-tokens) (0+ (not space)) bow (or ,@query-tokens) (0+ (not space))
(optional (repeat 1 3 (0+ space) (repeat 1 15 (not space)))))))) (optional (repeat 1 3 (0+ space) (repeat 1 15 (not space))))))))
(org-ql-select buffers-files (org-ql--query-string-to-sexp input) (org-ql-select buffers-files (org-ql--query-string-to-sexp input)
:narrow narrowp
:action #'action)))) :action #'action))))
(unless (listp buffers-files) (unless (listp buffers-files)
;; Since we map across this argument, we ensure it's a list. ;; Since we map across this argument, we ensure it's a list.

View file

@ -54,14 +54,18 @@ See function `display-buffer'."
;;;; Commands ;;;; Commands
;;;###autoload ;;;###autoload
(cl-defun org-ql-find (buffers-files &key query-prefix query-filter (cl-defun org-ql-find (buffers-files &key query-prefix query-filter widen
(prompt "Find entry: ")) (prompt "Find entry: "))
"Go to an Org entry in BUFFERS-FILES selected by searching entries with `org-ql'. "Go to an Org entry in BUFFERS-FILES selected by searching entries with `org-ql'.
Interactively, search the buffers and files relevant to the Interactively, search the buffers and files relevant to the
current buffer (i.e. in `org-agenda-mode', the value of current buffer (i.e. in `org-agenda-mode', the value of
`org-ql-view-buffers-files' or `org-agenda-contributing-files'; `org-ql-view-buffers-files' or `org-agenda-contributing-files';
in `org-mode', that buffer). With universal prefix, select in `org-mode', that buffer).
multiple buffers to search with completion and PROMPT.
With one or more universal prefix arguments, WIDEN buffers before
searching (otherwise, respect any narrowing). With two universal
prefix arguments, select multiple buffers to search with
completion and PROMPT.
QUERY-PREFIX may be a string to prepend to the query (e.g. use QUERY-PREFIX may be a string to prepend to the query (e.g. use
\"heading:\" to only search headings, easily creating a custom \"heading:\" to only search headings, easily creating a custom
@ -72,11 +76,17 @@ types is filtered before execution (e.g. it could replace spaces
with commas to turn multiple tokens, which would normally be with commas to turn multiple tokens, which would normally be
treated as multiple predicates, into multiple arguments to a treated as multiple predicates, into multiple arguments to a
single predicate)." single predicate)."
(interactive (list (org-ql-find--buffers))) (interactive (list (org-ql-find--buffers
(let ((marker (org-ql-completing-read buffers-files :read-buffer-p (equal '(16) current-prefix-arg))
:widen current-prefix-arg))
(let ((marker (save-restriction
(when (and widen (equal (current-buffer) buffers-files))
(widen))
(org-ql-completing-read buffers-files
:narrowp (not widen)
:query-prefix query-prefix :query-prefix query-prefix
:query-filter query-filter :query-filter query-filter
:prompt prompt))) :prompt prompt))))
(set-buffer (or (buffer-base-buffer (marker-buffer marker)) (set-buffer (or (buffer-base-buffer (marker-buffer marker))
(marker-buffer marker))) (marker-buffer marker)))
(pop-to-buffer (current-buffer) org-ql-find-display-buffer-action) (pop-to-buffer (current-buffer) org-ql-find-display-buffer-action)
@ -195,15 +205,15 @@ multiple buffers to search with completion and PROMPT."
;;;; Functions ;;;; Functions
(defun org-ql-find--buffers () (cl-defun org-ql-find--buffers (&key read-buffer-p)
"Return list of buffers to search in. "Return buffer or list of buffers to search in.
In a mode derived from `org-agenda-mode', return the value of In a mode derived from `org-agenda-mode', return the value of
`org-ql-view-buffers-files' or `org-agenda-contributing-files'. `org-ql-view-buffers-files' or `org-agenda-contributing-files'.
In a mode derived from `org-mode', return the current buffer. In a mode derived from `org-mode', return the current buffer. If
When `current-prefix-arg', read a list of buffers in `org-mode' READ-BUFFER-P, read a list of buffers in `org-mode' with
with completion. To be used in `org-ql-find' commands' completion. To be used in `org-ql-find' commands' interactive
interactive forms." forms."
(if current-prefix-arg (if read-buffer-p
(mapcar #'get-buffer (mapcar #'get-buffer
(completing-read-multiple (completing-read-multiple
"Buffers: " "Buffers: "

View file

@ -1091,6 +1091,14 @@ File: README.info, Node: 09-pre, Next: 087, Up: Changelog
5.1 0.9-pre 5.1 0.9-pre
=========== ===========
*Changes*
• Command org-ql-find respects narrowing of the current buffer by
default, allowing searching within the narrowed region. (Using one
C-u argument widens the current buffer, and using two C-u
arguments prompts for the buffers to search.)
• Function org-ql-completing-read accepts a new NARROWP argument,
which is passed to org-ql-select.
*Compatibility* *Compatibility*
• Fix compilation error on Emacs 30. (#433 • Fix compilation error on Emacs 30. (#433
(https://github.com/alphapapa/org-ql/issues/433). Thanks to Akira (https://github.com/alphapapa/org-ql/issues/433). Thanks to Akira
@ -2092,51 +2100,51 @@ Node: Links39023
Node: Tips39710 Node: Tips39710
Node: Changelog40034 Node: Changelog40034
Node: 09-pre40973 Node: 09-pre40973
Node: helm-org-ql (1)41339 Node: helm-org-ql (1)41757
Node: 08741480 Node: 08741898
Node: 08642711 Node: 08643129
Node: 08542945 Node: 08543363
Node: 08443601 Node: 08444019
Node: 08344053 Node: 08344471
Node: 08244394 Node: 08244812
Node: 08144787 Node: 08145205
Node: 0845208 Node: 0845626
Node: 07447932 Node: 07448350
Node: 07348157 Node: 07348575
Node: 07248891 Node: 07249309
Node: 07149812 Node: 07150230
Node: 0750623 Node: 0751041
Node: 06353489 Node: 06353907
Node: 06254022 Node: 06254440
Node: 06154329 Node: 06154747
Node: 0654899 Node: 0655317
Node: 05257955 Node: 05258373
Node: 05158257 Node: 05158675
Node: 0558682 Node: 0559100
Node: 04960213 Node: 04960631
Node: 04860495 Node: 04860913
Node: 04760844 Node: 04761262
Node: 04661253 Node: 04661671
Node: 04561661 Node: 04562079
Node: 04462022 Node: 04462440
Node: 04362381 Node: 04362799
Node: 04262584 Node: 04263002
Node: 04162745 Node: 04163163
Node: 0462992 Node: 0463410
Node: 03267093 Node: 03267511
Node: 03167496 Node: 03167914
Node: 0367693 Node: 0368111
Node: 02370993 Node: 02371411
Node: 02271227 Node: 02271645
Node: 02171507 Node: 02171925
Node: 0271712 Node: 0272130
Node: 0175790 Node: 0176208
Node: Development75891 Node: Development76309
Node: Copyright assignment76124 Node: Copyright assignment76542
Node: Notes76714 Node: Notes77132
Node: Comparison with Org Agenda searches76878 Node: Comparison with Org Agenda searches77296
Node: org-sidebar77767 Node: org-sidebar78185
Node: License78046 Node: License78464
 
End Tag Table End Tag Table