summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
Diffstat (limited to 'script')
-rw-r--r--script/core/type-formatting.lua28
-rw-r--r--script/provider/provider.lua2
2 files changed, 28 insertions, 2 deletions
diff --git a/script/core/type-formatting.lua b/script/core/type-formatting.lua
index 0c326b8b..c6316d80 100644
--- a/script/core/type-formatting.lua
+++ b/script/core/type-formatting.lua
@@ -1,6 +1,7 @@
local files = require 'files'
local lookBackward = require 'core.look-backward'
local guide = require "parser.guide"
+local codeFormat = require "code_format"
local function insertIndentation(uri, position, edits)
local text = files.getText(uri)
@@ -86,7 +87,29 @@ local function checkSplitOneLine(results, uri, position, ch)
end
end
-return function (uri, position, ch)
+local function typeFormat(results, uri, position, ch, options)
+ if ch ~= '\n' then
+ return
+ end
+ local text = files.getOriginText(uri)
+ local state = files.getState(uri)
+ if not state then
+ return
+ end
+ local converter = require("proto.converter")
+ local pos = converter.packPosition(uri, position)
+ local success, result = codeFormat.type_format(uri, text, pos.line, pos.character, options)
+ if success then
+ local range = result.range
+ results[#results+1] = {
+ text = result.newText,
+ start = converter.unpackPosition(uri, { line = range.start.line, character = range.start.character }),
+ finish = converter.unpackPosition(uri, { line = range["end"].line, character = range["end"].character }),
+ }
+ end
+end
+
+return function (uri, position, ch, options)
local ast = files.getState(uri)
if not ast then
return nil
@@ -95,6 +118,9 @@ return function (uri, position, ch)
local results = {}
-- split `function () $ end`
checkSplitOneLine(results, uri, position, ch)
+ if #results == 0 then
+ typeFormat(results, uri, position, ch, options)
+ end
return results
end
diff --git a/script/provider/provider.lua b/script/provider/provider.lua
index 239a39d7..018db0c3 100644
--- a/script/provider/provider.lua
+++ b/script/provider/provider.lua
@@ -1179,7 +1179,7 @@ m.register 'textDocument/onTypeFormatting' {
end
local core = require 'core.type-formatting'
local pos = converter.unpackPosition(uri, params.position)
- local edits = core(uri, pos, ch)
+ local edits = core(uri, pos, ch, params.options)
if not edits or #edits == 0 then
return nil
end