diff options
| author | dequis <dx@dxzone.com.ar> | 2016-12-24 01:56:45 -0300 | 
|---|---|---|
| committer | dequis <dx@dxzone.com.ar> | 2016-12-25 21:18:55 -0300 | 
| commit | 90254d0d6daa664707503f5c909198aefdc1151c (patch) | |
| tree | ee200e261a20d92cbbaddcb6b851c9051a27c3c6 | |
| parent | 0483e1e6e3954787058aff78223cb758f0074f2d (diff) | |
Add nick_lowercase and nick_underscores settings
| -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++; | 
