Skip to content
冷酔閑吟 edited this page Jan 27, 2023 · 44 revisions

Internal relationship

The plugin dependency diagram is as follows (click to enlarge):

dep-diag

  • Legend:
┌─┐             ┌─┐
│A│ ──────────► │B│     Arrow indicates "B is loaded after A"
└─┘             └─┘

┌─┐             ┌─┐
│A│ ─  ─  ─  ─► │B│     Dashed line indicates "B depends on A, or A must be loaded before B"
└─┘             └─┘

* Neovim starts loading from `init`

* Light blue circles are events

* Dark blue circles are plugin names, where:
  * Octagons are optional plugins

* Green circle is the language server's core plugin

* Self-contained plugins will load themselves when needed
Source code in graphviz format

digraph plugins_load_seq {
	ratio = fill;
	node [style=filled];
	init -> opt [color="0.649 0.701 0.701"];
	init -> start [color="0.649 0.701 0.701"];
	init -> "self-contained" [color="0.649 0.701 0.701"];
	start -> "catppuccin" [color="0.649 0.701 0.701"];

	opt -> VeryLazy [color="0.619 0.714 0.714"];
	opt -> BufNewFile [color="0.619 0.714 0.714"];
	VeryLazy -> BufWinEnter [color="0.619 0.714 0.714"];
	BufWinEnter -> UIEnter [color="0.619 0.714 0.714"];
	UIEnter -> BufAdd [color="0.619 0.714 0.714"];
	BufAdd -> BufReadPre [color="0.619 0.714 0.714"];
	BufReadPre -> BufReadPost [color="0.619 0.714 0.714"];
	BufReadPost -> LspAttach [color="0.619 0.714 0.714"];
	LspAttach -> InsertEnter [color="0.619 0.714 0.714"];

	VeryLazy -> "accelerated-jk.nvim" [color="0.649 0.701 0.701"];
	VeryLazy -> "copilot.lua" [color="0.649 0.701 0.701"];
	"copilot.lua" -> "copilot-cmp" [color="0.649 0.701 0.701"];
	VeryLazy -> "which-key.nvim" [color="0.649 0.701 0.701"];
	VeryLazy -> "dressing.nvim" [color="0.649 0.701 0.701"];
	VeryLazy -> "nvim-notify" [color="0.649 0.701 0.701"];

	BufWinEnter -> "alpha-nvim" [color="0.649 0.701 0.701"];

	BufNewFile -> "gitsigns.nvim" [color="0.649 0.701 0.701"];
	"mason-lspconfig.nvim" -> "mason.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"mason-tool-installer.nvim" -> "mason.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"efmls-configs-nvim" -> "mason.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"efmls-configs-nvim" -> "nvim-lspconfig" [color="0.649 0.701 0.701" style="dashed"];
	BufNewFile -> "nvim-lspconfig" [color="0.649 0.701 0.701"];
	BufNewFile -> "bufferline.nvim" [color="0.649 0.701 0.701"];
	BufNewFile -> "lualine.nvim" [color="0.649 0.701 0.701"];
	BufNewFile -> "nvim-comment" [color="0.649 0.701 0.701"];

	UIEnter -> "toggleterm.nvim" [color="0.649 0.701 0.701"];

	BufAdd -> "nvim-lspconfig" [color="0.649 0.701 0.701"];
	BufAdd -> "bufferline.nvim" [color="0.649 0.701 0.701"];
	BufAdd -> "lualine.nvim" [color="0.649 0.701 0.701"];

	BufReadPre -> "nvim-lspconfig" [color="0.649 0.701 0.701"];
	"nvim-lspconfig" -> "lspsaga.nvim" [color="0.649 0.701 0.701"];
	"nvim-lspconfig" -> "lsp_signature.nvim" [color="0.649 0.701 0.701"];
	"nvim-lspconfig" -> "lualine.nvim" [color="0.649 0.701 0.701"];
	"lspsaga.nvim" -> "lualine.nvim" [color="0.649 0.701 0.701"];
	BufReadPre -> "nvim-comment" [color="0.649 0.701 0.701"];

	BufReadPost -> "vim-illuminate" [color="0.649 0.701 0.701"];
	BufReadPost -> "nvim-treesitter" [color="0.649 0.701 0.701"];
	BufReadPost -> "clever-f.vim" [color="0.649 0.701 0.701"];
	BufReadPost -> "hop.nvim" [color="0.649 0.701 0.701"];
	BufReadPost -> "neoscroll.nvim" [color="0.649 0.701 0.701"];
	BufReadPost -> "better-escape.nvim" [color="0.649 0.701 0.701"];
	BufReadPost -> "nvim-bufdel" [color="0.649 0.701 0.701"];
	BufReadPost -> "stabilize.nvim" [color="0.649 0.701 0.701"];
	BufReadPost -> "smartyank.nvim" [color="0.649 0.701 0.701"];
	BufReadPost -> "vim-im-select (opt)" [color="0.649 0.701 0.701"];
	BufReadPost -> "project.nvim" [color="0.649 0.701 0.701"];
	BufReadPost -> "gitsigns.nvim" [color="0.649 0.701 0.701"];
	BufReadPost -> "indent-blankline.nvim" [color="0.649 0.701 0.701"];
	BufReadPost -> "bufferline.nvim" [color="0.649 0.701 0.701"];
	BufReadPost -> "nvim-scrollview" [color="0.649 0.701 0.701"];
	BufReadPost -> "fidget.nvim" [color="0.649 0.701 0.701"];
	"nvim-treesitter" -> "nvim-treesitter-textobjects" [color="0.649 0.701 0.701"];
	"nvim-treesitter-textobjects" -> "nvim-ts-rainbow" [color="0.649 0.701 0.701"];
	"nvim-ts-rainbow" -> "nvim-ts-context-commentstring" [color="0.649 0.701 0.701"];
	"nvim-ts-context-commentstring" -> "nvim-ts-hint-textobject" [color="0.649 0.701 0.701"];
	"nvim-ts-hint-textobject" -> "nvim-ts-autotag" [color="0.649 0.701 0.701"];
	"nvim-ts-autotag" -> "vim-matchup" [color="0.649 0.701 0.701"];
	"vim-matchup" -> "nvim-colorizer.lua" [color="0.649 0.701 0.701"];
	"nvim-colorizer.lua" -> "tabout.nvim" [color="0.649 0.701 0.701"];

	InsertEnter -> "nvim-cmp" [color="0.649 0.701 0.701"];
	InsertEnter -> "vim-cool" [color="0.649 0.701 0.701"];
	"lspkind.nvim" -> "nvim-cmp" [color="0.649 0.701 0.701" style="dashed"];
	"LuaSnip" -> "cmp_luasnip" [color="0.649 0.701 0.701" style="dashed"];
	"cmp-under-comparator" -> "nvim-cmp" [color="0.649 0.701 0.701" style="dashed"];
	"cmp_luasnip" -> "cmp-nvim-lsp" [color="0.649 0.701 0.701" style="dashed"];
	"cmp-nvim-lsp" -> "cmp-nvim-lua" [color="0.649 0.701 0.701" style="dashed"];
	"cmp-nvim-lua" -> "cmp-tmux" [color="0.649 0.701 0.701" style="dashed"];
	"cmp-tmux" -> "cmp-path" [color="0.649 0.701 0.701" style="dashed"];
	"cmp-path" -> "cmp-spell" [color="0.649 0.701 0.701" style="dashed"];
	"cmp-spell" -> "cmp-buffer" [color="0.649 0.701 0.701" style="dashed"];
	"cmp-buffer" -> "cmp-latex-symbols" [color="0.649 0.701 0.701" style="dashed"];
	"cmp-latex-symbols" -> "cmp-tabnine (opt)" [color="0.649 0.701 0.701" style="dashed"];
	"cmp-tabnine (opt)" -> "nvim-cmp" [color="0.649 0.701 0.701" style="dashed"];
	"friendly-snippets" -> "LuaSnip" [color="0.649 0.701 0.701" style="dashed"];
	"nvim-cmp" -> "nvim-autopairs" [color="0.649 0.701 0.701"];

	LspAttach -> "neodim" [color="0.649 0.701 0.701"];
	"nvim-treesitter" -> "neodim" [color="0.649 0.701 0.701" style="dashed"];

	"self-contained" -> "vim-easy-align" [color="0.649 0.701 0.701"];
	"self-contained" -> "auto-session" [color="0.649 0.701 0.701"];
	"self-contained" -> "nvim-dap" [color="0.649 0.701 0.701"];
	"self-contained" -> "nord.nvim" [color="0.649 0.701 0.701"];
	"self-contained" -> "edge" [color="0.649 0.701 0.701"];
	"nvim-dap" -> "nvim-dap-ui" [color="0.649 0.701 0.701"];
	"self-contained" -> "vim-fugitive" [color="0.649 0.701 0.701"];
	"self-contained" -> "specs.nvim" [color="0.649 0.701 0.701"];
	"self-contained" -> "diffview.nvim" [color="0.649 0.701 0.701"];
	"self-contained" -> "vim-go" [color="0.649 0.701 0.701"];
	"plenary.nvim" -> "rust-tools.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"self-contained" -> "rust-tools.nvim" [color="0.649 0.701 0.701"];
	"self-contained" -> "orgmode.nvim" [color="0.649 0.701 0.701"];
	"self-contained" -> "markdown-preview.nvim" [color="0.649 0.701 0.701"];
	"self-contained" -> "csv.vim" [color="0.649 0.701 0.701"];
	"self-contained" -> "plenary.nvim" [color="0.649 0.701 0.701"];
	"plenary.nvim" -> "popup.nvim" [color="0.649 0.701 0.701"];
	"nvim-web-devicons" -> "popup.nvim" [color="0.649 0.701 0.701"];
	"popup.nvim" -> "telescope-undo.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"telescope-undo.nvim" -> "telescope.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"plenary.nvim" -> "telescope.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"telescope.nvim" -> "telescope-fzf-native.nvim" [color="0.649 0.701 0.701"];
	"telescope-fzf-native.nvim" -> "telescope-frecency.nvim" [color="0.649 0.701 0.701"];
	"sqlite.lua" -> "telescope-frecency.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"telescope-frecency.nvim" -> "telescope-zoxide" [color="0.649 0.701 0.701"];
	"telescope-zoxide" -> "telescope-live-grep-args.nvim" [color="0.649 0.701 0.701"];
	"self-contained" -> "sniprun" [color="0.649 0.701 0.701"];
	"self-contained" -> "vim-startuptime" [color="0.649 0.701 0.701"];
	"fzy-lua-native" -> "wilder.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"self-contained" -> "wilder.nvim" [color="0.649 0.701 0.701"];
	"dressing.nvim" -> "legendary.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"sqlite.lua" -> "legendary.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"which-key.nvim" -> "legendary.nvim" [color="0.649 0.701 0.701" style="dashed"];
	"self-contained" -> "legendary.nvim" [color="0.649 0.701 0.701"];
	"self-contained" -> "nvim-tree.lua" [color="0.649 0.701 0.701"];
	"self-contained" -> "trouble.nvim" [color="0.649 0.701 0.701"];


opt [color="0.650 0.200 1.000"];
start [color="0.650 0.200 1.000"];
"self-contained" [color="0.650 0.200 1.000"];
"efmls-configs-nvim" [color="0.650 0.200 1.000"];
"nvim-lspconfig" [color="0.408 0.498 1.000"];
"mason-lspconfig.nvim" [color="0.650 0.200 1.000"];
"mason-tool-installer.nvim" [color="0.650 0.200 1.000"];
"mason.nvim" [color="0.650 0.200 1.000"];
"nvim-comment" [color="0.650 0.200 1.000"];
"which-key.nvim" [color="0.650 0.200 1.000"];
"nvim-web-devicons" [color="0.650 0.200 1.000"];
"nord.nvim" [color="0.650 0.200 1.000"];
"edge" [color="0.650 0.200 1.000"];
"catppuccin" [color="0.650 0.200 1.000"];
"nvim-notify" [color="0.650 0.200 1.000"];
"lspsaga.nvim" [color="0.650 0.200 1.000"];
"lsp_signature.nvim" [color="0.650 0.200 1.000"];
"nvim-cmp" [color="0.650 0.200 1.000"];
"lspkind.nvim" [color="0.650 0.200 1.000"];
"cmp-under-comparator" [color="0.650 0.200 1.000"];
"LuaSnip" [color="0.650 0.200 1.000"];
"cmp_luasnip" [color="0.650 0.200 1.000"];
"cmp-nvim-lsp" [color="0.650 0.200 1.000"];
"cmp-nvim-lua" [color="0.650 0.200 1.000"];
"cmp-tmux" [color="0.650 0.200 1.000"];
"cmp-path" [color="0.650 0.200 1.000"];
"cmp-spell" [color="0.650 0.200 1.000"];
"cmp-buffer" [color="0.650 0.200 1.000"];
"cmp-tabnine (opt)" [color="0.650 0.200 1.000" shape=doubleoctagon];
"cmp-latex-symbols" [color="0.650 0.200 1.000"];
"friendly-snippets" [color="0.650 0.200 1.000"];
"nvim-autopairs" [color="0.650 0.200 1.000"];
"copilot.lua" [color="0.650 0.200 1.000"];
"copilot-cmp" [color="0.650 0.200 1.000"];
"vim-easy-align" [color="0.650 0.200 1.000"];
"vim-illuminate" [color="0.650 0.200 1.000"];
"nvim-treesitter" [color="0.650 0.200 1.000"];
"nvim-treesitter-textobjects" [color="0.650 0.200 1.000"];
"nvim-ts-rainbow" [color="0.650 0.200 1.000"];
"nvim-ts-context-commentstring" [color="0.650 0.200 1.000"];
"nvim-ts-hint-textobject" [color="0.650 0.200 1.000"];
"nvim-ts-autotag" [color="0.650 0.200 1.000"];
"vim-matchup" [color="0.650 0.200 1.000"];
"accelerated-jk.nvim" [color="0.650 0.200 1.000"];
"clever-f.vim" [color="0.650 0.200 1.000"];
"vim-cool" [color="0.650 0.200 1.000"];
"hop.nvim" [color="0.650 0.200 1.000"];
"neoscroll.nvim" [color="0.650 0.200 1.000"];
"toggleterm.nvim" [color="0.650 0.200 1.000"];
"nvim-colorizer.lua" [color="0.650 0.200 1.000"];
"auto-session" [color="0.650 0.200 1.000"];
"better-escape.nvim" [color="0.650 0.200 1.000"];
"nvim-dap" [color="0.650 0.200 1.000"];
"nvim-dap-ui" [color="0.650 0.200 1.000"];
"vim-fugitive" [color="0.650 0.200 1.000"];
"nvim-bufdel" [color="0.650 0.200 1.000"];
"specs.nvim" [color="0.650 0.200 1.000"];
"tabout.nvim" [color="0.650 0.200 1.000"];
"diffview.nvim" [color="0.650 0.200 1.000"];
"stabilize.nvim" [color="0.650 0.200 1.000"];
"smartyank.nvim" [color="0.650 0.200 1.000"];
"vim-im-select (opt)" [color="0.650 0.200 1.000" shape=doubleoctagon];
"vim-go" [color="0.650 0.200 1.000"];
"rust-tools.nvim" [color="0.650 0.200 1.000"];
"orgmode.nvim" [color="0.650 0.200 1.000"];
"markdown-preview.nvim" [color="0.650 0.200 1.000"];
"csv.vim" [color="0.650 0.200 1.000"];
"plenary.nvim" [color="0.650 0.200 1.000"];
"telescope.nvim" [color="0.650 0.200 1.000"];
"popup.nvim" [color="0.650 0.200 1.000"];
"telescope-undo.nvim" [color="0.650 0.200 1.000"];
"project.nvim" [color="0.650 0.200 1.000"];
"telescope-fzf-native.nvim" [color="0.650 0.200 1.000"];
"telescope-frecency.nvim" [color="0.650 0.200 1.000"];
"sqlite.lua" [color="0.650 0.200 1.000"];
"telescope-zoxide" [color="0.650 0.200 1.000"];
"telescope-live-grep-args.nvim" [color="0.650 0.200 1.000"];
"sniprun" [color="0.650 0.200 1.000"];
"trouble.nvim" [color="0.650 0.200 1.000"];
"vim-startuptime" [color="0.650 0.200 1.000"];
"wilder.nvim" [color="0.650 0.200 1.000"];
"legendary.nvim" [color="0.650 0.200 1.000"];
"dressing.nvim" [color="0.650 0.200 1.000"];
"neodim" [color="0.650 0.200 1.000"];
"lualine.nvim" [color="0.650 0.200 1.000"];
"alpha-nvim" [color="0.650 0.200 1.000"];
"nvim-tree.lua" [color="0.650 0.200 1.000"];
"gitsigns.nvim" [color="0.650 0.200 1.000"];
"indent-blankline.nvim" [color="0.650 0.200 1.000"];
"bufferline.nvim" [color="0.650 0.200 1.000"];
"nvim-scrollview" [color="0.650 0.200 1.000"];
"fidget.nvim" [color="0.650 0.200 1.000"];
"fzy-lua-native" [color="0.650 0.200 1.000"];

BufReadPre [color="0.590 0.273 1.000"];
BufWinEnter [color="0.590 0.273 1.000"];
BufReadPost [color="0.590 0.273 1.000"];
BufAdd [color="0.590 0.273 1.000"];
InsertEnter [color="0.590 0.273 1.000"];
VeryLazy [color="0.590 0.273 1.000"];
UIEnter [color="0.590 0.273 1.000"];
BufNewFile [color="0.590 0.273 1.000"];
LspAttach [color="0.590 0.273 1.000"];
}

