Skip to content

Commit f8917bd

Browse files
committed
fix #539
1 parent 920f252 commit f8917bd

File tree

5 files changed

+21
-13
lines changed

5 files changed

+21
-13
lines changed

changelog.md

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* `FIX` loaded new file with ignored filename
55
* `FIX` [#536](https://github.com./sumneko/lua-language-server/issues/536)
66
* `FIX` [#537](https://github.com./sumneko/lua-language-server/issues/537)
7+
* `FIX` [#539](https://github.com./sumneko/lua-language-server/issues/539)
78

89
## 1.21.1
910
`2021-5-8`

script/core/completion.lua

+11-6
Original file line numberDiff line numberDiff line change
@@ -1163,13 +1163,18 @@ local function tryIndex(ast, text, offset, results)
11631163
checkField(ast, word, offset, offset, parent, oop, results)
11641164
end
11651165

1166-
local function tryWord(ast, text, offset, results)
1166+
local function tryWord(ast, text, offset, triggerCharacter, results)
11671167
local finish = lookBackward.skipSpace(text, offset)
1168-
local word, start = lookBackward.findWord(text, finish)
1168+
local word, start = lookBackward.findWord(text, offset)
11691169
if not word then
1170-
return nil
1170+
if triggerCharacter == nil then
1171+
word = ''
1172+
start = offset
1173+
else
1174+
return nil
1175+
end
11711176
end
1172-
local hasSpace = finish ~= offset
1177+
local hasSpace = triggerCharacter ~= nil and finish ~= offset
11731178
if isInString(ast, offset) then
11741179
if not hasSpace then
11751180
if #results == 0 then
@@ -1918,7 +1923,7 @@ local function clearCache()
19181923
cache.results = nil
19191924
end
19201925

1921-
local function completion(uri, offset)
1926+
local function completion(uri, offset, triggerCharacter)
19221927
tracy.ZoneBeginN 'completion cache'
19231928
local results = getCache(uri, offset)
19241929
tracy.ZoneEnd()
@@ -1940,7 +1945,7 @@ local function completion(uri, offset)
19401945
trySpecial(ast, text, offset, results)
19411946
tryCallArg(ast, text, offset, results)
19421947
tryTable(ast, text, offset, results)
1943-
tryWord(ast, text, offset, results)
1948+
tryWord(ast, text, offset, triggerCharacter, results)
19441949
tryIndex(ast, text, offset, results)
19451950
trySymbol(ast, text, offset, results)
19461951
end

script/provider/provider.lua

+6-5
Original file line numberDiff line numberDiff line change
@@ -458,17 +458,18 @@ proto.on('textDocument/completion', function (params)
458458
if not files.exists(uri) then
459459
return nil
460460
end
461-
if params.context and config.other.acceptSuggestionOnEnter ~= 'off' then
462-
if params.context.triggerCharacter == '\n'
463-
or params.context.triggerCharacter == '{'
464-
or params.context.triggerCharacter == ',' then
461+
local triggerCharacter = params.context and params.context.triggerCharacter
462+
if config.other.acceptSuggestionOnEnter ~= 'off' then
463+
if triggerCharacter == '\n'
464+
or triggerCharacter == '{'
465+
or triggerCharacter == ',' then
465466
return
466467
end
467468
end
468469
await.setPriority(1000)
469470
local clock = os.clock()
470471
local offset = files.offset(uri, params.position)
471-
local result = core.completion(uri, offset - 1)
472+
local result = core.completion(uri, offset - 1, triggerCharacter)
472473
local passed = os.clock() - clock
473474
if passed > 0.1 then
474475
log.warn(('Completion takes %.3f sec.'):format(passed))

test/completion/init.lua

+2-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ function TEST(script)
7070

7171
files.setText('', new_script)
7272
core.clearCache()
73-
local result = core.completion('', pos)
73+
local triggerCharacter = script:sub(pos - 1, pos - 1)
74+
local result = core.completion('', pos, triggerCharacter)
7475
if not expect then
7576
assert(result == nil)
7677
return

test/crossfile/completion.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ function TEST(data)
9797

9898
local expect = data.completion
9999
core.clearCache()
100-
local result = core.completion(mainUri, pos)
100+
local result = core.completion(mainUri, pos, '')
101101
if not expect then
102102
assert(result == nil)
103103
return

0 commit comments

Comments
 (0)