----------------------------------------------------------- -- Neovim Options Configuration ----------------------------------------------------------- -- Load NvChad default options require("nvchad.options") ----------------------------------------------------------- -- Global Variables ----------------------------------------------------------- --[[ Global configuration variables for various plugins and features: - dap_virtual_text: Debug Adapter Protocol virtual text - bookmark_sign: Visual indicator for bookmarks - skip_ts_context_commentstring_module: Treesitter comment handling - tabufline_visible: Tab line visibility control --]] local g = { dap_virtual_text = true, -- Enable virtual text for debugging bookmark_sign = "", -- Custom bookmark indicator skip_ts_context_commentstring_module = true, tabufline_visible = true, -- Show tab line } ----------------------------------------------------------- -- Editor Options ----------------------------------------------------------- --[[ Core editor settings organized by functionality: 1. Text Encoding & Clipboard 2. Code Folding & Structure 3. File Management 4. Visual Display 5. Text Formatting 6. Editor Behavior 7. Search & Navigation 8. Path & Keyword Configuration --]] local opt = { ------------------- -- Text Encoding & Clipboard ------------------- encoding = "utf-8", -- Internal encoding fileencoding = "utf-8", -- File encoding clipboard = "unnamedplus", -- System clipboard integration (WSL-aware) ------------------- -- Code Folding & Structure ------------------- foldmethod = "expr", -- Use expression for folding foldexpr = "v:lua.vim.treesitter.foldexpr()", foldcolumn = "0", -- Hide fold column foldtext = "", -- No custom fold text foldlevel = 99, -- High initial fold level foldlevelstart = 5, -- Start with some folds closed foldnestmax = 5, -- Maximum fold nesting ------------------- -- Visual Display ------------------- scrolloff = 10, -- Lines of context termguicolors = true, -- True color support emoji = false, -- Disable emoji support relativenumber = true, -- Relative line numbers cursorline = true, -- Highlight current line cursorlineopt = "both", -- Highlight line number and text ------------------- -- Text Formatting ------------------- wrap = true, -- Enable line wrapping linebreak = true, -- Break at word boundaries textwidth = 0, -- Disable auto text width wrapmargin = 0, -- No margin for wrapping tabstop = 4, -- 2 spaces per tab shiftwidth = 0, -- Match tabstop expandtab = false, -- Use spaces for tabs autoindent = true, -- Maintain indent level ------------------- -- Editor Behavior ------------------- updatetime = 100, -- Faster updates lazyredraw = false, -- Don't defer screen updates inccommand = "split", -- Live substitution preview ------------------- -- Search & Navigation ------------------- ignorecase = true, -- Case-insensitive search ------------------- -- Path & Keyword Configuration ------------------- iskeyword = vim.opt.iskeyword:append({ "_", -- Treat underscore as word char "@", -- Include @ in keywords "-", -- Include dash in keywords }), path = vim.opt.path:append({ "**", -- Recursive search "lua", -- Lua directory "src", -- Source directory }), shada = "'1000,f1,<500", -- Increase shada size for better buffer retention } ----------------------------------------------------------- -- Apply Settings ----------------------------------------------------------- -- Apply global variables for k, v in pairs(g) do vim.g[k] = v end -- Apply editor options for k, v in pairs(opt) do vim.opt[k] = v end