summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Großjohann <kgrossjo@eu.uu.net>2003-05-19 15:47:14 +0000
committerKai Großjohann <kgrossjo@eu.uu.net>2003-05-19 15:47:14 +0000
commit348de80b31f6de0a286d83d2808beb47954d74f5 (patch)
tree73384e9359c5e11bd53146305d526da28fc2532a
parentaf253914f217ccfbc2fcae37d96e8adbd7163bc0 (diff)
downloademacs-348de80b31f6de0a286d83d2808beb47954d74f5.tar.gz
* simple.el (kill-whole-line): New function.
* bindings.el (global-map): Bind it.
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/bindings.el1
-rw-r--r--lisp/simple.el19
3 files changed, 25 insertions, 0 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index e90f4445ce0..11eab58f2fe 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2003-05-19 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
+
+ * simple.el (kill-whole-line): New function.
+ * bindings.el (global-map): Bind it.
+
2003-05-19 Richard M. Stallman <rms@gnu.org>
* net/goto-addr.el (goto-address-fontify-maximum-size):
diff --git a/lisp/bindings.el b/lisp/bindings.el
index f95a3f588c2..7568c89c858 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -743,6 +743,7 @@ language you are using."
;(define-key global-map [delete] 'backward-delete-char)
;; natural bindings for terminal keycaps --- defined in X keysym order
+(define-key global-map [S-backspace] 'kill-whole-line)
(define-key global-map [home] 'beginning-of-line)
(define-key global-map [C-home] 'beginning-of-buffer)
(define-key global-map [M-home] 'beginning-of-buffer-other-window)
diff --git a/lisp/simple.el b/lisp/simple.el
index c726bf745bc..64b56d5dfbb 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -2205,6 +2205,25 @@ even beep.)"
(goto-char end))))
(point))))
+(defun kill-whole-line (&optional arg)
+ "Kill current line.
+With prefix arg, kill that many lines from point.
+If arg is negative, kill backwards.
+If arg is zero, kill current line but exclude the trailing newline."
+ (interactive "P")
+ (setq arg (prefix-numeric-value arg))
+ (cond ((zerop arg)
+ (kill-region (point) (progn (forward-visible-line 0) (point)))
+ (kill-region (point) (progn (end-of-visible-line) (point))))
+ ((< arg 0)
+ (kill-line 1)
+ (kill-line (1+ arg))
+ (unless (bobp) (forward-visible-line -1)))
+ (t
+ (kill-line 0)
+ (if (eobp)
+ (signal 'end-of-buffer nil)
+ (kill-line arg)))))
(defun forward-visible-line (arg)
"Move forward by ARG lines, ignoring currently invisible newlines only.