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

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

[elpa] externals/org-modern dd7d45878f 41/65: Do not add fringes to bloc


From: ELPA Syncer
Subject: [elpa] externals/org-modern dd7d45878f 41/65: Do not add fringes to blocks when org-indent-mode is enabled (See #7)
Date: Mon, 7 Mar 2022 12:57:47 -0500 (EST)

branch: externals/org-modern
commit dd7d45878f04c8aa9872ba6f6b4fb638dcba3032
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Do not add fringes to blocks when org-indent-mode is enabled (See #7)
---
 org-modern.el | 59 +++++++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 39 insertions(+), 20 deletions(-)

diff --git a/org-modern.el b/org-modern.el
index b9678d2c1f..df42114ac7 100644
--- a/org-modern.el
+++ b/org-modern.el
@@ -389,23 +389,48 @@ Set to nil to disable the indicator."
                      (put-text-property i (1+ i) 'display
                                         (if (= 0 (mod i 2)) sp1 sp2)))))))))
 
-(defun org-modern--block ()
-  "Prettify blocks."
-  (save-excursion
-    (goto-char (match-beginning 0))
-    (forward-line)
-    (while (not (or (eobp)
-                    (save-excursion
-                      (let ((case-fold-search t))
-                        (re-search-forward
-                         "^[ \t]*#\\+end_" (line-end-position) 'noerror)))))
+
+(define-fringe-bitmap 'org-modern--block-inner (make-vector 1 #x80) nil nil 
'(top t))
+(define-fringe-bitmap 'org-modern--block-begin (vconcat (make-vector 20 0) 
[#xFF] (make-vector 107 #x80)) nil nil 'top)
+(define-fringe-bitmap 'org-modern--block-end (vconcat (make-vector 107 #x80) 
[#xFF] (make-vector 20 0)) nil nil 'bottom)
+(defun org-modern--block-fringe ()
+  "Prettify blocks with fringe bitmaps."
+  ;; Do not add source block fringe markers if org-indent-mode is
+  ;; enabled. org-indent-mode uses line prefixes for indentation.
+  ;; Therefore we cannot have both.
+  (unless (bound-and-true-p org-indent-mode)
+    (save-excursion
+      (goto-char (match-beginning 0))
       (add-text-properties
        (point) (min (1+ (line-end-position)) (point-max))
        '(wrap-prefix
-         #(" " 0 1 (display (left-fringe org-modern--line 
org-block-begin-line)))
+         #(" " 0 1 (display (left-fringe org-modern--block-begin 
org-block-begin-line)))
          line-prefix
-         #(" " 0 1 (display (left-fringe org-modern--line 
org-block-begin-line)))))
-      (forward-line))))
+         #(" " 0 1 (display (left-fringe org-modern--block-begin 
org-block-begin-line)))))
+      (forward-line)
+      (while
+          (cond
+           ((eobp) nil)
+           ((save-excursion
+              (let ((case-fold-search t))
+                (re-search-forward
+                 "^[ \t]*#\\+end_" (line-end-position) 'noerror)))
+            (add-text-properties
+             (point) (min (1+ (line-end-position)) (point-max))
+             '(wrap-prefix
+               #(" " 0 1 (display (left-fringe org-modern--block-end 
org-block-begin-line)))
+               line-prefix
+               #(" " 0 1 (display (left-fringe org-modern--block-end 
org-block-begin-line)))))
+            nil)
+           (t
+            (add-text-properties
+             (point) (min (1+ (line-end-position)) (point-max))
+             '(wrap-prefix
+               #(" " 0 1 (display (left-fringe org-modern--block-inner 
org-block-begin-line)))
+               line-prefix
+               #(" " 0 1 (display (left-fringe org-modern--block-inner 
org-block-begin-line)))))
+            (forward-line)
+            t))))))
 
 ;;;###autoload
 (define-minor-mode org-modern-mode
@@ -445,13 +470,11 @@ Set to nil to disable the indicator."
       (when org-modern-table
         '(("^[ \t]*\\(|.*|\\)[ \t]*$" (0 (org-modern--table)))))
       (when org-modern-block
-        '(("^[ \t]*#\\+\\(?:begin\\|BEGIN\\)_\\S-" (0 (org-modern--block)))
+        '(("^[ \t]*#\\+\\(?:begin\\|BEGIN\\)_\\S-" (0 
(org-modern--block-fringe)))
           ("^\\([ \t]*#\\+\\(?:begin\\|BEGIN\\)_\\)\\(\\S-+\\).*"
-           (0 '(face nil line-prefix #("│" 0 1 (display (left-fringe 
org-modern--top org-block-begin-line)))))
            (1 '(face nil display (space :width (3))))
            (2 'org-modern-block-keyword append))
           ("^\\([ \t]*#\\+\\(?:end\\|END\\)_\\)\\(\\S-+\\).*"
-           (0 '(face nil line-prefix #("│" 0 1 (display (left-fringe 
org-modern--bottom org-block-end-line)))))
            (1 '(face nil display (space :width (3))))
            (2 'org-modern-block-keyword append))))
       (when org-modern-tag
@@ -480,9 +503,5 @@ Set to nil to disable the indicator."
            '(display face invisible)
          '(wrap-prefix line-prefix display face invisible))))))
 
-(define-fringe-bitmap 'org-modern--line (make-vector 1 #x80) nil nil '(top t))
-(define-fringe-bitmap 'org-modern--top (vconcat (make-vector 20 0) [#xFF] 
(make-vector 107 #x80)) nil nil 'top)
-(define-fringe-bitmap 'org-modern--bottom (vconcat (make-vector 107 #x80) 
[#xFF] (make-vector 20 0)) nil nil 'bottom)
-
 (provide 'org-modern)
 ;;; org-modern.el ends here



reply via email to

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