️ perf(nvim-cmp): toggle cmp sources based on ft

Allow some/all cmp sources to be enabled/disabled depending on the filetype of the buffer
This commit is contained in:
2024-08-04 17:59:32 -04:00
parent 55cb66892e
commit 0792328281
+30 -6
View File
@@ -72,13 +72,37 @@ return {
"hrsh7th/nvim-cmp",
---@param opts cmp.ConfigSchema
opts = function(_, opts)
table.insert(opts.sources, { name = "emoji" })
table.insert(opts.sources, { name = "cmp_yanky" })
table.insert(opts.sources, { name = "dotenv" })
table.insert(opts.sources, { name = "calc" })
table.insert(opts.sources, { name = "conventionalcommits" })
table.insert(opts.sources, { name = "gitmoji" })
local cmp = require("cmp")
-- Global sources
opts.sources = {
{ name = "emoji" },
{ name = "cmp_yanky" },
{ name = "dotenv" },
{ name = "calc" },
{ name = "conventionalcommits" },
{ name = "gitmoji" },
}
-- General setup
cmp.setup(opts)
-- Filetype-specific setup
cmp.setup.filetype("config", {
sources = vim.tbl_filter(function(source)
return source.name ~= "emoji" and source.name ~= "gitmoji"
end, opts.sources),
})
-- List of filetypes to disable completion
local disabled_filetypes = { "dashboard", "qalc" }
for _, filetype in ipairs(disabled_filetypes) do
cmp.setup.filetype(filetype, {
sources = {},
})
end
-- Key mappings
cmp.setup({
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),