astro-nvim-v3 - change: turn off declare symbols basedpyright

This commit is contained in:
huyjaky
2025-08-10 15:18:07 +07:00
parent df896f0ab4
commit 182ad7856a
27 changed files with 1114 additions and 807 deletions

View File

@@ -1,139 +1,185 @@
local function has_words_before()
local line, col = (unpack or table.unpack)(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
return {
{
"onsails/lspkind.nvim",
opts = {
symbol_map = require "plugins.configs.ui.lspkind",
},
},
{ "hrsh7th/cmp-cmdline", event = "CmdlineEnter" },
{ "github/copilot.vim", event = "BufRead" },
{ "hrsh7th/cmp-buffer", event = "BufRead" },
{ "hrsh7th/cmp-path", event = "BufRead" },
{
"hrsh7th/nvim-cmp",
event = "VimEnter",
depedencies = {
"hrsh7th/cmp-nvim-lsp",
},
opts = function(_, opts)
local cmp = require "cmp"
local luasnip = require "luasnip"
{
"github/copilot.vim",
event = "BufRead",
config = function()
vim.api.nvim_set_keymap("i", "<C-f>", 'copilot#Accept("\\<CR>")', { expr = true, silent = true })
end,
},
-- { "hrsh7th/cmp-buffer", event = "BufRead" },
-- { "hrsh7th/cmp-path", event = "BufRead" },
{
"onsails/lspkind.nvim",
opts = {
symbol_map = require("plugins.configs.ui.lspkind"),
},
},
{
"saghen/blink.cmp",
event = { "InsertEnter", "CmdlineEnter", "BufEnter" },
version = "^1",
opts_extend = { "sources.default", "cmdline.sources", "term.sources" },
opts = {
-- remember to enable your providers here
sources = {
default = { "lsp", "path", "snippets", "buffer" },
},
keymap = {
["<C-Space>"] = { "show", "show_documentation", "hide_documentation" },
["<Up>"] = { "select_prev", "fallback" },
["<Down>"] = { "select_next", "fallback" },
["<C-N>"] = { "select_next", "show" },
["<C-P>"] = { "select_prev", "show" },
["<C-J>"] = { "select_next", "fallback" },
["<C-K>"] = { "select_prev", "fallback" },
["<C-U>"] = { "scroll_documentation_up", "fallback" },
["<C-D>"] = { "scroll_documentation_down", "fallback" },
["<C-e>"] = { "hide", "fallback" },
["<CR>"] = { "accept", "fallback" },
["<C-f>"] = false,
local function has_words_before()
local line, col = (unpack or table.unpack)(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match "%s" == nil
end
-- vim.api.nvim_set_keymap("i", "<C-f>", 'copilot#Accept("\\<CR>")', { expr = true, silent = true }),
cmp.config.sources {
{ name = "nvim_lsp", priority = 1000 },
{ name = "cmdline", priority = 800 },
{ name = "path", priority = 250 },
}
["<Tab>"] = {
"select_next",
"snippet_forward",
function(cmp)
if has_words_before() or vim.api.nvim_get_mode().mode == "c" then
return cmp.show()
end
end,
"fallback",
},
["<S-Tab>"] = {
"select_prev",
"snippet_backward",
function(cmp)
if vim.api.nvim_get_mode().mode == "c" then
return cmp.show()
end
end,
"fallback",
},
},
completion = {
list = { selection = { preselect = true, auto_insert = false } },
ghost_text = {
enabled = false,
},
menu = {
auto_show = function(ctx)
return ctx.mode ~= "cmdline"
end,
border = "rounded",
winhighlight = "Normal:NormalFloat,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None",
draw = {
treesitter = { "lsp" },
columns = {
{ "kind_icon", "label", gap = 1 },
{ "kind" },
},
components = {
kind = {
-- (optional) use highlights from mini.icons
highlight = function(ctx)
local _, hl, _ = require("mini.icons").get("lsp", ctx.kind)
return hl
end,
},
kind_icon = {
text = function(ctx)
local icon = ctx.kind_icon
if vim.tbl_contains({ "Path" }, ctx.source_name) then
local dev_icon, _ = require("nvim-web-devicons").get_icon(ctx.label)
if dev_icon then
icon = dev_icon
end
else
icon = require("lspkind").symbolic(ctx.kind, {
mode = "symbol",
})
end
-- `:` cmdline setup.
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline {
["<CR>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.confirm { select = true }
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<CR>", true, true, true), "n", true)
else
fallback()
end
end, { "i", "c" }),
},
sources = cmp.config.sources({
{ name = "path" },
}, {
{
name = "cmdline",
option = {
-- code for me options for processing command when press enter
return icon .. ctx.icon_gap
end,
},
},
},
},
accept = {
auto_brackets = { enabled = true },
},
documentation = {
auto_show = true,
auto_show_delay_ms = 0,
window = {
border = "rounded",
winhighlight = "Normal:NormalFloat,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None",
},
},
},
signature = {
window = {
border = "rounded",
winhighlight = "Normal:NormalFloat,FloatBorder:FloatBorder",
},
},
},
specs = {
{
"L3MON4D3/LuaSnip",
optional = true,
specs = { { "Saghen/blink.cmp", opts = { snippets = { preset = "luasnip" } } } },
},
{
"AstroNvim/astrolsp",
optional = true,
opts = function(_, opts)
opts.capabilities = require("blink.cmp").get_lsp_capabilities(opts.capabilities)
ignore_cmds = {
"q",
"qa",
"qall",
"quitall",
"quit",
"wall",
"wq",
},
},
},
}),
})
return require("astrocore").extend_tbl(opts, {
-- Configure window style
window = {
completion = {
winhighlight = "Normal:Pmenu,CursorLine:PmenuSel,Search:None",
-- border = "none",
side_padding = 0,
},
},
formatting = {
-- Show icon at the beginning and menu at the end
fields = { "kind", "abbr", "menu" },
format = function(entry, vim_item)
local kind = require("lspkind").cmp_format { mode = "symbol_text", maxwidth = 50 }(entry, vim_item)
local strings = vim.split(kind.kind, "%s", { trimetry = true })
kind.kind = " " .. (strings[1] or "") .. " "
kind.menu = " [" .. (strings[2] or "") .. "]"
return kind
end,
},
-- Always select the first option
completion = {
completeopt = "menu,menuone,noinsert",
},
-- Custom mapping
mapping = {
-- Esc to close completion menu
["<Esc>"] = cmp.mapping { i = cmp.mapping.abort(), c = cmp.mapping.close() },
-- Tab to select completion
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() and has_words_before() then
fallback()
else
fallback()
end
end, { "i", "s" }),
-- Use <C-n> and <C-p> to select luasnip
["<C-n>"] = cmp.mapping(function(fallback)
if luasnip.jumpable(1) then
luasnip.jump(1)
else
fallback()
end
end, { "i", "s" }),
["<C-p>"] = cmp.mapping(function(fallback)
if luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
-- NOTE: disable tabl when using copilot PART2
vim.api.nvim_set_keymap("i", "<C-f>", 'copilot#Accept("\\<CR>")', { expr = true, silent = true }),
-- ["<C-f>"] = cmp.mapping(function(fallback)
-- -- Check if Copilot is suggesting something
-- if vim.fn["copilot#Accept"]() ~= "" then
-- else
-- fallback() -- If no suggestion, fallback to default behavior
-- end
-- end, { "i", "s" }), -- Enable in insert and command-line mode
},
experimental = {
ghost_text = false, -- this feature conflict with copilot.vim's preview.
},
})
end,
},
-- disable AstroLSP signature help if `blink.cmp` is providing it
local blink_opts = require("astrocore").plugin_opts("blink.cmp")
if vim.tbl_get(blink_opts, "signature", "enabled") == true then
if not opts.features then
opts.features = {}
end
opts.features.signature_help = false
end
end,
},
{
"folke/lazydev.nvim",
optional = true,
specs = {
{
"Saghen/blink.cmp",
opts = function(_, opts)
if pcall(require, "lazydev.integrations.blink") then
return require("astrocore").extend_tbl(opts, {
sources = {
-- add lazydev to your completion providers
default = { "lazydev" },
providers = {
lazydev = {
name = "LazyDev",
module = "lazydev.integrations.blink",
score_offset = 100,
},
},
},
})
end
end,
},
},
},
-- disable built in completion plugins
-- { "hrsh7th/cmp-cmdline", event = "CmdlineEnter" },
},
},
}