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

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

[nongnu] elpa/edit-indirect e01e7eeb79 04/28: Extract a nested let into


From: ELPA Syncer
Subject: [nongnu] elpa/edit-indirect e01e7eeb79 04/28: Extract a nested let into a function.
Date: Thu, 7 Jul 2022 11:59:13 -0400 (EDT)

branch: elpa/edit-indirect
commit e01e7eeb79d742c39f9b5b041c8b3221c3ee9085
Author: Fanael Linithien <fanael4@gmail.com>
Commit: Fanael Linithien <fanael4@gmail.com>

    Extract a nested let into a function.
---
 edit-indirect.el | 47 ++++++++++++++++++++++++++---------------------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/edit-indirect.el b/edit-indirect.el
index ef463e83b1..b9eebe10ed 100644
--- a/edit-indirect.el
+++ b/edit-indirect.el
@@ -127,17 +127,7 @@ In any case, return the edit-indirect buffer."
        (prog1 (list (region-beginning) (region-end) t)
          (deactivate-mark))
      (user-error "No region")))
-  (let ((buffer
-         (let ((old-overlay (edit-indirect--search-for-edit-indirect beg end)))
-           (cond
-            ((null old-overlay)
-             (let ((overlay (edit-indirect--create-overlay beg end)))
-               (edit-indirect--create-indirect-buffer beg end overlay)))
-            ((and (= beg (overlay-start old-overlay))
-                  (= end (overlay-end old-overlay)))
-             (overlay-get old-overlay 'edit-indirect-buffer))
-            (t
-             (user-error "Indirectly edited regions cannot overlap"))))))
+  (let ((buffer (edit-indirect--get-edit-indirect-buffer beg end)))
     (when display-buffer
       (select-window (display-buffer buffer)))
     buffer))
@@ -207,6 +197,31 @@ OVERLAY is the value to set `edit-indirect--overlay' to."
   (add-minor-mode
    'edit-indirect--overlay " indirect" edit-indirect-mode-map nil #'ignore))
 
+(defun edit-indirect--get-edit-indirect-buffer (beg end)
+  "Return an edit-indirect buffer for the region BEG..END.
+If there's already an edit-indirect buffer active overlapping any
+portion of BEG..END, an `user-error' is signaled."
+  (let ((old-overlay (edit-indirect--search-for-edit-indirect beg end)))
+    (cond
+     ((null old-overlay)
+      (let ((overlay (edit-indirect--create-overlay beg end)))
+        (edit-indirect--create-indirect-buffer beg end overlay)))
+     ((and (= beg (overlay-start old-overlay))
+           (= end (overlay-end old-overlay)))
+      (overlay-get old-overlay 'edit-indirect-buffer))
+     (t
+      (user-error "Indirectly edited regions cannot overlap")))))
+
+(defun edit-indirect--search-for-edit-indirect (beg end)
+  "Return an existing edit-indirect overlay for some region inside BEG..END.
+If there's no indirectly edited region inside BEG..END, return
+nil."
+  (catch 'done
+    (dolist (overlay (overlays-in beg end))
+      (when (overlay-get overlay 'edit-indirect-buffer)
+        (throw 'done overlay)))
+    nil))
+
 (defun edit-indirect--create-indirect-buffer (beg end overlay)
   "Create an edit-indirect buffer and return it.
 
@@ -272,16 +287,6 @@ the parent buffer."
   (setq edit-indirect--overlay nil)
   (kill-buffer-and-window))
 
-(defun edit-indirect--search-for-edit-indirect (beg end)
-  "Return an existing edit-indirect overlay for some region inside BEG..END.
-If there's no indirectly edited region inside BEG..END, return
-nil."
-  (catch 'done
-    (dolist (overlay (overlays-in beg end))
-      (when (overlay-get overlay 'edit-indirect-buffer)
-        (throw 'done overlay)))
-    nil))
-
 (defun edit-indirect--abort-on-kill-buffer ()
   "Abort indirect edit.
 Should be called only from `kill-buffer-hook'."



reply via email to

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