* delete-to-char @ 1999-09-21 2:52 Vin Shelton 1999-09-23 2:47 ` delete-to-char Vin Shelton 0 siblings, 1 reply; 6+ messages in thread From: Vin Shelton @ 1999-09-21 2:52 UTC (permalink / raw) To: zsh-workers OK, I'm waking up to the new world of modules and I came across the deltochar module and the delete-to-char function. I hope I'm not rehashing an old discussion, but both XEmacs (as of 21.0) and FSF Emacs (as of at least 20.4) now define zap-to-char as deleting up to but not including the specified character. It would be good, IMHO, to have delete-to-char model that functionality. Currently delete-to-char deletes up to and including the specified character. I can submit a patch if people were amenable to this change. Whaddaya think? - vin ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: delete-to-char 1999-09-21 2:52 delete-to-char Vin Shelton @ 1999-09-23 2:47 ` Vin Shelton 1999-09-23 9:00 ` delete-to-char Peter Stephenson 0 siblings, 1 reply; 6+ messages in thread From: Vin Shelton @ 1999-09-23 2:47 UTC (permalink / raw) To: zsh-workers Not waiting for the bits to dry, I generated this patch. In the course of testing this, I found that M-digit did not work for me with bindkey -me, even though bindkey thinks they are bound to digit-argument. M-anydigit just beeps. "od -x" tells me that M-0 sends 0xb0, M-1 sends 0xb1, etc. Do I have my xterm/stty settings wrong, or is this a bug in zsh. ESC-digit does work, so I did manage to test this. - vin --- Src/Zle/deltochar.c.orig Wed Jun 23 08:12:25 1999 +++ Src/Zle/deltochar.c Wed Sep 22 22:24:16 1999 @@ -43,7 +43,8 @@ while (dest != ll && line[dest] != c) dest++; if (dest != ll) { - dest++; + if (n > 0) + dest++; if (!n) { forekill(dest - cs, 0); ok++; @@ -59,7 +60,7 @@ dest--; if (line[dest] == c) { if (!n) { - backkill(cs - dest, 1); + backkill(cs - dest - 1, 1); ok++; } if (dest) --- Doc/Zsh/mod_deltochar.yo.orig Tue Jun 22 04:02:49 1999 +++ Doc/Zsh/mod_deltochar.yo Wed Sep 22 22:28:37 1999 @@ -6,7 +6,7 @@ tindex(delete-to-char) item(tt(delete-to-char))( Read a character from the keyboard, and -delete from the cursor position up to and including the next +delete from the cursor position up to but not including the next (or, with repeat count var(n), the var(n)th) instance of that character. ) enditem() >>>>> On 20 Sep 1999, I wrote: Vin> OK, I'm waking up to the new world of modules and I came across the Vin> deltochar module and the delete-to-char function. I hope I'm not Vin> rehashing an old discussion, but both XEmacs (as of 21.0) and FSF Vin> Emacs (as of at least 20.4) now define zap-to-char as deleting up to Vin> but not including the specified character. It would be good, IMHO, to Vin> have delete-to-char model that functionality. Currently Vin> delete-to-char deletes up to and including the specified character. Vin> I can submit a patch if people were amenable to this change. Vin> Whaddaya think? Vin> - vin ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: delete-to-char 1999-09-23 2:47 ` delete-to-char Vin Shelton @ 1999-09-23 9:00 ` Peter Stephenson 1999-09-23 9:11 ` delete-to-char Peter Stephenson 0 siblings, 1 reply; 6+ messages in thread From: Peter Stephenson @ 1999-09-23 9:00 UTC (permalink / raw) To: zsh-workers Vin Shelton wrote: > >>>>> On 20 Sep 1999, I wrote: > > Vin> OK, I'm waking up to the new world of modules and I came across the > Vin> deltochar module and the delete-to-char function. I hope I'm not > Vin> rehashing an old discussion, but both XEmacs (as of 21.0) and FSF > Vin> Emacs (as of at least 20.4) now define zap-to-char as deleting up to > Vin> but not including the specified character. It would be good, IMHO, to > Vin> have delete-to-char model that functionality. Currently > Vin> delete-to-char deletes up to and including the specified character. Sorry, I meant to reply to this before. I hadn't changed it before, firstly because I never understood why they changed the behaviour and don't like the new one, and secondly because since I wrote delete-to-char it's become easy to do the same thing as a shell function, which I've included below. (Actually, until Sven adapted read -k quite recently, it wasn't that easy.) But Sven's right that it should really be in a different widget. The patch at the end, after the function, uses your code to adapt the deltochar() function, but only when called from a different widget zap-to-char; this makes the change very economical. > Not waiting for the bits to dry, I generated this patch. In the > course of testing this, I found that M-digit did not work for me with > bindkey -me, even though bindkey thinks they are bound to > digit-argument. M-anydigit just beeps. "od -x" tells me that M-0 > sends 0xb0, M-1 sends 0xb1, etc. Do I have my xterm/stty settings > wrong, or is this a bug in zsh. The other meta things, like M-x, work, right? I'm having the same problem. I thought it was just my terminal, but maybe it's zsh. If I type M-1 it just beeps, but if I type `bindkey "', then a quoted M-1, then `"<RETURN>', it says "\M-1" digit-argument so something a little weird is happening. emulate -L zsh setopt extendedglob integer num=${NUMERIC:-1} ret local key match mbegin mend oldrbuf="$RBUFFER" oldlbuf="$LBUFFER" read -k key while (( num )); do if (( num > 0 )); then if [[ $RBUFFER = (#b)[^$key]#$key(*) ]]; then if (( num == 1 )); then RBUFFER=$key${match[1]} else RBUFFER=${match[1]} fi (( num-- )) else ret=1 RBUFFER="$oldrbuf" break fi else if [[ $LBUFFER = (#b)(*)${key}[^$key]# ]]; then if (( num == -1 )); then LBUFFER=${match[1]}$key else LBUFFER=${match[1]} fi (( num++ )) else ret=1 LBUFFER="$oldlbuf" break fi fi done return $ret --- Doc/Zsh/mod_deltochar.yo.dc2 Thu Sep 23 10:31:21 1999 +++ Doc/Zsh/mod_deltochar.yo Thu Sep 23 10:51:15 1999 @@ -1,6 +1,6 @@ texinode(The deltochar Module)(The example Module)(The complist Module)(Zsh Modules) sect(The deltochar Module) -The tt(deltochar) module makes available one ZLE function: +The tt(deltochar) module makes available two ZLE functions: startitem() tindex(delete-to-char) @@ -8,5 +8,11 @@ Read a character from the keyboard, and delete from the cursor position up to and including the next (or, with repeat count var(n), the var(n)th) instance of that character. +Negative repeat counts mean delete backwards. +) +tindex(zap-to-char) +item(tt(zap-to-char))( +This behaves like tt(delete-to-char), except that the final occurence of +the character itself is not deleted. ) enditem() --- Src/Zle/deltochar.c.dc2 Thu Sep 23 10:31:21 1999 +++ Src/Zle/deltochar.c Thu Sep 23 10:52:27 1999 @@ -31,19 +31,22 @@ #include "deltochar.pro" static Widget w_deletetochar; +static Widget w_zaptochar; /**/ static int deltochar(char **args) { int c = getkey(0), dest = cs, ok = 0, n = zmult; + int zap = (bindk->widget == w_zaptochar); if (n > 0) { while (n-- && dest != ll) { while (dest != ll && line[dest] != c) dest++; if (dest != ll) { - dest++; + if (!zap || n > 0) + dest++; if (!n) { forekill(dest - cs, 0); ok++; @@ -59,7 +62,7 @@ dest--; if (line[dest] == c) { if (!n) { - backkill(cs - dest, 1); + backkill(cs - dest - zap, 1); ok++; } if (dest) @@ -83,9 +86,14 @@ { w_deletetochar = addzlefunction("delete-to-char", deltochar, ZLE_KILL | ZLE_KEEPSUFFIX); - if (w_deletetochar) - return 0; - zwarnnam(m->nam, "name clash when adding ZLE function `delete-to-char'", + if (w_deletetochar) { + w_zaptochar = addzlefunction("zap-to-char", deltochar, + ZLE_KILL | ZLE_KEEPSUFFIX); + if (w_zaptochar) + return 0; + deletezlefunction(w_deletetochar); + } + zwarnnam(m->nam, "deltochar: name clash when adding ZLE functions", NULL, 0); return -1; } @@ -97,6 +105,7 @@ cleanup_deltochar(Module m) { deletezlefunction(w_deletetochar); + deletezlefunction(w_zaptochar); return 0; } -- Peter Stephenson <pws@ibmth.df.unipi.it> Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: delete-to-char 1999-09-23 9:00 ` delete-to-char Peter Stephenson @ 1999-09-23 9:11 ` Peter Stephenson 0 siblings, 0 replies; 6+ messages in thread From: Peter Stephenson @ 1999-09-23 9:11 UTC (permalink / raw) To: zsh-workers Peter Stephenson wrote: > Vin Shelton wrote: > > In the > > course of testing this, I found that M-digit did not work for me with > > bindkey -me, even though bindkey thinks they are bound to > > digit-argument. M-anydigit just beeps. "od -x" tells me that M-0 > > sends 0xb0, M-1 sends 0xb1, etc. Do I have my xterm/stty settings > > wrong, or is this a bug in zsh. > > The other meta things, like M-x, work, right? I'm having the same problem. > I thought it was just my terminal, but maybe it's zsh. If I type M-1 it > just beeps, but if I type `bindkey "', then a quoted M-1, then `"<RETURN>', > it says > "\M-1" digit-argument > so something a little weird is happening. Guess who generated this bug? Bart complained that non-digits were doing weird things when attached to digit-argument, so I `fixed' it. This restores handling of metafied as well as normal digits. --- Src/Zle/zle_misc.c.dig Wed Jul 7 09:32:06 1999 +++ Src/Zle/zle_misc.c Thu Sep 23 11:08:46 1999 @@ -458,7 +458,8 @@ { int sign = (zmult < 0) ? -1 : 1; - if (c < '0' || c > '9') + /* allow metafied as well as ordinary digits */ + if ((c & 0x7f) < '0' || (c & 0x7f) > '9') return 1; if (!(zmod.flags & MOD_TMULT)) -- Peter Stephenson <pws@ibmth.df.unipi.it> Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: delete-to-char
@ 1999-09-23 9:01 Sven Wischnowsky
1999-09-23 12:05 ` delete-to-char Vin Shelton
0 siblings, 1 reply; 6+ messages in thread
From: Sven Wischnowsky @ 1999-09-23 9:01 UTC (permalink / raw)
To: zsh-workers
Vin Shelton wrote:
> Not waiting for the bits to dry, I generated this patch.
Hm, I don't use this, but I had expacted that you would just add a
second widget `zap-to-char' to the module giving the behaviour you
wanted. Maaybe there are people using deltochar and you have just
stepped on their toes.
Bye
Sven
--
Sven Wischnowsky wischnow@informatik.hu-berlin.de
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: delete-to-char 1999-09-23 9:01 delete-to-char Sven Wischnowsky @ 1999-09-23 12:05 ` Vin Shelton 0 siblings, 0 replies; 6+ messages in thread From: Vin Shelton @ 1999-09-23 12:05 UTC (permalink / raw) To: zsh-workers Vin Shelton wrote: >> Not waiting for the bits to dry, I generated this patch. >>>>> On Thu, 23 Sep 1999, Sven Wischnowsky <wischnow@informatik.hu-berlin.de> said: Sven> Hm, I don't use this, but I had expacted that you would just add Sven> a second widget `zap-to-char' to the module giving the behaviour Sven> you wanted. Maaybe there are people using deltochar and you have Sven> just stepped on their toes. Of course you're right. Thanks Peter, for turning my work into something more useful. - vin ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~1999-09-23 12:01 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 1999-09-21 2:52 delete-to-char Vin Shelton 1999-09-23 2:47 ` delete-to-char Vin Shelton 1999-09-23 9:00 ` delete-to-char Peter Stephenson 1999-09-23 9:11 ` delete-to-char Peter Stephenson 1999-09-23 9:01 delete-to-char Sven Wischnowsky 1999-09-23 12:05 ` delete-to-char Vin Shelton
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/zsh/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).