From d0acc8cbba63ef50f1c0ecffdf1770792b13592d Mon Sep 17 00:00:00 2001 From: Adam Porter Date: Mon, 30 May 2022 09:23:46 -0500 Subject: [PATCH] Add: (org-ql-find) --- README.org | 20 +- images/org-ql-find.png | Bin 0 -> 94724 bytes org-ql-find.el | 178 +++++++++++++ org-ql.info | 563 ++++++++++++++++++++++------------------- 4 files changed, 496 insertions(+), 265 deletions(-) create mode 100644 images/org-ql-find.png create mode 100644 org-ql-find.el diff --git a/README.org b/README.org index 61fe3bdb..507c3289 100644 --- a/README.org +++ b/README.org @@ -94,6 +94,9 @@ Lisp code examples are in [[examples.org]]. :TOC: ignore-children :END: ++ *Jumping to an entry:* + - [[#org-ql-find][org-ql-find]] (command) + - [[#helm-org-ql][helm-org-ql]] (command) + *Showing an agenda-like view:* - [[#org-ql-search][org-ql-search]] (command) - [[#org-ql-view][org-ql-view]] (command) @@ -101,8 +104,18 @@ Lisp code examples are in [[examples.org]]. - [[#org-ql-view-recent-items][org-ql-view-recent-items]] (command) + *Showing a tree in a buffer:* - [[#org-ql-sparse-tree][org-ql-sparse-tree]] (command) -+ *Showing results with Helm*: - - [[#helm-org-ql][helm-org-ql]] (command) + +*** org-ql-find + +/Note: These commands use [[#non-sexp-query-syntax][non-sexp queries]]./ + +These commands jump to a heading selected using Emacs's built-in completion facilities with an Org QL query: + +- ~org-ql-find~ searches all entry content. +- ~org-ql-find-path~ searches only headings (using the ~outline-path:~ predicate). +- ~org-ql-find-heading~ searches only headings (using the ~heading:~ predicate). + +[[images/org-ql-find.png]] *** org-ql-search @@ -524,7 +537,8 @@ Simple links may also be written manually in either sexp or non-sexp form, like: ** 0.7-pre -Nothing new yet. +*Added* ++ Commands ~org-ql-find~, ~org-ql-find-heading~, and ~org-ql-find-path~, which jump to entries selected using Emacs's built-in completion facilities and Org QL queries (like ~helm-org-ql~, but doesn't require Helm.). ** 0.6.2 diff --git a/images/org-ql-find.png b/images/org-ql-find.png new file mode 100644 index 0000000000000000000000000000000000000000..34359d09a48f1267c2cb29ee5d4e2b729f240427 GIT binary patch literal 94724 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 literal 0 HcmV?d00001 diff --git a/org-ql-find.el b/org-ql-find.el new file mode 100644 index 00000000..7585f755 --- /dev/null +++ b/org-ql-find.el @@ -0,0 +1,178 @@ +;;; org-ql-find.el --- Find headings with completion using org-ql -*- lexical-binding: t; -*- + +;; Copyright (C) 2022 Adam Porter + +;; Author: Adam Porter + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This library provides a way to quickly find and go to Org entries +;; selected with Emacs's built-in completions API (so it works with +;; packages that extend it, like Vertico, Marginalia, etc). It works +;; like `helm-org-ql' but does not require Helm. + +;;; Code: + +(require 'cl-lib) + +(require 'org) +(require 'org-ql) + +;;;; Customization + +(defgroup org-ql-find nil + "Options for `org-ql-find'." + :group 'org-ql) + +(defcustom org-ql-find-reverse-paths t + "Whether to reverse Org outline paths in `org-ql-find' results." + :type 'boolean) + +(defcustom org-ql-find-goto-hook '(org-show-entry) + "Functions called when selecting an entry." + :type 'hook) + +(defface org-ql-find-snippet '((t (:inherit font-lock-comment-face))) + "Snippets.") + +;;;; Functions + +;;;###autoload +(cl-defun org-ql-find (buffers-files &key query-prefix + (prompt "Find entry: ")) + "Go to an Org entry in BUFFERS-FILES selected by searching entries with `org-ql'. +Interactively, with universal prefix, select multiple buffers to +search with completion. + +If QUERY-PREFIX, prepend it to the query (e.g. use \"heading:\" +to only search headings, easily creating a custom command that +saves the user from having to type it)." + (interactive + (list (if current-prefix-arg + (mapcar #'get-buffer + (completing-read-multiple + "Buffers: " + (mapcar #'buffer-name + (cl-remove-if-not (lambda (buffer) + (eq 'org-mode (buffer-local-value 'major-mode buffer))) + (buffer-list))) nil t)) + (current-buffer)))) + ;; Emacs's completion API is not always easy to understand, + ;; especially when using "programmed completion." This code was + ;; made possible by the example Clemens Radermacher shared at + ;; . + (let ((table (make-hash-table :test #'equal)) + (window-width (window-width))) + (cl-labels ((action + () (font-lock-ensure (point-at-bol) (point-at-eol)) + (let* ((path (thread-first (org-get-outline-path t t) + (org-format-outline-path window-width nil "") + (org-split-string ""))) + (path (if org-ql-find-reverse-paths + (string-join (nreverse path) "\\") + (string-join path "/")))) + (puthash path (point-marker) table) + path)) + (affix (completions) + (cl-loop for completion in completions + for marker = (gethash completion table) + for todo-state = (if-let (it (org-entry-get marker "TODO")) + (concat (propertize it + 'face (org-get-todo-face it)) + " ") + "") + for snippet = (if-let (it (snippet marker)) + (propertize (concat " " it) + 'face 'org-ql-find-snippet) + "") + collect (list completion todo-state snippet))) + (annotate (candidate) + (or (snippet (gethash candidate table)) "")) + (snippet (marker) + (org-with-point-at marker + (org-end-of-meta-data t) + (unless (org-at-heading-p) + (let ((end (min (+ (point) 51) + (org-entry-end-position)))) + (truncate-string-to-width + (replace-regexp-in-string "\n" " " (buffer-substring (point) end) + t t) + 50 nil nil t))))) + (group (candidate transform) + (pcase transform + (`nil (buffer-name (marker-buffer (gethash candidate table)))) + (_ candidate))) + (try (string _table _pred point &optional _metadata) + (cons string point)) + (all (string table pred _point) + (all-completions string table pred)) + (collection (str _pred flag) + (pcase flag + ('metadata (list 'metadata + (cons 'group-function #'group) + (cons 'affixation-function #'affix) + (cons 'annotation-function #'annotate))) + (`t (unless (string-empty-p str) + (org-ql-select buffers-files (org-ql--query-string-to-sexp (concat query-prefix str)) + :action #'action)))))) + (let* ((completion-styles '(org-ql-find)) + (completion-styles-alist (list (list 'org-ql-find #'try #'all "Org QL Find"))) + (selected (completing-read prompt #'collection nil)) + (marker (gethash selected table))) + (with-current-buffer (marker-buffer marker) + (goto-char marker) + (display-buffer (current-buffer)) + (run-hook-with-args 'org-ql-find-goto-hook)))))) + +;;;###autoload +(defun org-ql-find-heading (buffers-files) + "Go to an Org entry in BUFFERS-FILES selected by searching with `org-ql'. +Only headings are searched (using the \"heading:\" predicate). +Interactively, with universal prefix, select multiple buffers to +search with completion." + (interactive + (list (if current-prefix-arg + (mapcar #'get-buffer + (completing-read-multiple + "Buffers: " + (mapcar #'buffer-name + (cl-remove-if-not (lambda (buffer) + (eq 'org-mode (buffer-local-value 'major-mode buffer))) + (buffer-list))) nil t)) + (current-buffer)))) + (org-ql-find buffers-files :prompt "Find heading: " :query-prefix "heading:")) + +;;;###autoload +(defun org-ql-find-path (buffers-files) + "Go to an Org entry in BUFFERS-FILES selected by searching with `org-ql'. +Only outline paths are searched (using the \"outline-path:\" +predicate). Interactively, with universal prefix, select +multiple buffers to search with completion." + (interactive + (list (if current-prefix-arg + (mapcar #'get-buffer + (completing-read-multiple + "Buffers: " + (mapcar #'buffer-name + (cl-remove-if-not (lambda (buffer) + (eq 'org-mode (buffer-local-value 'major-mode buffer))) + (buffer-list))) nil t)) + (current-buffer)))) + (org-ql-find buffers-files :prompt "Find outline path: " :query-prefix "outline-path:")) + +(provide 'org-ql-find) + +;;; org-ql-find.el ends here diff --git a/org-ql.info b/org-ql.info index 84895de5..0576cf5b 100644 --- a/org-ql.info +++ b/org-ql.info @@ -11,6 +11,14 @@ File: README.info, Node: Top, Next: Contents, Up: (dir) org-ql ****** +This package provides a query language for Org files. It offers two +syntax styles: Lisp-like sexps and search engine-like keywords. + + It includes three libraries: The ‘org-ql’ library is flexible and may +be used as a backend for other tools. The libraries ‘org-ql-search’ and +‘helm-org-ql’ (a separate package) provide interactive search commands +and saved views. + * Menu: * Contents:: @@ -23,15 +31,11 @@ org-ql — The Detailed Node Listing — - - Installation * Quelpa:: * Helm support:: - - Usage * Commands:: @@ -43,6 +47,7 @@ Usage Commands +* org-ql-find:: * org-ql-search:: * helm-org-ql:: * org-ql-view:: @@ -50,8 +55,6 @@ Commands * org-ql-view-recent-items:: * org-ql-sparse-tree:: - - Queries * Non-sexp query syntax:: @@ -59,8 +62,6 @@ Queries * Ancestor/descendant predicates:: * Date/time predicates:: - - Functions / Macros * Agenda-like views:: @@ -70,6 +71,7 @@ Functions / Macros Changelog * 0.7-pre: 07-pre. +* 0.6.2: 062. * 0.6.1: 061. * 0.6: 06. * 0.5.2: 052. @@ -94,20 +96,11 @@ Changelog * 0.2: 02. * 0.1: 01. - - Notes * Comparison with Org Agenda searches:: * org-sidebar:: -This package provides a query language for Org files. It offers two -syntax styles: Lisp-like sexps and search engine-like keywords. - - It includes three libraries: The org-ql library is flexible and may -be used as a backend for other tools. The libraries org-ql-search and -helm-org-ql (a separate package) provide interactive search commands and -saved views.  File: README.info, Node: Contents, Next: Screenshots, Prev: Top, Up: Top @@ -128,13 +121,13 @@ File: README.info, Node: Installation, Next: Usage, Prev: Screenshots, Up: T 3 Installation ************** -The package org-ql may be installed directly from MELPA +The package ‘org-ql’ may be installed directly from MELPA (https://melpa.org/#/org-ql) or with other tools like Quelpa (https://framagit.org/steckerhalter/quelpa). After installation, you can use the commands without additional configuration. To use the functions and macros in your own Elisp code, -use libraries org-ql and org-ql-view. +use libraries ‘org-ql’ and ‘org-ql-view’. * Menu: @@ -165,8 +158,8 @@ File: README.info, Node: Helm support, Prev: Quelpa, Up: Installation 3.2 Helm support ================ -The command helm-org-ql is available in the package helm-org-ql. It may -be installed from MELPA, or with Quelpa, like so: +The command ‘helm-org-ql’ is available in the package ‘helm-org-ql’. It +may be installed from MELPA, or with Quelpa, like so: (use-package helm-org-ql :quelpa (helm-org-ql :fetcher github :repo "alphapapa/org-ql" @@ -200,6 +193,9 @@ File: README.info, Node: Commands, Next: Queries, Up: Usage 4.1 Commands ============ + • *Jumping to an entry:* + • (command) + • (command) • *Showing an agenda-like view:* • (command) • (command) @@ -207,11 +203,10 @@ File: README.info, Node: Commands, Next: Queries, Up: Usage • (command) • *Showing a tree in a buffer:* • (command) - • *Showing results with Helm*: - • (command) * Menu: +* org-ql-find:: * org-ql-search:: * helm-org-ql:: * org-ql-view:: @@ -220,9 +215,26 @@ File: README.info, Node: Commands, Next: Queries, Up: Usage * org-ql-sparse-tree::  -File: README.info, Node: org-ql-search, Next: helm-org-ql, Up: Commands +File: README.info, Node: org-ql-find, Next: org-ql-search, Up: Commands + +4.1.1 org-ql-find +----------------- + +_Note: These commands use ._ + + These commands jump to a heading selected using Emacs’s built-in +completion facilities with an Org QL query: + + • ‘org-ql-find’ searches all entry content. + • ‘org-ql-find-path’ searches only headings (using the + ‘outline-path:’ predicate). + • ‘org-ql-find-heading’ searches only headings (using the ‘heading:’ + predicate). + + +File: README.info, Node: org-ql-search, Next: helm-org-ql, Prev: org-ql-find, Up: Commands -4.1.1 org-ql-search +4.1.2 org-ql-search ------------------- _Note: This command supports both sexp queries and ._ @@ -249,10 +261,10 @@ Interactively, with prefix, leave narrowed. ‘priority’. *Bindings:* Keys bound in results buffer. - • r: Refresh results. With prefix, prompt to adjust search + • ‘r’: Refresh results. With prefix, prompt to adjust search parameters. - • v: Show transient view dispatcher (like Magit’s popups). - • C-x C-s: Save query to variable ‘org-ql-views’ (accessible with + • ‘v’: Show ‘transient’ view dispatcher (like Magit’s popups). + • ‘C-x C-s’: Save query to variable ‘org-ql-views’ (accessible with command ‘org-ql-view’). *Note:* The view buffer is currently put in ‘org-agenda-mode’, which @@ -265,57 +277,57 @@ text properties are placed on each item, imitating an Agenda buffer.)  File: README.info, Node: helm-org-ql, Next: org-ql-view, Prev: org-ql-search, Up: Commands -4.1.2 helm-org-ql +4.1.3 helm-org-ql ----------------- _Note: This command uses . It is available separately in the package -helm-org-ql._ +‘helm-org-ql’._ This command displays matches with Helm. - • Press C-x C-s in the Helm session to save the results to an - org-ql-search buffer. + • Press ‘C-x C-s’ in the Helm session to save the results to an + ‘org-ql-search’ buffer.  File: README.info, Node: org-ql-view, Next: org-ql-view-sidebar, Prev: helm-org-ql, Up: Commands -4.1.3 org-ql-view +4.1.4 org-ql-view ----------------- Choose and display a view stored in ‘org-ql-views’. *Bindings:* Keys bound in view buffer. - • g, r: Refresh results. With prefix, prompt to adjust search + • ‘g’, ‘r’: Refresh results. With prefix, prompt to adjust search parameters. - • v: Show transient view dispatcher (like Magit’s popups). - • C-x C-s: Save query to variable ‘org-ql-views’ (accessible with + • ‘v’: Show ‘transient’ view dispatcher (like Magit’s popups). + • ‘C-x C-s’: Save query to variable ‘org-ql-views’ (accessible with command ‘org-ql-view’).  File: README.info, Node: org-ql-view-sidebar, Next: org-ql-view-recent-items, Prev: org-ql-view, Up: Commands -4.1.4 org-ql-view-sidebar +4.1.5 org-ql-view-sidebar ------------------------- -Show a sidebar window listing views stored in org-ql-views for easy -access. In the sidebar, press RET or mouse-1 to show the view at point, -and press c to customize the view at point. +Show a sidebar window listing views stored in ‘org-ql-views’ for easy +access. In the sidebar, press ‘RET’ or ‘mouse-1’ to show the view at +point, and press ‘c’ to customize the view at point.  File: README.info, Node: org-ql-view-recent-items, Next: org-ql-sparse-tree, Prev: org-ql-view-sidebar, Up: Commands -4.1.5 org-ql-view-recent-items +4.1.6 org-ql-view-recent-items ------------------------------ Show items in ‘FILES’ from last ‘DAYS’ days with timestamps of ‘TYPE’. ‘TYPE’ may be ‘ts’, ‘ts-active’, ‘ts-inactive’, ‘clocked’, ‘closed’, -‘deadline’, ‘planning’, or ‘scheduled’. FILES defaults to those -returned by the function org-agenda-files. +‘deadline’, ‘planning’, or ‘scheduled’. ‘FILES’ defaults to those +returned by the function ‘org-agenda-files’.  File: README.info, Node: org-ql-sparse-tree, Prev: org-ql-view-recent-items, Up: Commands -4.1.6 org-ql-sparse-tree +4.1.7 org-ql-sparse-tree ------------------------ Arguments: ‘(query &key keep-previous (buffer (current-buffer)))’ @@ -337,7 +349,7 @@ File: README.info, Node: Queries, Next: Functions / Macros, Prev: Commands, =========== • • • • - An org-ql query is a Lisp expression which may contain arbitrary + An ‘org-ql’ query is a Lisp expression which may contain arbitrary expressions, as well as calling certain built-in predicates. It is byte-compiled into a predicate function which is tested with point on each heading in an Org buffer; when it returns non-nil, the heading @@ -366,11 +378,11 @@ File: README.info, Node: Non-sexp query syntax, Next: General predicates, Up: 4.2.1 Non-sexp query syntax --------------------------- -The command org-ql-search also accepts, and the command helm-org-ql only -accepts, an alternative, non-sexp query syntax. The syntax is simple, -and a few examples of queries in both syntaxes should suffice. By -default, when multiple predicates are used, they are combined with -boolean and. +The command ‘org-ql-search’ also accepts, and the command ‘helm-org-ql’ +only accepts, an alternative, non-sexp query syntax. The syntax is +simple, and a few examples of queries in both syntaxes should suffice. +By default, when multiple predicates are used, they are combined with +boolean ‘and’. Sexp syntax Non-sexp syntax ------------------------------------------------------------------------------------------------------- @@ -386,9 +398,9 @@ Sexp syntax Non-sexp syntax ‘(and (tags "space") (not (regexp "moon")))’ ‘tags:space !moon’ ‘(priority >= B)’ ‘priority:A,B’ - Note that the effort, level, and priority predicates do not support -comparators in the non-sexp syntax, so multiple arguments should be -passed instead, as seen in the last example. + Note that the ‘effort’, ‘level’, and ‘priority’ predicates do not +support comparators in the non-sexp syntax, so multiple arguments should +be passed instead, as seen in the last example.  File: README.info, Node: General predicates, Next: Ancestor/descendant predicates, Prev: Non-sexp query syntax, Up: Queries @@ -410,14 +422,14 @@ Arguments are listed next to predicate names, where applicable. Matches if effort is between DURATIONs, inclusive. ‘(effort COMPARATOR DURATION)’: Matches if effort compares to ‘DURATION’ with ‘COMPARATOR’. ‘COMPARATOR’ may be ‘<’, ‘<=’, ‘>’, or ‘>=’. - ‘DURATION’ should be an Org effort string, like 5 or 0:05. + ‘DURATION’ should be an Org effort string, like ‘5’ or ‘0:05’. ‘habit’ Return non-nil if entry is a habit. ‘heading (&rest strings)’ Return non-nil if current entry’s heading matches all ‘STRINGS’. Matching is done case-insensitively. - • Aliases: h. -‘‘heading-regexp (&rest regexps)’’ + • Aliases: ‘h’. +‘heading-regexp (&rest regexps)’ Return non-nil if current entry’s heading matches all ‘REGEXPS’ (regexp strings). Matching is done case-insensitively. • Aliases: ‘h*’. @@ -437,8 +449,8 @@ Arguments are listed next to predicate names, where applicable. ‘outline-path (&rest strings)’ Return non-nil if current node’s outline path matches all of ‘STRINGS’. Each string may appear as a substring in any part of - the node’s outline path. For example, the path Food/Fruits/Grapes - would match ‘(olp "Fruit" "Grape")’. + the node’s outline path. For example, the path + ‘Food/Fruits/Grapes’ would match ‘(olp "Fruit" "Grape")’. • Aliases: ‘olp’. ‘outline-path-segment (&rest strings)’ Return non-nil if current node’s outline path matches ‘STRINGS’. @@ -470,8 +482,8 @@ Arguments are listed next to predicate names, where applicable. Return non-nil if current entry matches all of ‘REGEXPS’ (regexp strings). Matches against entire entry, from beginning of its heading to the next heading. - • Aliases: r. -‘‘src (&key lang regexps)’’ + • Aliases: ‘r’. +‘src (&key lang regexps)’ Return non-nil if current entry contains an Org Babel source block. If ‘LANG’ is non-nil, match blocks of that language. If ‘REGEXPS’ is non-nil, require that block’s contents match all regexps. @@ -553,10 +565,10 @@ to look forward, or negative to look backward), a string parseable by Return non-nil if current entry has a timestamp in given period. Without arguments, return non-nil if entry has a timestamp. - ‘ts-active, ts-a’ - Like ts, but only matches active timestamps. - ‘ts-inactive, ts-i’ - Like ts, but only matches inactive timestamps. + ‘ts-active’, ‘ts-a’ + Like ‘ts’, but only matches active timestamps. + ‘ts-inactive’, ‘ts-i’ + Like ‘ts’, but only matches inactive timestamps. The following predicates, in addition to the keyword arguments, can also take a single argument, a number, which looks backward or forward a @@ -584,8 +596,8 @@ searching for items planned in the next few days: • *Forward-looking* ‘deadline’ Return non-nil if current entry has deadline in given period. - If argument is auto, return non-nil if entry has deadline - within org-deadline-warning-days. Without arguments, return + If argument is ‘auto’, return non-nil if entry has deadline + within ‘org-deadline-warning-days’. Without arguments, return non-nil if entry has any deadline. ‘planning’ Return non-nil if current entry has planning timestamp (i.e. @@ -623,7 +635,7 @@ File: README.info, Node: Agenda-like views, Next: Listing / acting-on results, For use as a custom agenda block type in ‘org-agenda-custom-commands’. For example, you could define a custom series command like this, which would list all priority A - items tagged Emacs with to-do keyword SOMEDAY, followed by the + items tagged ‘Emacs’ with to-do keyword ‘SOMEDAY’, followed by the standard agenda view, in a single buffer: (setq org-agenda-custom-commands @@ -643,8 +655,8 @@ File: README.info, Node: Agenda-like views, Next: Listing / acting-on results, However, the ‘org-ql-block’ version runs in about 1/5th the time. - The variable org-ql-block-header may be bound to a string to use as - the block header, otherwise the header is formed automatically. + The variable ‘org-ql-block-header’ may be bound to a string to use + as the block header, otherwise the header is formed automatically.  File: README.info, Node: Listing / acting-on results, Next: Custom predicates, Prev: Agenda-like views, Up: Functions / Macros @@ -792,7 +804,7 @@ File: README.info, Node: Custom predicates, Prev: Listing / acting-on results, • See: Custom predicate tutorial (examples/defpred.org) - 1. Macro: org-ql-defpred + 1. Macro: ‘org-ql-defpred’ _Arguments:_ ‘(name args docstring &key body preambles normalizers)’ @@ -881,9 +893,9 @@ supported: • Each column may also be specified as a list with the second element being a header string. For example, to abbreviate the priority column: ‘(priority "P")’. - • For certain columns, like property, arguments may be passed by - specifying the column type itself as a list. For example, to - display a column showing the values of a ‘property’ named + • For certain columns, like ‘property’, arguments may be passed + by specifying the column type itself as a list. For example, + to display a column showing the values of a ‘property’ named ‘milestone’, with the header being abbreviated to ‘M’: ‘((property "milestone") "M")’. • ‘:sort’ One or a list of Org QL sorting methods (see @@ -898,7 +910,7 @@ in the following example). For example, this dynamic block shows the first seven headings that are to-do items with priority A or B, sorted by deadline then priority, -with certain columns (including the value of the agenda-group property +with certain columns (including the value of the ‘agenda-group’ property with a custom header) and timestamp format: #+BEGIN: org-ql :query "todo: priority:A,B" :columns (todo (priority "P") ((property "agenda-group") "Group") deadline heading) :sort (deadline priority) :take 7 :ts-format "%Y-%m-%d %H:%M" @@ -941,7 +953,7 @@ File: README.info, Node: Tips, Prev: Links, Up: Usage ======== • Org QL View buffers can be bookmarked with Emacs bookmark commands, - e.g. C-x r m. This also integrates with org-sidebar + e.g. ‘C-x r m’. This also integrates with org-sidebar (https://github.com/alphapapa/org-sidebar) and Burly (https://github.com/alphapapa/burly.el). @@ -960,6 +972,7 @@ releases. * Menu: * 0.7-pre: 07-pre. +* 0.6.2: 062. * 0.6.1: 061. * 0.6: 06. * 0.5.2: 052. @@ -985,17 +998,32 @@ releases. * 0.1: 01.  -File: README.info, Node: 07-pre, Next: 061, Up: Changelog +File: README.info, Node: 07-pre, Next: 062, Up: Changelog 5.1 0.7-pre =========== -Nothing new yet. +*Added* + • Commands ‘org-ql-find’, ‘org-ql-find-heading’, and + ‘org-ql-find-path’, which jump to entries selected using Emacs’s + built-in completion facilities and Org QL queries (like + ‘helm-org-ql’, but doesn’t require Helm.).  -File: README.info, Node: 061, Next: 06, Prev: 07-pre, Up: Changelog +File: README.info, Node: 062, Next: 061, Prev: 07-pre, Up: Changelog -5.2 0.6.1 +5.2 0.6.2 +========= + +*Fixed* + • ‘link’ predicate when used in an ‘or’’ed query. (#279 + (https://github.com/alphapapa/org-ql/issues/279). Thanks to Marc + Fargas (https://github.com/telenieko) for reporting.) + + +File: README.info, Node: 061, Next: 06, Prev: 062, Up: Changelog + +5.3 0.6.1 ========= *Fixed* @@ -1013,11 +1041,11 @@ File: README.info, Node: 061, Next: 06, Prev: 07-pre, Up: Changelog  File: README.info, Node: 06, Next: 052, Prev: 061, Up: Changelog -5.3 0.6 +5.4 0.6 ======= *Added* - • Macro org-ql-defpred, used to define search predicates. (See + • Macro ‘org-ql-defpred’, used to define search predicates. (See tutorial (examples/defpred.org).) • Predicate ‘effort’. • Predicate ‘heading-regexp’, which matches regular expressions @@ -1038,21 +1066,21 @@ File: README.info, Node: 06, Next: 052, Prev: 061, Up: Changelog For example, ‘:sort '(todo priority date)’ now does what ‘:sort '(date priority todo)’ did in earlier versions. (This change is made to enable the new ‘reverse’ sorting method.) Users who have - customized org-ql-views will need to update the stored views’ + customized ‘org-ql-views’ will need to update the stored views’ sorting methods to preserve the desired sort order. - • Helm support (including the command helm-org-ql) has been moved to - a separate package, helm-org-ql. + • Helm support (including the command ‘helm-org-ql’) has been moved + to a separate package, ‘helm-org-ql’. • Predicate ‘heading’ now matches plain strings instead of regular expressions. - • Update dash dependency, and remove dependency on obsolete - dash-functional. (Fixes #179 + • Update ‘dash’ dependency, and remove dependency on obsolete + ‘dash-functional’. (Fixes #179 (https://github.com/alphapapa/org-ql/issues/179), #209 (https://github.com/alphapapa/org-ql/issues/209). Thanks to Mark Hudnall (https://github.com/landakram), Akira Komamura (https://github.com/akirak), Nathanael kinfe (https://github.com/natask), Pablo Stafforini (https://github.com/benthamite), Jason May - (https://github.com/jmay), and Basil L. Contovounesios + (https://github.com/jmay), and Basil L. Contovounesios (https://github.com/basil-conto).) *Removed* @@ -1067,7 +1095,7 @@ File: README.info, Node: 06, Next: 052, Prev: 061, Up: Changelog *Internal* • Predicates are now defined more cleanly with a macro - (org-ql-defpred) that consolidates functionality related to each + (‘org-ql-defpred’) that consolidates functionality related to each predicate. This will also allow users to more easily define custom predicates. • Version 1.0 of library ‘peg’ is now required. @@ -1080,7 +1108,7 @@ File: README.info, Node: 06, Next: 052, Prev: 061, Up: Changelog  File: README.info, Node: 052, Next: 051, Prev: 06, Up: Changelog -5.4 0.5.2 +5.5 0.5.2 ========= *Fixed* @@ -1091,12 +1119,12 @@ File: README.info, Node: 052, Next: 051, Prev: 06, Up: Changelog  File: README.info, Node: 051, Next: 05, Prev: 052, Up: Changelog -5.5 0.5.1 +5.6 0.5.1 ========= *Fixed* • Custom sorting functions could corrupt the cache, causing items to - disappear after refreshing an org-ql-search buffer. (#186 + disappear after refreshing an ‘org-ql-search’ buffer. (#186 (https://github.com/alphapapa/org-ql/issues/186), #187 (https://github.com/alphapapa/org-ql/issues/187). Thanks to Nathanael kinfe (https://github.com/natask).) @@ -1104,19 +1132,19 @@ File: README.info, Node: 051, Next: 05, Prev: 052, Up: Changelog  File: README.info, Node: 05, Next: 049, Prev: 051, Up: Changelog -5.6 0.5 +5.7 0.5 ======= *Added* - • View dispatcher using transient.el (like Magit), bound to v in + • View dispatcher using ‘transient.el’ (like Magit), bound to ‘v’ in search/view buffers. - • Predicate link, which matches descriptions and targets in Org + • Predicate ‘link’, which matches descriptions and targets in Org links. • Predicate ‘tags-regexp’ (alias: ‘tags*’), which matches regexps against entry tags (e.g, helpful when a tag might end in "s"). • Emacs bookmark support: Org QL View buffers can be bookmarked with, - e.g. C-x r m and shown with, e.g. C-x r b. (This also enables - view restoration with Burly + e.g. ‘C-x r m’ and shown with, e.g. ‘C-x r b’. (This also + enables view restoration with Burly (https://github.com/alphapapa/burly.el).) • Dynamic block support. • Org link support (storing and opening links to Org QL View @@ -1124,7 +1152,7 @@ File: README.info, Node: 05, Next: 049, Prev: 051, Up: Changelog • Mascot. *Changed* - • Binding to refresh search/view buffers changed to r. + • Binding to refresh search/view buffers changed to ‘r’. *Internal* • When formatting entries for Org QL View buffers, use internal @@ -1133,9 +1161,9 @@ File: README.info, Node: 05, Next: 049, Prev: 051, Up: Changelog Org versions before 9.3. *Deprecated* - • Macro org-ql is marked obsolete. It will be removed in v0.7. - Functions org-ql-select and org-ql-query should be used instead. - (The macro serves only to confuse with regard to quoting + • Macro ‘org-ql’ is marked obsolete. It will be removed in v0.7. + Functions ‘org-ql-select’ and ‘org-ql-query’ should be used + instead. (The macro serves only to confuse with regard to quoting arguments.) *Acknowledgments* @@ -1145,18 +1173,18 @@ File: README.info, Node: 05, Next: 049, Prev: 051, Up: Changelog  File: README.info, Node: 049, Next: 048, Prev: 05, Up: Changelog -5.7 0.4.9 +5.8 0.4.9 ========= *Fixed* - • Agenda restriction in org-ql-block. (Fixes #84 + • Agenda restriction in ‘org-ql-block’. (Fixes #84 (https://github.com/alphapapa/org-ql/issues/84). Thanks to Ihor Radchenko (https://github.com/yantar92).)  File: README.info, Node: 048, Next: 047, Prev: 049, Up: Changelog -5.8 0.4.8 +5.9 0.4.8 ========= *Fixed* @@ -1168,12 +1196,12 @@ File: README.info, Node: 048, Next: 047, Prev: 049, Up: Changelog  File: README.info, Node: 047, Next: 046, Prev: 048, Up: Changelog -5.9 0.4.7 -========= +5.10 0.4.7 +========== *Fixed* - • Give a useful error if org-ql-search-directories-files is called - without a directories argument and org-directory doesn’t exist. + • Give a useful error if ‘org-ql-search-directories-files’ is called + without a directories argument and ‘org-directory’ doesn’t exist. (Fixes #139 (https://github.com/alphapapa/org-ql/issues/139). Thanks to Matt Huszagh (https://github.com/matthuszagh) for reporting.) @@ -1181,12 +1209,12 @@ File: README.info, Node: 047, Next: 046, Prev: 048, Up: Changelog  File: README.info, Node: 046, Next: 045, Prev: 047, Up: Changelog -5.10 0.4.6 +5.11 0.4.6 ========== *Fixed* - • Compatibility with newer versions of the peg library, which removed - a macro used by this package. (Fixes #75 + • Compatibility with newer versions of the ‘peg’ library, which + removed a macro used by this package. (Fixes #75 (https://github.com/alphapapa/org-ql/issues/75). Thanks to Karl Voit (https://github.com/novoid) and @karlicoss (https://github.com/karlicoss) for reporting.) @@ -1194,7 +1222,7 @@ File: README.info, Node: 046, Next: 045, Prev: 047, Up: Changelog  File: README.info, Node: 045, Next: 044, Prev: 046, Up: Changelog -5.11 0.4.5 +5.12 0.4.5 ========== *Fixed* @@ -1206,7 +1234,7 @@ File: README.info, Node: 045, Next: 044, Prev: 046, Up: Changelog  File: README.info, Node: 044, Next: 043, Prev: 045, Up: Changelog -5.12 0.4.4 +5.13 0.4.4 ========== *Fixed* @@ -1218,17 +1246,17 @@ File: README.info, Node: 044, Next: 043, Prev: 045, Up: Changelog  File: README.info, Node: 043, Next: 042, Prev: 044, Up: Changelog -5.13 0.4.3 +5.14 0.4.3 ========== *Fixed* - • When org-ql-view-refresh is called, ensure the buffer is an Org QL - View buffer. + • When ‘org-ql-view-refresh’ is called, ensure the buffer is an Org + QL View buffer.  File: README.info, Node: 042, Next: 041, Prev: 043, Up: Changelog -5.14 0.4.2 +5.15 0.4.2 ========== *Fixed* @@ -1237,24 +1265,24 @@ File: README.info, Node: 042, Next: 041, Prev: 043, Up: Changelog  File: README.info, Node: 041, Next: 04, Prev: 042, Up: Changelog -5.15 0.4.1 +5.16 0.4.1 ========== *Fixed* - • level predicate used with arguments in plain queries. (Thanks to + • ‘level’ predicate used with arguments in plain queries. (Thanks to Akira Komamura (https://github.com/akirak) for reporting.)  File: README.info, Node: 04, Next: 032, Prev: 041, Up: Changelog -5.16 0.4 +5.17 0.4 ======== _Note:_ The next release, 0.5, may include changes which will require minor updates to written queries (e.g. a few predicates may be renamed). Users who wish to avoid those changes happening unexpectedly -in their configs should avoid upgrading org-ql beyond 0.4 automatically, -as they will be pushed to the master branch when ready. +in their configs should avoid upgrading ‘org-ql’ beyond 0.4 +automatically, as they will be pushed to the ‘master’ branch when ready. *Added* • *Commands* @@ -1268,13 +1296,13 @@ as they will be pushed to the master branch when ready. • *Queries* • Negation of terms in plain queries using ‘!’. For example, ‘tags:space !moon’ to exclude entries which contain ‘moon’. - • Predicates outline-path (alias olp) and outline-path-segment - (alias olps). + • Predicates ‘outline-path’ (alias ‘olp’) and + ‘outline-path-segment’ (alias ‘olps’). • Predicate ‘src’, which matches Org Babel source blocks. - • Predicates parent and ancestors. (Thanks to Josh Moller-Mara - (https://github.com/mm--).) - • Alias h for heading predicate. - • Alias r for regexp predicate. (Thanks to Feng Shu + • Predicates ‘parent’ and ‘ancestors’. (Thanks to Josh + Moller-Mara (https://github.com/mm--).) + • Alias ‘h’ for ‘heading’ predicate. + • Alias ‘r’ for ‘regexp’ predicate. (Thanks to Feng Shu (https://github.com/tumashu).) • Info manual. • Function ‘helm-org-ql-source’, which returns a Helm source that @@ -1282,40 +1310,40 @@ as they will be pushed to the master branch when ready. for custom Helm commands that search certain files. • Display a message when views are refreshed. (Thanks to xeijin (https://github.com/xeijin).) - • Respect Org Agenda restriction in org-ql-block. (Thanks to Ihor + • Respect Org Agenda restriction in ‘org-ql-block’. (Thanks to Ihor Radchenko (https://github.com/yantar92) for reporting.) - • Option org-ql-view-sidebar-sort-views. - • Mouseover help-echo text for org-ql-views default view names. - • "Dangling tasks" default view in org-ql-views. (Users who have - modified org-ql-views from the default will not see the new view + • Option ‘org-ql-view-sidebar-sort-views’. + • Mouseover ‘help-echo’ text for ‘org-ql-views’ default view names. + • "Dangling tasks" default view in ‘org-ql-views’. (Users who have + modified ‘org-ql-views’ from the default will not see the new view unless they copy it into their config.) *Changed* - • Some default org-ql-view views (users who have modified - org-ql-views from the default will not see the new views unless + • Some default ‘org-ql-view’ views (users who have modified + ‘org-ql-views’ from the default will not see the new views unless they copy them into their config): • Rename some views. - • "Stuck projects" view (now uses descendants instead of - children, which is more useful. + • "Stuck projects" view (now uses ‘descendants’ instead of + ‘children’, which is more useful. *Fixed* - • Inherit file tags when org-tag-inheritance is enabled. (Fixes #55 - (https://github.com/alphapapa/org-ql/issues/55). Thanks to Mikhail - Skorzhinskiy (https://github.com/mskorzhinskiy).) - • Call helm-make-source directly instead of using - helm-build-sync-source macro. (Fixes #60 + • Inherit file tags when ‘org-tag-inheritance’ is enabled. (Fixes + #55 (https://github.com/alphapapa/org-ql/issues/55). Thanks to + Mikhail Skorzhinskiy (https://github.com/mskorzhinskiy).) + • Call ‘helm-make-source’ directly instead of using + ‘helm-build-sync-source’ macro. (Fixes #60 (https://github.com/alphapapa/org-ql/issues/60). Thanks to Matt Huszagh (https://github.com/matthuszagh) for reporting.) • Search/view buffers now always end with a newline, which prevents - side-scrolling of the window when calling end-of-buffer. - • Face for done to-do keywords in org-ql-view buffers. (Thanks to + side-scrolling of the window when calling ‘end-of-buffer’. + • Face for done to-do keywords in ‘org-ql-view’ buffers. (Thanks to Yiming Chen (https://github.com/dsdshcym).) • Make view buffers read-only. (Fixes #72 (https://github.com/alphapapa/org-ql/issues/72). Thanks to xeijin (https://github.com/xeijin).) • Sorting with single sorter specified as an atom. (Thanks to Jeff Filipovits (https://github.com/legalnonsense).) - • Autoload for org-ql-block agenda block. (Fixes #53 + • Autoload for ‘org-ql-block’ agenda block. (Fixes #53 (https://github.com/alphapapa/org-ql/issues/53). Thanks to reports from Gus Cantieni (https://github.com/gcantieni), Karl Voit (https://github.com/novoid), rieje (https://github.com/rieje), and @@ -1328,20 +1356,20 @@ as they will be pushed to the master branch when ready.  File: README.info, Node: 032, Next: 031, Prev: 04, Up: Changelog -5.17 0.3.2 +5.18 0.3.2 ========== *Fixed* - • In org-ql-search, accept symbol as ‘:super-groups’ argument. - • In the This week and Next week default org-ql-views views, set - timestamps for beginning-of-week to 00:00:00 and end-of-week to + • In ‘org-ql-search’, accept symbol as ‘:super-groups’ argument. + • In the ‘This week’ and ‘Next week’ default ‘org-ql-views’ views, + set timestamps for beginning-of-week to 00:00:00 and end-of-week to 23:59:59. • Plain quoted-phrases in non-sexp queries.  File: README.info, Node: 031, Next: 03, Prev: 032, Up: Changelog -5.18 0.3.1 +5.19 0.3.1 ========== *Fixed* @@ -1351,103 +1379,106 @@ File: README.info, Node: 031, Next: 03, Prev: 032, Up: Changelog  File: README.info, Node: 03, Next: 023, Prev: 031, Up: Changelog -5.19 0.3 +5.20 0.3 ======== *Added* - • Alternative, non-sexp query syntax for commands org-ql-search and - helm-org-ql. See . - • Command helm-org-ql. - • Command org-ql-sparse-tree, like org-sparse-tree for org-ql + • Alternative, non-sexp query syntax for commands ‘org-ql-search’ and + ‘helm-org-ql’. See . + • Command ‘helm-org-ql’. + • Command ‘org-ql-sparse-tree’, like ‘org-sparse-tree’ for ‘org-ql’ queries. (Thanks to Akira Komamura (https://github.com/akirak).) - • Command org-ql-view-sidebar. + • Command ‘org-ql-view-sidebar’. • Per-buffer, per-heading tag caching, which increases the speed of tags-related queries by 6-7x. • More tags-related predicates and aliases: - • For inherited tags: tags-inherited, inherited-tags, tags-i, - itags. - • For heading-local tags: tags-local, local-tags, tags-l, ltags. - • tags-all, tags&: Matches all given tags using boolean AND - (rather than boolean OR, which the tags predicate uses). - • Variable org-ql-block-header, which overrides the default header in - org-ql-block agenda blocks. - • Predicate (path). - • Option org-ql-views may now be customized in a guided, structured - way with the customization UI (e.g. - M-x customize-option RET org-ql-views RET, or press c in the - org-ql-view-sidebar buffer). - • Enable more Org Agenda commands in org-ql-view buffers (e.g. + • For inherited tags: ‘tags-inherited’, ‘inherited-tags’, + ‘tags-i’, ‘itags’. + • For heading-local tags: ‘tags-local’, ‘local-tags’, ‘tags-l’, + ‘ltags’. + • ‘tags-all’, ‘tags&’: Matches all given tags using boolean + ‘AND’ (rather than boolean ‘OR’, which the ‘tags’ predicate + uses). + • Variable ‘org-ql-block-header’, which overrides the default header + in ‘org-ql-block’ agenda blocks. + • Predicate ‘(path)’. + • Option ‘org-ql-views’ may now be customized in a guided, structured + way with the customization UI (e.g. ‘M-x customize-option RET + org-ql-views RET’, or press ‘c’ in the ‘org-ql-view-sidebar’ + buffer). + • Enable more Org Agenda commands in ‘org-ql-view’ buffers (e.g. setting deadlines and scheduling). (Fixes #35 (https://github.com/alphapapa/org-ql/issues/35). Thanks to Milan Zamazal (https://github.com/mz-pdm) and Mikhail Skorzhinskii (https://github.com/mskorzhinskiy).) - • Function org-ql-select’s buffers-files argument can be a function - which returns a list of buffers and/or files. + • Function ‘org-ql-select’’s ‘buffers-files’ argument can be a + function which returns a list of buffers and/or files. *Changed* - • Predicate heading now accepts multiple regexps, which are matched - with boolean AND. - • Predicate regexp now matches its regexp arguments with boolean AND. - • Package org-super-agenda is now a dependency. This removes the + • Predicate ‘heading’ now accepts multiple regexps, which are matched + with boolean ‘AND’. + • Predicate ‘regexp’ now matches its regexp arguments with boolean + ‘AND’. + • Package ‘org-super-agenda’ is now a dependency. This removes the need for awkward code to handle the case where it’s not installed, and makes grouping features always available. Of course, the - global minor mode org-super-agenda-mode is not activated by org-ql, - so no behavior is changed in Org Agenda or org-ql; it only means - that commands like org-ql-search will always provide grouping when - called with the appropriate arguments. + global minor mode ‘org-super-agenda-mode’ is not activated by + ‘org-ql’, so no behavior is changed in Org Agenda or ‘org-ql’; it + only means that commands like ‘org-ql-search’ will always provide + grouping when called with the appropriate arguments. *Removed* - • Macro org-ql-agenda. Instead, use function org-ql-search. See - also command org-ql-view, etc. + • Macro ‘org-ql-agenda’. Instead, use function ‘org-ql-search’. See + also command ‘org-ql-view’, etc. *Fixed* - • Predicate heading now matches only against heading text, i.e. not - including tags at the end of the line, to-do keyword, etc. - • Predicate todo now matches case-sensitively, avoiding - non-todo-keyword matches (e.g. a heading which begins Waiting on - will no longer match for a todo keyword WAITING). - • Interactive completion in org-ql-search. + • Predicate ‘heading’ now matches only against heading text, i.e. + not including tags at the end of the line, to-do keyword, etc. + • Predicate ‘todo’ now matches case-sensitively, avoiding + non-todo-keyword matches (e.g. a heading which begins ‘Waiting on’ + will no longer match for a todo keyword ‘WAITING’). + • Interactive completion in ‘org-ql-search’. *Internal* - • Refactored code from file org-ql-agenda.el into files - org-ql-search.el and org-ql-view.el. Function and variable names - have been changed accordingly. + • Refactored code from file ‘org-ql-agenda.el’ into files + ‘org-ql-search.el’ and ‘org-ql-view.el’. Function and variable + names have been changed accordingly.  File: README.info, Node: 023, Next: 022, Prev: 03, Up: Changelog -5.20 0.2.3 +5.21 0.2.3 ========== *Fixed* • Priority queries could fail to match headings whose to-do keywords - had non-alphabetic characters, like TO-READ. + had non-alphabetic characters, like ‘TO-READ’.  File: README.info, Node: 022, Next: 021, Prev: 023, Up: Changelog -5.21 0.2.2 +5.22 0.2.2 ========== *Fixed* - • (deadline auto) selector matched entries whose deadlines had a + • ‘(deadline auto)’ selector matched entries whose deadlines had a warning period that had not yet been entered - (org-deadline-warning-days too soon). + (‘org-deadline-warning-days’ too soon).  File: README.info, Node: 021, Next: 02, Prev: 022, Up: Changelog -5.22 0.2.1 +5.23 0.2.1 ========== *Fixed* - • (descendants) selector matched against parent heading instead of + • ‘(descendants)’ selector matched against parent heading instead of only descendants.  File: README.info, Node: 02, Next: 01, Prev: 021, Up: Changelog -5.23 0.2 +5.24 0.2 ======== *Added* @@ -1468,7 +1499,7 @@ File: README.info, Node: 02, Next: 01, Prev: 021, Up: Changelog • Selectors ‘ts-a’ and ‘ts-i’, aliases for ‘ts-active’ and ‘ts-inactive’. • Selector ‘ts’ now accepts a ‘:type’ argument. - • Face org-ql-agenda-due-date. + • Face ‘org-ql-agenda-due-date’. • Selectors ‘(children)’ and ‘(descendants)’. • Function ‘org-ql-search’ and macro ‘org-ql-agenda’ accept a ‘:title’ argument, which is displayed in the header. @@ -1477,11 +1508,11 @@ File: README.info, Node: 02, Next: 01, Prev: 021, Up: Changelog • Customization group ‘org-ql’. • Command ‘org-ql-view’, which displays views saved to variable ‘org-ql-views’, which can be saved from ‘org-ql-search’ buffers - with command ‘org-ql-search-save’, which is bound to C-x C-s in + with command ‘org-ql-search-save’, which is bound to ‘C-x C-s’ in view buffers. • Variable ‘org-ql-view-map’, active in view buffers displayed by ‘org-ql-search’, ‘org-ql-agenda’, and ‘org-ql-view’. - • random sort method. + • ‘random’ sort method. • Save position when refreshing search buffers. *Changed* @@ -1500,14 +1531,14 @@ File: README.info, Node: 02, Next: 01, Prev: 021, Up: Changelog *Fixed* • Handle date ranges in date-based selectors. (Thanks to Cody - Goodman (https://github.com/codygman), Samuel W. Flint + Goodman (https://github.com/codygman), Samuel W. Flint (https://github.com/swflint), and Vikas Rawal (https://github.com/vikasrawal).) - • Don’t overwrite bindings in org-agenda-mode-map. + • Don’t overwrite bindings in ‘org-agenda-mode-map’. • Don’t search buffers without headings, and show a message if the user attempts it. • Don’t search hidden/special buffers. - • Properly accept arbitrary sort functions in org-ql-select, etc. + • Properly accept arbitrary sort functions in ‘org-ql-select’, etc. (Fixes #37 (https://github.com/alphapapa/org-ql/issues/37). Thanks to Milan Zamazal (https://github.com/mz-pdm).) • Planning-line-related predicates searched too far into entries. @@ -1521,7 +1552,7 @@ File: README.info, Node: 02, Next: 01, Prev: 021, Up: Changelog (https://github.com/dakra).) *Internal* - • Optimizations for some query selectors, e.g. regexp and todo. + • Optimizations for some query selectors, e.g. ‘regexp’ and ‘todo’. These can provide a significant improvement for some queries. See benchmarks in notes.org (notes.org). • Library ts (https://github.com/alphapapa/ts.el) is now used for @@ -1530,7 +1561,7 @@ File: README.info, Node: 02, Next: 01, Prev: 021, Up: Changelog  File: README.info, Node: 01, Prev: 02, Up: Changelog -5.24 0.1 +5.25 0.1 ======== First tagged release. @@ -1561,10 +1592,10 @@ in the advanced searching tutorial it would require using ‘org-search-view’ with a query with specific regular expression syntax, like this: -+lisp +{^\*+\s-+TO-READ\s-} + +lisp +{^\*+\s-+TO-READ\s-} - But with org-ql-search, you would write a query like -lisp todo:TO-READ, or in Lisp syntax, ‘(and "lisp" (todo "TO-READ"))’. + But with ‘org-ql-search’, you would write a query like ‘lisp +todo:TO-READ’, or in Lisp syntax, ‘(and "lisp" (todo "TO-READ"))’.  File: README.info, Node: org-sidebar, Prev: Comparison with Org Agenda searches, Up: Notes @@ -1588,60 +1619,68 @@ GPLv3  Tag Table: Node: Top225 -Node: Contents1724 -Node: Screenshots1847 -Node: Installation1965 -Node: Quelpa2461 -Node: Helm support2989 -Node: Usage3380 -Node: Commands3778 -Node: org-ql-search4251 -Node: helm-org-ql5901 -Node: org-ql-view6261 -Node: org-ql-view-sidebar6761 -Node: org-ql-view-recent-items7117 -Node: org-ql-sparse-tree7601 -Node: Queries8401 -Node: Non-sexp query syntax9512 -Node: General predicates11236 -Node: Ancestor/descendant predicates17457 -Node: Date/time predicates18585 -Node: Functions / Macros21673 -Node: Agenda-like views21971 -Node: Listing / acting-on results23376 -Node: Custom predicates29012 -Node: Dynamic block32671 -Node: Links35383 -Node: Tips36070 -Node: Changelog36388 -Node: 07-pre37141 -Node: 06137248 -Node: 0637819 -Node: 05240830 -Node: 05141130 -Node: 0541547 -Node: 04943021 -Node: 04843295 -Node: 04743642 -Node: 04644037 -Node: 04544439 -Node: 04444800 -Node: 04345159 -Node: 04245356 -Node: 04145517 -Node: 0445758 -Node: 03249691 -Node: 03150070 -Node: 0350267 -Node: 02353242 -Node: 02253470 -Node: 02153738 -Node: 0253937 -Node: 0157972 -Node: Notes58073 -Node: Comparison with Org Agenda searches58235 -Node: org-sidebar59107 -Node: License59386 +Node: Contents1764 +Node: Screenshots1887 +Node: Installation2005 +Node: Quelpa2519 +Node: Helm support3047 +Node: Usage3450 +Node: Commands3848 +Node: org-ql-find4353 +Node: org-ql-search4867 +Node: helm-org-ql6561 +Node: org-ql-view6939 +Node: org-ql-view-sidebar7469 +Node: org-ql-view-recent-items7849 +Node: org-ql-sparse-tree8345 +Node: Queries9145 +Node: Non-sexp query syntax10262 +Node: General predicates12021 +Node: Ancestor/descendant predicates18260 +Node: Date/time predicates19388 +Node: Functions / Macros22512 +Node: Agenda-like views22810 +Ref: Function ‘org-ql-block’22972 +Node: Listing / acting-on results24233 +Ref: Caching24441 +Ref: Function ‘org-ql-select’25354 +Ref: Function ‘org-ql-query’27780 +Ref: Macro ‘org-ql’ (deprecated)29554 +Node: Custom predicates29869 +Ref: Macro ‘org-ql-defpred’30093 +Node: Dynamic block33534 +Node: Links36258 +Node: Tips36945 +Node: Changelog37269 +Node: 07-pre38037 +Node: 06238392 +Node: 06138700 +Node: 0639268 +Node: 05242322 +Node: 05142622 +Node: 0543045 +Node: 04944574 +Node: 04844854 +Node: 04745201 +Node: 04645610 +Node: 04546018 +Node: 04446379 +Node: 04346738 +Node: 04246941 +Node: 04147102 +Node: 0447349 +Node: 03251450 +Node: 03151853 +Node: 0352050 +Node: 02355350 +Node: 02255584 +Node: 02155864 +Node: 0256069 +Node: 0160147 +Node: Notes60248 +Node: Comparison with Org Agenda searches60410 +Node: org-sidebar61299 +Node: License61578  End Tag Table