[climacs-cvs] CVS climacs
thenriksen
thenriksen at common-lisp.net
Sun Jul 2 15:43:48 UTC 2006
Update of /project/climacs/cvsroot/climacs
In directory clnet:/tmp/cvs-serv26319
Modified Files:
misc-commands.lisp editing-commands.lisp
Log Message:
Moved the Kill Line command into editing-commands.lisp.
--- /project/climacs/cvsroot/climacs/misc-commands.lisp 2006/06/12 19:10:58 1.15
+++ /project/climacs/cvsroot/climacs/misc-commands.lisp 2006/07/02 15:43:48 1.16
@@ -150,53 +150,6 @@
'editing-table
'((#\o :control)))
-(defun kill-line (mark &optional (count 1) (whole-lines-p nil) (concatenate-p nil))
- (let ((start (offset mark)))
- (cond ((= 0 count)
- (beginning-of-line mark))
- ((< count 0)
- (loop repeat (- count)
- until (beginning-of-buffer-p mark)
- do (beginning-of-line mark)
- until (beginning-of-buffer-p mark)
- do (backward-object mark)))
- ((or whole-lines-p (> count 1))
- (loop repeat count
- until (end-of-buffer-p mark)
- do (end-of-line mark)
- until (end-of-buffer-p mark)
- do (forward-object mark)))
- (t
- (cond ((end-of-buffer-p mark) nil)
- ((end-of-line-p mark) (forward-object mark))
- (t (end-of-line mark)))))
- (unless (mark= mark start)
- (if concatenate-p
- (kill-ring-concatenating-push *kill-ring*
- (region-to-sequence start mark))
- (kill-ring-standard-push *kill-ring*
- (region-to-sequence start mark)))
- (delete-region start mark))))
-
-(define-command (com-kill-line :name t :command-table deletion-table)
- ((numarg 'integer :prompt "Kill how many lines?")
- (numargp 'boolean :prompt "Kill entire lines?"))
- "Kill the objects on the current line after point.
-When at the end of a line, kill the #\\Newline.
-With a numeric argument of 0, kill the objects on the current line before point.
-With a non-zero numeric argument, kill that many lines forward (backward,
-if negative) from point.
-
-Successive kills append to the kill ring."
- (let* ((pane (current-window))
- (point (point pane))
- (concatenate-p (eq (previous-command pane) 'com-kill-line)))
- (kill-line point numarg numargp concatenate-p)))
-
-(set-key `(com-kill-line ,*numeric-argument-marker* ,*numeric-argument-p*)
- 'deletion-table
- '((#\k :control)))
-
(defmacro define-mark-unit-command (unit command-table &key
move-point
noun
--- /project/climacs/cvsroot/climacs/editing-commands.lisp 2006/06/12 19:10:58 1.1
+++ /project/climacs/cvsroot/climacs/editing-commands.lisp 2006/07/02 15:43:48 1.2
@@ -195,13 +195,57 @@
(region-to-sequence mark point)))
(delete-region mark point)))
+;; We require somewhat special behavior from Kill Line, so define a
+;; new function and use that to implement the Kill Line command.
+(defun user-kill-line (mark &optional (count 1) (whole-lines-p nil) (concatenate-p nil))
+ (let ((start (offset mark)))
+ (cond ((= 0 count)
+ (beginning-of-line mark))
+ ((< count 0)
+ (loop repeat (- count)
+ until (beginning-of-buffer-p mark)
+ do (beginning-of-line mark)
+ until (beginning-of-buffer-p mark)
+ do (backward-object mark)))
+ ((or whole-lines-p (> count 1))
+ (loop repeat count
+ until (end-of-buffer-p mark)
+ do (end-of-line mark)
+ until (end-of-buffer-p mark)
+ do (forward-object mark)))
+ (t
+ (cond ((end-of-buffer-p mark) nil)
+ ((end-of-line-p mark) (forward-object mark))
+ (t (end-of-line mark)))))
+ (unless (mark= mark start)
+ (if concatenate-p
+ (kill-ring-concatenating-push *kill-ring*
+ (region-to-sequence start mark))
+ (kill-ring-standard-push *kill-ring*
+ (region-to-sequence start mark)))
+ (delete-region start mark))))
+
+(define-command (com-kill-line :name t :command-table deletion-table)
+ ((numarg 'integer :prompt "Kill how many lines?")
+ (numargp 'boolean :prompt "Kill entire lines?"))
+ "Kill the objects on the current line after point.
+When at the end of a line, kill the #\\Newline.
+With a numeric argument of 0, kill the objects on the current line before point.
+With a non-zero numeric argument, kill that many lines forward (backward,
+if negative) from point.
+
+Successive kills append to the kill ring."
+ (let* ((pane (current-window))
+ (point (point pane))
+ (concatenate-p (eq (previous-command pane) 'com-kill-line)))
+ (user-kill-line point numarg numargp concatenate-p)))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Autogenerate commands
(define-deletion-commands word deletion-table)
(define-editing-commands word editing-table)
-(define-deletion-commands line deletion-table)
(define-editing-commands line editing-table)
(define-deletion-commands definition deletion-table)
(define-editing-commands definition editing-table)
@@ -247,3 +291,6 @@
'editing-table
'((#\t :control)))
+(set-key `(com-kill-line ,*numeric-argument-marker* ,*numeric-argument-p*)
+ 'deletion-table
+ '((#\k :control)))
\ No newline at end of file
More information about the Climacs-cvs
mailing list