local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not (vim.uv or vim.loop).fs_stat(lazypath) then local lazyrepo = "https://github.com/folke/lazy.nvim.git" local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) if vim.v.shell_error ~= 0 then vim.api.nvim_echo({ { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, { out, "WarningMsg" }, { "\nPress any key to exit..." }, }, true, {}) vim.fn.getchar() os.exit(1) end end vim.opt.rtp:prepend(lazypath) -- Start LazyVim plugins require("lazy").setup({ spec = { -- add LazyVim and import its plugins { "LazyVim/LazyVim", import = "lazyvim.plugins" }, -- import/override with your plugins { import = "plugins" }, }, defaults = { -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. lazy = false, -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, -- have outdated releases, which may break your Neovim install. version = false, -- always use the latest git commit -- version = "*", -- try installing the latest stable version for plugins that support semver }, checker = { enabled = true }, -- automatically check for plugin updates performance = { rtp = { -- disable some rtp plugins disabled_plugins = { "gzip", "matchit", "matchparen", "netrwPlugin", "tarPlugin", "tohtml", "tutor", "zipPlugin", }, }, }, cache = true, }) -- Configure status bar require("config.statusline") -- Configure Markdown rendering rules require("render-markdown").setup({ heading = { position = "inline" }, quote = { repeat_linebreak = true }, win_options = { showbreak = { default = "", rendered = " ", }, breakindent = { default = false, rendered = true, }, breakindentopt = { default = "", rendered = "", }, }, checkbox = { unchecked = { icon = "✘ " }, checked = { icon = "✔ " }, }, code = { position = "right", width = "block", right_pad = 10, }, latex = { enabled = false, }, link = { custom = { c = { pattern = "%.[ch]$", icon = " ", }, golang = { pattern = "%.go$", icon = " ", }, python = { pattern = "%.py$", icon = "󰌠 ", }, lua = { pattern = "%.lua$", icon = " ", }, -- shell = { -- pattern = "%.[sh|zsh]$", -- icon = " ", -- }, }, }, }) -- Configure TreeSitter syntax parsers require("nvim-treesitter.configs").setup({ -- A list of parser names, or "all" (the listed parsers MUST always be installed) ensure_installed = { "c", "lua", "bash", "go", "gomod", "gowork", "gosum", "json", "markdown", "markdown_inline", "python", "zig", }, -- Install parsers synchronously (only applied to `ensure_installed`) sync_install = false, -- Automatically install missing parsers when entering buffer -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally auto_install = true, -- List of parsers to ignore installing (or "all") ignore_install = { "javascript" }, ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! highlight = { enable = true, -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is -- the name of the parser) -- list of language that will be disabled disable = {}, -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files disable = function(lang, buf) local max_filesize = 100 * 1024 -- 100 KB local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) if ok and stats and stats.size > max_filesize then return true end end, -- Setting this to true will run `:h syntax` and tree-sitter at the same time. -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). -- Using this option may slow down your editor, and you may see some duplicate highlights. -- Instead of true it can also be a list of languages additional_vim_regex_highlighting = false, }, }) -- Configure Mini.AI for textobjects command require("mini.ai").setup()