diff options
48 files changed, 326 insertions, 297 deletions
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 <BAR> startinsert <CR>") -          (dashboard.button :f "  Find file" ":Telescope find_files <CR>") -          (dashboard.button :t "  Find text" ":Telescope live_grep <CR>") -          (dashboard.button :s " Find Session" ":SearchSession<CR>") -          (dashboard.button :p "  Find project" ":Telescope projects <CR>") -          (dashboard.button :r "  Recently used files" -                            ":Telescope oldfiles <CR>") -          (dashboard.button :c "  Configuration" -                            ":e ~/.config/nvim/init.lua <CR>") -          (dashboard.button :q "  Quit Neovim" ":qa<CR>")]) -    (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 :<Esc>}) -(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"    "<tab>" 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 :<enter> -                           :next_aot_match :<enter> -                           :next_match [";" :<enter>] -                           :prev_match ["," :<tab>] -                           :next_group :<space> -                           :prev_group :<tab>}}) +(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 @@                                          ":<C-u>lua require(\"lir.mark.actions\").toggle_mark(\"v\")<CR>"                                          {: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 :<C-k> "<Cmd>wincmd k<CR>" {})         (nvim.set_keymap :t :<C-l> "<Cmd>wincmd l<CR>" {})) -(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 ["<cmd>lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer = false})<cr>"                  "Find files"]              :t ["<cmd>Telescope live_grep theme=ivy<cr>" "Find text"] -            :s ["<cmd>Telescope grep_string theme=dropdown<cr>" "Find String"] +            :s ["<cmd>SearchSession<cr>" "Find Session"] +            :S ["<cmd>Telescope grep_string theme=dropdown<cr>" "Find String"]              :h ["<cmd>Telescope help_tags<cr>" :Help]              :H ["<cmd>Telescope highlights<cr>" :Highlights]              :l ["<cmd>Telescope resume<cr>" "Last Search"] -            :M ["<cmd>Telescope man_pages<cr>" "Man Pages"] +            :p ["<cmd>Telescope projects<cr>" "Find project"]              :r ["<cmd>Telescope oldfiles theme=dropdown<cr>" "Recent File"]              :R ["<cmd>Telescope registers<cr>" :Registers]              :k ["<cmd>Telescope keymaps<cr>" :Keymaps] @@ -175,7 +176,7 @@  (def- vmappings {:n ["<ESC><CMD>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>"                       :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))) @@ -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"] = {  |