This commit is contained in:
Talon 2023-07-28 00:29:05 -06:00
parent 04a91c6d05
commit 17d86f0d06
5 changed files with 166 additions and 164 deletions

46
fnl/cmp-setup.fnl Normal file
View file

@ -0,0 +1,46 @@
;; 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
{:<C-j> (cmp.mapping.select_next_item)
:<C-k> (cmp.mapping.select_prev_item)
:<C-d> (cmp.mapping.scroll_docs -4)
:<C-f> (cmp.mapping.scroll_docs 4)
:<C-Space> (cmp.mapping.complete)
:<CR> (cmp.mapping.confirm {:behavior cmp.ConfirmBehavior.Replace :select true})
:<Tab> (cmp.mapping (fn [fallback]
(if (cmp.visible) (cmp.select_prev_item)
(luasnip.expand_or_locally_jumpable) (luasnip.expand_or_jump)
(fallback))) [:i :s])
:<S-Tab> (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}
{: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}])
}))

View file

@ -1,3 +1,58 @@
(require :lazy-setup)
;; 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)))
(require :treesitter-setup)
(require :mason-setup)
(require :cmp-setup)
(require :options)
(require :custom-keys)

View file

@ -1,163 +0,0 @@
;; 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)))
;; Syntax Highlighting via Treesitter
;; NOTE: if you add a language to treesitter for syntax highlighting or otherwise
;; consider also adding the LSP via Mason below...
(let
[treesitter (require :nvim-treesitter.configs)]
(treesitter.setup
{:ensure_installed [:c :lua :vim :vimdoc :query ; required
:fennel] ; add new languages here
:sync_install false
:auto_install false
:ignore_install [] ; could :ensure_installed :all, then ignore unwanted.
:highlight {:enable true}
:indent {:enable true}}))
;; Language Server Protocols via Mason
(let
[neodev (require :neodev)
mason (require :mason)
mason-lspconfig (require :mason-lspconfig)
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]}
}
on_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")))
]
(neodev.setup)
(mason.setup)
(mason-lspconfig.setup {:ensure_installed (vim.tbl_keys servers)})
(mason-lspconfig.setup_handlers
[(fn [server_name] (let
[server (. (require :lspconfig) server_name)
cmp-nvim-lsp (require :cmp_nvim_lsp)
settings (. servers server_name)
]
(server.setup
{: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 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
{:<C-j> (cmp.mapping.select_next_item)
:<C-k> (cmp.mapping.select_prev_item)
:<C-d> (cmp.mapping.scroll_docs -4)
:<C-f> (cmp.mapping.scroll_docs 4)
:<C-Space> (cmp.mapping.complete)
:<CR> (cmp.mapping.confirm {:behavior cmp.ConfirmBehavior.Replace :select true})
:<Tab> (cmp.mapping (fn [fallback]
(if (cmp.visible) (cmp.select_prev_item)
(luasnip.expand_or_locally_jumpable) (luasnip.expand_or_jump)
(fallback))) [:i :s])
:<S-Tab> (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}
{: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}])
}))

51
fnl/mason-setup.fnl Normal file
View file

@ -0,0 +1,51 @@
;; Language Server Protocols via Mason
(let
[neodev (require :neodev)
mason (require :mason)
mason-lspconfig (require :mason-lspconfig)
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]}
}
on_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")))
]
(neodev.setup)
(mason.setup)
(mason-lspconfig.setup {:ensure_installed (vim.tbl_keys servers)})
(mason-lspconfig.setup_handlers
[(fn [server_name] (let
[server (. (require :lspconfig) server_name)
cmp-nvim-lsp (require :cmp_nvim_lsp)
settings (. servers server_name)
]
(server.setup
{:capabilities (cmp-nvim-lsp.default_capabilities (vim.lsp.protocol.make_client_capabilities))
:on_attach on_attach
:settings settings
:filetypes (or settings.filetypes [])})))
]))

13
fnl/treesitter-setup.fnl Normal file
View file

@ -0,0 +1,13 @@
;; Syntax Highlighting via Treesitter
;; NOTE: if you add a language to treesitter for syntax highlighting or otherwise
;; consider also adding the LSP via Mason below...
(let
[treesitter (require :nvim-treesitter.configs)]
(treesitter.setup
{:ensure_installed [:c :lua :vim :vimdoc :query ; required
:fennel] ; add new languages here
:sync_install false
:auto_install false
:ignore_install [] ; could :ensure_installed :all, then ignore unwanted.
:highlight {:enable true}
:indent {:enable true}}))