Reformatted.
[chise/xemacs-chise.git] / lisp / fontl-hooks.el
1 ;;; fontl-hooks.el --- pre-loaded stuff for font-lock.
2
3 ;; Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
4 ;; Copyright (C) 1995 Amdahl Corporation.
5 ;; Copyright (C) 1996 Ben Wing.
6
7 ;; This file is part of XEmacs.
8
9 ;; XEmacs is free software; you can redistribute it and/or modify it
10 ;; under the terms of the GNU General Public License as published by
11 ;; the Free Software Foundation; either version 2, or (at your option)
12 ;; any later version.
13
14 ;; XEmacs is distributed in the hope that it will be useful, but
15 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 ;; General Public License for more details.
18
19 ;; You should have received a copy of the GNU General Public License
20 ;; along with XEmacs; see the file COPYING.  If not, write to the 
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22 ;; Boston, MA 02111-1307, USA.
23
24 ;;; Synched up with: FSF 19.30. (font-lock.el)
25
26 ;;; Commentary:
27
28 ;; The reason for the existence of this file is so that modes can
29 ;; call `font-lock-set-defaults' without worrying about whether
30 ;; font-lock is loaded.  We don't autoload this from font-lock.el
31 ;; because loading font-lock.el automatically turns font-lock on.
32
33 ;;; Code:
34
35 (defun font-lock-set-defaults (&optional explicit-defaults)
36   "Set fontification defaults appropriately for this mode.
37 Sets `font-lock-keywords', `font-lock-keywords-only', `font-lock-syntax-table',
38 `font-lock-beginning-of-syntax-function' and
39 `font-lock-keywords-case-fold-search'.
40
41 If `font-lock-defaults' is currently set, it is used.  Otherwise, the
42 symbol naming the major mode is examined for a `font-lock-defaults'
43 property.  If that is not present, but a variable `foo-mode-font-lock-keywords'
44 is, the value of that variable is used as the default for
45 `font-lock-keywords'.  Various other backward-compatible behaviors also
46 exist -- if you're curious, look at the source.
47
48 The value of `font-lock-maximum-decoration' is used to determine which
49 set of keywords applies, if more than one exists.
50
51 This will also put the buffer into Font Lock mode if any keywords exist
52 and if auto-fontification is called for, as determined by
53 `font-lock-auto-fontify', `font-lock-mode-enable-list', and
54 `font-lock-mode-disable-list'.
55
56 Calling this function multiple times in the same buffer is safe -- this
57 function keeps track of whether it has already been called in this
58 buffer, and does nothing if so.  This allows for multiple ways of getting
59 Font Lock properly initialized in a buffer, to deal with existing major
60 modes that do not call this function. (For example, Font Lock adds this
61 function to `find-file-hooks'.)
62
63 Major modes that have any font-lock defaults specified should call this
64 function during their initialization process, after they have set
65 the variable `major-mode'.
66
67 If EXPLICIT-DEFAULTS is t, this function will not check whether it
68 has already been run in this buffer, and will always do the full
69 computation.
70
71 If EXPLICIT-DEFAULTS is not nil and not t, it should be something
72 that is allowable as a value for `font-lock-defaults' and will be
73 used to initialize the Font Lock variables."
74
75   (when
76       (and
77        (featurep 'font-lock)
78        (if font-lock-auto-fontify
79            (not (memq major-mode font-lock-mode-disable-list))
80          (memq major-mode font-lock-mode-enable-list))
81        (font-lock-set-defaults-1 explicit-defaults)
82        font-lock-keywords)
83     (turn-on-font-lock)))
84
85 (provide 'fontl-hooks)
86
87 ;;; fontl-hooks.el ends here