148 lines
4.1 KiB
Lua
148 lines
4.1 KiB
Lua
local opt = vim.opt
|
|
local g = vim.g
|
|
|
|
vim.cmd [[
|
|
colorscheme onehalflight
|
|
|
|
if has("autocmd")
|
|
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
|
|
endif
|
|
|
|
autocmd Filetype json
|
|
\ let g:indentLine_setConceal = 0 |
|
|
\ let g:vim_json_syntax_conceal = 0
|
|
]]
|
|
|
|
g.mapleader = ' '
|
|
g.indentLine_char = '⎸'
|
|
g.indentLine_color_gui = '#c7c7c7'
|
|
|
|
opt.undofile = true
|
|
opt.undodir = "/home/sijmen/.cache/nvim/undo"
|
|
opt.backupdir = "/home/sijmen/.cache/nvim/backup"
|
|
|
|
opt.smartindent = true
|
|
opt.autoindent = true
|
|
opt.tabstop = 2
|
|
opt.shiftwidth = 2
|
|
opt.expandtab = true
|
|
|
|
opt.mouse = "a"
|
|
|
|
opt.termguicolors = true
|
|
opt.cursorline = true
|
|
opt.relativenumber = true
|
|
opt.number = true
|
|
|
|
opt.smartcase = true
|
|
opt.ttimeoutlen = 5
|
|
opt.compatible = false
|
|
opt.autoread = true
|
|
opt.incsearch = true
|
|
opt.hidden = true
|
|
opt.shortmess = "atI"
|
|
|
|
|
|
require("nvim-tree").setup()
|
|
|
|
require("lualine").setup {
|
|
options = {
|
|
component_separators = { left = "", right = "" },
|
|
section_separators = { left = "", right = "" },
|
|
},
|
|
}
|
|
|
|
require("nvim-treesitter.configs").setup {
|
|
auto_install = true,
|
|
highlight = { enable = true },
|
|
parser_install_dir = "/home/sijmen/.cache/nvim/treesitter",
|
|
}
|
|
|
|
vim.opt.runtimepath:append("/home/sijmen/.cache/nvim/treesitter")
|
|
|
|
|
|
local opts = { noremap=true, silent=true }
|
|
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
|
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
|
|
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
|
|
|
|
local on_attach = function(client, bufnr)
|
|
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
|
|
|
local bufopts = { noremap=true, silent=true, buffer=bufnr }
|
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
|
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
|
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
|
|
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
|
|
|
|
vim.keymap.set('n', '<space>wl', function()
|
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
|
end, bufopts)
|
|
|
|
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
|
|
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
|
|
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
|
|
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
|
vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts)
|
|
end
|
|
|
|
|
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities)
|
|
|
|
local lspconfig = require("lspconfig")
|
|
local servers = { "rnix", "pyright", "rust_analyzer" }
|
|
for _, lsp in ipairs(servers) do
|
|
lspconfig[lsp].setup {
|
|
on_attach = on_attach,
|
|
capabilities = capabilities,
|
|
}
|
|
end
|
|
|
|
local luasnip = require("luasnip")
|
|
|
|
local cmp = require("cmp")
|
|
cmp.setup {
|
|
snippet = {
|
|
expand = function(args)
|
|
luasnip.lsp_expand(args.body)
|
|
end,
|
|
},
|
|
mapping = cmp.mapping.preset.insert({
|
|
["<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(function(fallback)
|
|
if cmp.visible() then
|
|
cmp.select_next_item()
|
|
elseif luasnip.expand_or_jumpable() then
|
|
luasnip.expand_or_jump()
|
|
else
|
|
fallback()
|
|
end
|
|
end, { "i", "s" }),
|
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
|
if cmp.visible() then
|
|
cmp.select_prev_item()
|
|
elseif luasnip.jumpable(-1) then
|
|
luasnip.jump(-1)
|
|
else
|
|
fallback()
|
|
end
|
|
end, { "i", "s" }),
|
|
}),
|
|
sources = {
|
|
{ name = "nvim_lsp" },
|
|
{ name = "luasnip" },
|
|
},
|
|
}
|
|
|
|
vim.api.nvim_set_keymap("n", "<C-b>", ":NvimTreeToggle<CR>", { noremap = true, silent = true })
|