Compare commits
1 Commits
master
...
05-complet
Author | SHA1 | Date |
---|---|---|
christianchiarulli | 2683495c3d | 3 years ago |
@ -1,4 +0,0 @@
|
|||||||
# These are supported funding model platforms
|
|
||||||
|
|
||||||
github: christianchiarulli
|
|
||||||
patreon: chrisatmachine
|
|
@ -1,42 +0,0 @@
|
|||||||
local status_ok, alpha = pcall(require, "alpha")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local dashboard = require("alpha.themes.dashboard")
|
|
||||||
dashboard.section.header.val = {
|
|
||||||
[[ __ ]],
|
|
||||||
[[ ___ ___ ___ __ __ /\_\ ___ ___ ]],
|
|
||||||
[[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]],
|
|
||||||
[[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]],
|
|
||||||
[[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]],
|
|
||||||
[[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]],
|
|
||||||
}
|
|
||||||
dashboard.section.buttons.val = {
|
|
||||||
dashboard.button("f", " Find file", ":Telescope find_files <CR>"),
|
|
||||||
dashboard.button("e", " New file", ":ene <BAR> startinsert <CR>"),
|
|
||||||
dashboard.button("p", " Find project", ":Telescope projects <CR>"),
|
|
||||||
dashboard.button("r", " Recently used files", ":Telescope oldfiles <CR>"),
|
|
||||||
dashboard.button("t", " Find text", ":Telescope live_grep <CR>"),
|
|
||||||
dashboard.button("c", " Configuration", ":e ~/.config/nvim/init.lua <CR>"),
|
|
||||||
dashboard.button("q", " Quit Neovim", ":qa<CR>"),
|
|
||||||
}
|
|
||||||
|
|
||||||
local function footer()
|
|
||||||
-- NOTE: requires the fortune-mod package to work
|
|
||||||
-- local handle = io.popen("fortune")
|
|
||||||
-- local fortune = handle:read("*a")
|
|
||||||
-- handle:close()
|
|
||||||
-- return fortune
|
|
||||||
return "chrisatmachine.com"
|
|
||||||
end
|
|
||||||
|
|
||||||
dashboard.section.footer.val = footer()
|
|
||||||
|
|
||||||
dashboard.section.footer.opts.hl = "Type"
|
|
||||||
dashboard.section.header.opts.hl = "Include"
|
|
||||||
dashboard.section.buttons.opts.hl = "Keyword"
|
|
||||||
|
|
||||||
dashboard.opts.opts.noautocmd = true
|
|
||||||
-- vim.cmd([[autocmd User AlphaReady echo 'ready']])
|
|
||||||
alpha.setup(dashboard.opts)
|
|
@ -1,37 +0,0 @@
|
|||||||
vim.cmd [[
|
|
||||||
augroup _general_settings
|
|
||||||
autocmd!
|
|
||||||
autocmd FileType qf,help,man,lspinfo nnoremap <silent> <buffer> q :close<CR>
|
|
||||||
autocmd TextYankPost * silent!lua require('vim.highlight').on_yank({higroup = 'Visual', timeout = 200})
|
|
||||||
autocmd BufWinEnter * :set formatoptions-=cro
|
|
||||||
autocmd FileType qf set nobuflisted
|
|
||||||
augroup end
|
|
||||||
|
|
||||||
augroup _git
|
|
||||||
autocmd!
|
|
||||||
autocmd FileType gitcommit setlocal wrap
|
|
||||||
autocmd FileType gitcommit setlocal spell
|
|
||||||
augroup end
|
|
||||||
|
|
||||||
augroup _markdown
|
|
||||||
autocmd!
|
|
||||||
autocmd FileType markdown setlocal wrap
|
|
||||||
autocmd FileType markdown setlocal spell
|
|
||||||
augroup end
|
|
||||||
|
|
||||||
augroup _auto_resize
|
|
||||||
autocmd!
|
|
||||||
autocmd VimResized * tabdo wincmd =
|
|
||||||
augroup end
|
|
||||||
|
|
||||||
augroup _alpha
|
|
||||||
autocmd!
|
|
||||||
autocmd User AlphaReady set showtabline=0 | autocmd BufUnload <buffer> set showtabline=2
|
|
||||||
augroup end
|
|
||||||
]]
|
|
||||||
|
|
||||||
-- Autoformat
|
|
||||||
-- augroup _lsp
|
|
||||||
-- autocmd!
|
|
||||||
-- autocmd BufWritePre * lua vim.lsp.buf.formatting()
|
|
||||||
-- augroup end
|
|
@ -1,33 +0,0 @@
|
|||||||
-- Setup nvim-cmp.
|
|
||||||
local status_ok, npairs = pcall(require, "nvim-autopairs")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
npairs.setup {
|
|
||||||
check_ts = true,
|
|
||||||
ts_config = {
|
|
||||||
lua = { "string", "source" },
|
|
||||||
javascript = { "string", "template_string" },
|
|
||||||
java = false,
|
|
||||||
},
|
|
||||||
disable_filetype = { "TelescopePrompt", "spectre_panel" },
|
|
||||||
fast_wrap = {
|
|
||||||
map = "<M-e>",
|
|
||||||
chars = { "{", "[", "(", '"', "'" },
|
|
||||||
pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""),
|
|
||||||
offset = 0, -- Offset from pattern match
|
|
||||||
end_key = "$",
|
|
||||||
keys = "qwertyuiopzxcvbnmasdfghjkl",
|
|
||||||
check_comma = true,
|
|
||||||
highlight = "PmenuSel",
|
|
||||||
highlight_grey = "LineNr",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local cmp_autopairs = require "nvim-autopairs.completion.cmp"
|
|
||||||
local cmp_status_ok, cmp = pcall(require, "cmp")
|
|
||||||
if not cmp_status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } })
|
|
@ -1,167 +0,0 @@
|
|||||||
local status_ok, bufferline = pcall(require, "bufferline")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
bufferline.setup {
|
|
||||||
options = {
|
|
||||||
numbers = "none", -- | "ordinal" | "buffer_id" | "both" | function({ ordinal, id, lower, raise }): string,
|
|
||||||
close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions"
|
|
||||||
right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions"
|
|
||||||
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
|
|
||||||
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
|
|
||||||
-- NOTE: this plugin is designed with this icon in mind,
|
|
||||||
-- and so changing this is NOT recommended, this is intended
|
|
||||||
-- as an escape hatch for people who cannot bear it for whatever reason
|
|
||||||
indicator_icon = "▎",
|
|
||||||
buffer_close_icon = "",
|
|
||||||
-- buffer_close_icon = '',
|
|
||||||
modified_icon = "●",
|
|
||||||
close_icon = "",
|
|
||||||
-- close_icon = '',
|
|
||||||
left_trunc_marker = "",
|
|
||||||
right_trunc_marker = "",
|
|
||||||
--- name_formatter can be used to change the buffer's label in the bufferline.
|
|
||||||
--- Please note some names can/will break the
|
|
||||||
--- bufferline so use this at your discretion knowing that it has
|
|
||||||
--- some limitations that will *NOT* be fixed.
|
|
||||||
-- name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
|
|
||||||
-- -- remove extension from markdown files for example
|
|
||||||
-- if buf.name:match('%.md') then
|
|
||||||
-- return vim.fn.fnamemodify(buf.name, ':t:r')
|
|
||||||
-- end
|
|
||||||
-- end,
|
|
||||||
max_name_length = 30,
|
|
||||||
max_prefix_length = 30, -- prefix used when a buffer is de-duplicated
|
|
||||||
tab_size = 21,
|
|
||||||
diagnostics = false, -- | "nvim_lsp" | "coc",
|
|
||||||
diagnostics_update_in_insert = false,
|
|
||||||
-- diagnostics_indicator = function(count, level, diagnostics_dict, context)
|
|
||||||
-- return "("..count..")"
|
|
||||||
-- end,
|
|
||||||
-- NOTE: this will be called a lot so don't do any heavy processing here
|
|
||||||
-- custom_filter = function(buf_number)
|
|
||||||
-- -- filter out filetypes you don't want to see
|
|
||||||
-- if vim.bo[buf_number].filetype ~= "<i-dont-want-to-see-this>" then
|
|
||||||
-- return true
|
|
||||||
-- end
|
|
||||||
-- -- filter out by buffer name
|
|
||||||
-- if vim.fn.bufname(buf_number) ~= "<buffer-name-I-dont-want>" then
|
|
||||||
-- return true
|
|
||||||
-- end
|
|
||||||
-- -- filter out based on arbitrary rules
|
|
||||||
-- -- e.g. filter out vim wiki buffer from tabline in your work repo
|
|
||||||
-- if vim.fn.getcwd() == "<work-repo>" and vim.bo[buf_number].filetype ~= "wiki" then
|
|
||||||
-- return true
|
|
||||||
-- end
|
|
||||||
-- end,
|
|
||||||
offsets = { { filetype = "NvimTree", text = "", padding = 1 } },
|
|
||||||
show_buffer_icons = true,
|
|
||||||
show_buffer_close_icons = true,
|
|
||||||
show_close_icon = true,
|
|
||||||
show_tab_indicators = true,
|
|
||||||
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
|
|
||||||
-- can also be a table containing 2 custom separators
|
|
||||||
-- [focused and unfocused]. eg: { '|', '|' }
|
|
||||||
separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' },
|
|
||||||
enforce_regular_tabs = true,
|
|
||||||
always_show_bufferline = true,
|
|
||||||
-- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b)
|
|
||||||
-- -- add custom logic
|
|
||||||
-- return buffer_a.modified > buffer_b.modified
|
|
||||||
-- end
|
|
||||||
},
|
|
||||||
highlights = {
|
|
||||||
fill = {
|
|
||||||
guifg = { attribute = "fg", highlight = "#ff0000" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
},
|
|
||||||
background = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
},
|
|
||||||
|
|
||||||
-- buffer_selected = {
|
|
||||||
-- guifg = {attribute='fg',highlight='#ff0000'},
|
|
||||||
-- guibg = {attribute='bg',highlight='#0000ff'},
|
|
||||||
-- gui = 'none'
|
|
||||||
-- },
|
|
||||||
buffer_visible = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
},
|
|
||||||
|
|
||||||
close_button = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
},
|
|
||||||
close_button_visible = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
},
|
|
||||||
-- close_button_selected = {
|
|
||||||
-- guifg = {attribute='fg',highlight='TabLineSel'},
|
|
||||||
-- guibg ={attribute='bg',highlight='TabLineSel'}
|
|
||||||
-- },
|
|
||||||
|
|
||||||
tab_selected = {
|
|
||||||
guifg = { attribute = "fg", highlight = "Normal" },
|
|
||||||
guibg = { attribute = "bg", highlight = "Normal" },
|
|
||||||
},
|
|
||||||
tab = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
},
|
|
||||||
tab_close = {
|
|
||||||
-- guifg = {attribute='fg',highlight='LspDiagnosticsDefaultError'},
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLineSel" },
|
|
||||||
guibg = { attribute = "bg", highlight = "Normal" },
|
|
||||||
},
|
|
||||||
|
|
||||||
duplicate_selected = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLineSel" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLineSel" },
|
|
||||||
gui = "italic",
|
|
||||||
},
|
|
||||||
duplicate_visible = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
gui = "italic",
|
|
||||||
},
|
|
||||||
duplicate = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
gui = "italic",
|
|
||||||
},
|
|
||||||
|
|
||||||
modified = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
},
|
|
||||||
modified_selected = {
|
|
||||||
guifg = { attribute = "fg", highlight = "Normal" },
|
|
||||||
guibg = { attribute = "bg", highlight = "Normal" },
|
|
||||||
},
|
|
||||||
modified_visible = {
|
|
||||||
guifg = { attribute = "fg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
},
|
|
||||||
|
|
||||||
separator = {
|
|
||||||
guifg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
guibg = { attribute = "bg", highlight = "TabLine" },
|
|
||||||
},
|
|
||||||
separator_selected = {
|
|
||||||
guifg = { attribute = "bg", highlight = "Normal" },
|
|
||||||
guibg = { attribute = "bg", highlight = "Normal" },
|
|
||||||
},
|
|
||||||
-- separator_visible = {
|
|
||||||
-- guifg = {attribute='bg',highlight='TabLine'},
|
|
||||||
-- guibg = {attribute='bg',highlight='TabLine'}
|
|
||||||
-- },
|
|
||||||
indicator_selected = {
|
|
||||||
guifg = { attribute = "fg", highlight = "LspDiagnosticsDefaultHint" },
|
|
||||||
guibg = { attribute = "bg", highlight = "Normal" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
local status_ok, comment = pcall(require, "Comment")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
comment.setup {
|
|
||||||
pre_hook = function(ctx)
|
|
||||||
local U = require "Comment.utils"
|
|
||||||
|
|
||||||
local location = nil
|
|
||||||
if ctx.ctype == U.ctype.block then
|
|
||||||
location = require("ts_context_commentstring.utils").get_cursor_location()
|
|
||||||
elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then
|
|
||||||
location = require("ts_context_commentstring.utils").get_visual_start_location()
|
|
||||||
end
|
|
||||||
|
|
||||||
return require("ts_context_commentstring.internal").calculate_commentstring {
|
|
||||||
key = ctx.ctype == U.ctype.line and "__default" or "__multiline",
|
|
||||||
location = location,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
local status_ok, gitsigns = pcall(require, "gitsigns")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
gitsigns.setup {
|
|
||||||
signs = {
|
|
||||||
add = { hl = "GitSignsAdd", text = "▎", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" },
|
|
||||||
change = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
|
|
||||||
delete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
|
|
||||||
topdelete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
|
|
||||||
changedelete = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
|
|
||||||
},
|
|
||||||
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
|
||||||
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
|
||||||
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
|
||||||
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
|
||||||
watch_gitdir = {
|
|
||||||
interval = 1000,
|
|
||||||
follow_files = true,
|
|
||||||
},
|
|
||||||
attach_to_untracked = true,
|
|
||||||
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
|
||||||
current_line_blame_opts = {
|
|
||||||
virt_text = true,
|
|
||||||
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
|
|
||||||
delay = 1000,
|
|
||||||
ignore_whitespace = false,
|
|
||||||
},
|
|
||||||
current_line_blame_formatter_opts = {
|
|
||||||
relative_time = false,
|
|
||||||
},
|
|
||||||
sign_priority = 6,
|
|
||||||
update_debounce = 100,
|
|
||||||
status_formatter = nil, -- Use default
|
|
||||||
max_file_length = 40000,
|
|
||||||
preview_config = {
|
|
||||||
-- Options passed to nvim_open_win
|
|
||||||
border = "single",
|
|
||||||
style = "minimal",
|
|
||||||
relative = "cursor",
|
|
||||||
row = 0,
|
|
||||||
col = 1,
|
|
||||||
},
|
|
||||||
yadm = {
|
|
||||||
enable = false,
|
|
||||||
},
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
local status_ok, impatient = pcall(require, "impatient")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
impatient.enable_profile()
|
|
@ -1,70 +0,0 @@
|
|||||||
local status_ok, indent_blankline = pcall(require, "indent_blankline")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.g.indent_blankline_buftype_exclude = { "terminal", "nofile" }
|
|
||||||
vim.g.indent_blankline_filetype_exclude = {
|
|
||||||
"help",
|
|
||||||
"startify",
|
|
||||||
"dashboard",
|
|
||||||
"packer",
|
|
||||||
"neogitstatus",
|
|
||||||
"NvimTree",
|
|
||||||
"Trouble",
|
|
||||||
}
|
|
||||||
vim.g.indentLine_enabled = 1
|
|
||||||
-- vim.g.indent_blankline_char = "│"
|
|
||||||
vim.g.indent_blankline_char = "▏"
|
|
||||||
-- vim.g.indent_blankline_char = "▎"
|
|
||||||
vim.g.indent_blankline_show_trailing_blankline_indent = false
|
|
||||||
vim.g.indent_blankline_show_first_indent_level = true
|
|
||||||
vim.g.indent_blankline_use_treesitter = true
|
|
||||||
vim.g.indent_blankline_show_current_context = true
|
|
||||||
vim.g.indent_blankline_context_patterns = {
|
|
||||||
"class",
|
|
||||||
"return",
|
|
||||||
"function",
|
|
||||||
"method",
|
|
||||||
"^if",
|
|
||||||
"^while",
|
|
||||||
"jsx_element",
|
|
||||||
"^for",
|
|
||||||
"^object",
|
|
||||||
"^table",
|
|
||||||
"block",
|
|
||||||
"arguments",
|
|
||||||
"if_statement",
|
|
||||||
"else_clause",
|
|
||||||
"jsx_element",
|
|
||||||
"jsx_self_closing_element",
|
|
||||||
"try_statement",
|
|
||||||
"catch_clause",
|
|
||||||
"import_statement",
|
|
||||||
"operation_type",
|
|
||||||
}
|
|
||||||
-- HACK: work-around for https://github.com/lukas-reineke/indent-blankline.nvim/issues/59
|
|
||||||
vim.wo.colorcolumn = "99999"
|
|
||||||
|
|
||||||
-- vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]]
|
|
||||||
-- vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]]
|
|
||||||
-- vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]]
|
|
||||||
-- vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]]
|
|
||||||
-- vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]]
|
|
||||||
-- vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]]
|
|
||||||
-- vim.opt.list = true
|
|
||||||
-- vim.opt.listchars:append "space:⋅"
|
|
||||||
-- vim.opt.listchars:append "space:"
|
|
||||||
-- vim.opt.listchars:append "eol:↴"
|
|
||||||
|
|
||||||
indent_blankline.setup({
|
|
||||||
-- show_end_of_line = true,
|
|
||||||
-- space_char_blankline = " ",
|
|
||||||
show_current_context = true,
|
|
||||||
-- show_current_context_start = true,
|
|
||||||
-- char_highlight_list = {
|
|
||||||
-- "IndentBlanklineIndent1",
|
|
||||||
-- "IndentBlanklineIndent2",
|
|
||||||
-- "IndentBlanklineIndent3",
|
|
||||||
-- },
|
|
||||||
})
|
|
@ -1,24 +0,0 @@
|
|||||||
local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local lspconfig = require("lspconfig")
|
|
||||||
|
|
||||||
local servers = { "jsonls", "sumneko_lua" }
|
|
||||||
|
|
||||||
lsp_installer.setup({
|
|
||||||
ensure_installed = servers,
|
|
||||||
})
|
|
||||||
|
|
||||||
for _, server in pairs(servers) do
|
|
||||||
local opts = {
|
|
||||||
on_attach = require("user.lsp.handlers").on_attach,
|
|
||||||
capabilities = require("user.lsp.handlers").capabilities,
|
|
||||||
}
|
|
||||||
local has_custom_opts, server_custom_opts = pcall(require, "user.lsp.settings." .. server)
|
|
||||||
if has_custom_opts then
|
|
||||||
opts = vim.tbl_deep_extend("force", opts, server_custom_opts)
|
|
||||||
end
|
|
||||||
lspconfig[server].setup(opts)
|
|
||||||
end
|
|
@ -1,102 +0,0 @@
|
|||||||
local M = {}
|
|
||||||
|
|
||||||
-- TODO: backfill this to template
|
|
||||||
M.setup = function()
|
|
||||||
local signs = {
|
|
||||||
{ name = "DiagnosticSignError", text = "" },
|
|
||||||
{ name = "DiagnosticSignWarn", text = "" },
|
|
||||||
{ name = "DiagnosticSignHint", text = "" },
|
|
||||||
{ name = "DiagnosticSignInfo", text = "" },
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, sign in ipairs(signs) do
|
|
||||||
vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" })
|
|
||||||
end
|
|
||||||
|
|
||||||
local config = {
|
|
||||||
-- disable virtual text
|
|
||||||
virtual_text = false,
|
|
||||||
-- show signs
|
|
||||||
signs = {
|
|
||||||
active = signs,
|
|
||||||
},
|
|
||||||
update_in_insert = true,
|
|
||||||
underline = true,
|
|
||||||
severity_sort = true,
|
|
||||||
float = {
|
|
||||||
focusable = false,
|
|
||||||
style = "minimal",
|
|
||||||
border = "rounded",
|
|
||||||
source = "always",
|
|
||||||
header = "",
|
|
||||||
prefix = "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.diagnostic.config(config)
|
|
||||||
|
|
||||||
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
|
|
||||||
border = "rounded",
|
|
||||||
width = 60,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
|
|
||||||
border = "rounded",
|
|
||||||
width = 60,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
local function lsp_highlight_document(client)
|
|
||||||
-- Set autocommands conditional on server_capabilities
|
|
||||||
local status_ok, illuminate = pcall(require, "illuminate")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
illuminate.on_attach(client)
|
|
||||||
-- end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function lsp_keymaps(bufnr)
|
|
||||||
local opts = { noremap = true, silent = true }
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)
|
|
||||||
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>f", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(
|
|
||||||
bufnr,
|
|
||||||
"n",
|
|
||||||
"gl",
|
|
||||||
'<cmd>lua vim.diagnostic.open_float({ border = "rounded" })<CR>',
|
|
||||||
opts
|
|
||||||
)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>q", "<cmd>lua vim.diagnostic.setloclist()<CR>", opts)
|
|
||||||
vim.cmd([[ command! Format execute 'lua vim.lsp.buf.format{async=true}' ]])
|
|
||||||
end
|
|
||||||
|
|
||||||
M.on_attach = function(client, bufnr)
|
|
||||||
-- vim.notify(client.name .. " starting...")
|
|
||||||
-- TODO: refactor this into a method that checks if string in list
|
|
||||||
if client.name == "tsserver" then
|
|
||||||
client.resolved_capabilities.document_formatting = false
|
|
||||||
end
|
|
||||||
lsp_keymaps(bufnr)
|
|
||||||
lsp_highlight_document(client)
|
|
||||||
end
|
|
||||||
|
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
|
|
||||||
local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
M.capabilities = cmp_nvim_lsp.update_capabilities(capabilities)
|
|
||||||
|
|
||||||
return M
|
|
@ -1,8 +0,0 @@
|
|||||||
local status_ok, _ = pcall(require, "lspconfig")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
require "user.lsp.configs"
|
|
||||||
require("user.lsp.handlers").setup()
|
|
||||||
require "user.lsp.null-ls"
|
|
@ -1,19 +0,0 @@
|
|||||||
local null_ls_status_ok, null_ls = pcall(require, "null-ls")
|
|
||||||
if not null_ls_status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
|
|
||||||
local formatting = null_ls.builtins.formatting
|
|
||||||
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
|
|
||||||
local diagnostics = null_ls.builtins.diagnostics
|
|
||||||
|
|
||||||
null_ls.setup({
|
|
||||||
debug = false,
|
|
||||||
sources = {
|
|
||||||
formatting.prettier.with({ extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } }),
|
|
||||||
formatting.black.with({ extra_args = { "--fast" } }),
|
|
||||||
formatting.stylua,
|
|
||||||
-- diagnostics.flake8
|
|
||||||
},
|
|
||||||
})
|
|
@ -1,197 +0,0 @@
|
|||||||
local default_schemas = nil
|
|
||||||
local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls")
|
|
||||||
if status_ok then
|
|
||||||
default_schemas = jsonls_settings.get_default_schemas()
|
|
||||||
end
|
|
||||||
|
|
||||||
local schemas = {
|
|
||||||
{
|
|
||||||
description = "TypeScript compiler configuration file",
|
|
||||||
fileMatch = {
|
|
||||||
"tsconfig.json",
|
|
||||||
"tsconfig.*.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/tsconfig.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Lerna config",
|
|
||||||
fileMatch = { "lerna.json" },
|
|
||||||
url = "https://json.schemastore.org/lerna.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Babel configuration",
|
|
||||||
fileMatch = {
|
|
||||||
".babelrc.json",
|
|
||||||
".babelrc",
|
|
||||||
"babel.config.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/babelrc.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "ESLint config",
|
|
||||||
fileMatch = {
|
|
||||||
".eslintrc.json",
|
|
||||||
".eslintrc",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/eslintrc.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Bucklescript config",
|
|
||||||
fileMatch = { "bsconfig.json" },
|
|
||||||
url = "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/8.2.0/docs/docson/build-schema.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Prettier config",
|
|
||||||
fileMatch = {
|
|
||||||
".prettierrc",
|
|
||||||
".prettierrc.json",
|
|
||||||
"prettier.config.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/prettierrc",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Vercel Now config",
|
|
||||||
fileMatch = { "now.json" },
|
|
||||||
url = "https://json.schemastore.org/now",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Stylelint config",
|
|
||||||
fileMatch = {
|
|
||||||
".stylelintrc",
|
|
||||||
".stylelintrc.json",
|
|
||||||
"stylelint.config.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/stylelintrc",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "A JSON schema for the ASP.NET LaunchSettings.json files",
|
|
||||||
fileMatch = { "launchsettings.json" },
|
|
||||||
url = "https://json.schemastore.org/launchsettings.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Schema for CMake Presets",
|
|
||||||
fileMatch = {
|
|
||||||
"CMakePresets.json",
|
|
||||||
"CMakeUserPresets.json",
|
|
||||||
},
|
|
||||||
url = "https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Configuration file as an alternative for configuring your repository in the settings page.",
|
|
||||||
fileMatch = {
|
|
||||||
".codeclimate.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/codeclimate.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "LLVM compilation database",
|
|
||||||
fileMatch = {
|
|
||||||
"compile_commands.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/compile-commands.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Config file for Command Task Runner",
|
|
||||||
fileMatch = {
|
|
||||||
"commands.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/commands.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment.",
|
|
||||||
fileMatch = {
|
|
||||||
"*.cf.json",
|
|
||||||
"cloudformation.json",
|
|
||||||
},
|
|
||||||
url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/cloudformation.schema.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "The AWS Serverless Application Model (AWS SAM, previously known as Project Flourish) extends AWS CloudFormation to provide a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.",
|
|
||||||
fileMatch = {
|
|
||||||
"serverless.template",
|
|
||||||
"*.sam.json",
|
|
||||||
"sam.json",
|
|
||||||
},
|
|
||||||
url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/sam.schema.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Json schema for properties json file for a GitHub Workflow template",
|
|
||||||
fileMatch = {
|
|
||||||
".github/workflow-templates/**.properties.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/github-workflow-template-properties.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "golangci-lint configuration file",
|
|
||||||
fileMatch = {
|
|
||||||
".golangci.toml",
|
|
||||||
".golangci.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/golangci-lint.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "JSON schema for the JSON Feed format",
|
|
||||||
fileMatch = {
|
|
||||||
"feed.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/feed.json",
|
|
||||||
versions = {
|
|
||||||
["1"] = "https://json.schemastore.org/feed-1.json",
|
|
||||||
["1.1"] = "https://json.schemastore.org/feed.json",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Packer template JSON configuration",
|
|
||||||
fileMatch = {
|
|
||||||
"packer.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/packer.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "NPM configuration file",
|
|
||||||
fileMatch = {
|
|
||||||
"package.json",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/package.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "JSON schema for Visual Studio component configuration files",
|
|
||||||
fileMatch = {
|
|
||||||
"*.vsconfig",
|
|
||||||
},
|
|
||||||
url = "https://json.schemastore.org/vsconfig.json",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description = "Resume json",
|
|
||||||
fileMatch = { "resume.json" },
|
|
||||||
url = "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local function extend(tab1, tab2)
|
|
||||||
for _, value in ipairs(tab2 or {}) do
|
|
||||||
table.insert(tab1, value)
|
|
||||||
end
|
|
||||||
return tab1
|
|
||||||
end
|
|
||||||
|
|
||||||
local extended_schemas = extend(schemas, default_schemas)
|
|
||||||
|
|
||||||
local opts = {
|
|
||||||
settings = {
|
|
||||||
json = {
|
|
||||||
schemas = extended_schemas,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup = {
|
|
||||||
commands = {
|
|
||||||
Format = {
|
|
||||||
function()
|
|
||||||
vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 })
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
return opts
|
|
@ -1,16 +0,0 @@
|
|||||||
return {
|
|
||||||
settings = {
|
|
||||||
|
|
||||||
Lua = {
|
|
||||||
diagnostics = {
|
|
||||||
globals = { "vim" },
|
|
||||||
},
|
|
||||||
workspace = {
|
|
||||||
library = {
|
|
||||||
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
|
|
||||||
[vim.fn.stdpath("config") .. "/lua"] = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
@ -1,93 +0,0 @@
|
|||||||
local status_ok, lualine = pcall(require, "lualine")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local hide_in_width = function()
|
|
||||||
return vim.fn.winwidth(0) > 80
|
|
||||||
end
|
|
||||||
|
|
||||||
local diagnostics = {
|
|
||||||
"diagnostics",
|
|
||||||
sources = { "nvim_diagnostic" },
|
|
||||||
sections = { "error", "warn" },
|
|
||||||
symbols = { error = " ", warn = " " },
|
|
||||||
colored = false,
|
|
||||||
update_in_insert = false,
|
|
||||||
always_visible = true,
|
|
||||||
}
|
|
||||||
|
|
||||||
local diff = {
|
|
||||||
"diff",
|
|
||||||
colored = false,
|
|
||||||
symbols = { added = " ", modified = " ", removed = " " }, -- changes diff symbols
|
|
||||||
cond = hide_in_width
|
|
||||||
}
|
|
||||||
|
|
||||||
local mode = {
|
|
||||||
"mode",
|
|
||||||
fmt = function(str)
|
|
||||||
return "-- " .. str .. " --"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
local filetype = {
|
|
||||||
"filetype",
|
|
||||||
icons_enabled = false,
|
|
||||||
icon = nil,
|
|
||||||
}
|
|
||||||
|
|
||||||
local branch = {
|
|
||||||
"branch",
|
|
||||||
icons_enabled = true,
|
|
||||||
icon = "",
|
|
||||||
}
|
|
||||||
|
|
||||||
local location = {
|
|
||||||
"location",
|
|
||||||
padding = 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
-- cool function for progress
|
|
||||||
local progress = function()
|
|
||||||
local current_line = vim.fn.line(".")
|
|
||||||
local total_lines = vim.fn.line("$")
|
|
||||||
local chars = { "__", "▁▁", "▂▂", "▃▃", "▄▄", "▅▅", "▆▆", "▇▇", "██" }
|
|
||||||
local line_ratio = current_line / total_lines
|
|
||||||
local index = math.ceil(line_ratio * #chars)
|
|
||||||
return chars[index]
|
|
||||||
end
|
|
||||||
|
|
||||||
local spaces = function()
|
|
||||||
return "spaces: " .. vim.api.nvim_buf_get_option(0, "shiftwidth")
|
|
||||||
end
|
|
||||||
|
|
||||||
lualine.setup({
|
|
||||||
options = {
|
|
||||||
icons_enabled = true,
|
|
||||||
theme = "auto",
|
|
||||||
component_separators = { left = "", right = "" },
|
|
||||||
section_separators = { left = "", right = "" },
|
|
||||||
disabled_filetypes = { "alpha", "dashboard", "NvimTree", "Outline" },
|
|
||||||
always_divide_middle = true,
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = { branch, diagnostics },
|
|
||||||
lualine_b = { mode },
|
|
||||||
lualine_c = {},
|
|
||||||
-- lualine_x = { "encoding", "fileformat", "filetype" },
|
|
||||||
lualine_x = { diff, spaces, "encoding", filetype },
|
|
||||||
lualine_y = { location },
|
|
||||||
lualine_z = { progress },
|
|
||||||
},
|
|
||||||
inactive_sections = {
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_c = { "filename" },
|
|
||||||
lualine_x = { "location" },
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {},
|
|
||||||
},
|
|
||||||
tabline = {},
|
|
||||||
extensions = {},
|
|
||||||
})
|
|
@ -1,68 +0,0 @@
|
|||||||
local status_ok, nvim_tree = pcall(require, "nvim-tree")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config")
|
|
||||||
if not config_status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local tree_cb = nvim_tree_config.nvim_tree_callback
|
|
||||||
|
|
||||||
nvim_tree.setup {
|
|
||||||
update_focused_file = {
|
|
||||||
enable = true,
|
|
||||||
update_cwd = true,
|
|
||||||
},
|
|
||||||
renderer = {
|
|
||||||
root_folder_modifier = ":t",
|
|
||||||
icons = {
|
|
||||||
glyphs = {
|
|
||||||
default = "",
|
|
||||||
symlink = "",
|
|
||||||
folder = {
|
|
||||||
arrow_open = "",
|
|
||||||
arrow_closed = "",
|
|
||||||
default = "",
|
|
||||||
open = "",
|
|
||||||
empty = "",
|
|
||||||
empty_open = "",
|
|
||||||
symlink = "",
|
|
||||||
symlink_open = "",
|
|
||||||
},
|
|
||||||
git = {
|
|
||||||
unstaged = "",
|
|
||||||
staged = "S",
|
|
||||||
unmerged = "",
|
|
||||||
renamed = "➜",
|
|
||||||
untracked = "U",
|
|
||||||
deleted = "",
|
|
||||||
ignored = "◌",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
diagnostics = {
|
|
||||||
enable = true,
|
|
||||||
show_on_dirs = true,
|
|
||||||
icons = {
|
|
||||||
hint = "",
|
|
||||||
info = "",
|
|
||||||
warning = "",
|
|
||||||
error = "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
view = {
|
|
||||||
width = 30,
|
|
||||||
height = 30,
|
|
||||||
side = "left",
|
|
||||||
mappings = {
|
|
||||||
list = {
|
|
||||||
{ key = { "l", "<CR>", "o" }, cb = tree_cb "edit" },
|
|
||||||
{ key = "h", cb = tree_cb "close_node" },
|
|
||||||
{ key = "v", cb = tree_cb "vsplit" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
local status_ok, project = pcall(require, "project_nvim")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
project.setup({
|
|
||||||
---@usage set to false to disable project.nvim.
|
|
||||||
--- This is on by default since it's currently the expected behavior.
|
|
||||||
active = true,
|
|
||||||
|
|
||||||
on_config_done = nil,
|
|
||||||
|
|
||||||
---@usage set to true to disable setting the current-woriking directory
|
|
||||||
--- Manual mode doesn't automatically change your root directory, so you have
|
|
||||||
--- the option to manually do so using `:ProjectRoot` command.
|
|
||||||
manual_mode = false,
|
|
||||||
|
|
||||||
---@usage Methods of detecting the root directory
|
|
||||||
--- Allowed values: **"lsp"** uses the native neovim lsp
|
|
||||||
--- **"pattern"** uses vim-rooter like glob pattern matching. Here
|
|
||||||
--- order matters: if one is not detected, the other is used as fallback. You
|
|
||||||
--- can also delete or rearangne the detection methods.
|
|
||||||
-- detection_methods = { "lsp", "pattern" }, -- NOTE: lsp detection will get annoying with multiple langs in one project
|
|
||||||
detection_methods = { "pattern" },
|
|
||||||
|
|
||||||
---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods
|
|
||||||
patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" },
|
|
||||||
|
|
||||||
---@ Show hidden files in telescope when searching for files in a project
|
|
||||||
show_hidden = false,
|
|
||||||
|
|
||||||
---@usage When set to false, you will get a message when project.nvim changes your directory.
|
|
||||||
-- When set to false, you will get a message when project.nvim changes your directory.
|
|
||||||
silent_chdir = true,
|
|
||||||
|
|
||||||
---@usage list of lsp client names to ignore when using **lsp** detection. eg: { "efm", ... }
|
|
||||||
ignore_lsp = {},
|
|
||||||
|
|
||||||
---@type string
|
|
||||||
---@usage path to store the project history for use in telescope
|
|
||||||
datapath = vim.fn.stdpath("data"),
|
|
||||||
})
|
|
||||||
|
|
||||||
local tele_status_ok, telescope = pcall(require, "telescope")
|
|
||||||
if not tele_status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
telescope.load_extension('projects')
|
|
@ -1,96 +0,0 @@
|
|||||||
local status_ok, telescope = pcall(require, "telescope")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local actions = require "telescope.actions"
|
|
||||||
|
|
||||||
telescope.setup {
|
|
||||||
defaults = {
|
|
||||||
|
|
||||||
prompt_prefix = " ",
|
|
||||||
selection_caret = " ",
|
|
||||||
path_display = { "smart" },
|
|
||||||
|
|
||||||
mappings = {
|
|
||||||
i = {
|
|
||||||
["<C-n>"] = actions.cycle_history_next,
|
|
||||||
["<C-p>"] = actions.cycle_history_prev,
|
|
||||||
|
|
||||||
["<C-j>"] = actions.move_selection_next,
|
|
||||||
["<C-k>"] = actions.move_selection_previous,
|
|
||||||
|
|
||||||
["<C-c>"] = actions.close,
|
|
||||||
|
|
||||||
["<Down>"] = actions.move_selection_next,
|
|
||||||
["<Up>"] = actions.move_selection_previous,
|
|
||||||
|
|
||||||
["<CR>"] = actions.select_default,
|
|
||||||
["<C-x>"] = actions.select_horizontal,
|
|
||||||
["<C-v>"] = actions.select_vertical,
|
|
||||||
["<C-t>"] = actions.select_tab,
|
|
||||||
|
|
||||||
["<C-u>"] = actions.preview_scrolling_up,
|
|
||||||
["<C-d>"] = actions.preview_scrolling_down,
|
|
||||||
|
|
||||||
["<PageUp>"] = actions.results_scrolling_up,
|
|
||||||
["<PageDown>"] = actions.results_scrolling_down,
|
|
||||||
|
|
||||||
["<Tab>"] = actions.toggle_selection + actions.move_selection_worse,
|
|
||||||
["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better,
|
|
||||||
["<C-q>"] = actions.send_to_qflist + actions.open_qflist,
|
|
||||||
["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist,
|
|
||||||
["<C-l>"] = actions.complete_tag,
|
|
||||||
["<C-_>"] = actions.which_key, -- keys from pressing <C-/>
|
|
||||||
},
|
|
||||||
|
|
||||||
n = {
|
|
||||||
["<esc>"] = actions.close,
|
|
||||||
["<CR>"] = actions.select_default,
|
|
||||||
["<C-x>"] = actions.select_horizontal,
|
|
||||||
["<C-v>"] = actions.select_vertical,
|
|
||||||
["<C-t>"] = actions.select_tab,
|
|
||||||
|
|
||||||
["<Tab>"] = actions.toggle_selection + actions.move_selection_worse,
|
|
||||||
["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better,
|
|
||||||
["<C-q>"] = actions.send_to_qflist + actions.open_qflist,
|
|
||||||
["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist,
|
|
||||||
|
|
||||||
["j"] = actions.move_selection_next,
|
|
||||||
["k"] = actions.move_selection_previous,
|
|
||||||
["H"] = actions.move_to_top,
|
|
||||||
["M"] = actions.move_to_middle,
|
|
||||||
["L"] = actions.move_to_bottom,
|
|
||||||
|
|
||||||
["<Down>"] = actions.move_selection_next,
|
|
||||||
["<Up>"] = actions.move_selection_previous,
|
|
||||||
["gg"] = actions.move_to_top,
|
|
||||||
["G"] = actions.move_to_bottom,
|
|
||||||
|
|
||||||
["<C-u>"] = actions.preview_scrolling_up,
|
|
||||||
["<C-d>"] = actions.preview_scrolling_down,
|
|
||||||
|
|
||||||
["<PageUp>"] = actions.results_scrolling_up,
|
|
||||||
["<PageDown>"] = actions.results_scrolling_down,
|
|
||||||
|
|
||||||
["?"] = actions.which_key,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
pickers = {
|
|
||||||
-- Default configuration for builtin pickers goes here:
|
|
||||||
-- picker_name = {
|
|
||||||
-- picker_config_key = value,
|
|
||||||
-- ...
|
|
||||||
-- }
|
|
||||||
-- Now the picker_config_key will be applied every time you call this
|
|
||||||
-- builtin picker
|
|
||||||
},
|
|
||||||
extensions = {
|
|
||||||
-- Your extension configuration goes here:
|
|
||||||
-- extension_name = {
|
|
||||||
-- extension_config_key = value,
|
|
||||||
-- }
|
|
||||||
-- please take a look at the readme of the extension you want to configure
|
|
||||||
},
|
|
||||||
}
|
|
@ -1,70 +0,0 @@
|
|||||||
local status_ok, toggleterm = pcall(require, "toggleterm")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
toggleterm.setup({
|
|
||||||
size = 20,
|
|
||||||
open_mapping = [[<c-\>]],
|
|
||||||
hide_numbers = true,
|
|
||||||
shade_filetypes = {},
|
|
||||||
shade_terminals = true,
|
|
||||||
shading_factor = 2,
|
|
||||||
start_in_insert = true,
|
|
||||||
insert_mappings = true,
|
|
||||||
persist_size = true,
|
|
||||||
direction = "float",
|
|
||||||
close_on_exit = true,
|
|
||||||
shell = vim.o.shell,
|
|
||||||
float_opts = {
|
|
||||||
border = "curved",
|
|
||||||
winblend = 0,
|
|
||||||
highlights = {
|
|
||||||
border = "Normal",
|
|
||||||
background = "Normal",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
function _G.set_terminal_keymaps()
|
|
||||||
local opts = {noremap = true}
|
|
||||||
vim.api.nvim_buf_set_keymap(0, 't', '<esc>', [[<C-\><C-n>]], opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(0, 't', 'jk', [[<C-\><C-n>]], opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(0, 't', '<C-h>', [[<C-\><C-n><C-W>h]], opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(0, 't', '<C-j>', [[<C-\><C-n><C-W>j]], opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(0, 't', '<C-k>', [[<C-\><C-n><C-W>k]], opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(0, 't', '<C-l>', [[<C-\><C-n><C-W>l]], opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
|
|
||||||
|
|
||||||
local Terminal = require("toggleterm.terminal").Terminal
|
|
||||||
local lazygit = Terminal:new({ cmd = "lazygit", hidden = true })
|
|
||||||
|
|
||||||
function _LAZYGIT_TOGGLE()
|
|
||||||
lazygit:toggle()
|
|
||||||
end
|
|
||||||
|
|
||||||
local node = Terminal:new({ cmd = "node", hidden = true })
|
|
||||||
|
|
||||||
function _NODE_TOGGLE()
|
|
||||||
node:toggle()
|
|
||||||
end
|
|
||||||
|
|
||||||
local ncdu = Terminal:new({ cmd = "ncdu", hidden = true })
|
|
||||||
|
|
||||||
function _NCDU_TOGGLE()
|
|
||||||
ncdu:toggle()
|
|
||||||
end
|
|
||||||
|
|
||||||
local htop = Terminal:new({ cmd = "htop", hidden = true })
|
|
||||||
|
|
||||||
function _HTOP_TOGGLE()
|
|
||||||
htop:toggle()
|
|
||||||
end
|
|
||||||
|
|
||||||
local python = Terminal:new({ cmd = "python", hidden = true })
|
|
||||||
|
|
||||||
function _PYTHON_TOGGLE()
|
|
||||||
python:toggle()
|
|
||||||
end
|
|
@ -1,17 +0,0 @@
|
|||||||
local status_ok, configs = pcall(require, "nvim-treesitter.configs")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
configs.setup({
|
|
||||||
ensure_installed = "all", -- one of "all" or a list of languages
|
|
||||||
ignore_install = { "" }, -- List of parsers to ignore installing
|
|
||||||
highlight = {
|
|
||||||
enable = true, -- false will disable the whole extension
|
|
||||||
disable = { "css" }, -- list of language that will be disabled
|
|
||||||
},
|
|
||||||
autopairs = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
indent = { enable = true, disable = { "python", "css" } },
|
|
||||||
})
|
|
@ -1,187 +0,0 @@
|
|||||||
local status_ok, which_key = pcall(require, "which-key")
|
|
||||||
if not status_ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local setup = {
|
|
||||||
plugins = {
|
|
||||||
marks = true, -- shows a list of your marks on ' and `
|
|
||||||
registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
|
|
||||||
spelling = {
|
|
||||||
enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions
|
|
||||||
suggestions = 20, -- how many suggestions should be shown in the list?
|
|
||||||
},
|
|
||||||
-- the presets plugin, adds help for a bunch of default keybindings in Neovim
|
|
||||||
-- No actual key bindings are created
|
|
||||||
presets = {
|
|
||||||
operators = false, -- adds help for operators like d, y, ... and registers them for motion / text object completion
|
|
||||||
motions = true, -- adds help for motions
|
|
||||||
text_objects = true, -- help for text objects triggered after entering an operator
|
|
||||||
windows = true, -- default bindings on <c-w>
|
|
||||||
nav = true, -- misc bindings to work with windows
|
|
||||||
z = true, -- bindings for folds, spelling and others prefixed with z
|
|
||||||
g = true, -- bindings for prefixed with g
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- add operators that will trigger motion and text object completion
|
|
||||||
-- to enable all native operators, set the preset / operators plugin above
|
|
||||||
-- operators = { gc = "Comments" },
|
|
||||||
key_labels = {
|
|
||||||
-- override the label used to display some keys. It doesn't effect WK in any other way.
|
|
||||||
-- For example:
|
|
||||||
-- ["<space>"] = "SPC",
|
|
||||||
-- ["<cr>"] = "RET",
|
|
||||||
-- ["<tab>"] = "TAB",
|
|
||||||
},
|
|
||||||
icons = {
|
|
||||||
breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
|
|
||||||
separator = "➜", -- symbol used between a key and it's label
|
|
||||||
group = "+", -- symbol prepended to a group
|
|
||||||
},
|
|
||||||
popup_mappings = {
|
|
||||||
scroll_down = "<c-d>", -- binding to scroll down inside the popup
|
|
||||||
scroll_up = "<c-u>", -- binding to scroll up inside the popup
|
|
||||||
},
|
|
||||||
window = {
|
|
||||||
border = "rounded", -- none, single, double, shadow
|
|
||||||
position = "bottom", -- bottom, top
|
|
||||||
margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
|
|
||||||
padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left]
|
|
||||||
winblend = 0,
|
|
||||||
},
|
|
||||||
layout = {
|
|
||||||
height = { min = 4, max = 25 }, -- min and max height of the columns
|
|
||||||
width = { min = 20, max = 50 }, -- min and max width of the columns
|
|
||||||
spacing = 3, -- spacing between columns
|
|
||||||
align = "left", -- align columns left, center or right
|
|
||||||
},
|
|
||||||
ignore_missing = true, -- enable this to hide mappings for which you didn't specify a label
|
|
||||||
hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate
|
|
||||||
show_help = true, -- show help message on the command line when the popup is visible
|
|
||||||
triggers = "auto", -- automatically setup triggers
|
|
||||||
-- triggers = {"<leader>"} -- or specify a list manually
|
|
||||||
triggers_blacklist = {
|
|
||||||
-- list of mode / prefixes that should never be hooked by WhichKey
|
|
||||||
-- this is mostly relevant for key maps that start with a native binding
|
|
||||||
-- most people should not need to change this
|
|
||||||
i = { "j", "k" },
|
|
||||||
v = { "j", "k" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local opts = {
|
|
||||||
mode = "n", -- NORMAL mode
|
|
||||||
prefix = "<leader>",
|
|
||||||
buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
|
|
||||||
silent = true, -- use `silent` when creating keymaps
|
|
||||||
noremap = true, -- use `noremap` when creating keymaps
|
|
||||||
nowait = true, -- use `nowait` when creating keymaps
|
|
||||||
}
|
|
||||||
|
|
||||||
local mappings = {
|
|
||||||
["a"] = { "<cmd>Alpha<cr>", "Alpha" },
|
|
||||||
["b"] = {
|
|
||||||
"<cmd>lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer = false})<cr>",
|
|
||||||
"Buffers",
|
|
||||||
},
|
|
||||||
["e"] = { "<cmd>NvimTreeToggle<cr>", "Explorer" },
|
|
||||||
["w"] = { "<cmd>w!<CR>", "Save" },
|
|
||||||
["q"] = { "<cmd>q!<CR>", "Quit" },
|
|
||||||
["c"] = { "<cmd>Bdelete!<CR>", "Close Buffer" },
|
|
||||||
["h"] = { "<cmd>nohlsearch<CR>", "No Highlight" },
|
|
||||||
["f"] = {
|
|
||||||
"<cmd>lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer = false})<cr>",
|
|
||||||
"Find files",
|
|
||||||
},
|
|
||||||
["F"] = { "<cmd>Telescope live_grep theme=ivy<cr>", "Find Text" },
|
|
||||||
["P"] = { "<cmd>lua require('telescope').extensions.projects.projects()<cr>", "Projects" },
|
|
||||||
|
|
||||||
p = {
|
|
||||||
name = "Packer",
|
|
||||||
c = { "<cmd>PackerCompile<cr>", "Compile" },
|
|
||||||
i = { "<cmd>PackerInstall<cr>", "Install" },
|
|
||||||
s = { "<cmd>PackerSync<cr>", "Sync" },
|
|
||||||
S = { "<cmd>PackerStatus<cr>", "Status" },
|
|
||||||
u = { "<cmd>PackerUpdate<cr>", "Update" },
|
|
||||||
},
|
|
||||||
|
|
||||||
g = {
|
|
||||||
name = "Git",
|
|
||||||
g = { "<cmd>lua _LAZYGIT_TOGGLE()<CR>", "Lazygit" },
|
|
||||||
j = { "<cmd>lua require 'gitsigns'.next_hunk()<cr>", "Next Hunk" },
|
|
||||||
k = { "<cmd>lua require 'gitsigns'.prev_hunk()<cr>", "Prev Hunk" },
|
|
||||||
l = { "<cmd>lua require 'gitsigns'.blame_line()<cr>", "Blame" },
|
|
||||||
p = { "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", "Preview Hunk" },
|
|
||||||
r = { "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", "Reset Hunk" },
|
|
||||||
R = { "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", "Reset Buffer" },
|
|
||||||
s = { "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", "Stage Hunk" },
|
|
||||||
u = {
|
|
||||||
"<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>",
|
|
||||||
"Undo Stage Hunk",
|
|
||||||
},
|
|
||||||
o = { "<cmd>Telescope git_status<cr>", "Open changed file" },
|
|
||||||
b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
|
|
||||||
c = { "<cmd>Telescope git_commits<cr>", "Checkout commit" },
|
|
||||||
d = {
|
|
||||||
"<cmd>Gitsigns diffthis HEAD<cr>",
|
|
||||||
"Diff",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
l = {
|
|
||||||
name = "LSP",
|
|
||||||
a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Code Action" },
|
|
||||||
d = {
|
|
||||||
"<cmd>Telescope lsp_document_diagnostics<cr>",
|
|
||||||
"Document Diagnostics",
|
|
||||||
},
|
|
||||||
w = {
|
|
||||||
"<cmd>Telescope lsp_workspace_diagnostics<cr>",
|
|
||||||
"Workspace Diagnostics",
|
|
||||||
},
|
|
||||||
f = { "<cmd>lua vim.lsp.buf.format{async=true}<cr>", "Format" },
|
|
||||||
i = { "<cmd>LspInfo<cr>", "Info" },
|
|
||||||
I = { "<cmd>LspInstallInfo<cr>", "Installer Info" },
|
|
||||||
j = {
|
|
||||||
"<cmd>lua vim.lsp.diagnostic.goto_next()<CR>",
|
|
||||||
"Next Diagnostic",
|
|
||||||
},
|
|
||||||
k = {
|
|
||||||
"<cmd>lua vim.lsp.diagnostic.goto_prev()<cr>",
|
|
||||||
"Prev Diagnostic",
|
|
||||||
},
|
|
||||||
l = { "<cmd>lua vim.lsp.codelens.run()<cr>", "CodeLens Action" },
|
|
||||||
q = { "<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>", "Quickfix" },
|
|
||||||
r = { "<cmd>lua vim.lsp.buf.rename()<cr>", "Rename" },
|
|
||||||
s = { "<cmd>Telescope lsp_document_symbols<cr>", "Document Symbols" },
|
|
||||||
S = {
|
|
||||||
"<cmd>Telescope lsp_dynamic_workspace_symbols<cr>",
|
|
||||||
"Workspace Symbols",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
s = {
|
|
||||||
name = "Search",
|
|
||||||
b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
|
|
||||||
c = { "<cmd>Telescope colorscheme<cr>", "Colorscheme" },
|
|
||||||
h = { "<cmd>Telescope help_tags<cr>", "Find Help" },
|
|
||||||
M = { "<cmd>Telescope man_pages<cr>", "Man Pages" },
|
|
||||||
r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File" },
|
|
||||||
R = { "<cmd>Telescope registers<cr>", "Registers" },
|
|
||||||
k = { "<cmd>Telescope keymaps<cr>", "Keymaps" },
|
|
||||||
C = { "<cmd>Telescope commands<cr>", "Commands" },
|
|
||||||
},
|
|
||||||
|
|
||||||
t = {
|
|
||||||
name = "Terminal",
|
|
||||||
n = { "<cmd>lua _NODE_TOGGLE()<cr>", "Node" },
|
|
||||||
u = { "<cmd>lua _NCDU_TOGGLE()<cr>", "NCDU" },
|
|
||||||
t = { "<cmd>lua _HTOP_TOGGLE()<cr>", "Htop" },
|
|
||||||
p = { "<cmd>lua _PYTHON_TOGGLE()<cr>", "Python" },
|
|
||||||
f = { "<cmd>ToggleTerm direction=float<cr>", "Float" },
|
|
||||||
h = { "<cmd>ToggleTerm size=10 direction=horizontal<cr>", "Horizontal" },
|
|
||||||
v = { "<cmd>ToggleTerm size=80 direction=vertical<cr>", "Vertical" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
which_key.setup(setup)
|
|
||||||
which_key.register(mappings, opts)
|
|
Loading…
Reference in new issue