From 630cdf7d547c4461ef6d7362c3794a08abfad4fb Mon Sep 17 00:00:00 2001 From: hrsh7th <629908+hrsh7th@users.noreply.github.com> Date: Fri, 22 Mar 2024 18:44:52 +0900 Subject: [PATCH] fix #1858 --- lua/cmp/utils/misc.lua | 10 ++++++++++ lua/cmp/utils/snippet.lua | 6 ++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lua/cmp/utils/misc.lua b/lua/cmp/utils/misc.lua index fda6f47..6604679 100644 --- a/lua/cmp/utils/misc.lua +++ b/lua/cmp/utils/misc.lua @@ -69,6 +69,16 @@ misc.empty = function(v) return false end +---Search value in table +misc.contains = function(tbl, v) + for _, value in ipairs(tbl) do + if value == v then + return true + end + end + return false +end + ---The symbol to remove key in misc.merge. misc.none = vim.NIL diff --git a/lua/cmp/utils/snippet.lua b/lua/cmp/utils/snippet.lua index bb9bc95..0bd53c8 100644 --- a/lua/cmp/utils/snippet.lua +++ b/lua/cmp/utils/snippet.lua @@ -1,3 +1,5 @@ +local misc = require('cmp.utils.misc') + local P = {} ---Take characters until the target characters (The escape sequence is '\' + char) @@ -17,14 +19,14 @@ P.take_until = function(targets, specials) table.insert(raw, '\\') new_pos = new_pos + 1 c = string.sub(input, new_pos, new_pos) - if not vim.list_contains(targets, c) and not vim.list_contains(specials, c) then + if not misc.contains(targets, c) and not misc.contains(specials, c) then table.insert(esc, '\\') end table.insert(raw, c) table.insert(esc, c) new_pos = new_pos + 1 else - if vim.list_contains(targets, c) then + if misc.contains(targets, c) then break end table.insert(raw, c)