summaryrefslogtreecommitdiff
path: root/lua/jacksontaylorxyz/packer.lua
blob: 7f2db9b363d958b2ff05829a77edb91deedc47d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
-- Packer package manager found here: https://github.com/wbthomason/packer.nvim
--
-- Only required if you have packer configured as `opt`
vim.cmd [[packadd packer.nvim]]

return require('packer').startup(function(use)
  -- Packer can manage itself
  use 'wbthomason/packer.nvim'                                        -- Package manager

  -- Quality of life things
  use 'tpope/vim-commentary'                                          -- Really nice commenting functions
  use 'ap/vim-css-color'                                              -- highlights color codes in that color
  use 'preservim/nerdtree'                                            -- Folder tree on the left
  use 'Raimondi/delimitMate'                                          -- Auto delimits characters
  use 'sheerun/vim-polyglot'                                          -- Syntax highlighting for a ton of languages
  use {                                                               -- Finder bar (Kinda like fzf)
    'nvim-telescope/telescope.nvim', tag = '0.1.1',
    requires = { {'nvim-lua/plenary.nvim'} }
  }
  use 'nvim-tree/nvim-web-devicons'                                   -- Icons for other plugins
  use 'preservim/tagbar'                                              -- Ctags but in memory. Typescript does not work very well with exuberant ctags. Might work better with Universal ctags
  use 'qpkorr/vim-bufkill'                                            -- Closes buffer, but doesn't effect the window placement (splits)
  use {                                                               -- Highlights TODO comments
    "folke/todo-comments.nvim",
    requires = "nvim-lua/plenary.nvim",
    config = function()
      require("todo-comments").setup {
        -- leave this empty to use the default settings
        -- https://github.com/folke/todo-comments.nvim#%EF%B8%8F-configuration
        -- TODO: Change up colors maybe, and provide alternate words so that FIX also triggers FIXME colors/settings for example
      }
    end
  }
  use "junegunn/goyo.vim"                                             -- "Zen" mode
  use "mattn/calendar-vim"                                            -- Calendar for use with 
  use "lukas-reineke/indent-blankline.nvim"                           -- Provides whitespace/indent markers
  use 'HiPhish/rainbow-delimiters.nvim'                               -- This highlights things like curly braces in different colors so the matching one is seen easier

  -- Anything to do with git
  use 'tpope/vim-fugitive'                                            -- Git plugin
  use 'mhinz/vim-signify'                                             -- Shows line changes
  use 'APZelos/blamer.nvim'                                           -- Shows who changed the line last
  use 'junegunn/gv.vim'                                               -- Git viewer to read out commits and view them in a pretty way

  -- Different vim modes
  use {
    'vimwiki/vimwiki',                                                -- Diary and wiki suite
    config = function()
      -- Changes to this don't seem to take effect until I run PackerCompile
      vim.g.vimwiki_list = {
        {
          path = '~/vimwiki/personal/',
          path_html = '~/vimwiki/personal/html',
          syntax = 'markdown',
          ext = '.md',
          custom_wiki2html = 'wiki2html.sh',
        },
        {
          path = '~/vimwiki/test/',
          path_html = '~/vimwiki/test/html',
          syntax = 'markdown',
          ext = '.md'
        },
        {
          path = '~/vimwiki/work/',
          path_html = '~/vimwiki/work/html',
          -- syntax = 'default',
          -- ext = '.wiki'
          syntax = 'markdown',
          ext = '.md'
        },
      }
    end
  }

  -- Fancy stuff
  use 'vim-airline/vim-airline'                                       -- Fancy status bar
  use 'vim-airline/vim-airline-themes'                                -- Fancy status bar themes
  use 'mhinz/vim-startify'                                            -- Fancy startup script
  use "folke/which-key.nvim"                                          -- Fancy keybind menu
  use 'ryanoasis/vim-devicons'                                        -- Fancy icons for file types in nerdtree and other places

  -- Themes
  use 'ayu-theme/ayu-vim'                                             -- Nice blue theme. Closer to the gotham theme I had in VS code than the vim theme it was inspired by.
  use "rebelot/kanagawa.nvim"
  use "savq/melange-nvim"
  use 'rafi/awesome-vim-colorschemes'
  use "lunarvim/templeos.nvim"

  -- Language supports
  use 'SuneelFreimuth/vim-gemtext'                                    -- Syntax support for gemini markdown
  use {                                                               -- Better syntax highlighting
      'nvim-treesitter/nvim-treesitter',
      run = function()
          local ts_update = require('nvim-treesitter.install').update({ with_sync = true })
          ts_update()
      end,
  }
  use {                                                               -- A super simple way to setup all the lsp stuff.
    'VonHeikemen/lsp-zero.nvim',
    branch = 'v1.x',
    requires = {
      -- LSP Support
      {'neovim/nvim-lspconfig'},             -- Required
      {'williamboman/mason.nvim'},           -- Optional              -- Package manager for LSPs, formatters and linters
      {'williamboman/mason-lspconfig.nvim'}, -- Optional              -- Manages the connection between what's installed with mason and the lsp config

      -- Autocompletion
      {'hrsh7th/nvim-cmp'},                  -- Required              -- Completion engine, gets what to complete from different sources (LSP for one)
      {'hrsh7th/cmp-nvim-lsp'},              -- Required
      {'hrsh7th/cmp-buffer'},                -- Optional
      {'hrsh7th/cmp-path'},                  -- Optional
      {'saadparwaiz1/cmp_luasnip'},          -- Optional
      {'hrsh7th/cmp-nvim-lua'},              -- Optional

      -- Snippets
      {'L3MON4D3/LuaSnip'},                  -- Required              -- Snippet engine
      {'rafamadriz/friendly-snippets'},      -- Optional              -- The actual snippets
    }
  }
  use {'fatih/vim-go', run = ':GoUpdateBinaries' }                    -- Nice Golang plugin
  use 'buoto/gotests-vim'                                             -- Better Golang Testing (generates tests for you)
  use({                                                               -- Test runner (WIP)
    'nvim-neotest/neotest',
    requires = {
      'nvim-neotest/neotest-jest',
    },
    config = function()
      require('neotest').setup({
        adapters = {
          require('neotest-jest')({
            jestCommand = "npm test --",
            jestConfigFile = "custom.jest.config.ts",
            env = { CI = true },
            cwd = function(path)
              return vim.fn.getcwd()
            end,
          }),
        }
      })
    end
  })

  -- Fun things
  use 'eandrju/cellular-automaton.nvim'                               -- Animations on your code
end)