- (interactive "P")
- (let ((mod (buffer-modified-p)))
- (cond ((or (<= (prefix-numeric-value arg) 0)
- (and enriched-mode (null arg)))
- ;; Turn mode off
- (setq enriched-mode nil)
- (setq buffer-file-format (delq 'text/enriched buffer-file-format))
- ;; restore old variable values
- (while enriched-old-bindings
- (funcall 'set (car enriched-old-bindings)
- (car (cdr enriched-old-bindings)))
- (setq enriched-old-bindings (cdr (cdr enriched-old-bindings)))))
-
- (enriched-mode nil) ; Mode already on; do nothing.
-
- (t (setq enriched-mode t) ; Turn mode on
- (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
- buffer-display-table enriched-display-table)
- (use-hard-newlines 1 nil)
- (let ((sticky (plist-get default-text-properties 'front-sticky))
- (p enriched-par-props))
- (while p
- (add-to-list 'sticky (car p))
- (setq p (cdr p)))
- (if sticky
- (setq default-text-properties
- (plist-put default-text-properties
- 'front-sticky sticky))))
- (run-hooks 'enriched-mode-hook)))
- (set-buffer-modified-p mod)
- (force-mode-line-update)))
+ nil " Enriched" nil
+ (cond ((null enriched-mode)
+ ;; Turn mode off
+ (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))))
+
+ ((memq 'text/enriched buffer-file-format)
+ ;; Mode already on; do nothing.
+ nil)
+
+ (t ; Turn mode on
+ (push 'text/enriched buffer-file-format)
+ ;; 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)
+ (let ((sticky (plist-get default-text-properties 'front-sticky))
+ (p enriched-par-props))
+ (dolist (x p)
+ (add-to-list 'sticky x))
+ (if sticky
+ (setq default-text-properties
+ (plist-put default-text-properties
+ 'front-sticky sticky)))))))