59 lines
1.4 KiB
Lua
Executable File
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
|
|
|