diff options
| author | Joakim Verona | 2013-01-07 00:03:49 +0100 |
|---|---|---|
| committer | Joakim Verona | 2013-01-07 00:03:49 +0100 |
| commit | be73be611d160876f9df633ff3a2d86eb78f65c7 (patch) | |
| tree | da818705af78c54104d99583e7895d7e0d0f5cb6 | |
| parent | b18e01b65e651d3b626b4edcaaa2aa636fe25b69 (diff) | |
| parent | 84f6744ab74d1c5f201e88273fc6faa65956a440 (diff) | |
| download | emacs-be73be611d160876f9df633ff3a2d86eb78f65c7.tar.gz emacs-be73be611d160876f9df633ff3a2d86eb78f65c7.zip | |
auto upstream
33 files changed, 436 insertions, 206 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 18e76e01400..601949af88e 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2013-01-05 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * text.texi (HTML Mode): Remove deleted nxml C-RET binding. | ||
| 4 | |||
| 1 | 2012-12-21 Glenn Morris <rgm@gnu.org> | 5 | 2012-12-21 Glenn Morris <rgm@gnu.org> |
| 2 | 6 | ||
| 3 | * emacs-xtra.texi (copying): The FSF does not sell copies of this. | 7 | * emacs-xtra.texi (copying): The FSF does not sell copies of this. |
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index cc5ecc475af..d50a841d509 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi | |||
| @@ -1917,7 +1917,7 @@ used as a cheap preview (@code{sgml-tags-invisible}). | |||
| 1917 | The major mode for editing XML documents is called nXML mode. This | 1917 | The major mode for editing XML documents is called nXML mode. This |
| 1918 | is a powerful major mode that can recognize many existing XML schema | 1918 | is a powerful major mode that can recognize many existing XML schema |
| 1919 | and use them to provide completion of XML elements via | 1919 | and use them to provide completion of XML elements via |
| 1920 | @kbd{C-@key{RET}} or @kbd{M-@key{TAB}}, as well as ``on-the-fly'' XML | 1920 | @kbd{M-@key{TAB}}, as well as ``on-the-fly'' XML |
| 1921 | validation with error highlighting. To enable nXML mode in an | 1921 | validation with error highlighting. To enable nXML mode in an |
| 1922 | existing buffer, type @kbd{M-x nxml-mode}, or, equivalently, @kbd{M-x | 1922 | existing buffer, type @kbd{M-x nxml-mode}, or, equivalently, @kbd{M-x |
| 1923 | xml-mode}. Emacs uses nXML mode for files which have the extension | 1923 | xml-mode}. Emacs uses nXML mode for files which have the extension |
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index e701f61c6b0..64973ca38c5 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog | |||
| @@ -1,3 +1,21 @@ | |||
| 1 | 2013-01-06 Chong Yidong <cyd@gnu.org> | ||
| 2 | |||
| 3 | * windows.texi (Vertical Scrolling): Fix typos (Bug#13267). | ||
| 4 | |||
| 5 | 2013-01-05 Glenn Morris <rgm@gnu.org> | ||
| 6 | |||
| 7 | * display.texi (Overlay Properties): Mention field. (Bug#13364) | ||
| 8 | |||
| 9 | 2013-01-05 Eli Zaretskii <eliz@gnu.org> | ||
| 10 | |||
| 11 | * hooks.texi (Standard Hooks): Use @item, not @itemx, as the first | ||
| 12 | directive in a group of items. | ||
| 13 | |||
| 14 | 2013-01-05 Chong Yidong <cyd@gnu.org> | ||
| 15 | |||
| 16 | * keymaps.texi (Key Sequences): Remove obsolete sentence | ||
| 17 | (Bug#13356). | ||
| 18 | |||
| 1 | 2013-01-04 Ari Roponen <ari.roponen@gmail.com> (tiny change) | 19 | 2013-01-04 Ari Roponen <ari.roponen@gmail.com> (tiny change) |
| 2 | 20 | ||
| 3 | * hash.texi (Defining Hash): Fix typo. (Bug#13345) | 21 | * hash.texi (Defining Hash): Fix typo. (Bug#13345) |
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index b1a096b24df..cc6e980dadc 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi | |||
| @@ -1559,6 +1559,14 @@ mouse onto the text in the overlay, Emacs displays a help string in the | |||
| 1559 | echo area, or in the tooltip window. For details see @ref{Text | 1559 | echo area, or in the tooltip window. For details see @ref{Text |
| 1560 | help-echo}. | 1560 | help-echo}. |
| 1561 | 1561 | ||
| 1562 | @item field | ||
| 1563 | @kindex field @r{(overlay property)} | ||
| 1564 | @c Copied from Special Properties. | ||
| 1565 | Consecutive characters with the same @code{field} property constitute a | ||
| 1566 | @emph{field}. Some motion functions including @code{forward-word} and | ||
| 1567 | @code{beginning-of-line} stop moving at a field boundary. | ||
| 1568 | @xref{Fields}. | ||
| 1569 | |||
| 1562 | @item modification-hooks | 1570 | @item modification-hooks |
| 1563 | @kindex modification-hooks @r{(overlay property)} | 1571 | @kindex modification-hooks @r{(overlay property)} |
| 1564 | This property's value is a list of functions to be called if any | 1572 | This property's value is a list of functions to be called if any |
diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi index 40a3c162f58..745393f8166 100644 --- a/doc/lispref/hooks.texi +++ b/doc/lispref/hooks.texi | |||
| @@ -121,7 +121,7 @@ The command loop runs this soon after @code{post-command-hook} (q.v.). | |||
| 121 | @item delete-terminal-functions | 121 | @item delete-terminal-functions |
| 122 | @xref{Multiple Terminals}. | 122 | @xref{Multiple Terminals}. |
| 123 | 123 | ||
| 124 | @itemx pop-up-frame-function | 124 | @item pop-up-frame-function |
| 125 | @itemx split-window-preferred-function | 125 | @itemx split-window-preferred-function |
| 126 | @xref{Choosing Window Options}. | 126 | @xref{Choosing Window Options}. |
| 127 | 127 | ||
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi index c4bbe303bf9..cb6c785905c 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi | |||
| @@ -94,9 +94,6 @@ Manual}. | |||
| 94 | (kbd "<f1> SPC") @result{} [f1 32] | 94 | (kbd "<f1> SPC") @result{} [f1 32] |
| 95 | (kbd "C-M-<down>") @result{} [C-M-down] | 95 | (kbd "C-M-<down>") @result{} [C-M-down] |
| 96 | @end example | 96 | @end example |
| 97 | |||
| 98 | This macro is not meant for use with arguments that vary---only | ||
| 99 | with string constants. | ||
| 100 | @end defun | 97 | @end defun |
| 101 | 98 | ||
| 102 | @node Keymap Basics | 99 | @node Keymap Basics |
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index b3c143496dd..792002add81 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi | |||
| @@ -3054,10 +3054,11 @@ pixels. In this case, the return value is @var{lines}. | |||
| 3054 | @end defun | 3054 | @end defun |
| 3055 | 3055 | ||
| 3056 | @defvar auto-window-vscroll | 3056 | @defvar auto-window-vscroll |
| 3057 | If this variable is non-@code{nil}, the line-move, scroll-up, and | 3057 | If this variable is non-@code{nil}, the @code{line-move}, |
| 3058 | scroll-down functions will automatically modify the vertical scroll | 3058 | @code{scroll-up}, and @code{scroll-down} functions will automatically |
| 3059 | position to scroll through display rows that are taller than the height | 3059 | modify the vertical scroll position to scroll through display rows |
| 3060 | of the window, for example in the presence of large images. | 3060 | that are taller than the height of the window, for example in the |
| 3061 | presence of large images. | ||
| 3061 | @end defvar | 3062 | @end defvar |
| 3062 | 3063 | ||
| 3063 | @node Horizontal Scrolling | 3064 | @node Horizontal Scrolling |
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index b0c39ce8507..79214acc102 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,38 @@ | |||
| 1 | 2013-01-06 Andreas Schwab <schwab@linux-m68k.org> | ||
| 2 | |||
| 3 | * autotype.texi: Remove undefined command @subtitlefont. | ||
| 4 | * cc-mode.texi: Likewise. | ||
| 5 | |||
| 6 | * org.texi (Advanced features): Use `@w{ }' instead of `@ ' in | ||
| 7 | @item argument. | ||
| 8 | (Property searches): Use \\ instead of @backslashchar{}. | ||
| 9 | * pgg.texi (VERSION): Move @set below @setfilename. | ||
| 10 | |||
| 11 | 2013-01-05 Andreas Schwab <schwab@linux-m68k.org> | ||
| 12 | |||
| 13 | * ada-mode.texi: Remove braces from @title argument. | ||
| 14 | * eudc.texi: Likewise. | ||
| 15 | * smtpmail.texi: Likewise. | ||
| 16 | * auth.texi (VERSION): Set before first use. | ||
| 17 | * emacs-gnutls.texi (VERSION): Likewise. | ||
| 18 | * pgg.texi (VERSION): Likewise. | ||
| 19 | * ede.texi (Top): Rename from top, all uses changed. | ||
| 20 | * eshell.texi: Add missing argument to @sp. | ||
| 21 | * forms.texi (Top): Reorder menu to match structure. | ||
| 22 | * htmlfontify.texi (Customisation): Add missing @item in | ||
| 23 | @enumerate. | ||
| 24 | * org.texi (Advanced features): Add missing argument for @item. | ||
| 25 | (Property searches): Use @backslashchar{} in macro argument. | ||
| 26 | * pcl-cvs.texi: Add missing argument to @sp. | ||
| 27 | (Movement commands): Fix use of @itemx. | ||
| 28 | * vip.texi (Misc Commands, Viewing the Buffer): Likewise. | ||
| 29 | * reftex.texi (Options (Creating Citations)): Add missing newline | ||
| 30 | before @end. | ||
| 31 | * tramp.texi (Obtaining Tramp): Remove extra dots. | ||
| 32 | (Configuration): Reorder menu to match structure. | ||
| 33 | (Remote shell setup): Replace literal NUL character by \0. | ||
| 34 | * viper.texi (Marking): Add missing argument for @item. | ||
| 35 | |||
| 1 | 2013-01-04 Glenn Morris <rgm@gnu.org> | 36 | 2013-01-04 Glenn Morris <rgm@gnu.org> |
| 2 | 37 | ||
| 3 | * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): | 38 | * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): |
diff --git a/doc/misc/ada-mode.texi b/doc/misc/ada-mode.texi index a5988684e06..926d6a5749c 100644 --- a/doc/misc/ada-mode.texi +++ b/doc/misc/ada-mode.texi | |||
| @@ -25,7 +25,7 @@ modify this GNU manual.'' | |||
| 25 | 25 | ||
| 26 | @titlepage | 26 | @titlepage |
| 27 | @sp 10 | 27 | @sp 10 |
| 28 | @title{Ada Mode} | 28 | @title Ada Mode |
| 29 | @sp 2 | 29 | @sp 2 |
| 30 | @subtitle An Emacs major mode for programming in Ada | 30 | @subtitle An Emacs major mode for programming in Ada |
| 31 | @subtitle Ada Mode Version 4.00 | 31 | @subtitle Ada Mode Version 4.00 |
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi index 72b0338fb68..36ee400acca 100644 --- a/doc/misc/auth.texi +++ b/doc/misc/auth.texi | |||
| @@ -2,11 +2,11 @@ | |||
| 2 | 2 | ||
| 3 | @include gnus-overrides.texi | 3 | @include gnus-overrides.texi |
| 4 | 4 | ||
| 5 | @set VERSION 0.3 | ||
| 6 | |||
| 5 | @setfilename ../../info/auth | 7 | @setfilename ../../info/auth |
| 6 | @settitle Emacs auth-source Library @value{VERSION} | 8 | @settitle Emacs auth-source Library @value{VERSION} |
| 7 | 9 | ||
| 8 | @set VERSION 0.3 | ||
| 9 | |||
| 10 | @copying | 10 | @copying |
| 11 | This file describes the Emacs auth-source library. | 11 | This file describes the Emacs auth-source library. |
| 12 | 12 | ||
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi index ad6a2902b1e..137ed6b43e8 100644 --- a/doc/misc/autotype.texi +++ b/doc/misc/autotype.texi | |||
| @@ -37,8 +37,7 @@ modify this GNU manual.'' | |||
| 37 | 37 | ||
| 38 | @center @titlefont{Autotyping} | 38 | @center @titlefont{Autotyping} |
| 39 | @sp 2 | 39 | @sp 2 |
| 40 | @center @subtitlefont{Convenient features for text that you enter | 40 | @center Convenient features for text that you enter frequently in Emacs |
| 41 | frequently in Emacs} | ||
| 42 | @sp 2 | 41 | @sp 2 |
| 43 | @center Daniel Pfeiffer | 42 | @center Daniel Pfeiffer |
| 44 | @center additions by Dave Love | 43 | @center additions by Dave Love |
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi index f63c6c54a16..55b7028101a 100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi | |||
| @@ -188,7 +188,7 @@ modify this GNU manual.'' | |||
| 188 | 188 | ||
| 189 | @center @titlefont{CC Mode 5.32} | 189 | @center @titlefont{CC Mode 5.32} |
| 190 | @sp 2 | 190 | @sp 2 |
| 191 | @center @subtitlefont{A GNU Emacs mode for editing C and C-like languages} | 191 | @center A GNU Emacs mode for editing C and C-like languages |
| 192 | @sp 2 | 192 | @sp 2 |
| 193 | @center Barry A. Warsaw, Martin Stjernholm, Alan Mackenzie | 193 | @center Barry A. Warsaw, Martin Stjernholm, Alan Mackenzie |
| 194 | 194 | ||
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi index 2001c8fef68..cadd815025c 100644 --- a/doc/misc/ede.texi +++ b/doc/misc/ede.texi | |||
| @@ -63,7 +63,7 @@ modify this GNU manual.'' | |||
| 63 | 63 | ||
| 64 | @contents | 64 | @contents |
| 65 | 65 | ||
| 66 | @node top, EDE Project Concepts, (dir), (dir) | 66 | @node Top, EDE Project Concepts, (dir), (dir) |
| 67 | @top EDE | 67 | @top EDE |
| 68 | @comment node-name, next, previous, up | 68 | @comment node-name, next, previous, up |
| 69 | 69 | ||
| @@ -91,7 +91,7 @@ learn and adopt GNU ways of doing things. | |||
| 91 | * GNU Free Documentation License:: The license for this documentation. | 91 | * GNU Free Documentation License:: The license for this documentation. |
| 92 | @end menu | 92 | @end menu |
| 93 | 93 | ||
| 94 | @node EDE Project Concepts, EDE Mode, top, top | 94 | @node EDE Project Concepts, EDE Mode, Top, Top |
| 95 | @chapter @ede{} Project Concepts | 95 | @chapter @ede{} Project Concepts |
| 96 | 96 | ||
| 97 | @ede{} is a generic interface for managing projects. It specifies a | 97 | @ede{} is a generic interface for managing projects. It specifies a |
| @@ -126,7 +126,7 @@ of search to files in a single target, or to discover the location of | |||
| 126 | documentation or interface files. @ede{} can provide this | 126 | documentation or interface files. @ede{} can provide this |
| 127 | information. | 127 | information. |
| 128 | 128 | ||
| 129 | @node EDE Mode, Quick Start, EDE Project Concepts, top | 129 | @node EDE Mode, Quick Start, EDE Project Concepts, Top |
| 130 | @chapter @ede{} Mode | 130 | @chapter @ede{} Mode |
| 131 | 131 | ||
| 132 | @ede{} is implemented as a minor mode, which augments other modes such | 132 | @ede{} is implemented as a minor mode, which augments other modes such |
| @@ -143,7 +143,7 @@ bar. This menu provides several menu items for high-level @ede{} | |||
| 143 | commands. These menu items, and their corresponding keybindings, are | 143 | commands. These menu items, and their corresponding keybindings, are |
| 144 | independent of the type of project you are actually working on. | 144 | independent of the type of project you are actually working on. |
| 145 | 145 | ||
| 146 | @node Quick Start, Creating a project, EDE Mode, top | 146 | @node Quick Start, Creating a project, EDE Mode, Top |
| 147 | @chapter Quick Start | 147 | @chapter Quick Start |
| 148 | 148 | ||
| 149 | Once you have @ede{} enabled, you can create a project. This chapter | 149 | Once you have @ede{} enabled, you can create a project. This chapter |
| @@ -439,7 +439,7 @@ C-c . R RET RET | |||
| 439 | If your program takes command line arguments, you can type them in | 439 | If your program takes command line arguments, you can type them in |
| 440 | when it offers the command line you want to use to run your program. | 440 | when it offers the command line you want to use to run your program. |
| 441 | 441 | ||
| 442 | @node Creating a project, Modifying your project, Quick Start, top | 442 | @node Creating a project, Modifying your project, Quick Start, Top |
| 443 | @chapter Creating a project | 443 | @chapter Creating a project |
| 444 | 444 | ||
| 445 | To create a new project, first visit a file that you want to include | 445 | To create a new project, first visit a file that you want to include |
| @@ -497,7 +497,7 @@ the top-most project's makefile as a starting place for the build. How | |||
| 497 | the toplevel project handles subprojects in the build process is | 497 | the toplevel project handles subprojects in the build process is |
| 498 | dependent on that project's type. | 498 | dependent on that project's type. |
| 499 | 499 | ||
| 500 | @node Modifying your project, Building and Debugging, Creating a project, top | 500 | @node Modifying your project, Building and Debugging, Creating a project, Top |
| 501 | @chapter Modifying your project | 501 | @chapter Modifying your project |
| 502 | 502 | ||
| 503 | In this chapter, we describe the generic features for manipulating | 503 | In this chapter, we describe the generic features for manipulating |
| @@ -678,7 +678,7 @@ block for ``configurations''. Add a new named configuration here. | |||
| 678 | To switch between different active configurations, modify the | 678 | To switch between different active configurations, modify the |
| 679 | ``configuration default'' slot. | 679 | ``configuration default'' slot. |
| 680 | 680 | ||
| 681 | @node Building and Debugging, Miscellaneous commands, Modifying your project, top | 681 | @node Building and Debugging, Miscellaneous commands, Modifying your project, Top |
| 682 | @chapter Building and Debugging | 682 | @chapter Building and Debugging |
| 683 | 683 | ||
| 684 | @ede{} provides the following ``project-aware'' compilation and | 684 | @ede{} provides the following ``project-aware'' compilation and |
| @@ -697,7 +697,7 @@ Build a distribution file for your project. | |||
| 697 | 697 | ||
| 698 | These commands are also available from the @samp{Development} menu. | 698 | These commands are also available from the @samp{Development} menu. |
| 699 | 699 | ||
| 700 | @node Miscellaneous commands, Extending EDE, Building and Debugging, top | 700 | @node Miscellaneous commands, Extending EDE, Building and Debugging, Top |
| 701 | @chapter Miscellaneous commands | 701 | @chapter Miscellaneous commands |
| 702 | 702 | ||
| 703 | If you opt to go in and edit @ede{} project files directly---for | 703 | If you opt to go in and edit @ede{} project files directly---for |
| @@ -1093,7 +1093,7 @@ You can add your own locate tool but subclassing from | |||
| 1093 | methods. See the code in @file{ede-locate.el} for GNU Global as a | 1093 | methods. See the code in @file{ede-locate.el} for GNU Global as a |
| 1094 | simple example. | 1094 | simple example. |
| 1095 | 1095 | ||
| 1096 | @node Extending EDE, GNU Free Documentation License, Miscellaneous commands, top | 1096 | @node Extending EDE, GNU Free Documentation License, Miscellaneous commands, Top |
| 1097 | @chapter Extending @ede{} | 1097 | @chapter Extending @ede{} |
| 1098 | 1098 | ||
| 1099 | This chapter is intended for users who want to write new parts or fix | 1099 | This chapter is intended for users who want to write new parts or fix |
diff --git a/doc/misc/emacs-gnutls.texi b/doc/misc/emacs-gnutls.texi index b046eff3c08..740dfee41ed 100644 --- a/doc/misc/emacs-gnutls.texi +++ b/doc/misc/emacs-gnutls.texi | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | \input texinfo @c -*-texinfo-*- | 1 | \input texinfo @c -*-texinfo-*- |
| 2 | 2 | ||
| 3 | @set VERSION 0.3 | ||
| 4 | |||
| 3 | @setfilename ../../info/emacs-gnutls | 5 | @setfilename ../../info/emacs-gnutls |
| 4 | @settitle Emacs GnuTLS Integration @value{VERSION} | 6 | @settitle Emacs GnuTLS Integration @value{VERSION} |
| 5 | 7 | ||
| 6 | @set VERSION 0.3 | ||
| 7 | |||
| 8 | @copying | 8 | @copying |
| 9 | This file describes the Emacs GnuTLS integration. | 9 | This file describes the Emacs GnuTLS integration. |
| 10 | 10 | ||
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index 58597599cdb..504940c5c6b 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi | |||
| @@ -32,9 +32,9 @@ modify this GNU manual.'' | |||
| 32 | @sp 4 | 32 | @sp 4 |
| 33 | @c The title is printed in a large font. | 33 | @c The title is printed in a large font. |
| 34 | @center @titlefont{User's Guide} | 34 | @center @titlefont{User's Guide} |
| 35 | @sp | 35 | @sp 1 |
| 36 | @center @titlefont{to} | 36 | @center @titlefont{to} |
| 37 | @sp | 37 | @sp 1 |
| 38 | @center @titlefont{Eshell: The Emacs Shell} | 38 | @center @titlefont{Eshell: The Emacs Shell} |
| 39 | @ignore | 39 | @ignore |
| 40 | @sp 2 | 40 | @sp 2 |
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi index b92aacc88f0..5b06cc7f11a 100644 --- a/doc/misc/eudc.texi +++ b/doc/misc/eudc.texi | |||
| @@ -35,8 +35,8 @@ modify this GNU manual.'' | |||
| 35 | @footnotestyle end | 35 | @footnotestyle end |
| 36 | 36 | ||
| 37 | @titlepage | 37 | @titlepage |
| 38 | @title{EUDC Manual} | 38 | @title EUDC Manual |
| 39 | @subtitle{The Emacs Unified Directory Client} | 39 | @subtitle The Emacs Unified Directory Client |
| 40 | @author by Oscar Figueiredo | 40 | @author by Oscar Figueiredo |
| 41 | @code{1.30b} | 41 | @code{1.30b} |
| 42 | 42 | ||
diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi index fb888941357..43ffab26c9b 100644 --- a/doc/misc/forms.texi +++ b/doc/misc/forms.texi | |||
| @@ -87,8 +87,8 @@ how to present it. | |||
| 87 | * Miscellaneous:: Forms mode messages and other remarks. | 87 | * Miscellaneous:: Forms mode messages and other remarks. |
| 88 | * Error Messages:: List of error messages forms mode can produce. | 88 | * Error Messages:: List of error messages forms mode can produce. |
| 89 | * Long Example:: A more complex control file example. | 89 | * Long Example:: A more complex control file example. |
| 90 | * GNU Free Documentation License:: The license for this documentation. | ||
| 91 | * Credits:: Thanks everyone. | 90 | * Credits:: Thanks everyone. |
| 91 | * GNU Free Documentation License:: The license for this documentation. | ||
| 92 | * Index:: Index to this manual. | 92 | * Index:: Index to this manual. |
| 93 | @end menu | 93 | @end menu |
| 94 | @end ifnottex | 94 | @end ifnottex |
diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi index d6904740778..911cdd3cd5f 100644 --- a/doc/misc/htmlfontify.texi +++ b/doc/misc/htmlfontify.texi | |||
| @@ -1520,9 +1520,12 @@ Regex used to parse an etags entry: must have 3 subexps, corresponding, | |||
| 1520 | in order, to: | 1520 | in order, to: |
| 1521 | 1521 | ||
| 1522 | @enumerate | 1522 | @enumerate |
| 1523 | The tag | 1523 | @item |
| 1524 | The line | 1524 | The tag |
| 1525 | The character (point) at which the tag occurs | 1525 | @item |
| 1526 | The line | ||
| 1527 | @item | ||
| 1528 | The character (point) at which the tag occurs | ||
| 1526 | @end enumerate | 1529 | @end enumerate |
| 1527 | 1530 | ||
| 1528 | @item hfy-index-file | 1531 | @item hfy-index-file |
diff --git a/doc/misc/org.texi b/doc/misc/org.texi index 737c186a5a4..47ee0954671 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi | |||
| @@ -3027,7 +3027,7 @@ lines will be left alone by this command. | |||
| 3027 | Selects this line for global recalculation with @kbd{C-u C-c *}, but | 3027 | Selects this line for global recalculation with @kbd{C-u C-c *}, but |
| 3028 | not for automatic recalculation. Use this when automatic | 3028 | not for automatic recalculation. Use this when automatic |
| 3029 | recalculation slows down editing too much. | 3029 | recalculation slows down editing too much. |
| 3030 | @item | 3030 | @item @w{ } |
| 3031 | Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}. | 3031 | Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}. |
| 3032 | All lines that should be recalculated should be marked with @samp{#} | 3032 | All lines that should be recalculated should be marked with @samp{#} |
| 3033 | or @samp{*}. | 3033 | or @samp{*}. |
| @@ -5050,7 +5050,7 @@ FILE @r{The filename the entry is located in.} | |||
| 5050 | To create sparse trees and special lists with selection based on properties, | 5050 | To create sparse trees and special lists with selection based on properties, |
| 5051 | the same commands are used as for tag searches (@pxref{Tag searches}). | 5051 | the same commands are used as for tag searches (@pxref{Tag searches}). |
| 5052 | @table @kbd | 5052 | @table @kbd |
| 5053 | @orgcmdkkc{C-c / m,C-c \,org-match-sparse-tree} | 5053 | @orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree} |
| 5054 | Create a sparse tree with all matching entries. With a | 5054 | Create a sparse tree with all matching entries. With a |
| 5055 | @kbd{C-u} prefix argument, ignore headlines that are not a TODO line. | 5055 | @kbd{C-u} prefix argument, ignore headlines that are not a TODO line. |
| 5056 | @orgcmd{C-c a m,org-tags-view} | 5056 | @orgcmd{C-c a m,org-tags-view} |
diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi index 0749ceefd01..7c294591d0e 100644 --- a/doc/misc/pcl-cvs.texi +++ b/doc/misc/pcl-cvs.texi | |||
| @@ -31,9 +31,9 @@ modify this GNU manual.'' | |||
| 31 | @sp 4 | 31 | @sp 4 |
| 32 | @c The title is printed in a large font. | 32 | @c The title is printed in a large font. |
| 33 | @center @titlefont{User's Guide} | 33 | @center @titlefont{User's Guide} |
| 34 | @sp | 34 | @sp 1 |
| 35 | @center @titlefont{to} | 35 | @center @titlefont{to} |
| 36 | @sp | 36 | @sp 1 |
| 37 | @center @titlefont{PCL-CVS---The Emacs Front-End to CVS} | 37 | @center @titlefont{PCL-CVS---The Emacs Front-End to CVS} |
| 38 | @ignore | 38 | @ignore |
| 39 | @sp 2 | 39 | @sp 2 |
| @@ -682,7 +682,7 @@ the fact that the buffer is a PCL-CVS buffer: | |||
| 682 | These keys move the cursor one file forward, towards the end of the | 682 | These keys move the cursor one file forward, towards the end of the |
| 683 | buffer (@code{cvs-mode-next-line}).@refill | 683 | buffer (@code{cvs-mode-next-line}).@refill |
| 684 | 684 | ||
| 685 | @itemx p | 685 | @item p |
| 686 | This key moves one file backward, towards the beginning of the buffer | 686 | This key moves one file backward, towards the beginning of the buffer |
| 687 | (@code{cvs-mode-previous-line}). | 687 | (@code{cvs-mode-previous-line}). |
| 688 | @end table | 688 | @end table |
diff --git a/doc/misc/pgg.texi b/doc/misc/pgg.texi index 6326f84420c..a18a22e649f 100644 --- a/doc/misc/pgg.texi +++ b/doc/misc/pgg.texi | |||
| @@ -3,9 +3,9 @@ | |||
| 3 | @include gnus-overrides.texi | 3 | @include gnus-overrides.texi |
| 4 | 4 | ||
| 5 | @setfilename ../../info/pgg | 5 | @setfilename ../../info/pgg |
| 6 | @settitle PGG @value{VERSION} | ||
| 7 | 6 | ||
| 8 | @set VERSION 0.1 | 7 | @set VERSION 0.1 |
| 8 | @settitle PGG @value{VERSION} | ||
| 9 | 9 | ||
| 10 | @copying | 10 | @copying |
| 11 | This file describes PGG @value{VERSION}, an Emacs interface to various | 11 | This file describes PGG @value{VERSION}, an Emacs interface to various |
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi index c5b95e4754a..0ee206b1a4d 100644 --- a/doc/misc/reftex.texi +++ b/doc/misc/reftex.texi | |||
| @@ -4611,7 +4611,8 @@ prompt for values. Possible values are: | |||
| 4611 | @example | 4611 | @example |
| 4612 | nil @r{Never prompt for optional arguments} | 4612 | nil @r{Never prompt for optional arguments} |
| 4613 | t @r{Always prompt} | 4613 | t @r{Always prompt} |
| 4614 | maybe @r{Prompt only if @code{reftex-citation} was called with C-u prefix arg}@end example | 4614 | maybe @r{Prompt only if @code{reftex-citation} was called with C-u prefix arg} |
| 4615 | @end example | ||
| 4615 | Unnecessary empty optional arguments are removed before insertion into | 4616 | Unnecessary empty optional arguments are removed before insertion into |
| 4616 | the buffer. See @code{reftex-cite-cleanup-optional-args}. | 4617 | the buffer. See @code{reftex-cite-cleanup-optional-args}. |
| 4617 | @end defopt | 4618 | @end defopt |
diff --git a/doc/misc/smtpmail.texi b/doc/misc/smtpmail.texi index ede4d2a2382..dce90d06012 100644 --- a/doc/misc/smtpmail.texi +++ b/doc/misc/smtpmail.texi | |||
| @@ -24,9 +24,9 @@ modify this GNU manual.'' | |||
| 24 | @end direntry | 24 | @end direntry |
| 25 | 25 | ||
| 26 | @titlepage | 26 | @titlepage |
| 27 | @title{Emacs SMTP Library} | 27 | @title Emacs SMTP Library |
| 28 | @subtitle{An Emacs package for sending mail via SMTP} | 28 | @subtitle An Emacs package for sending mail via SMTP |
| 29 | @author{Simon Josefsson, Alex Schroeder} | 29 | @author Simon Josefsson, Alex Schroeder |
| 30 | @page | 30 | @page |
| 31 | @vskip 0pt plus 1filll | 31 | @vskip 0pt plus 1filll |
| 32 | @insertcopying | 32 | @insertcopying |
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 2df3b4265d0..a683425868a 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi | |||
| @@ -374,7 +374,7 @@ This release includes the full documentation and code for | |||
| 374 | @value{tramp}, suitable for installation. But Emacs (22 or later) | 374 | @value{tramp}, suitable for installation. But Emacs (22 or later) |
| 375 | includes @value{tramp} already, and there is a @value{tramp} package | 375 | includes @value{tramp} already, and there is a @value{tramp} package |
| 376 | for XEmacs, as well. So maybe it is easier to just use those. But if | 376 | for XEmacs, as well. So maybe it is easier to just use those. But if |
| 377 | you want the bleeding edge, read on@dots{...} | 377 | you want the bleeding edge, read on@dots{} |
| 378 | 378 | ||
| 379 | For the especially brave, @value{tramp} is available from Git. The Git | 379 | For the especially brave, @value{tramp} is available from Git. The Git |
| 380 | version is the latest version of the code and may contain incomplete | 380 | version is the latest version of the code and may contain incomplete |
| @@ -515,8 +515,8 @@ Method}. | |||
| 515 | * Connection caching:: Reusing connection related information. | 515 | * Connection caching:: Reusing connection related information. |
| 516 | * Remote Programs:: How @value{tramp} finds and uses programs on the remote machine. | 516 | * Remote Programs:: How @value{tramp} finds and uses programs on the remote machine. |
| 517 | * Remote shell setup:: Remote shell setup hints. | 517 | * Remote shell setup:: Remote shell setup hints. |
| 518 | * Windows setup hints:: Issues with Cygwin ssh. | ||
| 519 | * Auto-save and Backup:: Auto-save and Backup. | 518 | * Auto-save and Backup:: Auto-save and Backup. |
| 519 | * Windows setup hints:: Issues with Cygwin ssh. | ||
| 520 | @end menu | 520 | @end menu |
| 521 | 521 | ||
| 522 | 522 | ||
| @@ -1899,7 +1899,7 @@ of your (local or remote) host, you might need to adapt this. Example: | |||
| 1899 | "passwort" "Passwort" | 1899 | "passwort" "Passwort" |
| 1900 | ;; Fran@,{c}ais | 1900 | ;; Fran@,{c}ais |
| 1901 | "mot de passe" "Mot de passe") t) | 1901 | "mot de passe" "Mot de passe") t) |
| 1902 | ".*: | 1902 | ".*:\0? *")) |
| 1903 | @end lisp | 1903 | @end lisp |
| 1904 | 1904 | ||
| 1905 | In parallel, it might also be necessary to adapt | 1905 | In parallel, it might also be necessary to adapt |
diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi index dbf83df46d3..01048d43dbf 100644 --- a/doc/misc/vip.texi +++ b/doc/misc/vip.texi | |||
| @@ -677,9 +677,9 @@ Call last remembered keyboard macro. | |||
| 677 | Suspend Emacs. | 677 | Suspend Emacs. |
| 678 | @item Z Z | 678 | @item Z Z |
| 679 | Exit Emacs. | 679 | Exit Emacs. |
| 680 | @itemx Q | 680 | @item Q |
| 681 | Query replace. | 681 | Query replace. |
| 682 | @itemx R | 682 | @item R |
| 683 | Replace. | 683 | Replace. |
| 684 | @end table | 684 | @end table |
| 685 | 685 | ||
| @@ -944,11 +944,11 @@ Scroll text of current window upward almost full screen. You can go | |||
| 944 | @kindex 002 @kbd{C-b} (@code{vip-scroll-back}) | 944 | @kindex 002 @kbd{C-b} (@code{vip-scroll-back}) |
| 945 | Scroll text of current window downward almost full screen. You can go | 945 | Scroll text of current window downward almost full screen. You can go |
| 946 | @i{backward} in the buffer by this command (@code{vip-scroll-back}). | 946 | @i{backward} in the buffer by this command (@code{vip-scroll-back}). |
| 947 | @itemx C-d | 947 | @item C-d |
| 948 | @kindex 004 @kbd{C-d} (@code{vip-scroll-up}) | 948 | @kindex 004 @kbd{C-d} (@code{vip-scroll-up}) |
| 949 | Scroll text of current window upward half screen. You can go | 949 | Scroll text of current window upward half screen. You can go |
| 950 | @i{down} in the buffer by this command (@code{vip-scroll-down}). | 950 | @i{down} in the buffer by this command (@code{vip-scroll-down}). |
| 951 | @itemx C-u | 951 | @item C-u |
| 952 | @kindex 025 @kbd{C-u} (@code{vip-scroll-down}) | 952 | @kindex 025 @kbd{C-u} (@code{vip-scroll-down}) |
| 953 | Scroll text of current window downward half screen. You can go | 953 | Scroll text of current window downward half screen. You can go |
| 954 | @i{up} in the buffer by this command (@code{vip-scroll-up}). | 954 | @i{up} in the buffer by this command (@code{vip-scroll-up}). |
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi index 9a291dc19bb..9bcecf8e3de 100644 --- a/doc/misc/viper.texi +++ b/doc/misc/viper.texi | |||
| @@ -3465,7 +3465,7 @@ Exchange point and mark. | |||
| 3465 | Exchange point and mark and go to the first CHAR on line. | 3465 | Exchange point and mark and go to the first CHAR on line. |
| 3466 | @item '<a-z> | 3466 | @item '<a-z> |
| 3467 | Go to specified Viper mark. | 3467 | Go to specified Viper mark. |
| 3468 | @item | 3468 | @item `<a-z> |
| 3469 | Go to specified Viper mark and go to the first CHAR on line. | 3469 | Go to specified Viper mark and go to the first CHAR on line. |
| 3470 | @end table | 3470 | @end table |
| 3471 | @kindex @kbd{m<a-z>} | 3471 | @kindex @kbd{m<a-z>} |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5b54d34743c..9425ca5cdc2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,40 @@ | |||
| 1 | 2013-01-06 Jürgen Hötzel <juergen@archlinux.org> | ||
| 2 | |||
| 3 | * net/tramp-adb.el (tramp-methods): Add `tramp-tmpdir' entry. | ||
| 4 | |||
| 5 | 2013-01-06 Michael Albinus <michael.albinus@gmx.de> | ||
| 6 | |||
| 7 | * net/tramp-adb.el (tramp-adb-ls-toolbox-regexp): The file size can | ||
| 8 | consist of mor than one digit. | ||
| 9 | (tramp-adb-file-name-handler-alist): Use | ||
| 10 | `tramp-handle-file-exists-p' consistently. | ||
| 11 | (tramp-adb-file-name-handler): Don't tweak `tramp-default-host'. | ||
| 12 | (tramp-adb-handle-file-exists-p): Remove function. | ||
| 13 | (tramp-adb-file-name-host): New defun. | ||
| 14 | (tramp-adb-execute-adb-command, tramp-adb-maybe-open-connection): | ||
| 15 | Use it. | ||
| 16 | (tramp-adb-maybe-open-connection): Set "remote-path" property. | ||
| 17 | |||
| 18 | 2013-01-06 Chong Yidong <cyd@gnu.org> | ||
| 19 | |||
| 20 | * vc/vc.el (vc-next-action): Detect buffer modifications | ||
| 21 | conflicting with locking VCS operation (Bug#11490). | ||
| 22 | |||
| 23 | * vc/vc-hooks.el (vc-after-save): DTRT for locking VCSes. | ||
| 24 | |||
| 25 | 2013-01-05 Michael Albinus <michael.albinus@gmx.de> | ||
| 26 | |||
| 27 | * net/tramp-adb.el (tramp-do-parse-file-attributes-with-ls): | ||
| 28 | (tramp-adb-handle-directory-files-and-attributes): Fix typos. | ||
| 29 | |||
| 30 | 2013-01-05 Jürgen Hötzel <juergen@archlinux.org> | ||
| 31 | |||
| 32 | * net/tramp-adb.el (tramp-adb-handle-file-attributes): More robust | ||
| 33 | parsing of ls output using regular expression (handle filenames | ||
| 34 | with spaces). Use virtual device number. | ||
| 35 | (tramp-do-parse-file-attributes-with-ls): New defun (Code | ||
| 36 | cleanup). | ||
| 37 | |||
| 1 | 2013-01-04 Daiki Ueno <ueno@gnu.org> | 38 | 2013-01-04 Daiki Ueno <ueno@gnu.org> |
| 2 | 39 | ||
| 3 | * epg.el: Silence byte-compiler warnings. | 40 | * epg.el: Silence byte-compiler warnings. |
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index b5f99ffc93c..bb9ff015ac3 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el | |||
| @@ -56,8 +56,18 @@ | |||
| 56 | (defconst tramp-adb-ls-date-regexp | 56 | (defconst tramp-adb-ls-date-regexp |
| 57 | "[[:space:]][0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9][[:space:]][0-9][0-9]:[0-9][0-9][[:space:]]") | 57 | "[[:space:]][0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9][[:space:]][0-9][0-9]:[0-9][0-9][[:space:]]") |
| 58 | 58 | ||
| 59 | (defconst tramp-adb-ls-toolbox-regexp | ||
| 60 | (concat | ||
| 61 | "^[[:space:]]*\\([-[:alpha:]]+\\)" ; \1 permissions | ||
| 62 | "[[:space:]]*\\([^[:space:]]+\\)" ; \2 username | ||
| 63 | "[[:space:]]+\\([^[:space:]]+\\)" ; \3 group | ||
| 64 | "[[:space:]]+\\([[:digit:]]+\\)" ; \4 size | ||
| 65 | "[[:space:]]+\\([-[:digit:]]+[[:space:]][:[:digit:]]+\\)" ; \5 date | ||
| 66 | "[[:space:]]+\\(.*\\)$")) ; \6 filename | ||
| 67 | |||
| 59 | ;;;###tramp-autoload | 68 | ;;;###tramp-autoload |
| 60 | (add-to-list 'tramp-methods `(,tramp-adb-method)) | 69 | (add-to-list 'tramp-methods `(,tramp-adb-method |
| 70 | (tramp-tmpdir "/data/local/tmp"))) | ||
| 61 | 71 | ||
| 62 | ;;;###tramp-autoload | 72 | ;;;###tramp-autoload |
| 63 | (eval-after-load 'tramp | 73 | (eval-after-load 'tramp |
| @@ -86,8 +96,8 @@ | |||
| 86 | (file-directory-p . tramp-adb-handle-file-directory-p) | 96 | (file-directory-p . tramp-adb-handle-file-directory-p) |
| 87 | (file-symlink-p . tramp-handle-file-symlink-p) | 97 | (file-symlink-p . tramp-handle-file-symlink-p) |
| 88 | ;; FIXME: This is too sloppy. | 98 | ;; FIXME: This is too sloppy. |
| 89 | (file-executable-p . file-exists-p) | 99 | (file-executable-p . tramp-handle-file-exists-p) |
| 90 | (file-exists-p . tramp-adb-handle-file-exists-p) | 100 | (file-exists-p . tramp-handle-file-exists-p) |
| 91 | (file-readable-p . tramp-handle-file-exists-p) | 101 | (file-readable-p . tramp-handle-file-exists-p) |
| 92 | (file-writable-p . tramp-adb-handle-file-writable-p) | 102 | (file-writable-p . tramp-adb-handle-file-writable-p) |
| 93 | (file-local-copy . tramp-adb-handle-file-local-copy) | 103 | (file-local-copy . tramp-adb-handle-file-local-copy) |
| @@ -95,6 +105,9 @@ | |||
| 95 | (expand-file-name . tramp-adb-handle-expand-file-name) | 105 | (expand-file-name . tramp-adb-handle-expand-file-name) |
| 96 | (find-backup-file-name . tramp-handle-find-backup-file-name) | 106 | (find-backup-file-name . tramp-handle-find-backup-file-name) |
| 97 | (directory-files . tramp-handle-directory-files) | 107 | (directory-files . tramp-handle-directory-files) |
| 108 | (directory-files-and-attributes | ||
| 109 | . tramp-adb-handle-directory-files-and-attributes) | ||
| 110 | (file-name-all-completions . tramp-sh-handle-file-name-all-completions) | ||
| 98 | (make-directory . tramp-adb-handle-make-directory) | 111 | (make-directory . tramp-adb-handle-make-directory) |
| 99 | (delete-directory . tramp-adb-handle-delete-directory) | 112 | (delete-directory . tramp-adb-handle-delete-directory) |
| 100 | (delete-file . tramp-adb-handle-delete-file) | 113 | (delete-file . tramp-adb-handle-delete-file) |
| @@ -127,13 +140,7 @@ | |||
| 127 | "Invoke the ADB handler for OPERATION. | 140 | "Invoke the ADB handler for OPERATION. |
| 128 | First arg specifies the OPERATION, second arg is a list of arguments to | 141 | First arg specifies the OPERATION, second arg is a list of arguments to |
| 129 | pass to the OPERATION." | 142 | pass to the OPERATION." |
| 130 | (let ((fn (assoc operation tramp-adb-file-name-handler-alist)) | 143 | (let ((fn (assoc operation tramp-adb-file-name-handler-alist))) |
| 131 | ;; `tramp-default-host's default value is (system-name). Not | ||
| 132 | ;; useful for us. | ||
| 133 | (tramp-default-host | ||
| 134 | (unless (equal (eval (car (get 'tramp-default-host 'standard-value))) | ||
| 135 | tramp-default-host) | ||
| 136 | tramp-default-host))) | ||
| 137 | (if fn | 144 | (if fn |
| 138 | (save-match-data (apply (cdr fn) args)) | 145 | (save-match-data (apply (cdr fn) args)) |
| 139 | (tramp-run-real-handler operation args)))) | 146 | (tramp-run-real-handler operation args)))) |
| @@ -280,30 +287,73 @@ pass to the OPERATION." | |||
| 280 | (tramp-shell-quote-argument localname)) "") | 287 | (tramp-shell-quote-argument localname)) "") |
| 281 | (with-current-buffer (tramp-get-buffer v) | 288 | (with-current-buffer (tramp-get-buffer v) |
| 282 | (tramp-adb-sh-fix-ls-output) | 289 | (tramp-adb-sh-fix-ls-output) |
| 283 | (let* ((columns (split-string (buffer-string))) | 290 | (cdar (tramp-do-parse-file-attributes-with-ls v id-format))))))) |
| 284 | (mod-string (nth 0 columns)) | 291 | |
| 285 | (is-dir (eq ?d (aref mod-string 0))) | 292 | (defun tramp-do-parse-file-attributes-with-ls (vec &optional id-format) |
| 286 | (is-symlink (eq ?l (aref mod-string 0))) | 293 | "Parse `file-attributes' for Tramp files using the ls(1) command." |
| 287 | (symlink-target | 294 | (with-current-buffer (tramp-get-buffer vec) |
| 288 | (and is-symlink | 295 | (goto-char (point-min)) |
| 289 | (cadr (split-string (buffer-string) "\\( -> \\|\n\\)")))) | 296 | (let ((file-properties nil)) |
| 290 | (uid (nth 1 columns)) | 297 | (while (re-search-forward tramp-adb-ls-toolbox-regexp nil t) |
| 291 | (gid (nth 2 columns)) | 298 | (let* ((mod-string (match-string 1)) |
| 292 | (date (format "%s %s" (nth 4 columns) (nth 5 columns))) | 299 | (is-dir (eq ?d (aref mod-string 0))) |
| 293 | (size (string-to-number (nth 3 columns)))) | 300 | (is-symlink (eq ?l (aref mod-string 0))) |
| 294 | (list | 301 | (uid (match-string 2)) |
| 295 | (or is-dir symlink-target) | 302 | (gid (match-string 3)) |
| 296 | 1 ;link-count | 303 | (size (string-to-number (match-string 4))) |
| 297 | ;; no way to handle numeric ids in Androids ash | 304 | (date (match-string 5)) |
| 298 | (if (eq id-format 'integer) 0 uid) | 305 | (name (match-string 6)) |
| 299 | (if (eq id-format 'integer) 0 gid) | 306 | (symlink-target |
| 300 | '(0 0) ; atime | 307 | (and is-symlink |
| 301 | (date-to-time date) ; mtime | 308 | (cadr (split-string name "\\( -> \\|\n\\)"))))) |
| 302 | '(0 0) ; ctime | 309 | (push (list |
| 303 | size | 310 | name |
| 304 | mod-string | 311 | (or is-dir symlink-target) |
| 305 | ;; fake | 312 | 1 ;link-count |
| 306 | t 1 1))))))) | 313 | ;; no way to handle numeric ids in Androids ash |
| 314 | (if (eq id-format 'integer) 0 uid) | ||
| 315 | (if (eq id-format 'integer) 0 gid) | ||
| 316 | '(0 0) ; atime | ||
| 317 | (date-to-time date) ; mtime | ||
| 318 | '(0 0) ; ctime | ||
| 319 | size | ||
| 320 | mod-string | ||
| 321 | ;; fake | ||
| 322 | t 1 | ||
| 323 | (tramp-get-device vec)) | ||
| 324 | file-properties))) | ||
| 325 | file-properties))) | ||
| 326 | |||
| 327 | (defun tramp-adb-handle-directory-files-and-attributes | ||
| 328 | (directory &optional full match nosort id-format) | ||
| 329 | "Like `directory-files-and-attributes' for Tramp files." | ||
| 330 | (when (file-directory-p directory) | ||
| 331 | (with-parsed-tramp-file-name (expand-file-name directory) nil | ||
| 332 | (with-tramp-file-property | ||
| 333 | v localname (format "directory-files-attributes-%s-%s-%s-%s" | ||
| 334 | full match id-format nosort) | ||
| 335 | (tramp-adb-barf-unless-okay | ||
| 336 | v (format "%s -a -l %s" | ||
| 337 | (tramp-adb-get-ls-command v) | ||
| 338 | (tramp-shell-quote-argument localname)) "") | ||
| 339 | (with-current-buffer (tramp-get-buffer v) | ||
| 340 | (tramp-adb-sh-fix-ls-output) | ||
| 341 | (let ((result (tramp-do-parse-file-attributes-with-ls | ||
| 342 | v (or id-format 'integer)))) | ||
| 343 | (when full | ||
| 344 | (setq result | ||
| 345 | (mapcar | ||
| 346 | (lambda (x) | ||
| 347 | (cons (expand-file-name (car x) directory) (cdr x))) | ||
| 348 | result))) | ||
| 349 | (unless nosort | ||
| 350 | (setq result | ||
| 351 | (sort result (lambda (x y) (string< (car x) (car y)))))) | ||
| 352 | (delq nil | ||
| 353 | (mapcar (lambda (x) | ||
| 354 | (if (or (not match) (string-match match (car x))) | ||
| 355 | x)) | ||
| 356 | result)))))))) | ||
| 307 | 357 | ||
| 308 | (defun tramp-adb-get-ls-command (vec) | 358 | (defun tramp-adb-get-ls-command (vec) |
| 309 | (with-tramp-connection-property vec "ls" | 359 | (with-tramp-connection-property vec "ls" |
| @@ -885,20 +935,19 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." | |||
| 885 | (tramp-set-connection-property v "process-name" nil) | 935 | (tramp-set-connection-property v "process-name" nil) |
| 886 | (tramp-set-connection-property v "process-buffer" nil))))) | 936 | (tramp-set-connection-property v "process-buffer" nil))))) |
| 887 | 937 | ||
| 888 | ;; Android < 4 doesn't provide test command. | ||
| 889 | |||
| 890 | (defun tramp-adb-handle-file-exists-p (filename) | ||
| 891 | "Like `file-exists-p' for Tramp files." | ||
| 892 | (with-parsed-tramp-file-name filename nil | ||
| 893 | (with-tramp-file-property v localname "file-exists-p" | ||
| 894 | (file-attributes filename)))) | ||
| 895 | |||
| 896 | ;; Helper functions. | 938 | ;; Helper functions. |
| 897 | 939 | ||
| 940 | (defun tramp-adb-file-name-host (vec) | ||
| 941 | "Return host component of VEC. | ||
| 942 | If it is equal to the default value of `tramp-default-host', `nil' is returned." | ||
| 943 | (let ((host (tramp-file-name-host vec))) | ||
| 944 | (unless (equal host (eval (car (get 'tramp-default-host 'standard-value)))) | ||
| 945 | host))) | ||
| 946 | |||
| 898 | (defun tramp-adb-execute-adb-command (vec &rest args) | 947 | (defun tramp-adb-execute-adb-command (vec &rest args) |
| 899 | "Returns nil on success error-output on failure." | 948 | "Returns nil on success error-output on failure." |
| 900 | (when (tramp-file-name-host vec) | 949 | (when (tramp-adb-file-name-host vec) |
| 901 | (setq args (append (list "-s" (tramp-file-name-host vec)) args))) | 950 | (setq args (append (list "-s" (tramp-adb-file-name-host vec)) args))) |
| 902 | (with-temp-buffer | 951 | (with-temp-buffer |
| 903 | (prog1 | 952 | (prog1 |
| 904 | (unless (zerop (apply 'call-process (tramp-adb-program) nil t nil args)) | 953 | (unless (zerop (apply 'call-process (tramp-adb-program) nil t nil args)) |
| @@ -1006,21 +1055,21 @@ connection if a previous connection has died for some reason." | |||
| 1006 | (when (and p (processp p)) (delete-process p)) | 1055 | (when (and p (processp p)) (delete-process p)) |
| 1007 | (if (not devices) | 1056 | (if (not devices) |
| 1008 | (tramp-error vec 'file-error "No device connected")) | 1057 | (tramp-error vec 'file-error "No device connected")) |
| 1009 | (if (and (tramp-file-name-host vec) | 1058 | (if (and (tramp-adb-file-name-host vec) |
| 1010 | (not (member (tramp-file-name-host vec) devices))) | 1059 | (not (member (tramp-adb-file-name-host vec) devices))) |
| 1011 | (tramp-error | 1060 | (tramp-error |
| 1012 | vec 'file-error | 1061 | vec 'file-error |
| 1013 | "Device %s not connected" (tramp-file-name-host vec))) | 1062 | "Device %s not connected" (tramp-adb-file-name-host vec))) |
| 1014 | (if (and (not (eq (length devices) 1)) | 1063 | (if (and (not (eq (length devices) 1)) |
| 1015 | (not (tramp-file-name-host vec))) | 1064 | (not (tramp-adb-file-name-host vec))) |
| 1016 | (tramp-error | 1065 | (tramp-error |
| 1017 | vec 'file-error | 1066 | vec 'file-error |
| 1018 | "Multiple Devices connected: No Host/Device specified")) | 1067 | "Multiple Devices connected: No Host/Device specified")) |
| 1019 | (with-tramp-progress-reporter vec 3 "Opening adb shell connection" | 1068 | (with-tramp-progress-reporter vec 3 "Opening adb shell connection" |
| 1020 | (let* ((coding-system-for-read 'utf-8-dos) ;is this correct? | 1069 | (let* ((coding-system-for-read 'utf-8-dos) ;is this correct? |
| 1021 | (process-connection-type tramp-process-connection-type) | 1070 | (process-connection-type tramp-process-connection-type) |
| 1022 | (args (if (tramp-file-name-host vec) | 1071 | (args (if (tramp-adb-file-name-host vec) |
| 1023 | (list "-s" (tramp-file-name-host vec) "shell") | 1072 | (list "-s" (tramp-adb-file-name-host vec) "shell") |
| 1024 | (list "shell"))) | 1073 | (list "shell"))) |
| 1025 | (p (let ((default-directory | 1074 | (p (let ((default-directory |
| 1026 | (tramp-compat-temporary-file-directory))) | 1075 | (tramp-compat-temporary-file-directory))) |
| @@ -1056,7 +1105,19 @@ connection if a previous connection has died for some reason." | |||
| 1056 | vec 3 | 1105 | vec 3 |
| 1057 | "Connection reset, because remote host changed from `%s' to `%s'" | 1106 | "Connection reset, because remote host changed from `%s' to `%s'" |
| 1058 | old-getprop new-getprop) | 1107 | old-getprop new-getprop) |
| 1059 | (tramp-adb-maybe-open-connection vec))))))))) | 1108 | (tramp-adb-maybe-open-connection vec))) |
| 1109 | |||
| 1110 | ;; Set "remote-path" connection property. This is needed | ||
| 1111 | ;; for eshell. | ||
| 1112 | (tramp-adb-send-command vec "echo \\\"$PATH\\\"") | ||
| 1113 | (tramp-set-connection-property | ||
| 1114 | vec "remote-path" | ||
| 1115 | (split-string | ||
| 1116 | (with-current-buffer (tramp-get-connection-buffer vec) | ||
| 1117 | ;; Read the expression. | ||
| 1118 | (goto-char (point-min)) | ||
| 1119 | (read (current-buffer))) | ||
| 1120 | ":" 'omit-nulls)))))))) | ||
| 1060 | 1121 | ||
| 1061 | (provide 'tramp-adb) | 1122 | (provide 'tramp-adb) |
| 1062 | ;;; tramp-adb.el ends here | 1123 | ;;; tramp-adb.el ends here |
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el index 5a2b47bb34f..99436303fa2 100644 --- a/lisp/vc/vc-hooks.el +++ b/lisp/vc/vc-hooks.el | |||
| @@ -703,19 +703,21 @@ Before doing that, check if there are any old backups and get rid of them." | |||
| 703 | ;; the state to 'edited and redisplay the mode line. | 703 | ;; the state to 'edited and redisplay the mode line. |
| 704 | (let* ((file buffer-file-name) | 704 | (let* ((file buffer-file-name) |
| 705 | (backend (vc-backend file))) | 705 | (backend (vc-backend file))) |
| 706 | (and backend | 706 | (cond |
| 707 | (or (and (equal (vc-file-getprop file 'vc-checkout-time) | 707 | ((null backend)) |
| 708 | (nth 5 (file-attributes file))) | 708 | ((eq (vc-checkout-model backend (list file)) 'implicit) |
| 709 | ;; File has been saved in the same second in which | 709 | ;; If the file was saved in the same second in which it was |
| 710 | ;; it was checked out. Clear the checkout-time | 710 | ;; checked out, clear the checkout-time to avoid confusion. |
| 711 | ;; to avoid confusion. | 711 | (if (equal (vc-file-getprop file 'vc-checkout-time) |
| 712 | (vc-file-setprop file 'vc-checkout-time nil)) | 712 | (nth 5 (file-attributes file))) |
| 713 | t) | 713 | (vc-file-setprop file 'vc-checkout-time nil)) |
| 714 | (eq (vc-checkout-model backend (list file)) 'implicit) | 714 | (if (vc-state-refresh file backend) |
| 715 | (vc-state-refresh file backend) | 715 | (vc-mode-line file backend))) |
| 716 | (vc-mode-line file backend)) | 716 | ;; If we saved an unlocked file on a locking based VCS, that |
| 717 | ;; Try to avoid unnecessary work, a *vc-dir* buffer is | 717 | ;; file is not longer up-to-date. |
| 718 | ;; present if this is true. | 718 | ((eq (vc-file-getprop file 'vc-state) 'up-to-date) |
| 719 | (vc-file-setprop file 'vc-state nil))) | ||
| 720 | ;; Resynch *vc-dir* buffers, if any are present. | ||
| 719 | (when vc-dir-buffers | 721 | (when vc-dir-buffers |
| 720 | (vc-dir-resynch-file file)))) | 722 | (vc-dir-resynch-file file)))) |
| 721 | 723 | ||
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index fe259806267..9b8b94916c4 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el | |||
| @@ -659,6 +659,10 @@ | |||
| 659 | (eval-when-compile | 659 | (eval-when-compile |
| 660 | (require 'dired)) | 660 | (require 'dired)) |
| 661 | 661 | ||
| 662 | (declare-function dired-get-filename "dired" (&optional localp noerror)) | ||
| 663 | (declare-function dired-move-to-filename "dired" (&optional err eol)) | ||
| 664 | (declare-function dired-marker-regexp "dired" ()) | ||
| 665 | |||
| 662 | (unless (assoc 'vc-parent-buffer minor-mode-alist) | 666 | (unless (assoc 'vc-parent-buffer minor-mode-alist) |
| 663 | (setq minor-mode-alist | 667 | (setq minor-mode-alist |
| 664 | (cons '(vc-parent-buffer vc-parent-buffer-name) | 668 | (cons '(vc-parent-buffer vc-parent-buffer-name) |
| @@ -1072,6 +1076,17 @@ For old-style locking-based version control systems, like RCS: | |||
| 1072 | ;; among all the `files'. | 1076 | ;; among all the `files'. |
| 1073 | (model (nth 4 vc-fileset))) | 1077 | (model (nth 4 vc-fileset))) |
| 1074 | 1078 | ||
| 1079 | ;; If a buffer has unsaved changes, a checkout would discard those | ||
| 1080 | ;; changes, so treat the buffer as having unlocked changes. | ||
| 1081 | (when (and (not (eq model 'implicit)) (eq state 'up-to-date)) | ||
| 1082 | (let ((files files)) | ||
| 1083 | (while files | ||
| 1084 | (let ((buffer (get-file-buffer (car files)))) | ||
| 1085 | (and buffer | ||
| 1086 | (buffer-modified-p buffer) | ||
| 1087 | (setq state 'unlocked-changes | ||
| 1088 | files nil)))))) | ||
| 1089 | |||
| 1075 | ;; Do the right thing | 1090 | ;; Do the right thing |
| 1076 | (cond | 1091 | (cond |
| 1077 | ((eq state 'missing) | 1092 | ((eq state 'missing) |
diff --git a/src/ChangeLog b/src/ChangeLog index 8fc876e248c..3b0b295e695 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,21 @@ | |||
| 1 | 2013-01-06 Chong Yidong <cyd@gnu.org> | ||
| 2 | |||
| 3 | * keyboard.c (echo_add_char): New function, factored out from | ||
| 4 | echo_char. Don't add a space if the previous echo string was | ||
| 5 | empty (Bug#13255). | ||
| 6 | (echo_char): Use it. | ||
| 7 | (read_key_sequence): When echoing mock input, ensure that the | ||
| 8 | trailing dash is properly added. | ||
| 9 | |||
| 10 | 2013-01-05 Eli Zaretskii <eliz@gnu.org> | ||
| 11 | |||
| 12 | * xdisp.c (dump_glyph): Align glyph data better. Use "pD" instead | ||
| 13 | of a non-portable "t" to print ptrdiff_t values. Allow up to 9 | ||
| 14 | digits for buffer positions, before misalignment starts. Display | ||
| 15 | "0" for integer "object" field. | ||
| 16 | (dump_glyph_row): Adapt the header line to changes in dump_glyph. | ||
| 17 | Display the newline glyph more unambiguously. | ||
| 18 | |||
| 1 | 2013-01-04 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 19 | 2013-01-04 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
| 2 | 20 | ||
| 3 | * nsterm.m (ns_draw_underwave): | 21 | * nsterm.m (ns_draw_underwave): |
diff --git a/src/keyboard.c b/src/keyboard.c index e11ed20d2a0..69463f45034 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -500,97 +500,103 @@ kset_system_key_syms (struct kboard *kb, Lisp_Object val) | |||
| 500 | } | 500 | } |
| 501 | 501 | ||
| 502 | 502 | ||
| 503 | /* Add C to the echo string, if echoing is going on. | 503 | /* Add C to the echo string, without echoing it immediately. C can be |
| 504 | C can be a character, which is printed prettily ("M-C-x" and all that | 504 | a character, which is pretty-printed, or a symbol, whose name is |
| 505 | jazz), or a symbol, whose name is printed. */ | 505 | printed. */ |
| 506 | 506 | ||
| 507 | static void | 507 | static void |
| 508 | echo_char (Lisp_Object c) | 508 | echo_add_char (Lisp_Object c) |
| 509 | { | 509 | { |
| 510 | if (current_kboard->immediate_echo) | 510 | int size = KEY_DESCRIPTION_SIZE + 100; |
| 511 | { | 511 | char *buffer = alloca (size); |
| 512 | int size = KEY_DESCRIPTION_SIZE + 100; | 512 | char *ptr = buffer; |
| 513 | char *buffer = alloca (size); | 513 | Lisp_Object echo_string; |
| 514 | char *ptr = buffer; | ||
| 515 | Lisp_Object echo_string; | ||
| 516 | 514 | ||
| 517 | echo_string = KVAR (current_kboard, echo_string); | 515 | echo_string = KVAR (current_kboard, echo_string); |
| 518 | 516 | ||
| 519 | /* If someone has passed us a composite event, use its head symbol. */ | 517 | /* If someone has passed us a composite event, use its head symbol. */ |
| 520 | c = EVENT_HEAD (c); | 518 | c = EVENT_HEAD (c); |
| 521 | 519 | ||
| 522 | if (INTEGERP (c)) | 520 | if (INTEGERP (c)) |
| 521 | ptr = push_key_description (XINT (c), ptr); | ||
| 522 | else if (SYMBOLP (c)) | ||
| 523 | { | ||
| 524 | Lisp_Object name = SYMBOL_NAME (c); | ||
| 525 | int nbytes = SBYTES (name); | ||
| 526 | |||
| 527 | if (size - (ptr - buffer) < nbytes) | ||
| 523 | { | 528 | { |
| 524 | ptr = push_key_description (XINT (c), ptr); | 529 | int offset = ptr - buffer; |
| 530 | size = max (2 * size, size + nbytes); | ||
| 531 | buffer = alloca (size); | ||
| 532 | ptr = buffer + offset; | ||
| 525 | } | 533 | } |
| 526 | else if (SYMBOLP (c)) | ||
| 527 | { | ||
| 528 | Lisp_Object name = SYMBOL_NAME (c); | ||
| 529 | int nbytes = SBYTES (name); | ||
| 530 | 534 | ||
| 531 | if (size - (ptr - buffer) < nbytes) | 535 | ptr += copy_text (SDATA (name), (unsigned char *) ptr, nbytes, |
| 532 | { | 536 | STRING_MULTIBYTE (name), 1); |
| 533 | int offset = ptr - buffer; | 537 | } |
| 534 | size = max (2 * size, size + nbytes); | ||
| 535 | buffer = alloca (size); | ||
| 536 | ptr = buffer + offset; | ||
| 537 | } | ||
| 538 | 538 | ||
| 539 | ptr += copy_text (SDATA (name), (unsigned char *) ptr, nbytes, | 539 | if ((NILP (echo_string) || SCHARS (echo_string) == 0) |
| 540 | STRING_MULTIBYTE (name), 1); | 540 | && help_char_p (c)) |
| 541 | } | 541 | { |
| 542 | const char *text = " (Type ? for further options)"; | ||
| 543 | int len = strlen (text); | ||
| 542 | 544 | ||
| 543 | if ((NILP (echo_string) || SCHARS (echo_string) == 0) | 545 | if (size - (ptr - buffer) < len) |
| 544 | && help_char_p (c)) | ||
| 545 | { | 546 | { |
| 546 | const char *text = " (Type ? for further options)"; | 547 | int offset = ptr - buffer; |
| 547 | int len = strlen (text); | 548 | size += len; |
| 548 | 549 | buffer = alloca (size); | |
| 549 | if (size - (ptr - buffer) < len) | 550 | ptr = buffer + offset; |
| 550 | { | ||
| 551 | int offset = ptr - buffer; | ||
| 552 | size += len; | ||
| 553 | buffer = alloca (size); | ||
| 554 | ptr = buffer + offset; | ||
| 555 | } | ||
| 556 | |||
| 557 | memcpy (ptr, text, len); | ||
| 558 | ptr += len; | ||
| 559 | } | 551 | } |
| 560 | 552 | ||
| 561 | /* Replace a dash from echo_dash with a space, otherwise | 553 | memcpy (ptr, text, len); |
| 562 | add a space at the end as a separator between keys. */ | 554 | ptr += len; |
| 563 | if (STRINGP (echo_string) | 555 | } |
| 564 | && SCHARS (echo_string) > 1) | ||
| 565 | { | ||
| 566 | Lisp_Object last_char, prev_char, idx; | ||
| 567 | 556 | ||
| 568 | idx = make_number (SCHARS (echo_string) - 2); | 557 | /* Replace a dash from echo_dash with a space, otherwise add a space |
| 569 | prev_char = Faref (echo_string, idx); | 558 | at the end as a separator between keys. */ |
| 559 | if (STRINGP (echo_string) && SCHARS (echo_string) > 1) | ||
| 560 | { | ||
| 561 | Lisp_Object last_char, prev_char, idx; | ||
| 570 | 562 | ||
| 571 | idx = make_number (SCHARS (echo_string) - 1); | 563 | idx = make_number (SCHARS (echo_string) - 2); |
| 572 | last_char = Faref (echo_string, idx); | 564 | prev_char = Faref (echo_string, idx); |
| 573 | 565 | ||
| 574 | /* We test PREV_CHAR to make sure this isn't the echoing | 566 | idx = make_number (SCHARS (echo_string) - 1); |
| 575 | of a minus-sign. */ | 567 | last_char = Faref (echo_string, idx); |
| 576 | if (XINT (last_char) == '-' && XINT (prev_char) != ' ') | 568 | |
| 577 | Faset (echo_string, idx, make_number (' ')); | 569 | /* We test PREV_CHAR to make sure this isn't the echoing of a |
| 578 | else | 570 | minus-sign. */ |
| 579 | echo_string = concat2 (echo_string, build_string (" ")); | 571 | if (XINT (last_char) == '-' && XINT (prev_char) != ' ') |
| 580 | } | 572 | Faset (echo_string, idx, make_number (' ')); |
| 581 | else if (STRINGP (echo_string)) | 573 | else |
| 582 | echo_string = concat2 (echo_string, build_string (" ")); | 574 | echo_string = concat2 (echo_string, build_string (" ")); |
| 575 | } | ||
| 576 | else if (STRINGP (echo_string) && SCHARS (echo_string) > 0) | ||
| 577 | echo_string = concat2 (echo_string, build_string (" ")); | ||
| 583 | 578 | ||
| 584 | kset_echo_string | 579 | kset_echo_string |
| 585 | (current_kboard, | 580 | (current_kboard, |
| 586 | concat2 (echo_string, make_string (buffer, ptr - buffer))); | 581 | concat2 (echo_string, make_string (buffer, ptr - buffer))); |
| 582 | } | ||
| 583 | |||
| 584 | /* Add C to the echo string, if echoing is going on. C can be a | ||
| 585 | character or a symbol. */ | ||
| 587 | 586 | ||
| 587 | static void | ||
| 588 | echo_char (Lisp_Object c) | ||
| 589 | { | ||
| 590 | if (current_kboard->immediate_echo) | ||
| 591 | { | ||
| 592 | echo_add_char (c); | ||
| 588 | echo_now (); | 593 | echo_now (); |
| 589 | } | 594 | } |
| 590 | } | 595 | } |
| 591 | 596 | ||
| 592 | /* Temporarily add a dash to the end of the echo string if it's not | 597 | /* Temporarily add a dash to the end of the echo string if it's not |
| 593 | empty, so that it serves as a mini-prompt for the very next character. */ | 598 | empty, so that it serves as a mini-prompt for the very next |
| 599 | character. */ | ||
| 594 | 600 | ||
| 595 | static void | 601 | static void |
| 596 | echo_dash (void) | 602 | echo_dash (void) |
| @@ -9237,8 +9243,12 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 9237 | key = keybuf[t]; | 9243 | key = keybuf[t]; |
| 9238 | add_command_key (key); | 9244 | add_command_key (key); |
| 9239 | if ((FLOATP (Vecho_keystrokes) || INTEGERP (Vecho_keystrokes)) | 9245 | if ((FLOATP (Vecho_keystrokes) || INTEGERP (Vecho_keystrokes)) |
| 9240 | && NILP (Fzerop (Vecho_keystrokes))) | 9246 | && NILP (Fzerop (Vecho_keystrokes)) |
| 9241 | echo_char (key); | 9247 | && current_kboard->immediate_echo) |
| 9248 | { | ||
| 9249 | echo_add_char (key); | ||
| 9250 | echo_dash (); | ||
| 9251 | } | ||
| 9242 | } | 9252 | } |
| 9243 | 9253 | ||
| 9244 | /* If not, we should actually read a character. */ | 9254 | /* If not, we should actually read a character. */ |
diff --git a/src/xdisp.c b/src/xdisp.c index c9096339fcc..880e25334d1 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -18007,18 +18007,23 @@ dump_glyph_matrix (struct glyph_matrix *matrix, int glyphs) | |||
| 18007 | void | 18007 | void |
| 18008 | dump_glyph (struct glyph_row *row, struct glyph *glyph, int area) | 18008 | dump_glyph (struct glyph_row *row, struct glyph *glyph, int area) |
| 18009 | { | 18009 | { |
| 18010 | if (glyph->type == CHAR_GLYPH) | 18010 | if (glyph->type == CHAR_GLYPH |
| 18011 | || glyph->type == GLYPHLESS_GLYPH) | ||
| 18011 | { | 18012 | { |
| 18012 | fprintf (stderr, | 18013 | fprintf (stderr, |
| 18013 | " %5td %4c %6"pI"d %c %3d 0x%05x %c %4d %1.1d%1.1d\n", | 18014 | " %5"pD"d %c %9"pI"d %c %3d 0x%06x %c %4d %1.1d%1.1d\n", |
| 18014 | glyph - row->glyphs[TEXT_AREA], | 18015 | glyph - row->glyphs[TEXT_AREA], |
| 18015 | 'C', | 18016 | (glyph->type == CHAR_GLYPH |
| 18017 | ? 'C' | ||
| 18018 | : 'G'), | ||
| 18016 | glyph->charpos, | 18019 | glyph->charpos, |
| 18017 | (BUFFERP (glyph->object) | 18020 | (BUFFERP (glyph->object) |
| 18018 | ? 'B' | 18021 | ? 'B' |
| 18019 | : (STRINGP (glyph->object) | 18022 | : (STRINGP (glyph->object) |
| 18020 | ? 'S' | 18023 | ? 'S' |
| 18021 | : '-')), | 18024 | : (INTEGERP (glyph->object) |
| 18025 | ? '0' | ||
| 18026 | : '-'))), | ||
| 18022 | glyph->pixel_width, | 18027 | glyph->pixel_width, |
| 18023 | glyph->u.ch, | 18028 | glyph->u.ch, |
| 18024 | (glyph->u.ch < 0x80 && glyph->u.ch >= ' ' | 18029 | (glyph->u.ch < 0x80 && glyph->u.ch >= ' ' |
| @@ -18031,7 +18036,7 @@ dump_glyph (struct glyph_row *row, struct glyph *glyph, int area) | |||
| 18031 | else if (glyph->type == STRETCH_GLYPH) | 18036 | else if (glyph->type == STRETCH_GLYPH) |
| 18032 | { | 18037 | { |
| 18033 | fprintf (stderr, | 18038 | fprintf (stderr, |
| 18034 | " %5td %4c %6"pI"d %c %3d 0x%05x %c %4d %1.1d%1.1d\n", | 18039 | " %5"pD"d %c %9"pI"d %c %3d 0x%06x %c %4d %1.1d%1.1d\n", |
| 18035 | glyph - row->glyphs[TEXT_AREA], | 18040 | glyph - row->glyphs[TEXT_AREA], |
| 18036 | 'S', | 18041 | 'S', |
| 18037 | glyph->charpos, | 18042 | glyph->charpos, |
| @@ -18039,10 +18044,12 @@ dump_glyph (struct glyph_row *row, struct glyph *glyph, int area) | |||
| 18039 | ? 'B' | 18044 | ? 'B' |
| 18040 | : (STRINGP (glyph->object) | 18045 | : (STRINGP (glyph->object) |
| 18041 | ? 'S' | 18046 | ? 'S' |
| 18042 | : '-')), | 18047 | : (INTEGERP (glyph->object) |
| 18048 | ? '0' | ||
| 18049 | : '-'))), | ||
| 18043 | glyph->pixel_width, | 18050 | glyph->pixel_width, |
| 18044 | 0, | 18051 | 0, |
| 18045 | '.', | 18052 | ' ', |
| 18046 | glyph->face_id, | 18053 | glyph->face_id, |
| 18047 | glyph->left_box_line_p, | 18054 | glyph->left_box_line_p, |
| 18048 | glyph->right_box_line_p); | 18055 | glyph->right_box_line_p); |
| @@ -18050,7 +18057,7 @@ dump_glyph (struct glyph_row *row, struct glyph *glyph, int area) | |||
| 18050 | else if (glyph->type == IMAGE_GLYPH) | 18057 | else if (glyph->type == IMAGE_GLYPH) |
| 18051 | { | 18058 | { |
| 18052 | fprintf (stderr, | 18059 | fprintf (stderr, |
| 18053 | " %5td %4c %6"pI"d %c %3d 0x%05x %c %4d %1.1d%1.1d\n", | 18060 | " %5"pD"d %c %9"pI"d %c %3d 0x%06x %c %4d %1.1d%1.1d\n", |
| 18054 | glyph - row->glyphs[TEXT_AREA], | 18061 | glyph - row->glyphs[TEXT_AREA], |
| 18055 | 'I', | 18062 | 'I', |
| 18056 | glyph->charpos, | 18063 | glyph->charpos, |
| @@ -18058,7 +18065,9 @@ dump_glyph (struct glyph_row *row, struct glyph *glyph, int area) | |||
| 18058 | ? 'B' | 18065 | ? 'B' |
| 18059 | : (STRINGP (glyph->object) | 18066 | : (STRINGP (glyph->object) |
| 18060 | ? 'S' | 18067 | ? 'S' |
| 18061 | : '-')), | 18068 | : (INTEGERP (glyph->object) |
| 18069 | ? '0' | ||
| 18070 | : '-'))), | ||
| 18062 | glyph->pixel_width, | 18071 | glyph->pixel_width, |
| 18063 | glyph->u.img_id, | 18072 | glyph->u.img_id, |
| 18064 | '.', | 18073 | '.', |
| @@ -18069,7 +18078,7 @@ dump_glyph (struct glyph_row *row, struct glyph *glyph, int area) | |||
| 18069 | else if (glyph->type == COMPOSITE_GLYPH) | 18078 | else if (glyph->type == COMPOSITE_GLYPH) |
| 18070 | { | 18079 | { |
| 18071 | fprintf (stderr, | 18080 | fprintf (stderr, |
| 18072 | " %5td %4c %6"pI"d %c %3d 0x%05x", | 18081 | " %5"pD"d %c %9"pI"d %c %3d 0x%06x", |
| 18073 | glyph - row->glyphs[TEXT_AREA], | 18082 | glyph - row->glyphs[TEXT_AREA], |
| 18074 | '+', | 18083 | '+', |
| 18075 | glyph->charpos, | 18084 | glyph->charpos, |
| @@ -18077,7 +18086,9 @@ dump_glyph (struct glyph_row *row, struct glyph *glyph, int area) | |||
| 18077 | ? 'B' | 18086 | ? 'B' |
| 18078 | : (STRINGP (glyph->object) | 18087 | : (STRINGP (glyph->object) |
| 18079 | ? 'S' | 18088 | ? 'S' |
| 18080 | : '-')), | 18089 | : (INTEGERP (glyph->object) |
| 18090 | ? '0' | ||
| 18091 | : '-'))), | ||
| 18081 | glyph->pixel_width, | 18092 | glyph->pixel_width, |
| 18082 | glyph->u.cmp.id); | 18093 | glyph->u.cmp.id); |
| 18083 | if (glyph->u.cmp.automatic) | 18094 | if (glyph->u.cmp.automatic) |
| @@ -18125,10 +18136,10 @@ dump_glyph_row (struct glyph_row *row, int vpos, int glyphs) | |||
| 18125 | { | 18136 | { |
| 18126 | if (glyphs != 1) | 18137 | if (glyphs != 1) |
| 18127 | { | 18138 | { |
| 18128 | fprintf (stderr, "Row Start End Used oE><\\CTZFesm X Y W H V A P\n"); | 18139 | fprintf (stderr, "Row Start End Used oE><\\CTZFesm X Y W H V A P\n"); |
| 18129 | fprintf (stderr, "======================================================================\n"); | 18140 | fprintf (stderr, "==============================================================================\n"); |
| 18130 | 18141 | ||
| 18131 | fprintf (stderr, "%3d %5"pI"d %5"pI"d %4d %1.1d%1.1d%1.1d%1.1d\ | 18142 | fprintf (stderr, "%3d %9"pI"d %9"pI"d %4d %1.1d%1.1d%1.1d%1.1d\ |
| 18132 | %1.1d%1.1d%1.1d%1.1d%1.1d%1.1d%1.1d%1.1d %4d %4d %4d %4d %4d %4d %4d\n", | 18143 | %1.1d%1.1d%1.1d%1.1d%1.1d%1.1d%1.1d%1.1d %4d %4d %4d %4d %4d %4d %4d\n", |
| 18133 | vpos, | 18144 | vpos, |
| 18134 | MATRIX_ROW_START_CHARPOS (row), | 18145 | MATRIX_ROW_START_CHARPOS (row), |
| @@ -18153,13 +18164,14 @@ dump_glyph_row (struct glyph_row *row, int vpos, int glyphs) | |||
| 18153 | row->visible_height, | 18164 | row->visible_height, |
| 18154 | row->ascent, | 18165 | row->ascent, |
| 18155 | row->phys_ascent); | 18166 | row->phys_ascent); |
| 18156 | fprintf (stderr, "%9"pD"d %5"pD"d\t%5d\n", row->start.overlay_string_index, | 18167 | /* The next 3 lines should align to "Start" in the header. */ |
| 18168 | fprintf (stderr, " %9"pD"d %9"pD"d\t%5d\n", row->start.overlay_string_index, | ||
| 18157 | row->end.overlay_string_index, | 18169 | row->end.overlay_string_index, |
| 18158 | row->continuation_lines_width); | 18170 | row->continuation_lines_width); |
| 18159 | fprintf (stderr, "%9"pI"d %5"pI"d\n", | 18171 | fprintf (stderr, " %9"pI"d %9"pI"d\n", |
| 18160 | CHARPOS (row->start.string_pos), | 18172 | CHARPOS (row->start.string_pos), |
| 18161 | CHARPOS (row->end.string_pos)); | 18173 | CHARPOS (row->end.string_pos)); |
| 18162 | fprintf (stderr, "%9d %5d\n", row->start.dpvec_index, | 18174 | fprintf (stderr, " %9d %9d\n", row->start.dpvec_index, |
| 18163 | row->end.dpvec_index); | 18175 | row->end.dpvec_index); |
| 18164 | } | 18176 | } |
| 18165 | 18177 | ||
| @@ -18177,7 +18189,7 @@ dump_glyph_row (struct glyph_row *row, int vpos, int glyphs) | |||
| 18177 | ++glyph_end; | 18189 | ++glyph_end; |
| 18178 | 18190 | ||
| 18179 | if (glyph < glyph_end) | 18191 | if (glyph < glyph_end) |
| 18180 | fprintf (stderr, " Glyph Type Pos O W Code C Face LR\n"); | 18192 | fprintf (stderr, " Glyph# Type Pos O W Code C Face LR\n"); |
| 18181 | 18193 | ||
| 18182 | for (; glyph < glyph_end; ++glyph) | 18194 | for (; glyph < glyph_end; ++glyph) |
| 18183 | dump_glyph (row, glyph, area); | 18195 | dump_glyph (row, glyph, area); |
| @@ -18189,15 +18201,24 @@ dump_glyph_row (struct glyph_row *row, int vpos, int glyphs) | |||
| 18189 | 18201 | ||
| 18190 | for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area) | 18202 | for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area) |
| 18191 | { | 18203 | { |
| 18192 | char *s = alloca (row->used[area] + 1); | 18204 | char *s = alloca (row->used[area] + 4); |
| 18193 | int i; | 18205 | int i; |
| 18194 | 18206 | ||
| 18195 | for (i = 0; i < row->used[area]; ++i) | 18207 | for (i = 0; i < row->used[area]; ++i) |
| 18196 | { | 18208 | { |
| 18197 | struct glyph *glyph = row->glyphs[area] + i; | 18209 | struct glyph *glyph = row->glyphs[area] + i; |
| 18198 | if (glyph->type == CHAR_GLYPH | 18210 | if (i == row->used[area] - 1 |
| 18199 | && glyph->u.ch < 0x80 | 18211 | && area == TEXT_AREA |
| 18200 | && glyph->u.ch >= ' ') | 18212 | && INTEGERP (glyph->object) |
| 18213 | && glyph->type == CHAR_GLYPH | ||
| 18214 | && glyph->u.ch == ' ') | ||
| 18215 | { | ||
| 18216 | strcpy (&s[i], "[\\n]"); | ||
| 18217 | i += 4; | ||
| 18218 | } | ||
| 18219 | else if (glyph->type == CHAR_GLYPH | ||
| 18220 | && glyph->u.ch < 0x80 | ||
| 18221 | && glyph->u.ch >= ' ') | ||
| 18201 | s[i] = glyph->u.ch; | 18222 | s[i] = glyph->u.ch; |
| 18202 | else | 18223 | else |
| 18203 | s[i] = '.'; | 18224 | s[i] = '.'; |