aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2014-07-02 23:00:53 -0700
committerGlenn Morris2014-07-02 23:00:53 -0700
commit2d3c9015c70fd05ac1bec42cc59d57c3fb6b82b5 (patch)
tree572bc2de8c74eee49d8c49eb84a618b55fa3abf7
parente993f8d5d39431545ac0071655071a740534917b (diff)
parentcbb6a7aeff3b901645ee8e4f2c4abeceafdfc073 (diff)
downloademacs-2d3c9015c70fd05ac1bec42cc59d57c3fb6b82b5.tar.gz
emacs-2d3c9015c70fd05ac1bec42cc59d57c3fb6b82b5.zip
Merge from emacs-24; up to 2014-06-15T04:52:34Z!eli@barzilay.org
-rw-r--r--doc/emacs/ChangeLog6
-rw-r--r--doc/emacs/help.texi3
-rw-r--r--doc/emacs/trouble.texi2
-rw-r--r--doc/lispintro/ChangeLog5
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi8
-rw-r--r--doc/lispref/ChangeLog5
-rw-r--r--doc/lispref/help.texi2
-rw-r--r--doc/misc/ChangeLog7
-rw-r--r--doc/misc/idlwave.texi13
-rw-r--r--doc/misc/info.texi6
-rw-r--r--doc/misc/mh-e.texi22
-rw-r--r--etc/ChangeLog5
-rw-r--r--etc/refcards/calccard.tex2
-rw-r--r--lisp/ChangeLog53
-rw-r--r--lisp/cus-edit.el2
-rw-r--r--lisp/desktop.el9
-rw-r--r--lisp/ehelp.el2
-rw-r--r--lisp/emacs-lisp/pp.el4
-rw-r--r--lisp/emulation/viper.el2
-rw-r--r--lisp/finder.el2
-rw-r--r--lisp/help.el10
-rw-r--r--lisp/mouse.el4
-rw-r--r--lisp/progmodes/f90.el4
-rw-r--r--lisp/progmodes/idlw-complete-structtag.el4
-rw-r--r--lisp/progmodes/idlw-help.el2
-rw-r--r--lisp/progmodes/idlw-shell.el6
-rw-r--r--lisp/progmodes/idlw-toolbar.el2
-rw-r--r--lisp/progmodes/idlwave.el9
-rw-r--r--lisp/progmodes/pascal.el4
-rw-r--r--lisp/progmodes/python.el28
-rw-r--r--lisp/ps-def.el2
-rw-r--r--lisp/vc/ediff-mult.el4
-rw-r--r--lisp/vc/ediff-ptch.el2
-rw-r--r--lisp/vc/ediff.el2
-rw-r--r--lisp/vc/log-edit.el10
-rw-r--r--lisp/vc/vc-git.el4
-rw-r--r--src/ChangeLog25
-rw-r--r--src/dispextern.h2
-rw-r--r--src/dispnew.c52
-rw-r--r--src/frame.c16
-rw-r--r--src/menu.c5
-rw-r--r--src/window.h6
-rw-r--r--src/xdisp.c4
-rw-r--r--src/xfaces.c16
-rw-r--r--test/ChangeLog6
-rw-r--r--test/automated/python-tests.el114
46 files changed, 373 insertions, 130 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index a85b56c3af7..76d692ae9a6 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,9 @@
12014-07-03 Glenn Morris <rgm@gnu.org>
2
3 * help.texi (Misc Help):
4 * trouble.texi (Checklist): "Online" help doesn't mean what it
5 used to any more.
6
12014-06-23 Glenn Morris <rgm@gnu.org> 72014-06-23 Glenn Morris <rgm@gnu.org>
2 8
3 * Makefile.in (%.texi): Disable implicit rules. 9 * Makefile.in (%.texi): Disable implicit rules.
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index f47600d97ec..10b5fcfb095 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -490,8 +490,7 @@ currently in use. @xref{Coding Systems}.
490@kindex C-h i 490@kindex C-h i
491@findex info 491@findex info
492@cindex Info 492@cindex Info
493@cindex manuals, on-line 493@cindex manuals, included
494@cindex on-line manuals
495 @kbd{C-h i} (@code{info}) runs the Info program, which browses 494 @kbd{C-h i} (@code{info}) runs the Info program, which browses
496structured documentation files. The entire Emacs manual is available 495structured documentation files. The entire Emacs manual is available
497within Info, along with many other manuals for the GNU system. Type 496within Info, along with many other manuals for the GNU system. Type
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index f0cbbcc5721..09260a1e5a9 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -847,7 +847,7 @@ conclusion from our observations.
847@item 847@item
848If the bug is that the Emacs Manual or the Emacs Lisp Reference Manual 848If the bug is that the Emacs Manual or the Emacs Lisp Reference Manual
849fails to describe the actual behavior of Emacs, or that the text is 849fails to describe the actual behavior of Emacs, or that the text is
850confusing, copy in the text from the online manual which you think is 850confusing, copy in the text from the manual which you think is
851at fault. If the section is small, just the section name is enough. 851at fault. If the section is small, just the section name is enough.
852 852
853@item 853@item
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog
index 13bc65eef4a..1ac7258e85a 100644
--- a/doc/lispintro/ChangeLog
+++ b/doc/lispintro/ChangeLog
@@ -1,3 +1,8 @@
12014-07-03 Glenn Morris <rgm@gnu.org>
2
3 * emacs-lisp-intro.texi (Note for Novices, Finding More, Conclusion):
4 "Online" help doesn't mean what it used to any more.
5
12014-06-23 Glenn Morris <rgm@gnu.org> 62014-06-23 Glenn Morris <rgm@gnu.org>
2 7
3 * Makefile.in (%.texi): Disable implicit rules. 8 * Makefile.in (%.texi): Disable implicit rules.
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index 6001e3d0084..7ff91758670 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -903,7 +903,7 @@ file, @file{cl.el}, that adds many Common Lisp features to Emacs Lisp.)
903If you don't know GNU Emacs, you can still read this document 903If you don't know GNU Emacs, you can still read this document
904profitably. However, I recommend you learn Emacs, if only to learn to 904profitably. However, I recommend you learn Emacs, if only to learn to
905move around your computer screen. You can teach yourself how to use 905move around your computer screen. You can teach yourself how to use
906Emacs with the on-line tutorial. To use it, type @kbd{C-h t}. (This 906Emacs with the built-in tutorial. To use it, type @kbd{C-h t}. (This
907means you press and release the @key{CTRL} key and the @kbd{h} at the 907means you press and release the @key{CTRL} key and the @kbd{h} at the
908same time, and then press and release @kbd{t}.) 908same time, and then press and release @kbd{t}.)
909 909
@@ -4657,7 +4657,7 @@ specialized library, such as a law library or an engineering library,
4657rather than a general library. Each library, or file, contains 4657rather than a general library. Each library, or file, contains
4658functions that relate to a particular topic or activity, such as 4658functions that relate to a particular topic or activity, such as
4659@file{abbrev.el} for handling abbreviations and other typing 4659@file{abbrev.el} for handling abbreviations and other typing
4660shortcuts, and @file{help.el} for on-line help. (Sometimes several 4660shortcuts, and @file{help.el} for help. (Sometimes several
4661libraries provide code for a single activity, as the various 4661libraries provide code for a single activity, as the various
4662@file{rmail@dots{}} files provide code for reading electronic mail.) 4662@file{rmail@dots{}} files provide code for reading electronic mail.)
4663In @cite{The GNU Emacs Manual}, you will see sentences such as ``The 4663In @cite{The GNU Emacs Manual}, you will see sentences such as ``The
@@ -18685,9 +18685,9 @@ easy-to-read description of Emacs Lisp. It is written not only for
18685experts, but for people who know what you know. (The @cite{Reference 18685experts, but for people who know what you know. (The @cite{Reference
18686Manual} comes with the standard GNU Emacs distribution. Like this 18686Manual} comes with the standard GNU Emacs distribution. Like this
18687introduction, it comes as a Texinfo source file, so you can read it 18687introduction, it comes as a Texinfo source file, so you can read it
18688on-line and as a typeset, printed book.) 18688on your computer and as a typeset, printed book.)
18689 18689
18690Go to the other on-line help that is part of GNU Emacs: the on-line 18690Go to the other built-in help that is part of GNU Emacs: the built-in
18691documentation for all functions and variables, and @code{find-tag}, 18691documentation for all functions and variables, and @code{find-tag},
18692the program that takes you to sources. 18692the program that takes you to sources.
18693 18693
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 93372203009..cc372b006ed 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,8 @@
12014-07-03 Glenn Morris <rgm@gnu.org>
2
3 * help.texi (Help Functions): "Online" help doesn't mean what it
4 used to any more.
5
12014-07-02 Stefan Monnier <monnier@iro.umontreal.ca> 62014-07-02 Stefan Monnier <monnier@iro.umontreal.ca>
2 7
3 * keymaps.texi (Key Lookup): Remove mention of indirect entries. 8 * keymaps.texi (Key Lookup): Remove mention of indirect entries.
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 9a763b60938..20fb0e651f9 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -508,7 +508,7 @@ non-@code{nil}, the return value is always a vector.
508@node Help Functions 508@node Help Functions
509@section Help Functions 509@section Help Functions
510 510
511 Emacs provides a variety of on-line help functions, all accessible to 511 Emacs provides a variety of built-in help functions, all accessible to
512the user as subcommands of the prefix @kbd{C-h}. For more information 512the user as subcommands of the prefix @kbd{C-h}. For more information
513about them, see @ref{Help, , Help, emacs, The GNU Emacs Manual}. Here 513about them, see @ref{Help, , Help, emacs, The GNU Emacs Manual}. Here
514we describe some program-level interfaces to the same information. 514we describe some program-level interfaces to the same information.
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index d7b030fb1aa..6f448d22ff6 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,10 @@
12014-07-03 Glenn Morris <rgm@gnu.org>
2
3 * info.texi, mh-e.texi: "Online help" doesn't mean what it
4 used to any more.
5
6 * idlwave.texi (Introduction): Comment out dead http screenshot links.
7
12014-06-24 Leo Liu <sdl.web@gmail.com> 82014-06-24 Leo Liu <sdl.web@gmail.com>
2 9
3 * dired-x.texi (Omitting Files in Dired, Omitting Variables): 10 * dired-x.texi (Omitting Files in Dired, Omitting Variables):
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index 87ddcd4a4ee..5c1c8ba350f 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -239,24 +239,27 @@ Examining variables and expressions with a mouse click.
239And much, much more... 239And much, much more...
240@end itemize 240@end itemize
241 241
242@c Dead links, 2014/06.
243@ignore
242@ifnottex 244@ifnottex
243@cindex Screenshots 245@cindex Screenshots
244Here are a number of screenshots showing IDLWAVE in action: 246Here are a number of screenshots showing IDLWAVE in action:
245 247
246@itemize @bullet 248@itemize @bullet
247@item 249@item
248@uref{http://idlwave.org/screenshots/emacs_21_nav.gif,An IDLWAVE buffer} 250@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_nav.gif,An IDLWAVE buffer}
249@item 251@item
250@uref{http://idlwave.org/screenshots/emacs_21_keys.gif,A keyword being completed} 252@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_keys.gif,A keyword being completed}
251@item 253@item
252@uref{http://idlwave.org/screenshots/emacs_21_help.gif,Online help text.} 254@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_help.gif,Online help text.}
253@item 255@item
254@uref{http://idlwave.org/screenshots/emacs_21_ri.gif,Routine information displayed} 256@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_ri.gif,Routine information displayed}
255@item 257@item
256@uref{http://idlwave.org/screenshots/emacs_21_bp.gif,Debugging code 258@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_bp.gif,Debugging code
257stopped at a breakpoint} 259stopped at a breakpoint}
258@end itemize 260@end itemize
259@end ifnottex 261@end ifnottex
262@end ignore
260 263
261IDLWAVE is the distant successor to the @file{idl.el} and 264IDLWAVE is the distant successor to the @file{idl.el} and
262@file{idl-shell.el} files written by Chris Chase. The modes and files 265@file{idl-shell.el} files written by Chris Chase. The modes and files
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index 87e7794c61e..a3a14a35b80 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -12,7 +12,7 @@
12@comment %**end of header 12@comment %**end of header
13 13
14@copying 14@copying
15This file describes how to use Info, the on-line, menu-driven GNU 15This file describes how to use Info, the menu-driven GNU
16documentation system. 16documentation system.
17 17
18Copyright @copyright{} 1989, 1992, 1996--2014 Free Software Foundation, Inc. 18Copyright @copyright{} 1989, 1992, 1996--2014 Free Software Foundation, Inc.
@@ -51,7 +51,7 @@ modify this GNU manual.''
51@node Top 51@node Top
52@top Info: An Introduction 52@top Info: An Introduction
53 53
54The GNU Project distributes most of its on-line manuals in the 54The GNU Project distributes most of its manuals in the
55@dfn{Info format}, which you read using an @dfn{Info reader}. You are 55@dfn{Info format}, which you read using an @dfn{Info reader}. You are
56probably using an Info reader to read this now. 56probably using an Info reader to read this now.
57 57
@@ -98,7 +98,7 @@ program on a computer, so that you can try Info commands while reading
98about them. Reading it on paper or with an HTML browser is less 98about them. Reading it on paper or with an HTML browser is less
99effective, since you must take it on faith that the commands described 99effective, since you must take it on faith that the commands described
100really do what the manual says. By all means go through this manual 100really do what the manual says. By all means go through this manual
101now that you have it; but please try going through the on-line version 101now that you have it; but please try going through the Info version
102as well. 102as well.
103 103
104@cindex Info reader, how to invoke 104@cindex Info reader, how to invoke
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index bad2554e60c..6b64a108af5 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -227,7 +227,7 @@ have, see @ref{Getting Started}.
227@kindex C-h t 227@kindex C-h t
228 228
229If you don't already use GNU Emacs but want to learn more, you can 229If you don't already use GNU Emacs but want to learn more, you can
230read an online tutorial by starting GNU Emacs and typing @kbd{C-h t} 230read a built-in tutorial by starting GNU Emacs and typing @kbd{C-h t}
231(@code{help-with-tutorial}). (To learn about this notation, see 231(@code{help-with-tutorial}). (To learn about this notation, see
232@ref{Conventions}.) If you want to take the plunge, consult the 232@ref{Conventions}.) If you want to take the plunge, consult the
233@iftex 233@iftex
@@ -1066,9 +1066,9 @@ This chapter begins the meat of the manual which goes into more detail
1066about every MH-E command and option. 1066about every MH-E command and option.
1067 1067
1068@cindex Emacs, info 1068@cindex Emacs, info
1069@cindex Emacs, online help 1069@cindex Emacs, built-in help
1070@cindex info 1070@cindex info
1071@cindex online help 1071@cindex built-in help
1072@findex describe-mode 1072@findex describe-mode
1073@findex mh-help 1073@findex mh-help
1074@kindex ? 1074@kindex ?
@@ -1083,12 +1083,12 @@ summaries at the beginning of each chapter. In case you have or would
1083like to rebind the keys, the command summaries also list the 1083like to rebind the keys, the command summaries also list the
1084associated Emacs Lisp function. Furthermore, even if you're stranded 1084associated Emacs Lisp function. Furthermore, even if you're stranded
1085on a desert island with a laptop and are without your manuals, you can 1085on a desert island with a laptop and are without your manuals, you can
1086get a summary of all these commands with GNU Emacs online help: use 1086get a summary of all these commands with GNU Emacs built-in help: use
1087@kbd{C-h m} (@code{describe-mode}) for a brief summary of commands, 1087@kbd{C-h m} (@code{describe-mode}) for a brief summary of commands,
1088@kbd{?} (@code{mh-help}) for an even briefer summary@footnote{This 1088@kbd{?} (@code{mh-help}) for an even briefer summary@footnote{This
1089help appears in a buffer called @file{*MH-E Help*} 1089help appears in a buffer called @file{*MH-E Help*}
1090(@pxref{Miscellaneous}).} (@kbd{C-c ?} in MH-Letter mode), or @kbd{C-h 1090(@pxref{Miscellaneous}).} (@kbd{C-c ?} in MH-Letter mode), or @kbd{C-h
1091i} to read this manual via Info. The online help is quite good; try 1091i} to read this manual via Info. The built-in help is quite good; try
1092running @kbd{C-h C-h}. This brings up a list of available help topics, 1092running @kbd{C-h C-h}. This brings up a list of available help topics,
1093one of which displays the documentation for a given key (like @kbd{C-h 1093one of which displays the documentation for a given key (like @kbd{C-h
1094k C-n}). Another useful help feature is to view the manual section 1094k C-n}). Another useful help feature is to view the manual section
@@ -1120,21 +1120,21 @@ exist,
1120@c Yes, some of the stuff in the following sections is redundant, but 1120@c Yes, some of the stuff in the following sections is redundant, but
1121@c TeX barfs if the @ifs are inside the @footnote. 1121@c TeX barfs if the @ifs are inside the @footnote.
1122@iftex 1122@iftex
1123@footnote{The @cite{GNU Emacs Lisp Reference Manual} may be available 1123@footnote{The @cite{GNU Emacs Lisp Reference Manual} should be available
1124online in the Info system by typing @kbd{C-h i m Emacs Lisp 1124via the Info system by typing @kbd{C-h i m Emacs Lisp
1125@key{RET}}. It is also available online at @* 1125@key{RET}}. It is also available online at @*
1126@uref{http://www.gnu.org/software/emacs/manual/elisp.html}.} 1126@uref{http://www.gnu.org/software/emacs/manual/elisp.html}.}
1127@end iftex 1127@end iftex
1128@ifinfo 1128@ifinfo
1129@footnote{@xref{Top, The GNU Emacs Lisp Reference Manual, , elisp, GNU 1129@footnote{@xref{Top, The GNU Emacs Lisp Reference Manual, , elisp, GNU
1130Emacs Lisp Reference Manual}, which may be available online in the 1130Emacs Lisp Reference Manual}, which should be available via the
1131Info system. It is also available online at 1131Info system. It is also available online at
1132@uref{http://www.gnu.org/software/emacs/manual/elisp.html}.} 1132@uref{http://www.gnu.org/software/emacs/manual/elisp.html}.}
1133@end ifinfo 1133@end ifinfo
1134@ifhtml 1134@ifhtml
1135@footnote{The 1135@footnote{The
1136@uref{http://www.gnu.org/software/emacs/manual/elisp.html, 1136@uref{http://www.gnu.org/software/emacs/manual/elisp.html,
1137The GNU Emacs Lisp Reference Manual} may also be available online in 1137The GNU Emacs Lisp Reference Manual} should be available via
1138the Info system by typing @kbd{C-h i m Emacs Lisp @key{RET}}.} 1138the Info system by typing @kbd{C-h i m Emacs Lisp @key{RET}}.}
1139@end ifhtml 1139@end ifhtml
1140and you can look at the code itself for examples. Look in the Emacs 1140and you can look at the code itself for examples. Look in the Emacs
@@ -1142,7 +1142,7 @@ Lisp directory on your system (such as
1142@file{/usr/local/share/emacs/lisp/mh-e}) and find all the @file{mh-*.el} 1142@file{/usr/local/share/emacs/lisp/mh-e}) and find all the @file{mh-*.el}
1143files there. When calling MH-E and other Emacs Lisp functions directly 1143files there. When calling MH-E and other Emacs Lisp functions directly
1144from Emacs Lisp code, you'll need to know the correct arguments. Use 1144from Emacs Lisp code, you'll need to know the correct arguments. Use
1145the online help for this. For example, try @kbd{C-h f 1145the built-in help for this. For example, try @kbd{C-h f
1146mh-execute-commands @key{RET}}. If you write your own functions, 1146mh-execute-commands @key{RET}}. If you write your own functions,
1147please do not prefix your symbols (variables and functions) with 1147please do not prefix your symbols (variables and functions) with
1148@samp{mh-}. This prefix is reserved for the MH-E package. To avoid 1148@samp{mh-}. This prefix is reserved for the MH-E package. To avoid
@@ -6405,7 +6405,7 @@ see the section
6405The Menu Bar} in @cite{The GNU Emacs Manual}. 6405The Menu Bar} in @cite{The GNU Emacs Manual}.
6406@end ifhtml 6406@end ifhtml
6407 6407
6408The Emacs manual describes how to get online help for a particular 6408The Emacs manual describes how to get help for a particular
6409menu item. You can also look up a menu item in the index of this 6409menu item. You can also look up a menu item in the index of this
6410manual in two ways: all of the menu items are listed alphabetically, 6410manual in two ways: all of the menu items are listed alphabetically,
6411and you can also browse all of the items under the index entry 6411and you can also browse all of the items under the index entry
diff --git a/etc/ChangeLog b/etc/ChangeLog
index ae44fc45c3c..5dfb205dce4 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,8 @@
12014-07-03 Glenn Morris <rgm@gnu.org>
2
3 * refcards/calccard.tex (section{Getting Help}):
4 Meaning of "on-line" has changed.
5
12014-06-28 Glenn Morris <rgm@gnu.org> 62014-06-28 Glenn Morris <rgm@gnu.org>
2 7
3 * publicsuffix.txt: Update from source. 8 * publicsuffix.txt: Update from source.
diff --git a/etc/refcards/calccard.tex b/etc/refcards/calccard.tex
index 982382ecd89..03bc37d8856 100644
--- a/etc/refcards/calccard.tex
+++ b/etc/refcards/calccard.tex
@@ -297,7 +297,7 @@ The \kbd{h} prefix key is Calc's analogue of \kbd{C-h} in Emacs.
297\key{describe key briefly}{h c} 297\key{describe key briefly}{h c}
298\key{describe key fully}{h k} 298\key{describe key fully}{h k}
299\key{describe function or command}{h f} 299\key{describe function or command}{h f}
300\key{read on-line manual}{h i{\rm\enskip or\enskip}\calcprefix i} 300\key{read Info manual}{h i{\rm\enskip or\enskip}\calcprefix i}
301\key{read full Calc summary}{h s{\rm\enskip or\enskip}\calcprefix s} 301\key{read full Calc summary}{h s{\rm\enskip or\enskip}\calcprefix s}
302 302
303\section{Error Recovery} 303\section{Error Recovery}
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 107f95f352c..3c71395f8b9 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,56 @@
12014-07-03 Juri Linkov <juri@jurta.org>
2
3 * desktop.el (desktop-save): Rename arg `auto-save' to
4 `only-if-changed'. Doc fix. (Bug#17873)
5
62014-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
7
8 * mouse.el (mouse-yank-primary, mouse-yank-secondary):
9 Use insert-for-yank (bug#17271).
10
112014-07-03 Leo Liu <sdl.web@gmail.com>
12
13 * emacs-lisp/pp.el (pp-eval-expression, pp-eval-last-sexp):
14 Support lexical-binding.
15
162014-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
17
18 * vc/log-edit.el (log-edit-goto-eoh): New function.
19 (log-edit--match-first-line): Use it (bug#17861).
20
212014-07-03 Glenn Morris <rgm@gnu.org>
22
23 * vc/log-edit.el (log-edit-hook): Add missing :version.
24
252014-07-03 Fabián Ezequiel Gallina <fgallina@gnu.org>
26
27 * progmodes/python.el (python-indent-post-self-insert-function):
28 Enhancements to electric indentation behavior inside
29 parens. (Bug#17658)
30
312014-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
32
33 * ps-def.el (ps-generate-postscript-with-faces1): Don't mess with
34 buffer-invisibility-spec (bug#17867).
35
362014-07-03 Andreas Schwab <schwab@linux-m68k.org>
37
38 * vc/vc-git.el (vc-git-checkin): When operating on the whole tree
39 pass "-a".
40
412014-07-03 Glenn Morris <rgm@gnu.org>
42
43 * cus-edit.el (help):
44 * finder.el (finder-known-keywords):
45 * help.el (help-for-help-internal):
46 * vc/ediff-mult.el (ediff-meta-buffer-verbose-message)
47 (ediff-redraw-registry-buffer):
48 * vc/ediff-ptch.el (ediff-patch-file-internal):
49 Doc fixes re "online" help. (Bug#17803)
50
51 * progmodes/idlwave.el (idlwave): Update url-link for custom group.
52 (idlwave-mode): Doc URL update.
53
12014-07-01 Juri Linkov <juri@jurta.org> 542014-07-01 Juri Linkov <juri@jurta.org>
2 55
3 * man.el: Display man pages immediately and use process-filter 56 * man.el: Display man pages immediately and use process-filter
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 212e29069eb..b54898a171c 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -324,7 +324,7 @@
324 :group 'emacs) 324 :group 'emacs)
325 325
326(defgroup help nil 326(defgroup help nil
327 "Support for on-line help systems." 327 "Support for Emacs help systems."
328 :group 'emacs) 328 :group 'emacs)
329 329
330(defgroup multimedia nil 330(defgroup multimedia nil
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 26d288bf9cd..4bb6fba3532 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -942,12 +942,13 @@ Frames with a non-nil `desktop-dont-save' parameter are not saved."
942 :predicate #'desktop--check-dont-save)))) 942 :predicate #'desktop--check-dont-save))))
943 943
944;;;###autoload 944;;;###autoload
945(defun desktop-save (dirname &optional release auto-save) 945(defun desktop-save (dirname &optional release only-if-changed)
946 "Save the desktop in a desktop file. 946 "Save the desktop in a desktop file.
947Parameter DIRNAME specifies where to save the desktop file. 947Parameter DIRNAME specifies where to save the desktop file.
948Optional parameter RELEASE says whether we're done with this desktop. 948Optional parameter RELEASE says whether we're done with this desktop.
949If AUTO-SAVE is non-nil, compare the saved contents to the one last saved, 949If ONLY-IF-CHANGED is non-nil, compare the current desktop information
950and don't save the buffer if they are the same." 950to that in the desktop file, and if the desktop information has not
951changed since it was last saved then do not rewrite the file."
951 (interactive (list 952 (interactive (list
952 ;; Or should we just use (car desktop-path)? 953 ;; Or should we just use (car desktop-path)?
953 (let ((default (if (member "." desktop-path) 954 (let ((default (if (member "." desktop-path)
@@ -1020,7 +1021,7 @@ and don't save the buffer if they are the same."
1020 1021
1021 (setq default-directory desktop-dirname) 1022 (setq default-directory desktop-dirname)
1022 ;; When auto-saving, avoid writing if nothing has changed since the last write. 1023 ;; When auto-saving, avoid writing if nothing has changed since the last write.
1023 (let* ((beg (and auto-save 1024 (let* ((beg (and only-if-changed
1024 (save-excursion 1025 (save-excursion
1025 (goto-char (point-min)) 1026 (goto-char (point-min))
1026 ;; Don't check the header with changing timestamp 1027 ;; Don't check the header with changing timestamp
diff --git a/lisp/ehelp.el b/lisp/ehelp.el
index dd6c6c4cb28..46db552c3f5 100644
--- a/lisp/ehelp.el
+++ b/lisp/ehelp.el
@@ -25,7 +25,7 @@
25;;; Commentary: 25;;; Commentary:
26 26
27;; This package provides a pre-packaged `Electric Help Mode' for 27;; This package provides a pre-packaged `Electric Help Mode' for
28;; browsing on-line help screens. There is one entry point, 28;; browsing Emacs help screens. There is one entry point,
29;; `with-electric-help'; all you have to give it is a no-argument 29;; `with-electric-help'; all you have to give it is a no-argument
30;; function that generates the actual text of the help into the current 30;; function that generates the actual text of the help into the current
31;; buffer. 31;; buffer.
diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el
index 0e4139e1aeb..dd012fab9da 100644
--- a/lisp/emacs-lisp/pp.el
+++ b/lisp/emacs-lisp/pp.el
@@ -129,7 +129,7 @@ Also add the value to the front of the list in the variable `values'."
129 (interactive 129 (interactive
130 (list (read--expression "Eval: "))) 130 (list (read--expression "Eval: ")))
131 (message "Evaluating...") 131 (message "Evaluating...")
132 (setq values (cons (eval expression) values)) 132 (setq values (cons (eval expression lexical-binding) values))
133 (pp-display-expression (car values) "*Pp Eval Output*")) 133 (pp-display-expression (car values) "*Pp Eval Output*"))
134 134
135;;;###autoload 135;;;###autoload
@@ -165,7 +165,7 @@ With argument, pretty-print output into current buffer.
165Ignores leading comment characters." 165Ignores leading comment characters."
166 (interactive "P") 166 (interactive "P")
167 (if arg 167 (if arg
168 (insert (pp-to-string (eval (pp-last-sexp)))) 168 (insert (pp-to-string (eval (pp-last-sexp) lexical-binding)))
169 (pp-eval-expression (pp-last-sexp)))) 169 (pp-eval-expression (pp-last-sexp))))
170 170
171;;;###autoload 171;;;###autoload
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index 650b8acbb81..d1353bdc8fa 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -107,7 +107,7 @@
107;; ---------------- 107;; ----------------
108;; Bug reports and ideas contributed by many users have helped 108;; Bug reports and ideas contributed by many users have helped
109;; improve Viper and the various versions of VIP. 109;; improve Viper and the various versions of VIP.
110;; See the on-line manual for a complete list of contributors. 110;; See the manual for a complete list of contributors.
111;; 111;;
112;; 112;;
113;;; Notes: 113;;; Notes:
diff --git a/lisp/finder.el b/lisp/finder.el
index 092a2ddd8a4..bb5b441e26d 100644
--- a/lisp/finder.el
+++ b/lisp/finder.el
@@ -52,7 +52,7 @@
52 (frames . "Emacs frames and window systems") 52 (frames . "Emacs frames and window systems")
53 (games . "games, jokes and amusements") 53 (games . "games, jokes and amusements")
54 (hardware . "interfacing with system hardware") 54 (hardware . "interfacing with system hardware")
55 (help . "on-line help systems") 55 (help . "Emacs help systems")
56 (hypermedia . "links between text or other media types") 56 (hypermedia . "links between text or other media types")
57 (i18n . "internationalization and character-set support") 57 (i18n . "internationalization and character-set support")
58 (internal . "code for Emacs internals, build process, defaults") 58 (internal . "code for Emacs internals, build process, defaults")
diff --git a/lisp/help.el b/lisp/help.el
index 8ba3d86004b..63a658f391c 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -23,7 +23,7 @@
23 23
24;;; Commentary: 24;;; Commentary:
25 25
26;; This code implements GNU Emacs's on-line help system, the one invoked by 26;; This code implements GNU Emacs's built-in help system, the one invoked by
27;; `M-x help-for-help'. 27;; `M-x help-for-help'.
28 28
29;;; Code: 29;;; Code:
@@ -198,13 +198,13 @@ d PATTERN Show a list of functions, variables, and other items whose
198 documentation matches the PATTERN (a list of words or a regexp). 198 documentation matches the PATTERN (a list of words or a regexp).
199e Go to the *Messages* buffer which logs echo-area messages. 199e Go to the *Messages* buffer which logs echo-area messages.
200f FUNCTION Display documentation for the given function. 200f FUNCTION Display documentation for the given function.
201F COMMAND Show the on-line manual's section that describes the command. 201F COMMAND Show the Emacs manual's section that describes the command.
202g Display information about the GNU project. 202g Display information about the GNU project.
203h Display the HELLO file which illustrates various scripts. 203h Display the HELLO file which illustrates various scripts.
204i Start the Info documentation reader: read on-line manuals. 204i Start the Info documentation reader: read included manuals.
205I METHOD Describe a specific input method, or RET for current. 205I METHOD Describe a specific input method, or RET for current.
206k KEYS Display the full documentation for the key sequence. 206k KEYS Display the full documentation for the key sequence.
207K KEYS Show the on-line manual's section for the command bound to KEYS. 207K KEYS Show the Emacs manual's section for the command bound to KEYS.
208l Show last 300 input keystrokes (lossage). 208l Show last 300 input keystrokes (lossage).
209L LANG-ENV Describes a specific language environment, or RET for current. 209L LANG-ENV Describes a specific language environment, or RET for current.
210m Display documentation of current minor modes and current major mode, 210m Display documentation of current minor modes and current major mode,
@@ -214,7 +214,7 @@ p TOPIC Find packages matching a given topic keyword.
214P PACKAGE Describe the given Emacs Lisp package. 214P PACKAGE Describe the given Emacs Lisp package.
215r Display the Emacs manual in Info mode. 215r Display the Emacs manual in Info mode.
216s Display contents of current syntax table, plus explanations. 216s Display contents of current syntax table, plus explanations.
217S SYMBOL Show the section for the given symbol in the on-line manual 217S SYMBOL Show the section for the given symbol in the Info manual
218 for the programming language used in this buffer. 218 for the programming language used in this buffer.
219t Start the Emacs learn-by-doing tutorial. 219t Start the Emacs learn-by-doing tutorial.
220v VARIABLE Display the given variable's documentation and value. 220v VARIABLE Display the given variable's documentation and value.
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 7beea8e26e6..d3bcf02f217 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -1079,7 +1079,7 @@ regardless of where you click."
1079 (unless primary 1079 (unless primary
1080 (error "No selection is available")) 1080 (error "No selection is available"))
1081 (push-mark (point)) 1081 (push-mark (point))
1082 (insert primary))) 1082 (insert-for-yank primary)))
1083 1083
1084(defun mouse-kill-ring-save (click) 1084(defun mouse-kill-ring-save (click)
1085 "Copy the region between point and the mouse click in the kill ring. 1085 "Copy the region between point and the mouse click in the kill ring.
@@ -1361,7 +1361,7 @@ regardless of where you click."
1361 (or mouse-yank-at-point (mouse-set-point click)) 1361 (or mouse-yank-at-point (mouse-set-point click))
1362 (let ((secondary (x-get-selection 'SECONDARY))) 1362 (let ((secondary (x-get-selection 'SECONDARY)))
1363 (if secondary 1363 (if secondary
1364 (insert secondary) 1364 (insert-for-yank secondary)
1365 (error "No secondary selection")))) 1365 (error "No secondary selection"))))
1366 1366
1367(defun mouse-kill-secondary () 1367(defun mouse-kill-secondary ()
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index 6431fa4aaf2..c7f018f5f15 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -71,8 +71,8 @@
71;; For example: 71;; For example:
72;; (add-to-list 'auto-mode-alist '("\\.f\\'" . f90-mode)) 72;; (add-to-list 'auto-mode-alist '("\\.f\\'" . f90-mode))
73 73
74;; Once you have entered f90-mode, you may get more info by using 74;; Once you have entered f90-mode, you can get more info by using
75;; the command describe-mode (C-h m). For online help use 75;; the command describe-mode (C-h m). For help use
76;; C-h f <Name of function you want described>, or 76;; C-h f <Name of function you want described>, or
77;; C-h v <Name of variable you want described>. 77;; C-h v <Name of variable you want described>.
78 78
diff --git a/lisp/progmodes/idlw-complete-structtag.el b/lisp/progmodes/idlw-complete-structtag.el
index 39951730ab3..6cb04a03b7e 100644
--- a/lisp/progmodes/idlw-complete-structtag.el
+++ b/lisp/progmodes/idlw-complete-structtag.el
@@ -49,14 +49,14 @@
49;; 49;;
50;; New versions of IDLWAVE, documentation, and more information available 50;; New versions of IDLWAVE, documentation, and more information available
51;; from: 51;; from:
52;; http://idlwave.org 52;; http://github.com/jdtsmith/idlwave
53;; 53;;
54;; INSTALLATION 54;; INSTALLATION
55;; ============ 55;; ============
56;; Put this file on the emacs load path and load it with the following 56;; Put this file on the emacs load path and load it with the following
57;; line in your init file: 57;; line in your init file:
58;; 58;;
59;; (add-hook 'idlwave-load-hook 59;; (add-hook 'idlwave-load-hook
60;; (lambda () (require 'idlw-complete-structtag))) 60;; (lambda () (require 'idlw-complete-structtag)))
61;; 61;;
62;; DESCRIPTION 62;; DESCRIPTION
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index b9c41c9d699..3d42fe231bd 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -32,7 +32,7 @@
32;; along with new versions of IDLWAVE, documentation, and more 32;; along with new versions of IDLWAVE, documentation, and more
33;; information, at: 33;; information, at:
34;; 34;;
35;; http://idlwave.org 35;; http://github.com/jdtsmith/idlwave
36;; 36;;
37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
38 38
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index a0683d1c409..876695b0809 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -40,7 +40,7 @@
40;; 40;;
41;; New versions of IDLWAVE, documentation, and more information 41;; New versions of IDLWAVE, documentation, and more information
42;; available from: 42;; available from:
43;; http://idlwave.org 43;; http://github.com/jdtsmith/idlwave
44;; 44;;
45;; INSTALLATION: 45;; INSTALLATION:
46;; ============= 46;; =============
@@ -58,7 +58,7 @@
58;; The newest version of this file can be found on the maintainers 58;; The newest version of this file can be found on the maintainers
59;; web site. 59;; web site.
60;; 60;;
61;; http://idlwave.org 61;; http://github.com/jdtsmith/idlwave
62;; 62;;
63;; DOCUMENTATION 63;; DOCUMENTATION
64;; ============= 64;; =============
@@ -923,7 +923,7 @@ IDL has currently stepped.")
923 Info documentation for this package is available. Use \\[idlwave-info] 923 Info documentation for this package is available. Use \\[idlwave-info]
924 to display (complain to your sysadmin if that does not work). 924 to display (complain to your sysadmin if that does not work).
925 For PostScript and HTML versions of the documentation, check IDLWAVE's 925 For PostScript and HTML versions of the documentation, check IDLWAVE's
926 homepage at URL `http://idlwave.org'. 926 homepage at URL `http://github.com/jdtsmith/idlwave'.
927 IDLWAVE has customize support - see the group `idlwave'. 927 IDLWAVE has customize support - see the group `idlwave'.
928 928
9298. Keybindings 9298. Keybindings
diff --git a/lisp/progmodes/idlw-toolbar.el b/lisp/progmodes/idlw-toolbar.el
index 7844890c22a..45672be7d97 100644
--- a/lisp/progmodes/idlw-toolbar.el
+++ b/lisp/progmodes/idlw-toolbar.el
@@ -29,7 +29,7 @@
29 29
30;; New versions of IDLWAVE, documentation, and more information 30;; New versions of IDLWAVE, documentation, and more information
31;; available from: 31;; available from:
32;; http://idlwave.org 32;; http://github.com/jdtsmith/idlwave
33 33
34 34
35;;; Code: 35;;; Code:
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 86a16036e10..e66c9655df1 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -44,7 +44,7 @@
44;; 44;;
45;; New versions of IDLWAVE, documentation, and more information 45;; New versions of IDLWAVE, documentation, and more information
46;; available from: 46;; available from:
47;; http://idlwave.org 47;; http://github.com/jdtsmith/idlwave
48;; 48;;
49;; INSTALLATION 49;; INSTALLATION
50;; ============ 50;; ============
@@ -64,7 +64,7 @@
64;; The newest version of this file is available from the maintainer's 64;; The newest version of this file is available from the maintainer's
65;; Webpage: 65;; Webpage:
66;; 66;;
67;; http://idlwave.org 67;; http://github.com/jdtsmith/idlwave
68;; 68;;
69;; DOCUMENTATION 69;; DOCUMENTATION
70;; ============= 70;; =============
@@ -179,7 +179,7 @@
179 "Major mode for editing IDL .pro files." 179 "Major mode for editing IDL .pro files."
180 :tag "IDLWAVE" 180 :tag "IDLWAVE"
181 :link '(url-link :tag "Home Page" 181 :link '(url-link :tag "Home Page"
182 "http://idlwave.org") 182 "http://github.com/jdtsmith/idlwave")
183 :link '(emacs-commentary-link :tag "Commentary in idlw-shell.el" 183 :link '(emacs-commentary-link :tag "Commentary in idlw-shell.el"
184 "idlw-shell.el") 184 "idlw-shell.el")
185 :link '(emacs-commentary-link :tag "Commentary in idlwave.el" "idlwave.el") 185 :link '(emacs-commentary-link :tag "Commentary in idlwave.el" "idlwave.el")
@@ -1878,7 +1878,8 @@ The main features of this mode are
1878 Info documentation for this package is available. Use 1878 Info documentation for this package is available. Use
1879 \\[idlwave-info] to display (complain to your sysadmin if that does 1879 \\[idlwave-info] to display (complain to your sysadmin if that does
1880 not work). For Postscript, PDF, and HTML versions of the 1880 not work). For Postscript, PDF, and HTML versions of the
1881 documentation, check IDLWAVE's homepage at URL `http://idlwave.org'. 1881 documentation, check IDLWAVE's homepage at URL
1882 `http://github.com/jdtsmith/idlwave'.
1882 IDLWAVE has customize support - see the group `idlwave'. 1883 IDLWAVE has customize support - see the group `idlwave'.
1883 1884
188410.Keybindings 188510.Keybindings
diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el
index cedc2986eda..f32d4641af0 100644
--- a/lisp/progmodes/pascal.el
+++ b/lisp/progmodes/pascal.el
@@ -26,8 +26,8 @@
26;; ===== 26;; =====
27 27
28;; Emacs should enter Pascal mode when you find a Pascal source file. 28;; Emacs should enter Pascal mode when you find a Pascal source file.
29;; When you have entered Pascal mode, you may get more info by pressing 29;; When you have entered Pascal mode, you can get more info by pressing
30;; C-h m. You may also get online help describing various functions by: 30;; C-h m. You can also get help describing various functions by:
31;; C-h f <Name of function you want described> 31;; C-h f <Name of function you want described>
32 32
33;; If you want to customize Pascal mode to fit you better, you may add 33;; If you want to customize Pascal mode to fit you better, you may add
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 743981b3714..065a182904f 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1096,16 +1096,28 @@ the line will be re-indented automatically if needed."
1096 (when (and electric-indent-mode 1096 (when (and electric-indent-mode
1097 (eq (char-before) last-command-event)) 1097 (eq (char-before) last-command-event))
1098 (cond 1098 (cond
1099 ((and (not (bolp)) 1099 ;; Electric indent inside parens
1100 (memq (char-after) '(?\) ?\] ?\}))) 1100 ((and
1101 (not (bolp))
1102 (let ((paren-start (python-syntax-context 'paren)))
1103 ;; Check that point is inside parens.
1104 (when paren-start
1105 (not
1106 ;; Filter the case where input is happening in the same
1107 ;; line where the open paren is.
1108 (= (line-number-at-pos)
1109 (line-number-at-pos paren-start)))))
1110 ;; When content has been added before the closing paren or a
1111 ;; comma has been inserted, it's ok to do the trick.
1112 (or
1113 (memq (char-after) '(?\) ?\] ?\}))
1114 (eq (char-before) ?,)))
1101 (save-excursion 1115 (save-excursion
1102 (goto-char (line-beginning-position)) 1116 (goto-char (line-beginning-position))
1103 ;; If after going to the beginning of line the point 1117 (let ((indentation (python-indent-calculate-indentation)))
1104 ;; is still inside a paren it's ok to do the trick 1118 (when (< (current-indentation) indentation)
1105 (when (python-syntax-context 'paren) 1119 (indent-line-to indentation)))))
1106 (let ((indentation (python-indent-calculate-indentation))) 1120 ;; Electric colon
1107 (when (< (current-indentation) indentation)
1108 (indent-line-to indentation))))))
1109 ((and (eq ?: last-command-event) 1121 ((and (eq ?: last-command-event)
1110 (memq ?: electric-indent-chars) 1122 (memq ?: electric-indent-chars)
1111 (not current-prefix-arg) 1123 (not current-prefix-arg)
diff --git a/lisp/ps-def.el b/lisp/ps-def.el
index 92a2e0b38cd..db0694549e1 100644
--- a/lisp/ps-def.el
+++ b/lisp/ps-def.el
@@ -325,8 +325,6 @@
325 ;; Emacs 325 ;; Emacs
326 (property-change from) 326 (property-change from)
327 (overlay-change from) 327 (overlay-change from)
328 (save-buffer-invisibility-spec buffer-invisibility-spec)
329 (buffer-invisibility-spec nil)
330 before-string after-string) 328 before-string after-string)
331 (while (< from to) 329 (while (< from to)
332 (and (< property-change to) ; Don't search for property change 330 (and (< property-change to) ; Don't search for property change
diff --git a/lisp/vc/ediff-mult.el b/lisp/vc/ediff-mult.el
index 9837c20b84d..56ff13fbbb6 100644
--- a/lisp/vc/ediff-mult.el
+++ b/lisp/vc/ediff-mult.el
@@ -140,7 +140,7 @@ Useful commands (type ? to hide them and free up screen):
140 uh/um:\tunmark all sessions marked for hiding/operation 140 uh/um:\tunmark all sessions marked for hiding/operation
141 n,SPC:\tnext session 141 n,SPC:\tnext session
142 p,DEL:\tprevious session 142 p,DEL:\tprevious session
143 E:\tbrowse Ediff on-line manual 143 E:\tbrowse Ediff manual
144 T:\ttoggle truncation of long file names 144 T:\ttoggle truncation of long file names
145 q:\tquit this session group 145 q:\tquit this session group
146") 146")
@@ -1464,7 +1464,7 @@ Useful commands:
1464 R in any Ediff session: display session registry 1464 R in any Ediff session: display session registry
1465 n,SPC: next session 1465 n,SPC: next session
1466 p,DEL: previous session 1466 p,DEL: previous session
1467 E: browse Ediff on-line manual 1467 E: browse Ediff manual
1468 q: bury registry 1468 q: bury registry
1469 1469
1470 1470
diff --git a/lisp/vc/ediff-ptch.el b/lisp/vc/ediff-ptch.el
index d1332351a74..bb6ab1062c1 100644
--- a/lisp/vc/ediff-ptch.el
+++ b/lisp/vc/ediff-ptch.el
@@ -735,7 +735,7 @@ The second problem might be due to an incompatibility among these settings:
735 ediff-patch-program = %S ediff-patch-options = %S 735 ediff-patch-program = %S ediff-patch-options = %S
736 ediff-backup-extension = %S ediff-backup-specs = %S 736 ediff-backup-extension = %S ediff-backup-specs = %S
737 737
738See Ediff on-line manual for more details on these variables. 738See Ediff manual for more details on these variables.
739In particular, check the documentation for `ediff-backup-specs'. 739In particular, check the documentation for `ediff-backup-specs'.
740 740
741In any of the above cases, Ediff doesn't compare files automatically. 741In any of the above cases, Ediff doesn't compare files automatically.
diff --git a/lisp/vc/ediff.el b/lisp/vc/ediff.el
index 927a3ba7fb6..5418039143f 100644
--- a/lisp/vc/ediff.el
+++ b/lisp/vc/ediff.el
@@ -64,7 +64,7 @@
64;; compressed files. Details are given below. 64;; compressed files. Details are given below.
65 65
66;; Finally, Ediff supports directory-level comparison, merging and patching. 66;; Finally, Ediff supports directory-level comparison, merging and patching.
67;; See the on-line manual for details. 67;; See the Ediff manual for details.
68 68
69;; This package builds upon the ideas borrowed from emerge.el and several 69;; This package builds upon the ideas borrowed from emerge.el and several
70;; Ediff's functions are adaptations from emerge.el. Much of the functionality 70;; Ediff's functions are adaptations from emerge.el. Much of the functionality
diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el
index e6bd897f4ac..1d75411ec1f 100644
--- a/lisp/vc/log-edit.el
+++ b/lisp/vc/log-edit.el
@@ -132,6 +132,8 @@ This applies when its SETUP argument is non-nil."
132 log-edit-insert-changelog 132 log-edit-insert-changelog
133 log-edit-show-files) 133 log-edit-show-files)
134 "Hook run at the end of `log-edit'." 134 "Hook run at the end of `log-edit'."
135 ;; Added log-edit-insert-message-template, moved log-edit-show-files.
136 :version "24.4"
135 :group 'log-edit 137 :group 'log-edit
136 :type '(hook :options (log-edit-insert-message-template 138 :type '(hook :options (log-edit-insert-message-template
137 log-edit-insert-cvs-rcstemplate 139 log-edit-insert-cvs-rcstemplate
@@ -355,9 +357,15 @@ The first subexpression is the actual text of the field.")
355 (set-match-data (list start (point))) 357 (set-match-data (list start (point)))
356 (point)))) 358 (point))))
357 359
360(defun log-edit-goto-eoh () ;FIXME: Almost rfc822-goto-eoh!
361 (goto-char (point-min))
362 (when (re-search-forward
363 "^\\([^[:alpha:]]\\|[[:alnum:]-]+[^[:alnum:]-:]\\)" nil 'move)
364 (goto-char (match-beginning 0))))
365
358(defun log-edit--match-first-line (limit) 366(defun log-edit--match-first-line (limit)
359 (let ((start (point))) 367 (let ((start (point)))
360 (rfc822-goto-eoh) 368 (log-edit-goto-eoh)
361 (skip-chars-forward "\n") 369 (skip-chars-forward "\n")
362 (and (< start (line-end-position)) 370 (and (< start (line-end-position))
363 (< (point) limit) 371 (< (point) limit)
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index c7cae8359bf..9c8ab3ba393 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -674,7 +674,7 @@ It is based on `log-edit-mode', and has Git-specific extensions.")
674 (cl-flet ((boolean-arg-fn 674 (cl-flet ((boolean-arg-fn
675 (argument) 675 (argument)
676 (lambda (value) (when (equal value "yes") (list argument))))) 676 (lambda (value) (when (equal value "yes") (list argument)))))
677 ;; When operating on the whole tree, better pass nil than ".", since "." 677 ;; When operating on the whole tree, better pass "-a" than ".", since "."
678 ;; fails when we're committing a merge. 678 ;; fails when we're committing a merge.
679 (apply 'vc-git-command nil 0 (if only files) 679 (apply 'vc-git-command nil 0 (if only files)
680 (nconc (list "commit" "-m") 680 (nconc (list "commit" "-m")
@@ -684,7 +684,7 @@ It is based on `log-edit-mode', and has Git-specific extensions.")
684 ("Amend" . ,(boolean-arg-fn "--amend")) 684 ("Amend" . ,(boolean-arg-fn "--amend"))
685 ("Sign-Off" . ,(boolean-arg-fn "--signoff"))) 685 ("Sign-Off" . ,(boolean-arg-fn "--signoff")))
686 comment) 686 comment)
687 (if only (list "--only" "--"))))))) 687 (if only (list "--only" "--") '("-a")))))))
688 688
689(defun vc-git-find-revision (file rev buffer) 689(defun vc-git-find-revision (file rev buffer)
690 (let* (process-file-side-effects 690 (let* (process-file-side-effects
diff --git a/src/ChangeLog b/src/ChangeLog
index bb514753bdb..0f9b7431462 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,28 @@
12014-07-03 Eli Zaretskii <eliz@gnu.org>
2
3 * dispnew.c (prepare_desired_row): Accept 2 additional arguments:
4 the window whose glyph row is being prepared and a flag whether it
5 is for mode/header line. Make sure the glyph row's marginal areas
6 are in sync with what the window wants.
7 (Bug#17892)
8
9 * xdisp.c (display_line, display_mode_line): Call
10 prepare_desired_row with additional arguments, as appropriate.
11
12 * dispextern.h (prepare_desired_row): Adjust prototype.
13
142014-07-03 Dmitry Antipov <dmantipov@yandex.ru>
15
16 * xfaces.c (init_frame_faces): Always realize basic faces (Bug#17889).
17 * menu.c (Fx_popup_dialog): Set Vmenu_updating_frame to avoid crash
18 caused by xw_popup_dialog in daemon mode (Bug#17891).
19
202014-07-03 Eli Zaretskii <eliz@gnu.org>
21
22 * frame.c (do_switch_frame): When switching to another TTY frame,
23 make sure FrameCols and FrameRows are in sync with the new frame's
24 data. (Bug#17875)
25
12014-07-02 Dmitry Antipov <dmantipov@yandex.ru> 262014-07-02 Dmitry Antipov <dmantipov@yandex.ru>
2 27
3 Shrink Lisp_Sub_Char_Table by preferring C integers to Lisp_Objects. 28 Shrink Lisp_Sub_Char_Table by preferring C integers to Lisp_Objects.
diff --git a/src/dispextern.h b/src/dispextern.h
index 5396aeb6c8e..0e04cc466d3 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -3460,7 +3460,7 @@ void increment_matrix_positions (struct glyph_matrix *,
3460void blank_row (struct window *, struct glyph_row *, int); 3460void blank_row (struct window *, struct glyph_row *, int);
3461void clear_glyph_matrix_rows (struct glyph_matrix *, int, int); 3461void clear_glyph_matrix_rows (struct glyph_matrix *, int, int);
3462void clear_glyph_row (struct glyph_row *); 3462void clear_glyph_row (struct glyph_row *);
3463void prepare_desired_row (struct glyph_row *); 3463void prepare_desired_row (struct window *, struct glyph_row *, bool);
3464void update_single_window (struct window *, bool); 3464void update_single_window (struct window *, bool);
3465void do_pending_window_change (bool); 3465void do_pending_window_change (bool);
3466void change_frame_size (struct frame *, int, int, bool, bool, bool, bool); 3466void change_frame_size (struct frame *, int, int, bool, bool, bool, bool);
diff --git a/src/dispnew.c b/src/dispnew.c
index 163780952a6..2d137b4abbd 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -449,7 +449,8 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y
449 + x); 449 + x);
450 450
451 if (w == NULL 451 if (w == NULL
452 || row == matrix->rows + dim.height - 1 452 || (row == matrix->rows + dim.height - 1
453 && WINDOW_WANTS_MODELINE_P (w))
453 || (row == matrix->rows && matrix->header_line_p)) 454 || (row == matrix->rows && matrix->header_line_p))
454 { 455 {
455 row->glyphs[TEXT_AREA] 456 row->glyphs[TEXT_AREA]
@@ -492,8 +493,9 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y
492 = xnrealloc (row->glyphs[LEFT_MARGIN_AREA], 493 = xnrealloc (row->glyphs[LEFT_MARGIN_AREA],
493 dim.width, sizeof (struct glyph)); 494 dim.width, sizeof (struct glyph));
494 495
495 /* The mode line never has marginal areas. */ 496 /* The mode line, if displayed, never has marginal areas. */
496 if (row == matrix->rows + dim.height - 1 497 if ((row == matrix->rows + dim.height - 1
498 && !(w && WINDOW_WANTS_MODELINE_P (w)))
497 || (row == matrix->rows && matrix->header_line_p)) 499 || (row == matrix->rows && matrix->header_line_p))
498 { 500 {
499 row->glyphs[TEXT_AREA] 501 row->glyphs[TEXT_AREA]
@@ -1049,13 +1051,16 @@ find_glyph_row_slice (struct glyph_matrix *window_matrix,
1049 1051
1050#endif /* 0 */ 1052#endif /* 0 */
1051 1053
1052/* Prepare ROW for display. Desired rows are cleared lazily, 1054/* Prepare ROW for display in windows W. Desired rows are cleared
1053 i.e. they are only marked as to be cleared by setting their 1055 lazily, i.e. they are only marked as to be cleared by setting their
1054 enabled_p flag to zero. When a row is to be displayed, a prior 1056 enabled_p flag to zero. When a row is to be displayed, a prior
1055 call to this function really clears it. */ 1057 call to this function really clears it. In addition, this function
1058 makes sure the marginal areas of ROW are in sync with the window's
1059 display margins. MODE_LINE_P non-zero means we are preparing a
1060 glyph row for header line or mode line. */
1056 1061
1057void 1062void
1058prepare_desired_row (struct glyph_row *row) 1063prepare_desired_row (struct window *w, struct glyph_row *row, bool mode_line_p)
1059{ 1064{
1060 if (!row->enabled_p) 1065 if (!row->enabled_p)
1061 { 1066 {
@@ -1065,6 +1070,39 @@ prepare_desired_row (struct glyph_row *row)
1065 row->enabled_p = true; 1070 row->enabled_p = true;
1066 row->reversed_p = rp; 1071 row->reversed_p = rp;
1067 } 1072 }
1073 if (mode_line_p)
1074 {
1075 /* Mode and header lines, if displayed, never have marginal
1076 areas. If we are called with MODE_LINE_P non-zero, we are
1077 displaying the mode/header line in this window, and so the
1078 marginal areas of this glyph row should be eliminated. This
1079 is needed when the mode/header line is switched on in a
1080 window that has display margins. */
1081 if (w->left_margin_cols > 0)
1082 row->glyphs[TEXT_AREA] = row->glyphs[LEFT_MARGIN_AREA];
1083 if (w->right_margin_cols > 0)
1084 row->glyphs[RIGHT_MARGIN_AREA] = row->glyphs[LAST_AREA];
1085 }
1086 else if (row == MATRIX_MODE_LINE_ROW (w->desired_matrix)
1087 || row == MATRIX_HEADER_LINE_ROW (w->desired_matrix))
1088 {
1089 /* The real number of glyphs reserved for the margins is
1090 recorded in the glyph matrix, and can be different from
1091 window's left_margin_cols and right_margin_cols; see
1092 margin_glyphs_to_reserve for when that happens. */
1093 int left = w->desired_matrix->left_margin_glyphs;
1094 int right = w->desired_matrix->right_margin_glyphs;
1095
1096 /* Make sure the marginal areas of this row are in sync with
1097 what the window wants, when the 1st/last row of the matrix
1098 actually displays text and not header/mode line. */
1099 if (w->left_margin_cols > 0
1100 && (left != row->glyphs[TEXT_AREA] - row->glyphs[LEFT_MARGIN_AREA]))
1101 row->glyphs[TEXT_AREA] = row->glyphs[LEFT_MARGIN_AREA] + left;
1102 if (w->right_margin_cols > 0
1103 && (right != row->glyphs[LAST_AREA] - row->glyphs[RIGHT_MARGIN_AREA]))
1104 row->glyphs[RIGHT_MARGIN_AREA] = row->glyphs[LAST_AREA] - right;
1105 }
1068} 1106}
1069 1107
1070 1108
diff --git a/src/frame.c b/src/frame.c
index c67a233f099..0ccc0f6fcfd 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -46,6 +46,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
46#ifdef HAVE_WINDOW_SYSTEM 46#ifdef HAVE_WINDOW_SYSTEM
47#include "fontset.h" 47#include "fontset.h"
48#endif 48#endif
49#include "cm.h"
49#ifdef MSDOS 50#ifdef MSDOS
50#include "msdos.h" 51#include "msdos.h"
51#include "dosfns.h" 52#include "dosfns.h"
@@ -854,7 +855,9 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor
854 855
855 if (FRAME_TERMCAP_P (XFRAME (frame)) || FRAME_MSDOS_P (XFRAME (frame))) 856 if (FRAME_TERMCAP_P (XFRAME (frame)) || FRAME_MSDOS_P (XFRAME (frame)))
856 { 857 {
857 Lisp_Object top_frame = FRAME_TTY (XFRAME (frame))->top_frame; 858 struct frame *f = XFRAME (frame);
859 struct tty_display_info *tty = FRAME_TTY (f);
860 Lisp_Object top_frame = tty->top_frame;
858 861
859 /* Don't mark the frame garbaged and/or obscured if we are 862 /* Don't mark the frame garbaged and/or obscured if we are
860 switching to the frame that is already the top frame of that 863 switching to the frame that is already the top frame of that
@@ -864,9 +867,16 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor
864 if (FRAMEP (top_frame)) 867 if (FRAMEP (top_frame))
865 /* Mark previously displayed frame as now obscured. */ 868 /* Mark previously displayed frame as now obscured. */
866 SET_FRAME_VISIBLE (XFRAME (top_frame), 2); 869 SET_FRAME_VISIBLE (XFRAME (top_frame), 2);
867 SET_FRAME_VISIBLE (XFRAME (frame), 1); 870 SET_FRAME_VISIBLE (f, 1);
871 /* If the new TTY frame changed dimensions, we need to
872 resync term.c's idea of the frame size with the new
873 frame's data. */
874 if (FRAME_COLS (f) != FrameCols (tty))
875 FrameCols (tty) = FRAME_COLS (f);
876 if (FRAME_LINES (f) != FrameRows (tty))
877 FrameRows (tty) = FRAME_LINES (f);
868 } 878 }
869 FRAME_TTY (XFRAME (frame))->top_frame = frame; 879 tty->top_frame = frame;
870 } 880 }
871 881
872 selected_frame = frame; 882 selected_frame = frame;
diff --git a/src/menu.c b/src/menu.c
index a523cfc6010..e0f226562f8 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1529,6 +1529,11 @@ for instance using the window manager, then this produces a quit and
1529 but I don't want to make one now. */ 1529 but I don't want to make one now. */
1530 CHECK_WINDOW (window); 1530 CHECK_WINDOW (window);
1531 1531
1532 /* Note that xw_popup_dialog can call menu code, so
1533 Vmenu_updating_frame should be set (Bug#17891). */
1534 eassert (f && FRAME_LIVE_P (f));
1535 XSETFRAME (Vmenu_updating_frame, f);
1536
1532 /* Force a redisplay before showing the dialog. If a frame is created 1537 /* Force a redisplay before showing the dialog. If a frame is created
1533 just before showing the dialog, its contents may not have been fully 1538 just before showing the dialog, its contents may not have been fully
1534 drawn, as this depends on timing of events from the X server. Redisplay 1539 drawn, as this depends on timing of events from the X server. Redisplay
diff --git a/src/window.h b/src/window.h
index bdc5dddb7e5..b9c2b1f5ba8 100644
--- a/src/window.h
+++ b/src/window.h
@@ -271,8 +271,10 @@ struct window
271 int left_fringe_width; 271 int left_fringe_width;
272 int right_fringe_width; 272 int right_fringe_width;
273 273
274 /* Width of left and right marginal areas in columns. 274 /* Requested width of left and right marginal areas in columns. A
275 A value of 0 means no margin. */ 275 value of 0 means no margin. The actual values are recorded in
276 the window's glyph matrix, in the left_margin_glyphs and
277 right_margin_glyphs members. */
276 int left_margin_cols; 278 int left_margin_cols;
277 int right_margin_cols; 279 int right_margin_cols;
278 280
diff --git a/src/xdisp.c b/src/xdisp.c
index 31d293143f3..3e76d3df9f9 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -19878,7 +19878,7 @@ display_line (struct it *it)
19878 } 19878 }
19879 19879
19880 /* Clear the result glyph row and enable it. */ 19880 /* Clear the result glyph row and enable it. */
19881 prepare_desired_row (row); 19881 prepare_desired_row (it->w, row, false);
19882 19882
19883 row->y = it->current_y; 19883 row->y = it->current_y;
19884 row->start = it->start; 19884 row->start = it->start;
@@ -21517,7 +21517,7 @@ display_mode_line (struct window *w, enum face_id face_id, Lisp_Object format)
21517 /* Don't extend on a previously drawn mode-line. 21517 /* Don't extend on a previously drawn mode-line.
21518 This may happen if called from pos_visible_p. */ 21518 This may happen if called from pos_visible_p. */
21519 it.glyph_row->enabled_p = false; 21519 it.glyph_row->enabled_p = false;
21520 prepare_desired_row (it.glyph_row); 21520 prepare_desired_row (w, it.glyph_row, true);
21521 21521
21522 it.glyph_row->mode_line_p = 1; 21522 it.glyph_row->mode_line_p = 1;
21523 21523
diff --git a/src/xfaces.c b/src/xfaces.c
index 4571137a249..ead14f0116d 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -676,19 +676,9 @@ init_frame_faces (struct frame *f)
676 } 676 }
677#endif /* HAVE_WINDOW_SYSTEM */ 677#endif /* HAVE_WINDOW_SYSTEM */
678 678
679 /* Realize basic faces. Must have enough information in frame 679 /* Realize faces early (Bug#17889). */
680 parameters to realize basic faces at this point. */ 680 if (!realize_basic_faces (f))
681#ifdef HAVE_X_WINDOWS 681 emacs_abort ();
682 if (!FRAME_X_P (f) || FRAME_X_WINDOW (f))
683#endif
684#ifdef HAVE_NTGUI
685 if (!FRAME_WINDOW_P (f) || FRAME_W32_WINDOW (f))
686#endif
687#ifdef HAVE_NS
688 if (!FRAME_NS_P (f) || FRAME_NS_WINDOW (f))
689#endif
690 if (!realize_basic_faces (f))
691 emacs_abort ();
692} 682}
693 683
694 684
diff --git a/test/ChangeLog b/test/ChangeLog
index 8c28eaf30dc..cf55beb87f0 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,9 @@
12014-07-03 Fabián Ezequiel Gallina <fgallina@gnu.org>
2
3 * automated/python-tests.el (python-tests-self-insert): New function.
4 (python-triple-quote-pairing): Use it.
5 (python-util-forward-comment-1): New test. (Bug#17658)
6
12014-06-30 Fabián Ezequiel Gallina <fgallina@gnu.org> 72014-06-30 Fabián Ezequiel Gallina <fgallina@gnu.org>
2 8
3 * automated/subr-x-tests.el: New file. 9 * automated/subr-x-tests.el: New file.
diff --git a/test/automated/python-tests.el b/test/automated/python-tests.el
index f580e946b8f..a35242fe882 100644
--- a/test/automated/python-tests.el
+++ b/test/automated/python-tests.el
@@ -86,6 +86,24 @@ STRING, it is skipped so the next STRING occurrence is selected."
86 found-point 86 found-point
87 (and restore-point (goto-char starting-point))))) 87 (and restore-point (goto-char starting-point)))))
88 88
89(defun python-tests-self-insert (char-or-str)
90 "Call `self-insert-command' for chars in CHAR-OR-STR."
91 (let ((chars
92 (cond
93 ((characterp char-or-str)
94 (list char-or-str))
95 ((stringp char-or-str)
96 (string-to-list char-or-str))
97 ((not
98 (cl-remove-if #'characterp char-or-str))
99 char-or-str)
100 (t (error "CHAR-OR-STR must be a char, string, or list of char")))))
101 (mapc
102 (lambda (char)
103 (let ((last-command-event char))
104 (call-interactively 'self-insert-command)))
105 chars)))
106
89 107
90;;; Tests for your tests, so you can test while you test. 108;;; Tests for your tests, so you can test while you test.
91 109
@@ -2715,9 +2733,6 @@ def foo(a, b, c):
2715 (should (string= (python-util-strip-string "\n \t \n\r ") "")) 2733 (should (string= (python-util-strip-string "\n \t \n\r ") ""))
2716 (should (string= (python-util-strip-string "") ""))) 2734 (should (string= (python-util-strip-string "") "")))
2717 2735
2718
2719;;; Electricity
2720
2721(ert-deftest python-util-forward-comment-1 () 2736(ert-deftest python-util-forward-comment-1 ()
2722 (python-tests-with-temp-buffer 2737 (python-tests-with-temp-buffer
2723 (concat 2738 (concat
@@ -2730,36 +2745,85 @@ def foo(a, b, c):
2730 (python-util-forward-comment -1) 2745 (python-util-forward-comment -1)
2731 (should (= (point) (point-min))))) 2746 (should (= (point) (point-min)))))
2732 2747
2748
2749;;; Electricity
2750
2751(ert-deftest python-parens-electric-indent-1 ()
2752 (require 'electric)
2753 (let ((eim electric-indent-mode))
2754 (unwind-protect
2755 (progn
2756 (python-tests-with-temp-buffer
2757 "
2758from django.conf.urls import patterns, include, url
2759
2760from django.contrib import admin
2761
2762from myapp import views
2763
2764
2765urlpatterns = patterns('',
2766 url(r'^$', views.index
2767)
2768"
2769 (electric-indent-mode 1)
2770 (python-tests-look-at "views.index")
2771 (end-of-line)
2772
2773 ;; Inserting commas within the same line should leave
2774 ;; indentation unchanged.
2775 (python-tests-self-insert ",")
2776 (should (= (current-indentation) 4))
2777
2778 ;; As well as any other input happening within the same
2779 ;; set of parens.
2780 (python-tests-self-insert " name='index')")
2781 (should (= (current-indentation) 4))
2782
2783 ;; But a comma outside it, should trigger indentation.
2784 (python-tests-self-insert ",")
2785 (should (= (current-indentation) 23))
2786
2787 ;; Newline indents to the first argument column
2788 (python-tests-self-insert "\n")
2789 (should (= (current-indentation) 23))
2790
2791 ;; All this input must not change indentation
2792 (indent-line-to 4)
2793 (python-tests-self-insert "url(r'^/login$', views.login)")
2794 (should (= (current-indentation) 4))
2795
2796 ;; But this comma does
2797 (python-tests-self-insert ",")
2798 (should (= (current-indentation) 23))))
2799 (or eim (electric-indent-mode -1)))))
2800
2733(ert-deftest python-triple-quote-pairing () 2801(ert-deftest python-triple-quote-pairing ()
2734 (require 'electric) 2802 (require 'electric)
2735 (let ((epm electric-pair-mode)) 2803 (let ((epm electric-pair-mode))
2736 (unwind-protect 2804 (unwind-protect
2737 (progn 2805 (progn
2738 (python-tests-with-temp-buffer 2806 (python-tests-with-temp-buffer
2739 "\"\"\n" 2807 "\"\"\n"
2740 (or epm (electric-pair-mode 1)) 2808 (or epm (electric-pair-mode 1))
2741 (goto-char (1- (point-max))) 2809 (goto-char (1- (point-max)))
2742 (let ((last-command-event ?\")) 2810 (python-tests-self-insert ?\")
2743 (call-interactively 'self-insert-command)) 2811 (should (string= (buffer-string)
2744 (should (string= (buffer-string) 2812 "\"\"\"\"\"\"\n"))
2745 "\"\"\"\"\"\"\n")) 2813 (should (= (point) 4)))
2746 (should (= (point) 4)))
2747 (python-tests-with-temp-buffer 2814 (python-tests-with-temp-buffer
2748 "\n" 2815 "\n"
2749 (let ((last-command-event ?\")) 2816 (python-tests-self-insert (list ?\" ?\" ?\"))
2750 (dotimes (i 3) 2817 (should (string= (buffer-string)
2751 (call-interactively 'self-insert-command))) 2818 "\"\"\"\"\"\"\n"))
2752 (should (string= (buffer-string) 2819 (should (= (point) 4)))
2753 "\"\"\"\"\"\"\n"))
2754 (should (= (point) 4)))
2755 (python-tests-with-temp-buffer 2820 (python-tests-with-temp-buffer
2756 "\"\n\"\"\n" 2821 "\"\n\"\"\n"
2757 (goto-char (1- (point-max))) 2822 (goto-char (1- (point-max)))
2758 (let ((last-command-event ?\")) 2823 (python-tests-self-insert ?\")
2759 (call-interactively 'self-insert-command)) 2824 (should (= (point) (1- (point-max))))
2760 (should (= (point) (1- (point-max)))) 2825 (should (string= (buffer-string)
2761 (should (string= (buffer-string) 2826 "\"\n\"\"\"\n"))))
2762 "\"\n\"\"\"\n"))))
2763 (or epm (electric-pair-mode -1))))) 2827 (or epm (electric-pair-mode -1)))))
2764 2828
2765 2829