-- MARKING
-- public functions:
-- * mark
-- * unmark
-- * mark_toggle
-- * marked
-- * foreach_marked
-- * marked_clear
-- binds 331 (Ins)
-- FIXME
-- * freezes on loading
-- TODO:
-- * test
-- * check jid type
-- * print marked/unmarked to log
-- * check command formatting
local marked_jids = {}
function mark ()
local jid = main.current_buddy ()
marked_jids[jid] = true
main.print_info ( jid, "Marked" )
end
function unmark ()
local jid = main.current_buddy ()
marked_jids[jid] = nil
main.print_info ( jid, "Unmarked" )
end
function mark_toggle ()
local jid = main.current_buddy ()
if marked_jids[jid] then
return unmark ()
else
return mark ()
end
end
function marked ()
local ret = {}
for jid, v in pairs ( marked_jids ) do
table.insert ( ret, jid )
end
return ret
end
function foreach_marked ( callback )
for jid, v in pairs ( marked_jids ) do
if v then
callback ( jid )
end
end
end
function marked_clear ()
marked_jids = {}
end
main.command ( 'marked',
function ( args )
local cmd = args[1]
if cmd == 'clear' then
marked_clear ()
elseif cmd == 'do' then
local command = args[2]
foreach_marked (
function ( jid )
main.run ( string.format ( command, jid ) )
end )
else
print ( "Marked jids:" )
foreach_marked (
function ( jid )
print ( ' - ' .. jid )
end )
end
end, true, { 'clear', 'do' } )
-- Ins
if not main.binding ( '331' ) then
main.binding ( '331', 'lua mark_toggle ()' )
main.hook ( 'hook-lua-quit',
function ( args )
main.binding ( '331', nil )
end )
end
-- vim: se ts=4 sw=4: --