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

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

[elpa] externals/org e816ae1 75/85: org: Display proportional image widt


From: ELPA Syncer
Subject: [elpa] externals/org e816ae1 75/85: org: Display proportional image widths
Date: Mon, 27 Sep 2021 15:57:54 -0400 (EDT)

branch: externals/org
commit e816ae1ff59a41c079be42a78883d29245876585
Author: TEC <tec@tecosaur.com>
Commit: TEC <tec@tecosaur.com>

    org: Display proportional image widths
    
    * lisp/org.el (org-display-inline-images): When the image width is given
    as a float less than 2, interpret the value as that portion of the text
    area width.  This works well with cases such as "#+attr_latex: :width
    0.6\linewidth" as this will now be interpreted as 60% of the text area
    width.  The upper bound is set to 2 not 1, as more than 100% of the text
    width can be realistic, e.g. "1.2\linewidth" in LaTeX, but more than
    200% seems unrealistic.
---
 lisp/org.el | 46 ++++++++++++++++++++++++++++++----------------
 1 file changed, 30 insertions(+), 16 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 8ae80e6..5a9f8a0 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -16617,22 +16617,36 @@ buffer boundaries with possible narrowing."
                           (cond
                            ((eq org-image-actual-width t) nil)
                            ((listp org-image-actual-width)
-                            (or
-                             ;; First try to find a width among
-                             ;; attributes associated to the paragraph
-                             ;; containing link.
-                             (pcase (org-element-lineage link '(paragraph))
-                               (`nil nil)
-                               (p
-                                (let* ((case-fold-search t)
-                                       (end (org-element-property 
:post-affiliated p))
-                                       (re "^[ \t]*#\\+attr_.*?: +.*?:width 
+\\(\\S-+\\)"))
-                                  (when (org-with-point-at
-                                            (org-element-property :begin p)
-                                          (re-search-forward re end t))
-                                    (string-to-number (match-string 1))))))
-                             ;; Otherwise, fall-back to provided number.
-                             (car org-image-actual-width)))
+                             (let ((width
+                                    (or
+                                     ;; First try to find a width among
+                                     ;; attributes associated to the paragraph
+                                     ;; containing link.
+                                     (pcase (org-element-lineage link 
'(paragraph))
+                                       (`nil nil)
+                                       (par (let* ((case-fold-search t)
+                                                   (end (org-element-property 
:post-affiliated par))
+                                                   (re "^[ \t]*#\\+attr_.*?: 
+.*?:width +\\(\\S-+\\)"))
+                                              (when (org-with-point-at
+                                                        (org-element-property 
:begin par)
+                                                      (re-search-forward re 
end t))
+                                                (string-to-number 
(match-string 1)))))))
+                                    ;; Otherwise, fall-back to provided number.
+                                    (car org-image-actual-width))))
+                             (if (and (floatp width) (<= 0 width 2.0))
+                                 ;; A float in [0,2] should be interpereted as 
this portion of
+                                 ;; the text width in the window.  This works 
well with cases like
+                                 ;; #+attr_latex: :width 
0.X\{line,page,column,etc.}width,
+                                 ;; as the "0.X" is pulled out as a float.  We 
use 2 as the upper
+                                 ;; bound as cases such as 1.2\linewidth are 
feasible.
+                                 (round (* width
+                                           (window-pixel-width)
+                                           (/ (or (and (bound-and-true-p 
visual-fill-column-mode)
+                                                       (or 
visual-fill-column-width auto-fill-function))
+                                                  (when auto-fill-function 
fill-column)
+                                                  (window-text-width))
+                                              (float (window-total-width)))))
+                               width))
                            ((numberp org-image-actual-width)
                             org-image-actual-width)
                            (t nil)))



reply via email to

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