UI

Name Effect
kyazdani42/nvim-web-devicons Provide icons
shaunsingh/nord.nvim nord theme
sainnhe/edge My light/dark theme
catppuccin/nvim A soothing pastel dark theme
zbirenbaum/neodim Dimming the unused symbols
rcarriga/nvim-notify notify with animation
hoob3rt/lualine.nvim Minimal, fast but customizable line
goolord/alpha-nvim Dashboard for Neovim
kyazdani42/nvim-tree.lua Replacement of Nerdtree
lewis6991/gitsigns.nvim Show git status in nvim
lukas-reineke/indent-blankline.nvim Show indent with different level
akinsho/bufferline.nvim Tab and buffer management
dstein64/nvim-scrollview scrollable scrollbar
j-hui/fidget.nvim Show lsp real-time status

Tools

Name Effect
nvim-lua/popup.nvim Required by telescope.nvim
nvim-lua/plenary.nvim Required by telescope.nvim
tami5/sqlite.lua Required by telescope-frecency.nvim
nvim-telescope/telescope.nvim Find, Filter, Preview, Pick
debugloop/telescope-undo.nvim Show undo history in telescope window
ahmedkhalf/project.nvim Manage projects
nvim-telescope/telescope-fzf-native.nvim Fzf search
nvim-telescope/telescope-frecency.nvim Frequent and recent file jump
nvim-telescope/telescope-zoxide Jump to directory recorded by zoxide
nvim-telescope/telescope-live-grep-args.nvim Supprt args when using live_grep
michaelb/sniprun Run code snippet quickly
folke/trouble.nvim Show code troubles etc
dstein64/vim-startuptime Profiling starup time quickly
gelguy/wilder.nvim More useful wild menu
folke/which-key.nvim Help you learn keybindings
mrjones2014/legendary.nvim VSCode-like command panel
stevearc/dressing.nvim Integrate legendary.nvim with telescope

