Index: /branches/ide-1.0/ccl/hemlock/src/morecoms.lisp
===================================================================
--- /branches/ide-1.0/ccl/hemlock/src/morecoms.lisp	(revision 6754)
+++ /branches/ide-1.0/ccl/hemlock/src/morecoms.lisp	(revision 6755)
@@ -412,4 +412,42 @@
 	  (editor-error "Not enough lines in buffer."))
 	(move-mark point m)))))
+
+(defcommand "Goto Absolute Position" (p)
+  "Goes to the indicated character position, if you counted them
+   starting at the beginning of the buffer with the number zero.  If a
+   prefix argument is supplied, that is the line number; otherwise, the
+  user is prompted."
+  "Go to a user perceived character position."
+  (let ((p (or p (prompt-for-expression
+		  :prompt "Character Position: "
+		  :help "Enter an absolute character position to goto."))))
+    (unless (and (integerp p) (not (minusp p)))
+      (editor-error "Must supply a non-negatige integer."))
+    (let ((point (current-point-unless-selection)))
+      (when point
+        (with-mark ((m point))
+          (unless (character-offset (buffer-start m) p)
+            (buffer-end m))
+          (move-mark point m))))))
+
+(defcommand "What Cursor Position" (p)
+  "Print info on current point position"
+  "Print info on current point position"
+  (declare (ignore p))
+  (time
+  (let* ((point (current-point))
+         (current-line (mark-line point)))
+    (let* ((line-number (do* ((l 1 (1+ l))
+                              (mark-line (mark-line point) (line-previous mark-line)))
+                             ((null mark-line) l)))
+             (charpos (mark-charpos point))
+             (abspos (+ (hi::get-line-origin current-line) charpos))
+             (char (next-character point))
+             (size (count-characters (buffer-region (current-buffer)))))
+        (message "Char: ~s point = ~d of ~d(~d%) line ~d column ~d"
+                 char abspos size (round (/ (* 100 abspos) size)) line-number charpos)))))
+
+
+
 
 
