123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- -- [[ Install `lazy.nvim` plugin manager ]]
- -- https://github.com/folke/lazy.nvim
- -- `:help lazy.nvim.txt` for more info
- local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
- if not vim.loop.fs_stat(lazypath) then
- vim.fn.system {
- 'git',
- 'clone',
- '--filter=blob:none',
- 'https://github.com/folke/lazy.nvim.git',
- '--branch=stable', -- latest stable release
- lazypath,
- }
- end
- vim.opt.rtp:prepend(lazypath)
- -- [[ Configure plugins ]]
- -- NOTE: Here is where you install your plugins.
- -- You can configure plugins using the `config` key.
- --
- -- You can also configure plugins after the setup call,
- -- as they will be available in your neovim runtime.
- require('lazy').setup({
- -- NOTE: First, some plugins that don't require any configuration
- -- Git related plugins
- 'tpope/vim-fugitive',
- 'tpope/vim-rhubarb',
- -- Detect tabstop and shiftwidth automatically
- 'tpope/vim-sleuth',
- -- Autoformat on save
- 'jose-elias-alvarez/null-ls.nvim',
- {
- 'kdheepak/lazygit.nvim',
- -- optional for floating window border decoration
- dependencies = {
- 'nvim-lua/plenary.nvim',
- },
- },
- -- When life gets too hard
- 'eandrju/cellular-automaton.nvim',
- 'leafOfTree/vim-svelte-plugin',
- -- NOTE: This is where your plugins related to LSP can be installed.
- -- The configuration is done below. Search for lspconfig to find it below.
- {
- -- LSP Configuration & Plugins
- 'neovim/nvim-lspconfig',
- config = require('kickstart.plugins.autoformat').config,
- dependencies = {
- -- Automatically install LSPs to stdpath for neovim
- { 'williamboman/mason.nvim', config = true },
- 'williamboman/mason-lspconfig.nvim',
- -- Useful status updates for LSP
- -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
- { 'j-hui/fidget.nvim', opts = {} },
- -- Additional lua configuration, makes nvim stuff amazing!
- 'folke/neodev.nvim',
- },
- },
- {
- -- Autocompletion
- 'hrsh7th/nvim-cmp',
- dependencies = {
- -- Snippet Engine & its associated nvim-cmp source
- {
- 'L3MON4D3/LuaSnip',
- build = (function()
- -- Build Step is needed for regex support in snippets
- -- This step is not supported in many windows environments
- -- Remove the below condition to re-enable on windows
- if vim.fn.has 'win32' == 1 then
- return
- end
- return 'make install_jsregexp'
- end)(),
- },
- 'saadparwaiz1/cmp_luasnip',
- -- Adds LSP completion capabilities
- 'hrsh7th/cmp-nvim-lsp',
- 'hrsh7th/cmp-path',
- -- Adds a number of user-friendly snippets
- -- 'rafamadriz/friendly-snippets',
- },
- },
- -- Useful plugin to show you pending keybinds.
- { 'folke/which-key.nvim', opts = {} },
- {
- -- Adds git related signs to the gutter, as well as utilities for managing changes
- 'lewis6991/gitsigns.nvim',
- opts = {
- -- See `:help gitsigns.txt`
- signs = {
- add = { text = '+' },
- change = { text = '~' },
- delete = { text = '_' },
- topdelete = { text = '‾' },
- changedelete = { text = '~' },
- },
- on_attach = function(bufnr)
- local gs = package.loaded.gitsigns
- local function map(mode, l, r, opts)
- opts = opts or {}
- opts.buffer = bufnr
- vim.keymap.set(mode, l, r, opts)
- end
- -- Navigation
- map({ 'n', 'v' }, ']c', function()
- if vim.wo.diff then
- return ']c'
- end
- vim.schedule(function()
- gs.next_hunk()
- end)
- return '<Ignore>'
- end, { expr = true, desc = 'Jump to next hunk' })
- map({ 'n', 'v' }, '[c', function()
- if vim.wo.diff then
- return '[c'
- end
- vim.schedule(function()
- gs.prev_hunk()
- end)
- return '<Ignore>'
- end, { expr = true, desc = 'Jump to previous hunk' })
- -- Actions
- -- visual mode
- map('v', '<leader>hs', function()
- gs.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
- end, { desc = 'stage git hunk' })
- map('v', '<leader>hr', function()
- gs.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
- end, { desc = 'reset git hunk' })
- -- normal mode
- map('n', '<leader>hs', gs.stage_hunk, { desc = 'git stage hunk' })
- map('n', '<leader>hr', gs.reset_hunk, { desc = 'git reset hunk' })
- map('n', '<leader>hS', gs.stage_buffer, { desc = 'git Stage buffer' })
- map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'undo stage hunk' })
- map('n', '<leader>hR', gs.reset_buffer, { desc = 'git Reset buffer' })
- map('n', '<leader>hp', gs.preview_hunk, { desc = 'preview git hunk' })
- map('n', '<leader>hb', function()
- gs.blame_line { full = false }
- end, { desc = 'git blame line' })
- map('n', '<leader>hd', gs.diffthis, { desc = 'git diff against index' })
- map('n', '<leader>hD', function()
- gs.diffthis '~'
- end, { desc = 'git diff against last commit' })
- -- Toggles
- map('n', '<leader>tb', gs.toggle_current_line_blame, { desc = 'toggle git blame line' })
- map('n', '<leader>td', gs.toggle_deleted, { desc = 'toggle git show deleted' })
- -- Text object
- map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', { desc = 'select git hunk' })
- end,
- },
- },
- {
- 'folke/tokyonight.nvim',
- lazy = false,
- priority = 1000,
- config = function()
- require('tokyonight').setup {
- style = 'night',
- }
- end,
- },
- {
- -- Theme inspired by Atom
- 'navarasu/onedark.nvim',
- lazy = false,
- priority = 0,
- config = function()
- require('onedark').setup {
- -- Set a style preset. 'dark' is default.
- style = 'dark', -- dark, darker, cool, deep, warm, warmer, light
- }
- require('onedark').load()
- end,
- },
- {
- -- Set lualine as statusline
- 'nvim-lualine/lualine.nvim',
- -- See `:help lualine.txt`
- opts = {
- options = {
- icons_enabled = true,
- theme = 'tokyonight',
- component_separators = '|',
- section_separators = '',
- },
- },
- },
- {
- -- Add indentation guides even on blank lines
- 'lukas-reineke/indent-blankline.nvim',
- -- Enable `lukas-reineke/indent-blankline.nvim`
- -- See `:help ibl`
- main = 'ibl',
- opts = {
- indent = {
- char = '▏',
- },
- },
- },
- -- "gc" to comment visual regions/lines
- { 'numToStr/Comment.nvim', opts = {} },
- -- Fuzzy Finder (files, lsp, etc)
- {
- 'nvim-telescope/telescope.nvim',
- branch = '0.1.x',
- dependencies = {
- 'nvim-lua/plenary.nvim',
- -- Fuzzy Finder Algorithm which requires local dependencies to be built.
- -- Only load if `make` is available. Make sure you have the system
- -- requirements installed.
- {
- 'nvim-telescope/telescope-fzf-native.nvim',
- -- NOTE: If you are having trouble with this installation,
- -- refer to the README for telescope-fzf-native for more instructions.
- build = 'make',
- cond = function()
- return vim.fn.executable 'make' == 1
- end,
- },
- },
- },
- 'nvim-neotest/nvim-nio',
- {
- 'danymat/neogen',
- config = true,
- -- Uncomment next line if you want to follow only stable versions
- -- version = "*"
- },
- {
- -- Highlight, edit, and navigate code
- 'nvim-treesitter/nvim-treesitter',
- dependencies = {
- 'nvim-treesitter/nvim-treesitter-textobjects',
- },
- build = ':TSUpdate',
- },
- -- {
- -- 'rust-lang/rust.vim',
- -- ft = 'rust',
- -- init = function()
- -- vim.g.rustfmt_autosave = 1
- -- end,
- -- },
- -- NOTE: Next Step on Your Neovim Journey: Add/Configure additional "plugins" for kickstart
- -- These are some example plugins that I've included in the kickstart repository.
- -- Uncomment any of the lines below to enable them.
- -- require 'kickstart.plugins.autoformat',
- require 'kickstart.plugins.debug',
- {
- 'stevearc/oil.nvim',
- opts = {},
- dependencies = { { 'echasnovski/mini.icons', opts = {} } },
- config = function()
- require('oil').setup { default_file_explorer = true }
- end,
- },
- 'nvim-tree/nvim-web-devicons',
- {
- 'chrishrb/gx.nvim',
- keys = { { 'gx', '<cmd>Browse<cr>', mode = { 'n', 'x' } } },
- cmd = { 'Browse' },
- init = function()
- vim.g.netrw_nogx = 1 -- disable netrw gx
- end,
- dependencies = { 'nvim-lua/plenary.nvim' },
- config = true, -- default settings
- submodules = false, -- not needed, submodules are required only for tests
- },
- {
- 'nvim-neo-tree/neo-tree.nvim',
- branch = 'v3.x',
- dependencies = {
- '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
- },
- },
- 'Exafunction/codeium.vim',
- -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
- -- You can use this folder to prevent any conflicts with this init.lua if you're interested in keeping
- -- up-to-date with whatever is in the kickstart repo.
- -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
- --
- -- For additional information see: https://github.com/folke/lazy.nvim#-structuring-your-plugins
- -- { import = 'custom.plugins' },
- }, {})
|