Editor

Name Effect
junegunn/vim-easy-align Easy alignment
RRethy/vim-illuminate Highlight cursor word
terrortylor/nvim-comment Comment code quickly
nvim-treesitter/nvim-treesitter Super powerful code highlighter
nvim-treesitter/nvim-treesitter-textobjects Move between textobjects
p00f/nvim-ts-rainbow Rainbow brackets
JoosepAlviste/nvim-ts-context-commentstring Context comment
mfussenegger/nvim-ts-hint-textobject Select textobject like hop.nvim
windwp/nvim-ts-autotag Faster vim-closetag
andymass/vim-matchup Better matchup for %
rainbowhxch/accelerated-jk.nvim Accelerated j/k
rhysd/clever-f.vim Extended f, F, t and T key mappings for Vim.
romainl/vim-cool Auto clear highlight after search
phaazon/hop.nvim easymotion's replacement
karb94/neoscroll.nvim Smooth scroll
akinsho/toggleterm.nvim Toggled terminal
norcalli/nvim-colorizer.lua Display detected color
rmagatti/auto-session Session management
max397574/better-escape.nvim Replace esc with jk
mfussenegger/nvim-dap Dap mode
rcarriga/nvim-dap-ui UI for dap mode
tpope/vim-fugitive Git operations inside neovim
ojroques/nvim-bufdel Close buffer gently with bufferline.nvim
edluffy/specs.nvim Hint cursor place when jump multiple lines
abecodes/tabout.nvim Tabout between bracket
sindrets/diffview.nvim Git diff view
luukvbaal/stabilize.nvim Stabilize buffer content on window toggle events
ibhagwan/smartyank.nvim Provide tmux/OSC52 support

