diff --git a/README.org b/README.org index e19b3d66..2845805d 100644 --- a/README.org +++ b/README.org @@ -557,6 +557,7 @@ Simple links may also be written manually in either sexp or non-sexp form, like: *Changed* + Give more useful error message for invalid queries. + Predicate ~src~ now matches case-insensitively. ++ Command ~org-ql-sparse-tree~ accepts both string and sexp queries. (Thanks to [[https://github.com/akirak][Akira Komamura]].) *Fixed* + Predicate ~src~'s matching of begin/end block lines, normalization of arguments, and handling in non-sexp queries. (Thanks to [[https://github.com/akirak][Akira Komamura]] for reporting.) diff --git a/org-ql-search.el b/org-ql-search.el index cedcadb9..e0ab3ff4 100644 --- a/org-ql-search.el +++ b/org-ql-search.el @@ -93,8 +93,8 @@ directories, etc, which would make it slow to list the The tree will show the lines where the query matches, and any other context defined in `org-show-context-detail', which see. -QUERY is an `org-ql' query sexp (quoted, since this is a -function). BUFFER defaults to the current buffer. +QUERY is an `org-ql' query in either sexp or string form (see +Info node `(org-ql)Queries'). When KEEP-PREVIOUS is non-nil (interactively, with prefix), the outline is not reset to the overview state before finding @@ -102,7 +102,7 @@ matches, which allows stacking calls to this command. Runs `org-occur-hook' after making the sparse tree." ;; Code based on `org-occur'. - (interactive (list (read-minibuffer "Query: ") + (interactive (list (read-string "Query: ") :keep-previous current-prefix-arg)) (with-current-buffer buffer (unless keep-previous @@ -110,7 +110,18 @@ Runs `org-occur-hook' after making the sparse tree." ;; we remove existing `org-occur' highlights, just in case. (org-remove-occur-highlights nil nil t) (org-overview)) - (let ((num-results 0)) + (let ((num-results 0) + (query (pcase-exhaustive query + ((and (pred stringp) + (rx bos (0+ blank) (or "(" "\""))) + ;; Read sexp query from string. + (read query)) + ((pred stringp) + ;; Parse string query into sexp query. + (org-ql--query-string-to-sexp query)) + ((pred listp) + ;; Sexp query. + query)))) ;; FIXME: Accept plain queries as well. (org-ql-select buffer query :action (lambda () diff --git a/org-ql.info b/org-ql.info index ec95d268..08900a28 100644 --- a/org-ql.info +++ b/org-ql.info @@ -1051,6 +1051,8 @@ File: README.info, Node: 07-pre, Next: 063, Up: Changelog *Changed* • Give more useful error message for invalid queries. • Predicate ‘src’ now matches case-insensitively. + • Command ‘org-ql-sparse-tree’ accepts both string and sexp queries. + (Thanks to Akira Komamura (https://github.com/akirak).) *Fixed* • Predicate ‘src’’s matching of begin/end block lines, normalization @@ -1733,35 +1735,35 @@ Node: Links37255 Node: Tips37942 Node: Changelog38266 Node: 07-pre39049 -Node: 06341645 -Node: 06242180 -Node: 06142485 -Node: 0643053 -Node: 05246107 -Node: 05146407 -Node: 0546830 -Node: 04948359 -Node: 04848639 -Node: 04748988 -Node: 04649397 -Node: 04549805 -Node: 04450166 -Node: 04350525 -Node: 04250728 -Node: 04150889 -Node: 0451136 -Node: 03255237 -Node: 03155640 -Node: 0355837 -Node: 02359137 -Node: 02259371 -Node: 02159651 -Node: 0259856 -Node: 0163934 -Node: Notes64035 -Node: Comparison with Org Agenda searches64197 -Node: org-sidebar65086 -Node: License65365 +Node: 06341784 +Node: 06242319 +Node: 06142624 +Node: 0643192 +Node: 05246246 +Node: 05146546 +Node: 0546969 +Node: 04948498 +Node: 04848778 +Node: 04749127 +Node: 04649536 +Node: 04549944 +Node: 04450305 +Node: 04350664 +Node: 04250867 +Node: 04151028 +Node: 0451275 +Node: 03255376 +Node: 03155779 +Node: 0355976 +Node: 02359276 +Node: 02259510 +Node: 02159790 +Node: 0259995 +Node: 0164073 +Node: Notes64174 +Node: Comparison with Org Agenda searches64336 +Node: org-sidebar65225 +Node: License65504  End Tag Table