diff --git a/init.lua b/init.lua index b98ffc6198a..f2cbbdc6af2 100644 --- a/init.lua +++ b/init.lua @@ -91,7 +91,7 @@ vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- Set to true if you have a Nerd Font installed and selected in the terminal -vim.g.have_nerd_font = false +vim.g.have_nerd_font = true -- [[ Setting options ]] -- See `:help vim.o` @@ -102,7 +102,7 @@ vim.g.have_nerd_font = false vim.o.number = true -- You can also add relative line numbers, to help with jumping. -- Experiment for yourself to see if you like it! --- vim.o.relativenumber = true +vim.o.relativenumber = true -- Enable mouse mode, can be useful for resizing splits for example! vim.o.mouse = 'a' @@ -537,7 +537,7 @@ require('lazy').setup({ -- Rename the variable under your cursor. -- Most Language Servers support renaming across files, etc. - map('grn', vim.lsp.buf.rename, '[R]e[n]ame') + map('rn', vim.lsp.buf.rename, '[R]e[n]ame') -- Execute a code action, usually your cursor needs to be on top of an error -- or a suggestion from your LSP for this to activate. @@ -553,7 +553,7 @@ require('lazy').setup({ -- Jump to the definition of the word under your cursor. -- This is where a variable was first declared, or where a function is defined, etc. -- To jump back, press . - map('grd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') + map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') -- WARN: This is not Goto Definition, this is Goto Declaration. -- For example, in C this would take you to the header. @@ -716,6 +716,15 @@ require('lazy').setup({ local ensure_installed = vim.tbl_keys(servers or {}) vim.list_extend(ensure_installed, { 'stylua', -- Used to format Lua code + 'ts_ls', + 'biome', + 'docker_compose_language_service', + 'dockerls', + 'graphql', + 'jsonls', + 'yamlls', + 'eslint', + 'bashls', }) require('mason-tool-installer').setup { ensure_installed = ensure_installed } @@ -876,27 +885,29 @@ require('lazy').setup({ }, }, - { -- You can easily change to a different colorscheme. - -- Change the name of the colorscheme plugin below, and then - -- change the command in the config to whatever the name of that colorscheme is. - -- - -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. - 'folke/tokyonight.nvim', - priority = 1000, -- Make sure to load this before all the other start plugins. - config = function() - ---@diagnostic disable-next-line: missing-fields - require('tokyonight').setup { - styles = { - comments = { italic = false }, -- Disable italics in comments - }, - } - - -- Load the colorscheme here. - -- Like many other themes, this one has different styles, and you could load - -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. - vim.cmd.colorscheme 'tokyonight-night' - end, - }, + -- { -- You can easily change to a different colorscheme. + -- -- Change the name of the colorscheme plugin below, and then + -- -- change the command in the config to whatever the name of that colorscheme is. + -- -- + -- -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. + -- 'folke/tokyonight.nvim', + -- priority = 1000, -- Make sure to load this before all the other start plugins. + -- config = function() + -- ---@diagnostic disable-next-line: missing-fields + -- require('tokyonight').setup { + -- styles = { + -- comments = { italic = false }, -- Disable italics in comments + -- }, + -- } + -- + -- -- Load the colorscheme here. + -- -- Like many other themes, this one has different styles, and you could load + -- -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. + -- -- vim.cmd.colorscheme 'tokyonight-night' + -- -- vim.cmd.colorscheme 'aliqyan-21/darkvoid.nvim' + -- vim.cmd.colorscheme 'nordic' + -- end, + -- }, -- Highlight todo, notes, etc in comments { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, @@ -975,16 +986,16 @@ require('lazy').setup({ -- -- require 'kickstart.plugins.debug', -- require 'kickstart.plugins.indent_line', - -- require 'kickstart.plugins.lint', - -- require 'kickstart.plugins.autopairs', - -- require 'kickstart.plugins.neo-tree', - -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps + require 'kickstart.plugins.lint', + require 'kickstart.plugins.autopairs', + require 'kickstart.plugins.neo-tree', + require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` -- This is the easiest way to modularize your config. -- -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. - -- { import = 'custom.plugins' }, + { import = 'custom.plugins' }, -- -- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec` -- Or use telescope! diff --git a/lua/custom/plugins/comment.lua b/lua/custom/plugins/comment.lua new file mode 100644 index 00000000000..b610b7f34c3 --- /dev/null +++ b/lua/custom/plugins/comment.lua @@ -0,0 +1,14 @@ +return { + { + 'numToStr/Comment.nvim', + config = function(_, opts) + require('Comment').setup(opts) + + vim.keymap.set('n', '/', function() + require('Comment.api').toggle.linewise.current() + end, { desc = 'comment toggle' }) + + vim.keymap.set('v', '/', "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", { desc = 'comment toggle' }) + end, + }, +} diff --git a/lua/custom/plugins/copilot-chat.lua b/lua/custom/plugins/copilot-chat.lua new file mode 100644 index 00000000000..1fc3dad331e --- /dev/null +++ b/lua/custom/plugins/copilot-chat.lua @@ -0,0 +1,18 @@ +return { + { + 'CopilotC-Nvim/CopilotChat.nvim', + dependencies = { + { 'nvim-lua/plenary.nvim', branch = 'master' }, + }, + build = 'make tiktoken', + init = function() + local map = vim.api.nvim_set_keymap + local opts = { noremap = true, silent = true } + + map('n', 'ch', 'CopilotChatToggle', opts) + end, + opts = { + -- See Configuration section for options + }, + }, +} diff --git a/lua/custom/plugins/copilot.lua b/lua/custom/plugins/copilot.lua new file mode 100644 index 00000000000..0e67f891e8a --- /dev/null +++ b/lua/custom/plugins/copilot.lua @@ -0,0 +1,26 @@ +return { + { + 'zbirenbaum/copilot.lua', + cmd = 'Copilot', + event = 'InsertEnter', + config = function() + require('copilot').setup { + suggestion = { + enabled = false, + auto_trigger = true, + keymap = { + accept = '', + }, + }, + panel = { + enabled = true, + auto_refresh = true, + }, + filetypes = { + ['*'] = true, + typescript = true, + }, + } + end, + }, +} diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index be0eb9d8d7a..bf56c776e96 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -2,4 +2,12 @@ -- I promise not to create any merge conflicts in this directory :) -- -- See the kickstart.nvim README for more information -return {} +return { + require 'custom.plugins.comment', + require 'custom.plugins.tabs', + require 'custom.plugins.copilot', + require 'custom.plugins.copilot-chat', + require 'custom.plugins.neo-tree-config', + require 'custom.plugins.sleuth', + require 'custom.plugins.theme', +} diff --git a/lua/custom/plugins/neo-tree-config.lua b/lua/custom/plugins/neo-tree-config.lua new file mode 100644 index 00000000000..1492b22ec0c --- /dev/null +++ b/lua/custom/plugins/neo-tree-config.lua @@ -0,0 +1,36 @@ +return { + { + 'nvim-neo-tree/neo-tree.nvim', + branch = 'v3.x', + dependencies = { + 'nvim-lua/plenary.nvim', + 'nvim-tree/nvim-web-devicons', + 'MunifTanjim/nui.nvim', + }, + keys = { + { 'e', desc = 'Open NeoTree' }, + { 'n', desc = 'Focus NeoTree' }, + }, + config = function() + local toggle_tree = function() + vim.cmd 'Neotree toggle' + vim.opt.relativenumber = true -- Use relative line numbers + end + + -- Set up your custom keymaps + vim.keymap.set('n', 'e', toggle_tree, { desc = 'Open NeoTree' }) + vim.keymap.set('n', 'n', function() + vim.cmd 'Neotree focus' + end, { desc = 'Focus NeoTree' }) + + -- Setup neo-tree + require('neo-tree').setup { + filesystem = { + follow_current_file = { + enabled = true, + }, + }, + } + end, + }, +} diff --git a/lua/custom/plugins/sleuth.lua b/lua/custom/plugins/sleuth.lua new file mode 100644 index 00000000000..48bc789ade6 --- /dev/null +++ b/lua/custom/plugins/sleuth.lua @@ -0,0 +1,7 @@ +return { + { + 'tpope/vim-sleuth', + config = function() end, + opts = {}, + }, +} diff --git a/lua/custom/plugins/tabs.lua b/lua/custom/plugins/tabs.lua new file mode 100644 index 00000000000..88c00344ddf --- /dev/null +++ b/lua/custom/plugins/tabs.lua @@ -0,0 +1,26 @@ +return { + { + 'romgrk/barbar.nvim', + dependencies = { + 'lewis6991/gitsigns.nvim', -- OPTIONAL: for git status + 'nvim-tree/nvim-web-devicons', -- OPTIONAL: for file icons + }, + init = function() + local map = vim.api.nvim_set_keymap + local opts = { noremap = true, silent = true } + vim.g.barbar_auto_setup = false + map('n', '', 'BufferNext', opts) + map('n', '', 'BufferPrevious', opts) + map('n', 'xx', 'BufferClose', opts) + map('n', 'xl', 'BufferCloseBuffersRight', opts) + map('n', 'xh', 'BufferCloseBuffersLeft', opts) + end, + opts = { + -- lazy.nvim will automatically call setup for you. put your options here, anything missing will use the default: + animation = true, + -- insert_at_start = true, + -- …etc. + }, + version = '^1.0.0', -- optional: only update when a new 1.x version is released + }, +} diff --git a/lua/custom/plugins/theme.lua b/lua/custom/plugins/theme.lua new file mode 100644 index 00000000000..90d3f78de44 --- /dev/null +++ b/lua/custom/plugins/theme.lua @@ -0,0 +1,86 @@ +-- return { +-- 'AlexvZyl/nordic.nvim', +-- lazy = false, +-- priority = 1000, +-- config = function() +-- require('nordic').load() +-- vim.cmd.colorscheme 'nordic' +-- end, +-- } + +return { + 'rebelot/kanagawa.nvim', + lazy = false, + priority = 1000, + config = function() + require('kanagawa').setup { + commentStyle = { + italic = true, + }, + -- optional: your custom config here + } + vim.cmd 'colorscheme kanagawa-dragon' + end, +} + +-- return { +-- 'aliqyan-21/darkvoid.nvim', +-- priority = 1000, +-- lazy = false, +-- init = function() +-- require('darkvoid').setup { +-- glow = true, +-- transparent = true, +-- colors = { +-- fg = '#c0c0c0', +-- bg = '#1c1c1c', +-- cursor = '#fdd41b', +-- line_nr = '#404040', +-- visual = '#303030', +-- comment = '#737373', +-- string = '#66b2b2', +-- func = '#1bfd9c', +-- kw = '#fe5e58', +-- identifier = '#b1b1b1', +-- type = '#a1a1a1', +-- search_highlight = '#fdd41b', +-- operator = '#1bfd9c', +-- bracket = '#e6e6e6', +-- preprocessor = '#4b8902', +-- bool = '#d1d1d1', +-- constant = '#b2d8d8', +-- +-- -- gitsigns colors +-- added = '#baffc9', +-- changed = '#ffffba', +-- removed = '#ffb3ba', +-- +-- -- Pmenu colors +-- pmenu_bg = '#1c1c1c', +-- pmenu_sel_bg = '#1bfd9c', +-- pmenu_fg = '#c0c0c0', +-- +-- -- EndOfBuffer color +-- eob = '#3c3c3c', +-- +-- -- Telescope specific colors +-- border = '#fe5e58', +-- title = '#ffffff', +-- +-- -- bufferline specific colors +-- bufferline_selection = '#1bfd9c', +-- +-- -- LSP diagnostics colors +-- error = '#dea6a0', +-- warning = '#d6efd8', +-- hint = '#bedc74', +-- info = '#7fa1c3', +-- }, +-- } +-- -- You can configure highlights by doing something like: +-- vim.cmd.hi 'Comment gui=none' +-- vim.cmd.hi 'Normal guibg=none' +-- vim.cmd.hi 'Normal guibg=none' +-- vim.cmd.colorscheme 'darkvoid' +-- end, +-- }