mirror of
https://github.com/SqrtMinusOne/biome.git
synced 2025-12-10 22:43:03 +03:00
biome: improve presets
This commit is contained in:
parent
36efbc122d
commit
db0784e243
3 changed files with 39 additions and 11 deletions
|
|
@ -25,10 +25,14 @@
|
||||||
;; Tools for doing multiple queries to Open Meteo.
|
;; Tools for doing multiple queries to Open Meteo.
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
(require 'biome-query)
|
|
||||||
(require 'font-lock)
|
(require 'font-lock)
|
||||||
(require 'transient)
|
(require 'transient)
|
||||||
|
|
||||||
|
(require 'biome-query)
|
||||||
|
|
||||||
|
;; XXX Recursive imports T_T
|
||||||
|
(declare-function biome-preset "biome")
|
||||||
|
|
||||||
(defvar biome-multi-query-current nil
|
(defvar biome-multi-query-current nil
|
||||||
"Current query.
|
"Current query.
|
||||||
|
|
||||||
|
|
@ -140,6 +144,7 @@ This is a list of forms as defined by `biome-query-current'.")
|
||||||
["Actions"
|
["Actions"
|
||||||
:class transient-row
|
:class transient-row
|
||||||
("RET" "Run" biome-multi-exec)
|
("RET" "Run" biome-multi-exec)
|
||||||
|
("p" "Preset" biome-preset :transient transient--do-replace)
|
||||||
("P" "Generate preset definition" biome-multi--generate-preset)
|
("P" "Generate preset definition" biome-multi--generate-preset)
|
||||||
("R" "Reset" biome-multi-reset :transient t)
|
("R" "Reset" biome-multi-reset :transient t)
|
||||||
("q" "Quit" transient-quit-one)]
|
("q" "Quit" transient-quit-one)]
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,10 @@
|
||||||
|
|
||||||
(require 'biome-api-data)
|
(require 'biome-api-data)
|
||||||
|
|
||||||
|
;; XXX Recursive imports T_T
|
||||||
|
(declare-function biome-preset "biome")
|
||||||
|
(declare-function biome-multi "biome")
|
||||||
|
|
||||||
(defcustom biome-query-max-fields-in-row 20
|
(defcustom biome-query-max-fields-in-row 20
|
||||||
"Maximum number of fields in a row."
|
"Maximum number of fields in a row."
|
||||||
:type 'integer
|
:type 'integer
|
||||||
|
|
@ -438,7 +442,7 @@ number of options is more than
|
||||||
(mapconcat
|
(mapconcat
|
||||||
(lambda (choice)
|
(lambda (choice)
|
||||||
(propertize (cdr choice) 'face
|
(propertize (cdr choice) 'face
|
||||||
(if (eq (car choice) value)
|
(if (equal (car choice) value)
|
||||||
'transient-value
|
'transient-value
|
||||||
'transient-inactive-value)))
|
'transient-inactive-value)))
|
||||||
(oref obj options)
|
(oref obj options)
|
||||||
|
|
@ -1038,6 +1042,8 @@ SECTION is a form as defined in `biome-api-parse--page'."
|
||||||
["Actions"
|
["Actions"
|
||||||
:class transient-row
|
:class transient-row
|
||||||
("r" "Resume" biome-resume :transient transient--do-replace)
|
("r" "Resume" biome-resume :transient transient--do-replace)
|
||||||
|
("p" "Preset" biome-preset :transient transient--do-stack)
|
||||||
|
("u" "Join multiple queries" biome-multi :transient transient--do-stack)
|
||||||
("q" "Quit" transient-quit-one)]
|
("q" "Quit" transient-quit-one)]
|
||||||
(interactive (list nil))
|
(interactive (list nil))
|
||||||
(unless callback
|
(unless callback
|
||||||
|
|
|
||||||
25
biome.el
25
biome.el
|
|
@ -58,7 +58,17 @@ API."
|
||||||
:group 'biome)
|
:group 'biome)
|
||||||
|
|
||||||
(defcustom biome-presets-alist nil
|
(defcustom biome-presets-alist nil
|
||||||
"Presets for `biome' queries."
|
"Presets for `biome' queries.
|
||||||
|
|
||||||
|
One item of the list is another list with three elements:
|
||||||
|
- preset name;
|
||||||
|
- `:normal' for normal `biome' or `:multi' for `biome-multi';
|
||||||
|
- parameters as defined by `biome-query-current' or
|
||||||
|
`biome-multi-query-current'.
|
||||||
|
Thus, preset names are the keys of the alist.
|
||||||
|
|
||||||
|
To generate expressions that add stuff to this list, run \"Generate
|
||||||
|
preset definition\" in `biome' or `biome-multi'."
|
||||||
:type '(repeat
|
:type '(repeat
|
||||||
(list
|
(list
|
||||||
(string :tag "Preset name")
|
(string :tag "Preset name")
|
||||||
|
|
@ -128,7 +138,14 @@ PARAMS as query."
|
||||||
(call-interactively #'biome-multi)))
|
(call-interactively #'biome-multi)))
|
||||||
|
|
||||||
(defun biome-preset (preset-def)
|
(defun biome-preset (preset-def)
|
||||||
"Run PRESET-DEF."
|
"Run `biome' with a preset.
|
||||||
|
|
||||||
|
PRESET-DEF is one preset as defined by `biome-presets-alist', sans the
|
||||||
|
name. If run interactively, prompt PRESET-DEF from
|
||||||
|
`biome-presets-alist'.
|
||||||
|
|
||||||
|
Run \"Generate preset definition\" in `biome' or `biome-multi' to
|
||||||
|
generate expressions that add stuff to `biome-presets-alist'."
|
||||||
(interactive (list (alist-get
|
(interactive (list (alist-get
|
||||||
(completing-read "Preset" biome-presets-alist)
|
(completing-read "Preset" biome-presets-alist)
|
||||||
biome-presets-alist nil nil #'equal)))
|
biome-presets-alist nil nil #'equal)))
|
||||||
|
|
@ -138,10 +155,10 @@ PARAMS as query."
|
||||||
(setq biome-query--callback
|
(setq biome-query--callback
|
||||||
(lambda (query)
|
(lambda (query)
|
||||||
(biome-api-get query biome-frontend)))
|
(biome-api-get query biome-frontend)))
|
||||||
(setq biome-query-current params)
|
(setq biome-query-current (copy-tree params))
|
||||||
(biome-query--section-open (alist-get :name params)))
|
(biome-query--section-open (alist-get :name params)))
|
||||||
(:multi
|
(:multi
|
||||||
(setq biome-multi-query-current params)
|
(setq biome-multi-query-current (copy-tree params))
|
||||||
(call-interactively #'biome-multi)))))
|
(call-interactively #'biome-multi)))))
|
||||||
|
|
||||||
(provide 'biome)
|
(provide 'biome)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue