aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKenichi Handa2010-01-18 10:07:25 +0900
committerKenichi Handa2010-01-18 10:07:25 +0900
commitb7235808116742ec0a7aacbe53fb80db13ce5ef7 (patch)
treede1a69bba2232b000b9166c3f9accc3f9672c1fa /lisp
parentf0d138880a572e2b064d5af2668cd3a54a1d0a1e (diff)
parentf53a65903cdb66a73b919617054a69ce8042e495 (diff)
downloademacs-b7235808116742ec0a7aacbe53fb80db13ce5ef7.tar.gz
emacs-b7235808116742ec0a7aacbe53fb80db13ce5ef7.zip
Add bug number.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog94
-rw-r--r--lisp/calc/calc.el2
-rw-r--r--lisp/cedet/ede/cpp-root.el2
-rw-r--r--lisp/cedet/ede/files.el2
-rw-r--r--lisp/cedet/ede/proj-aux.el2
-rw-r--r--lisp/cedet/ede/simple.el2
-rw-r--r--lisp/cedet/semantic.el6
-rw-r--r--lisp/cedet/semantic/complete.el6
-rw-r--r--lisp/cedet/semantic/db-el.el2
-rw-r--r--lisp/cedet/semantic/db-global.el2
-rw-r--r--lisp/cedet/semantic/db-javascript.el2
-rw-r--r--lisp/cedet/semantic/db.el4
-rw-r--r--lisp/cedet/semantic/decorate/include.el2
-rw-r--r--lisp/cedet/semantic/idle.el4
-rw-r--r--lisp/emacs-lisp/advice.el32
-rw-r--r--lisp/emacs-lisp/chart.el2
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el20
-rw-r--r--lisp/emacs-lisp/cl-macs.el18
-rw-r--r--lisp/emulation/edt.el2
-rw-r--r--lisp/files.el2
-rw-r--r--lisp/gnus/ChangeLog14
-rw-r--r--lisp/gnus/message.el49
-rw-r--r--lisp/gnus/nnmairix.el2
-rw-r--r--lisp/mail/sendmail.el14
-rw-r--r--lisp/nxml/nxml-mode.el21
-rw-r--r--lisp/pcmpl-unix.el5
-rw-r--r--lisp/progmodes/ada-mode.el119
-rw-r--r--lisp/startup.el13
-rw-r--r--lisp/textmodes/artist.el32
-rw-r--r--lisp/vc-dir.el5
-rw-r--r--lisp/vc-dispatcher.el5
-rw-r--r--lisp/vc.el14
32 files changed, 360 insertions, 141 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9e08889ba61..741f4ff4828 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,93 @@
12010-01-17 Chong Yidong <cyd@stupidchicken.com>
2
3 * mail/sendmail.el (mail-yank-original): Set the mark if the
4 specified function for yanking does not do it.
5
62010-01-17 Dan Nicolaescu <dann@ics.uci.edu>
7
8 * vc.el (with-vc-properties): Deal with directory arguments. (Bug#5298)
9
10 * vc-dir.el (vc-dir-resynch-file): Update the vc-dir header when
11 resyncing a directory.
12
132010-01-17 Stephen Leake <stephen_leake@member.fsf.org>
14
15 * progmodes/ada-mode.el: Fix bug#1920, bug#5400.
16 (ada-ident-re): Delete ., allow multibyte characters.
17 (ada-goto-label-re): New; matches goto labels.
18 (ada-block-label-re): New; matches block labels.
19 (ada-label-re): New; matches both.
20 (ada-named-block-re): Deleted; callers changed to use
21 `ada-block-label-re' instead.
22 (ada-get-current-indent, ada-get-indent-noindent, ada-get-indent-loop):
23 Use `ada-block-label-re'.
24 (ada-indent-on-previous-lines): Improve handling of goto labels.
25 (ada-get-indent-block-start): Special-case block label.
26 (ada-get-indent-label): Split into `ada-indent-block-label' and
27 `ada-indent-goto-label'.
28 (ada-goto-stmt-start, ada-goto-next-non-ws):
29 Optionally ignore goto labels.
30 (ada-goto-next-word): Simplify.
31 (ada-indent-newline-indent-conditional): Insert newline before
32 trying to fix indentation; doc fix.
33
342010-01-17 Jay Belanger <jay.p.belanger@gmail.com>
35
36 * calc/calc.el (calc-command-flags): Give it an initial value.
37
382010-01-17 Glenn Morris <rgm@gnu.org>
39
40 * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer): Doc fix.
41
422010-01-17 Juanma Barranquero <lekktu@gmail.com>
43
44 * cedet/semantic.el (semantic-mode):
45 * files.el (minibuffer-with-setup-hook):
46 * textmodes/artist.el (artist-mt, artist-key-undraw-continously)
47 (artist-key-draw-continously, artist-key-do-continously-continously)
48 (artist-key-set-point-continously, artist-mouse-draw-continously):
49 Fix typos in docstrings.
50
512010-01-16 Lennart Borgman <lennart.borgman@gmail.com>
52
53 * nxml/nxml-mode.el (nxml-extend-after-change-region): Never
54 return t (Bug#3898).
55
562010-01-16 Frédéric Perrin <frederic.perrin@resel.fr> (tiny change)
57
58 * vc-dispatcher.el (vc-do-command): Set LC_MESSAGES, so that we
59 can parse the output of the external commands (Bug#5279).
60
612010-01-16 Jari Aalto <jari.aalto@cante.net>
62
63 * pcmpl-unix.el (pcmpl-unix-read-passwd-file): Doc fix.
64
652010-01-16 Chong Yidong <cyd@stupidchicken.com>
66
67 * emacs-lisp/advice.el (ad-add-advice): Doc fix (Bug#5274)
68
69 * emacs-lisp/cl-macs.el (defstruct): Doc fix (Bug#5267).
70
71 * startup.el (command-line): Remove unused --icon-type arg.
72 Handle --display arg, passing it to command-line-1 (Bug#5392).
73
742010-01-16 Mario Lang <mlang@delysid.org>
75
76 * cedet/ede/cpp-root.el (ede-cpp-root-project):
77 * cedet/ede/files.el (ede-expand-filename):
78 * cedet/ede/simple.el (ede-simple-project):
79 * cedet/semantic/complete.el (semantic-complete-read-tag-engine)
80 (semantic-complete-inline-tag-engine):
81 * cedet/semantic/db-el.el (semanticdb-equivalent-mode):
82 * cedet/semantic/db-global.el (semanticdb-equivalent-mode):
83 * cedet/semantic/db-javascript.el (semanticdb-equivalent-mode):
84 * cedet/semantic/db.el (semanticdb-equivalent-mode):
85 * cedet/semantic/decorate/include.el (semantic-decoration-unknown-include-describe):
86 * cedet/semantic/idle.el (semantic-idle-work-for-one-buffer):
87 * emacs-lisp/chart.el (chart-translate-namezone):
88 * textmodes/artist.el (artist-compute-popup-menu-table):
89 Remove duplicated words in doc-strings.
90
12010-01-15 David Abrahams <dave@boostpro.com> (tiny change) 912010-01-15 David Abrahams <dave@boostpro.com> (tiny change)
2 92
3 * net/mairix.el (mairix-widget-send-query): Send -1 instead of nil 93 * net/mairix.el (mairix-widget-send-query): Send -1 instead of nil
@@ -6,7 +96,7 @@
62010-01-15 Kenichi Handa <handa@m17n.org> 962010-01-15 Kenichi Handa <handa@m17n.org>
7 97
8 * international/mule-cmds.el (canonicalize-coding-system-name): 98 * international/mule-cmds.el (canonicalize-coding-system-name):
9 Convert "msXXX", "ibmXXX", "windows-XXX" to "cpXXX". 99 Convert "msXXX", "ibmXXX", "windows-XXX" to "cpXXX" (Bug#5387).
10 100
112010-01-15 Glenn Morris <rgm@gnu.org> 1012010-01-15 Glenn Morris <rgm@gnu.org>
12 102
@@ -1473,7 +1563,7 @@
14732009-12-01 Dan Nicolaescu <dann@ics.uci.edu> 15632009-12-01 Dan Nicolaescu <dann@ics.uci.edu>
1474 1564
1475 Make vc-print-log buttons work. 1565 Make vc-print-log buttons work.
1476 * log-view.el (log-view-mode-map): Inherit from from widget-keymap. 1566 * log-view.el (log-view-mode-map): Inherit from widget-keymap.
1477 1567
14782009-11-30 Ryan C. Thompson <rct@thompsonclan.org> (tiny change) 15682009-11-30 Ryan C. Thompson <rct@thompsonclan.org> (tiny change)
1479 1569
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index a3f95fc73ef..2a6ec97ef5c 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -1546,7 +1546,7 @@ See calc-keypad for details."
1546 1546
1547(defvar calc-aborted-prefix nil) 1547(defvar calc-aborted-prefix nil)
1548(defvar calc-start-time nil) 1548(defvar calc-start-time nil)
1549(defvar calc-command-flags) 1549(defvar calc-command-flags nil)
1550(defvar calc-final-point-line) 1550(defvar calc-final-point-line)
1551(defvar calc-final-point-column) 1551(defvar calc-final-point-column)
1552;;; Note that modifications to this function may break calc-pass-errors. 1552;;; Note that modifications to this function may break calc-pass-errors.
diff --git a/lisp/cedet/ede/cpp-root.el b/lisp/cedet/ede/cpp-root.el
index ec04dd57c7a..1592c3c2f5d 100644
--- a/lisp/cedet/ede/cpp-root.el
+++ b/lisp/cedet/ede/cpp-root.el
@@ -324,7 +324,7 @@ exist, it should return nil."
324 ) 324 )
325 ) 325 )
326 "EDE cpp-root project class. 326 "EDE cpp-root project class.
327Each directory needs a a project file to control it.") 327Each directory needs a project file to control it.")
328 328
329;;; INIT 329;;; INIT
330;; 330;;
diff --git a/lisp/cedet/ede/files.el b/lisp/cedet/ede/files.el
index bdb9268a030..2f86b766158 100644
--- a/lisp/cedet/ede/files.el
+++ b/lisp/cedet/ede/files.el
@@ -487,7 +487,7 @@ doesn't exist."
487 487
488(defmethod ede-expand-filename ((this ede-target) filename &optional force) 488(defmethod ede-expand-filename ((this ede-target) filename &optional force)
489 "Return a fully qualified file name based on target THIS. 489 "Return a fully qualified file name based on target THIS.
490FILENAME should a a filename which occurs in a directory in which THIS works. 490FILENAME should be a filename which occurs in a directory in which THIS works.
491Optional argument FORCE forces the default filename to be provided even if it 491Optional argument FORCE forces the default filename to be provided even if it
492doesn't exist." 492doesn't exist."
493 (ede-expand-filename (ede-target-parent this) filename force)) 493 (ede-expand-filename (ede-target-parent this) filename force))
diff --git a/lisp/cedet/ede/proj-aux.el b/lisp/cedet/ede/proj-aux.el
index 9011c62674f..26bc9540e82 100644
--- a/lisp/cedet/ede/proj-aux.el
+++ b/lisp/cedet/ede/proj-aux.el
@@ -1,4 +1,4 @@
1;;; ede/proj-aux.el --- EDE Generic Project auxilliary file support 1;;; ede/proj-aux.el --- EDE Generic Project auxiliary file support
2 2
3;; Copyright (C) 1998, 1999, 2000, 2007, 2009, 2010 Free Software Foundation, Inc. 3;; Copyright (C) 1998, 1999, 2000, 2007, 2009, 2010 Free Software Foundation, Inc.
4 4
diff --git a/lisp/cedet/ede/simple.el b/lisp/cedet/ede/simple.el
index 64bf047736e..e0a526e9ead 100644
--- a/lisp/cedet/ede/simple.el
+++ b/lisp/cedet/ede/simple.el
@@ -87,7 +87,7 @@ All directories need at least one target.")
87 (file-header-line :initform ";; EDE Simple Project") 87 (file-header-line :initform ";; EDE Simple Project")
88 ) 88 )
89 "EDE Simple project class. 89 "EDE Simple project class.
90Each directory needs a a project file to control it.") 90Each directory needs a project file to control it.")
91 91
92(defmethod ede-commit-project ((proj ede-simple-project)) 92(defmethod ede-commit-project ((proj ede-simple-project))
93 "Commit any change to PROJ to its file." 93 "Commit any change to PROJ to its file."
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 108a8c4b294..0b311d9f243 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -1014,7 +1014,7 @@ Throw away all the old tags, and recreate the tag database."
1014 1014
1015;; The `semantic-mode' command, in conjuction with the 1015;; The `semantic-mode' command, in conjuction with the
1016;; `semantic-default-submodes' variable, toggles Semantic's various 1016;; `semantic-default-submodes' variable, toggles Semantic's various
1017;; auxilliary minor modes. 1017;; auxiliary minor modes.
1018 1018
1019(defvar semantic-load-system-cache-loaded nil 1019(defvar semantic-load-system-cache-loaded nil
1020 "Non nil when the Semantic system caches have been loaded. 1020 "Non nil when the Semantic system caches have been loaded.
@@ -1057,7 +1057,7 @@ With ARG, turn Semantic mode on if ARG is positive, off otherwise.
1057 1057
1058In Semantic mode, Emacs parses the buffers you visit for their 1058In Semantic mode, Emacs parses the buffers you visit for their
1059semantic content. This information is used by a variety of 1059semantic content. This information is used by a variety of
1060auxilliary minor modes, listed in `semantic-default-submodes'; 1060auxiliary minor modes, listed in `semantic-default-submodes';
1061all the minor modes in this list are also enabled when you enable 1061all the minor modes in this list are also enabled when you enable
1062Semantic mode. 1062Semantic mode.
1063 1063
@@ -1067,7 +1067,7 @@ Semantic mode.
1067 (if semantic-mode 1067 (if semantic-mode
1068 ;; Turn on Semantic mode 1068 ;; Turn on Semantic mode
1069 (progn 1069 (progn
1070 ;; Enable all the global auxilliary minor modes in 1070 ;; Enable all the global auxiliary minor modes in
1071 ;; `semantic-submode-list'. 1071 ;; `semantic-submode-list'.
1072 (dolist (mode semantic-submode-list) 1072 (dolist (mode semantic-submode-list)
1073 (if (memq mode semantic-default-submodes) 1073 (if (memq mode semantic-default-submodes)
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index eed31e4c2ad..fa9ebed9263 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -192,7 +192,7 @@ Keeps STRINGS only in the history.")
192 default-tag initial-input 192 default-tag initial-input
193 history) 193 history)
194 "Read a semantic tag, and return a tag for the selection. 194 "Read a semantic tag, and return a tag for the selection.
195Argument COLLECTOR is an object which can be used to to calculate 195Argument COLLECTOR is an object which can be used to calculate
196a list of possible hits. See `semantic-completion-collector-engine' 196a list of possible hits. See `semantic-completion-collector-engine'
197for details on COLLECTOR. 197for details on COLLECTOR.
198Argument DISPLAYOR is an object used to display a list of possible 198Argument DISPLAYOR is an object used to display a list of possible
@@ -394,7 +394,7 @@ Return value can be:
394 394
395;;; Keybindings 395;;; Keybindings
396;; 396;;
397;; Keys are bound to to perform completion using our mechanisms. 397;; Keys are bound to perform completion using our mechanisms.
398;; Do that work here. 398;; Do that work here.
399(defun semantic-complete-done () 399(defun semantic-complete-done ()
400 "Accept the current input." 400 "Accept the current input."
@@ -738,7 +738,7 @@ DO NOT CALL THIS IF THE INLINE COMPLETION ENGINE IS NOT ACTIVE."
738(defun semantic-complete-inline-tag-engine 738(defun semantic-complete-inline-tag-engine
739 (collector displayor buffer start end) 739 (collector displayor buffer start end)
740 "Perform completion based on semantic tags in a buffer. 740 "Perform completion based on semantic tags in a buffer.
741Argument COLLECTOR is an object which can be used to to calculate 741Argument COLLECTOR is an object which can be used to calculate
742a list of possible hits. See `semantic-completion-collector-engine' 742a list of possible hits. See `semantic-completion-collector-engine'
743for details on COLLECTOR. 743for details on COLLECTOR.
744Argument DISPLAYOR is an object used to display a list of possible 744Argument DISPLAYOR is an object used to display a list of possible
diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el
index 865d775c7cb..d46f727fca6 100644
--- a/lisp/cedet/semantic/db-el.el
+++ b/lisp/cedet/semantic/db-el.el
@@ -107,7 +107,7 @@ For Emacs Lisp, creates a specialized table."
107 107
108(defmethod semanticdb-equivalent-mode ((table semanticdb-table-emacs-lisp) &optional buffer) 108(defmethod semanticdb-equivalent-mode ((table semanticdb-table-emacs-lisp) &optional buffer)
109 "Return non-nil if TABLE's mode is equivalent to BUFFER. 109 "Return non-nil if TABLE's mode is equivalent to BUFFER.
110Equivalent modes are specified by by `semantic-equivalent-major-modes' 110Equivalent modes are specified by the `semantic-equivalent-major-modes'
111local variable." 111local variable."
112 (with-current-buffer buffer 112 (with-current-buffer buffer
113 (eq (or mode-local-active-mode major-mode) 'emacs-lisp-mode))) 113 (eq (or mode-local-active-mode major-mode) 'emacs-lisp-mode)))
diff --git a/lisp/cedet/semantic/db-global.el b/lisp/cedet/semantic/db-global.el
index aba045d64d8..bfd97fc5a54 100644
--- a/lisp/cedet/semantic/db-global.el
+++ b/lisp/cedet/semantic/db-global.el
@@ -105,7 +105,7 @@ is not available for this directory."
105 105
106(defmethod semanticdb-equivalent-mode ((table semanticdb-table-global) &optional buffer) 106(defmethod semanticdb-equivalent-mode ((table semanticdb-table-global) &optional buffer)
107 "Return t, pretend that this table's mode is equivalent to BUFFER. 107 "Return t, pretend that this table's mode is equivalent to BUFFER.
108Equivalent modes are specified by by `semantic-equivalent-major-modes' 108Equivalent modes are specified by the `semantic-equivalent-major-modes'
109local variable." 109local variable."
110 ;; @todo - hack alert! 110 ;; @todo - hack alert!
111 t) 111 t)
diff --git a/lisp/cedet/semantic/db-javascript.el b/lisp/cedet/semantic/db-javascript.el
index d99b60cc66c..2e357e677e2 100644
--- a/lisp/cedet/semantic/db-javascript.el
+++ b/lisp/cedet/semantic/db-javascript.el
@@ -145,7 +145,7 @@ Create one of our special tables that can act as an intermediary."
145 145
146(defmethod semanticdb-equivalent-mode ((table semanticdb-table-javascript) &optional buffer) 146(defmethod semanticdb-equivalent-mode ((table semanticdb-table-javascript) &optional buffer)
147 "Return non-nil if TABLE's mode is equivalent to BUFFER. 147 "Return non-nil if TABLE's mode is equivalent to BUFFER.
148Equivalent modes are specified by by `semantic-equivalent-major-modes' 148Equivalent modes are specified by the `semantic-equivalent-major-modes'
149local variable." 149local variable."
150 (with-current-buffer buffer 150 (with-current-buffer buffer
151 (eq (or mode-local-active-mode major-mode) 'javascript-mode))) 151 (eq (or mode-local-active-mode major-mode) 'javascript-mode)))
diff --git a/lisp/cedet/semantic/db.el b/lisp/cedet/semantic/db.el
index 811bc985f35..3f638a212f0 100644
--- a/lisp/cedet/semantic/db.el
+++ b/lisp/cedet/semantic/db.el
@@ -735,13 +735,13 @@ all files of any type."
735 735
736(defmethod semanticdb-equivalent-mode ((table semanticdb-abstract-table) &optional buffer) 736(defmethod semanticdb-equivalent-mode ((table semanticdb-abstract-table) &optional buffer)
737 "Return non-nil if TABLE's mode is equivalent to BUFFER. 737 "Return non-nil if TABLE's mode is equivalent to BUFFER.
738Equivalent modes are specified by by `semantic-equivalent-major-modes' 738Equivalent modes are specified by the `semantic-equivalent-major-modes'
739local variable." 739local variable."
740 nil) 740 nil)
741 741
742(defmethod semanticdb-equivalent-mode ((table semanticdb-table) &optional buffer) 742(defmethod semanticdb-equivalent-mode ((table semanticdb-table) &optional buffer)
743 "Return non-nil if TABLE's mode is equivalent to BUFFER. 743 "Return non-nil if TABLE's mode is equivalent to BUFFER.
744Equivalent modes are specified by by `semantic-equivalent-major-modes' 744Equivalent modes are specified by the `semantic-equivalent-major-modes'
745local variable." 745local variable."
746 (save-excursion 746 (save-excursion
747 (if buffer (set-buffer buffer)) 747 (if buffer (set-buffer buffer))
diff --git a/lisp/cedet/semantic/decorate/include.el b/lisp/cedet/semantic/decorate/include.el
index dec01336ae1..94273dcfaf7 100644
--- a/lisp/cedet/semantic/decorate/include.el
+++ b/lisp/cedet/semantic/decorate/include.el
@@ -461,7 +461,7 @@ wrap existing project code for Semantic's benifit.
461 461
462 (when (or (eq mm 'c++-mode) (eq mm 'c-mode)) 462 (when (or (eq mm 'c++-mode) (eq mm 'c-mode))
463 (princ " 463 (princ "
464For C/C++ includes located within a a project, you can use a special 464For C/C++ includes located within a project, you can use a special
465EDE project that will wrap an existing build system. You can do that 465EDE project that will wrap an existing build system. You can do that
466like this in your .emacs file: 466like this in your .emacs file:
467 467
diff --git a/lisp/cedet/semantic/idle.el b/lisp/cedet/semantic/idle.el
index dddfaca0f83..bc314bb547e 100644
--- a/lisp/cedet/semantic/idle.el
+++ b/lisp/cedet/semantic/idle.el
@@ -336,9 +336,9 @@ Disable to prevent lots of excessive parsing in idle time."
336 336
337 337
338(defun semantic-idle-work-for-one-buffer (buffer) 338(defun semantic-idle-work-for-one-buffer (buffer)
339 "Do long-processing work for for BUFFER. 339 "Do long-processing work for BUFFER.
340Uses `semantic-safe' and returns the output. 340Uses `semantic-safe' and returns the output.
341Returns t of all processing succeeded." 341Returns t if all processing succeeded."
342 (with-current-buffer buffer 342 (with-current-buffer buffer
343 (not (and 343 (not (and
344 ;; Just in case 344 ;; Just in case
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index 46522991418..bac24b63021 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -2422,16 +2422,28 @@ in that CLASS."
2422;;;###autoload 2422;;;###autoload
2423(defun ad-add-advice (function advice class position) 2423(defun ad-add-advice (function advice class position)
2424 "Add a piece of ADVICE to FUNCTION's list of advices in CLASS. 2424 "Add a piece of ADVICE to FUNCTION's list of advices in CLASS.
2425If FUNCTION already has one or more pieces of advice of the specified 2425
2426CLASS then POSITION determines where the new piece will go. The value 2426ADVICE has the form (NAME PROTECTED ENABLED DEFINITION), where
2427of POSITION can either be `first', `last' or a number where 0 corresponds 2427NAME is the advice name; PROTECTED is a flag specifying whether
2428to `first'. Numbers outside the range will be mapped to the closest 2428to protect against non-local exits; ENABLED is a flag specifying
2429extreme position. If there was already a piece of ADVICE with the same 2429whether to initially enable the advice; and DEFINITION has the
2430name, then the position argument will be ignored and the old advice 2430form (advice . LAMBDA), where LAMBDA is a lambda expression.
2431will be overwritten with the new one. 2431
2432 If the FUNCTION was not advised already, then its advice info will be 2432If FUNCTION already has a piece of advice with the same name,
2433initialized. Redefining a piece of advice whose name is part of the cache-id 2433then POSITION is ignored, and the old advice is overwritten with
2434will clear the cache." 2434the new one.
2435
2436If FUNCTION already has one or more pieces of advice of the
2437specified CLASS, then POSITION determines where the new piece
2438goes. POSITION can either be `first', `last' or a number (where
24390 corresponds to `first', and numbers outside the valid range are
2440mapped to the closest extremal position).
2441
2442If FUNCTION was not advised already, its advice info will be
2443initialized. Redefining a piece of advice whose name is part of
2444the cache-id will clear the cache.
2445
2446See Info node `(elisp)Computed Advice' for detailed documentation."
2435 (cond ((not (ad-is-advised function)) 2447 (cond ((not (ad-is-advised function))
2436 (ad-initialize-advice-info function) 2448 (ad-initialize-advice-info function)
2437 (ad-set-advice-info-field 2449 (ad-set-advice-info-field
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index f4c3bfa90a0..4f01e540601 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -323,7 +323,7 @@ MARGIN, ZONE, START, and END specify restrictions in chart space."
323(defmethod chart-translate-namezone ((c chart) n) 323(defmethod chart-translate-namezone ((c chart) n)
324 "Return a dot-pair representing a positional range for a name. 324 "Return a dot-pair representing a positional range for a name.
325The name in chart C of the Nth name resides. 325The name in chart C of the Nth name resides.
326Automatically compensates for for direction." 326Automatically compensates for direction."
327 (let* ((dir (oref c direction)) 327 (let* ((dir (oref c direction))
328 (w (if (eq dir 'vertical) (oref c x-width) (oref c y-width))) 328 (w (if (eq dir 'vertical) (oref c x-width) (oref c y-width)))
329 (m (if (eq dir 'vertical) (oref c y-margin) (oref c x-margin))) 329 (m (if (eq dir 'vertical) (oref c y-margin) (oref c x-margin)))
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index 0be2c643313..3beda28abf2 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -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" "3867c0613dfd69780f561012a1dfe67b") 285;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "e10a7e42199c08dc39460f67dd2d424b")
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" "\
@@ -672,11 +672,21 @@ from ARGLIST using FUNC: (define-modify-macro incf (&optional (n 1)) +)
672 672
673(autoload 'defstruct "cl-macs" "\ 673(autoload 'defstruct "cl-macs" "\
674Define a struct type. 674Define a struct type.
675This macro defines a new Lisp data type called NAME, which contains data 675This macro defines a new data type called NAME that stores data
676stored in SLOTs. This defines a `make-NAME' constructor, a `copy-NAME' 676in SLOTs. It defines a `make-NAME' constructor, a `copy-NAME'
677copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors. 677copier, a `NAME-p' predicate, and slot accessors named `NAME-SLOT'.
678You can use the accessors to set the corresponding slots, via `setf'.
678 679
679\(fn (NAME OPTIONS...) (SLOT SLOT-OPTS...)...)" nil (quote macro)) 680NAME may instead take the form (NAME OPTIONS...), where each
681OPTION is either a single keyword or (KEYWORD VALUE).
682See Info node `(cl)Structures' for a list of valid keywords.
683
684Each SLOT may instead take the form (SLOT SLOT-OPTS...), where
685SLOT-OPTS are keyword-value pairs for that slot. Currently, only
686one keyword is supported, `:read-only'. If this has a non-nil
687value, that slot cannot be set via `setf'.
688
689\(fn NAME SLOTS...)" nil (quote macro))
680 690
681(autoload 'cl-struct-setf-expander "cl-macs" "\ 691(autoload 'cl-struct-setf-expander "cl-macs" "\
682Not documented 692Not documented
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 29bb752dbf7..4e3b1fb72d9 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -2191,11 +2191,21 @@ from ARGLIST using FUNC: (define-modify-macro incf (&optional (n 1)) +)"
2191;;;###autoload 2191;;;###autoload
2192(defmacro defstruct (struct &rest descs) 2192(defmacro defstruct (struct &rest descs)
2193 "Define a struct type. 2193 "Define a struct type.
2194This macro defines a new Lisp data type called NAME, which contains data 2194This macro defines a new data type called NAME that stores data
2195stored in SLOTs. This defines a `make-NAME' constructor, a `copy-NAME' 2195in SLOTs. It defines a `make-NAME' constructor, a `copy-NAME'
2196copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors. 2196copier, a `NAME-p' predicate, and slot accessors named `NAME-SLOT'.
2197You can use the accessors to set the corresponding slots, via `setf'.
2197 2198
2198\(fn (NAME OPTIONS...) (SLOT SLOT-OPTS...)...)" 2199NAME may instead take the form (NAME OPTIONS...), where each
2200OPTION is either a single keyword or (KEYWORD VALUE).
2201See Info node `(cl)Structures' for a list of valid keywords.
2202
2203Each SLOT may instead take the form (SLOT SLOT-OPTS...), where
2204SLOT-OPTS are keyword-value pairs for that slot. Currently, only
2205one keyword is supported, `:read-only'. If this has a non-nil
2206value, that slot cannot be set via `setf'.
2207
2208\(fn NAME SLOTS...)"
2199 (let* ((name (if (consp struct) (car struct) struct)) 2209 (let* ((name (if (consp struct) (car struct) struct))
2200 (opts (cdr-safe struct)) 2210 (opts (cdr-safe struct))
2201 (slots nil) 2211 (slots nil)
diff --git a/lisp/emulation/edt.el b/lisp/emulation/edt.el
index 40c7d887c29..2abde59af90 100644
--- a/lisp/emulation/edt.el
+++ b/lisp/emulation/edt.el
@@ -2107,7 +2107,7 @@ created."
2107 (setq edt-term "pc") 2107 (setq edt-term "pc")
2108 (if (or (not edt-window-system) (eq edt-window-system 'tty)) 2108 (if (or (not edt-window-system) (eq edt-window-system 'tty))
2109 (setq edt-term (getenv "TERM")))) 2109 (setq edt-term (getenv "TERM"))))
2110 ;; Look for for terminal configuration file for this terminal type. 2110 ;; Look for a terminal configuration file for this terminal type.
2111 ;; Otherwise, load the user's custom configuration file. 2111 ;; Otherwise, load the user's custom configuration file.
2112 (if (or (not edt-window-system) (memq edt-window-system '(pc tty))) 2112 (if (or (not edt-window-system) (memq edt-window-system '(pc tty)))
2113 (progn 2113 (progn
diff --git a/lisp/files.el b/lisp/files.el
index b665bd25343..99e818643d0 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1289,7 +1289,7 @@ BODY should use the minibuffer at most once.
1289Recursive uses of the minibuffer are unaffected (FUN is not 1289Recursive uses of the minibuffer are unaffected (FUN is not
1290called additional times). 1290called additional times).
1291 1291
1292This macro actually adds an auxilliary function that calls FUN, 1292This macro actually adds an auxiliary function that calls FUN,
1293rather than FUN itself, to `minibuffer-setup-hook'." 1293rather than FUN itself, to `minibuffer-setup-hook'."
1294 (declare (indent 1) (debug t)) 1294 (declare (indent 1) (debug t))
1295 (let ((hook (make-symbol "setup-hook"))) 1295 (let ((hook (make-symbol "setup-hook")))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 8e7ae005762..1c1c62bb1b0 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,17 @@
12010-01-17 Chong Yidong <cyd@stupidchicken.com>
2
3 * message.el (message-mail): Just pass yank-action on to message-setup.
4 (message-setup): Handle (FUN . ARGS) form of yank-action.
5 (message-with-reply-buffer, message-widen-reply)
6 (message-yank-original): Handle non-buffer values of
7 message-reply-buffer (Bug#4080).
8 (message-setup-1): Prefer to save message-reply-buffer as a buffer.
9
102010-01-17 Juanma Barranquero <lekktu@gmail.com>
11
12 * nnmairix.el (nnmairix-group-delete-recreate-this-group):
13 Fix typo in docstring.
14
12010-01-08 Jason Rumney <jasonr@gnu.org> 152010-01-08 Jason Rumney <jasonr@gnu.org>
2 16
3 * sieve-manage.el (sieve-manage-parse-capability-1): Loosely match OK 17 * sieve-manage.el (sieve-manage-parse-capability-1): Loosely match OK
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index c0886c2051c..7194813422a 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1139,6 +1139,8 @@ If stringp, use this; if non-nil, use no host name (user name only)."
1139 (string :tag "name") 1139 (string :tag "name")
1140 (sexp :tag "none" :format "%t" t))) 1140 (sexp :tag "none" :format "%t" t)))
1141 1141
1142;; This can be the name of a buffer, or a cons cell (FUNCTION . ARGS)
1143;; for yanking the original buffer.
1142(defvar message-reply-buffer nil) 1144(defvar message-reply-buffer nil)
1143(defvar message-reply-headers nil 1145(defvar message-reply-headers nil
1144 "The headers of the current replied article. 1146 "The headers of the current replied article.
@@ -1997,7 +1999,7 @@ see `message-narrow-to-headers-or-head'."
1997 1999
1998(defmacro message-with-reply-buffer (&rest forms) 2000(defmacro message-with-reply-buffer (&rest forms)
1999 "Evaluate FORMS in the reply buffer, if it exists." 2001 "Evaluate FORMS in the reply buffer, if it exists."
2000 `(when (and message-reply-buffer 2002 `(when (and (bufferp message-reply-buffer)
2001 (buffer-name message-reply-buffer)) 2003 (buffer-name message-reply-buffer))
2002 (with-current-buffer message-reply-buffer 2004 (with-current-buffer message-reply-buffer
2003 ,@forms))) 2005 ,@forms)))
@@ -3179,7 +3181,7 @@ or in the synonym headers, defined by `message-header-synonyms'."
3179 "Widen the reply to include maximum recipients." 3181 "Widen the reply to include maximum recipients."
3180 (interactive) 3182 (interactive)
3181 (let ((follow-to 3183 (let ((follow-to
3182 (and message-reply-buffer 3184 (and (bufferp message-reply-buffer)
3183 (buffer-name message-reply-buffer) 3185 (buffer-name message-reply-buffer)
3184 (with-current-buffer message-reply-buffer 3186 (with-current-buffer message-reply-buffer
3185 (message-get-reply-headers t))))) 3187 (message-get-reply-headers t)))))
@@ -3674,9 +3676,16 @@ Really top post? ")))
3674 (point-max))) 3676 (point-max)))
3675 (delete-region (message-goto-body) (point-max))) 3677 (delete-region (message-goto-body) (point-max)))
3676 (set (make-local-variable 'message-cite-reply-above) nil))) 3678 (set (make-local-variable 'message-cite-reply-above) nil)))
3677 (delete-windows-on message-reply-buffer t) 3679 (if (bufferp message-reply-buffer)
3680 (delete-windows-on message-reply-buffer t))
3678 (push-mark (save-excursion 3681 (push-mark (save-excursion
3679 (insert-buffer-substring message-reply-buffer) 3682 (cond
3683 ((bufferp message-reply-buffer)
3684 (insert-buffer-substring message-reply-buffer))
3685 ((and (consp message-reply-buffer)
3686 (functionp (car message-reply-buffer)))
3687 (apply (car message-reply-buffer)
3688 (cdr message-reply-buffer))))
3680 (unless (bolp) 3689 (unless (bolp)
3681 (insert ?\n)) 3690 (insert ?\n))
3682 (point))) 3691 (point)))
@@ -6251,14 +6260,14 @@ between beginning of field and beginning of line."
6251 nil 6260 nil
6252 mua))) 6261 mua)))
6253 6262
6254(defun message-setup (headers &optional replybuffer actions 6263;; YANK-ACTION, if non-nil, can be a buffer or a yank action of the
6264;; form (FUNCTION . ARGS).
6265(defun message-setup (headers &optional yank-action actions
6255 continue switch-function) 6266 continue switch-function)
6256 (let ((mua (message-mail-user-agent)) 6267 (let ((mua (message-mail-user-agent))
6257 subject to field yank-action) 6268 subject to field)
6258 (if (not (and message-this-is-mail mua)) 6269 (if (not (and message-this-is-mail mua))
6259 (message-setup-1 headers replybuffer actions) 6270 (message-setup-1 headers yank-action actions)
6260 (if replybuffer
6261 (setq yank-action (list 'insert-buffer replybuffer)))
6262 (setq headers (copy-sequence headers)) 6271 (setq headers (copy-sequence headers))
6263 (setq field (assq 'Subject headers)) 6272 (setq field (assq 'Subject headers))
6264 (when field 6273 (when field
@@ -6275,7 +6284,11 @@ between beginning of field and beginning of line."
6275 (format "%s" (car item)) 6284 (format "%s" (car item))
6276 (cdr item))) 6285 (cdr item)))
6277 headers) 6286 headers)
6278 continue switch-function yank-action actions))))) 6287 continue switch-function
6288 (if (bufferp yank-action)
6289 (list 'insert-buffer yank-action)
6290 yank-action)
6291 actions)))))
6279 6292
6280(defun message-headers-to-generate (headers included-headers excluded-headers) 6293(defun message-headers-to-generate (headers included-headers excluded-headers)
6281 "Return a list that includes all headers from HEADERS. 6294 "Return a list that includes all headers from HEADERS.
@@ -6302,12 +6315,16 @@ are not included."
6302 (push header result))) 6315 (push header result)))
6303 (nreverse result))) 6316 (nreverse result)))
6304 6317
6305(defun message-setup-1 (headers &optional replybuffer actions) 6318(defun message-setup-1 (headers &optional yank-action actions)
6306 (dolist (action actions) 6319 (dolist (action actions)
6307 (condition-case nil 6320 (condition-case nil
6308 (add-to-list 'message-send-actions 6321 (add-to-list 'message-send-actions
6309 `(apply ',(car action) ',(cdr action))))) 6322 `(apply ',(car action) ',(cdr action)))))
6310 (setq message-reply-buffer replybuffer) 6323 (setq message-reply-buffer
6324 (if (and (consp yank-action)
6325 (eq (car yank-action) 'insert-buffer))
6326 (nth 1 yank-action)
6327 yank-action))
6311 (goto-char (point-min)) 6328 (goto-char (point-min))
6312 ;; Insert all the headers. 6329 ;; Insert all the headers.
6313 (mail-header-format 6330 (mail-header-format
@@ -6438,7 +6455,7 @@ OTHER-HEADERS is an alist of header/value pairs. CONTINUE says whether
6438to continue editing a message already being composed. SWITCH-FUNCTION 6455to continue editing a message already being composed. SWITCH-FUNCTION
6439is a function used to switch to and display the mail buffer." 6456is a function used to switch to and display the mail buffer."
6440 (interactive) 6457 (interactive)
6441 (let ((message-this-is-mail t) replybuffer) 6458 (let ((message-this-is-mail t))
6442 (unless (message-mail-user-agent) 6459 (unless (message-mail-user-agent)
6443 (message-pop-to-buffer 6460 (message-pop-to-buffer
6444 ;; Search for the existing message buffer if `continue' is non-nil. 6461 ;; Search for the existing message buffer if `continue' is non-nil.
@@ -6449,15 +6466,11 @@ is a function used to switch to and display the mail buffer."
6449 message-generate-new-buffers))) 6466 message-generate-new-buffers)))
6450 (message-buffer-name "mail" to)) 6467 (message-buffer-name "mail" to))
6451 switch-function)) 6468 switch-function))
6452 ;; FIXME: message-mail should do something if YANK-ACTION is not
6453 ;; insert-buffer.
6454 (and (consp yank-action) (eq (car yank-action) 'insert-buffer)
6455 (setq replybuffer (nth 1 yank-action)))
6456 (message-setup 6469 (message-setup
6457 (nconc 6470 (nconc
6458 `((To . ,(or to "")) (Subject . ,(or subject ""))) 6471 `((To . ,(or to "")) (Subject . ,(or subject "")))
6459 (when other-headers other-headers)) 6472 (when other-headers other-headers))
6460 replybuffer send-actions continue switch-function) 6473 yank-action send-actions continue switch-function)
6461 ;; FIXME: Should return nil if failure. 6474 ;; FIXME: Should return nil if failure.
6462 t)) 6475 t))
6463 6476
diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el
index 215b6d6072a..e39149b996c 100644
--- a/lisp/gnus/nnmairix.el
+++ b/lisp/gnus/nnmairix.el
@@ -1104,7 +1104,7 @@ with `nnmairix-mairix-update-options'."
1104 1104
1105(defun nnmairix-group-delete-recreate-this-group () 1105(defun nnmairix-group-delete-recreate-this-group ()
1106 "Deletes and recreates group on the back end. 1106 "Deletes and recreates group on the back end.
1107You can use this function on nnmairix groups which continously 1107You can use this function on nnmairix groups which continuously
1108show wrong article counts." 1108show wrong article counts."
1109 (interactive) 1109 (interactive)
1110 (let* ((group (gnus-group-group-name)) 1110 (let* ((group (gnus-group-group-name))
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index 7004133f584..da8fe85da82 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -1505,14 +1505,18 @@ and don't delete any header fields."
1505 (interactive "P") 1505 (interactive "P")
1506 (if mail-reply-action 1506 (if mail-reply-action
1507 (let ((start (point)) 1507 (let ((start (point))
1508 (original mail-reply-action)) 1508 (original mail-reply-action)
1509 (omark (mark t)))
1509 (and (consp original) (eq (car original) 'insert-buffer) 1510 (and (consp original) (eq (car original) 'insert-buffer)
1510 (setq original (nth 1 original))) 1511 (setq original (nth 1 original)))
1511 (if (consp original) 1512 (if (consp original)
1512 (apply (car original) (cdr original)) 1513 (progn
1513 ;; If the original message is in another window in the same frame, 1514 ;; Call yank function, and set the mark if it doesn't.
1514 ;; delete that window to save screen space. 1515 (apply (car original) (cdr original))
1515 ;; t means don't alter other frames. 1516 (if (eq omark (mark t))
1517 (push-mark (point))))
1518 ;; If the original message is in another window in the same
1519 ;; frame, delete that window to save space.
1516 (delete-windows-on original t) 1520 (delete-windows-on original t)
1517 (with-no-warnings 1521 (with-no-warnings
1518 ;; We really want this to set mark. 1522 ;; We really want this to set mark.
diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el
index 9fefd304b44..8bcde7a3a22 100644
--- a/lisp/nxml/nxml-mode.el
+++ b/lisp/nxml/nxml-mode.el
@@ -882,16 +882,17 @@ Called with `font-lock-beg' and `font-lock-end' dynamically bound."
882(defun nxml-extend-after-change-region (start end pre-change-length) 882(defun nxml-extend-after-change-region (start end pre-change-length)
883 (unless nxml-degraded 883 (unless nxml-degraded
884 (setq nxml-last-fontify-end nil) 884 (setq nxml-last-fontify-end nil)
885 885 (let ((region (nxml-with-degradation-on-error
886 (nxml-with-degradation-on-error 'nxml-extend-after-change-region 886 'nxml-extend-after-change-region
887 (save-excursion 887 (save-excursion
888 (save-restriction 888 (save-restriction
889 (widen) 889 (widen)
890 (save-match-data 890 (save-match-data
891 (nxml-with-invisible-motion 891 (nxml-with-invisible-motion
892 (nxml-with-unmodifying-text-property-changes 892 (nxml-with-unmodifying-text-property-changes
893 (nxml-extend-after-change-region1 893 (nxml-extend-after-change-region1
894 start end pre-change-length))))))))) 894 start end pre-change-length)))))))))
895 (if (consp region) region))))
895 896
896(defun nxml-extend-after-change-region1 (start end pre-change-length) 897(defun nxml-extend-after-change-region1 (start end pre-change-length)
897 (let* ((region (nxml-after-change1 start end pre-change-length)) 898 (let* ((region (nxml-after-change1 start end pre-change-length))
diff --git a/lisp/pcmpl-unix.el b/lisp/pcmpl-unix.el
index 546d4a2591d..9282fe87b5a 100644
--- a/lisp/pcmpl-unix.el
+++ b/lisp/pcmpl-unix.el
@@ -85,7 +85,10 @@ with the SSH option \"HashKnownHosts no\"."
85 (while (pcomplete-here (funcall pcomplete-command-completion-function)))) 85 (while (pcomplete-here (funcall pcomplete-command-completion-function))))
86 86
87(defun pcmpl-unix-read-passwd-file (file) 87(defun pcmpl-unix-read-passwd-file (file)
88 "Return an alist correlating gids to group names in FILE." 88 "Return an alist correlating gids to group names in FILE.
89
90If FILE is in hashed format (as described in the OpenSSH
91documentation), this function returns nil."
89 (let (names) 92 (let (names)
90 (when (file-readable-p file) 93 (when (file-readable-p file)
91 (with-temp-buffer 94 (with-temp-buffer
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index 2b94fdb25ff..03fec1beb77 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -590,8 +590,25 @@ This variable defines several rules to use to align different lines.")
590;; FIXME: make this customizable 590;; FIXME: make this customizable
591 591
592(defconst ada-ident-re 592(defconst ada-ident-re
593 "\\(\\sw\\|[_.]\\)+" 593 "[[:alpha:]]\\(?:[_[:alnum:]]\\)*"
594 "Regexp matching Ada (qualified) identifiers.") 594 ;; [:alnum:] matches any multibyte word constituent, as well as
595 ;; Latin-1 letters and numbers. This allows __ and trailing _;
596 ;; someone (emacs bug#1919) proposed [^\W_] to fix that, but \W does
597 ;; _not_ mean "not word constituent" inside a character alternative.
598 "Regexp matching an Ada identifier.")
599
600(defconst ada-goto-label-re
601 (concat "<<" ada-ident-re ">>")
602 "Regexp matching a goto label.")
603
604(defconst ada-block-label-re
605 (concat ada-ident-re "[ \t\n]*:[^=]")
606 "Regexp matching a block label.
607Note that this also matches a variable declaration.")
608
609(defconst ada-label-re
610 (concat "\\(?:" ada-block-label-re "\\)\\|\\(?:" ada-goto-label-re "\\)")
611 "Regexp matching a goto or block label.")
595 612
596;; "with" needs to be included in the regexp, to match generic subprogram parameters 613;; "with" needs to be included in the regexp, to match generic subprogram parameters
597;; Similarly, we put '[not] overriding' on the same line with 'procedure' etc. 614;; Similarly, we put '[not] overriding' on the same line with 'procedure' etc.
@@ -678,10 +695,6 @@ A new statement starts after these.")
678 "protected" "task") t) "\\>")) 695 "protected" "task") t) "\\>"))
679 "Regexp for the start of a subprogram.") 696 "Regexp for the start of a subprogram.")
680 697
681(defvar ada-named-block-re
682 "[ \t]*\\(\\sw\\|_\\)+[ \t]*:[^=]"
683 "Regexp of the name of a block or loop.")
684
685(defvar ada-contextual-menu-on-identifier nil 698(defvar ada-contextual-menu-on-identifier nil
686 "Set to true when the right mouse button was clicked on an identifier.") 699 "Set to true when the right mouse button was clicked on an identifier.")
687 700
@@ -2108,10 +2121,18 @@ Return the equivalent internal parameter list."
2108 2121
2109(defun ada-indent-newline-indent-conditional () 2122(defun ada-indent-newline-indent-conditional ()
2110 "Insert a newline and indent it. 2123 "Insert a newline and indent it.
2111The original line is indented first if `ada-indent-after-return' is non-nil." 2124The original line is re-indented if `ada-indent-after-return' is non-nil."
2112 (interactive "*") 2125 (interactive "*")
2113 (if ada-indent-after-return (ada-indent-current)) 2126 ;; If at end of buffer (entering brand new code), some indentation
2127 ;; fails. For example, a block label requires whitespace following
2128 ;; the : to be recognized. So we do the newline first, then
2129 ;; go back and indent the original line.
2114 (newline) 2130 (newline)
2131 (if ada-indent-after-return
2132 (progn
2133 (forward-char -1)
2134 (ada-indent-current)
2135 (forward-char 1)))
2115 (ada-indent-current)) 2136 (ada-indent-current))
2116 2137
2117(defun ada-justified-indent-current () 2138(defun ada-justified-indent-current ()
@@ -2335,8 +2356,8 @@ and the offset."
2335 (progn 2356 (progn
2336 (goto-char (car match-cons)) 2357 (goto-char (car match-cons))
2337 (save-excursion 2358 (save-excursion
2338 (beginning-of-line) 2359 (back-to-indentation)
2339 (if (looking-at ada-named-block-re) 2360 (if (looking-at ada-block-label-re)
2340 (setq label (- ada-label-indent)))))))) 2361 (setq label (- ada-label-indent))))))))
2341 2362
2342 ;; found 'record' => 2363 ;; found 'record' =>
@@ -2648,8 +2669,9 @@ and the offset."
2648 ;; label 2669 ;; label
2649 ;;--------------------------------- 2670 ;;---------------------------------
2650 2671
2651 ((looking-at "\\(\\sw\\|_\\)+[ \t\n]*:[^=]") 2672 ((looking-at ada-label-re)
2652 (if (ada-in-decl-p) 2673 (if (ada-in-decl-p)
2674 ;; ada-block-label-re matches variable declarations
2653 (ada-indent-on-previous-lines nil orgpoint orgpoint) 2675 (ada-indent-on-previous-lines nil orgpoint orgpoint)
2654 (append (ada-indent-on-previous-lines nil orgpoint orgpoint) 2676 (append (ada-indent-on-previous-lines nil orgpoint orgpoint)
2655 '(ada-label-indent)))) 2677 '(ada-label-indent))))
@@ -2674,9 +2696,10 @@ if INITIAL-POS is non-nil, moves point to INITIAL-POS before calculation."
2674 (if (ada-in-paramlist-p) 2696 (if (ada-in-paramlist-p)
2675 (ada-get-indent-paramlist) 2697 (ada-get-indent-paramlist)
2676 2698
2677 ;; move to beginning of current statement 2699 ;; Move to beginning of current statement. If already at a
2700 ;; statement start, move to beginning of enclosing statement.
2678 (unless nomove 2701 (unless nomove
2679 (ada-goto-stmt-start)) 2702 (ada-goto-stmt-start t))
2680 2703
2681 ;; no beginning found => don't change indentation 2704 ;; no beginning found => don't change indentation
2682 (if (and (eq oldpoint (point)) 2705 (if (and (eq oldpoint (point))
@@ -2702,6 +2725,12 @@ if INITIAL-POS is non-nil, moves point to INITIAL-POS before calculation."
2702 ((looking-at ada-block-start-re) 2725 ((looking-at ada-block-start-re)
2703 (ada-get-indent-block-start orgpoint)) 2726 (ada-get-indent-block-start orgpoint))
2704 ;; 2727 ;;
2728 ((looking-at ada-block-label-re) ; also variable declaration
2729 (ada-get-indent-block-label orgpoint))
2730 ;;
2731 ((looking-at ada-goto-label-re)
2732 (ada-get-indent-goto-label orgpoint))
2733 ;;
2705 ((looking-at "\\(sub\\)?type\\>") 2734 ((looking-at "\\(sub\\)?type\\>")
2706 (ada-get-indent-type orgpoint)) 2735 (ada-get-indent-type orgpoint))
2707 ;; 2736 ;;
@@ -2717,17 +2746,8 @@ if INITIAL-POS is non-nil, moves point to INITIAL-POS before calculation."
2717 ((looking-at "when\\>") 2746 ((looking-at "when\\>")
2718 (ada-get-indent-when orgpoint)) 2747 (ada-get-indent-when orgpoint))
2719 ;; 2748 ;;
2720 ((looking-at "\\(\\sw\\|_\\)+[ \t\n]*:[^=]")
2721 (ada-get-indent-label orgpoint))
2722 ;;
2723 ((looking-at "separate\\>") 2749 ((looking-at "separate\\>")
2724 (ada-get-indent-nochange)) 2750 (ada-get-indent-nochange))
2725
2726 ;; A label
2727 ((looking-at "<<")
2728 (list (+ (save-excursion (back-to-indentation) (point))
2729 (- ada-label-indent))))
2730
2731 ;; 2751 ;;
2732 ((looking-at "with\\>\\|use\\>") 2752 ((looking-at "with\\>\\|use\\>")
2733 ;; Are we still in that statement, or are we in fact looking at 2753 ;; Are we still in that statement, or are we in fact looking at
@@ -2960,6 +2980,10 @@ ORGPOINT is the limit position used in the calculation."
2960 (car (ada-search-ignore-string-comment "\\<type\\>" t))) 2980 (car (ada-search-ignore-string-comment "\\<type\\>" t)))
2961 'ada-indent))) 2981 'ada-indent)))
2962 2982
2983 ;; Special case for label:
2984 ((looking-at ada-block-label-re)
2985 (list (- (save-excursion (back-to-indentation) (point)) ada-label-indent) 'ada-indent))
2986
2963 ;; nothing follows the block-start 2987 ;; nothing follows the block-start
2964 (t 2988 (t
2965 (list (save-excursion (back-to-indentation) (point)) 'ada-indent))))) 2989 (list (save-excursion (back-to-indentation) (point)) 'ada-indent)))))
@@ -3055,10 +3079,10 @@ ORGPOINT is the limit position used in the calculation."
3055 (list (save-excursion (back-to-indentation) (point)) 3079 (list (save-excursion (back-to-indentation) (point))
3056 'ada-broken-decl-indent)) 3080 'ada-broken-decl-indent))
3057 3081
3058 ;; This one is called in every over case when indenting a line at the 3082 ;; This one is called in every other case when indenting a line at the
3059 ;; top level 3083 ;; top level
3060 (t 3084 (t
3061 (if (looking-at ada-named-block-re) 3085 (if (looking-at (concat "[ \t]*" ada-block-label-re))
3062 (setq label (- ada-label-indent)) 3086 (setq label (- ada-label-indent))
3063 3087
3064 (let (p) 3088 (let (p)
@@ -3087,7 +3111,7 @@ ORGPOINT is the limit position used in the calculation."
3087 (list (+ (save-excursion (back-to-indentation) (point)) label) 3111 (list (+ (save-excursion (back-to-indentation) (point)) label)
3088 'ada-broken-indent))))))) 3112 'ada-broken-indent)))))))
3089 3113
3090(defun ada-get-indent-label (orgpoint) 3114(defun ada-get-indent-block-label (orgpoint)
3091 "Calculate the indentation when before a label or variable declaration. 3115 "Calculate the indentation when before a label or variable declaration.
3092ORGPOINT is the limit position used in the calculation." 3116ORGPOINT is the limit position used in the calculation."
3093 (let ((match-cons nil) 3117 (let ((match-cons nil)
@@ -3119,6 +3143,16 @@ ORGPOINT is the limit position used in the calculation."
3119 (t 3143 (t
3120 (list cur-indent '(- ada-label-indent)))))) 3144 (list cur-indent '(- ada-label-indent))))))
3121 3145
3146(defun ada-get-indent-goto-label (orgpoint)
3147 "Calculate the indentation when at a goto label."
3148 (search-forward ">>")
3149 (ada-goto-next-non-ws)
3150 (if (>= (point) orgpoint)
3151 ;; labeled statement is the one we need to indent
3152 (list (- (point) ada-label-indent))
3153 ;; else indentation is indent for labeled statement
3154 (ada-indent-on-previous-lines t orgpoint)))
3155
3122(defun ada-get-indent-loop (orgpoint) 3156(defun ada-get-indent-loop (orgpoint)
3123 "Calculate the indentation when just before a loop or a for ... use. 3157 "Calculate the indentation when just before a loop or a for ... use.
3124ORGPOINT is the limit position used in the calculation." 3158ORGPOINT is the limit position used in the calculation."
@@ -3127,8 +3161,8 @@ ORGPOINT is the limit position used in the calculation."
3127 3161
3128 ;; If looking at a named block, skip the label 3162 ;; If looking at a named block, skip the label
3129 (label (save-excursion 3163 (label (save-excursion
3130 (beginning-of-line) 3164 (back-to-indentation)
3131 (if (looking-at ada-named-block-re) 3165 (if (looking-at ada-block-label-re)
3132 (- ada-label-indent) 3166 (- ada-label-indent)
3133 0)))) 3167 0))))
3134 3168
@@ -3286,7 +3320,7 @@ ORGPOINT is the limit position used in the calculation."
3286;; -- searching and matching 3320;; -- searching and matching
3287;; ----------------------------------------------------------- 3321;; -----------------------------------------------------------
3288 3322
3289(defun ada-goto-stmt-start () 3323(defun ada-goto-stmt-start (&optional ignore-goto-label)
3290 "Move point to the beginning of the statement that point is in or after. 3324 "Move point to the beginning of the statement that point is in or after.
3291Return the new position of point. 3325Return the new position of point.
3292As a special case, if we are looking at a closing parenthesis, skip to the 3326As a special case, if we are looking at a closing parenthesis, skip to the
@@ -3304,7 +3338,7 @@ open parenthesis."
3304 (progn 3338 (progn
3305 (unless (save-excursion 3339 (unless (save-excursion
3306 (goto-char (cdr match-dat)) 3340 (goto-char (cdr match-dat))
3307 (ada-goto-next-non-ws orgpoint)) 3341 (ada-goto-next-non-ws orgpoint ignore-goto-label))
3308 ;; 3342 ;;
3309 ;; nothing follows => it's the end-statement directly in 3343 ;; nothing follows => it's the end-statement directly in
3310 ;; front of point => search again 3344 ;; front of point => search again
@@ -3326,7 +3360,7 @@ open parenthesis."
3326 (goto-char (point-min)) 3360 (goto-char (point-min))
3327 ;; 3361 ;;
3328 ;; skip to the very first statement, if there is one 3362 ;; skip to the very first statement, if there is one
3329 ;; 3363 ;;
3330 (unless (ada-goto-next-non-ws orgpoint) 3364 (unless (ada-goto-next-non-ws orgpoint)
3331 (goto-char orgpoint)))) 3365 (goto-char orgpoint))))
3332 (point))) 3366 (point)))
@@ -3388,18 +3422,25 @@ is the end of the match."
3388 nil))) 3422 nil)))
3389 3423
3390 3424
3391(defun ada-goto-next-non-ws (&optional limit) 3425(defun ada-goto-next-non-ws (&optional limit skip-goto-label)
3392 "Skip white spaces, newlines and comments to next non-ws character. 3426 "Skip to next non-whitespace character.
3427Skips spaces, newlines and comments, and possibly goto labels.
3428Return `point' if moved, nil if not.
3393Stop the search at LIMIT. 3429Stop the search at LIMIT.
3394Do not call this function from within a string." 3430Do not call this function from within a string."
3395 (unless limit 3431 (unless limit
3396 (setq limit (point-max))) 3432 (setq limit (point-max)))
3397 (while (and (<= (point) limit) 3433 (while (and (<= (point) limit)
3398 (progn (forward-comment 10000) 3434 (or (progn (forward-comment 10000)
3399 (if (and (not (eobp)) 3435 (if (and (not (eobp))
3400 (save-excursion (forward-char 1) 3436 (save-excursion (forward-char 1)
3401 (ada-in-string-p))) 3437 (ada-in-string-p)))
3402 (progn (forward-sexp 1) t))))) 3438 (progn (forward-sexp 1) t)))
3439 (and skip-goto-label
3440 (looking-at ada-goto-label-re)
3441 (progn
3442 (goto-char (match-end 0))
3443 t)))))
3403 (if (< (point) limit) 3444 (if (< (point) limit)
3404 (point) 3445 (point)
3405 nil) 3446 nil)
@@ -3426,9 +3467,7 @@ Return the new position of point or nil if not found."
3426 (unless backward 3467 (unless backward
3427 (skip-syntax-forward "w")) 3468 (skip-syntax-forward "w"))
3428 (if (setq match-cons 3469 (if (setq match-cons
3429 (if backward 3470 (ada-search-ignore-string-comment "\\w" backward nil t))
3430 (ada-search-ignore-string-comment "\\w" t nil t)
3431 (ada-search-ignore-string-comment "\\w" nil nil t)))
3432 ;; 3471 ;;
3433 ;; move to the beginning of the word found 3472 ;; move to the beginning of the word found
3434 ;; 3473 ;;
diff --git a/lisp/startup.el b/lisp/startup.el
index 9de08852ae2..857ad97e448 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -758,7 +758,8 @@ opening the first frame (e.g. open a connection to an X server).")
758 (pop args))) 758 (pop args)))
759 759
760 (let ((done nil) 760 (let ((done nil)
761 (args (cdr command-line-args))) 761 (args (cdr command-line-args))
762 display-arg)
762 763
763 ;; Figure out which user's init file to load, 764 ;; Figure out which user's init file to load,
764 ;; either from the environment or from the options. 765 ;; either from the environment or from the options.
@@ -794,6 +795,11 @@ opening the first frame (e.g. open a connection to an X server).")
794 (setq argval nil 795 (setq argval nil
795 argi orig-argi))))) 796 argi orig-argi)))))
796 (cond 797 (cond
798 ;; The --display arg is handled partly in C, partly in Lisp.
799 ;; When it shows up here, we just put it back to be handled
800 ;; by `command-line-1'.
801 ((member argi '("-d" "-display"))
802 (setq display-arg (list argi (pop args))))
797 ((member argi '("-Q" "-quick")) 803 ((member argi '("-Q" "-quick"))
798 (setq init-file-user nil 804 (setq init-file-user nil
799 site-run-file nil 805 site-run-file nil
@@ -813,8 +819,6 @@ opening the first frame (e.g. open a connection to an X server).")
813 (setq init-file-debug t)) 819 (setq init-file-debug t))
814 ((equal argi "-iconic") 820 ((equal argi "-iconic")
815 (push '(visibility . icon) initial-frame-alist)) 821 (push '(visibility . icon) initial-frame-alist))
816 ((member argi '("-icon-type" "-i" "-itype"))
817 (push '(icon-type . t) default-frame-alist))
818 ((member argi '("-nbc" "-no-blinking-cursor")) 822 ((member argi '("-nbc" "-no-blinking-cursor"))
819 (setq no-blinking-cursor t)) 823 (setq no-blinking-cursor t))
820 ;; Push the popped arg back on the list of arguments. 824 ;; Push the popped arg back on the list of arguments.
@@ -825,6 +829,9 @@ opening the first frame (e.g. open a connection to an X server).")
825 (and argval 829 (and argval
826 (error "Option `%s' doesn't allow an argument" argi)))) 830 (error "Option `%s' doesn't allow an argument" argi))))
827 831
832 ;; Re-attach the --display arg.
833 (and display-arg (setq args (append display-arg args)))
834
828 ;; Re-attach the program name to the front of the arg list. 835 ;; Re-attach the program name to the front of the arg list.
829 (and command-line-args 836 (and command-line-args
830 (setcdr command-line-args args))) 837 (setcdr command-line-args args)))
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index 00896be3c6e..66d831968d1 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -870,7 +870,7 @@ EXIT-FN is, if non-nil, a function that is called after filling
870 is done. Arguments and return values for this funcion are 870 is done. Arguments and return values for this funcion are
871 described below. 871 described below.
872DRAW-HOW defines the kind of shape. The kinds of shapes are: 872DRAW-HOW defines the kind of shape. The kinds of shapes are:
873 `artist-do-continously' -- Do drawing operation continously, 873 `artist-do-continously' -- Do drawing operation continuously,
874 as long as the mouse button is held down. 874 as long as the mouse button is held down.
875 `artist-do-poly' -- Do drawing operation many times. 875 `artist-do-poly' -- Do drawing operation many times.
876 1 -- Do drawing operation only once. 876 1 -- Do drawing operation only once.
@@ -1477,7 +1477,7 @@ Keymap summary
1477; 1477;
1478 1478
1479(defun artist-compute-popup-menu-table (menu-table) 1479(defun artist-compute-popup-menu-table (menu-table)
1480 "Create a menu from from MENU-TABLE data. 1480 "Create a menu from MENU-TABLE data.
1481The returned value is suitable for the `x-popup-menu' function." 1481The returned value is suitable for the `x-popup-menu' function."
1482 (cons "Artist menu" 1482 (cons "Artist menu"
1483 (artist-compute-popup-menu-table-sub menu-table))) 1483 (artist-compute-popup-menu-table-sub menu-table)))
@@ -3879,8 +3879,8 @@ The 2-point shape SHAPE is drawn from X1, Y1 to X2, Y2."
3879;; 3879;;
3880 3880
3881(defun artist-key-undraw-continously (x y) 3881(defun artist-key-undraw-continously (x y)
3882 "Undraw current continous shape with point at X, Y." 3882 "Undraw current continuous shape with point at X, Y."
3883 ;; No undraw-info for continous shapes 3883 ;; No undraw-info for continuous shapes
3884 nil) 3884 nil)
3885 3885
3886(defun artist-key-undraw-poly (x y) 3886(defun artist-key-undraw-poly (x y)
@@ -3937,7 +3937,7 @@ The 2-point shape SHAPE is drawn from X1, Y1 to X2, Y2."
3937;; user has released the button, so the timer will always be cancelled 3937;; user has released the button, so the timer will always be cancelled
3938;; at that point. 3938;; at that point.
3939(defun artist-key-draw-continously (x y) 3939(defun artist-key-draw-continously (x y)
3940 "Draw current continous shape at X,Y." 3940 "Draw current continuous shape at X,Y."
3941 (let ((draw-fn (artist-go-get-draw-fn-from-symbol artist-curr-go))) 3941 (let ((draw-fn (artist-go-get-draw-fn-from-symbol artist-curr-go)))
3942 (setq artist-key-shape (artist-funcall draw-fn x y)))) 3942 (setq artist-key-shape (artist-funcall draw-fn x y))))
3943 3943
@@ -4018,7 +4018,7 @@ Trimming here means removing white space at end of a line."
4018;; 4018;;
4019 4019
4020(defun artist-key-do-continously-continously (x y) 4020(defun artist-key-do-continously-continously (x y)
4021 "Update current continous shape at X,Y." 4021 "Update current continuous shape at X,Y."
4022 (let ((draw-fn (artist-go-get-draw-fn-from-symbol artist-curr-go))) 4022 (let ((draw-fn (artist-go-get-draw-fn-from-symbol artist-curr-go)))
4023 (artist-funcall draw-fn x y))) 4023 (artist-funcall draw-fn x y)))
4024 4024
@@ -4045,7 +4045,7 @@ Trimming here means removing white space at end of a line."
4045 4045
4046(defun artist-key-do-continously-1point (x y) 4046(defun artist-key-do-continously-1point (x y)
4047 "Update current 1-point shape at X,Y." 4047 "Update current 1-point shape at X,Y."
4048 ;; Nothing to do continously for operations 4048 ;; Nothing to do continuously for operations
4049 ;; where we have only one input point 4049 ;; where we have only one input point
4050 nil) 4050 nil)
4051 4051
@@ -4094,8 +4094,8 @@ Trimming here means removing white space at end of a line."
4094 4094
4095 4095
4096(defun artist-key-set-point-continously (x y) 4096(defun artist-key-set-point-continously (x y)
4097 "Set point for current continous shape at X,Y." 4097 "Set point for current continuous shape at X,Y."
4098 ;; Maybe set arrow-points for continous shapes 4098 ;; Maybe set arrow-points for continuous shapes
4099 (let ((arrow-pred (artist-go-get-arrow-pred-from-symbol artist-curr-go)) 4099 (let ((arrow-pred (artist-go-get-arrow-pred-from-symbol artist-curr-go))
4100 (arrow-set-fn (artist-go-get-arrow-set-fn-from-symbol artist-curr-go)) 4100 (arrow-set-fn (artist-go-get-arrow-set-fn-from-symbol artist-curr-go))
4101 (init-fn (artist-go-get-init-fn-from-symbol artist-curr-go)) 4101 (init-fn (artist-go-get-init-fn-from-symbol artist-curr-go))
@@ -4914,7 +4914,7 @@ If optional argument STATE is positive, turn borders on."
4914 4914
4915(defun artist-mouse-draw-continously (ev) 4915(defun artist-mouse-draw-continously (ev)
4916 "Generic function for shapes that require 1 point as input. 4916 "Generic function for shapes that require 1 point as input.
4917Operation is done continously while the mouse button is hold down. 4917Operation is done continuously while the mouse button is hold down.
4918The event, EV, is the mouse event." 4918The event, EV, is the mouse event."
4919 (let* ((unshifted (artist-go-get-symbol-shift artist-curr-go nil)) 4919 (let* ((unshifted (artist-go-get-symbol-shift artist-curr-go nil))
4920 (shifted (artist-go-get-symbol-shift artist-curr-go t)) 4920 (shifted (artist-go-get-symbol-shift artist-curr-go t))
@@ -5395,8 +5395,8 @@ The event, EV, is the mouse event."
5395;; 1. If your new drawing mode falls into one of the following 5395;; 1. If your new drawing mode falls into one of the following
5396;; categories, goto point 2, otherwise goto point 3. 5396;; categories, goto point 2, otherwise goto point 3.
5397;; 5397;;
5398;; - Modes where the shapes are drawn continously, as long as 5398;; - Modes where the shapes are drawn continuously, as long as
5399;; the mouse button is held down (continous modes). 5399;; the mouse button is held down (continuous modes).
5400;; Example: the erase-char mode, the pen and pen-line modes. 5400;; Example: the erase-char mode, the pen and pen-line modes.
5401;; 5401;;
5402;; - Modes where the shape is made up of from 2 points to an 5402;; - Modes where the shape is made up of from 2 points to an
@@ -5408,7 +5408,7 @@ The event, EV, is the mouse event."
5408;; Example: lines, rectangles 5408;; Example: lines, rectangles
5409;; 5409;;
5410;; - Modes where the shape is made up of 1 point (1-point 5410;; - Modes where the shape is made up of 1 point (1-point
5411;; modes). This mode differs from the continous modes in 5411;; modes). This mode differs from the continuous modes in
5412;; that the shape is drawn only once when the mouse button 5412;; that the shape is drawn only once when the mouse button
5413;; is pressed. 5413;; is pressed.
5414;; Examples: paste, a flood-fill, vaporize modes 5414;; Examples: paste, a flood-fill, vaporize modes
@@ -5426,7 +5426,7 @@ The event, EV, is the mouse event."
5426;; For each of the cases below, the arguments given to the init-fn, 5426;; For each of the cases below, the arguments given to the init-fn,
5427;; prep-fill-fn, arrow-set-fn and exit-fn are stated. 5427;; prep-fill-fn, arrow-set-fn and exit-fn are stated.
5428;; 5428;;
5429;; If your mode matches the continous mode or the 1-point mode: 5429;; If your mode matches the continuous mode or the 1-point mode:
5430;; 5430;;
5431;; a. Create a draw-function that draws your shape. Your function 5431;; a. Create a draw-function that draws your shape. Your function
5432;; must take x and y as arguments. The return value is not 5432;; must take x and y as arguments. The return value is not
@@ -5538,8 +5538,8 @@ The event, EV, is the mouse event."
5538;; - artist-key-set-point-xxx for setting a point in the 5538;; - artist-key-set-point-xxx for setting a point in the
5539;; mode, to be called from `artist-key-set-point-common'. 5539;; mode, to be called from `artist-key-set-point-common'.
5540;; 5540;;
5541;; - artist-key-do-continously-xxx to be called from 5541;; - artist-key-do-continuously-xxx to be called from
5542;; `artist-key-do-continously-common' whenever the user 5542;; `artist-key-do-continuously-common' whenever the user
5543;; moves around. 5543;; moves around.
5544;; 5544;;
5545;; As for the artist-mouse-draw-xxx, these two functions must 5545;; As for the artist-mouse-draw-xxx, these two functions must
diff --git a/lisp/vc-dir.el b/lisp/vc-dir.el
index 575a64c1f80..2f661e8becf 100644
--- a/lisp/vc-dir.el
+++ b/lisp/vc-dir.el
@@ -874,7 +874,10 @@ If it is a file, return the corresponding cons for the file itself."
874 (let ((ddir default-directory)) 874 (let ((ddir default-directory))
875 (when (vc-string-prefix-p ddir file) 875 (when (vc-string-prefix-p ddir file)
876 (if (file-directory-p file) 876 (if (file-directory-p file)
877 (vc-dir-resync-directory-files file) 877 (progn
878 (vc-dir-resync-directory-files file)
879 (ewoc-set-hf vc-ewoc
880 (vc-dir-headers vc-dir-backend default-directory) ""))
878 (let ((state (vc-dir-recompute-file-state file ddir))) 881 (let ((state (vc-dir-recompute-file-state file ddir)))
879 (vc-dir-update 882 (vc-dir-update
880 (list state) 883 (list state)
diff --git a/lisp/vc-dispatcher.el b/lisp/vc-dispatcher.el
index 310cc3dc351..40223c9010d 100644
--- a/lisp/vc-dispatcher.el
+++ b/lisp/vc-dispatcher.el
@@ -320,11 +320,14 @@ case, and the process object in the asynchronous case."
320 (setq squeezed (nconc squeezed files))) 320 (setq squeezed (nconc squeezed files)))
321 (let ((exec-path (append vc-path exec-path)) 321 (let ((exec-path (append vc-path exec-path))
322 ;; Add vc-path to PATH for the execution of this command. 322 ;; Add vc-path to PATH for the execution of this command.
323 ;; Also, since some functions need to parse the output
324 ;; from external commands, set LC_MESSAGES to C.
323 (process-environment 325 (process-environment
324 (cons (concat "PATH=" (getenv "PATH") 326 (cons (concat "PATH=" (getenv "PATH")
325 path-separator 327 path-separator
326 (mapconcat 'identity vc-path path-separator)) 328 (mapconcat 'identity vc-path path-separator))
327 process-environment)) 329 (cons "LC_MESSAGES=C"
330 process-environment)))
328 (w32-quote-process-args t)) 331 (w32-quote-process-args t))
329 (if (eq okstatus 'async) 332 (if (eq okstatus 'async)
330 ;; Run asynchronously. 333 ;; Run asynchronously.
diff --git a/lisp/vc.el b/lisp/vc.el
index 3a0cf804e26..2ca36ef4e01 100644
--- a/lisp/vc.el
+++ b/lisp/vc.el
@@ -791,13 +791,23 @@ in their implementation of vc-BACKEND-diff.")
791 791
792(defmacro with-vc-properties (files form settings) 792(defmacro with-vc-properties (files form settings)
793 "Execute FORM, then maybe set per-file properties for FILES. 793 "Execute FORM, then maybe set per-file properties for FILES.
794If any of FILES is actually a directory, then do the same for all
795buffers for files in that directory.
794SETTINGS is an association list of property/value pairs. After 796SETTINGS is an association list of property/value pairs. After
795executing FORM, set those properties from SETTINGS that have not yet 797executing FORM, set those properties from SETTINGS that have not yet
796been updated to their corresponding values." 798been updated to their corresponding values."
797 (declare (debug t)) 799 (declare (debug t))
798 `(let ((vc-touched-properties (list t))) 800 `(let ((vc-touched-properties (list t))
799 ,form 801 (flist nil))
800 (dolist (file ,files) 802 (dolist (file ,files)
803 (if (file-directory-p file)
804 (dolist (buffer (buffer-list))
805 (let ((fname (buffer-file-name buffer)))
806 (when (and fname (vc-string-prefix-p file fname))
807 (push fname flist))))
808 (push file flist)))
809 ,form
810 (dolist (file flist)
801 (dolist (setting ,settings) 811 (dolist (setting ,settings)
802 (let ((property (car setting))) 812 (let ((property (car setting)))
803 (unless (memq property vc-touched-properties) 813 (unless (memq property vc-touched-properties)