Epic use macro

This commit is contained in:
elkowar 2021-05-09 11:36:32 +02:00
parent c4e7ed4ee6
commit 5a5de804e3
No known key found for this signature in database
GPG key ID: E321AD71B1D1F27F
6 changed files with 132 additions and 91 deletions

View file

@ -1,4 +1,10 @@
{
"optOut": false,
"lastUpdateCheck": 1619802461034
"lastUpdateCheck": 1620514416532,
"update": {
"latest": "7.12.0",
"current": "6.14.12",
"type": "major",
"name": "npm"
}
}

View file

@ -23,47 +23,44 @@
(vim.cmd "filetype plugin indent on")
(vim.cmd "syntax on")
(set vim.o.showmode false)
(set vim.o.foldmethod "marker")
(set vim.o.undodir (.. vim.env.HOME "/.vim/undo-dir"))
(set vim.o.undofile true)
(set vim.o.shortmess (.. vim.o.shortmess "c")) ; Don't give completion messages like 'match 1 of 2' or 'The only match'
(set vim.o.hidden true)
(set vim.o.encoding "utf-8")
(set vim.o.number false)
(set vim.o.relativenumber false)
(set vim.o.compatible false)
(set vim.o.cursorline true)
(set vim.o.incsearch true)
(set vim.o.hlsearch true)
(set vim.o.inccommand "nosplit")
(set vim.o.signcolumn "yes")
(set vim.o.shiftwidth 2)
(set vim.o.tabstop 2)
(set vim.o.backspace "indent,eol,start")
(set vim.o.autoindent true)
(set vim.o.smartindent true)
(set vim.o.expandtab true)
(set vim.o.wrap false)
(set vim.o.completeopt "longest,menuone,noselect")
(set vim.o.laststatus 2)
(set vim.o.showmode true)
(set vim.o.splitbelow true)
(set vim.o.splitright true)
(set vim.o.mouse "a")
(set vim.o.shell "bash")
(set vim.o.background "dark")
(se foldmethod "marker")
(se showmode false)
(se undodir (.. vim.env.HOME "/.vim/undo-dir"))
(se undofile true)
(se shortmess (.. vim.o.shortmess "c")) ; Don't give completion messages like 'match 1 of 2' or 'The only match'
(se hidden true)
(se encoding "utf-8")
(se number false)
(se relativenumber false)
(se compatible false)
(se cursorline true)
(se incsearch true)
(se hlsearch true)
(se inccommand "nosplit")
(se signcolumn "yes")
(se shiftwidth 2)
(se tabstop 2)
(se backspace "indent,eol,start")
(se autoindent true)
(se smartindent true)
(se expandtab true)
(se wrap false)
(se completeopt "longest,menuone,noselect")
(se laststatus 2)
(se showmode true)
(se splitbelow true)
(se splitright true)
(se mouse "a")
(se shell "bash")
(se background "dark")
(when (vim.fn.has "termguicolors")
(set vim.o.termguicolors true))
(when (not (vim.fn.has "gui_running"))
(set vim.o.t_Co 256))
(se termguicolors true))
(vim.cmd "colorscheme gruvbox")
(vim-let &t_ut "")
(vim.cmd "autocmd! BufReadPost *.hs :set shiftwidth=2)")
(vim.cmd "autocmd! BufReadPost *.hs :set shiftwidth=2")
(vim.cmd "autocmd! FileType vim setlocal foldmethod=marker")
;Disables automatic commenting on newline)

View file

