[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/vlf 2470fc0 181/310: Fix vlf-shift-undo-list to reverse
From: |
Stefan Monnier |
Subject: |
[elpa] externals/vlf 2470fc0 181/310: Fix vlf-shift-undo-list to reverse resulting list. |
Date: |
Sat, 28 Nov 2020 00:33:11 -0500 (EST) |
branch: externals/vlf
commit 2470fc0f677e917a6b754edd041236dae3da4e1d
Author: Andrey Kotlarski <m00naticus@gmail.com>
Commit: Andrey Kotlarski <m00naticus@gmail.com>
Fix vlf-shift-undo-list to reverse resulting list.
---
vlf.el | 119 +++++++++++++++++++++++++++++++++--------------------------------
1 file changed, 60 insertions(+), 59 deletions(-)
diff --git a/vlf.el b/vlf.el
index aa980c0..d561c32 100644
--- a/vlf.el
+++ b/vlf.el
@@ -116,63 +116,64 @@ continuously recenter.")
(defun vlf-shift-undo-list (n)
"Shift undo list element regions by N."
(or (eq buffer-undo-list t)
- (let (undo-list)
- (setq buffer-undo-list
- (catch 'end
- (dolist (el buffer-undo-list)
- (push
- (cond
- ((null el) nil)
- ((numberp el) (let ((pos (+ el n)))
- (if (< n 0)
- (throw 'end undo-list)
- pos)))
- (t (let ((head (car el)))
- (cond ((numberp head)
- (let ((beg (+ head n)))
- (if (< beg 0)
- (throw 'end undo-list)
- (cons beg (+ (cdr el) n)))))
- ((stringp head)
- (let* ((pos (cdr el))
- (positive (< 0 pos))
- (new (+ (abs pos) n)))
- (if (< new 0)
- (throw 'end undo-list)
- (cons head (if positive
- new
- (- new))))))
- ((null head)
- (let ((beg (+ (nth 3 el) n)))
- (if (< beg 0)
- (throw 'end undo-list)
- (cons
- nil
+ (setq buffer-undo-list
+ (nreverse
+ (let ((min (point-min))
+ undo-list)
+ (catch 'end
+ (dolist (el buffer-undo-list undo-list)
+ (push
+ (cond
+ ((null el) nil)
+ ((numberp el) (let ((pos (+ el n)))
+ (if (< pos min)
+ (throw 'end undo-list)
+ pos)))
+ (t (let ((head (car el)))
+ (cond ((numberp head)
+ (let ((beg (+ head n)))
+ (if (< beg min)
+ (throw 'end undo-list)
+ (cons beg (+ (cdr el) n)))))
+ ((stringp head)
+ (let* ((pos (cdr el))
+ (positive (< 0 pos))
+ (new (+ (abs pos) n)))
+ (if (< new min)
+ (throw 'end undo-list)
+ (cons head (if positive
+ new
+ (- new))))))
+ ((null head)
+ (let ((beg (+ (nth 3 el) n)))
+ (if (< beg min)
+ (throw 'end undo-list)
(cons
- (cadr el)
+ nil
(cons
- (nth 2 el)
- (cons beg
- (+ (cddr
- (cddr el)) n))))))))
- ((and (eq head 'apply)
- (numberp (cadr el)))
- (let ((beg (+ (nth 2 el) n)))
- (if (< beg 0)
- (throw 'end undo-list)
- (cons
- 'apply
+ (cadr el)
+ (cons
+ (nth 2 el)
+ (cons beg
+ (+ (cddr
+ (cddr el)) n))))))))
+ ((and (eq head 'apply)
+ (numberp (cadr el)))
+ (let ((beg (+ (nth 2 el) n)))
+ (if (< beg min)
+ (throw 'end undo-list)
(cons
- (cadr el)
+ 'apply
(cons
- beg
+ (cadr el)
(cons
- (+ (nth 3 el) n)
- (cons (nth 4 el)
- (cdr (last el))))))))))
- (t el)))))
- undo-list))
- undo-list)))))
+ beg
+ (cons
+ (+ (nth 3 el) n)
+ (cons (nth 4 el)
+ (cdr (last el))))))))))
+ (t el)))))
+ undo-list))))))))
(define-minor-mode vlf-mode
"Mode to browse large files in."
@@ -551,9 +552,10 @@ Return t if move hasn't been canceled."
buffer-file-coding-system
t))))
(setq start (+ vlf-start-pos del-len))
- (vlf-with-undo-disabled
- (delete-region (point-min) del-pos))
- (vlf-shift-undo-list (- del-len))))
+ (let ((del-length (- (point-min) del-pos)))
+ (vlf-with-undo-disabled
+ (delete-region (point-min) del-pos))
+ (vlf-shift-undo-list del-length))))
((< start vlf-start-pos)
(let ((edit-end-pos (point-max)))
(goto-char edit-end-pos)
@@ -588,8 +590,7 @@ Return t if move hasn't been canceled."
(erase-buffer)
(insert-file-contents buffer-file-name nil
vlf-start-pos vlf-end-pos)
- (let ((shifts (vlf-adjust-chunk vlf-start-pos vlf-end-pos t
- t)))
+ (let ((shifts (vlf-adjust-chunk vlf-start-pos vlf-end-pos t t)))
(setq vlf-start-pos (- vlf-start-pos (car shifts))
vlf-end-pos (+ vlf-end-pos (cdr shifts)))
(goto-char (or (byte-to-position (+ pos (car shifts)))
@@ -598,8 +599,8 @@ Return t if move hasn't been canceled."
(setq buffer-undo-list nil)
(set-visited-file-modtime))
-(defun vlf-adjust-chunk (start end &optional adjust-start adjust-end
- position)
+(defun vlf-adjust-chunk (start end adjust-start adjust-end
+ &optional position)
"Adjust chunk at absolute START to END till content can be\
properly decoded. ADJUST-START determines if trying to prepend bytes\
to the beginning, ADJUST-END - append to the end.
- [elpa] externals/vlf 025399a 133/310: Merge branch 'master' into keep-edit, (continued)
- [elpa] externals/vlf 025399a 133/310: Merge branch 'master' into keep-edit, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf f34986a 142/310: Update README., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 931ca52 145/310: Stylistic refinements., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 2ac3e7d 146/310: Fix prematurely ending search/occur not to ask for modified buffer, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 0080991 154/310: Fix chunk end adjustment and save for trunk Emacs., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf a3901b8 157/310: Fix deletion when moving to partially overlapping chunk and enable more, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 371c560 158/310: Bump version and remove warning - save is now reliable., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf c68c34e 160/310: Add vlf-application customization which refines control over when, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf a0cafa7 161/310: Explicitly offer vlf-prefix-map so user can easily define another prefix, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf ea46386 168/310: Don't apply VLF by default over image and pdf files., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 2470fc0 181/310: Fix vlf-shift-undo-list to reverse resulting list.,
Stefan Monnier <=
- [elpa] externals/vlf 161a4ec 184/310: Prevent inserting of too small file regions for GNU Emacs later than, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 95e6259 188/310: Add convenience macro to disable VLF application during execution of, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 66db665 189/310: Fix follow functionality and explicitly set variable as buffer local., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 38e8f6c 199/310: Update file size when moving to end of buffer., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 47c154c 194/310: Fix detection of good chunk start., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 1a1ce27 212/310: Add progress reporters for the optimized part of line search., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf e747de4 204/310: Unify and optimize deletion., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 9510c70 215/310: Retry decoding when the initial attempt seems wrong., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 5c604c4 211/310: Optimize vlf-goto-line not to decode batches as long as possible., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf a71ee32 216/310: Skip adjustment in some cases of overlapping chunk., Stefan Monnier, 2020/11/28