230 lines
5.4 KiB
Lua
230 lines
5.4 KiB
Lua
local lsp = require('lspconfig')
|
|
local util = lsp.util
|
|
|
|
local lspcap = require('cmp_nvim_lsp')
|
|
.update_capabilities(vim.lsp.protocol.make_client_capabilities())
|
|
local lspatt = function(_, bufnr)
|
|
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
|
end
|
|
|
|
-- color scheme setup
|
|
vim.g.catppuccin_flavour = 'mocha'
|
|
require('catppuccin').setup()
|
|
vim.cmd [[colorscheme catppuccin]]
|
|
|
|
-- replace built in selector with telescope
|
|
require('telescope').setup {
|
|
extensions = {
|
|
["ui-select"] = {
|
|
require("telescope.themes").get_dropdown {
|
|
-- even more opts
|
|
}
|
|
}
|
|
}
|
|
}
|
|
require('telescope').load_extension('ui-select')
|
|
|
|
-- autocomplete config
|
|
local cmp = require 'cmp'
|
|
cmp.setup {
|
|
snippet = {
|
|
expand = function(args)
|
|
vim.fn["vsnip#anonymous"](args.body)
|
|
end,
|
|
},
|
|
mapping = {
|
|
['<Tab>'] = cmp.mapping.select_next_item(),
|
|
['<S-Tab>'] = cmp.mapping.select_prev_item(),
|
|
['<CR>'] = cmp.mapping.confirm({
|
|
behavior = cmp.ConfirmBehavior.Replace,
|
|
select = false,
|
|
})
|
|
},
|
|
preselect = cmp.PreselectMode.None,
|
|
confirmation = { get_commit_characters = function(_) return {} end },
|
|
sources = {
|
|
{ name = 'nvim_lsp', },
|
|
{ name = 'buffer' },
|
|
{ name = 'path' },
|
|
},
|
|
}
|
|
|
|
-- gitsigns
|
|
require('gitsigns').setup()
|
|
|
|
-- lsp configs
|
|
lsp.openscad_ls.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
}
|
|
lsp.omnisharp.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
root_dir = function(file, _)
|
|
if file:sub(-#".csx") == ".csx" then
|
|
return util.path.dirname(file)
|
|
end
|
|
return util.root_pattern("*.sln")(file) or util.root_pattern("*.csproj")(file)
|
|
end,
|
|
cmd = { "/home/rudism/.local/share/omnisharp/OmniSharp", "--languageserver" , "--hostPID", tostring(pid) },
|
|
}
|
|
lsp.tsserver.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
}
|
|
lsp.yamlls.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
}
|
|
lsp.ccls.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
}
|
|
local runtime_path = vim.split(package.path, ';')
|
|
table.insert(runtime_path, "lua/?.lua")
|
|
table.insert(runtime_path, "lua/?/init.lua")
|
|
lsp.sumneko_lua.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
cmd = { "lua-language-server", "-E" },
|
|
settings = {
|
|
Lua = {
|
|
runtime = {
|
|
version = 'LuaJIT',
|
|
path = runtime_path,
|
|
},
|
|
diagnostics = {
|
|
globals = {'vim', 'use'},
|
|
},
|
|
workspace = {
|
|
library = vim.api.nvim_get_runtime_file("", true),
|
|
},
|
|
telemetry = {
|
|
enable = false,
|
|
},
|
|
},
|
|
}
|
|
}
|
|
lsp.perlpls.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
settings = {
|
|
perl = {
|
|
perlcritic = {
|
|
enabled = false
|
|
},
|
|
syntax = {
|
|
enabled = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
lsp.efm.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
filetypes = {"sh", "markdown"},
|
|
settings = {
|
|
languages = {
|
|
sh = {{
|
|
lintCommand = "shellcheck -f gcc -x",
|
|
lintSource = "shellcheck",
|
|
lintFormats = { "%f:%l:%c: %trror: %m", "%f:%l:%c: %tarning: %m", "%f:%l:%c: %tote: %m" },
|
|
lintIgnoreExitCode = true
|
|
}},
|
|
markdown = {{
|
|
lintCommand = "write-good --parse",
|
|
lintSource = "write-good",
|
|
lintFormats = { "%f:%l:%c:%m" },
|
|
}},
|
|
}
|
|
}
|
|
}
|
|
lsp.pyright.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
}
|
|
-- setup for Arduboy dev
|
|
lsp.arduino_language_server.setup {
|
|
capabilities = lspcap,
|
|
on_attach = lspatt,
|
|
cmd = {
|
|
"arduino-language-server",
|
|
"-cli-config", "~/.arduino15/arduino-cli.yaml",
|
|
"-cli", "/bin/arduino-cli",
|
|
"-clangd", "/usr/bin/clangd",
|
|
"-fqbn", "arduino:avr:leonardo"
|
|
},
|
|
}
|
|
|
|
-- status line setup
|
|
require'lualine'.setup {
|
|
options = {
|
|
theme = 'catppuccin',
|
|
component_separators = { left = '', right = '' },
|
|
section_separators = { left = '', right = '' },
|
|
},
|
|
sections = {
|
|
lualine_a = {'mode'},
|
|
lualine_b = {'branch'},
|
|
lualine_c = {{
|
|
'filename',
|
|
symbols = {
|
|
modified = '✎ ',
|
|
readonly = '🔒 ',
|
|
unnamed = '[No Name]'
|
|
}
|
|
}},
|
|
lualine_x = {{
|
|
"diagnostics",
|
|
sources = {"nvim_lsp"},
|
|
icons_enabled = false
|
|
}},
|
|
lualine_y = {'progress'},
|
|
lualine_z = {'location'},
|
|
}
|
|
}
|
|
|
|
-- zen mode setup
|
|
local true_zen = require('true-zen')
|
|
true_zen.setup {
|
|
modes = {
|
|
ataraxis = {
|
|
custom_bg = { "solid", "#141414" },
|
|
ideal_writing_area_width = { 90, 150, "max" },
|
|
affected_higroups = {},
|
|
},
|
|
},
|
|
integrations = {
|
|
tmux = true,
|
|
gitsigns = true,
|
|
lualine = true,
|
|
},
|
|
}
|
|
true_zen.before_mode_ataraxis_on = function ()
|
|
vim.cmd("set nolist")
|
|
vim.cmd("set nocursorline")
|
|
vim.cmd("set spell")
|
|
vim.cmd("set lbr")
|
|
vim.cmd("hi Normal guibg=#141414")
|
|
vim.cmd("hi StatusLine guibg=#141414 guifg=#141414")
|
|
vim.cmd("hi StatusLineNC guibg=#141414 guifg=#141414")
|
|
local opts = { noremap = true, silent = true }
|
|
vim.api.nvim_set_keymap("", "k", "gk", opts)
|
|
vim.api.nvim_set_keymap("", "j", "gj", opts)
|
|
vim.api.nvim_set_keymap("", "<Up>", "gk", opts)
|
|
vim.api.nvim_set_keymap("", "<Down>", "gj", opts)
|
|
end
|
|
true_zen.after_mode_ataraxis_off = function ()
|
|
vim.cmd("set list")
|
|
vim.cmd("set cursorline")
|
|
vim.cmd("set nospell")
|
|
vim.cmd("set nolbr")
|
|
vim.cmd("hi Normal guibg=#242424")
|
|
vim.cmd("hi StatusLine guifg=NONE guibg=NONE")
|
|
vim.cmd("hi StatusLineNC guifg=NONE guibg=NONE")
|
|
vim.api.nvim_del_keymap("", "k")
|
|
vim.api.nvim_del_keymap("", "j")
|
|
vim.api.nvim_del_keymap("", "<Up>")
|
|
vim.api.nvim_del_keymap("", "<Down>")
|
|
end
|