diff options
-rw-r--r-- | doc/user-guide/commands.xml | 41 | ||||
-rw-r--r-- | irc.c | 3 | ||||
-rw-r--r-- | irc_channel.c | 2 | ||||
-rw-r--r-- | nick.c | 20 |
4 files changed, 49 insertions, 17 deletions
diff --git a/doc/user-guide/commands.xml b/doc/user-guide/commands.xml index ee361b0f..e27356b8 100644 --- a/doc/user-guide/commands.xml +++ b/doc/user-guide/commands.xml @@ -1036,17 +1036,6 @@ </bitlbee-setting> - <bitlbee-setting name="lcnicks" type="boolean" scope="global"> - <default>true</default> - - <description> - <para> - Hereby you can change whether you want all lower case nick names or leave the case as it intended by your peer. - </para> - </description> - - </bitlbee-setting> - <bitlbee-setting name="local_display_name" type="boolean" scope="account"> <default>false</default> @@ -1213,6 +1202,36 @@ </description> </bitlbee-setting> + <bitlbee-setting name="nick_lowercase" type="boolean" scope="global"> + <default>true</default> + + <description> + <para> + If enabled, all nicknames are turned into lower case. + </para> + + <para> + See also the <emphasis>nick_underscores</emphasis> setting. This setting was previously known as <emphasis>lcnicks</emphasis>. + </para> + </description> + + </bitlbee-setting> + + <bitlbee-setting name="nick_underscores" type="boolean" scope="global"> + <default>true</default> + + <description> + <para> + If enabled, spaces in nicknames are turned into underscores instead of being stripped. + </para> + + <para> + See also the <emphasis>nick_lowercase</emphasis> setting. + </para> + </description> + + </bitlbee-setting> + <bitlbee-setting name="oauth" type="boolean" scope="account"> <default>true</default> @@ -112,8 +112,9 @@ irc_t *irc_new(int fd) s = set_add(&b->set, "handle_unknown", "add_channel", NULL, irc); s = set_add(&b->set, "last_version", "0", NULL, irc); s->flags |= SET_HIDDEN; - s = set_add(&b->set, "lcnicks", "true", set_eval_bool, irc); s = set_add(&b->set, "nick_format", "%-@nick", NULL, irc); + s = set_add(&b->set, "nick_lowercase", "false", set_eval_bool, irc); + s = set_add(&b->set, "nick_underscores", "false", set_eval_bool, irc); s = set_add(&b->set, "offline_user_quits", "true", set_eval_bool, irc); s = set_add(&b->set, "ops", "both", set_eval_irc_channel_ops, irc); s = set_add(&b->set, "paste_buffer", "false", set_eval_bool, irc); diff --git a/irc_channel.c b/irc_channel.c index 3ccbce55..e2c77fc5 100644 --- a/irc_channel.c +++ b/irc_channel.c @@ -637,7 +637,7 @@ char *irc_channel_name_gen(irc_t *irc, const char *hint) irc_channel_name_strip(name); - if (set_getbool(&irc->b->set, "lcnicks")) { + if (set_getbool(&irc->b->set, "nick_lowercase")) { nick_lc(irc, name + 1); } @@ -93,7 +93,7 @@ char *nick_get(bee_user_t *bu) } nick_strip(irc, nick); - if (set_getbool(&bu->bee->set, "lcnicks")) { + if (set_getbool(&bu->bee->set, "nick_lowercase")) { nick_lc(irc, nick); } } @@ -214,6 +214,11 @@ char *nick_gen(bee_user_t *bu) rets = g_string_free(ret, FALSE); if (ok && rets && *rets) { nick_strip(irc, rets); + + if (set_getbool(&bu->bee->set, "nick_lowercase")) { + nick_lc(irc, rets); + } + truncate_utf8(rets, MAX_NICK_LENGTH); return rets; } @@ -287,6 +292,7 @@ void nick_del(bee_user_t *bu) void nick_strip(irc_t *irc, char *nick) { int len = 0; + gboolean nick_underscores = set_getbool(&irc->b->set, "nick_underscores"); if (irc && (irc->status & IRC_UTF8_NICKS)) { gunichar c; @@ -296,8 +302,11 @@ void nick_strip(irc_t *irc, char *nick) c = g_utf8_get_char_validated(p, -1); n = g_utf8_find_next_char(p, NULL); - if ((c < 0x7f && !(strchr(nick_lc_chars, c) || - strchr(nick_uc_chars, c))) || + if (nick_underscores && c == ' ') { + *p = '_'; + p = n; + } else if ((c < 0x7f && !(strchr(nick_lc_chars, c) || + strchr(nick_uc_chars, c))) || !g_unichar_isgraph(c)) { strcpy(tmp, n); strcpy(p, tmp); @@ -312,7 +321,10 @@ void nick_strip(irc_t *irc, char *nick) int i; for (i = len = 0; nick[i] && len < MAX_NICK_LENGTH; i++) { - if (strchr(nick_lc_chars, nick[i]) || + if (nick_underscores && nick[i] == ' ') { + nick[len] = '_'; + len++; + } else if (strchr(nick_lc_chars, nick[i]) || strchr(nick_uc_chars, nick[i])) { nick[len] = nick[i]; len++; |