diff options
-rw-r--r-- | doc/user-guide/commands.xml | 10 | ||||
-rw-r--r-- | root_commands.c | 16 |
2 files changed, 17 insertions, 9 deletions
diff --git a/doc/user-guide/commands.xml b/doc/user-guide/commands.xml index 2f5c961a..ae2d76fb 100644 --- a/doc/user-guide/commands.xml +++ b/doc/user-guide/commands.xml @@ -210,10 +210,10 @@ </bitlbee-command> <bitlbee-command name="set"> - <syntax>channel <channel id> set</syntax> - <syntax>channel <channel id> set <setting></syntax> - <syntax>channel <channel id> set <setting> <value></syntax> - <syntax>channel <channel id> set -del <setting></syntax> + <syntax>channel [<channel id>] set</syntax> + <syntax>channel [<channel id>] set <setting></syntax> + <syntax>channel [<channel id>] set <setting> <value></syntax> + <syntax>channel [<channel id>] set -del <setting></syntax> <description> <para> @@ -225,7 +225,7 @@ </para> <para> - The channel ID can be a number (see <emphasis>channel list</emphasis>), or (part of) its name, as long as it matches only one channel. + The channel ID can be a number (see <emphasis>channel list</emphasis>), or (part of) its name, as long as it matches only one channel. If you want to change settings of the current channel, you can omit the channel ID. </para> </description> </bitlbee-command> diff --git a/root_commands.c b/root_commands.c index 3b607d22..ddef9cde 100644 --- a/root_commands.c +++ b/root_commands.c @@ -549,15 +549,23 @@ static void cmd_channel( irc_t *irc, char **cmd ) return; } - MIN_ARGS( 2 ); - len = strlen( cmd[2] ); - if( ( ic = irc_channel_get( irc, cmd[1] ) ) == NULL ) { - irc_usermsg( irc, "Could not find channel `%s'", cmd[1] ); + /* If this doesn't match any channel, maybe this is the short + syntax (only works when used inside a channel). */ + if( ( len = strlen( cmd[1] ) ) && + g_strncasecmp( cmd[1], "set", len ) == 0 && + ( ic = irc_channel_by_name( irc, irc->last_root_cmd ) ) ) + cmd_set_real( irc, cmd + 1, &ic->set, NULL ); + else + irc_usermsg( irc, "Could not find channel `%s'", cmd[1] ); + return; } + MIN_ARGS( 2 ); + len = strlen( cmd[2] ); + if( len >= 1 && g_strncasecmp( cmd[2], "set", len ) == 0 ) { cmd_set_real( irc, cmd + 2, &ic->set, NULL ); |