A simple asynchronous input interface.
[screen-lua.git] / src / scripts / findwindow.lua
blob68b57aec99dd119725e2679566f867ea430bb368
1 function find_window(name)
2 if name ~= nil then
3 find_window_internal(name)
4 else
5 screen.input("window to find:", find_window_internal)
6 end
7 end
9 function find_window_internal(name)
10 display = screen.display()
11 canvases = display:get_canvases()
12 for i, c in pairs(canvases) do
13 w = c.window
14 if w ~= nil and (w.title == name or tostring(w.number) == name) then c:select() return end
15 end
17 -- Try partial matches, just like 'select'
18 for i, c in pairs(canvases) do
19 w = c.window
20 if w ~= nil and w.title:sub(1, name:len()) == name then c:select() return end
21 end
23 -- We didn't find the desired window in any canvas
24 -- So switch to the window in the current canvas instead
25 screen.command("select " .. name)
26 end