The fix to #1731 <https://github.com/leo-editor/leo-editor/issues/1731> has
created a new bug. With the default bindings, it is not possible to insert
whitespace at the end of the line by typing a tab. Instead:
- Typing a tab character *anywhere* on a line inserts leading whitespace
(lws).
- When multiple lines are selected, a tab character increases the lws of
all selected lines.
*Background*
Leo 6.3 substantially revised how Leo handles all incoming keystrokes. As
the result of those changes, the indent region command (in
commanderEditCommands.py) contains the following dubious code:
if sel_1 == sel_2:
c.editCommands.selfInsertCommand(event)
return
This *kinda* works. In particular, it (mostly) works when indent-region is
bound to the tab character, which is the default binding. However, the hack
requires that existing users change their bindings, as reported here
<https://groups.google.com/g/leo-editor/c/Ye_X3gT4YRk/m/XLN7KspuAQAJ>.
*Handling tabs and insert-region*
Editors typically do the following with tabs:
- When multiple lines are selected, a tab indents those lines.
- When there is no selection, a tab inserts a (hard or soft) tab a the
insertion point.
- When there is a selection on a single line, a tab replaces that selection.
Alas, Leo has no way to change key bindings based on the selection range.
This means that tab (indent-region) *must* handle the special cases list
above.
*Handling shift-tab and unindent region*
Editors typically do the following:
- Shift-tab unindents all selected lines.
- Shift-tab unindents one line if there is no selection or the selection
doesn't cross lines.
This is much easier to handle because Shift-tab is not an "insertable"
character.
*Summary*
The code in devel does not properly handle tab characters at the end of a
line. Ditto for the ekr-undo branch, which is based on devel. Ditto for Leo
6.3 in the master branch.
The indent-region command must handle the special cases listed above. More
complex tests will be required. I have just reopened #1731
<https://github.com/leo-editor/leo-editor/issues/1731>.
All comments welcome.
Edward
--
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/leo-editor/191afa5a-95ef-4fc6-82cd-a92fd74d8f0dn%40googlegroups.com.