diff --git a/fnl/custom-keys.fnl b/fnl/custom-keys.fnl index feb328b..9313ba9 100644 --- a/fnl/custom-keys.fnl +++ b/fnl/custom-keys.fnl @@ -1,4 +1,4 @@ -(let [nmap #(vim.keymap.set :n $1 $2 {:desc "$3"})] +(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") @@ -6,5 +6,4 @@ (nmap "" ":Telescope find_files" "Telescope find_files") (nmap "" ":Telescope live_grep" "Telescope live_grep") (nmap "" ":Telescope buffers" "Telescope buffers") - (nmap "" ":Telescope treesitter" "Telescope treesitter") - ) + (nmap "" ":Telescope treesitter" "Telescope treesitter")) diff --git a/fnl/lazy-setup.fnl b/fnl/lazy-setup.fnl index 0ef1dfb..b3f535c 100644 --- a/fnl/lazy-setup.fnl +++ b/fnl/lazy-setup.fnl @@ -1,48 +1,51 @@ -(let [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)) - -(let [lazy (require :lazy)] - (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"} - ]} - ])) +;; 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"} + ]} + ])) (let [telescope (require :telescope)] (pcall (telescope.load_extension :fzf))) @@ -106,19 +109,37 @@ settings (. servers server_name) ] (server.setup - {:capabilities (cmp-nvim-lsp.default_capabilities) + {:capabilities (cmp-nvim-lsp.default_capabilities (vim.lsp.protocol.make_client_capabilities)) :on_attach on_attach :settings settings :filetypes (or settings.filetypes [])}))) ])) -;; Autocompletion and Snippets with nvim-cmp +;; Autocompletion and Snippets with nvim-cmp and luasnip (let [cmp (require :cmp) luasnip (require :luasnip) + vscode-snips (require :luasnip.loaders.from_vscode) ] + (vscode-snips.lazy_load) + (luasnip.config.setup) (cmp.setup {:snippet {:expand #(luasnip $1)} + :mapping (cmp.mapping.preset.insert + {: (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])}) :sources (cmp.config.sources [{:name :nvim_lsp} {:name :luasnip} diff --git a/lazy-lock.json b/lazy-lock.json index 71e5507..2c03b04 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -6,6 +6,7 @@ "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, "fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" }, + "friendly-snippets": { "branch": "main", "commit": "bc38057e513458cb2486b6cd82d365fa294ee398" }, "hotpot.nvim": { "branch": "master", "commit": "026eba9596b506ab6f807fd4aa93cd5f76255725" }, "lazy.nvim": { "branch": "main", "commit": "3ad55ae678876516156cca2f361c51f7952a924b" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "e86a4c84ff35240639643ffed56ee1c4d55f538e" },