From 0b7896a409979c1534d47f4c4ee121180674e33b Mon Sep 17 00:00:00 2001 From: David Aspinall Date: Tue, 29 Jan 2008 00:22:09 +0000 Subject: tokens-to-unicode, unicode-to-tokens: preserve modification status mode switch on/off: discard undo history -- edits inside tokens get mapped to wrong positions afterwards, so undo garbles source. --- lib/unicode-tokens.el | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/unicode-tokens.el b/lib/unicode-tokens.el index b5e09723..5547b0e3 100644 --- a/lib/unicode-tokens.el +++ b/lib/unicode-tokens.el @@ -333,14 +333,18 @@ Also sets `unicode-tokens-token-alist'." (goto-char (or end (point-max))) (save-excursion (let ((case-fold-search proof-case-fold-search) - (buffer-undo-list t)) - (format-replace-strings unicode-tokens-token-alist nil start end))) + (buffer-undo-list t) + (modified (buffer-modified-p))) + (format-replace-strings unicode-tokens-token-alist nil start end) + (set-buffer-modified-p modified))) (point))) (defun unicode-tokens-unicode-to-tokens (&optional start end buffer) (let ((case-fold-search proof-case-fold-search) - (buffer-undo-list t)) - (format-replace-strings unicode-tokens-ustring-alist nil start end))) + (buffer-undo-list t) + (modified (buffer-modified-p))) + (format-replace-strings unicode-tokens-ustring-alist nil start end) + (set-buffer-modified-p modified))) @@ -360,11 +364,15 @@ Also sets `unicode-tokens-token-alist'." (when unicode-tokens-mode (set-buffer-multibyte t) (let ((inhibit-read-only t)) + ;; format is supposed to manage undo, but doesn't remap + (setq buffer-undo-list nil) (format-decode-buffer 'unicode-tokens)) (set-input-method "Unicode tokens" unicode-tokens-mode)) (unless unicode-tokens-mode ;; leave buffer encoding as is (let ((inhibit-read-only t)) + ;; format is supposed to manage undo, but doesn't remap + (setq buffer-undo-list nil) (format-encode-buffer 'unicode-tokens)) (inactivate-input-method))) -- cgit v1.2.3