Change modeline to use display limits when computing the "percentage"
authorChris Hanson <org/chris-hanson/cph>
Fri, 17 May 1991 19:07:05 +0000 (19:07 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 17 May 1991 19:07:05 +0000 (19:07 +0000)
field.  Previously it used text limits, which caused errors when the
text limits were wider than the display limits.

v7/src/edwin/modlin.scm

index f43a39d31e3c197438384abe35979425f9b9ed26..592634de32fd0ec5c98ce2d2b6efd96dcb335e5b 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/modlin.scm,v 1.9 1991/05/10 22:21:18 cph Exp $
+;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/modlin.scm,v 1.10 1991/05/17 19:07:05 cph Exp $
 ;;;
 ;;;    Copyright (c) 1989-91 Massachusetts Institute of Technology
 ;;;
@@ -273,27 +273,29 @@ If #F, the normal method is used."
             (symbol->string (process-status process))
             "no process")))
       ((#\p)
-       (if (let ((end (buffer-end buffer)))
-            (or (window-mark-visible? window end)
-                (and (line-start? end)
-                     (not (group-start? end))
-                     (window-mark-visible? window (mark-1+ end)))))
-          (if (window-mark-visible? window (buffer-start buffer))
-              "All"
-              "Bottom")
-          (if (window-mark-visible? window (buffer-start buffer))
-              "Top"
-              (string-append
-               (string-pad-left
-                (number->string
-                 (min
-                  (let ((start (mark-index (buffer-start buffer))))
-                    (integer-round
-                     (* 100 (- (mark-index (window-start-mark window)) start))
-                     (- (mark-index (buffer-end buffer)) start)))
-                  99))
-                2)
-               "%"))))
+       (let ((group (buffer-group buffer)))
+        (let ((start (group-display-start group)))
+          (if (let ((end (group-display-end group)))
+                (or (window-mark-visible? window end)
+                    (and (mark< start end)
+                         (line-start? end)
+                         (window-mark-visible? window (mark-1+ end)))))
+              (if (window-mark-visible? window start)
+                  "All"
+                  "Bottom")
+              (if (window-mark-visible? window start)
+                  "Top"
+                  (string-append
+                   (string-pad-left
+                    (number->string
+                     (min
+                      (let ((start (group-display-start-index group)))
+                        (integer-round
+                         (* 100 (- (mark-index (window-start-mark window)) start))
+                         (- (group-display-end-index group) start)))
+                      99))
+                    2)
+                   "%"))))))
       ((#\[ #\])
        (cond ((<= recursive-edit-level 10)
              (make-string recursive-edit-level char))