Explorar el Código

Refactor to use JobStart

pull/15/head
10sr hace 8 años
padre
commit
ad43b5ede3
Se han modificado 1 ficheros con 30 adiciones y 33 borrados
  1. +30
    -33
      micro/init.lua

+ 30
- 33
micro/init.lua Ver fichero

@@ -1,32 +1,11 @@
-- ec = require("editorconfig_core")

local function getProperties(fullpath)
-- FIXME: Commands can be injected here!
-- For example, issuing this command will create file b.txt
-- $ micro "a.txt'; touch 'b.txt"
local file = io.popen("editorconfig '" .. fullpath .. "'", "r")
local output = file:read("*all")
file:close()

local properties = {}
-- TODO: Which is better? output:gmatch(), string.gmatch(output, ...)
for line in output:gmatch('([^\n]+)') do
-- TODO: Fix regex
local key, value = line:match('([^=]*)=(.*)')
key = key:gsub('^%s(.-)%s*$', '%1')
value = value:gsub('^%s(.-)%s*$', '%1')
-- TODO: Throw error when key is empty string
properties[key] = value
end

return properties
end

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"]

-- TODO: Fix logic to decide indent_size
local indent_size = tonumber(indent_size_str, 10)
if indent_size ~= nil then
messenger:Message("set tabsize to " .. indent_size_str)
@@ -51,19 +30,20 @@ local function setInsertFinalNewline(properties, view)
end
end

function onViewOpen(view)
-- Is this portable? (work on windows?)
local pwd = os.getenv("PWD")
local filename = view.Buf.Path
-- prop, names = ec.parse(filepath)
local fullpath = JoinPaths(pwd, filename)
local properties = getProperties(fullpath)
if properties["indent_style"] == nil then
messenger:Message("edconf: nil")
else
messenger:Message("edconf: " .. properties["indent_style"])
function onEditorConfigExit(output)
local properties = {}
-- TODO: Which is better? output:gmatch(), string.gmatch(output, ...)
for line in output:gmatch('([^\n]+)') do
-- TODO: Fix regex
local key, value = line:match('([^=]*)=(.*)')
key = key:gsub('^%s(.-)%s*$', '%1')
value = value:gsub('^%s(.-)%s*$', '%1')
-- TODO: Throw error when key is empty string
properties[key] = value
end

local view = CurView()

setIndentation(properties, view)
-- Currently micro does not support changing coding-systems
-- (Always use utf-8 with LF?)
@@ -74,6 +54,23 @@ function onViewOpen(view)
setInsertFinalNewline(properties, view)
end

local function applyProperties(view)
-- Is this portable? (work on windows?)
local pwd = os.getenv("PWD")
local filename = view.Buf.Path
-- prop, names = ec.parse(filepath)
local fullpath = JoinPaths(pwd, filename)

-- FIXME: Commands can be injected here!
-- For example, issuing this command will create file b.txt
-- $ micro "a.txt'; touch 'b.txt"
JobStart("editorconfig " .. fullpath, "", "", "init.onEditorConfigExit")
end

function onViewOpen(view)
applyProperties(view)
end

function onSave(view)
-- messenger:Message("Saved!")
end

Cargando…
Cancelar
Guardar