aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorVincent Belaïche2016-07-28 18:12:50 +0200
committerVincent Belaïche2016-07-28 18:12:50 +0200
commit90ab699c4f281d0c9a9b71f3eb4c8493d00fcf4f (patch)
treedf3235d89ee8e4d32571b8a8521f75f7576913c2 /doc
parent41b28dea8587c13b0bc59c1ec70b65afab3aeeca (diff)
parentec359399a47f852b4d022a30245449438e349193 (diff)
downloademacs-90ab699c4f281d0c9a9b71f3eb4c8493d00fcf4f.tar.gz
emacs-90ab699c4f281d0c9a9b71f3eb4c8493d00fcf4f.zip
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 486e92a40bb..2cda51a82fa 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
550the regular expression @var{regexp} 550the regular expression @var{regexp}
551(@code{dired-mark-files-containing-regexp}). This command is like 551(@code{dired-mark-files-containing-regexp}). This command is like
552@kbd{% m}, except that it searches the file contents instead of the file 552@kbd{% m}, except that it searches the file contents instead of the file
553name. Note that if a file is visited in an Emacs buffer, this command 553name. Note that if a file is visited in an Emacs buffer,
554will look in the buffer without revisiting the file, so the results 554and @code{dired-always-read-filesystem} is @code{nil} (the default), this
555command will look in the buffer without revisiting the file, so the results
555might be inconsistent with the file on disk if its contents has changed 556might be inconsistent with the file on disk if its contents has changed
556since it was last visited. If you don't want this, you may wish 557since it was last visited. If you don't want this, you may wish
557reverting the files you have visited in your buffers, or turning on 558reverting the files you have visited in your buffers, or turning on
558the @code{auto-revert} mode in those buffers, before invoking this 559the @code{auto-revert} mode in those buffers, before invoking this
559command. @xref{Reverting}. 560command. @xref{Reverting}. If you prefer that this command always revisit
561the file, without having to revert the file or enable @code{auto-revert}
562mode, you might want to set @code{dired-always-read-filesystem} to non-@code{nil}.
560 563
561@item C-/ 564@item C-/
562@itemx C-x u 565@itemx C-x u
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index 3f5aac1c2ff..738d72d046a 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
853major modes that support this feature. The value should be a number 853major modes that support this feature. The value should be a number
854(with 1 representing a minimal amount of fontification; some modes 854(with 1 representing a minimal amount of fontification; some modes
855support levels as high as 3); or @code{t}, meaning ``as high as 855support levels as high as 3); or @code{t}, meaning ``as high as
856possible'' (the default). You can also specify different numbers for 856possible'' (the default). To be effective for a given file buffer,
857particular major modes; for example, to use level 1 for C/C++ modes, 857the customization of @code{font-lock-maximum-decoration} should be
858and the default level otherwise, use the value 858done @emph{before} the file is visited; if you already have the file
859visited in a buffer when you customize this variable, kill the buffer
860and visit the file again after the customization.
861
862You can also specify different numbers for particular major modes; for
863example, to use level 1 for C/C++ modes, and the default level
864otherwise, use the value
859 865
860@example 866@example
861'((c-mode . 1) (c++-mode . 1))) 867'((c-mode . 1) (c++-mode . 1)))
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index ec227e9c2c9..f195a41d542 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
701can undo it.) If the value is @code{visit-save}, Emacs adds such 701can undo it.) If the value is @code{visit-save}, Emacs adds such
702newlines both on visiting and on saving. If the value is @code{nil}, 702newlines both on visiting and on saving. If the value is @code{nil},
703Emacs leaves the end of the file unchanged; any other non-@code{nil} 703Emacs leaves the end of the file unchanged; any other non-@code{nil}
704value means to asks you whether to add a newline. The default is 704value means Emacs asks you whether to add a newline. The default is
705@code{nil}. 705@code{nil}.
706 706
707@vindex mode-require-final-newline 707@vindex mode-require-final-newline
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index a7e709f9221..03172b62cf5 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}).
97invoked by clicking with the left mouse button, @kbd{mouse-1}, in the 97invoked by clicking with the left mouse button, @kbd{mouse-1}, in the
98text area of a window. This moves point to the position where you 98text area of a window. This moves point to the position where you
99clicked. If that window was not the selected window, it becomes the 99clicked. If that window was not the selected window, it becomes the
100selected window. 100selected window. You can also activate a region by double-clicking
101mouse-1 (@pxref{Word and Line Mouse}).
101 102
102@vindex x-mouse-click-focus-ignore-position 103@vindex x-mouse-click-focus-ignore-position
103 Normally, if the frame you clicked in was not the selected frame, it 104 Normally, if the frame you clicked in was not the selected frame, it
@@ -215,7 +216,7 @@ also copied to the kill ring.
215 216
216@table @kbd 217@table @kbd
217@item Double-mouse-1 218@item Double-mouse-1
218Select the text around the word which you click on. 219Select the text around the word or character which you click on.
219 220
220Double-clicking on a character with symbol syntax (such as 221Double-clicking on a character with symbol syntax (such as
221underscore, in C mode) selects the symbol surrounding that character. 222underscore, in C mode) selects the symbol surrounding that character.
@@ -226,6 +227,17 @@ ends. Double-clicking on a character with string-delimiter syntax
226constant (Emacs uses heuristics to figure out whether that character 227constant (Emacs uses heuristics to figure out whether that character
227is the beginning or the end of it). 228is the beginning or the end of it).
228 229
230Double-clicking on the beginning of a parenthetical grouping or
231beginning string-delimiter moves point to the end of the region,
232scrolling the buffer display forward if necessary to show the new
233location of point. Double-clicking on the end of a parenthetical
234grouping or end string-delimiter keeps point at the end of the region
235by default, so the beginning of the region will not be visible if it
236is above the top of the window; setting the user option
237@code{mouse-select-region-move-to-beginning} to non-nil changes this
238to move point to the beginning of the region, scrolling the display
239backward if necessary.
240
229@item Double-Drag-mouse-1 241@item Double-Drag-mouse-1
230Select the text you drag across, in the form of whole words. 242Select the text you drag across, in the form of whole words.
231 243
@@ -1011,7 +1023,7 @@ scroll bar height, change the @code{scroll-bar-height} frame parameter
1011 1023
1012 On graphical displays, you can use @dfn{window dividers} in order to 1024 On graphical displays, you can use @dfn{window dividers} in order to
1013separate windows visually. Window dividers are bars that can be dragged 1025separate windows visually. Window dividers are bars that can be dragged
1014with the mouse, thus allowing to easily resize adjacent windows. 1026with the mouse, thus allowing you to easily resize adjacent windows.
1015 1027
1016@findex window-divider-mode 1028@findex window-divider-mode
1017 To toggle the display of window dividers, use the command @kbd{M-x 1029 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 b614ed221a0..94e1f198f2b 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.
1923@findex lpr-region 1923@findex lpr-region
1924@vindex lpr-switches 1924@vindex lpr-switches
1925@vindex lpr-commands 1925@vindex lpr-commands
1926 On most operating system, the above hardcopy commands submit files 1926 On most operating systems, the above hardcopy commands submit files
1927for printing by calling the @command{lpr} program. To change the 1927for printing by calling the @command{lpr} program. To change the
1928printer program, customize the variable @code{lpr-command}. To 1928printer program, customize the variable @code{lpr-command}. To
1929specify extra switches to give the printer program, customize the list 1929specify extra switches to give the printer program, customize the list
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 2048e28d959..46756d0ddd6 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1977,7 +1977,7 @@ in @code{event-modifiers}. For example:
1977 1977
1978@defun mouse-movement-p object 1978@defun mouse-movement-p object
1979This function returns non-@code{nil} if @var{object} is a mouse movement 1979This function returns non-@code{nil} if @var{object} is a mouse movement
1980event. 1980event. @xref{Motion Events}.
1981@end defun 1981@end defun
1982 1982
1983@defun event-convert-list list 1983@defun event-convert-list list
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index c943a6a29c1..f6cd0229c4d 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
438messages. 438messages.
439 439
440 When an error is due to invalid syntax in the program, the byte 440 When an error is due to invalid syntax in the program, the byte
441compiler might get confused about the errors' exact location. One way 441compiler might get confused about the error's exact location. One way
442to investigate is to switch to the buffer @w{@file{ *Compiler 442to investigate is to switch to the buffer @w{@file{ *Compiler
443Input*}}. (This buffer name starts with a space, so it does not show 443Input*}}. (This buffer name starts with a space, so it does not show
444up in the Buffer Menu.) This buffer contains the program being 444up in the Buffer Menu.) This buffer contains the program being
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 1956ee5503e..b7a6b570eb0 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1996,15 +1996,17 @@ newline.
1996 1996
1997 If the property value is @code{t}, the newline character has no 1997 If the property value is @code{t}, the newline character has no
1998effect on the displayed height of the line---the visible contents 1998effect on the displayed height of the line---the visible contents
1999alone determine the height. This is useful for tiling small images 1999alone determine the height. The @code{line-spacing} property,
2000(or image slices) without adding blank areas between the images. 2000described below, is also ignored in this case. This is useful for
2001tiling small images (or image slices) without adding blank areas
2002between the images.
2001 2003
2002 If the property value is a list of the form @code{(@var{height} 2004 If the property value is a list of the form @code{(@var{height}
2003@var{total})}, that adds extra space @emph{below} the display line. 2005@var{total})}, that adds extra space @emph{below} the display line.
2004First Emacs uses @var{height} as a height spec to control extra space 2006First Emacs uses @var{height} as a height spec to control extra space
2005@emph{above} the line; then it adds enough space @emph{below} the line 2007@emph{above} the line; then it adds enough space @emph{below} the line
2006to bring the total line height up to @var{total}. In this case, the 2008to bring the total line height up to @var{total}. In this case, any
2007other ways to specify the line spacing are ignored. 2009value of @code{line-spacing} property for the newline is ignored.
2008 2010
2009@cindex height spec 2011@cindex height spec
2010 Any other kind of property value is a height spec, which translates 2012 Any other kind of property value is a height spec, which translates
@@ -2054,9 +2056,10 @@ overrides line spacings specified for the frame.
2054 2056
2055@kindex line-spacing @r{(text property)} 2057@kindex line-spacing @r{(text property)}
2056 Finally, a newline can have a @code{line-spacing} text or overlay 2058 Finally, a newline can have a @code{line-spacing} text or overlay
2057property that overrides the default frame line spacing and the buffer 2059property that can enlarge the default frame line spacing and the
2058local @code{line-spacing} variable, for the display line ending in 2060buffer local @code{line-spacing} variable: if its value is larger than
2059that newline. 2061the buffer or frame defaults, that larger value is used instead, for
2062the display line ending in that newline.
2060 2063
2061 One way or another, these mechanisms specify a Lisp value for the 2064 One way or another, these mechanisms specify a Lisp value for the
2062spacing of each line. The value is a height spec, and it translates 2065spacing of each line. The value is a height spec, and it translates
@@ -5347,6 +5350,41 @@ that describe the outer circumference of the polygon.
5347@end lisp 5350@end lisp
5348@end defun 5351@end defun
5349 5352
5353@defun svg-text svg text &rest args
5354Add a text to @var{svg}.
5355
5356@lisp
5357(svg-text
5358 svg "This is a text"
5359 :font-size "40"
5360 :font-weight "bold"
5361 :stroke "black"
5362 :fill "white"
5363 :font-family "impact"
5364 :letter-spacing "4pt"
5365 :x 300
5366 :y 400
5367 :stroke-width 1)
5368@end lisp
5369@end defun
5370
5371@defun svg-embed svg image image-type datap &rest args
5372Add an embedded (raster) image to @var{svg}. If @var{datap} is
5373@code{nil}, @var{IMAGE} should be a file name; if not, it should be a
5374binary string containing the image data. @var{image-type} should be a
5375@acronym{MIME} image type, for instance @samp{"image/jpeg"}.
5376
5377@lisp
5378(svg-embed svg "~/rms.jpg" "image/jpeg" nil
5379 :width "100px" :height "100px"
5380 :x "50px" :y "75px")
5381@end lisp
5382@end defun
5383
5384@defun svg-remove svg id
5385Remove the element with identifier @code{id} from the @code{svg}.
5386@end defun
5387
5350Finally, the @code{svg-image} takes an SVG object as its parameter and 5388Finally, the @code{svg-image} takes an SVG object as its parameter and
5351returns an image object suitable for use in functions like 5389returns an image object suitable for use in functions like
5352@code{insert-image}. Here's a complete example that creates and 5390@code{insert-image}. Here's a complete example that creates and
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index f3650a4556f..ea9d53b0ea6 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -3238,7 +3238,9 @@ end position.
3238 3238
3239One responsibility of @var{from-fn} is to make sure that the beginning 3239One responsibility of @var{from-fn} is to make sure that the beginning
3240of the file no longer matches @var{regexp}. Otherwise it is likely to 3240of the file no longer matches @var{regexp}. Otherwise it is likely to
3241get called again. 3241get called again. Also, @var{from-fn} must not involve buffers or
3242files other than the one being decoded, otherwise the internal buffer
3243used for formatting might be overwritten.
3242 3244
3243@item to-fn 3245@item to-fn
3244A shell command or function to encode data in this format---that is, to 3246A 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
3269positions. All this takes place without modifying the buffer. 3271positions. All this takes place without modifying the buffer.
3270@end itemize 3272@end itemize
3271 3273
3274@var{to-fn} must not involve buffers or files other than the one being
3275encoded, otherwise the internal buffer used for formatting might be
3276overwritten.
3277
3272@item modify 3278@item modify
3273A flag, @code{t} if the encoding function modifies the buffer, and 3279A flag, @code{t} if the encoding function modifies the buffer, and
3274@code{nil} if it works by returning a list of annotations. 3280@code{nil} if it works by returning a list of annotations.
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 61ac80c589c..35d9d0c9654 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.
341@end defun 341@end defun
342 342
343@defun copy-keymap keymap 343@defun copy-keymap keymap
344This function returns a copy of @var{keymap}. Any keymaps that 344This function returns a copy of @var{keymap}. This is almost never
345needed. If you want a keymap that's like another yet with a few
346changes, you should use map inheritance rather than copying.
347I.e., something like:
348
349@example
350@group
351(let ((map (make-sparse-keymap)))
352 (set-keymap-parent map <theirmap>)
353 (define-key map ...)
354 ...)
355@end group
356@end example
357
358When performing @code{copy-keymap}, any keymaps that
345appear directly as bindings in @var{keymap} are also copied recursively, 359appear directly as bindings in @var{keymap} are also copied recursively,
346and so on to any number of levels. However, recursive copying does not 360and so on to any number of levels. However, recursive copying does not
347take place when the definition of a character is a symbol whose function 361take place when the definition of a character is a symbol whose function
@@ -1368,7 +1382,7 @@ default global map.
1368 The function @code{substitute-key-definition} scans a keymap for 1382 The function @code{substitute-key-definition} scans a keymap for
1369keys that have a certain binding and rebinds them with a different 1383keys that have a certain binding and rebinds them with a different
1370binding. Another feature which is cleaner and can often produce the 1384binding. Another feature which is cleaner and can often produce the
1371same results to remap one command into another (@pxref{Remapping 1385same results is to remap one command into another (@pxref{Remapping
1372Commands}). 1386Commands}).
1373 1387
1374@defun substitute-key-definition olddef newdef keymap &optional oldmap 1388@defun substitute-key-definition olddef newdef keymap &optional oldmap
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index c18c408209a..e7a739f88f3 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -1556,12 +1556,16 @@ keys may not be symbols:
1556@end smallexample 1556@end smallexample
1557@end defun 1557@end defun
1558 1558
1559@defun alist-get key value &optional default 1559@defun alist-get key value &optional default remove
1560This function is like @code{assq}, but instead of returning the entire 1560This function is like @code{assq}, but instead of returning the entire
1561association for @var{key}, @code{(@var{key} . @var{value})}, it 1561association for @var{key}, @code{(@var{key} . @var{value})}, it
1562returns just the @var{value}. It returns @var{default} if @var{key} 1562returns just the @var{value}. If @var{key} is not found in
1563is not found in @var{alist}, defaulting to @code{nil} if @var{default} 1563@var{alist} it returns @var{default}.
1564is omitted. 1564
1565This is a generalized variable (@pxref{Generalized Variables}) that
1566can be used to change a value with @code{setf}. When using it to set
1567a value, optional argument @var{remove} non-nil means to remove
1568@var{key} from @var{alist} if the new value is @code{eql} to @var{default}.
1565@end defun 1569@end defun
1566 1570
1567@defun rassq value alist 1571@defun rassq value alist
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index d2d38d7fb5e..81a1922d71c 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
848associated with @var{feature} are or will be available for other Lisp 848associated with @var{feature} are or will be available for other Lisp
849programs. 849programs.
850 850
851The direct effect of calling @code{provide} is if not already in 851The direct effect of calling @code{provide} is to add @var{feature} to
852@var{features} then to add @var{feature} to the front of that list and 852the front of @code{features} if it is not already in that list and
853call any @code{eval-after-load} code waiting for it (@pxref{Hooks for 853call any @code{eval-after-load} code waiting for it (@pxref{Hooks for
854Loading}). The argument @var{feature} must be a symbol. 854Loading}). The argument @var{feature} must be a symbol.
855@code{provide} returns @var{feature}. 855@code{provide} returns @var{feature}.
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index 1c904666cb4..1b4d74fb257 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},
340This function reports the current insertion type of @var{marker}. 340This function reports the current insertion type of @var{marker}.
341@end defun 341@end defun
342 342
343Most functions that create markers, without an argument allowing to 343All functions that create markers without accepting an argument that
344specify the insertion type, create them with insertion type 344specifies the insertion type, create them with insertion type
345@code{nil}. Also, the mark has, by default, insertion type 345@code{nil} (@pxref{Creating Markers}). Also, the mark has, by
346@code{nil}. 346default, insertion type @code{nil}.
347 347
348@node Moving Markers 348@node Moving Markers
349@section Moving Marker Positions 349@section Moving Marker Positions
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index e6d8f8a4c79..8d5347556e4 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.
750If @var{collection} is an obarray (@pxref{Creating Symbols}), the names 750If @var{collection} is an obarray (@pxref{Creating Symbols}), the names
751of all symbols in the obarray form the set of permissible completions. 751of all symbols in the obarray form the set of permissible completions.
752 752
753If @var{collection} is a hash table, then the keys that are strings 753If @var{collection} is a hash table, then the keys that are strings or
754are the possible completions. Other keys are ignored. 754symbols are the possible completions. Other keys are ignored.
755 755
756You can also use a function as @var{collection}. Then the function is 756You can also use a function as @var{collection}. Then the function is
757solely responsible for performing completion; @code{try-completion} 757solely responsible for performing completion; @code{try-completion}
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 7b76e6af9c3..368d882a4b8 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
799 799
800@item :group 800@item :group
801If this is specified, the value should be the customization group for 801If this is specified, the value should be the customization group for
802this mode. (Not all major modes have one.) Only the (still 802this mode. (Not all major modes have one.) The command
803experimental and unadvertised) command @code{customize-mode} currently 803@code{customize-mode} uses this. @code{define-derived-mode} does
804uses this. @code{define-derived-mode} does @emph{not} automatically 804@emph{not} automatically define the specified customization group.
805define the specified customization group.
806 805
807@item :after-hook 806@item :after-hook
808This optional keyword specifies a single Lisp form to evaluate as the 807This 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,
913or fail to run @code{after-change-major-mode-hook}. If you encounter 912or fail to run @code{after-change-major-mode-hook}. If you encounter
914such a major mode, please correct it to follow these conventions. 913such a major mode, please correct it to follow these conventions.
915 914
916 When you defined a major mode using @code{define-derived-mode}, it 915 When you define a major mode using @code{define-derived-mode}, it
917automatically makes sure these conventions are followed. If you 916automatically makes sure these conventions are followed. If you
918define a major mode ``by hand'', not using @code{define-derived-mode}, 917define a major mode ``by hand'', not using @code{define-derived-mode},
919use the following functions to handle these conventions automatically. 918use the following functions to handle these conventions automatically.
@@ -1066,7 +1065,7 @@ to invert the sort order.
1066@defun tabulated-list-init-header 1065@defun tabulated-list-init-header
1067This function computes and sets @code{header-line-format} for the 1066This function computes and sets @code{header-line-format} for the
1068Tabulated List buffer (@pxref{Header Lines}), and assigns a keymap to 1067Tabulated List buffer (@pxref{Header Lines}), and assigns a keymap to
1069the header line to allow sort entries by clicking on column headers. 1068the header line to allow sorting entries by clicking on column headers.
1070 1069
1071Modes derived from Tabulated List mode should call this after setting 1070Modes derived from Tabulated List mode should call this after setting
1072the above variables (in particular, only after setting 1071the above variables (in particular, only after setting
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 1d748b87529..796a06615ae 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.
590@deffn Command move-to-window-line count 590@deffn Command move-to-window-line count
591This function moves point with respect to the text currently displayed 591This function moves point with respect to the text currently displayed
592in the selected window. It moves point to the beginning of the screen 592in the selected window. It moves point to the beginning of the screen
593line @var{count} screen lines from the top of the window. If 593line @var{count} screen lines from the top of the window; zero means
594@var{count} is negative, that specifies a position 594the topmost line. If @var{count} is negative, that specifies a
595@w{@minus{}@var{count}} lines from the bottom (or the last line of the 595position @w{@minus{}@var{count}} lines from the bottom (or the last
596buffer, if the buffer ends above the specified screen position). 596line of the buffer, if the buffer ends above the specified screen
597position); thus, @var{count} of -1 specifies the last fully visible
598screen line of the window.
597 599
598If @var{count} is @code{nil}, then point moves to the beginning of the 600If @var{count} is @code{nil}, then point moves to the beginning of the
599line in the middle of the window. If the absolute value of @var{count} 601line in the middle of the window. If the absolute value of @var{count}
@@ -604,8 +606,8 @@ location onto the screen.
604 606
605In an interactive call, @var{count} is the numeric prefix argument. 607In an interactive call, @var{count} is the numeric prefix argument.
606 608
607The value returned is the window line number point has moved to, with 609The value returned is the screen line number point has moved to,
608the top line in the window numbered 0. 610relative to the top line of the window.
609@end deffn 611@end deffn
610 612
611@vindex move-to-window-group-line-function 613@vindex move-to-window-group-line-function
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index e3346aa3a5b..f859b3adde4 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -506,7 +506,7 @@ inputinput@point{}
506@defun call-process-shell-command command &optional infile destination display 506@defun call-process-shell-command command &optional infile destination display
507This function executes the shell command @var{command} synchronously. 507This function executes the shell command @var{command} synchronously.
508The arguments are handled as in @code{call-process}. An old calling 508The arguments are handled as in @code{call-process}. An old calling
509convention allowed to pass any number of additional arguments after 509convention allowed passing any number of additional arguments after
510@var{display}, which were concatenated to @var{command}; this is still 510@var{display}, which were concatenated to @var{command}; this is still
511supported, but strongly discouraged. 511supported, but strongly discouraged.
512@end defun 512@end defun
@@ -515,7 +515,7 @@ supported, but strongly discouraged.
515This function is like @code{call-process-shell-command}, but uses 515This function is like @code{call-process-shell-command}, but uses
516@code{process-file} internally. Depending on @code{default-directory}, 516@code{process-file} internally. Depending on @code{default-directory},
517@var{command} can be executed also on remote hosts. An old calling 517@var{command} can be executed also on remote hosts. An old calling
518convention allowed to pass any number of additional arguments after 518convention allowed passing any number of additional arguments after
519@var{display}, which were concatenated to @var{command}; this is still 519@var{display}, which were concatenated to @var{command}; this is still
520supported, but strongly discouraged. 520supported, but strongly discouraged.
521@end defun 521@end defun
@@ -1382,10 +1382,10 @@ subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}).
1382@end defun 1382@end defun
1383 1383
1384If the process's buffer is displayed in a window, your Lisp program 1384If the process's buffer is displayed in a window, your Lisp program
1385may wish telling the process the dimensions of that window, so that 1385may wish to tell the process the dimensions of that window, so that
1386the process could adapt its output to those dimensions, much as it 1386the process could adapt its output to those dimensions, much as it
1387adapts to the screen dimensions. The following functions allow to 1387adapts to the screen dimensions. The following functions allow
1388communicate this kind of information to processes; however, not all 1388communicating this kind of information to processes; however, not all
1389systems support the underlying functionality, so it is best to provide 1389systems support the underlying functionality, so it is best to provide
1390fallbacks, e.g., via command-line arguments or environment variables. 1390fallbacks, e.g., via command-line arguments or environment variables.
1391 1391
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index cf0505f4467..4e4c239291e 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.
668For instance, @var{str1} is considered less than @var{str2} if 668For instance, @var{str1} is considered less than @var{str2} if
669its first differing character has a smaller numeric value. If 669its first differing character has a smaller numeric value. If
670@var{ignore-case} is non-@code{nil}, characters are converted to 670@var{ignore-case} is non-@code{nil}, characters are converted to
671lower-case before comparing them. Unibyte strings are converted to 671upper-case before comparing them. Unibyte strings are converted to
672multibyte for comparison (@pxref{Text Representations}), so that a 672multibyte for comparison (@pxref{Text Representations}), so that a
673unibyte string and its conversion to multibyte are always regarded as 673unibyte string and its conversion to multibyte are always regarded as
674equal. 674equal.
@@ -685,7 +685,8 @@ specified portion) is less.
685This function works like @code{assoc}, except that @var{key} must be a 685This function works like @code{assoc}, except that @var{key} must be a
686string or symbol, and comparison is done using @code{compare-strings}. 686string or symbol, and comparison is done using @code{compare-strings}.
687Symbols are converted to strings before testing. 687Symbols are converted to strings before testing.
688If @var{case-fold} is non-@code{nil}, it ignores case differences. 688If @var{case-fold} is non-@code{nil}, @var{key} and the elements of
689@var{alist} are converted to upper-case before comparison.
689Unlike @code{assoc}, this function can also match elements of the alist 690Unlike @code{assoc}, this function can also match elements of the alist
690that are strings or symbols rather than conses. In particular, @var{alist} can 691that are strings or symbols rather than conses. In particular, @var{alist} can
691be a list of strings or symbols rather than an actual alist. 692be 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.
833 834
834The characters in @var{string}, other than the format specifications, 835The characters in @var{string}, other than the format specifications,
835are copied directly into the output, including their text properties, 836are copied directly into the output, including their text properties,
836if any. 837if any. Any text properties of the format specifications are copied
838to the produced string representations of the argument @var{objects}.
837@end defun 839@end defun
838 840
839@defun format-message string &rest objects 841@defun format-message string &rest objects
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 0b7759347fc..4dc943f868b 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
1376the effects of one command. A few exceptional commands are 1376the effects of one command. A few exceptional commands are
1377@dfn{amalgamating}: these commands generally cause small changes to 1377@dfn{amalgamating}: these commands generally cause small changes to
1378buffers, so with these a boundary is inserted only every 20th command, 1378buffers, so with these a boundary is inserted only every 20th command,
1379allowing to undo them as a group. By default, commands 1379allowing the changes to be undone as a group. By default, the commands
1380@code{self-insert-command}, which produces self-inserting input 1380@code{self-insert-command}, which produces self-inserting input
1381characters (@pxref{Commands for Insertion}), and @code{delete-char} 1381characters (@pxref{Commands for Insertion}), and @code{delete-char},
1382which deletes characters (@pxref{Deletion}) are amalgamating. 1382which deletes characters (@pxref{Deletion}), are amalgamating.
1383Where a command affects the contents of several buffers, as may happen, 1383Where a command affects the contents of several buffers, as may happen,
1384for example, when a function on the @code{post-command-hook} affects a 1384for example, when a function on the @code{post-command-hook} affects a
1385buffer other than the @code{current-buffer}, then @code{undo-boundary} 1385buffer other than the @code{current-buffer}, then @code{undo-boundary}
@@ -4614,6 +4614,9 @@ to be inserted between the textual elements.
4614 4614
4615@item dom-parent @var{dom} @var{node} 4615@item dom-parent @var{dom} @var{node}
4616Return the parent of @var{node} in @var{dom}. 4616Return the parent of @var{node} in @var{dom}.
4617
4618@item dom-remove @var{dom} @var{node}
4619Remove @var{node} from @var{dom}.
4617@end table 4620@end table
4618 4621
4619The following are functions for altering the @acronym{DOM}. 4622The following are functions for altering the @acronym{DOM}.
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 82f8cbc2e33..f311ec8a3a5 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
6727invoke them, @dfn{macros with semicolons}, are very common. These can 6727invoke them, @dfn{macros with semicolons}, are very common. These can
6728cause @ccmode{} to parse the next line wrongly as a 6728cause @ccmode{} to parse the next line wrongly as a
6729@code{statement-cont} (@pxref{Function Symbols}) and thus mis-indent 6729@code{statement-cont} (@pxref{Function Symbols}) and thus mis-indent
6730it. 6730it. At the top level, a macro invocation before a defun start can
6731cause, for example, @code{c-beginning-of-defun} (@kbd{C-M-a}) not to
6732find the correct start of the current function.
6731 6733
6732You can prevent this by specifying which macros have semicolons. It 6734You can prevent these by specifying which macros have semicolons. It
6733doesn't matter whether or not such a macro has a parameter list: 6735doesn't matter whether or not such a macro has a parameter list:
6734 6736
6735@defopt c-macro-names-with-semicolon 6737@defopt c-macro-names-with-semicolon
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 4137a95b3b2..c62fa727c10 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -148,6 +148,11 @@ the beginning:
148You may wish to add such a statement to your init file, if you 148You may wish to add such a statement to your init file, if you
149make frequent use of features from this package. 149make frequent use of features from this package.
150 150
151Code that only uses macros from this package can enclose the above in
152@code{eval-when-compile}. Internally, this library is divided into
153several files, @pxref{Organization}. Your code should only ever load
154the main @file{cl-lib} file, which will load the others as needed.
155
151@node Organization 156@node Organization
152@section Organization 157@section Organization
153 158
@@ -3364,7 +3369,7 @@ was @code{nil} for all elements.
3364@defun cl-notevery predicate seq &rest more-seqs 3369@defun cl-notevery predicate seq &rest more-seqs
3365This function calls @var{predicate} on each element of the sequence(s) 3370This function calls @var{predicate} on each element of the sequence(s)
3366in turn; it returns a non-@code{nil} value as soon as @var{predicate} 3371in turn; it returns a non-@code{nil} value as soon as @var{predicate}
3367returns @code{nil} for any element, or @code{t} if the predicate was 3372returns @code{nil} for any element, or @code{nil} if the predicate was
3368true for all elements. 3373true for all elements.
3369@end defun 3374@end defun
3370 3375
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index df673fc099f..2473d26cc15 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -828,6 +828,7 @@ Various
828* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email. 828* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
829* Spam Package:: A package for filtering and processing spam. 829* Spam Package:: A package for filtering and processing spam.
830* The Gnus Registry:: A package for tracking messages by Message-ID. 830* The Gnus Registry:: A package for tracking messages by Message-ID.
831* The Gnus Cloud:: A package for synchronizing Gnus marks.
831* Other modes:: Interaction with other modes. 832* Other modes:: Interaction with other modes.
832* Various Various:: Things that are really various. 833* Various Various:: Things that are really various.
833 834
@@ -22208,6 +22209,7 @@ to you, using @kbd{G b u} and updating the group will usually fix this.
22208* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email. 22209* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
22209* Spam Package:: A package for filtering and processing spam. 22210* Spam Package:: A package for filtering and processing spam.
22210* The Gnus Registry:: A package for tracking messages by Message-ID. 22211* The Gnus Registry:: A package for tracking messages by Message-ID.
22212* The Gnus Cloud:: A package for synchronizing Gnus marks.
22211* Other modes:: Interaction with other modes. 22213* Other modes:: Interaction with other modes.
22212* Various Various:: Things that are really various. 22214* Various Various:: Things that are really various.
22213@end menu 22215@end menu
@@ -26166,6 +26168,100 @@ default this is just @code{(marks)} so the custom registry marks are
26166precious. 26168precious.
26167@end defvar 26169@end defvar
26168 26170
26171@node The Gnus Cloud
26172@section The Gnus Cloud
26173@cindex cloud
26174@cindex gnus-cloud
26175@cindex synchronization
26176@cindex sync
26177@cindex synch
26178
26179The Gnus Cloud is a way to synchronize marks and general files and
26180data across multiple machines.
26181
26182Very often, you want all your marks (what articles you've read, which
26183ones were important, and so on) to be synchronized between several
26184machines. With IMAP, that's built into the protocol, so you can read
26185nnimap groups from many machines and they are automatically
26186synchronized. But NNTP, nnrss, and many other backends do not store
26187marks, so you have to do it locally.
26188
26189The Gnus Cloud package stores the marks, plus any files you choose, on
26190an IMAP server in a special folder. It's like a
26191DropTorrentSyncBoxOakTree(TM).
26192
26193@menu
26194* Gnus Cloud Setup::
26195* Gnus Cloud Usage::
26196@end menu
26197
26198@node Gnus Cloud Setup
26199@subsection Gnus Cloud Setup
26200
26201Setting up the Gnus Cloud takes less than a minute. From the Group
26202buffer:
26203
26204Press @kbd{^} to go to the Server buffer. Here you'll see all the
26205servers that Gnus knows. @xref{Server Buffer}.
26206
26207Then press @kbd{i} to mark any servers as cloud-synchronized (their marks are synchronized).
26208
26209Then press @kbd{I} to mark a single server as the cloud host (it must
26210be an IMAP server, and will host a special IMAP folder with all the
26211synchronization data). This will set the variable
26212@code{gnus-cloud-method} (using the Customize facilities), then ask
26213you to optionally upload your first CloudSynchronizationDataPack(TM).
26214
26215@node Gnus Cloud Usage
26216@subsection Gnus Cloud Usage
26217
26218After setting up, you can use these shortcuts from the Group buffer:
26219
26220@table @kbd
26221@item ~ RET
26222@item ~ d
26223@findex gnus-cloud-download-all-data
26224@cindex cloud, download
26225Download the latest Gnus Cloud data.
26226
26227@item ~ u
26228@item ~ ~
26229@findex gnus-cloud-upload-all-data
26230@cindex cloud, download
26231Upload the local Gnus Cloud data. Creates a new
26232CloudSynchronizationDataPack(TM).
26233
26234@end table
26235
26236But wait, there's more. Of course there's more. So much more. You can
26237customize all of the following.
26238
26239@defvar gnus-cloud-synced-files
26240These are the files that will be part of every
26241CloudSynchronizationDataPack(TM). They are included in every upload,
26242so don't synchronize a lot of large files. Files under 100Kb are best.
26243@end defvar
26244
26245@defvar gnus-cloud-storage-method
26246This is a choice from several storage methods. It's highly recommended
26247to use the EPG facilities. It will be automatic if have GnuPG
26248installed and EPG loaded. Otherwise, you could use Base64+gzip,
26249Base64, or no encoding.
26250@end defvar
26251
26252@defvar gnus-cloud-interactive
26253When this is set, and by default it is, the Gnus Cloud package will
26254ask you for confirmation here and there. Leave it on until you're
26255comfortable with the package.
26256@end defvar
26257
26258
26259@defvar gnus-cloud-method
26260The name of the IMAP server to store the
26261CloudSynchronizationDataPack(TM)s. It's easiest to set this from the
26262Server buffer (@pxref{Gnus Cloud Setup}).
26263@end defvar
26264
26169@node Other modes 26265@node Other modes
26170@section Interaction with other modes 26266@section Interaction with other modes
26171 26267
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index fa4fa4398b4..048990d53a7 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -67,7 +67,6 @@ Message mode buffers.
67* Interface:: Setting up message buffers. 67* Interface:: Setting up message buffers.
68* Commands:: Commands you can execute in message mode buffers. 68* Commands:: Commands you can execute in message mode buffers.
69* Variables:: Customizing the message buffers. 69* Variables:: Customizing the message buffers.
70* Compatibility:: Making Message backwards compatible.
71* Appendices:: More technical things. 70* Appendices:: More technical things.
72* GNU Free Documentation License:: The license for this documentation. 71* GNU Free Documentation License:: The license for this documentation.
73* Index:: Variable, function and concept index. 72* Index:: Variable, function and concept index.
@@ -2587,22 +2586,6 @@ An @dfn{action} can be either: a normal function, or a list where the
2587a form to be @code{eval}ed. 2586a form to be @code{eval}ed.
2588 2587
2589 2588
2590@node Compatibility
2591@chapter Compatibility
2592@cindex compatibility
2593
2594Message uses virtually only its own variables---older @code{mail-}
2595variables aren't consulted. To force Message to take those variables
2596into account, you can put the following in your @file{.emacs} file:
2597
2598@lisp
2599(require 'messcompat)
2600@end lisp
2601
2602This will initialize many Message variables from the values in the
2603corresponding mail variables.
2604
2605
2606@node Appendices 2589@node Appendices
2607@chapter Appendices 2590@chapter Appendices
2608 2591
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 85846f4da41..daa7055bbbc 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
3% Load plain if necessary, i.e., if running under initex. 3% Load plain if necessary, i.e., if running under initex.
4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5% 5%
6\def\texinfoversion{2016-05-28.16} 6\def\texinfoversion{2016-06-18.21}
7% 7%
8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -1192,6 +1192,7 @@ where each line of input produces a line of output.}
1192 \ifx\pdfescapestring\thisisundefined 1192 \ifx\pdfescapestring\thisisundefined
1193 % No primitive available; should we give a warning or log? 1193 % No primitive available; should we give a warning or log?
1194 % Many times it won't matter. 1194 % Many times it won't matter.
1195 \xdef#1{#1}%
1195 \else 1196 \else
1196 % The expandable \pdfescapestring primitive escapes parentheses, 1197 % The expandable \pdfescapestring primitive escapes parentheses,
1197 % backslashes, and other special chars. 1198 % backslashes, and other special chars.
@@ -1311,8 +1312,10 @@ output) for that.)}
1311 % We have to set dummies so commands such as @code, and characters 1312 % We have to set dummies so commands such as @code, and characters
1312 % such as \, aren't expanded when present in a section title. 1313 % such as \, aren't expanded when present in a section title.
1313 \indexnofonts 1314 \indexnofonts
1314 \turnoffactive
1315 \makevalueexpandable 1315 \makevalueexpandable
1316 \turnoffactive
1317 % Use ASCII approximations in destination names.
1318 \passthroughcharsfalse
1316 \def\pdfdestname{#1}% 1319 \def\pdfdestname{#1}%
1317 \txiescapepdf\pdfdestname 1320 \txiescapepdf\pdfdestname
1318 \safewhatsit{\pdfdest name{\pdfdestname} xyz}% 1321 \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
@@ -1357,8 +1360,21 @@ output) for that.)}
1357 \fi 1360 \fi
1358 % 1361 %
1359 % Also escape PDF chars in the display string. 1362 % Also escape PDF chars in the display string.
1360 \edef\pdfoutlinetext{#1}% 1363 \bgroup
1361 \txiescapepdf\pdfoutlinetext 1364 \ifx \declaredencoding \latone
1365 % The PDF format can use an extended form of Latin-1 in bookmark
1366 % strings. See Appendix D of the PDF Reference, Sixth Edition, for
1367 % the "PDFDocEncoding".
1368 \passthroughcharstrue
1369 \fi
1370 \ifx \declaredencoding \utfeight
1371 % TODO: the PDF format can use UTF-16 in bookmark strings, but the
1372 % code for this isn't done yet.
1373 \fi
1374 \globaldefs=1
1375 \edef\pdfoutlinetext{#1}%
1376 \txiescapepdf\pdfoutlinetext
1377 \egroup
1362 % 1378 %
1363 \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% 1379 \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
1364 } 1380 }
@@ -5948,18 +5964,32 @@ end
5948 \global\advance\dimen@ by 1pt 5964 \global\advance\dimen@ by 1pt
5949 \repeat 5965 \repeat
5950 }% 5966 }%
5951 \multiply\dimen@ii by 4 5967 \ifdim2\ht1>\vsize
5952 \divide\dimen@ii by 5 5968 % The left column has come out longer than the page itself. (Note
5953 \ifdim\ht3<\dimen@ii 5969 % that we have doubled \vsize for the double columns, so
5954 % Column heights are too different, so don't make their bottoms 5970 % the actual height of the page is 0.5\vsize). Just split the last
5955 % flush with each other. The glue at the end of the second column 5971 % of the double column material roughly in half.
5956 % allows a second column to stretch, reducing the difference in 5972 \setbox2=\box0
5957 % height between the two. 5973 \setbox0 = \vsplit2 to \dimen@ii
5958 \setbox0=\vbox to\dimen@{\unvbox1\vfill}% 5974 \setbox0=\vbox to\dimen@ii{\unvbox0}%
5959 \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% 5975 \setbox2=\vbox to\dimen@ii{\unvbox2}%
5960 \else 5976 \else
5961 \setbox0=\vbox to\dimen@{\unvbox1}% 5977 \multiply\dimen@ii by 5
5962 \setbox2=\vbox to\dimen@{\unvbox3}% 5978 \divide\dimen@ii by 4
5979 \global\setbox3 = \copy0
5980 \global\setbox1 = \vsplit3 to \dimen@ii
5981 \global\setbox\balancedcolumns=\vbox{\pagesofar}%
5982 \ifdim\ht3<\dimen@ii
5983 % Column heights are too different, so don't make their bottoms
5984 % flush with each other. The glue at the end of the second column
5985 % allows a second column to stretch, reducing the difference in
5986 % height between the two.
5987 \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
5988 \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
5989 \else
5990 \setbox0=\vbox to\dimen@{\unvbox1}%
5991 \setbox2=\vbox to\dimen@{\unvbox3}%
5992 \fi
5963 \fi 5993 \fi
5964 \fi 5994 \fi
5965 % 5995 %
@@ -10250,7 +10280,7 @@ directory should work if nowhere else does.}
10250 \countUTFx = "80 10280 \countUTFx = "80
10251 \countUTFy = "C2 10281 \countUTFy = "C2
10252 \def\UTFviiiTmp{% 10282 \def\UTFviiiTmp{%
10253 \gdef~{ 10283 \gdef~{%
10254 \ifpassthroughchars $\fi}}% 10284 \ifpassthroughchars $\fi}}%
10255 \UTFviiiLoop 10285 \UTFviiiLoop
10256 10286
@@ -10301,6 +10331,15 @@ directory should work if nowhere else does.}
10301 \fi 10331 \fi
10302} 10332}
10303 10333
10334% These macros are used here to construct the name of a control
10335% sequence to be defined.
10336\def\UTFviiiTwoOctetsName#1#2{%
10337 \csname u8:#1\string #2\endcsname}%
10338\def\UTFviiiThreeOctetsName#1#2#3{%
10339 \csname u8:#1\string #2\string #3\endcsname}%
10340\def\UTFviiiFourOctetsName#1#2#3#4{%
10341 \csname u8:#1\string #2\string #3\string #4\endcsname}%
10342
10304% For UTF-8 byte sequence (TeX, e-TeX and pdfTeX) 10343% For UTF-8 byte sequence (TeX, e-TeX and pdfTeX)
10305% Definition macro to replace the Unicode character 10344% Definition macro to replace the Unicode character
10306% Definition macro that is used by @U command 10345% Definition macro that is used by @U command
@@ -10317,17 +10356,18 @@ directory should work if nowhere else does.}
10317 \countUTFz = "#1\relax 10356 \countUTFz = "#1\relax
10318 \begingroup 10357 \begingroup
10319 \parseXMLCharref 10358 \parseXMLCharref
10359
10360 % Give \u8:... its definition. The sequence of seven \expandafter's
10361 % expands after the \gdef three times, e.g.
10362 %
10363 % 1. \UTFviiTwoOctetsName B1 B2
10364 % 2. \csname u8:B1 \string B2 \endcsname
10365 % 3. \u8: B1 B2 (a single control sequence token)
10320 % 10366 %
10321 % Access definitions of characters given UTF-8 sequences 10367 \expandafter\expandafter
10322 \def\UTFviiiTwoOctets##1##2{% 10368 \expandafter\expandafter
10323 \csname u8:##1\string ##2\endcsname}% 10369 \expandafter\expandafter
10324 \def\UTFviiiThreeOctets##1##2##3{% 10370 \expandafter\gdef \UTFviiiTmp{#2}%
10325 \csname u8:##1\string ##2\string ##3\endcsname}%
10326 \def\UTFviiiFourOctets##1##2##3##4{%
10327 \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
10328 \expandafter\expandafter\expandafter\expandafter
10329 \expandafter\expandafter\expandafter
10330 \gdef\UTFviiiTmp{#2}%
10331 % 10371 %
10332 \expandafter\ifx\csname uni:#1\endcsname \relax \else 10372 \expandafter\ifx\csname uni:#1\endcsname \relax \else
10333 \message{Internal error, already defined: #1}% 10373 \message{Internal error, already defined: #1}%
@@ -10337,37 +10377,53 @@ directory should work if nowhere else does.}
10337 \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp 10377 \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp
10338 \endgroup} 10378 \endgroup}
10339 % 10379 %
10340 % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp. 10380 % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp
10381 % to the corresponding UTF-8 sequence.
10341 \gdef\parseXMLCharref{% 10382 \gdef\parseXMLCharref{%
10342 \ifnum\countUTFz < "A0\relax 10383 \ifnum\countUTFz < "A0\relax
10343 \errhelp = \EMsimple 10384 \errhelp = \EMsimple
10344 \errmessage{Cannot define Unicode char value < 00A0}% 10385 \errmessage{Cannot define Unicode char value < 00A0}%
10345 \else\ifnum\countUTFz < "800\relax 10386 \else\ifnum\countUTFz < "800\relax
10346 \parseUTFviiiA,% 10387 \parseUTFviiiA,%
10347 \parseUTFviiiB C\UTFviiiTwoOctets.,% 10388 \parseUTFviiiB C\UTFviiiTwoOctetsName.,%
10348 \else\ifnum\countUTFz < "10000\relax 10389 \else\ifnum\countUTFz < "10000\relax
10349 \parseUTFviiiA;% 10390 \parseUTFviiiA;%
10350 \parseUTFviiiA,% 10391 \parseUTFviiiA,%
10351 \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% 10392 \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}%
10352 \else 10393 \else
10353 \parseUTFviiiA;% 10394 \parseUTFviiiA;%
10354 \parseUTFviiiA,% 10395 \parseUTFviiiA,%
10355 \parseUTFviiiA!% 10396 \parseUTFviiiA!%
10356 \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% 10397 \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}%
10357 \fi\fi\fi 10398 \fi\fi\fi
10358 } 10399 }
10359 10400
10401 % Extract a byte from the end of the UTF-8 representation of \countUTFx.
10402 % It must be a non-initial byte in the sequence.
10403 % Change \uccode of #1 for it to be used in \parseUTFviiiB as one
10404 % of the bytes.
10360 \gdef\parseUTFviiiA#1{% 10405 \gdef\parseUTFviiiA#1{%
10361 \countUTFx = \countUTFz 10406 \countUTFx = \countUTFz
10362 \divide\countUTFz by 64 10407 \divide\countUTFz by 64
10363 \countUTFy = \countUTFz 10408 \countUTFy = \countUTFz % Save to be the future value of \countUTFz.
10364 \multiply\countUTFz by 64 10409 \multiply\countUTFz by 64
10410
10411 % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract
10412 % in order to get the last five bits.
10365 \advance\countUTFx by -\countUTFz 10413 \advance\countUTFx by -\countUTFz
10414
10415 % Convert this to the byte in the UTF-8 sequence.
10366 \advance\countUTFx by 128 10416 \advance\countUTFx by 128
10367 \uccode `#1\countUTFx 10417 \uccode `#1\countUTFx
10368 \countUTFz = \countUTFy} 10418 \countUTFz = \countUTFy}
10369 10419
10370 % Used to set \UTFviiiTmp to a UTF-8 byte sequence 10420 % Used to put a UTF-8 byte sequence into \UTFviiiTmp
10421 % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8
10422 % sequence.
10423 % #2 is one of the \UTFviii*OctetsName macros.
10424 % #3 is always a full stop (.)
10425 % #4 is a template for the other bytes in the sequence. The values for these
10426 % bytes is substituted in here with \uppercase using the \uccode's.
10371 \gdef\parseUTFviiiB#1#2#3#4{% 10427 \gdef\parseUTFviiiB#1#2#3#4{%
10372 \advance\countUTFz by "#10\relax 10428 \advance\countUTFz by "#10\relax
10373 \uccode `#3\countUTFz 10429 \uccode `#3\countUTFz
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 894ccbe9c9c..e8c181b2292 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -565,7 +565,7 @@ remote host.
565@command{ssh} can also take extra parameters as port numbers. For 565@command{ssh} can also take extra parameters as port numbers. For
566example, a host on port 42 is specified as @file{host#42} (the real 566example, a host on port 42 is specified as @file{host#42} (the real
567host name, a hash sign, then a port number). It is the same as passing 567host name, a hash sign, then a port number). It is the same as passing
568@code{-p 42} to the @command{ssh} command. 568@samp{-p 42} to the @command{ssh} command.
569 569
570@item @option{telnet} 570@item @option{telnet}
571@cindex method telnet 571@cindex method telnet
@@ -832,7 +832,7 @@ Since SMB shares end in the @code{$} character, @value{tramp} must use
832substitutions. 832substitutions.
833 833
834When @value{tramp} is not specific about the share name or uses the 834When @value{tramp} is not specific about the share name or uses the
835generic remote directory @code{/}, @command{smbclient} returns all 835generic remote directory @file{/}, @command{smbclient} returns all
836available shares. 836available shares.
837 837
838Since SMB authentication is based on each SMB share, @value{tramp} 838Since SMB authentication is based on each SMB share, @value{tramp}
@@ -957,6 +957,22 @@ syntax requires a leading volume (share) name, for example:
957based on standard protocols, such as HTTP@. @option{davs} does the same 957based on standard protocols, such as HTTP@. @option{davs} does the same
958but with SSL encryption. Both methods support the port numbers. 958but with SSL encryption. Both methods support the port numbers.
959 959
960@item @option{gdrive}
961@cindex method gdrive
962@cindex gdrive method
963@cindex Google Drive
964
965Via the @option{gdrive} method it is possible to access your Google
966Drive online storage. User and host name of the remote file name are
967your email address of the Google Drive credentials, like
968@file{@trampfn{gdrive,john.doe@@gmail.com,/}}. These credentials must
969be populated in your @command{Online Accounts} application outside Emacs.
970
971Since Google Drive uses cryptic blob file names internally,
972@value{tramp} works with the @code{display-name} of the files. This
973could produce unexpected behaviour in case two files in the same
974directory have the same @code{display-name}, such a situation must be avoided.
975
960@item @option{obex} 976@item @option{obex}
961@cindex method obex 977@cindex method obex
962@cindex obex method 978@cindex obex method
@@ -986,8 +1002,8 @@ requires the SYNCE-GVFS plugin.
986@vindex tramp-gvfs-methods 1002@vindex tramp-gvfs-methods
987This custom option is a list of external methods for GVFS@. By 1003This custom option is a list of external methods for GVFS@. By
988default, this list includes @option{afp}, @option{dav}, @option{davs}, 1004default, this list includes @option{afp}, @option{dav}, @option{davs},
989@option{obex}, @option{sftp} and @option{synce}. Other methods to 1005@option{gdrive}, @option{obex}, @option{sftp} and @option{synce}.
990include are: @option{ftp} and @option{smb}. 1006Other methods to include are: @option{ftp} and @option{smb}.
991@end defopt 1007@end defopt
992 1008
993 1009
@@ -1650,13 +1666,16 @@ shown below for @value{tramp} to use when connecting.
1650 1666
1651Another way to find the remote path is to use the path assigned to the 1667Another way to find the remote path is to use the path assigned to the
1652remote user by the remote host. @value{tramp} does not normally retain 1668remote user by the remote host. @value{tramp} does not normally retain
1653this remote path after logging. However, @code{tramp-own-remote-path} 1669this remote path after login. However, @code{tramp-own-remote-path}
1654preserves the path value, which can be used to update 1670preserves the path value, which can be used to update
1655@code{tramp-remote-path}. 1671@code{tramp-remote-path}.
1656 1672
1657@lisp 1673@lisp
1658(add-to-list 'tramp-remote-path 'tramp-own-remote-path) 1674(add-to-list 'tramp-remote-path 'tramp-own-remote-path)
1659@end lisp 1675@end lisp
1676
1677@strong{Note} that this works only if your remote @command{/bin/sh}
1678shell supports the login argument @samp{-l}.
1660@end defopt 1679@end defopt
1661 1680
1662When remote search paths are changed, local @value{tramp} caches must 1681When 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}):
1848@end example 1867@end example
1849 1868
1850The above command-line syntax has changed with @command{busybox} 1869The above command-line syntax has changed with @command{busybox}
1851versions. If @command{nc} refuses the @command{-p} parameter, then 1870versions. If @command{nc} refuses the @samp{-p} parameter, then
1852overwrite as follows: 1871overwrite as follows:
1853 1872
1854@lisp 1873@lisp
@@ -1876,9 +1895,9 @@ Applications such as @code{SSHDroid} that run @command{sshd} process
1876on the Android device can accept any @option{ssh}-based methods 1895on the Android device can accept any @option{ssh}-based methods
1877provided these settings are adjusted: 1896provided these settings are adjusted:
1878 1897
1879@code{sh} must be specified for remote shell since Android devices do 1898@command{sh} must be specified for remote shell since Android devices
1880not provide @code{/bin/sh}. @code{sh} will then invoke whatever shell is 1899do not provide @command{/bin/sh}. @command{sh} will then invoke
1881installed on the device with this setting: 1900whatever shell is installed on the device with this setting:
1882 1901
1883@lisp 1902@lisp
1884(add-to-list 'tramp-connection-properties 1903(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
2854of @command{ls} is in color. 2873of @command{ls} is in color.
2855 2874
2856To disable @acronym{ANSI} escape sequences from the remote hosts, 2875To disable @acronym{ANSI} escape sequences from the remote hosts,
2857disable @option{--color=yes} or @option{--color=auto} in the remote 2876disable @samp{--color=yes} or @samp{--color=auto} in the remote host's
2858host's @file{.bashrc} or @file{.profile}. Turn this alias on and off 2877@file{.bashrc} or @file{.profile}. Turn this alias on and off to see
2859to see if file name completion works. 2878if file name completion works.
2860 2879
2861@item 2880@item
2862File name completion does not work in directories with large number of 2881File 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
2869globbing. 2888globbing.
2870 2889
2871To test if globbing hangs, open a shell on the remote host and then 2890To test if globbing hangs, open a shell on the remote host and then
2872run @samp{ls -d * ..?* > /dev/null}. 2891run @command{ls -d * ..?* > /dev/null}.
2873 2892
2874When testing, ensure the remote shell is the same shell 2893When testing, ensure the remote shell is the same shell
2875(@command{/bin/sh}, @command{ksh} or @command{bash}), that 2894(@command{/bin/sh}, @command{ksh} or @command{bash}), that
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi
index cdd008bc865..3101dc0de82 100644
--- a/doc/misc/trampver.texi
+++ b/doc/misc/trampver.texi
@@ -8,7 +8,7 @@
8@c In the Tramp GIT, the version number is auto-frobbed from 8@c In the Tramp GIT, the version number is auto-frobbed from
9@c configure.ac, so you should edit that file and run 9@c configure.ac, so you should edit that file and run
10@c "autoconf && ./configure" to change the version number. 10@c "autoconf && ./configure" to change the version number.
11@set trampver 2.3.0-pre 11@set trampver 2.3.1-pre
12 12
13@c Other flags from configuration 13@c Other flags from configuration
14@set instprefix /usr/local 14@set instprefix /usr/local