|
|
@ -681,6 +681,10 @@ void
|
|
|
|
selsnap(int mode, int *x, int *y, int direction) {
|
|
|
|
selsnap(int mode, int *x, int *y, int direction) {
|
|
|
|
switch(mode) {
|
|
|
|
switch(mode) {
|
|
|
|
case SNAP_WORD:
|
|
|
|
case SNAP_WORD:
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
* Snap around if the word wraps around at the end or
|
|
|
|
|
|
|
|
* beginning of a line.
|
|
|
|
|
|
|
|
*/
|
|
|
|
for(;;) {
|
|
|
|
for(;;) {
|
|
|
|
if(direction < 0 && *x <= 0) {
|
|
|
|
if(direction < 0 && *x <= 0) {
|
|
|
|
if(*y > 0 && term.line[*y - 1][term.col-1].mode
|
|
|
|
if(*y > 0 && term.line[*y - 1][term.col-1].mode
|
|
|
@ -708,6 +712,11 @@ selsnap(int mode, int *x, int *y, int direction) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case SNAP_LINE:
|
|
|
|
case SNAP_LINE:
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
* Snap around if the the previous line or the current one
|
|
|
|
|
|
|
|
* has set ATTR_WRAP at its end. Then the whole next or
|
|
|
|
|
|
|
|
* previous line will be selected.
|
|
|
|
|
|
|
|
*/
|
|
|
|
*x = (direction < 0) ? 0 : term.col - 1;
|
|
|
|
*x = (direction < 0) ? 0 : term.col - 1;
|
|
|
|
if(direction < 0 && *y > 0) {
|
|
|
|
if(direction < 0 && *y > 0) {
|
|
|
|
for(; *y > 0; *y += direction) {
|
|
|
|
for(; *y > 0; *y += direction) {
|
|
|
|