biome-multi: presets and lint errors

This commit is contained in:
Pavel Korytov 2024-01-04 01:45:18 +03:00
parent dbea2562e2
commit 0b0333c111
3 changed files with 33 additions and 4 deletions

View file

@ -143,7 +143,7 @@ called with QUERIES and the data returned by the API as arguments."
:params (biome-api--get-params query)
:parser #'json-read
:success (cl-function
(lambda (&key data &allow-other-keys)
(lambda (&allow-other-keys)
;; I'm not sure why, but `request-response-done-p' for
;; the current request returns nil. I don't
;; know how stable this is, so...

View file

@ -65,7 +65,8 @@ This is a list of forms as defined by `biome-query-current'.")
(defun biome-multi-add-query ()
"Add new query to `biome-multi'."
(interactive)
(biome-query
(funcall-interactively
#'biome-query
(lambda (query)
(if (seq-empty-p biome-multi-query-current)
(setq biome-multi-query-current (list (copy-tree query)))
@ -109,17 +110,29 @@ This is a list of forms as defined by `biome-query-current'.")
(user-error "No queries to execute"))
(funcall biome-multi--callback biome-multi-query-current))
(defun biome-multi--generate-preset ()
"Generate a preset for the current multi-query."
(interactive)
(let ((buf (generate-new-buffer "*biome-preset*")))
(with-current-buffer buf
(emacs-lisp-mode)
(insert ";; Add this to your config\n")
(insert (pp-to-string `(biome-def-multi-preset ,(gensym "biome-query-preset-")
,biome-multi-query-current))))
(switch-to-buffer buf)))
(transient-define-prefix biome-multi-query (callback)
["Open Meteo Multi Query"
(biome-multi--transient-report-infix)]
["Queries"
:class transient-row
("a" "Add query" biome-multi-add-query)
("a" "Add query" biome-multi-add-query :transient transient--do-replace)
("e" "Edit query" biome-multi-edit :transient t)
("d" "Delete query" biome-multi-remove :transient t)]
["Actions"
:class transient-row
("RET" "Run" biome-multi-exec)
("P" "Generate preset definition" biome-multi--generate-preset)
("R" "Reset" biome-multi-reset :transient t)
("q" "Quit" transient-quit-one)]
(interactive (list nil))

View file

@ -77,7 +77,9 @@ API."
(defun biome-multi ()
"Run multiple queries to Open Meteo and join the results."
(interactive)
(biome-multi-query
(funcall-interactively
#'biome-multi-query
biome-multi-query
(lambda (query)
(biome-api-get-multiple
query
@ -102,5 +104,19 @@ PARAMS as query."
(setq biome-query-current ',params)
(biome-query--section-open (alist-get :name ',params))))
(defmacro biome-def-multi-preset (name params)
"Declare a multi-query preset.
NAME is the name of the target function. PARAMS is a form as defined
by `biome-multi-query-current'.
This macro creates an interactive function that runs `biome-multi' with
PARAMS as query."
(declare (indent 1))
`(defun ,name ()
(interactive)
(setq biome-multi-query-current ',params)
(call-interactively #'biome-multi)))
(provide 'biome)
;;; biome.el ends here