-- disable netrw at the very start of your init.lua (strongly advised) vim.g.loaded = 1 vim.g.loaded_netrwPlugin = 1 -- load lsp and dependencies (help for both coc and independent lsp setup) require("mason").setup() require("mason-lspconfig").setup({ ensure_installed = { "bashls", "pyright", "perlnavigator", "salt_ls", "dockerls", "kotlin_language_server", "intelephense", "phpactor", "eslint" } }) require("null-ls").setup({ sources = { require("null-ls").builtins.formatting.stylua, require("null-ls").builtins.diagnostics.eslint, require("null-ls").builtins.completion.spell, require("null-ls").builtins.code_actions.gitsigns, }, }) -- setup minimap local codewindow = require('codewindow') codewindow.setup({ minimap_width = 20, -- The width of the text part of the minimap width_multiplier = 4, -- How many characters one dot represents use_lsp = true, -- Use the builtin LSP to show errors and warnings use_treesitter = true, -- Use nvim-treesitter to highlight the code 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() require'lspconfig'.pyright.setup{} require'lspconfig'.bashls.setup{} require'lspconfig'.salt_ls.setup{} require'lspconfig'.dockerls.setup{} require'lspconfig'.kotlin_language_server.setup{} require'lspconfig'.intelephense.setup{} require'lspconfig'.eslint.setup{} -- load perl lsp require'lspconfig'.perlnavigator.setup{ settings = { perlnavigator = { perlPath = 'perl', enableWarnings = true, perltidyProfile = '', perlcriticProfile = '', perlcriticEnabled = true, } } } -- Set up nvim-cmp. local cmp = require'cmp' cmp.setup({ snippet = { -- REQUIRED - you must specify a snippet engine expand = function(args) vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. -- require('luasnip').lsp_expand(args.body) -- For `luasnip` users. -- require('snippy').expand_snippet(args.body) -- For `snippy` users. -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. end, }, 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. }), 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 = 'buffer' }, }) }) -- 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' }, }) }) -- 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' } } }) -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }) }) -- Set up lspconfig. local capabilities = require('cmp_nvim_lsp').default_capabilities() -- Replace with each lsp server you've enabled. require('lspconfig')[''].setup { capabilities = capabilities } require'lspconfig'.tsserver.setup{} require("nvim-tree").setup({ create_in_closed_folder = true, hijack_cursor = true, open_on_setup = true, open_on_setup_file = true, sync_root_with_cwd = true, view = { 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, }, }, }, update_focused_file = { enable = true, update_root = true, ignore_list = { "help" }, }, diagnostics = { enable = true, show_on_dirs = true, }, filters = { custom = { "^.git$", "^.mypy_cache$", }, }, actions = { 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, }, }, }) --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, }) 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' } }