diff --git a/lua/custom/init.lua b/lua/custom/init.lua index f6177c7..e2517c6 100644 --- a/lua/custom/init.lua +++ b/lua/custom/init.lua @@ -10,7 +10,7 @@ opt.spelllang = "en,de" opt.clipboard = "" -- don't just use the system clipboard opt.wrap = false opt.breakindent = false -opt.spell = true +opt.spell = false opt.list = true opt.conceallevel = 2 opt.undofile = true @@ -33,9 +33,9 @@ opt.shiftround = true -- Round indent to multiple of 'shiftwidth' -- Timing -- === opt.ttimeout = true -opt.timeoutlen = 500 -- Time out on mappings -opt.ttimeoutlen = 10 -- Time out on key codes -opt.updatetime = 500 -- Idle time to write swap and trigger CursorHold +opt.timeoutlen = 500 -- Time out on mappings +opt.ttimeoutlen = 10 -- Time out on key codes +opt.updatetime = 500 -- Idle time to write swap and trigger CursorHold -- Searching -- === @@ -47,14 +47,14 @@ 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.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 = "cqanlmBjp" -- see :h fo-table & :h formatoptions +opt.formatoptions = "qnlmBjp" -- see :h fo-table & :h formatoptions -- Diff -- === @@ -67,69 +67,78 @@ opt.wildmode = 'longest:full,full' -- Command-line completion mode 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.ruler = false -- Default status ruler -opt.list = true -- Show hidden characters +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.ruler = false -- Default status ruler +opt.list = true -- Show hidden characters if vim.g.started_by_firenvim == false then - opt.showtabline = 3 -- Always show the tabs line - opt.laststatus = 3 -- Always show laststatus + opt.showtabline = 3 -- Always show the tabs line + opt.laststatus = 3 -- Always show laststatus else - opt.showtabline = 1 -- Don't show tabline in firenvim, unless multitab - opt.laststatus = 3 -- Don't show laststatus in firenvim + opt.showtabline = 1 -- Don't show tabline in firenvim, unless multitab + opt.laststatus = 3 -- Don't show laststatus in firenvim 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.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.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.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 +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 --- autocommands +-- autocommands -- === local function augroup(name) - return vim.api.nvim_create_augroup("plex_" .. 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, + 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, + 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, + group = augroup('resize_splits'), + callback = function() + vim.cmd('wincmd =') + end, }) +-- Wrap and enable spell-checker in 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 + end, +}) diff --git a/lua/custom/mappings.lua b/lua/custom/mappings.lua index c1b3b8d..f38301e 100644 --- a/lua/custom/mappings.lua +++ b/lua/custom/mappings.lua @@ -1,41 +1,44 @@ ---@type MappingsTable local M = {} +-- NOTE: The mappings here are case sensitive!!! Removing a specific default +-- mapping requires the same case here! M.disabled = { n = { [""] = "", [""] = "", [""] = "", - ["n"] = "", - ["rn"] = "", - [""] = "", - [""] = "", - ["x"] = "", - ["/"] = "", - ["ra"] = "", + ["n"] = "", + ["rn"] = "", + [""] = "", + [""] = "", + ["x"] = "", + ["/"] = "", + ["ra"] = "", ["[d"] = "", ["]d"] = "", ["[c"] = "", ["]c"] = "", - ["h"] = "", - ["ff"] = "", - ["fm"] = "", - ["fa"] = "", - ["fw"] = "", - ["fb"] = "", - ["fh"] = "", - ["fo"] = "", - ["fz"] = "", - ["cm"] = "", - ["gt"] = "", - ["pt"] = "", - ["th"] = "", - ["ma"] = "", - ["v"] = "", - ["rh"] = "", - ["ph"] = "", - ["gb"] = "", - ["td"] = "", + ["h"] = "", + ["ff"] = "", + ["fm"] = "", + ["fa"] = "", + ["fw"] = "", + ["fb"] = "", + ["fh"] = "", + ["fo"] = "", + ["fz"] = "", + ["cm"] = "", + ["gt"] = "", + ["pt"] = "", + ["th"] = "", + ["ma"] = "", + ["v"] = "", + ["rh"] = "", + ["ph"] = "", + ["gb"] = "", + ["td"] = "", + ["wk"] = "", ["#"] = "", ["?"] = "", }, @@ -45,7 +48,7 @@ M.disabled = { v = { ["#"] = "", ["?"] = "", - ["/"] = "", + ["/"] = "", }, } @@ -54,7 +57,7 @@ M.tabufline = { n = { -- cycle through buffers - [""] = { + [""] = { function() require("nvchad.tabufline").tabuflineNext() end, @@ -83,7 +86,7 @@ M.comment = { -- toggle comment in both modes n = { - ["v"] = { + ["v"] = { function() require("Comment.api").toggle.linewise.current() end, @@ -92,8 +95,8 @@ M.comment = { }, v = { - ["v"] = { - "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", + ["v"] = { + "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", "Toggle comment", }, }, @@ -102,44 +105,44 @@ M.comment = { M.leap = { plugin = true, n = { - ["s"] = { - "(leap-forward)", + ["s"] = { + "(leap-forward)", "leap forward", }, - ["S"] = { - "(leap-backward)", + ["S"] = { + "(leap-backward)", "leap backward", }, - ["gs"] = { - "(leap-from-window)", + ["gs"] = { + "(leap-from-window)", "leap from window", }, }, x = { - ["s"] = { - "(leap-forward)", + ["s"] = { + "(leap-forward)", "leap forward", }, - ["S"] = { - "(leap-backward)", + ["S"] = { + "(leap-backward)", "leap forward", }, - ["gs"] = { - "(leap-from-window)", + ["gs"] = { + "(leap-from-window)", "leap from window", }, }, o = { - ["s"] = { - "(leap-forward)", + ["s"] = { + "(leap-forward)", "leap forward", }, - ["S"] = { - "(leap-backward)", + ["S"] = { + "(leap-backward)", "leap forward", }, - ["gs"] = { - "(leap-from-window)", + ["gs"] = { + "(leap-from-window)", "leap from window", }, }, @@ -148,21 +151,21 @@ M.leap = { M.lazygit = { plugin = true, n = { - ["gg"] = { " LazyGit ", "Open LazyGit" }, + ["gg"] = { " LazyGit ", "Open LazyGit" }, }, } M.lspconfig = { plugin = true, n = { - ["ck"] = { + ["[d"] = { function() vim.diagnostic.goto_prev { float = { border = "rounded" } } end, "Goto prev", }, - ["cj"] = { + ["]d"] = { function() vim.diagnostic.goto_next { float = { border = "rounded" } } end, @@ -174,14 +177,14 @@ M.lspconfig = { M.clipboard = { plugin = false, n = { - ["y"] = { '"+y', "yank to system" }, - ["Y"] = { '"+Y', "yank to system" }, - ["yy"] = { '"+y', "yank to system" }, + ["y"] = { '"+y', "yank to system" }, + ["Y"] = { '"+Y', "yank to system" }, + ["yy"] = { '"+y', "yank to system" }, }, v = { - ["y"] = { '"+y', "yank to system" }, - ["Y"] = { '"+Y', "yank to system" }, - ["yy"] = { '"+y', "yank to system" }, + ["y"] = { '"+y', "yank to system" }, + ["Y"] = { '"+Y', "yank to system" }, + ["yy"] = { '"+y', "yank to system" }, }, } @@ -189,25 +192,25 @@ M.telescope = { plugin = true, n = { -- find - ["ff"] = { " Telescope find_files ", "Find files" }, - ["fa"] = { " Telescope find_files follow=true no_ignore=true hidden=true ", "Find all" }, - ["fw"] = { " Telescope live_grep ", "Live grep" }, - ["fb"] = { " Telescope buffers ", "Find buffers" }, - ["fh"] = { " Telescope help_tags ", "Help page" }, - ["fo"] = { " Telescope oldfiles ", "Find oldfiles" }, - ["fz"] = { " Telescope current_buffer_fuzzy_find ", "Find in current buffer" }, + ["ff"] = { " Telescope find_files ", "Find files" }, + ["fa"] = { " Telescope find_files follow=true no_ignore=true hidden=true ", "Find all" }, + ["fw"] = { " Telescope live_grep ", "Live grep" }, + ["fb"] = { " Telescope buffers ", "Find buffers" }, + ["fh"] = { " Telescope help_tags ", "Help page" }, + ["fo"] = { " Telescope oldfiles ", "Find oldfiles" }, + ["fz"] = { " Telescope current_buffer_fuzzy_find ", "Find in current buffer" }, -- git - ["cm"] = { " Telescope git_commits ", "Git commits" }, - ["gt"] = { " Telescope git_status ", "Git status" }, + ["cm"] = { " Telescope git_commits ", "Git commits" }, + ["gt"] = { " Telescope git_status ", "Git status" }, -- pick a hidden term - ["pt"] = { " Telescope terms ", "Pick hidden term" }, + ["pt"] = { " Telescope terms ", "Pick hidden term" }, -- theme switcher - ["th"] = { " Telescope themes ", "Nvchad themes" }, + ["th"] = { " Telescope themes ", "Nvchad themes" }, - ["ma"] = { " Telescope marks ", "telescope bookmarks" }, + ["ma"] = { " Telescope marks ", "telescope bookmarks" }, }, } @@ -239,11 +242,11 @@ M.nvimtree = { plugin = true, n = { -- toggle - [""] = { " NvimTreeToggle ", "Toggle nvimtree" }, - [""] = { " NvimTreeToggle ", "Toggle nvimtree" }, + [""] = { " NvimTreeToggle ", "Toggle nvimtree" }, + [""] = { " NvimTreeToggle ", "Toggle nvimtree" }, -- focus - ["e"] = { " NvimTreeFocus ", "Focus nvimtree" }, + ["e"] = { " NvimTreeFocus ", "Focus nvimtree" }, }, } @@ -255,14 +258,14 @@ M.movements = { [""] = { "", "big step down" }, -- go to beginning and end - [""] = { "", "Beginning of line" }, - [""] = { "", "End of line" }, + [""] = { "", "Beginning of line" }, + [""] = { "", "End of line" }, -- navigate within insert mode - [""] = { "", "Move left" }, - [""] = { "", "Move right" }, - [""] = { "", "Move down" }, - [""] = { "", "Move up" }, + [""] = { "", "Move left" }, + [""] = { "", "Move right" }, + [""] = { "", "Move down" }, + [""] = { "", "Move up" }, }, n = { --big move @@ -270,15 +273,15 @@ M.movements = { [""] = { "", "big step down" }, -- go to beginning and end - ["H"] = { "", "Beginning of line" }, - ["L"] = { "", "End of line" }, + ["H"] = { "", "Beginning of line" }, + ["L"] = { "", "End of line" }, -- go to mark with "#" ["#"] = { "'", "go to mark" }, -- spell - ["zn"] = { "]s", "go to next spelling mark"}, - ["zN"] = { "[s", "go to last spelling mark"}, + ["]s"] = { "]s", "go to next spelling mark"}, + ["[s"] = { "[s", "go to last spelling mark"}, }, v = { --big move @@ -286,8 +289,8 @@ M.movements = { [""] = { "", "big step down" }, -- go to beginning and end - ["H"] = { "", "Beginning of line" }, - ["L"] = { "", "End of line" }, + ["H"] = { "", "Beginning of line" }, + ["L"] = { "", "End of line" }, }, t = { [""] = { @@ -301,24 +304,24 @@ M.edit = { plugin = false, n = { -- easy newline - ["OO"] = { "O", "insert a line above", opts = { nowait = false } }, - ["oo"] = { "o", "insert a line below", opts = { nowait = false } }, + ["OO"] = { "O", "insert a line above", opts = { nowait = false } }, + ["oo"] = { "o", "insert a line below", opts = { nowait = false } }, -- split and join lines -- "J" for join is defaul ["S"] = { - "il", + "il", "split line", }, -- do something useful with the arrows - [""] = { " move-2", "Move line up", opts = { expr = true } }, - [""] = { " move+", "Move line down", opts = { expr = true } }, - [""] = { " << ", "Less indentation", opts = { expr = true } }, - [""] = { " >> ", "More indentation", opts = { expr = true } }, + [""] = { " move-2", "Move line up", opts = { expr = true } }, + [""] = { " move+", "Move line down", opts = { expr = true } }, + [""] = { " << ", "Less indentation", opts = { expr = true } }, + [""] = { " >> ", "More indentation", opts = { expr = true } }, -- format with conform - ["ff"] = { + ["ff"] = { function() require("conform").format() end, @@ -326,7 +329,7 @@ M.edit = { }, -- -- remove trailing whitespace - ["fw"] = { + ["fw"] = { function() require("mini.trailspace").trim() end, @@ -334,12 +337,12 @@ M.edit = { }, }, v = { - [""] = { ""] = { ">gv", "More indentation" }, + [""] = { ""] = { ">gv", "More indentation" }, }, x = { - [""] = { "move'<-2gv=gv", "Move line up", opts = { expr = true } }, - [""] = { "move'<-2gv=gv", "Move line down", opts = { expr = true } }, + [""] = { "move'<-2gv=gv", "Move line up", opts = { expr = true } }, + [""] = { "move'<-2gv=gv", "Move line down", opts = { expr = true } }, }, t = { --big move @@ -352,7 +355,7 @@ M.ui = { plugin = false, n = { -- toggle wrap - ["tw"] = { + ["tw"] = { function() vim.opt_local.wrap = not vim.wo.wrap vim.opt_local.breakindent = not vim.wo.breakindent @@ -367,28 +370,28 @@ M.ui = { }, -- toggle some features - ["tn"] = { "setlocal nonumber!", "toggle line numbers" }, - ["trn"] = { "setlocal nornu!", "toggle relative line numbers" }, - ["ts"] = { "setlocal spell!", "toggle spell check" }, + ["tn"] = { "setlocal nonumber!", "toggle line numbers" }, + ["trn"] = { "setlocal nornu!", "toggle relative line numbers" }, + ["ts"] = { "setlocal spell!", "toggle spell check" }, -- open windows - ['"'] = { "vsplit", "open a new window to the side" }, - ["%"] = { "split", "open a new window on the totop" }, + ['"'] = { "vsplit", "open a new window to the side" }, + ["%"] = { "split", "open a new window on the totop" }, -- resize windows - [""] = { "resize +1", "resize window" }, - [""] = { "resize -1", "resize window" }, - [""] = { "vertical resize +1", "resize window" }, - [""] = { "vertical resize -1", "resize window" }, + [""] = { "resize +1", "resize window" }, + [""] = { "resize -1", "resize window" }, + [""] = { "vertical resize +1", "resize window" }, + [""] = { "vertical resize -1", "resize window" }, -- tabs - ["wtn"] = { "tabnew", "open a new tab" }, - ["wtc"] = { "tabclose", "close current tab" }, - ["wtj"] = { "tabnext", "open a new tab" }, - ["wtk"] = { "tabprevious", "open a new tab" }, + ["wn"] = { "tabnew", "open a new tab" }, + ["wc"] = { "tabclose", "close current tab" }, + ["wk"] = { "tabnext", "go to next tab" }, + ["wj"] = { "tabprevious", "go to prev tab" }, -- folds - [""] = { "zMzv", "focus on this fold" }, + [""] = { "zMzv", "focus on this fold" }, }, } diff --git a/lua/custom/plugins.lua b/lua/custom/plugins.lua index 25acc05..067366a 100644 --- a/lua/custom/plugins.lua +++ b/lua/custom/plugins.lua @@ -84,8 +84,150 @@ local plugins = { { "folke/which-key.nvim", keys = { "", "", "", "", '"', "'", "`", "c", "v", "g" }, + defaults = { + mode = { "n", "v" }, + [";"] = { name = "+telescope" }, + [";f"] = { name = "+find" }, + [";d"] = { name = "+lsp/todo" }, + ["g"] = { name = "+goto" }, + ["]"] = { name = "+next" }, + ["["] = { name = "+prev" }, + ["x"] = { name = "+diagnostics/quickfix" }, + ["c"] = { name = "+code" }, + ["g"] = { name = "+git" }, + ["t"] = { name = "+toggle/tools" }, + ["w"] = { name = "+window/which" }, + ["f"] = { name = "+formatting" }, + }, }, { "echasnovski/mini.trailspace", lazy = false, event = { "BufReadPost", "BufNewFile" }, opts = {} }, + { + "RRethy/vim-illuminate", + lazy = false, + event = { "BufReadPost", "BufNewFile" }, + opts = { + delay = 200, + under_cursor = false, + modes_allowlist = { "n", "no", "nt" }, + filetypes_denylist = { + "DiffviewFileHistory", + "DiffviewFiles", + "SidebarNvim", + "fugitive", + "git", + "minifiles", + "neo-tree", + }, + }, + keys = { + { "]]", desc = "Next Reference" }, + { "[[", desc = "Prev Reference" }, + }, + config = function(_, opts) + require("illuminate").configure(opts) + + local function map(key, dir, buffer) + vim.keymap.set("n", key, function() + require("illuminate")["goto_" .. dir .. "_reference"](false) + end, { + desc = dir:sub(1, 1):upper() .. dir:sub(2) .. " Reference", + buffer = buffer, + }) + end + + map("]]", "next") + map("[[", "prev") + + -- also set it after loading ftplugins, since a lot overwrite [[ and ]] + vim.api.nvim_create_autocmd("FileType", { + group = vim.api.nvim_create_augroup("plex_illuminate", {}), + callback = function() + local buffer = vim.api.nvim_get_current_buf() + map("]]", "next", buffer) + map("[[", "prev", buffer) + end, + }) + end, + }, + { + "folke/todo-comments.nvim", + lazy = false, + dependencies = "nvim-telescope/telescope.nvim", + -- stylua: ignore + keys = { + { ']t', function() require('todo-comments').jump_next() end, desc = 'Next todo comment' }, + { '[t', function() require('todo-comments').jump_prev() end, desc = 'Previous todo comment' }, + { 'dt', 'TodoTelescope', desc = 'todo' }, + { 'xt', 'TodoTrouble', desc = 'Todo (Trouble)' }, + { 'xT', 'TodoTrouble keywords=TODO,FIX,FIXME', desc = 'Todo/Fix/Fixme (Trouble)' }, + }, + opts = { + signs = true, + keywords = { + FIX = { + icon = " ", -- icon used for the sign, and in search results + color = "error", -- can be a hex color, or a named color (see below) + alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords + -- signs = false, -- configure signs for some keywords individually + }, + TODO = { icon = " ", color = "info" }, + HACK = { icon = " ", color = "warning" }, + SECURITY = { icon = "󰒃 ", color = "warning" }, + WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } }, + PERF = { icon = " ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } }, + NOTE = { icon = " ", color = "hint", alt = { "INFO" } }, + TEST = { icon = "⏲ ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } }, + }, + }, + }, + { + "folke/trouble.nvim", + cmd = { "Trouble", "TroubleToggle" }, + opts = { use_diagnostic_signs = true }, + -- stylua: ignore + keys = { + { + 'e', + 'TroubleToggle document_diagnostics', + noremap = true, + desc = + 'Document Diagnostics' + }, + { + 'r', + 'TroubleToggle workspace_diagnostics', + noremap = true, + desc = + 'Workspace Diagnostics' + }, + { 'xx', 'TroubleToggle document_diagnostics', desc = 'Document Diagnostics (Trouble)' }, + { 'xX', 'TroubleToggle workspace_diagnostics', desc = 'Workspace Diagnostics (Trouble)' }, + { 'xQ', 'TroubleToggle quickfix', desc = 'Quickfix List (Trouble)' }, + { 'xL', 'TroubleToggle loclist', desc = 'Location List (Trouble)' }, + { + '[q', + function() + if require('trouble').is_open() then + require('trouble').previous({ skip_groups = true, jump = true }) + else + vim.cmd.cprev() + end + end, + desc = 'Previous trouble/quickfix item', + }, + { + ']q', + function() + if require('trouble').is_open() then + require('trouble').next({ skip_groups = true, jump = true }) + else + vim.cmd.cnext() + end + end, + desc = 'Next trouble/quickfix item', + }, + }, + }, } return plugins diff --git a/spell/en.utf-8.add b/spell/en.utf-8.add index 313c823..45bf98b 100644 --- a/spell/en.utf-8.add +++ b/spell/en.utf-8.add @@ -235,3 +235,4 @@ IDEs hypervisors QEMU virt +filetypes diff --git a/spell/en.utf-8.add.spl b/spell/en.utf-8.add.spl index 7577e2e..0593119 100644 Binary files a/spell/en.utf-8.add.spl and b/spell/en.utf-8.add.spl differ