Commit Graph

487 Commits

Author SHA1 Message Date
54183cc8eb v10 patch: rich SelectedTextChanged for VoiceOver cursor movement
Key changes from v9:
- SelectedTextChanged now includes rich userInfo:
  direction (Next/Previous/Discontiguous) and
  granularity (Character/Word/Line) inferred from
  old vs new cursor position comparison
- Track lastAccessibilityCursorPos + lastAccessibilityCursorLine
  ivars for position delta detection
- accessibilityInsertionPointLineNumber: buffer lines (count_lines)
  instead of visual vpos
- accessibilityLineForIndex: buffer lines via count_lines
- accessibilityRangeForLine: buffer lines via find_newline_no_quit
- Skip notification on unchanged position (avoids VO repeating)
- Word granularity heuristic: same line, >1 char delta
2026-02-25 21:14:08 +01:00
01ea5d1f0a v9 patch: fix macOS 26 SDK compilation error
Replace extern NSString* declarations with raw string literals
(@"AXTextStateChangeType" etc.) to avoid redeclaration type conflict
with NSAccessibilityConstants.h on macOS 26 Tahoe SDK where these
symbols were added to public headers.
2026-02-25 20:49:12 +01:00
5529418b48 v8 patch: full VoiceOver support with typing echo + reviewer fixes
New in v8:
- Rich typing echo via NSAccessibilityPostNotificationWithUserInfo
  with kAXTextEditTypeTyping userInfo (WebKit pattern)
- BUF_MODIFF tracking: content edit -> ValueChanged, cursor move -> SelectedTextChanged only
- Parameterized text navigation: lineForIndex, rangeForLine, frameForRange,
  attributedStringForRange, rangeForPosition (stub)

Reviewer fixes applied:
- Fix multibyte byte_range cap (use buf_charpos_to_bytepos, not hardcoded 10000)
- Fix legacy BoundsForRange to use actual parameter instead of NSMakeRange(0,0)
- Move extern NSString* declarations to file scope

Review score: 82 -> fixes applied.
2026-02-25 20:37:14 +01:00
d0cd1f103b v7 patch: fix Zoom snapping to old window on C-x o
Guard accessibility notifications with on_p && active_p so they only
fire when drawing the cursor in the selected window. Without this,
ns_draw_window_cursor is called for both old and new windows during
redisplay, and UAZoomChangeFocus fires for the old window last.
2026-02-25 20:10:12 +01:00
15a7c927f4 v6 patch: fix VoiceOver double cursor + add typing echo
Fixes:
1. accessibilityFrame now returns view frame (not cursor rect) - fixes
   VoiceOver drawing duplicate cursor overlay
2. Added NSAccessibilityValueChangedNotification - enables VoiceOver
   typing echo (character-by-character feedback when typing)
3. Cursor position exposed only via accessibilityBoundsForRange:

Full VoiceOver text protocol retained (accessibilityValue,
accessibilitySelectedText, accessibilityStringForRange:, etc).
2026-02-25 19:01:25 +01:00
4e34114fc8 v5 patch: full VoiceOver support + Zoom cursor tracking
Added full NSAccessibility text protocol for VoiceOver:
- accessibilityValue (buffer text, capped at 10k chars)
- accessibilitySelectedText (active region)
- accessibilitySelectedTextRange (cursor position)
- accessibilityInsertionPointLineNumber
- accessibilityVisibleCharacterRange
- accessibilityStringForRange:
- accessibilityAttributeValue: delegating to modern methods
Plus legacy parameterized attributes (StringForRange, BoundsForRange).

UAZoomChangeFocus retained for Zoom 'Follow keyboard focus'.
2026-02-25 18:45:48 +01:00
2a58436f32 v4 patch: dual UAZoomChangeFocus + NSAccessibility, with Apple doc refs
UAZoomChangeFocus is Apple's documented API for Zoom focus control.
NSAccessibility serves VoiceOver and other AT tools.
Both are needed - same approach as iTerm2.
References Apple developer documentation URLs in comments.
2026-02-25 18:20:55 +01:00
d7aae4b7d1 v4 patch: UAZoomChangeFocus (Apple documented) + NSAccessibility, with doc refs
Based on verified research:
- UAZoomChangeFocus IS officially documented by Apple (UniversalAccess.h)
- iTerm2 uses UAZoomChangeFocus for Zoom tracking (PTYTextView.m)
- NSAccessibility alone insufficient for Zoom custom view tracking
- Added Apple documentation URLs in code comments
2026-02-25 18:17:53 +01:00
6933d8f9c0 v4 patch: dual mechanism with Apple doc references
UAZoomChangeFocus (documented Apple API) + NSAccessibility.
References to official Apple documentation in comments.
Pattern matches iTerm2 implementation.
2026-02-25 18:11:05 +01:00
f3b8ff661c v3 patch: NSAccessibility-only, drop UAZoomChangeFocus per reviewer feedback 2026-02-25 17:50:04 +01:00
Martin Sukany
8a8e71764d update 2026-02-25 17:09:08 +01:00
a234ded3db Rewrite Zoom a11y patch: NSAccessibility primary, UAZoomChangeFocus supplementary
Key changes:
- Add accessibilityFrame on EmacsView returning cursor screen rect
  (the standard mechanism used by Terminal.app, iTerm2, Firefox)
