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

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

[elpa] externals/sketch-mode 47d8432 06/15: Add org-ctrl-c-ctrl-c-hook-f


From: ELPA Syncer
Subject: [elpa] externals/sketch-mode 47d8432 06/15: Add org-ctrl-c-ctrl-c-hook-function to toggle image in org file
Date: Wed, 20 Oct 2021 05:57:35 -0400 (EDT)

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

    Add org-ctrl-c-ctrl-c-hook-function to toggle image in org file
---
 sketch-mode.el | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/sketch-mode.el b/sketch-mode.el
index 2841c2a..dfe48ea 100644
--- a/sketch-mode.el
+++ b/sketch-mode.el
@@ -1618,6 +1618,34 @@ then insert the image at the end"
                             (buffer-string)))
       (insert "\n#+END_IMAGE"))))
 
+(defun sketch-org-toggle-image ()
+  (let* ((context (org-element-lineage
+                        (org-element-context)
+                        ;; Limit to supported contexts.
+                        '(babel-call clock dynamic-block footnote-definition
+                                                 footnote-reference 
inline-babel-call inline-src-block
+                                                 inlinetask item keyword 
node-property paragraph
+                                                 plain-list planning 
property-drawer radio-target
+                                                 src-block statistics-cookie 
table table-cell table-row
+                                                 timestamp)
+                        t))
+         (type (org-element-type context)))
+    (when (eq type 'paragraph)
+      (let ((parent (org-element-property :parent context)))
+        (when (eq (org-element-type parent) 'special-block)
+          (let* ((props (cadr parent))
+                 (beg (plist-get props :contents-begin))
+                 (end (plist-get props :contents-end)))
+            (if (get-char-property (point) 'display)
+                (remove-text-properties beg end '(display nil))
+              (let* ((xml (buffer-substring-no-properties beg end))
+                     (image (create-image xml 'svg t)))
+                (put-text-property beg (1- end) 'display image)
+                (goto-char beg)))))))))
+
+(add-hook 'org-ctrl-c-ctrl-c-final-hook 'sketch-org-toggle-image)
+
+
 ;;; Modify object
 
 (defun sketch-translate-object (buffer object-def props coords amount)



reply via email to

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