⚡️ 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:
+30
-6
@@ -72,13 +72,37 @@ return {
|
|||||||
"hrsh7th/nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
---@param opts cmp.ConfigSchema
|
---@param opts cmp.ConfigSchema
|
||||||
opts = function(_, opts)
|
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")
|
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({
|
cmp.setup({
|
||||||
mapping = {
|
mapping = {
|
||||||
["<C-p>"] = cmp.mapping.select_prev_item(),
|
["<C-p>"] = cmp.mapping.select_prev_item(),
|
||||||
|
|||||||
Reference in New Issue
Block a user