{ config, ... }: { globals = { mapleader = " "; maplocalleader = "\\"; # LazyVim auto format autoformat = true; # LazyVim picker to use. # Can be one of: telescope, fzf # Leave it to "auto" to automatically use the picker # Enabled via Extras lazyvim_picker = "auto"; # If the completion engine supports the AI source, # use that instead of inline suggestions ai_cmp = true; # LazyVim root dir detection # Each entry can be: # * the name of a detector function like `lsp` or `cwd` # * a pattern or array of patterns like `.git` or `lua`. # * a function with signature `function(buf) -> string|string[]` root_spec = [ "lsp" [ ".git" "lua" ] "cwd" ]; # Set LSP servers to be ignored when used with `util.root.detectors.lsp` # for detecting the LSP root root_lsp_ignore = [ "copilot" ]; # Hide deprecation warnings deprecation_warnings = false; # Show the current document symbols location from Trouble in lualine trouble_lualine = true; }; opts = { # Enable auto write autowrite = true; # Only set clipboard if not in SSH, to make sure the OSC 52 # integration works automatically. Requires Neovim >= 0.10.0 clipboard = "vim.env.SSH_TTY and \"\" or \"unnamedplus\""; completeopt = "menu,menuone,noselect"; # Hide * markup for bold and italic, but not markers with subsitutions conceallevel = 2; # Confirm to save changes before exiting modified buffer confirm = true; # Enable highlighting of the current line cursorline = true; # Use spaces instead of tabs expandtab = true; fillchars = { foldopen = " "; foldclose = " "; fold = " "; foldsep = " "; diff = "/"; eob = " "; }; foldlevel = 99; formatexpr = if config.plugins.conform.enable then "v:lua.require'conform'.formatexpr()" else "vim.lsp.formatexpr({ timeout_ms = 3000 })"; formatoptions = "jcroqlnt"; grepformat = "%f:%l:%c:%m"; grepprg = "rg --vimgrep"; ignorecase = true; # Preview incremental subsitute inccommand = "nosplit"; jumpoptions = "view"; # Global statusline laststatus = 3; # Wrap lines at convenient points linebreak = true; # Show some invisible characters (tabs... list = true; # Enable mouse mode mouse = "a"; # Print line number number = true; # Popup blend pumblend = 10; # Maximum number of entries in a popup pumheight = 10; # Relative line numbers relativenumber = true; # Disable the default ruler ruler = false; # Lines of context scrolloff = 4; sessionoptions = [ "buffers" "curdir" "tabpages" "winsize" "help" "globals" "skiprtp" "folds" ]; # Round indent shiftround = true; # Size of indent shiftwidth = 2; # Don't show mode since we have a statusline showmode = false; # Columns of indent sidescrolloff = 8; # Always show the signcolumn, otherwise it would shift the text each time signcolumn = "yes"; # Don't ignore case with capitals smartcase = true; # Insert indents automatically smartindent = true; spelllang = [ "en" ]; # Put new windows below current splitbelow = true; splitkeep = "screen"; # Put new windows right of current splitright = true; # Number of spaces tabs count for tabstop = 2; # True color support termguicolors = true; # Lower than default (1000) to quickly trigger which-key timeoutlen = "vim.g.vscode and 1000 or 300"; undofile = true; undolevels = 10000; # Save swap file and trigger CursorHold updatetime = 200; # Allow cursor to move where there is no text in visual block mode virtualedit = "block"; # Command-line completion mode wildmode = "longest:full,full"; # Minimum window width winminwidth = 5; # Disable line wrap wrap = false; # Fix markdown indentation settings markdown_recommended_style = 0; }; extraConfigLua = # lua '' vim.opt.shortmess:append({ W = true, I = true, c = true, C = true }) if vim.fn.has("nvim-0.10") == 1 then vim.opt.smoothscroll = true vim.opt.foldexpr = "v:lua.require'lixyvim.util'.ui.foldexpr()" vim.opt.foldmethod = "expr" vim.opt.foldtext = "" else vim.opt.foldmethod = "indent" vim.opt.foldtext = "v:lua.require'lixyvim.util'.ui.foldtext()" end ''; }