Skip to content

Fix hidden terminal redraw recovery#538

Merged
emil-e merged 1 commit into
dakra:mainfrom
emil-e:fix/hidden-redraw-recovery
Jul 13, 2026
Merged

Fix hidden terminal redraw recovery#538
emil-e merged 1 commit into
dakra:mainfrom
emil-e:fix/hidden-redraw-recovery

Conversation

@emil-e

@emil-e emil-e commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • keep hidden terminal output pending without scheduling redraw timers, then reconcile it from pre-redisplay-functions
  • move synchronized-output admission into the renderer's terminal lock and propagate whether rendering completed
  • preserve full-redraw and sync-bypass semantics across line mode and Evil integration

Why

A redraw timer could run while a Ghostel buffer had no render window, consuming the redraw request. If an away-and-back tab transition was coalesced between redisplays, window-buffer-change-functions did not observe the reappearance, leaving the materialized buffer stale until another redraw trigger such as resize.

The previous Elisp mode-2026 check was also separate from renderer lock acquisition, allowing synchronized output to begin between the check and rendering.

Verification

  • strict Elisp byte compilation
  • zig build test
  • make checkdoc
  • 46 key/invalidation tests
  • 16 link/sentinel tests
  • 5 Elisp renderer tests
  • 83 native renderer tests
  • 118 Evil integration tests
  • isolated GUI native-gate and hidden-reveal barriers
  • git diff --check

Keep hidden output pending until the buffer is redisplayed, and make synchronized-output admission atomic with rendering. Propagate redraw completion so pending state clears only after a successful render.
@emil-e emil-e force-pushed the fix/hidden-redraw-recovery branch from 8cb7662 to 3dad6db Compare July 13, 2026 19:07
@emil-e emil-e merged commit 3cf474c into dakra:main Jul 13, 2026
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant