1
0
mirror of https://github.com/m00natic/vlfi.git synced 2025-04-18 16:50:19 +01:00

Disable undo in cases of partial chunk move.

This commit is contained in:
Andrey Kotlarski 2013-12-08 17:22:23 +02:00
parent 0080991fa9
commit 959bbc7661

51
vlf.el
View File

@ -113,10 +113,7 @@
(remove-hook 'write-file-functions 'vlf-write t) (remove-hook 'write-file-functions 'vlf-write t)
(let ((pos (+ vlf-start-pos (position-bytes (point))))) (let ((pos (+ vlf-start-pos (position-bytes (point)))))
(vlf-with-undo-disabled (vlf-with-undo-disabled
(erase-buffer) (insert-file-contents buffer-file-name t nil nil t))
(insert-file-contents buffer-file-name))
(set-visited-file-modtime)
(set-buffer-modified-p nil)
(goto-char (byte-to-position pos))) (goto-char (byte-to-position pos)))
(rename-buffer (file-name-nondirectory buffer-file-name) t)))) (rename-buffer (file-name-nondirectory buffer-file-name) t))))
@ -375,34 +372,38 @@ Return t if move hasn't been canceled."
(shift-end 0) (shift-end 0)
(inhibit-read-only t)) (inhibit-read-only t))
(cond ((< end edit-end) (cond ((< end edit-end)
(delete-region (byte-to-position (1+ (vlf-with-undo-disabled
(- end (delete-region (byte-to-position (1+
vlf-start-pos))) (- end
(point-max))) vlf-start-pos)))
(point-max))))
((< edit-end end) ((< edit-end end)
(let ((edit-end-pos (point-max))) (let ((edit-end-pos (point-max)))
(goto-char edit-end-pos) (goto-char edit-end-pos)
(insert-file-contents buffer-file-name nil (vlf-with-undo-disabled
vlf-end-pos end) (insert-file-contents buffer-file-name nil
(setq shift-end (cdr (vlf-adjust-chunk vlf-end-pos end)
vlf-end-pos end nil t (setq shift-end (cdr (vlf-adjust-chunk
edit-end-pos)))))) vlf-end-pos end nil t
edit-end-pos)))))))
(cond ((< vlf-start-pos start) (cond ((< vlf-start-pos start)
(delete-region (point-min) (byte-to-position (vlf-with-undo-disabled
(- start vlf-start-pos)))) (delete-region (point-min) (byte-to-position
(- start vlf-start-pos)))))
((< start vlf-start-pos) ((< start vlf-start-pos)
(let ((edit-end-pos (point-max))) (let ((edit-end-pos (point-max)))
(goto-char edit-end-pos) (goto-char edit-end-pos)
(insert-file-contents buffer-file-name nil (vlf-with-undo-disabled
start vlf-start-pos) (insert-file-contents buffer-file-name nil
(setq shift-start (car start vlf-start-pos)
(vlf-adjust-chunk start (setq shift-start (car
vlf-start-pos (vlf-adjust-chunk start
t nil vlf-start-pos
edit-end-pos))) t nil
(goto-char (point-min)) edit-end-pos)))
(insert (delete-and-extract-region edit-end-pos (goto-char (point-min))
(point-max)))))) (insert (delete-and-extract-region edit-end-pos
(point-max)))))))
(setq vlf-start-pos (- start shift-start) (setq vlf-start-pos (- start shift-start)
vlf-end-pos (+ end shift-end)) vlf-end-pos (+ end shift-end))
(goto-char (or (byte-to-position (- pos vlf-start-pos)) (goto-char (or (byte-to-position (- pos vlf-start-pos))