1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

Fix the Alt+D and Alt+H keyboard shortcuts in emacs mode (#178)

This commit fixes the functionality of Alt+D and Alt+H in emacs mode.
These keyboard shortcuts are intended to work on whole words, but
after commit 13c3fb21 their functionality was reduced to deleting only
singular letters:

$ Test word <Alt+H>    # This should delete 'word', not just 'd'.
$ Foo <Alt+B> <Alt+D>  # This should delete 'Foo', not just 'F'.

Man page entries for reference:
  M-d       Delete current word.
  M-^H      (Meta-backspace) Delete previous word.
  M-h       Delete previous word.

src/cmd/ksh93/edit/emacs.c:
- 'count' cannot be overridden when handling Alt+D or Alt+H,
  so add the total number of repetitions to count (the number of
  repetitions can't be negative).
- If 'count' is a negative number, set it to one before adding the
  number of repetitions.
This commit is contained in:
Johnothan King 2021-02-15 17:47:15 -08:00 committed by GitHub
parent 24598fed7c
commit 29b11bba3a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 5 deletions

View file

@ -318,13 +318,13 @@ int ed_emacsread(void *context, int fd,char *buff,int scend, int reedit)
killing = 0;
#endif
oadjust = count = adjust;
if(vt220_save_repeat)
{
count = vt220_save_repeat;
vt220_save_repeat = 0;
}
if(count<0)
count = 1;
if(vt220_save_repeat>0)
{
count += vt220_save_repeat;
vt220_save_repeat = 0;
}
adjust = -1;
i = cur;
if(c!='\t' && c!=ESC && !digit(c))