emacs-devel
[Top][All Lists]
Advanced

[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))
============================================================




reply via email to

[Prev in Thread] Current Thread [Next in Thread]