This commit is contained in:
Zelong Kuang
2025-10-22 14:20:19 +11:00
parent 8c11269da8
commit e4013c2193
11 changed files with 354 additions and 300 deletions

View File

@@ -2,12 +2,12 @@ return {
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
["json"] = { "prettierd" },
["json"] = { "jq" },
["jsonc"] = { "jq" },
["tex"] = { "latexindent" },
["toml"] = { "taplo "},
["markdown"] = { 'prettierd', "cbfmt" },
["sh"] = { 'shfmt' },
["toml"] = { "taplo" },
["markdown"] = { "prettierd", "cbfmt" },
["sh"] = { "shfmt" },
}
}
}

View File

@@ -5,27 +5,27 @@ return {
model = "gemini-2.5-pro",
},
},
{
"zbirenbaum/copilot.lua",
keys = {
{
-- Open in the current working directory
"<leader>ad",
"<cmd>Copilot detach<cr>",
desc = "Copilot detach",
},
{
-- Open in the current working directory
"<leader>at",
"<cmd>Copilot toggle<cr>",
desc = "Copilot toggle",
},
},
opts = {
copilot_model = "gemini-2.5-pro",
keymap = {
accept = "<C-l>",
},
},
},
-- {
-- "zbirenbaum/copilot.lua",
-- keys = {
-- {
-- -- Open in the current working directory
-- "<leader>ad",
-- "<cmd>Copilot detach<cr>",
-- desc = "Copilot detach",
-- },
-- {
-- -- Open in the current working directory
-- "<leader>at",
-- "<cmd>Copilot toggle<cr>",
-- desc = "Copilot toggle",
-- },
-- },
-- opts = {
-- copilot_model = "gemini-2.5-pro",
-- keymap = {
-- accept = "<C-l>",
-- },
-- },
-- },
}

View File

