This commit is contained in:
Adam Porter 2021-09-08 15:42:58 -05:00
parent 71f7c7a69f
commit 3046527f73

View file

@ -22,8 +22,8 @@
#+BEGIN: org-ql :query "todo: tags:bug" :columns ((priority "P") ((property "milestone") "M") (todo "Keyword") heading) :sort (priority todo date) :ts-format "%Y-%m-%d %H:%M" #+BEGIN: org-ql :query "todo: tags:bug" :columns ((priority "P") ((property "milestone") "M") (todo "Keyword") heading) :sort (priority todo date) :ts-format "%Y-%m-%d %H:%M"
| P | M | Keyword | Heading | | P | M | Keyword | Heading |
|---+-----+---------+------------------------------------------------| |---+-----+---------+------------------------------------------------|
| A | 0.6 | PROJECT | [[Compatibility with Org 9.4 custom link changes][Compatibility with Org 9.4 custom link changes]] |
| | | NEXT | [[Check Org 9.4 source code for second argument][Check Org 9.4 source code for second argument]] | | | | NEXT | [[Check Org 9.4 source code for second argument][Check Org 9.4 source code for second argument]] |
| A | 0.6 | PROJECT | [[Compatibility with Org 9.4 custom link changes][Compatibility with Org 9.4 custom link changes]] |
#+END: #+END:
** Milestones ([[org-ql-search:todo%253A?super-groups=%2528%2528%253Aauto-property%2520%2522milestone%2522%2529%2529&sort=%2528todo%2529&title=%2522Milestones%2522][view]]) ** Milestones ([[org-ql-search:todo%253A?super-groups=%2528%2528%253Aauto-property%2520%2522milestone%2522%2529%2529&sort=%2528todo%2529&title=%2522Milestones%2522][view]])
@ -107,12 +107,13 @@
- [[#omnifocus-like-screencasts][OmniFocus-like screencasts]] - [[#omnifocus-like-screencasts][OmniFocus-like screencasts]]
- [[#use-ripgrep-to-search-unopened-files][Use ripgrep to search unopened files]] - [[#use-ripgrep-to-search-unopened-files][Use ripgrep to search unopened files]]
- [[#key-cache-results-by-action-function][Key cache results by action function]] - [[#key-cache-results-by-action-function][Key cache results by action function]]
- [[#use-session-async-to-have-a-persistent-search-process][Use session-async to have a persistent search process]]
- [[#overlay-based-caching-inspired-by-org-num-mode][Overlay-based caching inspired by org-num-mode]] - [[#overlay-based-caching-inspired-by-org-num-mode][Overlay-based caching inspired by org-num-mode]]
- [[#alternative-parsing-libraries][Alternative parsing libraries]]
- [[#fancier-searching-for-inherited-tags][Fancier searching for inherited tags]] - [[#fancier-searching-for-inherited-tags][Fancier searching for inherited tags]]
- [[#compatibility-with-org-94-custom-link-changes][Compatibility with Org 9.4 custom link changes]] - [[#compatibility-with-org-94-custom-link-changes][Compatibility with Org 9.4 custom link changes]]
- [[#convert-simple-sexp-queries-to-non-sexp][Convert simple sexp queries to non-sexp]] - [[#convert-simple-sexp-queries-to-non-sexp][Convert simple sexp queries to non-sexp]]
- [[#reverse-sorting][Reverse sorting]] - [[#reverse-sorting][Reverse sorting]]
- [[#recursive-sub-queries-in-non-sexp-format][Recursive sub-queries in non-sexp format]]
- [[#optimized-date-specific-timestamp-regexps][Optimized, date-specific timestamp regexps]] - [[#optimized-date-specific-timestamp-regexps][Optimized, date-specific timestamp regexps]]
- [[#multi-pass-query-normalization][Multi-pass query normalization]] - [[#multi-pass-query-normalization][Multi-pass query normalization]]
- [[#optimization-for-olp-predicate][Optimization for olp predicate]] - [[#optimization-for-olp-predicate][Optimization for olp predicate]]
@ -129,6 +130,7 @@
- [[#normalize-queries][Normalize queries]] - [[#normalize-queries][Normalize queries]]
- [[#update-view-screenshots][Update view screenshots]] - [[#update-view-screenshots][Update view screenshots]]
- [[#test-caching][Test caching]] - [[#test-caching][Test caching]]
- [[#alternative-parsing-libraries][Alternative parsing libraries]]
- [[#timestamp-predicates-using-relative-dates-break-caching][Timestamp predicates using relative dates break caching]] - [[#timestamp-predicates-using-relative-dates-break-caching][Timestamp predicates using relative dates break caching]]
- [[#link-target-doesnt-work][~(link :target)~ doesn't work]] - [[#link-target-doesnt-work][~(link :target)~ doesn't work]]
- [[#link-regexp-p-doesnt-work][~(link :regexp-p)~ doesn't work]] - [[#link-regexp-p-doesnt-work][~(link :regexp-p)~ doesn't work]]
@ -385,12 +387,6 @@ That could run queries in the other process and then send results to the main Em
However, there might still be a useful idea here somewhere... However, there might still be a useful idea here somewhere...
** MAYBE [#C] Alternative parsing libraries
+ e.g. Bovine and Wisent come with Emacs, which would allow us to drop the =peg= dependency (which doesn't use lexical binding).
+ [[https://github.com/cute-jumper/parsec.el][parsec]] is third-party, but looks powerful
** MAYBE [#C] Fancier searching for inherited tags ** MAYBE [#C] Fancier searching for inherited tags
When tag inheritance is enabled, and the given tags aren't file-level tags, we could search directly to headings containing the matching tags, and then only do per-heading matching on the subtrees. Sometimes that would be much faster. However, that might make the logic special-cased and complicated. Might need a redesign of the whole matching/predicate system to do cleanly. When tag inheritance is enabled, and the given tags aren't file-level tags, we could search directly to headings containing the matching tags, and then only do per-heading matching on the subtrees. Sometimes that would be much faster. However, that might make the logic special-cased and complicated. Might need a redesign of the whole matching/predicate system to do cleanly.
@ -538,6 +534,46 @@ Need to mention incompatible change (though that isn't the best way to describe
*** WAITING [[https://github.com/alphapapa/org-ql/issues/143#issuecomment-863638651][Get feedback]] *** WAITING [[https://github.com/alphapapa/org-ql/issues/143#issuecomment-863638651][Get feedback]]
** PROJECT Recursive sub-queries in non-sexp format
[2021-09-08 Wed 15:41] Eric Abrahamsen showed me this in =#emacs:matrix.org=:
#+BEGIN_SRC elisp
(defvar test-pexs
'((query (+ (or compound-term term)))
(term (or subquery prefixed-term kv-term value) term-end)
(subquery "(" query ")"
`(query -- (if (= 1 (length query)) query (list query))))
(prefixed-term (or negated-term near-term))
(negated-term (or "not " "-") term
`(term -- (list 'not term)))
(near-term "near " term
`(term -- (list 'near term)))
(compound-term (or or-terms and-terms))
(or-terms (or subquery prefixed-term term) "or " (or subquery prefixed-term term)
`(t1 t2 -- (list 'or t1 t2)))
(and-terms (or subquery prefixed-term term) "and " (or subquery prefixed-term term)
`(t1 t2 -- (list 'and t1 t2)))
(value (or quoted-value plain-value))
(plain-value (substring (+ [word])))
(quoted-value "\"" (substring (+ (not "\"") (any))) "\"")
(kv-term plain-value ":" value
`(k v -- (cons (intern k) v)))
(term-end (opt (+ [space])))))
#+END_SRC
#+BEGIN_QUOTE
The INFINITE RECURSIVE SUBQUERIES is particularly nice
BTW, I see what you mean about the peg macros, that's a real pain. I have a small patch that should fix that
This was half-cribbed from org-ql to begin with, so it's only right that you get something in return :)
The subtlety is all in the ordering of the or statements
#+END_QUOTE
It should be pretty easy to add some of that to our query parsing.
** PROJECT [#B] Optimized, date-specific timestamp regexps :enhancement: ** PROJECT [#B] Optimized, date-specific timestamp regexps :enhancement:
:PROPERTIES: :PROPERTIES:
:milestone: 0.7 :milestone: 0.7
@ -2133,6 +2169,13 @@ e.g. doesn't currently show the =View= header.
See notes on 1dce9467f25428b5289d3665cd840820969ed65a. It would be good to test the caching explicitly, at least for some queries, because if I were to completely break it again, in such a way that results were stored but retrieval always failed, the tests wouldn't catch it. See notes on 1dce9467f25428b5289d3665cd840820969ed65a. It would be good to test the caching explicitly, at least for some queries, because if I were to completely break it again, in such a way that results were stored but retrieval always failed, the tests wouldn't catch it.
** CANCELED [#C] Alternative parsing libraries
+ e.g. Bovine and Wisent come with Emacs, which would allow us to drop the =peg= dependency +(which doesn't use lexical binding)+
+ [[https://github.com/cute-jumper/parsec.el][parsec]] is third-party, but looks powerful
[2021-09-08 Wed 15:40] (=peg= does use lexical binding now, and it's in ELPA and getting a bit of attention, so no need to drop it, I think.)
** DONE [#A] Timestamp predicates using relative dates break caching :bug: ** DONE [#A] Timestamp predicates using relative dates break caching :bug:
:PROPERTIES: :PROPERTIES:
:milestone: 0.6 :milestone: 0.6
@ -3256,6 +3299,7 @@ When committing a fix:
- [[#benson-chu][Benson Chu]] - [[#benson-chu][Benson Chu]]
- [[#kevin-brubeck-unhammer][Kevin Brubeck Unhammer]] - [[#kevin-brubeck-unhammer][Kevin Brubeck Unhammer]]
- [[#mikhail-skorzhinskiy][Mikhail Skorzhinskiy]] - [[#mikhail-skorzhinskiy][Mikhail Skorzhinskiy]]
- [[#trey-peacock][Trey Peacock]]
:END: :END:
** [[https://github.com/AloisJanicek/.doom.d-2nd][Alois Janicek]] ** [[https://github.com/AloisJanicek/.doom.d-2nd][Alois Janicek]]