[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'."
- [nongnu] branch elpa/edit-indirect created (now f80f63822f), ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect 1d0cabfbe7 02/28: Clarify how this package differs from clone-indirect-buffer., ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect 56e3231915 01/28: Initial import., ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect ac56a2ff8d 03/28: Add C-c C-c binding for edit-indirect-commit., ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect e01e7eeb79 04/28: Extract a nested let into a function.,
ELPA Syncer <=
- [nongnu] elpa/edit-indirect 273910a944 11/28: Ensure commit hooks are always called with the correct region., ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect 215d3a714a 16/28: Release version 0.1.3, ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect de645d8144 21/28: Add edit-indirect-save function and keybinding, ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect 2fc8f382ee 19/28: Add before-commit-hook, ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect bdc8f542fe 23/28: Don't run buffer-local after-creation-hook twice, ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect f80f63822f 28/28: Make edit-indirect--should-quit-window persistent, ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect 03b6ac9ed1 25/28: Use a remap binding for save-buffer instead of hardcoded C-x C-s, ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect 7fffd87ac3 24/28: Don't modify buffer if nothing changed, ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect 16bcdbdae6 27/28: Add an overlay keymap for easy switching to active edit-indirect buffers, ELPA Syncer, 2022/07/07
- [nongnu] elpa/edit-indirect b461e559e1 05/28: Don't retrieve the buffer-local hook values before actual uses., ELPA Syncer, 2022/07/07