Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Fix selection: ignore ATTR_WRAP when rectangular selection in getsel
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
5d4054f
..
7c15d5f
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-634,7
+634,8
@@
getsel(void)
* st.
* FIXME: Fix the computer world.
*/
* st.
* FIXME: Fix the computer world.
*/
- if ((y < sel.ne.y || lastx >= linelen) && !(last->mode & ATTR_WRAP))
+ if ((y < sel.ne.y || lastx >= linelen) &&
+ (!(last->mode & ATTR_WRAP) || sel.type == SEL_RECTANGULAR))
*ptr++ = '\n';
}
*ptr = 0;
*ptr++ = '\n';
}
*ptr = 0;
@@
-2153,6
+2154,7
@@
tcontrolcode(uchar ascii)
return;
case '\032': /* SUB */
tsetchar('?', &term.c.attr, term.c.x, term.c.y);
return;
case '\032': /* SUB */
tsetchar('?', &term.c.attr, term.c.x, term.c.y);
+ /* FALLTHROUGH */
case '\030': /* CAN */
csireset();
break;
case '\030': /* CAN */
csireset();
break;
@@
-2307,7
+2309,7
@@
tputc(Rune u)
Glyph *gp;
control = ISCONTROL(u);
Glyph *gp;
control = ISCONTROL(u);
- if (!IS_SET(MODE_UTF8 | MODE_SIXEL)) {
+ if (
u < 127 ||
!IS_SET(MODE_UTF8 | MODE_SIXEL)) {
c[0] = u;
width = len = 1;
} else {
c[0] = u;
width = len = 1;
} else {
@@
-2411,7
+2413,7
@@
check_control_code:
*/
return;
}
*/
return;
}
- if (sel
.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe
.y))
+ if (sel
ected(term.c.x, term.c
.y))
selclear();
gp = &term.line[term.c.y][term.c.x];
selclear();
gp = &term.line[term.c.y][term.c.x];