diff --git a/nvim/lua/config/bindings.lua b/nvim/lua/config/bindings.lua index 428042c..9e85cc1 100644 --- a/nvim/lua/config/bindings.lua +++ b/nvim/lua/config/bindings.lua @@ -11,3 +11,4 @@ vim.keymap.set("n", "q", "bd") vim.keymap.set("n", "l", "bl") vim.keymap.set("n", "lb", "VGit toggle_live_blame") vim.keymap.set("n", "bp", "VGit buffer_blame_preview") + diff --git a/nvim/lua/config/editor.lua b/nvim/lua/config/editor.lua index 9aad10f..4c32e31 100644 --- a/nvim/lua/config/editor.lua +++ b/nvim/lua/config/editor.lua @@ -3,9 +3,12 @@ vim.opt.softtabstop = 4 vim.opt.shiftwidth = 4 vim.opt.expandtab = true vim.opt.smartindent = true + vim.opt.nu = false vim.opt.relativenumber = true + vim.opt.wrap = false + vim.opt.termguicolors = true vim.opt.swapfile = false vim.opt.backup = false diff --git a/nvim/lua/config/lsp.lua b/nvim/lua/config/lsp.lua index 05fb341..c84b33e 100644 --- a/nvim/lua/config/lsp.lua +++ b/nvim/lua/config/lsp.lua @@ -1,72 +1,25 @@ -local lsp = require("lsp-zero") -local git = require("vgit") -local sig = require("lsp_signature") -local cmp = require("cmp") -local cmp_action = require("lsp-zero").cmp_action() +lsp = vim.lsp +lsp_config = require('lspconfig') +cmp_defcaps = require('cmp_nvim_lsp').default_capabilities() -lsp.preset("recommended") +snippet_engine = 'luasnip' -require('mason').setup({}) -require('mason-lspconfig').setup({ - ensure_installed = {'rust_analyzer'}, - handlers = { - lsp.default_setup, - }, -}) - -cmp.setup({ - window = { - completion = cmp.config.window.bordered(), - documentation = cmp.config.window.bordered(), - }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp_action.luasnip_jump_backward(), - [''] = cmp_action.luasnip_jump_forward(), - [''] = cmp.mapping.confirm({ select = true }), - [''] = cmp.mapping.complete(), - }) -}) - -lsp.set_preferences({ - sign_icons = { } -}) - -lsp.set_sign_icons({ - error = '', - warn = '', - hint = '', - info = '', -}) - -lsp.on_attach(function(client, bufnr) - local opts = {buffer = bufnr, remap = false} - - vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) - vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts) - vim.keymap.set("n", "vws", function() vim.lps.buf.workspace_symbol() end, opts) - vim.keymap.set("n", "vd", function() vim.diagnostic.open_float() end, opts) - vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts) - vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts) - vim.keymap.set("n", "vca", function() vim.diagnostic.code_action() end, opts) - vim.keymap.set("n", "vrr", function() vim.diagnostic.references() end, opts) - vim.keymap.set("n", "vrn", function() vim.diagnostic.rename() end, opts) - vim.keymap.set("n", "", function() vim.diagnostic.signature_help() end, opts) -end) - - -lsp.setup() --- sig.setup({ --- hint_enable = false, --- fix_pos = , --- always_trigger = true, --- handler_opts = { --- border = "rounded" -- double, rounded, single, shadow, none, or a table of borders --- }, ---}) -git.setup({ - settings = { - signs = { - priority = 0, +vim.opt.completeopt = {'menu', 'menuone', 'noselect'} +vim.diagnostic.config({ + signs = { + text = { + [vim.diagnostic.severity.ERROR] = '', + [vim.diagnostic.severity.WARN] = '', + [vim.diagnostic.severity.HINT] = '', + [vim.diagnostic.severity.INFO] = '', }, - } + }, + virtual_text = true, + severity_sort = true, }) + +require('lsp.mason') +require('lsp.cmp') +require('lsp.pylsp') +require('lsp.rust') +require('lsp.git') diff --git a/nvim/lua/config/theme.lua b/nvim/lua/config/theme.lua index becea10..cdd9e89 100644 --- a/nvim/lua/config/theme.lua +++ b/nvim/lua/config/theme.lua @@ -2,7 +2,7 @@ require('nightfox').setup({ options = { transparent = true, -- Disable setting background terminal_colors = true, -- Set terminal colors (vim.g.terminal_color_*) used in `:terminal` - dim_inactive = false, -- Non focused panes set to alternative background + dim_inactive = false, -- Non-focused panes set to alternative background module_default = true, -- Default enable value for modules }, palettes = { diff --git a/nvim/lua/config/treesitter.lua b/nvim/lua/config/treesitter.lua index d1abf80..e67d0b3 100644 --- a/nvim/lua/config/treesitter.lua +++ b/nvim/lua/config/treesitter.lua @@ -1,6 +1,6 @@ require'nvim-treesitter.configs'.setup { -- A list of parser names, or "all" (the five listed parsers should always be installed) - ensure_installed = { "c", "lua", "vim", "vimdoc", "query" , "rust" }, + ensure_installed = { "c", "lua", "vim", "vimdoc", "query" , "rust", "python" }, -- Install parsers synchronously (only applied to `ensure_installed`) sync_install = false, diff --git a/nvim/lua/lsp/cmp.lua b/nvim/lua/lsp/cmp.lua new file mode 100644 index 0000000..3b74c8d --- /dev/null +++ b/nvim/lua/lsp/cmp.lua @@ -0,0 +1,25 @@ +local cmp = require('cmp') +local sneng = require(snippet_engine) + +cmp.setup({ + snippet = { + expand = function(args) + sneng.lsp_expand(args.body) + 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.confirm({ select = true }), + [''] = cmp.mapping.complete(), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'nvim_lsp_signature_help' }, + { name = sneng_name }, + }) +}) diff --git a/nvim/lua/lsp/git.lua b/nvim/lua/lsp/git.lua new file mode 100644 index 0000000..b8316c6 --- /dev/null +++ b/nvim/lua/lsp/git.lua @@ -0,0 +1,7 @@ +require('vgit').setup({ + settings = { + signs = { + priority = 0, + }, + } +}) diff --git a/nvim/lua/lsp/mason.lua b/nvim/lua/lsp/mason.lua new file mode 100644 index 0000000..3fa9bc7 --- /dev/null +++ b/nvim/lua/lsp/mason.lua @@ -0,0 +1,4 @@ +require('mason').setup({}) +require('mason-lspconfig').setup({ + ensure_installed = {'rust_analyzer', 'pylsp'}, +}) diff --git a/nvim/lua/lsp/pylsp.lua b/nvim/lua/lsp/pylsp.lua new file mode 100644 index 0000000..e667412 --- /dev/null +++ b/nvim/lua/lsp/pylsp.lua @@ -0,0 +1,4 @@ +lsp.config('pylsp', { + capabilities = cmp_defcaps, +}) +lsp.enable('pylsp') diff --git a/nvim/lua/lsp/rust.lua b/nvim/lua/lsp/rust.lua new file mode 100644 index 0000000..5fbbcee --- /dev/null +++ b/nvim/lua/lsp/rust.lua @@ -0,0 +1,11 @@ +lsp.config('rust_analyzer', { + capabilities = cmp_defcaps, + settings = { + ['rust-analyzer'] = { + diagnostics = { + enable = true; + } + } + } +}) +lsp.enable('rust_analyzer') diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index 847a036..69a969f 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -7,57 +7,51 @@ return require('packer').startup(function(use) -- Packer can manage itself use('wbthomason/packer.nvim') - use('olimorris/onedarkpro.nvim') use('SapphirusBeryl/nightfox.nvim') use('nvim-tree/nvim-web-devicons') - - use('nvim-treesitter/playground'); - use('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'}) use('mbbill/undotree') - use('williamboman/mason.nvim') - use('williamboman/mason-lspconfig.nvim') - - use { - 'nvim-telescope/telescope.nvim', tag = '0.1.5', - requires = { {'nvim-lua/plenary.nvim'} } - } - - use { - "nvim-neo-tree/neo-tree.nvim", - branch = "v3.x", - requires = { - "nvim-lua/plenary.nvim", - "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended - "MunifTanjim/nui.nvim", - -- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information - } - } - - use { - 'VonHeikemen/lsp-zero.nvim', - branch = 'v3.x', + 'neovim/nvim-lspconfig', requires = { - --- Uncomment the two plugins below if you want to manage the language servers from neovim - -- {'williamboman/mason.nvim'}, - -- {'williamboman/mason-lspconfig.nvim'}, + -- Mason Package Manager + {'williamboman/mason.nvim'}, + {'williamboman/mason-lspconfig.nvim'}, - -- LSP Support - {'neovim/nvim-lspconfig'}, -- Autocompletion {'hrsh7th/nvim-cmp'}, {'hrsh7th/cmp-nvim-lsp'}, + {'hrsh7th/cmp-nvim-lsp-signature-help'}, {'L3MON4D3/LuaSnip'}, } } - use { - "ray-x/lsp_signature.nvim", + use { + 'nvim-treesitter/nvim-treesitter', + run = ':TSUpdate', } + use { + 'nvim-telescope/telescope.nvim', + tag = '0.1.x', + requires = { + {'nvim-lua/plenary.nvim'} + } + } + + use { + 'nvim-neo-tree/neo-tree.nvim', + branch = 'v3.x', + requires = { + 'nvim-lua/plenary.nvim', + 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended + 'MunifTanjim/nui.nvim', + -- '3rd/image.nvim', -- Optional image support in preview window: See `# Preview Mode` for more information + } + } + use { 'tanvirtin/vgit.nvim', requires = {