comparison lisp/packages/fontl-hooks.el @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children b82b59fe008d
comparison
equal deleted inserted replaced
-1:000000000000 0:376386a54a3c
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 Free
21 ;; Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
22
23 ;;; Synched up with: FSF 19.30. (font-lock.el)
24
25 ;;; Commentary:
26
27 ;; The reason for the existence of this file is so that modes can
28 ;; call `font-lock-set-defaults' without worrying about whether
29 ;; font-lock is loaded. We don't autoload this from font-lock.el
30 ;; because loading font-lock.el automatically turns font-lock on.
31
32 ;;; Code:
33
34 (defun font-lock-set-defaults (&optional explicit-defaults)
35 "Set fontification defaults appropriately for this mode.
36 Sets `font-lock-keywords', `font-lock-keywords-only', `font-lock-syntax-table',
37 `font-lock-beginning-of-syntax-function' and
38 `font-lock-keywords-case-fold-search'.
39
40 If `font-lock-defaults' is currently set, it is used. Otherwise, the
41 symbol naming the major mode is examined for a `font-lock-defaults'
42 property. If that is not present, but a variable `foo-mode-font-lock-keywords'
43 is, the value of that variable is used as the default for
44 `font-lock-keywords'. Various other backward-compatible behaviors also
45 exist -- if you're curious, look at the source.
46
47 The value of `font-lock-maximum-decoration' is used to determine which
48 set of keywords applies, if more than one exists.
49
50 This will also put the buffer into Font Lock mode if any keywords exist
51 and if auto-fontification is called for, as determined by
52 `font-lock-auto-fontify', `font-lock-mode-enable-list', and
53 `font-lock-mode-disable-list'.
54
55 Calling this function multiple times in the same buffer is safe -- this
56 function keeps track of whether it has already been called in this
57 buffer, and does nothing if so. This allows for multiple ways of getting
58 Font Lock properly initialized in a buffer, to deal with existing major
59 modes that do not call this function. (For example, Font Lock adds this
60 function to `find-file-hooks'.)
61
62 Major modes that have any font-lock defaults specified should call this
63 function during their initialization process, after they have set
64 the variable `major-mode'.
65
66 If EXPLICIT-DEFAULTS is t, this function will not check whether it
67 has already been run in this buffer, and will always do the full
68 computation.
69
70 If EXPLICIT-DEFAULTS is not nil and not t, it should be something
71 that is allowable as a value for `font-lock-defaults' and will be
72 used to initialize the Font Lock variables."
73
74 (if (not (featurep 'font-lock))
75 nil
76 (if (or (and font-lock-auto-fontify
77 (not (memq major-mode font-lock-mode-disable-list)))
78 (and (not font-lock-auto-fontify)
79 (memq major-mode font-lock-mode-enable-list)))
80 (if (and (font-lock-set-defaults-1 explicit-defaults)
81 font-lock-keywords)
82 (turn-on-font-lock)))))
83