.vvconfig/mackup/.config/nvim/lua/core/init.lua

122 lines
3.3 KiB
Lua

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 <leader> other than <Space>, and you wish
-- > to disable advancing one character by pressing <Space> 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()