@ -1,59 +1,87 @@
{:augroup
(fn [name ...]
`(do
(nvim.ex.augroup ,(tostring name))
(nvim.ex.autocmd_)
,...
(nvim.ex.augroup :END)))
:autocmd
(fn [...]
`(nvim.ex.autocmd ,...))
:_:
(fn [name ...]
`((. nvim.ex ,(tostring name)) ,...))
(fn [name ...]
`(do
(nvim.ex.augroup ,(tostring name))
(nvim.ex.autocmd_)
,...
(nvim.ex.augroup :END)))
:viml->fn
(fn [name]
`(.. "lua require('" *module-name* "')['" ,(tostring name) "']()"))
:dbg
(fn [x]
`(let [view# (. (require "aniseed.fennel") :view)]
(print (.. `,(tostring x) " => " (view# ,x)))
,x))
:dbg-call
(fn [x ...]
`(do
(a.println ,...)
(,x ,...)))
:pkg
(fn [name mappings ...]
`(if (~= nil (. packer_plugins `,(tostring name)))
(let ,mappings ,...)
(print (.. "plugin disabled " `,(tostring name)))))
:vim-let
(fn [field value]
(let [text (.. "let " `,(tostring field) "=\"" value "\"")]
`(vim.cmd ,text)))
:each-pair
(fn [args ...]
(let [[l# r# d#] args]
`(let [data# ,d#]
(for [i# 1 (a.count data#) 2]
(let [,l# (. data# i#)
,r# (. data# (+ i# 1))]
,...)))))}
:autocmd
(fn [...]
`(nvim.ex.autocmd ,...))
:_:
(fn [name ...]
`((. nvim.ex ,(tostring name)) ,...))
:viml->fn
(fn [name]
`(.. "lua require('" *module-name* "')['" ,(tostring name) "']()"))
:dbg
(fn [x]
`(let [view# (. (require "aniseed.fennel") :view)]
(print (.. `,(tostring x) " => " (view# ,x)))
,x))
:dbg-call
(fn [x ...]
`(do
(a.println ,...)
(,x ,...)))
:pkg
(fn [name mappings ...]
`(if (~= nil (. packer_plugins `,(tostring name)))
(let ,mappings ,...)
(print (.. "plugin disabled " `,(tostring name)))))
:vim-let
(fn [field value]
(let [text (.. "let " `,(tostring field) "=\"" value "\"")]
`(vim.cmd ,text)))
:each-pair
(fn [args ...]
(let [[l# r# d#] args]
`(let [data# ,d#]
(for [i# 1 (a.count data#) 2]
(let [,l# (. data# i#)
,r# (. data# (+ i# 1))]
,...)))))
:use-macro
(fn [...]
(let [a (require "aniseed.core")
fennel (require "aniseed.fennel")
args [...]
use-statements []]
(for [i 1 (a.count args) 2]
(let [name (. args i)
block (. args (+ i 1))]
(a.assoc block 1 name)
(when (. block :mod)
(a.assoc block :config `#(require ,(. block :mod))))
(a.assoc block :mod nil)
(table.insert use-statements block)))
(let [use-sym (gensym)]
`(let [packer# (require "packer")]
(packer#.startup
(fn [,use-sym]
,(unpack
(icollect [_# v# (ipairs use-statements)]
`(,use-sym ,v#)))))))))
:se
(fn [name value]
(let [str-name (tostring name)
(info-ok scope) (pcall #(. (vim.api.nvim_get_option_info str-name) :scope))]
(if info-ok
(match scope
:global `(tset vim.o ,str-name ,value)
:win `(tset vim.wo ,str-name ,value)
:buf `(tset vim.bo ,str-name ,value)
_ (print (.. "option " str-name " has unhandled scope " scope)))
(print (.. "Unknown vim-option: " str-name)))))}

View file

@ -1,8 +1,10 @@
(module plugins
{require {utils utils}})
{require {utils utils}
require-macros [macros]})
(utils.use
(use-macro
:nvim-telescope/telescope.nvim {:mod "plugins.telescope"
:cmd ["Telescope"]
:requires [:nvim-lua/popup.nvim :nvim-lua/plenary.nvim]}
:p00f/nvim-ts-rainbow {}

View file

@ -3,6 +3,8 @@
telescope telescope
actions telescope.actions}})
(print "initializing telescope")
(telescope.setup {})
(utils.keymap :n :<C-p> ":Telescope find_files<CR>")

View file

@ -3,7 +3,7 @@
fennel aniseed.fennel
nvim aniseed.nvim}
require-macros [macros]})
(defn plugin-installed? [name]
(~= nil (. packer_plugins name)))
@ -42,6 +42,12 @@
(nvim.buf_del_keymap 0 mode from)
(nvim.del_keymap mode from)))
(defn pairs->tuples [xs]
(let [result []]
(each-pair [l r xs]
(table.insert result (values l r)))
result))
(defn- safe-require-plugin-config [name]
(xpcall
#(require name)