From a4b1d094f4116dc78721cd272d04c730298097ac Mon Sep 17 00:00:00 2001 From: Phil Bajsicki <phil@bajsicki.com> Date: Fri, 25 Apr 2025 21:04:16 +0200 Subject: [PATCH] Fix org-ql-select-tags-local-count --- README.org | 23 ++++++++++++----------- gptel-org-tools.el | 21 +++++++++++---------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/README.org b/README.org index e93fd7a..1f0bb1b 100644 --- a/README.org +++ b/README.org @@ -248,10 +248,11 @@ The rationale behind using ~list-buffers~ is the same as with dired. They both d Seems to be one of the most reliable tools in the basket... mostly because #+begin_src elisp -(defun gptel-org-tool--list-buffers () +(defun gptel-org-tool--list-buffers (&optional arg) (list-buffers-noselect) (with-temp-buffer "*Buffer List*" - (buffer-string))) + (let ((content (buffer-string))) + content))) (add-to-list 'gptel-org-tools (gptel-make-tool @@ -502,7 +503,7 @@ Currently *not* tangled, as I'm testing breaking out each type of query into its :description "Run org-ql-select against buffer with query. Using filename fails." :args (list '(:name "buffer" :type string - :description "The name of the buffer. Can be multiple buffers. See the NAME column in `emacs-list-buffers`.") + :description "The name of the buffer. Can be multiple buffers. See the NAME column in `list-buffers`.") '(:name "query" :type string :description "The query to pass into org-ql-select. See org-ql documentation for syntax. Usually `(tags \"tag1\" \"tag2\")` is sufficient. Possible predicates: `tags` (finds both local and inherited tags), `tags-local` (finds only local tags), `rifle` (matches against both heading and body text). This is a sexp, not a string.")) @@ -628,7 +629,7 @@ Retrieve the headings where the heading matches query.. :description "Retreive matching headings from buffer. Matches only a single string. Using filename fails." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in ~emacs-list-buffers~.") + :description "The name of the buffer. See the NAME column in ~list-buffers~.") '(:name "query" :type string :description "The string to match entry headings against.")) @@ -652,7 +653,7 @@ Retrieve all the headings where either heading or content matches query. :description "Retreive headings from buffer using org-ql-select. Matches against both heading and content. Using filename fails." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in ~emacs-list-buffers~.") + :description "The name of the buffer. See the NAME column in ~list-buffers~.") '(:name "query" :type string :description "The string to match entry headings against.")) @@ -676,7 +677,7 @@ This pulls all the headings (and their contents) when they match tags (without i :description "Run org-ql-select-tags-local against buffer with query. No tag inheritance." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in `emacs-list-buffers`. Using filename fails.") + :description "The name of the buffer. See the NAME column in `list-buffers`. Using filename fails.") '(:name "query" :type string :description "The string match entry tags against.")) @@ -686,7 +687,7 @@ This pulls all the headings (and their contents) when they match tags (without i ***** org-ql-select-tags-local-count This pulls all the local tags (without inheritance) from buffer, and returns the number of these tagged headings. #+begin_src elisp -(defun gptel-org-tools--org-ql-select-tags-local (buf query) +(defun gptel-org-tools--org-ql-select-tags-local-count (buf query) (length (org-ql-select (get-buffer buf) `(tags-local ,query) @@ -695,12 +696,12 @@ This pulls all the local tags (without inheritance) from buffer, and returns the (add-to-list 'gptel-org-tools (gptel-make-tool - :function #'gptel-org-tools--org-ql-select-tags-local + :function #'gptel-org-tools--org-ql-select-tags-local-count :name "gptel-org-tools--org-ql-select-tags-local" :description "Get count of matching tags from buffer. No tag inheritance." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in `emacs-list-buffers`. Using filename fails.") + :description "The name of the buffer. See the NAME column in `list-buffers`. Using filename fails.") '(:name "query" :type string :description "The string match entry tags against.")) @@ -723,7 +724,7 @@ This pulls all the headings (and their contents) when they match tags (with inhe :description "Run org-ql-select-tags against buffer with query. Supports tag inheritance." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in `emacs-list-buffers`. Using filename fails.") + :description "The name of the buffer. See the NAME column in `list-buffers`. Using filename fails.") '(:name "query" :type string :description "The string to match entry headings against.")) @@ -749,7 +750,7 @@ And, the "grab everything that matches" tool. :description "Run org-ql-select-rifle against buffer with query." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in `emacs-list-buffers`. Using filename fails.") + :description "The name of the buffer. See the NAME column in `list-buffers`. Using filename fails.") '(:name "query" :type string :description "A single string to search for.")) diff --git a/gptel-org-tools.el b/gptel-org-tools.el index b0cd65a..460752b 100644 --- a/gptel-org-tools.el +++ b/gptel-org-tools.el @@ -61,10 +61,11 @@ (org-end-of-subtree)) "---\n")) -(defun gptel-org-tool--list-buffers () +(defun gptel-org-tool--list-buffers (&optional arg) (list-buffers-noselect) (with-temp-buffer "*Buffer List*" - (buffer-string))) + (let ((content (buffer-string))) + content))) (add-to-list 'gptel-org-tools (gptel-make-tool @@ -245,7 +246,7 @@ DATE is the date or date range to match." :description "Retreive matching headings from buffer. Matches only a single string. Using filename fails." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in ~emacs-list-buffers~.") + :description "The name of the buffer. See the NAME column in ~list-buffers~.") '(:name "query" :type string :description "The string to match entry headings against.")) @@ -265,7 +266,7 @@ DATE is the date or date range to match." :description "Retreive headings from buffer using org-ql-select. Matches against both heading and content. Using filename fails." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in ~emacs-list-buffers~.") + :description "The name of the buffer. See the NAME column in ~list-buffers~.") '(:name "query" :type string :description "The string to match entry headings against.")) @@ -285,13 +286,13 @@ DATE is the date or date range to match." :description "Run org-ql-select-tags-local against buffer with query. No tag inheritance." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in `emacs-list-buffers`. Using filename fails.") + :description "The name of the buffer. See the NAME column in `list-buffers`. Using filename fails.") '(:name "query" :type string :description "The string match entry tags against.")) :category "org-ql")) -(defun gptel-org-tools--org-ql-select-tags-local (buf query) +(defun gptel-org-tools--org-ql-select-tags-local-count (buf query) (length (org-ql-select (get-buffer buf) `(tags-local ,query) @@ -300,12 +301,12 @@ DATE is the date or date range to match." (add-to-list 'gptel-org-tools (gptel-make-tool - :function #'gptel-org-tools--org-ql-select-tags-local + :function #'gptel-org-tools--org-ql-select-tags-local-count :name "gptel-org-tools--org-ql-select-tags-local" :description "Get count of matching tags from buffer. No tag inheritance." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in `emacs-list-buffers`. Using filename fails.") + :description "The name of the buffer. See the NAME column in `list-buffers`. Using filename fails.") '(:name "query" :type string :description "The string match entry tags against.")) @@ -324,7 +325,7 @@ DATE is the date or date range to match." :description "Run org-ql-select-tags against buffer with query. Supports tag inheritance." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in `emacs-list-buffers`. Using filename fails.") + :description "The name of the buffer. See the NAME column in `list-buffers`. Using filename fails.") '(:name "query" :type string :description "The string to match entry headings against.")) @@ -346,7 +347,7 @@ DATE is the date or date range to match." :description "Run org-ql-select-rifle against buffer with query." :args (list '(:name "buffer" :type string - :description "The name of the buffer. See the NAME column in `emacs-list-buffers`. Using filename fails.") + :description "The name of the buffer. See the NAME column in `list-buffers`. Using filename fails.") '(:name "query" :type string :description "A single string to search for."))