131 lines
3.8 KiB
Lua
131 lines
3.8 KiB
Lua
vim.loader.enable()
|
|
|
|
-- Bootstrap lazy.nvim
|
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
|
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
|
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
|
if vim.v.shell_error ~= 0 then
|
|
vim.api.nvim_echo({
|
|
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
|
{ out, "WarningMsg" },
|
|
{ "\nPress any key to exit..." },
|
|
}, true, {})
|
|
vim.fn.getchar()
|
|
os.exit(1)
|
|
end
|
|
end
|
|
vim.opt.rtp:prepend(lazypath)
|
|
|
|
require("lazy").setup({
|
|
spec = {
|
|
{ import = "plugins" }
|
|
},
|
|
-- automatically check for plugin updates
|
|
checker = { enabled = true },
|
|
})
|
|
|
|
local config_path = vim.fn.stdpath("config")
|
|
|
|
local color_scheme_module, _ = string.format("colorschemes", config_path)
|
|
package.loaded[color_scheme_module] = nil
|
|
require(color_scheme_module)
|
|
|
|
vim.o.expandtab = true
|
|
vim.o.smartindent = true
|
|
vim.o.tabstop = 2
|
|
vim.o.shiftwidth = 2
|
|
|
|
vim.keymap.set('t', '<Esc>', [[<C-\><C-n>]])
|
|
|
|
-- Setup language servers.
|
|
vim.lsp.enable('pyright')
|
|
vim.lsp.enable('tsserver')
|
|
vim.lsp.enable('rust_analyzer')
|
|
vim.lsp.config('rust_analyzer', {
|
|
-- Server-specific settings. See `:help lspconfig-setup`
|
|
settings = {
|
|
['rust-analyzer'] = {},
|
|
},
|
|
})
|
|
|
|
-- Setup Treesitter
|
|
require'nvim-treesitter'.setup {
|
|
-- Directory to install parsers and queries to (prepended to `runtimepath` to have priority)
|
|
install_dir = vim.fn.stdpath('data') .. '/site'
|
|
}
|
|
require'nvim-treesitter'.install {
|
|
"bash",
|
|
"c",
|
|
"diff",
|
|
"html",
|
|
"hcl",
|
|
"javascript",
|
|
"jsdoc",
|
|
"json",
|
|
--"jsonc",
|
|
"lua",
|
|
"luadoc",
|
|
"luap",
|
|
"markdown",
|
|
"markdown_inline",
|
|
"python",
|
|
"query",
|
|
"regex",
|
|
"toml",
|
|
"tsx",
|
|
"typescript",
|
|
"terraform",
|
|
"vim",
|
|
"vimdoc",
|
|
"xml",
|
|
"yaml",
|
|
"rust",
|
|
"toml",
|
|
"ron",
|
|
"hcl",
|
|
"terraform"
|
|
}
|
|
|
|
-- Global mappings.
|
|
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
|
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float)
|
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
|
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
|
|
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist)
|
|
|
|
-- Use LspAttach autocommand to only map the following keys
|
|
-- after the language server attaches to the current buffer
|
|
vim.api.nvim_create_autocmd('LspAttach', {
|
|
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
|
|
callback = function(ev)
|
|
-- Enable completion triggered by <c-x><c-o>
|
|
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
|
|
|
-- Buffer local mappings.
|
|
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
|
local opts = { buffer = ev.buf }
|
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
|
|
-- vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
|
|
vim.keymap.set('n', '<Tab>f', vim.lsp.buf.definition, opts)
|
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
|
|
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
|
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
|
|
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
|
|
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
|
|
vim.keymap.set('n', '<space>wl', function()
|
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
|
end, opts)
|
|
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
|
|
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
|
|
vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
|
|
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
|
|
vim.keymap.set('n', '<space>f', function()
|
|
vim.lsp.buf.format { async = true }
|
|
end, opts)
|
|
end,
|
|
})
|
|
|
|
vim.wo.number = true
|
|
vim.cmd('Neotree')
|