local opt = vim.opt local g = vim.g g.maplocalleader = ";" g.python3_host_prog = "/usr/bin/python3" opt.mouse = "a" -- mouse does annoying things for me if it's not 'a' opt.signcolumn = "yes" opt.clipboard = "" -- don't just use the system clipboard opt.wrap = false opt.breakindent = false opt.spell = false opt.list = true opt.conceallevel = 2 opt.undofile = true opt.undolevels = 10000 opt.writebackup = false opt.history = 5000 opt.shada = { "'1000", "<50", "s10", "h" } -- Tabs and Indents -- === opt.textwidth = 80 -- Text width maximum chars before wrapping opt.tabstop = 4 -- The number of spaces a tab is opt.shiftwidth = 4 -- Number of spaces to use in auto(indent) opt.smarttab = true -- Tab insert blanks according to 'shiftwidth' opt.autoindent = true -- Use same indenting on new lines opt.smartindent = true -- Smart autoindenting on new lines opt.shiftround = true -- Round indent to multiple of 'shiftwidth' -- Timing -- === -- NOTE: the which-key plugin makes this a little different. Instead of going -- to a newline after "o", the which-key panel opens. Only when we input -- something other than "o" it will go to the line and write that. I don't -- really like this behavior. We can disable this for specific triggers. -- See https://github.com/folke/which-key.nvim opt.timeout = true opt.ttimeout = true opt.timeoutlen = 250 -- Time out on mappings opt.ttimeoutlen = 10 -- Time out on key codes opt.updatetime = 300 -- Idle time to write swap and trigger CursorHold -- Searching -- === opt.ignorecase = true -- Search ignoring case opt.smartcase = true -- Keep case when searching with * opt.infercase = true -- Adjust case in insert completion mode opt.incsearch = true -- Incremental search -- Formatting -- === opt.wrap = false -- No wrap by default opt.linebreak = true -- Break long lines at 'breakat' opt.breakat = "\\ \\ ;:,!?" -- Long lines break chars opt.startofline = false -- Cursor in same column for few commands opt.splitbelow = true -- Splits open bottom right opt.splitright = true opt.breakindentopt = { shift = 2, min = 20 } opt.formatoptions = "qnlmBjp" -- see :h fo-table & :h formatoptions -- Diff -- === opt.diffopt:append { "iwhite", "indent-heuristic", "algorithm:patience" } opt.wildmode = "longest:full,full" -- Command-line completion mode -- Folds -- === opt.foldlevel = 10 -- start with all folds open -- Editor UI -- === vim.o.guifont = "FiraCode Nerd Font:h15" opt.termguicolors = true opt.shortmess = "xsTOInfFitloCaAs" opt.showmode = true -- Show mode in cmd window opt.scrolloff = 2 -- Keep at least n lines above/below opt.sidescrolloff = 0 -- Keep at least n lines left/right opt.numberwidth = 2 -- Minimum number of columns to use for the line number opt.number = true -- Show line numbers opt.relativenumber = true -- Show relative line numbers opt.ruler = true -- Default status ruler opt.list = true -- Show hidden characters opt.showtabline = 1 -- Don't change this, goes back to a vanilla vim default opt.laststatus = 3 -- Always show laststatus if vim.g.started_by_firenvim == true then opt.showtabline = 1 -- Don't show tabline in firenvim, unless multitab opt.laststatus = 1 -- Don't show laststatus in firenvim opt.wrap = true end if vim.g.neovide == true then -- fulscreen with F11 vim.api.nvim_set_keymap("n", "", ":let g:neovide_fullscreen = !g:neovide_fullscreen", {}) vim.g.neovide_underline_automatic_scaling = true -- vim.g.neovide_floating_blur_amount_x = 2.0 -- vim.g.neovide_floating_blur_amount_y = 2.0 vim.g.neovide_scroll_animation_length = 0.1 -- vim.g.neovide_cursor_animation_length = 0 -- vim.g.neovide_cursor_trail_size = 0 vim.g.neovide_hide_mouse_when_typing = true vim.g.neovide_fullscreen = true end opt.helpheight = 0 -- Disable help window resizing opt.winwidth = 30 -- Minimum width for active window opt.winminwidth = 1 -- Minimum width for inactive windows opt.winheight = 1 -- Minimum height for active window opt.winminheight = 1 -- Minimum height for inactive window opt.showcmd = false -- show command in status line opt.cmdheight = 0 opt.cmdwinheight = 5 -- Command-line lines opt.equalalways = true -- Resize windows on split or close opt.colorcolumn = "+0" -- Column highlight at textwidth's max character-limit opt.cursorline = true opt.cursorlineopt = { "number", "screenline" } opt.pumheight = 10 -- Maximum number of items to show in the popup menu opt.pumwidth = 10 -- Minimum width for the popup menu opt.pumblend = 10 -- Popup blend -- Spelling correction -- === opt.spell = false -- manually enable spell with `set spell` or `ts` opt.spelllang = "en,de_de," opt.spellsuggest = "double,50,timeout:5000" -- autocommands -- === local function augroup(name) return vim.api.nvim_create_augroup("plex_" .. name, {}) end -- highlight on yank vim.api.nvim_create_autocmd("TextYankPost", { group = augroup "highlight_yank", callback = function() vim.highlight.on_yank() end, }) -- Disable conceallevel for specific file-types. vim.api.nvim_create_autocmd("FileType", { group = augroup "fix_conceallevel", pattern = { "latex", "tex" }, callback = function() vim.opt_local.conceallevel = 0 end, }) -- Resize splits if window got resized vim.api.nvim_create_autocmd("VimResized", { group = augroup "resize_splits", callback = function() vim.cmd "wincmd =" end, }) -- Wrap and enable spell-checker in text filetypes -- also enable wrap on these text filetypes vim.api.nvim_create_autocmd("FileType", { group = augroup "spell_conceal", pattern = { "gitcommit", "markdown", "tex", "latex", "norg" }, callback = function() vim.opt_local.spell = true vim.opt_local.conceallevel = 0 vim.opt.wrap = true -- vim.opt.formatoptions = "" end, }) -- map resizing for firenvim if vim.g.started_by_firenvim == true then vim.keymap.set("n", "", function() vim.o.lines = vim.o.lines + 1 end, { expr = true, desc = "Make Display bigger" }) vim.keymap.set("n", "", function() vim.o.lines = vim.o.lines - 1 end, { expr = true, desc = "Make Display smaller" }) end -- alias filetypes vim.filetype.add { extension = { tera = "html" } } vim.filetype.add { extension = { plaintex = "tex" } }