Update of /project/mcclim/cvsroot/mcclim/Drei In directory clnet:/tmp/cvs-serv26248
Modified Files: core-commands.lisp core.lisp lisp-syntax-commands.lisp packages.lisp Log Message: Fix insert-pair, add move-past-close-and-reindent, bind M-), C-M-Delete, and C-M-Backspace as expected.
--- /project/mcclim/cvsroot/mcclim/Drei/core-commands.lisp 2007/12/08 08:53:50 1.7 +++ /project/mcclim/cvsroot/mcclim/Drei/core-commands.lisp 2007/12/08 23:25:23 1.8 @@ -611,9 +611,7 @@ (wrap-p 'boolean :prompt "Wrap expressions?")) "Insert a pair of parentheses, leaving point in between. With a numeric argument, enclose that many expressions -forward (backward if negative). - -FIXME: no it doesn't." +forward (backward if negative)." (unless wrap-p (setf count 0)) (insert-parentheses (point) (current-syntax) count))
@@ -626,6 +624,15 @@ (setf (region-visible-p *drei-instance*) (not (region-visible-p *drei-instance*))))
+(define-command (com-move-past-close-and-reindent :name t :command-table editing-table) + () + "Move past the next `)' and reindent" + (move-past-close-and-reindent (current-view) (point))) + +(set-key `(com-move-past-close-and-reindent) + 'editing-table + '((#) :meta))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Rectangle editing --- /project/mcclim/cvsroot/mcclim/Drei/core.lisp 2007/12/08 08:53:50 1.8 +++ /project/mcclim/cvsroot/mcclim/Drei/core.lisp 2007/12/08 23:25:23 1.9 @@ -81,16 +81,27 @@ (setf count (- count)) (loop repeat count do (backward-expression mark syntax)))) (unless (or (beginning-of-buffer-p mark) - (whitespacep syntax (object-before mark))) + (char= open (object-before mark)) + (whitespacep syntax (object-before mark))) (insert-object mark #\Space)) (insert-object mark open) - (let ((here (clone-mark mark))) + (let ((saved-offset (offset mark))) (loop repeat count - do (forward-expression here syntax)) - (insert-object here close) - (unless (or (end-of-buffer-p here) - (whitespacep syntax (object-after here))) - (insert-object here #\Space)))) + do (forward-expression mark syntax)) + (insert-object mark close) + + (unless (or (end-of-buffer-p mark) + (char= close (object-after mark)) + (whitespacep syntax + (object-after mark))) + (insert-object mark #\Space)) + (setf (offset mark) saved-offset))) + +(defun move-past-close-and-reindent (view point) + (loop until (eql (object-after point) #)) + do (forward-object point)) + (forward-object point) + (indent-current-line view point))
(defun goto-position (mark pos) (setf (offset mark) pos)) --- /project/mcclim/cvsroot/mcclim/Drei/lisp-syntax-commands.lisp 2007/12/08 08:53:50 1.11 +++ /project/mcclim/cvsroot/mcclim/Drei/lisp-syntax-commands.lisp 2007/12/08 23:25:23 1.12 @@ -243,3 +243,12 @@ (set-key `(com-eval-last-expression ,*numeric-argument-p*) 'pane-lisp-table '((#\c :control) (#\e :control))) + +(set-key `(com-backward-kill-expression ,*numeric-argument-marker*) + 'lisp-table + '((#\Backspace :control :meta))) + +(set-key `(com-kill-expression ,*numeric-argument-marker*) + 'lisp-table + '((#\Delete :control :meta))) + --- /project/mcclim/cvsroot/mcclim/Drei/packages.lisp 2007/12/08 08:53:49 1.19 +++ /project/mcclim/cvsroot/mcclim/Drei/packages.lisp 2007/12/08 23:25:23 1.20 @@ -422,6 +422,7 @@ #:delete-horizontal-space #:indent-current-line #:insert-pair + #:move-past-close-and-reindent #:downcase-word #:upcase-word #:capitalize-word #:indent-region #:fill-line #:fill-region