diff options
| author | David Aspinall | 2008-01-29 00:22:09 +0000 |
|---|---|---|
| committer | David Aspinall | 2008-01-29 00:22:09 +0000 |
| commit | 0b7896a409979c1534d47f4c4ee121180674e33b (patch) | |
| tree | ee014771622e5406266437be5e1f52f9b79dcade /lib | |
| parent | 2e9a4fef49a501eb5b790b0a8d16bd8c19bdf73f (diff) | |
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.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/unicode-tokens.el | 16 |
1 files changed, 12 insertions, 4 deletions
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))) |
