Суть окружить строку/выделение тэгами ХТМЛ по хоткею.
Если готовых годных нет, то ...
Мои работают с буфером, чего хотелось бы избежать. Подскажите, как макросом
1. встать/писать в начало/конец селекшн;
2. запомнить положение курсора и после выполнения макроса вернуться в то же место.
Моя версия editor_HTML.lua:
Code: Select all
--[[
Ctrl + 1/2/3/4/B/P/E/S/L Окружает выделение тегом h1 / h2 / h3 / h4 / b / p / em / s / li
Ctrl + U/O Окружает выделение тегом UL/OL
Ctrl + H Окружает выделение тегом a href=""
CtrlShift + H Окружает выделение тегом a href="" + title
AltCtrl + H Вставляет 2 строки в тэг А, 1-я - ссылка, 2-ю - ключевое слово
Ctrl + I Вставляет выделение в тег img src=""
CtrlShift + I Вставляет выделение в тег img src="" + alt
AltCtrl + I Вставляет 2 строки в тег img, 1-ю в src, 2-ю в alt
Alt + A Окружает текущую строку тегом из буфера обмена
Ctrl + X Удаляет тег в начале и конце строки
]]--
-- Simple HTML Tags in pairs ["HotKey"]="T a g"
tk = {
["1"] = "h 1",
["2"] = "h 2",
["3"] = "h 3",
["4"] = "h 4",
["B"] = "b",
["P"] = "p",
["E"] = "e m",
["S"] = "s",
["L"] = "l i"
};
for key, tag in pairs(tk) do
Macro {
area="Editor"; key="Ctrl"..key; flags=""; description="HTML: Окружает выделение тегом" .. tag; action = function()
s = Object.Selected
Keys(s and '' or 'Home ShiftEnd')
Keys('ShiftDel < ' .. tag .. ' > ShiftIns < Divide ' .. tag .. ' >')
Keys(s and '' or 'Home Down')
end;
}
end
-- HTML Lists
tk2 = {
["O"] = "o l",
["U"] = "u l"
};
for key, tag in pairs(tk2) do
Macro {
area="Editor"; key="Ctrl"..key; flags=""; description="HTML: Окружает выделение тегом" .. tag; action = function()
Keys('ShiftDel < ' .. tag .. ' > Enter ShiftIns < Divide ' .. tag .. ' > Enter')
end;
}
end
-- HTML links & images = A & IMG
-- tk3 = {
-- ["H"] = "",
-- ["I"] = ""
-- };
Macro {
area="Editor"; key="CtrlH"; flags=""; description="HTML: Окружает выделение тегом a href"; action = function()
Keys('ShiftDel < a Space h r e f = " " > ShiftIns < Divide a >')
end;
}
Macro {
area="Editor"; key="CtrlShiftH"; flags=""; description="HTML: Окружает выделение тегом a href + title"; action = function()
Keys('ShiftDel < a Space h r e f = " " Space t i t l e = " " > ShiftIns < Divide a >')
end;
}
Macro {
area="Editor"; key="AltCtrlH"; flags=""; description="HTML: Вставляет 2 строки в тэг А, 1-я - ссылка, 2-ю - ключевое слово"; action = function()
Keys('Home ShiftEnd ShiftDel < a Space h r e f = " ShiftIns Down Home ShiftEnd ShiftDel Up End " > ShiftIns < Divide a >')
end;
}
Macro {
area="Editor"; key="CtrlI"; flags=""; description="HTML: Вставляет выделение в тег img src="; action = function()
Keys('ShiftDel < i m g Space s r c = " ShiftIns " >')
end;
}
Macro {
area="Editor"; key="CtrlShiftI"; flags=""; description="HTML: Вставляет выделение в тег img src + alt"; action = function()
Keys('ShiftDel < i m g Space s r c = " ShiftIns " Space a l t = " " >')
end;
}
Macro {
area="Editor"; key="AltCtrlI"; flags=""; description="HTML: Вставляет 2 строки в тег img, 1-ю в src, 2-ю в alt"; action = function()
Keys('Home ShiftEnd ShiftDel < i m g Space s r c = " ShiftIns Down Home ShiftEnd ShiftDel Up End " Space a l t = " ShiftIns " >')
end;
}
-- Mix HTML macros
Macro {
area="Editor"; key="AltA"; flags=""; description="HTML: Окружает текущую строку тегом из буфера обмена";
code="Keys(\'Home < ShiftIns > End < Divide ShiftIns > Home Down\')";
}
-- Remove Tag
Macro {
area="Editor"; key="CtrlX"; flags=""; description="HTML: Удаляет тег в начале и конце строки";
code="Keys(\'Home CtrlShiftRight Del Del End CtrlShiftLeft Del BS BS Home\')";
}
-- Object.Selected.pos