emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 411c1c6 05/10: Merge from origin/emacs-24


From: Fabián Ezequiel Gallina
Subject: [Emacs-diffs] master 411c1c6 05/10: Merge from origin/emacs-24
Date: Sat, 27 Dec 2014 18:50:41 +0000

branch: master
commit 411c1c65313aa4e22730ba9762e073881f4e299a
Merge: c3c51ec 216c6aa
Author: Fabián Ezequiel Gallina <address@hidden>
Commit: Fabián Ezequiel Gallina <address@hidden>

    Merge from origin/emacs-24
    
    216c6aa * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Use 
`tramp-rsh-end-of-line', it ought to be more robust.
    20cfd24 Improve indexing on the chapter/section/subsection levels.
    14c3739 * lisp/progmodes/js.el (js-syntax-propertize): "return" can't be 
divided.
    ea78112 * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Use 
"\n" as end-of-line delimeter for passwords, when running on MS Windows.
    012479a * lisp/progmodes/sh-script.el: Don't set global indent-line-function
    75e114f Fix line numbers on Python shell.
    d0fd23c doc/emacs/buffers.texi (Kill Buffer): Improve indexing.
    8e818d1 Keep maximized when going fullscreen.
    749813e python.el: Fix electric colon behavior
    936d5e5 Fix last patch.
    74d3b20 Fixes: debbugs:18623
    
    Conflicts:
        doc/emacs/ChangeLog
        doc/lispref/ChangeLog
        doc/lispref/functions.texi
        lisp/ChangeLog
        src/ChangeLog
        src/xterm.c
        test/ChangeLog
---
 doc/emacs/ChangeLog            |    5 +
 doc/emacs/buffers.texi         |   11 ++-
 doc/lispref/ChangeLog          |  102 ++++++++++++++++
 doc/lispref/abbrevs.texi       |    9 ++
 doc/lispref/backups.texi       |    4 +
 doc/lispref/buffers.texi       |    2 +
 doc/lispref/commands.texi      |    9 ++
 doc/lispref/compile.texi       |    1 +
 doc/lispref/control.texi       |    5 +
 doc/lispref/customize.texi     |    4 +
 doc/lispref/debugging.texi     |    6 +
 doc/lispref/display.texi       |   27 ++++
 doc/lispref/files.texi         |    6 +
 doc/lispref/frames.texi        |    8 ++
 doc/lispref/functions.texi     |    5 +-
 doc/lispref/hash.texi          |    2 +
 doc/lispref/help.texi          |    2 +
 doc/lispref/keymaps.texi       |    4 +
 doc/lispref/lists.texi         |    9 ++
 doc/lispref/loading.texi       |    4 +
 doc/lispref/macros.texi        |    3 +
 doc/lispref/markers.texi       |    7 +
 doc/lispref/minibuf.texi       |    5 +
 doc/lispref/nonascii.texi      |    5 +
 doc/lispref/os.texi            |    9 ++
 doc/lispref/positions.texi     |    1 +
 doc/lispref/processes.texi     |    3 +
 doc/lispref/searching.texi     |    5 +
 doc/lispref/strings.texi       |    7 +
 doc/lispref/syntax.texi        |    7 +
 doc/lispref/text.texi          |    9 ++
 doc/lispref/variables.texi     |    3 +
 doc/lispref/windows.texi       |    2 +
 lisp/ChangeLog                 |   45 +++++++
 lisp/net/tramp-sh.el           |    8 +-
 lisp/net/tramp.el              |  261 ++++++++++++++++++++--------------------
 lisp/progmodes/js.el           |    2 +-
 lisp/progmodes/python.el       |   58 ++++------
 lisp/progmodes/sh-script.el    |    2 +-
 src/ChangeLog                  |    4 +
 src/xterm.c                    |   10 +-
 test/ChangeLog                 |    6 +
 test/automated/python-tests.el |   33 +++++
 43 files changed, 541 insertions(+), 179 deletions(-)

diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 7081c19..b9ca8b3 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-27  Eli Zaretskii  <address@hidden>
+
+       * buffers.texi (Kill Buffer): Improve indexing.
+
+2014-12-27  Paul Eggert  <address@hidden>
 2014-12-24  Stephen Leake  <address@hidden>
 
        * trouble.texi: Move user-level information from CONTRIBUTE here.
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index 54a8498..f036d85 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -269,11 +269,16 @@ can also be used to copy text from one buffer to another.
 @section Killing Buffers
 
 @cindex killing buffers
address@hidden close buffer
address@hidden close file
   If you continue an Emacs session for a while, you may accumulate a
 large number of buffers.  You may then find it convenient to @dfn{kill}
-the buffers you no longer need.  On most operating systems, killing a
-buffer releases its space back to the operating system so that other
-programs can use it.  Here are some commands for killing buffers:
+the buffers you no longer need.  (Some other editors call this
+operation @dfn{close}, and talk about ``closing the buffer'' or
+``closing the file'' visited in the buffer.)  On most operating
+systems, killing a buffer releases its space back to the operating
+system so that other programs can use it.  Here are some commands for
+killing buffers:
 
 @table @kbd
 @item C-x k @var{bufname} @key{RET}
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 2d964cf..66f1d3a 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,105 @@
+2014-12-27  Eli Zaretskii  <address@hidden>
+
+       * windows.texi (Recombining Windows): Index subject of sections.
+
+       * variables.texi (Variables with Restricted Values)
+       (Generalized Variables): Index subject of sections.
+
+       * text.texi (Buffer Contents, Examining Properties)
+       (Changing Properties, Property Search, Substitution): Index
+       subject of sections.
+
+       * syntax.texi (Motion and Syntax, Parsing Expressions)
+       (Motion via Parsing, Position Parse, Control Parsing): Index
+       subject of sections.
+
+       * strings.texi (Predicates for Strings, Creating Strings)
+       (Modifying Strings, Text Comparison): Index subject of sections.
+
+       * searching.texi (Syntax of Regexps, Regexp Special)
+       (Regexp Functions, Regexp Functions): Index subject of sections.
+
+       * processes.texi (Subprocess Creation, Process Information): Index
+       subject of sections.
+
+       * positions.texi (Screen Lines): Index subject of sections.
+
+       * nonascii.texi (Scanning Charsets, Specifying Coding Systems):
+       Index subject of sections.
+
+       * minibuf.texi (Text from Minibuffer, Object from Minibuffer)
+       (Multiple Queries, Minibuffer Contents): Index subject of
+       sections.
+
+       * markers.texi (Predicates on Markers, Creating Markers)
+       (Information from Markers, Moving Markers): Index subject of
+       sections.
+
+       * macros.texi (Defining Macros, Problems with Macros): Index
+       subject of sections.
+
+       * loading.texi (Loading Non-ASCII, Where Defined): Index subject
+       of sections.
+
+       * lists.texi (List-related Predicates, List Variables, Setcar)
+       (Setcdr, Plist Access): Index subject of sections.
+
+       * keymaps.texi (Controlling Active Maps, Scanning Keymaps)
+       (Modifying Menus): Index subject of sections.
+
+       * help.texi (Accessing Documentation, Help Functions): Index
+       subject of sections.
+
+       * hash.texi (Hash Access): Index subject of sections.
+
+       * functions.texi (Core Advising Primitives)
+       (Advising Named Functions, Porting old advices): Index subject of
+       sections.
+
+       * frames.texi (Creating Frames, Initial Parameters)
+       (Position Parameters, Buffer Parameters, Minibuffers and Frames)
+       (Pop-Up Menus, Drag and Drop): Index subject of sections.
+
+       * files.texi (Visiting Functions, Kinds of Files)
+       (Unique File Names): Index subject of sections.
+
+       * display.texi (Refresh Screen, Echo Area Customization)
+       (Warning Variables, Warning Options, Delayed Warnings)
+       (Temporary Displays, Managing Overlays, Overlay Properties)
+       (Finding Overlays, Size of Displayed Text, Defining Faces)
+       (Attribute Functions, Displaying Faces, Face Remapping)
+       (Basic Faces, Font Lookup, Fontsets, Replacing Specs)
+       (Defining Images, Showing Images): Index subject of sections.
+
+       * debugging.texi (Debugging, Explicit Debug)
+       (Invoking the Debugger, Excess Open, Excess Close): Index subject
+       of sections.
+
+       * customize.texi (Defining New Types, Applying Customizations)
+       (Custom Themes): Index subject of sections.
+
+       * control.texi (Sequencing, Combining Conditions)
+       (Processing of Errors, Cleanups): Index subject of sections.
+
+       * compile.texi (Eval During Compile): Index subject of sections.
+
+       * commands.texi (Using Interactive, Distinguish Interactive)
+       (Command Loop Info, Classifying Events, Event Mod)
+       (Invoking the Input Method): Index subject of sections.
+
+       * buffers.texi (Buffer List, Buffer Gap): Index subject of sections.
+
+       * backups.texi (Making Backups, Numbered Backups, Backup Names)
+       (Reverting): Index subject of sections.
+
+       * abbrevs.texi (Abbrev Tables, Defining Abbrevs, Abbrev Files)
+       (Abbrev Expansion, Standard Abbrev Tables, Abbrev Properties)
+       (Abbrev Table Properties): Index subject of sections.
+
+       * os.texi (Time of Day, Time Conversion, Time Parsing)
+       (Time Calculations, Idle Timers): Index subject of sections.
+
+2014-12-27  Stefan Monnier  <address@hidden>
 2014-12-25  Martin Rudalics  <address@hidden>
 
        * windows.texi (Windows): Resync @menu order with @node order.
diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi
index 73a3f5f..c00af61 100644
--- a/doc/lispref/abbrevs.texi
+++ b/doc/lispref/abbrevs.texi
@@ -59,6 +59,7 @@ expanded in the buffer.  For the user-level commands for 
abbrevs, see
 
 @node Abbrev Tables
 @section Abbrev Tables
address@hidden abbrev tables
 
   This section describes how to create and manipulate abbrev tables.
 
@@ -126,6 +127,7 @@ to add these to @var{name} separately.)
 
 @node Defining Abbrevs
 @section Defining Abbrevs
address@hidden defining abbrevs
 
   @code{define-abbrev} is the low-level basic function for defining an
 abbrev in an abbrev table.
@@ -181,6 +183,7 @@ callers.
 
 @node Abbrev Files
 @section Saving Abbrevs in Files
address@hidden save abbrevs in files
 
   A file of saved abbrev definitions is actually a file of Lisp code.
 The abbrevs are saved in the form of a Lisp program to define the same
@@ -232,6 +235,9 @@ define the same abbrevs.  If @var{filename} is @code{nil} 
or omitted,
 
 @node Abbrev Expansion
 @section Looking Up and Expanding Abbreviations
address@hidden looking up abbrevs
address@hidden expanding abbrevs
address@hidden abbrevs, looking up and expanding
 
   Abbrevs are usually expanded by certain interactive commands,
 including @code{self-insert-command}.  This section describes the
@@ -367,6 +373,7 @@ definitions of @code{local-abbrev-table} and 
@code{text-mode-abbrev-table}.
 
 @node Standard Abbrev Tables
 @section Standard Abbrev Tables
address@hidden standard abbrev tables
 
   Here we list the variables that hold the abbrev tables for the
 preloaded major modes of Emacs.
@@ -409,6 +416,7 @@ Properties}.
 
 @node Abbrev Properties
 @section Abbrev Properties
address@hidden abbrev properties
 
 Abbrevs have properties, some of which influence the way they work.
 You can provide them as arguments to @code{define-abbrev}, and
@@ -449,6 +457,7 @@ modifies the capitalization of the expansion.
 
 @node Abbrev Table Properties
 @section Abbrev Table Properties
address@hidden abbrev table properties
 
 Like abbrevs, abbrev tables have properties, some of which influence
 the way they work.  You can provide them as arguments to
diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi
index 63f8f22..ca30f3e 100644
--- a/doc/lispref/backups.texi
+++ b/doc/lispref/backups.texi
@@ -50,6 +50,7 @@ don't want them any more, or Emacs can delete them 
automatically.
 
 @node Making Backups
 @subsection Making Backup Files
address@hidden making backup files
 
 @defun backup-buffer
   This function makes a backup of the file visited by the current
@@ -238,6 +239,7 @@ The default is 200.
 
 @node Numbered Backups
 @subsection Making and Deleting Numbered Backup Files
address@hidden numbered backups
 
   If a file's name is @file{foo}, the names of its numbered backup
 versions are @address@hidden, for various integers @var{v}, like
@@ -299,6 +301,7 @@ file.  The default address@hidden
 
 @node Backup Names
 @subsection Naming Backup Files
address@hidden naming backup files
 
   The functions in this section are documented mainly because you can
 customize the naming conventions for backup files by redefining them.
@@ -668,6 +671,7 @@ not initialize @code{auto-save-list-file-name}.
 
 @node Reverting
 @section Reverting
address@hidden reverting buffers
 
   If you have made extensive changes to a file and then change your mind
 about them, you can get rid of them by reading in the previous version
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index 5ac2d67..7c4fb87 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -762,6 +762,7 @@ signal an error if the current buffer is read-only.
 @node Buffer List
 @section The Buffer List
 @cindex buffer list
address@hidden listing all buffers
 
   The @dfn{buffer list} is a list of all live buffers.  The order of the
 buffers in this list is based primarily on how recently each buffer has
@@ -1215,6 +1216,7 @@ in the text it is swapped with will not interfere with 
auto-saving.
 
 @node Buffer Gap
 @section The Buffer Gap
address@hidden buffer gap
 
   Emacs buffers are implemented using an invisible @dfn{gap} to make
 insertion and deletion faster.  Insertion works by filling in part of
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index e5db4d8..c2b7038 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -147,6 +147,7 @@ code.
 @node Using Interactive
 @subsection Using @code{interactive}
 @cindex arguments, interactive entry
address@hidden interactive spec, using
 
   This section describes how to write the @code{interactive} form that
 makes a Lisp function an interactively-callable command, and how to
@@ -747,6 +748,8 @@ part of the prompt.
 
 @node Distinguish Interactive
 @section Distinguish Interactive Calls
address@hidden distinguish interactive calls
address@hidden is this call interactive
 
   Sometimes a command should display additional visual feedback (such
 as an informative message in the echo area) for interactive calls
@@ -835,6 +838,7 @@ Here is another example that contrasts direct and indirect 
calls to
 
 @node Command Loop Info
 @section Information from the Command Loop
address@hidden command loop variables
 
 The editor command loop sets several Lisp variables to keep status
 records for itself and for commands that are run.  With the exception of
@@ -1859,6 +1863,7 @@ bind it to the @code{signal usr1} event sequence:
 @node Classifying Events
 @subsection Classifying Events
 @cindex event type
address@hidden classifying events
 
   Every event has an @dfn{event type}, which classifies the event for
 key binding purposes.  For a keyboard event, the event type equals the
@@ -2584,6 +2589,9 @@ then continues to wait for a valid input character, or 
keyboard-quit.
 
 @node Event Mod
 @subsection Modifying and Translating Input Events
address@hidden modifiers of events
address@hidden translating input events
address@hidden event translation
 
   Emacs modifies every event it reads according to
 @code{extra-keyboard-modifiers}, then translates it through
@@ -2665,6 +2673,7 @@ at the level of @code{read-key-sequence}.
 
 @node Invoking the Input Method
 @subsection Invoking the Input Method
address@hidden invoking input method
 
   The event-reading functions invoke the current input method, if any
 (@pxref{Input Methods}).  If the value of @code{input-method-function}
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index fe492df..cb6cba9 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -347,6 +347,7 @@ it does nothing.  It always returns @var{function}.
 
 @node Eval During Compile
 @section Evaluation During Compilation
address@hidden eval during compilation
 
   These features permit you to write code to be evaluated during
 compilation of a program.
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index ea21233..fa760c4 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -44,6 +44,8 @@ structure constructs (@pxref{Macros}).
 
 @node Sequencing
 @section Sequencing
address@hidden sequencing
address@hidden sequential execution
 
   Evaluating forms in the order they appear is the most common way
 control passes from one form to another.  In some contexts, such as in a
@@ -405,6 +407,7 @@ the variable @code{x}.
 
 @node Combining Conditions
 @section Constructs for Combining Conditions
address@hidden combining conditions
 
   This section describes three constructs that are often used together
 with @code{if} and @code{cond} to express complicated conditions.  The
@@ -962,6 +965,7 @@ concept of continuable errors.
 
 @node Processing of Errors
 @subsubsection How Emacs Processes Errors
address@hidden processing of errors
 
 When an error is signaled, @code{signal} searches for an active
 @dfn{handler} for the error.  A handler is a sequence of Lisp
@@ -1367,6 +1371,7 @@ and their conditions.
 
 @node Cleanups
 @subsection Cleaning Up from Nonlocal Exits
address@hidden nonlocal exits, cleaning up
 
   The @code{unwind-protect} construct is essential whenever you
 temporarily put a data structure in an inconsistent state; it permits
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index 0c6497f..cdf599b 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -1227,6 +1227,8 @@ arguments, which will be used when creating the 
@code{radio-button} or
 
 @node Defining New Types
 @subsection Defining New Types
address@hidden customization types, define new
address@hidden define new customization types
 
 In the previous sections we have described how to construct elaborate
 type specifications for @code{defcustom}.  In some cases you may want
@@ -1296,6 +1298,7 @@ its @code{:type} argument only when needed.
 
 @node Applying Customizations
 @section Applying Customizations
address@hidden applying customizations
 
 The following functions are responsible for installing the user's
 customization settings for variables and faces, respectively.  When
@@ -1353,6 +1356,7 @@ evaluated.  @var{comment} is a string describing the 
customization.
 @node Custom Themes
 @section Custom Themes
 
address@hidden custom themes
   @dfn{Custom themes} are collections of settings that can be enabled
 or disabled as a unit.  @xref{Custom Themes,,, emacs, The GNU Emacs
 Manual}.  Each Custom theme is defined by an Emacs Lisp source file,
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index 66f12a0..0b3c47f 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -5,6 +5,7 @@
 @c See the file elisp.texi for copying conditions.
 @node Debugging
 @chapter Debugging Lisp Programs
address@hidden debugging lisp programs
 
   There are several ways to find and investigate problems in an Emacs
 Lisp program.
@@ -284,6 +285,8 @@ not currently set up to break on entry.
 
 @node Explicit Debug
 @subsection Explicit Entry to the Debugger
address@hidden debugger, explicit entry
address@hidden force entry to debugger
 
   You can cause the debugger to be called at a certain point in your
 program by writing the expression @code{(debug)} at that point.  To do
@@ -456,6 +459,7 @@ Toggle the display of local variables of the current stack 
frame.
 
 @node Invoking the Debugger
 @subsection Invoking the Debugger
address@hidden invoking lisp debugger
 
   Here we describe in full detail the function @code{debug} that is used
 to invoke the debugger.
@@ -707,6 +711,7 @@ find the mismatch.)
 
 @node Excess Open
 @subsection Excess Open Parentheses
address@hidden excess open parentheses
 
   The first step is to find the defun that is unbalanced.  If there is
 an excess open parenthesis, the way to do this is to go to the end of
@@ -741,6 +746,7 @@ anything.
 
 @node Excess Close
 @subsection Excess Close Parentheses
address@hidden excess close parentheses
 
   To deal with an excess close parenthesis, first go to the beginning
 of the file, then type @kbd{C-u -1 C-M-u} to find the end of the first
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 48860c8..e26d649 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -39,6 +39,8 @@ that Emacs presents to the user.
 
 @node Refresh Screen
 @section Refreshing the Screen
address@hidden refresh the screen
address@hidden screen refresh
 
   The function @code{redraw-frame} clears and redisplays the entire
 contents of a given frame (@pxref{Frames}).  This is useful if the
@@ -534,6 +536,7 @@ are logged that share a common prefix ending in @samp{...}.
 
 @node Echo Area Customization
 @subsection Echo Area Customization
address@hidden echo area customization
 
   These variables control details of how the echo area works.
 
@@ -661,6 +664,7 @@ specify a specific warning type.
 
 @node Warning Variables
 @subsection Warning Variables
address@hidden warning variables
 
   Programs can customize how their warnings appear by binding
 the variables described in this section.
@@ -738,6 +742,7 @@ all.
 
 @node Warning Options
 @subsection Warning Options
address@hidden warning options
 
   These variables are used by users to control what happens
 when a Lisp program reports a warning.
@@ -771,6 +776,7 @@ that warning is not logged.
 
 @node Delayed Warnings
 @subsection Delayed Warnings
address@hidden delayed warnings
 
 Sometimes, you may wish to avoid showing a warning while a command is
 running, and only show it only after the end of the command.  You can
@@ -1094,6 +1100,8 @@ You can use a display table to substitute other text for 
the ellipsis
 
 @node Temporary Displays
 @section Temporary Displays
address@hidden temporary display
address@hidden temporary buffer display
 
   Temporary displays are used by Lisp programs to put output into a
 buffer and then present it to the user for perusal rather than for
@@ -1305,6 +1313,8 @@ inside the overlay or outside, and likewise for the end 
of the overlay.
 
 @node Managing Overlays
 @subsection Managing Overlays
address@hidden managing overlays
address@hidden overlays, managing
 
   This section describes the functions to create, delete and move
 overlays, and to examine their contents.  Overlay changes are not
@@ -1465,6 +1475,7 @@ faster if you do @code{(overlay-recenter (point-max))} 
first.
 
 @node Overlay Properties
 @subsection Overlay Properties
address@hidden overlay properties
 
   Overlay properties are like text properties in that the properties that
 alter how a character is displayed can come from either source.  But in
@@ -1717,6 +1728,8 @@ Properties}.
 
 @node Finding Overlays
 @subsection Searching for Overlays
address@hidden searching for overlays
address@hidden overlays, searching for
 
 @defun overlays-at pos &optional sorted
 This function returns a list of all the overlays that cover the character at
@@ -1784,6 +1797,8 @@ changes.
 
 @node Size of Displayed Text
 @section Size of Displayed Text
address@hidden size of text on display
address@hidden character width on display
 
 Since not all characters have the same width, these functions let you
 check the width of a character.  @xref{Primitive Indent}, and
@@ -2274,6 +2289,7 @@ suitable for use with @code{:stipple} (see above).  It 
returns
 
 @node Defining Faces
 @subsection Defining Faces
address@hidden defining faces
 
 @cindex face spec
   The usual way to define a face is through the @code{defface} macro.
@@ -2448,6 +2464,7 @@ Any other value of @var{spec-type} is reserved for 
internal use.
 
 @node Attribute Functions
 @subsection Face Attribute Functions
address@hidden face attributes, access and modification
 
   This section describes functions for directly accessing and
 modifying the attributes of a named face.
@@ -2649,6 +2666,8 @@ a address@hidden @code{:inverse-video} attribute.
 
 @node Displaying Faces
 @subsection Displaying Faces
address@hidden displaying faces
address@hidden face merging
 
   When Emacs displays a given piece of text, the visual appearance of
 the text may be determined by faces drawn from different sources.  If
@@ -2704,6 +2723,7 @@ at the next level of face merging.
 
 @node Face Remapping
 @subsection Face Remapping
address@hidden face remapping
 
   The variable @code{face-remapping-alist} is used for buffer-local or
 global changes in the appearance of a face.  For instance, it is used
@@ -2901,6 +2921,7 @@ usually assign faces to around 400 to 600 characters at 
each call.
 
 @node Basic Faces
 @subsection Basic Faces
address@hidden basic faces
 
 If your Emacs Lisp program needs to assign some faces to text, it is
 often a good idea to use certain existing faces or inherit from them,
@@ -3067,6 +3088,8 @@ nominal heights and widths would suggest.
 
 @node Font Lookup
 @subsection Looking Up Fonts
address@hidden font lookup
address@hidden looking up fonts
 
 @defun x-list-fonts name &optional reference-face frame maximum width
 This function returns a list of available font names that match
@@ -3124,6 +3147,7 @@ encoding of the font.
 
 @node Fontsets
 @subsection Fontsets
address@hidden fontset
 
   A @dfn{fontset} is a list of fonts, each assigned to a range of
 character codes.  An individual font cannot display the whole range of
@@ -4237,6 +4261,7 @@ display specifications and what they mean.
 
 @node Replacing Specs
 @subsection Display Specs That Replace The Text
address@hidden replacing display specs
 
   Some kinds of display specifications specify something to display
 instead of the text that has the property.  These are called
@@ -5113,6 +5138,7 @@ Supports the @code{:index} property.  @xref{Multi-Frame 
Images}.
 
 @node Defining Images
 @subsection Defining Images
address@hidden define image
 
   The functions @code{create-image}, @code{defimage} and
 @code{find-image} provide convenient ways to create image descriptors.
@@ -5240,6 +5266,7 @@ Here is an example of using 
@code{image-load-path-for-library}:
 
 @node Showing Images
 @subsection Showing Images
address@hidden show image
 
   You can use an image descriptor by setting up the @code{display}
 property yourself, but it is easier to use the functions in this
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index b79d5df..55da631 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -81,6 +81,8 @@ computer program, however, it is good to keep the distinction 
in mind.
 
 @node Visiting Functions
 @subsection Functions for Visiting Files
address@hidden visiting files, functions for
address@hidden how to visit files
 
   This section describes the functions normally used to visit files.
 For historical reasons, these functions have names starting with
@@ -948,6 +950,8 @@ Unix.  These conventions are also followed by 
@code{file-attributes}
 
 @node Kinds of Files
 @subsection Distinguishing Kinds of Files
address@hidden file classification
address@hidden classification of file types
 
   This section describes how to distinguish various kinds of files, such
 as directories, symbolic links, and ordinary files.
@@ -2300,6 +2304,8 @@ through the immediately preceding @samp{/}).
 
 @node Unique File Names
 @subsection Generating Unique File Names
address@hidden unique file names
address@hidden temporary files
 
   Some programs need to write temporary files.  Here is the usual way to
 construct a name for such a file:
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 0bded22..c1da337 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -106,6 +106,7 @@ for @code{framep} above.
 
 @node Creating Frames
 @section Creating Frames
address@hidden frame creation
 
 To create a new frame, call the function @code{make-frame}.
 
@@ -484,6 +485,7 @@ parameter values to frames that will be created henceforth.
 
 @node Initial Parameters
 @subsection Initial Frame Parameters
address@hidden parameters of initial frame
 
 You can specify the parameters for the initial startup frame by
 setting @code{initial-frame-alist} in your init file (@pxref{Init
@@ -623,6 +625,7 @@ named, this parameter will be @code{nil}.
 @node Position Parameters
 @subsubsection Position Parameters
 @cindex window position on display
address@hidden frame position
 
   Position parameters' values are normally measured in pixels, but on
 text terminals they count characters or lines instead.
@@ -833,6 +836,8 @@ integer).  @xref{Line Height}, for more information.
 
 @node Buffer Parameters
 @subsubsection Buffer Parameters
address@hidden frame, which buffers to display
address@hidden buffers to display on frame
 
   These frame parameters, meaningful on all kinds of terminals, deal
 with which buffers have been, or should, be displayed in the frame.
@@ -1663,6 +1668,7 @@ is used whenever that frame is selected.  If the frame 
has a minibuffer,
 you can get it with @code{minibuffer-window} (@pxref{Definition of
 minibuffer-window}).
 
address@hidden frame without a minibuffer
 However, you can also create a frame with no minibuffer.  Such a frame
 must use the minibuffer window of some other frame.  When you create the
 frame, you can explicitly specify the minibuffer window to use (in some
@@ -2070,6 +2076,7 @@ allows to know if the pointer has been hidden.
 
 @node Pop-Up Menus
 @section Pop-Up Menus
address@hidden menus, popup
 
   A Lisp program can pop up a menu so that the user can choose an
 alternative with the mouse.  On a text terminal, if the mouse is not
@@ -2334,6 +2341,7 @@ clipboard as empty.
 
 @node Drag and Drop
 @section Drag and Drop
address@hidden drag and drop
 
 @vindex x-dnd-test-function
 @vindex x-dnd-known-types
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 0ac084b..9555c21 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1214,7 +1214,8 @@ ways to do it.  The added function is also called a piece 
of @emph{advice}.
 @end menu
 
 @node Core Advising Primitives
address@hidden Primitives to manipulate advice
address@hidden Primitives to manipulate advices
address@hidden advice, add and remove
 
 @defmac add-function where place function &optional props
 This macro is the handy way to add the advice @var{function} to the function
@@ -1316,6 +1317,7 @@ the current prefix argument.
 
 @node Advising Named Functions
 @subsection Advising Named Functions
address@hidden advising named functions
 
 A common use of advice is for named functions and macros.
 You could just use @code{add-function} as in:
@@ -1508,6 +1510,7 @@ More specifically, the composition of the two functions 
behaves like:
 
 @node Porting old advice
 @subsection Adapting code using the old defadvice
address@hidden old advices, porting
 
 A lot of code uses the old @code{defadvice} mechanism, which is largely made
 obsolete by the new @code{advice-add}, whose implementation and semantics is
diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi
index 536777a..323a2ed 100644
--- a/doc/lispref/hash.texi
+++ b/doc/lispref/hash.texi
@@ -188,6 +188,8 @@ Such objects may be added to the hash table after it is 
created.
 
 @node Hash Access
 @section Hash Table Access
address@hidden accessing hash tables
address@hidden hash table access
 
   This section describes the functions for accessing and storing
 associations in a hash table.  In general, any Lisp object can be used
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 20fb0e6..2e3b51e 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -90,6 +90,7 @@ hyperlinks in the @file{*Help*} buffer.)
 
 @node Accessing Documentation
 @section Access to Documentation Strings
address@hidden accessing documentation strings
 
 @defun documentation-property symbol property &optional verbatim
 This function returns the documentation string recorded in
@@ -507,6 +508,7 @@ address@hidden, the return value is always a vector.
 
 @node Help Functions
 @section Help Functions
address@hidden help functions
 
   Emacs provides a variety of built-in help functions, all accessible to
 the user as subcommands of the prefix @kbd{C-h}.  For more information
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index e652da0..91dc5ea 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -782,6 +782,7 @@ Lookup}.
 
 @node Controlling Active Maps
 @section Controlling the Active Keymaps
address@hidden active keymap, controlling
 
 @defvar global-map
 This variable contains the default global keymap that maps Emacs
@@ -1806,6 +1807,8 @@ local map.
 
 @node Scanning Keymaps
 @section Scanning Keymaps
address@hidden scanning keymaps
address@hidden keymaps, scanning
 
   This section describes functions used to scan all the current keymaps
 for the sake of printing help information.
@@ -2775,6 +2778,7 @@ function keys.
 
 @node Modifying Menus
 @subsection Modifying Menus
address@hidden menu modification
 
   When you insert a new item in an existing menu, you probably want to
 put it in a particular place among the menu's existing items.  If you
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index 21be5cc..e438335 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -84,6 +84,8 @@ structure made out of cons cells as a @dfn{list structure}.
 
 @node List-related Predicates
 @section Predicates on Lists
address@hidden predicates for lists
address@hidden list predicates
 
   The following predicates test whether a Lisp object is an atom,
 whether it is a cons cell or is a list, or whether it is the
@@ -662,6 +664,8 @@ Some examples:
 
 @node List Variables
 @section Modifying List Variables
address@hidden modify a list
address@hidden list modification
 
   These functions, and one macro, provide convenient ways
 to modify a list which is stored in a variable.
@@ -818,6 +822,8 @@ new @sc{car} or @sc{cdr}.
 
 @node Setcar
 @subsection Altering List Elements with @code{setcar}
address@hidden replace list element
address@hidden list, replace element
 
   Changing the @sc{car} of a cons cell is done with @code{setcar}.  When
 used on a list, @code{setcar} replaces one element of a list with a
@@ -923,6 +929,7 @@ x2:              |
 
 @node Setcdr
 @subsection Altering the CDR of a List
address@hidden replace part of list
 
   The lowest-level primitive for modifying a @sc{cdr} is @code{setcdr}:
 
@@ -1759,6 +1766,8 @@ and later discarded; this is not possible with a property 
list.
 
 @node Plist Access
 @subsection Property Lists Outside Symbols
address@hidden plist access
address@hidden accessing plist properties
 
   The following functions can be used to manipulate property lists.
 They all compare property names using @code{eq}.
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index a07c2e8..a0393c9 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -419,6 +419,8 @@ the shadowed files as a string.
 
 @node Loading Non-ASCII
 @section Loading address@hidden Characters
address@hidden loading, and non-ASCII characters
address@hidden non-ASCII characters in loaded files
 
   When Emacs Lisp programs contain string constants with address@hidden
 characters, these can be represented within Emacs either as unibyte
@@ -907,6 +909,8 @@ with a call to @code{provide}.  The order of the elements 
in the
 
 @node Where Defined
 @section Which File Defined a Certain Symbol
address@hidden symbol, where defined
address@hidden where was a symbol defined
 
 @defun symbol-file symbol &optional type
 This function returns the name of the file that defined @var{symbol}.
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index 9be12fa..8a4741c 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -194,6 +194,8 @@ During Compile}).
 
 @node Defining Macros
 @section Defining Macros
address@hidden defining macros
address@hidden macro, how to define
 
   A Lisp macro object is a list whose @sc{car} is @code{macro}, and
 whose @sc{cdr} is a function.  Expansion of the macro works
@@ -253,6 +255,7 @@ Form}.
 
 @node Problems with Macros
 @section Common Problems Using Macros
address@hidden macro caveats
 
   Macro expansion can have counterintuitive consequences.  This
 section describes some important consequences that can lead to
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index 51b87ab..5902a3a 100644
--- a/doc/lispref/markers.texi
+++ b/doc/lispref/markers.texi
@@ -118,6 +118,8 @@ m1
 
 @node Predicates on Markers
 @section Predicates on Markers
address@hidden predicates for markers
address@hidden markers, predicates for
 
   You can test an object to see whether it is a marker, or whether it is
 either an integer or a marker.  The latter test is useful in connection
@@ -141,6 +143,8 @@ integer or floating point) or a marker, @code{nil} 
otherwise.
 
 @node Creating Markers
 @section Functions that Create Markers
address@hidden creating markers
address@hidden marker creation
 
   When you create a new marker, you can make it point nowhere, or point
 to the present position of point, or to the beginning or end of the
@@ -269,6 +273,7 @@ if they both point nowhere.
 
 @node Information from Markers
 @section Information from Markers
address@hidden marker information
 
   This section describes the functions for accessing the components of a
 marker object.
@@ -342,6 +347,8 @@ specify the insertion type, create them with insertion type
 
 @node Moving Markers
 @section Moving Marker Positions
address@hidden moving markers
address@hidden marker, how to move position
 
   This section describes how to change the position of an existing
 marker.  When you do this, be sure you know whether the marker is used
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 57ae0e9..e6d6ad0 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -107,6 +107,7 @@ are available in batch mode.
 
 @node Text from Minibuffer
 @section Reading Text Strings with the Minibuffer
address@hidden minibuffer input, reading text strings
 
   The most basic primitive for minibuffer input is
 @code{read-from-minibuffer}, which can be used to read either a string
@@ -390,6 +391,7 @@ following bindings, in addition to those of 
@code{minibuffer-local-map}:
 
 @node Object from Minibuffer
 @section Reading Lisp Objects with the Minibuffer
address@hidden minibuffer input, reading lisp objects
 
   This section describes functions for reading Lisp objects with the
 minibuffer.
@@ -2044,6 +2046,7 @@ Do you really want to remove everything? (yes or no)
 
 @node Multiple Queries
 @section Asking Multiple Y-or-N Questions
address@hidden multiple yes-or-no questions
 
   When you have a series of similar questions to ask, such as ``Do you
 want to save this buffer'' for each buffer in turn, you should use
@@ -2285,6 +2288,8 @@ default value is 0.25.
 
 @node Minibuffer Contents
 @section Minibuffer Contents
address@hidden access minibuffer contents
address@hidden minibuffer contents, accessing
 
   These functions access the minibuffer prompt and contents.
 
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index 902eb40..fedf933 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -783,6 +783,8 @@ of them is @code{nil}, it defaults to the first or last 
codepoint of
 
 @node Scanning Charsets
 @section Scanning for Character Sets
address@hidden scanning for character sets
address@hidden character set, searching
 
   Sometimes it is useful to find out which character set a particular
 character belongs to.  One use for this is in determining which coding
@@ -1620,6 +1622,9 @@ contents (as it usually does), it should examine the 
contents of
 
 @node Specifying Coding Systems
 @subsection Specifying a Coding System for One Operation
address@hidden specify coding system
address@hidden force coding system for operation
address@hidden coding system for operation
 
   You can specify the coding system for a specific operation by binding
 the variables @code{coding-system-for-read} and/or
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index b709447..e3e5613 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1208,6 +1208,7 @@ return value is @code{nil}.
 
 @node Time of Day
 @section Time of Day
address@hidden time of day
 
   This section explains how to determine the current time and time
 zone.
@@ -1320,6 +1321,7 @@ time zone.
 @node Time Conversion
 @section Time Conversion
 @cindex calendrical information
address@hidden time conversion
 
   These functions convert time values (@pxref{Time of Day}) into
 calendrical information and vice versa.
@@ -1415,6 +1417,9 @@ on others, years as early as 1901 do work.
 
 @node Time Parsing
 @section Parsing and Formatting Times
address@hidden time parsing
address@hidden time formatting
address@hidden formatting time values
 
   These functions convert time values to text in a string, and vice versa.
 Time values are lists of two to four integers (@pxref{Time of Day}).
@@ -1643,6 +1648,9 @@ interactively, it prints the duration in the echo area.
 
 @node Time Calculations
 @section Time Calculations
address@hidden time calculations
address@hidden comparing time values
address@hidden calendrical computations
 
   These functions perform calendrical computations using time values
 (@pxref{Time of Day}).
@@ -1823,6 +1831,7 @@ cause anything special to happen.
 
 @node Idle Timers
 @section Idle Timers
address@hidden idle timers
 
   Here is how to set up a timer that runs when Emacs is idle for a
 certain length of time.  Aside from how to set them up, idle timers
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 032baa9..24ff5d8 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -465,6 +465,7 @@ beginning or end of a line.
 
 @node Screen Lines
 @subsection Motion by Screen Lines
address@hidden screen lines, moving by
 
   The line functions in the previous section count text lines, delimited
 only by newline characters.  By contrast, these functions count screen
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 0952cc1..856831d 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -63,6 +63,8 @@ Processes}.
 
 @node Subprocess Creation
 @section Functions that Create Subprocesses
address@hidden create subprocess
address@hidden process creation
 
   There are three primitives that create a new subprocess in which to run
 a program.  One of them, @code{start-process}, creates an asynchronous
@@ -734,6 +736,7 @@ happen sooner or later).
 
 @node Process Information
 @section Process Information
address@hidden process information
 
   Several functions return information about processes.
 
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 992ad00..19c515f 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -257,6 +257,8 @@ it easier to verify even very complex regexps.
 
 @node Syntax of Regexps
 @subsection Syntax of Regular Expressions
address@hidden regexp syntax
address@hidden syntax of regular expressions
 
   Regular expressions have a syntax in which a few characters are
 special constructs and the rest are @dfn{ordinary}.  An ordinary
@@ -294,6 +296,7 @@ need to use one of the special regular expression 
constructs.
 
 @node Regexp Special
 @subsubsection Special Characters in Regular Expressions
address@hidden regexp, special characters in
 
   Here is a list of the characters that are special in a regular
 expression.
@@ -894,6 +897,7 @@ beyond the minimum needed to end a sentence.
 
   These functions operate on regular expressions.
 
address@hidden quote special characters in regexp
 @defun regexp-quote string
 This function returns a regular expression whose only exact match is
 @var{string}.  Using this regular expression in @code{looking-at} will
@@ -924,6 +928,7 @@ whitespace:
 @end example
 @end defun
 
address@hidden optimize regexp
 @defun regexp-opt strings &optional paren
 This function returns an efficient regular expression that will match
 any of the strings in the list @var{strings}.  This is useful when you
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index 1ecc567..026c7a7 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -92,6 +92,8 @@ representations and to encode and decode character codes.
 
 @node Predicates for Strings
 @section Predicates for Strings
address@hidden predicates for strings
address@hidden string predicates
 
 For more information about general sequence and array predicates,
 see @ref{Sequences Arrays Vectors}, and @ref{Arrays}.
@@ -113,6 +115,8 @@ character (i.e., an integer), @code{nil} otherwise.
 
 @node Creating Strings
 @section Creating Strings
address@hidden creating strings
address@hidden string creation
 
   The following functions create strings, either from scratch, or by
 putting strings together, or by taking them apart.
@@ -367,6 +371,8 @@ usual value is @address@hidden"[ \f\t\n\r\v]+"}}.
 
 @node Modifying Strings
 @section Modifying Strings
address@hidden modifying strings
address@hidden string modification
 
   The most basic way to alter the contents of an existing string is with
 @code{aset} (@pxref{Array Functions}).  @code{(aset @var{string}
@@ -400,6 +406,7 @@ zeros.  It may also change @var{string}'s length.
 @node Text Comparison
 @section Comparison of Characters and Strings
 @cindex string equality
address@hidden text comparison
 
 @defun char-equal character1 character2
 This function returns @code{t} if the arguments represent the same
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index 25e6089..33577e7 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -592,6 +592,8 @@ in turn, repeatedly, until they all return @code{nil}.
 
 @node Motion and Syntax
 @section Motion and Syntax
address@hidden moving across syntax classes
address@hidden skipping characters of certain syntax
 
   This section describes functions for moving across characters that
 have certain syntax classes.
@@ -631,6 +633,8 @@ expression prefix syntax class, and characters with the 
@samp{p} flag.
 
 @node Parsing Expressions
 @section Parsing Expressions
address@hidden parsing expressions
address@hidden scanning expressions
 
   This section describes functions for parsing and scanning balanced
 expressions.  We will refer to such expressions as @dfn{sexps},
@@ -673,6 +677,7 @@ result, Emacs treats them as four consecutive empty string 
constants.
 
 @node Motion via Parsing
 @subsection Motion Commands Based on Parsing
address@hidden motion based on parsing
 
   This section describes simple point-motion functions that operate
 based on parsing expressions.
@@ -738,6 +743,7 @@ cannot exceed that many.
 
 @node Position Parse
 @subsection Finding the Parse State for a Position
address@hidden parse state for a position
 
   For syntactic analysis, such as in indentation, often the useful
 thing is to compute the syntactic state corresponding to a given buffer
@@ -919,6 +925,7 @@ nicely.
 
 @node Control Parsing
 @subsection Parameters to Control Parsing
address@hidden parsing, control parameters
 
 @defvar multibyte-syntax-as-symbol
 If this variable is address@hidden, @code{scan-sexps} treats all
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 06d1381..379fb29 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -162,6 +162,7 @@ the end of a line.
 
 @node Buffer Contents
 @section Examining Buffer Contents
address@hidden buffer portion as string
 
   This section describes functions that allow a Lisp program to
 convert any portion of the text in the buffer into a string.
@@ -2679,6 +2680,8 @@ along with the characters; this includes such diverse 
functions as
 
 @node Examining Properties
 @subsection Examining Text Properties
address@hidden examining text properties
address@hidden text properties, examining
 
   The simplest way to examine text properties is to ask for the value of
 a particular property of a particular character.  For that, use
@@ -2770,6 +2773,8 @@ used instead.  Here is an example:
 
 @node Changing Properties
 @subsection Changing Text Properties
address@hidden changing text properties
address@hidden text properties, changing
 
   The primitives for changing properties apply to a specified range of
 text in a buffer or string.  The function @code{set-text-properties}
@@ -2933,6 +2938,8 @@ buffer but does not copy its properties.
 
 @node Property Search
 @subsection Text Property Search Functions
address@hidden searching text properties
address@hidden text properties, searching
 
   In typical use of text properties, most of the time several or many
 consecutive characters have the same value for a property.  Rather than
@@ -3991,6 +3998,8 @@ coalesced whenever possible.  @xref{Property Search}.
 
 @node Substitution
 @section Substituting for a Character Code
address@hidden replace characters in region
address@hidden substitute characters
 
   The following functions replace characters within a specified region
 based on their character codes.
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index e890dbc..b3466e6 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1951,6 +1951,7 @@ foo
 
 @node Variables with Restricted Values
 @section Variables with Restricted Values
address@hidden lisp variables defined in C, restrictions
 
   Ordinary Lisp variables can be assigned any value that is a valid
 Lisp object.  However, certain Lisp variables are not defined in Lisp,
@@ -1987,6 +1988,8 @@ Attempting to assign them any other value will result in 
an error:
 @node Generalized Variables
 @section Generalized Variables
 
address@hidden generalized variable
address@hidden place form
 A @dfn{generalized variable} or @dfn{place form} is one of the many places
 in Lisp memory where values can be stored.  The simplest place form is
 a regular Lisp variable.  But the @sc{car}s and @sc{cdr}s of lists, elements
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 7c8d0b0..a172a4a 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -1252,6 +1252,8 @@ are the opposite of what they are in those other 
functions.
 
 @node Recombining Windows
 @section Recombining Windows
address@hidden recombining windows
address@hidden windows, recombining
 
 When deleting the last sibling of a window @var{W}, its parent window
 is deleted too, with @var{W} replacing it in the window tree.  This
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 8174063..61e2e42 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,50 @@
 2014-12-27  Michael Albinus  <address@hidden>
 
+       * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
+       Use `tramp-rsh-end-of-line', it ought to be more robust.
+
+2014-12-27  Stefan Monnier  <address@hidden>
+
+       * progmodes/js.el (js-syntax-propertize): "return" can't be divided
+       (bug#19397).
+
+2014-12-27  Michael Albinus  <address@hidden>
+
+       * net/tramp.el (tramp-read-passwd): Ignore errors from `auth-source-*'.
+
+       * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Use "\n"
+       as end-of-line delimeter for passwords, when running on MS Windows.
+
+2014-12-27  Stefan Monnier  <address@hidden>
+
+       * progmodes/sh-script.el (sh-set-shell): Don't change the global value
+       of indent-line-function (bug#19433).
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       Fix line numbers on Python shell.
+       * progmodes/python.el (python-shell--save-temp-file): Do not
+       append coding cookie.
+       (python-shell-send-string): Generalize for
+       python-shell-send-region.
+       (python--use-fake-loc): Delete var.
+       (python-shell-buffer-substring): Cleanup fake-loc logic.
+       (python-shell-send-region): Remove fake-loc logic, simplify.
+
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       * progmodes/python.el (python-indent-post-self-insert-function):
+       Make colon to re-indent only for dedenters, handling
+       multiline-statements gracefully.
+
+2014-12-27  Michael Albinus  <address@hidden>
+
+       * net/tramp.el (tramp-handle-insert-file-contents):
+       Set `find-file-not-found-functions' in case of errors.  (Bug#18623)
+
+2014-12-27  Michael Albinus  <address@hidden>
+2014-12-27  Michael Albinus  <address@hidden>
+
        * net/tramp-sh.el (tramp-send-command-and-read): New optional
        arg MARKER.
        (tramp-get-remote-path): Use it.
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 2e2e2ac..6fc2eff 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -2471,8 +2471,12 @@ The method used must be an out-of-band method."
                   (mapconcat 'identity (process-command p) " "))
                  (tramp-set-connection-property p "vector" orig-vec)
                  (tramp-compat-set-process-query-on-exit-flag p nil)
-                 (tramp-process-actions
-                  p v nil tramp-actions-copy-out-of-band)
+
+                 ;; We must adapt `tramp-local-end-of-line' for
+                 ;; sending the password.
+                 (let ((tramp-local-end-of-line tramp-rsh-end-of-line))
+                   (tramp-process-actions
+                    p v nil tramp-actions-copy-out-of-band))
 
                  ;; Check the return code.
                  (goto-char (point-max))
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 7aba749..dc62cee 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -3086,115 +3086,118 @@ User is always nil."
   (setq filename (expand-file-name filename))
   (let (result local-copy remote-copy)
     (with-parsed-tramp-file-name filename nil
-      (with-tramp-progress-reporter
-         v 3 (format "Inserting `%s'" filename)
-       (unwind-protect
-           (if (not (file-exists-p filename))
-               (progn
-                 ;; We don't raise a Tramp error, because it might be
-                 ;; suppressed, like in `find-file-noselect-1'.
-                 (tramp-message
-                  v 1 "File not `%s' found on remote host" filename)
-                 (signal 'file-error
-                         (list "File not found on remote host" filename)))
-
-             (if (and (tramp-local-host-p v)
-                      (let (file-name-handler-alist)
-                        (file-readable-p localname)))
-                 ;; Short track: if we are on the local host, we can
-                 ;; run directly.
-                 (setq result
-                       (tramp-run-real-handler
-                        'insert-file-contents
-                        (list localname visit beg end replace)))
-
-               ;; When we shall insert only a part of the file, we
-               ;; copy this part.  This works only for the shell file
-               ;; name handlers.
-               (when (and (or beg end)
-                          (tramp-get-method-parameter
-                           (tramp-file-name-method v) 'tramp-login-program))
-                 (setq remote-copy (tramp-make-tramp-temp-file v))
-                 ;; This is defined in tramp-sh.el.  Let's assume
-                 ;; this is loaded already.
-                 (tramp-compat-funcall
-                  'tramp-send-command
-                  v
-                  (cond
-                   ((and beg end)
-                    (format "dd bs=1 skip=%d if=%s count=%d of=%s"
-                            beg (tramp-shell-quote-argument localname)
-                            (- end beg) remote-copy))
-                   (beg
-                    (format "dd bs=1 skip=%d if=%s of=%s"
-                            beg (tramp-shell-quote-argument localname)
-                            remote-copy))
-                   (end
-                    (format "dd bs=1 count=%d if=%s of=%s"
-                            end (tramp-shell-quote-argument localname)
-                            remote-copy))))
-                 (setq tramp-temp-buffer-file-name nil beg nil end nil))
-
-               ;; `insert-file-contents-literally' takes care to
-               ;; avoid calling jka-compr.  By let-binding
-               ;; `inhibit-file-name-operation', we propagate that
-               ;; care to the `file-local-copy' operation.
-               (setq local-copy
-                     (let ((inhibit-file-name-operation
-                            (when (eq inhibit-file-name-operation
-                                      'insert-file-contents)
-                              'file-local-copy)))
-                       (cond
-                        ((stringp remote-copy)
-                         (file-local-copy
-                          (tramp-make-tramp-file-name
-                           method user host remote-copy)))
-                        ((stringp tramp-temp-buffer-file-name)
-                         (copy-file filename tramp-temp-buffer-file-name 'ok)
-                         tramp-temp-buffer-file-name)
-                        (t (file-local-copy filename)))))
-
-               ;; When the file is not readable for the owner, it
-               ;; cannot be inserted, even if it is readable for the
-               ;; group or for everybody.
-               (set-file-modes
-                local-copy (tramp-compat-octal-to-decimal "0600"))
-
-               (when (and (null remote-copy)
-                          (tramp-get-method-parameter
-                           method 'tramp-copy-keep-tmpfile))
-                 ;; We keep the local file for performance reasons,
-                 ;; useful for "rsync".
-                 (setq tramp-temp-buffer-file-name local-copy))
-
-               ;; We must ensure that `file-coding-system-alist'
-               ;; matches `local-copy'.  We must also use `visit',
-               ;; otherwise there might be an error in the
-               ;; `revert-buffer' function under XEmacs.
-               (let ((file-coding-system-alist
-                      (tramp-find-file-name-coding-system-alist
-                       filename local-copy)))
-                 (setq result
-                       (insert-file-contents
-                        local-copy visit beg end replace)))))
-
-         ;; Save exit.
-         (progn
-           (when visit
-             (setq buffer-file-name filename)
-             (setq buffer-read-only (not (file-writable-p filename)))
-             (set-visited-file-modtime)
-             (set-buffer-modified-p nil))
-           (when (and (stringp local-copy)
-                      (or remote-copy (null tramp-temp-buffer-file-name)))
-             (delete-file local-copy))
-           (when (stringp remote-copy)
-             (delete-file
-              (tramp-make-tramp-file-name method user host remote-copy)))))))
-
-    ;; Result.
-    (list (expand-file-name filename)
-         (cadr result))))
+      (unwind-protect
+         (if (not (file-exists-p filename))
+             (tramp-error
+              v 'file-error "File `%s' not found on remote host" filename)
+
+           (with-tramp-progress-reporter
+               v 3 (format "Inserting `%s'" filename)
+             (condition-case err
+                 (if (and (tramp-local-host-p v)
+                          (let (file-name-handler-alist)
+                            (file-readable-p localname)))
+                     ;; Short track: if we are on the local host, we can
+                     ;; run directly.
+                     (setq result
+                           (tramp-run-real-handler
+                            'insert-file-contents
+                            (list localname visit beg end replace)))
+
+                   ;; When we shall insert only a part of the file, we
+                   ;; copy this part.  This works only for the shell file
+                   ;; name handlers.
+                   (when (and (or beg end)
+                              (tramp-get-method-parameter
+                               (tramp-file-name-method v)
+                               'tramp-login-program))
+                     (setq remote-copy (tramp-make-tramp-temp-file v))
+                     ;; This is defined in tramp-sh.el.  Let's assume
+                     ;; this is loaded already.
+                     (tramp-compat-funcall
+                      'tramp-send-command
+                      v
+                      (cond
+                       ((and beg end)
+                        (format "dd bs=1 skip=%d if=%s count=%d of=%s"
+                                beg (tramp-shell-quote-argument localname)
+                                (- end beg) remote-copy))
+                       (beg
+                        (format "dd bs=1 skip=%d if=%s of=%s"
+                                beg (tramp-shell-quote-argument localname)
+                                remote-copy))
+                       (end
+                        (format "dd bs=1 count=%d if=%s of=%s"
+                                end (tramp-shell-quote-argument localname)
+                                remote-copy))))
+                     (setq tramp-temp-buffer-file-name nil beg nil end nil))
+
+                   ;; `insert-file-contents-literally' takes care to
+                   ;; avoid calling jka-compr.  By let-binding
+                   ;; `inhibit-file-name-operation', we propagate that
+                   ;; care to the `file-local-copy' operation.
+                   (setq local-copy
+                         (let ((inhibit-file-name-operation
+                                (when (eq inhibit-file-name-operation
+                                          'insert-file-contents)
+                                  'file-local-copy)))
+                           (cond
+                            ((stringp remote-copy)
+                             (file-local-copy
+                              (tramp-make-tramp-file-name
+                               method user host remote-copy)))
+                            ((stringp tramp-temp-buffer-file-name)
+                             (copy-file
+                              filename tramp-temp-buffer-file-name 'ok)
+                             tramp-temp-buffer-file-name)
+                            (t (file-local-copy filename)))))
+
+                   ;; When the file is not readable for the owner, it
+                   ;; cannot be inserted, even if it is readable for the
+                   ;; group or for everybody.
+                   (set-file-modes
+                    local-copy (tramp-compat-octal-to-decimal "0600"))
+
+                   (when (and (null remote-copy)
+                              (tramp-get-method-parameter
+                               method 'tramp-copy-keep-tmpfile))
+                     ;; We keep the local file for performance reasons,
+                     ;; useful for "rsync".
+                     (setq tramp-temp-buffer-file-name local-copy))
+
+                   ;; We must ensure that `file-coding-system-alist'
+                   ;; matches `local-copy'.  We must also use `visit',
+                   ;; otherwise there might be an error in the
+                   ;; `revert-buffer' function under XEmacs.
+                   (let ((file-coding-system-alist
+                          (tramp-find-file-name-coding-system-alist
+                           filename local-copy)))
+                     (setq result
+                           (insert-file-contents
+                            local-copy visit beg end replace))))
+               (error
+                (add-hook 'find-file-not-found-functions
+                          `(lambda () (signal ',(car err) ',(cdr err)))
+                          nil t)
+                (signal (car err) (cdr err))))))
+
+       ;; Save exit.
+       (progn
+         (when visit
+           (setq buffer-file-name filename)
+           (setq buffer-read-only (not (file-writable-p filename)))
+           (set-visited-file-modtime)
+           (set-buffer-modified-p nil))
+         (when (and (stringp local-copy)
+                    (or remote-copy (null tramp-temp-buffer-file-name)))
+           (delete-file local-copy))
+         (when (stringp remote-copy)
+           (delete-file
+            (tramp-make-tramp-file-name method user host remote-copy)))))
+
+      ;; Result.
+      (list (expand-file-name filename)
+           (cadr result)))))
 
 (defun tramp-handle-load (file &optional noerror nomessage nosuffix 
must-suffix)
   "Like `load' for Tramp files."
@@ -4188,25 +4191,27 @@ Invokes `password-read' if available, `read-passwd' 
else."
               ;; it's bound.  `auth-source-user-or-password' is an
               ;; obsoleted function, it has been replaced by
               ;; `auth-source-search'.
-              (and (boundp 'auth-sources)
-                   (tramp-get-connection-property
-                    v "first-password-request" nil)
-                   ;; Try with Tramp's current method.
-                   (if (fboundp 'auth-source-search)
-                       (setq auth-info
-                             (tramp-compat-funcall
-                              'auth-source-search
-                              :max 1
-                              :user (or tramp-current-user t)
-                              :host tramp-current-host
-                              :port tramp-current-method)
-                             auth-passwd (plist-get (nth 0 auth-info) :secret)
-                             auth-passwd (if (functionp auth-passwd)
-                                             (funcall auth-passwd)
-                                           auth-passwd))
-                     (tramp-compat-funcall
-                      'auth-source-user-or-password
-                      "password" tramp-current-host tramp-current-method)))
+              (ignore-errors
+                (and (boundp 'auth-sources)
+                     (tramp-get-connection-property
+                      v "first-password-request" nil)
+                     ;; Try with Tramp's current method.
+                     (if (fboundp 'auth-source-search)
+                         (setq auth-info
+                               (tramp-compat-funcall
+                                'auth-source-search
+                                :max 1
+                                :user (or tramp-current-user t)
+                                :host tramp-current-host
+                                :port tramp-current-method)
+                               auth-passwd (plist-get
+                                            (nth 0 auth-info) :secret)
+                               auth-passwd (if (functionp auth-passwd)
+                                               (funcall auth-passwd)
+                                             auth-passwd))
+                       (tramp-compat-funcall
+                        'auth-source-user-or-password
+                        "password" tramp-current-host tramp-current-method))))
               ;; Try the password cache.
               (when (functionp 'password-read)
                 (let ((password
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 45074d3..f6a9440 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -1673,7 +1673,7 @@ This performs fontification according to 
`js--class-styles'."
     ;; We can probably just add +, -, !, <, >, %, ^, ~, |, &, ?, : at which
     ;; point I think only * and / would be missing which could also be added,
     ;; but need care to avoid affecting the // and */ comment markers.
-    ("\\(?:^\\|[=([{,:;]\\)\\(?:[ \t]\\)*\\(/\\)[^/*]"
+    ("\\(?:^\\|[=([{,:;]\\|\\_<return\\_>\\)\\(?:[ \t]\\)*\\(/\\)[^/*]"
      (1 (ignore
         (forward-char -1)
          (when (or (not (memq (char-after (match-beginning 0)) '(?\s ?\t)))
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index bd8c734..b1c6b01 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1206,12 +1206,18 @@ the line will be re-indented automatically if needed."
            (eolp)
            ;; Avoid re-indenting on extra colon
            (not (equal ?: (char-before (1- (point)))))
-           (not (python-syntax-comment-or-string-p))
-           ;; Never re-indent at beginning of defun
-           (not (save-excursion
-                  (python-nav-beginning-of-statement)
-                  (python-info-looking-at-beginning-of-defun))))
-      (python-indent-line)))))
+           (not (python-syntax-comment-or-string-p)))
+      ;; Just re-indent dedenters
+      (let ((dedenter-pos (python-info-dedenter-statement-p))
+            (current-pos (point)))
+        (when dedenter-pos
+          (save-excursion
+            (goto-char dedenter-pos)
+            (python-indent-line)
+            (unless (= (line-number-at-pos dedenter-pos)
+                       (line-number-at-pos current-pos))
+              ;; Reindent region if this is a multiline statement
+              (python-indent-region dedenter-pos current-pos)))))))))
 
 
 ;;; Navigation
@@ -2608,9 +2614,12 @@ there for compatibility with CEDET.")
               (concat (file-remote-p default-directory) "/tmp")
             temporary-file-directory))
          (temp-file-name (make-temp-file "py"))
