mirror of
https://github.com/cap153/nvim.git
synced 2026-07-16 22:16:54 +08:00
优化懒加载触发机制
This commit is contained in:
parent
ee08df6765
commit
1cb5843449
11 changed files with 94 additions and 63 deletions
|
|
@ -9,6 +9,7 @@ local P = {
|
||||||
vim.api.nvim_create_autocmd({
|
vim.api.nvim_create_autocmd({
|
||||||
"InsertEnter"
|
"InsertEnter"
|
||||||
}, {
|
}, {
|
||||||
|
once = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
PackUtils.load(P, function()
|
PackUtils.load(P, function()
|
||||||
require('nvim-autopairs').setup({
|
require('nvim-autopairs').setup({
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ PackUtils.setup_listener(P.name, P.build_cmd)
|
||||||
vim.api.nvim_create_autocmd({
|
vim.api.nvim_create_autocmd({
|
||||||
"UIEnter", -- vim.schedule(function()
|
"UIEnter", -- vim.schedule(function()
|
||||||
}, {
|
}, {
|
||||||
|
once = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
PackUtils.load(P, function()
|
PackUtils.load(P, function()
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ local P = {
|
||||||
vim.api.nvim_create_autocmd({
|
vim.api.nvim_create_autocmd({
|
||||||
"BufReadPost", "BufNewFile" -- 处理普通的文本文件时也能显示基础线条
|
"BufReadPost", "BufNewFile" -- 处理普通的文本文件时也能显示基础线条
|
||||||
}, {
|
}, {
|
||||||
|
once = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
PackUtils.load(P, function()
|
PackUtils.load(P, function()
|
||||||
local highlight = {
|
local highlight = {
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ vim.keymap.set("n", "<leader>=", vim.diagnostic.goto_next, opts) -- <space>+跳
|
||||||
|
|
||||||
-- 懒加载触发器:当打开文件时触发
|
-- 懒加载触发器:当打开文件时触发
|
||||||
vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
|
vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
|
||||||
|
once = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
PackUtils.load(P, function()
|
PackUtils.load(P, function()
|
||||||
-- === 基础依赖初始化 (Mason) ===
|
-- === 基础依赖初始化 (Mason) ===
|
||||||
|
|
|
||||||
|
|
@ -8,34 +8,32 @@ local P = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- 懒加载触发器
|
-- 将 Lualine 的配置逻辑封装成一个独立函数,方便重复调用
|
||||||
vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
|
local function setup_lualine_with_blend()
|
||||||
callback = function()
|
-- 确保 lualine 已经加载,如果没有加载则不执行(防止 ColorScheme 先于插件加载触发报错)
|
||||||
PackUtils.load(P, function()
|
local has_lualine, lualine = pcall(require, "lualine")
|
||||||
-- ==================== 【魔法时刻:动态融合主题】 ====================
|
if not has_lualine then return end
|
||||||
-- 获取当前 Neovim 的真实背景色 (Normal 高亮组)
|
|
||||||
|
-- ==================== 【动态融合逻辑】 ====================
|
||||||
local normal_hl = vim.api.nvim_get_hl(0, { name = "Normal" })
|
local normal_hl = vim.api.nvim_get_hl(0, { name = "Normal" })
|
||||||
-- 如果是透明背景,bg 返回 nil,我们赋值为 "NONE";否则转换为 HEX 颜色码
|
|
||||||
local editor_bg = normal_hl.bg and string.format("#%06x", normal_hl.bg) or "NONE"
|
local editor_bg = normal_hl.bg and string.format("#%06x", normal_hl.bg) or "NONE"
|
||||||
-- 加载 Lualine 的自动主题,它会自动为你提取当前主题的前景色(文字颜色)
|
|
||||||
|
-- 每次需要重新 require('lualine.themes.auto') 来获取基于新主题生成的颜色
|
||||||
|
package.loaded["lualine.themes.auto"] = nil
|
||||||
local blended_theme = require("lualine.themes.auto")
|
local blended_theme = require("lualine.themes.auto")
|
||||||
-- 遍历主题的所有的模式 (normal, insert, visual...) 和区块 (a, b, c...)
|
|
||||||
for _, mode in pairs(blended_theme) do
|
for _, mode in pairs(blended_theme) do
|
||||||
for _, section in pairs(mode) do
|
for _, section in pairs(mode) do
|
||||||
if type(section) == "table" then
|
if type(section) == "table" then
|
||||||
-- 强行将它们的背景色全部涂成和编辑器完全一样的颜色
|
|
||||||
section.bg = editor_bg
|
section.bg = editor_bg
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- ====================================================================
|
|
||||||
require("lualine").setup({
|
|
||||||
options = {
|
|
||||||
-- 挂载我们刚刚特制的融合主题
|
|
||||||
theme = blended_theme,
|
|
||||||
-- 全局唯一状态栏 (不仅底部更干净,而且背景融合得更彻底)
|
|
||||||
globalstatus = true,
|
|
||||||
|
|
||||||
|
lualine.setup({
|
||||||
|
options = {
|
||||||
|
theme = blended_theme,
|
||||||
|
globalstatus = true,
|
||||||
always_divide_middle = false,
|
always_divide_middle = false,
|
||||||
component_separators = { left = "", right = "" },
|
component_separators = { left = "", right = "" },
|
||||||
section_separators = { left = "", right = "" },
|
section_separators = { left = "", right = "" },
|
||||||
|
|
@ -43,15 +41,30 @@ vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
|
||||||
sections = {
|
sections = {
|
||||||
lualine_a = {},
|
lualine_a = {},
|
||||||
lualine_b = { "branch", "diff", "diagnostics" },
|
lualine_b = { "branch", "diff", "diagnostics" },
|
||||||
lualine_c = { {
|
lualine_c = { { "lsp_status", color = { fg = "#6C6E81" } } },
|
||||||
"lsp_status",
|
|
||||||
color = { fg = "#6C6E81" },
|
|
||||||
}, },
|
|
||||||
lualine_x = {},
|
lualine_x = {},
|
||||||
lualine_y = {},
|
lualine_y = {},
|
||||||
lualine_z = { "progress" },
|
lualine_z = { "progress" },
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 懒加载触发器 (只负责初次加载)
|
||||||
|
vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
|
||||||
|
once = true, -- 只需要触发一次来加载插件
|
||||||
|
callback = function()
|
||||||
|
PackUtils.load(P, function()
|
||||||
|
setup_lualine_with_blend()
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- 主题切换触发器 (负责在主题改变时刷新)
|
||||||
|
vim.api.nvim_create_autocmd("ColorScheme", {
|
||||||
|
-- 防止配置堆叠
|
||||||
|
group = vim.api.nvim_create_augroup("LualineSync", { clear = true }),
|
||||||
|
callback = function()
|
||||||
|
-- 如果插件已经加载了,就重新应用配置
|
||||||
|
setup_lualine_with_blend()
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ local P = {
|
||||||
vim.api.nvim_create_autocmd({
|
vim.api.nvim_create_autocmd({
|
||||||
"UIEnter", -- vim.schedule(function()
|
"UIEnter", -- vim.schedule(function()
|
||||||
}, {
|
}, {
|
||||||
|
once = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
PackUtils.load(P, function()
|
PackUtils.load(P, function()
|
||||||
|
|
|
||||||
|
|
@ -8,30 +8,38 @@ local P = {
|
||||||
|
|
||||||
PackUtils.setup_listener(P.name, P.build_cmd)
|
PackUtils.setup_listener(P.name, P.build_cmd)
|
||||||
|
|
||||||
|
-- app = { "zen", "-private-window" },
|
||||||
|
-- app = { "firefox-esr", "-private-window" },
|
||||||
|
|
||||||
-- 在插件未加载时,这些命令就存在了。一旦被调用,它们会先加载插件,再执行真正的功能。
|
-- 在插件未加载时,这些命令就存在了。一旦被调用,它们会先加载插件,再执行真正的功能。
|
||||||
vim.api.nvim_create_user_command("PeekToggle", function()
|
vim.api.nvim_create_user_command("PeekToggle", function()
|
||||||
local peek = require("peek")
|
local is_markdown = vim.bo[vim.api.nvim_get_current_buf()].filetype == 'markdown'
|
||||||
if not peek.is_open() and vim.bo[vim.api.nvim_get_current_buf()].filetype == 'markdown' then
|
if not PackUtils.plugin_loaded[P.name] then
|
||||||
|
if is_markdown then
|
||||||
PackUtils.load(P, function()
|
PackUtils.load(P, function()
|
||||||
|
-- 动态决定浏览器配置
|
||||||
local app = { "chromium", "--app=http://localhost:9000/?theme=dark", "--incognito" }
|
local app = { "chromium", "--app=http://localhost:9000/?theme=dark", "--incognito" }
|
||||||
if IS_ARM then
|
if IS_ARM then
|
||||||
app = { "chromium", "--no-sandbox", "--app=http://localhost:9000/?theme=dark", "--incognito", "--test-type",
|
app = { "chromium", "--no-sandbox", "--app=http://localhost:9000/?theme=dark", "--incognito", "--test-type",
|
||||||
"--force-device-scale-factor=1.75" }
|
"--force-device-scale-factor=1.75" }
|
||||||
|
elseif vim.fn.has("wsl") == 1 then
|
||||||
|
app = { "/mnt/d/my_program/chrome-win/chrome.exe", "--no-sandbox", "--app=http://localhost:9000/?theme=dark",
|
||||||
|
"--incognito", "--test-type" }
|
||||||
end
|
end
|
||||||
if vim.fn.has("wsl") == 1 then
|
local peek = require("peek")
|
||||||
app = { "/mnt/d/my_program/chrome-win/chrome.exe", "--no-sandbox", "--app=http://localhost:9000/?theme=dark", "--incognito", "--test-type" }
|
peek.setup({
|
||||||
end
|
|
||||||
require("peek").setup({
|
|
||||||
port = 9000,
|
port = 9000,
|
||||||
-- app = { "zen", "-private-window" },
|
|
||||||
-- app = { "firefox-esr", "-private-window" },
|
|
||||||
app = app
|
app = app
|
||||||
})
|
})
|
||||||
end)
|
|
||||||
peek.open()
|
peek.open()
|
||||||
else -- 只有加载了插件的情况下执行关闭,这样可以跳过非markdown文件
|
end)
|
||||||
if PackUtils.plugin_loaded[P.name] then
|
end
|
||||||
|
else
|
||||||
|
local peek = require("peek")
|
||||||
|
if peek.is_open() then
|
||||||
peek.close()
|
peek.close()
|
||||||
|
elseif is_markdown then
|
||||||
|
peek.open()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end, { desc = "Lazy load and open Peek" })
|
end, { desc = "Lazy load and open Peek" })
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,12 @@
|
||||||
local P = {
|
local P = {
|
||||||
name = "rainbow-delimiters.nvim",
|
name = "rainbow-delimiters.nvim",
|
||||||
}
|
}
|
||||||
--
|
|
||||||
-- 懒加载触发器
|
-- 懒加载触发器
|
||||||
vim.api.nvim_create_autocmd({
|
vim.api.nvim_create_autocmd({
|
||||||
"FileType",
|
"FileType",
|
||||||
}, {
|
}, {
|
||||||
|
once = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
PackUtils.load(P, function()
|
PackUtils.load(P, function()
|
||||||
vim.api.nvim_set_hl(0, "RainbowDelimiterRed", { fg = "#E06C75" })
|
vim.api.nvim_set_hl(0, "RainbowDelimiterRed", { fg = "#E06C75" })
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ local P = {
|
||||||
vim.api.nvim_create_autocmd({
|
vim.api.nvim_create_autocmd({
|
||||||
"FileType"
|
"FileType"
|
||||||
}, {
|
}, {
|
||||||
|
once = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
PackUtils.load(P, function()
|
PackUtils.load(P, function()
|
||||||
-- 前往上下文开始处
|
-- 前往上下文开始处
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ local P = {
|
||||||
vim.api.nvim_create_autocmd({
|
vim.api.nvim_create_autocmd({
|
||||||
"UIEnter", -- vim.schedule(function()
|
"UIEnter", -- vim.schedule(function()
|
||||||
}, {
|
}, {
|
||||||
|
once = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
PackUtils.load(P, function()
|
PackUtils.load(P, function()
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,8 @@
|
||||||
"\t-- \"VimEnter\", -- 核心初始化完成",
|
"\t-- \"VimEnter\", -- 核心初始化完成",
|
||||||
"\t-- \"UIEnter\", -- vim.schedule(function()",
|
"\t-- \"UIEnter\", -- vim.schedule(function()",
|
||||||
"}, {",
|
"}, {",
|
||||||
|
"\tonce = true,",
|
||||||
|
"\t-- group = vim.api.nvim_create_augroup(\"<++>\", { clear = true }),",
|
||||||
"\tcallback = function()",
|
"\tcallback = function()",
|
||||||
"\t\tPackUtils.load(P, function()",
|
"\t\tPackUtils.load(P, function()",
|
||||||
"\t\t\t$7",
|
"\t\t\t$7",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue