[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed 3d6f50b 012/166: Fix some indent operation issues
From: |
Clemens Radermacher |
Subject: |
[elpa] externals/objed 3d6f50b 012/166: Fix some indent operation issues |
Date: |
Sun, 29 Dec 2019 08:20:52 -0500 (EST) |
branch: externals/objed
commit 3d6f50b85e234678855f30e2de86441847c39da6
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>
Fix some indent operation issues
---
objed.el | 86 ++++++++++++++++------------------------------------------------
1 file changed, 21 insertions(+), 65 deletions(-)
diff --git a/objed.el b/objed.el
index 76efa99..cbaddc6 100644
--- a/objed.el
+++ b/objed.el
@@ -734,8 +734,6 @@ selected one."
(define-key map "y" 'objed-yank)
- (define-key map (kbd "C-x TAB") 'objed-indent-rigidly)
-
(define-key map (kbd "\\")
;; dont exit
(objed-define-op nil objed-indent ignore))
@@ -2657,52 +2655,6 @@ 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 "<C-right>") 'objed-indent-right)
- (define-key map (kbd "<C-left>") '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 "<M-left>") 'objed-indent-to-left-tab-stop)
- (define-key map (kbd "<M-right>") 'objed-indent-to-right-tab-stop)
- 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-to-left-tab-stop], "
- "\\[objed-indent-to-right-tab-stop], \\[objed-indent]."))
-
-(defvar objed--indent-commands
- '(objed-indent
- objed-indent-left
- objed-indent-right
- objed-indent-to-left-tab-stop
- objed-indent-to-right-tab-stop)
- "Commands for indentation.")
-
-(defun objed--indent (f &optional arg)
- "Execute indent function F.
-
-If ARG is given pass it on to the indent function. Switches
-temporary to `objed--indent-map'"
- ;; init
- (unless (memq last-command
- objed--indent-commands)
- (goto-char (objed--beg))
- (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)))
-
(defun objed-indent (beg end)
"Indent region between BEG and END.
@@ -2713,31 +2665,28 @@ Moves point over any whitespace afterwards."
(defun objed-indent-left (arg)
"Indent all lines in object leftward by ARG space."
(interactive "p")
- (objed--indent #'indent-rigidly (- arg)))
+ (objed--do (lambda (beg end)
+ (indent-rigidly beg end (- arg)))
+ 'current))
(defun objed-indent-right (arg)
"Indent all lines in object rightward by ARG space."
(interactive "p")
- (objed--indent #'indent-rigidly arg))
+ (objed--do (lambda (beg end)
+ (indent-rigidly beg end arg))
+ 'current))
(defun objed-indent-to-left-tab-stop ()
"Indent all lines in object lefttward to a tab stop."
(interactive)
- (objed--indent #'indent-rigidly-left-to-tab-stop))
+ (objed--do #'indent-rigidly-left-to-tab-stop
+ 'current))
(defun objed-indent-to-right-tab-stop ()
"Indent all lines in object rightward to a tab stop."
(interactive)
- (objed--indent #'indent-rigidly-right-to-tab-stop))
-
-(defun objed-indent-rigidly (_beg _end &optional arg)
- "Similar to `indent-rigidly' but work on current object lines.
-
-Indent by ARG lines."
- (interactive "r\nP")
- (if arg
- (objed--indent #'indent-rigidly (prefix-numeric-value arg))
- (objed--indent #'ignore)))
+ (objed--do #'indent-rigidly-right-to-tab-stop
+ 'current))
(defun objed-move-object-forward ()
"Move object forward.
@@ -3502,6 +3451,7 @@ and RANGE hold the object position data."
(cond ((eq 'keep exit)
(ignore))
((eq 'current exit)
+ ;; use the markers for updated object
(objed--update-current-object
(objed-make-object :beg (car range)
:end (cadr range))))
@@ -3635,10 +3585,15 @@ ON got applied."
"Apply ACTION on current object and exit with EXIT."
(let ((range (objed--current)))
(when range
- (let ((text (apply #'buffer-substring range))
- (range (list (set-marker (make-marker) (car range))
- (set-marker (make-marker) (cadr range)))))
+ (let* ((text (apply #'buffer-substring range))
+ (range (list (set-marker (make-marker) (car range))
+ (set-marker (make-marker) (cadr range))))
+ (object (list range
+ (list (set-marker (make-marker) (objed--alt-beg))
+ (set-marker (make-marker)
(objed--alt-end))))))
(prog1 1
+ ;; update object with marker positions
+ (objed--update-current-object object)
(apply action range)
(objed-exit-op exit text range))))))
@@ -3659,7 +3614,8 @@ ON got applied."
(setq last-command 'kill-region))
(delete-overlay ov))))
(prog1 n
- ;; always ?
+ ;; TODO: configure exit behavior for
+ ;; multiple objects
(setq objed--marked-ovs nil)
(objed-exit-op exit))))
- [elpa] externals/objed ef42837 003/166: Always lazy load when package name defined for object, (continued)
- [elpa] externals/objed ef42837 003/166: Always lazy load when package name defined for object, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 4fe7ed0 002/166: Improve block expansion, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed ae830b8 005/166: Improve block expansion for org mode, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed c9a91b5 006/166: Rename objed-electric to objed-electric-event, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed e35d7b8 001/166: Fix objed-object-activate for the case which-key isn't active, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 40f5799 007/166: Don't reinit when op exited objed, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 9376f3d 004/166: Use block object for backward-element in org mode, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 36bddbd 009/166: Fix map staying active when op exited objed, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 225267f 011/166: Don't reinit on object dispatch when objed is active, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed c9d4f12 013/166: Don't always update current object with marker positions, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 3d6f50b 012/166: Fix some indent operation issues,
Clemens Radermacher <=
- [elpa] externals/objed 87da25e 018/166: Fix mc available test on exit, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed a2cbe3b 015/166: Create fake cursors when using insertion op for marked objects, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed cb1a6ca 019/166: Add continuation object feature, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 6a91b16 023/166: Improve mc exit behavior, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 4de1520 008/166: Improve paren insertion and wrapping in lisp modes, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 25111a3 010/166: Dont check buffer whe objed--buffer is gone, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 333b58c 014/166: Change indentation object to include leading ws, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 89e1e18 016/166: Also activate mc if only one fake cursor, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 0cb2593 017/166: Tweak sexp object, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed dc673b8 022/166: Fix for mc counting non fake cursor as cursor, Clemens Radermacher, 2019/12/29