+         ;; XXX: Python's built-in compile function accepts utf-8 as
+         ;; input so there's no need to enforce a coding cookie.  In
+         ;; the future making `coding-system-for-write' match the
+         ;; current buffer's coding may be a good idea.
          (coding-system-for-write 'utf-8))
     (with-temp-file temp-file-name
-      (insert "# -*- coding: utf-8 -*-\n") ;Not needed for Python-3.
       (insert string)
       (delete-trailing-whitespace))
     temp-file-name))
@@ -2620,8 +2629,9 @@ there for compatibility with CEDET.")
   (interactive "sPython command: ")
   (let ((process (or process (python-shell-get-or-create-process))))
     (if (string-match ".\n+." string)   ;Multiline.
-        (let* ((temp-file-name (python-shell--save-temp-file string)))
-          (python-shell-send-file temp-file-name process temp-file-name t))
+        (let* ((temp-file-name (python-shell--save-temp-file string))
+               (file-name (or (buffer-file-name) temp-file-name)))
+          (python-shell-send-file file-name process temp-file-name t))
       (comint-send-string process string)
       (when (or (not (string-match "\n\\'" string))
                 (string-match "\n[ \t].*\n?\\'" string))
@@ -2697,12 +2707,6 @@ Returns the output.  See 
`python-shell-send-string-no-output'."
 (define-obsolete-function-alias
   'python-send-string 'python-shell-internal-send-string "24.3")
 
