branch: master
commit 13bf08362dbf796db1d9baef7cf02304b19d6434
Author: Michael Heerdegen <michael_heerde...@web.de>
Commit: Michael Heerdegen <michael_heerde...@web.de>

    handle on-screen-treat-cut-lines -> t nicely
---
 on-screen.el |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/on-screen.el b/on-screen.el
index 9e0e54e..08048bb 100644
--- a/on-screen.el
+++ b/on-screen.el
@@ -229,6 +229,8 @@ changes to a buffer highlighting is always removed to avoid
 confusion."
   :group 'on-screen :type 'boolean)
 
+(defvar on-screen-treat-cut-lines--default-fraction .3)
+
 (defcustom on-screen-treat-cut-lines nil
   "Whether to care about vertically cut lines.
 If nil, always count lines at the window start or end that are
@@ -237,9 +239,11 @@ number between 0 and 1, meaning that lines will count as 
visible
 when the hidden part of them is less than this number.  Note that
 a non-nil value may make scrolling stuttering on slow computers."
   :group 'on-screen
-  :type '(choice (const :tag "Count vertically cut lines as visible" nil)
-                 (float :tag "Count lines with hidden part less than this as 
visible"
-                       :value .4)))
+  :type `(choice (const :tag "Count partially visible lines as visible"   nil)
+                 (const :tag "Count partially visible lines as not visible" t)
+                 (float
+                  :tag "Count lines with hidden part less than this as visible"
+                  :value ,on-screen-treat-cut-lines--default-fraction)))
 
 (defcustom on-screen-drawing-threshold 2
   "If set, highlight only when scrolled at least that many lines."
@@ -307,6 +311,11 @@ Type M-x customize-group on-screen RET for configuration."
 
 ;;;; Internal functions
 
+(defun on-screen--treat-cut-lines-get-fraction ()
+  (if (floatp on-screen-treat-cut-lines)
+      on-screen-treat-cut-lines
+    on-screen-treat-cut-lines--default-fraction))
+
 (defun on-screen-window-start (&optional window)
   "Like `window-start', but exclude partially visible lines."
   (let* ((start (window-start window))
@@ -315,7 +324,7 @@ Type M-x customize-group on-screen RET for configuration."
         start
       (cl-destructuring-bind (_x _y rtop _rbot rowh _vpos) vis
         (if (< (/ (float rtop) (+ rtop rowh))
-               (if (floatp on-screen-treat-cut-lines) 
on-screen-treat-cut-lines .4)) ; count as visible
+               (on-screen--treat-cut-lines-get-fraction)) ; count as visible
             start
           (with-current-buffer (window-buffer window)
             (save-excursion
@@ -331,7 +340,7 @@ Type M-x customize-group on-screen RET for configuration."
         end
       (cl-destructuring-bind (_x _y _rtop rbot rowh _vpos) vis
         (if (< (/ (float rbot) (+ rbot rowh))
-               (if (floatp on-screen-treat-cut-lines) 
on-screen-treat-cut-lines .4)) ; count as visible
+               (on-screen--treat-cut-lines-get-fraction)) ; count as visible
             end
           (with-current-buffer (window-buffer window)
             (save-excursion

Reply via email to