[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed ae47cf6 10/34: Ensure to never shrink on expansio
From: |
Stefan Monnier |
Subject: |
[elpa] externals/objed ae47cf6 10/34: Ensure to never shrink on expansion for objed-beg/end-of-block |
Date: |
Mon, 15 Mar 2021 22:21:09 -0400 (EDT) |
branch: externals/objed
commit ae47cf6d7187951feab874b35707a4e7d974241f
Author: Clemens Radermacher <clemera@posteo.net>
Commit: Clemens Radermacher <clemera@posteo.net>
Ensure to never shrink on expansion for objed-beg/end-of-block
---
objed.el | 108 +++++++++++++++++++++++++++++++++------------------------------
1 file changed, 57 insertions(+), 51 deletions(-)
diff --git a/objed.el b/objed.el
index e1e5f41..d91a0a4 100644
--- a/objed.el
+++ b/objed.el
@@ -1722,51 +1722,54 @@ See also `objed--block-objects'."
(let ((blocks nil))
(defun objed-beg-of-block ()
- "Jump to beginning of line based objects.
+ "Jump to beginning of line based objects.
Moves to beginning of line/indentation and activates the text
moved over. On repeat proceed to beginning of the indentation
block, paragraph and other 'line based' objects.
See also `objed--block-objects'."
- (interactive)
- (when (not (eq last-command this-command))
- ;; get all which make sense from starting point
- (setq blocks
- (cl-remove-duplicates
- (objed--get-blocks
- (if (eq last-command 'move-beginning-of-line)
- nil 'line)
- #'objed--beg)
- :test (lambda (a b)
- (let ((as (objed--beg (car (nthcdr 3 a))))
- (bs (objed--beg (car (nthcdr 3 b)))))
- (or (eq as bs)
- (>= as (point))))))))
- (cond ((or (eq last-command this-command)
- (eq last-command 'move-beginning-of-line))
- (if (and (eq objed--object 'line)
- (objed--inner-p)
- (not (bolp))
- (objed--point-in-periphery))
- (progn (objed--toggle-state)
- (goto-char (objed--beg)))
- (when blocks
- (let ((pos (point))
- (end (objed--end)))
- (objed--restore-state (pop blocks))
- (while (and (eq pos (objed--beg))
- blocks)
- (objed--restore-state (pop blocks)))
- (objed--change-to :end end :iend end)
- (goto-char (objed--beg))))))
- (t
- (objed--switch-to 'line
- (unless (<= (point)
- (objed--indentation-position))
- 'inner))
- (objed--change-to :end (point) :iend (point))
- (goto-char (objed--beg))))))
+ (interactive)
+ (when (not (eq last-command this-command))
+ ;; get all which make sense from starting point
+ (setq blocks
+ (cl-delete-if
+ (lambda (a)
+ (let ((as (objed--beg (car (nthcdr 3 a)))))
+ (>= as (line-beginning-position))))
+ (cl-delete-duplicates
+ (objed--get-blocks
+ (if (eq last-command 'move-beginning-of-line)
+ nil 'line)
+ #'objed--beg)
+ :test (lambda (a b)
+ (let ((as (objed--beg (car (nthcdr 3 a))))
+ (bs (objed--beg (car (nthcdr 3 b)))))
+ (eq as bs)))))))
+ (cond ((or (eq last-command this-command)
+ (eq last-command 'move-beginning-of-line))
+ (if (and (eq objed--object 'line)
+ (objed--inner-p)
+ (not (bolp))
+ (objed--point-in-periphery))
+ (progn (objed--toggle-state)
+ (goto-char (objed--beg)))
+ (when blocks
+ (let ((pos (point))
+ (end (objed--end)))
+ (objed--restore-state (pop blocks))
+ (while (and (eq pos (objed--beg))
+ blocks)
+ (objed--restore-state (pop blocks)))
+ (objed--change-to :end end :iend end)
+ (goto-char (objed--beg))))))
+ (t
+ (objed--switch-to 'line
+ (unless (<= (point)
+ (objed--indentation-position))
+ 'inner))
+ (objed--change-to :end (point) :iend (point))
+ (goto-char (objed--beg))))))
(let ((blocks nil))
@@ -1782,18 +1785,21 @@ See also `objed--block-objects'."
(interactive)
(when (not (eq last-command this-command))
(setq blocks
- (cl-remove-duplicates
- (nreverse
- (objed--get-blocks
- 'line
- #'objed--end
- ;; better for most cases
- 'inner))
- :test (lambda (a b)
- (let ((as (objed--end (car (nthcdr 3 a))))
- (bs (objed--end (car (nthcdr 3 b)))))
- (or (eq as bs)
- (<= as (point))))))))
+ (cl-delete-if
+ (lambda (a)
+ (let ((as (objed--end (car (nthcdr 3 a)))))
+ (<= as (line-end-position))))
+ (cl-delete-duplicates
+ (nreverse
+ (objed--get-blocks
+ 'line
+ #'objed--end
+ ;; better for most cases
+ 'inner))
+ :test (lambda (a b)
+ (let ((as (objed--end (car (nthcdr 3 a))))
+ (bs (objed--end (car (nthcdr 3 b)))))
+ (eq as bs)))))))
(cond ((or (eq last-command this-command)
(eq last-command 'move-end-of-line))
(when blocks
- [elpa] externals/objed 9f565e4 30/34: Make transposing objects work with active region, (continued)
- [elpa] externals/objed 9f565e4 30/34: Make transposing objects work with active region, Stefan Monnier, 2021/03/15
- [elpa] externals/objed e93dda7 33/34: Require cl-lib in all files, Stefan Monnier, 2021/03/15
- [elpa] externals/objed 410a425 29/34: Refactor isearch handling and add missing commands, Stefan Monnier, 2021/03/15
- [elpa] externals/objed 8dc1770 01/34: Stay on at boundary for M-[/] (Fix #68), Stefan Monnier, 2021/03/15
- [elpa] externals/objed 31c5ded 03/34: Add separate option for auto init behavior on buffer change, Stefan Monnier, 2021/03/15
- [elpa] externals/objed 9bb3513 04/34: Fix differing initialization conditions, Stefan Monnier, 2021/03/15
- [elpa] externals/objed e046331 07/34: Implemented objed-local-mode (#72), Stefan Monnier, 2021/03/15
- [elpa] externals/objed e89d8da 06/34: Fix bytecompile and linting errors, Stefan Monnier, 2021/03/15
- [elpa] externals/objed f5ddab2 08/34: Update objed-exit-op: Check range was passed, Stefan Monnier, 2021/03/15
- [elpa] externals/objed e871e0f 11/34: Mention changes of public interface, Stefan Monnier, 2021/03/15
- [elpa] externals/objed ae47cf6 10/34: Ensure to never shrink on expansion for objed-beg/end-of-block,
Stefan Monnier <=
- [elpa] externals/objed f45cddb 09/34: Restructure note about out of date keybindings, Stefan Monnier, 2021/03/15
- [elpa] externals/objed 2224691 12/34: Make note about changes more prominent, Stefan Monnier, 2021/03/15
- [elpa] externals/objed 5d3b8a8 18/34: Fix quotes in docstring, Stefan Monnier, 2021/03/15
- [elpa] externals/objed dd520d4 20/34: Don't override last-command in objed--do-objects, Stefan Monnier, 2021/03/15
- [elpa] externals/objed 47891ba 17/34: Remove objed-extend face, Stefan Monnier, 2021/03/15
- [elpa] externals/objed ded6eb4 16/34: Fix docstring of objed-use-hl, Stefan Monnier, 2021/03/15
- [elpa] externals/objed d36e277 22/34: Don't support objed-extend with marked objects, Stefan Monnier, 2021/03/15
- [elpa] externals/objed d3dfcaf 26/34: Add binding for symbol object, Stefan Monnier, 2021/03/15
- [elpa] externals/objed 6ecb81f 27/34: Reformat error message, Stefan Monnier, 2021/03/15
- [elpa] externals/objed 23f5c6e 28/34: Add isearch to keeper commands, Stefan Monnier, 2021/03/15