| @@ -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 | |||