local PKGS = { -- Plugin manager { url = "https://github.com/savq/paq-nvim.git" }; -- Common { url = "https://github.com/kyazdani42/nvim-web-devicons.git" }; { url = "https://github.com/ojroques/nvim-osc52.git" }; { url = "https://github.com/chentoast/marks.nvim.git" }; { url = "https://github.com/chrisgrieser/nvim-spider.git" }; { url = "https://github.com/nvim-orgmode/orgmode.git" }; { url = "https://github.com/kyazdani42/nvim-tree.lua.git" }; { url = "https://github.com/nvim-telescope/telescope.nvim.git" }; { url = "https://github.com/nvim-lua/plenary.nvim.git" }; { url = "https://github.com/kevinhwang91/nvim-ufo.git" }; { url = "https://github.com/kevinhwang91/promise-async.git" }; { url = "https://github.com/iamcco/markdown-preview.nvim.git" }; { url = "https://github.com/folke/which-key.nvim.git" }; { url = "https://github.com/tpope/vim-abolish.git" }; { url = "https://github.com/mg979/vim-visual-multi.git" }; { url = "https://github.com/echasnovski/mini.nvim.git" }; { url = "https://github.com/catppuccin/nvim.git" }; -- Status line { url = "https://github.com/akinsho/bufferline.nvim.git" }; { url = "https://github.com/nvim-lualine/lualine.nvim.git" }; -- Code colors { url = "https://github.com/lukas-reineke/indent-blankline.nvim.git" }; { url = "https://github.com/nvim-treesitter/nvim-treesitter.git" }; { url = "https://github.com/norcalli/nvim-colorizer.lua.git" }; { url = "https://github.com/mracos/mermaid.vim.git" }; -- Themes { url = "https://github.com/dracula/vim.git" }; { url = "https://github.com/folke/tokyonight.nvim.git" }; { url = "https://github.com/Mofiqul/vscode.nvim.git" }; { url = "https://github.com/sainnhe/sonokai.git" }; { url = "https://github.com/navarasu/onedark.nvim.git" }; { url = "https://github.com/Mofiqul/adwaita.nvim.git" }; { url = "https://github.com/projekt0n/github-nvim-theme.git" }; -- LCOV Coverage { url = "https://github.com/google/vim-coverage.git" }; { url = "https://github.com/google/vim-maktaba.git" }; { url = "https://github.com/editorconfig/editorconfig-vim.git" }; { url = "https://github.com/nathom/filetype.nvim.git" }; { url = "https://github.com/wfxr/minimap.vim.git" }; -- LSP { url = "https://github.com/neovim/nvim-lspconfig.git" }; { url = "https://github.com/hrsh7th/nvim-cmp.git" }; { url = "https://github.com/hrsh7th/cmp-nvim-lsp.git" }; { url = "https://github.com/hrsh7th/cmp-buffer.git" }; { url = "https://github.com/hrsh7th/cmp-path.git" }; { url = "https://github.com/hrsh7th/cmp-cmdline.git" }; { url = "https://github.com/hrsh7th/cmp-vsnip.git" }; { url = "https://github.com/hrsh7th/vim-vsnip.git" }; { url = "https://github.com/onsails/lspkind.nvim.git" }; { url = "https://github.com/folke/trouble.nvim.git" }; { url = "https://github.com/folke/lsp-colors.nvim.git" }; { url = "https://github.com/nanotee/sqls.nvim.git" }; { url = "https://github.com/lvimuser/lsp-inlayhints.nvim.git" }; { url = "https://github.com/sigmaSd/deno-nvim.git" }; { url = "https://github.com/ray-x/lsp_signature.nvim.git" }; { url = "https://github.com/Hoffs/omnisharp-extended-lsp.nvim.git" }; { url = "https://github.com/lewis6991/gitsigns.nvim.git" }; { url = "https://github.com/jose-elias-alvarez/null-ls.nvim.git" }; { url = "https://github.com/mfussenegger/nvim-dap.git" }; { url = "https://github.com/rcarriga/nvim-dap-ui.git" }; -- Dev container { url = "https://codeberg.org/esensar/nvim-dev-container.git" }; -- Games { url = "https://github.com/alec-gibson/nvim-tetris.git" }; { url = "https://github.com/seandewar/nvimesweeper.git" }; } local function clone_paq() local path = vim.fn.stdpath("data") .. "/site/pack/paqs/start/paq-nvim" if vim.fn.empty(vim.fn.glob(path)) > 0 then vim.fn.system { "git"; "clone"; "--depth=1"; "https://github.com/savq/paq-nvim.git"; path; } return true else return false end end local function bootstrap_paq() clone_paq() -- Load Paq vim.cmd("packadd paq-nvim") local paq = require("paq") -- Read and install packages paq(PKGS) paq.install() end local function init_plugins() local paq = require("paq") paq(PKGS) vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]] require("indent_blankline").setup { char_highlight_list = { "IndentBlanklineIndent1"; "IndentBlanklineIndent2"; "IndentBlanklineIndent3"; "IndentBlanklineIndent4"; "IndentBlanklineIndent5"; "IndentBlanklineIndent6"; }; show_end_of_line = true; space_char_blankline = " "; show_current_context = true; show_current_context_start = true; } require("colorizer").setup({ "*" }, { RGB = true; -- #RGB hex codes RRGGBB = true; -- #RRGGBB hex codes names = true; -- "Name" codes like Blue RRGGBBAA = false; -- #RRGGBBAA hex codes rgb_fn = false; -- CSS rgb() and rgba() functions hsl_fn = false; -- CSS hsl() and hsla() functions css = false; -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB css_fn = false; -- Enable all CSS *functions*: rgb_fn, hsl_fn -- Available modes: foreground, background mode = "foreground"; -- Set the display mode. }) vim.g.minimap_auto_start = 0 vim.g.minimap_highlight_range = 1 vim.g.minimap_highlight_search = 1 require("ufo").setup({ provider_selector = function(bufnr, filetype, buftype) return { "treesitter"; "indent" } end; }); require("catppuccin").setup({ transparent_background = true; show_end_of_line = true; term_colors = true; }) vim.o.foldcolumn = "1" vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value vim.o.foldlevelstart = 99 vim.o.foldenable = true require("osc52").setup { max_length = 0; -- Maximum length of selection (0 for no limit) silent = false; -- Disable message on successful copy trim = false; -- Trim surrounding whitespaces before copy } require("devcontainer").setup({}) require("which-key").setup({}) local orgmode = require("orgmode") orgmode.setup_ts_grammar() require("nvim-treesitter.configs").setup({ ensure_installed = { "javascript"; "typescript"; "lua"; "c_sharp"; "jsonc"; "org"; }; sync_install = false; auto_install = true; highlight = { enable = true; disable = { "markdown"; "yaml"; "sql"; "help" }; additional_vim_regex_highlighting = { "org" }; }; }) orgmode.setup({ org_default_notes_file = "~/.cache/org/refile.org" }) require("mini.surround").setup({}) require("mini.comment").setup({ -- Options which control module behavior options = { -- Whether to ignore blank lines ignore_blank_line = true; -- Whether to recognize as comment only lines without indent start_of_line = false; -- Whether to ensure single space pad for comment parts pad_comment_parts = true; }; -- Module mappings. Use `''` (empty string) to disable one. mappings = { -- Toggle comment (like `gcip` - comment inner paragraph) for both -- Normal and Visual modes comment = "gc"; -- Toggle comment on current line comment_line = "gcc"; -- Define 'comment' textobject (like `dgc` - delete whole comment block) textobject = "gc"; }; -- Hook functions to be executed at certain stage of commenting hooks = { -- Before successful commenting. Does nothing by default. pre = function() end; -- After successful commenting. Does nothing by default. post = function() end; }; }) require("gitsigns").setup { signs = { add = { hl = "GitSignsAdd"; text = "│"; numhl = "GitSignsAddNr"; linehl = "GitSignsAddLn"; }; change = { hl = "GitSignsChange"; text = "│"; numhl = "GitSignsChangeNr"; linehl = "GitSignsChangeLn"; }; delete = { hl = "GitSignsDelete"; text = "_"; numhl = "GitSignsDeleteNr"; linehl = "GitSignsDeleteLn"; }; topdelete = { hl = "GitSignsDelete"; text = "‾"; numhl = "GitSignsDeleteNr"; linehl = "GitSignsDeleteLn"; }; changedelete = { hl = "GitSignsChange"; text = "~"; numhl = "GitSignsChangeNr"; linehl = "GitSignsChangeLn"; }; untracked = { hl = "GitSignsAdd"; text = "┆"; numhl = "GitSignsAddNr"; linehl = "GitSignsAddLn"; }; }; signcolumn = true; -- Toggle with `:Gitsigns toggle_signs` numhl = true; -- Toggle with `:Gitsigns toggle_numhl` linehl = false; -- Toggle with `:Gitsigns toggle_linehl` word_diff = false; -- Toggle with `:Gitsigns toggle_word_diff` watch_gitdir = { interval = 1000; follow_files = true }; attach_to_untracked = true; current_line_blame = true; -- Toggle with `:Gitsigns toggle_current_line_blame` current_line_blame_opts = { virt_text = true; virt_text_pos = "eol"; -- 'eol' | 'overlay' | 'right_align' delay = 0; ignore_whitespace = false; }; current_line_blame_formatter = ", - "; sign_priority = 6; update_debounce = 100; status_formatter = nil; -- Use default max_file_length = 40000; -- Disable if file is longer than this (in lines) preview_config = { -- Options passed to nvim_open_win border = "single"; style = "minimal"; relative = "cursor"; row = 0; col = 1; }; yadm = { enable = false }; } require("marks").setup({ -- whether to map keybinds or not. default true default_mappings = false; -- which builtin marks to show. default {} builtin_marks = { "."; "<"; ">"; "^" }; -- whether movements cycle back to the beginning/end of buffer. default true cyclic = true; -- whether the shada file is updated after modifying uppercase marks. default false force_write_shada = false; -- how often (in ms) to redraw signs/recompute mark positions. -- higher values will have better performance but may cause visual lag, -- while lower values may cause performance penalties. default 150. refresh_interval = 250; -- sign priorities for each type of mark - builtin marks, uppercase marks, lowercase -- marks, and bookmarks. -- can be either a table with all/none of the keys, or a single number, in which case -- the priority applies to all marks. -- default 10. sign_priority = { lower = 10; upper = 15; builtin = 8; bookmark = 20 }; -- disables mark tracking for specific filetypes. default {} excluded_filetypes = {}; -- marks.nvim allows you to configure up to 10 bookmark groups, each with its own -- sign/virttext. Bookmarks can be used to group together positions and quickly move -- across multiple buffers. default sign is '!@#$%^&*()' (from 0 to 9), and -- default virt_text is "". -- bookmark_0 = { -- sign = "⚑", -- virt_text = "hello world", -- -- explicitly prompt for a virtual line annotation when setting a bookmark from this group. -- -- defaults to false. -- annotate = false, -- }, mappings = {}; }) end return { clone_paq = clone_paq; bootstrap_paq = bootstrap_paq; init_plugins = init_plugins; }