diff --git a/config/nvim/init.lua b/config/nvim/init.lua index a78c3a9..888c3a9 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -89,6 +89,7 @@ vim.opt.rtp:prepend(lazypath) ------------------------------------------------------------------- require('lazy').setup({ + -- Color scheme ------------------------------------------ { dir = "~/code_server/nightly_cm.nvim", lazy = false, @@ -98,8 +99,8 @@ require('lazy').setup({ end, }, + -- LSP ---------------------------------------------------- { - -- LSP Configuration & Plugins 'neovim/nvim-lspconfig', event = { "BufReadPre", "BufNewFile" }, dependencies = { @@ -109,7 +110,6 @@ require('lazy').setup({ }, { - -- Autocompletion 'hrsh7th/nvim-cmp', dependencies = { 'onsails/lspkind.nvim', @@ -123,10 +123,74 @@ require('lazy').setup({ }, }, - -- "gc" to comment visual regions/lines - { 'numToStr/Comment.nvim', opts = {} }, + { + 'zbirenbaum/copilot-cmp', + event = { 'BufRead', 'BufNewFile' }, + dependencies = { + { + 'zbirenbaum/copilot.lua', + config = function() + require('copilot').setup { + suggestion = { enabled = false }, + panel = { enabled = false }, + filetypes = { markdown = true }, + } + end, + }, + }, + config = function() require('copilot_cmp').setup() end, + }, - -- Fuzzy Finder (files, lsp, etc) + { + -- Highlight, edit, and navigate code + 'nvim-treesitter/nvim-treesitter', + dependencies = { + 'nvim-treesitter/nvim-treesitter-textobjects', + }, + build = ':TSUpdate', + }, + + { + "simrat39/rust-tools.nvim", + }, + + -- { + -- "ray-x/lsp_signature.nvim", + -- config = function() + -- require "lsp_signature".setup { + -- bind = true, -- This is mandatory, otherwise border config won't get registered. + -- handler_opts = { + -- border = "solid" + -- } + -- } + -- end + -- }, + -- + { + "jay-babu/mason-null-ls.nvim", + event = { "BufReadPre", "BufNewFile" }, + dependencies = { + "williamboman/mason.nvim", + "jose-elias-alvarez/null-ls.nvim", + }, + config = function() + require("mason").setup() + require("mason-null-ls").setup({ + ensure_installed = { + -- Opt to list sources here, when available in mason. + }, + automatic_installation = false, + handlers = {}, + }) + require("null-ls").setup({ + sources = { + -- Anything not supported by mason. + } + }) + end, + }, + + -- File explorer ------------------------------------------- { 'nvim-telescope/telescope.nvim', branch = '0.1.x', @@ -157,190 +221,12 @@ require('lazy').setup({ { "nvim-telescope/telescope-file-browser.nvim", - dependencies = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" }, - }, - - { - -- Highlight, edit, and navigate code - 'nvim-treesitter/nvim-treesitter', - dependencies = { - 'nvim-treesitter/nvim-treesitter-textobjects', - }, - build = ':TSUpdate', - }, - - { - "max397574/better-escape.nvim", - opts = { timeout = 300 } - }, - - -- Copilot plugin to autocomplete text - { - 'zbirenbaum/copilot-cmp', - event = { 'BufRead', 'BufNewFile' }, - dependencies = { - { - 'zbirenbaum/copilot.lua', - config = function() - require('copilot').setup { - suggestion = { enabled = false }, - panel = { enabled = false }, - filetypes = { markdown = true }, - } - end, - }, - }, - config = function() require('copilot_cmp').setup() end, - }, - - { - -- Set lualine as statusline - 'nvim-lualine/lualine.nvim', - opts = { - options = { - icons_enabled = true, - theme = 'nightly_cm', - component_separators = '', - section_separators = '', - globalstatus = true, - }, - sections = { - lualine_a = { 'mode' }, - lualine_b = { 'branch', 'diff' }, - lualine_c = { 'filename' }, - lualine_x = { - { - -- Lsp server name . - function() - local msg = '' - local clients = vim.lsp.get_active_clients({ bufnr = 0 }) - if next(clients) == nil then - return msg - end - for _, client in ipairs(clients) do - msg = msg .. client.name .. ", " - end - if msg == '' then - return msg - end - return msg:sub(1, -3) - end, - color = { fg = '#c6c6c6' }, - }, - }, - lualine_y = { 'filetype' }, - lualine_z = { 'progress' } - }, - }, - }, - - { - -- Adds git releated signs to the gutter, as well as utilities for managing changes - 'lewis6991/gitsigns.nvim', - opts = { - signs = { - add = { text = "▎" }, - change = { text = "▎" }, - delete = { text = "▎" }, - topdelete = { text = "▎" }, - changedelete = { text = "▎" }, - untracked = { text = "▎" }, - }, - preview_config = { - -- Options passed to nvim_open_win - border = 'solid', - style = 'minimal', - relative = 'cursor', - row = 0, - col = 1 - }, - on_attach = function(bufnr) - vim.keymap.set('n', 'gp', require('gitsigns').prev_hunk, - { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) - vim.keymap.set('n', 'gn', require('gitsigns').next_hunk, - { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) - vim.keymap.set('n', 'ph', require('gitsigns').preview_hunk, - { buffer = bufnr, desc = '[P]review [H]unk' }) - end, - }, - }, - - { - -- Add indentation guides even on blank lines - 'lukas-reineke/indent-blankline.nvim', - opts = { - buftype_exclude = { - "nofile", - "terminal", - }, - filetype_exclude = { - "help", - "startify", - "aerial", - "alpha", - "dashboard", - "lazy", - "neogitstatus", - "NvimTree", - "neo-tree", - "Trouble", - }, - context_patterns = { - "class", - "return", - "function", - "method", - "^if", - "^while", - "jsx_element", - "^for", - "^object", - "^table", - "block", - "arguments", - "if_statement", - "else_clause", - "jsx_element", - "jsx_self_closing_element", - "try_statement", - "catch_clause", - "import_statement", - "operation_type", - }, - show_trailing_blankline_indent = false, - use_treesitter = true, - char = "▏", - context_char = "▏", - show_current_context = true, - } - }, - - { - 'mrjones2014/smart-splits.nvim', - opts = { - at_edge = 'stop', - } - }, - - { - "folke/neodev.nvim", - opts = {} - }, - - { - "kdheepak/lazygit.nvim", dependencies = { + "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim", }, }, - { - "norcalli/nvim-colorizer.lua", - config = function() - require("colorizer").setup() - end, - }, - { "nvim-neo-tree/neo-tree.nvim", branch = "v2.x", @@ -425,6 +311,146 @@ require('lazy').setup({ end, }, + { + "s1n7ax/nvim-window-picker", + opts = { + use_winbar = "smart", + highlights = { + statusline = { + unfocused = { + fg = '#d7af5f', + bg = '#262626', + bold = true, + }, + focused = { + fg = '#d7af5f', + bg = '#262626', + bold = true, + }, + }, + }, + } + }, + + -- GUI ------------------------------------------------------ + { + 'mrjones2014/smart-splits.nvim', + opts = { + at_edge = 'stop', + } + }, + + { + -- Set lualine as statusline + 'nvim-lualine/lualine.nvim', + opts = { + options = { + icons_enabled = true, + theme = 'nightly_cm', + component_separators = '', + section_separators = '', + globalstatus = true, + }, + sections = { + lualine_a = { 'mode' }, + lualine_b = { 'branch', 'diff' }, + lualine_c = { 'filename' }, + lualine_x = { + { + -- Lsp server name . + function() + local msg = '' + local clients = vim.lsp.get_active_clients({ bufnr = 0 }) + if next(clients) == nil then + return msg + end + for _, client in ipairs(clients) do + msg = msg .. client.name .. ", " + end + if msg == '' then + return msg + end + return msg:sub(1, -3) + end, + color = { fg = '#c6c6c6' }, + }, + }, + lualine_y = { 'filetype' }, + lualine_z = { 'progress' } + }, + }, + }, + + { + -- Adds git releated signs to the gutter, as well as utilities for managing changes + 'lewis6991/gitsigns.nvim', + opts = { + signs = { + add = { text = "▎" }, + change = { text = "▎" }, + delete = { text = "▎" }, + topdelete = { text = "▎" }, + changedelete = { text = "▎" }, + untracked = { text = "▎" }, + }, + preview_config = { + -- Options passed to nvim_open_win + border = 'solid', + style = 'minimal', + relative = 'cursor', + row = 0, + col = 1 + }, + on_attach = function(bufnr) + vim.keymap.set('n', 'gp', require('gitsigns').prev_hunk, + { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) + vim.keymap.set('n', 'gn', require('gitsigns').next_hunk, + { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) + vim.keymap.set('n', 'ph', require('gitsigns').preview_hunk, + { buffer = bufnr, desc = '[P]review [H]unk' }) + end, + }, + }, + + { + -- Add indentation guides even on blank lines + 'lukas-reineke/indent-blankline.nvim', + opts = { + show_trailing_blankline_indent = false, + use_treesitter = true, + char = "▏", + context_char = "▏", + show_current_context = true, + } + }, + + { + "norcalli/nvim-colorizer.lua", + config = function() + require("colorizer").setup() + end, + }, + + { + "folke/neodev.nvim", + opts = {} + }, + + -- Utils --------------------------------------------------- + { + "max397574/better-escape.nvim", + opts = { timeout = 300 } + }, + + { 'numToStr/Comment.nvim', opts = {} }, + + { + "kdheepak/lazygit.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + }, + }, + { 'akinsho/toggleterm.nvim', version = "*", @@ -444,26 +470,6 @@ require('lazy').setup({ end, }, - { - "s1n7ax/nvim-window-picker", - opts = { - use_winbar = "smart", - highlights = { - statusline = { - unfocused = { - fg = '#d7af5f', - bg = '#262626', - bold = true, - }, - }, - }, - } - }, - - { - "simrat39/rust-tools.nvim", - }, - { "folke/todo-comments.nvim", dependencies = { "nvim-lua/plenary.nvim" }, @@ -475,7 +481,6 @@ require('lazy').setup({ 'phaazon/hop.nvim', branch = 'v2', -- optional but strongly recommended config = function() - -- you can configure Hop the way you like here; see :h hop-config require 'hop'.setup { keys = 'etovxqpdygfblzhckisuran' } end }, @@ -487,18 +492,6 @@ require('lazy').setup({ }, }, - { - "ray-x/lsp_signature.nvim", - config = function() - require "lsp_signature".setup { - bind = true, -- This is mandatory, otherwise border config won't get registered. - handler_opts = { - border = "solid" - } - } - end - }, - }, {}) ------------------------------------------------------------------- @@ -839,9 +832,9 @@ vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags, { desc vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { desc = 'Search current word' }) vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = 'Search by grep' }) vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = 'Search diagnostics' }) - +--Other vim.keymap.set('n', '', ":tabNext", { desc = 'Next tab', silent = true }) --- vim.keymap.set('n', '', ":Format", { desc = 'Format code', silent = true }) +vim.keymap.set('n', '', ":Format", { desc = 'Format code', silent = true }) vim.keymap.set('n', 'gg', ":LazyGitCurrentFile", { desc = 'Format code', silent = true }) vim.keymap.set('n', '', ":make", { desc = 'Format code', silent = true }) vim.keymap.set('n', '', ":make clean", { desc = 'Format code', silent = true })