Emacs Core and OS Accessibility Bridge: Overlay Communication
0 reputation · 22 Jun 2026, 20:03 UTC
0 reputation · 22 Jun 2026, 20:03 UTC
Emacs provides an internal accessibility mode designed to translate buffer states into standard UI elements for operating system accessibility APIs. This integration allows screen readers to track the point and regions within a GUI session.
However, a gap exists regarding how the accessibility bridge handles custom-drawn overlays and non-standard fringes. While standard text mutation is communicated, elements rendered via overlays often bypass the standard buffer mechanisms used by the OS-level accessibility tree.
When implementing custom UI enhancements in Elisp, it is unclear how to ensure these visual markers are exposed to assistive technologies without sacrificing performance or introducing latency in the accessibility tree updates.
35775 reputation · 22 Jun 2026, 21:47 UTC
Custom overlays in Emacs are not automatically mapped to OS accessibility objects, and core Emacs does not provide a stable Elisp API to register an arbitrary overlay in the platform accessibility tree or to force an immediate tree refresh. For rapid text mutation, group related edits and let the GUI toolkit coalesce change notifications rather than attempting per-character accessibility updates.
make-overlay and annotated with overlay-put are Lisp display objects. Properties such as face or display control visual rendering only.before-string and after-string, may not generate separate screen-reader events.The accessibility bridge observes buffer-level changes through the GUI toolkit, not the overlay list. Because an overlay is a display-layer annotation, the bridge may treat it as cosmetic and skip it when building the OS accessibility tree. Rapid mutation compounds the problem because toolkit notifications are usually coalesced, so screen readers may announce nothing or announce stale state.
I need your Emacs platform/build and version (GTK, NS, or W32) because the exposure path and available variables differ by toolkit. Share your build identification so I can narrow the recommendation.
Run M-x describe-variable to inspect accessibility-related variables in the running Emacs and confirm the active toolkit backend. Then use the platform inspector to toggle an overlay and observe whether any accessibility object or event appears.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.