Expose full-screen invalidation for color-only redraws#802
Open
cjennings wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add a native module binding,
vterm--invalidate-all, that marks the wholeterminal grid invalid and redraws it immediately.
Motivation
vterm--redrawredraws only rows already marked invalid by libvterm. That isefficient for normal terminal output, but it leaves no direct way for Elisp to
refresh the whole rendered grid when only Emacs-side face/color state changes.
This affects theme changes and other display-only color changes. In those
cases the terminal contents are unchanged, so libvterm has no damaged rows, but
the existing rendered text still uses colors resolved before the face change.
Users currently work around this by briefly changing the terminal size and
restoring it, because
term_resizeinvalidates all rows.Change
Fvterm_invalidate_allin the native module.vterm--invalidate-all.vterm.el.The implementation calls:
This exposes the existing full-grid invalidation path without requiring callers
to fake a resize.
Validation
cmake -S . -B buildcmake --build buildBoth pass locally.
Related
vtermdo not update after loading a new theme #744 describes vterm colors not updating after theme changes.term_resizeto invalidate the whole grid.