mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-13 08:51:30 +00:00
Update tui_layout.sh
This commit is contained in:
@@ -21,17 +21,14 @@ content_line() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf '%b' "$raw_input" | awk -v table_width="$TABLE_WIDTH" '
|
printf '%b' "$raw_input" | LC_ALL=C awk -v table_width="$TABLE_WIDTH" '
|
||||||
BEGIN {
|
BEGIN {
|
||||||
textWidth = table_width - 3
|
textWidth = table_width - 3
|
||||||
|
|
||||||
currentDisplayWidth = 0
|
currentDisplayWidth = 0
|
||||||
wordWidth = 0
|
wordWidth = 0
|
||||||
currentLine = ""
|
currentLine = ""
|
||||||
wordBuffer = ""
|
wordBuffer = ""
|
||||||
|
|
||||||
lastColor = ""
|
lastColor = ""
|
||||||
|
|
||||||
ESC = sprintf("%c", 27)
|
ESC = sprintf("%c", 27)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,24 +39,37 @@ content_line() {
|
|||||||
r = chars[i]
|
r = chars[i]
|
||||||
|
|
||||||
if (r == ESC && i+1 <= n && chars[i+1] == "[") {
|
if (r == ESC && i+1 <= n && chars[i+1] == "[") {
|
||||||
# Scan forward until "m"
|
|
||||||
ansiSeq = ""
|
ansiSeq = ""
|
||||||
for (j = i; j <= n; j++) {
|
for (j = i; j <= n; j++) {
|
||||||
ansiSeq = ansiSeq chars[j]
|
ansiSeq = ansiSeq chars[j]
|
||||||
if (chars[j] == "m") {
|
if (chars[j] == "m") {
|
||||||
i = j # Advance main loop
|
i = j
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wordBuffer = wordBuffer ansiSeq
|
wordBuffer = wordBuffer ansiSeq
|
||||||
lastColor = ansiSeq # Remember color for wrapping
|
lastColor = ansiSeq
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
charWidth = 1
|
charWidth = 1
|
||||||
if (r ~ /[^\001-\177]/) {
|
|
||||||
|
if (r <= "\177") {
|
||||||
|
charWidth = 1
|
||||||
|
}
|
||||||
|
else if (r >= "\340" && r <= "\357" && i+2 <= n) {
|
||||||
|
r = chars[i] chars[i+1] chars[i+2]
|
||||||
|
i += 2
|
||||||
charWidth = 2
|
charWidth = 2
|
||||||
}
|
}
|
||||||
|
else if (r >= "\300" && r <= "\337" && i+1 <= n) {
|
||||||
|
r = chars[i] chars[i+1]
|
||||||
|
i += 1
|
||||||
|
charWidth = 1
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
charWidth = 1
|
||||||
|
}
|
||||||
|
|
||||||
if (r == " " || charWidth == 2) {
|
if (r == " " || charWidth == 2) {
|
||||||
if (currentDisplayWidth + wordWidth + charWidth > textWidth) {
|
if (currentDisplayWidth + wordWidth + charWidth > textWidth) {
|
||||||
|
|||||||
Reference in New Issue
Block a user