Index: /branches/event-ide/ccl/cocoa-ide/hemlock/src/indent.lisp
===================================================================
--- /branches/event-ide/ccl/cocoa-ide/hemlock/src/indent.lisp	(revision 7898)
+++ /branches/event-ide/ccl/cocoa-ide/hemlock/src/indent.lisp	(revision 7899)
@@ -22,4 +22,10 @@
    everywhere in Hemlock yet, so do not change it."
   :value 8)
+
+(defhvar "Indent with Tabs"
+  "If true, indentation is done using a mixture of tabs and spaces.  If false,
+   only spaces are used."
+  :value nil)
+
 
 (defun indent-using-tabs (mark column)
@@ -36,17 +42,21 @@
 
 
-(defhvar "Indent with Tabs"
-  "Function that takes a mark and a number of spaces and inserts tabs and spaces
-   to indent that number of spaces using \"Spaces per Tab\"."
-  :value #'indent-using-tabs)
-
-
-(defun tab-to-tab-stop (mark)
-  (insert-character mark #\tab))
+(defun indent-to-column (mark column)
+  "Inserts whitespace to move MARK to COLUMN, assuming mark is at column 0"
+  (if (value indent-with-tabs)
+      (indent-using-tabs mark column)
+      (indent-using-spaces mark column)))
+
+(defun indent-to-tab-stop (mark)
+  (if (value indent-with-tabs)
+      (insert-character mark #\tab)
+      (let* ((tab (value spaces-per-tab)))
+	(dotimes (i (- tab (mod (mark-column mark) tab)))
+	  (insert-character mark #\space)))))
 
 (defhvar "Indent Function"
   "Indentation function which is invoked by \"Indent\" command.
    It takes a :left-inserting mark that may be moved."
-  :value #'tab-to-tab-stop)
+  :value #'indent-to-tab-stop)
 
 
@@ -61,5 +71,5 @@
       (line-start mark line)
       (delete-horizontal-space mark)
-      (funcall (value indent-with-tabs) mark indentation))))
+      (indent-to-column mark indentation))))
 
 
@@ -142,6 +152,5 @@
    it is used instead of the \"Fill Column\"."
   "Centers current line using fill-column."
-  (let* ((indent-function (value indent-with-tabs))
-	 (region (if (region-active-p)
+  (let* ((region (if (region-active-p)
 		     (current-region)
 		     (region (current-point) (current-point))))
@@ -156,5 +165,5 @@
 	  (if (and (plusp spaces) 
 		   (not (zerop len)))
-	      (funcall indent-function temp (ceiling spaces 2)))
+	      (indent-to-column temp (ceiling spaces 2)))
 	  (unless (line-offset temp 1) (return))
 	  (line-start temp))))))
@@ -290,4 +299,4 @@
 		   (delete-characters mark1 (- (mark-charpos mark1)))
 		   (if (plusp new-column)
-		       (funcall (value indent-with-tabs) mark1 new-column)))))
+		       (indent-to-column mark1 new-column)))))
 	(line-offset mark1 1 0)))))
Index: /branches/event-ide/ccl/cocoa-ide/hemlock/src/lispmode.lisp
===================================================================
--- /branches/event-ide/ccl/cocoa-ide/hemlock/src/lispmode.lisp	(revision 7898)
+++ /branches/event-ide/ccl/cocoa-ide/hemlock/src/lispmode.lisp	(revision 7899)
@@ -1244,5 +1244,5 @@
 	    (t
 	     (delete-horizontal-space m)
-	     (funcall (value indent-with-tabs) m col))))))
+	     (indent-to-column m col))))))
 
 
@@ -1711,6 +1711,5 @@
 	   (hack (make-empty-region)))
       ;; Generate prefix.
-      (funcall (value indent-with-tabs)
-	       (region-end hack) (1+ (mark-column mark)))
+      (indent-to-column (region-end hack) (1+ (mark-column mark)))
       ;; Skip opening double quote and fill string starting on its own line.
       (mark-after mark)
Index: /branches/event-ide/ccl/level-1/l1-error-system.lisp
===================================================================
--- /branches/event-ide/ccl/level-1/l1-error-system.lisp	(revision 7898)
+++ /branches/event-ide/ccl/level-1/l1-error-system.lisp	(revision 7899)
@@ -1020,5 +1020,5 @@
     (mod #x110000)
     (array * (* *))                     ;2d array
-    (array * (* *))                     ;3d array
+    (array * (* * *))                   ;3d array
     (array t)
     (array bit)
