Mercurial > emacs
changeset 83226:9ea0f6980511
Merged in changes from CVS trunk.
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-672
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-266
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sat, 13 Nov 2004 18:21:48 +0000 |
parents | 07964164a825 (current diff) da879b3ac5c4 (diff) |
children | 3ec251523b3e |
files | ChangeLog lisp/ChangeLog lisp/recentf.el src/config.in src/frame.c src/print.c src/xmenu.c |
diffstat | 25 files changed, 292 insertions(+), 65 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sat Nov 06 17:57:15 2004 +0000 +++ b/ChangeLog Sat Nov 13 18:21:48 2004 +0000 @@ -1,3 +1,8 @@ +2004-11-06 Lars Brinkhoff <lars@nocrew.org> + + * configure.in: Add check for getrusage. + * configure: Regenerate. + 2004-11-02 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> * configure.in (HAVE_GTK_FILE_CHOOSER, $HAVE_GTK_FILE_SELECTION): New
--- a/configure Sat Nov 06 17:57:15 2004 +0000 +++ b/configure Sat Nov 13 18:21:48 2004 +0000 @@ -13704,8 +13704,9 @@ + for ac_func in gethostname getdomainname dup2 \ -rename closedir mkdir rmdir sysinfo \ +rename closedir mkdir rmdir sysinfo getrusage \ random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \ strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \ utimes setrlimit setpgid getcwd getwd shutdown getaddrinfo \
--- a/configure.in Sat Nov 06 17:57:15 2004 +0000 +++ b/configure.in Sat Nov 13 18:21:48 2004 +0000 @@ -2370,7 +2370,7 @@ AC_CHECK_HEADERS(maillock.h) AC_CHECK_FUNCS(gethostname getdomainname dup2 \ -rename closedir mkdir rmdir sysinfo \ +rename closedir mkdir rmdir sysinfo getrusage \ random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \ strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \ utimes setrlimit setpgid getcwd getwd shutdown getaddrinfo \
--- a/etc/NEWS Sat Nov 06 17:57:15 2004 +0000 +++ b/etc/NEWS Sat Nov 13 18:21:48 2004 +0000 @@ -98,6 +98,9 @@ * Changes in Emacs 21.4 +** In Outline mode, hide-body no longer hides lines at the top +of the file that precede the first header line. + +++ ** `set-auto-mode' now gives the interpreter magic line (if present) precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration @@ -2324,6 +2327,10 @@ * Lisp Changes in Emacs 21.4 +++ +** The new primitive `get-internal-run-time' returns the processor +run time used by Emacs since start-up. + ++++ ** The new function `called-interactively-p' does what many people have mistakenly believed `interactively-p' did: it returns t if the calling function was called through `call-interactively'.
--- a/lisp/ChangeLog Sat Nov 06 17:57:15 2004 +0000 +++ b/lisp/ChangeLog Sat Nov 13 18:21:48 2004 +0000 @@ -1,3 +1,54 @@ +2004-11-06 Kai Grossjohann <kai.grossjohann@gmx.net> + + * net/tramp.el (tramp-coding-commands): Additionally try "uudecode + -o /dev/stdout" before trying "uudecode -o -". Suggested by Han + Boetes. + (tramp-uudecode): Mention `uudecode -o /dev/stdout'. + +2004-11-06 David Ponce <david@dponce.com> + + * recentf.el (recentf-menu-path): Use menu item name. + +2004-11-06 Eli Zaretskii <eliz@gnu.org> + + * progmodes/gdb-ui.el: Don't call define-fringe-bitmap if the + display doesn't support images. + +2004-11-06 Andreas Schwab <schwab@suse.de> + + * tempo.el (tempo-match-finder): Doc fix. + + * emacs-lisp/easymenu.el (easy-menu-get-map): Fix last change. + +2004-11-06 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/easymenu.el (easy-menu-get-map-look-for-name): Remove. + (easy-menu-lookup-name): New fun to replace it. + (easy-menu-get-map): Use it to obey menu item names (rather than just + keys) when looking up `path'. + (easy-menu-always-true-p): Rename from easy-menu-always-true. + (easy-menu-convert-item-1): Adjust to new name. + +2004-11-06 Peter Heslin <pj@heslin.eclipse.co.uk> (tiny change) + + * outline.el (hide-body): Don't hide lines at the top of the file + that precede the first header line. + +2004-11-06 Paul Pogonyshev <pogonyshev@gmx.net> + + * align.el (align-areas): Delete whitespace before reindenting, so + that tabs are never placed after spaces. + +2004-11-06 Alan Shutko <ats@acm.org> + + * macros.el (insert-kbd-macro): Do completions based on macros, + rather than all commands. + +2004-11-06 David Hansen <david.hansen@gmx.net> (tiny change) + + * tempo.el (tempo-match-finder): Use [:word:] instead of "^\\b", + to solve a bug whereby tags with 'b' don't match. + 2004-11-05 Juri Linkov <juri@jurta.org> * info.el (Info-search): Don't search in node header lines
--- a/lisp/align.el Sat Nov 06 17:57:15 2004 +0000 +++ b/lisp/align.el Sat Nov 13 18:21:48 2004 +0000 @@ -1212,6 +1212,14 @@ (cond ((< gocol 0) t) ; don't do anything ((= cur gocol) t) ; don't need to ((< cur gocol) ; just add space + ;; FIXME: It is stated above that "...the + ;; whitespace to be modified was already + ;; deleted by `align-region', all we have + ;; to do here is indent." However, this + ;; doesn't seem to be true, so we first + ;; delete the whitespace to avoid tabs + ;; after spaces. + (delete-horizontal-space t) (indent-to gocol)) (t ;; This code works around an oddity in the
--- a/lisp/emacs-lisp/easymenu.el Sat Nov 06 17:57:15 2004 +0000 +++ b/lisp/emacs-lisp/easymenu.el Sat Nov 13 18:21:48 2004 +0000 @@ -242,9 +242,9 @@ (setq visible (or arg ''nil))))) (if (equal visible ''nil) nil ; Invisible menu entry, return nil. - (if (and visible (not (easy-menu-always-true visible))) + (if (and visible (not (easy-menu-always-true-p visible))) (setq prop (cons :visible (cons visible prop)))) - (if (and enable (not (easy-menu-always-true enable))) + (if (and enable (not (easy-menu-always-true-p enable))) (setq prop (cons :enable (cons enable prop)))) (if filter (setq prop (cons :filter (cons filter prop)))) (if help (setq prop (cons :help (cons help prop)))) @@ -363,12 +363,12 @@ (cons cmd keys)))) (setq cache-specified nil)) (if keys (setq prop (cons :keys (cons keys prop))))) - (if (and visible (not (easy-menu-always-true visible))) + (if (and visible (not (easy-menu-always-true-p visible))) (if (equal visible ''nil) ;; Invisible menu item. Don't insert into keymap. (setq remove t) (setq prop (cons :visible (cons visible prop))))))) - (if (and active (not (easy-menu-always-true active))) + (if (and active (not (easy-menu-always-true-p active))) (setq prop (cons :enable (cons active prop)))) (if (and (or no-name cache-specified) (or (null cache) (stringp cache) (vectorp cache))) @@ -426,7 +426,8 @@ (defun easy-menu-name-match (name item) "Return t if NAME is the name of menu item ITEM. -NAME can be either a string, or a symbol." +NAME can be either a string, or a symbol. +ITEM should be a keymap binding of the form (KEY . MENU-ITEM)." (if (consp item) (if (symbolp name) (eq (car-safe item) name) @@ -439,7 +440,7 @@ (eq (car-safe item) (intern name)) (eq (car-safe item) (easy-menu-intern name))))))) -(defun easy-menu-always-true (x) +(defun easy-menu-always-true-p (x) "Return true if form X never evaluates to nil." (if (consp x) (and (eq (car x) 'quote) (cadr x)) (or (eq x t) (not (symbolp x))))) @@ -591,10 +592,24 @@ (cons name item)) ; Keymap or new menu format ))) -(defun easy-menu-get-map-look-for-name (name submap) - (while (and submap (not (easy-menu-name-match name (car submap)))) - (setq submap (cdr submap))) - submap) +(defun easy-menu-lookup-name (map name) + "Lookup menu item NAME in keymap MAP. +Like `lookup-key' except that NAME is not an array but just a single key +and that NAME can be a string representing the menu item's name." + (or (lookup-key map (vector (easy-menu-intern name))) + (when (stringp name) + ;; `lookup-key' failed and we have a menu item name: look at the + ;; actual menu entries's names. + (catch 'found + (map-keymap (lambda (key item) + (if (condition-case nil (member name item) + (error nil)) + ;; Found it!! Look for it again with + ;; `lookup-key' so as to handle inheritance and + ;; to extract the actual command/keymap bound to + ;; `name' from the item (via get_keyelt). + (throw 'found (lookup-key map (vector key))))) + map))))) (defun easy-menu-get-map (map path &optional to-modify) "Return a sparse keymap in which to add or remove an item. @@ -605,34 +620,34 @@ In some cases we use that to select between the local and global maps." (setq map (catch 'found - (let* ((key (vconcat (unless map '(menu-bar)) - (mapcar 'easy-menu-intern path))) - (maps (mapcar (lambda (map) - (setq map (lookup-key map key)) - (while (and (symbolp map) (keymapp map)) - (setq map (symbol-function map))) - map) - (if map - (list (if (and (symbolp map) - (not (keymapp map))) - (symbol-value map) map)) - (current-active-maps))))) + (if (and map (symbolp map) (not (keymapp map))) + (setq map (symbol-value map))) + (let ((maps (if map (list map) (current-active-maps)))) + ;; Look for PATH in each map. + (unless map (push 'menu-bar path)) + (dolist (name path) + (setq maps + (delq nil (mapcar (lambda (map) + (setq map (easy-menu-lookup-name + map name)) + (and (keymapp map) map)) + maps)))) + ;; Prefer a map that already contains the to-be-modified entry. (when to-modify (dolist (map maps) - (when (and (keymapp map) - (easy-menu-get-map-look-for-name to-modify map)) + (when (easy-menu-lookup-name map to-modify) (throw 'found map)))) ;; Use the first valid map. - (dolist (map maps) - (when (keymapp map) - (throw 'found map))) + (when maps (throw 'found (car maps))) + ;; Otherwise, make one up. ;; Hardcoding current-local-map is lame, but it's difficult ;; to know what the caller intended for us to do ;-( (let* ((name (if path (format "%s" (car (reverse path))))) (newmap (make-sparse-keymap name))) - (define-key (or map (current-local-map)) key + (define-key (or map (current-local-map)) + (apply 'vector (mapcar 'easy-menu-intern path)) (if name (cons name newmap) newmap)) newmap)))) (or (keymapp map) (error "Malformed menu in easy-menu: (%s)" map)) @@ -640,5 +655,5 @@ (provide 'easymenu) -;;; arch-tag: 2a04020d-90d2-476d-a7c6-71e072007a4a +;; arch-tag: 2a04020d-90d2-476d-a7c6-71e072007a4a ;;; easymenu.el ends here
--- a/lisp/macros.el Sat Nov 06 17:57:15 2004 +0000 +++ b/lisp/macros.el Sat Nov 13 18:21:48 2004 +0000 @@ -63,7 +63,14 @@ To save a kbd macro, visit a file of Lisp code such as your `~/.emacs', use this command, and then save the file." - (interactive "CInsert kbd macro (name): \nP") + (interactive (list (intern (completing-read "Insert kbd macro (name): " + obarray + (lambda (elt) + (and (fboundp elt) + (or (stringp (symbol-function elt)) + (vectorp (symbol-function elt))))) + t)) + current-prefix-arg)) (let (definition) (if (string= (symbol-name macroname) "") (progn
--- a/lisp/net/tramp.el Sat Nov 06 17:57:15 2004 +0000 +++ b/lisp/net/tramp.el Sat Nov 13 18:21:48 2004 +0000 @@ -1535,8 +1535,9 @@ rm -f /tmp/tramp.$$ }" "Shell function to implement `uudecode' to standard output. -Many systems support `uudecode -o -' for this or `uudecode -p', but -some systems don't, and for them we have this shell function.") +Many systems support `uudecode -o /dev/stdout' for this or +`uudecode -o -' or `uudecode -p', but some systems don't, and for +them we have this shell function.") ;; Perl script to implement `file-attributes' in a Lisp `read'able ;; output. If you are hacking on this, note that you get *no* output @@ -5970,6 +5971,8 @@ base64-encode-region base64-decode-region) ("recode data..base64" "recode base64..data" base64-encode-region base64-decode-region) + ("uuencode xxx" "uudecode -o /dev/stdout" + tramp-uuencode-region uudecode-decode-region) ("uuencode xxx" "uudecode -o -" tramp-uuencode-region uudecode-decode-region) ("uuencode xxx" "uudecode -p"
--- a/lisp/outline.el Sat Nov 06 17:57:15 2004 +0000 +++ b/lisp/outline.el Sat Nov 13 18:21:48 2004 +0000 @@ -723,7 +723,7 @@ (progn (outline-next-preface) (point)) nil))) (defun hide-body () - "Hide all of buffer except headings." + "Hide all body lines in buffer, leaving all headings visible." (interactive) (hide-region-body (point-min) (point-max))) @@ -738,7 +738,8 @@ (narrow-to-region start end) (goto-char (point-min)) (if (outline-on-heading-p) - (outline-end-of-heading)) + (outline-end-of-heading) + (outline-next-preface)) (while (not (eobp)) (outline-flag-region (point) (progn (outline-next-preface) (point)) t)
--- a/lisp/recentf.el Sat Nov 06 17:57:15 2004 +0000 +++ b/lisp/recentf.el Sat Nov 13 18:21:48 2004 +0000 @@ -98,7 +98,7 @@ :type 'string :set 'recentf-menu-customization-changed) -(defcustom recentf-menu-path '("files") +(defcustom recentf-menu-path '("File") "*Path where to add the recentf menu. If nil add it at top level (see also `easy-menu-add-item')." :group 'recentf
--- a/lisp/tempo.el Sat Nov 06 17:57:15 2004 +0000 +++ b/lisp/tempo.el Sat Nov 13 18:21:48 2004 +0000 @@ -1,6 +1,6 @@ ;;; tempo.el --- Flexible template insertion -;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. +;; Copyright (C) 1994, 1995, 2004 Free Software Foundation, Inc. ;; Author: David K}gedal <davidk@lysator.liu.se> ;; Created: 16 Feb 1994 @@ -172,7 +172,7 @@ (defvar tempo-marks nil "A list of marks to jump to with `\\[tempo-forward-mark]' and `\\[tempo-backward-mark]'.") -(defvar tempo-match-finder "\\b\\([^\\b]+\\)\\=" +(defvar tempo-match-finder "\\b\\([[:word:]]+\\)\\=" "The regexp or function used to find the string to match against tags. If `tempo-match-finder is a string, it should contain a regular @@ -182,7 +182,7 @@ each string in the tag list. If one is found, the whole text between the first \\( and the point is replaced with the inserted template. -You will probably want to include \\ \= at the end of the regexp to +You will probably want to include \\=\\= at the end of the regexp to make sure that the string is matched only against text adjacent to the point.
--- a/lispref/ChangeLog Sat Nov 06 17:57:15 2004 +0000 +++ b/lispref/ChangeLog Sat Nov 13 18:21:48 2004 +0000 @@ -1,3 +1,20 @@ +2004-11-06 Lars Brinkhoff <lars@nocrew.org> + + * os.texi (Processor Run Time): New section documenting + get-internal-run-time. + +2004-11-06 Eli Zaretskii <eliz@gnu.org> + + * Makefile.in (install, maintainer-clean): Don't use "elisp-*" as + it nukes elisp-cover.texi. + (dist): Change elisp-[0-9] to elisp-[1-9], as there could be no + elisp-0 etc. + +2004-11-05 Luc Teirlinck <teirllm@auburn.edu> + + * commands.texi (Keyboard Macros): Document `append' return value + of `defining-kbd-macro'. + 2004-11-01 Richard M. Stallman <rms@gnu.org> * commands.texi (Interactive Call): Add called-interactively-p.
--- a/lispref/Makefile.in Sat Nov 06 17:57:15 2004 +0000 +++ b/lispref/Makefile.in Sat Nov 13 18:21:48 2004 +0000 @@ -108,7 +108,7 @@ install: elisp $(srcdir)/mkinstalldirs $(infodir) - cp elisp elisp-* $(infodir) + cp elisp elisp-[1-9] elisp-[1-9][0-9] $(infodir) ${INSTALL_INFO} --info-dir=${infodir} ${infodir}/elisp clean: @@ -119,7 +119,7 @@ distclean: clean maintainer-clean: clean - rm -f elisp elisp-* elisp.dvi elisp.oaux + rm -f elisp elisp-[1-9] elisp-[1-9][0-9] elisp.dvi elisp.oaux dist: elisp elisp.dvi -rm -rf temp @@ -128,7 +128,7 @@ -ln $(srcdir)/README $(srcdir)/configure.in $(srcdir)/configure \ $(srcdir)/Makefile.in $(srcs) \ $(srcdir)/../man/texinfo.tex \ - elisp.dvi elisp.aux elisp.??s elisp elisp-[0-9] elisp-[0-9][0-9] \ + elisp.dvi elisp.aux elisp.??s elisp elisp-[1-9] elisp-[1-9][0-9] \ temp/$(manual) -(cd temp/$(manual); rm -f mkinstalldirs) cp $(srcdir)/mkinstalldirs temp/$(manual)
--- a/lispref/commands.texi Sat Nov 06 17:57:15 2004 +0000 +++ b/lispref/commands.texi Sat Nov 13 18:21:48 2004 +0000 @@ -420,7 +420,7 @@ parentheses and brackets) do not do so here. Prompt. @item U -A key sequence or nil. May be used after a @code{k} or @code{K} +A key sequence or @code{nil}. May be used after a @code{k} or @code{K} argument to get the up-event that was discarded in case the key sequence read for that argument was a down-event. No I/O. @@ -3023,9 +3023,10 @@ @defvar defining-kbd-macro This variable is non-@code{nil} if and only if a keyboard macro is being defined. A command can test this variable so as to behave -differently while a macro is being defined. The commands -@code{start-kbd-macro} and @code{end-kbd-macro} set this variable---do -not set it yourself. +differently while a macro is being defined. The value is +@code{append} while appending to the definition of an existing macro. +The commands @code{start-kbd-macro}, @code{kmacro-start-macro} and +@code{end-kbd-macro} set this variable---do not set it yourself. The variable is always local to the current terminal and cannot be buffer-local. @xref{Multiple Displays}.
--- a/lispref/os.texi Sat Nov 06 17:57:15 2004 +0000 +++ b/lispref/os.texi Sat Nov 13 18:21:48 2004 +0000 @@ -23,6 +23,7 @@ * Time of Day:: Getting the current time. * Time Conversion:: Converting a time from numeric form to a string, or to calendrical data (or vice versa). +* Processor Run Time:: Getting the run time used by Emacs. * Time Calculations:: Adding, subtracting, comparing times, etc. * Timers:: Setting a timer to call a function at a certain time. * Terminal Input:: Recording terminal input for debugging. @@ -1285,6 +1286,28 @@ on others, years as early as 1901 do work. @end defun +@node Processor Run Time +@section Processor Run time + +@defun get-internal-run-time +This function returns the processor run time used by Emacs as a list +of three integers: @code{(@var{high} @var{low} @var{microsec})}. The +integers @var{high} and @var{low} combine to give the number of +seconds, which is +@ifnottex +@var{high} * 2**16 + @var{low}. +@end ifnottex +@tex +$high*2^{16}+low$. +@end tex + +The third element, @var{microsec}, gives the microseconds (or 0 for +systems that return time with the resolution of only one second). + +If the system doesn't provide a way to determine the processor run +time, get-internal-run-time returns the same time as current-time. +@end defun + @node Time Calculations @section Time Calculations
--- a/src/ChangeLog Sat Nov 06 17:57:15 2004 +0000 +++ b/src/ChangeLog Sat Nov 13 18:21:48 2004 +0000 @@ -1,5 +1,31 @@ +2004-11-06 Lars Brinkhoff <lars@nocrew.org> + + * config.in: Regenerate (add HAVE_GETRUSAGE). + * editfns.c (Fget_internal_run_time): New function. + (syms_of_data): Defsubr it. + * fns.c (sxhash): As far as possible, merge calculation of + hash code for symbols and strings. + +2004-11-06 Eli Zaretskii <eliz@gnu.org> + + * frame.c (syms_of_frame): Fix the example in the doc string. + +2004-11-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> + + * eval.c (Feval): Remove check for INPUT_BLOCKED_P. + + * xmenu.c (popup_get_selection, create_and_show_popup_menu) + (create_and_show_dialog): Revert change from 2004-10-31. + + +2004-11-05 Luc Teirlinck <teirllm@auburn.edu> + + * macros.c (syms_of_macros) <defining-kbd-macro>: Doc fix. + 2004-11-05 Kim F. Storm <storm@cua.dk> + * print.c (print_object): Print Lisp_Misc_Save_Value objects. + * fileio.c (Ffile_modes): Doc fix. (auto_save_1): Check for Ffile_modes nil value.
--- a/src/config.in Sat Nov 06 17:57:15 2004 +0000 +++ b/src/config.in Sat Nov 13 18:21:48 2004 +0000 @@ -196,6 +196,9 @@ /* Define to 1 if you have the `getpt' function. */ #undef HAVE_GETPT +/* Define to 1 if you have the `getrusage' function. */ +#undef HAVE_GETRUSAGE + /* Define to 1 if you have the `getsockname' function. */ #undef HAVE_GETSOCKNAME
--- a/src/editfns.c Sat Nov 06 17:57:15 2004 +0000 +++ b/src/editfns.c Sat Nov 13 18:21:48 2004 +0000 @@ -39,6 +39,10 @@ #include <stdio.h> #endif +#if defined HAVE_SYS_RESOURCE_H +#include <sys/resource.h> +#endif + #include <ctype.h> #include "lisp.h" @@ -1375,6 +1379,47 @@ return Flist (3, result); } + +DEFUN ("get-internal-run-time", Fget_internal_run_time, Sget_internal_run_time, + 0, 0, 0, + doc: /* Return the current run time used by Emacs. +The time is returned as a list of three integers. The first has the +most significant 16 bits of the seconds, while the second has the +least significant 16 bits. The third integer gives the microsecond +count. + +On systems that can't determine the run time, get-internal-run-time +does the same thing as current-time. The microsecond count is zero on +systems that do not provide resolution finer than a second. */) + () +{ +#ifdef HAVE_GETRUSAGE + struct rusage usage; + Lisp_Object result[3]; + int secs, usecs; + + if (getrusage (RUSAGE_SELF, &usage) < 0) + /* This shouldn't happen. What action is appropriate? */ + Fsignal (Qerror, Qnil); + + /* Sum up user time and system time. */ + secs = usage.ru_utime.tv_sec + usage.ru_stime.tv_sec; + usecs = usage.ru_utime.tv_usec + usage.ru_stime.tv_usec; + if (usecs >= 1000000) + { + usecs -= 1000000; + secs++; + } + + XSETINT (result[0], (secs >> 16) & 0xffff); + XSETINT (result[1], (secs >> 0) & 0xffff); + XSETINT (result[2], usecs); + + return Flist (3, result); +#else + return Fcurrent_time (); +#endif +} int @@ -4315,6 +4360,7 @@ defsubr (&Suser_full_name); defsubr (&Semacs_pid); defsubr (&Scurrent_time); + defsubr (&Sget_internal_run_time); defsubr (&Sformat_time_string); defsubr (&Sfloat_time); defsubr (&Sdecode_time);
--- a/src/eval.c Sat Nov 06 17:57:15 2004 +0000 +++ b/src/eval.c Sat Nov 13 18:21:48 2004 +0000 @@ -1996,7 +1996,7 @@ struct backtrace backtrace; struct gcpro gcpro1, gcpro2, gcpro3; - if (handling_signal || INPUT_BLOCKED_P) + if (handling_signal) abort (); if (SYMBOLP (form))
--- a/src/fns.c Sat Nov 06 17:57:15 2004 +0000 +++ b/src/fns.c Sat Nov 13 18:21:48 2004 +0000 @@ -5007,15 +5007,14 @@ hash = XUINT (obj); break; - case Lisp_Symbol: - hash = sxhash_string (SDATA (SYMBOL_NAME (obj)), - SCHARS (SYMBOL_NAME (obj))); - break; - case Lisp_Misc: hash = XUINT (obj); break; + case Lisp_Symbol: + obj = SYMBOL_NAME (obj); + /* Fall through. */ + case Lisp_String: hash = sxhash_string (SDATA (obj), SCHARS (obj)); break;
--- a/src/frame.c Sat Nov 06 17:57:15 2004 +0000 +++ b/src/frame.c Sat Nov 13 18:21:48 2004 +0000 @@ -4285,7 +4285,7 @@ DEFVAR_LISP ("default-frame-alist", &Vdefault_frame_alist, doc: /* Alist of default values for frame creation. These may be set in your init file, like this: - (setq default-frame-alist '((width . 80) (height . 55) (menu-bar-lines . 1)) + (setq default-frame-alist '((width . 80) (height . 55) (menu-bar-lines . 1))) These override values given in window system configuration data, including X Windows' defaults database. For values specific to the first Emacs frame, see `initial-frame-alist'.
--- a/src/macros.c Sat Nov 06 17:57:15 2004 +0000 +++ b/src/macros.c Sat Nov 13 18:21:48 2004 +0000 @@ -392,7 +392,9 @@ defsubr (&Sstore_kbd_macro_event); DEFVAR_KBOARD ("defining-kbd-macro", defining_kbd_macro, - doc: /* Non-nil while a keyboard macro is being defined. Don't set this! */); + doc: /* Non-nil while a keyboard macro is being defined. Don't set this! +The value is the symbol `append' while appending to the definition of +an existing macro. */); DEFVAR_LISP ("executing-macro", &Vexecuting_macro, doc: /* Currently executing keyboard macro (string or vector); nil if none executing. */);
--- a/src/print.c Sat Nov 06 17:57:15 2004 +0000 +++ b/src/print.c Sat Nov 13 18:21:48 2004 +0000 @@ -2085,6 +2085,15 @@ PRINTCHAR ('>'); break; + case Lisp_Misc_Save_Value: + strout ("#<save_value ", -1, -1, printcharfun, 0); + sprintf(buf, "ptr=0x%08x int=%d", + (unsigned long) XSAVE_VALUE (obj)->pointer, + XSAVE_VALUE (obj)->integer); + strout (buf, -1, -1, printcharfun, 0); + PRINTCHAR ('>'); + break; + default: goto badtype; }
--- a/src/xmenu.c Sat Nov 06 17:57:15 2004 +0000 +++ b/src/xmenu.c Sat Nov 13 18:21:48 2004 +0000 @@ -115,7 +115,7 @@ static Lisp_Object xdialog_show P_ ((FRAME_PTR, int, Lisp_Object, char **)); static void popup_get_selection P_ ((XEvent *, struct x_display_info *, - LWLIB_ID, int)); + LWLIB_ID, int, int)); /* Define HAVE_BOXES if menus can handle radio and toggle buttons. */ @@ -157,6 +157,8 @@ static void list_of_panes P_ ((Lisp_Object)); static void list_of_items P_ ((Lisp_Object)); +extern EMACS_TIME timer_check P_ ((int)); + /* This holds a Lisp vector that holds the results of decoding the keymaps or alist-of-alists that specify a menu. @@ -1122,27 +1124,27 @@ If DOWN_ON_KEYPRESS is nonzero, pop down if a key is pressed. - This function used to have a DO_TIMERS argument which was - 1 in the dialog case, and caused it to run Lisp-level timers. - That was unsafe so we removed it, but does anyone remember - why menus and dialogs were treated differently? - NOTE: All calls to popup_get_selection should be protected with BLOCK_INPUT, UNBLOCK_INPUT wrappers. */ #ifdef USE_X_TOOLKIT static void -popup_get_selection (initial_event, dpyinfo, id, down_on_keypress) +popup_get_selection (initial_event, dpyinfo, id, do_timers, down_on_keypress) XEvent *initial_event; struct x_display_info *dpyinfo; LWLIB_ID id; + int do_timers; int down_on_keypress; { XEvent event; while (popup_activated_flag) { - if (initial_event) + /* If we have no events to run, consider timers. */ + if (do_timers && !XtAppPending (Xt_app_con)) + timer_check (1); + + if (initial_event) { event = *initial_event; initial_event = 0; @@ -2488,7 +2490,7 @@ popup_activated_flag = 1; /* Process events that apply to the menu. */ - popup_get_selection ((XEvent *) 0, FRAME_X_DISPLAY_INFO (f), menu_id, 0); + popup_get_selection ((XEvent *) 0, FRAME_X_DISPLAY_INFO (f), menu_id, 0, 0); /* fp turned off the following statement and wrote a comment that it is unnecessary--that the menu has already disappeared. @@ -2882,7 +2884,8 @@ Fcons (make_number (dialog_id >> (fact)), make_number (dialog_id & ~(-1 << (fact))))); - popup_get_selection ((XEvent *) 0, FRAME_X_DISPLAY_INFO (f), dialog_id, 1); + popup_get_selection ((XEvent *) 0, FRAME_X_DISPLAY_INFO (f), + dialog_id, 1, 1); unbind_to (count, Qnil); }