@@ -1,224 +1,224 @@
-- Now don't forget to initialize lualine
return {
{
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
local lualine = require("lualine")
local colors = {
bg = "#202328",
fg = "#bbc2cf",
yellow = "#ECBE7B",
cyan = "#008080",
darkblue = "#081633",
green = "#98be65",
orange = "#FF8800",
violet = "#a9a1e1",
magenta = "#c678dd",
blue = "#51afef",
red = "#ec5f67",
}
local conditions = {
buffer_not_empty = function()
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
end,
hide_in_width = function()
return vim.fn.winwidth(0) > 80
end,
check_git_workspace = function()
local filepath = vim.fn.expand("%:p:h")
local gitdir = vim.fn.finddir(".git", filepath .. ";")
return gitdir and #gitdir > 0 and #gitdir < #filepath
end,
}
-- Config
local config = {
options = {
-- Disable sections and component separators
component_separators = "",
section_separators = "",
theme = 'auto'
-- theme = {
-- -- We are going to use lualine_c an lualine_x as left and
-- -- right section. Both are highlighted by c theme . So we
-- -- are just setting default looks o statusline
-- normal = { c = { fg = colors.fg, bg = colors.bg } },
-- inactive = { c = { fg = colors.fg, bg = colors.bg } },
-- },
},
sections = {
-- these are to remove the defaults
lualine_a = {},
lualine_b = {},
lualine_y = {},
lualine_z = {},
-- These will be filled later
lualine_c = {},
lualine_x = {},
},
inactive_sections = {
-- these are to remove the defaults
lualine_a = {},
lualine_b = {},
lualine_y = {},
lualine_z = {},
lualine_c = {},
lualine_x = {},
},
}
-- Inserts a component in lualine_c at left section
local function ins_left(component)
table.insert(config.sections.lualine_c, component)
end
-- Inserts a component in lualine_x at right section
local function ins_right(component)
table.insert(config.sections.lualine_x, component)
end
ins_left({
function()
return ""
end,
color = { fg = colors.blue }, -- Sets highlighting of component
padding = { left = 0, right = 1 }, -- We don't need space before this
})
ins_left({
-- mode component
function()
return ""
end,
color = function()
-- auto change color according to neovims mode
local mode_color = {
n = colors.red,
i = colors.green,
v = colors.blue,
[""] = colors.blue,
V = colors.blue,
c = colors.magenta,
no = colors.red,
s = colors.orange,
S = colors.orange,
[""] = colors.orange,
ic = colors.yellow,
R = colors.violet,
Rv = colors.violet,
cv = colors.red,
ce = colors.red,
r = colors.cyan,
rm = colors.cyan,
["r?"] = colors.cyan,
["!"] = colors.red,
t = colors.red,
}
return { fg = mode_color[vim.fn.mode()] }
end,
padding = { right = 1 },
})
ins_left({
-- filesize component
"filesize",
cond = conditions.buffer_not_empty,
})
ins_left({
"filename",
cond = conditions.buffer_not_empty,
color = { fg = colors.magenta, gui = "bold" },
})
ins_left({ "location" })
ins_left({ "progress", color = { fg = colors.fg, gui = "bold" } })
ins_left({
"diagnostics",
sources = { "nvim_diagnostic" },
symbols = { error = "", warn = "", info = "" },
diagnostics_color = {
error = { fg = colors.red },
warn = { fg = colors.yellow },
info = { fg = colors.cyan },
},
})
-- Insert mid section. You can make any number of sections in neovim :)
-- for lualine it's any number greater then 2
ins_left({
function()
return "%="
end,
})
ins_left({
-- Lsp server name .
function()
local msg = "No Active Lsp"
local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 })
local clients = vim.lsp.get_clients()
if next(clients) == nil then
return msg
end
for _, client in ipairs(clients) do
local filetypes = client.config.filetypes
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
return client.name
end
end
return msg
end,
icon = " LSP:",
color = { fg = "#ffffff", gui = "bold" },
})
-- Add components to right sections
ins_right({
"o:encoding", -- option component same as &encoding in viml
fmt = string.upper, -- I'm not sure why it's upper case either ;)
cond = conditions.hide_in_width,
color = { fg = colors.green, gui = "bold" },
})
-- ins_right({
-- "fileformat",
-- fmt = string.upper,
-- icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh
-- color = { fg = colors.green, gui = "bold" },
-- })
ins_right({
"branch",
icon = "",
color = { fg = colors.violet, gui = "bold" },
})
ins_right({
"diff",
-- Is it me or the symbol for modified us really weird
symbols = { added = "", modified = "󰝤 ", removed = "" },
diff_color = {
added = { fg = colors.green },
modified = { fg = colors.orange },
removed = { fg = colors.red },
},
cond = conditions.hide_in_width,
})
ins_right({
function()
return ""
end,
color = { fg = colors.blue },
padding = { left = 1 },
})
lualine.setup(config)
end,
},
-- {
-- "nvim-lualine/lualine.nvim",
-- dependencies = { "nvim-tree/nvim-web-devicons" },
-- config = function()
-- local lualine = require("lualine")
-- local colors = {
-- bg = "#202328",
-- fg = "#bbc2cf",
-- yellow = "#ECBE7B",
-- cyan = "#008080",
-- darkblue = "#081633",
-- green = "#98be65",
-- orange = "#FF8800",
-- violet = "#a9a1e1",
-- magenta = "#c678dd",
-- blue = "#51afef",
-- red = "#ec5f67",
-- }
--
-- local conditions = {
-- buffer_not_empty = function()
-- return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
-- end,
-- hide_in_width = function()
-- return vim.fn.winwidth(0) > 80
-- end,
-- check_git_workspace = function()
-- local filepath = vim.fn.expand("%:p:h")
-- local gitdir = vim.fn.finddir(".git", filepath .. ";")
-- return gitdir and #gitdir > 0 and #gitdir < #filepath
-- end,
-- }
--
-- -- Config
-- local config = {
-- options = {
-- -- Disable sections and component separators
-- component_separators = "",
-- section_separators = "",
-- theme = 'auto'
-- -- theme = {
-- -- -- We are going to use lualine_c an lualine_x as left and
-- -- -- right section. Both are highlighted by c theme . So we
-- -- -- are just setting default looks o statusline
-- -- normal = { c = { fg = colors.fg, bg = colors.bg } },
-- -- inactive = { c = { fg = colors.fg, bg = colors.bg } },
-- -- },
-- },
-- sections = {
-- -- these are to remove the defaults
-- lualine_a = {},
-- lualine_b = {},
-- lualine_y = {},
-- lualine_z = {},
-- -- These will be filled later
-- lualine_c = {},
-- lualine_x = {},
-- },
-- inactive_sections = {
-- -- these are to remove the defaults
-- lualine_a = {},
-- lualine_b = {},
-- lualine_y = {},
-- lualine_z = {},
-- lualine_c = {},
-- lualine_x = {},
-- },
-- }
--
-- -- Inserts a component in lualine_c at left section
-- local function ins_left(component)
-- table.insert(config.sections.lualine_c, component)
-- end
--
-- -- Inserts a component in lualine_x at right section
-- local function ins_right(component)
-- table.insert(config.sections.lualine_x, component)
-- end
--
-- ins_left({
-- function()
-- return "▊"
-- end,
-- color = { fg = colors.blue }, -- Sets highlighting of component
-- padding = { left = 0, right = 1 }, -- We don't need space before this
-- })
--
-- ins_left({
-- -- mode component
-- function()
-- return ""
-- end,
-- color = function()
-- -- auto change color according to neovims mode
-- local mode_color = {
-- n = colors.red,
-- i = colors.green,
-- v = colors.blue,
-- [""] = colors.blue,
-- V = colors.blue,
-- c = colors.magenta,
-- no = colors.red,
-- s = colors.orange,
-- S = colors.orange,
-- [""] = colors.orange,
-- ic = colors.yellow,
-- R = colors.violet,
-- Rv = colors.violet,
-- cv = colors.red,
-- ce = colors.red,
-- r = colors.cyan,
-- rm = colors.cyan,
-- ["r?"] = colors.cyan,
-- ["!"] = colors.red,
-- t = colors.red,
-- }
-- return { fg = mode_color[vim.fn.mode()] }
-- end,
-- padding = { right = 1 },
-- })
--
-- ins_left({
-- -- filesize component
-- "filesize",
-- cond = conditions.buffer_not_empty,
-- })
--
-- ins_left({
-- "filename",
-- cond = conditions.buffer_not_empty,
-- color = { fg = colors.magenta, gui = "bold" },
-- })
--
-- ins_left({ "location" })
--
-- ins_left({ "progress", color = { fg = colors.fg, gui = "bold" } })
--
-- ins_left({
-- "diagnostics",
-- sources = { "nvim_diagnostic" },
-- symbols = { error = " ", warn = " ", info = " " },
-- diagnostics_color = {
-- error = { fg = colors.red },
-- warn = { fg = colors.yellow },
-- info = { fg = colors.cyan },
-- },
-- })
--
-- -- Insert mid section. You can make any number of sections in neovim :)
-- -- for lualine it's any number greater then 2
-- ins_left({
-- function()
-- return "%="
-- end,
-- })
--
-- ins_left({
-- -- Lsp server name .
-- function()
-- local msg = "No Active Lsp"
-- local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 })
-- local clients = vim.lsp.get_clients()
-- if next(clients) == nil then
-- return msg
-- end
-- for _, client in ipairs(clients) do
-- local filetypes = client.config.filetypes
-- if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
-- return client.name
-- end
-- end
-- return msg
-- end,
-- icon = " LSP:",
-- color = { fg = "#ffffff", gui = "bold" },
-- })
--
-- -- Add components to right sections
-- ins_right({
-- "o:encoding", -- option component same as &encoding in viml
-- fmt = string.upper, -- I'm not sure why it's upper case either ;)
-- cond = conditions.hide_in_width,
-- color = { fg = colors.green, gui = "bold" },
-- })
--
-- -- ins_right({
-- -- "fileformat",
-- -- fmt = string.upper,
-- -- icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh
-- -- color = { fg = colors.green, gui = "bold" },
-- -- })
--
-- ins_right({
-- "branch",
-- icon = "",
-- color = { fg = colors.violet, gui = "bold" },
-- })
--
-- ins_right({
-- "diff",
-- -- Is it me or the symbol for modified us really weird
-- symbols = { added = " ", modified = "󰝤 ", removed = " " },
-- diff_color = {
-- added = { fg = colors.green },
-- modified = { fg = colors.orange },
-- removed = { fg = colors.red },
-- },
-- cond = conditions.hide_in_width,
-- })
--
-- ins_right({
-- function()
-- return "▊"
-- end,
-- color = { fg = colors.blue },
-- padding = { left = 1 },
-- })
--
-- lualine.setup(config)
-- end,
-- },
}

View File

@@ -0,0 +1,19 @@
return {
{
"nvim-mini/mini.pairs",
event = "VeryLazy",
opts = {
modes = { insert = true, command = true, terminal = false },
-- skip autopair when next character is one of these
-- skip_next = [=[[%w%%%'%[%"%.%`%$]]=],
skip_next = false,
-- skip autopair when the cursor is inside these treesitter nodes
skip_ts = { "string" },
-- skip autopair when next character is closing pair
-- and there are more closing pairs than opening pairs
skip_unbalanced = true,
-- better deal with markdown code blocks
markdown = true,
},
}
}

View File

@@ -1,6 +1,7 @@
return {
{
"folke/snacks.nvim",
---@type snacks.Config
opts = {
-- image = {},
indent = {

View File

@@ -8,7 +8,7 @@ return {
dependencies_bin = {
["tinymist"] = "tinymist",
},
invert_colors = 'always',
-- invert_colors = 'always',
-- open_cmd = "brave %s --class typst-preview",
},
keys = {