examples/room_priv.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 31 Mar 2010 01:25:19 +0300
changeset 99 ed4676536ed9
parent 74 9d1d5939ac9f
child 109 2d2111cb5109
permissions -rw-r--r--
Update most useful scripts * new hooks interface * connection state checking
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
-- ROOM NICK COMPLETION
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
73
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
     4
-- global
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
room_cid = main.command ( 'priv',
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
	function ( args )
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     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
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
commands_help['priv'] = "nick message\n\nSends private message to room participant. Nick completion available! ;)"
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
73
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    12
local registered_nicks = {}
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    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
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
	for k, nick in pairs ( registered_nicks ) do
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
		main.del_completion ( room_cid, nick )
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
	end
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
	local buddy = main.current_buddy ()
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
	if buddy then
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
		local info = main.buddy_info ( buddy )
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
		if info then
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
			registered_nicks = { }
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
			if info.type == 'room' then
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
				for nick, k in pairs ( info.resources ) do
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
					main.add_completion ( room_cid, nick )
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
					table.insert ( registered_nicks, nick )
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
				end
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
			end
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
		end
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
	end
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
end
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
73
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    34
-- XXX
74
9d1d5939ac9f Typo and regex fix for room_priv
Myhailo Danylenko <isbear@ukrpost.net>
parents: 73
diff changeset
    35
local room_priv_pattern = "roster%s+.+"
73
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
74
9d1d5939ac9f Typo and regex fix for room_priv
Myhailo Danylenko <isbear@ukrpost.net>
parents: 73
diff changeset
    40
		main.binding ( key, ('lua main.run ( %q ); room_priv_register_nicks ()'):format ( binding ) )
73
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
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 74
diff changeset
    44
main.hook ( 'hook-lua-quit',
9
c2517f8bf647 Enum completion type
Myhailo Danylenko <isbear@ukrpost.net>
parents: 8
diff changeset
    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
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 74
diff changeset
    49
	end )
9
c2517f8bf647 Enum completion type
Myhailo Danylenko <isbear@ukrpost.net>
parents: 8
diff changeset
    50
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
-- vim: se ts=4: --