biome: add biome-preset

This commit is contained in:
Pavel Korytov 2024-03-10 17:47:22 +03:00
parent f4c5d0ec89
commit 36efbc122d
3 changed files with 49 additions and 6 deletions

View file

@ -113,12 +113,20 @@ This is a list of forms as defined by `biome-query-current'.")
(defun biome-multi--generate-preset () (defun biome-multi--generate-preset ()
"Generate a preset for the current multi-query." "Generate a preset for the current multi-query."
(interactive) (interactive)
(let ((buf (generate-new-buffer "*biome-preset*"))) (let ((buf (generate-new-buffer "*biome-preset*"))
(preset-symbol (gensym "biome-query-preset-")))
(with-current-buffer buf (with-current-buffer buf
(emacs-lisp-mode) (emacs-lisp-mode)
(insert ";; Add this to your config\n") (insert ";; Add this to your config\n")
(insert (pp-to-string `(biome-def-multi-preset ,(gensym "biome-query-preset-") (insert (pp-to-string `(biome-def-multi-preset ,preset-symbol
,biome-multi-query-current)))) ,biome-multi-query-current)))
(insert ";; invoke with M-x " (symbol-name preset-symbol))
(insert "\n\n;; Or:\n")
(insert (pp-to-string `(add-to-list 'biome-presets-alist
'(,(symbol-name preset-symbol)
:multi
,biome-multi-query-current))))
(insert ";; invoke with M-x biome-preset"))
(switch-to-buffer buf))) (switch-to-buffer buf)))
(transient-define-prefix biome-multi-query (callback) (transient-define-prefix biome-multi-query (callback)

View file

@ -965,12 +965,20 @@ SUFFIXES is a list of suffix definitions."
(defun biome-query--generate-preset () (defun biome-query--generate-preset ()
"Generate a preset for the current query." "Generate a preset for the current query."
(interactive) (interactive)
(let ((buf (generate-new-buffer "*biome-preset*"))) (let ((buf (generate-new-buffer "*biome-preset*"))
(preset-symbol (gensym "biome-query-preset-")))
(with-current-buffer buf (with-current-buffer buf
(emacs-lisp-mode) (emacs-lisp-mode)
(insert ";; Add this to your config\n") (insert ";; Add this to your config\n")
(insert (pp-to-string `(biome-def-preset ,(gensym "biome-query-preset-") (insert (pp-to-string `(biome-def-preset ,preset-symbol
,biome-query-current)))) ,biome-query-current)))
(insert ";; invoke with M-x " (symbol-name preset-symbol))
(insert "\n\n;; Or:\n")
(insert (pp-to-string `(add-to-list 'biome-presets-alist
'(,(symbol-name preset-symbol)
:normal
,biome-query-current))))
(insert ";; invoke with M-x biome-preset"))
(switch-to-buffer buf))) (switch-to-buffer buf)))
(transient-define-prefix biome-query--section (section &optional parents) (transient-define-prefix biome-query--section (section &optional parents)

View file

@ -57,6 +57,16 @@ API."
:type 'function :type 'function
:group 'biome) :group 'biome)
(defcustom biome-presets-alist nil
"Presets for `biome' queries."
:type '(repeat
(list
(string :tag "Preset name")
(choice (const :tag "Normal" :normal)
(const :tag "Multi" :multi))
(sexp :tag "Parameters")))
:group 'biome)
(defun biome () (defun biome ()
"Bountiful Interface to Open Meteo for Emacs." "Bountiful Interface to Open Meteo for Emacs."
(interactive) (interactive)
@ -117,5 +127,22 @@ PARAMS as query."
(setq biome-multi-query-current ',params) (setq biome-multi-query-current ',params)
(call-interactively #'biome-multi))) (call-interactively #'biome-multi)))
(defun biome-preset (preset-def)
"Run PRESET-DEF."
(interactive (list (alist-get
(completing-read "Preset" biome-presets-alist)
biome-presets-alist nil nil #'equal)))
(pcase-let ((`(,kind ,params) preset-def))
(pcase kind
(:normal
(setq biome-query--callback
(lambda (query)
(biome-api-get query biome-frontend)))
(setq biome-query-current params)
(biome-query--section-open (alist-get :name params)))
(:multi
(setq biome-multi-query-current params)
(call-interactively #'biome-multi)))))
(provide 'biome) (provide 'biome)
;;; biome.el ends here ;;; biome.el ends here