[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/vlf b34bd2e 082/310: Don't use temporary buffer when ad
From: |
Stefan Monnier |
Subject: |
[elpa] externals/vlf b34bd2e 082/310: Don't use temporary buffer when adjusting expanded file content. |
Date: |
Sat, 28 Nov 2020 00:32:51 -0500 (EST) |
branch: externals/vlf
commit b34bd2e5fbd2a5ab21e1aece33b8ae08e1dc49d8
Author: Andrey Kotlarski <m00naticus@gmail.com>
Commit: Andrey Kotlarski <m00naticus@gmail.com>
Don't use temporary buffer when adjusting expanded file content.
---
vlfi.el | 80 +++++++++++++++++++++++++++++------------------------------------
1 file changed, 35 insertions(+), 45 deletions(-)
diff --git a/vlfi.el b/vlfi.el
index 3784890..58cad16 100644
--- a/vlfi.el
+++ b/vlfi.el
@@ -606,56 +606,46 @@ back at WRITE-POS. Return nil if EOF is reached, t
otherwise."
(defun vlfi-file-shift-forward (size-change)
"Shift file contents SIZE-CHANGE bytes forward.
Done by saving content up front and then writing previous batch."
- (let ((vlfi-buffer (current-buffer))
- (temp-buffer (generate-new-buffer (concat " "
- (buffer-name))))
- (coding-system-for-write 'no-conversion))
- (let ((file buffer-file-name))
- (set-buffer temp-buffer)
- (setq buffer-file-name file)
- (buffer-disable-undo))
- (set-buffer vlfi-buffer)
- (buffer-disable-undo)
- (let ((read-buffer temp-buffer)
- (write-buffer vlfi-buffer)
- (size (+ vlfi-batch-size size-change))
- (read-pos vlfi-end-pos)
- (write-pos vlfi-start-pos)
- swap-buffer
- (reporter (make-progress-reporter
- "Adjusting file content..."
- vlfi-start-pos vlfi-file-size)))
- (while (vlfi-shift-batches size read-buffer read-pos
- write-buffer write-pos)
- (setq swap-buffer read-buffer
- read-buffer write-buffer
- write-buffer swap-buffer
- write-pos (+ read-pos size-change)
- read-pos (+ read-pos size))
- (progress-reporter-update reporter write-pos))
- (progress-reporter-done reporter))
- (set-buffer temp-buffer)
- (set-buffer-modified-p nil)
- (kill-buffer temp-buffer)
- (set-buffer vlfi-buffer)))
+ (buffer-disable-undo)
+ (let ((size (+ vlfi-batch-size size-change))
+ (read-pos vlfi-end-pos)
+ (write-pos vlfi-start-pos)
+ (reporter (make-progress-reporter "Adjusting file content..."
+ vlfi-start-pos
+ vlfi-file-size)))
+ (when (vlfi-shift-batches size read-pos write-pos t)
+ (setq write-pos (+ read-pos size-change)
+ read-pos (+ read-pos size))
+ (progress-reporter-update reporter write-pos)
+ (let ((coding-system-for-write 'no-conversion))
+ (while (vlfi-shift-batches size read-pos write-pos nil)
+ (setq write-pos (+ read-pos size-change)
+ read-pos (+ read-pos size))
+ (progress-reporter-update reporter write-pos))))
+ (progress-reporter-done reporter)))
-(defun vlfi-shift-batches (size read-buffer read-pos
- write-buffer write-pos)
- "Read SIZE bytes in READ-BUFFER starting from READ-POS.
-Then write contents of WRITE-BUFFER to buffer file at WRITE-POS.
+(defun vlfi-shift-batches (size read-pos write-pos hide-read)
+ "Append SIZE bytes of file starting at READ-POS.
+Then write initial buffer content to file at WRITE-POS.
+If HIDE-READ is non nil, temporarily hide literal read content.
Return nil if EOF is reached, t otherwise."
- (let* ((file-size (vlfi-get-file-size buffer-file-name))
- (read-more (< read-pos file-size)))
+ (or (verify-visited-file-modtime (current-buffer))
+ (setq vlfi-file-size (vlfi-get-file-size buffer-file-name)))
+ (let ((read-more (< read-pos vlfi-file-size))
+ (start-write-pos (point-min))
+ (end-write-pos (point-max)))
(when read-more
- ;; read
- (set-buffer read-buffer)
- (erase-buffer)
+ (goto-char end-write-pos)
(insert-file-contents-literally buffer-file-name nil read-pos
- (min file-size (+ read-pos
- size))))
+ (min vlfi-file-size (+ read-pos
+ size))))
;; write
- (set-buffer write-buffer)
- (write-region nil nil buffer-file-name write-pos 0)
+ (if hide-read ; hide literal region if user has to choose encoding
+ (narrow-to-region start-write-pos end-write-pos))
+ (write-region start-write-pos end-write-pos
+ buffer-file-name write-pos 0)
+ (delete-region start-write-pos end-write-pos)
+ (if hide-read (widen))
read-more))
(provide 'vlfi)
- [elpa] externals/vlf cc9b115 214/310: Update docstring for vlf-ediff-adjust., (continued)
- [elpa] externals/vlf cc9b115 214/310: Update docstring for vlf-ediff-adjust., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 82fd5b9 203/310: Refine diff adjustment and in case of equality after it - make another, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 0199c24 218/310: Lower tramp verbosity level when dealing with multiple batches., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf ee19f81 228/310: Load hexl advices after load and move vlf group definition., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 2c231df 226/310: Disable hexl-save-buffer and hexl revert when vlf-mode is active., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf a1ca1e3 232/310: Don't launch vlf when file size is less than vlf-batch-size., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf facdb9f 249/310: Fix binary tune base case and add approximation after access to, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf d67825c 244/310: Move back to using average speed when measuring and tuning. Be more, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf e3be8d5 079/310: Don't adjust chunk with more that 3 bytes and inhibit spurious update, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 1589cf9 081/310: Make custom revert function local only for vlfi buffers., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf b34bd2e 082/310: Don't use temporary buffer when adjusting expanded file content.,
Stefan Monnier <=
- [elpa] externals/vlf 681d3d9 084/310: Add vlfi-occur-mode., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 641ff4b 085/310: First feature complete version of vlfi-occur., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 1dcd122 086/310: Use overlays for number indicators., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf f14ef6c 087/310: Usability improvements to vlfi-occur., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 54927af 088/310: Update README and bump version., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf b8cc344 091/310: Add more detailed usage details., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf eaf85e5 093/310: Add key-binding to vlfi-mode-map in vlfi-edit-mode-map., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf e4d886a 092/310: Add check if VLFI buffer has been modified before occur jumping to new, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf a63ea7a 095/310: Grammar fixes., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 57eb4c2 099/310: Initial attempt at optimizing chunk access., Stefan Monnier, 2020/11/28