diff --git a/init.vim b/init.vim index 16687dc..4cff709 100644 --- a/init.vim +++ b/init.vim @@ -12,10 +12,13 @@ Plug 'hrsh7th/nvim-cmp' Plug 'williamboman/mason.nvim' Plug 'williamboman/mason-lspconfig.nvim' Plug 'mfussenegger/nvim-lint' -"Plug 'dense-analysis/ale' +Plug 'onsails/lspkind.nvim' " various plugins +Plug 'windwp/nvim-ts-autotag' +Plug 'hrsh7th/cmp-path' Plug 'L3MON4D3/LuaSnip', {'tag': 'v1.*'} +Plug 'saadparwaiz1/cmp_luasnip' Plug 'lambdalisue/suda.vim' Plug 'airblade/vim-gitgutter' Plug 'akinsho/bufferline.nvim', { 'tag': 'v3.*' } diff --git a/lua/general.lua b/lua/general.lua index bae3273..012def3 100644 --- a/lua/general.lua +++ b/lua/general.lua @@ -34,56 +34,65 @@ codewindow.setup({ show_cursor = true, exclude_filetypes = {}, -- Choose certain filetypes to not show minimap on z_index = 1, -- The z-index the floating window will be on - }) +}) codewindow.apply_default_keybinds() -- Set up nvim-cmp. -local cmp = require'cmp' +local cmp = require 'cmp' +local lspkind = require('lspkind') cmp.setup({ -snippet = { - -- REQUIRED - you must specify a snippet engine - expand = function(args) - require('luasnip').lsp_expand(args.body) -- For `luasnip` users. - end, + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + end, }, - window = { - -- completion = cmp.config.window.bordered(), - -- documentation = cmp.config.window.bordered(), + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. }), sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'vsnip' }, -- For vsnip users. - -- { name = 'luasnip' }, -- For luasnip users. - -- { name = 'ultisnips' }, -- For ultisnips users. - -- { name = 'snippy' }, -- For snippy users. + { name = 'nvim_lsp' }, + --{ name = 'vsnip' }, -- For vsnip users. + { name = 'luasnip' }, -- For luasnip users. + -- { name = 'ultisnips' }, -- For ultisnips users. + -- { name = 'snippy' }, -- For snippy users. }, { - { name = 'buffer' }, + { name = 'buffer' }, + { name = 'path' }, + }), + formatting = { + format = lspkind.cmp_format({ + --mode = 'symbol', -- show only symbol annotations + maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) + ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first) }) + } }) -- Set configuration for specific filetype. cmp.setup.filetype('gitcommit', { -sources = cmp.config.sources({ - { name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it. -}, { - { name = 'buffer' }, -}) + sources = cmp.config.sources({ + { name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it. + }, { + { name = 'buffer' }, + }) }) -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { - { name = 'buffer' } + { name = 'buffer' } } }) @@ -91,13 +100,12 @@ cmp.setup.cmdline({ '/', '?' }, { cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }) + { name = 'path' } + }, { + { name = 'cmdline' } + }) }) - require("nvim-tree").setup({ create_in_closed_folder = true, hijack_cursor = true, @@ -105,141 +113,141 @@ require("nvim-tree").setup({ open_on_setup_file = true, sync_root_with_cwd = true, view = { - adaptive_size = true, + adaptive_size = true, }, renderer = { - full_name = true, - group_empty = true, - special_files = {}, - symlink_destination = false, - indent_markers = { - enable = true, - }, - icons = { - git_placement = "signcolumn", - show = { - file = true, - folder = true, - folder_arrow = true, - git = true, + full_name = true, + group_empty = true, + special_files = {}, + symlink_destination = false, + indent_markers = { + enable = true, + }, + icons = { + git_placement = "signcolumn", + show = { + file = true, + folder = true, + folder_arrow = true, + git = true, + }, }, - }, }, update_focused_file = { - enable = true, - update_root = true, - ignore_list = { "help" }, + enable = true, + update_root = true, + ignore_list = { "help" }, }, diagnostics = { - enable = true, - show_on_dirs = true, + enable = true, + show_on_dirs = true, }, filters = { - custom = { - "^.git$", - "^.mypy_cache$", - }, + custom = { + "^.git$", + "^.mypy_cache$", + }, }, actions = { - change_dir = { - enable = false, - restrict_above_cwd = true, - }, - open_file = { - resize_window = true, - }, - remove_file = { - close_window = false, - }, + change_dir = { + enable = false, + restrict_above_cwd = true, + }, + open_file = { + resize_window = true, + }, + remove_file = { + close_window = false, + }, }, log = { - enable = false, - truncate = true, - types = { - all = false, - config = false, - copy_paste = false, - diagnostics = false, - git = false, - profile = false, - watcher = false, - }, + enable = false, + truncate = true, + types = { + all = false, + config = false, + copy_paste = false, + diagnostics = false, + git = false, + profile = false, + watcher = false, + }, }, - }) +}) --Gruvbox theme settings -- setup must be called before loading the colorscheme require("gruvbox").setup({ - undercurl = true, - underline = true, - bold = true, - italic = false, -- default=true - strikethrough = true, - invert_selection = false, - invert_signs = false, - invert_tabline = false, - invert_intend_guides = false, - inverse = true, -- invert background for search, diffs, statuslines and errors - contrast = "hard", -- can be "hard", "soft" or empty string - palette_overrides = {}, - overrides = {}, - dim_inactive = true, -- default=false - transparent_mode = false, + undercurl = true, + underline = true, + bold = true, + italic = false, -- default=true + strikethrough = true, + invert_selection = false, + invert_signs = false, + invert_tabline = false, + invert_intend_guides = false, + inverse = true, -- invert background for search, diffs, statuslines and errors + contrast = "hard", -- can be "hard", "soft" or empty string + palette_overrides = {}, + overrides = {}, + dim_inactive = true, -- default=false + transparent_mode = false, }) - require('bufferline').setup { - options = { - mode = "buffers", -- set to "tabs" to only show tabpages instead - numbers = "buffer_id", - 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" - indicator = { - icon = '>', -- this should be omitted if indicator style is not 'icon' - style = 'icon', - }, - buffer_close_icon = '', - modified_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: - -- name | str | the basename of the active file - -- path | str | the full path of the active file - -- bufnr (buffer only) | int | the number of the active buffer - -- buffers (tabs only) | table(int) | the numbers of the buffers in the tab - -- tabnr (tabs only) | int | the "handle" of the tab, can be converted to its ordinal number using: `vim.api.nvim_tabpage_get_number(buf.tabnr)` - end, - max_name_length = 18, - max_prefix_length = 15, -- prefix used when a buffer is de-duplicated - truncate_names = true, -- whether or not tab names should be truncated - tab_size = 18, - diagnostics = "coc", - diagnostics_update_in_insert = false, - -- The diagnostics indicator can be set to nil to keep the buffer name highlight but delete the highlighting - color_icons = true, -- whether or not to add the filetype icon highlights - show_buffer_icons = true, -- disable filetype icons for buffers - show_buffer_close_icons = true, - show_buffer_default_icon = true, -- whether or not an unrecognised filetype should show a default icon - show_close_icon = false, - show_tab_indicators = true, - show_duplicate_prefix = true, -- whether to show duplicate buffer prefix - 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 = "thick", - enforce_regular_tabs = false, - always_show_bufferline = true, - hover = { - enabled = true, - delay = 200, - reveal = {'close'} - }, - sort_by = 'tabs' - } +require('bufferline').setup { + options = { + mode = "buffers", -- set to "tabs" to only show tabpages instead + numbers = "buffer_id", + 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" + indicator = { + icon = '>', -- this should be omitted if indicator style is not 'icon' + style = 'icon', + }, + buffer_close_icon = '', + modified_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: + -- name | str | the basename of the active file + -- path | str | the full path of the active file + -- bufnr (buffer only) | int | the number of the active buffer + -- buffers (tabs only) | table(int) | the numbers of the buffers in the tab + -- tabnr (tabs only) | int | the "handle" of the tab, can be converted to its ordinal number using: `vim.api.nvim_tabpage_get_number(buf.tabnr)` + end, + max_name_length = 18, + max_prefix_length = 15, -- prefix used when a buffer is de-duplicated + truncate_names = true, -- whether or not tab names should be truncated + tab_size = 18, + diagnostics = "coc", + diagnostics_update_in_insert = false, + -- The diagnostics indicator can be set to nil to keep the buffer name highlight but delete the highlighting + color_icons = true, -- whether or not to add the filetype icon highlights + show_buffer_icons = true, -- disable filetype icons for buffers + show_buffer_close_icons = true, + show_buffer_default_icon = true, -- whether or not an unrecognised filetype should show a default icon + show_close_icon = false, + show_tab_indicators = true, + show_duplicate_prefix = true, -- whether to show duplicate buffer prefix + 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 = "thick", + enforce_regular_tabs = false, + always_show_bufferline = true, + hover = { + enabled = true, + delay = 200, + reveal = { 'close' } + }, + sort_by = 'tabs' } +} diff --git a/lua/my-lint.lua b/lua/my-lint.lua index 8bc1496..17fbac6 100644 --- a/lua/my-lint.lua +++ b/lua/my-lint.lua @@ -7,6 +7,9 @@ require('lint').linters_by_ft = { local pydocstyle = require('lint.linters.pydocstyle') pydocstyle.args = { '--ignore=D100', -- disable missing module docstring info + '--ignore=D203', -- disable one line before class docstring required + '--ignore=D213', -- disable multiline docstring summary + -- should start at the second line } local pylint = require('lint.linters.pylint') pylint.args = {