From 16d566da938b049dda8998beec43e3cd85c4ed47 Mon Sep 17 00:00:00 2001 From: cafebabe <77344710+yuzu-eva@users.noreply.github.com> Date: Sat, 21 May 2022 23:33:01 +0200 Subject: Add nvim configuration --- .config/nvim/lua/user/plugins/cmp.lua | 62 +++++++++++++++++++++++ .config/nvim/lua/user/plugins/dracula.lua | 12 +++++ .config/nvim/lua/user/plugins/lspconfig.lua | 76 ++++++++++++++++++++++++++++ .config/nvim/lua/user/plugins/lualine.lua | 64 +++++++++++++++++++++++ .config/nvim/lua/user/plugins/nvim-tree.lua | 13 +++++ .config/nvim/lua/user/plugins/telescope.lua | 25 +++++++++ .config/nvim/lua/user/plugins/treesitter.lua | 30 +++++++++++ 7 files changed, 282 insertions(+) create mode 100644 .config/nvim/lua/user/plugins/cmp.lua create mode 100644 .config/nvim/lua/user/plugins/dracula.lua create mode 100644 .config/nvim/lua/user/plugins/lspconfig.lua create mode 100644 .config/nvim/lua/user/plugins/lualine.lua create mode 100644 .config/nvim/lua/user/plugins/nvim-tree.lua create mode 100644 .config/nvim/lua/user/plugins/telescope.lua create mode 100644 .config/nvim/lua/user/plugins/treesitter.lua (limited to '.config/nvim/lua/user/plugins') diff --git a/.config/nvim/lua/user/plugins/cmp.lua b/.config/nvim/lua/user/plugins/cmp.lua new file mode 100644 index 0000000..fdd7b56 --- /dev/null +++ b/.config/nvim/lua/user/plugins/cmp.lua @@ -0,0 +1,62 @@ +local has_words_before = function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil +end + +local cmp = require 'cmp' +local lspkind = require 'lspkind' + +-- Set completeopt to have a better completion experience +vim.o.completeopt = 'menuone,longest,preview' + +cmp.setup { + experimental = { + ghost_text = true, + }, + formatting = { + format = lspkind.cmp_format { + mode = 'symbol', + menu = { + nvim_lsp = '[LSP]', + nvim_lua = '[Lua]', + buffer = '[BUF]', + }, + }, + }, + mapping = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.replace, + select = false, + }, + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + else + fallback() + end + + end, { 'i', 's' }), + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'nvim_lsp_signature_help' }, + { name = 'nvim_lua' }, + { name = 'path' }, + { name = 'buffer' }, + }, +} diff --git a/.config/nvim/lua/user/plugins/dracula.lua b/.config/nvim/lua/user/plugins/dracula.lua new file mode 100644 index 0000000..a2b87fe --- /dev/null +++ b/.config/nvim/lua/user/plugins/dracula.lua @@ -0,0 +1,12 @@ +vim.cmd([[ + augroup DraculaOverrides + autocmd! + autocmd ColorScheme dracula highlight! link Pmenu DraculaBg + autocmd ColorScheme dracula highlight link NormalFloat DraculaBgLight + autocmd ColorScheme dracula highlight FloatBorder guifg=#343746 guibg=#343746 + autocmd ColorScheme dracula highlight DraculaBoundary guibg=none + autocmd ColorScheme dracula highlight DraculaDiffDelete ctermbg=none guibg=none + autocmd ColorScheme dracula highlight DraculaComment cterm=italic gui=italic + augroup end + colorscheme dracula +]]) diff --git a/.config/nvim/lua/user/plugins/lspconfig.lua b/.config/nvim/lua/user/plugins/lspconfig.lua new file mode 100644 index 0000000..248ad20 --- /dev/null +++ b/.config/nvim/lua/user/plugins/lspconfig.lua @@ -0,0 +1,76 @@ +local buf_option = vim.api.nvim_buf_set_option +local buf_keymap = require 'lib.utils'.buf_keymap + +vim.diagnostic.config { + virtual_text = false, + severity_sort = true, + float = { + source = true, + focus = false, + format = function(diagnostic) + if diagnostic.user_data ~= nil and diagnostic.user_data.lsp.code ~= nil then + return string.format("%s: %s", diagnostic.user_data.lsp.code, diagnostic.message) + end + return diagnostic.message + end, + } +} + +local on_attach = function(_, bufnr) + buf_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + + buf_keymap(bufnr, 'n', 'gD', 'lua vim.lsp.buf.declaration()') + buf_keymap(bufnr, 'n', 'gd', 'lua vim.lsp.buf.definition()') + buf_keymap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()') + buf_keymap(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()') + buf_keymap(bufnr, 'n', '', 'lua vim.lsp.buf.signature_help()') + buf_keymap(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()') + buf_keymap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()') + buf_keymap(bufnr, 'n', 'gr', ':Telescope lsp_references') + + buf_keymap(bufnr, 'n', 'ca', ':CodeActionMenu') + buf_keymap(bufnr, 'v', 'ca', ':CodeActionMenu') + + buf_keymap(bufnr, 'n', 'd', 'lua vim.diagnostic.open_float()') + buf_keymap(bufnr, 'n', '[d', 'lua vim.diagnostic.goto_prev()') + buf_keymap(bufnr, 'n', ']d', 'lua vim.diagnostic.goto_next()') + buf_keymap(bufnr, 'n', 'F', 'lua vim.lsp.buf.format { async = true }') + + -- if _.server_capabilities.document_formatting then + -- vim.api.nvim_command [[augroup Format]] + -- vim.api.nvim_command [[autocmd! * ]] + -- vim.api.nvim_command [[autocmd BufWritePre lua vim.lsp.buf.formatting_seq_sync()]] + -- vim.api.nvim_command [[augroup END]] + -- end + +end + + + +require'lspconfig'.eslint.setup{ + on_attach = on_attach, + flags = { + debounce_text_changes = 150, + }, + handlers = { + ['window/showMessageRequest'] = function(_, result, _) return result end, + }, +} + +require'lspconfig'.tsserver.setup{ + on_attach = on_attach, + flags = { + debounce_text_changes = 150, + } +} +-- suppress error messages from lang servers +vim.notify = function(msg, log_level, _) + if msg:match 'exit code' then + return + end + if log_level == vim.log.levels.ERROR then + vim.api.nvim_err_writeln(msg) + else + vim.api.nvim_echo({ { msg } }, true, {}) + end +end diff --git a/.config/nvim/lua/user/plugins/lualine.lua b/.config/nvim/lua/user/plugins/lualine.lua new file mode 100644 index 0000000..6ac5cee --- /dev/null +++ b/.config/nvim/lua/user/plugins/lualine.lua @@ -0,0 +1,64 @@ +-- local tabLineHl = vim.api.nvim_get_hl_by_name('TabLine', true) +-- local bg = '#' .. bit.tohex(tabLineHl.background, 6) +-- local fg = '#' .. bit.tohex(tabLineHl.foreground, 6) +local fg = '#F8F8F2' -- DraculaFg +local bg = '#21222C' -- DraculaBgDark +local separator = '#424450' -- DraculaSubtle +-- local fg = '#' .. bit.tohex(vim.api.nvim_get_hl_by_name('DraculaFg', true).foreground, 6) +-- local bg = '#' .. bit.tohex(vim.api.nvim_get_hl_by_name('DraculaBgDark', true).background, 6) +-- local separator = '#' .. bit.tohex(vim.api.nvim_get_hl_by_name('DraculaSubtle', true).foreground, 6) + +require('lualine').setup { + options = { + component_separators = '', + section_separators = '▕', + theme = { + normal = { + a = { fg = fg, bg = bg }, + b = { fg = fg, bg = bg }, + c = { fg = fg, bg = bg }, + x = { fg = fg, bg = bg }, + y = { fg = fg, bg = bg }, + z = { fg = fg, bg = bg }, + }, + inactive = { c = { fg = fg, bg = bg } }, + }, + }, + sections = { + lualine_a = { + 'mode', + { '"▏"', color = { fg = separator } }, + }, + lualine_b = { + 'branch', + 'diff', + { '"▕"', color = { fg = separator } }, + '"🖧  " .. tostring(#vim.tbl_keys(vim.lsp.buf_get_clients()))', + { 'diagnostics', sources = { 'nvim_diagnostic' } }, + { '"▏"', color = { fg = separator } }, + }, + lualine_c = { 'filename' }, + lualine_x = { + 'filetype', + 'encoding', + 'fileformat', + }, + lualine_y = { + { '"▕"', color = { fg = separator } }, + '(vim.bo.expandtab and "␠ " or "⇥ ") .. " " .. vim.bo.shiftwidth', + { '"▏"', color = { fg = separator } }, + }, + lualine_z = { + 'location', + 'progress', + }, + }, + -- tabline = { + -- lualine_a = { + -- {'buffers'} + -- }, + -- lualine_z = { + -- {'tabs'} + -- } + -- } +} diff --git a/.config/nvim/lua/user/plugins/nvim-tree.lua b/.config/nvim/lua/user/plugins/nvim-tree.lua new file mode 100644 index 0000000..a4173e7 --- /dev/null +++ b/.config/nvim/lua/user/plugins/nvim-tree.lua @@ -0,0 +1,13 @@ +-- vim.g.nvim_tree_git_hl = 1 +vim.g.nvim_tree_highlight_opened_files = 1 +vim.g.nvim_tree_group_empty = 1 + +require('nvim-tree').setup { + git = { + ignore = false, + }, +} + +vim.cmd [[highlight NvimTreeIndentMarker guifg=#30323E]] + +vim.api.nvim_set_keymap('n', 'n', ':NvimTreeFindFileToggle', { silent = true, noremap = true }) diff --git a/.config/nvim/lua/user/plugins/telescope.lua b/.config/nvim/lua/user/plugins/telescope.lua new file mode 100644 index 0000000..b1d1136 --- /dev/null +++ b/.config/nvim/lua/user/plugins/telescope.lua @@ -0,0 +1,25 @@ +local telescope = require 'telescope' +local actions = require 'telescope.actions' +local keymap = require 'lib.utils'.keymap + +keymap('n', ';f', [[lua require('telescope.builtin').find_files()]]) +keymap('n', ';r', [[lua require('telescope.builtin').live_grep()]]) +keymap('n', ';\\', [[lua require('telescope.builtin').buffers()]]) + +require('telescope').setup { + defaults = { + sorting_strategy = 'ascending', + mappings = { + i = { + [""] = actions.close, + [''] = actions.cycle_history_next, + [''] = actions.cycle_history_prev, + }, + }, + file_ignore_patterns = { + '.git/', + 'node_modules/', + 'android/', + }, + } +} diff --git a/.config/nvim/lua/user/plugins/treesitter.lua b/.config/nvim/lua/user/plugins/treesitter.lua new file mode 100644 index 0000000..44cf008 --- /dev/null +++ b/.config/nvim/lua/user/plugins/treesitter.lua @@ -0,0 +1,30 @@ +require('nvim-treesitter.configs').setup { + indent = { + enable = true, + }, + highlight = { + enable = true, + disable = { 'NvimTree' }, + additional_vim_regex_highlighting = true, + }, + textobjects = { + select = { + enable = true, + lookahead = true, + keymaps = { + ['ia'] = '@parameter.inner', + -- ['aa'] = { + -- php = "" '@parameter.outer', + + -- python = "(function_definition) @function", + -- cpp = "(function_definition) @function", + -- c = "(function_definition) @function", + -- java = "(method_declaration) @function", + -- }, + }, + }, + }, + context_commentstring = { + enable = true, + }, +} -- cgit v1.2.3