diff options
author | Luc Teirlinck <teirllm@auburn.edu> | 2004-09-19 00:12:43 +0000 |
---|---|---|
committer | Luc Teirlinck <teirllm@auburn.edu> | 2004-09-19 00:12:43 +0000 |
commit | 609ee2ff4cafda1c975628316f03a3840df154b8 (patch) | |
tree | 77a3ad889ea957ec3dcd96f67d6e0ea23e81ef22 /lisp/textmodes/enriched.el | |
parent | e174f8db476c35f0eaa8b281b2e8618b02595f6c (diff) | |
download | emacs-609ee2ff4cafda1c975628316f03a3840df154b8.tar.gz |
(enriched-rerun-flag): New variable.
(enriched-before-change-major-mode): New function.
Add it to `change-major-mode-hook'.
(enriched-after-change-major-mode): New function.
Add it to `after-change-major-mode-hook'.
(enriched-mode): Make it work correctly if called from
`after-change-major-mode-hook'.
No longer set `indent-line-function'.
Diffstat (limited to 'lisp/textmodes/enriched.el')
-rw-r--r-- | lisp/textmodes/enriched.el | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el index 531fe7d95df..f25bec2d841 100644 --- a/lisp/textmodes/enriched.el +++ b/lisp/textmodes/enriched.el @@ -1,6 +1,6 @@ ;;; enriched.el --- read and save files in text/enriched format -;; Copyright (c) 1994, 1995, 1996, 2002 Free Software Foundation, Inc. +;; Copyright (c) 1994, 1995, 1996, 2002, 2004 Free Software Foundation, Inc. ;; Author: Boris Goldowsky <boris@gnu.org> ;; Keywords: wp, faces @@ -141,7 +141,6 @@ Any property that is neither on this list nor dealt with by ;;; Internal variables - (defcustom enriched-mode-hook nil "Hook run after entering/leaving Enriched mode. If you set variables in this hook, you should arrange for them to be restored @@ -155,6 +154,11 @@ them and their old values to `enriched-old-bindings'." The value is a list of \(VAR VALUE VAR VALUE...).") (make-variable-buffer-local 'enriched-old-bindings) +;; 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'. +(defvar enriched-rerun-flag nil) + ;;; ;;; Define the mode ;;; @@ -181,23 +185,21 @@ Commands: (while enriched-old-bindings (set (pop enriched-old-bindings) (pop enriched-old-bindings)))) - ((memq 'text/enriched buffer-file-format) + ((and (memq 'text/enriched buffer-file-format) + (not enriched-rerun-flag)) ;; Mode already on; do nothing. nil) (t ; Turn mode on - (push 'text/enriched buffer-file-format) + (add-to-list 'buffer-file-format 'text/enriched) ;; Save old variable values before we change them. ;; These will be restored if we exit Enriched mode. (setq enriched-old-bindings (list 'buffer-display-table buffer-display-table - 'indent-line-function indent-line-function 'default-text-properties default-text-properties)) - (make-local-variable 'indent-line-function) (make-local-variable 'default-text-properties) - (setq indent-line-function 'indent-to-left-margin ;WHY?? -sm - buffer-display-table enriched-display-table) - (use-hard-newlines 1 nil) + (setq buffer-display-table enriched-display-table) + (use-hard-newlines 1 (if enriched-rerun-flag 'never nil)) (let ((sticky (plist-get default-text-properties 'front-sticky)) (p enriched-par-props)) (dolist (x p) @@ -207,6 +209,20 @@ Commands: (plist-put default-text-properties 'front-sticky sticky))))))) +(defun enriched-before-change-major-mode () + (when enriched-mode + (while enriched-old-bindings + (set (pop enriched-old-bindings) (pop enriched-old-bindings))))) + +(add-hook 'change-major-mode-hook 'enriched-before-change-major-mode) + +(defun enriched-after-change-major-mode () + (when enriched-mode + (let ((enriched-rerun-flag t)) + (enriched-mode 1)))) + +(add-hook 'after-change-major-mode-hook 'enriched-after-change-major-mode) + ;;; ;;; Keybindings ;;; |