From 469900878db4cc3fecf4f94ef4f965d50a0d09b8 Mon Sep 17 00:00:00 2001 From: Andrey Kotlarski Date: Sun, 14 Apr 2013 19:28:41 +0300 Subject: [PATCH] Make chunk adjusting automatic. --- vlfi.el | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/vlfi.el b/vlfi.el index 3347ee1..9eb4cc7 100644 --- a/vlfi.el +++ b/vlfi.el @@ -461,16 +461,22 @@ Search is performed chunk by chunk in `vlfi-batch-size' memory." (vlfi-move-to-chunk start-pos end-pos) (goto-char pos))))) -(defun vlfi-adjust-chunk (bytes) - "Adjust chunk beginning by BYTES." - (interactive "p") +(defun vlfi-adjust-chunk () + "Adjust chunk beginning until content can be properly decoded." + (interactive) (or (zerop vlfi-start-pos) - (let ((pos (+ (point) bytes))) - (setq vlfi-start-pos (- vlfi-start-pos bytes)) - (let ((inhibit-read-only t)) - (erase-buffer) - (insert-file-contents buffer-file-name nil - vlfi-start-pos vlfi-end-pos)) + (let ((pos (point))) + (while (/= (- vlfi-end-pos vlfi-start-pos) + (length (encode-coding-region + (point-min) (point-max) + buffer-file-coding-system t))) + + (setq pos (1- pos) + vlfi-start-pos (1- vlfi-start-pos)) + (let ((inhibit-read-only t)) + (erase-buffer) + (insert-file-contents buffer-file-name nil + vlfi-start-pos vlfi-end-pos))) (set-buffer-modified-p nil) (goto-char pos))))