summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2019-08-05 20:32:14 +0800
committer最萌小汐 <sumneko@hotmail.com>2019-08-05 20:32:14 +0800
commitde11f4a1d0f6dc17c115c729f878820985236602 (patch)
treea8b05e9c42ef6b5dd56a0d4524c5d753df954f4c
parentfdb6fcbab260ffc829550ac59c952791d0ed18b6 (diff)
downloadlua-language-server-de11f4a1d0f6dc17c115c729f878820985236602.zip
修正因字符串字面量为不可见字符导致hover无法显示的bug
-rw-r--r--.vscode/launch.json3
-rw-r--r--server/src/core/hover/hover.lua4
-rw-r--r--server/test/hover/init.lua5
3 files changed, 11 insertions, 1 deletions
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 28f7773f..baa8a471 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -29,7 +29,8 @@
"stopOnEntry": true,
"sourceCoding": "utf8",
"consoleCoding": "utf8",
- "address": "127.0.0.1:11411"
+ "address": "127.0.0.1:11411",
+ "outputCapture": []
},
{
"name": "编译",
diff --git a/server/src/core/hover/hover.lua b/server/src/core/hover/hover.lua
index dbbafc30..ca1e03d4 100644
--- a/server/src/core/hover/hover.lua
+++ b/server/src/core/hover/hover.lua
@@ -32,8 +32,12 @@ local function formatString(str)
str = str:sub(1000)
end
if str:find('[\r\n]') then
+ str = str:gsub('[\000-\008\011-\012\014-\031\127]', '')
return longString(str)
else
+ str = str:gsub('[\000-\008\011-\012\014-\031\127]', function (char)
+ return ('\\%03d'):format(char:byte())
+ end)
local single = str:find("'", 1, true)
local double = str:find('"', 1, true)
if single and double then
diff --git a/server/test/hover/init.lua b/server/test/hover/init.lua
index 88bc13d5..ea2631d4 100644
--- a/server/test/hover/init.lua
+++ b/server/test/hover/init.lua
@@ -466,6 +466,11 @@ function n<next>(table: table [, index: any])
]]
TEST[[
+local <?x?> = '\a'
+]]
+'local x: string = "\007"'
+
+TEST[[
---@class Class
local <?x?> = class()
]]