author | Myhailo Danylenko <isbear@ukrpost.net> |
Thu, 16 Jul 2009 14:56:26 +0300 | |
changeset 73 | b3ebfb8eb798 |
parent 34 | 8206d7cb1447 |
child 74 | 9d1d5939ac9f |
permissions | -rw-r--r-- |
8 | 1 |
|
2 |
-- ROOM NICK COMPLETION |
|
3 |
||
73
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
4 |
-- global |
8 | 5 |
room_cid = main.command ( 'priv', |
6 |
function ( args ) |
|
7 |
main.run ( 'room privmsg ' .. args ) |
|
34
8206d7cb1447
Args auto-parsing, use main.binding
Myhailo Danylenko <isbear@ukrpost.net>
parents:
9
diff
changeset
|
8 |
end, false, {} ) |
8 | 9 |
|
10 |
commands_help['priv'] = "nick message\n\nSends private message to room participant. Nick completion available! ;)" |
|
11 |
||
73
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
12 |
local registered_nicks = {} |
8 | 13 |
|
73
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
14 |
-- global, used in binding |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
15 |
function room_priv_register_nicks () |
8 | 16 |
for k, nick in pairs ( registered_nicks ) do |
17 |
main.del_completion ( room_cid, nick ) |
|
18 |
end |
|
19 |
local buddy = main.current_buddy () |
|
20 |
if buddy then |
|
21 |
local info = main.buddy_info ( buddy ) |
|
22 |
if info then |
|
23 |
registered_nicks = { } |
|
24 |
if info.type == 'room' then |
|
25 |
for nick, k in pairs ( info.resources ) do |
|
26 |
main.add_completion ( room_cid, nick ) |
|
27 |
table.insert ( registered_nicks, nick ) |
|
28 |
end |
|
29 |
end |
|
30 |
end |
|
31 |
end |
|
32 |
end |
|
33 |
||
73
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
34 |
-- XXX |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
35 |
local room_priv_pattern = "roster%s+(up|down)" |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
36 |
local room_priv_restore = {} |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
37 |
for key, binding in pairs ( main.binding () ) do |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
38 |
if binding:match ( room_priv_pattern ) then |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
39 |
room_priv_restore[key] = binding |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
40 |
main.binding ( key, ('lua main.run ( %q ); room_priv_register_nicks ()'):format ( binding ) |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
41 |
end |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
42 |
end |
8 | 43 |
|
9 | 44 |
hooks_d['hook-quit'].room_priv = |
45 |
function ( args ) |
|
73
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
46 |
for key, binding in pairs ( room_priv_restore ) do |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
47 |
main.binding ( key, binding ) |
b3ebfb8eb798
De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents:
34
diff
changeset
|
48 |
end |
9 | 49 |
end |
50 |
||
8 | 51 |
-- vim: se ts=4: -- |