luaforwindows/SciTE/scite-debug/scite_lua/switch_buffers.lua

59 lines
1.4 KiB
Lua
Executable File

--switch_buffers.lua
--drops down a list of buffers, in recently-used order
--~ scite_Command 'Switch Buffer|do_buffer_list|Alt+F12'
--~ scite_Command 'Last Buffer|last_buffer|Ctrl+F12'
local buffers = {}
local remove = table.remove
local insert = table.insert
local current_path
local _DirChange = {}
function scite_OnDirChange(fn,rem)
ex_append_unique(_DirChange,fn,rem)
end
scite_OnOpenSwitch(function(f)
--- swop the new current buffer with the last one!
local idx
for i,file in ipairs(buffers) do
if file == f then idx = i; break end
end
if idx then
remove(buffers,idx)
insert(buffers,1,f)
else
insert(buffers,1,f)
end
if current_path ~= props['FileDir'] then
current_path = props['FileDir']
DoDispatchOne(_DirChange,current_path)
end
end)
function last_buffer()
if #buffers > 1 then
scite.Open(buffers[2])
end
end
function do_buffer_list()
if not scite_GetPropBool('buffer.switch.fullpath',false) then
local files = {}
for i = 1,#buffers do
files[i] = basename(buffers[i])
end
scite_UserListShow(files,2,function(s)
for i = 1,#files do
if s == files[i] then
scite.Open(buffers[i])
end
end
end)
else
scite_UserListShow(buffers,2,scite.Open)
end
end