changeset 78447:65140a5dc349

(longlines-decoded): New variable. (longlines-mode): Avoid encoding or decoding the buffer twice.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 07 Aug 2007 16:08:39 +0000
parents 8b571462df23
children 681eb7074f83
files lisp/longlines.el
diffstat 1 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/longlines.el	Tue Aug 07 16:08:26 2007 +0000
+++ b/lisp/longlines.el	Tue Aug 07 16:08:39 2007 +0000
@@ -79,11 +79,13 @@
 (defvar longlines-wrap-end nil)
 (defvar longlines-wrap-point nil)
 (defvar longlines-showing nil)
+(defvar longlines-decoded nil)
 
 (make-variable-buffer-local 'longlines-wrap-beg)
 (make-variable-buffer-local 'longlines-wrap-end)
 (make-variable-buffer-local 'longlines-wrap-point)
 (make-variable-buffer-local 'longlines-showing)
+(make-variable-buffer-local 'longlines-decoded)
 
 ;; Mode
 
@@ -128,7 +130,9 @@
           ;; longlines-wrap-lines that we'll never encounter from here
 	  (save-restriction
 	    (widen)
-	    (longlines-decode-buffer)
+	    (unless longlines-decoded
+	      (longlines-decode-buffer)
+	      (setq longlines-decoded t))
 	    (longlines-wrap-region (point-min) (point-max)))
           (set-buffer-modified-p mod))
         (when (and longlines-show-hard-newlines
@@ -161,9 +165,11 @@
     (let ((buffer-undo-list t)
 	  (after-change-functions nil)
           (inhibit-read-only t))
-      (save-restriction
-	(widen)
-	(longlines-encode-region (point-min) (point-max))))
+      (if longlines-decoded
+	  (save-restriction
+	    (widen)
+	    (longlines-encode-region (point-min) (point-max))
+	    (setq longlines-decoded nil))))
     (remove-hook 'change-major-mode-hook 'longlines-mode-off t)
     (remove-hook 'after-change-functions 'longlines-after-change-function t)
     (remove-hook 'post-command-hook 'longlines-post-command-function t)