198 lines
4.9 KiB
Lua
198 lines
4.9 KiB
Lua
--
|
|
-- ALE
|
|
--
|
|
-- Run linters only on save
|
|
vim.g.ale_lint_on_text_changed = 'never'
|
|
vim.g.ale_lint_on_insert_leave = 0
|
|
|
|
-- Include the linter name (e.g. 'hack' or 'hhast'), code, and message in errors
|
|
vim.g.ale_echo_msg_format = '[%linter%] %s'
|
|
vim.g.ale_linters = {
|
|
hack = {'hack', 'hhast'},
|
|
haskell = {"hlint"},
|
|
javascript = {'eslint'},
|
|
d = {'dmd'},
|
|
php = {'phpcs', 'phpstan'},
|
|
ruby = {'rubocop'},
|
|
cpp = {},
|
|
}
|
|
vim.g.ale_ruby_rubocop_executable = 'bundle'
|
|
vim.g.ale_cpp_cc_options = '-std=c++17 -Wall'
|
|
|
|
vim.g.ale_open_list = 1
|
|
vim.g.ale_disable_lsp = 1
|
|
|
|
--
|
|
-- nvim-cmp
|
|
--
|
|
local cmp = require'cmp'
|
|
|
|
cmp.setup({
|
|
snippet = {
|
|
-- REQUIRED - you must specify a snippet engine
|
|
expand = function(args)
|
|
require'snippy'.expand_snippet(args.body)
|
|
end,
|
|
},
|
|
mapping = {
|
|
['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
|
|
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
|
|
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
|
|
-- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
|
|
['<C-y>'] = cmp.config.disable,
|
|
['<C-e>'] = cmp.mapping({
|
|
i = cmp.mapping.abort(),
|
|
c = cmp.mapping.close(),
|
|
}),
|
|
['<CR>'] = cmp.mapping.confirm({ select = false }),
|
|
},
|
|
sources = cmp.config.sources({
|
|
{ name = 'nvim_lsp' },
|
|
{ name = 'snippy' },
|
|
}, {
|
|
{ name = 'path' },
|
|
}, {
|
|
{ name = 'buffer' },
|
|
}),
|
|
view = {
|
|
entries = 'native',
|
|
},
|
|
})
|
|
|
|
-- Setup lspconfig.
|
|
local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())
|
|
capabilities.textDocument.foldingRange = {
|
|
dynamicRegistration = false,
|
|
lineFoldingOnly = true
|
|
}
|
|
|
|
--
|
|
-- Telescope
|
|
--
|
|
require('telescope').setup {
|
|
extensions = {
|
|
["ui-select"] = {
|
|
require("telescope.themes").get_dropdown {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
require("telescope").load_extension("ui-select")
|
|
|
|
vim.api.nvim_set_keymap('n', '<leader>ff', "<cmd>lua require('telescope.builtin').find_files()<cr>",
|
|
{ noremap = true, silent = true })
|
|
vim.api.nvim_set_keymap('n', '<leader>fg', "<cmd>lua require('telescope.builtin').live_grep()<cr>",
|
|
{ noremap = true, silent = true })
|
|
vim.api.nvim_set_keymap('n', '<leader>fb', "<cmd>lua require('telescope.builtin').buffers()<cr>",
|
|
{ noremap = true, silent = true })
|
|
vim.api.nvim_set_keymap('n', '<leader>fh', "<cmd>lua require('telescope.builtin').help_tags()<cr>",
|
|
{ noremap = true, silent = true })
|
|
|
|
--
|
|
-- NvimTree
|
|
--
|
|
require('nvim-tree').setup {}
|
|
|
|
vim.api.nvim_set_keymap('n', '<C-n>', ':NvimTreeToggle<CR>', { noremap = true })
|
|
vim.api.nvim_set_keymap('n', '<leader>r', ':NvimTreeRefresh<CR>', { noremap = true })
|
|
vim.api.nvim_set_keymap('n', '<leader>n', ':NvimTreeFindFile<CR>', { noremap = true })
|
|
|
|
--
|
|
-- Lualine
|
|
--
|
|
require('lualine').setup {
|
|
options = {
|
|
theme = 'codedark'
|
|
},
|
|
extensions = {'quickfix', 'nvim-tree', 'fugitive'},
|
|
sections = {
|
|
lualine_c = {
|
|
'filename'
|
|
}
|
|
}
|
|
}
|
|
|
|
--
|
|
-- Diffview.nvim
|
|
--
|
|
require('diffview').setup {}
|
|
|
|
--
|
|
-- Vista
|
|
--
|
|
vim.g.vista_default_executive = 'nvim_lsp'
|
|
|
|
--
|
|
-- nvim-ufo
|
|
--
|
|
vim.wo.foldcolumn = '1'
|
|
vim.wo.foldlevel = 99 -- feel free to decrease the value
|
|
vim.wo.foldenable = true
|
|
|
|
require('ufo').setup()
|
|
|
|
--
|
|
-- nvim-dap
|
|
--
|
|
vim.keymap.set('n', '<F5>', function() require('dap').continue() end)
|
|
vim.keymap.set('n', '<F10>', function() require('dap').step_over() end)
|
|
vim.keymap.set('n', '<F11>', function() require('dap').step_into() end)
|
|
vim.keymap.set('n', '<F12>', function() require('dap').step_out() end)
|
|
vim.keymap.set('n', '<Leader>b', function() require('dap').toggle_breakpoint() end)
|
|
vim.keymap.set('n', '<Leader>B', function() require('dap').set_breakpoint() end)
|
|
vim.keymap.set('n', '<Leader>lp', function() require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) end)
|
|
vim.keymap.set('n', '<Leader>dr', function() require('dap').repl.open() end)
|
|
vim.keymap.set('n', '<Leader>dl', function() require('dap').run_last() end)
|
|
vim.keymap.set({'n', 'v'}, '<Leader>dh', function()
|
|
require('dap.ui.widgets').hover()
|
|
end)
|
|
vim.keymap.set({'n', 'v'}, '<Leader>dp', function()
|
|
require('dap.ui.widgets').preview()
|
|
end)
|
|
vim.keymap.set('n', '<Leader>df', function()
|
|
local widgets = require('dap.ui.widgets')
|
|
widgets.centered_float(widgets.frames)
|
|
end)
|
|
vim.keymap.set('n', '<Leader>ds', function()
|
|
local widgets = require('dap.ui.widgets')
|
|
widgets.centered_float(widgets.scopes)
|
|
end)
|
|
|
|
local dap = require("dap")
|
|
dap.adapters.gdb = {
|
|
type = "executable",
|
|
command = "gdb",
|
|
args = { "-i", "dap" }
|
|
}
|
|
dap.configurations.cpp = {
|
|
{
|
|
name = "Launch",
|
|
type = "gdb",
|
|
request = "launch",
|
|
program = function()
|
|
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
|
end,
|
|
cwd = "${workspaceFolder}",
|
|
stopAtBeginningOfMainSubprogram = false,
|
|
},
|
|
}
|
|
|
|
--
|
|
-- Vdebug
|
|
--
|
|
vim.g.vdebug_options = { port = '9000' }
|
|
|
|
--
|
|
-- Treesitter
|
|
--
|
|
require'nvim-treesitter.configs'.setup {
|
|
ensure_installed = { 'haskell', 'php', 'lua' },
|
|
highlight = {
|
|
enable = true,
|
|
additional_vim_regex_highlighting = false
|
|
},
|
|
indent = {
|
|
enable = true
|
|
}
|
|
}
|