How saranglab/qdte-project works
Sarang QDTE is a Rust terminal text editor. A user launches it with an optional file; the documented workflow is to choose or infer a keybinding profile, edit text interactively, and save or quit. The app coordinates editor state and file I/O; keymaps translate input into editor actions, while the renderer presents the buffer and status. README capabilities include search, Vim modes and commands, tutorials, configuration, and preservation of line endings and BOM. Some subsystem paths and links are documented rather than sampled; unsampled implementation details are not inferred.
Main entry points: editor/mod.rs Editor actions · app.rs Application · dispatcher.rs Key dispatcher · io/mod.rs File I/O
Components 21
Startup and configuration
- CLI arguments
src/cli/args.rs - Configuration
src/config.rs
Terminal interaction
- Application
src/app.rs - Terminal input
src/terminal/input.rs - Key dispatcher
src/keymap/dispatcher.rs - Normal keymap
src/keymap/normal.rs - Vim keymap
src/keymap/vim.rs - Terminal guard
src/terminal/mod.rs - Screen renderer
src/terminal/renderer.rs
Editing core
- Editor actions
src/editor/mod.rs - Action model
src/editor/action.rs - Text buffer
src/editor/buffer.rs - Unicode cursor
src/editor/cursor.rs - Undo history
src/editor/history.rs - Yank register
src/editor/register.rs - Editing modes
src/editor/mode.rs
File persistence
- File I/O
src/io/mod.rs - File reader
src/io/reader.rs - File writer
src/io/writer.rs
Other components
- Editor user
- Local files
Connections 22
- Editor user → CLI arguments: launches
README.md - Editor user → Application: edits interactively
README.md - Application → Configuration: uses settings
src/app.rs - Terminal input → Key dispatcher: supplies keys
- Key dispatcher → Normal keymap: selects profile
src/keymap/dispatcher.rs - Key dispatcher → Vim keymap: selects profile
src/keymap/dispatcher.rs - Key dispatcher → Editor actions: dispatches commands
src/keymap/dispatcher.rs - Terminal input → Editor actions: emits editor input
src/terminal/input.rs - Application → Editor actions: coordinates editing
src/app.rs - Editor actions → Action model: applies actions
src/editor/mod.rs - Editor actions → Text buffer: edits text
src/editor/mod.rs - Editor actions → Unicode cursor: updates position
src/editor/mod.rs - Editor actions → Undo history: records changes
src/editor/mod.rs - Editor actions → Yank register: stores yanks
src/editor/mod.rs - Editor actions → Editing modes: tracks mode
src/editor/mod.rs - Screen renderer → Application: renders state
src/terminal/renderer.rs - Screen renderer → Text buffer: renders text
src/terminal/renderer.rs - Application → File I/O: loads and saves
src/app.rs - File I/O → File reader: reads through
src/io/mod.rs - File I/O → File writer: writes through
src/io/mod.rs - File reader → Local files: reads files
- File writer → Local files: writes files