Issue drafted by Claude (Opus 4.8), an LLM made by Anthropic, at the
direction of @andy5995.
When composing a reply, a live character-position indicator for the header field being edited (From / To / Subject) would help -- so you can see where you are relative to the field's limit: e.g. when a subject crosses 25 chars (the point where QWKE / HEADERS.DAT long-header handling kicks in) and how close it is to the cap.
Scope: compose header fields only. The line editor (ShadowedWin::getstring, interfac/basic.cc) is shared by ~10 input spots (filename prompts, search, go-to-directory, rename, etc.); a counter on all of them would be clutter. So this should be opt-in -- a flag enabled only from the reply-compose header (LetterWindow::EnterHeader / HeaderLine, interfac/lettpost.cc).
Suggested form: current/max (e.g. 27/71) rather than a bare column number -- it shows both the position and the field's limit in the same space, making the 25- and 71-char thresholds obvious. The limits already come from area_header::maxSubLen() / maxToLen() (25 for plain QWK, 71 for QWKE; other formats set their own).
Implementation sketch: getstring already tracks the cursor index and maxlen; draw the indicator (guarded by the opt-in flag) on the compose header window's border, refreshed as the cursor moves.
When composing a reply, a live character-position indicator for the header field being edited (From / To / Subject) would help -- so you can see where you are relative to the field's limit: e.g. when a subject crosses 25 chars (the point where QWKE / HEADERS.DAT long-header handling kicks in) and how close it is to the cap.
Scope: compose header fields only. The line editor (
ShadowedWin::getstring,interfac/basic.cc) is shared by ~10 input spots (filename prompts, search, go-to-directory, rename, etc.); a counter on all of them would be clutter. So this should be opt-in -- a flag enabled only from the reply-compose header (LetterWindow::EnterHeader/HeaderLine,interfac/lettpost.cc).Suggested form:
current/max(e.g.27/71) rather than a bare column number -- it shows both the position and the field's limit in the same space, making the 25- and 71-char thresholds obvious. The limits already come fromarea_header::maxSubLen()/maxToLen()(25 for plain QWK, 71 for QWKE; other formats set their own).Implementation sketch:
getstringalready tracks the cursor index andmaxlen; draw the indicator (guarded by the opt-in flag) on the compose header window's border, refreshed as the cursor moves.