diff options
| author | noname <noname@inventati.org> | 2014-04-27 15:40:23 +0400 | 
|---|---|---|
| committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2014-04-28 18:38:07 +0200 | 
| commit | 74962bf56636e608f0ee35f2076bc6b48923119d (patch) | |
| tree | 6c8ce174b1dd99758779dd432e9beaa84ff31852 | |
| parent | 6681af165b06c32cf65bf970a295600d46cb7025 (diff) | |
Remove one indentation level in getsel().
| -rw-r--r-- | st.c | 91 | 
1 files changed, 45 insertions, 46 deletions
| @@ -922,60 +922,59 @@ getsel(void) {  	int x, y, bufsize, size, i, ex;  	Glyph *gp, *last; -	if(sel.ob.x == -1) { -		str = NULL; -	} else { -		bufsize = (term.col+1) * (sel.ne.y-sel.nb.y+1) * UTF_SIZ; -		ptr = str = xmalloc(bufsize); +	if(sel.ob.x == -1) +		return NULL; -		/* append every set & selected glyph to the selection */ -		for(y = sel.nb.y; y < sel.ne.y + 1; y++) { -			gp = &term.line[y][0]; -			last = &gp[term.col-1]; +	bufsize = (term.col+1) * (sel.ne.y-sel.nb.y+1) * UTF_SIZ; +	ptr = str = xmalloc(bufsize); -			while(last >= gp && !(selected(last - gp, y) && -			                      strcmp(last->c, " ") != 0)) { -				--last; -			} +	/* append every set & selected glyph to the selection */ +	for(y = sel.nb.y; y < sel.ne.y + 1; y++) { +		gp = &term.line[y][0]; +		last = &gp[term.col-1]; -			for(x = 0; gp <= last; x++, ++gp) { -				if(!selected(x, y) || (gp->mode & ATTR_WDUMMY)) -					continue; +		while(last >= gp && !(selected(last - gp, y) && +				      strcmp(last->c, " ") != 0)) { +			--last; +		} -				size = utf8len(gp->c); -				memcpy(ptr, gp->c, size); -				ptr += size; -			} +		for(x = 0; gp <= last; x++, ++gp) { +			if(!selected(x, y) || (gp->mode & ATTR_WDUMMY)) +				continue; -			/* -			 * Copy and pasting of line endings is inconsistent -			 * in the inconsistent terminal and GUI world. -			 * The best solution seems like to produce '\n' when -			 * something is copied from st and convert '\n' to -			 * '\r', when something to be pasted is received by -			 * st. -			 * FIXME: Fix the computer world. -			 */ -			if(y < sel.ne.y && x > 0 && !((gp-1)->mode & ATTR_WRAP)) -				*ptr++ = '\n'; +			size = utf8len(gp->c); +			memcpy(ptr, gp->c, size); +			ptr += size; +		} -			/* -			 * If the last selected line expands in the selection -			 * after the visible text '\n' is appended. -			 */ -			if(y == sel.ne.y) { -				i = term.col; -				while(--i > 0 && term.line[y][i].c[0] == ' ') -					/* nothing */; -				ex = sel.ne.x; -				if(sel.nb.y == sel.ne.y && sel.ne.x < sel.nb.x) -					ex = sel.nb.x; -				if(i < ex) -					*ptr++ = '\n'; -			} +		/* +		 * Copy and pasting of line endings is inconsistent +		 * in the inconsistent terminal and GUI world. +		 * The best solution seems like to produce '\n' when +		 * something is copied from st and convert '\n' to +		 * '\r', when something to be pasted is received by +		 * st. +		 * FIXME: Fix the computer world. +		 */ +		if(y < sel.ne.y && x > 0 && !((gp-1)->mode & ATTR_WRAP)) +			*ptr++ = '\n'; + +		/* +		 * If the last selected line expands in the selection +		 * after the visible text '\n' is appended. +		 */ +		if(y == sel.ne.y) { +			i = term.col; +			while(--i > 0 && term.line[y][i].c[0] == ' ') +				/* nothing */; +			ex = sel.ne.x; +			if(sel.nb.y == sel.ne.y && sel.ne.x < sel.nb.x) +				ex = sel.nb.x; +			if(i < ex) +				*ptr++ = '\n';  		} -		*ptr = 0;  	} +	*ptr = 0;  	return str;  } | 
