|
|
@@ -1,89 +0,0 @@ |
|
|
|
-- ec = require("editorconfig_core") |
|
|
|
|
|
|
|
local function setIndentation(properties, view) |
|
|
|
local indent_size_str = properties["indent_size"] |
|
|
|
local tab_width_str = properties["tab_width"] |
|
|
|
local indent_style = properties["indent_style"] |
|
|
|
|
|
|
|
local indent_size = tonumber(indent_size_str, 10) |
|
|
|
local tab_width = tonumber(tab_width_str, 10) |
|
|
|
if indent_size_str == "tab" then |
|
|
|
indent_size = tab_width |
|
|
|
elseif tab_width == nil then |
|
|
|
tab_width = indent_size |
|
|
|
end |
|
|
|
|
|
|
|
if indent_size ~= nil then |
|
|
|
messenger:Message("set tabsize to " .. indent_size_str) |
|
|
|
SetLocalOption("tabsize", indent_size, view) |
|
|
|
end |
|
|
|
|
|
|
|
if indent_style == "space" then |
|
|
|
SetLocalOption("tabstospaces", "on", view) |
|
|
|
if indent_size ~= nil then |
|
|
|
messenger:Message("set tabsize to " .. tostring(indent_size)) |
|
|
|
SetLocalOption("tabsize", indent_size, view) |
|
|
|
end |
|
|
|
elseif indent_style == "tab" then |
|
|
|
SetLocalOption("tabstospaces", "off", view) |
|
|
|
if tab_width ~= nil then |
|
|
|
messenger:Message("set tabsize to " .. tostring(tab_width)) |
|
|
|
SetLocalOption("tabsize", tab_width, view) |
|
|
|
end |
|
|
|
else |
|
|
|
messenger:Message("unknown indent_style") |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
local function setInsertFinalNewline(properties, view) |
|
|
|
local val = properties["insert_final_newline"] |
|
|
|
if val == "true" then |
|
|
|
SetLocalOption("eofnewline", true, view) |
|
|
|
elseif val == "false" then |
|
|
|
SetLocalOption("eofnewline", false, view) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
local function applyProperties(properties, view) |
|
|
|
setIndentation(properties, view) |
|
|
|
-- Currently micro does not support changing coding-systems |
|
|
|
-- (Always use utf-8 with LF?) |
|
|
|
-- setCodingSystem(properties, view) |
|
|
|
-- `ruler' is not what we want! |
|
|
|
-- setMaxLineLength(properties, view) |
|
|
|
-- setTrimTrailingWhitespace(properties, view) |
|
|
|
setInsertFinalNewline(properties, view) |
|
|
|
-- messenger:Message("ed output: " .. output) |
|
|
|
end |
|
|
|
|
|
|
|
function onEditorConfigExit(output) |
|
|
|
local properties = {} |
|
|
|
for line in output:gmatch('([^\n]+)') do |
|
|
|
local key, value = line:match('([^=]*)=(.*)') |
|
|
|
if key == nil or value == nil then |
|
|
|
messenger:Message("Failed to parse editorconfig output: " .. output) |
|
|
|
return |
|
|
|
end |
|
|
|
key = key:gsub('^%s(.-)%s*$', '%1') |
|
|
|
value = value:gsub('^%s(.-)%s*$', '%1') |
|
|
|
properties[key] = value |
|
|
|
end |
|
|
|
|
|
|
|
local view = CurView() |
|
|
|
applyProperties(properties, view) |
|
|
|
end |
|
|
|
|
|
|
|
local function getApplyProperties(view) |
|
|
|
local fullpath = view.Buf.AbsPath |
|
|
|
messenger:Message("editorconfig " .. fullpath) |
|
|
|
-- JobSpawn("editorconfig", {fullpath}, "", "", "init.onEditorConfigExit") |
|
|
|
JobStart("editorconfig " .. fullpath, "", "", "init.onEditorConfigExit") |
|
|
|
end |
|
|
|
|
|
|
|
function onViewOpen(view) |
|
|
|
getApplyProperties(view) |
|
|
|
end |
|
|
|
|
|
|
|
function onSave(view) |
|
|
|
-- messenger:Message("Saved!") |
|
|
|
end |