Create a new fork of joe-4.6 that incorporates the feature enhancements from the k21 fork of joe2.1. The result will be a modern K editor that benefits from JOE 4.6's improved codebase while retaining K's distinctive features.
| Folder | Description |
|---|---|
joe2.1/ |
Original JOE 2.1 source (reference) |
k21/ |
K fork of JOE 2.1 with feature enhancements |
joe-4.6/ |
Original JOE 4.6 source (base for new fork) |
k46/ |
K fork of JOE 4.6 (active development) |
Features.md— Complete list of K21 features to port to K46k21/krc— K configuration file with custom keybindingsk21/keys.tpt— Visual keyboard reference for K bindings
When porting K features, be aware of these JOE 4.6 changes:
- JOE 4.6: Uses symlink-based locking (creates
.#filenamesymlinks) - K21: Uses
flock()system call - Recommendation: Replace JOE 4.6's symlink locking with K21's
flock()approach — cleaner, no filesystem artifacts, compatible with other tools
- JOE 4.6: Detects external file modifications when you edit (checks mtime every 15 seconds of editing activity, warns before your changes overwrite external ones)
- K21: No such feature
- Status: K46 inherits this from JOE 4.6 — complements K's file locking
JOE 4.6 includes many modernizations:
- Unicode support
- Syntax highlighting
- Better terminal handling
- Improved build system (autoconf)
- Many bug fixes accumulated over 20+ years
Many of K21's compilation fixes (POSIX compliance, missing headers, symbol conflicts) are likely already resolved in JOE 4.6.
- Start fresh in a new
k46/folder — copy fromjoe-4.6/ - Reference
Features.mdfor the complete feature list - Compare implementations — check if JOE 4.6 already has equivalent functionality
- Port behavioral changes — focus on user-facing features, not compilation fixes
- Adapt the krc config — JOE 4.6's rc file format may differ slightly
K was created as a fork of JOE 2.1 to add:
- Session persistence (resume editing where you left off)
- File locking (prevent concurrent edits)
- Timestamped backups (preserve edit history)
- Improved macro system
- Custom keybindings optimized for the author's workflow
The editor was renamed from "joe" to "k" with its own configuration file krc.