diff --git a/fnl/init.fnl b/fnl/init.fnl index 77d75d4..41d1037 100644 --- a/fnl/init.fnl +++ b/fnl/init.fnl @@ -1,54 +1,43 @@ ;; Package Management via lazy.nvim -(let - [lazy (require :lazy) - lazypath (.. (vim.fn.stdpath "data") "/lazy/lazy.nvim") - ] - (if (not (vim.loop.fs_stat lazypath)) - (vim.fn.system - ["git" - "clone" - "--filter=blob:none" - "https://github.com/folke/lazy.nvim.git" - "--branch=stable" - lazypath])) - (vim.opt.rtp:prepend lazypath) - (lazy.setup - ["https://github.com/rktjmp/hotpot.nvim" - {:url "https://github.com/nvim-telescope/telescope.nvim" - :tag "0.1.2" - :dependencies ["nvim-lua/plenary.nvim"]} - {:url "https://github.com/nvim-telescope/telescope-fzf-native.nvim" - :build (.. "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release" - " && cmake --build build --config Release" - " && cmake --install build --prefix build" )} - {:url "https://github.com/nvim-treesitter/nvim-treesitter" - :build ":TSUpdate"} - {:url "https://github.com/neovim/nvim-lspconfig" - :dependencies - ["https://github.com/williamboman/mason.nvim" - "williamboman/mason-lspconfig.nvim" - {:url "https://github.com/j-hui/fidget.nvim" - :tag "legacy" - :opts {}} - "folke/neodev.nvim" - ]} - {:url "https://github.com/hrsh7th/nvim-cmp" - :dependencies - ["https://github.com/hrsh7th/cmp-nvim-lsp" - "https://github.com/hrsh7th/cmp-buffer" - "https://github.com/hrsh7th/cmp-path" - "https://github.com/hrsh7th/cmp-cmdline" - "https://github.com/hrsh7th/cmp-cmdline" - ]} - {:url "https://github.com/L3MON4D3/LuaSnip" - :dependencies - [{:url "https://github.com/saadparwaiz1/cmp_luasnip"} - {:url "https://github.com/rafamadriz/friendly-snippets"} - ]} - "https://github.com/sainnhe/everforest" - ])) +(let [lazy (require :lazy) + lazypath (.. (vim.fn.stdpath :data) :/lazy/lazy.nvim)] + (if (not (vim.loop.fs_stat lazypath)) + (vim.fn.system [:git + :clone + "--filter=blob:none" + "https://github.com/folke/lazy.nvim.git" + :--branch=stable + lazypath])) + (vim.opt.rtp:prepend lazypath) + (lazy.setup ["https://github.com/rktjmp/hotpot.nvim" + {:url "https://github.com/nvim-telescope/telescope.nvim" + :tag :0.1.2 + :dependencies [:nvim-lua/plenary.nvim]} + {:url "https://github.com/nvim-telescope/telescope-fzf-native.nvim" + :build (.. "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release" + " && cmake --build build --config Release" + " && cmake --install build --prefix build")} + {:url "https://github.com/nvim-treesitter/nvim-treesitter" + :build ":TSUpdate"} + {:url "https://github.com/neovim/nvim-lspconfig" + :dependencies ["https://github.com/williamboman/mason.nvim" + :williamboman/mason-lspconfig.nvim + {:url "https://github.com/j-hui/fidget.nvim" + :tag :legacy + :opts {}} + :folke/neodev.nvim]} + {:url "https://github.com/hrsh7th/nvim-cmp" + :dependencies ["https://github.com/hrsh7th/cmp-nvim-lsp" + "https://github.com/hrsh7th/cmp-buffer" + "https://github.com/hrsh7th/cmp-path" + "https://github.com/hrsh7th/cmp-cmdline" + "https://github.com/hrsh7th/cmp-cmdline"]} + {:url "https://github.com/L3MON4D3/LuaSnip" + :dependencies ["https://github.com/saadparwaiz1/cmp_luasnip" + "https://github.com/rafamadriz/friendly-snippets"]} + "https://github.com/sainnhe/everforest"])) -(let [telescope (require :telescope)] +(let [telescope (require :telescope)] (pcall (telescope.load_extension :fzf))) (require :setup-treesitter) diff --git a/fnl/personalize.fnl b/fnl/personalize.fnl index 8f4bcb0..6d8ae1b 100644 --- a/fnl/personalize.fnl +++ b/fnl/personalize.fnl @@ -1,69 +1,62 @@ -(let - [cmp (require :cmp) - luasnip (require :luasnip) - ] - {:options (fn [] - (set vim.o.termguicolors true) - (set vim.o.mouse :a) - (set vim.o.clipboard :unnamedplus) - (set vim.o.wrap false) - (set vim.opt.colorcolumn "80,120") - (vim.cmd.colorscheme :everforest)) - - :keymap (fn [] - (let [nmap #(vim.keymap.set [:n] $1 $2 {:desc $3})] - (nmap "" ":bnext" "Next Buffer") - (nmap "" ":bprevious" "Previous Buffer") - (nmap "" ":write|bdelete" "Save and delete buffer") - (nmap "" ":Telescope find_files" "Telescope find_files") - (nmap "" ":Telescope live_grep" "Telescope live_grep") - (nmap "" ":Telescope buffers" "Telescope buffers") - (nmap "" ":Telescope treesitter" "Telescope treesitter"))) - - :treesitter-languages - [:c :lua :vim :vimdoc :query ; required - :fennel] ; add new languages here - - :language-servers - {:lua_ls {:filetypes [:lua] - :Lua - {:workspace {:checkThirdParty false}} - :telemetry {:enable false} - :diagnostics {:globals - [:vim - ]}} - :fennel_language_server {:filetypes [:fennel] - :fennel - {:workspace {:library (vim.api.nvim_list_runtime_paths)} - :diagnostics {:globals - [:vim - ]}}} - :bashls {:filetypes [:bash]}} - - :lsp-attach (fn [_ bufnr] - (let - [nmap #(vim.keymap.set :n $1 $2 {:buffer bufnr :desc (.. "LSP: " $3)}) - telescope (require :telescope.builtin) - ] - (nmap :gd vim.lsp.buf.definition "[G]o to [D]efiniton") - (nmap :gr telescope.lsp_references "[G]o to [R]eferences") - (nmap :gI vim.lsp.buf.implementation "[G]o to [I]mplementation") - (vim.api.nvim_buf_create_user_command bufnr "Format" - #(vim.lsp.buf.format) - "Format current buffer with LSP"))) - - :cmp-mapping - {: (cmp.mapping.select_next_item) - : (cmp.mapping.select_prev_item) - : (cmp.mapping.scroll_docs -4) - : (cmp.mapping.scroll_docs 4) - : (cmp.mapping.complete) - : (cmp.mapping.confirm {:behavior cmp.ConfirmBehavior.Replace :select true}) - : (cmp.mapping (fn [fallback] - (if (cmp.visible) (cmp.select_prev_item) - (luasnip.expand_or_locally_jumpable) (luasnip.expand_or_jump) - (fallback))) [:i :s]) - : (cmp.mapping (fn [fallback] - (if (cmp.visible) (cmp.select_prev_item) - (luasnip.locally_jumpable -1) (luasnip.jump -1) - (fallback))) [:i :s])}}) +(let [cmp (require :cmp) + luasnip (require :luasnip)] + {:options (fn [] + (set vim.o.termguicolors true) + (set vim.o.mouse :a) + (set vim.o.clipboard :unnamedplus) + (set vim.o.wrap false) + (set vim.opt.colorcolumn "80,120") + (vim.cmd.colorscheme :everforest)) + :keymap (fn [] + (let [nmap #(vim.keymap.set [:n] $1 $2 {:desc $3})] + (nmap : ":bnext" "Next Buffer") + (nmap : ":bprevious" "Previous Buffer") + (nmap : ":write|bdelete" "Save and delete buffer") + (nmap : ":Telescope find_files" "Telescope find_files") + (nmap : ":Telescope live_grep" "Telescope live_grep") + (nmap : ":Telescope buffers" "Telescope buffers") + (nmap : ":Telescope treesitter" "Telescope treesitter"))) + :treesitter-languages [:c + :lua + :vim + :vimdoc + :query + :fennel] + :language-servers {:lua_ls {:filetypes [:lua] + :Lua {:workspace {:checkThirdParty false}} + :telemetry {:enable false} + :diagnostics {:globals [:vim]}} + :fennel_language_server {:filetypes [:fennel] + :fennel {:workspace {:library (vim.api.nvim_list_runtime_paths)} + :diagnostics {:globals [:vim]}}} + :bashls {:filetypes [:bash]}} + :lsp-attach (fn [_ bufnr] + (let [nmap #(vim.keymap.set :n $1 $2 + {:buffer bufnr + :desc (.. "LSP: " $3)}) + telescope (require :telescope.builtin)] + (nmap :gd vim.lsp.buf.definition "[G]o to [D]efiniton") + (nmap :gr telescope.lsp_references "[G]o to [R]eferences") + (nmap :gI vim.lsp.buf.implementation + "[G]o to [I]mplementation") + (vim.api.nvim_buf_create_user_command bufnr :Format + #(vim.lsp.buf.format) + "Format current buffer with LSP"))) + :cmp-mapping {: (cmp.mapping.select_next_item) + : (cmp.mapping.select_prev_item) + : (cmp.mapping.scroll_docs -4) + : (cmp.mapping.scroll_docs 4) + : (cmp.mapping.complete) + : (cmp.mapping.confirm {:behavior cmp.ConfirmBehavior.Replace + :select true}) + : (cmp.mapping (fn [fallback] + (if (cmp.visible) (cmp.select_prev_item) + (luasnip.expand_or_locally_jumpable) (luasnip.expand_or_jump) + (fallback))) + [:i :s]) + : (cmp.mapping (fn [fallback] + (if (cmp.visible) + (cmp.select_prev_item) + (luasnip.locally_jumpable -1) + (luasnip.jump -1) (fallback))) + [:i :s])}}) diff --git a/fnl/setup-cmp.fnl b/fnl/setup-cmp.fnl index 1f66952..6dbcd28 100644 --- a/fnl/setup-cmp.fnl +++ b/fnl/setup-cmp.fnl @@ -1,32 +1,22 @@ -(let - [cmp (require :cmp) - luasnip (require :luasnip) - vscode-snips (require :luasnip.loaders.from_vscode) - {: cmp-mapping} (require :personalize) - ] - (vscode-snips.lazy_load) - (luasnip.config.setup) - (cmp.setup - {:snippet {:expand #(luasnip $1)} - :mapping (cmp.mapping.preset.insert cmp-mapping) - :sources (cmp.config.sources - [{:name :nvim_lsp} - {:name :luasnip} - {:name :buffer} - ])}) - (cmp.setup.cmdline ["/" "?"] - {:mapping (cmp.mapping.preset.cmdline) - :sources - [{:name :buffer}] - }) - (cmp.setup.cmdline [":"] - {:mapping (cmp.mapping.preset.cmdline) - :sources (cmp.config.sources - [{:name :path} - {:name :cmdline}])}) - (cmp.setup.filetype [:gitcommit] - {:mapping (cmp.mapping.preset.cmdline) - :sources (cmp.config.sources - [{:name :git} - {:name :buffer}]) - })) +(let [cmp (require :cmp) + luasnip (require :luasnip) + vscode-snips (require :luasnip.loaders.from_vscode) + {: cmp-mapping} (require :personalize)] + (vscode-snips.lazy_load) + (luasnip.config.setup) + (cmp.setup {:snippet {:expand #(luasnip $1)} + :mapping (cmp.mapping.preset.insert cmp-mapping) + :sources (cmp.config.sources [{:name :nvim_lsp} + {:name :luasnip} + {:name :buffer}])}) + (cmp.setup.cmdline ["/" "?"] + {:mapping (cmp.mapping.preset.cmdline) + :sources [{:name :buffer}]}) + (cmp.setup.cmdline [":"] + {:mapping (cmp.mapping.preset.cmdline) + :sources (cmp.config.sources [{:name :path} + {:name :cmdline}])}) + (cmp.setup.filetype [:gitcommit] + {:mapping (cmp.mapping.preset.cmdline) + :sources (cmp.config.sources [{:name :git} + {:name :buffer}])})) diff --git a/fnl/setup-mason.fnl b/fnl/setup-mason.fnl index ec438e8..23ed1d6 100644 --- a/fnl/setup-mason.fnl +++ b/fnl/setup-mason.fnl @@ -1,22 +1,19 @@ -(let - [neodev (require :neodev) - mason (require :mason) - mason-lspconfig (require :mason-lspconfig) - {: language-servers : lsp-attach} (require :personalize) - ] - (neodev.setup) - (mason.setup) - (mason-lspconfig.setup {:ensure_installed (vim.tbl_keys language-servers)}) - (mason-lspconfig.setup_handlers - [(fn [server_name] (let - [server (. (require :lspconfig) server_name) - cmp-nvim-lsp (require :cmp_nvim_lsp) - settings (. language-servers server_name) - ] - (server.setup - {:capabilities (cmp-nvim-lsp.default_capabilities (vim.lsp.protocol.make_client_capabilities)) - :on_attach lsp-attach - :settings settings - :filetypes (or settings.filetypes [])}))) - ])) - +(let [neodev (require :neodev) + mason (require :mason) + mason-lspconfig (require :mason-lspconfig) + {: language-servers : lsp-attach} (require :personalize)] + (neodev.setup) + (mason.setup) + (mason-lspconfig.setup {:ensure_installed (vim.tbl_keys language-servers)}) + (mason-lspconfig.setup_handlers + [(fn [server_name] + (let [server (. (require :lspconfig) + server_name) + cmp-nvim-lsp (require :cmp_nvim_lsp) + settings (. language-servers + server_name)] + (server.setup {:capabilities (cmp-nvim-lsp.default_capabilities (vim.lsp.protocol.make_client_capabilities)) + :on_attach lsp-attach + : settings + :filetypes (or settings.filetypes + [])})))])) diff --git a/fnl/setup-treesitter.fnl b/fnl/setup-treesitter.fnl index 64c712e..07ee5ca 100644 --- a/fnl/setup-treesitter.fnl +++ b/fnl/setup-treesitter.fnl @@ -1,11 +1,7 @@ -(let - [treesitter (require :nvim-treesitter.configs) - {: treesitter-languages} (require :personalize) - ] - (treesitter.setup - {:ensure_installed treesitter-languages - :sync_install false - :auto_install false - :ignore_install [] ; could :ensure_installed :all, then ignore unwanted. - :highlight {:enable true} - :indent {:enable true}})) +(let [treesitter (require :nvim-treesitter.configs) + {: treesitter-languages} (require :personalize)] + (treesitter.setup {:ensure_installed treesitter-languages + :sync_install false + :auto_install true + :highlight {:enable true} + :indent {:enable true}}))