nvim-config/fnl/lazy-setup.fnl
2023-07-27 08:45:49 -06:00

72 lines
2.5 KiB
Fennel

(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/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 {}} ; NOTE: `opts = {}` is the same as calling `require("fidget").setup({})`
"folke/neodev.nvim"]}
]))
(let [telescope (require "telescope")]
(pcall (telescope.load_extension :fzf)))
(let
[neodev (require :neodev)
mason (require :mason)
mason-lspconfig (require :mason-lspconfig)
servers
{:lua_ls {
:Lua {
:workspace { :checkThirdParty false }
:telemetry { :enable false }}}
;:fennel_language_server {}
;:bash_language_server {}
;:jq {}
}
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 server_name)
]
(server.setup
{:capabilities (vim.lsp.protocol.make_client_capabilities)
:on_attach on_attach
:settings (. servers server_name)
:filetypes (or settings.filetypes []) })))
]))