From xemacs-m  Wed Jun 11 01:11:30 1997
Received: from mercury.Sun.COM (mercury.Sun.COM [192.9.25.1])
	by xemacs.org (8.8.5/8.8.5) with SMTP id BAA11538
	for <xemacs-beta@xemacs.org>; Wed, 11 Jun 1997 01:11:29 -0500 (CDT)
Received: from Corp.Sun.COM ([129.145.35.78]) by mercury.Sun.COM (SMI-8.6/mail.byaddr) with SMTP id XAA14214 for <xemacs-beta@xemacs.org>; Tue, 10 Jun 1997 23:30:59 -0700
Received: from legba.Corp.Sun.COM by Corp.Sun.COM (SMI-8.6/SMI-5.3)
	id XAA16762; Tue, 10 Jun 1997 23:11:56 -0700
Received: by legba.Corp.Sun.COM (SMI-8.6/SMI-SVR4)
	id XAA13266; Tue, 10 Jun 1997 23:11:54 -0700
To: xemacs-beta@xemacs.org
Subject: BS/DEL mania #2 [PATCH]
X-Attribution: GDF
Mime-Version: 1.0 (generated by tm-edit 7.108)
Content-Type: multipart/mixed;
 boundary="Multipart_Tue_Jun_10_23:11:52_1997-1"
Content-Transfer-Encoding: 7bit
From: Gary.Foster@Corp.Sun.COM (Gary D. Foster)
Date: 10 Jun 1997 23:11:52 -0700
Message-ID: <bcisoypact3.fsf@corp.Sun.COM>
Lines: 196
X-Mailer: Gnus v5.4.56/XEmacs 20.3(beta4)

--Multipart_Tue_Jun_10_23:11:52_1997-1
Content-Type: text/plain; charset=US-ASCII

