How janestreet/emacs works
GNU Emacs is an extensible, self-documenting editor. A user supplies keyboard or other input; Emacs interprets commands, edits buffers, and redisplays the result. Its C runtime provides the Lisp interpreter, editing primitives, and display machinery, while platform code handles native UI and integration. Android adds an Activity/service front end, a Java-to-native bridge, window and graphics handling, and document access. The README documents these major roles; sampled excerpts chiefly confirm Android wiring and search’s buffer-related dependencies, so other links are limited to documented relationships.
Main entry points: EmacsService.java Emacs service · buffer.h Buffer state · EmacsWindow.java Android window · EmacsOpenActivity.java Open-file intents
Components 22
Editor runtime
- Input events
src/keyboard.c - Editing commands
src/cmds.c - Lisp evaluation
src/eval.c - Buffer state
src/buffer.h - Search and replace
src/search.c - Character coding
src/coding.c
Display and platforms
- Redisplay
src/xdisp.c - Frames and windows
src/frame.c - X display backend
src/xterm.c
Android application
- Android activities
java/org/gnu/emacs/EmacsActivity.java - Emacs service
java/org/gnu/emacs/EmacsService.java - JNI bridge
java/org/gnu/emacs/EmacsNative.java - Window manager
java/org/gnu/emacs/EmacsWindowManager.java - Android window
java/org/gnu/emacs/EmacsWindow.java - Android view
java/org/gnu/emacs/EmacsView.java - Graphics operations
java/org/gnu/emacs/EmacsGC.java - Document access
java/org/gnu/emacs/EmacsSafThread.java - Open-file intents
java/org/gnu/emacs/EmacsOpenActivity.java
Process integration
- Emacs client
lib-src/emacsclient.c - Android exec helper
exec/exec.c
Other components
- Editor user
- User programs
Connections 22
- Editor user → Input events: provides input
README - Input events → Editing commands: dispatches commands
- Editing commands → Lisp evaluation: invokes evaluation
- Lisp evaluation → Buffer state: edits state
- Search and replace → Buffer state: searches and modifies
src/search.c - Buffer state → Redisplay: supplies display state
- Redisplay → Frames and windows: renders frames
- Frames and windows → X display backend: uses backend
- Android activities → Emacs service: starts service
java/org/gnu/emacs/EmacsActivity.java - Emacs service → JNI bridge: calls native methods
java/org/gnu/emacs/EmacsService.java - Emacs service → Android window: creates views
java/org/gnu/emacs/EmacsService.java - Emacs service → Window manager: uses manager
java/org/gnu/emacs/EmacsService.java - Window manager → Android window: tracks windows
java/org/gnu/emacs/EmacsWindowManager.java - Android window → Android view: owns view
java/org/gnu/emacs/EmacsWindow.java - Android view → JNI bridge: sends input events
java/org/gnu/emacs/EmacsWindow.java - Emacs service → Graphics operations: dispatches drawing
java/org/gnu/emacs/EmacsService.java - Open-file intents → Emacs service: checks service
java/org/gnu/emacs/EmacsOpenActivity.java - Emacs service → Document access: delegates access
java/org/gnu/emacs/EmacsService.java - Open-file intents → Emacs client: launches client
java/org/gnu/emacs/EmacsOpenActivity.java - Emacs client → Editor user: requests editor action
- Editor user → User programs: runs programs
README - Android exec helper → User programs: supports execution
README