Ihor Radchenko <yanta...@gmail.com> writes: >> org-ql doesn't use skip functions, just queries. > > Skip functions are essentially used-defined queries as soon as the > queries are tested against every headline.
Skip functions aren't necessary with org-ql, because the query itself can have arbitrary Lisp code. So, of course, you can call custom functions in queries, even your own skip functions (with `not', of course), but in most cases, they can be covered with built-in predicates. > I can rewrite my skip functions into queries, but I don't expect much > improvement since org-ql seems to use org-entry-get, which is the main > performance bottleneck for my agenda generation. org-entry-get is only called for the (property) predicate. It's the correct way to get Org properties, because it handles special properties, inheritance, etc. However, when possible, queries are optimized to a whole-buffer regexp search that finds possible matches. So, for example, a query like '(property "owner" "yantar") would be optimized to a whole-buffer regexp search that would be very fast. See function org-ql--query-preamble.