emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/indent-bars 4caea39387 1/2: Improve depth=0 behavior, r


From: ELPA Syncer
Subject: [elpa] externals/indent-bars 4caea39387 1/2: Improve depth=0 behavior, relevant for starting-column=0
Date: Thu, 6 Mar 2025 09:59:09 -0500 (EST)

branch: externals/indent-bars
commit 4caea3938791810d9609d777e8d5d72ed4eaea4e
Author: JD Smith <93749+jdtsmith@users.noreply.github.com>
Commit: JD Smith <93749+jdtsmith@users.noreply.github.com>

    Improve depth=0 behavior, relevant for starting-column=0
    
    If starting-column=nil, no column is drawn at column 0, so there is no
    distinction between non-blank lines lacking any initial white-space
    for which a bar should or should not be highlighted.  Basically "no
    highlighted bar" and "there is no bar to highlight" were not
    discriminated.  But if starting-column=0, these are distinct states.
    
    This updates that logic to respect depth=0 as indicating "no
    highlight", which is the initial state.  Bug #100.
---
 indent-bars.el | 47 ++++++++++++++++++++++++++---------------------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/indent-bars.el b/indent-bars.el
index cca9986795..c72ad1e61d 100644
--- a/indent-bars.el
+++ b/indent-bars.el
@@ -974,12 +974,17 @@ Skips any fully blank lines."
 (defvar-local indent-bars--ppss nil)
 (defun indent-bars--current-indentation-depth (&optional on-bar)
   "Calculate current indentation depth.
+Depth is 1-based (independent of the value of
+`indent-bars-starting-column'), with a depth of 1 corresponding
+to the outermost bar, and a depth of 0 indicating there is no
+valid current depth.
+
 If ON-BAR is nil, return the depth of the last visible bar on the
-line.  If ON-BAR is non-nil and content begins at a column where
-a bar would otherwise have fallen, report the depth of
-that (undrawn) bar.  If ON-BAR is the symbol `context', and the
-first non-blank line immediately above or below the current line
-is not at a deeper indentation level (by at least one bar
+current line.  If ON-BAR is non-nil and content begins at a
+column where a bar would otherwise have fallen, report the depth
+of that (undrawn) bar.  If ON-BAR is the symbol `context', and
+the first non-blank line immediately above or below the current
+line is not at a deeper indentation level (by at least one bar
 spacing), disable on-bar and use the last-visible-bar depth for
 that line instead.
 
@@ -1290,22 +1295,23 @@ ROT are as in `indent-bars--stipple', and have similar 
default values."
   "Update highlight for the current DEPTH.
 Works by remapping the appropriate indent-bars[-tag]-N face for
 all styles in the `indent-bars--styles' list.  DEPTH should be
-greater than zero."
+greater than or equal to zero (zero meaning: no highlight)."
   (setq indent-bars--highlight-timer nil)
   (dolist (s indent-bars--styles)
-    (let* ((face (indent-bars--face s depth))
-          (hl-col (and (ibs/current-depth-palette s)
-                       (indent-bars--get-color s depth 'highlight)))
-          (hl-bg (ibs/current-bg-color s)))
-      (when (or hl-col hl-bg (ibs/current-stipple-face s))
-       (when-let ((c (alist-get (ibs/tag s) indent-bars--remaps))) ; out with 
the old
-         (face-remap-remove-relative c))
-       (setf (alist-get (ibs/tag s) indent-bars--remaps)
-             (face-remap-add-relative
-              face
-              `(,@(when hl-col `(:foreground ,hl-col))
-                ,@(when hl-bg `(:background ,hl-bg)))
-              (ibs/current-stipple-face s)))))))
+    (when-let ((c (alist-get (ibs/tag s) indent-bars--remaps))) ; out with the 
old
+      (face-remap-remove-relative c))
+    (when (> depth 0)
+      (let* ((face (indent-bars--face s depth))
+            (hl-col (and (ibs/current-depth-palette s)
+                         (indent-bars--get-color s depth 'highlight)))
+            (hl-bg (ibs/current-bg-color s)))
+       (when (or hl-col hl-bg (ibs/current-stipple-face s))
+         (setf (alist-get (ibs/tag s) indent-bars--remaps)
+               (face-remap-add-relative
+                face
+                `(,@(when hl-col `(:foreground ,hl-col))
+                  ,@(when hl-bg `(:background ,hl-bg)))
+                (ibs/current-stipple-face s))))))))
 
 (defun indent-bars--update-current-depth-highlight-in-buffer (buf depth)
   "Highlight bar at DEPTH in buffer BUF."
@@ -1320,8 +1326,7 @@ non-nil, update depth even if it has not changed."
   (unless (or indent-bars--highlight-timer (not indent-bars-mode))
     (let* ((depth (indent-bars--current-indentation-depth
                   indent-bars-highlight-selection-method)))
-      (when (and depth (or force (not (= depth indent-bars--current-depth)))
-                (> depth 0))
+      (when (and depth (or force (not (= depth indent-bars--current-depth))))
        (setq indent-bars--current-depth depth)
        (if (zerop indent-bars-depth-update-delay)
            (indent-bars--update-current-depth-highlight depth)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]