[climacs-cvs] CVS update: climacs/gui.lisp
Dave Murray
dmurray at common-lisp.net
Mon Aug 8 14:48:23 UTC 2005
Update of /project/climacs/cvsroot/climacs
In directory common-lisp.net:/tmp/cvs-serv3963
Modified Files:
gui.lisp
Log Message:
Added new commands.
com-delete-horizontal-space (M-\), com-scroll-other-window (M-C-v),
com-kill-sentence (M-k), com-backward-kill-sentence (C-x Backspace),
com-mark-page (C-x C-p).
Date: Mon Aug 8 16:48:22 2005
Author: dmurray
Index: climacs/gui.lisp
diff -u climacs/gui.lisp:1.172 climacs/gui.lisp:1.173
--- climacs/gui.lisp:1.172 Mon Aug 8 14:15:05 2005
+++ climacs/gui.lisp Mon Aug 8 16:48:21 2005
@@ -764,6 +764,20 @@
while (whitespacep (object-after point))
do (incf (offset point)))))
+(define-named-command com-delete-horizontal-space ((backward-only-p
+ 'boolean :prompt "Delete backwards only?"))
+ (let* ((point (point (current-window)))
+ (mark (clone-mark point)))
+ (loop until (beginning-of-line-p point)
+ while (whitespacep (object-before point))
+ do (backward-object point))
+ (unless backward-only-p
+ (loop until (end-of-line-p mark)
+ while (whitespacep (object-after mark))
+ do (forward-object mark)))
+ (delete-region point mark)))
+
+
(define-named-command com-goto-position ()
(setf (offset (point (current-window)))
(handler-case (accept 'integer :prompt "Goto Position")
@@ -909,7 +923,11 @@
(cadr (windows *application-frame*)))
(com-delete-window))
(setf *standard-output* (car (windows *application-frame*))))
-
+
+(define-named-command com-scroll-other-window ()
+ (let ((other-window (second (windows *application-frame*))))
+ (when other-window
+ (page-down other-window))))
(define-named-command com-delete-window ()
(unless (null (cdr (windows *application-frame*)))
@@ -1277,6 +1295,28 @@
(loop repeat count do (forward-sentence point syntax))
(loop repeat (- count) do (backward-sentence point syntax)))))
+(define-named-command com-kill-sentence ((count 'integer :prompt "Number of sentences"))
+ (let* ((pane (current-window))
+ (point (point pane))
+ (mark (clone-mark point))
+ (syntax (syntax (buffer pane))))
+ (if (plusp count)
+ (loop repeat count do (forward-sentence point syntax))
+ (loop repeat (- count) do (backward-sentence point syntax)))
+ (kill-ring-standard-push *kill-ring* (region-to-sequence point mark))
+ (delete-region point mark))))
+
+(define-named-command com-backward-kill-sentence ((count 'integer :prompt "Number of sentences"))
+ (let* ((pane (current-window))
+ (point (point pane))
+ (mark (clone-mark point))
+ (syntax (syntax (buffer pane))))
+ (if (plusp count)
+ (loop repeat count do (backward-sentence point syntax))
+ (loop repeat (- count) do (forward-sentence point syntax)))
+ (kill-ring-standard-push *kill-ring* (region-to-sequence point mark))
+ (delete-region point mark)))
+
(defun forward-page (mark &optional (count 1))
(loop repeat count
unless (search-forward mark (coerce (list #\Newline #\Page) 'vector))
@@ -1304,6 +1344,19 @@
(backward-page point count)
(forward-page point count))))
+(define-named-command com-mark-page ((count 'integer :prompt "Move how many pages")
+ (numargp 'boolean :prompt "Move to another page?"))
+ (let* ((pane (current-window))
+ (point (point pane))
+ (mark (mark pane)))
+ (cond ((and numargp (/= 0 count))
+ (if (plusp count)
+ (forward-page point count)
+ (backward-page point (1+ count))))
+ (t (backward-page point count)))
+ (setf (offset mark) (offset point))
+ (forward-page mark 1)))
+
(define-named-command com-count-lines-page ()
(let* ((pane (current-window))
(point (point pane))
@@ -1507,6 +1560,7 @@
(global-set-key '(#\w :control) 'com-kill-region)
(global-set-key '(#\e :meta) `(com-forward-sentence ,*numeric-argument-marker*))
(global-set-key '(#\a :meta) `(com-backward-sentence ,*numeric-argument-marker*))
+(global-set-key '(#\k :meta) `(com-kill-sentence ,*numeric-argument-marker*))
(global-set-key '(#\@ :meta :control :shift) `(com-mark-expression ,*numeric-argument-marker*))
(global-set-key '(#\f :meta) `(com-forward-word ,*numeric-argument-marker*))
(global-set-key '(#\b :meta) `(com-backward-word ,*numeric-argument-marker*))
@@ -1519,9 +1573,11 @@
(global-set-key '(#\w :meta) 'com-copy-region)
(global-set-key '(#\v :control) 'com-page-down)
(global-set-key '(#\v :meta) 'com-page-up)
+(global-set-key '(#\v :control :meta) 'com-scroll-other-window)
(global-set-key '(#\< :shift :meta) 'com-beginning-of-buffer)
(global-set-key '(#\> :shift :meta) 'com-end-of-buffer)
(global-set-key '(#\m :meta) 'com-back-to-indentation)
+(global-set-key '(#\\ :meta) `(com-delete-horizontal-space ,*numeric-argument-p*))
(global-set-key '(#\^ :shift :meta) 'com-delete-indentation)
(global-set-key '(#\q :meta) 'com-fill-paragraph)
(global-set-key '(#\d :meta) `(com-kill-word ,*numeric-argument-marker*))
@@ -1590,12 +1646,14 @@
(c-x-set-key '(#\u) 'com-undo)
(c-x-set-key '(#\]) `(com-forward-page ,*numeric-argument-marker*))
(c-x-set-key '(#\[) `(com-backward-page ,*numeric-argument-marker*))
+(c-x-set-key '(#\p :control) `(com-mark-page ,*numeric-argument-marker* ,*numeric-argument-p*))
(c-x-set-key '(#\l) 'com-count-lines-page)
(c-x-set-key '(#\s :control) 'com-save-buffer)
(c-x-set-key '(#\t :control) 'com-transpose-lines)
(c-x-set-key '(#\w :control) 'com-write-buffer)
(c-x-set-key '(#\x :control) 'com-exchange-point-and-mark)
(c-x-set-key '(#\=) 'com-what-cursor-position)
+(c-x-set-key '(#\Backspace) `(com-backward-kill-sentence ,*numeric-argument-marker*))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
More information about the Climacs-cvs
mailing list