-(defvar python--use-fake-loc nil
-  "If non-nil, use `compilation-fake-loc' to trace errors back to the buffer.
-If nil, regions of text are prepended by the corresponding number of empty
-lines and Python is told to output error messages referring to the whole
-source file.")
-
 (defun python-shell-buffer-substring (start end &optional nomain)
   "Send buffer substring from START to END formatted for shell.
 This is a wrapper over `buffer-substring' that takes care of
@@ -2715,8 +2719,7 @@ the python shell:
   3. Wraps indented regions under an \"if True:\" block so the
      interpreter evaluates them correctly."
   (let ((substring (buffer-substring-no-properties start end))
-        (fillstr (unless python--use-fake-loc
-                   (make-string (1- (line-number-at-pos start)) ?\n)))
+        (fillstr (make-string (1- (line-number-at-pos start)) ?\n))
         (toplevel-block-p (save-excursion
                             (goto-char start)
                             (or (zerop (line-number-at-pos start))
@@ -2728,11 +2731,6 @@ the python shell:
       (if fillstr (insert fillstr))
       (insert substring)
       (goto-char (point-min))
-      (unless python--use-fake-loc
-        ;; python-shell--save-temp-file adds an extra coding line, which would
-        ;; throw off the line-counts, so let's try to compensate here.
-        (if (looking-at "[ \t]*[#\n]")
-            (delete-region (point) (line-beginning-position 2))))
       (when (not toplevel-block-p)
         (insert "if True:")
         (delete-region (point) (line-end-position)))
@@ -2756,26 +2754,14 @@ the python shell:
                  (line-number-at-pos if-name-main-start)) ?\n)))))
       (buffer-substring-no-properties (point-min) (point-max)))))
 
-(declare-function compilation-fake-loc "compile"
-                  (marker file &optional line col))
-
 (defun python-shell-send-region (start end &optional nomain)
   "Send the region delimited by START and END to inferior Python process."
   (interactive "r")
-  (let* ((python--use-fake-loc
-          (or python--use-fake-loc (not buffer-file-name)))
-         (string (python-shell-buffer-substring start end nomain))
+  (let* ((string (python-shell-buffer-substring start end nomain))
          (process (python-shell-get-or-create-process))
          (_ (string-match "\\`\n*\\(.*\\)" string)))
     (message "Sent: %s..." (match-string 1 string))
-    (let* ((temp-file-name (python-shell--save-temp-file string))
-           (file-name (or (buffer-file-name) temp-file-name)))
-      (python-shell-send-file file-name process temp-file-name t)
-      (unless python--use-fake-loc
-        (with-current-buffer (process-buffer process)
-          (compilation-fake-loc (copy-marker start) temp-file-name
-                                2)) ;; Not 1, because of the added coding line.
-        ))))
+    (python-shell-send-string string process)))
 
 (defun python-shell-send-buffer (&optional arg)
   "Send the entire buffer to inferior Python process.
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 524749d..904e9df 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -2374,7 +2374,7 @@ Calls the value of `sh-set-shell-hook' if set."
            (sh-make-vars-local))
        (message "Indentation setup for shell type %s" sh-shell))
     (message "No indentation for this shell type.")
-    (setq indent-line-function 'sh-basic-indent-line))
+    (setq-local indent-line-function 'sh-basic-indent-line))
   (when font-lock-mode
     (setq font-lock-set-defaults nil)
     (font-lock-set-defaults)
diff --git a/src/ChangeLog b/src/ChangeLog
index 8e72ddb..9bc28de 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-27  Jan Djärv  <address@hidden>
+
+       * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert
+       when going to fullscreen (Bug#0x180004f).
 2014-12-27  Stefan Monnier  <address@hidden>
 
        * buffer.c (syms_of_buffer) <Vafter_change_functions>: fix docstring.
diff --git a/src/xterm.c b/src/xterm.c
index 0640208..130174d 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -9230,13 +9230,9 @@ do_ewmh_fullscreen (struct frame *f)
       switch (f->want_fullscreen)
         {
         case FULLSCREEN_BOTH:
-          if (cur == FULLSCREEN_WIDTH || cur == FULLSCREEN_MAXIMIZED
-              || cur == FULLSCREEN_HEIGHT)
-            set_wm_state (frame, false,
-                         dpyinfo->Xatom_net_wm_state_maximized_horz,
-                          dpyinfo->Xatom_net_wm_state_maximized_vert);
-          set_wm_state (frame, true,
-                       dpyinfo->Xatom_net_wm_state_fullscreen, None);
+          if (cur != FULLSCREEN_BOTH)
+            set_wm_state (frame, true, dpyinfo->Xatom_net_wm_state_fullscreen,
+                          None);
           break;
         case FULLSCREEN_WIDTH:
           if (cur == FULLSCREEN_BOTH || cur == FULLSCREEN_HEIGHT
diff --git a/test/ChangeLog b/test/ChangeLog
index 4e59ee0..e7b8fec 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-27  Fabián Ezequiel Gallina  <address@hidden>
+
+       * automated/python-tests.el (python-indent-electric-colon-2)
+       (python-indent-electric-colon-3): New tests.
+
+2014-12-27  João Távora  <address@hidden>
 2014-12-27  João Távora  <address@hidden>
 
        * automated/electric-tests.el (autowrapping-7): Tests for
diff --git a/test/automated/python-tests.el b/test/automated/python-tests.el
index fd42794..ab0ab2d 100644
--- a/test/automated/python-tests.el
+++ b/test/automated/python-tests.el
@@ -740,6 +740,39 @@ def b()
    (python-tests-self-insert ":")
    (should (= (current-indentation) 0))))
 
+(ert-deftest python-indent-electric-colon-2 ()
+  "Test indentation case for dedenter."
+  (python-tests-with-temp-buffer
+   "
+if do:
+    something()
+    else
+"
+   (python-tests-look-at "else")
+   (goto-char (line-end-position))
+   (python-tests-self-insert ":")
+   (should (= (current-indentation) 0))))
+
+(ert-deftest python-indent-electric-colon-3 ()
+  "Test indentation case for multi-line dedenter."
+  (python-tests-with-temp-buffer
+   "
+if do:
+    something()
+    elif (this
+          and
+          that)
+"
+   (python-tests-look-at "that)")
+   (goto-char (line-end-position))
+   (python-tests-self-insert ":")
+   (python-tests-look-at "elif" -1)
+   (should (= (current-indentation) 0))
+   (python-tests-look-at "and")
+   (should (= (current-indentation) 6))
+   (python-tests-look-at "that)")
+   (should (= (current-indentation) 6))))
+
 (ert-deftest python-indent-region-1 ()
   "Test indentation case from Bug#18843."
   (let ((contents "



reply via email to

[Prev in Thread] Current Thread [Next in Thread]