]> git.eshelyaron.com Git - emacs.git/commitdiff
New command image-transform-set-percent
authorStefan Kangas <stefan@marxist.se>
Thu, 28 Oct 2021 01:36:28 +0000 (03:36 +0200)
committerStefan Kangas <stefankangas@gmail.com>
Thu, 18 Aug 2022 17:31:28 +0000 (19:31 +0200)
* lisp/image-mode.el (image-transform-set-percent): New command.
(image-mode-map): Bind above new command to "s p".
* doc/emacs/files.texi (Image Mode): Document it.

doc/emacs/files.texi
etc/NEWS
lisp/image-mode.el

index 404978b315d6c0a0577bca05320e0d3cef177091..5b3b15cd38f3faf271b6bf898a30f6118770d6eb 100644 (file)
@@ -2273,12 +2273,14 @@ behavior by using the options @code{image-auto-resize} and
 @findex image-transform-set-scale
 @findex image-transform-reset
 To resize the image manually you can use the command
-@code{image-transform-fit-to-window} bound to @kbd{s w}
-that fits the image to both the window height and width.
-To scale the image specifying a scale factor, use the command
-@code{image-transform-set-scale} bound to @kbd{s s}.
-To reset all transformations to the initial state, use
-@code{image-transform-reset} bound to @kbd{s 0}.
+@code{image-transform-fit-to-window} bound to @kbd{s w} that fits the
+image to both the window height and width.  To scale the image to a
+percentage of its original size, use the command
+@code{image-transform-set-percent} bound to @kbd{s p}.  To scale
+the image specifying a scale factor, use the command
+@code{image-transform-set-scale} bound to @kbd{s s}.  To reset all
+transformations to the initial state, use @code{image-transform-reset}
+bound to @kbd{s 0}.
 
 @findex image-next-file
 @findex image-previous-file
index 4b3a48a820698b5360b4a124500975215c403c34..511687a174639bc3daed1c57141c12963d8ce25a 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1863,6 +1863,11 @@ this message for SVG and XPM.
 *** New commands: 'image-flip-horizontally' and 'image-flip-vertically'.
 These commands horizontally and vertically flip the image under point.
 
++++
+*** New command 'image-transform-set-percent'.
+It allows setting the image size to a percentage of its original size,
+and is bound to "s p" in Image mode.
+
 ** Images
 
 +++
index 726f2af2ad19e73ac9c7e4ffd1840de25443db03..7892f0d5b9e706f828bffdeb69cc7eb5c4a8101b 100644 (file)
@@ -494,6 +494,7 @@ image as text, when opening such images in `image-mode'."
   "s h"     #'image-transform-fit-to-height
   "s i"     #'image-transform-fit-to-width
   "s b"     #'image-transform-fit-both
+  "s p"     #'image-transform-set-percent
   "s s"     #'image-transform-set-scale
   "s r"     #'image-transform-set-rotation
   "s m"     #'image-transform-set-smoothing
@@ -1530,6 +1531,16 @@ return value is suitable for appending to an image spec."
             (list :transform-smoothing
                   (string= image--transform-smoothing "smooth")))))))
 
+(defun image-transform-set-percent (scale)
+  "Prompt for a percentage, and resize the current image to that size.
+The percentage is in relation to the original size of the image."
+  (interactive (list (read-number "Scale (% of original): " 100
+                                  'read-number-history)))
+  (unless (cl-plusp scale)
+    (error "Not a positive number: %s" scale))
+  (setq image-transform-resize (/ scale 100.0))
+  (image-toggle-display-image))
+
 (defun image-transform-set-scale (scale)
   "Prompt for a number, and resize the current image by that amount."
   (interactive "nScale: ")