diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2020-09-09 15:32:16 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2020-09-09 15:32:16 +0800 |
commit | 5f2417d1e23cbcf6c2d1b6bf5c488c7b99a2b628 (patch) | |
tree | e5e99e20d7fa52fc3e43bf08e0541e2f3d336216 /script-beta/core/keyword.lua | |
parent | 969beada83dc990c4b19ea6eec1614bb2cfe95f9 (diff) | |
download | lua-language-server-5f2417d1e23cbcf6c2d1b6bf5c488c7b99a2b628.zip |
common 不会找到关键字
Diffstat (limited to 'script-beta/core/keyword.lua')
-rw-r--r-- | script-beta/core/keyword.lua | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/script-beta/core/keyword.lua b/script-beta/core/keyword.lua new file mode 100644 index 00000000..7e192b2d --- /dev/null +++ b/script-beta/core/keyword.lua @@ -0,0 +1,264 @@ +local ckind = require 'define.CompletionItemKind' +local guide = require 'parser.guide' + +local keyWordMap = { + {'do', function (hasSpace, results) + if hasSpace then + results[#results+1] = { + label = 'do .. end', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[$0 end]], + } + else + results[#results+1] = { + label = 'do .. end', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + do + $0 + end]], + } + end + return true + end, function (ast, start) + return guide.eachSourceContain(ast.ast, start, function (source) + if source.type == 'while' + or source.type == 'in' + or source.type == 'loop' then + for i = 1, #source.keyword do + if start == source.keyword[i] then + return true + end + end + end + end) + end}, + {'and'}, + {'break'}, + {'else'}, + {'elseif', function (hasSpace, results) + if hasSpace then + results[#results+1] = { + label = 'elseif .. then', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[$1 then]], + } + else + results[#results+1] = { + label = 'elseif .. then', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[elseif $1 then]], + } + end + return true + end}, + {'end'}, + {'false'}, + {'for', function (hasSpace, results) + if hasSpace then + results[#results+1] = { + label = 'for .. in', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + ${1:key, value} in ${2:pairs(${3:t})} do + $0 + end]] + } + results[#results+1] = { + label = 'for i = ..', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + ${1:i} = ${2:1}, ${3:10, 1} do + $0 + end]] + } + else + results[#results+1] = { + label = 'for .. in', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + for ${1:key, value} in ${2:pairs(${3:t})} do + $0 + end]] + } + results[#results+1] = { + label = 'for i = ..', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + for ${1:i} = ${2:1}, ${3:10, 1} do + $0 + end]] + } + end + return true + end}, + {'function', function (hasSpace, results) + if hasSpace then + results[#results+1] = { + label = 'function ()', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + $1($2) + $0 + end]] + } + else + results[#results+1] = { + label = 'function ()', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + function $1($2) + $0 + end]] + } + end + return true + end}, + {'goto'}, + {'if', function (hasSpace, results) + if hasSpace then + results[#results+1] = { + label = 'if .. then', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + $1 then + $0 + end]] + } + else + results[#results+1] = { + label = 'if .. then', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + if $1 then + $0 + end]] + } + end + return true + end}, + {'in', function (hasSpace, results) + if hasSpace then + results[#results+1] = { + label = 'in ..', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + ${1:pairs(${2:t})} do + $0 + end]] + } + else + results[#results+1] = { + label = 'in ..', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + in ${1:pairs(${2:t})} do + $0 + end]] + } + end + return true + end}, + {'local', function (hasSpace, results) + if hasSpace then + results[#results+1] = { + label = 'local function', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + function $1($2) + $0 + end]] + } + else + results[#results+1] = { + label = 'local function', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + local function $1($2) + $0 + end]] + } + end + return false + end}, + {'nil'}, + {'not'}, + {'or'}, + {'repeat', function (hasSpace, results) + if hasSpace then + results[#results+1] = { + label = 'repeat .. until', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[$0 until $1]] + } + else + results[#results+1] = { + label = 'repeat .. until', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + repeat + $0 + until $1]] + } + end + return true + end}, + {'return', function (hasSpace, results) + if not hasSpace then + results[#results+1] = { + label = 'do return end', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[do return $1end]] + } + end + return false + end}, + {'then'}, + {'true'}, + {'until'}, + {'while', function (hasSpace, results) + if hasSpace then + results[#results+1] = { + label = 'while .. do', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + ${1:true} do + $0 + end]] + } + else + results[#results+1] = { + label = 'while .. do', + kind = ckind.Snippet, + insertTextFormat = 2, + insertText = [[ + while ${1:true} do + $0 + end]] + } + end + return true + end}, +} + +return keyWordMap |