(import-macros {: pack! : require! : setup! : nmap} :macros) (pack! "https://github.com/nvim-mini/mini.nvim") (macro mini-spec! [mod ...] (let [args [...] odd-len? (= 1 (% (length args) 2)) [h opts] (if odd-len? [(list (unpack args 1 (- (length args) 1))) (. args (length args))] [args {}]) handlers (collect [i v (ipairs h) :into {} &until (= 0 (% i 2))] (values v (. h (+ i 1))))] `(vim.tbl_deep_extend :force {:name ,(.. :mini. mod) :load (setup! ,(.. :mini. mod) ,opts)} ,handlers))) (macro mini! [mod ...] `(table.insert specs (mini-spec! ,mod ,...))) (local specs []) (mini! :ai :event [:BufReadPost :BufNewFile]) (mini! :jump :keys [:t :f :T :F]) (mini! :icons :event :UIEnter) (mini! :notify :event :LspAttach) (mini! :surround :keys [:S :sd :sf :sF :sh :cs :sn] {:mappings {:add :S :delete :sd :replace :cs}}) (mini! :git :cmd :Git :keys [:ga]) (nmap :ga "Git add %" {:desc "git add"}) (mini! :visits :event :BufReadPost) (nmap :v #(let [visits (require! :mini.visits)] (visits.select_path))) (mini! :diff :event :BufReadPost {:view {:style :sign :signs {:add "+" :change "~" :delete "-"} :priority 49}}) (nmap :gd #((. (require :mini.diff) :toggle_overlay))) (mini! :indentscope :event [:BufReadPost :BufNewFile] {:draw {:delay 0 :animation (let [indentscope (require :mini.indentscope)] ((. indentscope.gen_animation :none)))} :symbol "▏" :options {:tray_as_border true}}) (mini! :starter (let [starter (require :mini.starter)] {:items [(starter.sections.recent_files 5 true) (starter.sections.builtin_actions)] :footer "" :silent false})) (mini! :hipatterns :event [:BufReadPost :BufNewFile] {:highlighters {:hex_color (let [hipatterns (require :mini.hipatterns)] ((. hipatterns.gen_highlighter :hex_color)))}}) (macro clue! [mode keys] `{:mode ,mode :keys ,keys}) (mini! :clue :keys [: :g "'" "\"" "[" "]" : :z {1 : :mode [:i :c]}] (let [miniclue (require :mini.clue)] {:triggers [(clue! :n :) (clue! :x :) (clue! :n :g) (clue! :x :g) (clue! :n "'") (clue! :x "'") (clue! :n "[") (clue! :n "]") (clue! :n "\"") (clue! :x "\"") (clue! :i :) (clue! :c :) (clue! :n :) (clue! :n :z) (clue! :x :z)] :clues [(miniclue.gen_clues.g) (miniclue.gen_clues.square_brackets) (miniclue.gen_clues.marks) (miniclue.gen_clues.registers) (miniclue.gen_clues.windows) (miniclue.gen_clues.z)] :window {:delay 300}})) ; (mini! :files :event :UIEnter {:mappings {:go_out_plus "-" :go_in_plus :}}) ; (nmap "-" (fn [] ; ((. (require :mini.files) :open))) {}) (mini! :cmdline :event :CmdlineEnter {:autocomplete {:enable true} :autopeek {:enable true}}) ((. (require! :lze) :load) [specs])