This is a basic implementation of filebrowser for Scite. Control comes true through the output panel.
local cmd, dir, pat, up, sep, begPos, endPos
if props['PLAT_WIN'] == '1' then
cmd = 'dir /b /o /a:-h '
sep = '\\'
pat = '\\[^\\]+$'
elseif props['PLAT_GTK'] == '1' then
cmd = 'ls -1v '
sep = '/'
pat = '/[^/]+$'
end
up = '[..]'
local function updateContent()
if begPos and endPos then
output:remove(begPos, endPos)
end
begPos = output.CurrentPos
local content = io.popen(cmd..'"'..dir..sep..'"')
print(dir..sep)
print(up)
print(content:read '*a')
content:close()
endPos = output.CurrentPos
end
function createContent()
dir = props['FileDir']
updateContent()
end
local oldOnDoubleClick = OnDoubleClick or function()end
function OnDoubleClick()
oldOnDoubleClick()
local name, path
name = output:GetCurLine():sub(1, -2)
if not dir
or not output.Focus
or name == '' or name == dir..sep
or endPos <= output.CurrentPos
or output.CurrentPos <= begPos then
return
end
if name == up then
path = dir:gsub(pat, '')
else
path = dir..sep..name
end
local file = io.open(path)
local x,err=file:read(1)
if io.type(file) and err==nil then
file:close()
scite.Open(path)
else
dir = path
updateContent()
end
end
To configure it type in your *.properties file the following:
command.name.3.*=FileBrowser
command.mode.3.*=subsystem:lua,savebefore:no
command.3.*=dostring createContent()
RecentChanges · preferences
edit · history
Last edited January 31, 2023 1:50 am GMT (diff)