[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed 7e25c50 061/166: Add forward slurp/barf sexp comm
From: |
Clemens Radermacher |
Subject: |
[elpa] externals/objed 7e25c50 061/166: Add forward slurp/barf sexp commands |
Date: |
Sun, 29 Dec 2019 08:21:01 -0500 (EST) |
branch: externals/objed
commit 7e25c5029695a03539525fc7daff4a6cca5e24f0
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>
Add forward slurp/barf sexp commands
---
objed-objects.el | 15 +++++++++++++++
objed.el | 34 +++++++++++++++++++++++++++++++++-
2 files changed, 48 insertions(+), 1 deletion(-)
diff --git a/objed-objects.el b/objed-objects.el
index dfd5090..51e89c3 100644
--- a/objed-objects.el
+++ b/objed-objects.el
@@ -1007,6 +1007,21 @@ current object position data."
(setq objed--current-obj range))))
+(defun objed--markify-current-object ()
+ "Convert current object into marker object."
+ (unless (markerp (objed--beg))
+ (objed--update-current-object
+ (objed-make-object
+ :ibeg (set-marker (make-marker)
+ (objed--ibeg))
+ :beg (set-marker (make-marker)
+ (objed--obeg))
+ :iend (set-marker (make-marker)
+ (objed--iend))
+ :end (set-marker (make-marker)
+ (objed--oend))))))
+
+
(defun objed--switch-to (o &optional state odata)
"Switch to object O.
diff --git a/objed.el b/objed.el
index 0d918dd..a620617 100644
--- a/objed.el
+++ b/objed.el
@@ -731,7 +731,6 @@ selected one."
(define-key map (kbd "<end>") 'objed-bottom-object)
(define-key map "<" 'objed-top-object)
(define-key map ">" 'objed-bottom-object)
-
;; block expansions
(define-key map "h" 'objed-expand-block)
(define-key map "a" 'objed-beg-of-block)
@@ -822,7 +821,11 @@ selected one."
(objed-define-op nil objed-duplicate-down))
(define-key map (kbd "<C-M-return>")
'objed-insert-new-object)
+ ;; sp functionality
(define-key map "^" 'objed-raise)
+ (define-key map (kbd "<C-left>") 'objed-forward-barf-sexp)
+ (define-key map (kbd "<C-right>") 'objed-forward-slurp-sexp)
+
(define-key map "!" 'objed-execute)
map)
@@ -3492,6 +3495,35 @@ If nil ‘eval-region’ is used instead.")
:end (save-excursion (insert istring)
(point))))))
+(defun objed-forward-slurp-sexp ()
+ "Slurp following sexp into current object."
+ (interactive)
+ (objed--markify-current-object)
+ (let ((iend (objed--iend))
+ (oend (objed--oend)))
+ (goto-char oend)
+ (let ((sexp (delete-and-extract-region
+ (point)
+ (scan-sexps (point) 1))))
+ (goto-char iend)
+ (insert sexp)
+ (set-marker iend (point))
+ (goto-char oend))))
+
+(defun objed-forward-barf-sexp ()
+ "Barf last sexp out of current object."
+ (interactive)
+ (objed--markify-current-object)
+ (let ((iend (objed--iend))
+ (oend (objed--oend)))
+ (goto-char iend)
+ (let ((sexp (delete-and-extract-region
+ (point)
+ (scan-sexps (point) -1))))
+ (goto-char oend)
+ (save-excursion
+ (insert sexp)))))
+
(defun objed-execute ()
"Execute object contents as shell commands."
- [elpa] externals/objed 6f06795 034/166: Add commands which move to prev/next object, ignoring context, (continued)
- [elpa] externals/objed 6f06795 034/166: Add commands which move to prev/next object, ignoring context, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 73b99ed 036/166: Improve objed-ace, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 7930c68 038/166: Make word movement aware of object state, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed bea49a2 051/166: Fix word object at eob, too., Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 58669ec 049/166: Fix backward/forward until context, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 6eb0fd5 052/166: Adjust objed-append-mode, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 1846dd8 053/166: Deactivate append mode on yank, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed b978583 055/166: add (require 'hl-line), Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 6c34f45 059/166: Change binding for objed-occur, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 6096696 063/166: Add alternate bindings for barf/slurp, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 7e25c50 061/166: Add forward slurp/barf sexp commands,
Clemens Radermacher <=
- [elpa] externals/objed 4d0503c 067/166: Allow using rx for regex objects, too, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed e6bed2e 065/166: Further improve regex object, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed c666cea 076/166: Fix some sexp issues, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 0d506fa 074/166: Allow specifying a fallback object for init, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 9fbd47f 084/166: Fix org field object, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 8861388 082/166: Auto switch from sexp object only for interactive state toggle, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 1cad7c2 086/166: Start with line object if not current for block expansion, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 13e7829 093/166: Fix word object navigation with objed-next/prev for inner subwords, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 213f672 094/166: Use prefixed word of symbol for inner ident object, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed c02f3c1 071/166: Add description for uppercase kill/delete, Clemens Radermacher, 2019/12/29