diff options
| author | Peter Hofmann <scm@uninformativ.de> | 2023-10-07 07:40:39 +0200 |
|---|---|---|
| committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2023-10-07 12:16:59 +0200 |
| commit | 8abe4bcb41aa7fda0ae00823f6a20271124150db (patch) | |
| tree | 613b37bf04736d7d03d51425abbd16e5008cdffe | |
| parent | Don't scroll selection on the other screen (diff) | |
| download | st-8abe4bcb41aa7fda0ae00823f6a20271124150db.tar.gz st-8abe4bcb41aa7fda0ae00823f6a20271124150db.zip | |
Fix wide glyphs breaking "nowrap" mode
Consider the following example:
printf '\e[?7l';\
for i in $(seq $(($(tput cols) - 1))); do printf a; done;\
printf '🙈\n';\
printf '\e[?7h'
Even though MODE_WRAP has been disabled, the emoji appeared on the next
line. This patch keeps wide glyphs on the same line and moves them to
the right-most possible position.
| -rw-r--r-- | st.c | 5 |
1 files changed, 4 insertions, 1 deletions
| @@ -2477,7 +2477,10 @@ check_control_code: | |||
| 2477 | } | 2477 | } |
| 2478 | 2478 | ||
| 2479 | if (term.c.x+width > term.col) { | 2479 | if (term.c.x+width > term.col) { |
| 2480 | tnewline(1); | 2480 | if (IS_SET(MODE_WRAP)) |
| 2481 | tnewline(1); | ||
| 2482 | else | ||
| 2483 | tmoveto(term.col - width, term.c.y); | ||
| 2481 | gp = &term.line[term.c.y][term.c.x]; | 2484 | gp = &term.line[term.c.y][term.c.x]; |
| 2482 | } | 2485 | } |
| 2483 | 2486 | ||
