patches: review fixes — defvar, method extraction, GC safety, window_end_valid
Review-based improvements: - ns-accessibility-enabled DEFVAR_BOOL (disable AX overhead) - window_end_valid guard in ns_ax_window_end_charpos - GC safety comments on Lisp_Object ObjC ivars - postAccessibilityNotificationsForFrame split into 4 methods - block_input in ns_ax_completion_text_for_span - Fplist_get predicate comment - macos.texi VoiceOver section with defvar docs - README updated with USER OPTION + REVIEW CHANGES sections
This commit is contained in:
@@ -3,10 +3,10 @@ EMACS NS VOICEOVER ACCESSIBILITY PATCH
|
||||
patch: 0001-ns-implement-AXBoundsForRange-for-macOS-Zoom-cursor-.patch
|
||||
0002-doc-add-VoiceOver-accessibility-section-to-macOS-app.patch
|
||||
author: Martin Sukany <martin@sukany.cz>
|
||||
files: src/nsterm.h (+105 lines)
|
||||
src/nsterm.m (+2846 ins, -151 del, +2695 net)
|
||||
doc/emacs/macos.texi (+46 lines)
|
||||
etc/NEWS (+11 lines)
|
||||
files: src/nsterm.h (+119 lines)
|
||||
src/nsterm.m (+3024 ins, -147 del, +2877 net)
|
||||
doc/emacs/macos.texi (+53 lines)
|
||||
etc/NEWS (+13 lines)
|
||||
|
||||
|
||||
OVERVIEW
|
||||
@@ -114,6 +114,18 @@ ARCHITECTURE
|
||||
accessibilityAttributeValue:forParameter: API.
|
||||
|
||||
|
||||
USER OPTION
|
||||
-----------
|
||||
|
||||
ns-accessibility-enabled (DEFVAR_BOOL, default t):
|
||||
When nil, the accessibility virtual element tree is not built, no
|
||||
notifications are posted, and ns_draw_phys_cursor skips the Zoom
|
||||
update. This eliminates accessibility overhead entirely on systems
|
||||
where assistive technology is not in use. Guarded at three entry
|
||||
points: postAccessibilityUpdates, ns_draw_phys_cursor, and
|
||||
windowDidBecomeKey.
|
||||
|
||||
|
||||
THREADING MODEL
|
||||
---------------
|
||||
|
||||
@@ -615,4 +627,38 @@ TESTING CHECKLIST
|
||||
26. Open an org-mode file with many folded sections. Verify that
|
||||
folded (invisible) text is not announced during navigation.
|
||||
|
||||
|
||||
REVIEW CHANGES (post initial implementation)
|
||||
---------------------------------------------
|
||||
|
||||
The following changes were made based on maintainer-style code review:
|
||||
|
||||
1. ns_ax_window_end_charpos: added window_end_valid guard. Falls
|
||||
back to BUF_ZV when the window has not been fully redisplayed,
|
||||
preventing stale data in AX getters called before next redisplay.
|
||||
|
||||
2. GC safety documentation: detailed comment on lispWindow ivar
|
||||
explaining why staticpro is not needed (windows reachable from
|
||||
frame tree, GC only on main thread, AX getters dispatch to main).
|
||||
|
||||
3. ns-accessibility-enabled (DEFVAR_BOOL): new user option to
|
||||
disable accessibility entirely. Guards three entry points.
|
||||
|
||||
4. postAccessibilityNotificationsForFrame: extracted from one ~200
|
||||
line method into four focused helpers:
|
||||
- postTextChangedNotification: (typing echo)
|
||||
- postFocusedCursorNotification:direction:granularity:markActive:
|
||||
oldMarkActive: (focused cursor/selection)
|
||||
- postCompletionAnnouncementForBuffer:point: (completions)
|
||||
- postAccessibilityNotificationsForFrame: (orchestrator, ~60 lines)
|
||||
|
||||
5. ns_ax_completion_text_for_span: added block_input/unblock_input
|
||||
with specpdl unwind protection for signal safety.
|
||||
|
||||
6. Fplist_get third-argument comment (PREDICATE, not default value).
|
||||
|
||||
7. Documentation: macos.texi section updated with
|
||||
ns-accessibility-enabled variable reference. etc/NEWS updated.
|
||||
|
||||
|
||||
-- end of README --
|
||||
|
||||
Reference in New Issue
Block a user