Add: org-ql-occur
This commit is contained in:
parent
77aa32cfe6
commit
5f37b7260b
1 changed files with 41 additions and 0 deletions
41
org-ql.el
41
org-ql.el
|
|
@ -1001,6 +1001,47 @@ A and B are Org headline elements."
|
||||||
(a-priority t)
|
(a-priority t)
|
||||||
(b-priority nil)))))
|
(b-priority nil)))))
|
||||||
|
|
||||||
|
;;;; Functions/Occur
|
||||||
|
|
||||||
|
(defun org-ql-occur (query &optional keep-previous callback)
|
||||||
|
"Make a compact tree which shows all matches of the query.
|
||||||
|
|
||||||
|
QUERY is an `org-ql' query sexp (quoted, since this is a
|
||||||
|
function).
|
||||||
|
|
||||||
|
The tree will show the lines where the query matches, and any other context
|
||||||
|
defined in `org-show-context-detail', which see.
|
||||||
|
|
||||||
|
When optional argument KEEP-PREVIOUS is non-nil, highlighting and
|
||||||
|
exposing done by a previous call to `org-occur' or `org-ql-occur'
|
||||||
|
will be kept, to allow stacking of calls to this command.
|
||||||
|
|
||||||
|
Optional argument CALLBACK can be a function of no argument. In this case,
|
||||||
|
it is called with point at the end of the match, match data being set
|
||||||
|
accordingly. Current match is shown only if the return value is non-nil.
|
||||||
|
The function must neither move point nor alter narrowing."
|
||||||
|
(interactive (list (read-minibuffer "Query: ")))
|
||||||
|
(unless keep-previous
|
||||||
|
(org-remove-occur-highlights nil nil t))
|
||||||
|
;; (push (cons regexp callback) org-occur-parameters)
|
||||||
|
(let ((result (org-ql-query (current-buffer) query
|
||||||
|
:action
|
||||||
|
(lambda ()
|
||||||
|
(when (or (not callback)
|
||||||
|
(funcall callback))
|
||||||
|
(when org-highlight-sparse-tree-matches
|
||||||
|
(org-highlight-new-match (match-beginning 0) (match-end 0)))
|
||||||
|
(org-show-context 'occur-tree)
|
||||||
|
t)))))
|
||||||
|
(when org-remove-highlights-with-change
|
||||||
|
(add-hook 'before-change-functions 'org-remove-occur-highlights
|
||||||
|
nil 'local))
|
||||||
|
(unless org-sparse-tree-open-archived-trees
|
||||||
|
(org-hide-archived-subtrees (point-min) (point-max)))
|
||||||
|
(run-hooks 'org-occur-hook)
|
||||||
|
(when (called-interactively-p 'interactive)
|
||||||
|
(message "%d match(es) for query %s" (length result) query))))
|
||||||
|
|
||||||
;;;; Footer
|
;;;; Footer
|
||||||
|
|
||||||
(provide 'org-ql)
|
(provide 'org-ql)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue