From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1641 invoked from network); 5 Nov 1998 17:38:29 -0000 Received: from math.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 5 Nov 1998 17:38:29 -0000 Received: (from list@localhost) by math.gatech.edu (8.9.1/8.9.1) id MAA01542; Thu, 5 Nov 1998 12:36:55 -0500 (EST) Resent-Date: Thu, 5 Nov 1998 12:36:55 -0500 (EST) Message-ID: <13889.57739.993748.165972@catbus.alphatech.com> Date: Thu, 5 Nov 1998 12:34:03 -0500 (EST) From: greg@alphatech.com (Greg Klanderman) To: zsh-workers@math.gatech.edu (Zsh list) Subject: [patch] deltochar Reply-To: greg@alphatech.com X-Mailer: VM 6.62 under 21.0 "Pyrenean-pre4" XEmacs Lucid Mime-Version: 1.0 (generated by tm-edit 7.108) Content-Type: text/plain; charset=US-ASCII Resent-Message-ID: <"eZlSO3.0.1O.s8UGs"@math> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/4565 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu Reverse kills were not handled correctly. Also, kill the text so it can be yanked, like emacs does. There is still a minor bug in that consecutive reverse deltochar's do not accumulate into a single kill. They do going forwards. Can someone tell me what the ZLE_KILL does in the call to addzlefunction, and if it's needed? greg (please copy me on replies) 1998-11-05 Greg Klanderman * Src/Zle/deltochar.c (deltochar): kill (saving in kill ring) instead of deleting. properly handle reverse kills. --- Src/Zle/deltochar.c.orig Thu Nov 5 11:21:36 1998 +++ Src/Zle/deltochar.c Thu Nov 5 12:23:28 1998 @@ -45,7 +45,7 @@ if (dest != ll) { dest++; if (!n) { - foredel(dest - cs); + forekill(dest - cs, 0); ok++; } } @@ -58,9 +58,13 @@ while (dest != 0 && line[dest] != c) dest--; if (line[dest] == c && !n) { - backdel(cs - dest); + backkill(cs - dest, 1); ok++; } + else if (dest) + dest--; + else + n = 0; } } if (!ok) @@ -71,7 +75,8 @@ int boot_deltochar(Module m) { - w_deletetochar = addzlefunction("delete-to-char", deltochar, ZLE_KEEPSUFFIX); + 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'",