Completion

Name Effect
neovim/nvim-lspconfig Neovim native LSP configuration
creativenull/efmls-configs-nvim efm-langserver config set
williamboman/mason.nvim Package manager for LSP, DAP servers, linters and formatters
williamboman/mason-lspconfig.nvim Use lspconfig with mason.nvim
WhoIsSethDaniel/mason-tool-installer.nvim Install and upgrade third party tools automatically
glepnir/lspsaga.nvim Better lsp function
ray-x/lsp_signature.nvim Show signature when completing function parameters
hrsh7th/nvim-cmp Auto completion plugin for nvim
onsails/lspkind.nvim VSCode-like pictograms for completion items
lukas-reineke/cmp-under-comparator more underline completion for nvim-cmp
saadparwaiz1/cmp_luasnip luasnip source for nvim-cmp
hrsh7th/cmp-nvim-lsp lsp source for nvim-cmp
hrsh7th/cmp-nvim-lua lua source for nvim-cmp
andersevenrud/cmp-tmux tmux source for nvim-cmp
hrsh7th/cmp-path path source for nvim-cmp
f3fora/cmp-spell spell source for nvim-cmp
hrsh7th/cmp-buffer buffer source for nvim-cmp
kdheepak/cmp-latex-symbols latex symbols source for nvim-cmp
L3MON4D3/LuaSnip snippets completion engine for nvim-cmp
rafamadriz/friendly-snippets snippets source for LusSnip
windwp/nvim-autopairs Completion pairs
zbirenbaum/copilot.lua Copilot neovim port with pure lua implementation
zbirenbaum/copilot-cmp Copilot source for nvim-cmp

Lang

Name Effect
fatih/vim-go Plugin for go
simrat39/rust-tools.nvim Plugin for rust
iamcco/markdown-preview.nvim Markdown-preview out of box
chrisbra/csv.vim Plugin for csv
Clone this wiki locally