examples/room_priv.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 28 Nov 2012 20:17:53 +0200
changeset 146 04d19c9c1196
parent 109 2d2111cb5109
permissions -rw-r--r--
Fix module loading problem
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
109
2d2111cb5109 Switch to object-based command handling
Myhailo Danylenko <isbear@ukrpost.net>
parents: 99
diff changeset
     5
room_cid = main.add_category ()
2d2111cb5109 Switch to object-based command handling
Myhailo Danylenko <isbear@ukrpost.net>
parents: 99
diff changeset
     6
main.command ( 'priv',
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
	function ( args )
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
		main.run ( 'room privmsg ' .. args )
109
2d2111cb5109 Switch to object-based command handling
Myhailo Danylenko <isbear@ukrpost.net>
parents: 99
diff changeset
     9
	end, false, room_cid )
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
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
    12
73
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    13
local registered_nicks = {}
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
73
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    15
-- global, used in binding
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    16
function room_priv_register_nicks ()
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
	for k, nick in pairs ( registered_nicks ) do
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
		main.del_completion ( room_cid, nick )
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
	end
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
	local buddy = main.current_buddy ()
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
	if buddy then
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
		local info = main.buddy_info ( buddy )
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
		if info then
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
			registered_nicks = { }
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
			if info.type == 'room' then
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
				for nick, k in pairs ( info.resources ) do
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
					main.add_completion ( room_cid, nick )
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
					table.insert ( registered_nicks, nick )
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
end
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
73
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    35
-- XXX
74
9d1d5939ac9f Typo and regex fix for room_priv
Myhailo Danylenko <isbear@ukrpost.net>
parents: 73
diff changeset
    36
local room_priv_pattern = "roster%s+.+"
73
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    37
local room_priv_restore = {}
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    38
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
    39
	if binding:match ( room_priv_pattern ) then
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    40
		room_priv_restore[key] = binding
74
9d1d5939ac9f Typo and regex fix for room_priv
Myhailo Danylenko <isbear@ukrpost.net>
parents: 73
diff changeset
    41
		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
    42
	end
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    43
end
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 74
diff changeset
    45
main.hook ( 'hook-lua-quit',
9
c2517f8bf647 Enum completion type
Myhailo Danylenko <isbear@ukrpost.net>
parents: 8
diff changeset
    46
	function ( args )
73
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    47
		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
    48
			main.binding ( key, binding )
b3ebfb8eb798 De-hardcode room priv bindings, take first
Myhailo Danylenko <isbear@ukrpost.net>
parents: 34
diff changeset
    49
		end
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 74
diff changeset
    50
	end )
9
c2517f8bf647 Enum completion type
Myhailo Danylenko <isbear@ukrpost.net>
parents: 8
diff changeset
    51
8
fc9060b9b7cc Completion
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
-- vim: se ts=4: --