X-Git-Url: https://git.xinqibao.xyz/st.git/blobdiff_plain/3ba9c8fc3f547a5762b3d4a6a16cc794446d76a3..2bef36ab81c356b106f00221038b743819cd20bd:/st.c diff --git a/st.c b/st.c index 530d7e4..4d4f115 100644 --- a/st.c +++ b/st.c @@ -1004,7 +1004,10 @@ getsel(void) /* append every set & selected glyph to the selection */ for (y = sel.nb.y; y <= sel.ne.y; y++) { - linelen = tlinelen(y); + if ((linelen = tlinelen(y)) == 0) { + *ptr++ = '\n'; + continue; + } if (sel.type == SEL_RECTANGULAR) { gp = &term.line[y][sel.nb.x]; @@ -1132,10 +1135,10 @@ selnotify(XEvent *e) *repl++ = '\r'; } - if (IS_SET(MODE_BRCKTPASTE)) + if (IS_SET(MODE_BRCKTPASTE) && ofs == 0) ttywrite("\033[200~", 6); ttysend((char *)data, nitems * format / 8); - if (IS_SET(MODE_BRCKTPASTE)) + if (IS_SET(MODE_BRCKTPASTE) && rem == 0) ttywrite("\033[201~", 6); XFree(data); /* number of 32-bit chunks returned */ @@ -1427,8 +1430,7 @@ ttynew(void) if (opt_line) { if ((cmdfd = open(opt_line, O_RDWR)) < 0) die("open line failed: %s\n", strerror(errno)); - close(0); - dup(cmdfd); + dup2(cmdfd, 0); stty(); return; } @@ -3853,10 +3855,10 @@ xdrawcursor(void) case 1: /* Blinking Block (Default) */ case 2: /* Steady Block */ if (IS_SET(MODE_REVERSE)) { - g.mode |= ATTR_REVERSE; - g.fg = defaultcs; - g.bg = defaultfg; - } + g.mode |= ATTR_REVERSE; + g.fg = defaultcs; + g.bg = defaultfg; + } g.mode |= term.line[term.c.y][curx].mode & ATTR_WIDE; xdrawglyph(g, term.c.x, term.c.y);