Archived
Update use! macro to work more like Emacs's use-package
This commit is contained in:
+29
-8
@@ -13,13 +13,13 @@
|
||||
|
||||
;; Better autocommands
|
||||
(lambda hook! [hooks ?patterns callback]
|
||||
(let [hook_table (if (= (type hooks) :table)
|
||||
hooks
|
||||
(let [hook_table (if (= (type hooks) :table)
|
||||
hooks
|
||||
[ hooks ])
|
||||
pattern_table (if (not ?patterns)
|
||||
[]
|
||||
(= (type ?patterns) :table)
|
||||
?patterns
|
||||
?patterns
|
||||
[ ?patterns ])]
|
||||
(var group "config-hook")
|
||||
(each [_ hook (ipairs hook_table)]
|
||||
@@ -27,20 +27,41 @@
|
||||
(each [_ pattern (ipairs pattern_table)]
|
||||
(set group (.. group "-" pattern)))
|
||||
`(vim.api.nvim_create_autocmd ,hook_table
|
||||
{ :group
|
||||
(vim.api.nvim_create_augroup ,group
|
||||
{ :group
|
||||
(vim.api.nvim_create_augroup ,group
|
||||
{ :clear true })
|
||||
:pattern ,pattern_table
|
||||
:pattern ,pattern_table
|
||||
:callback ,callback })))
|
||||
;; Nicer macro for use
|
||||
;; (lambda use! [repo ...]
|
||||
;; (local output [ repo ])
|
||||
;; (var last_key nil)
|
||||
;; (each [_ val (ipairs [...])]
|
||||
;; (if last_key
|
||||
;; (do (tset output last_key val)
|
||||
;; (set last_key nil))
|
||||
;; (set last_key val)))
|
||||
;; `(use ,output))
|
||||
(lambda use! [repo ...]
|
||||
(local output [ repo ])
|
||||
(var last_key nil)
|
||||
(var config_mode false)
|
||||
(var has_config false)
|
||||
(var config_entries (list `lambda []))
|
||||
(each [_ val (ipairs [...])]
|
||||
(if last_key
|
||||
(if config_mode
|
||||
(if (= (type val) :string)
|
||||
(set config_mode false)
|
||||
(table.insert config_entries val))
|
||||
last_key
|
||||
(do (tset output last_key val)
|
||||
(set last_key nil))
|
||||
(= val :config)
|
||||
(do (set config_mode true)
|
||||
(set has_config true))
|
||||
(set last_key val)))
|
||||
(if has_config
|
||||
(tset output :config config_entries))
|
||||
`(use ,output))
|
||||
|
||||
;; Can be passed to :config of `use!'
|
||||
@@ -62,7 +83,7 @@
|
||||
(lambda module-fn! [mod func]
|
||||
`(. (require ,mod) ,func))
|
||||
|
||||
{: bind!
|
||||
{: bind!
|
||||
: hook!
|
||||
: use!
|
||||
: setup!
|
||||
|
||||
Reference in New Issue
Block a user