Replace "Maintainer: FSF" with the emacs-devel mailing address
[bpt/emacs.git] / lisp / textmodes / text-mode.el
index b6868d3..727697b 100644 (file)
@@ -1,9 +1,9 @@
 ;;; text-mode.el --- text mode, and its idiosyncratic commands
 
-;; Copyright (C) 1985, 1992, 1994, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1992, 1994, 2001-2014 Free Software Foundation,
+;; Inc.
 
-;; Maintainer: FSF
+;; Maintainer: emacs-devel@gnu.org
 ;; Keywords: wp
 ;; Package: emacs
 
@@ -51,6 +51,27 @@ Use (derived-mode-p 'text-mode) instead.")
 (defvar text-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map "\e\t" 'ispell-complete-word)
+    (define-key map [menu-bar text]
+      (cons "Text" (make-sparse-keymap "Text")))
+    (bindings--define-key map [menu-bar text toggle-text-mode-auto-fill]
+      '(menu-item "Auto Fill" toggle-text-mode-auto-fill
+                  :button (:toggle . (memq 'turn-on-auto-fill text-mode-hook))
+                  :help "Automatically fill text while typing in text modes (Auto Fill mode)"))
+    (bindings--define-key map [menu-bar text paragraph-indent-minor-mode]
+      '(menu-item "Paragraph Indent" paragraph-indent-minor-mode
+                  :button (:toggle . (bound-and-true-p paragraph-indent-minor-mode))
+                  :help "Toggle paragraph indent minor mode"))
+    (bindings--define-key map [menu-bar text sep] menu-bar-separator)
+    (bindings--define-key map [menu-bar text center-region]
+      '(menu-item "Center Region" center-region
+                  :help "Center the marked region"
+                  :enable (region-active-p)))
+    (bindings--define-key map [menu-bar text center-paragraph]
+      '(menu-item "Center Paragraph" center-paragraph
+                  :help "Center the current paragraph"))
+    (bindings--define-key map [menu-bar text center-line]
+      '(menu-item "Center Line" center-line
+                  :help "Center the current line"))
     map)
   "Keymap for `text-mode'.
 Many other modes, such as `mail-mode', `outline-mode' and `indented-text-mode',
@@ -64,8 +85,7 @@ You can thus get the full benefit of adaptive filling
  (see the variable `adaptive-fill-mode').
 \\{text-mode-map}
 Turning on Text mode runs the normal hook `text-mode-hook'."
-  (make-local-variable 'text-mode-variant)
-  (setq text-mode-variant t)
+  (set (make-local-variable 'text-mode-variant) t)
   (set (make-local-variable 'require-final-newline)
        mode-require-final-newline)
   (set (make-local-variable 'indent-line-function) 'indent-relative))
@@ -82,18 +102,30 @@ Turning on Paragraph-Indent Text mode runs the normal hooks
   :abbrev-table nil :syntax-table nil
   (paragraph-indent-minor-mode))
 
-(defun paragraph-indent-minor-mode ()
+(define-minor-mode paragraph-indent-minor-mode
   "Minor mode for editing text, with leading spaces starting a paragraph.
 In this mode, you do not need blank lines between paragraphs when the
 first line of the following paragraph starts with whitespace, as with
 `paragraph-indent-text-mode'.
 Turning on Paragraph-Indent minor mode runs the normal hook
 `paragraph-indent-text-mode-hook'."
-  (interactive)
-  (set (make-local-variable 'paragraph-start)
-       (concat "[ \t\n\f]\\|" paragraph-start))
-  (set (make-local-variable 'indent-line-function) 'indent-to-left-margin)
-  (run-hooks 'paragraph-indent-text-mode-hook))
+  :initial-value nil
+  ;; Change the definition of a paragraph start.
+  (let ((ps-re "[ \t\n\f]\\|"))
+    (if (eq t (compare-strings ps-re nil nil
+                               paragraph-start nil (length ps-re)))
+        (if (not paragraph-indent-minor-mode)
+            (set (make-local-variable 'paragraph-start)
+                 (substring paragraph-start (length ps-re))))
+      (if paragraph-indent-minor-mode
+          (set (make-local-variable 'paragraph-start)
+               (concat ps-re paragraph-start)))))
+  ;; Change the indentation function.
+  (if paragraph-indent-minor-mode
+      (add-function :override (local 'indent-line-function)
+                    #'indent-to-left-margin)
+    (remove-function (local 'indent-line-function)
+                     #'indent-to-left-margin)))
 
 (defalias 'indented-text-mode 'text-mode)
 
@@ -182,5 +214,4 @@ The argument NLINES says how many lines to center."
           (setq nlines (1+ nlines))
           (forward-line -1)))))
 
-;; arch-tag: a07ccaad-da13-4d7b-9c61-cd04f5926aab
 ;;; text-mode.el ends here