branch: externals/objed
commit 85019a8c9cf7f037e65d8d4c57ea4ce8cef44e45
Author: Clemens Radermacher <[email protected]>
Commit: Clemens Radermacher <[email protected]>
Add raise command
---
README.asc | 3 +++
objed.el | 21 ++++++++++++++++++---
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/README.asc b/README.asc
index 2b335e7..36a54f2 100644
--- a/README.asc
+++ b/README.asc
@@ -321,6 +321,9 @@ once you can mark them first (see the "Misc commands"
below):
|kbd:[%]
|Query replace narrowed to current object.
+|kbd:[^]
+|Replace object with inner part (raise).
+
|kbd:[!]
|Replace object(s) with minibuffer input.
diff --git a/objed.el b/objed.el
index 9358cd0..557dd25 100644
--- a/objed.el
+++ b/objed.el
@@ -789,8 +789,7 @@ to the selected one."
nil objed-run-or-eval ignore))
(define-key map (kbd "<M-return>")
'objed-insert-new-object)
- ;; TODO:
- ;; (define-key map "^" 'objed-raise-inner)
+ (define-key map "^" 'objed-raise)
map)
"Keymap for commands when `objed' is active.")
@@ -3160,7 +3159,23 @@ If nil ‘eval-region’ is used instead.")
(eval-region beg end t))
((and (require lib nil t)
(commandp cmd))
- (call-interactively cmd))))))
+ (call-interactively cmd))))))
+
+
+(defun objed-raise ()
+ "Replace object with inner part."
+ (interactive)
+ (let* ((ibeg (objed--ibeg))
+ (iend (objed--iend))
+ (istring (buffer-substring ibeg iend))
+ (obeg (objed--obeg))
+ (oend (objed--oend)))
+ (objed--reset)
+ (delete-region obeg oend)
+ (save-excursion
+ (insert istring))))
+
+
;; * Exit active state