[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed e5f8bac 102/216: Improve undo in region
From: |
Stefan Monnier |
Subject: |
[elpa] externals/objed e5f8bac 102/216: Improve undo in region |
Date: |
Tue, 8 Jan 2019 12:29:20 -0500 (EST) |
branch: externals/objed
commit e5f8bacb12030fb8901adff67b21ddcb356b676d
Author: Clemera <address@hidden>
Commit: Clemera <address@hidden>
Improve undo in region
---
objed.el | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/objed.el b/objed.el
index c2fb8ca..9fbb08b 100644
--- a/objed.el
+++ b/objed.el
@@ -524,7 +524,7 @@ operation."
(push `(define-key objed-map (kbd ,key) ',name) res))
(when exit
(push `(setq objed--exit-alist
- (cons (cons ',name #',exit) objed--exit-alist))
+ (cons (cons ',name ',exit) objed--exit-alist))
res))
(push `(defun ,name (arg)
"Objed operation."
@@ -749,7 +749,7 @@ the guessed object."
(objed-define-op nil objed-electric-pair))
;; all the usual quoting signs
(define-key map "~"
- (objed-define-op nil objed-undo-op ignore))
+ (objed-define-op nil objed-undo-op current))
;; special commands
@@ -2582,9 +2582,11 @@ positions of the text object range.
RANGE is a list of the beginning and and position of
the text object to act on."
- (let ((text (apply #'buffer-substring range)))
+ (let ((text (apply #'buffer-substring range))
+ (range (list (set-marker (make-marker) (car range))
+ (set-marker (make-marker) (cadr range)))))
(apply action range)
- (objed-exit-op name text)))
+ (objed-exit-op name text range)))
(defun objed--ov-apply (name action ovs)
"Apply and operation to marked objects.
@@ -2679,24 +2681,35 @@ multiple ones."
(insert text)
(not (= -1 (forward-line -1)))))
-(defun objed-exit-op (op &optional text)
+(defun objed-exit-op (op &optional text range)
"Handle exit of an operation.
OP is the operation (ignored for now). If TEXT is given it
carries the textual content of the object the operation acted
on."
;; TODO: improve exit behaviour for default operations
- (let ((exitf (assq op objed--exit-alist)))
+ (let ((exitf (cdr (assq op objed--exit-alist))))
;; (objed--update-current-object)
(cond (exitf
- (funcall (cdr exitf) text))
+ (if (functionp exitf)
+ (funcall exitf text)
+ (if (eq 'current exitf)
+ (objed--update-current-object
+ (objed-make-object :beg (car range)
+ :end (cadr range)))
+ (objed--switch-to exitf))))
((or (eq op 'ignore)
(bound-and-true-p multiple-cursors-mode)))
(t
(if (and text (objed--line-p text))
(objed--switch-to 'line)
(objed--switch-to 'char)
- (goto-char (objed--beg)))))))
+ (goto-char (objed--beg)))))
+ (when (and range
+ (not (eq exitf 'current)))
+ (set-marker (car range) nil)
+ (set-marker (cadr range) nil))))
+
(defun objed-quit ()
"Quit and deactivate `objed-map'."
- [elpa] externals/objed aa8ba7b 093/216: Change DEL to behave as normal for char object, (continued)
- [elpa] externals/objed aa8ba7b 093/216: Change DEL to behave as normal for char object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 21ca995 069/216: Cleanup malformed object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed d21fd72 073/216: Fix makup again, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 7c41d13 076/216: Fixup which-key paging commands, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 204ea88 095/216: Change surroundings binding, Stefan Monnier, 2019/01/08
- [elpa] externals/objed b54fa1a 077/216: Add more tests, Stefan Monnier, 2019/01/08
- [elpa] externals/objed deb059e 100/216: Update bindings, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 53cafee 085/216: Add new commands to move to first/last instance, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 919a72d 071/216: Adjust python block object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed b7ded6d 083/216: Improve tests, add more tests, Stefan Monnier, 2019/01/08
- [elpa] externals/objed e5f8bac 102/216: Improve undo in region,
Stefan Monnier <=
- [elpa] externals/objed e5dfba1 096/216: Add extend commands, Stefan Monnier, 2019/01/08
- [elpa] externals/objed d770ddd 055/216: Don't exit after eval op, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 6907e69 058/216: Improve face object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed cac61c3 084/216: Improve block objects, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 58af659 068/216: Start adding tests, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 655a636 090/216: Fix bug, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 838094f 097/216: Working on #14, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 9f4e3cf 062/216: More face object adjustments, Stefan Monnier, 2019/01/08
- [elpa] externals/objed d15d904 089/216: Fix up forward/backward until any object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 12e3fdd 078/216: Use last command event so it can be rebound for tests, Stefan Monnier, 2019/01/08