From 7a56c0a1d3d69ccf2d0f88b1271d6486db314784 Mon Sep 17 00:00:00 2001 From: TheK4n Date: Thu, 19 Oct 2023 11:04:45 +0300 Subject: [PATCH] ref(nvim): centrilized plugin configuration --- .../.config/nvim/after/plugin/auto-save.lua | 40 ----- home/user/.config/nvim/after/plugin/cmp.lua | 70 -------- .../.config/nvim/after/plugin/colorscheme.lua | 9 - .../.config/nvim/after/plugin/comment.lua | 4 - .../.config/nvim/after/plugin/gitsigns.lua | 5 - .../.config/nvim/after/plugin/lspconfig.lua | 56 ------ .../.config/nvim/after/plugin/lualine.lua | 5 - .../.config/nvim/after/plugin/luasnip.lua | 26 --- .../nvim/after/plugin/mason-lspconfig.lua | 6 - home/user/.config/nvim/after/plugin/mason.lua | 6 - .../nvim/after/plugin/nvim-autopairs.lua | 5 - .../nvim/after/plugin/nvim-treesitter.lua | 13 -- .../nvim/after/plugin/nvim-ts-autotag.lua | 6 - .../.config/nvim/after/plugin/telescope.lua | 62 ------- .../.config/nvim/after/plugin/trouble.lua | 5 - .../nvim/lua/base/plugins/auto_save.lua | 35 ++++ .../nvim/lua/base/plugins/colorschemes.lua | 8 +- .../.config/nvim/lua/base/plugins/lualine.lua | 3 + .../.config/nvim/lua/base/plugins/mason.lua | 12 +- .../.config/nvim/lua/base/plugins/misc.lua | 47 ++++- .../nvim/lua/base/plugins/nvim_cmp.lua | 161 +++++++++++++++++- .../nvim/lua/base/plugins/telescope.lua | 64 ++++++- 22 files changed, 319 insertions(+), 329 deletions(-) delete mode 100644 home/user/.config/nvim/after/plugin/auto-save.lua delete mode 100644 home/user/.config/nvim/after/plugin/cmp.lua delete mode 100644 home/user/.config/nvim/after/plugin/colorscheme.lua delete mode 100644 home/user/.config/nvim/after/plugin/comment.lua delete mode 100644 home/user/.config/nvim/after/plugin/gitsigns.lua delete mode 100644 home/user/.config/nvim/after/plugin/lspconfig.lua delete mode 100644 home/user/.config/nvim/after/plugin/lualine.lua delete mode 100644 home/user/.config/nvim/after/plugin/luasnip.lua delete mode 100644 home/user/.config/nvim/after/plugin/mason-lspconfig.lua delete mode 100644 home/user/.config/nvim/after/plugin/mason.lua delete mode 100644 home/user/.config/nvim/after/plugin/nvim-autopairs.lua delete mode 100644 home/user/.config/nvim/after/plugin/nvim-treesitter.lua delete mode 100644 home/user/.config/nvim/after/plugin/nvim-ts-autotag.lua delete mode 100644 home/user/.config/nvim/after/plugin/telescope.lua delete mode 100644 home/user/.config/nvim/after/plugin/trouble.lua create mode 100644 home/user/.config/nvim/lua/base/plugins/auto_save.lua diff --git a/home/user/.config/nvim/after/plugin/auto-save.lua b/home/user/.config/nvim/after/plugin/auto-save.lua deleted file mode 100644 index 4c7c36f..0000000 --- a/home/user/.config/nvim/after/plugin/auto-save.lua +++ /dev/null @@ -1,40 +0,0 @@ - -local status, autosave = pcall(require, "auto-save") -if (not status) then return end - -autosave.setup( -{ - enabled = true, -- start auto-save when the plugin is loaded (i.e. when your package manager loads it) - execution_message = { - message = function() -- message to print on save - return ("AutoSave: saved at " .. vim.fn.strftime("%H:%M:%S")) - end, - dim = 0.18, -- dim the color of `message` - cleaning_interval = 1250, -- (milliseconds) automatically clean MsgArea after displaying `message`. See :h MsgArea - }, - trigger_events = {"InsertLeave", "TextChanged"}, -- vim events that trigger auto-save. See :h events - -- function that determines whether to save the current buffer or not - -- return true: if buffer is ok to be saved - -- return false: if it's not ok to be saved - condition = function(buf) - local fn = vim.fn - local utils = require("auto-save.utils.data") - - if - fn.getbufvar(buf, "&modifiable") == 1 and - utils.not_in(fn.getbufvar(buf, "&filetype"), {}) then - return true -- met condition(s), can save - end - return false -- can't save - end, - write_all_buffers = false, -- write all buffers when the current one meets `condition` - debounce_delay = 135, -- saves the file at most every `debounce_delay` milliseconds - callbacks = { -- functions to be executed at different intervals - enabling = nil, -- ran when enabling auto-save - disabling = nil, -- ran when disabling auto-save - before_asserting_save = nil, -- ran before checking `condition` - before_saving = nil, -- ran before doing the actual save - after_saving = nil -- ran after doing the actual save - } -} -) diff --git a/home/user/.config/nvim/after/plugin/cmp.lua b/home/user/.config/nvim/after/plugin/cmp.lua deleted file mode 100644 index c2a31ad..0000000 --- a/home/user/.config/nvim/after/plugin/cmp.lua +++ /dev/null @@ -1,70 +0,0 @@ -local status, cmp = pcall(require, "cmp") -if (not status) then return end - - -local function has_words_before() - 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 border_opts = { - border = "single", - winhighlight = "Normal:Normal,FloatBorder:FloatBorder,CursorLine:Visual,Search:None", -} - -cmp.setup { - completion = { - autocomplete = false - }, - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) - end, - }, - mapping = { - [''] = 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.select_prev_item(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.close(), - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = false, - }, - }, - window = { - completion = cmp.config.window.bordered(border_opts), - documentation = cmp.config.window.bordered(border_opts), - }, - sources = cmp.config.sources({ - { name = 'nvim_lsp', priority = 1000 }, - { name = 'luasnip', priority = 750 }, - { name = 'buffer', priority = 500 }, - { name = 'path', priority = 250 }, - }, { - }), -} - -cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'buffer' } - } -}) - -cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }) -}) diff --git a/home/user/.config/nvim/after/plugin/colorscheme.lua b/home/user/.config/nvim/after/plugin/colorscheme.lua deleted file mode 100644 index c9d80f8..0000000 --- a/home/user/.config/nvim/after/plugin/colorscheme.lua +++ /dev/null @@ -1,9 +0,0 @@ - -local status, colorscheme = pcall(require, "nightfox") -if (not status) then return end - -colorscheme.compile() - -colorscheme.setup() - -vim.cmd.colorscheme("nightfox") diff --git a/home/user/.config/nvim/after/plugin/comment.lua b/home/user/.config/nvim/after/plugin/comment.lua deleted file mode 100644 index 2c1ecbc..0000000 --- a/home/user/.config/nvim/after/plugin/comment.lua +++ /dev/null @@ -1,4 +0,0 @@ -local status, comment = pcall(require, 'Comment') -if (not status) then return end - -comment.setup() diff --git a/home/user/.config/nvim/after/plugin/gitsigns.lua b/home/user/.config/nvim/after/plugin/gitsigns.lua deleted file mode 100644 index 05777eb..0000000 --- a/home/user/.config/nvim/after/plugin/gitsigns.lua +++ /dev/null @@ -1,5 +0,0 @@ - -local status, gitsigns = pcall(require, "gitsigns") -if (not status) then return end - -gitsigns.setup() diff --git a/home/user/.config/nvim/after/plugin/lspconfig.lua b/home/user/.config/nvim/after/plugin/lspconfig.lua deleted file mode 100644 index 5fc8be1..0000000 --- a/home/user/.config/nvim/after/plugin/lspconfig.lua +++ /dev/null @@ -1,56 +0,0 @@ - -local status, nvim_lsp = pcall(require, "lspconfig") -if (not status) then return end - - --- Use an on_attach function to only map the following keys --- after the language server attaches to the current buffer -local on_attach = function(client, bufnr) - - local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end - - -- Enable completion triggered by - buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings. - local opts = { noremap=true, silent=true } - - -- See `:help vim.lsp.*` for documentation on any of the below functions - buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) - buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) - buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) - buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) - buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) - buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) - buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) - buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) - -end - --- Use a loop to conveniently call 'setup' on multiple servers and --- map buffer local keybindings when the language server attaches -local servers = { 'pyright', 'lua_ls', 'rust_analyzer' } -for _, lsp in ipairs(servers) do - nvim_lsp[lsp].setup { - on_attach = on_attach, - flags = { - debounce_text_changes = 150, - } - } -end - -local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) - -nvim_lsp.clangd.setup { - capabilities = capabilities, -} diff --git a/home/user/.config/nvim/after/plugin/lualine.lua b/home/user/.config/nvim/after/plugin/lualine.lua deleted file mode 100644 index f3ce4d6..0000000 --- a/home/user/.config/nvim/after/plugin/lualine.lua +++ /dev/null @@ -1,5 +0,0 @@ - -local status, lualine = pcall(require, "lualine") -if (not status) then return end - -lualine.setup() diff --git a/home/user/.config/nvim/after/plugin/luasnip.lua b/home/user/.config/nvim/after/plugin/luasnip.lua deleted file mode 100644 index 3d9f331..0000000 --- a/home/user/.config/nvim/after/plugin/luasnip.lua +++ /dev/null @@ -1,26 +0,0 @@ - -local status, ls = pcall(require, "luasnip") -if (not status) then return end - - -vim.g.snips_author = 'thek4n' -vim.g.snips_email = 'thek4n@yandex.com' -vim.g.snips_github = 'https://github.com/thek4n' - - -local function jump(val) - return function() - ls.jump(val) - end -end - - -local map = vim.keymap.set -map({'i', 's'}, '', jump(1)) -map({'i', 's'}, '', jump(-1)) - - -local status_loader, luasnip_loaders = pcall(require, "luasnip.loaders.from_snipmate") -if (not status_loader) then return end - -luasnip_loaders.lazy_load() diff --git a/home/user/.config/nvim/after/plugin/mason-lspconfig.lua b/home/user/.config/nvim/after/plugin/mason-lspconfig.lua deleted file mode 100644 index 43d7584..0000000 --- a/home/user/.config/nvim/after/plugin/mason-lspconfig.lua +++ /dev/null @@ -1,6 +0,0 @@ - -local status, mason_lspconfig = pcall(require, "mason-lspconfig") -if (not status) then return end - - -mason_lspconfig.setup() diff --git a/home/user/.config/nvim/after/plugin/mason.lua b/home/user/.config/nvim/after/plugin/mason.lua deleted file mode 100644 index 7b163f2..0000000 --- a/home/user/.config/nvim/after/plugin/mason.lua +++ /dev/null @@ -1,6 +0,0 @@ - -local status, mason = pcall(require, "mason") -if (not status) then return end - - -mason.setup() diff --git a/home/user/.config/nvim/after/plugin/nvim-autopairs.lua b/home/user/.config/nvim/after/plugin/nvim-autopairs.lua deleted file mode 100644 index 1af017c..0000000 --- a/home/user/.config/nvim/after/plugin/nvim-autopairs.lua +++ /dev/null @@ -1,5 +0,0 @@ - -local status, nvim_autopairs = pcall(require, "nvim-autopairs") -if (not status) then return end - -nvim_autopairs.setup() diff --git a/home/user/.config/nvim/after/plugin/nvim-treesitter.lua b/home/user/.config/nvim/after/plugin/nvim-treesitter.lua deleted file mode 100644 index 3905e55..0000000 --- a/home/user/.config/nvim/after/plugin/nvim-treesitter.lua +++ /dev/null @@ -1,13 +0,0 @@ - -local status, nvim_treesitter = pcall(require, "nvim-treesitter.configs") -if (not status) then return end - -nvim_treesitter.setup { - ensure_installed = {"python", "lua", "vim", "html", "rust", "markdown"}, - auto_install = true, - - highlight = { - enable = true, - } -} - diff --git a/home/user/.config/nvim/after/plugin/nvim-ts-autotag.lua b/home/user/.config/nvim/after/plugin/nvim-ts-autotag.lua deleted file mode 100644 index 0daef25..0000000 --- a/home/user/.config/nvim/after/plugin/nvim-ts-autotag.lua +++ /dev/null @@ -1,6 +0,0 @@ - -local status, nvim_ts_autotag = pcall(require, "nvim-ts-autotag") -if (not status) then return end - - -nvim_ts_autotag.setup() diff --git a/home/user/.config/nvim/after/plugin/telescope.lua b/home/user/.config/nvim/after/plugin/telescope.lua deleted file mode 100644 index eab4399..0000000 --- a/home/user/.config/nvim/after/plugin/telescope.lua +++ /dev/null @@ -1,62 +0,0 @@ - -local status, telescope = pcall(require, "telescope") -if (not status) then return end - -telescope.load_extension('fzf') - -telescope.setup { - defaults = { - selection_caret = " ", - path_display = { "smart" }, - file_ignore_patterns = { - ".git/", - "target/", - "docs/", - "vendor/*", - "%.lock", - "pycache/*", - "%.sqlite3", - "%.ipynb", - "node_modules/*", - "%.svg", - "%.otf", - "%.ttf", - "%.webp", - ".dart_tool/", - ".github/", - ".gradle/", - ".idea/", - ".settings/", - ".vscode/", - "pycache/", - "build/", - "env/", - "gradle/", - "node_modules/", - "%.pdb", - "%.dll", - "%.class", - "%.exe", - "%.cache", - "%.ico", - "%.pdf", - "%.dylib", - "%.jar", - "%.docx", - "%.met", - "smalljre_*/*", - ".vale/", - "%.burp", - "%.mp4", - "%.mkv", - "%.rar", - "%.zip", - "%.7z", - "%.tar", - "%.bz2", - "%.epub", - "%.flac", - "%.tar.gz", - }, - } -} diff --git a/home/user/.config/nvim/after/plugin/trouble.lua b/home/user/.config/nvim/after/plugin/trouble.lua deleted file mode 100644 index 825ab10..0000000 --- a/home/user/.config/nvim/after/plugin/trouble.lua +++ /dev/null @@ -1,5 +0,0 @@ - -local status, trouble = pcall(require, "trouble") -if (not status) then return end - -trouble.setup() diff --git a/home/user/.config/nvim/lua/base/plugins/auto_save.lua b/home/user/.config/nvim/lua/base/plugins/auto_save.lua new file mode 100644 index 0000000..e4761e8 --- /dev/null +++ b/home/user/.config/nvim/lua/base/plugins/auto_save.lua @@ -0,0 +1,35 @@ +return { + 'Pocco81/auto-save.nvim', + config = function() + require("auto-save").setup({ + enabled = true, -- start auto-save when the plugin is loaded (i.e. when your package manager loads it) + execution_message = { + message = function() -- message to print on save + return ("AutoSave: saved at " .. vim.fn.strftime("%H:%M:%S")) + end, + dim = 0.18, -- dim the color of `message` + cleaning_interval = 1250, -- (milliseconds) automatically clean MsgArea after displaying `message`. See :h MsgArea + }, + trigger_events = {"InsertLeave", "TextChanged"}, -- vim events that trigger auto-save. See :h events + condition = function(buf) + local fn = vim.fn + local utils = require("auto-save.utils.data") + if + fn.getbufvar(buf, "&modifiable") == 1 and + utils.not_in(fn.getbufvar(buf, "&filetype"), {}) then + return true -- met condition(s), can save + end + return false -- can't save + end, + write_all_buffers = false, -- write all buffers when the current one meets `condition` + debounce_delay = 135, -- saves the file at most every `debounce_delay` milliseconds + callbacks = { -- functions to be executed at different intervals + enabling = nil, -- ran when enabling auto-save + disabling = nil, -- ran when disabling auto-save + before_asserting_save = nil, -- ran before checking `condition` + before_saving = nil, -- ran before doing the actual save + after_saving = nil -- ran after doing the actual save + } + }) + end +} diff --git a/home/user/.config/nvim/lua/base/plugins/colorschemes.lua b/home/user/.config/nvim/lua/base/plugins/colorschemes.lua index b2461e8..d56cdc7 100644 --- a/home/user/.config/nvim/lua/base/plugins/colorschemes.lua +++ b/home/user/.config/nvim/lua/base/plugins/colorschemes.lua @@ -1,6 +1,12 @@ return { { - 'EdenEast/nightfox.nvim' + 'EdenEast/nightfox.nvim', + config = function() + local colorscheme = require("nightfox") + colorscheme.compile() + colorscheme.setup() + vim.cmd.colorscheme("nightfox") + end }, { 'ellisonleao/gruvbox.nvim' diff --git a/home/user/.config/nvim/lua/base/plugins/lualine.lua b/home/user/.config/nvim/lua/base/plugins/lualine.lua index 087908f..ddd3987 100644 --- a/home/user/.config/nvim/lua/base/plugins/lualine.lua +++ b/home/user/.config/nvim/lua/base/plugins/lualine.lua @@ -1,4 +1,7 @@ return { 'nvim-lualine/lualine.nvim', + config = function() + require("lualine").setup() + end, dependencies = { 'kyazdani42/nvim-web-devicons' } } diff --git a/home/user/.config/nvim/lua/base/plugins/mason.lua b/home/user/.config/nvim/lua/base/plugins/mason.lua index 1239344..a1446a5 100644 --- a/home/user/.config/nvim/lua/base/plugins/mason.lua +++ b/home/user/.config/nvim/lua/base/plugins/mason.lua @@ -1,4 +1,14 @@ return { 'williamboman/mason.nvim', - dependencies = "williamboman/mason-lspconfig.nvim" + dependencies = { + { + "williamboman/mason-lspconfig.nvim", + config = function() + require("mason-lspconfig").setup() + end + }, + }, + config = function() + require("mason").setup() + end } diff --git a/home/user/.config/nvim/lua/base/plugins/misc.lua b/home/user/.config/nvim/lua/base/plugins/misc.lua index 3e5dd21..8fd743c 100644 --- a/home/user/.config/nvim/lua/base/plugins/misc.lua +++ b/home/user/.config/nvim/lua/base/plugins/misc.lua @@ -3,12 +3,33 @@ return { 'tpope/vim-repeat', 'google/vim-searchindex', 'rbgrouleff/bclose.vim', - 'Pocco81/auto-save.nvim', -- autosave files - 'windwp/nvim-autopairs', -- auto pair brackets and tags - 'lewis6991/gitsigns.nvim', -- git integration - 'windwp/nvim-ts-autotag', 'chaoren/vim-wordmotion', - 'numToStr/Comment.nvim', + { + 'windwp/nvim-autopairs', + desc = "Auto pair brackets and tags", + config = function() + require("nvim-autopairs").setup() + end + }, + { + 'windwp/nvim-ts-autotag', + config = function() + require("nvim-ts-autotag").setup() + end + }, + { + 'lewis6991/gitsigns.nvim', + enabled = vim.fn.executable "git" == 1, + config = function() + require("gitsigns").setup() + end + }, + { + 'numToStr/Comment.nvim', + config = function() + require("Comment").setup() + end + }, { 'norcalli/nvim-colorizer.lua', config = function() @@ -28,10 +49,22 @@ return { }, { 'nvim-treesitter/nvim-treesitter', - build = ':TSUpdate' + build = ':TSUpdate', + config = function() + require("nvim-treesitter.configs").setup({ + ensure_installed = {"python", "lua", "vim", "html", "rust", "markdown"}, + auto_install = true, + highlight = { + enable = true, + } + }) + end }, { 'folke/trouble.nvim', - dependencies = { 'kyazdani42/nvim-web-devicons' } + dependencies = { 'kyazdani42/nvim-web-devicons' }, + config = function() + require("trouble").setup() + end }, } diff --git a/home/user/.config/nvim/lua/base/plugins/nvim_cmp.lua b/home/user/.config/nvim/lua/base/plugins/nvim_cmp.lua index 253caf6..dbb337f 100644 --- a/home/user/.config/nvim/lua/base/plugins/nvim_cmp.lua +++ b/home/user/.config/nvim/lua/base/plugins/nvim_cmp.lua @@ -1,3 +1,130 @@ +local border_opts = { + border = "single", + winhighlight = "Normal:Normal,FloatBorder:FloatBorder,CursorLine:Visual,Search:None", +} + +local function has_words_before() + 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 + +function setup_cmp() + local cmp = require("cmp") + + cmp.setup({ + completion = { + autocomplete = false + }, + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + mapping = { + [''] = 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.select_prev_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = false, + }, + }, + + window = { + completion = cmp.config.window.bordered(border_opts), + documentation = cmp.config.window.bordered(border_opts), + }, + + sources = cmp.config.sources({ + { name = 'nvim_lsp', priority = 1000 }, + { name = 'luasnip', priority = 750 }, + { name = 'buffer', priority = 500 }, + { name = 'path', priority = 250 }, + }, { + }), + }) + + cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } + }) + + cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }) + }) +end + +function setup_lspconfig() + local nvim_lsp = require("lspconfig") + + local on_attach = function(client, bufnr) + + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + -- Enable completion triggered by + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + local opts = { noremap=true, silent=true } + + -- See `:help vim.lsp.*` for documentation on any of the below functions + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) + buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) + buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) + + end + + -- Use a loop to conveniently call 'setup' on multiple servers and + -- map buffer local keybindings when the language server attaches + local servers = { 'pyright', 'lua_ls', 'rust_analyzer' } + for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + on_attach = on_attach, + flags = { + debounce_text_changes = 150, + } + } + end + + local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) + + nvim_lsp.clangd.setup { + capabilities = capabilities, + } +end + return { { 'hrsh7th/nvim-cmp', @@ -8,13 +135,45 @@ return { 'saadparwaiz1/cmp_luasnip', 'hrsh7th/cmp-nvim-lsp', }, + config = setup_cmp, + keys = { + + }, }, { - 'neovim/nvim-lspconfig' + 'neovim/nvim-lspconfig', + config = setup_lspconfig, + keys = { + + }, }, { 'L3MON4D3/LuaSnip', dependencies = 'hrsh7th/nvim-cmp', + config = function() + local ls = require("luasnip") + + vim.g.snips_author = 'thek4n' + vim.g.snips_email = 'thek4n@yandex.com' + vim.g.snips_github = 'https://github.com/thek4n' + + + local function jump(val) + return function() + ls.jump(val) + end + end + + + local map = vim.keymap.set + map({'i', 's'}, '', jump(1)) + map({'i', 's'}, '', jump(-1)) + + + local luasnip_loaders = require("luasnip.loaders.from_snipmate") + + luasnip_loaders.lazy_load() + end }, { 'honza/vim-snippets' diff --git a/home/user/.config/nvim/lua/base/plugins/telescope.lua b/home/user/.config/nvim/lua/base/plugins/telescope.lua index 5405622..852ee20 100644 --- a/home/user/.config/nvim/lua/base/plugins/telescope.lua +++ b/home/user/.config/nvim/lua/base/plugins/telescope.lua @@ -12,5 +12,67 @@ return { keys = { { 'ff', 'Telescope find_files' }, { 'fg', 'Telescope live_grep' }, - } + }, + config = function() + telescope = require("telescope") + + telescope.load_extension("fzf") + + telescope.setup({ + defaults = { + selection_caret = " ", + path_display = { "smart" }, + file_ignore_patterns = { + ".git/", + "target/", + "docs/", + "vendor/*", + "%.lock", + "pycache/*", + "%.sqlite3", + "%.ipynb", + "node_modules/*", + "%.svg", + "%.otf", + "%.ttf", + "%.webp", + ".dart_tool/", + ".github/", + ".gradle/", + ".idea/", + ".settings/", + ".vscode/", + "pycache/", + "build/", + "env/", + "gradle/", + "node_modules/", + "%.pdb", + "%.dll", + "%.class", + "%.exe", + "%.cache", + "%.ico", + "%.pdf", + "%.dylib", + "%.jar", + "%.docx", + "%.met", + "smalljre_*/*", + ".vale/", + "%.burp", + "%.mp4", + "%.mkv", + "%.rar", + "%.zip", + "%.7z", + "%.tar", + "%.bz2", + "%.epub", + "%.flac", + "%.tar.gz", + }, + } + }) + end }