From 6cb31718df762c6ebf764986074f08b19d6f82f8 Mon Sep 17 00:00:00 2001 From: Gustaf Rydholm Date: Sun, 16 Oct 2022 01:40:16 +0200 Subject: Refactor loading of plugins with packer --- fnl/config/alpha.fnl | 41 ------ fnl/config/auto-session.fnl | 6 +- fnl/config/autocmd.fnl | 10 +- fnl/config/autopairs.fnl | 4 +- fnl/config/better-escape.fnl | 4 +- fnl/config/bqf.fnl | 4 +- fnl/config/cmp.fnl | 8 +- fnl/config/colorizer.fnl | 4 +- fnl/config/colorscheme.fnl | 4 +- fnl/config/comment.fnl | 4 +- fnl/config/diffview.fnl | 4 +- fnl/config/fidget.fnl | 4 +- fnl/config/flit.fnl | 4 +- fnl/config/gitsigns.fnl | 4 +- fnl/config/harpoon.fnl | 4 +- fnl/config/init.fnl | 37 ----- fnl/config/leap.fnl | 17 +-- fnl/config/lir.fnl | 4 +- fnl/config/lsp/handlers.fnl | 6 +- fnl/config/lsp/init.fnl | 10 -- fnl/config/lsp/mason-lspconfig.fnl | 6 +- fnl/config/lsp/mason-null-ls.fnl | 4 +- fnl/config/lsp/mason.fnl | 4 +- fnl/config/lsp/null-ls.fnl | 4 +- fnl/config/lsp/settings/jsonls.fnl | 4 +- fnl/config/lualine.fnl | 5 +- fnl/config/minibar.fnl | 5 +- fnl/config/neogit.fnl | 4 +- fnl/config/orgmode.fnl | 4 +- fnl/config/packer.fnl | 4 +- fnl/config/project.fnl | 4 +- fnl/config/spectre.fnl | 4 +- fnl/config/stabilize.fnl | 4 +- fnl/config/stay-in-place.fnl | 4 +- fnl/config/surround.fnl | 4 +- fnl/config/telescope.fnl | 4 +- fnl/config/toggleterm.fnl | 4 +- fnl/config/treesitter.fnl | 4 +- fnl/config/trim.fnl | 4 +- fnl/config/trouble.fnl | 4 +- fnl/config/util.fnl | 13 ++ fnl/config/which-key.fnl | 9 +- fnl/config/window-picker.fnl | 4 +- fnl/config/zen.fnl | 4 +- fnl/init.fnl | 8 +- fnl/plugins.fnl | 269 ++++++++++++++++++++++++++++--------- fnl/util.fnl | 43 ------ init.lua | 6 + 48 files changed, 326 insertions(+), 297 deletions(-) delete mode 100644 fnl/config/alpha.fnl delete mode 100644 fnl/config/init.fnl delete mode 100644 fnl/config/lsp/init.fnl create mode 100644 fnl/config/util.fnl delete mode 100644 fnl/util.fnl diff --git a/fnl/config/alpha.fnl b/fnl/config/alpha.fnl deleted file mode 100644 index 0f0f680..0000000 --- a/fnl/config/alpha.fnl +++ /dev/null @@ -1,41 +0,0 @@ -;; A customizable greeter. -(module config.alpha {autoload {: util}}) - -(def- ascii-art [" ##############..... ############## " - " ##############......############## " - " ##########..........########## " - " ##########........########## " - " ##########.......########## " - " ##########.....##########.. " - " ##########....##########..... " - " ..##########..##########......... " - " ....##########.#########............. " - " ..################JJJ............ " - " ################............. " - " ##############.JJJ.JJJJJJJJJJ " - " ############...JJ...JJ..JJ JJ " - " ##########....JJ...JJ..JJ JJ " - " ########......JJJ..JJJ JJJ JJJ " - " ###### ......... " - " ..... " - " . "]) - -(let [alpha (util.load-plugin :alpha)] - (let [dashboard (require :alpha.themes.dashboard)] - (set dashboard.section.header.val ascii-art) - (set dashboard.section.buttons.val - [ - (dashboard.button :e " New file" ":ene startinsert ") - (dashboard.button :f " Find file" ":Telescope find_files ") - (dashboard.button :t " Find text" ":Telescope live_grep ") - (dashboard.button :s " Find Session" ":SearchSession") - (dashboard.button :p " Find project" ":Telescope projects ") - (dashboard.button :r " Recently used files" - ":Telescope oldfiles ") - (dashboard.button :c " Configuration" - ":e ~/.config/nvim/init.lua ") - (dashboard.button :q " Quit Neovim" ":qa")]) - (set dashboard.section.header.opts.hl :AlphaHeader) - (set dashboard.section.buttons.opts.hl :AlphaButtons) - (set dashboard.opts.opts.noautocmd true) - (alpha.setup dashboard.opts))) diff --git a/fnl/config/auto-session.fnl b/fnl/config/auto-session.fnl index 62e28b4..35a43a9 100644 --- a/fnl/config/auto-session.fnl +++ b/fnl/config/auto-session.fnl @@ -1,5 +1,5 @@ ;; Session manager. -(module config.auto-session {autoload {: util}}) +(module config.auto-session {autoload {:util :config.util}}) (def- auto-opts {:log_level :info :auto_session_enable_last_session false @@ -16,5 +16,5 @@ :prompt_title :Sessions}) (set vim.o.sessionoptions "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal") -(util.use-config :session-lens lens-opts) -(util.use-config :auto-session auto-opts) +(util.setup :session-lens lens-opts) +(util.setup :auto-session auto-opts) diff --git a/fnl/config/autocmd.fnl b/fnl/config/autocmd.fnl index 017792f..24adcad 100644 --- a/fnl/config/autocmd.fnl +++ b/fnl/config/autocmd.fnl @@ -1,5 +1,8 @@ ;; Autocommands for nvim. -(module config.autocmd {autoload {nvim aniseed.nvim a aniseed.core : util}}) +(module config.autocmd {autoload {nvim aniseed.nvim + env aniseed.env + a aniseed.core + :util :config.util}}) (defn create-autocmd [event opts] (nvim.create_autocmd event opts)) @@ -28,3 +31,8 @@ :command "setlocal spell"}) (create-autocmd :VimResized {:command "tabdo wincmd ="}) + +(create-autocmd :BufWritePost + {:pattern :*.fnl + :callback (lambda [] + (env.init nvim.g.aniseed#env))}) diff --git a/fnl/config/autopairs.fnl b/fnl/config/autopairs.fnl index f0aa2b6..6918c40 100644 --- a/fnl/config/autopairs.fnl +++ b/fnl/config/autopairs.fnl @@ -1,5 +1,5 @@ ;; Autopairs for brackets and quote symbols. -(module config.autopairs {autoload {: util}}) +(module config.autopairs {autoload {:util :config.util}}) (def- opts {:check_ts true :ts_config {:lua [:string :source] @@ -18,4 +18,4 @@ :highlight :PmenuSel :highlight_grey :LineNr}}) -(util.use-config :nvim-autopairs opts) +(util.setup :nvim-autopairs opts) diff --git a/fnl/config/better-escape.fnl b/fnl/config/better-escape.fnl index 769fb32..3e68ddd 100644 --- a/fnl/config/better-escape.fnl +++ b/fnl/config/better-escape.fnl @@ -1,9 +1,9 @@ ;; Better escape without nasty delay. -(module config.better-escape {autoload {: util}}) +(module config.better-escape {autoload {:util :config.util}}) (def- opts {:mapping [:kk :jj] :timeout vim.o.timeoutlen :clear_empty_lines false :keys :}) -(util.use-config :better_escape opts) +(util.setup :better_escape opts) diff --git a/fnl/config/bqf.fnl b/fnl/config/bqf.fnl index e5d7ab2..4c877a1 100644 --- a/fnl/config/bqf.fnl +++ b/fnl/config/bqf.fnl @@ -1,4 +1,4 @@ ;; Make Neovim's quickfix window better. -(module config.bqf {autoload {: util}}) +(module config.bqf {autoload {:util :config.util}}) -(util.use-config :bqf {}) +(util.setup :bqf {}) diff --git a/fnl/config/cmp.fnl b/fnl/config/cmp.fnl index bf4a331..73ebba4 100644 --- a/fnl/config/cmp.fnl +++ b/fnl/config/cmp.fnl @@ -1,9 +1,9 @@ ;; Configuration for completion plugin. -(module config.cmp {autoload {nvim aniseed.nvim : util}}) +(module config.cmp {autoload {nvim aniseed.nvim :util :config.util}}) -(let [cmp (util.load-plugin :cmp) - lspkind (util.load-plugin :lspkind) - luasnip (util.load-plugin :luasnip) +(let [cmp (util.prequire :cmp) + lspkind (util.prequire :lspkind) + luasnip (util.prequire :luasnip) luasnip-vscode (require :luasnip/loaders/from_vscode)] (luasnip-vscode.lazy_load) (lspkind.init) diff --git a/fnl/config/colorizer.fnl b/fnl/config/colorizer.fnl index 0757500..8358f0b 100644 --- a/fnl/config/colorizer.fnl +++ b/fnl/config/colorizer.fnl @@ -1,4 +1,4 @@ ;; Enables colorization of color codes in source files. -(module config.colorizer {autoload {: util}}) +(module config.colorizer {autoload {:util :config.util}}) -(util.use-config :colorizer {}) +(util.setup :colorizer {}) diff --git a/fnl/config/colorscheme.fnl b/fnl/config/colorscheme.fnl index b2e0279..50317c7 100644 --- a/fnl/config/colorscheme.fnl +++ b/fnl/config/colorscheme.fnl @@ -1,8 +1,8 @@ ;; Load neovim colorscheme. -(module config.colorscheme {autoload {: util}}) +(module config.colorscheme {autoload {:util :config.util}}) (local colorscheme :no-clown-fiesta) (def- opts {:type :bold}) -(util.use-config :no-clown-fiesta opts) +(util.setup :no-clown-fiesta opts) diff --git a/fnl/config/comment.fnl b/fnl/config/comment.fnl index a6e9c5f..1b896f4 100644 --- a/fnl/config/comment.fnl +++ b/fnl/config/comment.fnl @@ -1,6 +1,6 @@ ;; Language aware commenting. -(module config.comment {autoload {: util}}) +(module config.comment {autoload {:util :config.util}}) (def- opts {}) -(util.use-config :Comment opts) +(util.setup :Comment opts) diff --git a/fnl/config/diffview.fnl b/fnl/config/diffview.fnl index eea5ed3..a4fed9d 100644 --- a/fnl/config/diffview.fnl +++ b/fnl/config/diffview.fnl @@ -1,6 +1,6 @@ ;; Trim whitespaces on save. -(module config.diffview {autoload {: util}}) +(module config.diffview {autoload {:util :config.util}}) (def- opts {}) -(util.use-config :diffview opts) +(util.setup :diffview opts) diff --git a/fnl/config/fidget.fnl b/fnl/config/fidget.fnl index fa87fd1..3c66990 100644 --- a/fnl/config/fidget.fnl +++ b/fnl/config/fidget.fnl @@ -1,6 +1,6 @@ ;; Show lsp progress. -(module config.fidget {autoload {: util}}) +(module config.fidget {autoload {:util :config.util}}) (def- opts {:text {:spinner :dots_snake}}) -(util.use-config :fidget opts) +(util.setup :fidget opts) diff --git a/fnl/config/flit.fnl b/fnl/config/flit.fnl index 10e103d..6a769f0 100644 --- a/fnl/config/flit.fnl +++ b/fnl/config/flit.fnl @@ -1,9 +1,9 @@ ;; fFtT motions on roids. -(module config.flit {autoload {: util nvim aniseed.nvim}}) +(module config.flit {autoload {:util :config.util nvim aniseed.nvim}}) (def- opts {:keys {:f :f :F :F :t :t :T :T} :labeled_modes :v :multiline true :opts {}}) -(util.use-config :flit opts) +(util.setup :flit opts) diff --git a/fnl/config/gitsigns.fnl b/fnl/config/gitsigns.fnl index a693f7d..43f831e 100644 --- a/fnl/config/gitsigns.fnl +++ b/fnl/config/gitsigns.fnl @@ -1,5 +1,5 @@ ;; Add git signs to source files. -(module config.gitsigns {autoload {: util}}) +(module config.gitsigns {autoload {:util :config.util}}) (def- signs {:add {:hl :GitSignsAdd :text "|" @@ -46,4 +46,4 @@ :col 1} :yadm {:enable false}}) -(util.use-config :gitsigns opts) +(util.setup :gitsigns opts) diff --git a/fnl/config/harpoon.fnl b/fnl/config/harpoon.fnl index 0c3ca5e..71c3798 100644 --- a/fnl/config/harpoon.fnl +++ b/fnl/config/harpoon.fnl @@ -1,9 +1,9 @@ ;; Harpoon files for navigation. -(module config.harpoon {autoload {: util nvim aniseed.nvim}}) +(module config.harpoon {autoload {:util :config.util nvim aniseed.nvim}}) (def- opts {}) -(util.use-config :harpoon opts) +(util.setup :harpoon opts) (nvim.set_keymap "n" "" diff --git a/fnl/config/init.fnl b/fnl/config/init.fnl deleted file mode 100644 index 860cdc4..0000000 --- a/fnl/config/init.fnl +++ /dev/null @@ -1,37 +0,0 @@ -;; Load all plugin configs. -(module config.init {require [config.alpha - config.auto-session - config.autocmd - config.autopairs - config.better-escape - config.bqf - config.cmp - config.colorizer - config.colorscheme - config.comment - config.diffview - config.fidget - config.flit - config.gitsigns - config.harpoon - config.leap - config.lir - config.lsp - config.lualine - config.minibar - config.neogit - config.orgmode - config.project - config.spectre - config.stay-in-place - config.stabilize - config.surround - config.telescope - config.toggleterm - config.treesitter - config.trim - config.trouble - config.vim-slash - config.which-key - config.window-picker - config.zen]}) diff --git a/fnl/config/leap.fnl b/fnl/config/leap.fnl index cb6a267..541b0e0 100644 --- a/fnl/config/leap.fnl +++ b/fnl/config/leap.fnl @@ -1,19 +1,8 @@ ;; Leap through text. -(module config.leap {autoload {: util nvim aniseed.nvim}}) +(module config.leap {autoload {:util :config.util nvim aniseed.nvim}}) -(def- opts {:max_aot_targets nil - :highlight_unlabeled false - :max_highlighted_traversal_targets 10 - :case_sensitive false - :equivalence_classes [" \t\r\n"] - :substitute_chars [] - :special_keys {:repeat_search : - :next_aot_match : - :next_match [";" :] - :prev_match ["," :] - :next_group : - :prev_group :}}) +(def- opts {}) -(let [leap (util.load-plugin :leap)] +(let [leap (util.prequire :leap)] (leap.setup opts) (leap.set_default_keymaps)) diff --git a/fnl/config/lir.fnl b/fnl/config/lir.fnl index c775c4b..8f9058c 100644 --- a/fnl/config/lir.fnl +++ b/fnl/config/lir.fnl @@ -1,5 +1,5 @@ ;; Simple file manager. -(module config.lir {autoload {: util nvim aniseed.nvim}}) +(module config.lir {autoload {:util :config.util nvim aniseed.nvim}}) (defn- opts [actions mark-actions clipboard-actions] {:show_hidden_files false @@ -35,7 +35,7 @@ ":lua require(\"lir.mark.actions\").toggle_mark(\"v\")" {:noremap true :silent true}))}) -(let [lir (util.load-plugin :lir)] +(let [lir (util.prequire :lir)] (let [actions (require :lir.actions) mark-actions (require :lir.mark.actions) clipboard-actions (require :lir.clipboard.actions)] diff --git a/fnl/config/lsp/handlers.fnl b/fnl/config/lsp/handlers.fnl index c892a22..913a5a2 100644 --- a/fnl/config/lsp/handlers.fnl +++ b/fnl/config/lsp/handlers.fnl @@ -1,5 +1,5 @@ ;; Handlers for the requests and responses from and to the lsp server. -(module config.lsp.handlers {autoload {: util nvim aniseed.nvim}}) +(module config.lsp.handlers {autoload {:util :config.util nvim aniseed.nvim}}) (def- signs [{:name :DiagnosticSignError :text ""} {:name :DiagnosticSignWarn :text ""} @@ -55,5 +55,5 @@ (let [capabilities (vim.lsp.protocol.make_client_capabilities)] (set capabilities.textDocument.completion.completionItem.snippetSupport true) - (let [cmp-nvim-lsp (util.load-plugin :cmp_nvim_lsp)] - (cmp-nvim-lsp.update_capabilities capabilities)))) + (let [cmp-nvim-lsp (util.prequire :cmp_nvim_lsp)] + (cmp-nvim-lsp.default_capabilities capabilities)))) diff --git a/fnl/config/lsp/init.fnl b/fnl/config/lsp/init.fnl deleted file mode 100644 index 378473e..0000000 --- a/fnl/config/lsp/init.fnl +++ /dev/null @@ -1,10 +0,0 @@ -;; Loads the LSP functionality. -(module config.lsp.init {autoload {: util}}) - -(require :config.lsp.mason) -(require :config.lsp.mason-lspconfig) -(let [handlers (require :config.lsp.handlers)] - (handlers.setup)) - -(require :config.lsp.null-ls) -(require :config.lsp.mason-null-ls) diff --git a/fnl/config/lsp/mason-lspconfig.fnl b/fnl/config/lsp/mason-lspconfig.fnl index a2bd714..7a03ced 100644 --- a/fnl/config/lsp/mason-lspconfig.fnl +++ b/fnl/config/lsp/mason-lspconfig.fnl @@ -1,5 +1,5 @@ ;; TBD -(module config.lsp.mason-lspconfig {autoload {: util}}) +(module config.lsp.mason-lspconfig {autoload {:util :config.util}}) (def- servers [:bashls :clangd @@ -49,9 +49,9 @@ (def- opts {:ensure_installed servers :automatic_installation true}) -(util.use-config :mason-lspconfig opts) +(util.setup :mason-lspconfig opts) -(let [lspconfig (util.load-plugin :lspconfig)] +(let [lspconfig (util.prequire :lspconfig)] (each [_ server (ipairs servers)] (let [server-config (. lspconfig server)] (server-config.setup (get-server-opts server))))) diff --git a/fnl/config/lsp/mason-null-ls.fnl b/fnl/config/lsp/mason-null-ls.fnl index 42b3715..e739b9b 100644 --- a/fnl/config/lsp/mason-null-ls.fnl +++ b/fnl/config/lsp/mason-null-ls.fnl @@ -1,5 +1,5 @@ ;; Ensure that tools needed for null-ls are installed. -(module config.mason-null-ls {autoload {: util}}) +(module config.mason-null-ls {autoload {:util :config.util}}) (def- opts {:ensure_installed [:flake8 :golangci-lint @@ -23,4 +23,4 @@ :auto_update true :automatic_installation true}) -(util.use-config :mason-null-ls opts) +(util.setup :mason-null-ls opts) diff --git a/fnl/config/lsp/mason.fnl b/fnl/config/lsp/mason.fnl index 66963cb..7c58d94 100644 --- a/fnl/config/lsp/mason.fnl +++ b/fnl/config/lsp/mason.fnl @@ -1,9 +1,9 @@ ;; Mason manages external tooling, e.g. lsp, formatters, and linters. -(module config.lsp.mason {autoload {: util}}) +(module config.lsp.mason {autoload {:util :config.util}}) (def- opts {:ui {:icons {:package_installed "✓" :package_pending "➜" :package_uninstalled "✗"}} :max_concurrent_installers 10}) -(util.use-config :mason opts) +(util.setup :mason opts) diff --git a/fnl/config/lsp/null-ls.fnl b/fnl/config/lsp/null-ls.fnl index 9ad1fed..7efb079 100644 --- a/fnl/config/lsp/null-ls.fnl +++ b/fnl/config/lsp/null-ls.fnl @@ -1,7 +1,7 @@ ;; Adds LSP diagnostics and formatting. -(module config.lsp.null-ls {autoload {: util}}) +(module config.lsp.null-ls {autoload {:util :config.util}}) -(let [null-ls (util.load-plugin :null-ls)] +(let [null-ls (util.prequire :null-ls)] (let [formatting null-ls.builtins.formatting diagnostics null-ls.builtins.diagnostics] (null-ls.setup {:debug false diff --git a/fnl/config/lsp/settings/jsonls.fnl b/fnl/config/lsp/settings/jsonls.fnl index a2cb78c..3fe9299 100644 --- a/fnl/config/lsp/settings/jsonls.fnl +++ b/fnl/config/lsp/settings/jsonls.fnl @@ -1,7 +1,7 @@ ;; Json schema store catalog language server. -(module config.lsp.settings.jsonls {autoload {: util}}) +(module config.lsp.settings.jsonls {autoload {:util :config.util}}) -(let [schemastore (util.load-plugin :schemastore)] +(let [schemastore (util.prequire :schemastore)] {:init_options {:providerFormatter false} :settings {:json {:schemas (schemastore.json.schemas)}} :setup {:commands {:Format [(fn [] diff --git a/fnl/config/lualine.fnl b/fnl/config/lualine.fnl index d098966..ee68523 100644 --- a/fnl/config/lualine.fnl +++ b/fnl/config/lualine.fnl @@ -1,8 +1,9 @@ ;; Statusbar. -(module config.lualine {autoload {: util}}) +(module config.lualine {autoload {:util :config.util}}) (def- disable [:neogitstatus :lir + :netrw :alpha :Outline :NeogitStatus @@ -73,4 +74,4 @@ :lualine_z [:location :progress]} :extensions []}) -(util.use-config :lualine opts) +(util.setup :lualine opts) diff --git a/fnl/config/minibar.fnl b/fnl/config/minibar.fnl index fddb71c..21d687a 100644 --- a/fnl/config/minibar.fnl +++ b/fnl/config/minibar.fnl @@ -1,4 +1,4 @@ -(module config.minibar {autoload {: util}}) +(module config.minibar {autoload {:util :config.util}}) (def- opts {:ignore-filetypes [:help :startify @@ -10,6 +10,7 @@ :alpha :lir :org + :netrw :Outline :NeogitStatus :NeogitCommitMessage @@ -25,4 +26,4 @@ :InsertEnter :BufWritePost]}) -(util.use-config :minibar opts) +(util.setup :minibar opts) diff --git a/fnl/config/neogit.fnl b/fnl/config/neogit.fnl index da723c7..aab1291 100644 --- a/fnl/config/neogit.fnl +++ b/fnl/config/neogit.fnl @@ -1,4 +1,4 @@ ;; UI for git. -(module config.neogit {autoload {: util}}) +(module config.neogit {autoload {:util :config.util}}) -(util.use-config :neogit {}) +(util.setup :neogit {}) diff --git a/fnl/config/orgmode.fnl b/fnl/config/orgmode.fnl index 25501af..af3d705 100644 --- a/fnl/config/orgmode.fnl +++ b/fnl/config/orgmode.fnl @@ -1,5 +1,5 @@ ;; Orgmode for nvim. -(module config.orgmode {autoload {nvim aniseed.nvim : util}}) +(module config.orgmode {autoload {nvim aniseed.nvim :util :config.util}}) (nvim.ex.set :conceallevel=2) (nvim.ex.set :concealcursor=nc) @@ -44,6 +44,6 @@ :org_agenda_templates templates : notifications}) -(let [orgmode (util.load-plugin :orgmode)] +(let [orgmode (util.prequire :orgmode)] (orgmode.setup_ts_grammar) (orgmode.setup opts)) diff --git a/fnl/config/packer.fnl b/fnl/config/packer.fnl index 36691b9..b8ab91a 100644 --- a/fnl/config/packer.fnl +++ b/fnl/config/packer.fnl @@ -1,7 +1,7 @@ ;; Load packer config -(module config.packer {autoload {: util}}) +(module config.packer {autoload {:util :config.util}}) -(let [packer (util.load-plugin :packer) +(let [packer (util.prequire :packer) packer-util (require :packer.util)] (packer.init {:display {:open_fn (fn [] (packer-util.float {:border :rounded}))}})) diff --git a/fnl/config/project.fnl b/fnl/config/project.fnl index 6ef7942..1c97527 100644 --- a/fnl/config/project.fnl +++ b/fnl/config/project.fnl @@ -1,5 +1,5 @@ ;; Provides project management. -(module config.project {autoload {: util}}) +(module config.project {autoload {:util :config.util}}) (def- opts {:active true :on_config_done nil @@ -11,4 +11,4 @@ :ignore_lsp {} :datapath (vim.fn.stdpath :data)}) -(util.use-config :project_nvim opts) +(util.setup :project_nvim opts) diff --git a/fnl/config/spectre.fnl b/fnl/config/spectre.fnl index 13bbcc5..337beb1 100644 --- a/fnl/config/spectre.fnl +++ b/fnl/config/spectre.fnl @@ -1,5 +1,5 @@ ;; Find and replace. -(module config.spectre {autoload {: util}}) +(module config.spectre {autoload {:util :config.util}}) (def- opts {:color_devicons true :highlight {:ui :String :search :DiffChange :replace :DiffDelete} @@ -60,4 +60,4 @@ :is_open_target_win true :is_insert_mode false}) -(util.use-config :spectre opts) +(util.setup :spectre opts) diff --git a/fnl/config/stabilize.fnl b/fnl/config/stabilize.fnl index ff2ac19..59b7c5d 100644 --- a/fnl/config/stabilize.fnl +++ b/fnl/config/stabilize.fnl @@ -1,5 +1,5 @@ ;; Stabilize window open/close events. -(module config.stabilize {autoload {: util}}) +(module config.stabilize {autoload {:util :config.util}}) (def- opts {:force true ;; stabilize window even when current cursor position will be hidden behind new window @@ -12,4 +12,4 @@ ;; comma-separated list of autocmds that wil trigger the plugins window restore function }) -(util.use-config :stabilize opts) +(util.setup :stabilize opts) diff --git a/fnl/config/stay-in-place.fnl b/fnl/config/stay-in-place.fnl index 9136fdf..1c19399 100644 --- a/fnl/config/stay-in-place.fnl +++ b/fnl/config/stay-in-place.fnl @@ -1,4 +1,4 @@ ;; Prevent the cursor from moving when using shift and filter actions. -(module config.stay-in-place {autoload {: util}}) +(module config.stay-in-place {autoload {:util :config.util}}) -(util.use-config :stay-in-place {}) +(util.setup :stay-in-place {}) diff --git a/fnl/config/surround.fnl b/fnl/config/surround.fnl index 04a516f..8a3aad9 100644 --- a/fnl/config/surround.fnl +++ b/fnl/config/surround.fnl @@ -1,6 +1,6 @@ ;; Surround selections. -(module config.surround {autoload {: util}}) +(module config.surround {autoload {:util :config.util}}) (def- opts {}) -(util.use-config :nvim-surround opts) +(util.setup :nvim-surround opts) diff --git a/fnl/config/telescope.fnl b/fnl/config/telescope.fnl index 7989c54..8f0459f 100644 --- a/fnl/config/telescope.fnl +++ b/fnl/config/telescope.fnl @@ -1,9 +1,9 @@ ;; Telescope a highly extendable fuzzy finder over lists. -(module config.telescope {autoload {: util nvim aniseed.nvim}}) +(module config.telescope {autoload {:util :config.util nvim aniseed.nvim}}) (def- opts {:noremap true :silent true}) -(let [telescope (util.load-plugin :telescope)] +(let [telescope (util.prequire :telescope)] (let [actions (require :telescope.actions)] (telescope.setup {:defaults {:prompt_prefix "  " :selection_caret "> " diff --git a/fnl/config/toggleterm.fnl b/fnl/config/toggleterm.fnl index 329964c..2a1a462 100644 --- a/fnl/config/toggleterm.fnl +++ b/fnl/config/toggleterm.fnl @@ -1,6 +1,6 @@ ;; Terminal inside nvim. (module config.toggleterm - {autoload {: util nvim aniseed.nvim autocmd config.autocmd}}) + {autoload {:util :config.util nvim aniseed.nvim autocmd config.autocmd}}) (def- opts {:size 16 :shade_terminals false}) @@ -10,7 +10,7 @@ (nvim.set_keymap :t : "wincmd k" {}) (nvim.set_keymap :t : "wincmd l" {})) -(util.use-config :toggleterm opts) +(util.setup :toggleterm opts) (autocmd.create-autocmd :TermOpen {:pattern "term://*toggleterm#*" :callback set-terminal-keymaps}) diff --git a/fnl/config/treesitter.fnl b/fnl/config/treesitter.fnl index a2ba356..058182d 100644 --- a/fnl/config/treesitter.fnl +++ b/fnl/config/treesitter.fnl @@ -1,6 +1,6 @@ ;; Treesitter is a tool for building syntax trees for source files. ;; In the neovim context it helps with better coloring. -(module config.treesitter {autoload {: util}}) +(module config.treesitter {autoload {:util :config.util}}) (def- opts {:ensure_installed [:c :rust @@ -29,4 +29,4 @@ :indent {:enable true :disable [:yaml :python :css]} :playground {:enable true}}) -(util.use-config :nvim-treesitter.configs opts) +(util.setup :nvim-treesitter.configs opts) diff --git a/fnl/config/trim.fnl b/fnl/config/trim.fnl index a2faf48..ee699fb 100644 --- a/fnl/config/trim.fnl +++ b/fnl/config/trim.fnl @@ -1,6 +1,6 @@ ;; Trim whitespaces on save. -(module config.trim {autoload {: util}}) +(module config.trim {autoload {:util :config.util}}) (def- opts {:disable [:python]}) -(util.use-config :trim opts) +(util.setup :trim opts) diff --git a/fnl/config/trouble.fnl b/fnl/config/trouble.fnl index 03942af..0266ec0 100644 --- a/fnl/config/trouble.fnl +++ b/fnl/config/trouble.fnl @@ -1,5 +1,5 @@ ;; Pretty diagnostics. -(module config.trouble {autoload {: util}}) +(module config.trouble {autoload {:util :config.util}}) (def- opts {:position :bottom ;; position of the list can be: bottom, top, left, right @@ -79,4 +79,4 @@ ;; enabling this will use the signs defined in your lsp client }) -(util.use-config :trouble opts) +(util.setup :trouble opts) diff --git a/fnl/config/util.fnl b/fnl/config/util.fnl new file mode 100644 index 0000000..a4dcf5b --- /dev/null +++ b/fnl/config/util.fnl @@ -0,0 +1,13 @@ +;; Utility functions. +(module util {autoload {a aniseed.core nvim aniseed.nvim}}) + +(defn prequire [name] + (let [(ok? plugin) (pcall require name)] + (if ok? + plugin + (vim.notify (.. "Could not load config: " plugin) + vim.log.levels.WARN)))) + +(defn setup [plugin config] + (let [plugin (prequire plugin)] + (plugin.setup config))) diff --git a/fnl/config/which-key.fnl b/fnl/config/which-key.fnl index 68a8e97..759166c 100644 --- a/fnl/config/which-key.fnl +++ b/fnl/config/which-key.fnl @@ -1,5 +1,5 @@ ;; Which-key provides a pop-up meny for some key mappings. -(module config.which-key {autoload {: util nvim aniseed.nvim}}) +(module config.which-key {autoload {:util :config.util nvim aniseed.nvim}}) (def- setup {:plugins {:marks true :registers true @@ -75,11 +75,12 @@ :f ["lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer = false})" "Find files"] :t ["Telescope live_grep theme=ivy" "Find text"] - :s ["Telescope grep_string theme=dropdown" "Find String"] + :s ["SearchSession" "Find Session"] + :S ["Telescope grep_string theme=dropdown" "Find String"] :h ["Telescope help_tags" :Help] :H ["Telescope highlights" :Highlights] :l ["Telescope resume" "Last Search"] - :M ["Telescope man_pages" "Man Pages"] + :p ["Telescope projects" "Find project"] :r ["Telescope oldfiles theme=dropdown" "Recent File"] :R ["Telescope registers" :Registers] :k ["Telescope keymaps" :Keymaps] @@ -175,7 +176,7 @@ (def- vmappings {:n ["lua require('Comment.api').toggle.linewise(vim.fn.visualmode())" :Comment]}) -(let [which-key (util.load-plugin :which-key)] +(let [which-key (util.prequire :which-key)] (which-key.setup setup) (which-key.register mmappings mopts) (which-key.register nmappings nopts) diff --git a/fnl/config/window-picker.fnl b/fnl/config/window-picker.fnl index 3775ffe..268e952 100644 --- a/fnl/config/window-picker.fnl +++ b/fnl/config/window-picker.fnl @@ -1,8 +1,8 @@ ;; Trim whitespaces on save. -(module config.window-picker {autoload {: util}}) +(module config.window-picker {autoload {:util :config.util}}) (def- opts {:other_win_hl_color "#171717" :fg_color "#E1E1E1" :selection_chars :MNEIOARSTG}) -(util.use-config :window-picker opts) +(util.setup :window-picker opts) diff --git a/fnl/config/zen.fnl b/fnl/config/zen.fnl index 543afe7..df90661 100644 --- a/fnl/config/zen.fnl +++ b/fnl/config/zen.fnl @@ -1,5 +1,5 @@ ;; Zen mode. -(module config.zen {autoload {: util}}) +(module config.zen {autoload {:util :config.util}}) (def- opts {:window {:backdrop 1 :height 0.8 @@ -11,4 +11,4 @@ :tmux {:enabled true} :twilight {:enabled true}}}) -(util.use-config :zen-mode opts) +(util.setup :zen-mode opts) diff --git a/fnl/init.fnl b/fnl/init.fnl index 362dc78..542dead 100644 --- a/fnl/init.fnl +++ b/fnl/init.fnl @@ -1,4 +1,6 @@ -;; Install, load settings, and load plugin configs. -(module init {autoload {: util} require [settings config.packer]}) +;; Load plugins with packer. +(module init {autoload {: plugins : packer} require [settings config.packer]}) -(util.load-plugins) +(packer.startup (fn [use] + (each [_ plugin (pairs plugins.all)] + (use plugin)))) diff --git a/fnl/plugins.fnl b/fnl/plugins.fnl index 09fc301..897d24e 100644 --- a/fnl/plugins.fnl +++ b/fnl/plugins.fnl @@ -1,67 +1,206 @@ ;; List of plugins. +(module plugins) -{ - :goolord/alpha-nvim {} - :Olical/aniseed {} - :rmagatti/auto-session {} - :max397574/better-escape.nvim {} - :hrsh7th/cmp-buffer {} - :hrsh7th/cmp-cmdline {} - :hrsh7th/cmp-nvim-lsp {} - :hrsh7th/cmp-path {} - :saadparwaiz1/cmp_luasnip {} - :f3fora/cmp-spell {} - :numToStr/Comment.nvim {} - :sindrets/diffview.nvim {} - :j-hui/fidget.nvim {} - :ggandor/flit.nvim {} - :rafamadriz/friendly-snippets {} - :lewis6991/gitsigns.nvim {} - :ThePrimeagen/harpoon {} - :lewis6991/impatient.nvim {} - :ggandor/leap.nvim {} - :tamago324/lir.nvim {} - :onsails/lspkind-nvim {} - :nvim-lualine/lualine.nvim {:requires {1 :kyazdani42/nvim-web-devicons :opt true}} - :L3MON4D3/LuaSnip {} - :williamboman/mason-lspconfig.nvim {} - :jayp0521/mason-null-ls.nvim {} - :williamboman/mason.nvim {} - :aktersnurra/minibar.nvim {} - :TimUntersberger/neogit {:requires :nvim-lua/plenary.nvim} - :tamago324/nlsp-settings.nvim {} - :aktersnurra/no-clown-fiesta.nvim {} - :jose-elias-alvarez/null-ls.nvim {} - :windwp/nvim-autopairs {} - :kevinhwang91/nvim-bqf {} - :hrsh7th/nvim-cmp {} - :norcalli/nvim-colorizer.lua {} - :neovim/nvim-lspconfig {} - :windwp/nvim-spectre {} - :kylechui/nvim-surround {} - :nvim-treesitter/nvim-treesitter {:run ":TSUpdate"} - :JoosepAlviste/nvim-ts-context-commentstring {} - :kyazdani42/nvim-web-devicons {} - :s1n7ax/nvim-window-picker {} - :nvim-orgmode/orgmode {} - :wbthomason/packer.nvim {} - :nvim-treesitter/playground {} - :nvim-lua/plenary.nvim {} - :nvim-lua/popup.nvim {} - :ahmedkhalf/project.nvim {} - :b0o/SchemaStore.nvim {} - :rmagatti/session-lens {} - :luukvbaal/stabilize.nvim {} - :gbprod/stay-in-place.nvim {} - :nvim-telescope/telescope-file-browser.nvim {} - :nvim-telescope/telescope-fzf-native.nvim {:run :make} - :nvim-telescope/telescope.nvim {:requires :nvim-lua/plenary.nvim} - :akinsho/toggleterm.nvim {} - :cappyzawa/trim.nvim {} - :folke/trouble.nvim {} - :moll/vim-bbye {} - :junegunn/vim-slash {} - :dstein64/vim-startuptime {} - :folke/which-key.nvim {} - :folke/zen-mode.nvim {} -} +(def core [{1 :Olical/aniseed} + {1 :lewis6991/impatient.nvim} + {1 :wbthomason/packer.nvim}]) + +(def completions {1 :hrsh7th/nvim-cmp + :requires [{1 :hrsh7th/cmp-buffer} + {1 :onsails/lspkind-nvim} + {1 :hrsh7th/cmp-nvim-lsp} + {1 :hrsh7th/cmp-cmdline} + {1 :L3MON4D3/LuaSnip} + {1 :hrsh7th/cmp-path} + {1 :saadparwaiz1/cmp_luasnip} + {1 :f3fora/cmp-spell}] + :event :InsertEnter + :want :Luasnip + :config (fn [] + (require :config.cmp))}) + +(def git [{1 :sindrets/diffview.nvim + :config (fn [] + (require :config.diffview)) + :event :BufRead} + {1 :TimUntersberger/neogit + :config (fn [] + (require :config.neogit)) + :event :BufRead + :requires [:nvim-lua/plenary.nvim]} + {1 :lewis6991/gitsigns.nvim + :config (fn [] + (require :config.gitsigns)) + :event :BufRead}]) + +(def search [{1 :nvim-telescope/telescope-file-browser.nvim} + {1 :nvim-telescope/telescope-fzf-native.nvim :run :make} + {1 :nvim-telescope/telescope.nvim + :config (fn [] + (require :config.telescope)) + :requires [:nvim-lua/popup.nvim + :nvim-lua/plenary + :telescope-fzf-native.nvim + :telescope-file-browser.nvim] + :wants [:popup.nvim + :plenary.nvim + :telescope-fzf-native.nvim + :telescope-file-browser.nvim]} + {1 :ggandor/leap.nvim + :config (fn [] + (require :config.leap)) + :event :BufRead} + {1 :ggandor/flit.nvim + :config (fn [] + (require :config.flit)) + :after :leap.nvim + :event :BufRead} + {1 :ahmedkhalf/project.nvim + :config (fn [] + (require :config.project))} + {1 :tamago324/lir.nvim + :config (fn [] + (require :config.lir)) + :requires [:kyazdani42/nvim-web-devicons]} + {1 :ThePrimeagen/harpoon + :config (fn [] + (require :config.harpoon))}]) + +(def snippets [:rafamadriz/friendly-snippets]) + +(def lsp [{1 :j-hui/fidget.nvim + :event :BufWinEnter + :config (fn [] + (require :config.fidget))} + {1 :jose-elias-alvarez/null-ls.nvim} + {1 :neovim/nvim-lspconfig} + {1 :williamboman/mason.nvim + :event :BufWinEnter + :config (fn [] + (require :config.lsp.mason))} + {1 :tamago324/nlsp-settings.nvim} + {1 :jayp0521/mason-null-ls.nvim + :event :BufWinEnter + :config (fn [] + (require :config.lsp.null-ls) + (require :config.lsp.mason-null-ls)) + :requires [:jose-elias-alvarez/null-ls.nvim + :williamboman/mason.nvim] + :after :mason.nvim} + {1 :b0o/SchemaStore.nvim} + {1 :williamboman/mason-lspconfig.nvim + :event :BufWinEnter + :config (fn [] + (require :config.lsp.mason-lspconfig) + (let [handlers (require :config.lsp.handlers)] + (handlers.setup))) + :requires [:neovim/nvim-lspconfig :williamboman/mason.nvim] + :after :mason.nvim} + {1 :folke/trouble.nvim + :config (fn [] + (require :config.trouble)) + :event :BufWinEnter}]) + +(def color [{1 :aktersnurra/no-clown-fiesta.nvim + :config (fn [] + (require :config.colorscheme))} + {1 :norcalli/nvim-colorizer.lua + :config (fn [] + (require :config.colorizer)) + :event :BufRead} + {1 :nvim-treesitter/nvim-treesitter + :config (fn [] + (require :config.treesitter)) + :run ":TSUpdate"}]) + +(def ui [{1 :nvim-lualine/lualine.nvim + :event :BufWinEnter + :config (fn [] + (require :config.lualine)) + :requires [:kyazdani42/nvim-web-devicons]} + {1 :aktersnurra/minibar.nvim + :config (fn [] + (require :config.minibar)) + :event :BufRead} + {1 :folke/zen-mode.nvim + :config (fn [] + (require :config.zen)) + :event :BufWinEnter} + {1 :kevinhwang91/nvim-bqf + :config (fn [] + (require :config.bqf)) + :event :BufRead} + {1 :s1n7ax/nvim-window-picker + :config (fn [] + (require :config.window-picker)) + :event :BufWinEnter} + {1 :luukvbaal/stabilize.nvim + :config (fn [] + (require :config.stabilize)) + :event :BufWinEnter} + {1 :moll/vim-bbye :event :BufWinEnter} + {1 :folke/which-key.nvim + :config (fn [] + (require :config.which-key)) + :event :BufWinEnter}]) + +(def session {1 :rmagatti/auto-session + :config (fn [] + (require :config.auto-session)) + :requires [:rmagatti/session-lens]}) + +(def text [{1 :numToStr/Comment.nvim + :config (fn [] + (require :config.comment)) + :event :BufWinEnter} + {1 :JoosepAlviste/nvim-ts-context-commentstring :event :BufReadPost} + {1 :kylechui/nvim-surround + :config (fn [] + (require :config.surround)) + :event :BufRead} + {1 :gbprod/stay-in-place.nvim + :event :BufWinEnter + :config (fn [] + (require :config.stay-in-place))} + {1 :junegunn/vim-slash + :config (fn [] + (require :config.vim-slash)) + :event :BufWinEnter} + {1 :cappyzawa/trim.nvim + :config (fn [] + (require :config.trim)) + :event :BufWinEnter} + {1 :max397574/better-escape.nvim + :event :BufWinEnter + :config (fn [] + (require :config.better-escape))} + {1 :windwp/nvim-autopairs + :config (fn [] + (require :config.autopairs)) + :event :BufWinEnter} + {1 :windwp/nvim-spectre + :config (fn [] + (require :config.spectre)) + :event :BufWinEnter}]) + +(def misc [{1 :nvim-orgmode/orgmode + :config (fn [] + (require :config.window-picker)) + :event :BufWinEnter} + {1 :akinsho/toggleterm.nvim + :config (fn [] + (require :config.toggleterm)) + :event :BufWinEnter} + {1 :dstein64/vim-startuptime}]) + +(def all {: core + : completions + : git + : search + : snippets + : lsp + : color + : ui + : session + : text + : misc}) diff --git a/fnl/util.fnl b/fnl/util.fnl deleted file mode 100644 index 88ec1c3..0000000 --- a/fnl/util.fnl +++ /dev/null @@ -1,43 +0,0 @@ -;; Utility functions. -(module util {autoload {a aniseed.core nvim aniseed.nvim : packer}}) - -(def- path (.. (vim.fn.stdpath :data) :/site/pack/packer/start)) - -(def- installed-plugins (vim.fn.readdir path)) - -(def- configured-plugins (require :plugins)) - -(defn- parse-plugins-names [plugins] (var names []) - (each [plugin _ (pairs plugins)] - (table.insert names (string.match plugin "/(.*)"))) names) - -(defn- contains [ys xs] (var equal true) - (each [_ x (pairs xs)] - (if (not= (vim.tbl_contains ys x) true) - (set equal false))) equal) - -(defn- deep-equal [xs ys] (and (contains xs ys) (contains ys xs))) - -(defn- synchronized [configured installed] (deep-equal configured installed)) - -(defn- install [] - (packer.startup (fn [use] - (each [plugin opts (pairs configured-plugins)] - (use (a.assoc opts 1 plugin)))))) - -(defn load-plugins [] (install) - (if (not= (synchronized (parse-plugins-names configured-plugins) - installed-plugins) true) - (packer.sync) - (require :config))) - -(defn load-plugin [name] - (let [(ok? plugin) (pcall require name)] - (if ok? - plugin - (vim.notify (.. "Could not load config: " val-or-err) - vim.log.levels.WARN)))) - -(defn use-config [plugin config] - (let [plugin (load-plugin plugin)] - (plugin.setup config))) diff --git a/init.lua b/init.lua index 455a818..03e828b 100644 --- a/init.lua +++ b/init.lua @@ -3,10 +3,12 @@ local fn = vim.fn local fmt = string.format local execute = vim.api.nvim_command local packer_path = fn.stdpath "data" .. "/site/pack/packer/start" +local sync = false local function ensure(user, repository) local path = fmt("%s/%s", packer_path, repository) if fn.empty(fn.glob(path)) > 0 then + sync = true execute( fmt("!git clone --depth 1 https://github.com/%s/%s %s", user, repository, path) ) @@ -18,6 +20,10 @@ ensure("wbthomason", "packer.nvim") ensure("Olical", "aniseed") ensure("lewis6991", "impatient.nvim") +if sync then + require("packer").sync() +end + require "impatient" vim.g["aniseed#env"] = { -- cgit v1.2.3-70-g09d2