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 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() if next(settings.gui_config) then vim.api.nvim_set_option_value( "guifont", settings.gui_config.font_name .. ":h" .. settings.gui_config.font_size, {} ) end 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() leader_map() gui_config() neovide_config() clipboard_config() shell_config() require("core.options") 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()