[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed 77d1691 157/216: Update extend behavior
From: |
Stefan Monnier |
Subject: |
[elpa] externals/objed 77d1691 157/216: Update extend behavior |
Date: |
Tue, 8 Jan 2019 12:29:31 -0500 (EST) |
branch: externals/objed
commit 77d1691d99a7cd9c4169999fb95c7b2f4a8b8896
Author: Clemera <address@hidden>
Commit: Clemera <address@hidden>
Update extend behavior
---
objed-objects.el | 23 +++---------------
objed.el | 74 ++++++++++++++++++++++++++++++++------------------------
2 files changed, 47 insertions(+), 50 deletions(-)
diff --git a/objed-objects.el b/objed-objects.el
index 21477fe..e9ddd84 100644
--- a/objed-objects.el
+++ b/objed-objects.el
@@ -397,9 +397,6 @@ OBJ is the object to use and defaults to
`objed--current-obj'."
(let ((obj (or obj objed--current-obj)))
(objed--apply #'max obj)))
-(defvar objed--extend-ov nil
- "Overlay of extended object.")
-
(defun objed--current (&optional obj)
"Get the current range of interest.
@@ -407,22 +404,10 @@ If the region is active the range is defined by the
region bounds
otherwise the its the head of object OBJ which defaults to
`objed--current-obj'."
(let ((obj (or obj objed--current-obj)))
- (cond (objed--extend-ov
- (cond ((<= (point)
- (overlay-start objed--extend-ov))
- (list (objed--beg)
- (overlay-end objed--extend-ov)))
- ((>= (point)
- (overlay-end objed--extend-ov))
- (list (overlay-start objed--extend-ov)
- (if (eq objed--object 'char)
- (point)
- (objed--end))))
- (t
- (list (overlay-start objed--extend-ov)
- (overlay-end objed--extend-ov)))))
- ((region-active-p)
- (list (region-beginning) (region-end)))
+ (cond ((region-active-p)
+ (list (region-beginning)
+ (max (objed--end)
+ (region-end))))
(t
(car obj)))))
diff --git a/objed.el b/objed.el
index af33224..d0ea535 100644
--- a/objed.el
+++ b/objed.el
@@ -140,18 +140,18 @@
;; * Faces
-(defface objed-mark
- '((t (:inherit region)))
- "Face used for marked objects."
- :group 'objed-faces)
-
(defface objed-hl
'((t (:inherit highlight)))
"Face used for highlighting textual content of current object."
:group 'objed-faces)
+(defface objed-mark
+ '((t (:inherit region)))
+ "Face used for marked objects."
+ :group 'objed-faces)
+
(defface objed-extend
- '((t (:inherit objed-hl)))
+ '((t (:inherit objed-mark)))
"Face used for extending objects."
:group 'objed-faces)
@@ -519,9 +519,11 @@ update to given object."
(when (not objed--buffer)
(objed--init name))
(cond ((and (eq name current)
- objed--marked-ovs)
+ objed--marked-ovs
+ (not (region-active-p)))
(objed--mark-all-inside 'buffer))
- ((eq name current)
+ ((and (eq name current)
+ (not (region-active-p)))
(or (objed--mark-all-inside 'defun)
(objed--mark-all-inside 'buffer)))
(t (objed--switch-to name)
@@ -575,6 +577,7 @@ cons of guessed object and its state."
;; TODO: support repeated invokation
(define-key map (kbd "C-u") 'universal-argument)
(define-key map (kbd "C-SPC") 'set-mark-command)
+ (define-key map (kbd "C-x C-x") 'objed-exchange-point-and-mark)
;; TODO: birdview mode/scroll mode
(define-key map (kbd "C-v") 'scroll-up-command)
(define-key map "\ev" 'scroll-down-command)
@@ -1556,6 +1559,7 @@ postitive prefix argument ARG move to the nth previous
object."
(interactive "p")
(if (objed--basic-p)
(objed-context-object)
+ (setq deactivate-mark nil)
;; toggle side if coming from next?
(objed--goto-previous (or arg 1))))
@@ -1568,6 +1572,12 @@ postitive prefix argument ARG move to the nth next
object."
(if (objed--basic-p)
(progn (objed-context-object)
(goto-char (objed--end)))
+ (when (and (region-active-p)
+ (<= (objed--beg) (region-beginning))
+ (>= (objed--end) (region-end))
+ (< (point) (objed--end)))
+ (exchange-point-and-mark))
+ (setq deactivate-mark nil)
(objed--goto-next (or arg 1))))
(defun objed-top-object ()
@@ -1667,6 +1677,11 @@ Default to sexp at point."
(goto-char (objed--beg))
(objed--skip-ws)))))
+(defun objed-exchange-point-and-mark ()
+ (interactive)
+ (exchange-point-and-mark)
+ (objed--update-current-object))
+
(defun objed-toggle-state ()
"Toggle state of object."
(interactive)
@@ -1678,25 +1693,21 @@ Default to sexp at point."
(t
(objed--end))))))
-(defvar objed--extend-cookie nil
- "Cookie for extend region.")
+
+(defvar objed--extend-cookie nil)
(defun objed-extend ()
"Extend current object."
(interactive)
- (when objed--extend-ov
- (delete-overlay objed--extend-ov)
- (face-remap-remove-relative objed--extend-cookie))
- ;; the region should look like extend object.
- (setq objed--extend-cookie
- (face-remap-add-relative 'region 'objed-extend))
- (setq objed--extend-ov
- (objed--make-mark-overlay
- (objed--beg) (if (eq objed--object 'char)
- (objed--beg)
- (objed--end))
- 'objed-extend t))
- (push-mark (point) t t))
+ (unless objed--extend-cookie
+ (setq objed--extend-cookie
+ (face-remap-add-relative 'objed-hl
+ 'objed-extend)))
+ (push-mark (if (or (>= (point) (objed--end))
+ (eq objed--object 'char))
+ (objed--beg)
+ (objed--end))
+ t t))
(defun objed-contents-object ()
"Switch to reference of an object.
@@ -2569,10 +2580,10 @@ on."
(objed--switch-to 'char)
(goto-char (objed--beg)))))
;; cleanup
- (when objed--extend-ov
- (delete-overlay objed--extend-ov)
- (setq objed--extend-ov nil)
- (face-remap-remove-relative objed--extend-cookie))
+ (when objed--extend-cookie
+ (face-remap-remove-relative objed--extend-cookie)
+ (setq objed--extend-cookie nil))
+
(when (and range
(not (eq exitf 'current)))
(set-marker (car range) nil)
@@ -2598,10 +2609,11 @@ on."
(delete-overlay ov))
(setq objed--marked-ovs nil))
- (when objed--extend-ov
- (delete-overlay objed--extend-ov)
- (setq objed--extend-ov nil)
- (face-remap-remove-relative objed--extend-cookie))
+ (when objed--extend-cookie
+ (face-remap-remove-relative
+ objed--extend-cookie)
+ (setq objed--extend-cookie nil))
+
(while objed--saved-vars
(let ((setting (pop objed--saved-vars)))
- [elpa] externals/objed 639dc87 163/216: Add interactive pipe op, (continued)
- [elpa] externals/objed 639dc87 163/216: Add interactive pipe op, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 179ac60 185/216: Update docs for exit-op, Stefan Monnier, 2019/01/08
- [elpa] externals/objed de09955 153/216: Markup fixes again, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 4489ea3 187/216: Fixup forward word extend when already at word end pos, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 9a0ea65 192/216: Fix override of default for comint-prompt-regexp, Stefan Monnier, 2019/01/08
- [elpa] externals/objed a7b9df6 183/216: Add C-RET, M-RET for eval-in-repl and inserting new object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 5ca0678 195/216: Indent for tab command should not activate objed, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 93db5bc 215/216: Fix last commit, Stefan Monnier, 2019/01/08
- [elpa] externals/objed cd7be8b 211/216: Improve objed-extend, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 10de1ad 189/216: Comment about commandline test, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 77d1691 157/216: Update extend behavior,
Stefan Monnier <=
- [elpa] externals/objed a277292 191/216: Add option to wrap the region with any string(using universal arg), Stefan Monnier, 2019/01/08
- [elpa] externals/objed 043ec68 198/216: Adjust some bindings (q should quit window for convenience), Stefan Monnier, 2019/01/08
- [elpa] externals/objed 90af56a 203/216: Adjust objed-activate, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 1bbd30f 210/216: Dont activate in minibuffer, Stefan Monnier, 2019/01/08
- [elpa] externals/objed b006b28 213/216: Change toggle state binding, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 8ac3ec3 169/216: Mention numeric args, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 0800b1f 201/216: Improve objed-quit-window, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 8e86602 212/216: Change del-insert binding, leave binding DEL free, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 4aa3530 196/216: Don't init when mode has own modal setup, Stefan Monnier, 2019/01/08
- [elpa] externals/objed c87e826 150/216: Add News file to document changes., Stefan Monnier, 2019/01/08