branch: externals/org-transclusion
commit 83868e2cd90a8371712720b10a83c8adb6dd42ca
Author: Benjamin Cherry <b...@devcarbon.com>
Commit: Noboru Ota <m...@nobiot.com>

    Allow live sync on org-blocks -- experimental
---
 org-transclusion-src-lines.el |  4 ++--
 org-transclusion.el           | 38 ++++++++++++++++++++++++--------------
 2 files changed, 26 insertions(+), 16 deletions(-)

diff --git a/org-transclusion-src-lines.el b/org-transclusion-src-lines.el
index 3bc7cc4e76..381aad2a2b 100644
--- a/org-transclusion-src-lines.el
+++ b/org-transclusion-src-lines.el
@@ -293,8 +293,8 @@ This function uses TYPE to identify relevant files; it's 
meant
 for non-Org text files including program source files."
   (when (org-transclusion-src-lines-p type)
     ;; Let's not allow live-sync when source is transcluded into a source 
block.
-    (when (string= "src" type)
-      (user-error "No live sync for src-code block"))
+    ;; (when (string= "src" type)
+    ;;   (user-error "No live sync for src-code block"))
     (org-transclusion-live-sync-buffers-others-default nil)))
 
 (provide 'org-transclusion-src-lines)
diff --git a/org-transclusion.el b/org-transclusion.el
index bca8f3f235..008e34df8f 100644
--- a/org-transclusion.el
+++ b/org-transclusion.el
@@ -681,7 +681,10 @@ a couple of org-transclusion specific keybindings; namely:
             (user-error
              (concat
               "No live-sync can be started.  "
-              "Lengths of transclusion and source are not identical"))
+              "Lengths of transclusion and source are not identical"
+              (format " - tc: [%s] src: [%s]"
+                      (- (overlay-end tc-ov) (overlay-start tc-ov))
+                      (- (overlay-end src-ov) (overlay-start src-ov)))))
             nil) ; return nil
         (org-transclusion-live-sync-modify-overlays
          (text-clone-set-overlays src-ov tc-ov))
@@ -1652,9 +1655,16 @@ This function is for non-Org text files."
                        (overlay-start tc-pair)
                        (overlay-end tc-pair)
                        (overlay-buffer tc-pair)))
-              (tc-ov (text-clone-make-overlay
-                      (get-text-property (point) 'org-transclusion-beg-mkr)
-                      (get-text-property (point) 'org-transclusion-end-mkr))))
+              (tc-ov-beg-mkr (get-text-property (point) 
'org-transclusion-beg-mkr))
+              (tc-ov-end-mkr (get-text-property (point) 
'org-transclusion-end-mkr))
+              (tc-ov (if (org-in-src-block-p)
+                         (with-current-buffer (marker-buffer tc-ov-beg-mkr)
+                           (save-mark-and-excursion
+                             (org-babel-mark-block)
+                             (text-clone-make-overlay (region-beginning)
+                                                      (1- (region-end)))))
+                       (text-clone-make-overlay tc-ov-end-mkr
+                                                tc-ov-end-mkr))))
     (cons src-ov tc-ov)))
 
 ;;-----------------------------------------------------------------------------
@@ -1673,16 +1683,16 @@ ensure the settings revert to the user's setting prior 
to
   ;; Ensure this happens only once until deactivation
   (unless (memq 'org-transclusion-type yank-excluded-properties)
     (let ((excluded-props))
-    ;; Return t if 'wrap-prefix is already in `yank-excluded-properties'
-    ;; if not push to elm the list
-    ;; wrap-prefix, etc.
-    (dolist (sym org-transclusion-yank-excluded-properties)
-      (if (memq sym yank-excluded-properties)
-        (push sym org-transclusion-yank-remember-user-excluded-props)
-        ;; Avoid duplicate
-        (push sym excluded-props)))
-    (setq yank-excluded-properties
-          (append yank-excluded-properties excluded-props)))))
+      ;; Return t if 'wrap-prefix is already in `yank-excluded-properties'
+      ;; if not push to elm the list
+      ;; wrap-prefix, etc.
+      (dolist (sym org-transclusion-yank-excluded-properties)
+        (if (memq sym yank-excluded-properties)
+            (push sym org-transclusion-yank-remember-user-excluded-props)
+          ;; Avoid duplicate
+          (push sym excluded-props)))
+      (setq yank-excluded-properties
+            (append yank-excluded-properties excluded-props)))))
 
 (defun org-transclusion-yank-excluded-properties-remove ()
   "Remove transclusion-specific text props from `yank-excluded-properties'.

Reply via email to