aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorStefan Monnier2010-03-24 14:02:56 -0400
committerStefan Monnier2010-03-24 14:02:56 -0400
commite867cb5d30200dd696b012e1ad0964d25c2a7ecc (patch)
tree3340026420f168909eaa734232e4890e15bc1626 /lisp
parentb2b8574b8d03673f5673e2154d17c2cb80f59a0b (diff)
parentefee6a6d9cec2af824b8355c93d8f47b72a685a8 (diff)
downloademacs-e867cb5d30200dd696b012e1ad0964d25c2a7ecc.tar.gz
emacs-e867cb5d30200dd696b012e1ad0964d25c2a7ecc.zip
Merge from `emacs-23'.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog98
-rw-r--r--lisp/calendar/cal-tex.el8
-rw-r--r--lisp/cedet/semantic/imenu.el537
-rw-r--r--lisp/cedet/srecode/table.el2
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el14
-rw-r--r--lisp/emacs-lisp/cl-macs.el5
-rw-r--r--lisp/emacs-lisp/trace.el2
-rw-r--r--lisp/eshell/em-basic.el2
-rw-r--r--lisp/eshell/em-dirs.el8
-rw-r--r--lisp/faces.el8
-rw-r--r--lisp/gnus/ChangeLog8
-rw-r--r--lisp/gnus/message.el8
-rw-r--r--lisp/gnus/smiley.el4
-rw-r--r--lisp/image-dired.el5
-rw-r--r--lisp/indent.el6
-rw-r--r--lisp/json.el12
-rw-r--r--lisp/language/indian.el2
-rw-r--r--lisp/mail/rmail.el25
-rw-r--r--lisp/mh-e/ChangeLog12
-rw-r--r--lisp/mh-e/mh-scan.el62
-rw-r--r--lisp/minibuffer.el6
-rw-r--r--lisp/net/tramp.el27
-rw-r--r--lisp/net/trampver.el2
-rw-r--r--lisp/obsolete/levents.el24
-rw-r--r--lisp/progmodes/cc-engine.el2
-rw-r--r--lisp/progmodes/make-mode.el5
-rw-r--r--lisp/textmodes/flyspell.el2
-rw-r--r--lisp/textmodes/reftex-vars.el80
-rw-r--r--lisp/woman.el12
29 files changed, 838 insertions, 150 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 3c9888182f8..3689508aa52 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,103 @@
12010-03-24 Stefan Monnier <monnier@iro.umontreal.ca> 12010-03-24 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * progmodes/make-mode.el (makefile-rule-action-regex): Backtrack less.
4 (makefile-make-font-lock-keywords): Adjust rule since submatch 1 may
5 not be present any more.
6
72010-03-24 Juanma Barranquero <lekktu@gmail.com>
8
9 * faces.el (set-face-attribute): Fix typo in docstring.
10 (face-valid-attribute-values): Reflow docstring.
11
12 * cedet/srecode/table.el (srecode-template-table): Fix docstring typo.
13
142010-03-24 Glenn Morris <rgm@gnu.org>
15
16 * textmodes/flyspell.el (sgml-lexical-context): Autoload it (Bug#5752).
17
182010-03-24 Chong Yidong <cyd@stupidchicken.com>
19
20 * indent.el (indent-for-tab-command): Doc fix.
21
222010-03-24 Alan Mackenzie <acm@muc.de>
23
24 * progmodes/cc-engine.el (c-remove-stale-state-cache):
25 Fix off-by-one error. Fixes bug #5747.
26
272010-03-24 Juanma Barranquero <lekktu@gmail.com>
28
29 * image-dired.el (image-dired-display-thumbs): Fix typo in docstring.
30 (image-dired-read-comment): Doc fix.
31
32 * json.el (json-object-type, json-array-type, json-key-type)
33 (json-false, json-null, json-read-number):
34 * minibuffer.el (completion-in-region-functions):
35 * calendar/cal-tex.el (cal-tex-daily-end, cal-tex-number-weeks)
36 (cal-tex-cursor-week):
37 * emacs-lisp/trace.el (trace-function):
38 * eshell/em-basic.el (eshell/printnl):
39 * eshell/em-dirs.el (eshell-last-dir-ring, eshell-parse-drive-letter)
40 (eshell-read-last-dir-ring, eshell-write-last-dir-ring):
41 * obsolete/levents.el (allocate-event, event-key, event-object)
42 (event-point, event-process, event-timestamp, event-to-character)
43 (event-window, event-x, event-x-pixel, event-y, event-y-pixel):
44 * textmodes/reftex-vars.el (reftex-index-macros-builtin)
45 (reftex-section-levels, reftex-auto-recenter-toc, reftex-toc-mode-hook)
46 (reftex-cite-punctuation, reftex-search-unrecursed-path-first)
47 (reftex-highlight-selection): Fix typos in docstrings.
48
492010-03-24 Juanma Barranquero <lekktu@gmail.com>
50
51 * minibuffer.el (completion-in-region-functions): Fix docstring typos.
52
532010-03-24 Glenn Morris <rgm@gnu.org>
54
55 * mail/rmail.el (rmail-highlight-face): Restore option deleted
56 2008-02-13 without comment; mark it obsolete.
57 (rmail-highlight-headers): Use rmail-highlight-face once more.
58
592010-03-24 Chong Yidong <cyd@stupidchicken.com>
60
61 * woman.el (woman2-process-escapes): Only consume the newline if
62 the filler character is on a line by itself (Bug#5729).
63
642010-03-24 Kenichi Handa <handa@m17n.org>
65
66 * language/indian.el (devanagari-composable-pattern): Add more
67 consonants.
68
692010-03-24 Michael Albinus <michael.albinus@gmx.de>
70
71 * net/trampver.el: Update release number.
72
732010-03-24 Glenn Morris <rgm@gnu.org>
74
75 * Makefile.in (ELCFILES): Add cedet/semantic/imenu.el.
76
772010-03-24 Michael Albinus <michael.albinus@gmx.de>
78
79 * net/tramp.el (tramp-find-executable):
80 Use `tramp-get-connection-buffer'. Make the regexp for checking
81 output of "wc -l" more robust.
82 (tramp-find-shell): Use another shell but /bin/sh on OpenSolaris.
83 (tramp-open-connection-setup-interactive-shell): Remove workaround
84 for OpenSolaris bug, it is not needed anymore.
85
862010-03-24 Eric M. Ludlam <zappo@gnu.org>
87
88 * cedet/semantic/imenu.el: New file, from the CEDET repository
89 (Bug#5412).
90
912010-03-24 Glenn Morris <rgm@gnu.org>
92
93 * emacs-lisp/cl-macs.el (defsubst*): Add autoload cookie. (Bug#4427)
94
952010-03-24 Wilson Snyder <wsnyder@wsnyder.org>
96
97 * files.el (auto-mode-alist): Accept more verilog file patterns.
98
992010-03-24 Stefan Monnier <monnier@iro.umontreal.ca>
100
3 * vc-dir.el (vc-dir-headers): Abbreviate the working dir. 101 * vc-dir.el (vc-dir-headers): Abbreviate the working dir.
4 102
52010-03-24 Glenn Morris <rgm@gnu.org> 1032010-03-24 Glenn Morris <rgm@gnu.org>
diff --git a/lisp/calendar/cal-tex.el b/lisp/calendar/cal-tex.el
index 0e320ff8f90..bbddc1ff38c 100644
--- a/lisp/calendar/cal-tex.el
+++ b/lisp/calendar/cal-tex.el
@@ -134,7 +134,7 @@ At present, this only affects `cal-tex-cursor-day'."
134 134
135(defcustom cal-tex-daily-end 20 135(defcustom cal-tex-daily-end 20
136 "The last hour of the daily LaTeX calendar page. 136 "The last hour of the daily LaTeX calendar page.
137At present, this only affects `cal-tex-cursor-day'" 137At present, this only affects `cal-tex-cursor-day'."
138 :type 'integer 138 :type 'integer
139 :group 'calendar-tex) 139 :group 'calendar-tex)
140 140
@@ -654,7 +654,7 @@ in the calendar starting in MONTH YEAR."
654 654
655(defun cal-tex-number-weeks (month year n) 655(defun cal-tex-number-weeks (month year n)
656 "Determine the number of weeks in a range of dates. 656 "Determine the number of weeks in a range of dates.
657Compute the number of weeks in the calendar starting with MONTH and YEAR, 657Compute the number of weeks in the calendar starting with MONTH and YEAR,
658and lasting N months, including only the days in WHICH-DAYS. As it stands, 658and lasting N months, including only the days in WHICH-DAYS. As it stands,
659this is only an upper bound." 659this is only an upper bound."
660 (let ((d (list month 1 year))) 660 (let ((d (list month 1 year)))
@@ -683,7 +683,7 @@ this is only an upper bound."
683(defun cal-tex-cursor-week (&optional n event) 683(defun cal-tex-cursor-week (&optional n event)
684 "Make a LaTeX calendar buffer for a two-page one-week calendar. 684 "Make a LaTeX calendar buffer for a two-page one-week calendar.
685It applies to the week that point is in. The optional prefix 685It applies to the week that point is in. The optional prefix
686argument N specifies the number of weeks (default 1). The calendar 686argument N specifies number of weeks (default 1). The calendar
687shows holidays if `cal-tex-holidays' is non-nil (note that diary 687shows holidays if `cal-tex-holidays' is non-nil (note that diary
688entries are not shown). The calendar shows the hours 8-12am, 1-5pm." 688entries are not shown). The calendar shows the hours 8-12am, 1-5pm."
689 (interactive (list (prefix-numeric-value current-prefix-arg) 689 (interactive (list (prefix-numeric-value current-prefix-arg)
@@ -1778,7 +1778,7 @@ Add trailing COMMENT if present."
1778 (cal-tex-comment "end framebox")) 1778 (cal-tex-comment "end framebox"))
1779 1779
1780 1780
1781(defun cal-tex-b-makebox ( width position ) 1781(defun cal-tex-b-makebox (width position)
1782 "Insert makebox with parameters WIDTH and POSITION (clr)." 1782 "Insert makebox with parameters WIDTH and POSITION (clr)."
1783 (insert "\\makebox[" width "][" position "]{" ) 1783 (insert "\\makebox[" width "][" position "]{" )
1784 (cal-tex-comment)) 1784 (cal-tex-comment))
diff --git a/lisp/cedet/semantic/imenu.el b/lisp/cedet/semantic/imenu.el
new file mode 100644
index 00000000000..3c73b893925
--- /dev/null
+++ b/lisp/cedet/semantic/imenu.el
@@ -0,0 +1,537 @@
1;;; semantic/imenu.el --- Use Semantic as an imenu tag generator
2
3;;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2010
4;; Free Software Foundation, Inc.
5
6;; Author: Eric M. Ludlam <zappo@gnu.org>
7;; Maintainer: Eric Ludlam
8
9;; This file is part of GNU Emacs.
10
11;; GNU Emacs is free software: you can redistribute it and/or modify
12;; it under the terms of the GNU General Public License as published by
13;; the Free Software Foundation, either version 3 of the License, or
14;; (at your option) any later version.
15
16;; GNU Emacs is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
22;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
23
24;;; Commentary:
25;;
26;; This support function can be used in any buffer which supports
27;; the bovinator to create the imenu index.
28;;
29;; To use this in a buffer, do this in a hook.
30;;
31;; (add-hook 'mode-hook
32;; (lambda ()
33;; (setq imenu-create-index-function 'semantic-create-imenu-index)
34;; ))
35
36(require 'semantic)
37(require 'semantic/format)
38(require 'semantic/db)
39(require 'semantic/db-file)
40(require 'semantic/sort)
41(require 'imenu)
42
43(declare-function pulse-momentary-highlight-one-line "pulse" (o &optional face))
44(declare-function semanticdb-semantic-init-hook-fcn "db-mode")
45
46;; Because semantic imenu tags will hose the current imenu handling
47;; code in speedbar, force semantic/sb in.
48(if (featurep 'speedbar)
49 (require 'semantic/sb)
50 (add-hook 'speedbar-load-hook (lambda () (require 'semantic/sb))))
51
52(defgroup semantic-imenu nil
53 "Semantic interface to Imenu."
54 :group 'semantic
55 :group 'imenu
56 )
57
58;;;###autoload
59(defcustom semantic-imenu-summary-function 'semantic-format-tag-abbreviate
60 "*Function to use when creating items in Imenu.
61Some useful functions are found in `semantic-format-tag-functions'."
62 :group 'semantic-imenu
63 :type semantic-format-tag-custom-list)
64(make-variable-buffer-local 'semantic-imenu-summary-function)
65
66;;;###autoload
67(defcustom semantic-imenu-bucketize-file t
68 "*Non-nil if tags in a file are to be grouped into buckets."
69 :group 'semantic-imenu
70 :type 'boolean)
71(make-variable-buffer-local 'semantic-imenu-bucketize-file)
72
73(defcustom semantic-imenu-adopt-external-members t
74 "*Non-nil if types in a file should adopt externally defined members.
75C++ and CLOS can define methods that are not in the body of a class
76definition."
77 :group 'semantic-imenu
78 :type 'boolean)
79
80(defcustom semantic-imenu-buckets-to-submenu t
81 "*Non-nil if buckets of tags are to be turned into submenus.
82This option is ignored if `semantic-imenu-bucketize-file' is nil."
83 :group 'semantic-imenu
84 :type 'boolean)
85(make-variable-buffer-local 'semantic-imenu-buckets-to-submenu)
86
87;;;###autoload
88(defcustom semantic-imenu-expand-type-members t
89 "*Non-nil if types should have submenus with members in them."
90 :group 'semantic-imenu
91 :type 'boolean)
92(make-variable-buffer-local 'semantic-imenu-expand-type-members)
93(semantic-varalias-obsolete 'semantic-imenu-expand-type-parts
94 'semantic-imenu-expand-type-members "23.2")
95
96(defcustom semantic-imenu-bucketize-type-members t
97 "*Non-nil if members of a type should be grouped into buckets.
98nil means to keep them in the same order.
99Overriden to nil if `semantic-imenu-bucketize-file' is nil."
100 :group 'semantic-imenu
101 :type 'boolean)
102(make-variable-buffer-local 'semantic-imenu-bucketize-type-parts)
103(semantic-varalias-obsolete 'semantic-imenu-bucketize-type-parts
104 'semantic-imenu-bucketize-type-members "23.2")
105
106(defcustom semantic-imenu-sort-bucket-function nil
107 "*Function to use when sorting tags in the buckets of functions.
108See `semantic-bucketize' and the FILTER argument for more details on this function."
109 :group 'semantic-imenu
110 :type '(radio (const :tag "No Sorting" nil)
111 (const semantic-sort-tags-by-name-increasing)
112 (const semantic-sort-tags-by-name-decreasing)
113 (const semantic-sort-tags-by-type-increasing)
114 (const semantic-sort-tags-by-type-decreasing)
115 (const semantic-sort-tags-by-name-increasing-ci)
116 (const semantic-sort-tags-by-name-decreasing-ci)
117 (const semantic-sort-tags-by-type-increasing-ci)
118 (const semantic-sort-tags-by-type-decreasing-ci)
119 (function)))
120(make-variable-buffer-local 'semantic-imenu-sort-bucket-function)
121
122(defcustom semantic-imenu-index-directory nil
123 "*Non nil to index the entire directory for tags.
124Doesn't actually parse the entire directory, but displays tags for all files
125currently listed in the current Semantic database.
126This variable has no meaning if semanticdb is not active."
127 :group 'semantic-imenu
128 :type 'boolean)
129
130(defcustom semantic-imenu-auto-rebuild-directory-indexes nil
131 "*If non-nil automatically rebuild directory index imenus.
132That is when a directory index imenu is updated, automatically rebuild
133other buffer local ones based on the same semanticdb."
134 :group 'semantic-imenu
135 :type 'boolean)
136
137(defvar semantic-imenu-directory-current-file nil
138 "When building a file index, this is the file name currently being built.")
139
140(defvar semantic-imenu-auto-rebuild-running nil
141 "Non-nil if `semantic-imenu-rebuild-directory-indexes' is running.")
142
143;;;###autoload
144(defvar semantic-imenu-expandable-tag-classes '(type)
145 "List of expandable tag classes.
146Tags of those classes will be given submenu with children.
147By default, a `type' has interesting children. In Texinfo, however, a
148`section' has interesting children.")
149(make-variable-buffer-local 'semantic-imenu-expandable-tag-classes)
150(semantic-varalias-obsolete 'semantic-imenu-expandable-token
151 'semantic-imenu-expandable-tag-classes "23.2")
152
153;;; Code:
154(defun semantic-imenu-tag-overlay (tag)
155 "Return the overlay belonging to tag.
156If TAG doesn't have an overlay, and instead as a vector of positions,
157concoct a combination of file name, and position."
158 (let ((o (semantic-tag-overlay tag)))
159 (if (not (semantic-overlay-p o))
160 (let ((v (make-vector 3 nil)))
161 (aset v 0 semantic-imenu-directory-current-file)
162 (aset v 1 (aref o 0))
163 (aset v 2 (aref o 1))
164 v)
165 o)))
166
167
168(defun semantic-imenu-goto-function (name position &optional rest)
169 "Move point associated with NAME to POSITION.
170Used to override function `imenu-default-goto-function' so that we can continue
171to use overlays to maintain the current position.
172Optional argument REST is some extra stuff."
173 (require 'pulse)
174 (if (semantic-overlay-p position)
175 (let ((os (semantic-overlay-start position))
176 (ob (semantic-overlay-buffer position)))
177 (if os
178 (progn
179 (if (not (eq ob (current-buffer)))
180 (switch-to-buffer ob))
181 (imenu-default-goto-function name os rest)
182 (pulse-momentary-highlight-one-line (point))
183 )
184 ;; This should never happen, but check anyway.
185 (message "Imenu is out of date, try again. (internal bug)")
186 (setq imenu--index-alist nil)))
187 ;; When the POSITION is actually a pair of numbers in an array, then
188 ;; the file isn't loaded into the current buffer.
189 (if (vectorp position)
190 (let ((file (aref position 0))
191 (pos (aref position 1)))
192 (and file (find-file file))
193 (imenu-default-goto-function name pos rest)
194 (pulse-momentary-highlight-one-line (point))
195 )
196 ;; When the POSITION is the symbol 'file-only' it means that this
197 ;; is a directory index entry and there is no tags in this
198 ;; file. So just jump to the beginning of the file.
199 (if (eq position 'file-only)
200 (progn
201 (find-file name)
202 (imenu-default-goto-function name (point-min) rest)
203 (pulse-momentary-highlight-one-line (point))
204 )
205 ;; Probably POSITION don't came from a semantic imenu. Try
206 ;; the default imenu goto function.
207 (condition-case nil
208 (progn
209 (imenu-default-goto-function name position rest)
210 (pulse-momentary-highlight-one-line (point))
211 )
212 (error
213 (message "Semantic Imenu override problem. (Internal bug)")
214 (setq imenu--index-alist nil)))))
215 ))
216
217(defun semantic-imenu-flush-fcn (&optional ignore)
218 "This function is called as a hook to clear the imenu cache.
219It is cleared after any parsing.
220IGNORE arguments."
221 (if (eq imenu-create-index-function 'semantic-create-imenu-index)
222 (setq imenu--index-alist nil
223 imenu-menubar-modified-tick 0))
224 (remove-hook 'semantic-after-toplevel-cache-change-hook
225 'semantic-imenu-flush-fcn t)
226 (remove-hook 'semantic-after-partial-cache-change-hook
227 'semantic-imenu-flush-fcn t)
228 )
229
230;;;###autoload
231(defun semantic-create-imenu-index (&optional stream)
232 "Create an imenu index for any buffer which supports Semantic.
233Uses the output of the Semantic parser to create the index.
234Optional argument STREAM is an optional stream of tags used to create menus."
235 (setq imenu-default-goto-function 'semantic-imenu-goto-function)
236 (prog1
237 (if (and semantic-imenu-index-directory
238 (featurep 'semanticdb)
239 (semanticdb-minor-mode-p))
240 (semantic-create-imenu-directory-index
241 (or stream (semantic-fetch-tags-fast)))
242 (semantic-create-imenu-index-1
243 (or stream (semantic-fetch-tags-fast)) nil))
244 (semantic-make-local-hook 'semantic-after-toplevel-cache-change-hook)
245 (add-hook 'semantic-after-toplevel-cache-change-hook
246 'semantic-imenu-flush-fcn nil t)
247 (semantic-make-local-hook 'semantic-after-partial-cache-change-hook)
248 (add-hook 'semantic-after-partial-cache-change-hook
249 'semantic-imenu-flush-fcn nil t)))
250
251(defun semantic-create-imenu-directory-index (&optional stream)
252 "Create an IMENU tag index based on all files active in semanticdb.
253Optional argument STREAM is the stream of tags for the current buffer."
254 (if (not semanticdb-current-database)
255 (semantic-create-imenu-index-1 stream nil)
256 ;; We have a database, list all files, with the current file on top.
257 (let ((index (list
258 (cons (oref semanticdb-current-table file)
259 (or (semantic-create-imenu-index-1 stream nil)
260 ;; No tags in this file
261 'file-only))))
262 (tables (semanticdb-get-database-tables semanticdb-current-database)))
263 (while tables
264 (let ((semantic-imenu-directory-current-file
265 (oref (car tables) file))
266 tags)
267 (when (and (not (eq (car tables) semanticdb-current-table))
268 (semanticdb-live-p (car tables))
269 (semanticdb-equivalent-mode (car tables))
270 )
271 (setq tags (oref (car tables) tags)
272 index (cons (cons semantic-imenu-directory-current-file
273 (or (and tags
274 ;; don't pass nil stream because
275 ;; it will use the current
276 ;; buffer
277 (semantic-create-imenu-index-1
278 (oref (car tables) tags)
279 nil))
280 ;; no tags in the file
281 'file-only))
282 index)))
283 (setq tables (cdr tables))))
284
285 ;; If enabled automatically rebuild other imenu directory
286 ;; indexes based on the same Semantic database
287 (or (not semantic-imenu-auto-rebuild-directory-indexes)
288 ;; If auto rebuild already in progress does nothing
289 semantic-imenu-auto-rebuild-running
290 (unwind-protect
291 (progn
292 (setq semantic-imenu-auto-rebuild-running t)
293 (semantic-imenu-rebuild-directory-indexes
294 semanticdb-current-database))
295 (setq semantic-imenu-auto-rebuild-running nil)))
296
297 (nreverse index))))
298
299(defun semantic-create-imenu-index-1 (stream &optional parent)
300 "Create an imenu index for any buffer which supports Semantic.
301Uses the output of the Semantic parser to create the index.
302STREAM is a stream of tags used to create menus.
303Optional argument PARENT is a tag parent of STREAM."
304 (let ((tags stream)
305 (semantic-imenu-adopt-external-members
306 semantic-imenu-adopt-external-members))
307 ;; If we should regroup, do so.
308 (if semantic-imenu-adopt-external-members
309 (setq tags (semantic-adopt-external-members tags)
310 ;; Don't allow recursion here.
311 semantic-imenu-adopt-external-members nil))
312 ;; Test for bucketing vs not.
313 (if semantic-imenu-bucketize-file
314 (let ((buckets (semantic-bucketize
315 tags parent
316 semantic-imenu-sort-bucket-function))
317 item name
318 index)
319 (cond
320 ((null buckets)
321 nil)
322 ((or (cdr-safe buckets) ;; if buckets has more than one item in it.
323 (not semantic-imenu-buckets-to-submenu)) ;; to force separators between buckets
324 (while buckets
325 (setq name (car (car buckets))
326 item (cdr (car buckets)))
327 (if semantic-imenu-buckets-to-submenu
328 (progn
329 ;; Make submenus
330 (if item
331 (setq index
332 (cons (cons name
333 (semantic-create-imenu-subindex item))
334 index))))
335 ;; Glom everything together with "---" between
336 (if item
337 (setq index
338 (append index
339 ;; do not create a menu separator in the parent menu
340 ;; when creating a sub-menu
341 (if (memq (semantic-tag-class (car item))
342 semantic-imenu-expandable-tag-classes)
343 (semantic-create-imenu-subindex item)
344 (cons
345 '("---")
346 (semantic-create-imenu-subindex item)))))
347 ))
348 (setq buckets (cdr buckets)))
349 (if semantic-imenu-buckets-to-submenu
350 (nreverse index)
351 index))
352 (t
353 (setq name (car (car buckets))
354 item (cdr (car buckets)))
355 (semantic-create-imenu-subindex item))))
356 ;; Else, group everything together
357 (semantic-create-imenu-subindex tags))))
358
359(defun semantic-create-imenu-subindex (tags)
360 "From TAGS, create an imenu index of interesting things."
361 (let ((notypecheck (not semantic-imenu-expand-type-members))
362 children index tag parts)
363 (while tags
364 (setq tag (car tags)
365 children (semantic-tag-components-with-overlays tag))
366 (if (and (not notypecheck)
367 (memq (semantic-tag-class tag)
368 semantic-imenu-expandable-tag-classes)
369 children
370 )
371 ;; to keep an homogeneous menu organisation, type menu items
372 ;; always have a sub-menu with at least the *definition*
373 ;; item (even if the tag has no type components)
374 (progn
375 (setq parts children)
376 ;; There is options which create the submenu
377 ;; * Type has an overlay, but children do.
378 ;; The type doesn't have to have it's own overlay,
379 ;; but a type with no overlay and no children should be
380 ;; invalid.
381 (setq index
382 (cons
383 (cons
384 (funcall semantic-imenu-summary-function tag)
385 ;; Add a menu for getting at the type definitions
386 (if (and parts
387 ;; Note to self: enable menu items for
388 ;; sub parts even if they are not proper
389 ;; tags.
390 (semantic-tag-p (car parts)))
391 (let ((submenu
392 (if (and semantic-imenu-bucketize-type-members
393 semantic-imenu-bucketize-file)
394 (semantic-create-imenu-index-1 parts tag)
395 (semantic-create-imenu-subindex parts))))
396 ;; Only add a *definition* if we have a postion
397 ;; in that type tag.
398 (if (semantic-tag-with-position-p tag)
399 (cons
400 (cons "*definition*"
401 (semantic-imenu-tag-overlay tag))
402 submenu)
403 submenu))
404 ;; There were no parts, or something like that, so
405 ;; instead just put the definition here.
406 (if (semantic-tag-with-position-p tag)
407 (semantic-imenu-tag-overlay tag)
408 nil)
409 ))
410 index)))
411 (if (semantic-tag-with-position-p tag)
412 (setq index (cons
413 (cons
414 (funcall semantic-imenu-summary-function tag)
415 (semantic-imenu-tag-overlay tag))
416 index))))
417 (setq tags (cdr tags)))
418 ;; `imenu--split-submenus' sort submenus according to
419 ;; `imenu-sort-function' setting and split them up if they are
420 ;; longer than `imenu-max-items'.
421 (imenu--split-submenus (nreverse index))))
422
423;;; directory imenu rebuilding.
424;;
425(defun semantic-imenu-rebuild-directory-indexes (db)
426 "Rebuild directory index imenus based on Semantic database DB."
427 (let ((l (buffer-list))
428 b)
429 (while l
430 (setq b (car l)
431 l (cdr l))
432 (if (and (not (eq b (current-buffer)))
433 (buffer-live-p b))
434 (with-current-buffer b
435 ;; If there is a buffer local Semantic index directory
436 ;; imenu
437 (when (and (eq imenu-create-index-function
438 'semantic-create-imenu-index)
439 semanticdb-current-database
440 (eq semanticdb-current-database db))
441 ;; Rebuild the imenu
442 (imenu--cleanup)
443 (setq imenu--index-alist nil)
444 (funcall
445 (if (fboundp 'imenu-menu-filter)
446 ;; XEmacs imenu
447 'imenu-menu-filter
448 ;; Emacs imenu
449 'imenu-update-menubar))))))))
450
451(defun semantic-imenu-semanticdb-hook ()
452 "Function to be called from `semanticdb-mode-hook'.
453Clears all imenu menus that may be depending on the database."
454 (require 'semantic/db-mode)
455 (semantic-map-buffers
456 #'(lambda ()
457 ;; Set up semanticdb environment if enabled.
458 (if (semanticdb-minor-mode-p)
459 (semanticdb-semantic-init-hook-fcn))
460 ;; Clear imenu cache to redraw the imenu.
461 (semantic-imenu-flush-fcn))))
462
463(add-hook 'semanticdb-mode-hook 'semantic-imenu-semanticdb-hook)
464
465;;; Interactive Utilities
466;;
467(defun semantic-imenu-toggle-bucketize-file ()
468 "Toggle the ability of imenu to bucketize the current file."
469 (interactive)
470 (setq semantic-imenu-bucketize-file (not semantic-imenu-bucketize-file))
471 ;; Force a rescan
472 (setq imenu--index-alist nil))
473
474(defun semantic-imenu-toggle-buckets-to-submenu ()
475 "Toggle the ability of imenu to turn buckets into submenus."
476 (interactive)
477 (setq semantic-imenu-buckets-to-submenu (not semantic-imenu-buckets-to-submenu))
478 ;; Force a rescan
479 (setq imenu--index-alist nil))
480
481(defun semantic-imenu-toggle-bucketize-type-parts ()
482 "Toggle the ability of imenu to bucketize the current file."
483 (interactive)
484 (setq semantic-imenu-bucketize-type-members (not semantic-imenu-bucketize-type-members))
485 ;; Force a rescan
486 (setq imenu--index-alist nil))
487
488;;; Which function support
489;;
490;; The which-function library will display the current function in the
491;; mode line. It tries do do this through imenu. With a semantic parsed
492;; buffer, there is a much more efficient way of doing this.
493;; Advise `which-function' so that we optionally use semantic tags
494;; instead, and get better stuff.
495(require 'advice)
496
497(defvar semantic-which-function 'semantic-default-which-function
498 "Function to convert semantic tags into `which-function' text.")
499
500(defcustom semantic-which-function-use-color nil
501 "*Use color when displaying the current function with `which-function'."
502 :group 'semantic-imenu
503 :type 'boolean)
504
505(defun semantic-default-which-function (taglist)
506 "Convert TAGLIST into a string usable by `which-function'.
507Returns the first tag name in the list, unless it is a type,
508in which case it concatenates them together."
509 (cond ((eq (length taglist) 1)
510 (semantic-format-tag-abbreviate
511 (car taglist) nil semantic-which-function-use-color))
512 ((memq (semantic-tag-class (car taglist))
513 semantic-imenu-expandable-tag-classes)
514 (concat (semantic-format-tag-name
515 (car taglist) nil semantic-which-function-use-color)
516 (car semantic-type-relation-separator-character)
517 ;; recurse until we no longer have a type
518 ;; or any tags left.
519 (semantic-default-which-function (cdr taglist))))
520 (t (semantic-format-tag-abbreviate
521 (car taglist) nil semantic-which-function-use-color))))
522
523;; (defadvice which-function (around semantic-which activate)
524;; "Choose the function to display via semantic if it is currently active."
525;; (if (and (featurep 'semantic) semantic--buffer-cache)
526;; (let ((ol (semantic-find-tag-by-overlay)))
527;; (setq ad-return-value (funcall semantic-which-function ol)))
528;; ad-do-it))
529
530(provide 'semantic/imenu)
531
532;; Local variables:
533;; generated-autoload-file: "loaddefs.el"
534;; generated-autoload-load-name: "semantic/imenu"
535;; End:
536
537;;; semantic/imenu.el ends here
diff --git a/lisp/cedet/srecode/table.el b/lisp/cedet/srecode/table.el
index 8da38b5f4c4..3d22922d551 100644
--- a/lisp/cedet/srecode/table.el
+++ b/lisp/cedet/srecode/table.el
@@ -66,7 +66,7 @@ Format is from the `file-attributes' function.")
66If this is nil, then this template table belongs to a set of generic 66If this is nil, then this template table belongs to a set of generic
67templates that can be used with no additional dictionary values. 67templates that can be used with no additional dictionary values.
68When it is non-nil, it is assumed the template macros need specialized 68When it is non-nil, it is assumed the template macros need specialized
69Emacs Lisp code to fill in the dictoinary.") 69Emacs Lisp code to fill in the dictionary.")
70 (priority :initarg :priority 70 (priority :initarg :priority
71 :type number 71 :type number
72 :documentation 72 :documentation
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index 3beda28abf2..bdae05e7774 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -273,8 +273,8 @@ Not documented
273 273
274;;;*** 274;;;***
275 275
276;;;### (autoloads (compiler-macroexpand define-compiler-macro assert 276;;;### (autoloads (defsubst* compiler-macroexpand define-compiler-macro
277;;;;;; check-type typep deftype cl-struct-setf-expander defstruct 277;;;;;; assert check-type typep deftype cl-struct-setf-expander defstruct
278;;;;;; define-modify-macro callf2 callf letf* letf rotatef shiftf 278;;;;;; define-modify-macro callf2 callf letf* letf rotatef shiftf
279;;;;;; remf cl-do-pop psetf setf get-setf-method defsetf define-setf-method 279;;;;;; remf cl-do-pop psetf setf get-setf-method defsetf define-setf-method
280;;;;;; declare the locally multiple-value-setq multiple-value-bind 280;;;;;; declare the locally multiple-value-setq multiple-value-bind
@@ -282,7 +282,7 @@ Not documented
282;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist 282;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist
283;;;;;; do* do loop return-from return block etypecase typecase ecase 283;;;;;; do* do loop return-from return block etypecase typecase ecase
284;;;;;; case load-time-value eval-when destructuring-bind function* 284;;;;;; case load-time-value eval-when destructuring-bind function*
285;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "e10a7e42199c08dc39460f67dd2d424b") 285;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "273ba25f4a116c61a464dbe55f1f8c63")
286;;; Generated autoloads from cl-macs.el 286;;; Generated autoloads from cl-macs.el
287 287
288(autoload 'gensym "cl-macs" "\ 288(autoload 'gensym "cl-macs" "\
@@ -739,6 +739,14 @@ Not documented
739 739
740\(fn FORM)" nil nil) 740\(fn FORM)" nil nil)
741 741
742(autoload 'defsubst* "cl-macs" "\
743Define NAME as a function.
744Like `defun', except the function is automatically declared `inline',
745ARGLIST allows full Common Lisp conventions, and BODY is implicitly
746surrounded by (block NAME ...).
747
748\(fn NAME ARGLIST [DOCSTRING] BODY...)" nil (quote macro))
749
742;;;*** 750;;;***
743 751
744;;;### (autoloads (tree-equal nsublis sublis nsubst-if-not nsubst-if 752;;;### (autoloads (tree-equal nsublis sublis nsubst-if-not nsubst-if
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 4e3b1fb72d9..8a60ffdf1fe 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1,7 +1,7 @@
1;;; cl-macs.el --- Common Lisp macros 1;;; cl-macs.el --- Common Lisp macros
2 2
3;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 3;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
4;; Free Software Foundation, Inc. 4;; 2009, 2010 Free Software Foundation, Inc.
5 5
6;; Author: Dave Gillespie <daveg@synaptics.com> 6;; Author: Dave Gillespie <daveg@synaptics.com>
7;; Version: 2.02 7;; Version: 2.02
@@ -2596,6 +2596,7 @@ and then returning foo."
2596 (byte-compile-normal-call form) 2596 (byte-compile-normal-call form)
2597 (byte-compile-form form))) 2597 (byte-compile-form form)))
2598 2598
2599;;;###autoload
2599(defmacro defsubst* (name args &rest body) 2600(defmacro defsubst* (name args &rest body)
2600 "Define NAME as a function. 2601 "Define NAME as a function.
2601Like `defun', except the function is automatically declared `inline', 2602Like `defun', except the function is automatically declared `inline',
diff --git a/lisp/emacs-lisp/trace.el b/lisp/emacs-lisp/trace.el
index 9b143cbf18c..194afe10815 100644
--- a/lisp/emacs-lisp/trace.el
+++ b/lisp/emacs-lisp/trace.el
@@ -253,7 +253,7 @@
253For every call of FUNCTION Lisp-style trace messages that display argument 253For every call of FUNCTION Lisp-style trace messages that display argument
254and return values will be inserted into BUFFER. This function generates the 254and return values will be inserted into BUFFER. This function generates the
255trace advice for FUNCTION and activates it together with any other advice 255trace advice for FUNCTION and activates it together with any other advice
256there might be!! The trace BUFFER will popup whenever FUNCTION is called. 256there might be!! The trace BUFFER will popup whenever FUNCTION is called.
257Do not use this to trace functions that switch buffers or do any other 257Do not use this to trace functions that switch buffers or do any other
258display oriented stuff, use `trace-function-background' instead." 258display oriented stuff, use `trace-function-background' instead."
259 (interactive 259 (interactive
diff --git a/lisp/eshell/em-basic.el b/lisp/eshell/em-basic.el
index 775b67a3fa3..a4074011f58 100644
--- a/lisp/eshell/em-basic.el
+++ b/lisp/eshell/em-basic.el
@@ -125,7 +125,7 @@ or `eshell-printn' for display."
125 (eshell-echo args output-newline))) 125 (eshell-echo args output-newline)))
126 126
127(defun eshell/printnl (&rest args) 127(defun eshell/printnl (&rest args)
128 "Print out each of the argument, separated by newlines." 128 "Print out each of the arguments, separated by newlines."
129 (let ((elems (eshell-flatten-list args))) 129 (let ((elems (eshell-flatten-list args)))
130 (while elems 130 (while elems
131 (eshell-printn (eshell-echo (list (car elems)))) 131 (eshell-printn (eshell-echo (list (car elems))))
diff --git a/lisp/eshell/em-dirs.el b/lisp/eshell/em-dirs.el
index 3104bb11b17..43bc3ffaa6f 100644
--- a/lisp/eshell/em-dirs.el
+++ b/lisp/eshell/em-dirs.el
@@ -178,7 +178,7 @@ thing again."
178Thus, this does not include the current directory.") 178Thus, this does not include the current directory.")
179 179
180(defvar eshell-last-dir-ring nil 180(defvar eshell-last-dir-ring nil
181 "The last directory that eshell was in.") 181 "The last directory that Eshell was in.")
182 182
183;;; Functions: 183;;; Functions:
184 184
@@ -267,7 +267,7 @@ Thus, this does not include the current directory.")
267 (char-to-string (char-before)))) 267 (char-to-string (char-before))))
268 268
269(defun eshell-parse-drive-letter () 269(defun eshell-parse-drive-letter ()
270 "An argument beginning X:[^/] is a drive letter reference." 270 "An argument beginning with X:[^/] is a drive letter reference."
271 (when (and (not eshell-current-argument) 271 (when (and (not eshell-current-argument)
272 (looking-at "\\([A-Za-z]:\\)\\([^/\\\\]\\|\\'\\)")) 272 (looking-at "\\([A-Za-z]:\\)\\([^/\\\\]\\|\\'\\)"))
273 (goto-char (match-end 1)) 273 (goto-char (match-end 1))
@@ -517,7 +517,7 @@ in the minibuffer:
517 msg))) 517 msg)))
518 518
519(defun eshell-read-last-dir-ring () 519(defun eshell-read-last-dir-ring ()
520 "Sets the buffer's `eshell-last-dir-ring' from a history file." 520 "Set the buffer's `eshell-last-dir-ring' from a history file."
521 (let ((file eshell-last-dir-ring-file-name)) 521 (let ((file eshell-last-dir-ring-file-name))
522 (cond 522 (cond
523 ((or (null file) 523 ((or (null file)
@@ -545,7 +545,7 @@ in the minibuffer:
545 (setq eshell-last-dir-ring ring)))))) 545 (setq eshell-last-dir-ring ring))))))
546 546
547(defun eshell-write-last-dir-ring () 547(defun eshell-write-last-dir-ring ()
548 "Writes the buffer's `eshell-last-dir-ring' to a history file." 548 "Write the buffer's `eshell-last-dir-ring' to a history file."
549 (let ((file eshell-last-dir-ring-file-name)) 549 (let ((file eshell-last-dir-ring-file-name))
550 (cond 550 (cond
551 ((or (null file) 551 ((or (null file)
diff --git a/lisp/faces.el b/lisp/faces.el
index a5bc7b1c965..900e96ed048 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -590,7 +590,7 @@ the default for new frames (this is done automatically each time an
590attribute is changed on all frames). 590attribute is changed on all frames).
591 591
592ARGS must come in pairs ATTRIBUTE VALUE. ATTRIBUTE must be a valid 592ARGS must come in pairs ATTRIBUTE VALUE. ATTRIBUTE must be a valid
593face attribute name. All attributes can be set to `unspecified'; 593face attribute name. All attributes can be set to `unspecified';
594this fact is not further mentioned below. 594this fact is not further mentioned below.
595 595
596The following attributes are recognized: 596The following attributes are recognized:
@@ -988,9 +988,9 @@ Otherwise, return a single face."
988(defun face-valid-attribute-values (attribute &optional frame) 988(defun face-valid-attribute-values (attribute &optional frame)
989 "Return valid values for face attribute ATTRIBUTE. 989 "Return valid values for face attribute ATTRIBUTE.
990The optional argument FRAME is used to determine available fonts 990The optional argument FRAME is used to determine available fonts
991and colors. If it is nil or not specified, the selected frame is 991and colors. If it is nil or not specified, the selected frame is used.
992used. Value is an alist of (NAME . VALUE) if ATTRIBUTE expects a value 992Value is an alist of (NAME . VALUE) if ATTRIBUTE expects a value out
993out of a set of discrete values. Value is `integerp' if ATTRIBUTE expects 993of a set of discrete values. Value is `integerp' if ATTRIBUTE expects
994an integer value." 994an integer value."
995 (let ((valid 995 (let ((valid
996 (case attribute 996 (case attribute
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 88c2280f6a3..20a8cb63997 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,11 @@
12010-03-24 Juanma Barranquero <lekktu@gmail.com>
2
3 * message.el (message-interactive): Doc fix.
4 (message-qmail-inject-args): Reflow.
5 (message-kill-to-signature): Fix typo in docstring.
6
7 * smiley.el (smiley-buffer): Fix typo in docstring.
8
12010-03-24 Glenn Morris <rgm@gnu.org> 92010-03-24 Glenn Morris <rgm@gnu.org>
2 10
3 * mail-source.el (gnus-message): Declare. 11 * mail-source.el (gnus-message): Declare.
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 03a4a40a66f..d64a3aa0244 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -440,7 +440,7 @@ whitespace)."
440;; Default to the value of `mail-interactive', available in all Emacsen 440;; Default to the value of `mail-interactive', available in all Emacsen
441;; that Gnus supports. 441;; that Gnus supports.
442 "Non-nil means when sending a message wait for and display errors. 442 "Non-nil means when sending a message wait for and display errors.
443nil means let mailer mail back a message to report errors." 443A value of nil means let mailer mail back a message to report errors."
444 :version "23.2" 444 :version "23.2"
445 :group 'message-sending 445 :group 'message-sending
446 :group 'message-mail 446 :group 'message-mail
@@ -861,8 +861,8 @@ If this is nil, use `user-mail-address'. If it is the symbol
861 861
862(defcustom message-qmail-inject-args nil 862(defcustom message-qmail-inject-args nil
863 "Arguments passed to qmail-inject programs. 863 "Arguments passed to qmail-inject programs.
864This should be a list of strings, one string for each argument. It 864This should be a list of strings, one string for each argument.
865may also be a function. 865It may also be a function.
866 866
867For e.g., if you wish to set the envelope sender address so that bounces 867For e.g., if you wish to set the envelope sender address so that bounces
868go to the right place or to deal with listserv's usage of that address, you 868go to the right place or to deal with listserv's usage of that address, you
@@ -3254,7 +3254,7 @@ or in the synonym headers, defined by `message-header-synonyms'."
3254 3254
3255(defun message-kill-to-signature (&optional arg) 3255(defun message-kill-to-signature (&optional arg)
3256 "Kill all text up to the signature. 3256 "Kill all text up to the signature.
3257If a numberic argument or prefix arg is given, leave that number 3257If a numeric argument or prefix arg is given, leave that number
3258of lines before the signature intact." 3258of lines before the signature intact."
3259 (interactive "P") 3259 (interactive "P")
3260 (save-excursion 3260 (save-excursion
diff --git a/lisp/gnus/smiley.el b/lisp/gnus/smiley.el
index 8e79dd58125..fbe71e7725f 100644
--- a/lisp/gnus/smiley.el
+++ b/lisp/gnus/smiley.el
@@ -196,8 +196,8 @@ A list of images is returned."
196 196
197;;;###autoload 197;;;###autoload
198(defun smiley-buffer (&optional buffer) 198(defun smiley-buffer (&optional buffer)
199 "Run `smiley-region' at the buffer, specified in the argument or 199 "Run `smiley-region' at the BUFFER, specified in the argument or
200interactively. If there's no argument, do it at the current buffer" 200interactively. If there's no argument, do it at the current buffer."
201 (interactive "bBuffer to run smiley-region: ") 201 (interactive "bBuffer to run smiley-region: ")
202 (save-excursion 202 (save-excursion
203 (if buffer 203 (if buffer
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 8eb1d127819..f006e2e9edd 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -801,7 +801,7 @@ you have the dired buffer in the left window and the
801With optional argument APPEND, append thumbnail to thumbnail buffer 801With optional argument APPEND, append thumbnail to thumbnail buffer
802instead of erasing it first. 802instead of erasing it first.
803 803
804Option argument DO-NOT-POP controls if `pop-to-buffer' should be 804Optional argument DO-NOT-POP controls if `pop-to-buffer' should be
805used or not. If non-nil, use `display-buffer' instead of 805used or not. If non-nil, use `display-buffer' instead of
806`pop-to-buffer'. This is used from functions like 806`pop-to-buffer'. This is used from functions like
807`image-dired-next-line-and-display' and 807`image-dired-next-line-and-display' and
@@ -2113,8 +2113,7 @@ FILE-COMMENTS is an alist on the following form:
2113 2113
2114(defun image-dired-read-comment (&optional file) 2114(defun image-dired-read-comment (&optional file)
2115 "Read comment for an image. 2115 "Read comment for an image.
2116Read comment for an image, optionally using old comment from FILE 2116Optionally use old comment from FILE as initial value."
2117as initial value."
2118 (let ((comment 2117 (let ((comment
2119 (read-string 2118 (read-string
2120 "Comment: " 2119 "Comment: "
diff --git a/lisp/indent.el b/lisp/indent.el
index 3f8353bd90c..adecbfaeb12 100644
--- a/lisp/indent.el
+++ b/lisp/indent.el
@@ -85,8 +85,10 @@ special; we don't actually use them here."
85(defun indent-for-tab-command (&optional arg) 85(defun indent-for-tab-command (&optional arg)
86 "Indent line or region in proper way for current major mode or insert a tab. 86 "Indent line or region in proper way for current major mode or insert a tab.
87Depending on `tab-always-indent', either insert a tab or indent. 87Depending on `tab-always-indent', either insert a tab or indent.
88If initial point was within line's indentation, position after 88
89the indentation. Else stay at same point in text. 89In most major modes, if point was in the current line's indentation,
90it is moved to the first non-whitespace character after indenting;
91otherwise it stays at the same position in the text.
90 92
91If a prefix argument is given, also rigidly indent the entire 93If a prefix argument is given, also rigidly indent the entire
92balanced expression which starts at the beginning of the current 94balanced expression which starts at the beginning of the current
diff --git a/lisp/json.el b/lisp/json.el
index 39c1fd32337..6228b99f3e2 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -62,12 +62,12 @@
62 62
63(defvar json-object-type 'alist 63(defvar json-object-type 'alist
64 "Type to convert JSON objects to. 64 "Type to convert JSON objects to.
65Must be one of `alist', `plist', or `hash-table'. Consider let-binding 65Must be one of `alist', `plist', or `hash-table'. Consider let-binding
66this around your call to `json-read' instead of `setq'ing it.") 66this around your call to `json-read' instead of `setq'ing it.")
67 67
68(defvar json-array-type 'vector 68(defvar json-array-type 'vector
69 "Type to convert JSON arrays to. 69 "Type to convert JSON arrays to.
70Must be one of `vector' or `list'. Consider let-binding this around 70Must be one of `vector' or `list'. Consider let-binding this around
71your call to `json-read' instead of `setq'ing it.") 71your call to `json-read' instead of `setq'ing it.")
72 72
73(defvar json-key-type nil 73(defvar json-key-type nil
@@ -83,19 +83,19 @@ If nil, `json-read' will guess the type based on the value of
83 `plist' `keyword' 83 `plist' `keyword'
84 84
85Note that values other than `string' might behave strangely for 85Note that values other than `string' might behave strangely for
86Sufficiently Weird keys. Consider let-binding this around your call to 86Sufficiently Weird keys. Consider let-binding this around your call to
87`json-read' instead of `setq'ing it.") 87`json-read' instead of `setq'ing it.")
88 88
89(defvar json-false :json-false 89(defvar json-false :json-false
90 "Value to use when reading JSON `false'. 90 "Value to use when reading JSON `false'.
91If this has the same value as `json-null', you might not be able to tell 91If this has the same value as `json-null', you might not be able to tell
92the difference between `false' and `null'. Consider let-binding this 92the difference between `false' and `null'. Consider let-binding this
93around your call to `json-read' instead of `setq'ing it.") 93around your call to `json-read' instead of `setq'ing it.")
94 94
95(defvar json-null nil 95(defvar json-null nil
96 "Value to use when reading JSON `null'. 96 "Value to use when reading JSON `null'.
97If this has the same value as `json-false', you might not be able to 97If this has the same value as `json-false', you might not be able to
98tell the difference between `false' and `null'. Consider let-binding 98tell the difference between `false' and `null'. Consider let-binding
99this around your call to `json-read' instead of `setq'ing it.") 99this around your call to `json-read' instead of `setq'ing it.")
100 100
101 101
@@ -218,7 +218,7 @@ KEYWORD is the keyword expected."
218 218
219(defun json-read-number (&optional sign) 219(defun json-read-number (&optional sign)
220 "Read the JSON number following point. 220 "Read the JSON number following point.
221The optional SIGN argument is for internal use. 221The optional SIGN argument is for internal use.
222 222
223N.B.: Only numbers which can fit in Emacs Lisp's native number 223N.B.: Only numbers which can fit in Emacs Lisp's native number
224representation will be parsed correctly." 224representation will be parsed correctly."
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index 8d315b30404..d8d7d1a6269 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -141,7 +141,7 @@ South Indian language Malayalam is supported in this language environment."))
141(defconst devanagari-composable-pattern 141(defconst devanagari-composable-pattern
142 (let ((table 142 (let ((table
143 '(("V" . "[\u0904-\u0914\u0960-\u0961\u0972]") ; independent vowel 143 '(("V" . "[\u0904-\u0914\u0960-\u0961\u0972]") ; independent vowel
144 ("C" . "[\u0915-\u0939]") ; consonant 144 ("C" . "[\u0915-\u0939\u0958-\u095F\u097B-\u097C\u097E-\u097F]") ; consonant
145 ("R" . "\u0930") ; RA 145 ("R" . "\u0930") ; RA
146 ("n" . "\u093C") ; NUKTA 146 ("n" . "\u093C") ; NUKTA
147 ("H" . "\u094D") ; HALANT 147 ("H" . "\u094D") ; HALANT
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index a737b99c29e..630c729703b 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -381,6 +381,20 @@ The variable `rmail-highlighted-headers' specifies which headers."
381 :group 'rmail-headers 381 :group 'rmail-headers
382 :version "22.1") 382 :version "22.1")
383 383
384;; This was removed in Emacs 23.1 with no notification, an unnecessary
385;; incompatible change.
386(defcustom rmail-highlight-face 'rmail-highlight
387 "Face used by Rmail for highlighting headers."
388 ;; Note that nil doesn't actually mean use the default face, it
389 ;; means use either bold or highlight. It's not worth fixing this
390 ;; now that this is obsolete.
391 :type '(choice (const :tag "Default" nil)
392 face)
393 :group 'rmail-headers)
394(make-obsolete-variable 'rmail-highlight-face
395 "customize the face `rmail-highlight' instead."
396 "23.2")
397
384(defface rmail-header-name 398(defface rmail-header-name
385 '((t (:inherit font-lock-function-name-face))) 399 '((t (:inherit font-lock-function-name-face)))
386 "Face to use for highlighting the header names. 400 "Face to use for highlighting the header names.
@@ -2883,7 +2897,7 @@ using the coding system CODING."
2883 2897
2884(defun rmail-highlight-headers () 2898(defun rmail-highlight-headers ()
2885 "Highlight the headers specified by `rmail-highlighted-headers'. 2899 "Highlight the headers specified by `rmail-highlighted-headers'.
2886Uses the face `rmail-highlight'." 2900Uses the face specified by `rmail-highlight-face'."
2887 (if rmail-highlighted-headers 2901 (if rmail-highlighted-headers
2888 (save-excursion 2902 (save-excursion
2889 (search-forward "\n\n" nil 'move) 2903 (search-forward "\n\n" nil 'move)
@@ -2891,6 +2905,11 @@ Uses the face `rmail-highlight'."
2891 (narrow-to-region (point-min) (point)) 2905 (narrow-to-region (point-min) (point))
2892 (let ((case-fold-search t) 2906 (let ((case-fold-search t)
2893 (inhibit-read-only t) 2907 (inhibit-read-only t)
2908 ;; When rmail-highlight-face is removed, just
2909 ;; use 'rmail-highlight here.
2910 (face (or rmail-highlight-face
2911 (if (face-differs-from-default-p 'bold)
2912 'bold 'highlight)))
2894 ;; List of overlays to reuse. 2913 ;; List of overlays to reuse.
2895 (overlays rmail-overlay-list)) 2914 (overlays rmail-overlay-list))
2896 (goto-char (point-min)) 2915 (goto-char (point-min))
@@ -2909,12 +2928,12 @@ Uses the face `rmail-highlight'."
2909 (progn 2928 (progn
2910 (setq overlay (car overlays) 2929 (setq overlay (car overlays)
2911 overlays (cdr overlays)) 2930 overlays (cdr overlays))
2912 (overlay-put overlay 'face 'rmail-highlight) 2931 (overlay-put overlay 'face face)
2913 (move-overlay overlay beg (point))) 2932 (move-overlay overlay beg (point)))
2914 ;; Make a new overlay and add it to 2933 ;; Make a new overlay and add it to
2915 ;; rmail-overlay-list. 2934 ;; rmail-overlay-list.
2916 (setq overlay (make-overlay beg (point))) 2935 (setq overlay (make-overlay beg (point)))
2917 (overlay-put overlay 'face 'rmail-highlight) 2936 (overlay-put overlay 'face face)
2918 (setq rmail-overlay-list 2937 (setq rmail-overlay-list
2919 (cons overlay rmail-overlay-list)))))))))) 2938 (cons overlay rmail-overlay-list))))))))))
2920 2939
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index 4405249d981..4584aa0bbd7 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,15 @@
12010-03-24 Juanma Barranquero <lekktu@gmail.com>
2
3 * mh-scan.el (mh-scan-cmd-note-width): Doc fix.
4 (mh-scan-format-mh, mh-scan-body-regexp, mh-scan-cur-msg-number-regexp)
5 (mh-scan-cur-msg-number-regexp, mh-scan-date-regexp)
6 (mh-scan-deleted-msg-regexp, mh-scan-good-msg-regexp)
7 (mh-scan-msg-format-regexp, mh-scan-msg-format-string)
8 (mh-scan-msg-number-regexp, mh-scan-rcpt-regexp)
9 (mh-scan-refiled-msg-regexp, mh-scan-sent-to-me-sender-regexp)
10 (mh-scan-subject-regexp, mh-update-scan-format)
11 (mh-msg-num-width-to-column): Fix typos in docstrings.
12
12010-03-10 Chong Yidong <cyd@stupidchicken.com> 132010-03-10 Chong Yidong <cyd@stupidchicken.com>
2 14
3 * Branch for 23.2. 15 * Branch for 23.2.
diff --git a/lisp/mh-e/mh-scan.el b/lisp/mh-e/mh-scan.el
index fd812c80f47..5f5a84f07a6 100644
--- a/lisp/mh-e/mh-scan.el
+++ b/lisp/mh-e/mh-scan.el
@@ -61,7 +61,7 @@
61 "%{subject}%<{body}<<%{body}%>") 61 "%{subject}%<{body}<<%{body}%>")
62 "*Scan format string for MH. 62 "*Scan format string for MH.
63This string is passed to the scan program via the -format 63This string is passed to the scan program via the -format
64argument. This format is identical to the default except that 64argument. This format is identical to the default except that
65additional hints for fontification have been added to the fifth 65additional hints for fontification have been added to the fifth
66column (remember that in Emacs, the first column is 0). 66column (remember that in Emacs, the first column is 0).
67 67
@@ -109,14 +109,14 @@ non-empty Newsgroups: field is present.")
109Note that the default setting of `mh-folder-font-lock-keywords' 109Note that the default setting of `mh-folder-font-lock-keywords'
110expects this expression to contain at least one parenthesized 110expects this expression to contain at least one parenthesized
111expression which matches the body text as in the default of 111expression which matches the body text as in the default of
112\"\\\\(<<\\\\([^\\n]+\\\\)?\\\\)\". If this regular expression is 112\"\\\\(<<\\\\([^\\n]+\\\\)?\\\\)\". If this regular expression is
113not correct, the body fragment will not be highlighted with the 113not correct, the body fragment will not be highlighted with the
114face `mh-folder-body'.") 114face `mh-folder-body'.")
115 115
116(defvar mh-scan-cur-msg-number-regexp "^\\( *[0-9]+\\+\\).*" 116(defvar mh-scan-cur-msg-number-regexp "^\\( *[0-9]+\\+\\).*"
117 "This regular expression matches the current message. 117 "This regular expression matches the current message.
118 118
119It must match from the beginning of the line. Note that the 119It must match from the beginning of the line. Note that the
120default setting of `mh-folder-font-lock-keywords' expects this 120default setting of `mh-folder-font-lock-keywords' expects this
121expression to contain at least one parenthesized expression which 121expression to contain at least one parenthesized expression which
122matches the message number as in the default of 122matches the message number as in the default of
@@ -125,9 +125,9 @@ matches the message number as in the default of
125 125
126This expression includes the leading space and current message 126This expression includes the leading space and current message
127marker \"+\" within the parenthesis since it looks better to 127marker \"+\" within the parenthesis since it looks better to
128highlight these items as well. The highlighting is done with the 128highlight these items as well. The highlighting is done with the
129face `mh-folder-cur-msg-number'. This regular expression should 129face `mh-folder-cur-msg-number'. This regular expression should
130be correct as it is needed by non-fontification functions. See 130be correct as it is needed by non-fontification functions. See
131also `mh-note-cur'.") 131also `mh-note-cur'.")
132 132
133(defvar mh-scan-date-regexp "\\([0-9][0-9]/[0-9][0-9]\\)" 133(defvar mh-scan-date-regexp "\\([0-9][0-9]/[0-9][0-9]\\)"
@@ -137,14 +137,14 @@ It must not be anchored to the beginning or the end of the line.
137Note that the default setting of `mh-folder-font-lock-keywords' 137Note that the default setting of `mh-folder-font-lock-keywords'
138expects this expression to contain only one parenthesized 138expects this expression to contain only one parenthesized
139expression which matches the date field as in the default of 139expression which matches the date field as in the default of
140\"\\\\([0-9][0-9]/[0-9][0-9]\\\\)\"}. If this regular expression 140\"\\\\([0-9][0-9]/[0-9][0-9]\\\\)\"}. If this regular expression
141is not correct, the date will not be highlighted with the face 141is not correct, the date will not be highlighted with the face
142`mh-folder-date'.") 142`mh-folder-date'.")
143 143
144(defvar mh-scan-deleted-msg-regexp "^\\( *[0-9]+\\)D" 144(defvar mh-scan-deleted-msg-regexp "^\\( *[0-9]+\\)D"
145 "This regular expression matches deleted messages. 145 "This regular expression matches deleted messages.
146 146
147It must match from the beginning of the line. Note that the 147It must match from the beginning of the line. Note that the
148default setting of `mh-folder-font-lock-keywords' expects this 148default setting of `mh-folder-font-lock-keywords' expects this
149expression to contain at least one parenthesized expression which 149expression to contain at least one parenthesized expression which
150matches the message number as in the default of 150matches the message number as in the default of
@@ -152,15 +152,15 @@ matches the message number as in the default of
152 \"^\\\\( *[0-9]+\\\\)D\". 152 \"^\\\\( *[0-9]+\\\\)D\".
153 153
154This expression includes the leading space within the parenthesis 154This expression includes the leading space within the parenthesis
155since it looks better to highlight it as well. The highlighting 155since it looks better to highlight it as well. The highlighting
156is done with the face `mh-folder-deleted'. This regular 156is done with the face `mh-folder-deleted'. This regular
157expression should be correct as it is needed by non-fontification 157expression should be correct as it is needed by non-fontification
158functions. See also `mh-note-deleted'.") 158functions. See also `mh-note-deleted'.")
159 159
160(defvar mh-scan-good-msg-regexp "^\\( *[0-9]+\\)[^D^0-9]" 160(defvar mh-scan-good-msg-regexp "^\\( *[0-9]+\\)[^D^0-9]"
161 "This regular expression matches \"good\" messages. 161 "This regular expression matches \"good\" messages.
162 162
163It must match from the beginning of the line. Note that the 163It must match from the beginning of the line. Note that the
164default setting of `mh-folder-font-lock-keywords' expects this 164default setting of `mh-folder-font-lock-keywords' expects this
165expression to contain at least one parenthesized expression which 165expression to contain at least one parenthesized expression which
166matches the message number as in the default of 166matches the message number as in the default of
@@ -168,8 +168,8 @@ matches the message number as in the default of
168 \"^\\\\( *[0-9]+\\\\)[^D^0-9]\". 168 \"^\\\\( *[0-9]+\\\\)[^D^0-9]\".
169 169
170This expression includes the leading space within the parenthesis 170This expression includes the leading space within the parenthesis
171since it looks better to highlight it as well. The highlighting 171since it looks better to highlight it as well. The highlighting
172is done with the face `mh-folder-msg-number'. This regular 172is done with the face `mh-folder-msg-number'. This regular
173expression should be correct as it is needed by non-fontification 173expression should be correct as it is needed by non-fontification
174functions.") 174functions.")
175 175
@@ -177,21 +177,21 @@ functions.")
177 "This regular expression finds the message number width in a scan format. 177 "This regular expression finds the message number width in a scan format.
178 178
179Note that the message number must be placed in a parenthesized 179Note that the message number must be placed in a parenthesized
180expression as in the default of \"%\\\\([0-9]*\\\\)(msg)\". This 180expression as in the default of \"%\\\\([0-9]*\\\\)(msg)\". This
181variable is only consulted if `mh-scan-format-file' is set to 181variable is only consulted if `mh-scan-format-file' is set to
182\"Use MH-E scan Format\".") 182\"Use MH-E scan Format\".")
183 183
184(defvar mh-scan-msg-format-string "%d" 184(defvar mh-scan-msg-format-string "%d"
185 "This is a format string for width of the message number in a scan format. 185 "This is a format string for width of the message number in a scan format.
186 186
187Use \"0%d\" for zero-filled message numbers. This variable is only 187Use \"0%d\" for zero-filled message numbers. This variable is only
188consulted if `mh-scan-format-file' is set to \"Use MH-E scan 188consulted if `mh-scan-format-file' is set to \"Use MH-E scan
189Format\".") 189Format\".")
190 190
191(defvar mh-scan-msg-number-regexp "^ *\\([0-9]+\\)" 191(defvar mh-scan-msg-number-regexp "^ *\\([0-9]+\\)"
192 "This regular expression extracts the message number. 192 "This regular expression extracts the message number.
193 193
194It must match from the beginning of the line. Note that the 194It must match from the beginning of the line. Note that the
195message number must be placed in a parenthesized expression as in 195message number must be placed in a parenthesized expression as in
196the default of \"^ *\\\\([0-9]+\\\\)\".") 196the default of \"^ *\\\\([0-9]+\\\\)\".")
197 197
@@ -211,9 +211,9 @@ message number within the expression as in the default of
211Note that the default setting of `mh-folder-font-lock-keywords' 211Note that the default setting of `mh-folder-font-lock-keywords'
212expects this expression to contain two parenthesized expressions. 212expects this expression to contain two parenthesized expressions.
213The first is expected to match the \"To:\" that the default scan 213The first is expected to match the \"To:\" that the default scan
214format file generates. The second is expected to match the 214format file generates. The second is expected to match the
215recipient's name as in the default of 215recipient's name as in the default of
216\"\\\\(To:\\\\)\\\\(..............\\\\)\". If this regular 216\"\\\\(To:\\\\)\\\\(..............\\\\)\". If this regular
217expression is not correct, the \"To:\" string will not be 217expression is not correct, the \"To:\" string will not be
218highlighted with the face `mh-folder-to' and the recipient will 218highlighted with the face `mh-folder-to' and the recipient will
219not be highlighted with the face `mh-folder-address'") 219not be highlighted with the face `mh-folder-address'")
@@ -221,7 +221,7 @@ not be highlighted with the face `mh-folder-address'")
221(defvar mh-scan-refiled-msg-regexp "^\\( *[0-9]+\\)\\^" 221(defvar mh-scan-refiled-msg-regexp "^\\( *[0-9]+\\)\\^"
222 "This regular expression matches refiled messages. 222 "This regular expression matches refiled messages.
223 223
224It must match from the beginning of the line. Note that the 224It must match from the beginning of the line. Note that the
225default setting of `mh-folder-font-lock-keywords' expects this 225default setting of `mh-folder-font-lock-keywords' expects this
226expression to contain at least one parenthesized expression which 226expression to contain at least one parenthesized expression which
227matches the message number as in the default of 227matches the message number as in the default of
@@ -229,10 +229,10 @@ matches the message number as in the default of
229 \"^\\\\( *[0-9]+\\\\)\\\\^\". 229 \"^\\\\( *[0-9]+\\\\)\\\\^\".
230 230
231This expression includes the leading space within the parenthesis 231This expression includes the leading space within the parenthesis
232since it looks better to highlight it as well. The highlighting 232since it looks better to highlight it as well. The highlighting
233is done with the face `mh-folder-refiled'. This regular 233is done with the face `mh-folder-refiled'. This regular
234expression should be correct as it is needed by non-fontification 234expression should be correct as it is needed by non-fontification
235functions. See also `mh-note-refiled'.") 235functions. See also `mh-note-refiled'.")
236 236
237(defvar mh-scan-sent-to-me-sender-regexp 237(defvar mh-scan-sent-to-me-sender-regexp
238 "^ *[0-9]+.\\([bct]\\).....[ ]*\\(..................\\)" 238 "^ *[0-9]+.\\([bct]\\).....[ ]*\\(..................\\)"
@@ -240,7 +240,7 @@ functions. See also `mh-note-refiled'.")
240 240
241Note that the default setting of `mh-folder-font-lock-keywords' 241Note that the default setting of `mh-folder-font-lock-keywords'
242expects this expression to contain at least two parenthesized 242expects this expression to contain at least two parenthesized
243expressions. The first should match the fontification hint (see 243expressions. The first should match the fontification hint (see
244`mh-scan-format-nmh') and the second should match the user name 244`mh-scan-format-nmh') and the second should match the user name
245as in the default of 245as in the default of
246 246
@@ -255,15 +255,15 @@ highlighted with the face `mh-folder-sent-to-me-sender'.")
255 "^ *[0-9]+........[ ]*...................\\([Rr][Ee]\\(\\[[0-9]+\\]\\)?:\\s-*\\)*\\([^<\n]*\\)" 255 "^ *[0-9]+........[ ]*...................\\([Rr][Ee]\\(\\[[0-9]+\\]\\)?:\\s-*\\)*\\([^<\n]*\\)"
256 "This regular expression matches the subject. 256 "This regular expression matches the subject.
257 257
258It must match from the beginning of the line. Note that the 258It must match from the beginning of the line. Note that the
259default setting of `mh-folder-font-lock-keywords' expects this 259default setting of `mh-folder-font-lock-keywords' expects this
260expression to contain at least three parenthesized expressions. 260expression to contain at least three parenthesized expressions.
261The first is expected to match the \"Re:\" string, if any, and is 261The first is expected to match the \"Re:\" string, if any, and is
262highlighted with the face `mh-folder-followup'. The second 262highlighted with the face `mh-folder-followup'. The second
263matches an optional bracketed number after \"Re:\", such as in 263matches an optional bracketed number after \"Re:\", such as in
264\"Re[2]:\" (and is thus a sub-expression of the first expression) 264\"Re[2]:\" (and is thus a sub-expression of the first expression)
265and the third is expected to match the subject line itself which 265and the third is expected to match the subject line itself which
266is highlighted with the face `mh-folder-subject'. For example, 266is highlighted with the face `mh-folder-subject'. For example,
267the default (broken on multiple lines for readability) is 267the default (broken on multiple lines for readability) is
268 268
269 ^ *[0-9]+........[ ]*................... 269 ^ *[0-9]+........[ ]*...................
@@ -296,9 +296,9 @@ Note that columns in Emacs start with 0.")
296(defvar mh-scan-cmd-note-width 1 296(defvar mh-scan-cmd-note-width 1
297 "Number of columns consumed by the cmd-note field in `mh-scan-format'. 297 "Number of columns consumed by the cmd-note field in `mh-scan-format'.
298 298
299This column will have one of the values: \" \", \"D\", \"^\", \"+\" and 299This column will have one of the values: \" \", \"D\", \"^\", \"+\", where
300where \" \" is the default value,
301 300
301 \" \" is the default value,
302 \"D\" is the `mh-note-deleted' character, 302 \"D\" is the `mh-note-deleted' character,
303 \"^\" is the `mh-note-refiled' character, and 303 \"^\" is the `mh-note-refiled' character, and
304 \"+\" is the `mh-note-cur' character.") 304 \"+\" is the `mh-note-cur' character.")
@@ -434,7 +434,7 @@ Note that columns in Emacs start with 0."
434 "Return a scan format with the (msg) width in the FMT replaced with WIDTH. 434 "Return a scan format with the (msg) width in the FMT replaced with WIDTH.
435 435
436The message number width portion of the format is discovered 436The message number width portion of the format is discovered
437using `mh-scan-msg-format-regexp'. Its replacement is controlled 437using `mh-scan-msg-format-regexp'. Its replacement is controlled
438with `mh-scan-msg-format-string'." 438with `mh-scan-msg-format-string'."
439 (or (and 439 (or (and
440 (string-match mh-scan-msg-format-regexp fmt) 440 (string-match mh-scan-msg-format-regexp fmt)
@@ -469,7 +469,7 @@ Note that columns in Emacs start with 0.
469 469
470If `mh-scan-format-file' is set to \"Use MH-E scan Format\" this 470If `mh-scan-format-file' is set to \"Use MH-E scan Format\" this
471means that either `mh-scan-format-mh' or `mh-scan-format-nmh' are 471means that either `mh-scan-format-mh' or `mh-scan-format-nmh' are
472in use. This function therefore assumes that the first column is 472in use. This function therefore assumes that the first column is
473empty (to provide room for the cursor), the following WIDTH 473empty (to provide room for the cursor), the following WIDTH
474columns contain the message number, and the column for notations 474columns contain the message number, and the column for notations
475comes after that." 475comes after that."
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 94effe57994..154cc37e9a1 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1102,12 +1102,12 @@ variables.")
1102 (exit-minibuffer)) 1102 (exit-minibuffer))
1103 1103
1104(defvar completion-in-region-functions nil 1104(defvar completion-in-region-functions nil
1105 "Wrapper hook around `complete-in-region'. 1105 "Wrapper hook around `completion-in-region'.
1106The functions on this special hook are called with 5 arguments: 1106The functions on this special hook are called with 5 arguments:
1107 NEXT-FUN START END COLLECTION PREDICATE. 1107 NEXT-FUN START END COLLECTION PREDICATE.
1108NEXT-FUN is a function of four arguments (START END COLLECTION PREDICATE) 1108NEXT-FUN is a function of four arguments (START END COLLECTION PREDICATE)
1109that performs the default operation. The other four argument are like 1109that performs the default operation. The other four arguments are like
1110the ones passed to `complete-in-region'. The functions on this hook 1110the ones passed to `completion-in-region'. The functions on this hook
1111are expected to perform completion on START..END using COLLECTION 1111are expected to perform completion on START..END using COLLECTION
1112and PREDICATE, either by calling NEXT-FUN or by doing it themselves.") 1112and PREDICATE, either by calling NEXT-FUN or by doing it themselves.")
1113 1113
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 8a3ec552d4d..b025493b1a4 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -6295,7 +6295,7 @@ only in DIRLIST.
6295Returns the absolute file name of PROGNAME, if found, and nil otherwise. 6295Returns the absolute file name of PROGNAME, if found, and nil otherwise.
6296 6296
6297This function expects to be in the right *tramp* buffer." 6297This function expects to be in the right *tramp* buffer."
6298 (with-current-buffer (tramp-get-buffer vec) 6298 (with-current-buffer (tramp-get-connection-buffer vec)
6299 (let (result) 6299 (let (result)
6300 ;; Check whether the executable is in $PATH. "which(1)" does not 6300 ;; Check whether the executable is in $PATH. "which(1)" does not
6301 ;; report always a correct error code; therefore we check the 6301 ;; report always a correct error code; therefore we check the
@@ -6303,7 +6303,7 @@ This function expects to be in the right *tramp* buffer."
6303 (unless ignore-path 6303 (unless ignore-path
6304 (tramp-send-command vec (format "which \\%s | wc -w" progname)) 6304 (tramp-send-command vec (format "which \\%s | wc -w" progname))
6305 (goto-char (point-min)) 6305 (goto-char (point-min))
6306 (if (looking-at "^1$") 6306 (if (looking-at "^\\s-*1$")
6307 (setq result (concat "\\" progname)))) 6307 (setq result (concat "\\" progname))))
6308 (unless result 6308 (unless result
6309 (when ignore-tilde 6309 (when ignore-tilde
@@ -6404,12 +6404,15 @@ file exists and nonzero exit status otherwise."
6404 (with-current-buffer (tramp-get-buffer vec) 6404 (with-current-buffer (tramp-get-buffer vec)
6405 (tramp-send-command vec "echo ~root" t) 6405 (tramp-send-command vec "echo ~root" t)
6406 (cond 6406 (cond
6407 ((string-match "^~root$" (buffer-string)) 6407 ((or (string-match "^~root$" (buffer-string))
6408 ;; The default shell (ksh93) of OpenSolaris is buggy.
6409 (string-equal (tramp-get-connection-property vec "uname" "")
6410 "SunOS 5.11"))
6408 (setq shell 6411 (setq shell
6409 (or (tramp-find-executable 6412 (or (tramp-find-executable
6410 vec "bash" (tramp-get-remote-path vec) t) 6413 vec "bash" (tramp-get-remote-path vec) t t)
6411 (tramp-find-executable 6414 (tramp-find-executable
6412 vec "ksh" (tramp-get-remote-path vec) t))) 6415 vec "ksh" (tramp-get-remote-path vec) t t)))
6413 (unless shell 6416 (unless shell
6414 (tramp-error 6417 (tramp-error
6415 vec 'file-error 6418 vec 'file-error
@@ -6838,9 +6841,11 @@ process to set up. VEC specifies the connection."
6838 ;; "test foo; echo $?" to check if various conditions hold, and 6841 ;; "test foo; echo $?" to check if various conditions hold, and
6839 ;; there are buggy /bin/sh implementations which don't execute the 6842 ;; there are buggy /bin/sh implementations which don't execute the
6840 ;; "echo $?" part if the "test" part has an error. In particular, 6843 ;; "echo $?" part if the "test" part has an error. In particular,
6841 ;; the Solaris /bin/sh is a problem. I'm betting that all systems 6844 ;; the OpenSolaris /bin/sh is a problem. There are also other
6842 ;; with buggy /bin/sh implementations will have a working bash or 6845 ;; problems with /bin/sh of OpenSolaris, like redirection of stderr
6843 ;; ksh. Whee... 6846 ;; in in function declarations, or changing HISTFILE in place.
6847 ;; Therefore, OpenSolaris' /bin/sh is replaced by bash, when
6848 ;; detected.
6844 (tramp-find-shell vec) 6849 (tramp-find-shell vec)
6845 6850
6846 ;; Disable unexpected output. 6851 ;; Disable unexpected output.
@@ -6849,12 +6854,6 @@ process to set up. VEC specifies the connection."
6849 ;; Set the environment. 6854 ;; Set the environment.
6850 (tramp-message vec 5 "Setting default environment") 6855 (tramp-message vec 5 "Setting default environment")
6851 6856
6852 ;; On OpenSolaris, there is a bug when HISTFILE is changed in place
6853 ;; <http://bugs.opensolaris.org/view_bug.do?bug_id=6834184>. We
6854 ;; apply the workaround.
6855 (if (string-equal (tramp-get-connection-property vec "uname" "") "SunOS 5.11")
6856 (tramp-send-command vec "unset HISTFILE" t))
6857
6858 (let ((env (copy-sequence tramp-remote-process-environment)) 6857 (let ((env (copy-sequence tramp-remote-process-environment))
6859 unset item) 6858 unset item)
6860 (while env 6859 (while env
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el
index 9444787fc27..c5387a26722 100644
--- a/lisp/net/trampver.el
+++ b/lisp/net/trampver.el
@@ -29,7 +29,7 @@
29;; "autoconf && ./configure" to change them. (X)Emacs version check is defined 29;; "autoconf && ./configure" to change them. (X)Emacs version check is defined
30;; in macro AC_EMACS_INFO of aclocal.m4; should be changed only there. 30;; in macro AC_EMACS_INFO of aclocal.m4; should be changed only there.
31 31
32(defconst tramp-version "2.1.18-pre" 32(defconst tramp-version "2.1.18-23.2"
33 "This version of Tramp.") 33 "This version of Tramp.")
34 34
35(defconst tramp-bug-report-address "tramp-devel@gnu.org" 35(defconst tramp-bug-report-address "tramp-devel@gnu.org"
diff --git a/lisp/obsolete/levents.el b/lisp/obsolete/levents.el
index 652994ebd7a..1715185ac05 100644
--- a/lisp/obsolete/levents.el
+++ b/lisp/obsolete/levents.el
@@ -61,7 +61,7 @@
61(put 'timeout 'event-symbol-elements '(eval)) 61(put 'timeout 'event-symbol-elements '(eval))
62 62
63(defun allocate-event () 63(defun allocate-event ()
64 "Returns an empty event structure. 64 "Return an empty event structure.
65In this emulation, it returns nil." 65In this emulation, it returns nil."
66 nil) 66 nil)
67 67
@@ -142,7 +142,7 @@ It will be the next event read after all pending events."
142 (nth 1 event)) 142 (nth 1 event))
143 143
144(defun event-key (event) 144(defun event-key (event)
145 "Returns the KeySym of the given key-press event. 145 "Return the KeySym of the given key-press event.
146The value is an ASCII printing character (not upper case) or a symbol." 146The value is an ASCII printing character (not upper case) or a symbol."
147 (if (symbolp event) 147 (if (symbolp event)
148 (car (get event 'event-symbol-elements)) 148 (car (get event 'event-symbol-elements))
@@ -150,11 +150,11 @@ The value is an ASCII printing character (not upper case) or a symbol."
150 (downcase (if (< base 32) (logior base 64) base))))) 150 (downcase (if (< base 32) (logior base 64) base)))))
151 151
152(defun event-object (event) 152(defun event-object (event)
153 "Returns the function argument of the given timeout, menu, or eval event." 153 "Return the function argument of the given timeout, menu, or eval event."
154 (nth 2 event)) 154 (nth 2 event))
155 155
156(defun event-point (event) 156(defun event-point (event)
157 "Returns the character position of the given mouse-related event. 157 "Return the character position of the given mouse-related event.
158If the event did not occur over a window, or did 158If the event did not occur over a window, or did
159not occur over text, then this returns nil. Otherwise, it returns an index 159not occur over text, then this returns nil. Otherwise, it returns an index
160into the buffer visible in the event's window." 160into the buffer visible in the event's window."
@@ -201,18 +201,18 @@ or for window WINDOW if that is specified."
201 (window-start start-window))))) 201 (window-start start-window)))))
202 202
203(defun event-process (event) 203(defun event-process (event)
204 "Returns the process of the given process-output event." 204 "Return the process of the given process-output event."
205 (nth 1 event)) 205 (nth 1 event))
206 206
207(defun event-timestamp (event) 207(defun event-timestamp (event)
208 "Returns the timestamp of the given event object. 208 "Return the timestamp of the given event object.
209In Lucid Emacs, this works for any kind of event. 209In Lucid Emacs, this works for any kind of event.
210In this emulation, it returns nil for non-mouse-related events." 210In this emulation, it returns nil for non-mouse-related events."
211 (and (listp event) 211 (and (listp event)
212 (posn-timestamp (event-end event)))) 212 (posn-timestamp (event-end event))))
213 213
214(defun event-to-character (event &optional lenient) 214(defun event-to-character (event &optional lenient)
215 "Returns the closest ASCII approximation to the given event object. 215 "Return the closest ASCII approximation to the given event object.
216If the event isn't a keypress, this returns nil. 216If the event isn't a keypress, this returns nil.
217If the second argument is non-nil, then this is lenient in its 217If the second argument is non-nil, then this is lenient in its
218translation; it will ignore modifier keys other than control and meta, 218translation; it will ignore modifier keys other than control and meta,
@@ -229,25 +229,25 @@ will be returned for events which have no direct ASCII equivalent."
229 event nil))) 229 event nil)))
230 230
231(defun event-window (event) 231(defun event-window (event)
232 "Returns the window of the given mouse-related event object." 232 "Return the window of the given mouse-related event object."
233 (posn-window (event-end event))) 233 (posn-window (event-end event)))
234 234
235(defun event-x (event) 235(defun event-x (event)
236 "Returns the X position in characters of the given mouse-related event." 236 "Return the X position in characters of the given mouse-related event."
237 (/ (car (posn-col-row (event-end event))) 237 (/ (car (posn-col-row (event-end event)))
238 (frame-char-width (window-frame (event-window event))))) 238 (frame-char-width (window-frame (event-window event)))))
239 239
240(defun event-x-pixel (event) 240(defun event-x-pixel (event)
241 "Returns the X position in pixels of the given mouse-related event." 241 "Return the X position in pixels of the given mouse-related event."
242 (car (posn-col-row (event-end event)))) 242 (car (posn-col-row (event-end event))))
243 243
244(defun event-y (event) 244(defun event-y (event)
245 "Returns the Y position in characters of the given mouse-related event." 245 "Return the Y position in characters of the given mouse-related event."
246 (/ (cdr (posn-col-row (event-end event))) 246 (/ (cdr (posn-col-row (event-end event)))
247 (frame-char-height (window-frame (event-window event))))) 247 (frame-char-height (window-frame (event-window event)))))
248 248
249(defun event-y-pixel (event) 249(defun event-y-pixel (event)
250 "Returns the Y position in pixels of the given mouse-related event." 250 "Return the Y position in pixels of the given mouse-related event."
251 (cdr (posn-col-row (event-end event)))) 251 (cdr (posn-col-row (event-end event))))
252 252
253(defun key-press-event-p (obj) 253(defun key-press-event-p (obj)
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index f4a8c0bf46f..2d28d003fd5 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -2624,7 +2624,7 @@ comment at the start of cc-engine.el for more info."
2624 (< (point-max) c-state-old-cpp-end))) 2624 (< (point-max) c-state-old-cpp-end)))
2625 (point-max) 2625 (point-max)
2626 (min (point-max) c-state-old-cpp-beg))) 2626 (min (point-max) c-state-old-cpp-beg)))
2627 (while (and c-state-cache (> (c-state-cache-top-lparen) upper-lim)) 2627 (while (and c-state-cache (>= (c-state-cache-top-lparen) upper-lim))
2628 (setq c-state-cache (cdr c-state-cache))) 2628 (setq c-state-cache (cdr c-state-cache)))
2629 ;; If `upper-lim' is inside the last recorded brace pair, remove its 2629 ;; If `upper-lim' is inside the last recorded brace pair, remove its
2630 ;; RBrace and indicate we'll need to search backwards for a previous 2630 ;; RBrace and indicate we'll need to search backwards for a previous
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index c94d750823d..594462d5125 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -272,7 +272,7 @@ not be enclosed in { } or ( )."
272 "Characters to skip to find a line that might be a dependency.") 272 "Characters to skip to find a line that might be a dependency.")
273 273
274(defvar makefile-rule-action-regex 274(defvar makefile-rule-action-regex
275 "^\t[ \t]*\\([-@]*\\)[ \t]*\\(\\(?:.*\\\\\n\\)*.*\\)" 275 "^\t[ \t]*\\(?:\\([-@]+\\)[ \t]*\\)\\(.*\\(?:\\\\\n.*\\)*\\)"
276 "Regex used to highlight rule action lines in font lock mode.") 276 "Regex used to highlight rule action lines in font lock mode.")
277 277
278(defconst makefile-makepp-rule-action-regex 278(defconst makefile-makepp-rule-action-regex
@@ -355,8 +355,9 @@ not be enclosed in { } or ( )."
355 (3 'font-lock-string-face prepend t)) 355 (3 'font-lock-string-face prepend t))
356 356
357 ;; Rule actions. 357 ;; Rule actions.
358 ;; FIXME: When this spans multiple lines we need font-lock-multiline.
358 (makefile-match-action 359 (makefile-match-action
359 (1 font-lock-type-face) 360 (1 font-lock-type-face nil t)
360 (2 'makefile-shell prepend) 361 (2 'makefile-shell prepend)
361 ;; Only makepp has builtin commands. 362 ;; Only makepp has builtin commands.
362 (3 font-lock-builtin-face prepend t)) 363 (3 font-lock-builtin-face prepend t))
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index ee7a52a1093..e5727f41e93 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -359,7 +359,7 @@ property of the major mode name.")
359(put 'html-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify) 359(put 'html-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify)
360(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify) 360(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify)
361 361
362(declare-function sgml-lexical-context "sgml-mode" &optional limit) 362(autoload 'sgml-lexical-context "sgml-mode")
363 363
364(defun sgml-mode-flyspell-verify () 364(defun sgml-mode-flyspell-verify ()
365 "Function used for `flyspell-generic-check-word-predicate' in SGML mode. 365 "Function used for `flyspell-generic-check-word-predicate' in SGML mode.
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index 4ec46183776..ce0ac32492d 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -100,22 +100,22 @@
100 100
101 ("enumerate" ?i "item:" "~\\ref{%s}" item 101 ("enumerate" ?i "item:" "~\\ref{%s}" item
102 (regexp "items?" "Punkte?")) 102 (regexp "items?" "Punkte?"))
103 103
104 ("equation" ?e "eq:" "~(\\ref{%s})" t 104 ("equation" ?e "eq:" "~(\\ref{%s})" t
105 (regexp "equations?" "eqs?\\." "eqn\\." "Gleichung\\(en\\)?" "Gl\\.")) 105 (regexp "equations?" "eqs?\\." "eqn\\." "Gleichung\\(en\\)?" "Gl\\."))
106 ("eqnarray" ?e "eq:" nil eqnarray-like) 106 ("eqnarray" ?e "eq:" nil eqnarray-like)
107 107
108 ("figure" ?f "fig:" "~\\ref{%s}" caption 108 ("figure" ?f "fig:" "~\\ref{%s}" caption
109 (regexp "figure?[sn]?" "figs?\\." "Abbildung\\(en\\)?" "Abb\\.")) 109 (regexp "figure?[sn]?" "figs?\\." "Abbildung\\(en\\)?" "Abb\\."))
110 ("figure*" ?f nil nil caption) 110 ("figure*" ?f nil nil caption)
111 111
112 ("table" ?t "tab:" "~\\ref{%s}" caption 112 ("table" ?t "tab:" "~\\ref{%s}" caption
113 (regexp "tables?" "tab\\." "Tabellen?")) 113 (regexp "tables?" "tab\\." "Tabellen?"))
114 ("table*" ?t nil nil caption) 114 ("table*" ?t nil nil caption)
115 115
116 ("\\footnote[]{}" ?n "fn:" "~\\ref{%s}" 2 116 ("\\footnote[]{}" ?n "fn:" "~\\ref{%s}" 2
117 (regexp "footnotes?" "Fussnoten?")) 117 (regexp "footnotes?" "Fussnoten?"))
118 118
119 ("any" ?\ " " "~\\ref{%s}" nil) 119 ("any" ?\ " " "~\\ref{%s}" nil)
120 120
121 ;; The label macro is hard coded, but it *could* be defined like this: 121 ;; The label macro is hard coded, but it *could* be defined like this:
@@ -207,7 +207,7 @@ The following conventions are valid for all alist entries:
207`?t' should point to a textual citation (citation as a noun). 207`?t' should point to a textual citation (citation as a noun).
208`?p' should point to a parenthetical citation.") 208`?p' should point to a parenthetical citation.")
209 209
210(defconst reftex-index-macros-builtin 210(defconst reftex-index-macros-builtin
211 '((default "Default \\index and \\glossary macros" 211 '((default "Default \\index and \\glossary macros"
212 (("\\index{*}" "idx" ?i "" nil t) 212 (("\\index{*}" "idx" ?i "" nil t)
213 ("\\glossary{*}" "glo" ?g "" nil t))) 213 ("\\glossary{*}" "glo" ?g "" nil t)))
@@ -219,9 +219,9 @@ The following conventions are valid for all alist entries:
219 (Index-Shortcut "index.sty with \\shortindexingon" 219 (Index-Shortcut "index.sty with \\shortindexingon"
220 (("\\index[]{*}" 1 ?i "" nil t) 220 (("\\index[]{*}" 1 ?i "" nil t)
221 ("\\index*[]{*}" 1 ?I "" nil nil) 221 ("\\index*[]{*}" 1 ?I "" nil nil)
222 ("^[]{*}" 1 ?^ "" texmathp t) 222 ("^[]{*}" 1 ?^ "" texmathp t)
223 ("_[]{*}" 1 ?_ "" texmathp nil)))) 223 ("_[]{*}" 1 ?_ "" texmathp nil))))
224 "Builtin stuff for reftex-index-macros. 224 "Builtin stuff for `reftex-index-macros'.
225Lower-case symbols correspond to a style file of the same name in the LaTeX 225Lower-case symbols correspond to a style file of the same name in the LaTeX
226distribution. Mixed-case symbols are convenience aliases.") 226distribution. Mixed-case symbols are convenience aliases.")
227) 227)
@@ -231,7 +231,7 @@ distribution. Mixed-case symbols are convenience aliases.")
231(defgroup reftex nil 231(defgroup reftex nil
232 "LaTeX label and citation support." 232 "LaTeX label and citation support."
233 :tag "RefTeX" 233 :tag "RefTeX"
234 :link '(url-link :tag "Home Page" 234 :link '(url-link :tag "Home Page"
235 "http://staff.science.uva.nl/~dominik/Tools/reftex/") 235 "http://staff.science.uva.nl/~dominik/Tools/reftex/")
236 :link '(emacs-commentary-link :tag "Commentary in reftex.el" "reftex.el") 236 :link '(emacs-commentary-link :tag "Commentary in reftex.el" "reftex.el")
237 :link '(custom-manual "(reftex)Top") 237 :link '(custom-manual "(reftex)Top")
@@ -280,7 +280,7 @@ the backslash). The cdr is a number indicating its level. A negative
280level means the same level as the positive value, but the section will 280level means the same level as the positive value, but the section will
281never get a number. The cdr may also be a function which will be called 281never get a number. The cdr may also be a function which will be called
282to after the section-re matched to determine the level. 282to after the section-re matched to determine the level.
283This list is also used for promotion and demption of sectioning commands. 283This list is also used for promotion and demotion of sectioning commands.
284If you are using a document class which has several sets of sectioning 284If you are using a document class which has several sets of sectioning
285commands, promotion only works correctly if this list is sorted first 285commands, promotion only works correctly if this list is sorted first
286by set, then within each set by level. The promotion commands always 286by set, then within each set by level. The promotion commands always
@@ -318,7 +318,7 @@ are currently working in. Recentering happens whenever Emacs is idle for
318more than `reftex-idle-time' seconds. 318more than `reftex-idle-time' seconds.
319 319
320Value t means, turn on immediately when RefTeX gets started. Then, 320Value t means, turn on immediately when RefTeX gets started. Then,
321recentering will work for any toc window created during the session. 321recentering will work for any TOC window created during the session.
322 322
323Value 'frame (the default) means, turn automatic recentering on only while the 323Value 'frame (the default) means, turn automatic recentering on only while the
324dedicated TOC frame does exist, and do the recentering only in that frame. So 324dedicated TOC frame does exist, and do the recentering only in that frame. So
@@ -326,14 +326,14 @@ when creating that frame (with \"d\" key in an ordinary TOC window), the
326automatic recentering is turned on. When the frame gets destroyed, automatic 326automatic recentering is turned on. When the frame gets destroyed, automatic
327recentering is turned off again. 327recentering is turned off again.
328 328
329This feature can be turned on and off from the menu 329This feature can be turned on and off from the menu
330\(Ref->Options)." 330\(Ref->Options)."
331 :group 'reftex-table-of-contents-browser 331 :group 'reftex-table-of-contents-browser
332 :type '(choice 332 :type '(choice
333 (const :tag "never" nil) 333 (const :tag "never" nil)
334 (const :tag "always" t) 334 (const :tag "always" t)
335 (const :tag "in dedicated frame only" frame))) 335 (const :tag "in dedicated frame only" frame)))
336 336
337(defcustom reftex-toc-split-windows-horizontally nil 337(defcustom reftex-toc-split-windows-horizontally nil
338 "*Non-nil means, create TOC window by splitting window horizontally." 338 "*Non-nil means, create TOC window by splitting window horizontally."
339 :group 'reftex-table-of-contents-browser 339 :group 'reftex-table-of-contents-browser
@@ -407,7 +407,7 @@ When nil, follow-mode will be suspended for stuff in unvisited files."
407 :type 'boolean) 407 :type 'boolean)
408 408
409(defcustom reftex-toc-mode-hook nil 409(defcustom reftex-toc-mode-hook nil
410 "Mode hook for reftex-toc-mode." 410 "Mode hook for `reftex-toc-mode'."
411 :group 'reftex-table-of-contents-browser 411 :group 'reftex-table-of-contents-browser
412 :type 'hook) 412 :type 'hook)
413 413
@@ -425,7 +425,7 @@ When nil, follow-mode will be suspended for stuff in unvisited files."
425 '(amsmath endnotes fancybox floatfig longtable picinpar 425 '(amsmath endnotes fancybox floatfig longtable picinpar
426 rotating sidecap subfigure supertab wrapfig LaTeX) 426 rotating sidecap subfigure supertab wrapfig LaTeX)
427 "Default label alist specifications. LaTeX should always be the last entry. 427 "Default label alist specifications. LaTeX should always be the last entry.
428The value of this variable is a list of symbols with associations in the 428The value of this variable is a list of symbols with associations in the
429constant `reftex-label-alist-builtin'. Check that constant for a full list 429constant `reftex-label-alist-builtin'. Check that constant for a full list
430of options." 430of options."
431 :group 'reftex-defining-label-environments 431 :group 'reftex-defining-label-environments
@@ -624,7 +624,7 @@ list. However, builtin defaults should normally be set with the variable
624(defcustom reftex-section-prefixes '((0 . "part:") (1 . "cha:") (t . "sec:")) 624(defcustom reftex-section-prefixes '((0 . "part:") (1 . "cha:") (t . "sec:"))
625 "Prefixes for section labels. 625 "Prefixes for section labels.
626When the label prefix given in an entry in `reftex-label-alist' contains `%S', 626When the label prefix given in an entry in `reftex-label-alist' contains `%S',
627this list is used to determine the correct prefix string depending on the 627this list is used to determine the correct prefix string depending on the
628current section level. 628current section level.
629The list is an alist, with each entry of the form (KEY . PREFIX) 629The list is an alist, with each entry of the form (KEY . PREFIX)
630Possible keys are sectioning macro names like `chapter', section levels 630Possible keys are sectioning macro names like `chapter', section levels
@@ -686,7 +686,7 @@ non-footnote labels."
686 (regexp) 686 (regexp)
687 (repeat :tag "List" 687 (repeat :tag "List"
688 (string :tag "prefix (with colon)")))) 688 (string :tag "prefix (with colon)"))))
689 689
690(defcustom reftex-special-environment-functions nil 690(defcustom reftex-special-environment-functions nil
691 "List of functions to be called when trying to figure out current environment. 691 "List of functions to be called when trying to figure out current environment.
692These are special functions to detect \"environments\" which do not 692These are special functions to detect \"environments\" which do not
@@ -732,7 +732,7 @@ And here is the setup for RefTeX:
732 (let ((pos (point)) p1) 732 (let ((pos (point)) p1)
733 (save-excursion 733 (save-excursion
734 ;; Search for any of the linguex item macros at the beginning of a line 734 ;; Search for any of the linguex item macros at the beginning of a line
735 (if (re-search-backward 735 (if (re-search-backward
736 \"^[ \\t]*\\\\(\\\\\\\\\\\\(ex\\\\|a\\\\|b\\\\|c\\\\|d\\\\|e\\\\|f\\\\)g?\\\\.\\\\)\" bound t) 736 \"^[ \\t]*\\\\(\\\\\\\\\\\\(ex\\\\|a\\\\|b\\\\|c\\\\|d\\\\|e\\\\|f\\\\)g?\\\\.\\\\)\" bound t)
737 (progn 737 (progn
738 (setq p1 (match-beginning 1)) 738 (setq p1 (match-beginning 1))
@@ -742,7 +742,7 @@ And here is the setup for RefTeX:
742 nil 742 nil
743 ;; OK, we got it 743 ;; OK, we got it
744 (cons \"linguex\" p1))) 744 (cons \"linguex\" p1)))
745 ;; Return nil for not found 745 ;; Return nil for not found
746 nil)))) 746 nil))))
747 747
7483. Tell RefTeX to use this function 7483. Tell RefTeX to use this function
@@ -941,7 +941,7 @@ This is used to string together whole reference sets, like
941 941
942(defcustom reftex-vref-is-default nil 942(defcustom reftex-vref-is-default nil
943 "*Non-nil means, the varioref macro \\vref is used as default. 943 "*Non-nil means, the varioref macro \\vref is used as default.
944In the selection buffer, the `v' key toggles the reference macro between 944In the selection buffer, the `v' key toggles the reference macro between
945`\\ref' and `\\vref'. The value of this variable determines the default 945`\\ref' and `\\vref'. The value of this variable determines the default
946which is active when entering the selection process. 946which is active when entering the selection process.
947Instead of nil or t, this may also be a string of type letters indicating 947Instead of nil or t, this may also be a string of type letters indicating
@@ -952,7 +952,7 @@ the label types for which it should be true."
952 952
953(defcustom reftex-fref-is-default nil 953(defcustom reftex-fref-is-default nil
954 "*Non-nil means, the fancyref macro \\fref is used as default. 954 "*Non-nil means, the fancyref macro \\fref is used as default.
955In the selection buffer, the `V' key toggles the reference macro between 955In the selection buffer, the `V' key toggles the reference macro between
956`\\ref', `\\fref' and `\\Fref'. The value of this variable determines 956`\\ref', `\\fref' and `\\Fref'. The value of this variable determines
957the default which is active when entering the selection process. 957the default which is active when entering the selection process.
958Instead of nil or t, this may also be a string of type letters indicating 958Instead of nil or t, this may also be a string of type letters indicating
@@ -979,7 +979,7 @@ a label type. If you set this variable to nil, RefTeX will always prompt."
979 979
980(defcustom reftex-format-ref-function nil 980(defcustom reftex-format-ref-function nil
981 "Function which produces the string to insert as a reference. 981 "Function which produces the string to insert as a reference.
982Normally should be nil, because the format to insert a reference can 982Normally should be nil, because the format to insert a reference can
983already be specified in `reftex-label-alist'. 983already be specified in `reftex-label-alist'.
984This hook also is used by the special commands to insert `\\vref' and `\\fref' 984This hook also is used by the special commands to insert `\\vref' and `\\fref'
985references, so even if you set this, your setting will be ignored by 985references, so even if you set this, your setting will be ignored by
@@ -1060,13 +1060,13 @@ It is also possible to access all other BibTeX database fields:
1060%i institution %j journal %k key %m month 1060%i institution %j journal %k key %m month
1061%n number %o organization %p pages %P first page 1061%n number %o organization %p pages %P first page
1062%r address %s school %u publisher %t title 1062%r address %s school %u publisher %t title
1063%v volume %y year 1063%v volume %y year
1064%B booktitle, abbreviated %T title, abbreviated 1064%B booktitle, abbreviated %T title, abbreviated
1065 1065
1066Usually, only %l is needed. The other stuff is mainly for the echo area 1066Usually, only %l is needed. The other stuff is mainly for the echo area
1067display, and for (setq reftex-comment-citations t). 1067display, and for (setq reftex-comment-citations t).
1068 1068
1069%< as a special operator kills punctuation and space around it after the 1069%< as a special operator kills punctuation and space around it after the
1070string has been formatted. 1070string has been formatted.
1071 1071
1072A pair of square brackets indicates an optional argument, and RefTeX 1072A pair of square brackets indicates an optional argument, and RefTeX
@@ -1081,7 +1081,7 @@ will be prompted for a character to select one of the possible format
1081strings. 1081strings.
1082 In order to configure this variable, you can either set 1082 In order to configure this variable, you can either set
1083`reftex-cite-format' directly yourself or set it to the SYMBOL of one of 1083`reftex-cite-format' directly yourself or set it to the SYMBOL of one of
1084the predefined styles. The predefined symbols are those which have an 1084the predefined styles. The predefined symbols are those which have an
1085association in the constant `reftex-cite-format-builtin'. 1085association in the constant `reftex-cite-format-builtin'.
1086E.g.: (setq reftex-cite-format 'natbib)" 1086E.g.: (setq reftex-cite-format 'natbib)"
1087 :group 'reftex-citation-support 1087 :group 'reftex-citation-support
@@ -1164,8 +1164,8 @@ possible percent escapes."
1164(defcustom reftex-cite-punctuation '(", " " \\& " " {\\it et al.}") 1164(defcustom reftex-cite-punctuation '(", " " \\& " " {\\it et al.}")
1165 "Punctuation for formatting of name lists in citations. 1165 "Punctuation for formatting of name lists in citations.
1166This is a list of 3 strings. 1166This is a list of 3 strings.
11671. normal names separator, like \", \" in Jones, Brown and Miller 11671. Normal names separator, like \", \" in Jones, Brown and Miller
11682. final names separator, like \" and \" in Jones, Brown and Miller 11682. Final names separator, like \" and \" in Jones, Brown and Miller
11693. The \"et al\" string, like \" {\\it et al.}\" in Jones {\\it et al.}" 11693. The \"et al\" string, like \" {\\it et al.}\" in Jones {\\it et al.}"
1170 :group 'reftex-citation-support 1170 :group 'reftex-citation-support
1171 :type '(list 1171 :type '(list
@@ -1175,7 +1175,7 @@ This is a list of 3 strings.
1175 1175
1176(defcustom reftex-format-cite-function nil 1176(defcustom reftex-format-cite-function nil
1177 "Function which produces the string to insert as a citation. 1177 "Function which produces the string to insert as a citation.
1178Normally should be nil, because the format to insert a reference can 1178Normally should be nil, because the format to insert a reference can
1179already be specified in `reftex-cite-format'. 1179already be specified in `reftex-cite-format'.
1180The function will be called with two arguments, the CITATION KEY and the 1180The function will be called with two arguments, the CITATION KEY and the
1181DEFAULT FORMAT, which is taken from `reftex-cite-format'. The function 1181DEFAULT FORMAT, which is taken from `reftex-cite-format'. The function
@@ -1258,7 +1258,7 @@ package here."
1258 :group 'reftex-index-support 1258 :group 'reftex-index-support
1259 :set 'reftex-set-dirty 1259 :set 'reftex-set-dirty
1260 :type `(list 1260 :type `(list
1261 (repeat 1261 (repeat
1262 :inline t 1262 :inline t
1263 (list :value ("" "idx" ?a "" nil) 1263 (list :value ("" "idx" ?a "" nil)
1264 (string :tag "Macro with args") 1264 (string :tag "Macro with args")
@@ -1285,7 +1285,7 @@ package here."
1285This is a list with (MACRO-KEY DEFAULT-TAG). 1285This is a list with (MACRO-KEY DEFAULT-TAG).
1286 1286
1287MACRO-KEY: Character identifying an index macro - see `reftex-index-macros'. 1287MACRO-KEY: Character identifying an index macro - see `reftex-index-macros'.
1288DEFAULT-TAG: This is the tag to be used if the macro requires a TAG argument. 1288DEFAULT-TAG: This is the tag to be used if the macro requires a TAG argument.
1289 When this is nil and a TAG is needed, RefTeX will ask for it. 1289 When this is nil and a TAG is needed, RefTeX will ask for it.
1290 When this is the empty string and the TAG argument of the index 1290 When this is the empty string and the TAG argument of the index
1291 macro is optional, the TAG argument will be omitted." 1291 macro is optional, the TAG argument will be omitted."
@@ -1426,7 +1426,7 @@ to that section."
1426 1426
1427(defcustom reftex-index-include-context nil 1427(defcustom reftex-index-include-context nil
1428 "*Non-nil means, display the index definition context in the index buffer. 1428 "*Non-nil means, display the index definition context in the index buffer.
1429This flag may also be toggled from the index buffer with the `c' key." 1429This flag may also be toggled from the index buffer with the `c' key."
1430 :group 'reftex-index-support 1430 :group 'reftex-index-support
1431 :type 'boolean) 1431 :type 'boolean)
1432 1432
@@ -1449,7 +1449,7 @@ This is used when `reftex-view-crossref' is called with point in an
1449argument of a macro. Note that crossref viewing for citations, 1449argument of a macro. Note that crossref viewing for citations,
1450references (both ways) and index entries is hard-coded. This variable 1450references (both ways) and index entries is hard-coded. This variable
1451is only to configure additional structures for which crossreference 1451is only to configure additional structures for which crossreference
1452viewing can be useful. Each entry has the structure 1452viewing can be useful. Each entry has the structure
1453 1453
1454\(MACRO-RE SEARCH-RE HIGHLIGHT). 1454\(MACRO-RE SEARCH-RE HIGHLIGHT).
1455 1455
@@ -1470,7 +1470,7 @@ argument of a \\ref or \\cite macro, and no other message is being
1470displayed, the echo area will display information about that cross 1470displayed, the echo area will display information about that cross
1471reference. You can also set the variable to the symbol `window'. In 1471reference. You can also set the variable to the symbol `window'. In
1472this case a small temporary window is used for the display. 1472this case a small temporary window is used for the display.
1473This feature can be turned on and off from the menu 1473This feature can be turned on and off from the menu
1474\(Ref->Options)." 1474\(Ref->Options)."
1475 :group 'reftex-viewing-cross-references 1475 :group 'reftex-viewing-cross-references
1476 :type '(choice (const :tag "off" nil) 1476 :type '(choice (const :tag "off" nil)
@@ -1516,7 +1516,7 @@ Several entries are possible.
1516- If an element is the name of an environment variable, its content is used. 1516- If an element is the name of an environment variable, its content is used.
1517- If an element starts with an exclamation mark, it is used as a command 1517- If an element starts with an exclamation mark, it is used as a command
1518 to retrieve the path. A typical command with the kpathsearch library would 1518 to retrieve the path. A typical command with the kpathsearch library would
1519 be `!kpsewhich -show-path=.tex'. 1519 be `!kpsewhich -show-path=.tex'.
1520- Otherwise the element itself is interpreted as a path. 1520- Otherwise the element itself is interpreted as a path.
1521Multiple directories can be separated by the system dependent `path-separator'. 1521Multiple directories can be separated by the system dependent `path-separator'.
1522Directories ending in `//' or `!!' will be expanded recursively. 1522Directories ending in `//' or `!!' will be expanded recursively.
@@ -1531,7 +1531,7 @@ Several entries are possible.
1531- If an element is the name of an environment variable, its content is used. 1531- If an element is the name of an environment variable, its content is used.
1532- If an element starts with an exclamation mark, it is used as a command 1532- If an element starts with an exclamation mark, it is used as a command
1533 to retrieve the path. A typical command with the kpathsearch library would 1533 to retrieve the path. A typical command with the kpathsearch library would
1534 be `!kpsewhich -show-path=.bib'. 1534 be `!kpsewhich -show-path=.bib'.
1535- Otherwise the element itself is interpreted as a path. 1535- Otherwise the element itself is interpreted as a path.
1536Multiple directories can be separated by the system dependent `path-separator'. 1536Multiple directories can be separated by the system dependent `path-separator'.
1537Directories ending in `//' or `!!' will be expanded recursively. 1537Directories ending in `//' or `!!' will be expanded recursively.
@@ -1575,7 +1575,7 @@ Note that if you are using external file finders, this option has no effect."
1575 "*Non-nil means, search all specified directories before trying recursion. 1575 "*Non-nil means, search all specified directories before trying recursion.
1576Thus, in a path \".//:/tex/\", search first \"./\", then \"/tex/\" and then 1576Thus, in a path \".//:/tex/\", search first \"./\", then \"/tex/\" and then
1577all subdirectories of \"./\". If this option is nil, the subdirectories of 1577all subdirectories of \"./\". If this option is nil, the subdirectories of
1578\"./\" are searched before \"/tex/\". This is mainly for speed - most of the 1578\"./\" are searched before \"/tex/\". This is mainly for speed - most of the
1579time the recursive path is for the system files and not for the user files. 1579time the recursive path is for the system files and not for the user files.
1580Set this to nil if the default makes RefTeX finding files with equal names 1580Set this to nil if the default makes RefTeX finding files with equal names
1581in wrong sequence." 1581in wrong sequence."
@@ -1588,7 +1588,7 @@ Normally, RefTeX searches the paths given in the environment variables
1588TEXINPUTS and BIBINPUTS to find TeX files and BibTeX database files. 1588TEXINPUTS and BIBINPUTS to find TeX files and BibTeX database files.
1589With this option turned on, it calls an external program specified in the 1589With this option turned on, it calls an external program specified in the
1590option `reftex-external-file-finders' instead. As a side effect, 1590option `reftex-external-file-finders' instead. As a side effect,
1591the variables `reftex-texpath-environment-variables' and 1591the variables `reftex-texpath-environment-variables' and
1592`reftex-bibpath-environment-variables' will be ignored." 1592`reftex-bibpath-environment-variables' will be ignored."
1593 :group 'reftex-finding-files 1593 :group 'reftex-finding-files
1594 :type 'boolean) 1594 :type 'boolean)
@@ -1679,7 +1679,7 @@ list."
1679(defcustom reftex-save-parse-info nil 1679(defcustom reftex-save-parse-info nil
1680 "*Non-nil means, save information gathered with parsing in a file. 1680 "*Non-nil means, save information gathered with parsing in a file.
1681The file MASTER.rel in the same directory as MASTER.tex is used to save the 1681The file MASTER.rel in the same directory as MASTER.tex is used to save the
1682information. When this variable is t, 1682information. When this variable is t,
1683- accessing the parsing information for the first time in an editing session 1683- accessing the parsing information for the first time in an editing session
1684 will read that file (if available) instead of parsing the document. 1684 will read that file (if available) instead of parsing the document.
1685- exiting Emacs or killing a buffer in reftex-mode will cause a new version 1685- exiting Emacs or killing a buffer in reftex-mode will cause a new version
@@ -1753,7 +1753,7 @@ Normally, the text near the cursor is the selected text, and it is
1753highlighted. This is the entry most keys in the selction and *toc* 1753highlighted. This is the entry most keys in the selction and *toc*
1754buffers act on. However, if you mainly use the mouse to select an 1754buffers act on. However, if you mainly use the mouse to select an
1755item, you may find it nice to have mouse-triggered highlighting 1755item, you may find it nice to have mouse-triggered highlighting
1756instead or as well. The variable may have one of these values: 1756instead or as well. The variable may have one of these values:
1757 1757
1758 nil No highlighting. 1758 nil No highlighting.
1759 cursor Highlighting is cursor driven. 1759 cursor Highlighting is cursor driven.
@@ -1882,7 +1882,7 @@ RefTeX uses `fset' to take over the function calls. Changing the variable
1882may require a restart of Emacs in order to become effective." 1882may require a restart of Emacs in order to become effective."
1883 :group 'reftex-miscellaneous-configurations 1883 :group 'reftex-miscellaneous-configurations
1884 :group 'LaTeX 1884 :group 'LaTeX
1885 :type '(choice 1885 :type '(choice
1886 (const :tag "No plug-ins" nil) 1886 (const :tag "No plug-ins" nil)
1887 (const :tag "All possible plug-ins" t) 1887 (const :tag "All possible plug-ins" t)
1888 (list 1888 (list
diff --git a/lisp/woman.el b/lisp/woman.el
index b365126ecb9..79d6d84aff1 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -3876,10 +3876,14 @@ Optional argument NUMERIC, if non-nil, means the argument is numeric."
3876 ;; The first two cases below could be merged (maybe)! 3876 ;; The first two cases below could be merged (maybe)!
3877 (let ((from (point))) 3877 (let ((from (point)))
3878 ;; Discard zero width filler character used to hide leading dots 3878 ;; Discard zero width filler character used to hide leading dots
3879 ;; and zero width characters. If on a line by itself, consume the 3879 ;; and zero width characters.
3880 ;; newline as well, as this may interfere with (Bug#3651). 3880 (while (re-search-forward "\\\\[&|^]" to t)
3881 (while (re-search-forward "\\\\[&|^]\n?" to t) 3881 (woman-delete-match 0)
3882 (woman-delete-match 0)) 3882 ;; If on a line by itself, consume newline as well (Bug#3651).
3883 (and (eq (char-before (match-beginning 0)) ?\n)
3884 (eq (char-after (match-beginning 0)) ?\n)
3885 (delete-char 1)))
3886
3883 (goto-char from) 3887 (goto-char from)
3884 ;; Interrupt text processing -- CONTINUE current text with the 3888 ;; Interrupt text processing -- CONTINUE current text with the
3885 ;; next text line (after any control lines, unless processing to 3889 ;; next text line (after any control lines, unless processing to