diff options
| author | Joakim Verona | 2012-09-12 22:22:29 +0200 |
|---|---|---|
| committer | Joakim Verona | 2012-09-12 22:22:29 +0200 |
| commit | aac9139d11cf7f9ee84d931ada85be8fa0c90f21 (patch) | |
| tree | ac9777bdf84595af94ee0279cc53b67a5e6dfcaf | |
| parent | 0cc36550df4f355a1b46e944fc65e533ff0df90e (diff) | |
| parent | bfeae2cf098dcf5bdb4af14d896e790cbe91d60f (diff) | |
| download | emacs-aac9139d11cf7f9ee84d931ada85be8fa0c90f21.tar.gz emacs-aac9139d11cf7f9ee84d931ada85be8fa0c90f21.zip | |
upstream
37 files changed, 469 insertions, 241 deletions
diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker index 7d5e85a3ae0..eed67f10dfd 100644 --- a/admin/notes/bugtracker +++ b/admin/notes/bugtracker | |||
| @@ -618,6 +618,16 @@ mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/ | |||
| 618 | Also check that the sender was not added to the auto-discard/reject list | 618 | Also check that the sender was not added to the auto-discard/reject list |
| 619 | in the debbugs-submit Mailman interface. | 619 | in the debbugs-submit Mailman interface. |
| 620 | 620 | ||
| 621 | If you don't have the actual mail, just the mailman moderation mail | ||
| 622 | version of it, you need to extract the original mail, and add the | ||
| 623 | following headers: | ||
| 624 | |||
| 625 | 1) The leading envelope From line. | ||
| 626 | 2) Message-ID (get it from /var/log/mailman/vette). | ||
| 627 | 3) X-Debbugs-Envelope-To: submit | ||
| 628 | |||
| 629 | Then pipe it to receive as above. | ||
| 630 | |||
| 621 | ** Administrivia | 631 | ** Administrivia |
| 622 | 632 | ||
| 623 | The debbugs-submit list should have the administrivia option off, | 633 | The debbugs-submit list should have the administrivia option off, |
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index 7e24de94fbe..dc0fa4c639d 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi | |||
| @@ -2738,17 +2738,6 @@ This function converts the string or vector @var{key} to a list of | |||
| 2738 | individual events, which you can put in @code{unread-command-events}. | 2738 | individual events, which you can put in @code{unread-command-events}. |
| 2739 | @end defun | 2739 | @end defun |
| 2740 | 2740 | ||
| 2741 | @ignore | ||
| 2742 | @defvar unread-command-char | ||
| 2743 | This variable holds a character to be read as command input. | ||
| 2744 | A value of -1 means ``empty''. | ||
| 2745 | |||
| 2746 | This variable is mostly obsolete now that you can use | ||
| 2747 | @code{unread-command-events} instead; it exists only to support programs | ||
| 2748 | written for Emacs versions 18 and earlier. | ||
| 2749 | @end defvar | ||
| 2750 | @end ignore | ||
| 2751 | |||
| 2752 | @defun input-pending-p | 2741 | @defun input-pending-p |
| 2753 | @cindex waiting for command key input | 2742 | @cindex waiting for command key input |
| 2754 | This function determines whether any command input is currently | 2743 | This function determines whether any command input is currently |
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 20c74cf70b2..408e4665955 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,15 @@ | |||
| 1 | 2012-09-12 Michael Albinus <michael.albinus@gmx.de> | ||
| 2 | |||
| 3 | Sync with Tramp 2.2.6. | ||
| 4 | |||
| 5 | * tramp.texi (Bug Reports): Cleanup caches before a test run. | ||
| 6 | |||
| 7 | * trampver.texi: Update release number. | ||
| 8 | |||
| 9 | 2012-09-12 Paul Eggert <eggert@cs.ucla.edu> | ||
| 10 | |||
| 11 | * texinfo.tex: Merge from gnulib. | ||
| 12 | |||
| 1 | 2012-08-06 Aurélien Aptel <aurelien.aptel@gmail.com> | 13 | 2012-08-06 Aurélien Aptel <aurelien.aptel@gmail.com> |
| 2 | 14 | ||
| 3 | * url.texi (Parsed URLs): Adjust to the code's use of defstruct | 15 | * url.texi (Parsed URLs): Adjust to the code's use of defstruct |
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index dc4bf6400c4..9a2439c815d 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | % Load plain if necessary, i.e., if running under initex. | 3 | % Load plain if necessary, i.e., if running under initex. |
| 4 | \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi | 4 | \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi |
| 5 | % | 5 | % |
| 6 | \def\texinfoversion{2012-07-29.17} | 6 | \def\texinfoversion{2012-09-05.06} |
| 7 | % | 7 | % |
| 8 | % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, | 8 | % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, |
| 9 | % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, | 9 | % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, |
| @@ -594,7 +594,7 @@ | |||
| 594 | \def\:{\spacefactor=1000 } | 594 | \def\:{\spacefactor=1000 } |
| 595 | 595 | ||
| 596 | % @* forces a line break. | 596 | % @* forces a line break. |
| 597 | \def\*{\hfil\break\hbox{}\ignorespaces} | 597 | \def\*{\unskip\hfil\break\hbox{}\ignorespaces} |
| 598 | 598 | ||
| 599 | % @/ allows a line break. | 599 | % @/ allows a line break. |
| 600 | \let\/=\allowbreak | 600 | \let\/=\allowbreak |
| @@ -3269,6 +3269,20 @@ end | |||
| 3269 | \finishedtitlepagetrue | 3269 | \finishedtitlepagetrue |
| 3270 | } | 3270 | } |
| 3271 | 3271 | ||
| 3272 | % Settings used for typesetting titles: no hyphenation, no indentation, | ||
| 3273 | % don't worry much about spacing, ragged right. This should be used | ||
| 3274 | % inside a \vbox, and fonts need to be set appropriately first. Because | ||
| 3275 | % it is always used for titles, nothing else, we call \rmisbold. \par | ||
| 3276 | % should be specified before the end of the \vbox, since a vbox is a group. | ||
| 3277 | % | ||
| 3278 | \def\raggedtitlesettings{% | ||
| 3279 | \rmisbold | ||
| 3280 | \hyphenpenalty=10000 | ||
| 3281 | \parindent=0pt | ||
| 3282 | \tolerance=5000 | ||
| 3283 | \ptexraggedright | ||
| 3284 | } | ||
| 3285 | |||
| 3272 | % Macros to be used within @titlepage: | 3286 | % Macros to be used within @titlepage: |
| 3273 | 3287 | ||
| 3274 | \let\subtitlerm=\tenrm | 3288 | \let\subtitlerm=\tenrm |
| @@ -3276,7 +3290,7 @@ end | |||
| 3276 | 3290 | ||
| 3277 | \parseargdef\title{% | 3291 | \parseargdef\title{% |
| 3278 | \checkenv\titlepage | 3292 | \checkenv\titlepage |
| 3279 | \leftline{\titlefonts\rmisbold #1} | 3293 | \vbox{\titlefonts \raggedtitlesettings #1\par}% |
| 3280 | % print a rule at the page bottom also. | 3294 | % print a rule at the page bottom also. |
| 3281 | \finishedtitlepagefalse | 3295 | \finishedtitlepagefalse |
| 3282 | \vskip4pt \hrule height 4pt width \hsize \vskip4pt | 3296 | \vskip4pt \hrule height 4pt width \hsize \vskip4pt |
| @@ -5579,14 +5593,6 @@ end | |||
| 5579 | 5593 | ||
| 5580 | % Define @majorheading, @heading and @subheading | 5594 | % Define @majorheading, @heading and @subheading |
| 5581 | 5595 | ||
| 5582 | % NOTE on use of \vbox for chapter headings, section headings, and such: | ||
| 5583 | % 1) We use \vbox rather than the earlier \line to permit | ||
| 5584 | % overlong headings to fold. | ||
| 5585 | % 2) \hyphenpenalty is set to 10000 because hyphenation in a | ||
| 5586 | % heading is obnoxious; this forbids it. | ||
| 5587 | % 3) Likewise, headings look best if no \parindent is used, and | ||
| 5588 | % if justification is not attempted. Hence \raggedright. | ||
| 5589 | |||
| 5590 | \def\majorheading{% | 5596 | \def\majorheading{% |
| 5591 | {\advance\chapheadingskip by 10pt \chapbreak }% | 5597 | {\advance\chapheadingskip by 10pt \chapbreak }% |
| 5592 | \parsearg\chapheadingzzz | 5598 | \parsearg\chapheadingzzz |
| @@ -5594,10 +5600,8 @@ end | |||
| 5594 | 5600 | ||
| 5595 | \def\chapheading{\chapbreak \parsearg\chapheadingzzz} | 5601 | \def\chapheading{\chapbreak \parsearg\chapheadingzzz} |
| 5596 | \def\chapheadingzzz#1{% | 5602 | \def\chapheadingzzz#1{% |
| 5597 | {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 | 5603 | \vbox{\chapfonts \raggedtitlesettings #1\par}% |
| 5598 | \parindent=0pt\ptexraggedright | 5604 | \nobreak\bigskip \nobreak |
| 5599 | \rmisbold #1\hfill}}% | ||
| 5600 | \bigskip \par\penalty 200\relax | ||
| 5601 | \suppressfirstparagraphindent | 5605 | \suppressfirstparagraphindent |
| 5602 | } | 5606 | } |
| 5603 | 5607 | ||
| @@ -5756,8 +5760,7 @@ end | |||
| 5756 | % | 5760 | % |
| 5757 | % Typeset the actual heading. | 5761 | % Typeset the actual heading. |
| 5758 | \nobreak % Avoid page breaks at the interline glue. | 5762 | \nobreak % Avoid page breaks at the interline glue. |
| 5759 | \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright | 5763 | \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe |
| 5760 | \hangindent=\wd0 \centerparametersmaybe | ||
| 5761 | \unhbox0 #1\par}% | 5764 | \unhbox0 #1\par}% |
| 5762 | }% | 5765 | }% |
| 5763 | \nobreak\bigskip % no page break after a chapter title | 5766 | \nobreak\bigskip % no page break after a chapter title |
| @@ -5779,18 +5782,18 @@ end | |||
| 5779 | \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} | 5782 | \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} |
| 5780 | % | 5783 | % |
| 5781 | \def\unnchfopen #1{% | 5784 | \def\unnchfopen #1{% |
| 5782 | \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 | 5785 | \chapoddpage |
| 5783 | \parindent=0pt\ptexraggedright | 5786 | \vbox{\chapfonts \raggedtitlesettings #1\par}% |
| 5784 | \rmisbold #1\hfill}}\bigskip \par\nobreak | 5787 | \nobreak\bigskip\nobreak |
| 5785 | } | 5788 | } |
| 5786 | \def\chfopen #1#2{\chapoddpage {\chapfonts | 5789 | \def\chfopen #1#2{\chapoddpage {\chapfonts |
| 5787 | \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% | 5790 | \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% |
| 5788 | \par\penalty 5000 % | 5791 | \par\penalty 5000 % |
| 5789 | } | 5792 | } |
| 5790 | \def\centerchfopen #1{% | 5793 | \def\centerchfopen #1{% |
| 5791 | \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 | 5794 | \chapoddpage |
| 5792 | \parindent=0pt | 5795 | \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% |
| 5793 | \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak | 5796 | \nobreak\bigskip \nobreak |
| 5794 | } | 5797 | } |
| 5795 | \def\CHAPFopen{% | 5798 | \def\CHAPFopen{% |
| 5796 | \global\let\chapmacro=\chfopen | 5799 | \global\let\chapmacro=\chfopen |
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 87ad2bc5009..530b8fdd6c2 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi | |||
| @@ -2853,6 +2853,9 @@ If you can identify a minimal test case that reproduces the problem, | |||
| 2853 | include that with your bug report. This will make it much easier for | 2853 | include that with your bug report. This will make it much easier for |
| 2854 | the development team to analyze and correct the problem. | 2854 | the development team to analyze and correct the problem. |
| 2855 | 2855 | ||
| 2856 | Sometimes, there might be also problems due to Tramp caches. Flush | ||
| 2857 | all caches before running the test, @ref{Cleanup remote connections}. | ||
| 2858 | |||
| 2856 | Before reporting the bug, you should set the verbosity level to 6 | 2859 | Before reporting the bug, you should set the verbosity level to 6 |
| 2857 | (@pxref{Traces and Profiles, Traces}) in the @file{~/.emacs} file and | 2860 | (@pxref{Traces and Profiles, Traces}) in the @file{~/.emacs} file and |
| 2858 | repeat the bug. Then, include the contents of the @file{*tramp/foo*} | 2861 | repeat the bug. Then, include the contents of the @file{*tramp/foo*} |
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi index 78bd9d0965f..d902ac0fb97 100644 --- a/doc/misc/trampver.texi +++ b/doc/misc/trampver.texi | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | @c In the Tramp CVS, the version number is auto-frobbed from | 8 | @c In the Tramp CVS, the version number is auto-frobbed from |
| 9 | @c configure.ac, so you should edit that file and run | 9 | @c configure.ac, so you should edit that file and run |
| 10 | @c "autoconf && ./configure" to change the version number. | 10 | @c "autoconf && ./configure" to change the version number. |
| 11 | @set trampver 2.2.6-pre | 11 | @set trampver 2.2.6 |
| 12 | 12 | ||
| 13 | @c Other flags from configuration | 13 | @c Other flags from configuration |
| 14 | @set instprefix /usr/local | 14 | @set instprefix /usr/local |
| @@ -638,7 +638,7 @@ are deprecated and will be removed eventually. | |||
| 638 | 638 | ||
| 639 | *** `facemenu-unlisted-faces' | 639 | *** `facemenu-unlisted-faces' |
| 640 | *** `rmail-decode-mime-charset' | 640 | *** `rmail-decode-mime-charset' |
| 641 | *** `last-input-char' and `last-command-char' | 641 | *** `last-input-char', `last-command-char', `unread-command-char'. |
| 642 | 642 | ||
| 643 | 643 | ||
| 644 | * Lisp changes in Emacs 24.3 | 644 | * Lisp changes in Emacs 24.3 |
| @@ -675,7 +675,15 @@ The interpretation of the DECLS is determined by `defun-declarations-alist'. | |||
| 675 | 675 | ||
| 676 | ** New error type and new function `user-error'. Doesn't trigger the debugger. | 676 | ** New error type and new function `user-error'. Doesn't trigger the debugger. |
| 677 | 677 | ||
| 678 | ** New option `debugger-bury-or-kill'. | 678 | ** Debugger |
| 679 | *** New option `debugger-bury-or-kill'. | ||
| 680 | |||
| 681 | *** Set `debug-on-message' to enter the debugger when a certain | ||
| 682 | message is displayed in the echo area. This can be useful when trying | ||
| 683 | to work out which code is doing something. | ||
| 684 | |||
| 685 | *** New var `inhibit-debugger', automatically set to prevent accidental | ||
| 686 | recursive invocations. | ||
| 679 | 687 | ||
| 680 | +++ | 688 | +++ |
| 681 | ** New utility function `buffer-narrowed-p'. | 689 | ** New utility function `buffer-narrowed-p'. |
| @@ -1977,10 +1985,6 @@ instead of jumping all the way to the top-level. | |||
| 1977 | *** Set `debug-on-event' to enter the debugger on events like SIGUSR1. | 1985 | *** Set `debug-on-event' to enter the debugger on events like SIGUSR1. |
| 1978 | This can be useful when `inhibit-quit' is set. | 1986 | This can be useful when `inhibit-quit' is set. |
| 1979 | 1987 | ||
| 1980 | *** Set `debug-on-message' to enter the debugger when a certain | ||
| 1981 | message is displayed in the echo area. This can be useful when trying | ||
| 1982 | to work out which code is doing something. | ||
| 1983 | |||
| 1984 | ** The new function `server-eval-at' allows evaluation of Lisp forms on | 1988 | ** The new function `server-eval-at' allows evaluation of Lisp forms on |
| 1985 | named Emacs server instances. | 1989 | named Emacs server instances. |
| 1986 | 1990 | ||
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 35190fd2a8f..f5846657707 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2012-09-11 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | * pop.c (socket_connection) [HAVE_GETADDRINFO]: | ||
| 4 | Prefer assignment to memcpy when either will do. | ||
| 5 | |||
| 1 | 2012-08-31 Andreas Schwab <schwab@linux-m68k.org> | 6 | 2012-08-31 Andreas Schwab <schwab@linux-m68k.org> |
| 2 | 7 | ||
| 3 | * etags.c (consider_token): Always zero-terminate token buffer. | 8 | * etags.c (consider_token): Always zero-terminate token buffer. |
diff --git a/lib-src/pop.c b/lib-src/pop.c index 74054e0e1b1..bfbcb8c9466 100644 --- a/lib-src/pop.c +++ b/lib-src/pop.c | |||
| @@ -1083,7 +1083,7 @@ socket_connection (char *host, int flags) | |||
| 1083 | if (it->ai_addrlen == sizeof (addr)) | 1083 | if (it->ai_addrlen == sizeof (addr)) |
| 1084 | { | 1084 | { |
| 1085 | struct sockaddr_in *in_a = (struct sockaddr_in *) it->ai_addr; | 1085 | struct sockaddr_in *in_a = (struct sockaddr_in *) it->ai_addr; |
| 1086 | memcpy (&addr.sin_addr, &in_a->sin_addr, sizeof (addr.sin_addr)); | 1086 | addr.sin_addr = in_a->sin_addr; |
| 1087 | if (! connect (sock, (struct sockaddr *) &addr, sizeof (addr))) | 1087 | if (! connect (sock, (struct sockaddr *) &addr, sizeof (addr))) |
| 1088 | break; | 1088 | break; |
| 1089 | } | 1089 | } |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8de59875674..549b70a1de1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,75 @@ | |||
| 1 | 2012-09-12 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * emacs-lisp/debug.el (debugger-outer-unread-command-char, debug) | ||
| 4 | (debugger-env-macro): Remove support for unread-command-char. | ||
| 5 | |||
| 6 | * subr.el (set-temporary-overlay-map): Minimize slightly the impact of | ||
| 7 | the temporary map re-appearing on emulation-mode-map-alists. | ||
| 8 | |||
| 9 | * emacs-lisp/edebug.el (def-edebug-form-spec): Remove, it's been broken | ||
| 10 | since 22.1. | ||
| 11 | |||
| 12 | * ehelp.el (with-electric-help): Accept functions in | ||
| 13 | electric-help-form-to-execute. | ||
| 14 | (electric-help-execute-extended, electric-help-ctrl-x-prefix): Use it. | ||
| 15 | And replace unread-command-char -> unread-command-events. | ||
| 16 | |||
| 17 | 2012-09-12 Michael Albinus <michael.albinus@gmx.de> | ||
| 18 | |||
| 19 | Sync with Tramp 2.2.6. | ||
| 20 | |||
| 21 | * net/tramp.el (tramp-accept-process-output): Don't use | ||
| 22 | JUST-THIS-ONE in the XEmacs case. | ||
| 23 | |||
| 24 | * net/trampver.el: Update release number. | ||
| 25 | |||
| 26 | 2012-09-12 Martin Rudalics <rudalics@gmx.at> | ||
| 27 | |||
| 28 | * emacs-lisp/debug.el (debugger-previous-window-height): | ||
| 29 | New variable. | ||
| 30 | (debug): When debugger-jumping-flag is non-nil try to restore | ||
| 31 | height of debugger window. (Bug#8789) | ||
| 32 | |||
| 33 | 2012-09-12 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 34 | |||
| 35 | * emacs-lisp/edebug.el (edebug-enter): Don't mess with | ||
| 36 | overriding-local-map and pre/post-command-hook here. | ||
| 37 | (edebug-recursive-edit): Do it here instead (bug#12345). | ||
| 38 | (edebug-outside-unread-command-char): Remove all uses of | ||
| 39 | unread-command-char. | ||
| 40 | |||
| 41 | * emacs-lisp/debug.el (debug): Don't bind debug-on-error since | ||
| 42 | inhibit-debugger is bound instead. | ||
| 43 | |||
| 44 | 2012-09-11 Bastien Guerry <bzg@gnu.org> | ||
| 45 | |||
| 46 | * subr.el (set-temporary-overlay-map): Add a docstring. | ||
| 47 | (bug#12346) | ||
| 48 | |||
| 49 | 2012-09-11 Bastien Guerry <bzg@gnu.org> | ||
| 50 | |||
| 51 | * minibuffer.el (completion-table-subvert): Fix docstring. | ||
| 52 | (bug#12347) | ||
| 53 | |||
| 54 | 2012-09-11 Bastien Guerry <bzg@gnu.org> | ||
| 55 | |||
| 56 | * help-fns.el (describe-variable): Fix typo. (bug#12346) | ||
| 57 | |||
| 58 | 2012-09-10 Michael R. Mauger <mmaug@yahoo.com> | ||
| 59 | |||
| 60 | * progmodes/sql.el: Version 3.1 | ||
| 61 | (sql-db2-escape-newlines): New variable. | ||
| 62 | (sql-escape-newlines-filter): Use it. | ||
| 63 | |||
| 64 | 2012-09-10 Juanma Barranquero <lekktu@gmail.com> | ||
| 65 | |||
| 66 | * custom.el (custom-theme-load-confirm): Remove unneeded assignment. | ||
| 67 | |||
| 68 | 2012-09-10 Dan Nicolaescu <dann@gnu.org> | ||
| 69 | |||
| 70 | * vc/diff-mode.el (diff-mode-menu): | ||
| 71 | Bind diff-remove-trailing-whitespace. | ||
| 72 | |||
| 1 | 2012-09-10 Stefan Monnier <monnier@iro.umontreal.ca> | 73 | 2012-09-10 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 74 | ||
| 3 | * emacs-lisp/lisp-mode.el (emacs-list-byte-code-comment-re): New var. | 75 | * emacs-lisp/lisp-mode.el (emacs-list-byte-code-comment-re): New var. |
diff --git a/lisp/ehelp.el b/lisp/ehelp.el index abb897f73f6..281148d9cf6 100644 --- a/lisp/ehelp.el +++ b/lisp/ehelp.el | |||
| @@ -193,7 +193,9 @@ BUFFER is put back into its original major mode." | |||
| 193 | (replace-buffer-in-windows buffer) | 193 | (replace-buffer-in-windows buffer) |
| 194 | ;; must do this outside of save-window-excursion | 194 | ;; must do this outside of save-window-excursion |
| 195 | (bury-buffer buffer)) | 195 | (bury-buffer buffer)) |
| 196 | (eval electric-help-form-to-execute)))) | 196 | (if (functionp electric-help-form-to-execute) |
| 197 | (funcall electric-help-form-to-execute) | ||
| 198 | (eval electric-help-form-to-execute))))) | ||
| 197 | 199 | ||
| 198 | (defun electric-help-command-loop () | 200 | (defun electric-help-command-loop () |
| 199 | (catch 'exit | 201 | (catch 'exit |
| @@ -349,14 +351,19 @@ will select it.)" | |||
| 349 | ;; continues with execute-extended-command. | 351 | ;; continues with execute-extended-command. |
| 350 | (defun electric-help-execute-extended (_prefixarg) | 352 | (defun electric-help-execute-extended (_prefixarg) |
| 351 | (interactive "p") | 353 | (interactive "p") |
| 352 | (setq electric-help-form-to-execute '(execute-extended-command nil)) | 354 | (setq electric-help-form-to-execute |
| 355 | (lambda () (execute-extended-command nil))) | ||
| 353 | (electric-help-retain)) | 356 | (electric-help-retain)) |
| 354 | 357 | ||
| 355 | ;; This is to be buond to C-x in ehelp mode. Retains ehelp buffer and then | 358 | ;; This is to be buond to C-x in ehelp mode. Retains ehelp buffer and then |
| 356 | ;; continues with ctrl-x prefix. | 359 | ;; continues with ctrl-x prefix. |
| 357 | (defun electric-help-ctrl-x-prefix (_prefixarg) | 360 | (defun electric-help-ctrl-x-prefix (_prefixarg) |
| 358 | (interactive "p") | 361 | (interactive "p") |
| 359 | (setq electric-help-form-to-execute '(progn (message nil) (setq unread-command-char ?\C-x))) | 362 | (setq electric-help-form-to-execute |
| 363 | (lambda () | ||
| 364 | (message nil) | ||
| 365 | (setq unread-command-events | ||
| 366 | (append unread-command-events '(?\C-x))))) | ||
| 360 | (electric-help-retain)) | 367 | (electric-help-retain)) |
| 361 | 368 | ||
| 362 | 369 | ||
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 188c0800eb8..774b4d3d600 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el | |||
| @@ -96,6 +96,9 @@ The value used here is passed to `quit-restore-window'." | |||
| 96 | (defvar debugger-previous-window nil | 96 | (defvar debugger-previous-window nil |
| 97 | "This is the window last showing the debugger buffer.") | 97 | "This is the window last showing the debugger buffer.") |
| 98 | 98 | ||
| 99 | (defvar debugger-previous-window-height nil | ||
| 100 | "The last recorded height of `debugger-previous-window'.") | ||
| 101 | |||
| 99 | (defvar debugger-previous-backtrace nil | 102 | (defvar debugger-previous-backtrace nil |
| 100 | "The contents of the previous backtrace (including text properties). | 103 | "The contents of the previous backtrace (including text properties). |
| 101 | This is to optimize `debugger-make-xrefs'.") | 104 | This is to optimize `debugger-make-xrefs'.") |
| @@ -107,10 +110,6 @@ This is to optimize `debugger-make-xrefs'.") | |||
| 107 | (defvar debugger-outer-track-mouse) | 110 | (defvar debugger-outer-track-mouse) |
| 108 | (defvar debugger-outer-last-command) | 111 | (defvar debugger-outer-last-command) |
| 109 | (defvar debugger-outer-this-command) | 112 | (defvar debugger-outer-this-command) |
| 110 | ;; unread-command-char is obsolete, | ||
| 111 | ;; but we still save and restore it | ||
| 112 | ;; in case some user program still tries to set it. | ||
| 113 | (defvar debugger-outer-unread-command-char) | ||
| 114 | (defvar debugger-outer-unread-command-events) | 113 | (defvar debugger-outer-unread-command-events) |
| 115 | (defvar debugger-outer-unread-post-input-method-events) | 114 | (defvar debugger-outer-unread-post-input-method-events) |
| 116 | (defvar debugger-outer-last-input-event) | 115 | (defvar debugger-outer-last-input-event) |
| @@ -162,8 +161,6 @@ first will be printed into the backtrace buffer." | |||
| 162 | (unless noninteractive | 161 | (unless noninteractive |
| 163 | (message "Entering debugger...")) | 162 | (message "Entering debugger...")) |
| 164 | (let (debugger-value | 163 | (let (debugger-value |
| 165 | (debug-on-error nil) | ||
| 166 | (debug-on-quit nil) | ||
| 167 | (debugger-previous-state | 164 | (debugger-previous-state |
| 168 | (if (get-buffer "*Backtrace*") | 165 | (if (get-buffer "*Backtrace*") |
| 169 | (with-current-buffer (get-buffer "*Backtrace*") | 166 | (with-current-buffer (get-buffer "*Backtrace*") |
| @@ -184,8 +181,6 @@ first will be printed into the backtrace buffer." | |||
| 184 | (debugger-outer-track-mouse track-mouse) | 181 | (debugger-outer-track-mouse track-mouse) |
| 185 | (debugger-outer-last-command last-command) | 182 | (debugger-outer-last-command last-command) |
| 186 | (debugger-outer-this-command this-command) | 183 | (debugger-outer-this-command this-command) |
| 187 | (debugger-outer-unread-command-char | ||
| 188 | (with-no-warnings unread-command-char)) | ||
| 189 | (debugger-outer-unread-command-events unread-command-events) | 184 | (debugger-outer-unread-command-events unread-command-events) |
| 190 | (debugger-outer-unread-post-input-method-events | 185 | (debugger-outer-unread-post-input-method-events |
| 191 | unread-post-input-method-events) | 186 | unread-post-input-method-events) |
| @@ -220,8 +215,6 @@ first will be printed into the backtrace buffer." | |||
| 220 | (cursor-in-echo-area nil)) | 215 | (cursor-in-echo-area nil)) |
| 221 | (unwind-protect | 216 | (unwind-protect |
| 222 | (save-excursion | 217 | (save-excursion |
| 223 | (with-no-warnings | ||
| 224 | (setq unread-command-char -1)) | ||
| 225 | (when (eq (car debugger-args) 'debug) | 218 | (when (eq (car debugger-args) 'debug) |
| 226 | ;; Skip the frames for backtrace-debug, byte-code, | 219 | ;; Skip the frames for backtrace-debug, byte-code, |
| 227 | ;; and implement-debug-on-entry. | 220 | ;; and implement-debug-on-entry. |
| @@ -236,7 +229,17 @@ first will be printed into the backtrace buffer." | |||
| 236 | . (,(when debugger-previous-window | 229 | . (,(when debugger-previous-window |
| 237 | `(previous-window . ,debugger-previous-window))))) | 230 | `(previous-window . ,debugger-previous-window))))) |
| 238 | (setq debugger-window (selected-window)) | 231 | (setq debugger-window (selected-window)) |
| 239 | (setq debugger-previous-window debugger-window) | 232 | (if (eq debugger-previous-window debugger-window) |
| 233 | (when debugger-jumping-flag | ||
| 234 | ;; Try to restore previous height of debugger | ||
| 235 | ;; window. | ||
| 236 | (condition-case nil | ||
| 237 | (window-resize | ||
| 238 | debugger-window | ||
| 239 | (- debugger-previous-window-height | ||
| 240 | (window-total-size debugger-window))) | ||
| 241 | (error nil))) | ||
| 242 | (setq debugger-previous-window debugger-window)) | ||
| 240 | (debugger-mode) | 243 | (debugger-mode) |
| 241 | (debugger-setup-buffer debugger-args) | 244 | (debugger-setup-buffer debugger-args) |
| 242 | (when noninteractive | 245 | (when noninteractive |
| @@ -264,6 +267,9 @@ first will be printed into the backtrace buffer." | |||
| 264 | (recursive-edit)))) | 267 | (recursive-edit)))) |
| 265 | (when (and (window-live-p debugger-window) | 268 | (when (and (window-live-p debugger-window) |
| 266 | (eq (window-buffer debugger-window) debugger-buffer)) | 269 | (eq (window-buffer debugger-window) debugger-buffer)) |
| 270 | ;; Record height of debugger window. | ||
| 271 | (setq debugger-previous-window-height | ||
| 272 | (window-total-size debugger-window)) | ||
| 267 | ;; Unshow debugger-buffer. | 273 | ;; Unshow debugger-buffer. |
| 268 | (quit-restore-window debugger-window debugger-bury-or-kill)) | 274 | (quit-restore-window debugger-window debugger-bury-or-kill)) |
| 269 | ;; Restore previous state of debugger-buffer in case we were | 275 | ;; Restore previous state of debugger-buffer in case we were |
| @@ -288,8 +294,6 @@ first will be printed into the backtrace buffer." | |||
| 288 | (setq track-mouse debugger-outer-track-mouse) | 294 | (setq track-mouse debugger-outer-track-mouse) |
| 289 | (setq last-command debugger-outer-last-command) | 295 | (setq last-command debugger-outer-last-command) |
| 290 | (setq this-command debugger-outer-this-command) | 296 | (setq this-command debugger-outer-this-command) |
| 291 | (with-no-warnings | ||
| 292 | (setq unread-command-char debugger-outer-unread-command-char)) | ||
| 293 | (setq unread-command-events debugger-outer-unread-command-events) | 297 | (setq unread-command-events debugger-outer-unread-command-events) |
| 294 | (setq unread-post-input-method-events | 298 | (setq unread-post-input-method-events |
| 295 | debugger-outer-unread-post-input-method-events) | 299 | debugger-outer-unread-post-input-method-events) |
| @@ -591,16 +595,7 @@ Applies to the frame whose line point is on in the backtrace." | |||
| 591 | (cursor-in-echo-area debugger-outer-cursor-in-echo-area)) | 595 | (cursor-in-echo-area debugger-outer-cursor-in-echo-area)) |
| 592 | (set-match-data debugger-outer-match-data) | 596 | (set-match-data debugger-outer-match-data) |
| 593 | (prog1 | 597 | (prog1 |
| 594 | (let ((save-ucc (with-no-warnings unread-command-char))) | 598 | (progn ,@body) |
| 595 | (unwind-protect | ||
| 596 | (progn | ||
| 597 | (with-no-warnings | ||
| 598 | (setq unread-command-char debugger-outer-unread-command-char)) | ||
| 599 | (prog1 (progn ,@body) | ||
| 600 | (with-no-warnings | ||
| 601 | (setq debugger-outer-unread-command-char unread-command-char)))) | ||
| 602 | (with-no-warnings | ||
| 603 | (setq unread-command-char save-ucc)))) | ||
| 604 | (setq debugger-outer-match-data (match-data)) | 599 | (setq debugger-outer-match-data (match-data)) |
| 605 | (setq debugger-outer-load-read-function load-read-function) | 600 | (setq debugger-outer-load-read-function load-read-function) |
| 606 | (setq debugger-outer-overriding-terminal-local-map | 601 | (setq debugger-outer-overriding-terminal-local-map |
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 7fcd339d6d2..f147fba167d 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el | |||
| @@ -235,11 +235,6 @@ If the result is non-nil, then break. Errors are ignored." | |||
| 235 | 235 | ||
| 236 | ;;; Form spec utilities. | 236 | ;;; Form spec utilities. |
| 237 | 237 | ||
| 238 | (defmacro def-edebug-form-spec (symbol spec-form) | ||
| 239 | "For compatibility with old version." | ||
| 240 | (def-edebug-spec symbol (eval spec-form))) | ||
| 241 | (make-obsolete 'def-edebug-form-spec 'def-edebug-spec "22.1") | ||
| 242 | |||
| 243 | (defun get-edebug-spec (symbol) | 238 | (defun get-edebug-spec (symbol) |
| 244 | ;; Get the spec of symbol resolving all indirection. | 239 | ;; Get the spec of symbol resolving all indirection. |
| 245 | (let ((edebug-form-spec nil) | 240 | (let ((edebug-form-spec nil) |
| @@ -2248,47 +2243,14 @@ error is signaled again. | |||
| 2248 | (debug-on-quit edebug-on-quit) | 2243 | (debug-on-quit edebug-on-quit) |
| 2249 | 2244 | ||
| 2250 | ;; Lexical bindings must be uncompiled for this to work. | 2245 | ;; Lexical bindings must be uncompiled for this to work. |
| 2251 | (cl-lexical-debug t) | 2246 | (cl-lexical-debug t)) |
| 2252 | |||
| 2253 | (edebug-outside-overriding-local-map overriding-local-map) | ||
| 2254 | (edebug-outside-overriding-terminal-local-map | ||
| 2255 | overriding-terminal-local-map) | ||
| 2256 | |||
| 2257 | ;; Save the outside value of executing macro. (here??) | ||
| 2258 | (edebug-outside-executing-macro executing-kbd-macro) | ||
| 2259 | (edebug-outside-pre-command-hook | ||
| 2260 | (edebug-var-status 'pre-command-hook)) | ||
| 2261 | (edebug-outside-post-command-hook | ||
| 2262 | (edebug-var-status 'post-command-hook))) | ||
| 2263 | (unwind-protect | 2247 | (unwind-protect |
| 2264 | (let (;; Don't keep reading from an executing kbd macro | 2248 | (let ((signal-hook-function 'edebug-signal)) |
| 2265 | ;; within edebug unless edebug-continue-kbd-macro is | ||
| 2266 | ;; non-nil. Again, local binding may not be best. | ||
| 2267 | (executing-kbd-macro | ||
| 2268 | (if edebug-continue-kbd-macro executing-kbd-macro)) | ||
| 2269 | |||
| 2270 | ;; Don't get confused by the user's keymap changes. | ||
| 2271 | (overriding-local-map nil) | ||
| 2272 | (overriding-terminal-local-map nil) | ||
| 2273 | |||
| 2274 | (signal-hook-function 'edebug-signal) | ||
| 2275 | |||
| 2276 | ;; Disable command hooks. This is essential when | ||
| 2277 | ;; a hook function is instrumented - to avoid infinite loop. | ||
| 2278 | ;; This may be more than we need, however. | ||
| 2279 | (pre-command-hook nil) | ||
| 2280 | (post-command-hook nil)) | ||
| 2281 | (setq edebug-execution-mode (or edebug-next-execution-mode | 2249 | (setq edebug-execution-mode (or edebug-next-execution-mode |
| 2282 | edebug-initial-mode | 2250 | edebug-initial-mode |
| 2283 | edebug-execution-mode) | 2251 | edebug-execution-mode) |
| 2284 | edebug-next-execution-mode nil) | 2252 | edebug-next-execution-mode nil) |
| 2285 | (edebug-enter edebug-function edebug-args edebug-body)) | 2253 | (edebug-enter edebug-function edebug-args edebug-body)))) |
| 2286 | ;; Reset global variables in case outside value was changed. | ||
| 2287 | (setq executing-kbd-macro edebug-outside-executing-macro) | ||
| 2288 | (edebug-restore-status | ||
| 2289 | 'post-command-hook edebug-outside-post-command-hook) | ||
| 2290 | (edebug-restore-status | ||
| 2291 | 'pre-command-hook edebug-outside-pre-command-hook))) | ||
| 2292 | 2254 | ||
| 2293 | (let* ((edebug-data (get edebug-function 'edebug)) | 2255 | (let* ((edebug-data (get edebug-function 'edebug)) |
| 2294 | (edebug-def-mark (car edebug-data)) ; mark at def start | 2256 | (edebug-def-mark (car edebug-data)) ; mark at def start |
| @@ -2804,7 +2766,6 @@ MSG is printed after `::::} '." | |||
| 2804 | ;; in versions where the variable is *not* built-in. | 2766 | ;; in versions where the variable is *not* built-in. |
| 2805 | 2767 | ||
| 2806 | ;; Emacs 18 FIXME | 2768 | ;; Emacs 18 FIXME |
| 2807 | (defvar edebug-outside-unread-command-char) | ||
| 2808 | 2769 | ||
| 2809 | ;; Emacs 19. | 2770 | ;; Emacs 19. |
| 2810 | (defvar edebug-outside-last-command-event) | 2771 | (defvar edebug-outside-last-command-event) |
| @@ -2814,15 +2775,6 @@ MSG is printed after `::::} '." | |||
| 2814 | (defvar edebug-outside-last-nonmenu-event) | 2775 | (defvar edebug-outside-last-nonmenu-event) |
| 2815 | (defvar edebug-outside-track-mouse) | 2776 | (defvar edebug-outside-track-mouse) |
| 2816 | 2777 | ||
| 2817 | ;; Disable byte compiler warnings about unread-command-char and -event | ||
| 2818 | ;; (maybe works with byte-compile-version 2.22 at least) | ||
| 2819 | (defvar edebug-unread-command-char-warning) | ||
| 2820 | (defvar edebug-unread-command-event-warning) | ||
| 2821 | (eval-when-compile ; FIXME | ||
| 2822 | (setq edebug-unread-command-char-warning | ||
| 2823 | (get 'unread-command-char 'byte-obsolete-variable)) | ||
| 2824 | (put 'unread-command-char 'byte-obsolete-variable nil)) | ||
| 2825 | |||
| 2826 | (defun edebug-recursive-edit () | 2778 | (defun edebug-recursive-edit () |
| 2827 | ;; Start up a recursive edit inside of edebug. | 2779 | ;; Start up a recursive edit inside of edebug. |
| 2828 | ;; The current buffer is the edebug-buffer, which is put into edebug-mode. | 2780 | ;; The current buffer is the edebug-buffer, which is put into edebug-mode. |
| @@ -2844,14 +2796,24 @@ MSG is printed after `::::} '." | |||
| 2844 | 2796 | ||
| 2845 | (edebug-outside-map (current-local-map)) | 2797 | (edebug-outside-map (current-local-map)) |
| 2846 | 2798 | ||
| 2847 | (edebug-outside-standard-output standard-output) | 2799 | (edebug-outside-overriding-local-map overriding-local-map) |
| 2800 | (edebug-outside-overriding-terminal-local-map | ||
| 2801 | overriding-terminal-local-map) | ||
| 2802 | |||
| 2803 | ;; Save the outside value of executing macro. (here??) | ||
| 2804 | (edebug-outside-executing-macro executing-kbd-macro) | ||
| 2805 | (edebug-outside-pre-command-hook | ||
| 2806 | (edebug-var-status 'pre-command-hook)) | ||
| 2807 | (edebug-outside-post-command-hook | ||
| 2808 | (edebug-var-status 'post-command-hook)) | ||
| 2809 | |||
| 2810 | (edebug-outside-standard-output standard-output) | ||
| 2848 | (edebug-outside-standard-input standard-input) | 2811 | (edebug-outside-standard-input standard-input) |
| 2849 | (edebug-outside-defining-kbd-macro defining-kbd-macro) | 2812 | (edebug-outside-defining-kbd-macro defining-kbd-macro) |
| 2850 | 2813 | ||
| 2851 | (edebug-outside-last-command last-command) | 2814 | (edebug-outside-last-command last-command) |
| 2852 | (edebug-outside-this-command this-command) | 2815 | (edebug-outside-this-command this-command) |
| 2853 | 2816 | ||
| 2854 | (edebug-outside-unread-command-char unread-command-char) ; FIXME | ||
| 2855 | (edebug-outside-current-prefix-arg current-prefix-arg) | 2817 | (edebug-outside-current-prefix-arg current-prefix-arg) |
| 2856 | 2818 | ||
| 2857 | (edebug-outside-last-input-event last-input-event) | 2819 | (edebug-outside-last-input-event last-input-event) |
| @@ -2867,9 +2829,6 @@ MSG is printed after `::::} '." | |||
| 2867 | ;; We could set these to the values for previous edebug call. | 2829 | ;; We could set these to the values for previous edebug call. |
| 2868 | (last-command last-command) | 2830 | (last-command last-command) |
| 2869 | (this-command this-command) | 2831 | (this-command this-command) |
| 2870 | |||
| 2871 | ;; Assume no edebug command sets unread-command-char. | ||
| 2872 | (unread-command-char -1) | ||
| 2873 | (current-prefix-arg nil) | 2832 | (current-prefix-arg nil) |
| 2874 | 2833 | ||
| 2875 | ;; More for Emacs 19 | 2834 | ;; More for Emacs 19 |
| @@ -2879,7 +2838,17 @@ MSG is printed after `::::} '." | |||
| 2879 | (last-nonmenu-event nil) | 2838 | (last-nonmenu-event nil) |
| 2880 | (track-mouse nil) | 2839 | (track-mouse nil) |
| 2881 | 2840 | ||
| 2882 | ;; Bind again to outside values. | 2841 | ;; Don't keep reading from an executing kbd macro |
| 2842 | ;; within edebug unless edebug-continue-kbd-macro is | ||
| 2843 | ;; non-nil. Again, local binding may not be best. | ||
| 2844 | (executing-kbd-macro | ||
| 2845 | (if edebug-continue-kbd-macro executing-kbd-macro)) | ||
| 2846 | |||
| 2847 | ;; Don't get confused by the user's keymap changes. | ||
| 2848 | (overriding-local-map nil) | ||
| 2849 | (overriding-terminal-local-map nil) | ||
| 2850 | |||
| 2851 | ;; Bind again to outside values. | ||
| 2883 | (debug-on-error edebug-outside-debug-on-error) | 2852 | (debug-on-error edebug-outside-debug-on-error) |
| 2884 | (debug-on-quit edebug-outside-debug-on-quit) | 2853 | (debug-on-quit edebug-outside-debug-on-quit) |
| 2885 | 2854 | ||
| @@ -2887,6 +2856,12 @@ MSG is printed after `::::} '." | |||
| 2887 | (defining-kbd-macro | 2856 | (defining-kbd-macro |
| 2888 | (if edebug-continue-kbd-macro defining-kbd-macro)) | 2857 | (if edebug-continue-kbd-macro defining-kbd-macro)) |
| 2889 | 2858 | ||
| 2859 | ;; Disable command hooks. This is essential when | ||
| 2860 | ;; a hook function is instrumented - to avoid infinite loop. | ||
| 2861 | ;; This may be more than we need, however. | ||
| 2862 | (pre-command-hook nil) | ||
| 2863 | (post-command-hook nil) | ||
| 2864 | |||
| 2890 | ;; others?? | 2865 | ;; others?? |
| 2891 | ) | 2866 | ) |
| 2892 | 2867 | ||
| @@ -2933,7 +2908,6 @@ MSG is printed after `::::} '." | |||
| 2933 | last-command-event edebug-outside-last-command-event | 2908 | last-command-event edebug-outside-last-command-event |
| 2934 | last-command edebug-outside-last-command | 2909 | last-command edebug-outside-last-command |
| 2935 | this-command edebug-outside-this-command | 2910 | this-command edebug-outside-this-command |
| 2936 | unread-command-char edebug-outside-unread-command-char | ||
| 2937 | current-prefix-arg edebug-outside-current-prefix-arg | 2911 | current-prefix-arg edebug-outside-current-prefix-arg |
| 2938 | last-input-event edebug-outside-last-input-event | 2912 | last-input-event edebug-outside-last-input-event |
| 2939 | last-event-frame edebug-outside-last-event-frame | 2913 | last-event-frame edebug-outside-last-event-frame |
| @@ -2942,9 +2916,13 @@ MSG is printed after `::::} '." | |||
| 2942 | 2916 | ||
| 2943 | standard-output edebug-outside-standard-output | 2917 | standard-output edebug-outside-standard-output |
| 2944 | standard-input edebug-outside-standard-input | 2918 | standard-input edebug-outside-standard-input |
| 2945 | defining-kbd-macro edebug-outside-defining-kbd-macro | 2919 | defining-kbd-macro edebug-outside-defining-kbd-macro) |
| 2946 | )) | 2920 | |
| 2947 | )) | 2921 | (setq executing-kbd-macro edebug-outside-executing-macro) |
| 2922 | (edebug-restore-status | ||
| 2923 | 'post-command-hook edebug-outside-post-command-hook) | ||
| 2924 | (edebug-restore-status | ||
| 2925 | 'pre-command-hook edebug-outside-pre-command-hook)))) | ||
| 2948 | 2926 | ||
| 2949 | 2927 | ||
| 2950 | ;;; Display related functions | 2928 | ;;; Display related functions |
| @@ -3562,7 +3540,6 @@ Return the result of the last expression." | |||
| 3562 | (last-command-event edebug-outside-last-command-event) | 3540 | (last-command-event edebug-outside-last-command-event) |
| 3563 | (last-command edebug-outside-last-command) | 3541 | (last-command edebug-outside-last-command) |
| 3564 | (this-command edebug-outside-this-command) | 3542 | (this-command edebug-outside-this-command) |
| 3565 | (unread-command-char edebug-outside-unread-command-char) | ||
| 3566 | (unread-command-events edebug-outside-unread-command-events) | 3543 | (unread-command-events edebug-outside-unread-command-events) |
| 3567 | (current-prefix-arg edebug-outside-current-prefix-arg) | 3544 | (current-prefix-arg edebug-outside-current-prefix-arg) |
| 3568 | (last-input-event edebug-outside-last-input-event) | 3545 | (last-input-event edebug-outside-last-input-event) |
| @@ -3602,7 +3579,6 @@ Return the result of the last expression." | |||
| 3602 | edebug-outside-last-command-event last-command-event | 3579 | edebug-outside-last-command-event last-command-event |
| 3603 | edebug-outside-last-command last-command | 3580 | edebug-outside-last-command last-command |
| 3604 | edebug-outside-this-command this-command | 3581 | edebug-outside-this-command this-command |
| 3605 | edebug-outside-unread-command-char unread-command-char | ||
| 3606 | edebug-outside-unread-command-events unread-command-events | 3582 | edebug-outside-unread-command-events unread-command-events |
| 3607 | edebug-outside-current-prefix-arg current-prefix-arg | 3583 | edebug-outside-current-prefix-arg current-prefix-arg |
| 3608 | edebug-outside-last-input-event last-input-event | 3584 | edebug-outside-last-input-event last-input-event |
| @@ -4240,7 +4216,7 @@ It is removed when you hit any char." | |||
| 4240 | (let ((buffer-read-only nil)) | 4216 | (let ((buffer-read-only nil)) |
| 4241 | (undo-boundary) | 4217 | (undo-boundary) |
| 4242 | (edebug-display-freq-count) | 4218 | (edebug-display-freq-count) |
| 4243 | (setq unread-command-char (read-char)) | 4219 | (setq unread-command-events (append unread-command-events (read-event))) |
| 4244 | ;; Yuck! This doesn't seem to work at all for me. | 4220 | ;; Yuck! This doesn't seem to work at all for me. |
| 4245 | (undo))) | 4221 | (undo))) |
| 4246 | 4222 | ||
| @@ -4357,13 +4333,6 @@ With prefix argument, make it a temporary breakpoint." | |||
| 4357 | ;; Extension for bytecomp to resolve undefined function references. | 4333 | ;; Extension for bytecomp to resolve undefined function references. |
| 4358 | ;; Requires new byte compiler. | 4334 | ;; Requires new byte compiler. |
| 4359 | 4335 | ||
| 4360 | ;; Reenable byte compiler warnings about unread-command-char and -event. | ||
| 4361 | ;; Disabled before edebug-recursive-edit. | ||
| 4362 | (eval-when-compile | ||
| 4363 | (if edebug-unread-command-char-warning | ||
| 4364 | (put 'unread-command-char 'byte-obsolete-variable | ||
| 4365 | edebug-unread-command-char-warning))) | ||
| 4366 | |||
| 4367 | (eval-when-compile | 4336 | (eval-when-compile |
| 4368 | ;; The body of eval-when-compile seems to get evaluated with eval-defun. | 4337 | ;; The body of eval-when-compile seems to get evaluated with eval-defun. |
| 4369 | ;; We only want to evaluate when actually byte compiling. | 4338 | ;; We only want to evaluate when actually byte compiling. |
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 669ea58656d..27c53744d54 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el | |||
| @@ -213,8 +213,8 @@ case sensitive instead." | |||
| 213 | (defun completion-table-subvert (table s1 s2) | 213 | (defun completion-table-subvert (table s1 s2) |
| 214 | "Return a completion table from TABLE with S1 replaced by S2. | 214 | "Return a completion table from TABLE with S1 replaced by S2. |
| 215 | The result is a completion table which completes strings of the | 215 | The result is a completion table which completes strings of the |
| 216 | form (concat S2 S) in the same way as TABLE completes strings of | 216 | form (concat S1 S) in the same way as TABLE completes strings of |
| 217 | the form (concat S1 S)." | 217 | the form (concat S2 S)." |
| 218 | (lambda (string pred action) | 218 | (lambda (string pred action) |
| 219 | (let* ((str (if (eq t (compare-strings string 0 (length s1) s1 nil nil | 219 | (let* ((str (if (eq t (compare-strings string 0 (length s1) s1 nil nil |
| 220 | completion-ignore-case)) | 220 | completion-ignore-case)) |
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index a17bbfa0d14..019ab1eef0f 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -3293,7 +3293,9 @@ for process communication also." | |||
| 3293 | ;; Under Windows XP, accept-process-output doesn't return | 3293 | ;; Under Windows XP, accept-process-output doesn't return |
| 3294 | ;; sometimes. So we add an additional timeout. | 3294 | ;; sometimes. So we add an additional timeout. |
| 3295 | (with-timeout ((or timeout 1)) | 3295 | (with-timeout ((or timeout 1)) |
| 3296 | (accept-process-output proc timeout timeout-msecs (and proc t)))) | 3296 | (if (featurep 'xemacs) |
| 3297 | (accept-process-output proc timeout timeout-msecs) | ||
| 3298 | (accept-process-output proc timeout timeout-msecs (and proc t))))) | ||
| 3297 | (tramp-message proc 10 "\n%s" (buffer-string)))) | 3299 | (tramp-message proc 10 "\n%s" (buffer-string)))) |
| 3298 | 3300 | ||
| 3299 | (defun tramp-check-for-regexp (proc regexp) | 3301 | (defun tramp-check-for-regexp (proc regexp) |
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 499af730788..2d0a8e3d23d 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | ;; should be changed only there. | 31 | ;; should be changed only there. |
| 32 | 32 | ||
| 33 | ;;;###tramp-autoload | 33 | ;;;###tramp-autoload |
| 34 | (defconst tramp-version "2.2.6-pre" | 34 | (defconst tramp-version "2.2.6" |
| 35 | "This version of Tramp.") | 35 | "This version of Tramp.") |
| 36 | 36 | ||
| 37 | ;;;###tramp-autoload | 37 | ;;;###tramp-autoload |
| @@ -44,7 +44,7 @@ | |||
| 44 | (= emacs-major-version 21) | 44 | (= emacs-major-version 21) |
| 45 | (>= emacs-minor-version 4))) | 45 | (>= emacs-minor-version 4))) |
| 46 | "ok" | 46 | "ok" |
| 47 | (format "Tramp 2.2.6-pre is not fit for %s" | 47 | (format "Tramp 2.2.6 is not fit for %s" |
| 48 | (when (string-match "^.*$" (emacs-version)) | 48 | (when (string-match "^.*$" (emacs-version)) |
| 49 | (match-string 0 (emacs-version))))))) | 49 | (match-string 0 (emacs-version))))))) |
| 50 | (unless (string-match "\\`ok\\'" x) (error "%s" x))) | 50 | (unless (string-match "\\`ok\\'" x) (error "%s" x))) |
diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el index 1d29011762e..8ac54d6524e 100644 --- a/lisp/progmodes/ebrowse.el +++ b/lisp/progmodes/ebrowse.el | |||
| @@ -4210,7 +4210,7 @@ NUMBER-OF-STATIC-VARIABLES:" | |||
| 4210 | ;; this will select the buffer from which the buffer menu was | 4210 | ;; this will select the buffer from which the buffer menu was |
| 4211 | ;; invoked. But this buffer is not displayed in the buffer list if | 4211 | ;; invoked. But this buffer is not displayed in the buffer list if |
| 4212 | ;; it isn't a tree buffer. I therefore let the buffer menu command | 4212 | ;; it isn't a tree buffer. I therefore let the buffer menu command |
| 4213 | ;; loop read the command `p' via `unread-command-char'. This command | 4213 | ;; loop read the command `p' via `unread-command-events'. This command |
| 4214 | ;; has no effect since we are on the first line of the buffer. | 4214 | ;; has no effect since we are on the first line of the buffer. |
| 4215 | 4215 | ||
| 4216 | (defvar electric-buffer-menu-mode-hook nil) | 4216 | (defvar electric-buffer-menu-mode-hook nil) |
diff --git a/lisp/subr.el b/lisp/subr.el index be785ff8fba..aa1b10ce17d 100644 --- a/lisp/subr.el +++ b/lisp/subr.el | |||
| @@ -1250,11 +1250,6 @@ is converted into a string by expressing it in decimal." | |||
| 1250 | 'mode-line-inverse-video | 1250 | 'mode-line-inverse-video |
| 1251 | "use the appropriate faces instead." | 1251 | "use the appropriate faces instead." |
| 1252 | "21.1") | 1252 | "21.1") |
| 1253 | (make-obsolete-variable | ||
| 1254 | 'unread-command-char | ||
| 1255 | "use `unread-command-events' instead. That variable is a list of events | ||
| 1256 | to reread, so it now uses nil to mean `no event', instead of -1." | ||
| 1257 | "before 19.15") | ||
| 1258 | 1253 | ||
| 1259 | ;; Lisp manual only updated in 22.1. | 1254 | ;; Lisp manual only updated in 22.1. |
| 1260 | (define-obsolete-variable-alias 'executing-macro 'executing-kbd-macro | 1255 | (define-obsolete-variable-alias 'executing-macro 'executing-kbd-macro |
| @@ -3911,6 +3906,11 @@ The properties used on SYMBOL are `composefunc', `sendfunc', | |||
| 3911 | (put symbol 'hookvar (or hookvar 'mail-send-hook))) | 3906 | (put symbol 'hookvar (or hookvar 'mail-send-hook))) |
| 3912 | 3907 | ||
| 3913 | (defun set-temporary-overlay-map (map &optional keep-pred) | 3908 | (defun set-temporary-overlay-map (map &optional keep-pred) |
| 3909 | "Set MAP as a temporary overlay map. | ||
| 3910 | When KEEP-PRED is `t', using a key from the temporary keymap | ||
| 3911 | leaves this keymap activated. KEEP-PRED can also be a function, | ||
| 3912 | which will have the same effect when it returns `t'. | ||
| 3913 | When KEEP-PRED is nil, the temporary keymap is used only once." | ||
| 3914 | (let* ((clearfunsym (make-symbol "clear-temporary-overlay-map")) | 3914 | (let* ((clearfunsym (make-symbol "clear-temporary-overlay-map")) |
| 3915 | (overlaysym (make-symbol "t")) | 3915 | (overlaysym (make-symbol "t")) |
| 3916 | (alist (list (cons overlaysym map))) | 3916 | (alist (list (cons overlaysym map))) |
| @@ -3923,6 +3923,7 @@ The properties used on SYMBOL are `composefunc', `sendfunc', | |||
| 3923 | (lookup-key ',map | 3923 | (lookup-key ',map |
| 3924 | (this-command-keys-vector)))) | 3924 | (this-command-keys-vector)))) |
| 3925 | (t `(funcall ',keep-pred))) | 3925 | (t `(funcall ',keep-pred))) |
| 3926 | (set ',overlaysym nil) ;Just in case. | ||
| 3926 | (remove-hook 'pre-command-hook ',clearfunsym) | 3927 | (remove-hook 'pre-command-hook ',clearfunsym) |
| 3927 | (setq emulation-mode-map-alists | 3928 | (setq emulation-mode-map-alists |
| 3928 | (delq ',alist emulation-mode-map-alists)))))) | 3929 | (delq ',alist emulation-mode-map-alists)))))) |
diff --git a/src/ChangeLog b/src/ChangeLog index 548c80b3b85..8b47c52c23f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,125 @@ | |||
| 1 | 2012-09-12 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * keyboard.c (read_char, requeued_events_pending_p, Finput_pending_p) | ||
| 4 | (Fdiscard_input, quit_throw_to_read_char, init_keyboard) | ||
| 5 | (syms_of_keyboard): Remove support for unread-command-char. | ||
| 6 | |||
| 7 | 2012-09-12 Eli Zaretskii <eliz@gnu.org> | ||
| 8 | |||
| 9 | * w32proc.c (sys_kill): If PID is our process ID and the signal is | ||
| 10 | SIGABRT, call emacs_abort. Avoids silently exiting upon assertion | ||
| 11 | violation. (Bug#12426) | ||
| 12 | |||
| 13 | 2012-09-12 Paul Eggert <eggert@cs.ucla.edu> | ||
| 14 | |||
| 15 | * image.c (jpeg_memory_src): Don't assume string len fits in unsigned. | ||
| 16 | |||
| 17 | 2012-09-12 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 18 | |||
| 19 | * eval.c: Add `inhibit-debugger'. | ||
| 20 | (Qinhibit_debugger): New symbol. | ||
| 21 | (call_debugger): Bind it instead of Qdebug_on_error. | ||
| 22 | (maybe_call_debugger): Test Vinhibit_debugger. | ||
| 23 | (syms_of_eval): Define inhibit-debugger. | ||
| 24 | * xdisp.c (set_message): Don't bind Qinhibit_debug_on_message. | ||
| 25 | (syms_of_xdisp): Remove inhibit-debug-on-message. | ||
| 26 | |||
| 27 | 2012-09-11 Paul Eggert <eggert@cs.ucla.edu> | ||
| 28 | |||
| 29 | Avoid _setjmp/_longjmp problems with local nonvolatile variables. | ||
| 30 | If a nonvolatile local variable is written before a _longjmp to | ||
| 31 | the frame containing the variable, and is read after the _longjmp, | ||
| 32 | the value read is indeterminate. Some local variables of type | ||
| 33 | 'struct handler' and 'struct catchtag' are used in this way, so | ||
| 34 | mark each of their slots as volatile if the slot can be set before | ||
| 35 | _longjmp and read afterwards. | ||
| 36 | * lisp.h (struct handler): var and chosen_clause are now volatile. | ||
| 37 | (struct catchtag): val, next, and pdlcount are now volatile. | ||
| 38 | |||
| 39 | * bidi.c (bidi_push_it, bidi_pop_it): | ||
| 40 | * fns.c (copy_hash_table): | ||
| 41 | * image.c (define_image_type): | ||
| 42 | * keyboard.c (kbd_buffer_store_event_hold): | ||
| 43 | * process.c (Fprocess_send_eof): | ||
| 44 | * xfaces.c (x_create_gc) [HAVE_NS]: | ||
| 45 | * xgselect.c (xg_select): | ||
| 46 | Prefer assignment to memcpy when either will do. | ||
| 47 | |||
| 48 | * alloc.c (discard_killed_buffers): Tune and simplify a bit. | ||
| 49 | Use pointer-to-a-pointer to simplify and avoid a NILP check each | ||
| 50 | time an item is removed. No need to mark this function 'inline'; | ||
| 51 | the compiler knows better than we do. | ||
| 52 | |||
| 53 | 2012-09-11 Jan Djärv <jan.h.d@swipnet.se> | ||
| 54 | |||
| 55 | * nsterm.m (ns_judge_scroll_bars): Pass NO to updateFrameSize. | ||
| 56 | (updateFrameSize:): Add delay parameter to updateFrameSize, send it | ||
| 57 | to change_frame_size (Bug#12388). | ||
| 58 | (windowDidResize:): Pass YES to updateFrameSize. | ||
| 59 | |||
| 60 | * nsterm.h: Add delay parameter to updateFrameSize. | ||
| 61 | |||
| 62 | 2012-09-11 Dmitry Antipov <dmantipov@yandex.ru> | ||
| 63 | |||
| 64 | Discard killed buffers from deleted window and frame objects. | ||
| 65 | This reduces an amount of references to killed buffers and | ||
| 66 | helps GC to reclaim them faster. | ||
| 67 | * alloc.c (discard_killed_buffers): New function. | ||
| 68 | (mark_object): Use it for deleted windows and frames. | ||
| 69 | (mark_object): If symbol's value is set up for a killed buffer | ||
| 70 | or deleted frame, restore it's global binding. | ||
| 71 | * data.c (swap_in_global_binding): Add GC notice. | ||
| 72 | (swap_in_symval_forwarding): Use convenient set_blv_where. | ||
| 73 | * window.c (wset_next_buffers, wset_prev_buffers): Move ... | ||
| 74 | * window.h: ... to here. | ||
| 75 | |||
| 76 | 2012-09-11 Dmitry Antipov <dmantipov@yandex.ru> | ||
| 77 | |||
| 78 | Convenient macro to check whether the buffer is live. | ||
| 79 | * buffer.h (BUFFER_LIVE_P): New macro. | ||
| 80 | * alloc.c, buffer.c, editfns.c, insdel.c, lread.c, marker.c: | ||
| 81 | * minibuf.c, print.c, process.c, window.c, xdisp.c: Use it. | ||
| 82 | |||
| 83 | 2012-09-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 84 | |||
| 85 | * xdisp.c (right_overwritten, right_overwriting): Also handle gstring | ||
| 86 | composition cases (Bug#12364). | ||
| 87 | |||
| 88 | * xterm.c (x_draw_glyph_string): Avoid overwriting inverted left | ||
| 89 | overhang of succeeding glyphs overlapping box cursor. | ||
| 90 | |||
| 91 | * w32term.c (x_draw_glyph_string): Likewise. | ||
| 92 | |||
| 93 | 2012-09-11 Paul Eggert <eggert@cs.ucla.edu> | ||
| 94 | |||
| 95 | Simplify, document, and port floating-point (Bug#12381). | ||
| 96 | The porting part of this patch fixes bugs on non-IEEE platforms | ||
| 97 | with frexp, ldexp, logb. | ||
| 98 | * data.c, lisp.h (Qdomain_error, Qsingularity_error, Qunderflow_error): | ||
| 99 | Now static. | ||
| 100 | * floatfns.c: Simplify discussion of functions that Emacs doesn't | ||
| 101 | support, by removing commented-out code and briefly listing the | ||
| 102 | C89 functions excluded. The commented-out stuff was confusing | ||
| 103 | maintenance, e.g., we thought we needed cbrt but it was commented out. | ||
| 104 | (logb): Remove decl; no longer needed. | ||
| 105 | (isfinite): New macro, if not already supplied. | ||
| 106 | (isnan): Don't replace any existing macro. | ||
| 107 | (Ffrexp, Fldexp): Define even if !HAVE_COPYSIGN, as frexp and ldexp | ||
| 108 | are present on all C89 platforms. | ||
| 109 | (Ffrexp): Do not special-case zero, as frexp does the right thing | ||
| 110 | for that case. | ||
| 111 | (Flogb): Do not use logb, as it doesn't have the desired meaning | ||
| 112 | on hosts that use non-base-2 floating point. Instead, stick with | ||
| 113 | frexp, which is C89 anyway. Do not pass an infinity or a NaN to | ||
| 114 | frexp, to avoid getting an unspecified result. | ||
| 115 | |||
| 116 | * xdisp.c (Qinhibit_debug_on_message): Now static. | ||
| 117 | |||
| 118 | 2012-09-10 Jan Djärv <jan.h.d@swipnet.se> | ||
| 119 | |||
| 120 | * nsterm.m (ns_update_begin): Set clip path to whole view by using | ||
| 121 | NSBezierPath (Bug#12131). | ||
| 122 | |||
| 1 | 2012-09-10 Chong Yidong <cyd@gnu.org> | 123 | 2012-09-10 Chong Yidong <cyd@gnu.org> |
| 2 | 124 | ||
| 3 | * fns.c (Fdelq, Fdelete): Doc fix. | 125 | * fns.c (Fdelq, Fdelete): Doc fix. |
diff --git a/src/alloc.c b/src/alloc.c index 7bbc0abcd9a..61cb7086c25 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -5865,6 +5865,28 @@ mark_buffer (struct buffer *buffer) | |||
| 5865 | mark_buffer (buffer->base_buffer); | 5865 | mark_buffer (buffer->base_buffer); |
| 5866 | } | 5866 | } |
| 5867 | 5867 | ||
| 5868 | /* Remove killed buffers or items whose car is a killed buffer | ||
| 5869 | from LIST and return changed LIST. Called during GC. */ | ||
| 5870 | |||
| 5871 | static Lisp_Object | ||
| 5872 | discard_killed_buffers (Lisp_Object list) | ||
| 5873 | { | ||
| 5874 | Lisp_Object *prev = &list; | ||
| 5875 | Lisp_Object tail; | ||
| 5876 | |||
| 5877 | for (tail = list; CONSP (tail); tail = XCDR (tail)) | ||
| 5878 | { | ||
| 5879 | Lisp_Object tem = XCAR (tail); | ||
| 5880 | if (CONSP (tem)) | ||
| 5881 | tem = XCAR (tem); | ||
| 5882 | if (BUFFERP (tem) && !BUFFER_LIVE_P (XBUFFER (tem))) | ||
| 5883 | *prev = XCDR (tail); | ||
| 5884 | else | ||
| 5885 | prev = &XCDR_AS_LVALUE (tail); | ||
| 5886 | } | ||
| 5887 | return list; | ||
| 5888 | } | ||
| 5889 | |||
| 5868 | /* Determine type of generic Lisp_Object and mark it accordingly. */ | 5890 | /* Determine type of generic Lisp_Object and mark it accordingly. */ |
| 5869 | 5891 | ||
| 5870 | void | 5892 | void |
| @@ -6001,20 +6023,41 @@ mark_object (Lisp_Object arg) | |||
| 6001 | break; | 6023 | break; |
| 6002 | 6024 | ||
| 6003 | case PVEC_FRAME: | 6025 | case PVEC_FRAME: |
| 6004 | mark_vectorlike (ptr); | 6026 | { |
| 6005 | mark_face_cache (((struct frame *) ptr)->face_cache); | 6027 | struct frame *f = (struct frame *) ptr; |
| 6028 | |||
| 6029 | /* For live frames, killed buffers are filtered out by | ||
| 6030 | store_frame_param. For dead frames, we do it here in | ||
| 6031 | attempt to help GC to reclaim killed buffers faster. */ | ||
| 6032 | if (!FRAME_LIVE_P (f)) | ||
| 6033 | fset_buffer_list (f, discard_killed_buffers (f->buffer_list)); | ||
| 6034 | |||
| 6035 | mark_vectorlike (ptr); | ||
| 6036 | mark_face_cache (f->face_cache); | ||
| 6037 | } | ||
| 6006 | break; | 6038 | break; |
| 6007 | 6039 | ||
| 6008 | case PVEC_WINDOW: | 6040 | case PVEC_WINDOW: |
| 6009 | { | 6041 | { |
| 6010 | struct window *w = (struct window *) ptr; | 6042 | struct window *w = (struct window *) ptr; |
| 6043 | bool leaf = NILP (w->hchild) && NILP (w->vchild); | ||
| 6044 | |||
| 6045 | /* For live windows, Lisp code filters out killed buffers | ||
| 6046 | from both buffer lists. For dead windows, we do it here | ||
| 6047 | in attempt to help GC to reclaim killed buffers faster. */ | ||
| 6048 | if (leaf && NILP (w->buffer)) | ||
| 6049 | { | ||
| 6050 | wset_prev_buffers | ||
| 6051 | (w, discard_killed_buffers (w->prev_buffers)); | ||
| 6052 | wset_next_buffers | ||
| 6053 | (w, discard_killed_buffers (w->next_buffers)); | ||
| 6054 | } | ||
| 6011 | 6055 | ||
| 6012 | mark_vectorlike (ptr); | 6056 | mark_vectorlike (ptr); |
| 6013 | /* Mark glyphs for leaf windows. Marking window | 6057 | /* Mark glyphs for leaf windows. Marking window |
| 6014 | matrices is sufficient because frame matrices | 6058 | matrices is sufficient because frame matrices |
| 6015 | use the same glyph memory. */ | 6059 | use the same glyph memory. */ |
| 6016 | if (NILP (w->hchild) && NILP (w->vchild) | 6060 | if (leaf && w->current_matrix) |
| 6017 | && w->current_matrix) | ||
| 6018 | { | 6061 | { |
| 6019 | mark_glyph_matrix (w->current_matrix); | 6062 | mark_glyph_matrix (w->current_matrix); |
| 6020 | mark_glyph_matrix (w->desired_matrix); | 6063 | mark_glyph_matrix (w->desired_matrix); |
| @@ -6081,10 +6124,14 @@ mark_object (Lisp_Object arg) | |||
| 6081 | case SYMBOL_LOCALIZED: | 6124 | case SYMBOL_LOCALIZED: |
| 6082 | { | 6125 | { |
| 6083 | struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (ptr); | 6126 | struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (ptr); |
| 6084 | /* If the value is forwarded to a buffer or keyboard field, | 6127 | Lisp_Object where = blv->where; |
| 6085 | these are marked when we see the corresponding object. | 6128 | /* If the value is set up for a killed buffer or deleted |
| 6086 | And if it's forwarded to a C variable, either it's not | 6129 | frame, restore it's global binding. If the value is |
| 6087 | a Lisp_Object var, or it's staticpro'd already. */ | 6130 | forwarded to a C variable, either it's not a Lisp_Object |
| 6131 | var, or it's staticpro'd already. */ | ||
| 6132 | if ((BUFFERP (where) && !BUFFER_LIVE_P (XBUFFER (where))) | ||
| 6133 | || (FRAMEP (where) && !FRAME_LIVE_P (XFRAME (where)))) | ||
| 6134 | swap_in_global_binding (ptr); | ||
| 6088 | mark_object (blv->where); | 6135 | mark_object (blv->where); |
| 6089 | mark_object (blv->valcell); | 6136 | mark_object (blv->valcell); |
| 6090 | mark_object (blv->defcell); | 6137 | mark_object (blv->defcell); |
diff --git a/src/bidi.c b/src/bidi.c index 73fec3533a4..4186a46e19e 100644 --- a/src/bidi.c +++ b/src/bidi.c | |||
| @@ -612,7 +612,7 @@ bidi_push_it (struct bidi_it *bidi_it) | |||
| 612 | /* Save the current iterator state in its entirety after the last | 612 | /* Save the current iterator state in its entirety after the last |
| 613 | used cache slot. */ | 613 | used cache slot. */ |
| 614 | bidi_cache_ensure_space (bidi_cache_idx); | 614 | bidi_cache_ensure_space (bidi_cache_idx); |
| 615 | memcpy (&bidi_cache[bidi_cache_idx++], bidi_it, sizeof (struct bidi_it)); | 615 | bidi_cache[bidi_cache_idx++] = *bidi_it; |
| 616 | 616 | ||
| 617 | /* Push the current cache start onto the stack. */ | 617 | /* Push the current cache start onto the stack. */ |
| 618 | eassert (bidi_cache_sp < IT_STACK_SIZE); | 618 | eassert (bidi_cache_sp < IT_STACK_SIZE); |
| @@ -636,7 +636,7 @@ bidi_pop_it (struct bidi_it *bidi_it) | |||
| 636 | bidi_cache_idx = bidi_cache_start - 1; | 636 | bidi_cache_idx = bidi_cache_start - 1; |
| 637 | 637 | ||
| 638 | /* Restore the bidi iterator state saved in the cache. */ | 638 | /* Restore the bidi iterator state saved in the cache. */ |
| 639 | memcpy (bidi_it, &bidi_cache[bidi_cache_idx], sizeof (struct bidi_it)); | 639 | *bidi_it = bidi_cache[bidi_cache_idx]; |
| 640 | 640 | ||
| 641 | /* Pop the previous cache start from the stack. */ | 641 | /* Pop the previous cache start from the stack. */ |
| 642 | if (bidi_cache_sp <= 0) | 642 | if (bidi_cache_sp <= 0) |
diff --git a/src/composite.h b/src/composite.h index 68f5b27ee42..9462b932c66 100644 --- a/src/composite.h +++ b/src/composite.h | |||
| @@ -113,7 +113,7 @@ extern Lisp_Object composition_temp; | |||
| 113 | && (end - start) == COMPOSITION_LENGTH (prop)) | 113 | && (end - start) == COMPOSITION_LENGTH (prop)) |
| 114 | 114 | ||
| 115 | /* Return the Nth glyph of composition specified by CMP. CMP is a | 115 | /* Return the Nth glyph of composition specified by CMP. CMP is a |
| 116 | pointer to `struct composition'. */ | 116 | pointer to `struct composition'. */ |
| 117 | #define COMPOSITION_GLYPH(cmp, n) \ | 117 | #define COMPOSITION_GLYPH(cmp, n) \ |
| 118 | XINT (XVECTOR (XVECTOR (XHASH_TABLE (composition_hash_table) \ | 118 | XINT (XVECTOR (XVECTOR (XHASH_TABLE (composition_hash_table) \ |
| 119 | ->key_and_value) \ | 119 | ->key_and_value) \ |
diff --git a/src/data.c b/src/data.c index 4678ac1208c..5d7f036b70d 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -948,8 +948,10 @@ store_symval_forwarding (union Lisp_Fwd *valcontents, register Lisp_Object newva | |||
| 948 | } | 948 | } |
| 949 | } | 949 | } |
| 950 | 950 | ||
| 951 | /* Set up SYMBOL to refer to its global binding. | 951 | /* Set up SYMBOL to refer to its global binding. This makes it safe |
| 952 | This makes it safe to alter the status of other bindings. */ | 952 | to alter the status of other bindings. BEWARE: this may be called |
| 953 | during the mark phase of GC, where we assume that Lisp_Object slots | ||
| 954 | of BLV are marked after this function has changed them. */ | ||
| 953 | 955 | ||
| 954 | void | 956 | void |
| 955 | swap_in_global_binding (struct Lisp_Symbol *symbol) | 957 | swap_in_global_binding (struct Lisp_Symbol *symbol) |
| @@ -1008,7 +1010,7 @@ swap_in_symval_forwarding (struct Lisp_Symbol *symbol, struct Lisp_Buffer_Local_ | |||
| 1008 | else | 1010 | else |
| 1009 | { | 1011 | { |
| 1010 | tem1 = assq_no_quit (var, BVAR (current_buffer, local_var_alist)); | 1012 | tem1 = assq_no_quit (var, BVAR (current_buffer, local_var_alist)); |
| 1011 | XSETBUFFER (blv->where, current_buffer); | 1013 | set_blv_where (blv, Fcurrent_buffer ()); |
| 1012 | } | 1014 | } |
| 1013 | } | 1015 | } |
| 1014 | if (!(blv->found = !NILP (tem1))) | 1016 | if (!(blv->found = !NILP (tem1))) |
| @@ -1162,7 +1164,7 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where, | |||
| 1162 | the default binding is loaded, the loaded binding may be the | 1164 | the default binding is loaded, the loaded binding may be the |
| 1163 | wrong one. */ | 1165 | wrong one. */ |
| 1164 | if (!EQ (blv->where, where) | 1166 | if (!EQ (blv->where, where) |
| 1165 | /* Also unload a global binding (if the var is local_if_set). */ | 1167 | /* Also unload a global binding (if the var is local_if_set). */ |
| 1166 | || (EQ (blv->valcell, blv->defcell))) | 1168 | || (EQ (blv->valcell, blv->defcell))) |
| 1167 | { | 1169 | { |
| 1168 | /* The currently loaded binding is not necessarily valid. | 1170 | /* The currently loaded binding is not necessarily valid. |
diff --git a/src/eval.c b/src/eval.c index 4f0d6c69a51..8a8a507a1b6 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -69,7 +69,7 @@ Lisp_Object Qautoload, Qmacro, Qexit, Qinteractive, Qcommandp; | |||
| 69 | Lisp_Object Qinhibit_quit; | 69 | Lisp_Object Qinhibit_quit; |
| 70 | Lisp_Object Qand_rest; | 70 | Lisp_Object Qand_rest; |
| 71 | static Lisp_Object Qand_optional; | 71 | static Lisp_Object Qand_optional; |
| 72 | static Lisp_Object Qdebug_on_error; | 72 | static Lisp_Object Qinhibit_debugger; |
| 73 | static Lisp_Object Qdeclare; | 73 | static Lisp_Object Qdeclare; |
| 74 | Lisp_Object Qinternal_interpreter_environment, Qclosure; | 74 | Lisp_Object Qinternal_interpreter_environment, Qclosure; |
| 75 | 75 | ||
| @@ -229,7 +229,7 @@ call_debugger (Lisp_Object arg) | |||
| 229 | specbind (intern ("debugger-may-continue"), | 229 | specbind (intern ("debugger-may-continue"), |
| 230 | debug_while_redisplaying ? Qnil : Qt); | 230 | debug_while_redisplaying ? Qnil : Qt); |
| 231 | specbind (Qinhibit_redisplay, Qnil); | 231 | specbind (Qinhibit_redisplay, Qnil); |
| 232 | specbind (Qdebug_on_error, Qnil); | 232 | specbind (Qinhibit_debugger, Qt); |
| 233 | 233 | ||
| 234 | #if 0 /* Binding this prevents execution of Lisp code during | 234 | #if 0 /* Binding this prevents execution of Lisp code during |
| 235 | redisplay, which necessarily leads to display problems. */ | 235 | redisplay, which necessarily leads to display problems. */ |
| @@ -1725,6 +1725,7 @@ maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig, Lisp_Object data) | |||
| 1725 | /* Don't try to run the debugger with interrupts blocked. | 1725 | /* Don't try to run the debugger with interrupts blocked. |
| 1726 | The editing loop would return anyway. */ | 1726 | The editing loop would return anyway. */ |
| 1727 | ! INPUT_BLOCKED_P | 1727 | ! INPUT_BLOCKED_P |
| 1728 | && NILP (Vinhibit_debugger) | ||
| 1728 | /* Does user want to enter debugger for this kind of error? */ | 1729 | /* Does user want to enter debugger for this kind of error? */ |
| 1729 | && (EQ (sig, Qquit) | 1730 | && (EQ (sig, Qquit) |
| 1730 | ? debug_on_quit | 1731 | ? debug_on_quit |
| @@ -3467,7 +3468,7 @@ before making `inhibit-quit' nil. */); | |||
| 3467 | 3468 | ||
| 3468 | DEFSYM (Qinhibit_quit, "inhibit-quit"); | 3469 | DEFSYM (Qinhibit_quit, "inhibit-quit"); |
| 3469 | DEFSYM (Qautoload, "autoload"); | 3470 | DEFSYM (Qautoload, "autoload"); |
| 3470 | DEFSYM (Qdebug_on_error, "debug-on-error"); | 3471 | DEFSYM (Qinhibit_debugger, "inhibit-debugger"); |
| 3471 | DEFSYM (Qmacro, "macro"); | 3472 | DEFSYM (Qmacro, "macro"); |
| 3472 | DEFSYM (Qdeclare, "declare"); | 3473 | DEFSYM (Qdeclare, "declare"); |
| 3473 | 3474 | ||
| @@ -3482,6 +3483,12 @@ before making `inhibit-quit' nil. */); | |||
| 3482 | DEFSYM (Qclosure, "closure"); | 3483 | DEFSYM (Qclosure, "closure"); |
| 3483 | DEFSYM (Qdebug, "debug"); | 3484 | DEFSYM (Qdebug, "debug"); |
| 3484 | 3485 | ||
| 3486 | DEFVAR_LISP ("inhibit-debugger", Vinhibit_debugger, | ||
| 3487 | doc: /* Non-nil means never enter the debugger. | ||
| 3488 | Normally set while the debugger is already active, to avoid recursive | ||
| 3489 | invocations. */); | ||
| 3490 | Vinhibit_debugger = Qnil; | ||
| 3491 | |||
| 3485 | DEFVAR_LISP ("debug-on-error", Vdebug_on_error, | 3492 | DEFVAR_LISP ("debug-on-error", Vdebug_on_error, |
| 3486 | doc: /* Non-nil means enter debugger if an error is signaled. | 3493 | doc: /* Non-nil means enter debugger if an error is signaled. |
| 3487 | Does not apply to errors handled by `condition-case' or those | 3494 | Does not apply to errors handled by `condition-case' or those |
| @@ -3491,7 +3498,7 @@ if one of its condition symbols appears in the list. | |||
| 3491 | When you evaluate an expression interactively, this variable | 3498 | When you evaluate an expression interactively, this variable |
| 3492 | is temporarily non-nil if `eval-expression-debug-on-error' is non-nil. | 3499 | is temporarily non-nil if `eval-expression-debug-on-error' is non-nil. |
| 3493 | The command `toggle-debug-on-error' toggles this. | 3500 | The command `toggle-debug-on-error' toggles this. |
| 3494 | See also the variable `debug-on-quit'. */); | 3501 | See also the variable `debug-on-quit' and `inhibit-debugger'. */); |
| 3495 | Vdebug_on_error = Qnil; | 3502 | Vdebug_on_error = Qnil; |
| 3496 | 3503 | ||
| 3497 | DEFVAR_LISP ("debug-ignored-errors", Vdebug_ignored_errors, | 3504 | DEFVAR_LISP ("debug-ignored-errors", Vdebug_ignored_errors, |
| @@ -3680,7 +3680,7 @@ copy_hash_table (struct Lisp_Hash_Table *h1) | |||
| 3680 | 3680 | ||
| 3681 | h2 = allocate_hash_table (); | 3681 | h2 = allocate_hash_table (); |
| 3682 | next = h2->header.next.vector; | 3682 | next = h2->header.next.vector; |
| 3683 | memcpy (h2, h1, sizeof *h2); | 3683 | *h2 = *h1; |
| 3684 | h2->header.next.vector = next; | 3684 | h2->header.next.vector = next; |
| 3685 | h2->key_and_value = Fcopy_sequence (h1->key_and_value); | 3685 | h2->key_and_value = Fcopy_sequence (h1->key_and_value); |
| 3686 | h2->hash = Fcopy_sequence (h1->hash); | 3686 | h2->hash = Fcopy_sequence (h1->hash); |
diff --git a/src/image.c b/src/image.c index 4ec6105d72d..cf01602050f 100644 --- a/src/image.c +++ b/src/image.c | |||
| @@ -593,7 +593,7 @@ define_image_type (struct image_type *type, int loaded) | |||
| 593 | /* Make a copy of TYPE to avoid a bus error in a dumped Emacs. | 593 | /* Make a copy of TYPE to avoid a bus error in a dumped Emacs. |
| 594 | The initialized data segment is read-only. */ | 594 | The initialized data segment is read-only. */ |
| 595 | struct image_type *p = xmalloc (sizeof *p); | 595 | struct image_type *p = xmalloc (sizeof *p); |
| 596 | memcpy (p, type, sizeof *p); | 596 | *p = *type; |
| 597 | p->next = image_types; | 597 | p->next = image_types; |
| 598 | image_types = p; | 598 | image_types = p; |
| 599 | success = Qt; | 599 | success = Qt; |
| @@ -6181,7 +6181,7 @@ our_memory_skip_input_data (j_decompress_ptr cinfo, long int num_bytes) | |||
| 6181 | reading the image. */ | 6181 | reading the image. */ |
| 6182 | 6182 | ||
| 6183 | static void | 6183 | static void |
| 6184 | jpeg_memory_src (j_decompress_ptr cinfo, JOCTET *data, unsigned int len) | 6184 | jpeg_memory_src (j_decompress_ptr cinfo, JOCTET *data, ptrdiff_t len) |
| 6185 | { | 6185 | { |
| 6186 | struct jpeg_source_mgr *src; | 6186 | struct jpeg_source_mgr *src; |
| 6187 | 6187 | ||
diff --git a/src/keyboard.c b/src/keyboard.c index 691a06d36cf..de48b53053b 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -2369,15 +2369,6 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps, | |||
| 2369 | goto reread_first; | 2369 | goto reread_first; |
| 2370 | } | 2370 | } |
| 2371 | 2371 | ||
| 2372 | if (unread_command_char != -1) | ||
| 2373 | { | ||
| 2374 | XSETINT (c, unread_command_char); | ||
| 2375 | unread_command_char = -1; | ||
| 2376 | |||
| 2377 | reread = 1; | ||
| 2378 | goto reread_first; | ||
| 2379 | } | ||
| 2380 | |||
| 2381 | if (CONSP (Vunread_command_events)) | 2372 | if (CONSP (Vunread_command_events)) |
| 2382 | { | 2373 | { |
| 2383 | int was_disabled = 0; | 2374 | int was_disabled = 0; |
| @@ -2562,7 +2553,6 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps, | |||
| 2562 | && !NILP (prev_event) && ! EVENT_HAS_PARAMETERS (prev_event) | 2553 | && !NILP (prev_event) && ! EVENT_HAS_PARAMETERS (prev_event) |
| 2563 | /* Don't bring up a menu if we already have another event. */ | 2554 | /* Don't bring up a menu if we already have another event. */ |
| 2564 | && NILP (Vunread_command_events) | 2555 | && NILP (Vunread_command_events) |
| 2565 | && unread_command_char < 0 | ||
| 2566 | && !detect_input_pending_run_timers (0)) | 2556 | && !detect_input_pending_run_timers (0)) |
| 2567 | { | 2557 | { |
| 2568 | c = read_char_minibuf_menu_prompt (commandflag, nmaps, maps); | 2558 | c = read_char_minibuf_menu_prompt (commandflag, nmaps, maps); |
| @@ -2698,8 +2688,7 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps, | |||
| 2698 | && !EQ (XCAR (prev_event), Qmenu_bar) | 2688 | && !EQ (XCAR (prev_event), Qmenu_bar) |
| 2699 | && !EQ (XCAR (prev_event), Qtool_bar) | 2689 | && !EQ (XCAR (prev_event), Qtool_bar) |
| 2700 | /* Don't bring up a menu if we already have another event. */ | 2690 | /* Don't bring up a menu if we already have another event. */ |
| 2701 | && NILP (Vunread_command_events) | 2691 | && NILP (Vunread_command_events)) |
| 2702 | && unread_command_char < 0) | ||
| 2703 | { | 2692 | { |
| 2704 | c = read_char_x_menu_prompt (nmaps, maps, prev_event, used_mouse_menu); | 2693 | c = read_char_x_menu_prompt (nmaps, maps, prev_event, used_mouse_menu); |
| 2705 | 2694 | ||
| @@ -3605,7 +3594,7 @@ kbd_buffer_store_event_hold (register struct input_event *event, | |||
| 3605 | 3594 | ||
| 3606 | if (hold_quit) | 3595 | if (hold_quit) |
| 3607 | { | 3596 | { |
| 3608 | memcpy (hold_quit, event, sizeof (*event)); | 3597 | *hold_quit = *event; |
| 3609 | return; | 3598 | return; |
| 3610 | } | 3599 | } |
| 3611 | 3600 | ||
| @@ -4143,7 +4132,7 @@ kbd_buffer_get_event (KBOARD **kbp, | |||
| 4143 | *used_mouse_menu = 1; | 4132 | *used_mouse_menu = 1; |
| 4144 | #endif | 4133 | #endif |
| 4145 | #ifdef HAVE_NS | 4134 | #ifdef HAVE_NS |
| 4146 | /* certain system events are non-key events */ | 4135 | /* Certain system events are non-key events. */ |
| 4147 | if (used_mouse_menu | 4136 | if (used_mouse_menu |
| 4148 | && event->kind == NS_NONKEY_EVENT) | 4137 | && event->kind == NS_NONKEY_EVENT) |
| 4149 | *used_mouse_menu = 1; | 4138 | *used_mouse_menu = 1; |
| @@ -4171,7 +4160,7 @@ kbd_buffer_get_event (KBOARD **kbp, | |||
| 4171 | so x remains nil. */ | 4160 | so x remains nil. */ |
| 4172 | x = Qnil; | 4161 | x = Qnil; |
| 4173 | 4162 | ||
| 4174 | /* XXX Can f or mouse_position_hook be NULL here? */ | 4163 | /* XXX Can f or mouse_position_hook be NULL here? */ |
| 4175 | if (f && FRAME_TERMINAL (f)->mouse_position_hook) | 4164 | if (f && FRAME_TERMINAL (f)->mouse_position_hook) |
| 4176 | (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, 0, &bar_window, | 4165 | (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, 0, &bar_window, |
| 4177 | &part, &x, &y, &t); | 4166 | &part, &x, &y, &t); |
| @@ -10469,7 +10458,7 @@ clear_input_pending (void) | |||
| 10469 | int | 10458 | int |
| 10470 | requeued_events_pending_p (void) | 10459 | requeued_events_pending_p (void) |
| 10471 | { | 10460 | { |
| 10472 | return (!NILP (Vunread_command_events) || unread_command_char != -1); | 10461 | return (!NILP (Vunread_command_events)); |
| 10473 | } | 10462 | } |
| 10474 | 10463 | ||
| 10475 | 10464 | ||
| @@ -10479,7 +10468,7 @@ Actually, the value is nil only if we can be sure that no input is available; | |||
| 10479 | if there is a doubt, the value is t. */) | 10468 | if there is a doubt, the value is t. */) |
| 10480 | (void) | 10469 | (void) |
| 10481 | { | 10470 | { |
| 10482 | if (!NILP (Vunread_command_events) || unread_command_char != -1 | 10471 | if (!NILP (Vunread_command_events) |
| 10483 | || !NILP (Vunread_post_input_method_events) | 10472 | || !NILP (Vunread_post_input_method_events) |
| 10484 | || !NILP (Vunread_input_method_events)) | 10473 | || !NILP (Vunread_input_method_events)) |
| 10485 | return (Qt); | 10474 | return (Qt); |
| @@ -10667,7 +10656,6 @@ Also end any kbd macro being defined. */) | |||
| 10667 | update_mode_lines++; | 10656 | update_mode_lines++; |
| 10668 | 10657 | ||
| 10669 | Vunread_command_events = Qnil; | 10658 | Vunread_command_events = Qnil; |
| 10670 | unread_command_char = -1; | ||
| 10671 | 10659 | ||
| 10672 | discard_tty_input (); | 10660 | discard_tty_input (); |
| 10673 | 10661 | ||
| @@ -11007,7 +10995,6 @@ quit_throw_to_read_char (int from_signal) | |||
| 11007 | input_pending = 0; | 10995 | input_pending = 0; |
| 11008 | 10996 | ||
| 11009 | Vunread_command_events = Qnil; | 10997 | Vunread_command_events = Qnil; |
| 11010 | unread_command_char = -1; | ||
| 11011 | 10998 | ||
| 11012 | #if 0 /* Currently, sit_for is called from read_char without turning | 10999 | #if 0 /* Currently, sit_for is called from read_char without turning |
| 11013 | off polling. And that can call set_waiting_for_input. | 11000 | off polling. And that can call set_waiting_for_input. |
| @@ -11394,12 +11381,11 @@ delete_kboard (KBOARD *kb) | |||
| 11394 | void | 11381 | void |
| 11395 | init_keyboard (void) | 11382 | init_keyboard (void) |
| 11396 | { | 11383 | { |
| 11397 | /* This is correct before outermost invocation of the editor loop */ | 11384 | /* This is correct before outermost invocation of the editor loop. */ |
| 11398 | command_loop_level = -1; | 11385 | command_loop_level = -1; |
| 11399 | immediate_quit = 0; | 11386 | immediate_quit = 0; |
| 11400 | quit_char = Ctl ('g'); | 11387 | quit_char = Ctl ('g'); |
| 11401 | Vunread_command_events = Qnil; | 11388 | Vunread_command_events = Qnil; |
| 11402 | unread_command_char = -1; | ||
| 11403 | timer_idleness_start_time = invalid_emacs_time (); | 11389 | timer_idleness_start_time = invalid_emacs_time (); |
| 11404 | total_keys = 0; | 11390 | total_keys = 0; |
| 11405 | recent_keys_index = 0; | 11391 | recent_keys_index = 0; |
| @@ -11736,9 +11722,6 @@ as they will already have been added once as they were read for the first time. | |||
| 11736 | An element of the form (t . EVENT) forces EVENT to be added to that list. */); | 11722 | An element of the form (t . EVENT) forces EVENT to be added to that list. */); |
| 11737 | Vunread_command_events = Qnil; | 11723 | Vunread_command_events = Qnil; |
| 11738 | 11724 | ||
| 11739 | DEFVAR_INT ("unread-command-char", unread_command_char, | ||
| 11740 | doc: /* If not -1, an object to be read as next command input event. */); | ||
| 11741 | |||
| 11742 | DEFVAR_LISP ("unread-post-input-method-events", Vunread_post_input_method_events, | 11725 | DEFVAR_LISP ("unread-post-input-method-events", Vunread_post_input_method_events, |
| 11743 | doc: /* List of events to be processed as input by input methods. | 11726 | doc: /* List of events to be processed as input by input methods. |
| 11744 | These events are processed before `unread-command-events' | 11727 | These events are processed before `unread-command-events' |
diff --git a/src/lisp.h b/src/lisp.h index 0163a9bcdbc..41fa274a562 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -2006,7 +2006,10 @@ extern ptrdiff_t specpdl_size; | |||
| 2006 | 2006 | ||
| 2007 | #define SPECPDL_INDEX() (specpdl_ptr - specpdl) | 2007 | #define SPECPDL_INDEX() (specpdl_ptr - specpdl) |
| 2008 | 2008 | ||
| 2009 | /* Everything needed to describe an active condition case. */ | 2009 | /* Everything needed to describe an active condition case. |
| 2010 | |||
| 2011 | Members are volatile if their values need to survive _longjmp when | ||
| 2012 | a 'struct handler' is a local variable. */ | ||
| 2010 | struct handler | 2013 | struct handler |
| 2011 | { | 2014 | { |
| 2012 | /* The handler clauses and variable from the condition-case form. */ | 2015 | /* The handler clauses and variable from the condition-case form. */ |
| @@ -2017,10 +2020,12 @@ struct handler | |||
| 2017 | error: handle all conditions, and errors can run the debugger | 2020 | error: handle all conditions, and errors can run the debugger |
| 2018 | or display a backtrace. */ | 2021 | or display a backtrace. */ |
| 2019 | Lisp_Object handler; | 2022 | Lisp_Object handler; |
| 2020 | Lisp_Object var; | 2023 | |
| 2024 | Lisp_Object volatile var; | ||
| 2025 | |||
| 2021 | /* Fsignal stores here the condition-case clause that applies, | 2026 | /* Fsignal stores here the condition-case clause that applies, |
| 2022 | and Fcondition_case thus knows which clause to run. */ | 2027 | and Fcondition_case thus knows which clause to run. */ |
| 2023 | Lisp_Object chosen_clause; | 2028 | Lisp_Object volatile chosen_clause; |
| 2024 | 2029 | ||
| 2025 | /* Used to effect the longjump out to the handler. */ | 2030 | /* Used to effect the longjump out to the handler. */ |
| 2026 | struct catchtag *tag; | 2031 | struct catchtag *tag; |
| @@ -2046,19 +2051,21 @@ struct handler | |||
| 2046 | of the catch form. | 2051 | of the catch form. |
| 2047 | 2052 | ||
| 2048 | All the other members are concerned with restoring the interpreter | 2053 | All the other members are concerned with restoring the interpreter |
| 2049 | state. */ | 2054 | state. |
| 2050 | 2055 | ||
| 2056 | Members are volatile if their values need to survive _longjmp when | ||
| 2057 | a 'struct catchtag' is a local variable. */ | ||
| 2051 | struct catchtag | 2058 | struct catchtag |
| 2052 | { | 2059 | { |
| 2053 | Lisp_Object tag; | 2060 | Lisp_Object tag; |
| 2054 | Lisp_Object val; | 2061 | Lisp_Object volatile val; |
| 2055 | struct catchtag *next; | 2062 | struct catchtag *volatile next; |
| 2056 | struct gcpro *gcpro; | 2063 | struct gcpro *gcpro; |
| 2057 | jmp_buf jmp; | 2064 | jmp_buf jmp; |
| 2058 | struct backtrace *backlist; | 2065 | struct backtrace *backlist; |
| 2059 | struct handler *handlerlist; | 2066 | struct handler *handlerlist; |
| 2060 | EMACS_INT lisp_eval_depth; | 2067 | EMACS_INT lisp_eval_depth; |
| 2061 | ptrdiff_t pdlcount; | 2068 | ptrdiff_t volatile pdlcount; |
| 2062 | int poll_suppress_count; | 2069 | int poll_suppress_count; |
| 2063 | int interrupt_input_blocked; | 2070 | int interrupt_input_blocked; |
| 2064 | struct byte_stack *byte_stack; | 2071 | struct byte_stack *byte_stack; |
diff --git a/src/nsterm.h b/src/nsterm.h index b1836692b2c..f3adab883a1 100644 --- a/src/nsterm.h +++ b/src/nsterm.h | |||
| @@ -103,7 +103,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 103 | - (void) setWindowClosing: (BOOL)closing; | 103 | - (void) setWindowClosing: (BOOL)closing; |
| 104 | - (EmacsToolbar *) toolbar; | 104 | - (EmacsToolbar *) toolbar; |
| 105 | - (void) deleteWorkingText; | 105 | - (void) deleteWorkingText; |
| 106 | - (void) updateFrameSize; | 106 | - (void) updateFrameSize: (BOOL) delay; |
| 107 | 107 | ||
| 108 | #ifdef NS_IMPL_GNUSTEP | 108 | #ifdef NS_IMPL_GNUSTEP |
| 109 | /* Not declared, but useful. */ | 109 | /* Not declared, but useful. */ |
diff --git a/src/nsterm.m b/src/nsterm.m index 798c9758376..f9611fd1210 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -3727,7 +3727,7 @@ ns_judge_scroll_bars (struct frame *f) | |||
| 3727 | } | 3727 | } |
| 3728 | 3728 | ||
| 3729 | if (removed) | 3729 | if (removed) |
| 3730 | [eview updateFrameSize]; | 3730 | [eview updateFrameSize: NO]; |
| 3731 | } | 3731 | } |
| 3732 | 3732 | ||
| 3733 | 3733 | ||
| @@ -5362,7 +5362,7 @@ not_in_argv (NSString *arg) | |||
| 5362 | return NO; | 5362 | return NO; |
| 5363 | } | 5363 | } |
| 5364 | 5364 | ||
| 5365 | - (void) updateFrameSize | 5365 | - (void) updateFrameSize: (BOOL) delay; |
| 5366 | { | 5366 | { |
| 5367 | NSWindow *window = [self window]; | 5367 | NSWindow *window = [self window]; |
| 5368 | NSRect wr = [window frame]; | 5368 | NSRect wr = [window frame]; |
| @@ -5400,7 +5400,7 @@ not_in_argv (NSString *arg) | |||
| 5400 | NSView *view = FRAME_NS_VIEW (emacsframe); | 5400 | NSView *view = FRAME_NS_VIEW (emacsframe); |
| 5401 | FRAME_PIXEL_WIDTH (emacsframe) = neww; | 5401 | FRAME_PIXEL_WIDTH (emacsframe) = neww; |
| 5402 | FRAME_PIXEL_HEIGHT (emacsframe) = newh; | 5402 | FRAME_PIXEL_HEIGHT (emacsframe) = newh; |
| 5403 | change_frame_size (emacsframe, rows, cols, 0, 0, 1); | 5403 | change_frame_size (emacsframe, rows, cols, 0, delay, 0); |
| 5404 | SET_FRAME_GARBAGED (emacsframe); | 5404 | SET_FRAME_GARBAGED (emacsframe); |
| 5405 | cancel_mouse_face (emacsframe); | 5405 | cancel_mouse_face (emacsframe); |
| 5406 | [view setFrame: NSMakeRect (0, 0, neww, newh)]; | 5406 | [view setFrame: NSMakeRect (0, 0, neww, newh)]; |
| @@ -5503,7 +5503,7 @@ not_in_argv (NSString *arg) | |||
| 5503 | x_set_window_size (emacsframe, 0, cols, rows); | 5503 | x_set_window_size (emacsframe, 0, cols, rows); |
| 5504 | else | 5504 | else |
| 5505 | { | 5505 | { |
| 5506 | [self updateFrameSize]; | 5506 | [self updateFrameSize: YES]; |
| 5507 | } | 5507 | } |
| 5508 | } | 5508 | } |
| 5509 | #endif | 5509 | #endif |
diff --git a/src/process.c b/src/process.c index 0ae68567d6b..f80b5e80c76 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -6367,9 +6367,8 @@ process has been transmitted to the serial port. */) | |||
| 6367 | if (!proc_encode_coding_system[new_outfd]) | 6367 | if (!proc_encode_coding_system[new_outfd]) |
| 6368 | proc_encode_coding_system[new_outfd] | 6368 | proc_encode_coding_system[new_outfd] |
| 6369 | = xmalloc (sizeof (struct coding_system)); | 6369 | = xmalloc (sizeof (struct coding_system)); |
| 6370 | memcpy (proc_encode_coding_system[new_outfd], | 6370 | *proc_encode_coding_system[new_outfd] |
| 6371 | proc_encode_coding_system[old_outfd], | 6371 | = *proc_encode_coding_system[old_outfd]; |
| 6372 | sizeof (struct coding_system)); | ||
| 6373 | memset (proc_encode_coding_system[old_outfd], 0, | 6372 | memset (proc_encode_coding_system[old_outfd], 0, |
| 6374 | sizeof (struct coding_system)); | 6373 | sizeof (struct coding_system)); |
| 6375 | 6374 | ||
diff --git a/src/w32proc.c b/src/w32proc.c index b9239cbb99a..74427e76a4f 100644 --- a/src/w32proc.c +++ b/src/w32proc.c | |||
| @@ -1429,6 +1429,9 @@ sys_kill (int pid, int sig) | |||
| 1429 | int need_to_free = 0; | 1429 | int need_to_free = 0; |
| 1430 | int rc = 0; | 1430 | int rc = 0; |
| 1431 | 1431 | ||
| 1432 | if (pid == getpid () && sig == SIGABRT) | ||
| 1433 | emacs_abort (); | ||
| 1434 | |||
| 1432 | /* Only handle signals that will result in the process dying */ | 1435 | /* Only handle signals that will result in the process dying */ |
| 1433 | if (sig != SIGINT && sig != SIGKILL && sig != SIGQUIT && sig != SIGHUP) | 1436 | if (sig != SIGINT && sig != SIGKILL && sig != SIGQUIT && sig != SIGHUP) |
| 1434 | { | 1437 | { |
diff --git a/src/window.c b/src/window.c index 87429b51448..cf296a707e3 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -177,11 +177,6 @@ wset_new_total (struct window *w, Lisp_Object val) | |||
| 177 | w->new_total = val; | 177 | w->new_total = val; |
| 178 | } | 178 | } |
| 179 | static inline void | 179 | static inline void |
| 180 | wset_next_buffers (struct window *w, Lisp_Object val) | ||
| 181 | { | ||
| 182 | w->next_buffers = val; | ||
| 183 | } | ||
| 184 | static inline void | ||
| 185 | wset_normal_cols (struct window *w, Lisp_Object val) | 180 | wset_normal_cols (struct window *w, Lisp_Object val) |
| 186 | { | 181 | { |
| 187 | w->normal_cols = val; | 182 | w->normal_cols = val; |
| @@ -202,11 +197,6 @@ wset_pointm (struct window *w, Lisp_Object val) | |||
| 202 | w->pointm = val; | 197 | w->pointm = val; |
| 203 | } | 198 | } |
| 204 | static inline void | 199 | static inline void |
| 205 | wset_prev_buffers (struct window *w, Lisp_Object val) | ||
| 206 | { | ||
| 207 | w->prev_buffers = val; | ||
| 208 | } | ||
| 209 | static inline void | ||
| 210 | wset_right_fringe_width (struct window *w, Lisp_Object val) | 200 | wset_right_fringe_width (struct window *w, Lisp_Object val) |
| 211 | { | 201 | { |
| 212 | w->right_fringe_width = val; | 202 | w->right_fringe_width = val; |
diff --git a/src/window.h b/src/window.h index a70bc55bac5..62ae43a999d 100644 --- a/src/window.h +++ b/src/window.h | |||
| @@ -414,7 +414,16 @@ wset_window_end_vpos (struct window *w, Lisp_Object val) | |||
| 414 | { | 414 | { |
| 415 | w->window_end_vpos = val; | 415 | w->window_end_vpos = val; |
| 416 | } | 416 | } |
| 417 | 417 | WINDOW_INLINE void | |
| 418 | wset_prev_buffers (struct window *w, Lisp_Object val) | ||
| 419 | { | ||
| 420 | w->prev_buffers = val; | ||
| 421 | } | ||
| 422 | WINDOW_INLINE void | ||
| 423 | wset_next_buffers (struct window *w, Lisp_Object val) | ||
| 424 | { | ||
| 425 | w->next_buffers = val; | ||
| 426 | } | ||
| 418 | 427 | ||
| 419 | /* 1 if W is a minibuffer window. */ | 428 | /* 1 if W is a minibuffer window. */ |
| 420 | 429 | ||
diff --git a/src/xdisp.c b/src/xdisp.c index df402cd106e..3536e04fe8d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -366,7 +366,6 @@ static Lisp_Object Qslice; | |||
| 366 | Lisp_Object Qcenter; | 366 | Lisp_Object Qcenter; |
| 367 | static Lisp_Object Qmargin, Qpointer; | 367 | static Lisp_Object Qmargin, Qpointer; |
| 368 | static Lisp_Object Qline_height; | 368 | static Lisp_Object Qline_height; |
| 369 | Lisp_Object Qinhibit_debug_on_message; | ||
| 370 | 369 | ||
| 371 | /* These setters are used only in this file, so they can be private. */ | 370 | /* These setters are used only in this file, so they can be private. */ |
| 372 | static inline void | 371 | static inline void |
| @@ -10644,8 +10643,6 @@ static void | |||
| 10644 | set_message (const char *s, Lisp_Object string, | 10643 | set_message (const char *s, Lisp_Object string, |
| 10645 | ptrdiff_t nbytes, int multibyte_p) | 10644 | ptrdiff_t nbytes, int multibyte_p) |
| 10646 | { | 10645 | { |
| 10647 | ptrdiff_t count = SPECPDL_INDEX (); | ||
| 10648 | |||
| 10649 | message_enable_multibyte | 10646 | message_enable_multibyte |
| 10650 | = ((s && multibyte_p) | 10647 | = ((s && multibyte_p) |
| 10651 | || (STRINGP (string) && STRING_MULTIBYTE (string))); | 10648 | || (STRINGP (string) && STRING_MULTIBYTE (string))); |
| @@ -10655,14 +10652,9 @@ set_message (const char *s, Lisp_Object string, | |||
| 10655 | message_buf_print = 0; | 10652 | message_buf_print = 0; |
| 10656 | help_echo_showing_p = 0; | 10653 | help_echo_showing_p = 0; |
| 10657 | 10654 | ||
| 10658 | if (NILP (Vinhibit_debug_on_message) && STRINGP (Vdebug_on_message) | 10655 | if (STRINGP (Vdebug_on_message) |
| 10659 | && fast_string_match (Vdebug_on_message, string) >= 0) | 10656 | && fast_string_match (Vdebug_on_message, string) >= 0) |
| 10660 | { | 10657 | call_debugger (list2 (Qerror, string)); |
| 10661 | specbind (Qinhibit_debug_on_message, Qt); | ||
| 10662 | call_debugger (list2 (Qerror, string)); | ||
| 10663 | } | ||
| 10664 | |||
| 10665 | unbind_to (count, Qnil); | ||
| 10666 | } | 10658 | } |
| 10667 | 10659 | ||
| 10668 | 10660 | ||
| @@ -12854,7 +12846,7 @@ overlay_arrow_at_row (struct it *it, struct glyph_row *row) | |||
| 12854 | return make_number (fringe_bitmap); | 12846 | return make_number (fringe_bitmap); |
| 12855 | } | 12847 | } |
| 12856 | #endif | 12848 | #endif |
| 12857 | return make_number (-1); /* Use default arrow bitmap */ | 12849 | return make_number (-1); /* Use default arrow bitmap. */ |
| 12858 | } | 12850 | } |
| 12859 | return overlay_arrow_string_or_property (var); | 12851 | return overlay_arrow_string_or_property (var); |
| 12860 | } | 12852 | } |
| @@ -29566,11 +29558,6 @@ Its value should be an ASCII acronym string, `hex-code', `empty-box', or | |||
| 29566 | DEFVAR_LISP ("debug-on-message", Vdebug_on_message, | 29558 | DEFVAR_LISP ("debug-on-message", Vdebug_on_message, |
| 29567 | doc: /* If non-nil, debug if a message matching this regexp is displayed. */); | 29559 | doc: /* If non-nil, debug if a message matching this regexp is displayed. */); |
| 29568 | Vdebug_on_message = Qnil; | 29560 | Vdebug_on_message = Qnil; |
| 29569 | |||
| 29570 | DEFVAR_LISP ("inhibit-debug-on-message", Vinhibit_debug_on_message, | ||
| 29571 | doc: /* If non-nil, inhibit `debug-on-message' from entering the debugger. */); | ||
| 29572 | Vinhibit_debug_on_message = Qnil; | ||
| 29573 | DEFSYM(Qinhibit_debug_on_message, "inhibit-debug-on-message"); | ||
| 29574 | } | 29561 | } |
| 29575 | 29562 | ||
| 29576 | 29563 | ||
diff --git a/src/xfaces.c b/src/xfaces.c index aee5158036f..c113c1a37b7 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -661,7 +661,7 @@ x_create_gc (struct frame *f, | |||
| 661 | XGCValues *xgcv) | 661 | XGCValues *xgcv) |
| 662 | { | 662 | { |
| 663 | GC gc = xmalloc (sizeof *gc); | 663 | GC gc = xmalloc (sizeof *gc); |
| 664 | memcpy (gc, xgcv, sizeof (XGCValues)); | 664 | *gc = *xgcv; |
| 665 | return gc; | 665 | return gc; |
| 666 | } | 666 | } |
| 667 | 667 | ||
diff --git a/src/xgselect.c b/src/xgselect.c index 0c00d815820..5f4c7edfb79 100644 --- a/src/xgselect.c +++ b/src/xgselect.c | |||
| @@ -49,9 +49,9 @@ xg_select (int fds_lim, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | |||
| 49 | && g_main_context_pending (context = g_main_context_default ()))) | 49 | && g_main_context_pending (context = g_main_context_default ()))) |
| 50 | return pselect (fds_lim, rfds, wfds, efds, timeout, sigmask); | 50 | return pselect (fds_lim, rfds, wfds, efds, timeout, sigmask); |
| 51 | 51 | ||
| 52 | if (rfds) memcpy (&all_rfds, rfds, sizeof (all_rfds)); | 52 | if (rfds) all_rfds = *rfds; |
| 53 | else FD_ZERO (&all_rfds); | 53 | else FD_ZERO (&all_rfds); |
| 54 | if (wfds) memcpy (&all_wfds, wfds, sizeof (all_rfds)); | 54 | if (wfds) all_wfds = *wfds; |
| 55 | else FD_ZERO (&all_wfds); | 55 | else FD_ZERO (&all_wfds); |
| 56 | 56 | ||
| 57 | n_gfds = g_main_context_query (context, G_PRIORITY_LOW, &tmo_in_millisec, | 57 | n_gfds = g_main_context_query (context, G_PRIORITY_LOW, &tmo_in_millisec, |