mirror of
https://github.com/SqrtMinusOne/biome.git
synced 2025-12-10 14:35:13 +03:00
biome-multi: presets and lint errors
This commit is contained in:
parent
dbea2562e2
commit
0b0333c111
3 changed files with 33 additions and 4 deletions
|
|
@ -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...
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
18
biome.el
18
biome.el
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue