aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Aspinall2008-01-29 00:22:09 +0000
committerDavid Aspinall2008-01-29 00:22:09 +0000
commit0b7896a409979c1534d47f4c4ee121180674e33b (patch)
treeee014771622e5406266437be5e1f52f9b79dcade /lib
parent2e9a4fef49a501eb5b790b0a8d16bd8c19bdf73f (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.el16
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)))