equal
deleted
inserted
replaced
|
1 |
|
2 marked_jids = {} |
|
3 |
|
4 function mark () |
|
5 local jid = main.current_buddy () |
|
6 marked_jids[jid] = true |
|
7 main.print_info ( jid, "Marked" ) |
|
8 end |
|
9 |
|
10 function unmark () |
|
11 local jid = main.current_buddy () |
|
12 marked_jids[jid] = nil |
|
13 main.print_info ( jid, "Unmarked" ) |
|
14 end |
|
15 |
|
16 function mark_toggle () |
|
17 local jid = main.current_buddy () |
|
18 if marked_jids[jid] then |
|
19 return unmark () |
|
20 else |
|
21 return mark () |
|
22 end |
|
23 end |
|
24 |
|
25 function marked () |
|
26 local ret = {} |
|
27 for jid, v in pairs ( marked_jids ) do |
|
28 table.insert ( ret, jid ) |
|
29 end |
|
30 return ret |
|
31 end |
|
32 |
|
33 function foreach_marked ( callback ) |
|
34 for jid, v in pairs ( marked_jids ) do |
|
35 if v then |
|
36 callback ( jid ) |
|
37 end |
|
38 end |
|
39 end |
|
40 |
|
41 function marked_clear () |
|
42 marked_jids = {} |
|
43 end |
|
44 |
|
45 main.add_command ( 'marked', |
|
46 function ( args ) |
|
47 local cmd = args:match ( "^%s*(%w+)" ) |
|
48 if cmd == 'clear' then |
|
49 marked_clear () |
|
50 elseif cmd == 'do' then |
|
51 local command = args:match ( "^%s*%w+%s+(.+)" ) |
|
52 foreach_marked ( |
|
53 function ( jid ) |
|
54 main.run ( string.format ( command, jid ) ) |
|
55 end ) |
|
56 else |
|
57 print ( "Marked jids:" ) |
|
58 foreach_marked ( |
|
59 function ( jid ) |
|
60 print ( ' - ' .. jid ) |
|
61 end ) |
|
62 end |
|
63 end ) |
|
64 |
|
65 commands_help['marked'] = "[clear | do mcabber_command]\n\nOperates on marked buddies. Without arguments prints list of marked jids.\nCommand should contain %s in place, where jid should be inserted." |
|
66 |
|
67 -- vim: se ts=4: -- |