With --msg-module the select menu also highlights the "statusline" on the next line. Fix this by resetting the color before \n instead of after it. This requires changing all log code to not preemptively add a newline, which is actually simpler, though we have to modify the messages received with log-message which already contain a newline.
Showing the changes to player/lua/console.lua (1 of 1 file). Show all
Unified · Split
| @@ -428,7 +428,7 @@ local function populate_log_with_matches(max_width) · 427 unmodified lines | ||
| 428 | 428 | |
| 429 | 429 | if first_match_to_print > 1 then |
| 430 | 430 | log[1] = { |
| 431 | − text = '↑ (' .. (first_match_to_print - 1) .. ' hidden items)' .. '\n', | |
| 431 | + text = '↑ (' .. (first_match_to_print - 1) .. ' hidden items)', | |
| 432 | 432 | style = styles.disabled, |
| 433 | 433 | terminal_style = terminal_styles.disabled, |
| 434 | 434 | } |
| @@ -437,7 +437,7 @@ local function populate_log_with_matches(max_width) · 2 unmodified lines | ||
| 437 | 437 | for i = first_match_to_print, last_match_to_print do |
| 438 | 438 | log[#log + 1] = { |
| 439 | 439 | text = (max_width and truncate_utf8(matches[i].text, max_width) |
| 440 | − or matches[i].text) .. '\n', | |
| 440 | + or matches[i].text), | |
| 441 | 441 | style = i == selected_match and styles.selected_suggestion or '', |
| 442 | 442 | terminal_style = i == selected_match and terminal_styles.selected_suggestion or '', |
| 443 | 443 | } |
| @@ -445,7 +445,7 @@ local function populate_log_with_matches(max_width) · 1 unmodified line | ||
| 445 | 445 | |
| 446 | 446 | if last_match_to_print < #matches then |
| 447 | 447 | log[#log + 1] = { |
| 448 | − text = '↓ (' .. (#matches - last_match_to_print) .. ' hidden items)' .. '\n', | |
| 448 | + text = '↓ (' .. (#matches - last_match_to_print) .. ' hidden items)', | |
| 449 | 449 | style = styles.disabled, |
| 450 | 450 | terminal_style = terminal_styles.disabled, |
| 451 | 451 | } |
| @@ -463,7 +463,7 @@ local function print_to_terminal() · 11 unmodified lines | ||
| 463 | 463 | |
| 464 | 464 | local log = '' |
| 465 | 465 | for _, log_line in ipairs(log_buffers[id]) do |
| 466 | − log = log .. log_line.terminal_style .. log_line.text .. '\027[0m' | |
| 466 | + log = log .. log_line.terminal_style .. log_line.text .. '\027[0m\n' | |
| 467 | 467 | end |
| 468 | 468 | |
| 469 | 469 | local suggestions = '' |
| @@ -563,7 +563,8 @@ local function update() · 93 unmodified lines | ||
| 563 | 563 | log_messages = log_max_lines |
| 564 | 564 | end |
| 565 | 565 | for i = #log_buffer - log_messages + 1, #log_buffer do |
| 566 | − log_ass = log_ass .. style .. log_buffer[i].style .. ass_escape(log_buffer[i].text) | |
| 566 | + log_ass = log_ass .. style .. log_buffer[i].style .. | |
| 567 | + ass_escape(log_buffer[i].text) .. '\\N' | |
| 567 | 568 | end |
| 568 | 569 | |
| 569 | 570 | ass:new_event() |
| @@ -745,7 +746,7 @@ local function help_command(param) · 175 unmodified lines | ||
| 745 | 746 | end |
| 746 | 747 | end |
| 747 | 748 | if not cmd then |
| 748 | − log_add('No command matches "' .. param .. '"!\n', styles.error, | |
| 749 | + log_add('No command matches "' .. param .. '"!', styles.error, | |
| 749 | 750 | terminal_styles.error) |
| 750 | 751 | return |
| 751 | 752 | end |
| @@ -761,7 +762,7 @@ local function help_command(param) · 9 unmodified lines | ||
| 761 | 762 | output = output .. 'This command supports variable arguments.\n' |
| 762 | 763 | end |
| 763 | 764 | end |
| 764 | − log_add(output) | |
| 765 | + log_add(output:sub(1, -2)) | |
| 765 | 766 | end |
| 766 | 767 | |
| 767 | 768 | -- Run the current command and clear the line (Enter) |
| @@ -1738,7 +1739,7 @@ mp.register_script_message('log', function (message) · 970 unmodified lines | ||
| 1738 | 1739 | |
| 1739 | 1740 | message = utils.parse_json(message) |
| 1740 | 1741 | |
| 1741 | − log_add(message.text .. '\n', | |
| 1742 | + log_add(message.text, | |
| 1742 | 1743 | message.error and styles.error or message.style, |
| 1743 | 1744 | message.error and terminal_styles.error or message.terminal_style) |
| 1744 | 1745 | end) |
| @@ -1753,13 +1754,13 @@ mp.register_script_message('set-log', function (log) · 8 unmodified lines | ||
| 1753 | 1754 | |
| 1754 | 1755 | for i = 1, #log do |
| 1755 | 1756 | if type(log[i]) == 'table' then |
| 1756 | − log[i].text = log[i].text .. '\n' | |
| 1757 | + log[i].text = log[i].text | |
| 1757 | 1758 | log[i].style = log[i].style or '' |
| 1758 | 1759 | log[i].terminal_style = log[i].terminal_style or '' |
| 1759 | 1760 | log_buffers[id][i] = log[i] |
| 1760 | 1761 | else |
| 1761 | 1762 | log_buffers[id][i] = { |
| 1762 | − text = log[i] .. '\n', | |
| 1763 | + text = log[i], | |
| 1763 | 1764 | style = '', |
| 1764 | 1765 | terminal_style = '', |
| 1765 | 1766 | } |
| @@ -1830,7 +1831,7 @@ mp.register_event('log-message', function(e) · 64 unmodified lines | ||
| 1830 | 1831 | if e.level == 'trace' then return end |
| 1831 | 1832 | |
| 1832 | 1833 | -- Use color for debug/v/warn/error/fatal messages. |
| 1833 | − log_add('[' .. e.prefix .. '] ' .. e.text, styles[e.level], | |
| 1834 | + log_add('[' .. e.prefix .. '] ' .. e.text:sub(1, -2), styles[e.level], | |
| 1834 | 1835 | terminal_styles[e.level]) |
| 1835 | 1836 | end) |
| 1836 | 1837 | |