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

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

[elpa] externals/sketch-mode 172961f: Implement easy insert image to buf


From: ELPA Syncer
Subject: [elpa] externals/sketch-mode 172961f: Implement easy insert image to buffer
Date: Mon, 20 Sep 2021 06:57:20 -0400 (EDT)

branch: externals/sketch-mode
commit 172961f9752a0dd570b018e745d111d3d3424af0
Author: Daniel Nicolai <dalanicolai@gmail.com>
Commit: Daniel Nicolai <dalanicolai@gmail.com>

    Implement easy insert image to buffer
---
 sketch-mode.el | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/sketch-mode.el b/sketch-mode.el
index dd31446..2c7a2eb 100644
--- a/sketch-mode.el
+++ b/sketch-mode.el
@@ -480,7 +480,9 @@ else return nil"
    [("D" "Show definition" sketch-show-definition)
     ("K" "Copy definition" sketch-copy-definition)
     ("S" "Save image" sketch-save)]
-   [("q" "Quit transient"           transient-quit-one)]])
+   [("b" "Insert image to buffer" sketch-insert-image-to-buffer
+     :transient transient--do-exit)
+    ("q" "Quit transient" transient-quit-one)]])
 
 (transient-define-infix sketch-object ()
   :description "Option with list"
@@ -1034,7 +1036,33 @@ PROPS is passed on to `create-image' as its PROPS list."
 
 (transient-define-suffix sketch-save ()
   (interactive)
-  (image-save))
+  (let ((image (get-char-property (point) 'display))
+        (file (read-file-name "Save as: ")))
+    (with-temp-file file
+      (insert (plist-get (cdr image) :data)))))
+
+(transient-define-suffix sketch-insert-image-to-buffer (&optional 
insert-at-end-of-file)
+  "Insert image to buffer at point.
+When prefixed with a universal argument \\[universal-argument]
+then insert at end of file.
+
+Prompts for buffer for insert, then for the image file name for
+save. If the image is saved in a sub-directory of the buffer file
+then insert a relative link, otherwise insert an absolute link."
+  (interactive "P")
+  (let* ((buffer (get-buffer (read-buffer "Add to buffer: ")))
+         (buffer-dir (file-name-directory (buffer-file-name buffer)))
+         (image (get-char-property (point) 'display))
+         (file (read-file-name "Save as: " buffer-dir)))
+    (kill-buffer "*sketch*")
+    (with-temp-file file
+      (insert (plist-get (cdr image) :data)))
+    (switch-to-buffer buffer)
+    (when insert-at-end-of-file
+      (goto-char (point-max)))
+    (insert (format "[[%s]]" (if (string-match buffer-dir file)
+                                 (concat "./" (file-name-nondirectory file))
+                               file)))))
 
 
 ;;; Modify object



reply via email to

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