org.el: Refine `org-image-actual-width' again
* org.el (org-image-actual-width): New choice: use #+ATTR* or fall back on a number. (org-display-inline-images): Implement the new choice.
This commit is contained in:
parent
928bb90861
commit
152ad3362e
41
lisp/org.el
41
lisp/org.el
|
@ -16736,19 +16736,23 @@ effort string \"2hours\" is equivalent to 120 minutes."
|
|||
When set to `t', always use the image width.
|
||||
|
||||
When set to a number, use imagemagick (when available) to set
|
||||
the image width to this value.
|
||||
the image's width to this value.
|
||||
|
||||
When set to nil, try to get the width from an #+ATTR.* keyword.
|
||||
If the image has an attribute matching a width specification
|
||||
like width=\"[0-9]+\", this value is used.
|
||||
When set to a number in a list, try to get the width from the
|
||||
#+ATTR.* keyword if it matches a width specification like
|
||||
width=\"[0-9]+\", and fall back on that number if none is found.
|
||||
|
||||
When set to nil, try to get the width from an #+ATTR.* keyword
|
||||
and fall back on the original width if none is found.
|
||||
|
||||
This requires Emacs >= 24.1, build with imagemagick support."
|
||||
:group 'org-appearance
|
||||
:version "24.3"
|
||||
:type '(choice
|
||||
(const :tag "Use the image width" t)
|
||||
(integer :tag "Resize to this # of pixels")
|
||||
(string :tag "Maybe use #+ATTR* to resize")))
|
||||
(integer :tag "Use a number of pixels")
|
||||
(list :tag "Use #+ATTR* or a number of pixels" (integer))
|
||||
(const :tag "Use #+ATTR* or don't resize" nil)))
|
||||
|
||||
(defun org-duration-string-to-minutes (s &optional output-to-string)
|
||||
"Convert a duration string S to minutes.
|
||||
|
@ -17872,24 +17876,27 @@ BEG and END default to the buffer boundaries."
|
|||
(let ((re (concat "\\[\\[\\(\\(file:\\)\\|\\([./~]\\)\\)\\([^]\n]+?"
|
||||
(substring (org-image-file-name-regexp) 0 -2)
|
||||
"\\)\\]" (if include-linked "" "\\]")))
|
||||
old file ov img type width)
|
||||
old file ov img type attrwidth width)
|
||||
(while (re-search-forward re end t)
|
||||
(setq old (get-char-property-and-overlay (match-beginning 1)
|
||||
'org-image-overlay)
|
||||
file (expand-file-name
|
||||
(concat (or (match-string 3) "") (match-string 4)))
|
||||
type (if (and (not (eq org-image-actual-width t))
|
||||
(image-type-available-p 'imagemagick))
|
||||
'imagemagick)
|
||||
width (cond ((eq org-image-actual-width t) nil)
|
||||
((null org-image-actual-width)
|
||||
(or (save-excursion
|
||||
(concat (or (match-string 3) "") (match-string 4))))
|
||||
(when (image-type-available-p 'imagemagick)
|
||||
(setq attrwidth (if (or (listp org-image-actual-width)
|
||||
(null org-image-actual-width))
|
||||
(save-excursion
|
||||
(save-match-data
|
||||
(move-beginning-of-line 0)
|
||||
(if (looking-at "#\\+ATTR.*width=\"\\([^\"]+\\)\"")
|
||||
(string-to-number (match-string 1)))))
|
||||
(setq type nil)))
|
||||
(t org-image-actual-width)))
|
||||
(string-to-number (match-string 1))))))
|
||||
width (cond ((eq org-image-actual-width t) nil)
|
||||
((null org-image-actual-width) attrwidth)
|
||||
((numberp org-image-actual-width)
|
||||
org-image-actual-width)
|
||||
((listp org-image-actual-width)
|
||||
(or attrwidth (car org-image-actual-width))))
|
||||
type (if width 'imagemagick)))
|
||||
(when (file-exists-p file)
|
||||
(if (and (car-safe old) refresh)
|
||||
(image-refresh (overlay-get (cdr old) 'display))
|
||||
|
|
Loading…
Reference in New Issue