Improve the codes for sumneko friendly
This commit is contained in:
@@ -307,7 +307,7 @@ autocmd.subscribe('CmdlineChanged', async.debounce_next_tick(on_text_changed))
|
||||
autocmd.subscribe('CursorMovedI', function()
|
||||
if config.enabled() then
|
||||
cmp.core:on_moved()
|
||||
else
|
||||
else
|
||||
cmp.core:reset()
|
||||
cmp.core.view:close()
|
||||
end
|
||||
|
||||
@@ -26,7 +26,7 @@ local char = require('cmp.utils.char')
|
||||
---@field public complete_dedup function
|
||||
local source = {}
|
||||
|
||||
---@alias cmp.SourceStatus "1" | "2" | "3"
|
||||
---@alias cmp.SourceStatus 1 | 2 | 3
|
||||
source.SourceStatus = {}
|
||||
source.SourceStatus.WAITING = 1
|
||||
source.SourceStatus.FETCHING = 2
|
||||
|
||||
@@ -1,37 +1,43 @@
|
||||
local cmp = {}
|
||||
|
||||
---@alias cmp.ConfirmBehavior "'insert'" | "'replace'"
|
||||
cmp.ConfirmBehavior = {}
|
||||
cmp.ConfirmBehavior.Insert = 'insert'
|
||||
cmp.ConfirmBehavior.Replace = 'replace'
|
||||
---@alias cmp.ConfirmBehavior 'insert' | 'replace'
|
||||
cmp.ConfirmBehavior = {
|
||||
Insert = 'insert',
|
||||
Replace = 'replace',
|
||||
}
|
||||
|
||||
---@alias cmp.SelectBehavior "'insert'" | "'select'"
|
||||
cmp.SelectBehavior = {}
|
||||
cmp.SelectBehavior.Insert = 'insert'
|
||||
cmp.SelectBehavior.Select = 'select'
|
||||
---@alias cmp.SelectBehavior 'insert' | 'select'
|
||||
cmp.SelectBehavior = {
|
||||
Insert = 'insert',
|
||||
Select = 'select',
|
||||
}
|
||||
|
||||
---@alias cmp.ContextReason "'auto'" | "'manual'" | "'none'"
|
||||
cmp.ContextReason = {}
|
||||
cmp.ContextReason.Auto = 'auto'
|
||||
cmp.ContextReason.Manual = 'manual'
|
||||
cmp.ContextReason.TriggerOnly = 'triggerOnly'
|
||||
cmp.ContextReason.None = 'none'
|
||||
---@alias cmp.ContextReason 'auto' | 'manual' 'triggerOnly' | 'none'
|
||||
cmp.ContextReason = {
|
||||
Auto = 'auto',
|
||||
Manual = 'manual',
|
||||
TriggerOnly = 'triggerOnly',
|
||||
None = 'none',
|
||||
}
|
||||
|
||||
---@alias cmp.TriggerEvent "'InsertEnter'" | "'TextChanged'"
|
||||
cmp.TriggerEvent = {}
|
||||
cmp.TriggerEvent.InsertEnter = 'InsertEnter'
|
||||
cmp.TriggerEvent.TextChanged = 'TextChanged'
|
||||
---@alias cmp.TriggerEvent 'InsertEnter' | 'TextChanged'
|
||||
cmp.TriggerEvent = {
|
||||
InsertEnter = 'InsertEnter',
|
||||
TextChanged = 'TextChanged',
|
||||
}
|
||||
|
||||
---@alias cmp.PreselectMode "'item'" | "'None'"
|
||||
cmp.PreselectMode = {}
|
||||
cmp.PreselectMode.Item = 'item'
|
||||
cmp.PreselectMode.None = 'none'
|
||||
---@alias cmp.PreselectMode 'item' | 'None'
|
||||
cmp.PreselectMode = {
|
||||
Item = 'item',
|
||||
None = 'none',
|
||||
}
|
||||
|
||||
---@alias cmp.ItemField "'abbr'" | "'kind'" | "'menu'"
|
||||
cmp.ItemField = {}
|
||||
cmp.ItemField.Abbr = 'abbr'
|
||||
cmp.ItemField.Kind = 'kind'
|
||||
cmp.ItemField.Menu = 'menu'
|
||||
---@alias cmp.ItemField 'abbr' | 'kind' | 'menu'
|
||||
cmp.ItemField = {
|
||||
Abbr = 'abbr',
|
||||
Kind = 'kind',
|
||||
Menu = 'menu',
|
||||
}
|
||||
|
||||
---@class cmp.ContextOption
|
||||
---@field public reason cmp.ContextReason|nil
|
||||
@@ -86,9 +92,9 @@ cmp.ItemField.Menu = 'menu'
|
||||
---@field public view cmp.ViewConfig
|
||||
---@field public experimental cmp.ExperimentalConfig
|
||||
|
||||
--- @class cmp.WindowConfig
|
||||
--- @field completion cmp.WindowConfig
|
||||
--- @field documentation cmp.WindowConfig|nil
|
||||
---@class cmp.WindowConfig
|
||||
---@field completion cmp.WindowConfig
|
||||
---@field documentation cmp.WindowConfig|nil
|
||||
|
||||
---@class cmp.CompletionConfig
|
||||
---@field public autocomplete cmp.TriggerEvent[]
|
||||
@@ -125,8 +131,7 @@ cmp.ItemField.Menu = 'menu'
|
||||
---@field public expand fun(args: cmp.SnippetExpansionParams)
|
||||
|
||||
---@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
|
||||
---@field hl_group string
|
||||
@@ -147,14 +152,14 @@ cmp.ItemField.Menu = 'menu'
|
||||
---@alias cmp.EntriesConfig cmp.CustomEntriesConfig|cmp.NativeEntriesConfig|cmp.WildmenuEntriesConfig|string
|
||||
|
||||
---@class cmp.CustomEntriesConfig
|
||||
---@field name "'custom'"
|
||||
---@field selection_order "'top_down'"|"'near_cursor'"
|
||||
---@field name 'custom'
|
||||
---@field selection_order 'top_down'|'near_cursor'
|
||||
|
||||
---@class cmp.NativeEntriesConfig
|
||||
---@field name "'native'"
|
||||
---@field name 'native'
|
||||
|
||||
---@class cmp.WildmenuEntriesConfig
|
||||
---@field name "'wildmenu'"
|
||||
---@field name 'wildmenu'
|
||||
---@field separator string|nil
|
||||
|
||||
return cmp
|
||||
|
||||
@@ -1,138 +1,138 @@
|
||||
local misc = require('cmp.utils.misc')
|
||||
|
||||
---@see https://microsoft.github.io/language-server-protocol/specifications/specification-current/
|
||||
---@class lsp
|
||||
local lsp = {}
|
||||
|
||||
lsp.Position = {}
|
||||
|
||||
---Convert lsp.Position to vim.Position
|
||||
---@param buf number|string
|
||||
---@param position lsp.Position
|
||||
---@return vim.Position
|
||||
lsp.Position.to_vim = function(buf, position)
|
||||
if not vim.api.nvim_buf_is_loaded(buf) then
|
||||
vim.fn.bufload(buf)
|
||||
end
|
||||
local lines = vim.api.nvim_buf_get_lines(buf, position.line, position.line + 1, false)
|
||||
if #lines > 0 then
|
||||
lsp.Position = {
|
||||
---Convert lsp.Position to vim.Position
|
||||
---@param buf number|string
|
||||
---@param position lsp.Position
|
||||
---@return vim.Position
|
||||
to_vim = function(buf, position)
|
||||
if not vim.api.nvim_buf_is_loaded(buf) then
|
||||
vim.fn.bufload(buf)
|
||||
end
|
||||
local lines = vim.api.nvim_buf_get_lines(buf, position.line, position.line + 1, false)
|
||||
if #lines > 0 then
|
||||
return {
|
||||
row = position.line + 1,
|
||||
col = misc.to_vimindex(lines[1], position.character),
|
||||
}
|
||||
end
|
||||
return {
|
||||
row = position.line + 1,
|
||||
col = misc.to_vimindex(lines[1], position.character),
|
||||
col = position.character + 1,
|
||||
}
|
||||
end
|
||||
return {
|
||||
row = position.line + 1,
|
||||
col = position.character + 1,
|
||||
}
|
||||
end
|
||||
|
||||
---Convert vim.Position to lsp.Position
|
||||
---@param buf number|string
|
||||
---@param position vim.Position
|
||||
---@return lsp.Position
|
||||
lsp.Position.to_lsp = function(buf, position)
|
||||
if not vim.api.nvim_buf_is_loaded(buf) then
|
||||
vim.fn.bufload(buf)
|
||||
end
|
||||
local lines = vim.api.nvim_buf_get_lines(buf, position.row - 1, position.row, false)
|
||||
if #lines > 0 then
|
||||
end,
|
||||
---Convert vim.Position to lsp.Position
|
||||
---@param buf number|string
|
||||
---@param position vim.Position
|
||||
---@return lsp.Position
|
||||
to_lsp = function(buf, position)
|
||||
if not vim.api.nvim_buf_is_loaded(buf) then
|
||||
vim.fn.bufload(buf)
|
||||
end
|
||||
local lines = vim.api.nvim_buf_get_lines(buf, position.row - 1, position.row, false)
|
||||
if #lines > 0 then
|
||||
return {
|
||||
line = position.row - 1,
|
||||
character = misc.to_utfindex(lines[1], position.col),
|
||||
}
|
||||
end
|
||||
return {
|
||||
line = position.row - 1,
|
||||
character = misc.to_utfindex(lines[1], position.col),
|
||||
character = position.col - 1,
|
||||
}
|
||||
end
|
||||
return {
|
||||
line = position.row - 1,
|
||||
character = position.col - 1,
|
||||
}
|
||||
end
|
||||
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
|
||||
---@param buf number|string
|
||||
---@param range lsp.Range
|
||||
---@return vim.Range
|
||||
lsp.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 vim.Range to lsp.Range
|
||||
---@param buf number|string
|
||||
---@param range vim.Range
|
||||
---@return lsp.Range
|
||||
to_lsp = function(buf, range)
|
||||
return {
|
||||
start = lsp.Position.to_lsp(buf, range.start),
|
||||
['end'] = lsp.Position.to_lsp(buf, range['end']),
|
||||
}
|
||||
end,
|
||||
}
|
||||
|
||||
---Convert vim.Range to lsp.Range
|
||||
---@param buf number|string
|
||||
---@param range vim.Range
|
||||
---@return lsp.Range
|
||||
lsp.Range.to_lsp = function(buf, range)
|
||||
return {
|
||||
start = lsp.Position.to_lsp(buf, range.start),
|
||||
['end'] = lsp.Position.to_lsp(buf, range['end']),
|
||||
}
|
||||
end
|
||||
---@alias lsp.CompletionTriggerKind 1 | 2 | 3
|
||||
lsp.CompletionTriggerKind = {
|
||||
Invoked = 1,
|
||||
TriggerCharacter = 2,
|
||||
TriggerForIncompleteCompletions = 3,
|
||||
}
|
||||
|
||||
---@alias lsp.CompletionTriggerKind "1" | "2" | "3"
|
||||
lsp.CompletionTriggerKind = {}
|
||||
lsp.CompletionTriggerKind.Invoked = 1
|
||||
lsp.CompletionTriggerKind.TriggerCharacter = 2
|
||||
lsp.CompletionTriggerKind.TriggerForIncompleteCompletions = 3
|
||||
---@alias lsp.InsertTextFormat 1 | 2
|
||||
lsp.InsertTextFormat = {}
|
||||
lsp.InsertTextFormat.PlainText = 1
|
||||
lsp.InsertTextFormat.Snippet = 2
|
||||
|
||||
---@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
|
||||
---@field public triggerKind lsp.CompletionTriggerKind
|
||||
---@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
|
||||
---@field public isIncomplete boolean
|
||||
---@field public items lsp.CompletionItem[]
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
---@field public abbr string|nil
|
||||
---@field public kind string|nil
|
||||
---@field public menu string|nil
|
||||
---@field public equal "1"|nil
|
||||
---@field public empty "1"|nil
|
||||
---@field public dup "1"|nil
|
||||
---@field public equal 1|nil
|
||||
---@field public empty 1|nil
|
||||
---@field public dup 1|nil
|
||||
---@field public id any
|
||||
---@field public abbr_hl_group string|nil
|
||||
---@field public kind_hl_group string|nil
|
||||
|
||||
@@ -3,7 +3,7 @@ local binary = {}
|
||||
---Insert item to list to ordered index
|
||||
---@param list 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)
|
||||
table.insert(list, binary.search(list, item, func), item)
|
||||
end
|
||||
@@ -11,7 +11,7 @@ end
|
||||
---Search suitable index from list
|
||||
---@param list 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
|
||||
binary.search = function(list, item, func)
|
||||
local s = 1
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
local _
|
||||
|
||||
local alpha = {}
|
||||
string.gsub('abcdefghijklmnopqrstuvwxyz', '.', function(char)
|
||||
_ = string.gsub('abcdefghijklmnopqrstuvwxyz', '.', function(char)
|
||||
alpha[string.byte(char)] = true
|
||||
end)
|
||||
|
||||
local ALPHA = {}
|
||||
string.gsub('ABCDEFGHIJKLMNOPQRSTUVWXYZ', '.', function(char)
|
||||
_ = string.gsub('ABCDEFGHIJKLMNOPQRSTUVWXYZ', '.', function(char)
|
||||
ALPHA[string.byte(char)] = true
|
||||
end)
|
||||
|
||||
local digit = {}
|
||||
string.gsub('1234567890', '.', function(char)
|
||||
_ = string.gsub('1234567890', '.', function(char)
|
||||
digit[string.byte(char)] = true
|
||||
end)
|
||||
|
||||
local white = {}
|
||||
string.gsub(' \t\n', '.', function(char)
|
||||
_ = string.gsub(' \t\n', '.', function(char)
|
||||
white[string.byte(char)] = true
|
||||
end)
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ misc.safe = function(v)
|
||||
end
|
||||
|
||||
---Treat 1/0 as bool value
|
||||
---@param v boolean|"1"|"0"
|
||||
---@param v boolean|1|0
|
||||
---@param def boolean
|
||||
---@return boolean
|
||||
misc.bool = function(v, def)
|
||||
|
||||
Reference in New Issue
Block a user