[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed 630d2de 028/216: Improve/add indentation commands
From: |
Stefan Monnier |
Subject: |
[elpa] externals/objed 630d2de 028/216: Improve/add indentation commands |
Date: |
Tue, 8 Jan 2019 12:29:05 -0500 (EST) |
branch: externals/objed
commit 630d2dee00b7703b072b250cdc1722535814ddda
Author: Clemera <address@hidden>
Commit: Clemera <address@hidden>
Improve/add indentation commands
---
README.asc | 17 +++++++++++++---
objed.el | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 81 insertions(+), 5 deletions(-)
diff --git a/README.asc b/README.asc
index 086d06c..8c834ce 100644
--- a/README.asc
+++ b/README.asc
@@ -162,9 +162,6 @@ Basic movement commands (switch the object type on
movement):
|kbd:[s/r]
|Move forward/backward one word and activate the word object (***).
-|kbd:[S/R]
-|Move forward/backward one symbol and activate the symbol object. Skips
strings and comments.
-
|kbd:[n/p]
|Move to the next/previous line and activate the line object.
|===
@@ -181,6 +178,20 @@ Basic movement commands (switch the object type on
movement):
kbd:[s/r]. You can still access kbd:[M-s/r] regular bindings
by using Meta-shift (kbd:[M-S/R]).
+Shifted movement keys:
+
+[`objed-map`]
+|===
+|Shortcut |Purpose
+
+|kbd:[F/B]
+|Indent all lines in object right/leftward.
+
+|kbd:[S/R]
+|Move forward/backward one symbol and activate the symbol object. Skips
strings and comments.
+|===
+
+
Commands for block objects (objects built out of lines of text):
[`objed-map`]
diff --git a/objed.el b/objed.el
index aadb13d..29ebac6 100644
--- a/objed.el
+++ b/objed.el
@@ -645,6 +645,9 @@ object as an argument."
(define-key map "b" (objed--call-and-switch backward-char char))
(define-key map "f" (objed--call-and-switch forward-char char))
+ (define-key map "B" 'objed-indent-left)
+ (define-key map "F" 'objed-indent-right)
+
(define-key map "s" (objed--call-and-switch forward-word word))
(define-key map "r" (objed--call-and-switch backward-word word))
@@ -687,7 +690,8 @@ object as an argument."
(define-key map "d" 'objed-delete)
(define-key map "y" 'objed-yank)
(define-key map (kbd "TAB")
- (objed-define-op nil objed-indent))
+ ;; dont exit
+ (objed-define-op nil objed-indent ignore))
(define-key map ";"
@@ -2036,12 +2040,73 @@ ARG is passed to `yank'. On repreat `yank-pop'."
(indent-according-to-mode)
(objed--update-current-object)))
+(defvar objed--indent-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map (kbd "F") 'objed-indent-right)
+ (define-key map (kbd "B") 'objed-indent-left)
+ (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 "f") 'objed-indent-right)
+ (define-key map (kbd "b") 'objed-indent-left)
+ map)
+ "Map used for indentation.")
+
+(defvar objed--indent-map-message
+ (concat "Indent object further with "
+ "\\<objed--indent-map>\\[objed-indent-right], "
+ "\\[objed-indent-left], \\[objed-indent]."))
+
(defun objed-indent (beg end)
"Indent region between BEG and END.
Moves point over any whitespace afterwards."
+ (interactive "r")
(indent-region beg end)
- (indent-according-to-mode))
+ (objed--switch-to 'region))
+
+(defun objed-indent-left (arg)
+ "Indent all lines in object leftward by ARG space."
+ (interactive "p")
+ ;; init
+ (unless (memq last-command
+ '(objed-indent objed-indent-left objed-indent-right))
+ (goto-char (objed--beg))
+ (push-mark (objed--end) t))
+ (indent-rigidly (point) (region-end)
+ (- arg))
+ (objed--switch-to 'region)
+ (message
+ (substitute-command-keys objed--indent-map-message))
+ (set-transient-map objed--indent-map t))
+
+(defun objed-indent-right (arg)
+ "Indent all lines in object rightward by ARG space."
+ (interactive "p")
+ ;; init
+ (unless (memq last-command
+ '(objed-indent objed-indent-left objed-indent-right))
+ (goto-char (objed--beg))
+ (push-mark (objed--end) t))
+ (indent-rigidly (point) (region-end)
+ arg)
+ (objed--switch-to 'region)
+ (message
+ (substitute-command-keys objed--indent-map-message))
+ (set-transient-map objed--indent-map t))
+
+(defun objed-indent-rigidly (arg)
+ "Similar to `indent-rigidly' but work on current object lines."
+ (interactive "P")
+ (goto-char (objed--beg))
+ (push-mark (objed--end) t)
+ (when arg
+ (indent-rigidly (point) (region-end)
+ (prefix-numeric-value arg))
+ (setq deactivate-mark nil))
+ (message
+ (substitute-command-keys objed--indent-map-message))
+ (set-transient-map objed--indent-map t))
(defun objed-narrow (&optional arg)
"Narrow to object.
- [elpa] externals/objed 3958d8a 020/216: Improve sentence object, (continued)
- [elpa] externals/objed 3958d8a 020/216: Improve sentence object, Stefan Monnier, 2019/01/08
- [elpa] externals/objed a67c5b9 013/216: Conform to package guidelines, Stefan Monnier, 2019/01/08
- [elpa] externals/objed caf6a96 029/216: Further improve indent commands, change some bindings, Stefan Monnier, 2019/01/08
- [elpa] externals/objed 2232a85 030/216: Add some bindings, Stefan Monnier, 2019/01/08
- [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 <=
- [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, 2019/01/08
- [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