Ok, this patch should be applied _after_ the last one I posted.  It
changes the names of the functions to `backward-or-forward-foo',
renames delete-erases-forward, removes the zmacs region hacks, plays
nicely with pending-del for the `b-or-f-delete-char' function, and
adds `b-or-f-kill-sexp' to the family.

NOTE:

delete-erases-forward has been RENAMED to delete-key-deletes-forward
so you'll need to change this in your .xemacs-options/.emacs files.

-- Gary F.


--Multipart_Tue_Jun_10_23:11:52_1997-1
Content-Type: text/plain; name="erase2.patch"; charset=US-ASCII

--- lisp/prim/simple.el.orig	Tue Jun 10 21:15:47 1997
+++ lisp/prim/simple.el	Tue Jun 10 22:58:55 1997
@@ -353,57 +353,64 @@
   (and overwrite-mode (not (eolp))
        (save-excursion (insert-char ?\  arg))))
 
-(defcustom delete-erases-forward nil
+(defcustom delete-key-deletes-forward nil
   "If non-nil, the DEL key will erase one character forwards.
 If nil, the DEL key will erase one character backwards."
   :type 'boolean
   :group 'editing-basics)
 
-(defun erase-character (arg)
+(defun backward-or-forward-delete-char (arg)
   "Delete either one character backwards or one character forwards.
-Controlled by the state of `delete-erases-forward' and whether the
+Controlled by the state of `delete-key-deletes-forward' and whether the
 BackSpace keysym even exists on your keyboard.  If you don't have a
 BackSpace keysym, the delete key should always delete one character
 backwards."
-  (interactive "*P")
-  (if zmacs-region-active-p
-      (kill-region (point) (mark))
-    (if (and delete-erases-forward
-	     (or (eq 'tty (device-type))
-		 (x-keysym-on-keyboard-p "BackSpace")))
-	(delete-char (prefix-numeric-value arg))
-      (delete-backward-char (prefix-numeric-value arg)))))
+  (interactive "*p")
+  (if (and delete-key-deletes-forward
+	   (or (eq 'tty (device-type))
+	       (x-keysym-on-keyboard-p "BackSpace")))
+      (delete-char arg)
+    (delete-backward-char arg)))
 
-(defun erase-word (arg)
+(defun backward-or-forward-kill-word (arg)
   "Delete either one word backwards or one word forwards.
-Controlled by the state of `delete-erases-forward' and whether the
+Controlled by the state of `delete-key-deletes-forward' and whether the
 BackSpace keysym even exists on your keyboard.  If you don't have a
 BackSpace keysym, the delete key should always delete one character
 backwards."
-  (interactive "*P")
-  (if zmacs-region-active-p
-      (kill-region (point) (mark))
-    (if (and delete-erases-forward
-	     (or (eq 'tty (device-type))
-		 (x-keysym-on-keyboard-p "BackSpace")))
-	(kill-word (prefix-numeric-value arg))
-      (backward-kill-word (prefix-numeric-value arg)))))
+  (interactive "*p")
+  (if (and delete-key-deletes-forward
+	   (or (eq 'tty (device-type))
+	       (x-keysym-on-keyboard-p "BackSpace")))
+      (kill-word arg)
+    (backward-kill-word arg)))
 
-(defun erase-sentence (arg)
+(defun backward-or-forward-kill-sentence (arg)
     "Delete either one sentence backwards or one sentence forwards.
-Controlled by the state of `delete-erases-forward' and whether the
+Controlled by the state of `delete-key-deletes-forward' and whether the
 BackSpace keysym even exists on your keyboard.  If you don't have a
 BackSpace keysym, the delete key should always delete one character
 backwards."
   (interactive "*P")
-  (if zmacs-region-active-p
-      (kill-region (point) (mark))
-    (if (and delete-erases-forward
-	     (or (eq 'tty (device-type))
-		 (x-keysym-on-keyboard-p "BackSpace")))
-	(kill-sentence (prefix-numeric-value arg))
-      (backward-kill-sentence (prefix-numeric-value arg)))))
-  
+  (if (and delete-key-deletes-forward
+	   (or (eq 'tty (device-type))
+	       (x-keysym-on-keyboard-p "BackSpace")))
+      (kill-sentence arg)
+    (backward-kill-sentence (prefix-numeric-value arg))))
+
+(defun backward-or-forward-kill-sexp (arg)
+    "Delete either one sexpr backwards or one sexpr forwards.
+Controlled by the state of `delete-key-deletes-forward' and whether the
+BackSpace keysym even exists on your keyboard.  If you don't have a
+BackSpace keysym, the delete key should always delete one character
+backwards."
+  (interactive "*p")
+  (if (and delete-key-deletes-forward
+	   (or (eq 'tty (device-type))
+	       (x-keysym-on-keyboard-p "BackSpace")))
+      (kill-sexp arg)
+    (backward-kill-sexp arg)))
+
 (defun zap-to-char (arg char)
   "Kill up to and including ARG'th occurrence of CHAR.
 Goes backward if ARG is negative; error if CHAR not found."
--- lisp/prim/keydefs.el.orig	Tue Jun 10 21:16:16 1997
+++ lisp/prim/keydefs.el	Tue Jun 10 21:30:20 1997
@@ -95,9 +95,9 @@
 (define-key global-map "\C-e" 'end-of-line)
 (define-key global-map "\C-f" 'forward-char)
 (define-key global-map "\C-d" 'delete-char)
-(define-key global-map 'delete 'erase-character)
-(define-key global-map [(meta delete)] 'erase-word)
-(define-key global-map [(control x) (delete)] 'erase-sentence)
+(define-key global-map 'delete 'backward-or-forward-delete-char)
+(define-key global-map '(meta delete) 'backward-or-forward-kill-word)
+(define-key global-map [(control x) (delete)] 'backward-or-forward-kill-sentence)
 
 ;; FSFmacs files.el
 
@@ -294,7 +294,8 @@
 (define-key global-map "\M-\)" 'move-past-close-and-reindent)
 (define-key global-map "\M-\t" 'lisp-complete-symbol)
 
-(define-key global-map '(control meta delete) 'backward-kill-sexp)
+(define-key global-map '(control meta backspace) 'backward-kill-sexp)
+(define-key global-map '(control meta delete) 'backward-or-forward-kill-sexp)
 
 
 (define-key global-map "\C-x/" 'point-to-register)
--- lisp/modes/cc-mode.el.orig	Tue Jun 10 21:16:41 1997
+++ lisp/modes/cc-mode.el	Tue Jun 10 22:31:08 1997
@@ -481,8 +481,8 @@
 This hook gets called after a line is indented by the mode."
   :type 'hook
   :group 'cc-indent)
-(defcustom c-delete-function (if (fboundp 'erase-character)
-				 'erase-character
+(defcustom c-delete-function (if (fboundp 'backward-or-forward-delete-char)
+				 'backward-or-forward-delete-char
 			       'backward-delete-char-untabify)
   "*Function called by `c-electric-delete' when deleting characters."
   :type 'function
@@ -1952,8 +1952,8 @@
 	  (c-in-literal))
       (funcall c-delete-function (prefix-numeric-value arg))
     (let ((here (point)))
-      (if (and (boundp 'delete-erases-forward)
-	       delete-erases-forward)
+      (if (and (boundp 'delete-key-deletes-forward)
+	       delete-key-deletes-forward)
 	  (skip-chars-forward " \t\n")
 	(skip-chars-backward " \t\n"))
       (if (/= (point) here)
--- lisp/modes/cperl-mode.el.orig	Tue Jun 10 21:17:11 1997
+++ lisp/modes/cperl-mode.el	Tue Jun 10 21:36:23 1997
@@ -1560,8 +1560,8 @@
 	(setq p (point))
 	(skip-chars-backward " \t\n")
 	(delete-region (point) p))
-    (if (fboundp 'erase-character)
-	(erase-character (prefix-numeric-value arg))
+    (if (fboundp 'backward-or-forward-delete-char)
+	(backward-or-forward-delete-char (prefix-numeric-value arg))
       (backward-delete-char-untabify (prefix-numeric-value arg)))))
 
 (defun cperl-inside-parens-p ()
--- lisp/packages/pending-del.el.orig	Tue Jun 10 21:37:32 1997
+++ lisp/packages/pending-del.el	Tue Jun 10 22:25:41 1997
@@ -72,6 +72,10 @@
 (put 'delete-char 'pending-delete 'supersede)
 (put 'c-electric-delete 'pending-delete 'supersede)
 
+;; Support the XEmacs 20.3 'delete functions
+
+(put 'backward-or-forward-delete-char 'pending-delete 'supersede)
+
 ;; Don't delete for these.  They're more problematic than helpful.
 ;;
 ;; (put 'newline-and-indent 'pending-delete t)


--Multipart_Tue_Jun_10_23:11:52_1997-1--

