Index: /branches/ide-1.0/ccl/hemlock/src/cocoa-hemlock.lisp
===================================================================
--- /branches/ide-1.0/ccl/hemlock/src/cocoa-hemlock.lisp	(revision 6695)
+++ /branches/ide-1.0/ccl/hemlock/src/cocoa-hemlock.lisp	(revision 6696)
@@ -8,5 +8,6 @@
 
 (defstruct (frame-event-queue (:include ccl::locked-dll-header))
-  (signal (ccl::make-semaphore)))
+  (signal (ccl::make-semaphore))
+  (quoted-insert nil))
 
 (defstruct (buffer-operation (:include ccl::dll-node))
@@ -89,6 +90,9 @@
           (when (abort-key-event-p e)
             (beep)
+            (clear-echo-area)
             (throw 'editor-top-level-catcher nil)))
-        (setq *last-key-event-typed* (event-queue-node-event e)))
+        (values (setq *last-key-event-typed* (event-queue-node-event e))
+                (prog1 (frame-event-queue-quoted-insert q)
+                  (setf (frame-event-queue-quoted-insert q) nil))))
     (if (typep e 'buffer-operation)
       (catch 'command-loop-catcher
@@ -106,4 +110,10 @@
       (setf (font-region-node region) node)
       region)))
+
+(defun enable-self-insert (q)
+  (setf (frame-event-queue-quoted-insert q) t))
+
+(defun disable-self-insert (q)
+  (setf (frame-event-queue-quoted-insert q) nil))
 
 (defun remove-font-region (region)
@@ -176,2 +186,11 @@
 (defun region-to-clipboard (region)
   (string-to-clipboard (region-to-string region)))
+
+;;; Meta-.
+(defun hemlock::get-def-info-and-go-to-it (string package)
+  (multiple-value-bind (fun-name error)
+      (let* ((*package* package))
+        (ignore-errors (values (read-from-string string))))
+    (if error
+      (editor-error)
+      (hi::edit-definition fun-name))))
