Index: /trunk/ccl/hemlock/src/bindings.lisp
===================================================================
--- /trunk/ccl/hemlock/src/bindings.lisp	(revision 586)
+++ /trunk/ccl/hemlock/src/bindings.lisp	(revision 587)
@@ -65,6 +65,6 @@
 (bind-key "Scroll Next Window Up" #k"control-meta-V")
 
-(bind-key "Process File Options" #k"control-meta-m")
-(bind-key "Ensure File Options Line" #k"control-meta-M")
+(bind-key "Process File Options" #k"control-x m" :global)
+(bind-key "Ensure File Options Line" #k"control-meta-M" :global)
 (bind-key "Help" #k"home")
 (bind-key "Help" #k"control-_")
@@ -90,7 +90,7 @@
 (bind-key "Find File" #k"control-x control-f")
 (bind-key "Backup File" #k"control-x meta-b")
-(bind-key "Save All Files" #k"control-x control-m")
-(bind-key "Save All Files" #k"control-x return")
-(bind-key "Save All Files and Exit" #k"control-x meta-z")
+;(bind-key "Save All Files" #k"control-x control-m")
+;(bind-key "Save All Files" #k"control-x return")
+;(bind-key "Save All Files and Exit" #k"control-x meta-z")
 
 (bind-key "List Buffers" #k"control-x control-b")
Index: /trunk/ccl/hemlock/src/cocoa-hemlock.lisp
===================================================================
--- /trunk/ccl/hemlock/src/cocoa-hemlock.lisp	(revision 586)
+++ /trunk/ccl/hemlock/src/cocoa-hemlock.lisp	(revision 587)
@@ -33,2 +33,9 @@
   (setq *current-window* new-window))
 
+;;; This is a public variable.
+;;;
+(defvar *last-key-event-typed* ()
+  "This variable contains the last key-event typed by the user and read as
+   input.")
+
+(defvar *input-transcript* ())
Index: /trunk/ccl/hemlock/src/filecoms.lisp
===================================================================
--- /trunk/ccl/hemlock/src/filecoms.lisp	(revision 586)
+++ /trunk/ccl/hemlock/src/filecoms.lisp	(revision 587)
@@ -235,5 +235,5 @@
 	      (funcall (cdr hook) buffer type)
 	      (setq mode (buffer-major-mode buffer)))))
-	(with-mark ((mark (buffer-start-mark buffer)))
+	(with-mark ((mark (buffer-start-mark buffer) :left-inserting))
 	  (if (string-equal mode "Lisp")
 	    (let* ((package-name
Index: /trunk/ccl/hemlock/src/htext1.lisp
===================================================================
--- /trunk/ccl/hemlock/src/htext1.lisp	(revision 586)
+++ /trunk/ccl/hemlock/src/htext1.lisp	(revision 587)
@@ -191,5 +191,5 @@
                  (buffer-unmodified-tick ,b))
           (invoke-hook hemlock::buffer-modified-hook ,b t))
-        (setf (buffer-modified-tick ,b) (tick)))
+        (setf (buffer-modified ,b) t))
       (unwind-protect
            (progn
Index: /trunk/ccl/hemlock/src/htext3.lisp
===================================================================
--- /trunk/ccl/hemlock/src/htext3.lisp	(revision 586)
+++ /trunk/ccl/hemlock/src/htext3.lisp	(revision 587)
@@ -71,9 +71,6 @@
     (declare (simple-string string))
     (unless (zerop (- end start))
-      (modifying-buffer
-       buffer
-       (modifying-line line mark)
-       (if (%sp-find-character string start end #\newline)
-	 (with-mark ((mark mark :left-inserting))
+      (if (%sp-find-character string start end #\newline)
+	(with-mark ((mark mark :left-inserting))
 	   (do ((left-index start (1+ right-index))
 		(right-index
@@ -85,4 +82,7 @@
 	     (insert-string mark string left-index right-index)
 	     (insert-character mark #\newline)))
+	(modifying-buffer
+	 buffer
+	 (modifying-line line mark)
 	 (let ((length (- end start)))
 	   (if (<= *right-open-pos* (+ *left-open-pos* end))
@@ -99,6 +99,6 @@
 	      (let ((new (+ *left-open-pos* length)))
 		(%sp-byte-blt string start *open-chars* *left-open-pos* new)
-		(setq *left-open-pos* new))))))
-       (buffer-note-insertion buffer mark (- end start))))))
+		(setq *left-open-pos* new)))))
+	 (buffer-note-insertion buffer mark (- end start)))))))
 
 
Index: /trunk/ccl/hemlock/src/modeline.lisp
===================================================================
--- /trunk/ccl/hemlock/src/modeline.lisp	(revision 586)
+++ /trunk/ccl/hemlock/src/modeline.lisp	(revision 587)
@@ -219,2 +219,14 @@
   "This is the default value for \"Default Modeline Fields\".")
 
+(defun %init-redisplay ()
+  (add-hook hemlock::buffer-major-mode-hook 'queue-buffer-change)
+  (add-hook hemlock::buffer-minor-mode-hook 'queue-buffer-change)
+  (add-hook hemlock::buffer-name-hook 'queue-buffer-change)
+  (add-hook hemlock::buffer-pathname-hook 'queue-buffer-change)
+  (add-hook hemlock::buffer-modified-hook 'queue-buffer-change)
+  (add-hook hemlock::window-buffer-hook 'queue-window-change))
+
+(defun queue-buffer-change (buffer &optional something-else another-else)
+  (declare (ignore something-else another-else))
+  (dolist (w (buffer-windows buffer))
+    (invalidate-modeline w)))
Index: /trunk/ccl/hemlock/src/streams.lisp
===================================================================
--- /trunk/ccl/hemlock/src/streams.lisp	(revision 586)
+++ /trunk/ccl/hemlock/src/streams.lisp	(revision 587)
@@ -228,4 +228,7 @@
 ;;;; Stuff to support keyboard macros.
 
+#+later
+(progn
+  
 (defstruct (kbdmac-stream
 	    (:include editor-input
@@ -262,2 +265,3 @@
   (setf (kbdmac-stream-buffer stream) input)
   stream)
+)
Index: /trunk/ccl/hemlock/src/struct.lisp
===================================================================
--- /trunk/ccl/hemlock/src/struct.lisp	(revision 586)
+++ /trunk/ccl/hemlock/src/struct.lisp	(revision 587)
@@ -104,4 +104,5 @@
   (delete-hook nil)	      ; List of functions to call upon deletion.
   (external-format :unix)     ; Line-termination, for the time being
+  process		      ; Maybe a listener
   )
 
