summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorVincent Belaïche <vincentb1@users.sourceforge.net>2016-07-28 18:12:50 +0200
committerVincent Belaïche <vincentb1@users.sourceforge.net>2016-07-28 18:12:50 +0200
commit90ab699c4f281d0c9a9b71f3eb4c8493d00fcf4f (patch)
treedf3235d89ee8e4d32571b8a8521f75f7576913c2 /doc
parent41b28dea8587c13b0bc59c1ec70b65afab3aeeca (diff)
parentec359399a47f852b4d022a30245449438e349193 (diff)
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Diffstat (limited to 'doc')
-rw-r--r--doc/emacs/dired.texi9
-rw-r--r--doc/emacs/display.texi12
-rw-r--r--doc/emacs/files.texi2
-rw-r--r--doc/emacs/frames.texi18
-rw-r--r--doc/emacs/misc.texi2
-rw-r--r--doc/lispref/commands.texi2
-rw-r--r--doc/lispref/compile.texi2
-rw-r--r--doc/lispref/display.texi52
-rw-r--r--doc/lispref/files.texi8
-rw-r--r--doc/lispref/keymaps.texi18
-rw-r--r--doc/lispref/lists.texi12
-rw-r--r--doc/lispref/loading.texi4
-rw-r--r--doc/lispref/markers.texi8
-rw-r--r--doc/lispref/minibuf.texi4
-rw-r--r--doc/lispref/modes.texi11
-rw-r--r--doc/lispref/positions.texi14
-rw-r--r--doc/lispref/processes.texi10
-rw-r--r--doc/lispref/strings.texi8
-rw-r--r--doc/lispref/text.texi9
-rw-r--r--doc/misc/cc-mode.texi6
-rw-r--r--doc/misc/cl.texi7
-rw-r--r--doc/misc/gnus.texi96
-rw-r--r--doc/misc/message.texi17
-rw-r--r--doc/misc/texinfo.tex120
-rw-r--r--doc/misc/tramp.texi45
-rw-r--r--doc/misc/trampver.texi2
26 files changed, 374 insertions, 124 deletions
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 486e92a40b..2cda51a82f 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -550,13 +550,16 @@ Mark (with @samp{*}) all files whose @emph{contents} contain a match for
the regular expression @var{regexp}
(@code{dired-mark-files-containing-regexp}). This command is like
@kbd{% m}, except that it searches the file contents instead of the file
-name. Note that if a file is visited in an Emacs buffer, this command
-will look in the buffer without revisiting the file, so the results
+name. Note that if a file is visited in an Emacs buffer,
+and @code{dired-always-read-filesystem} is @code{nil} (the default), this
+command will look in the buffer without revisiting the file, so the results
might be inconsistent with the file on disk if its contents has changed
since it was last visited. If you don't want this, you may wish
reverting the files you have visited in your buffers, or turning on
the @code{auto-revert} mode in those buffers, before invoking this
-command. @xref{Reverting}.
+command. @xref{Reverting}. If you prefer that this command always revisit
+the file, without having to revert the file or enable @code{auto-revert}
+mode, you might want to set @code{dired-always-read-filesystem} to non-@code{nil}.
@item C-/
@itemx C-x u
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index 3f5aac1c2f..738d72d046 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -853,9 +853,15 @@ to alter the amount of fontification applied by Font Lock mode, for
major modes that support this feature. The value should be a number
(with 1 representing a minimal amount of fontification; some modes
support levels as high as 3); or @code{t}, meaning ``as high as
-possible'' (the default). You can also specify different numbers for
-particular major modes; for example, to use level 1 for C/C++ modes,
-and the default level otherwise, use the value
+possible'' (the default). To be effective for a given file buffer,
+the customization of @code{font-lock-maximum-decoration} should be
+done @emph{before} the file is visited; if you already have the file
+visited in a buffer when you customize this variable, kill the buffer
+and visit the file again after the customization.
+
+You can also specify different numbers for particular major modes; for
+example, to use level 1 for C/C++ modes, and the default level
+otherwise, use the value
@example
'((c-mode . 1) (c++-mode . 1)))
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index ec227e9c2c..f195a41d54 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -701,7 +701,7 @@ after it visits the file. (This marks the buffer as modified, and you
can undo it.) If the value is @code{visit-save}, Emacs adds such
newlines both on visiting and on saving. If the value is @code{nil},
Emacs leaves the end of the file unchanged; any other non-@code{nil}
-value means to asks you whether to add a newline. The default is
+value means Emacs asks you whether to add a newline. The default is
@code{nil}.
@vindex mode-require-final-newline
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index a7e709f922..03172b62cf 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -97,7 +97,8 @@ ring; on a second click, kill it (@code{mouse-save-then-kill}).
invoked by clicking with the left mouse button, @kbd{mouse-1}, in the
text area of a window. This moves point to the position where you
clicked. If that window was not the selected window, it becomes the
-selected window.
+selected window. You can also activate a region by double-clicking
+mouse-1 (@pxref{Word and Line Mouse}).
@vindex x-mouse-click-focus-ignore-position
Normally, if the frame you clicked in was not the selected frame, it
@@ -215,7 +216,7 @@ also copied to the kill ring.
@table @kbd
@item Double-mouse-1
-Select the text around the word which you click on.
+Select the text around the word or character which you click on.
Double-clicking on a character with symbol syntax (such as
underscore, in C mode) selects the symbol surrounding that character.
@@ -226,6 +227,17 @@ ends. Double-clicking on a character with string-delimiter syntax
constant (Emacs uses heuristics to figure out whether that character
is the beginning or the end of it).
+Double-clicking on the beginning of a parenthetical grouping or
+beginning string-delimiter moves point to the end of the region,
+scrolling the buffer display forward if necessary to show the new
+location of point. Double-clicking on the end of a parenthetical
+grouping or end string-delimiter keeps point at the end of the region
+by default, so the beginning of the region will not be visible if it
+is above the top of the window; setting the user option
+@code{mouse-select-region-move-to-beginning} to non-nil changes this
+to move point to the beginning of the region, scrolling the display
+backward if necessary.
+
@item Double-Drag-mouse-1
Select the text you drag across, in the form of whole words.
@@ -1011,7 +1023,7 @@ scroll bar height, change the @code{scroll-bar-height} frame parameter
On graphical displays, you can use @dfn{window dividers} in order to
separate windows visually. Window dividers are bars that can be dragged
-with the mouse, thus allowing to easily resize adjacent windows.
+with the mouse, thus allowing you to easily resize adjacent windows.
@findex window-divider-mode
To toggle the display of window dividers, use the command @kbd{M-x
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index b614ed221a..94e1f198f2 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1923,7 +1923,7 @@ Like @code{lpr-buffer} but print only the current region.
@findex lpr-region
@vindex lpr-switches
@vindex lpr-commands
- On most operating system, the above hardcopy commands submit files
+ On most operating systems, the above hardcopy commands submit files
for printing by calling the @command{lpr} program. To change the
printer program, customize the variable @code{lpr-command}. To
specify extra switches to give the printer program, customize the list
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 2048e28d95..46756d0ddd 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1977,7 +1977,7 @@ in @code{event-modifiers}. For example:
@defun mouse-movement-p object
This function returns non-@code{nil} if @var{object} is a mouse movement
-event.
+event. @xref{Motion Events}.
@end defun
@defun event-convert-list list
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index c943a6a29c..f6cd0229c4 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -438,7 +438,7 @@ Emacs commands for operating on compiler output can be used on these
messages.
When an error is due to invalid syntax in the program, the byte
-compiler might get confused about the errors' exact location. One way
+compiler might get confused about the error's exact location. One way
to investigate is to switch to the buffer @w{@file{ *Compiler
Input*}}. (This buffer name starts with a space, so it does not show
up in the Buffer Menu.) This buffer contains the program being
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 1956ee5503..b7a6b570eb 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1996,15 +1996,17 @@ newline.
If the property value is @code{t}, the newline character has no
effect on the displayed height of the line---the visible contents
-alone determine the height. This is useful for tiling small images
-(or image slices) without adding blank areas between the images.
+alone determine the height. The @code{line-spacing} property,
+described below, is also ignored in this case. This is useful for
+tiling small images (or image slices) without adding blank areas
+between the images.
If the property value is a list of the form @code{(@var{height}
@var{total})}, that adds extra space @emph{below} the display line.
First Emacs uses @var{height} as a height spec to control extra space
@emph{above} the line; then it adds enough space @emph{below} the line
-to bring the total line height up to @var{total}. In this case, the
-other ways to specify the line spacing are ignored.
+to bring the total line height up to @var{total}. In this case, any
+value of @code{line-spacing} property for the newline is ignored.
@cindex height spec
Any other kind of property value is a height spec, which translates
@@ -2054,9 +2056,10 @@ overrides line spacings specified for the frame.
@kindex line-spacing @r{(text property)}
Finally, a newline can have a @code{line-spacing} text or overlay
-property that overrides the default frame line spacing and the buffer
-local @code{line-spacing} variable, for the display line ending in
-that newline.
+property that can enlarge the default frame line spacing and the
+buffer local @code{line-spacing} variable: if its value is larger than
+the buffer or frame defaults, that larger value is used instead, for
+the display line ending in that newline.
One way or another, these mechanisms specify a Lisp value for the
spacing of each line. The value is a height spec, and it translates
@@ -5347,6 +5350,41 @@ that describe the outer circumference of the polygon.
@end lisp
@end defun
+@defun svg-text svg text &rest args
+Add a text to @var{svg}.
+
+@lisp
+(svg-text
+ svg "This is a text"
+ :font-size "40"
+ :font-weight "bold"
+ :stroke "black"
+ :fill "white"
+ :font-family "impact"
+ :letter-spacing "4pt"
+ :x 300
+ :y 400
+ :stroke-width 1)
+@end lisp
+@end defun
+
+@defun svg-embed svg image image-type datap &rest args
+Add an embedded (raster) image to @var{svg}. If @var{datap} is
+@code{nil}, @var{IMAGE} should be a file name; if not, it should be a
+binary string containing the image data. @var{image-type} should be a
+@acronym{MIME} image type, for instance @samp{"image/jpeg"}.
+
+@lisp
+(svg-embed svg "~/rms.jpg" "image/jpeg" nil
+ :width "100px" :height "100px"
+ :x "50px" :y "75px")
+@end lisp
+@end defun
+
+@defun svg-remove svg id
+Remove the element with identifier @code{id} from the @code{svg}.
+@end defun
+
Finally, the @code{svg-image} takes an SVG object as its parameter and
returns an image object suitable for use in functions like
@code{insert-image}. Here's a complete example that creates and
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index f3650a4556..ea9d53b0ea 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -3238,7 +3238,9 @@ end position.
One responsibility of @var{from-fn} is to make sure that the beginning
of the file no longer matches @var{regexp}. Otherwise it is likely to
-get called again.
+get called again. Also, @var{from-fn} must not involve buffers or
+files other than the one being decoded, otherwise the internal buffer
+used for formatting might be overwritten.
@item to-fn
A shell command or function to encode data in this format---that is, to
@@ -3269,6 +3271,10 @@ file, it intermixes the specified annotations at the corresponding
positions. All this takes place without modifying the buffer.
@end itemize
+@var{to-fn} must not involve buffers or files other than the one being
+encoded, otherwise the internal buffer used for formatting might be
+overwritten.
+
@item modify
A flag, @code{t} if the encoding function modifies the buffer, and
@code{nil} if it works by returning a list of annotations.
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 61ac80c589..35d9d0c965 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -341,7 +341,21 @@ lots of bindings; for just a few, the sparse keymap is better.
@end defun
@defun copy-keymap keymap
-This function returns a copy of @var{keymap}. Any keymaps that
+This function returns a copy of @var{keymap}. This is almost never
+needed. If you want a keymap that's like another yet with a few
+changes, you should use map inheritance rather than copying.
+I.e., something like:
+
+@example
+@group
+(let ((map (make-sparse-keymap)))
+ (set-keymap-parent map <theirmap>)
+ (define-key map ...)
+ ...)
+@end group
+@end example
+
+When performing @code{copy-keymap}, any keymaps that
appear directly as bindings in @var{keymap} are also copied recursively,
and so on to any number of levels. However, recursive copying does not
take place when the definition of a character is a symbol whose function
@@ -1368,7 +1382,7 @@ default global map.
The function @code{substitute-key-definition} scans a keymap for
keys that have a certain binding and rebinds them with a different
binding. Another feature which is cleaner and can often produce the
-same results to remap one command into another (@pxref{Remapping
+same results is to remap one command into another (@pxref{Remapping
Commands}).
@defun substitute-key-definition olddef newdef keymap &optional oldmap
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index c18c408209..e7a739f88f 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -1556,12 +1556,16 @@ keys may not be symbols:
@end smallexample
@end defun
-@defun alist-get key value &optional default
+@defun alist-get key value &optional default remove
This function is like @code{assq}, but instead of returning the entire
association for @var{key}, @code{(@var{key} . @var{value})}, it
-returns just the @var{value}. It returns @var{default} if @var{key}
-is not found in @var{alist}, defaulting to @code{nil} if @var{default}
-is omitted.
+returns just the @var{value}. If @var{key} is not found in
+@var{alist} it returns @var{default}.
+
+This is a generalized variable (@pxref{Generalized Variables}) that
+can be used to change a value with @code{setf}. When using it to set
+a value, optional argument @var{remove} non-nil means to remove
+@var{key} from @var{alist} if the new value is @code{eql} to @var{default}.
@end defun
@defun rassq value alist
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index d2d38d7fb5..81a1922d71 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -848,8 +848,8 @@ loaded, into the current Emacs session. This means that the facilities
associated with @var{feature} are or will be available for other Lisp
programs.
-The direct effect of calling @code{provide} is if not already in
-@var{features} then to add @var{feature} to the front of that list and
+The direct effect of calling @code{provide} is to add @var{feature} to
+the front of @code{features} if it is not already in that list and
call any @code{eval-after-load} code waiting for it (@pxref{Hooks for
Loading}). The argument @var{feature} must be a symbol.
@code{provide} returns @var{feature}.
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index 1c904666cb..1b4d74fb25 100644
--- a/doc/lispref/markers.texi
+++ b/doc/lispref/markers.texi
@@ -340,10 +340,10 @@ text is inserted at its position. If @var{type} is @code{nil},
This function reports the current insertion type of @var{marker}.
@end defun
-Most functions that create markers, without an argument allowing to
-specify the insertion type, create them with insertion type
-@code{nil}. Also, the mark has, by default, insertion type
-@code{nil}.
+All functions that create markers without accepting an argument that
+specifies the insertion type, create them with insertion type
+@code{nil} (@pxref{Creating Markers}). Also, the mark has, by
+default, insertion type @code{nil}.
@node Moving Markers
@section Moving Marker Positions
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index e6d8f8a4c7..8d5347556e 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -750,8 +750,8 @@ list contains elements of any other type, those are ignored.
If @var{collection} is an obarray (@pxref{Creating Symbols}), the names
of all symbols in the obarray form the set of permissible completions.
-If @var{collection} is a hash table, then the keys that are strings
-are the possible completions. Other keys are ignored.
+If @var{collection} is a hash table, then the keys that are strings or
+symbols are the possible completions. Other keys are ignored.
You can also use a function as @var{collection}. Then the function is
solely responsible for performing completion; @code{try-completion}
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 7b76e6af9c..368d882a4b 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -799,10 +799,9 @@ if @var{parent} is @code{nil}. (Again, a @code{nil} value is
@item :group
If this is specified, the value should be the customization group for
-this mode. (Not all major modes have one.) Only the (still
-experimental and unadvertised) command @code{customize-mode} currently
-uses this. @code{define-derived-mode} does @emph{not} automatically
-define the specified customization group.
+this mode. (Not all major modes have one.) The command
+@code{customize-mode} uses this. @code{define-derived-mode} does
+@emph{not} automatically define the specified customization group.
@item :after-hook
This optional keyword specifies a single Lisp form to evaluate as the
@@ -913,7 +912,7 @@ follow these conventions: they may run the parent's mode hook too early,
or fail to run @code{after-change-major-mode-hook}. If you encounter
such a major mode, please correct it to follow these conventions.
- When you defined a major mode using @code{define-derived-mode}, it
+ When you define a major mode using @code{define-derived-mode}, it
automatically makes sure these conventions are followed. If you
define a major mode ``by hand'', not using @code{define-derived-mode},
use the following functions to handle these conventions automatically.
@@ -1066,7 +1065,7 @@ to invert the sort order.
@defun tabulated-list-init-header
This function computes and sets @code{header-line-format} for the
Tabulated List buffer (@pxref{Header Lines}), and assigns a keymap to
-the header line to allow sort entries by clicking on column headers.
+the header line to allow sorting entries by clicking on column headers.
Modes derived from Tabulated List mode should call this after setting
the above variables (in particular, only after setting
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 1d748b8752..796a06615a 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -590,10 +590,12 @@ any buffer, whether or not it is currently displayed in some window.
@deffn Command move-to-window-line count
This function moves point with respect to the text currently displayed
in the selected window. It moves point to the beginning of the screen
-line @var{count} screen lines from the top of the window. If
-@var{count} is negative, that specifies a position
-@w{@minus{}@var{count}} lines from the bottom (or the last line of the
-buffer, if the buffer ends above the specified screen position).
+line @var{count} screen lines from the top of the window; zero means
+the topmost line. If @var{count} is negative, that specifies a
+position @w{@minus{}@var{count}} lines from the bottom (or the last
+line of the buffer, if the buffer ends above the specified screen
+position); thus, @var{count} of -1 specifies the last fully visible
+screen line of the window.
If @var{count} is @code{nil}, then point moves to the beginning of the
line in the middle of the window. If the absolute value of @var{count}
@@ -604,8 +606,8 @@ location onto the screen.
In an interactive call, @var{count} is the numeric prefix argument.
-The value returned is the window line number point has moved to, with
-the top line in the window numbered 0.
+The value returned is the screen line number point has moved to,
+relative to the top line of the window.
@end deffn
@vindex move-to-window-group-line-function
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index e3346aa3a5..f859b3adde 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -506,7 +506,7 @@ inputinput@point{}
@defun call-process-shell-command command &optional infile destination display
This function executes the shell command @var{command} synchronously.
The arguments are handled as in @code{call-process}. An old calling
-convention allowed to pass any number of additional arguments after
+convention allowed passing any number of additional arguments after
@var{display}, which were concatenated to @var{command}; this is still
supported, but strongly discouraged.
@end defun
@@ -515,7 +515,7 @@ supported, but strongly discouraged.
This function is like @code{call-process-shell-command}, but uses
@code{process-file} internally. Depending on @code{default-directory},
@var{command} can be executed also on remote hosts. An old calling
-convention allowed to pass any number of additional arguments after
+convention allowed passing any number of additional arguments after
@var{display}, which were concatenated to @var{command}; this is still
supported, but strongly discouraged.
@end defun
@@ -1382,10 +1382,10 @@ subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}).
@end defun
If the process's buffer is displayed in a window, your Lisp program
-may wish telling the process the dimensions of that window, so that
+may wish to tell the process the dimensions of that window, so that
the process could adapt its output to those dimensions, much as it
-adapts to the screen dimensions. The following functions allow to
-communicate this kind of information to processes; however, not all
+adapts to the screen dimensions. The following functions allow
+communicating this kind of information to processes; however, not all
systems support the underlying functionality, so it is best to provide
fallbacks, e.g., via command-line arguments or environment variables.
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index cf0505f446..4e4c239291 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -668,7 +668,7 @@ The strings are compared by the numeric values of their characters.
For instance, @var{str1} is considered less than @var{str2} if
its first differing character has a smaller numeric value. If
@var{ignore-case} is non-@code{nil}, characters are converted to
-lower-case before comparing them. Unibyte strings are converted to
+upper-case before comparing them. Unibyte strings are converted to
multibyte for comparison (@pxref{Text Representations}), so that a
unibyte string and its conversion to multibyte are always regarded as
equal.
@@ -685,7 +685,8 @@ specified portion) is less.
This function works like @code{assoc}, except that @var{key} must be a
string or symbol, and comparison is done using @code{compare-strings}.
Symbols are converted to strings before testing.
-If @var{case-fold} is non-@code{nil}, it ignores case differences.
+If @var{case-fold} is non-@code{nil}, @var{key} and the elements of
+@var{alist} are converted to upper-case before comparison.
Unlike @code{assoc}, this function can also match elements of the alist
that are strings or symbols rather than conses. In particular, @var{alist} can
be a list of strings or symbols rather than an actual alist.
@@ -833,7 +834,8 @@ arguments @var{objects} are the computed values to be formatted.
The characters in @var{string}, other than the format specifications,
are copied directly into the output, including their text properties,
-if any.
+if any. Any text properties of the format specifications are copied
+to the produced string representations of the argument @var{objects}.
@end defun
@defun format-message string &rest objects
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 0b7759347f..4dc943f868 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -1376,10 +1376,10 @@ before executing each key sequence, so that each undo normally undoes
the effects of one command. A few exceptional commands are
@dfn{amalgamating}: these commands generally cause small changes to
buffers, so with these a boundary is inserted only every 20th command,
-allowing to undo them as a group. By default, commands
+allowing the changes to be undone as a group. By default, the commands
@code{self-insert-command}, which produces self-inserting input
-characters (@pxref{Commands for Insertion}), and @code{delete-char}
-which deletes characters (@pxref{Deletion}) are amalgamating.
+characters (@pxref{Commands for Insertion}), and @code{delete-char},
+which deletes characters (@pxref{Deletion}), are amalgamating.
Where a command affects the contents of several buffers, as may happen,
for example, when a function on the @code{post-command-hook} affects a
buffer other than the @code{current-buffer}, then @code{undo-boundary}
@@ -4614,6 +4614,9 @@ to be inserted between the textual elements.
@item dom-parent @var{dom} @var{node}
Return the parent of @var{node} in @var{dom}.
+
+@item dom-remove @var{dom} @var{node}
+Remove @var{node} from @var{dom}.
@end table
The following are functions for altering the @acronym{DOM}.
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 82f8cbc2e3..f311ec8a3a 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -6727,9 +6727,11 @@ Macros which needn't (or mustn't) be followed by a semicolon when you
invoke them, @dfn{macros with semicolons}, are very common. These can
cause @ccmode{} to parse the next line wrongly as a
@code{statement-cont} (@pxref{Function Symbols}) and thus mis-indent
-it.
+it. At the top level, a macro invocation before a defun start can
+cause, for example, @code{c-beginning-of-defun} (@kbd{C-M-a}) not to
+find the correct start of the current function.
-You can prevent this by specifying which macros have semicolons. It
+You can prevent these by specifying which macros have semicolons. It
doesn't matter whether or not such a macro has a parameter list:
@defopt c-macro-names-with-semicolon
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 4137a95b3b..c62fa727c1 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -148,6 +148,11 @@ the beginning:
You may wish to add such a statement to your init file, if you
make frequent use of features from this package.
+Code that only uses macros from this package can enclose the above in
+@code{eval-when-compile}. Internally, this library is divided into
+several files, @pxref{Organization}. Your code should only ever load
+the main @file{cl-lib} file, which will load the others as needed.
+
@node Organization
@section Organization
@@ -3364,7 +3369,7 @@ was @code{nil} for all elements.
@defun cl-notevery predicate seq &rest more-seqs
This function calls @var{predicate} on each element of the sequence(s)
in turn; it returns a non-@code{nil} value as soon as @var{predicate}
-returns @code{nil} for any element, or @code{t} if the predicate was
+returns @code{nil} for any element, or @code{nil} if the predicate was
true for all elements.
@end defun
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index df673fc099..2473d26cc1 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -828,6 +828,7 @@ Various
* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
* Spam Package:: A package for filtering and processing spam.
* The Gnus Registry:: A package for tracking messages by Message-ID.
+* The Gnus Cloud:: A package for synchronizing Gnus marks.
* Other modes:: Interaction with other modes.
* Various Various:: Things that are really various.
@@ -22208,6 +22209,7 @@ to you, using @kbd{G b u} and updating the group will usually fix this.
* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
* Spam Package:: A package for filtering and processing spam.
* The Gnus Registry:: A package for tracking messages by Message-ID.
+* The Gnus Cloud:: A package for synchronizing Gnus marks.
* Other modes:: Interaction with other modes.
* Various Various:: Things that are really various.
@end menu
@@ -26166,6 +26168,100 @@ default this is just @code{(marks)} so the custom registry marks are
precious.
@end defvar
+@node The Gnus Cloud
+@section The Gnus Cloud
+@cindex cloud
+@cindex gnus-cloud
+@cindex synchronization
+@cindex sync
+@cindex synch
+
+The Gnus Cloud is a way to synchronize marks and general files and
+data across multiple machines.
+
+Very often, you want all your marks (what articles you've read, which
+ones were important, and so on) to be synchronized between several
+machines. With IMAP, that's built into the protocol, so you can read
+nnimap groups from many machines and they are automatically
+synchronized. But NNTP, nnrss, and many other backends do not store
+marks, so you have to do it locally.
+
+The Gnus Cloud package stores the marks, plus any files you choose, on
+an IMAP server in a special folder. It's like a
+DropTorrentSyncBoxOakTree(TM).
+
+@menu
+* Gnus Cloud Setup::
+* Gnus Cloud Usage::
+@end menu
+
+@node Gnus Cloud Setup
+@subsection Gnus Cloud Setup
+
+Setting up the Gnus Cloud takes less than a minute. From the Group
+buffer:
+
+Press @kbd{^} to go to the Server buffer. Here you'll see all the
+servers that Gnus knows. @xref{Server Buffer}.
+
+Then press @kbd{i} to mark any servers as cloud-synchronized (their marks are synchronized).
+
+Then press @kbd{I} to mark a single server as the cloud host (it must
+be an IMAP server, and will host a special IMAP folder with all the
+synchronization data). This will set the variable
+@code{gnus-cloud-method} (using the Customize facilities), then ask
+you to optionally upload your first CloudSynchronizationDataPack(TM).
+
+@node Gnus Cloud Usage
+@subsection Gnus Cloud Usage
+
+After setting up, you can use these shortcuts from the Group buffer:
+
+@table @kbd
+@item ~ RET
+@item ~ d
+@findex gnus-cloud-download-all-data
+@cindex cloud, download
+Download the latest Gnus Cloud data.
+
+@item ~ u
+@item ~ ~
+@findex gnus-cloud-upload-all-data
+@cindex cloud, download
+Upload the local Gnus Cloud data. Creates a new
+CloudSynchronizationDataPack(TM).
+
+@end table
+
+But wait, there's more. Of course there's more. So much more. You can
+customize all of the following.
+
+@defvar gnus-cloud-synced-files
+These are the files that will be part of every
+CloudSynchronizationDataPack(TM). They are included in every upload,
+so don't synchronize a lot of large files. Files under 100Kb are best.
+@end defvar
+
+@defvar gnus-cloud-storage-method
+This is a choice from several storage methods. It's highly recommended
+to use the EPG facilities. It will be automatic if have GnuPG
+installed and EPG loaded. Otherwise, you could use Base64+gzip,
+Base64, or no encoding.
+@end defvar
+
+@defvar gnus-cloud-interactive
+When this is set, and by default it is, the Gnus Cloud package will
+ask you for confirmation here and there. Leave it on until you're
+comfortable with the package.
+@end defvar
+
+
+@defvar gnus-cloud-method
+The name of the IMAP server to store the
+CloudSynchronizationDataPack(TM)s. It's easiest to set this from the
+Server buffer (@pxref{Gnus Cloud Setup}).
+@end defvar
+
@node Other modes
@section Interaction with other modes
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index fa4fa4398b..048990d53a 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -67,7 +67,6 @@ Message mode buffers.
* Interface:: Setting up message buffers.
* Commands:: Commands you can execute in message mode buffers.
* Variables:: Customizing the message buffers.
-* Compatibility:: Making Message backwards compatible.
* Appendices:: More technical things.
* GNU Free Documentation License:: The license for this documentation.
* Index:: Variable, function and concept index.
@@ -2587,22 +2586,6 @@ An @dfn{action} can be either: a normal function, or a list where the
a form to be @code{eval}ed.
-@node Compatibility
-@chapter Compatibility
-@cindex compatibility
-
-Message uses virtually only its own variables---older @code{mail-}
-variables aren't consulted. To force Message to take those variables
-into account, you can put the following in your @file{.emacs} file:
-
-@lisp
-(require 'messcompat)
-@end lisp
-
-This will initialize many Message variables from the values in the
-corresponding mail variables.
-
-
@node Appendices
@chapter Appendices
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 85846f4da4..daa7055bbb 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2016-05-28.16}
+\def\texinfoversion{2016-06-18.21}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -1192,6 +1192,7 @@ where each line of input produces a line of output.}
\ifx\pdfescapestring\thisisundefined
% No primitive available; should we give a warning or log?
% Many times it won't matter.
+ \xdef#1{#1}%
\else
% The expandable \pdfescapestring primitive escapes parentheses,
% backslashes, and other special chars.
@@ -1311,8 +1312,10 @@ output) for that.)}
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
\indexnofonts
- \turnoffactive
\makevalueexpandable
+ \turnoffactive
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
\def\pdfdestname{#1}%
\txiescapepdf\pdfdestname
\safewhatsit{\pdfdest name{\pdfdestname} xyz}%
@@ -1357,8 +1360,21 @@ output) for that.)}
\fi
%
% Also escape PDF chars in the display string.
- \edef\pdfoutlinetext{#1}%
- \txiescapepdf\pdfoutlinetext
+ \bgroup
+ \ifx \declaredencoding \latone
+ % The PDF format can use an extended form of Latin-1 in bookmark
+ % strings. See Appendix D of the PDF Reference, Sixth Edition, for
+ % the "PDFDocEncoding".
+ \passthroughcharstrue
+ \fi
+ \ifx \declaredencoding \utfeight
+ % TODO: the PDF format can use UTF-16 in bookmark strings, but the
+ % code for this isn't done yet.
+ \fi
+ \globaldefs=1
+ \edef\pdfoutlinetext{#1}%
+ \txiescapepdf\pdfoutlinetext
+ \egroup
%
\pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
}
@@ -5948,18 +5964,32 @@ end
\global\advance\dimen@ by 1pt
\repeat
}%
- \multiply\dimen@ii by 4
- \divide\dimen@ii by 5
- \ifdim\ht3<\dimen@ii
- % Column heights are too different, so don't make their bottoms
- % flush with each other. The glue at the end of the second column
- % allows a second column to stretch, reducing the difference in
- % height between the two.
- \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
- \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
+ \ifdim2\ht1>\vsize
+ % The left column has come out longer than the page itself. (Note
+ % that we have doubled \vsize for the double columns, so
+ % the actual height of the page is 0.5\vsize). Just split the last
+ % of the double column material roughly in half.
+ \setbox2=\box0
+ \setbox0 = \vsplit2 to \dimen@ii
+ \setbox0=\vbox to\dimen@ii{\unvbox0}%
+ \setbox2=\vbox to\dimen@ii{\unvbox2}%
\else
- \setbox0=\vbox to\dimen@{\unvbox1}%
- \setbox2=\vbox to\dimen@{\unvbox3}%
+ \multiply\dimen@ii by 5
+ \divide\dimen@ii by 4
+ \global\setbox3 = \copy0
+ \global\setbox1 = \vsplit3 to \dimen@ii
+ \global\setbox\balancedcolumns=\vbox{\pagesofar}%
+ \ifdim\ht3<\dimen@ii
+ % Column heights are too different, so don't make their bottoms
+ % flush with each other. The glue at the end of the second column
+ % allows a second column to stretch, reducing the difference in
+ % height between the two.
+ \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
+ \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
+ \else
+ \setbox0=\vbox to\dimen@{\unvbox1}%
+ \setbox2=\vbox to\dimen@{\unvbox3}%
+ \fi
\fi
\fi
%
@@ -10250,7 +10280,7 @@ directory should work if nowhere else does.}
\countUTFx = "80
\countUTFy = "C2
\def\UTFviiiTmp{%
- \gdef~{
+ \gdef~{%
\ifpassthroughchars $\fi}}%
\UTFviiiLoop
@@ -10301,6 +10331,15 @@ directory should work if nowhere else does.}
\fi
}
+% These macros are used here to construct the name of a control
+% sequence to be defined.
+\def\UTFviiiTwoOctetsName#1#2{%
+ \csname u8:#1\string #2\endcsname}%
+\def\UTFviiiThreeOctetsName#1#2#3{%
+ \csname u8:#1\string #2\string #3\endcsname}%
+\def\UTFviiiFourOctetsName#1#2#3#4{%
+ \csname u8:#1\string #2\string #3\string #4\endcsname}%
+
% For UTF-8 byte sequence (TeX, e-TeX and pdfTeX)
% Definition macro to replace the Unicode character
% Definition macro that is used by @U command
@@ -10317,17 +10356,18 @@ directory should work if nowhere else does.}
\countUTFz = "#1\relax
\begingroup
\parseXMLCharref
+
+ % Give \u8:... its definition. The sequence of seven \expandafter's
+ % expands after the \gdef three times, e.g.
+ %
+ % 1. \UTFviiTwoOctetsName B1 B2
+ % 2. \csname u8:B1 \string B2 \endcsname
+ % 3. \u8: B1 B2 (a single control sequence token)
%
- % Access definitions of characters given UTF-8 sequences
- \def\UTFviiiTwoOctets##1##2{%
- \csname u8:##1\string ##2\endcsname}%
- \def\UTFviiiThreeOctets##1##2##3{%
- \csname u8:##1\string ##2\string ##3\endcsname}%
- \def\UTFviiiFourOctets##1##2##3##4{%
- \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter
- \gdef\UTFviiiTmp{#2}%
+ \expandafter\expandafter
+ \expandafter\expandafter
+ \expandafter\expandafter
+ \expandafter\gdef \UTFviiiTmp{#2}%
%
\expandafter\ifx\csname uni:#1\endcsname \relax \else
\message{Internal error, already defined: #1}%
@@ -10337,37 +10377,53 @@ directory should work if nowhere else does.}
\expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp
\endgroup}
%
- % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp.
+ % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp
+ % to the corresponding UTF-8 sequence.
\gdef\parseXMLCharref{%
\ifnum\countUTFz < "A0\relax
\errhelp = \EMsimple
\errmessage{Cannot define Unicode char value < 00A0}%
\else\ifnum\countUTFz < "800\relax
\parseUTFviiiA,%
- \parseUTFviiiB C\UTFviiiTwoOctets.,%
+ \parseUTFviiiB C\UTFviiiTwoOctetsName.,%
\else\ifnum\countUTFz < "10000\relax
\parseUTFviiiA;%
\parseUTFviiiA,%
- \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+ \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}%
\else
\parseUTFviiiA;%
\parseUTFviiiA,%
\parseUTFviiiA!%
- \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+ \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}%
\fi\fi\fi
}
+ % Extract a byte from the end of the UTF-8 representation of \countUTFx.
+ % It must be a non-initial byte in the sequence.
+ % Change \uccode of #1 for it to be used in \parseUTFviiiB as one
+ % of the bytes.
\gdef\parseUTFviiiA#1{%
\countUTFx = \countUTFz
\divide\countUTFz by 64
- \countUTFy = \countUTFz
+ \countUTFy = \countUTFz % Save to be the future value of \countUTFz.
\multiply\countUTFz by 64
+
+ % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract
+ % in order to get the last five bits.
\advance\countUTFx by -\countUTFz
+
+ % Convert this to the byte in the UTF-8 sequence.
\advance\countUTFx by 128
\uccode `#1\countUTFx
\countUTFz = \countUTFy}
- % Used to set \UTFviiiTmp to a UTF-8 byte sequence
+ % Used to put a UTF-8 byte sequence into \UTFviiiTmp
+ % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8
+ % sequence.
+ % #2 is one of the \UTFviii*OctetsName macros.
+ % #3 is always a full stop (.)
+ % #4 is a template for the other bytes in the sequence. The values for these
+ % bytes is substituted in here with \uppercase using the \uccode's.
\gdef\parseUTFviiiB#1#2#3#4{%
\advance\countUTFz by "#10\relax
\uccode `#3\countUTFz
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 894ccbe9c9..e8c181b229 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -565,7 +565,7 @@ remote host.
@command{ssh} can also take extra parameters as port numbers. For
example, a host on port 42 is specified as @file{host#42} (the real
host name, a hash sign, then a port number). It is the same as passing
-@code{-p 42} to the @command{ssh} command.
+@samp{-p 42} to the @command{ssh} command.
@item @option{telnet}
@cindex method telnet
@@ -832,7 +832,7 @@ Since SMB shares end in the @code{$} character, @value{tramp} must use
substitutions.
When @value{tramp} is not specific about the share name or uses the
-generic remote directory @code{/}, @command{smbclient} returns all
+generic remote directory @file{/}, @command{smbclient} returns all
available shares.
Since SMB authentication is based on each SMB share, @value{tramp}
@@ -957,6 +957,22 @@ syntax requires a leading volume (share) name, for example:
based on standard protocols, such as HTTP@. @option{davs} does the same
but with SSL encryption. Both methods support the port numbers.
+@item @option{gdrive}
+@cindex method gdrive
+@cindex gdrive method
+@cindex Google Drive
+
+Via the @option{gdrive} method it is possible to access your Google
+Drive online storage. User and host name of the remote file name are
+your email address of the Google Drive credentials, like
+@file{@trampfn{gdrive,john.doe@@gmail.com,/}}. These credentials must
+be populated in your @command{Online Accounts} application outside Emacs.
+
+Since Google Drive uses cryptic blob file names internally,
+@value{tramp} works with the @code{display-name} of the files. This
+could produce unexpected behaviour in case two files in the same
+directory have the same @code{display-name}, such a situation must be avoided.
+
@item @option{obex}
@cindex method obex
@cindex obex method
@@ -986,8 +1002,8 @@ requires the SYNCE-GVFS plugin.
@vindex tramp-gvfs-methods
This custom option is a list of external methods for GVFS@. By
default, this list includes @option{afp}, @option{dav}, @option{davs},
-@option{obex}, @option{sftp} and @option{synce}. Other methods to
-include are: @option{ftp} and @option{smb}.
+@option{gdrive}, @option{obex}, @option{sftp} and @option{synce}.
+Other methods to include are: @option{ftp} and @option{smb}.
@end defopt
@@ -1650,13 +1666,16 @@ shown below for @value{tramp} to use when connecting.
Another way to find the remote path is to use the path assigned to the
remote user by the remote host. @value{tramp} does not normally retain
-this remote path after logging. However, @code{tramp-own-remote-path}
+this remote path after login. However, @code{tramp-own-remote-path}
preserves the path value, which can be used to update
@code{tramp-remote-path}.
@lisp
(add-to-list 'tramp-remote-path 'tramp-own-remote-path)
@end lisp
+
+@strong{Note} that this works only if your remote @command{/bin/sh}
+shell supports the login argument @samp{-l}.
@end defopt
When remote search paths are changed, local @value{tramp} caches must
@@ -1848,7 +1867,7 @@ install and execute a listener as follows (see @code{tramp-methods}):
@end example
The above command-line syntax has changed with @command{busybox}
-versions. If @command{nc} refuses the @command{-p} parameter, then
+versions. If @command{nc} refuses the @samp{-p} parameter, then
overwrite as follows:
@lisp
@@ -1876,9 +1895,9 @@ Applications such as @code{SSHDroid} that run @command{sshd} process
on the Android device can accept any @option{ssh}-based methods
provided these settings are adjusted:
-@code{sh} must be specified for remote shell since Android devices do
-not provide @code{/bin/sh}. @code{sh} will then invoke whatever shell is
-installed on the device with this setting:
+@command{sh} must be specified for remote shell since Android devices
+do not provide @command{/bin/sh}. @command{sh} will then invoke
+whatever shell is installed on the device with this setting:
@lisp
(add-to-list 'tramp-connection-properties
@@ -2854,9 +2873,9 @@ To test if this is the case, open a remote shell and check if the output
of @command{ls} is in color.
To disable @acronym{ANSI} escape sequences from the remote hosts,
-disable @option{--color=yes} or @option{--color=auto} in the remote
-host's @file{.bashrc} or @file{.profile}. Turn this alias on and off
-to see if file name completion works.
+disable @samp{--color=yes} or @samp{--color=auto} in the remote host's
+@file{.bashrc} or @file{.profile}. Turn this alias on and off to see
+if file name completion works.
@item
File name completion does not work in directories with large number of
@@ -2869,7 +2888,7 @@ shell's limit on length of command lines and hang. @value{tramp} uses
globbing.
To test if globbing hangs, open a shell on the remote host and then
-run @samp{ls -d * ..?* > /dev/null}.
+run @command{ls -d * ..?* > /dev/null}.
When testing, ensure the remote shell is the same shell
(@command{/bin/sh}, @command{ksh} or @command{bash}), that
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi
index cdd008bc86..3101dc0de8 100644
--- a/doc/misc/trampver.texi
+++ b/doc/misc/trampver.texi
@@ -8,7 +8,7 @@
@c In the Tramp GIT, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
-@set trampver 2.3.0-pre
+@set trampver 2.3.1-pre
@c Other flags from configuration
@set instprefix /usr/local