Я был немного разочарован, когда не нашел ответа, когда искал то же самое. Google тоже не помогла, поэтому я искал примеры и синтаксис Lua в надежде создать его самостоятельно. Я не знаю Lua, так что, возможно, это можно сделать по-другому или эффективно, но лучше, чем ничего, я надеюсь, вот функция Lua, которую нужно включить в скрипт запуска Lua для SciTE:
function wrap_text()
local border = 80
local t = {}
local pos = editor.SelectionStart
local sel = editor:GetSelText()
if #sel == 0 then return end
local para = {}
local function helper(line) table.insert(para, line) return "" end
helper((sel:gsub("(.-)\r?\n", helper)))
for k, v in pairs(para) do
line = ""
for token in string.gmatch(v, "[^%s]+") do
if string.len(token .. line) >= border then
t[#t + 1] = line
line = token .. " "
else
line = line .. token .. " "
end
end
t[#t + 1] = line:gsub("%s$", "")
end
editor:ReplaceSel(table.concat(t, "\n"))
editor:GotoPos(pos)
end
Использование аналогично любой другой функции из скрипта запуска, но для полноты я вставлю определение своего инструмента из файла свойств SciTE:
command.name.8.*=Wrap Text
command.mode.8.*=subsystem:lua,savebefore:no,groupundo
command.8.*=wrap_text
command.replace.selection.8.*=2
Он учитывает абзацы, поэтому его можно использовать для более широкого выбора, а не только для одного абзаца.