aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2010-05-31 22:34:49 -0400
committerStefan Monnier2010-05-31 22:34:49 -0400
commitfd67a7000ee9e118b426df6ad779f3c86d4fe320 (patch)
tree9f39d84fb5eeee28ec6670794980c075ebe51b32
parent06ac62b4db7cf64c9d65ac55bdfcefdf478e20b5 (diff)
parentfeceda26100f1b5712a85aadf0c428a1507b538d (diff)
downloademacs-fd67a7000ee9e118b426df6ad779f3c86d4fe320.tar.gz
emacs-fd67a7000ee9e118b426df6ad779f3c86d4fe320.zip
Merge from emacs-23
-rw-r--r--ChangeLog5
-rw-r--r--doc/lispref/ChangeLog9
-rw-r--r--doc/lispref/minibuf.texi45
-rw-r--r--etc/TODO2
-rw-r--r--lisp/ChangeLog38
-rw-r--r--lisp/cedet/ede/cpp-root.el2
-rw-r--r--lisp/epa.el5
-rw-r--r--lisp/man.el3
-rw-r--r--lisp/vc-bzr.el8
-rw-r--r--src/ChangeLog18
-rw-r--r--src/config.in65
-rw-r--r--src/keymap.c36
12 files changed, 172 insertions, 64 deletions
diff --git a/ChangeLog b/ChangeLog
index d3b08c98201..5b0432f679f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
12010-05-30 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * .bzrignore: Ignore new files from trunk, which appear if you use
4 colocated branches (i.e. "bzr switch").
5
12010-05-28 Glenn Morris <rgm@gnu.org> 62010-05-28 Glenn Morris <rgm@gnu.org>
2 7
3 * configure.in: Simplify some of the $canonical tests. 8 * configure.in: Simplify some of the $canonical tests.
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 1ed5b7ea928..ca40b34b73b 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,12 @@
12010-05-30 Juanma Barranquero <lekktu@gmail.com>
2
3 * minibuf.texi (Basic Completion): Add missing "@end defun".
4
52010-05-30 Stefan Monnier <monnier@iro.umontreal.ca>
6
7 * minibuf.texi (Basic Completion): Document completion-boundaries.
8 (Programmed Completion): Document the new fourth method for boundaries.
9
12010-05-22 Chong Yidong <cyd@stupidchicken.com> 102010-05-22 Chong Yidong <cyd@stupidchicken.com>
2 11
3 * display.texi (Image Cache): Update documentation about image 12 * display.texi (Image Cache): Update documentation about image
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 66b4cb096cc..bfe73ce27f4 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -814,6 +814,25 @@ the values @var{string}, @var{predicate} and @code{lambda}; whatever
814it returns, @code{test-completion} returns in turn. 814it returns, @code{test-completion} returns in turn.
815@end defun 815@end defun
816 816
817@defun completion-boundaries string collection predicate suffix
818This function returns the boundaries of the field on which @var{collection}
819will operate, assuming that @var{string} holds the text before point
820and @var{suffix} holds the text after point.
821
822Normally completion operates on the whole string, so for all normal
823collections, this will always return @code{(0 . (length
824@var{suffix}))}. But more complex completion such as completion on
825files is done one field at a time. For example, completion of
826@code{"/usr/sh"} will include @code{"/usr/share/"} but not
827@code{"/usr/share/doc"} even if @code{"/usr/share/doc"} exists.
828Also @code{all-completions} on @code{"/usr/sh"} will not include
829@code{"/usr/share/"} but only @code{"share/"}. So if @var{string} is
830@code{"/usr/sh"} and @var{suffix} is @code{"e/doc"},
831@code{completion-boundaries} will return @code{(5 . 1)} which tells us
832that the @var{collection} will only return completion information that
833pertains to the area after @code{"/usr/"} and before @code{"/doc"}.
834@end defun
835
817If you store a completion alist in a variable, you should mark the 836If you store a completion alist in a variable, you should mark the
818variable as ``risky'' with a non-@code{nil} 837variable as ``risky'' with a non-@code{nil}
819@code{risky-local-variable} property. @xref{File Local Variables}. 838@code{risky-local-variable} property. @xref{File Local Variables}.
@@ -1618,13 +1637,14 @@ containing all the intended possible completions. In such a case, you
1618can supply your own function to compute the completion of a given 1637can supply your own function to compute the completion of a given
1619string. This is called @dfn{programmed completion}. Emacs uses 1638string. This is called @dfn{programmed completion}. Emacs uses
1620programmed completion when completing file names (@pxref{File Name 1639programmed completion when completing file names (@pxref{File Name
1621Completion}). 1640Completion}), among many other cases.
1622 1641
1623 To use this feature, pass a symbol with a function definition as the 1642 To use this feature, pass a function as the @var{collection}
1624@var{collection} argument to @code{completing-read}. The function 1643argument to @code{completing-read}. The function
1625@code{completing-read} arranges to pass your completion function along 1644@code{completing-read} arranges to pass your completion function along
1626to @code{try-completion} and @code{all-completions}, which will then let 1645to @code{try-completion}, @code{all-completions}, and other basic
1627your function do all the work. 1646completion functions, which will then let your function do all
1647the work.
1628 1648
1629 The completion function should accept three arguments: 1649 The completion function should accept three arguments:
1630 1650
@@ -1638,10 +1658,14 @@ none. Your function should call the predicate for each possible match,
1638and ignore the possible match if the predicate returns @code{nil}. 1658and ignore the possible match if the predicate returns @code{nil}.
1639 1659
1640@item 1660@item
1641A flag specifying the type of operation. 1661A flag specifying the type of operation. The best way to think about
1662it is that the function stands for an object (in the
1663``object-oriented'' sense of the word), and this third argument
1664specifies which method to run.
1642@end itemize 1665@end itemize
1643 1666
1644 There are three flag values for three operations: 1667 There are currently four methods, i.e. four flag values, one for
1668 each of the four different basic operations:
1645 1669
1646@itemize @bullet 1670@itemize @bullet
1647@item 1671@item
@@ -1663,6 +1687,13 @@ string.
1663@code{lambda} specifies @code{test-completion}. The completion 1687@code{lambda} specifies @code{test-completion}. The completion
1664function should return @code{t} if the specified string is an exact 1688function should return @code{t} if the specified string is an exact
1665match for some possibility; @code{nil} otherwise. 1689match for some possibility; @code{nil} otherwise.
1690
1691@item
1692@code{(boundaries . SUFFIX)} specifies @code{completion-boundaries}.
1693The function should return a value of the form @code{(boundaries
1694START . END)} where START is the position of the beginning boundary in
1695in the string to complete, and END is the position of the end boundary
1696in SUFFIX.
1666@end itemize 1697@end itemize
1667 1698
1668 It would be consistent and clean for completion functions to allow 1699 It would be consistent and clean for completion functions to allow
diff --git a/etc/TODO b/etc/TODO
index 78ef0213b93..d58eb8be3d8 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -410,7 +410,7 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
410 the whole menu bar. In the mean time, it should process other messages. 410 the whole menu bar. In the mean time, it should process other messages.
411 411
412** Get some major packages installed: W3 (development version needs 412** Get some major packages installed: W3 (development version needs
413 significant work), PSGML, _possibly_ Cedet and ECB. 413 significant work), PSGML, _possibly_ ECB.
414 http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg01493.html 414 http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg01493.html
415 Check the assignments file for other packages which might go in and 415 Check the assignments file for other packages which might go in and
416 have been missed. 416 have been missed.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b8b1fee8e0c..11316a24222 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,17 @@
12010-06-01 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * vc-bzr.el (vc-bzr-revision-completion-table): Apply
4 `file-directory-p' to the filename part rather than to the whole text.
5
62010-05-31 Jonathan Marchand <jonathlela@gmail.com> (tiny change)
7
8 * cedet/ede/cpp-root.el (ede-set-project-variables): Fix feature name
9 (bug#6231).
10
112010-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
12
13 * man.el (Man-completion-table): Let the user type "-k " (bug#6319).
14
12010-05-31 Drew Adams <drew.adams@oracle.com> 152010-05-31 Drew Adams <drew.adams@oracle.com>
2 16
3 * files.el (directory-files-no-dot-files-regexp): Doc fix (bug#6298). 17 * files.el (directory-files-no-dot-files-regexp): Doc fix (bug#6298).
@@ -66,6 +80,14 @@
66 (ls-lisp-classify): Call ls-lisp-classify-file. 80 (ls-lisp-classify): Call ls-lisp-classify-file.
67 (insert-directory): Remove blanks from switches. 81 (insert-directory): Remove blanks from switches.
68 82
832010-05-29 Chong Yidong <cyd@stupidchicken.com>
84
85 * ansi-color.el: Delete unused escape sequences (Bug#6085).
86 (ansi-color-drop-regexp): New constant.
87 (ansi-color-apply, ansi-color-filter-region)
88 (ansi-color-apply-on-region): Delete unrecognized control sequences.
89 (ansi-color-apply): Build string list before calling concat.
90
692010-05-28 Juri Linkov <juri@jurta.org> 912010-05-28 Juri Linkov <juri@jurta.org>
70 92
71 * image-dired.el (image-dired-dired-toggle-marked-thumbs): 93 * image-dired.el (image-dired-dired-toggle-marked-thumbs):
@@ -212,6 +234,16 @@
212 (smie-next-sexp): Handle nil results from next-token. 234 (smie-next-sexp): Handle nil results from next-token.
213 (smie-indent-calculate): Add a new case for special `fixindent' comments. 235 (smie-indent-calculate): Add a new case for special `fixindent' comments.
214 236
2372010-05-27 Chong Yidong <cyd@stupidchicken.com>
238
239 * progmodes/verilog-mode.el (verilog-type-font-keywords):
240 Use font-lock-constant-face, not obsolete font-lock-reference-face.
241
2422010-05-27 Masatake YAMATO <yamato@redhat.com>
243
244 * htmlfontify.el (hfy-face-resolve-face): New function.
245 (hfy-face-to-style): Use it (Bug#6279).
246
2152010-05-26 Stefan Monnier <monnier@iro.umontreal.ca> 2472010-05-26 Stefan Monnier <monnier@iro.umontreal.ca>
216 248
217 * progmodes/ada-xref.el (ada-gnat-parse-gpr): 249 * progmodes/ada-xref.el (ada-gnat-parse-gpr):
@@ -316,7 +348,13 @@
316 Register it in composition-function-table for all Hebrew combining 348 Register it in composition-function-table for all Hebrew combining
317 characters. 349 characters.
318 350
3512010-05-25 Stefan Monnier <monnier@iro.umontreal.ca>
352
353 * epa.el (epa--select-keys): Don't explicitly delete the window since
354 that can fail (e.g. sole window in frame). Use dedication instead.
355
3192010-05-24 Uday S Reddy <u.s.reddy@cs.bham.ac.uk> (tiny change) 3562010-05-24 Uday S Reddy <u.s.reddy@cs.bham.ac.uk> (tiny change)
3572010-05-19 Uday S Reddy <u.s.reddy@cs.bham.ac.uk> (tiny change)
320 358
321 * textmodes/fill.el (fill-region): Don't fill past the end (bug#6201). 359 * textmodes/fill.el (fill-region): Don't fill past the end (bug#6201).
322 360
diff --git a/lisp/cedet/ede/cpp-root.el b/lisp/cedet/ede/cpp-root.el
index 1592c3c2f5d..cae4d090a39 100644
--- a/lisp/cedet/ede/cpp-root.el
+++ b/lisp/cedet/ede/cpp-root.el
@@ -467,7 +467,7 @@ This is for project include paths and spp source files."
467 "Set variables local to PROJECT in BUFFER. 467 "Set variables local to PROJECT in BUFFER.
468Also set up the lexical preprocessor map." 468Also set up the lexical preprocessor map."
469 (call-next-method) 469 (call-next-method)
470 (when (and (featurep 'semantic/c) (featurep 'semantic/lex-spp)) 470 (when (and (featurep 'semantic/bovine/c) (featurep 'semantic/lex-spp))
471 (setq semantic-lex-spp-project-macro-symbol-obarray 471 (setq semantic-lex-spp-project-macro-symbol-obarray
472 (semantic-lex-make-spp-table (oref project spp-table))) 472 (semantic-lex-make-spp-table (oref project spp-table)))
473 )) 473 ))
diff --git a/lisp/epa.el b/lisp/epa.el
index ea438f0073a..8d77d6938b1 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -508,13 +508,12 @@ If ARG is non-nil, mark the key."
508 (set-keymap-parent (current-local-map) widget-keymap) 508 (set-keymap-parent (current-local-map) widget-keymap)
509 (setq epa-exit-buffer-function #'abort-recursive-edit) 509 (setq epa-exit-buffer-function #'abort-recursive-edit)
510 (goto-char (point-min)) 510 (goto-char (point-min))
511 (pop-to-buffer (current-buffer))) 511 (let ((display-buffer-mark-dedicated 'soft))
512 (pop-to-buffer (current-buffer))))
512 (unwind-protect 513 (unwind-protect
513 (progn 514 (progn
514 (recursive-edit) 515 (recursive-edit)
515 (epa--marked-keys)) 516 (epa--marked-keys))
516 (if (get-buffer-window epa-keys-buffer)
517 (delete-window (get-buffer-window epa-keys-buffer)))
518 (kill-buffer epa-keys-buffer)))) 517 (kill-buffer epa-keys-buffer))))
519 518
520;;;###autoload 519;;;###autoload
diff --git a/lisp/man.el b/lisp/man.el
index df5f4807cec..f448795c1cb 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -759,6 +759,9 @@ POS defaults to `point'."
759 (cond 759 (cond
760 ((eq action 'lambda) 760 ((eq action 'lambda)
761 (not (string-match "([^)]*\\'" string))) 761 (not (string-match "([^)]*\\'" string)))
762 ((equal string "-k")
763 ;; Let SPC (minibuffer-complete-word) insert the space.
764 (complete-with-action action '("-k ") string pred))
762 (t 765 (t
763 (let ((table (cdr Man-completion-cache)) 766 (let ((table (cdr Man-completion-cache))
764 (section nil) 767 (section nil)
diff --git a/lisp/vc-bzr.el b/lisp/vc-bzr.el
index 0b6f8e6f39e..117712d58fe 100644
--- a/lisp/vc-bzr.el
+++ b/lisp/vc-bzr.el
@@ -999,10 +999,12 @@ stream. Standard error output is discarded."
999 ((string-match "\\`\\(ancestor\\|branch\\|\\(revno:\\)?[-0-9]+:\\):" 999 ((string-match "\\`\\(ancestor\\|branch\\|\\(revno:\\)?[-0-9]+:\\):"
1000 string) 1000 string)
1001 (completion-table-with-context (substring string 0 (match-end 0)) 1001 (completion-table-with-context (substring string 0 (match-end 0))
1002 'completion-file-name-table 1002 (apply-partially
1003 'completion-table-with-predicate
1004 'completion-file-name-table
1005 'file-directory-p t)
1003 (substring string (match-end 0)) 1006 (substring string (match-end 0))
1004 ;; Dropping `pred' for no good reason. 1007 pred
1005 'file-directory-p
1006 action)) 1008 action))
1007 ((string-match "\\`\\(before\\):" string) 1009 ((string-match "\\`\\(before\\):" string)
1008 (completion-table-with-context (substring string 0 (match-end 0)) 1010 (completion-table-with-context (substring string 0 (match-end 0))
diff --git a/src/ChangeLog b/src/ChangeLog
index cb41750a62c..b656b0e7dc7 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -3,6 +3,11 @@
3 * sysdep.c (child_setup_tty): Move the non-canonical initialization to 3 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
4 the HAVE_TERMIO where it belongs (bug#6149). 4 the HAVE_TERMIO where it belongs (bug#6149).
5 5
62010-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
7
8 * keymap.c (Fwhere_is_internal): Fix handling of remapping (in thread
9 of bug#6305).
10
62010-05-30 Eli Zaretskii <eliz@gnu.org> 112010-05-30 Eli Zaretskii <eliz@gnu.org>
7 12
8 * bidi.c (bidi_move_to_visually_next): Make sure the sentinel 13 * bidi.c (bidi_move_to_visually_next): Make sure the sentinel
@@ -123,6 +128,11 @@
123 128
124 * dispextern.h (init_iterator): Sync prototype with changed definition. 129 * dispextern.h (init_iterator): Sync prototype with changed definition.
125 130
1312010-05-20 enami tsugutomo <tsugutomo.enami@jp.sony.com>
132
133 * s/netbsd.h: If terminfo is found, use it in preference to
134 termcap. (Bug#6190) [Backport from trunk]
135
1262010-05-19 Eli Zaretskii <eliz@gnu.org> 1362010-05-19 Eli Zaretskii <eliz@gnu.org>
127 137
128 Redesign and reimplement bidi-aware edge positions of glyph rows. 138 Redesign and reimplement bidi-aware edge positions of glyph rows.
@@ -2270,7 +2280,7 @@
2270 (xg_toggle_notify_cb, xg_set_toolkit_scroll_bar_thumb) 2280 (xg_toggle_notify_cb, xg_set_toolkit_scroll_bar_thumb)
2271 (xg_create_tool_bar): Remove unused variables. 2281 (xg_create_tool_bar): Remove unused variables.
2272 (x_wm_set_size_hint): Move declarations before statements. 2282 (x_wm_set_size_hint): Move declarations before statements.
2273 (xg_create_frame_widgets): Remove variable grav, 2283 (xg_create_frame_widgets): Remove variable grav.
2274 2284
22752010-02-21 Chong Yidong <cyd@stupidchicken.com> 22852010-02-21 Chong Yidong <cyd@stupidchicken.com>
2276 2286
@@ -2388,7 +2398,7 @@
2388 2398
2389 * xfns.c (Fx_create_frame): Remove window size matching code from 2399 * xfns.c (Fx_create_frame): Remove window size matching code from
2390 2010-01-15. 2400 2010-01-15.
2391 (x_get_current_desktop, x_get_desktop_workarea): Remove 2401 (x_get_current_desktop, x_get_desktop_workarea): Remove.
2392 2402
23932010-01-27 Jason Rumney <jasonr@gnu.org> 24032010-01-27 Jason Rumney <jasonr@gnu.org>
2394 2404
@@ -3225,7 +3235,7 @@
3225 fontconfig settings like hinting. 3235 fontconfig settings like hinting.
3226 (font_load_for_lface): If spec had a name in it, store it in entity. 3236 (font_load_for_lface): If spec had a name in it, store it in entity.
3227 3237
3228 * emacs.c (main): Call syms_of_xsettings 3238 * emacs.c (main): Call syms_of_xsettings.
3229 3239
3230 * config.in: HAVE_GCONF is new. 3240 * config.in: HAVE_GCONF is new.
3231 3241
@@ -8810,7 +8820,7 @@
8810 (composition_adjust_point, Fcomposition_get_gstring): New functions. 8820 (composition_adjust_point, Fcomposition_get_gstring): New functions.
8811 (syms_of_composite): Initialize gstring_hash_table, gstrint_work, 8821 (syms_of_composite): Initialize gstring_hash_table, gstrint_work,
8812 and gstring_work_headers. DEFVAR_LISP composition-function-table. 8822 and gstring_work_headers. DEFVAR_LISP composition-function-table.
8813 Defsubr compostion_get_gstring. 8823 Defsubr composition_get_gstring.
8814 8824
8815 * dispextern.h (struct glyph): New union u.cmp. Delete the member 8825 * dispextern.h (struct glyph): New union u.cmp. Delete the member
8816 cmp_id. 8826 cmp_id.
diff --git a/src/config.in b/src/config.in
index e7122bf665b..9d845027db4 100644
--- a/src/config.in
+++ b/src/config.in
@@ -312,10 +312,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
312/* Define to 1 if you have the <kerberos/krb.h> header file. */ 312/* Define to 1 if you have the <kerberos/krb.h> header file. */
313#undef HAVE_KERBEROS_KRB_H 313#undef HAVE_KERBEROS_KRB_H
314 314
315/* Define to 1 if `e_text' is member of `krb5_error'. */ 315/* Define to 1 if `e_text' is a member of `krb5_error'. */
316#undef HAVE_KRB5_ERROR_E_TEXT 316#undef HAVE_KRB5_ERROR_E_TEXT
317 317
318/* Define to 1 if `text' is member of `krb5_error'. */ 318/* Define to 1 if `text' is a member of `krb5_error'. */
319#undef HAVE_KRB5_ERROR_TEXT 319#undef HAVE_KRB5_ERROR_TEXT
320 320
321/* Define to 1 if you have the <krb5.h> header file. */ 321/* Define to 1 if you have the <krb5.h> header file. */
@@ -606,25 +606,25 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
606/* Define to 1 if you have the `strsignal' function. */ 606/* Define to 1 if you have the `strsignal' function. */
607#undef HAVE_STRSIGNAL 607#undef HAVE_STRSIGNAL
608 608
609/* Define to 1 if `ifr_addr' is member of `struct ifreq'. */ 609/* Define to 1 if `ifr_addr' is a member of `struct ifreq'. */
610#undef HAVE_STRUCT_IFREQ_IFR_ADDR 610#undef HAVE_STRUCT_IFREQ_IFR_ADDR
611 611
612/* Define to 1 if `ifr_broadaddr' is member of `struct ifreq'. */ 612/* Define to 1 if `ifr_broadaddr' is a member of `struct ifreq'. */
613#undef HAVE_STRUCT_IFREQ_IFR_BROADADDR 613#undef HAVE_STRUCT_IFREQ_IFR_BROADADDR
614 614
615/* Define to 1 if `ifr_flags' is member of `struct ifreq'. */ 615/* Define to 1 if `ifr_flags' is a member of `struct ifreq'. */
616#undef HAVE_STRUCT_IFREQ_IFR_FLAGS 616#undef HAVE_STRUCT_IFREQ_IFR_FLAGS
617 617
618/* Define to 1 if `ifr_hwaddr' is member of `struct ifreq'. */ 618/* Define to 1 if `ifr_hwaddr' is a member of `struct ifreq'. */
619#undef HAVE_STRUCT_IFREQ_IFR_HWADDR 619#undef HAVE_STRUCT_IFREQ_IFR_HWADDR
620 620
621/* Define to 1 if `ifr_netmask' is member of `struct ifreq'. */ 621/* Define to 1 if `ifr_netmask' is a member of `struct ifreq'. */
622#undef HAVE_STRUCT_IFREQ_IFR_NETMASK 622#undef HAVE_STRUCT_IFREQ_IFR_NETMASK
623 623
624/* Define to 1 if `n_un.n_name' is member of `struct nlist'. */ 624/* Define to 1 if `n_un.n_name' is a member of `struct nlist'. */
625#undef HAVE_STRUCT_NLIST_N_UN_N_NAME 625#undef HAVE_STRUCT_NLIST_N_UN_N_NAME
626 626
627/* Define to 1 if `tm_zone' is member of `struct tm'. */ 627/* Define to 1 if `tm_zone' is a member of `struct tm'. */
628#undef HAVE_STRUCT_TM_TM_ZONE 628#undef HAVE_STRUCT_TM_TM_ZONE
629 629
630/* Define to 1 if `struct utimbuf' is declared by <utime.h>. */ 630/* Define to 1 if `struct utimbuf' is declared by <utime.h>. */
@@ -853,6 +853,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
853/* Define to the one symbol short name of this package. */ 853/* Define to the one symbol short name of this package. */
854#undef PACKAGE_TARNAME 854#undef PACKAGE_TARNAME
855 855
856/* Define to the home page for this package. */
857#undef PACKAGE_URL
858
856/* Define to the version of this package. */ 859/* Define to the version of this package. */
857#undef PACKAGE_VERSION 860#undef PACKAGE_VERSION
858 861
@@ -912,6 +915,28 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
912/* Define to 1 if using the Motif X toolkit. */ 915/* Define to 1 if using the Motif X toolkit. */
913#undef USE_MOTIF 916#undef USE_MOTIF
914 917
918/* Enable extensions on AIX 3, Interix. */
919#ifndef _ALL_SOURCE
920# undef _ALL_SOURCE
921#endif
922/* Enable GNU extensions on systems that have them. */
923#ifndef _GNU_SOURCE
924# undef _GNU_SOURCE
925#endif
926/* Enable threading extensions on Solaris. */
927#ifndef _POSIX_PTHREAD_SEMANTICS
928# undef _POSIX_PTHREAD_SEMANTICS
929#endif
930/* Enable extensions on HP NonStop. */
931#ifndef _TANDEM_SOURCE
932# undef _TANDEM_SOURCE
933#endif
934/* Enable general extensions on Solaris. */
935#ifndef __EXTENSIONS__
936# undef __EXTENSIONS__
937#endif
938
939
915/* Define to 1 if we should use toolkit scroll bars. */ 940/* Define to 1 if we should use toolkit scroll bars. */
916#undef USE_TOOLKIT_SCROLL_BARS 941#undef USE_TOOLKIT_SCROLL_BARS
917 942
@@ -947,28 +972,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
947/* Define to 1 if you need to in order for `stat' and other things to work. */ 972/* Define to 1 if you need to in order for `stat' and other things to work. */
948#undef _POSIX_SOURCE 973#undef _POSIX_SOURCE
949 974
950/* Enable extensions on AIX 3, Interix. */
951#ifndef _ALL_SOURCE
952# undef _ALL_SOURCE
953#endif
954/* Enable GNU extensions on systems that have them. */
955#ifndef _GNU_SOURCE
956# undef _GNU_SOURCE
957#endif
958/* Enable threading extensions on Solaris. */
959#ifndef _POSIX_PTHREAD_SEMANTICS
960# undef _POSIX_PTHREAD_SEMANTICS
961#endif
962/* Enable extensions on HP NonStop. */
963#ifndef _TANDEM_SOURCE
964# undef _TANDEM_SOURCE
965#endif
966/* Enable general extensions on Solaris. */
967#ifndef __EXTENSIONS__
968# undef __EXTENSIONS__
969#endif
970
971
972/* Define to rpl_ if the getopt replacement functions and variables should be 975/* Define to rpl_ if the getopt replacement functions and variables should be
973 used. */ 976 used. */
974#undef __GETOPT_PREFIX 977#undef __GETOPT_PREFIX
diff --git a/src/keymap.c b/src/keymap.c
index 88e0687272f..53b6795d623 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -2829,16 +2829,16 @@ remapped command in the returned list. */)
2829 Lisp_Object found = Qnil; 2829 Lisp_Object found = Qnil;
2830 /* 1 means ignore all menu bindings entirely. */ 2830 /* 1 means ignore all menu bindings entirely. */
2831 int nomenus = !NILP (firstonly) && !EQ (firstonly, Qnon_ascii); 2831 int nomenus = !NILP (firstonly) && !EQ (firstonly, Qnon_ascii);
2832 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; 2832 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6;
2833 /* List of sequences found via remapping. Keep them in a separate 2833 /* List of sequences found via remapping. Keep them in a separate
2834 variable, so as to push them later, since we prefer 2834 variable, so as to push them later, since we prefer
2835 non-remapped binding. */ 2835 non-remapped binding. */
2836 Lisp_Object remapped_sequences = Qnil; 2836 Lisp_Object remapped_sequences = Qnil;
2837 /* Whether or not we're handling remapped sequences. This is needed 2837 /* Whether or not we're handling remapped sequences. This is needed
2838 because remapping is not done recursively by Fcommand_remapping: you 2838 because remapping is not done recursively by Fcommand_remapping: you
2839 can't remap and remapped command. */ 2839 can't remap a remapped command. */
2840 int remapped = 0; 2840 int remapped = 0;
2841 Lisp_Object tem; 2841 Lisp_Object tem = Qnil;
2842 2842
2843 /* Refresh the C version of the modifier preference. */ 2843 /* Refresh the C version of the modifier preference. */
2844 where_is_preferred_modifier 2844 where_is_preferred_modifier
@@ -2852,17 +2852,25 @@ remapped command in the returned list. */)
2852 else 2852 else
2853 keymaps = Fcurrent_active_maps (Qnil, Qnil); 2853 keymaps = Fcurrent_active_maps (Qnil, Qnil);
2854 2854
2855 GCPRO5 (definition, keymaps, found, sequences, remapped_sequences); 2855 GCPRO6 (definition, keymaps, found, sequences, remapped_sequences, tem);
2856 2856
2857 /* If this command is remapped, then it has no key bindings of its own. 2857 tem = Fcommand_remapping (definition, Qnil, keymaps);
2858 FIXME: Actually, this is not quite right: if A is remapped to 2858 /* If `definition' is remapped to tem', then OT1H no key will run
2859 `definition', then bindings to A will actually bind the key to 2859 that command (since they will run `tem' instead), so we should
2860 `definition' despite the remapping from `definition' to something else. 2860 return nil; but OTOH all keys bound to `definition' (or to `tem')
2861 Another corner case is if `definition' is remapped to itself. */ 2861 will run the same command.
2862 if (NILP (no_remap) 2862 So for menu-shortcut purposes, we want to find all the keys bound (maybe
2863 && SYMBOLP (definition) 2863 via remapping) to `tem'. But for the purpose of finding the keys that
2864 && !NILP (Fcommand_remapping (definition, Qnil, keymaps))) 2864 run `definition', then we'd want to just return nil.
2865 RETURN_UNGCPRO (Qnil); 2865 We choose to make it work right for menu-shortcuts, since it's the most
2866 common use.
2867 Known bugs: if you remap switch-to-buffer to toto, C-h f switch-to-buffer
2868 will tell you that switch-to-buffer is bound to C-x b even though C-x b
2869 will run toto instead. And if `toto' is itself remapped to forward-char,
2870 then C-h f toto will tell you that it's bound to C-f even though C-f does
2871 not run toto and it won't tell you that C-x b does run toto. */
2872 if (NILP (no_remap) && !NILP (tem))
2873 definition = tem;
2866 2874
2867 if (SYMBOLP (definition) 2875 if (SYMBOLP (definition)
2868 && !NILP (firstonly) 2876 && !NILP (firstonly)