summaryrefslogtreecommitdiffstatshomepage
path: root/src/nvim/vterm/parser.c
AgeCommit message (Collapse)AuthorFiles
2025-12-29feat(terminal): include sequence terminator in TermRequest event (#37152)Kyle1
Problem: Terminals should respond with the terminator (either BEL or ST) used in the query so that clients can reliably parse the responses. The `TermRequest` autocmd used to handle background color requests in the terminal does not have access to the original sequence terminator, so it always uses BEL. #37018 Solution: Update vterm parsing to include the terminator type, then forward this data into the emitted `TermRequest` events for OSC/DCS/APC sequences. Update the foreground/background `TermRequest` callback to use the same terminator as the original request. Details: I didn't add the terminator to the `TermResponse` event. However, I assume the `TermResponse` event doesn't care about the terminator because the sequence is already parsed. I also didn't update any of the functions in `src/nvim/vterm/state.c` that write out responses. It looked like those all pretty much used ST, and it would be a much larger set of changes. In that same file, there's also logic for 8 bit ST sequences, but from what I can tell, 8 bit doesn't really work (see `:h xterm-8bit`), so I didn't use the 8 bit ST at all.
2025-08-14refactor(build): remove INCLUDE_GENERATED_DECLARATIONS guardsbfredl1
These are not needed after #35129 but making uncrustify still play nice with them was a bit tricky. Unfortunately `uncrustify --update-config-with-doc` breaks strings with backslashes. This issue has been reported upstream, and in the meanwhile auto-update on every single run has been disabled.
2025-05-29fix(terminal): skip setting `string_initial` to false on no-op (#34176)Gabriel Ford1
Problem: Currently undefined behavior can occur when `string_fragment()` is called with `OSC_COMMAND`. This is because when the state changes to `OSC_COMMAND`, `string_initial` is set to true. Then in some cases, directly after this `string_initial` will be set back to false before the on_osc callback is called, this leads to `term_settermprop()` never initializing the title. Solution: In all of the no-op cases in `string_fragment()` currently, we continue to the end of the function where `vt->parser.string_initial` is set to false. This change returns in the no-op cases instead since in these cases the string has not yet been terminated and sent to the callback. Note: This change also adds a test with a byte sequence from the file in #34028 that caused nvim to crash. This byte sequences is the shortest sequence I could trim down from that file that still would trigger the crash. There are also two other tests I added which validate that setting the title with OSC-0 and OSC-2 still works. Fixes: #34028
2025-01-07refactor: adopt vtermdundargoc1
We have changed too much to consider it a mere bundled dependency (such as unicode handling in e3bfcf2fd4a4ebf00b104b082cfe83c8144a842d), and can consider it our own at this point.