Improve the codes for sumneko friendly

This commit is contained in:
hrsh7th
2022-05-13 19:25:00 +09:00
parent 6527e5f31b
commit 0318a3cbc1
8 changed files with 170 additions and 163 deletions

View File

@@ -307,7 +307,7 @@ autocmd.subscribe('CmdlineChanged', async.debounce_next_tick(on_text_changed))
autocmd.subscribe('CursorMovedI', function() autocmd.subscribe('CursorMovedI', function()
if config.enabled() then if config.enabled() then
cmp.core:on_moved() cmp.core:on_moved()
else else
cmp.core:reset() cmp.core:reset()
cmp.core.view:close() cmp.core.view:close()
end end

View File

@@ -26,7 +26,7 @@ local char = require('cmp.utils.char')
---@field public complete_dedup function ---@field public complete_dedup function
local source = {} local source = {}
---@alias cmp.SourceStatus "1" | "2" | "3" ---@alias cmp.SourceStatus 1 | 2 | 3
source.SourceStatus = {} source.SourceStatus = {}
source.SourceStatus.WAITING = 1 source.SourceStatus.WAITING = 1
source.SourceStatus.FETCHING = 2 source.SourceStatus.FETCHING = 2

View File

@@ -1,37 +1,43 @@
local cmp = {} local cmp = {}
---@alias cmp.ConfirmBehavior "'insert'" | "'replace'" ---@alias cmp.ConfirmBehavior 'insert' | 'replace'
cmp.ConfirmBehavior = {} cmp.ConfirmBehavior = {
cmp.ConfirmBehavior.Insert = 'insert' Insert = 'insert',
cmp.ConfirmBehavior.Replace = 'replace' Replace = 'replace',
}
---@alias cmp.SelectBehavior "'insert'" | "'select'" ---@alias cmp.SelectBehavior 'insert' | 'select'
cmp.SelectBehavior = {} cmp.SelectBehavior = {
cmp.SelectBehavior.Insert = 'insert' Insert = 'insert',
cmp.SelectBehavior.Select = 'select' Select = 'select',
}
---@alias cmp.ContextReason "'auto'" | "'manual'" | "'none'" ---@alias cmp.ContextReason 'auto' | 'manual' 'triggerOnly' | 'none'
cmp.ContextReason = {} cmp.ContextReason = {
cmp.ContextReason.Auto = 'auto' Auto = 'auto',
cmp.ContextReason.Manual = 'manual' Manual = 'manual',
cmp.ContextReason.TriggerOnly = 'triggerOnly' TriggerOnly = 'triggerOnly',
cmp.ContextReason.None = 'none' None = 'none',
}
---@alias cmp.TriggerEvent "'InsertEnter'" | "'TextChanged'" ---@alias cmp.TriggerEvent 'InsertEnter' | 'TextChanged'
cmp.TriggerEvent = {} cmp.TriggerEvent = {
cmp.TriggerEvent.InsertEnter = 'InsertEnter' InsertEnter = 'InsertEnter',
cmp.TriggerEvent.TextChanged = 'TextChanged' TextChanged = 'TextChanged',
}
---@alias cmp.PreselectMode "'item'" | "'None'" ---@alias cmp.PreselectMode 'item' | 'None'
cmp.PreselectMode = {} cmp.PreselectMode = {
cmp.PreselectMode.Item = 'item' Item = 'item',
cmp.PreselectMode.None = 'none' None = 'none',
}
---@alias cmp.ItemField "'abbr'" | "'kind'" | "'menu'" ---@alias cmp.ItemField 'abbr' | 'kind' | 'menu'
cmp.ItemField = {} cmp.ItemField = {
cmp.ItemField.Abbr = 'abbr' Abbr = 'abbr',
cmp.ItemField.Kind = 'kind' Kind = 'kind',
cmp.ItemField.Menu = 'menu' Menu = 'menu',
}
---@class cmp.ContextOption ---@class cmp.ContextOption
---@field public reason cmp.ContextReason|nil ---@field public reason cmp.ContextReason|nil
@@ -86,9 +92,9 @@ cmp.ItemField.Menu = 'menu'
---@field public view cmp.ViewConfig ---@field public view cmp.ViewConfig
---@field public experimental cmp.ExperimentalConfig ---@field public experimental cmp.ExperimentalConfig
--- @class cmp.WindowConfig ---@class cmp.WindowConfig
--- @field completion cmp.WindowConfig ---@field completion cmp.WindowConfig
--- @field documentation cmp.WindowConfig|nil ---@field documentation cmp.WindowConfig|nil
---@class cmp.CompletionConfig ---@class cmp.CompletionConfig
---@field public autocomplete cmp.TriggerEvent[] ---@field public autocomplete cmp.TriggerEvent[]
@@ -125,8 +131,7 @@ cmp.ItemField.Menu = 'menu'
---@field public expand fun(args: cmp.SnippetExpansionParams) ---@field public expand fun(args: cmp.SnippetExpansionParams)
---@class cmp.ExperimentalConfig ---@class cmp.ExperimentalConfig
---@field public native_menu boolean ---@field public ghost_text cmp.GhostTextConfig|false
---@field public ghost_text cmp.GhostTextConfig|"false"
---@class cmp.GhostTextConfig ---@class cmp.GhostTextConfig
---@field hl_group string ---@field hl_group string
@@ -147,14 +152,14 @@ cmp.ItemField.Menu = 'menu'
---@alias cmp.EntriesConfig cmp.CustomEntriesConfig|cmp.NativeEntriesConfig|cmp.WildmenuEntriesConfig|string ---@alias cmp.EntriesConfig cmp.CustomEntriesConfig|cmp.NativeEntriesConfig|cmp.WildmenuEntriesConfig|string
---@class cmp.CustomEntriesConfig ---@class cmp.CustomEntriesConfig
---@field name "'custom'" ---@field name 'custom'
---@field selection_order "'top_down'"|"'near_cursor'" ---@field selection_order 'top_down'|'near_cursor'
---@class cmp.NativeEntriesConfig ---@class cmp.NativeEntriesConfig
---@field name "'native'" ---@field name 'native'
---@class cmp.WildmenuEntriesConfig ---@class cmp.WildmenuEntriesConfig
---@field name "'wildmenu'" ---@field name 'wildmenu'
---@field separator string|nil ---@field separator string|nil
return cmp return cmp

View File

@@ -1,138 +1,138 @@
local misc = require('cmp.utils.misc') local misc = require('cmp.utils.misc')
---@see https://microsoft.github.io/language-server-protocol/specifications/specification-current/ ---@see https://microsoft.github.io/language-server-protocol/specifications/specification-current/
---@class lsp ---@class lsp
local lsp = {} local lsp = {}
lsp.Position = {} lsp.Position = {
---Convert lsp.Position to vim.Position
---Convert lsp.Position to vim.Position ---@param buf number|string
---@param buf number|string ---@param position lsp.Position
---@param position lsp.Position ---@return vim.Position
---@return vim.Position to_vim = function(buf, position)
lsp.Position.to_vim = function(buf, position) if not vim.api.nvim_buf_is_loaded(buf) then
if not vim.api.nvim_buf_is_loaded(buf) then vim.fn.bufload(buf)
vim.fn.bufload(buf) end
end local lines = vim.api.nvim_buf_get_lines(buf, position.line, position.line + 1, false)
local lines = vim.api.nvim_buf_get_lines(buf, position.line, position.line + 1, false) if #lines > 0 then
if #lines > 0 then return {
row = position.line + 1,
col = misc.to_vimindex(lines[1], position.character),
}
end
return { return {
row = position.line + 1, row = position.line + 1,
col = misc.to_vimindex(lines[1], position.character), col = position.character + 1,
} }
end end,
return { ---Convert vim.Position to lsp.Position
row = position.line + 1, ---@param buf number|string
col = position.character + 1, ---@param position vim.Position
} ---@return lsp.Position
end to_lsp = function(buf, position)
if not vim.api.nvim_buf_is_loaded(buf) then
---Convert vim.Position to lsp.Position vim.fn.bufload(buf)
---@param buf number|string end
---@param position vim.Position local lines = vim.api.nvim_buf_get_lines(buf, position.row - 1, position.row, false)
---@return lsp.Position if #lines > 0 then
lsp.Position.to_lsp = function(buf, position) return {
if not vim.api.nvim_buf_is_loaded(buf) then line = position.row - 1,
vim.fn.bufload(buf) character = misc.to_utfindex(lines[1], position.col),
end }
local lines = vim.api.nvim_buf_get_lines(buf, position.row - 1, position.row, false) end
if #lines > 0 then
return { return {
line = position.row - 1, line = position.row - 1,
character = misc.to_utfindex(lines[1], position.col), character = position.col - 1,
} }
end end,
return { }
line = position.row - 1,
character = position.col - 1,
}
end
lsp.Range = {} lsp.Range = {
---Convert lsp.Range to vim.Range
---@param buf number|string
---@param range lsp.Range
---@return vim.Range
to_vim = function(buf, range)
return {
start = lsp.Position.to_vim(buf, range.start),
['end'] = lsp.Position.to_vim(buf, range['end']),
}
end,
---Convert lsp.Range to vim.Range ---Convert vim.Range to lsp.Range
---@param buf number|string ---@param buf number|string
---@param range lsp.Range ---@param range vim.Range
---@return vim.Range ---@return lsp.Range
lsp.Range.to_vim = function(buf, range) to_lsp = function(buf, range)
return { return {
start = lsp.Position.to_vim(buf, range.start), start = lsp.Position.to_lsp(buf, range.start),
['end'] = lsp.Position.to_vim(buf, range['end']), ['end'] = lsp.Position.to_lsp(buf, range['end']),
} }
end end,
}
---Convert vim.Range to lsp.Range ---@alias lsp.CompletionTriggerKind 1 | 2 | 3
---@param buf number|string lsp.CompletionTriggerKind = {
---@param range vim.Range Invoked = 1,
---@return lsp.Range TriggerCharacter = 2,
lsp.Range.to_lsp = function(buf, range) TriggerForIncompleteCompletions = 3,
return { }
start = lsp.Position.to_lsp(buf, range.start),
['end'] = lsp.Position.to_lsp(buf, range['end']),
}
end
---@alias lsp.CompletionTriggerKind "1" | "2" | "3" ---@alias lsp.InsertTextFormat 1 | 2
lsp.CompletionTriggerKind = {} lsp.InsertTextFormat = {}
lsp.CompletionTriggerKind.Invoked = 1 lsp.InsertTextFormat.PlainText = 1
lsp.CompletionTriggerKind.TriggerCharacter = 2 lsp.InsertTextFormat.Snippet = 2
lsp.CompletionTriggerKind.TriggerForIncompleteCompletions = 3
---@alias lsp.InsertTextMode 1 | 2
lsp.InsertTextMode = {
AsIs = 1,
AdjustIndentation = 2,
}
---@alias lsp.MarkupKind 'plaintext' | 'markdown'
lsp.MarkupKind = {
PlainText = 'plaintext',
Markdown = 'markdown',
}
---@alias lsp.CompletionItemTag 1
lsp.CompletionItemTag = {
Deprecated = 1,
}
---@alias lsp.CompletionItemKind 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25
lsp.CompletionItemKind = {
Text = 1,
Method = 2,
Function = 3,
Constructor = 4,
Field = 5,
Variable = 6,
Class = 7,
Interface = 8,
Module = 9,
Property = 10,
Unit = 11,
Value = 12,
Enum = 13,
Keyword = 14,
Snippet = 15,
Color = 16,
File = 17,
Reference = 18,
Folder = 19,
EnumMember = 20,
Constant = 21,
Struct = 22,
Event = 23,
Operator = 24,
TypeParameter = 25,
}
---@class lsp.CompletionContext ---@class lsp.CompletionContext
---@field public triggerKind lsp.CompletionTriggerKind ---@field public triggerKind lsp.CompletionTriggerKind
---@field public triggerCharacter string|nil ---@field public triggerCharacter string|nil
---@alias lsp.InsertTextFormat "1" | "2"
lsp.InsertTextFormat = {}
lsp.InsertTextFormat.PlainText = 1
lsp.InsertTextFormat.Snippet = 2
lsp.InsertTextFormat = vim.tbl_add_reverse_lookup(lsp.InsertTextFormat)
---@alias lsp.InsertTextMode "1" | "2"
lsp.InsertTextMode = {}
lsp.InsertTextMode.AsIs = 0
lsp.InsertTextMode.AdjustIndentation = 1
lsp.InsertTextMode = vim.tbl_add_reverse_lookup(lsp.InsertTextMode)
---@alias lsp.MarkupKind "'plaintext'" | "'markdown'"
lsp.MarkupKind = {}
lsp.MarkupKind.PlainText = 'plaintext'
lsp.MarkupKind.Markdown = 'markdown'
lsp.MarkupKind = vim.tbl_add_reverse_lookup(lsp.MarkupKind)
---@alias lsp.CompletionItemTag "1"
lsp.CompletionItemTag = {}
lsp.CompletionItemTag.Deprecated = 1
lsp.CompletionItemTag = vim.tbl_add_reverse_lookup(lsp.CompletionItemTag)
---@alias lsp.CompletionItemKind "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "20" | "21" | "22" | "23" | "24" | "25"
lsp.CompletionItemKind = {}
lsp.CompletionItemKind.Text = 1
lsp.CompletionItemKind.Method = 2
lsp.CompletionItemKind.Function = 3
lsp.CompletionItemKind.Constructor = 4
lsp.CompletionItemKind.Field = 5
lsp.CompletionItemKind.Variable = 6
lsp.CompletionItemKind.Class = 7
lsp.CompletionItemKind.Interface = 8
lsp.CompletionItemKind.Module = 9
lsp.CompletionItemKind.Property = 10
lsp.CompletionItemKind.Unit = 11
lsp.CompletionItemKind.Value = 12
lsp.CompletionItemKind.Enum = 13
lsp.CompletionItemKind.Keyword = 14
lsp.CompletionItemKind.Snippet = 15
lsp.CompletionItemKind.Color = 16
lsp.CompletionItemKind.File = 17
lsp.CompletionItemKind.Reference = 18
lsp.CompletionItemKind.Folder = 19
lsp.CompletionItemKind.EnumMember = 20
lsp.CompletionItemKind.Constant = 21
lsp.CompletionItemKind.Struct = 22
lsp.CompletionItemKind.Event = 23
lsp.CompletionItemKind.Operator = 24
lsp.CompletionItemKind.TypeParameter = 25
lsp.CompletionItemKind = vim.tbl_add_reverse_lookup(lsp.CompletionItemKind)
---@class lsp.CompletionList ---@class lsp.CompletionList
---@field public isIncomplete boolean ---@field public isIncomplete boolean
---@field public items lsp.CompletionItem[] ---@field public items lsp.CompletionItem[]

View File

@@ -3,9 +3,9 @@
---@field public abbr string|nil ---@field public abbr string|nil
---@field public kind string|nil ---@field public kind string|nil
---@field public menu string|nil ---@field public menu string|nil
---@field public equal "1"|nil ---@field public equal 1|nil
---@field public empty "1"|nil ---@field public empty 1|nil
---@field public dup "1"|nil ---@field public dup 1|nil
---@field public id any ---@field public id any
---@field public abbr_hl_group string|nil ---@field public abbr_hl_group string|nil
---@field public kind_hl_group string|nil ---@field public kind_hl_group string|nil

View File

@@ -3,7 +3,7 @@ local binary = {}
---Insert item to list to ordered index ---Insert item to list to ordered index
---@param list any[] ---@param list any[]
---@param item any ---@param item any
---@param func fun(a: any, b: any): "1"|"-1"|"0" ---@param func fun(a: any, b: any): 1|-1|0
binary.insort = function(list, item, func) binary.insort = function(list, item, func)
table.insert(list, binary.search(list, item, func), item) table.insert(list, binary.search(list, item, func), item)
end end
@@ -11,7 +11,7 @@ end
---Search suitable index from list ---Search suitable index from list
---@param list any[] ---@param list any[]
---@param item any ---@param item any
---@param func fun(a: any, b: any): "1"|"-1"|"0" ---@param func fun(a: any, b: any): 1|-1|0
---@return number ---@return number
binary.search = function(list, item, func) binary.search = function(list, item, func)
local s = 1 local s = 1

View File

@@ -1,20 +1,22 @@
local _
local alpha = {} local alpha = {}
string.gsub('abcdefghijklmnopqrstuvwxyz', '.', function(char) _ = string.gsub('abcdefghijklmnopqrstuvwxyz', '.', function(char)
alpha[string.byte(char)] = true alpha[string.byte(char)] = true
end) end)
local ALPHA = {} local ALPHA = {}
string.gsub('ABCDEFGHIJKLMNOPQRSTUVWXYZ', '.', function(char) _ = string.gsub('ABCDEFGHIJKLMNOPQRSTUVWXYZ', '.', function(char)
ALPHA[string.byte(char)] = true ALPHA[string.byte(char)] = true
end) end)
local digit = {} local digit = {}
string.gsub('1234567890', '.', function(char) _ = string.gsub('1234567890', '.', function(char)
digit[string.byte(char)] = true digit[string.byte(char)] = true
end) end)
local white = {} local white = {}
string.gsub(' \t\n', '.', function(char) _ = string.gsub(' \t\n', '.', function(char)
white[string.byte(char)] = true white[string.byte(char)] = true
end) end)

View File

@@ -134,7 +134,7 @@ misc.safe = function(v)
end end
---Treat 1/0 as bool value ---Treat 1/0 as bool value
---@param v boolean|"1"|"0" ---@param v boolean|1|0
---@param def boolean ---@param def boolean
---@return boolean ---@return boolean
misc.bool = function(v, def) misc.bool = function(v, def)