- Guard UAZoomChangeFocus with bundleIdentifier check (bare binaries
  are silently ignored by the window server)
- Extensive English comments explaining both mechanisms
- Deduplicate legacy parameterized attribute via accessibilityBoundsForRange:

Root cause of Stéphane's failure: UAZoomChangeFocus communicates via the
window server which identifies apps by CFBundleIdentifier. Bare binaries
(src/emacs, symlinks) have no bundle ID and are ignored. NSAccessibility
notifications + accessibilityFrame work for ALL launch methods.
2026-02-25 17:02:40 +01:00
2313fd52c9 calfw capture: use format-time-string for day-of-week (Emacs 31 compat) 2026-02-25 16:00:36 +01:00
02ad895dd6 calfw capture: use nth for date extraction (avoid calendar-extract dependency) 2026-02-25 15:58:55 +01:00
2d4b276a67 calfw capture: fix calendar-day-name args (use date list, not encode-time) 2026-02-25 15:52:02 +01:00
2d07377d42 calfw capture: store date before capture to avoid cfw:component error
calfw-cursor-to-nearest-date fails in capture buffer context.
Fix: my/calfw-capture saves date first, then starts org-capture.
2026-02-25 15:50:27 +01:00
218a38d819 calfw capture: smart time prompt (single/multi-day, timed/all-day)
- Start time prompt: empty = all-day, HH:MM = timed
- End prompt: HH:MM (same day), YYYY-MM-DD (multi-day), YYYY-MM-DD HH:MM
- All formats match what ox-icalendar/org-caldav export correctly
- Set org-icalendar-timezone to Europe/Prague
- Set org-icalendar-with-timestamps to active
2026-02-25 15:47:35 +01:00
05516c8e9e calfw capture: prompt for time range (empty=all-day) 2026-02-25 15:44:13 +01:00
82bb1658ef calfw capture: plain timestamp instead of SCHEDULED (org-caldav sync) 2026-02-25 15:39:40 +01:00
4f8fd20b0e calfw: add 'a' keybinding for org-capture + calendar event template
- New capture template 'c' creates SCHEDULED entry on selected date
- calfw-org-capture-template set for calfw integration
- Events go to calendar_outbox.org (synced via org-caldav twoway)
- Keybinding: a = add event, RET = open agenda day
2026-02-25 15:29:29 +01:00
fe859ed252 bibliography: fix commands, add manual entry, universal search
- biblio-crossref-lookup doesn't exist; use biblio-lookup (universal)
- biblio-doi: require biblio before biblio-doi (load order fix)
- my/bib-insert-manual: template for 8 entry types with cursor at KEY
- All commands lazy-load biblio via (require 'biblio)
- SPC B s = universal search (prompts for backend: CrossRef/arXiv/DBLP)
- SPC B m = manual entry template
- SPC B D = import by DOI
2026-02-25 13:14:42 +01:00
12deb16152 bibliography: setq! for citar, new/import helpers, per-project support
- setq! for citar-bibliography (Doom custom setter, fixes void variable)
- my/bib-new: create new .bib for a project
- my/bib-import-doi: import reference by DOI
- Per-project: .dir-locals.el or #+BIBLIOGRAPHY: in org header
- SPC B prefix (not SPC b which is buffer)
2026-02-25 13:07:05 +01:00
4ea1b2be54 bibliography: remap SPC b -> SPC B (SPC b = buffer) 2026-02-25 13:02:37 +01:00
aacaf2bdbf bibliography: citar + biblio + org-cite CSL setup
- init.el: biblio module with +citar flag
- packages.el: citeproc for org-cite CSL export
- config.el: citar (browse/insert/notes), biblio (online search),
  org-cite with CSL processor, bibtex editing defaults
- Keybindings under SPC b: browse, insert, notes, search online
- Auto-creates ~/org/references.bib if missing
2026-02-25 12:59:24 +01:00
Martin Sukany
7b1d0ad7e1 update 2026-02-25 12:51:11 +01:00
Martin Sukany
5c7b095ffb Merge remote-tracking branch 'refs/remotes/origin/master' 2026-02-25 12:50:56 +01:00
5c2b5ac31d org-agenda: snap cursor via post-command-hook (catches Evil j/k) 2026-02-25 12:50:27 +01:00
Martin Sukany
21242f01f2 Merge remote-tracking branch 'refs/remotes/origin/master' 2026-02-25 12:50:16 +01:00
195fcb7932 config.el: English comments, logical section ordering
All Czech comments translated to English.
Sections reorganized into logical groups:
  User Identity → Theme/Font → UI → macOS → Clipboard Image →
  Performance → Org Core → Org Capture → Org Agenda → Org LaTeX →
  Org Custom Behavior → GPTel AI → Completion → Email → RSS →
  PlantUML → Tramp → Dired → Projectile → Python → Dev Workflow →
  Accessibility → Keybindings → Matrix → PDF → Yasnippet →
  Navigation → Writing → Org-modern → Org-fragtog →
  Org-super-agenda → Org-noter → Org-caldav → Calfw →
  Extensions → Org-clock → Combobulate → Misc → Evil Org →
  Git → Bibtex → Org-anki → Org-ql → Org-roam-ui → Grammar

No functional changes.
2026-02-25 12:48:38 +01:00
Martin Sukany
36eadb53e9 Merge remote-tracking branch 'refs/remotes/origin/master' 2026-02-25 12:31:38 +01:00
Martin Sukany
d0957dd5cd update 2026-02-25 12:31:35 +01:00
bc56169e56 dired: use gls (GNU coreutils) for dirvish sort on macOS 2026-02-25 12:28:36 +01:00
01ffa0b783 revert: remove org-beamer-frame-default-options (template handles it) 2026-02-25 11:36:15 +01:00
b28172e919 beamer: org-beamer-frame-default-options allowframebreaks (proper way)
NOT renewenvironment{frame} — that hack eats frame titles on H:2.
ox-beamer natively adds options to each frame it generates.
2026-02-25 11:31:51 +01:00
21d3c7b61d revert: remove beamer resizebox filter, keep tabularx skip for beamer
Adjustbox in presentation.org template handles beamer tables.
Resizebox filter was conflicting with it.
2026-02-25 11:26:17 +01:00
d75b9c1b87 beamer: resizebox table filter + org-beamer-frame-default-options
- org-beamer-frame-default-options = allowframebreaks (proper way,
  not renewenvironment frame hack which caused empty slides)
- my/org-beamer-resizebox-tables: export filter wraps tabular in
  resizebox{textwidth}{!} for beamer backend only
- document.org export unchanged (still uses tabularx filter)
2026-02-25 11:20:45 +01:00
905341dd90 org-latex-fix-tabularx: skip for beamer exports (use adjustbox instead) 2026-02-25 11:16:25 +01:00
27fb32d1da TLS: trust all certs (corporate MITM proxy with intermediate CA) 2026-02-25 10:35:16 +01:00
f411b7c825 org-caldav: explicit save-directory ~/org/ + broad error handler
Reverted to cf4b486 (last known working state), then added:

1. org-caldav-save-directory explicitly set to ~/org/
   State files: .org-caldav-<md5hash>.el (one per calendar URL+ID).
   Delete them to reset sync state.

2. defadvice around org-caldav-update-events-in-org: condition-case
   catches any error (nil fields, retrieval failures) so sync state
   is saved and remaining calendars continue.

Removed: Fix #1 (@encoding), Fix #3 (set-sequence-number), @google.com
UID ignore logic — all 775 @google.com events were deleted from server
(backup at daneel:~/caldav-backup-2026-02-25.tar.gz).
2026-02-25 10:28:43 +01:00
cf4b4862cf fix calfw sort: wrapper sortuje periods list (org-caldav active-range → periods, sorter se nevztahoval) 2026-02-24 23:46:16 +01:00
6f9a72f1fc fix calfw sort: cfw:event struct start-time (month view nemá čas v textu, string parse nefungoval) 2026-02-24 23:34:33 +01:00
f6dc7ca679 feat calfw: multi-source (Agenda+Suky+Klára+Rodina), universal sorter, calfw-org-create-file-source pro caldav 2026-02-24 23:29:25 +01:00
762435acb4 fix calfw: normal state + evil-define-key rebind (SPC=leader, q=bury, navigace funguje) 2026-02-24 23:18:07 +01:00
57190b9330 fix org-caldav: delete-org-entries/delete-calendar-entries 'never (stop delete prompts) 2026-02-24 23:08:53 +01:00
33dcc1e297 revert calfw: zpět na stabilní calfw-org-open-calendar (barvy řeším separátně) 2026-02-24 23:08:01 +01:00
179aa56e56 fix calfw sort: advice na calfw-org-convert-event, same-day events → contents (sortují se) 2026-02-24 23:03:14 +01:00
fe7b7e4147 feat calfw: barvy + universal sorter (Varianta B: agenda=create-source, caldav=file-source) 2026-02-24 22:57:19 +01:00
de7d20f60e revert calfw colors: zpět na calfw-org-open-calendar (barvy způsobovaly špatné datum/sort) 2026-02-24 22:54:09 +01:00
d86ebacb24 fix embark: přidej C-. jako alias (Doom default je C-;, ne C-.) 2026-02-24 22:52:41 +01:00
25d669dd9d fix calfw sort: všechny zdroje calfw-org-create-source + calfw-org--schedule-sorter 2026-02-24 22:47:33 +01:00