Update of /project/climacs/cvsroot/climacs In directory common-lisp.net:/tmp/cvs-serv24090
Modified Files: gui.lisp Log Message: Cleaned up some useless code.
Introduced a macro `current-window' in preparation for true multi-window support. Please use it now instead of the previous idiom (win *application-frame*).
A key sequence such as ESC <key> now works the same way as they keystroke M-<key>. (thanks to Ignas Mikalajunas)
Date: Mon Jan 17 21:58:27 2005 Author: rstrandh
Index: climacs/gui.lisp diff -u climacs/gui.lisp:1.79 climacs/gui.lisp:1.80 --- climacs/gui.lisp:1.79 Mon Jan 17 15:10:23 2005 +++ climacs/gui.lisp Mon Jan 17 21:58:24 2005 @@ -63,19 +63,6 @@ :borders nil :incremental-redisplay t :display-function 'display-info))) -; (win (make-pane 'extended-pane -; :width 900 :height 400 -; :name 'bla -; :incremental-redisplay t -; :display-function 'display-win)) - - (info :application - :width 900 :height 20 :max-height 30 :min-height 30 - :name 'info :background +gray85+ - :scroll-bars nil - :borders nil - :incremental-redisplay t - :display-function 'display-info) (int (make-pane 'minibuffer-pane :width 900 :height 20 :max-height 20 :min-height 20 :scroll-bars nil))) @@ -83,21 +70,18 @@ (default (vertically (:scroll-bars nil) win - int)) - (without-interactor - (vertically (:scroll-bars nil) - (scrolling (:width 900 :height 400) win) - info))) + int))) (:top-level (climacs-top-level)))
-(defmethod redisplay-frame-panes :before ((frame climacs) &rest args) - (declare (ignore args)) - (let ((buffer (buffer (win frame)))) - (update-syntax buffer (syntax buffer)))) +(defmacro current-window () + `(win *application-frame*))
-(defmethod redisplay-frame-panes :after ((frame climacs) &rest args) +(defmethod redisplay-frame-panes :around ((frame climacs) &rest args) (declare (ignore args)) - (clear-modify (buffer (win frame)))) + (let ((buffer (buffer (win frame)))) + (update-syntax buffer (syntax buffer)) + (call-next-method) + (clear-modify buffer)))
(defun climacs () "Starts up a climacs session" @@ -263,12 +247,12 @@ (frame-exit *application-frame*))
(define-named-command com-toggle-overwrite-mode () - (let ((win (win *application-frame*))) + (let ((win (current-window))) (setf (slot-value win 'overwrite-mode) (not (slot-value win 'overwrite-mode)))))
(define-command com-self-insert () - (let* ((win (win *application-frame*)) + (let* ((win (current-window)) (point (point win))) (unless (constituentp *current-gesture*) (possibly-expand-abbrev point)) @@ -279,19 +263,19 @@ (insert-object point *current-gesture*))))
(define-named-command com-beginning-of-line () - (beginning-of-line (point (win *application-frame*)))) + (beginning-of-line (point (current-window))))
(define-named-command com-end-of-line () - (end-of-line (point (win *application-frame*)))) + (end-of-line (point (current-window))))
(define-named-command com-delete-object ((count 'integer :prompt "Number of Objects")) - (delete-range (point (win *application-frame*)) count)) + (delete-range (point (current-window)) count))
(define-named-command com-backward-delete-object ((count 'integer :prompt "Number of Objects")) - (delete-range (point (win *application-frame*)) (- count))) + (delete-range (point (current-window)) (- count)))
(define-named-command com-transpose-objects () - (let* ((point (point (win *application-frame*)))) + (let* ((point (point (current-window)))) (unless (beginning-of-buffer-p point) (when (end-of-line-p point) (backward-object point)) @@ -302,13 +286,13 @@ (forward-object point)))))
(define-named-command com-backward-object ((count 'integer :prompt "Number of Objects")) - (backward-object (point (win *application-frame*)) count)) + (backward-object (point (current-window)) count))
(define-named-command com-forward-object ((count 'integer :prompt "Number of Objects")) - (forward-object (point (win *application-frame*)) count)) + (forward-object (point (current-window)) count))
(define-named-command com-transpose-words () - (let* ((point (point (win *application-frame*)))) + (let* ((point (point (current-window)))) (let (bw1 bw2 ew1 ew2) (backward-word point) (setf bw1 (offset point)) @@ -332,7 +316,7 @@ (forward-word point)))))
(define-named-command com-transpose-lines () - (let ((point (point (win *application-frame*)))) + (let ((point (point (current-window)))) (beginning-of-line point) (unless (beginning-of-buffer-p point) (previous-line point)) @@ -355,7 +339,7 @@ (insert-object point #\Newline))))
(define-named-command com-previous-line () - (let* ((win (win *application-frame*)) + (let* ((win (current-window)) (point (point win))) (unless (or (eq (previous-command win) 'com-previous-line) (eq (previous-command win) 'com-next-line)) @@ -363,7 +347,7 @@ (previous-line point (slot-value win 'goal-column))))
(define-named-command com-next-line () - (let* ((win (win *application-frame*)) + (let* ((win (current-window)) (point (point win))) (unless (or (eq (previous-command win) 'com-previous-line) (eq (previous-command win) 'com-next-line)) @@ -371,10 +355,10 @@ (next-line point (slot-value win 'goal-column))))
(define-named-command com-open-line () - (open-line (point (win *application-frame*)))) + (open-line (point (current-window))))
(define-named-command com-kill-line () - (let* ((pane (win *application-frame*)) + (let* ((pane (current-window)) (point (point pane)) (mark (offset point))) (cond ((end-of-buffer-p point) nil) @@ -391,45 +375,45 @@ (delete-region mark point)))
(define-named-command com-forward-word () - (forward-word (point (win *application-frame*)))) + (forward-word (point (current-window))))
(define-named-command com-backward-word () - (backward-word (point (win *application-frame*)))) + (backward-word (point (current-window))))
(define-named-command com-delete-word () - (delete-word (point (win *application-frame*)))) + (delete-word (point (current-window))))
(define-named-command com-backward-delete-word () - (backward-delete-word (point (win *application-frame*)))) + (backward-delete-word (point (current-window))))
(define-named-command com-upcase-region () - (multiple-value-bind (start end) (region-limits (win *application-frame*)) + (multiple-value-bind (start end) (region-limits (current-window)) (upcase-region start end)))
(define-named-command com-downcase-region () - (multiple-value-bind (start end) (region-limits (win *application-frame*)) + (multiple-value-bind (start end) (region-limits (current-window)) (downcase-region start end)))
(define-named-command com-capitalize-region () - (multiple-value-bind (start end) (region-limits (win *application-frame*)) + (multiple-value-bind (start end) (region-limits (current-window)) (capitalize-region start end)))
(define-named-command com-upcase-word () - (upcase-word (point (win *application-frame*)))) + (upcase-word (point (current-window))))
(define-named-command com-downcase-word () - (downcase-word (point (win *application-frame*)))) + (downcase-word (point (current-window))))
(define-named-command com-capitalize-word () - (capitalize-word (point (win *application-frame*)))) + (capitalize-word (point (current-window))))
(define-named-command com-tabify-region () - (let ((pane (win *application-frame*))) + (let ((pane (current-window))) (multiple-value-bind (start end) (region-limits pane) (tabify-region start end (tab-space-count (stream-default-view pane))))))
(define-named-command com-untabify-region () - (let ((pane (win *application-frame*))) + (let ((pane (current-window))) (multiple-value-bind (start end) (region-limits pane) (untabify-region start end (tab-space-count (stream-default-view pane))))))
@@ -444,24 +428,18 @@ tab-space-count))))
(define-named-command com-indent-line () - (let* ((pane (win *application-frame*)) + (let* ((pane (current-window)) (point (point pane))) (indent-current-line pane point)))
(define-named-command com-newline-and-indent () - (let* ((pane (win *application-frame*)) + (let* ((pane (current-window)) (point (point pane))) (insert-object point #\Newline) (indent-current-line pane point)))
(define-named-command com-delete-indentation () - (delete-indentation (point (win *application-frame*)))) - -(define-named-command com-toggle-layout () - (setf (frame-current-layout *application-frame*) - (if (eq (frame-current-layout *application-frame*) 'default) - 'without-interactor - 'default))) + (delete-indentation (point (current-window))))
(define-command com-extended-command () (let ((item (accept 'command :prompt "Extended Command"))) @@ -553,9 +531,9 @@ (let ((filename (accept 'completable-pathname :prompt "Find File")) (buffer (make-instance 'climacs-buffer)) - (pane (win *application-frame*))) + (pane (current-window))) (push buffer (buffers *application-frame*)) - (setf (buffer (win *application-frame*)) buffer) + (setf (buffer (current-window)) buffer) (setf (syntax buffer) (make-instance 'basic-syntax)) (with-open-file (stream filename :direction :input :if-does-not-exist :create) (input-from-stream stream buffer 0)) @@ -568,7 +546,7 @@ (redisplay-frame-panes *application-frame*)))
(define-named-command com-save-buffer () - (let* ((buffer (buffer (win *application-frame*))) + (let* ((buffer (buffer (current-window))) (filename (or (filename buffer) (accept 'completable-pathname :prompt "Save Buffer to File")))) @@ -585,7 +563,7 @@ (define-named-command com-write-buffer () (let ((filename (accept 'completable-pathname :prompt "Write Buffer to File")) - (buffer (buffer (win *application-frame*)))) + (buffer (buffer (current-window)))) (with-open-file (stream filename :direction :output :if-exists :supersede) (output-to-stream stream buffer 0 (size buffer))) (setf (filename buffer) filename @@ -612,13 +590,13 @@ (define-named-command com-switch-to-buffer () (let ((buffer (accept 'buffer :prompt "Switch to buffer"))) - (setf (buffer (win *application-frame*)) buffer) + (setf (buffer (current-window)) buffer) (setf (syntax buffer) (make-instance 'basic-syntax)) - (beginning-of-buffer (point (win *application-frame*))) - (full-redisplay (win *application-frame*)))) + (beginning-of-buffer (point (current-window))) + (full-redisplay (current-window))))
(define-named-command com-full-redisplay () - (full-redisplay (win *application-frame*))) + (full-redisplay (current-window)))
(define-named-command com-load-file () (let ((filename (accept 'completable-pathname @@ -626,56 +604,56 @@ (load filename)))
(define-named-command com-beginning-of-buffer () - (beginning-of-buffer (point (win *application-frame*)))) + (beginning-of-buffer (point (current-window))))
(define-named-command com-page-down () - (let ((pane (win *application-frame*))) + (let ((pane (current-window))) (page-down pane)))
(define-named-command com-page-up () - (let ((pane (win *application-frame*))) + (let ((pane (current-window))) (page-up pane)))
(define-named-command com-end-of-buffer () - (end-of-buffer (point (win *application-frame*)))) + (end-of-buffer (point (current-window))))
(define-named-command com-back-to-indentation () - (let ((point (point (win *application-frame*)))) + (let ((point (point (current-window)))) (beginning-of-line point) (loop until (end-of-line-p point) while (whitespacep (object-after point)) do (incf (offset point)))))
(define-named-command com-goto-position () - (setf (offset (point (win *application-frame*))) + (setf (offset (point (current-window))) (accept 'integer :prompt "Goto Position")))
(define-named-command com-goto-line () (loop with mark = (make-instance 'standard-right-sticky-mark - :buffer (buffer (win *application-frame*))) + :buffer (buffer (current-window))) do (end-of-line mark) until (end-of-buffer-p mark) repeat (accept 'integer :prompt "Goto Line") do (incf (offset mark)) (end-of-line mark) finally (beginning-of-line mark) - (setf (offset (point (win *application-frame*))) + (setf (offset (point (current-window))) (offset mark))))
(define-named-command com-browse-url () (accept 'url :prompt "Browse URL"))
(define-named-command com-set-mark () - (let ((pane (win *application-frame*))) + (let ((pane (current-window))) (setf (mark pane) (clone-mark (point pane)))))
(define-named-command com-exchange-point-and-mark () - (let ((pane (win *application-frame*))) + (let ((pane (current-window))) (psetf (offset (mark pane)) (offset (point pane)) (offset (point pane)) (offset (mark pane)))))
(define-named-command com-set-syntax () - (let* ((pane (win *application-frame*)) + (let* ((pane (current-window)) (buffer (buffer pane))) (setf (syntax buffer) (make-instance (accept 'syntax :prompt "Set Syntax"))) @@ -689,7 +667,7 @@ (define-named-command com-split-window-vertically () (with-look-and-feel-realization ((frame-manager *application-frame*) *application-frame*) - (let* ((pane (win *application-frame*)) + (let* ((pane (current-window)) (new-pane (make-pane 'extended-pane :width 900 :height 400 :name 'win @@ -717,21 +695,21 @@
;; Copies an element from a kill-ring to a buffer at the given offset (define-named-command com-yank () - (insert-sequence (point (win *application-frame*)) (kill-ring-yank *kill-ring*))) + (insert-sequence (point (current-window)) (kill-ring-yank *kill-ring*)))
;; Destructively cut a given buffer region into the kill-ring (define-named-command com-cut-out () - (multiple-value-bind (start end) (region-limits (win *application-frame*)) + (multiple-value-bind (start end) (region-limits (current-window)) (kill-ring-standard-push *kill-ring* (region-to-sequence start end)) (delete-region (offset start) end)))
;; Non destructively copies in buffer region to the kill ring (define-named-command com-copy-out () - (let ((pane (win *application-frame*))) + (let ((pane (current-window))) (kill-ring-standard-push *kill-ring* (region-to-sequence (point pane) (mark pane)))))
(define-named-command com-rotate-yank () - (let* ((pane (win *application-frame*)) + (let* ((pane (current-window)) (point (point pane)) (last-yank (kill-ring-yank *kill-ring*))) (if (eq (previous-command pane) @@ -746,19 +724,19 @@ (setf (kill-ring-max-size *kill-ring*) size)))
(define-named-command com-search-forward () - (search-forward (point (win *application-frame*)) + (search-forward (point (current-window)) (accept 'string :prompt "Search Forward") :test (lambda (a b) (and (characterp b) (char-equal a b)))))
(define-named-command com-search-backward () - (search-backward (point (win *application-frame*)) + (search-backward (point (current-window)) (accept 'string :prompt "Search Backward") :test (lambda (a b) (and (characterp b) (char-equal a b)))))
(define-named-command com-dabbrev-expand () - (let* ((win (win *application-frame*)) + (let* ((win (current-window)) (point (point win))) (with-slots (original-prefix prefix-start-offset dabbrev-expansion-mark) win (flet ((move () (cond ((beginning-of-buffer-p dabbrev-expansion-mark) @@ -795,26 +773,40 @@ (move)))))))) (define-named-command com-beginning-of-paragraph () - (let* ((pane (win *application-frame*)) + (let* ((pane (current-window)) (point (point pane)) (syntax (syntax (buffer pane)))) (beginning-of-paragraph point syntax)))
(define-named-command com-end-of-paragraph () - (let* ((pane (win *application-frame*)) + (let* ((pane (current-window)) (point (point pane)) (syntax (syntax (buffer pane)))) (end-of-paragraph point syntax)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; -;;; Global command table +;;; Global and dead-escape command tables
(make-command-table 'global-climacs-table :errorp nil)
+(make-command-table 'dead-escape-climacs-table :errorp nil) + +(add-menu-item-to-command-table 'global-climacs-table "dead-escape" + :menu 'dead-escape-climacs-table + :keystroke '(:escape)) + +(defun dead-escape-set-key (gesture command) + (add-command-to-command-table command 'dead-escape-climacs-table + :keystroke gesture :errorp nil)) + (defun global-set-key (gesture command) (add-command-to-command-table command 'global-climacs-table - :keystroke gesture :errorp nil)) + :keystroke gesture :errorp nil) + (when (and + (listp gesture) + (find :meta gesture)) + (dead-escape-set-key (remove :meta gesture) command)))
(loop for code from (char-code #\space) to (char-code #~) do (global-set-key (code-char code) 'com-self-insert)) @@ -903,7 +895,7 @@ ;;; Some Unicode stuff
(define-named-command com-insert-charcode ((code 'integer :prompt "Code point")) - (insert-object (point (win *application-frame*)) (code-char code))) + (insert-object (point (current-window)) (code-char code)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;