(tex-font-lock-append-prop, tex-font-lock-suscript, tex-insert-quote)
[bpt/emacs.git] / lisp / textmodes / text-mode.el
index bc142bf..5e4cfc8 100644 (file)
@@ -1,6 +1,7 @@
 ;;; text-mode.el --- text mode, and its idiosyncratic commands
 
-;; Copyright (C) 1985, 1992, 1994 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1992, 1994, 2002, 2003, 2004,
+;;   2005 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: wp
@@ -19,8 +20,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
   :group 'data)
 
 (defvar text-mode-variant nil
-  "Non-nil if this buffer's major mode is a variant of Text mode.")
-
-(defvar text-mode-syntax-table nil
-  "Syntax table used while in text mode.")
-
-(defvar text-mode-abbrev-table nil
-  "Abbrev table used while in text mode.")
-(define-abbrev-table 'text-mode-abbrev-table ())
-
-(if text-mode-syntax-table
-    ()
-  (setq text-mode-syntax-table (make-syntax-table))
-  (modify-syntax-entry ?\" ".   " text-mode-syntax-table)
-  (modify-syntax-entry ?\\ ".   " text-mode-syntax-table)
-  (modify-syntax-entry ?' "w   " text-mode-syntax-table))
-
-(defvar text-mode-map nil
-  "Keymap for Text mode.
-Many other modes, such as Mail mode, Outline mode and Indented Text mode,
+  "Non-nil if this buffer's major mode is a variant of Text mode.
+Use (derived-mode-p 'text-mode) instead.")
+
+(defvar text-mode-syntax-table
+  (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?\" ".   " st)
+    (modify-syntax-entry ?\\ ".   " st)
+    ;; We add `p' so that M-c on 'hello' leads to 'Hello' rather than 'hello'.
+    (modify-syntax-entry ?' "w p" st)
+    st)
+  "Syntax table used while in `text-mode'.")
+
+(defvar text-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "\e\t" 'ispell-complete-word)
+    (define-key map "\es" 'center-line)
+    (define-key map "\eS" 'center-paragraph)
+    map)
+  "Keymap for `text-mode'.
+Many other modes, such as `mail-mode', `outline-mode' and `indented-text-mode',
 inherit all the commands defined in this map.")
 
-(if text-mode-map
-    ()
-  (setq text-mode-map (make-sparse-keymap))
-  (define-key text-mode-map "\e\t" 'ispell-complete-word)
-  (define-key text-mode-map "\t" 'indent-relative)
-  (define-key text-mode-map "\es" 'center-line)
-  (define-key text-mode-map "\eS" 'center-paragraph))
-
 \f
 (define-derived-mode text-mode nil "Text"
   "Major mode for editing text written for humans to read.
@@ -73,14 +67,11 @@ 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 'paragraph-start)
-  (setq paragraph-start (concat page-delimiter "\\|[ \t]*$"))
-  (if (eq ?^ (aref paragraph-start 0))
-      (setq paragraph-start (substring paragraph-start 1)))
-  (make-local-variable 'paragraph-separate)
-  (setq paragraph-separate paragraph-start)
-  (make-local-variable 'indent-line-function)
-  (setq indent-line-function 'indent-relative-maybe))
+  (make-local-variable 'text-mode-variant)
+  (setq text-mode-variant t)
+  (set (make-local-variable 'require-final-newline)
+       mode-require-final-newline)
+  (set (make-local-variable 'indent-line-function) 'indent-relative))
 
 (define-derived-mode paragraph-indent-text-mode text-mode "Parindent"
   "Major mode for editing text, with leading spaces starting a paragraph.
@@ -91,14 +82,14 @@ Special commands:
 \\{text-mode-map}
 Turning on Paragraph-Indent Text mode runs the normal hooks
 `text-mode-hook' and `paragraph-indent-text-mode-hook'."
-  (paragraph-indent-minor-mode)
-  (run-hooks 'text-mode-hook 'paragraph-indent-text-mode-hook))
+  :abbrev-table nil :syntax-table nil
+  (paragraph-indent-minor-mode))
 
 (defun 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-mode'.
+`paragraph-indent-text-mode'.
 Turning on Paragraph-Indent minor mode runs the normal hook
 `paragraph-indent-text-mode-hook'."
   (interactive)
@@ -106,14 +97,15 @@ Turning on Paragraph-Indent minor mode runs the normal hook
        (concat "[ \t\n\f]\\|" paragraph-start))
   (set (make-local-variable 'indent-line-function) 'indent-to-left-margin)
   (run-hooks 'paragraph-indent-text-mode-hook))
-      
+
 (defalias 'indented-text-mode 'text-mode)
 
+;; This can be made a no-op once all modes that use text-mode-hook
+;; are "derived" from text-mode.
 (defun text-mode-hook-identify ()
   "Mark that this mode has run `text-mode-hook'.
 This is how `toggle-text-mode-auto-fill' knows which buffers to operate on."
-  (make-local-variable 'text-mode-variant)
-  (setq text-mode-variant t))
+  (set (make-local-variable 'text-mode-variant) t))
 
 (add-hook 'text-mode-hook 'text-mode-hook-identify)
 
@@ -188,4 +180,5 @@ 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