local settings = require("core.settings") local global = require("core.global") -- Create cache dir and data dirs local createdir = function() local data_dirs = { global.cache_dir .. "/backup", global.cache_dir .. "/session", global.cache_dir .. "/swap", global.cache_dir .. "/tags", global.cache_dir .. "/undo", } -- Only check whether cache_dir exists, this would be enough. if vim.fn.isdirectory(global.cache_dir) == 0 then ---@diagnostic disable-next-line: param-type-mismatch vim.fn.mkdir(global.cache_dir, "p") for _, dir in pairs(data_dirs) do if vim.fn.isdirectory(dir) == 0 then vim.fn.mkdir(dir, "p") end end end end local disable_distribution_plugins = function() -- Disable menu loading vim.g.did_install_default_menus = 1 vim.g.did_install_syntax_menu = 1 -- Comment this if you define your own filetypes in `after/ftplugin` -- vim.g.did_load_filetypes = 1 -- Do not load native syntax completion vim.g.loaded_syntax_completion = 1 -- Do not load spell files vim.g.loaded_spellfile_plugin = 1 -- Whether to load netrw by default -- vim.g.loaded_netrw = 1 -- vim.g.loaded_netrwFileHandlers = 1 -- vim.g.loaded_netrwPlugin = 1 -- vim.g.loaded_netrwSettings = 1 -- newtrw liststyle: https://medium.com/usevim/the-netrw-style-options-3ebe91d42456 vim.g.netrw_liststyle = 3 -- Do not load tohtml.vim vim.g.loaded_2html_plugin = 1 -- Do not load zipPlugin.vim, gzip.vim and tarPlugin.vim (all of these plugins are -- related to reading files inside compressed containers) vim.g.loaded_gzip = 1 vim.g.loaded_tar = 1 vim.g.loaded_tarPlugin = 1 vim.g.loaded_vimball = 1 vim.g.loaded_vimballPlugin = 1 vim.g.loaded_zip = 1 vim.g.loaded_zipPlugin = 1 -- Do not use builtin matchit.vim and matchparen.vim because we're using vim-matchup vim.g.loaded_matchit = 1 vim.g.loaded_matchparen = 1 -- Disable sql omni completion vim.g.loaded_sql_completion = 1 -- Set this to 0 in order to disable native EditorConfig support vim.g.editorconfig = 1 -- Disable remote plugins -- NOTE: -- > Disabling rplugin.vim will make `wilder.nvim` complain about missing rplugins during :checkhealth, -- > but since it's config doesn't require python rtp (strictly), it's fine to ignore that for now. -- vim.g.loaded_remote_plugins = 1 end local leader_map = function() vim.g.mapleader = " " -- NOTE: -- > Uncomment the following if you're using a other than , and you wish -- > to disable advancing one character by pressing in normal/visual mode. -- vim.api.nvim_set_keymap("n", " ", "", { noremap = true }) -- vim.api.nvim_set_keymap("x", " ", "", { noremap = true }) end local gui_config = function() vim.api.nvim_set_option_value("guifont", settings.gui_config.font_name .. ":h" .. settings.gui_config.font_size, {}) end local neovide_config = function() for name, config in pairs(settings.neovide_config) do vim.g["neovide_" .. name] = config end end local clipboard_config = function() if global.is_mac then vim.g.clipboard = { name = "macOS-clipboard", copy = { ["+"] = "pbcopy", ["*"] = "pbcopy" }, paste = { ["+"] = "pbpaste", ["*"] = "pbpaste" }, cache_enabled = 0, } elseif global.is_wsl then vim.g.clipboard = { name = "win32yank-wsl", copy = { ["+"] = "win32yank.exe -i --crlf", ["*"] = "win32yank.exe -i --crlf", }, paste = { ["+"] = "win32yank.exe -o --lf", ["*"] = "win32yank.exe -o --lf", }, cache_enabled = 0, } end end local shell_config = function() if global.is_windows then if not (vim.fn.executable("pwsh") == 1 or vim.fn.executable("powershell") == 1) then vim.notify( [[ Failed to setup terminal config PowerShell is either not installed, missing from PATH, or not executable; cmd.exe will be used instead for `:!` (shell bang) and toggleterm.nvim. You're recommended to install PowerShell for better experience.]], vim.log.levels.WARN, { title = "[core] Runtime Warning" } ) return end local basecmd = "-NoLogo -MTA -ExecutionPolicy RemoteSigned" local ctrlcmd = "-Command [console]::InputEncoding = [console]::OutputEncoding = [System.Text.Encoding]::UTF8" local set_opts = vim.api.nvim_set_option_value set_opts("shell", vim.fn.executable("pwsh") == 1 and "pwsh" or "powershell", {}) set_opts("shellcmdflag", string.format("%s %s;", basecmd, ctrlcmd), {}) set_opts("shellredir", "-RedirectStandardOutput %s -NoNewWindow -Wait", {}) set_opts("shellpipe", "2>&1 | Out-File -Encoding UTF8 %s; exit $LastExitCode", {}) set_opts("shellquote", "", {}) set_opts("shellxquote", "", {}) end end local load_core = function() createdir() disable_distribution_plugins() leader_map() gui_config() neovide_config() clipboard_config() shell_config() require("core.options") require("core.mapping") require("core.event") require("core.pack") require("keymap") vim.api.nvim_set_option_value("background", settings.background, {}) vim.cmd.colorscheme(settings.colorscheme) end load_core()