Changeset 702
- Timestamp:
- Mar 22, 2004, 9:38:00 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/ccl/hemlock/src/cocoa-hemlock.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/hemlock/src/cocoa-hemlock.lisp
r674 r702 7 7 (in-package :hemlock-internals) 8 8 9 (defstruct command-interpreter-info 10 (current-command (make-array 10 :fill-pointer 0 :adjustable t)) 11 (current-translation (make-array 10 :fill-pointer 0 :adjustable t)) 12 (last-command-type nil) 13 (command-type-set nil) 14 (prefix-argument nil) 15 (prefix-argument-supplied nil) 16 frame 17 (event-mode-list nil) ; for extended modal 18 ) 9 (defstruct (frame-event-queue (:include ccl::locked-dll-header)) 10 (signal (ccl::make-semaphore))) 19 11 20 (defvar *current-command-info* nil) 21 22 (defun push-event-mode-function (f) 23 (push f (command-interpreter-info-event-mode-list *current-command-info*)) 24 f) 25 26 (defun exit-event-mode () 27 (setf (command-interpreter-info-event-mode-list *current-command-info*) 28 (cdr (command-interpreter-info-event-mode-list *current-command-info*)))) 29 30 (defun current-event-mode () 31 (car (command-interpreter-info-event-mode-list *current-command-info*))) 32 33 (defun add-one-shot-event-mode-function (f) 34 (push-event-mode-function #'(lambda (key) 35 (exit-event-mode) 36 (funcall f key)))) 12 (defstruct (buffer-operation (:include ccl::dll-node)) 13 (thunk nil)) 37 14 38 15 16 (defun enqueue-key-event (q event) 17 (ccl::locked-dll-header-enqueue event q) 18 (ccl::signal-semaphore (frame-event-queue-signal q))) 19 20 (defun dequeue-key-event (q) 21 (ccl::wait-on-semaphore (frame-event-queue-signal q)) 22 (ccl::locked-dll-header-dequeue q)) 23 24 (defun unget-key-event (event q) 25 (ccl::with-locked-dll-header (q) 26 (ccl::insert-dll-node-after event q)) 27 (ccl::signal-semaphore (frame-event-queue-signal q))) 28 29 30 31 32 39 33 40 34 (defun buffer-windows (buffer) … … 66 60 67 61 (defvar *input-transcript* ()) 62 63 (defun get-key-event (q &optional ignore-pending-aborts) 64 (declare (ignore ignore-pending-aborts)) 65 (do* ((e (dequeue-key-event q) (dequeue-key-event q))) 66 ((typep e 'hemlock-ext:key-event) 67 (setq *last-key-event-typed* e)) 68 (if (typep e 'buffer-operation) 69 (funcall (buffer-operation-thunk e))))) 70 71 (defun listen-editor-input (q) 72 (ccl::with-locked-dll-header (q) 73 (not (eq (ccl::dll-header-first q) q))))
Note:
See TracChangeset
for help on using the changeset viewer.
