-
Notifications
You must be signed in to change notification settings - Fork 0
/
microzim.lua
158 lines (125 loc) · 4.4 KB
/
microzim.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
VERSION = "0.1.0"
local micro = import("micro")
local config = import("micro/config")
local buffer = import("micro/buffer")
local util = import("micro/util")
function header()
local buf = micro.CurPane().Buf
local c = micro.CurPane().Cursor
buf:Insert( buffer.Loc(0, 0), "Content-Type: text/x-zim-wiki\n")
buf:Insert( buffer.Loc(0, 1), "Wiki-Format: zim 0.6\n")
--buf:Insert( buffer.Loc(0, 2), "Creation-Date: 2020-02-06T09:31:36+01:00\n")
end
function verbatim()
local buf = micro.CurPane().Buf
local c = micro.CurPane().Cursor
if c:HasSelection() then
local inicio, fin = nil, nil
if c.CurSelection[1]:GreaterThan(-c.CurSelection[2]) then
inicio = c.CurSelection[2]
fin = c.CurSelection[1]
else
inicio = c.CurSelection[1]
fin = c.CurSelection[2]
end
-- Si tenemos más de una línea seleccionada o no
if inicio.Y == fin.Y then
local seleccion = c:GetSelection() --devuelve array de bytes
local texto = util.String(seleccion)
micro.InfoBar():Message( "Texto afectado: " .. texto )
texto = "\'\'" .. texto .. "\'\'";
LocInicio = buffer.Loc(inicio.X, inicio.Y)
LocFin = buffer.Loc(fin.X, fin.Y)
buf:Replace(LocInicio, LocFin, texto)
else
local a = buffer.Loc(0, inicio.Y)
local b = buffer.Loc(0, fin.Y)
local marca = "\'\'\'"
micro.InfoBar():Message( "Líneas afectadas: " .. inicio.Y .. " - " .. fin.Y)
buf:Insert( b, marca .. "\n")
buf:Insert( a, marca .. "\n")
end
else
micro.InfoBar():Message( "Ninguna línea seleccionada")
end
end
function italic()
italicOrBoldAuxiliar("//")
end
function bold()
italicOrBoldAuxiliar("**")
end
function italicOrBoldAuxiliar(marca)
local buf = micro.CurPane().Buf
local c = micro.CurPane().Cursor
if c:HasSelection() then
local inicio, fin = nil, nil
if c.CurSelection[1]:GreaterThan(-c.CurSelection[2]) then
inicio = c.CurSelection[2]
fin = c.CurSelection[1]
else
inicio = c.CurSelection[1]
fin = c.CurSelection[2]
end
-- Si tenemos más de una línea seleccionada o no
if inicio.Y == fin.Y then
local seleccion = c:GetSelection() --devuelve array de bytes
local texto = util.String(seleccion)
micro.InfoBar():Message( "Texto afectado: " .. texto )
texto = marca .. texto .. marca;
LocInicio = buffer.Loc(inicio.X, inicio.Y)
LocFin = buffer.Loc(fin.X, fin.Y)
buf:Replace(LocInicio, LocFin, texto)
else
micro.InfoBar():Message( "Error: Más de una línea seleccionada")
end
else
micro.InfoBar():Message( "Error: Nada seleccionado")
end
end
function h1()
heading("======")
end
function h2()
heading("=====")
end
function h3()
heading("====")
end
function h4()
heading("===")
end
function h5()
heading("==")
end
function heading(formato)
local buf = micro.CurPane().Buf
local numLinea = micro.CurPane().Cursor.Loc.Y --las líneas comienzan a contarse desde la 0
local eol = string.len(micro.CurPane().Buf:Line(micro.CurPane().Cursor.Loc.Y))
local txtViejo = buf:Line(numLinea)
local txtNuevo = formato .. " " .. txtViejo .. " " .. formato
local LocInicioLinea = buffer.Loc(0,numLinea)
local LocFinLinea = buffer.Loc(eol,numLinea)
buf:Replace(LocInicioLinea, LocFinLinea, txtNuevo)
end
function init()
config.MakeCommand("h1", h1, config.NoComplete)
config.MakeCommand("h2", h2, config.NoComplete)
config.MakeCommand("h3", h3, config.NoComplete)
config.MakeCommand("h4", h4, config.NoComplete)
config.MakeCommand("h5", h5, config.NoComplete)
config.MakeCommand("verbatim", verbatim, config.NoComplete)
config.MakeCommand("header" , header, config.NoComplete)
config.MakeCommand("bold" , bold, config.NoComplete)
config.MakeCommand("italic" , italic, config.NoComplete)
config.TryBindKey("Alt-1", "lua:microzim.h1",false)
config.TryBindKey("Alt-2", "lua:microzim.h2",false)
config.TryBindKey("Alt-3", "lua:microzim.h3",false)
config.TryBindKey("Alt-4", "lua:microzim.h4",false)
config.TryBindKey("Alt-5", "lua:microzim.h5",false)
config.TryBindKey("Alt-t", "lua:microzim.verbatim",false)
config.TryBindKey("Alt-h", "lua:microzim.header",false)
config.TryBindKey("Alt-b", "lua:microzim.bold",false)
config.TryBindKey("Alt-i", "lua:microzim.italic",false)
-- config.AddRuntimeFile("microzim", config.RTHelp, "help/microzim.md")
end