[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Some further problems with enriched mode.
From: |
Luc Teirlinck |
Subject: |
Some further problems with enriched mode. |
Date: |
Wed, 22 Sep 2004 20:18:47 -0500 (CDT) |
When foo-mode is a minor mode, I would normally expect that running
(foo-mode) twice in succession would be a no-op. With `enriched-mode'
this is not the case. Enabling and immediately disabling Enriched
mode will leave hard newlines enabled, even if they were previously
disabled. It will also result in `default-text-properties' being made
buffer local, even if it was not before (it is not buffer local by
default). The following patch would make enabling and disabling
Enriched mode a no-op.
I can install if desired.
===File ~/enriched.el-diff==================================
*** enriched.el 14 Sep 2004 17:10:54 -0500 1.5
--- enriched.el 22 Sep 2004 19:04:51 -0500
***************
*** 154,159 ****
--- 154,165 ----
The value is a list of \(VAR VALUE VAR VALUE...).")
(make-variable-buffer-local 'enriched-old-bindings)
+ ;; The next variable is buffer local if and only if Enriched mode is
+ ;; enabled. The buffer local value records whether
+ ;; `default-text-properties' should remain buffer local when disabling
+ ;; Enriched mode. For technical reasons, the default value should be t.
+ (defvar enriched-default-text-properties-local-flag t)
+
;; Technical internal variable. Bound to t if `enriched-mode' is
;; being rerun by a major mode to allow it to restore buffer-local
;; variables and to correctly update `enriched-old-bindings'.
***************
*** 169,175 ****
"Minor mode for editing text/enriched files.
These are files with embedded formatting information in the MIME standard
text/enriched format.
! Turning the mode on runs `enriched-mode-hook'.
More information about Enriched mode is available in the file
etc/enriched.doc in the Emacs distribution directory.
--- 175,181 ----
"Minor mode for editing text/enriched files.
These are files with embedded formatting information in the MIME standard
text/enriched format.
! Turning the mode on or off runs `enriched-mode-hook'.
More information about Enriched mode is available in the file
etc/enriched.doc in the Emacs distribution directory.
***************
*** 183,189 ****
(setq buffer-file-format (delq 'text/enriched buffer-file-format))
;; restore old variable values
(while enriched-old-bindings
! (set (pop enriched-old-bindings) (pop enriched-old-bindings))))
((and (memq 'text/enriched buffer-file-format)
(not enriched-rerun-flag))
--- 189,199 ----
(setq buffer-file-format (delq 'text/enriched buffer-file-format))
;; restore old variable values
(while enriched-old-bindings
! (set (pop enriched-old-bindings) (pop enriched-old-bindings)))
! (unless enriched-default-text-properties-local-flag
! (kill-local-variable 'default-text-properties))
! (kill-local-variable 'enriched-default-text-properties-local-flag)
! (unless use-hard-newlines (use-hard-newlines 0)))
((and (memq 'text/enriched buffer-file-format)
(not enriched-rerun-flag))
***************
*** 196,202 ****
;; These will be restored if we exit Enriched mode.
(setq enriched-old-bindings
(list 'buffer-display-table buffer-display-table
! 'default-text-properties default-text-properties))
(make-local-variable 'default-text-properties)
(setq buffer-display-table enriched-display-table)
(use-hard-newlines 1 (if enriched-rerun-flag 'never nil))
--- 206,216 ----
;; These will be restored if we exit Enriched mode.
(setq enriched-old-bindings
(list 'buffer-display-table buffer-display-table
! 'default-text-properties default-text-properties
! 'use-hard-newlines use-hard-newlines))
! (make-local-variable 'enriched-default-text-properties-local-flag)
! (setq enriched-default-text-properties-local-flag
! (local-variable-p 'default-text-properties))
(make-local-variable 'default-text-properties)
(setq buffer-display-table enriched-display-table)
(use-hard-newlines 1 (if enriched-rerun-flag 'never nil))
============================================================