[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed 64dc38b 035/216: More on indent/move commands
From: |
Stefan Monnier |
Subject: |
[elpa] externals/objed 64dc38b 035/216: More on indent/move commands |
Date: |
Tue, 8 Jan 2019 12:29:07 -0500 (EST) |
branch: externals/objed
commit 64dc38bef80f241f03f163c989c5c59bf84eb827
Author: Clemera <address@hidden>
Commit: Clemera <address@hidden>
More on indent/move commands
---
objed.el | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 68 insertions(+), 14 deletions(-)
diff --git a/objed.el b/objed.el
index 0ecac2c..95884b2 100644
--- a/objed.el
+++ b/objed.el
@@ -655,7 +655,8 @@ object as an argument."
(define-key map "p" (objed--call-and-switch previous-line line))
(define-key map "n" (objed--call-and-switch next-line line))
- ;; TODO: N/P move object up/down like move region
+ (define-key map "N" 'objed-move-object-forward)
+ (define-key map "P" 'objed-move-object-backward)
(define-key map "`" 'objed-backward-symbol)
(define-key map "ยด" 'objed-forward-symbol)
@@ -2044,7 +2045,8 @@ to sourround region string representation of event."
ARG is passed to `yank'. On repreat `yank-pop'."
(interactive "*P")
- (let ((start (point)))
+ (let ((start (point))
+ (inhibit-message t))
(if (eq last-command 'yank)
(yank-pop arg)
(yank arg)
@@ -2060,8 +2062,8 @@ ARG is passed to `yank'. On repreat `yank-pop'."
(define-key map (kbd "<left>") 'objed-indent-left)
(define-key map (kbd "<right>") 'objed-indent-right)
(define-key map (kbd "TAB") 'objed-indent)
- (define-key map (kbd "S") 'objed-indent-to-right-tab-stop)
(define-key map (kbd "R") 'objed-indent-to-left-tab-stop)
+ (define-key map (kbd "S") 'objed-indent-to-right-tab-stop)
map)
"Map used for indentation.")
@@ -2079,14 +2081,6 @@ ARG is passed to `yank'. On repreat `yank-pop'."
objed-indent-to-right-tab-stop)
"Commands for indentation.")
-(defun objed-indent (beg end)
- "Indent region between BEG and END.
-
-Moves point over any whitespace afterwards."
- (interactive "r")
- (indent-region beg end)
- (objed--switch-to 'region))
-
(defun objed--indent (f &optional arg)
"Execute indent function F.
@@ -2096,14 +2090,24 @@ temporary to `objed--indent-map'"
(unless (memq last-command
objed--indent-commands)
(goto-char (objed--beg))
- (push-mark (objed--end) t))
+ (push-mark (objed--end) t)
+ (set-transient-map objed--indent-map t
+ (let ((obj objed--object))
+ (lambda () (objed--switch-to obj)))))
(if arg
(funcall f (region-beginning) (region-end) arg)
(funcall f (region-beginning) (region-end)))
(objed--switch-to 'region)
(message
- (substitute-command-keys objed--indent-map-message))
- (set-transient-map objed--indent-map t))
+ (substitute-command-keys objed--indent-map-message)))
+
+(defun objed-indent (beg end)
+ "Indent region between BEG and END.
+
+Moves point over any whitespace afterwards."
+ (interactive "r")
+ (indent-region beg end)
+ (objed--switch-to 'region))
(defun objed-indent-left (arg)
"Indent all lines in object leftward by ARG space."
@@ -2132,6 +2136,56 @@ temporary to `objed--indent-map'"
(objed--indent #'indent-rigidly (prefix-numeric-value arg))
(objed--indent #'ignore)))
+(defun objed-move-object-forward ()
+ "Move object forward.
+
+Swaps the current object with the next one."
+ (interactive)
+ (let* ((current (buffer-substring (objed--beg)
+ (objed--end)))
+
+ (nexto (objed--get-next))
+ (next (and nexto (apply #'buffer-substring
+ (objed--current nexto))))
+ (nend (objed--end nexto)))
+ (apply #'delete-region (objed--current nexto))
+ (goto-char (objed--beg nexto))
+ (insert current)
+
+ (apply #'delete-region (objed--current))
+ (goto-char (objed--beg))
+ (insert next)
+
+ (goto-char (- nend (length current)))
+ (objed--update-current-object
+ (objed-make-object :beg (point) :end nend))))
+
+
+(defun objed-move-object-backward ()
+ "Move object backward.
+
+Swaps the current object with the previous one."
+ (interactive)
+ (let* ((current (buffer-substring (objed--beg)
+ (objed--end)))
+
+ (prevo (objed--get-prev))
+ (prev (and prevo (apply #'buffer-substring
+ (objed--current prevo))))
+ (pbeg (objed--beg prevo)))
+
+ (apply #'delete-region (objed--current))
+ (goto-char (objed--beg))
+ (insert prev)
+
+ (apply #'delete-region (objed--current prevo))
+ (goto-char (objed--beg prevo))
+ (insert current)
+
+ (objed--update-current-object
+ (objed-make-object :beg pbeg :end (point)))
+ (goto-char (objed--beg))))
+
(defun objed-narrow (&optional arg)
"Narrow to object.
- [elpa] externals/objed 33136a6 034/216: Add melpa notice, (continued)
- [elpa] externals/objed 33136a6 034/216: Add melpa notice, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 8c50b53 032/216: Cleanup indent commands, Stefan Monnier, 2019/01/08
- [elpa] externals/objed f7ef787 036/216: Add move/indent descriptions, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 781adf8 044/216: Improve syntax object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 9c9797b 039/216: Add melpa badge, Stefan Monnier, 2019/01/08
- [elpa] externals/objed ae9f965 041/216: Fixes #9, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 630d2de 028/216: Improve/add indentation commands, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 61bb3eb 031/216: Fixup bindings and docs, Stefan Monnier, 2019/01/08
- [elpa] externals/objed ca32294 038/216: Ensure value for cursor color, #5, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 430d858 037/216: Add more command to move objects around and change bindings for them, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 64dc38b 035/216: More on indent/move commands,
Stefan Monnier <=
- [elpa] externals/objed d5dd1d0 045/216: Fix function name, Stefan Monnier, 2019/01/08
- [elpa] externals/objed f33147d 043/216: Add syntax object adjusted from laishulu/evil-textobj-syntax, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 8c3ba86 040/216: Add note about changing bindings, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 95503ca 046/216: Fix syntax object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 7ad08e2 052/216: Set C-h to work as usual, Stefan Monnier, 2019/01/08
- [elpa] externals/objed dc8c569 033/216: Improve surround op, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 1f09072 064/216: Improve file object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 96c6b8f 065/216: Add DEL key for in buffer replacement, fixes #6, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 41be963 054/216: Adjust textblock and block object order, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 843d843 059/216: Remove textblock from context objects, Stefan Monnier, 2019/01/08