diff options
| author | Glenn Morris | 2012-12-27 00:21:08 -0800 |
|---|---|---|
| committer | Glenn Morris | 2012-12-27 00:21:08 -0800 |
| commit | 82e2a1f054cc0306494d1194036af4c5d7301caf (patch) | |
| tree | f78be2edfd92d4eba0dc28bd110f646a314438ae | |
| parent | c34339f3a2c425ca37bec0c6a152f913ab61f458 (diff) | |
| parent | e1da740354d9cab626bce82645adcfc6b0735b70 (diff) | |
| download | emacs-82e2a1f054cc0306494d1194036af4c5d7301caf.tar.gz emacs-82e2a1f054cc0306494d1194036af4c5d7301caf.zip | |
Merge from emacs-24; up to 2012-12-03T21:07:47Z!eggert@cs.ucla.edu
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | configure.ac | 2 | ||||
| -rw-r--r-- | doc/emacs/maintaining.texi | 2 | ||||
| -rw-r--r-- | doc/lispref/ChangeLog | 4 | ||||
| -rw-r--r-- | doc/lispref/files.texi | 10 | ||||
| -rw-r--r-- | doc/misc/ChangeLog | 25 | ||||
| -rw-r--r-- | doc/misc/ada-mode.texi | 16 | ||||
| -rw-r--r-- | doc/misc/auth.texi | 6 | ||||
| -rw-r--r-- | doc/misc/autotype.texi | 34 | ||||
| -rw-r--r-- | doc/misc/bovine.texi | 6 | ||||
| -rw-r--r-- | doc/misc/ede.texi | 5 | ||||
| -rw-r--r-- | doc/misc/eieio.texi | 9 | ||||
| -rw-r--r-- | doc/misc/idlwave.texi | 2 | ||||
| -rw-r--r-- | doc/misc/pcl-cvs.texi | 4 | ||||
| -rw-r--r-- | doc/misc/viper.texi | 10 | ||||
| -rw-r--r-- | doc/misc/widget.texi | 21 | ||||
| -rw-r--r-- | doc/misc/wisent.texi | 12 | ||||
| -rw-r--r-- | etc/NEWS | 4 | ||||
| -rw-r--r-- | lisp/ChangeLog | 14 | ||||
| -rw-r--r-- | lisp/gnus/ChangeLog | 12 | ||||
| -rw-r--r-- | lisp/gnus/nnimap.el | 2 | ||||
| -rw-r--r-- | lisp/gnus/plstore.el | 3 | ||||
| -rw-r--r-- | lisp/progmodes/cc-fonts.el | 3 | ||||
| -rw-r--r-- | lisp/progmodes/ruby-mode.el | 7 | ||||
| -rw-r--r-- | src/ChangeLog | 20 | ||||
| -rw-r--r-- | src/cygw32.c | 18 | ||||
| -rw-r--r-- | src/fileio.c | 156 | ||||
| -rw-r--r-- | test/ChangeLog | 5 | ||||
| -rw-r--r-- | test/automated/ruby-mode-tests.el | 13 |
29 files changed, 305 insertions, 125 deletions
| @@ -1,3 +1,8 @@ | |||
| 1 | 2012-12-27 Andreas Schwab <schwab@linux-m68k.org> | ||
| 2 | |||
| 3 | * configure.ac (SIGNALS_VIA_CHARACTERS): Also define for darwin. | ||
| 4 | (Bug#13222) | ||
| 5 | |||
| 1 | 2012-12-26 Paul Eggert <eggert@cs.ucla.edu> | 6 | 2012-12-26 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 7 | ||
| 3 | Revert static checking of stack smashing. | 8 | Revert static checking of stack smashing. |
diff --git a/configure.ac b/configure.ac index 9d3e872c29c..9e0582dee6b 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -3673,7 +3673,7 @@ AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by | |||
| 3673 | case $opsys in | 3673 | case $opsys in |
| 3674 | dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX. | 3674 | dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX. |
| 3675 | dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX. | 3675 | dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX. |
| 3676 | aix4-2 | cygwin | gnu | irix6-5 | freebsd | netbsd | openbsd ) | 3676 | aix4-2 | cygwin | gnu | irix6-5 | freebsd | netbsd | openbsd | darwin ) |
| 3677 | AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1) | 3677 | AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1) |
| 3678 | ;; | 3678 | ;; |
| 3679 | 3679 | ||
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 66fa643091f..440540d321e 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi | |||
| @@ -1065,7 +1065,7 @@ the version control system which the VC Directory buffer should use. | |||
| 1065 | @cindex CVS directory mode | 1065 | @cindex CVS directory mode |
| 1066 | In addition to the VC Directory buffer, Emacs has a similar facility | 1066 | In addition to the VC Directory buffer, Emacs has a similar facility |
| 1067 | called PCL-CVS which is specialized for CVS@. @xref{Top, , About | 1067 | called PCL-CVS which is specialized for CVS@. @xref{Top, , About |
| 1068 | PCL-CVS, pcl-cvs, PCL-CVS --- The Emacs Front-End to CVS}. | 1068 | PCL-CVS, pcl-cvs, PCL-CVS---The Emacs Front-End to CVS}. |
| 1069 | @end ifnottex | 1069 | @end ifnottex |
| 1070 | 1070 | ||
| 1071 | @menu | 1071 | @menu |
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index b5ad25377a0..7893424a942 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2012-12-27 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * files.texi (File Names): Mention Cygwin conversion functions. | ||
| 4 | |||
| 1 | 2012-12-22 Martin Rudalics <rudalics@gmx.at> | 5 | 2012-12-22 Martin Rudalics <rudalics@gmx.at> |
| 2 | 6 | ||
| 3 | * windows.texi (Selecting Windows): Reword description of | 7 | * windows.texi (Selecting Windows): Reword description of |
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index fe9b126d4a2..3faa5f5e257 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi | |||
| @@ -1733,12 +1733,20 @@ how to manipulate file names. | |||
| 1733 | can operate on file names that do not refer to an existing file or | 1733 | can operate on file names that do not refer to an existing file or |
| 1734 | directory. | 1734 | directory. |
| 1735 | 1735 | ||
| 1736 | @findex cygwin-convert-file-name-from-windows | ||
| 1737 | @findex cygwin-convert-file-name-to-windows | ||
| 1738 | @cindex MS-Windows file-name syntax | ||
| 1739 | @cindex converting file names from/to MS-Windows syntax | ||
| 1736 | On MS-DOS and MS-Windows, these functions (like the function that | 1740 | On MS-DOS and MS-Windows, these functions (like the function that |
| 1737 | actually operate on files) accept MS-DOS or MS-Windows file-name syntax, | 1741 | actually operate on files) accept MS-DOS or MS-Windows file-name syntax, |
| 1738 | where backslashes separate the components, as well as Unix syntax; but | 1742 | where backslashes separate the components, as well as Unix syntax; but |
| 1739 | they always return Unix syntax. This enables Lisp programs to specify | 1743 | they always return Unix syntax. This enables Lisp programs to specify |
| 1740 | file names in Unix syntax and work properly on all systems without | 1744 | file names in Unix syntax and work properly on all systems without |
| 1741 | change. | 1745 | change.@footnote{In MS-Windows versions of Emacs compiled for the Cygwin |
| 1746 | environment, you can use the functions | ||
| 1747 | @code{cygwin-convert-file-name-to-windows} and | ||
| 1748 | @code{cygwin-convert-file-name-from-windows} to convert between the | ||
| 1749 | two file-name syntaxes.} | ||
| 1742 | 1750 | ||
| 1743 | @menu | 1751 | @menu |
| 1744 | * File Name Components:: The directory part of a file name, and the rest. | 1752 | * File Name Components:: The directory part of a file name, and the rest. |
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 9b58992d2d9..ce556568c56 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,28 @@ | |||
| 1 | 2012-12-27 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * viper.texi (Rudimentary Changes, Key Bindings, Key Bindings): | ||
| 4 | Avoid some overfull lines. | ||
| 5 | |||
| 6 | * widget.texi (Programming Example): Break some long lines. | ||
| 7 | |||
| 8 | * wisent.texi (Wisent Overview): Fix xref. | ||
| 9 | (Grammar format, Understanding the automaton): Avoid overfill. | ||
| 10 | |||
| 11 | * bovine.texi (Optional Lambda Expression): Allow line break. | ||
| 12 | |||
| 13 | * auth.texi (Help for users): Break long lines. | ||
| 14 | |||
| 15 | * ada-mode.texi (Project file variables): | ||
| 16 | Reword to reduce underfull hbox. | ||
| 17 | (No project files, Use GNAT project file): | ||
| 18 | Use smallexample to make some overfull lines less terrible. | ||
| 19 | |||
| 20 | * autotype.texi, bovine.texi, ede.texi, eieio.texi, pcl-cvs.texi: | ||
| 21 | Fix cross-references to separate manuals. | ||
| 22 | |||
| 23 | * Makefile.in (gfdl): New variable. Use throughout where | ||
| 24 | appropriate so that targets depend on doclicense.texi. | ||
| 25 | |||
| 1 | 2012-12-25 Lars Ingebrigtsen <larsi@gnus.org> | 26 | 2012-12-25 Lars Ingebrigtsen <larsi@gnus.org> |
| 2 | 27 | ||
| 3 | * gnus.texi (Customizing the IMAP Connection): Mention the other | 28 | * gnus.texi (Customizing the IMAP Connection): Mention the other |
diff --git a/doc/misc/ada-mode.texi b/doc/misc/ada-mode.texi index 30ad0359264..427e6c7b1c1 100644 --- a/doc/misc/ada-mode.texi +++ b/doc/misc/ada-mode.texi | |||
| @@ -521,8 +521,8 @@ ada_project_path_sep=: | |||
| 521 | ada_project_path=$GDS_ROOT/makerules | 521 | ada_project_path=$GDS_ROOT/makerules |
| 522 | ada_project_path=../opentoken | 522 | ada_project_path=../opentoken |
| 523 | @end example | 523 | @end example |
| 524 | the environment variable @code{ADA_PROJECT_PATH} will be set to | 524 | then as a result the environment variable @code{ADA_PROJECT_PATH} will |
| 525 | @code{"/home/shared/makerules:/home/opentoken/"}. | 525 | be set to @code{"/home/shared/makerules:/home/opentoken/"}. |
| 526 | 526 | ||
| 527 | The default value is not the current value of this environment | 527 | The default value is not the current value of this environment |
| 528 | variable, because that will typically have been set by another | 528 | variable, because that will typically have been set by another |
| @@ -730,7 +730,7 @@ In buffer @file{hello.adb}, invoke @samp{Ada | Check file}. You should | |||
| 730 | get a @code{*compilation*} buffer containing something like (the | 730 | get a @code{*compilation*} buffer containing something like (the |
| 731 | directory paths will be different): | 731 | directory paths will be different): |
| 732 | 732 | ||
| 733 | @example | 733 | @smallexample |
| 734 | cd c:/Examples/Example_1/ | 734 | cd c:/Examples/Example_1/ |
| 735 | gnatmake -u -c -gnatc -g c:/Examples/Example_1/hello.adb -cargs -gnatq -gnatQ | 735 | gnatmake -u -c -gnatc -g c:/Examples/Example_1/hello.adb -cargs -gnatq -gnatQ |
| 736 | gcc -c -Ic:/Examples/Example_1/ -gnatc -g -gnatq -gnatQ -I- c:/Examples/Example_1/hello.adb | 736 | gcc -c -Ic:/Examples/Example_1/ -gnatc -g -gnatq -gnatQ -I- c:/Examples/Example_1/hello.adb |
| @@ -738,7 +738,7 @@ hello.adb:4:04: "Put_Line" is not visible | |||
| 738 | hello.adb:4:04: non-visible declaration at a-textio.ads:264 | 738 | hello.adb:4:04: non-visible declaration at a-textio.ads:264 |
| 739 | hello.adb:4:04: non-visible declaration at a-textio.ads:260 | 739 | hello.adb:4:04: non-visible declaration at a-textio.ads:260 |
| 740 | gnatmake: "c:/Examples/Example_1/hello.adb" compilation error | 740 | gnatmake: "c:/Examples/Example_1/hello.adb" compilation error |
| 741 | @end example | 741 | @end smallexample |
| 742 | 742 | ||
| 743 | If you have enabled font-lock, the lines with actual errors (starting | 743 | If you have enabled font-lock, the lines with actual errors (starting |
| 744 | with @file{hello.adb}) are highlighted, with the file name in red. | 744 | with @file{hello.adb}) are highlighted, with the file name in red. |
| @@ -1045,14 +1045,14 @@ Then, again in @file{hello_4.adb}, invoke @samp{Ada | Set main and | |||
| 1045 | Build}. You should get a @code{*compilation*} buffer containing | 1045 | Build}. You should get a @code{*compilation*} buffer containing |
| 1046 | something like (the directory paths will be different): | 1046 | something like (the directory paths will be different): |
| 1047 | 1047 | ||
| 1048 | @example | 1048 | @smallexample |
| 1049 | cd c:/Examples/Example_4/Gnat_Project/ | 1049 | cd c:/Examples/Example_4/Gnat_Project/ |
| 1050 | gnatmake -o hello_4 hello_4 -Phello_4.gpr -cargs -gnatq -gnatQ -bargs -largs | 1050 | gnatmake -o hello_4 hello_4 -Phello_4.gpr -cargs -gnatq -gnatQ -bargs -largs |
| 1051 | gcc -c -g -gnatyt -gnatq -gnatQ -I- -gnatA c:\Examples\Example_4\Gnat_Project\hello_4.adb | 1051 | gcc -c -g -gnatyt -gnatq -gnatQ -I- -gnatA c:\Examples\Example_4\Gnat_Project\hello_4.adb |
| 1052 | gcc -c -g -gnatyt -gnatq -gnatQ -I- -gnatA c:\Examples\Example_4\hello_pkg.adb | 1052 | gcc -c -g -gnatyt -gnatq -gnatQ -I- -gnatA c:\Examples\Example_4\hello_pkg.adb |
| 1053 | hello_pkg.adb:2:08: keyword "body" expected here [see file name] | 1053 | hello_pkg.adb:2:08: keyword "body" expected here [see file name] |
| 1054 | gnatmake: "c:\examples\example_4\hello_pkg.adb" compilation error | 1054 | gnatmake: "c:\examples\example_4\hello_pkg.adb" compilation error |
| 1055 | @end example | 1055 | @end smallexample |
| 1056 | 1056 | ||
| 1057 | Compare the @code{gcc} options to the compiler output in @ref{Set | 1057 | Compare the @code{gcc} options to the compiler output in @ref{Set |
| 1058 | compiler options}; this shows that @file{hello_4.gpr} is being used to | 1058 | compiler options}; this shows that @file{hello_4.gpr} is being used to |
| @@ -1112,14 +1112,14 @@ Then, again in @file{hello_5.adb}, invoke @samp{Ada | Set main and | |||
| 1112 | Build}. You should get a @code{*compilation*} buffer containing | 1112 | Build}. You should get a @code{*compilation*} buffer containing |
| 1113 | something like (the directory paths will be different): | 1113 | something like (the directory paths will be different): |
| 1114 | 1114 | ||
| 1115 | @example | 1115 | @smallexample |
| 1116 | cd c:/Examples/Example_5/ | 1116 | cd c:/Examples/Example_5/ |
| 1117 | gnatmake -o hello_5 hello_5 -Phello_5.gpr -g -cargs -gnatq -gnatQ -bargs -largs | 1117 | gnatmake -o hello_5 hello_5 -Phello_5.gpr -g -cargs -gnatq -gnatQ -bargs -largs |
| 1118 | gcc -c -g -gnatyt -g -gnatq -gnatQ -I- -gnatA c:\Examples\Example_5\hello_5.adb | 1118 | gcc -c -g -gnatyt -g -gnatq -gnatQ -I- -gnatA c:\Examples\Example_5\hello_5.adb |
| 1119 | gcc -c -g -gnatyt -g -gnatq -gnatQ -I- -gnatA c:\Examples\Example_4\hello_pkg.adb | 1119 | gcc -c -g -gnatyt -g -gnatq -gnatQ -I- -gnatA c:\Examples\Example_4\hello_pkg.adb |
| 1120 | hello_pkg.adb:2:08: keyword "body" expected here [see file name] | 1120 | hello_pkg.adb:2:08: keyword "body" expected here [see file name] |
| 1121 | gnatmake: "c:\examples\example_4\hello_pkg.adb" compilation error | 1121 | gnatmake: "c:\examples\example_4\hello_pkg.adb" compilation error |
| 1122 | @end example | 1122 | @end smallexample |
| 1123 | 1123 | ||
| 1124 | Now type @kbd{C-x `}. @file{Example_4/hello_pkg.adb} is shown, | 1124 | Now type @kbd{C-x `}. @file{Example_4/hello_pkg.adb} is shown, |
| 1125 | demonstrating that @file{hello_5.gpr} and @file{hello_4.gpr} are being | 1125 | demonstrating that @file{hello_5.gpr} and @file{hello_4.gpr} are being |
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi index 6f3a5fe0a38..bb6ad46c26f 100644 --- a/doc/misc/auth.texi +++ b/doc/misc/auth.texi | |||
| @@ -154,7 +154,8 @@ and simplest configuration is: | |||
| 154 | (setq auth-sources '((:source "~/.authinfo.gpg"))) | 154 | (setq auth-sources '((:source "~/.authinfo.gpg"))) |
| 155 | ;;; even shorter and the @emph{default}: | 155 | ;;; even shorter and the @emph{default}: |
| 156 | (setq auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc")) | 156 | (setq auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc")) |
| 157 | ;;; use the Secrets API @var{Login} collection (@pxref{Secret Service API}) | 157 | ;;; use the Secrets API @var{Login} collection |
| 158 | ;;; (@pxref{Secret Service API}) | ||
| 158 | (setq auth-sources '("secrets:Login")) | 159 | (setq auth-sources '("secrets:Login")) |
| 159 | @end lisp | 160 | @end lisp |
| 160 | 161 | ||
| @@ -167,7 +168,8 @@ have unusual setups and the remaining 10% are @emph{really} unusual). | |||
| 167 | Here's a mixed example using two sources: | 168 | Here's a mixed example using two sources: |
| 168 | 169 | ||
| 169 | @lisp | 170 | @lisp |
| 170 | (setq auth-sources '((:source (:secrets default) :host "myserver" :user "joe") | 171 | (setq auth-sources '((:source (:secrets default) |
| 172 | :host "myserver" :user "joe") | ||
| 171 | "~/.authinfo.gpg")) | 173 | "~/.authinfo.gpg")) |
| 172 | @end lisp | 174 | @end lisp |
| 173 | 175 | ||
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi index 9af47adfbe3..b68229ff5cb 100644 --- a/doc/misc/autotype.texi +++ b/doc/misc/autotype.texi | |||
| @@ -58,7 +58,7 @@ over and over again. This is especially true of form letters and programming | |||
| 58 | language constructs. Project-specific header comments, flow-control | 58 | language constructs. Project-specific header comments, flow-control |
| 59 | constructs or magic numbers are essentially the same every time. Emacs has | 59 | constructs or magic numbers are essentially the same every time. Emacs has |
| 60 | various features for doing tedious and repetitive typing chores for you | 60 | various features for doing tedious and repetitive typing chores for you |
| 61 | in addition to the Abbrev features (@pxref{(emacs)Abbrevs}). | 61 | in addition to the Abbrev features (@pxref{Abbrevs,,, emacs, The GNU Emacs Manual}). |
| 62 | 62 | ||
| 63 | One solution is using skeletons, flexible rules that say what to | 63 | One solution is using skeletons, flexible rules that say what to |
| 64 | insert, and how to do it. Various programming language modes offer some | 64 | insert, and how to do it. Various programming language modes offer some |
| @@ -113,7 +113,7 @@ completions and expansions of text at point. | |||
| 113 | programming language you are using, skeletons are a means of accomplishing | 113 | programming language you are using, skeletons are a means of accomplishing |
| 114 | this. Normally skeletons each have a command of their own, that, when called, | 114 | this. Normally skeletons each have a command of their own, that, when called, |
| 115 | will insert the skeleton. These commands can be issued in the usual ways | 115 | will insert the skeleton. These commands can be issued in the usual ways |
| 116 | (@pxref{(emacs)Commands}). Modes that offer various skeletons will often | 116 | (@pxref{Commands,,, emacs, The GNU Emacs Manual}). Modes that offer various skeletons will often |
| 117 | bind these to key-sequences on the @kbd{C-c} prefix, as well as having | 117 | bind these to key-sequences on the @kbd{C-c} prefix, as well as having |
| 118 | an @cite{Insert} menu and maybe even predefined abbrevs for them | 118 | an @cite{Insert} menu and maybe even predefined abbrevs for them |
| 119 | (@pxref{Skeletons as Abbrevs}). | 119 | (@pxref{Skeletons as Abbrevs}). |
| @@ -146,18 +146,18 @@ accomplishing this, and can even, in the case of programming languages, | |||
| 146 | reindent the wrapped code for you. | 146 | reindent the wrapped code for you. |
| 147 | 147 | ||
| 148 | Skeleton commands take an optional numeric prefix argument | 148 | Skeleton commands take an optional numeric prefix argument |
| 149 | (@pxref{(emacs)Arguments}). This is interpreted in two different ways depending | 149 | (@pxref{Arguments,,, emacs, The GNU Emacs Manual}). This is interpreted in two different ways depending |
| 150 | on whether the prefix is positive, i.e., forwards oriented, or negative, | 150 | on whether the prefix is positive, i.e., forwards oriented, or negative, |
| 151 | i.e., backwards oriented. | 151 | i.e., backwards oriented. |
| 152 | 152 | ||
| 153 | A positive prefix means to wrap the skeleton around that many | 153 | A positive prefix means to wrap the skeleton around that many |
| 154 | following words. This is accomplished by putting the words there where | 154 | following words. This is accomplished by putting the words there where |
| 155 | the point is normally left after that skeleton is inserted (@pxref{Using | 155 | the point is normally left after that skeleton is inserted (@pxref{Using |
| 156 | Skeletons}). The point (@pxref{(emacs)Point}) is left at the next | 156 | Skeletons}). The point (@pxref{Point,,, emacs, The GNU Emacs Manual}) is left at the next |
| 157 | interesting spot in the skeleton instead. | 157 | interesting spot in the skeleton instead. |
| 158 | 158 | ||
| 159 | A negative prefix means to do something similar with that many previously | 159 | A negative prefix means to do something similar with that many previously |
| 160 | marked interregions (@pxref{(emacs)Mark}). In the simplest case, if you type | 160 | marked interregions (@pxref{Mark,,, emacs, The GNU Emacs Manual}). In the simplest case, if you type |
| 161 | @kbd{M--} just before issuing the skeleton command, that will wrap the | 161 | @kbd{M--} just before issuing the skeleton command, that will wrap the |
| 162 | skeleton around the current region, just like a positive argument would have | 162 | skeleton around the current region, just like a positive argument would have |
| 163 | wrapped it around a number of words. | 163 | wrapped it around a number of words. |
| @@ -189,8 +189,8 @@ tried to follow the order in which you marked these points. | |||
| 189 | @cindex skeletons as abbrevs | 189 | @cindex skeletons as abbrevs |
| 190 | 190 | ||
| 191 | Rather than use a key binding for every skeleton command, you can also | 191 | Rather than use a key binding for every skeleton command, you can also |
| 192 | define an abbreviation (@pxref{(emacs)Defining Abbrevs}) that will expand | 192 | define an abbreviation (@pxref{Defining Abbrevs,,, emacs, The GNU Emacs Manual}) that will expand |
| 193 | (@pxref{(emacs)Expanding Abbrevs}) into the skeleton. | 193 | (@pxref{Expanding Abbrevs,,, emacs, The GNU Emacs Manual}) into the skeleton. |
| 194 | 194 | ||
| 195 | Say you want @samp{ifst} to be an abbreviation for the C language if | 195 | Say you want @samp{ifst} to be an abbreviation for the C language if |
| 196 | statement. You will tell Emacs that @samp{ifst} expands to the empty string | 196 | statement. You will tell Emacs that @samp{ifst} expands to the empty string |
| @@ -290,7 +290,7 @@ skeleton. The first argument is the command name, the second is a | |||
| 290 | documentation string, and the rest is an interactor and any number of skeleton | 290 | documentation string, and the rest is an interactor and any number of skeleton |
| 291 | elements together forming a skeleton. This skeleton is assigned to a variable | 291 | elements together forming a skeleton. This skeleton is assigned to a variable |
| 292 | of the same name as the command and can thus be overridden from your | 292 | of the same name as the command and can thus be overridden from your |
| 293 | @file{~/.emacs} file (@pxref{(emacs)Init File}). | 293 | @file{~/.emacs} file (@pxref{Init File,,, emacs, The GNU Emacs Manual}). |
| 294 | 294 | ||
| 295 | 295 | ||
| 296 | 296 | ||
| @@ -309,14 +309,14 @@ fingers backwards, this can be quite relieving too. | |||
| 309 | 309 | ||
| 310 | @findex skeleton-pair-insert-maybe | 310 | @findex skeleton-pair-insert-maybe |
| 311 | @vindex skeleton-pair | 311 | @vindex skeleton-pair |
| 312 | This is done by binding the first key (@pxref{(emacs)Rebinding}) of | 312 | This is done by binding the first key (@pxref{Rebinding,,, emacs, The GNU Emacs Manual}) of |
| 313 | the pair to @code{skeleton-pair-insert-maybe} instead of | 313 | the pair to @code{skeleton-pair-insert-maybe} instead of |
| 314 | @code{self-insert-command}. The ``maybe'' comes from the fact that | 314 | @code{self-insert-command}. The ``maybe'' comes from the fact that |
| 315 | this at-first surprising behavior is initially turned off. To enable | 315 | this at-first surprising behavior is initially turned off. To enable |
| 316 | it, you must set @code{skeleton-pair} to some non-@code{nil} value. | 316 | it, you must set @code{skeleton-pair} to some non-@code{nil} value. |
| 317 | And even then, a positive argument (@pxref{(emacs)Arguments}) will | 317 | And even then, a positive argument (@pxref{Arguments,,, emacs, The GNU Emacs Manual}) will |
| 318 | make this key behave like a self-inserting key | 318 | make this key behave like a self-inserting key |
| 319 | (@pxref{(emacs)Inserting Text}). | 319 | (@pxref{Inserting Text,,, emacs, The GNU Emacs Manual}). |
| 320 | 320 | ||
| 321 | @vindex skeleton-pair-on-word | 321 | @vindex skeleton-pair-on-word |
| 322 | While this breaks with the stated intention of always balancing pairs, it | 322 | While this breaks with the stated intention of always balancing pairs, it |
| @@ -354,7 +354,7 @@ the buffer. The main application for this function, as its name suggests, | |||
| 354 | is to have it be called automatically every time an empty, and only an | 354 | is to have it be called automatically every time an empty, and only an |
| 355 | empty file is visited. This is accomplished by putting @code{(add-hook | 355 | empty file is visited. This is accomplished by putting @code{(add-hook |
| 356 | 'find-file-hook 'auto-insert)} into your @file{~/.emacs} file | 356 | 'find-file-hook 'auto-insert)} into your @file{~/.emacs} file |
| 357 | (@pxref{(emacs)Init File}). | 357 | (@pxref{Init File,,, emacs, The GNU Emacs Manual}). |
| 358 | 358 | ||
| 359 | @vindex auto-insert-alist | 359 | @vindex auto-insert-alist |
| 360 | What gets inserted, if anything, is determined by the variable | 360 | What gets inserted, if anything, is determined by the variable |
| @@ -392,10 +392,10 @@ source files insert the usual header, with a copyright of your | |||
| 392 | environment variable @env{$ORGANIZATION} or else the FSF, and prompt | 392 | environment variable @env{$ORGANIZATION} or else the FSF, and prompt |
| 393 | for valid keywords describing the contents. Files in a @file{bin} | 393 | for valid keywords describing the contents. Files in a @file{bin} |
| 394 | directory for which Emacs could determine no specialized mode | 394 | directory for which Emacs could determine no specialized mode |
| 395 | (@pxref{(emacs)Choosing Modes}) are set to Shell script mode. | 395 | (@pxref{Choosing Modes,,, emacs, The GNU Emacs Manual}) are set to Shell script mode. |
| 396 | 396 | ||
| 397 | @findex define-auto-insert | 397 | @findex define-auto-insert |
| 398 | In Lisp (@pxref{(emacs)Init File}) you can use the function | 398 | In Lisp (@pxref{Init File,,, emacs, The GNU Emacs Manual}) you can use the function |
| 399 | @code{define-auto-insert} to add to or modify | 399 | @code{define-auto-insert} to add to or modify |
| 400 | @code{auto-insert-alist}. See its documentation with @kbd{C-h f | 400 | @code{auto-insert-alist}. See its documentation with @kbd{C-h f |
| 401 | define-auto-insert}. | 401 | define-auto-insert}. |
| @@ -438,7 +438,7 @@ expression that matched the filename. | |||
| 438 | @kbd{M-x copyright} is a skeleton inserting command, that adds a copyright | 438 | @kbd{M-x copyright} is a skeleton inserting command, that adds a copyright |
| 439 | notice at the point. The ``by'' part is taken from your environment variable | 439 | notice at the point. The ``by'' part is taken from your environment variable |
| 440 | @env{$ORGANIZATION} or if that isn't set you are prompted for it. If the | 440 | @env{$ORGANIZATION} or if that isn't set you are prompted for it. If the |
| 441 | buffer has a comment syntax (@pxref{(emacs)Comments}), this is inserted as a comment. | 441 | buffer has a comment syntax (@pxref{Comments,,, emacs, The GNU Emacs Manual}), this is inserted as a comment. |
| 442 | 442 | ||
| 443 | @findex copyright-update | 443 | @findex copyright-update |
| 444 | @vindex copyright-limit | 444 | @vindex copyright-limit |
| @@ -450,13 +450,13 @@ existing ones, in the same format as the preceding year, i.e., 1994, '94 or 94. | |||
| 450 | If a dash-separated year list up to last year is found, that is extended to | 450 | If a dash-separated year list up to last year is found, that is extended to |
| 451 | current year, else the year is added separated by a comma. Or it replaces | 451 | current year, else the year is added separated by a comma. Or it replaces |
| 452 | them when this is called with a prefix argument. If a header referring to a | 452 | them when this is called with a prefix argument. If a header referring to a |
| 453 | wrong version of the GNU General Public License (@pxref{(emacs)Copying}) is found, | 453 | wrong version of the GNU General Public License (@pxref{Copying,,, emacs, The GNU Emacs Manual}) is found, |
| 454 | that is updated too. | 454 | that is updated too. |
| 455 | 455 | ||
| 456 | An interesting application for this function is to have it be called | 456 | An interesting application for this function is to have it be called |
| 457 | automatically every time a file is saved. This is accomplished by | 457 | automatically every time a file is saved. This is accomplished by |
| 458 | putting @code{(add-hook 'before-save-hook 'copyright-update)} into | 458 | putting @code{(add-hook 'before-save-hook 'copyright-update)} into |
| 459 | your @file{~/.emacs} file (@pxref{(emacs)Init File}). Alternative, | 459 | your @file{~/.emacs} file (@pxref{Init File,,, emacs, The GNU Emacs Manual}). Alternative, |
| 460 | you can do @kbd{M-x customize-variable @key{RET} before-save-hook | 460 | you can do @kbd{M-x customize-variable @key{RET} before-save-hook |
| 461 | @key{RET}}. @code{copyright-update} is conveniently listed as an | 461 | @key{RET}}. @code{copyright-update} is conveniently listed as an |
| 462 | option in the customization buffer. | 462 | option in the customization buffer. |
diff --git a/doc/misc/bovine.texi b/doc/misc/bovine.texi index f1a72f4cc3e..77c41e22777 100644 --- a/doc/misc/bovine.texi +++ b/doc/misc/bovine.texi | |||
| @@ -138,7 +138,7 @@ of simplified Emacs Lisp expressions for concocting the parse tree. | |||
| 138 | In bison, each time an element of @var{components} is found, it is | 138 | In bison, each time an element of @var{components} is found, it is |
| 139 | @dfn{shifted} onto the parser stack. (The stack of matched elements.) | 139 | @dfn{shifted} onto the parser stack. (The stack of matched elements.) |
| 140 | When all @var{components}' elements have been matched, it is | 140 | When all @var{components}' elements have been matched, it is |
| 141 | @dfn{reduced} to @var{result}. @xref{(bison)Algorithm}. | 141 | @dfn{reduced} to @var{result}. @xref{Algorithm,,, bison, The GNU Bison Manual}. |
| 142 | 142 | ||
| 143 | A particular @var{result} written into your grammar becomes | 143 | A particular @var{result} written into your grammar becomes |
| 144 | the parser's goal. It is designated by a @code{%start} statement | 144 | the parser's goal. It is designated by a @code{%start} statement |
| @@ -368,8 +368,8 @@ Is the kind of tag being create, such as @code{function}, or | |||
| 368 | @code{variable}, though any symbol will work. | 368 | @code{variable}, though any symbol will work. |
| 369 | 369 | ||
| 370 | @item attributes | 370 | @item attributes |
| 371 | Is an optional set of labeled values such as @w{@code{:constant-flag t :parent | 371 | Is an optional set of labeled values such as @code{:constant-flag t :parent |
| 372 | "parenttype"}}. | 372 | "parenttype"}. |
| 373 | @end table | 373 | @end table |
| 374 | 374 | ||
| 375 | @item (TAG-VARIABLE @var{name} @var{type} @var{default-value} [@var{attributes}]) | 375 | @item (TAG-VARIABLE @var{name} @var{type} @var{default-value} [@var{attributes}]) |
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi index 78fcefb9e76..cfa64feefec 100644 --- a/doc/misc/ede.texi +++ b/doc/misc/ede.texi | |||
| @@ -1110,7 +1110,7 @@ superclasses. In this way, specific behaviors such as how a project | |||
| 1110 | is saved, or how a target is compiled can be customized by a project | 1110 | is saved, or how a target is compiled can be customized by a project |
| 1111 | author in detail. @ede{} communicates to these project objects via an | 1111 | author in detail. @ede{} communicates to these project objects via an |
| 1112 | API using methods. The commands you use in @ede{} mode are high-level | 1112 | API using methods. The commands you use in @ede{} mode are high-level |
| 1113 | functional wrappers over these methods. @xref{(eieio)Top}. For | 1113 | functional wrappers over these methods. @xref{Top,,, eieio, EIEIO manual}. For |
| 1114 | details on using @eieio{} to extending classes, and writing methods. | 1114 | details on using @eieio{} to extending classes, and writing methods. |
| 1115 | 1115 | ||
| 1116 | If you intend to extend @ede{}, it is most likely that a new target type is | 1116 | If you intend to extend @ede{}, it is most likely that a new target type is |
| @@ -1361,7 +1361,8 @@ association when a file is loaded. It is generally unnecessary to | |||
| 1361 | override this unless you keep auxiliary files. | 1361 | override this unless you keep auxiliary files. |
| 1362 | @end table | 1362 | @end table |
| 1363 | 1363 | ||
| 1364 | These methods are used by the semantic package extensions @xref{(semantic)Top}. | 1364 | These methods are used by the semantic package extensions. |
| 1365 | @xref{Top,,, semantic, Semantic manual}. | ||
| 1365 | 1366 | ||
| 1366 | @table @code | 1367 | @table @code |
| 1367 | @item ede-buffer-header-file | 1368 | @item ede-buffer-header-file |
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi index f898a2b3319..3f1beff645a 100644 --- a/doc/misc/eieio.texi +++ b/doc/misc/eieio.texi | |||
| @@ -446,7 +446,7 @@ that default value with @code{oset-default}. @ref{Accessing Slots}. | |||
| 446 | 446 | ||
| 447 | @item :type | 447 | @item :type |
| 448 | An unquoted type specifier used to validate data set into this slot. | 448 | An unquoted type specifier used to validate data set into this slot. |
| 449 | @xref{(cl)Type Predicates}. | 449 | @xref{Type Predicates,,,cl,Common Lisp Extensions}. |
| 450 | Here are some examples: | 450 | Here are some examples: |
| 451 | @table @code | 451 | @table @code |
| 452 | @item symbol | 452 | @item symbol |
| @@ -1571,7 +1571,7 @@ all these classes, subsection headings, and indexes. | |||
| 1571 | 1571 | ||
| 1572 | Each class will be indexed using the texinfo labeled index | 1572 | Each class will be indexed using the texinfo labeled index |
| 1573 | @var{indexstring} which is a two letter description. | 1573 | @var{indexstring} which is a two letter description. |
| 1574 | @xref{(texinfo) New Indices}. | 1574 | @xref{New Indices,,,texinfo,Texinfo manual}. |
| 1575 | 1575 | ||
| 1576 | To use this command, the texinfo macro | 1576 | To use this command, the texinfo macro |
| 1577 | 1577 | ||
| @@ -1874,8 +1874,9 @@ instead pre-builds a method that gets the slot's value. | |||
| 1874 | 1874 | ||
| 1875 | @item :type | 1875 | @item :type |
| 1876 | Specifier uses the @code{typep} function from the @file{cl} | 1876 | Specifier uses the @code{typep} function from the @file{cl} |
| 1877 | package. @xref{(cl)Type Predicates}. It therefore has the same issues as | 1877 | package. @xref{Type Predicates,,,cl,Common Lisp Extensions}. |
| 1878 | that package. Extensions include the ability to provide object names. | 1878 | It therefore has the same issues as that package. Extensions include |
| 1879 | the ability to provide object names. | ||
| 1879 | @end table | 1880 | @end table |
| 1880 | 1881 | ||
| 1881 | Defclass also supports class options, but does not currently use values | 1882 | Defclass also supports class options, but does not currently use values |
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi index eb1820b2bfd..84675a52fee 100644 --- a/doc/misc/idlwave.texi +++ b/doc/misc/idlwave.texi | |||
| @@ -4067,7 +4067,7 @@ sure you check the following things: | |||
| 4067 | @itemize @bullet | 4067 | @itemize @bullet |
| 4068 | @item When you download the IDLWAVE distribution, make sure you save the | 4068 | @item When you download the IDLWAVE distribution, make sure you save the |
| 4069 | file under the names @file{idlwave.tar.gz}. | 4069 | file under the names @file{idlwave.tar.gz}. |
| 4070 | @item M-TAB switches among running programs --- use Esc-TAB | 4070 | @item M-TAB switches among running programs---use Esc-TAB |
| 4071 | instead. | 4071 | instead. |
| 4072 | @item Other issues as yet unnamed... | 4072 | @item Other issues as yet unnamed... |
| 4073 | @end itemize | 4073 | @end itemize |
diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi index 6c6d1d14bc0..104e4c06798 100644 --- a/doc/misc/pcl-cvs.texi +++ b/doc/misc/pcl-cvs.texi | |||
| @@ -1169,13 +1169,13 @@ kill the contents of the buffer with @kbd{C-w}. | |||
| 1169 | 1169 | ||
| 1170 | @findex log-edit-insert-changelog | 1170 | @findex log-edit-insert-changelog |
| 1171 | If you work by writing entries in the @file{ChangeLog} | 1171 | If you work by writing entries in the @file{ChangeLog} |
| 1172 | (@pxref{(emacs)Change Log}) and then commit the change under revision | 1172 | (@pxref{Change Log,,, emacs, The GNU Emacs Manual}) and then commit the change under revision |
| 1173 | control, you can generate the Log Edit text from the ChangeLog using | 1173 | control, you can generate the Log Edit text from the ChangeLog using |
| 1174 | @kbd{C-c C-a} (@kbd{log-edit-insert-changelog}). This looks for | 1174 | @kbd{C-c C-a} (@kbd{log-edit-insert-changelog}). This looks for |
| 1175 | entries for the file(s) concerned in the top entry in the ChangeLog | 1175 | entries for the file(s) concerned in the top entry in the ChangeLog |
| 1176 | and uses those paragraphs as the log text. This text is only inserted | 1176 | and uses those paragraphs as the log text. This text is only inserted |
| 1177 | if the top entry was made under your user name on the current date. | 1177 | if the top entry was made under your user name on the current date. |
| 1178 | @xref{(emacs)Change Logs and VC}, for the opposite way of | 1178 | @xref{Change Logs and VC,,, emacs, The GNU Emacs Manual}, for the opposite way of |
| 1179 | working---generating ChangeLog entries from the revision control log. | 1179 | working---generating ChangeLog entries from the revision control log. |
| 1180 | 1180 | ||
| 1181 | In the Log Edit buffer, @kbd{C-c C-f} (@kbd{M-x log-edit-show-files}) | 1181 | In the Log Edit buffer, @kbd{C-c C-f} (@kbd{M-x log-edit-show-files}) |
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi index b6e4b40976d..de54702adcd 100644 --- a/doc/misc/viper.texi +++ b/doc/misc/viper.texi | |||
| @@ -1833,10 +1833,10 @@ replacement regions, you can change @code{viper-replace-overlay-face} by | |||
| 1833 | specifying a new face. (Emacs faces are described in the Emacs Lisp | 1833 | specifying a new face. (Emacs faces are described in the Emacs Lisp |
| 1834 | reference.) On a color display, the following customization method is | 1834 | reference.) On a color display, the following customization method is |
| 1835 | usually most effective: | 1835 | usually most effective: |
| 1836 | @example | 1836 | @smallexample |
| 1837 | (set-face-foreground viper-replace-overlay-face "DarkSlateBlue") | 1837 | (set-face-foreground viper-replace-overlay-face "DarkSlateBlue") |
| 1838 | (set-face-background viper-replace-overlay-face "yellow") | 1838 | (set-face-background viper-replace-overlay-face "yellow") |
| 1839 | @end example | 1839 | @end smallexample |
| 1840 | For a complete list of colors available to you, evaluate the expression | 1840 | For a complete list of colors available to you, evaluate the expression |
| 1841 | @code{(x-defined-colors)}. (Type it in the buffer @code{*scratch*} and then | 1841 | @code{(x-defined-colors)}. (Type it in the buffer @code{*scratch*} and then |
| 1842 | hit the @kbd{C-j} key. | 1842 | hit the @kbd{C-j} key. |
| @@ -2039,7 +2039,8 @@ can write this: | |||
| 2039 | @noindent | 2039 | @noindent |
| 2040 | To customize the binding for @kbd{C-h} in Insert state: | 2040 | To customize the binding for @kbd{C-h} in Insert state: |
| 2041 | @example | 2041 | @example |
| 2042 | (define-key viper-insert-global-user-map "\C-h" 'my-del-backwards-function) | 2042 | (define-key viper-insert-global-user-map "\C-h" |
| 2043 | 'my-del-backwards-function) | ||
| 2043 | @end example | 2044 | @end example |
| 2044 | @noindent | 2045 | @noindent |
| 2045 | 2046 | ||
| @@ -2088,7 +2089,8 @@ Dired functions, the trick can be accomplished via the following code: | |||
| 2088 | (setq my-dired-vi-purist-map (make-sparse-keymap)) | 2089 | (setq my-dired-vi-purist-map (make-sparse-keymap)) |
| 2089 | (define-key my-dired-vi-purist-map "k" 'viper-previous-line) | 2090 | (define-key my-dired-vi-purist-map "k" 'viper-previous-line) |
| 2090 | (define-key my-dired-vi-purist-map "l" 'viper-forward-char) | 2091 | (define-key my-dired-vi-purist-map "l" 'viper-forward-char) |
| 2091 | (viper-modify-major-mode 'dired-mode 'emacs-state my-dired-vi-purist-map) | 2092 | (viper-modify-major-mode 'dired-mode |
| 2093 | 'emacs-state my-dired-vi-purist-map) | ||
| 2092 | @end example | 2094 | @end example |
| 2093 | 2095 | ||
| 2094 | Yet another way to customize key bindings in a major mode is to edit the | 2096 | Yet another way to customize key bindings in a major mode is to edit the |
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi index 4b920875b2c..8a442e4acc2 100644 --- a/doc/misc/widget.texi +++ b/doc/misc/widget.texi | |||
| @@ -360,13 +360,14 @@ Interface}). | |||
| 360 | (setq widget-example-repeat | 360 | (setq widget-example-repeat |
| 361 | (widget-create 'editable-list | 361 | (widget-create 'editable-list |
| 362 | :entry-format "%i %d %v" | 362 | :entry-format "%i %d %v" |
| 363 | :notify (lambda (widget &rest ignore) | 363 | :notify |
| 364 | (let ((old (widget-get widget | 364 | (lambda (widget &rest ignore) |
| 365 | ':example-length)) | 365 | (let ((old (widget-get widget |
| 366 | (new (length (widget-value widget)))) | 366 | ':example-length)) |
| 367 | (unless (eq old new) | 367 | (new (length (widget-value widget)))) |
| 368 | (widget-put widget ':example-length new) | 368 | (unless (eq old new) |
| 369 | (message "You can count to %d." new)))) | 369 | (widget-put widget ':example-length new) |
| 370 | (message "You can count to %d." new)))) | ||
| 370 | :value '("One" "Eh, two?" "Five!") | 371 | :value '("One" "Eh, two?" "Five!") |
| 371 | '(editable-field :value "three"))) | 372 | '(editable-field :value "three"))) |
| 372 | (widget-insert "\n\nSelect multiple:\n\n") | 373 | (widget-insert "\n\nSelect multiple:\n\n") |
| @@ -383,11 +384,13 @@ Interface}). | |||
| 383 | :notify (lambda (widget &rest ignore) | 384 | :notify (lambda (widget &rest ignore) |
| 384 | (message "You selected %s" | 385 | (message "You selected %s" |
| 385 | (widget-value widget))) | 386 | (widget-value widget))) |
| 386 | '(item "One") '(item "Another One.") '(item "A Final One.")) | 387 | '(item "One") '(item "Another One.") |
| 388 | '(item "A Final One.")) | ||
| 387 | (widget-insert "\n") | 389 | (widget-insert "\n") |
| 388 | (widget-create 'push-button | 390 | (widget-create 'push-button |
| 389 | :notify (lambda (&rest ignore) | 391 | :notify (lambda (&rest ignore) |
| 390 | (if (= (length (widget-value widget-example-repeat)) | 392 | (if (= (length |
| 393 | (widget-value widget-example-repeat)) | ||
| 391 | 3) | 394 | 3) |
| 392 | (message "Congratulation!") | 395 | (message "Congratulation!") |
| 393 | (error "Three was the count!"))) | 396 | (error "Three was the count!"))) |
diff --git a/doc/misc/wisent.texi b/doc/misc/wisent.texi index 877fa934423..bd12fe5ab8a 100644 --- a/doc/misc/wisent.texi +++ b/doc/misc/wisent.texi | |||
| @@ -112,7 +112,7 @@ of the GNU Compiler Compiler Bison. Its code is a port of the C code | |||
| 112 | of GNU Bison 1.28 & 1.31. | 112 | of GNU Bison 1.28 & 1.31. |
| 113 | 113 | ||
| 114 | For more details on the basic concepts for understanding Wisent, it is | 114 | For more details on the basic concepts for understanding Wisent, it is |
| 115 | worthwhile to read the @ref{Top, Bison Manual, bison}. | 115 | worthwhile to read the @ref{Top, Bison Manual, , bison}. |
| 116 | @ifhtml | 116 | @ifhtml |
| 117 | @uref{http://www.gnu.org/manual/bison/html_node/index.html}. | 117 | @uref{http://www.gnu.org/manual/bison/html_node/index.html}. |
| 118 | @end ifhtml | 118 | @end ifhtml |
| @@ -302,7 +302,7 @@ If @var{components} in a rule is @code{nil}, it means that the rule | |||
| 302 | can match the empty string. For example, here is how to define a | 302 | can match the empty string. For example, here is how to define a |
| 303 | comma-separated sequence of zero or more @samp{exp} groupings: | 303 | comma-separated sequence of zero or more @samp{exp} groupings: |
| 304 | 304 | ||
| 305 | @example | 305 | @smallexample |
| 306 | @group | 306 | @group |
| 307 | (expseq (nil) ;; expseq: ;; empty | 307 | (expseq (nil) ;; expseq: ;; empty |
| 308 | ((expseq1)) ;; | expseq1 | 308 | ((expseq1)) ;; | expseq1 |
| @@ -312,7 +312,7 @@ comma-separated sequence of zero or more @samp{exp} groupings: | |||
| 312 | ((expseq1 ?, exp)) ;; | expseq1 ',' exp | 312 | ((expseq1 ?, exp)) ;; | expseq1 ',' exp |
| 313 | ) ;; ; | 313 | ) ;; ; |
| 314 | @end group | 314 | @end group |
| 315 | @end example | 315 | @end smallexample |
| 316 | 316 | ||
| 317 | @cindex precedence level | 317 | @cindex precedence level |
| 318 | @item precedence | 318 | @item precedence |
| @@ -339,7 +339,7 @@ serves to stand for its precedence: | |||
| 339 | 339 | ||
| 340 | Now the precedence of @code{UMINUS} can be used in specific rules: | 340 | Now the precedence of @code{UMINUS} can be used in specific rules: |
| 341 | 341 | ||
| 342 | @example | 342 | @smallexample |
| 343 | @group | 343 | @group |
| 344 | (exp @dots{} ;; exp: @dots{} | 344 | (exp @dots{} ;; exp: @dots{} |
| 345 | ((exp ?- exp)) ;; | exp '-' exp | 345 | ((exp ?- exp)) ;; | exp '-' exp |
| @@ -348,7 +348,7 @@ Now the precedence of @code{UMINUS} can be used in specific rules: | |||
| 348 | @dots{} ;; @dots{} | 348 | @dots{} ;; @dots{} |
| 349 | ) ;; ; | 349 | ) ;; ; |
| 350 | @end group | 350 | @end group |
| 351 | @end example | 351 | @end smallexample |
| 352 | 352 | ||
| 353 | If you forget to append @code{[UMINUS]} to the rule for unary minus, | 353 | If you forget to append @code{[UMINUS]} to the rule for unary minus, |
| 354 | Wisent silently assumes that minus has its usual precedence. This | 354 | Wisent silently assumes that minus has its usual precedence. This |
| @@ -1029,7 +1029,6 @@ state 8 | |||
| 1029 | $default reduce using rule 2 (exp) | 1029 | $default reduce using rule 2 (exp) |
| 1030 | 1030 | ||
| 1031 | 1031 | ||
| 1032 | |||
| 1033 | state 9 | 1032 | state 9 |
| 1034 | 1033 | ||
| 1035 | exp -> exp . '+' exp (rule 1) | 1034 | exp -> exp . '+' exp (rule 1) |
| @@ -1044,7 +1043,6 @@ state 9 | |||
| 1044 | $default reduce using rule 3 (exp) | 1043 | $default reduce using rule 3 (exp) |
| 1045 | 1044 | ||
| 1046 | 1045 | ||
| 1047 | |||
| 1048 | state 10 | 1046 | state 10 |
| 1049 | 1047 | ||
| 1050 | exp -> exp . '+' exp (rule 1) | 1048 | exp -> exp . '+' exp (rule 1) |
| @@ -1205,14 +1205,16 @@ takes precedence over most other maps for a short while (normally one key). | |||
| 1205 | ** Cygwin builds can use the native MS Windows user interface. | 1205 | ** Cygwin builds can use the native MS Windows user interface. |
| 1206 | Pass --with-w32 to configure. The default remains the X11 interface. | 1206 | Pass --with-w32 to configure. The default remains the X11 interface. |
| 1207 | 1207 | ||
| 1208 | +++ | ||
| 1208 | ** Two new functions are available in Cygwin builds: | 1209 | ** Two new functions are available in Cygwin builds: |
| 1209 | `cygwin-convert-file-name-from-windows' and | 1210 | `cygwin-convert-file-name-from-windows' and |
| 1210 | `cygwin-convert-file-name-to-windows'. These functions allow Lisp | 1211 | `cygwin-convert-file-name-to-windows'. These functions allow Lisp |
| 1211 | code to access the Cygwin file-name mapping machinery to convert | 1212 | code to access the Cygwin file-name mapping machinery to convert |
| 1212 | between Cygwin and Windows-native file and directory names. | 1213 | between Cygwin and Windows-native file and directory names. |
| 1213 | 1214 | ||
| 1215 | --- | ||
| 1214 | ** When invoked with the -nw switch to run on the Windows text-mode terminal, | 1216 | ** When invoked with the -nw switch to run on the Windows text-mode terminal, |
| 1215 | Emacs now supports mouse highlight, help-echo (in the echo area), and | 1217 | Emacs now supports `mouse-highlight', help-echo (in the echo area), and |
| 1216 | `mouse-autoselect-window'. | 1218 | `mouse-autoselect-window'. |
| 1217 | 1219 | ||
| 1218 | +++ | 1220 | +++ |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 03122ff5000..f058c8632b7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,17 @@ | |||
| 1 | 2012-12-27 Dmitry Gutov <dgutov@yandex.ru> | ||
| 2 | |||
| 3 | * progmodes/ruby-mode.el (ruby-indent-beg-re): Only allow "class", | ||
| 4 | "module" and "def" to have indentation before them. Regression | ||
| 5 | from 109911 (see the new test). | ||
| 6 | |||
| 7 | * progmodes/ruby-mode.el: Bump the version to 1.2 (Bug#13200). | ||
| 8 | |||
| 9 | 2012-12-27 Alan Mackenzie <acm@muc.de> | ||
| 10 | |||
| 11 | Speed up fontification where there's large brace blocks. | ||
| 12 | * progmodes/cc-fonts.el (c-font-lock-enclosing-decls): Add a limit | ||
| 13 | to a call of c-beginning-of-decl-1. | ||
| 14 | |||
| 1 | 2012-12-27 Vitalie Spinu <spinuvit@gmail.com> (tiny change) | 15 | 2012-12-27 Vitalie Spinu <spinuvit@gmail.com> (tiny change) |
| 2 | 16 | ||
| 3 | * comint.el (comint-adjust-window-point): New function. | 17 | * comint.el (comint-adjust-window-point): New function. |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index d95c9cdee30..a830088f3b6 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,15 @@ | |||
| 1 | 2012-12-27 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * plstore.el (plstore-passphrase-callback-function): | ||
| 4 | Use plstore-get-file. | ||
| 5 | |||
| 6 | 2012-12-27 Andreas Schwab <schwab@linux-m68k.org> | ||
| 7 | |||
| 8 | * nnimap.el (nnimap-find-article-by-message-id): | ||
| 9 | Don't error out if group is nil. | ||
| 10 | |||
| 11 | * shr.el (shr-tag-em): Render as italic, not bold. | ||
| 12 | |||
| 1 | 2012-12-26 Katsumi Yamaoka <yamaoka@jpl.org> | 13 | 2012-12-26 Katsumi Yamaoka <yamaoka@jpl.org> |
| 2 | 14 | ||
| 3 | * mml2015.el (mml2015-epg-key-image): Use mm-set-buffer-multibyte. | 15 | * mml2015.el (mml2015-epg-key-image): Use mm-set-buffer-multibyte. |
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index bc0818efa7c..38ece41ad37 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el | |||
| @@ -980,7 +980,7 @@ textual parts.") | |||
| 980 | (defun nnimap-find-article-by-message-id (group message-id) | 980 | (defun nnimap-find-article-by-message-id (group message-id) |
| 981 | (with-current-buffer (nnimap-buffer) | 981 | (with-current-buffer (nnimap-buffer) |
| 982 | (erase-buffer) | 982 | (erase-buffer) |
| 983 | (unless (equal group (nnimap-group nnimap-object)) | 983 | (unless (or (not group) (equal group (nnimap-group nnimap-object))) |
| 984 | (setf (nnimap-group nnimap-object) nil) | 984 | (setf (nnimap-group nnimap-object) nil) |
| 985 | (setf (nnimap-examined nnimap-object) group) | 985 | (setf (nnimap-examined nnimap-object) group) |
| 986 | (nnimap-send-command "EXAMINE %S" (utf7-encode group t))) | 986 | (nnimap-send-command "EXAMINE %S" (utf7-encode group t))) |
diff --git a/lisp/gnus/plstore.el b/lisp/gnus/plstore.el index f130bfca853..b428cab64e3 100644 --- a/lisp/gnus/plstore.el +++ b/lisp/gnus/plstore.el | |||
| @@ -126,8 +126,7 @@ symmetric encryption will be used.") | |||
| 126 | 126 | ||
| 127 | (defun plstore-passphrase-callback-function (_context _key-id plstore) | 127 | (defun plstore-passphrase-callback-function (_context _key-id plstore) |
| 128 | (if plstore-cache-passphrase-for-symmetric-encryption | 128 | (if plstore-cache-passphrase-for-symmetric-encryption |
| 129 | (let* ((file (file-truename (buffer-file-name | 129 | (let* ((file (file-truename (plstore-get-file plstore))) |
| 130 | (plstore--get-buffer plstore)))) | ||
| 131 | (entry (assoc file plstore-passphrase-alist)) | 130 | (entry (assoc file plstore-passphrase-alist)) |
| 132 | passphrase) | 131 | passphrase) |
| 133 | (or (copy-sequence (cdr entry)) | 132 | (or (copy-sequence (cdr entry)) |
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 2d116e1ecdc..c29e2220211 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el | |||
| @@ -1591,6 +1591,7 @@ casts and declarations are fontified. Used on level 2 and higher." | |||
| 1591 | ;; prevent a repeat invocation. See elisp/lispref page "Search-based | 1591 | ;; prevent a repeat invocation. See elisp/lispref page "Search-based |
| 1592 | ;; Fontification". | 1592 | ;; Fontification". |
| 1593 | (let* ((paren-state (c-parse-state)) | 1593 | (let* ((paren-state (c-parse-state)) |
| 1594 | (decl-search-lim (c-determine-limit 1000)) | ||
| 1594 | decl-context in-typedef ps-elt) | 1595 | decl-context in-typedef ps-elt) |
| 1595 | ;; Are we in any nested struct/union/class/etc. braces? | 1596 | ;; Are we in any nested struct/union/class/etc. braces? |
| 1596 | (while paren-state | 1597 | (while paren-state |
| @@ -1599,7 +1600,7 @@ casts and declarations are fontified. Used on level 2 and higher." | |||
| 1599 | (when (and (atom ps-elt) | 1600 | (when (and (atom ps-elt) |
| 1600 | (eq (char-after ps-elt) ?\{)) | 1601 | (eq (char-after ps-elt) ?\{)) |
| 1601 | (goto-char ps-elt) | 1602 | (goto-char ps-elt) |
| 1602 | (setq decl-context (c-beginning-of-decl-1) | 1603 | (setq decl-context (c-beginning-of-decl-1 decl-search-lim) |
| 1603 | in-typedef (looking-at c-typedef-key)) | 1604 | in-typedef (looking-at c-typedef-key)) |
| 1604 | (if in-typedef (c-forward-token-2)) | 1605 | (if in-typedef (c-forward-token-2)) |
| 1605 | (when (and c-opt-block-decls-with-vars-key | 1606 | (when (and c-opt-block-decls-with-vars-key |
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index b223aece416..5cba1df3c8f 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | ;; URL: http://www.emacswiki.org/cgi-bin/wiki/RubyMode | 7 | ;; URL: http://www.emacswiki.org/cgi-bin/wiki/RubyMode |
| 8 | ;; Created: Fri Feb 4 14:49:13 JST 1994 | 8 | ;; Created: Fri Feb 4 14:49:13 JST 1994 |
| 9 | ;; Keywords: languages ruby | 9 | ;; Keywords: languages ruby |
| 10 | ;; Version: 1.0 | 10 | ;; Version: 1.2 |
| 11 | 11 | ||
| 12 | ;; This file is part of GNU Emacs. | 12 | ;; This file is part of GNU Emacs. |
| 13 | 13 | ||
| @@ -64,8 +64,9 @@ | |||
| 64 | "Regexp to match keywords that nest without blocks.") | 64 | "Regexp to match keywords that nest without blocks.") |
| 65 | 65 | ||
| 66 | (defconst ruby-indent-beg-re | 66 | (defconst ruby-indent-beg-re |
| 67 | (concat "^\\s *" (regexp-opt '("class" "module" "def" "if" "unless" "case" | 67 | (concat "^\\(\\s *" (regexp-opt '("class" "module" "def")) "\\|" |
| 68 | "while" "until" "for" "begin")) "\\_>") | 68 | (regexp-opt '("if" "unless" "case" "while" "until" "for" "begin")) |
| 69 | "\\)\\_>") | ||
| 69 | "Regexp to match where the indentation gets deeper.") | 70 | "Regexp to match where the indentation gets deeper.") |
| 70 | 71 | ||
| 71 | (defconst ruby-modifier-beg-keywords | 72 | (defconst ruby-modifier-beg-keywords |
diff --git a/src/ChangeLog b/src/ChangeLog index d4794667ead..3fabe7579a9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | 2012-12-27 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * cygw32.c (Fcygwin_convert_file_name_to_windows) | ||
| 4 | (Fcygwin_convert_file_name_from_windows): Doc fixes. | ||
| 5 | |||
| 6 | 2012-12-27 Eli Zaretskii <eliz@gnu.org> | ||
| 7 | |||
| 8 | * fileio.c (file_name_as_directory, directory_file_name): Accept | ||
| 9 | an additional argument MULTIBYTE to indicate whether the input C | ||
| 10 | came from a multibyte or a unibyte Lisp string; all callers | ||
| 11 | adjusted. Don't assume the input string is always multibyte. | ||
| 12 | (Bug#13262) | ||
| 13 | (Ffile_name_directory) [DOS_NT]: Handle unibyte strings correctly: | ||
| 14 | don't ENCODE_FILE them, and return a unibyte string if the input | ||
| 15 | was unibyte. | ||
| 16 | (Fexpand_file_name): Don't mix unibyte with multibyte strings, and | ||
| 17 | don't assume the input strings will always be multibyte. If the | ||
| 18 | input strings are multibyte, decode strings obtained from C | ||
| 19 | library functions. | ||
| 20 | |||
| 1 | 2012-12-26 Dmitry Antipov <dmantipov@yandex.ru> | 21 | 2012-12-26 Dmitry Antipov <dmantipov@yandex.ru> |
| 2 | 22 | ||
| 3 | * lisp.h (toplevel): Add two notices to the comment about | 23 | * lisp.h (toplevel): Add two notices to the comment about |
diff --git a/src/cygw32.c b/src/cygw32.c index d9777d5e22e..5873a05dcf0 100644 --- a/src/cygw32.c +++ b/src/cygw32.c | |||
| @@ -110,23 +110,25 @@ DEFUN ("cygwin-convert-file-name-to-windows", | |||
| 110 | Fcygwin_convert_file_name_to_windows, | 110 | Fcygwin_convert_file_name_to_windows, |
| 111 | Scygwin_convert_file_name_to_windows, | 111 | Scygwin_convert_file_name_to_windows, |
| 112 | 1, 2, 0, | 112 | 1, 2, 0, |
| 113 | doc: /* Convert PATH to a Windows path. If ABSOLUTE-P is | 113 | doc: /* Convert a Cygwin file name FILE to a Windows-style file name. |
| 114 | non-nil, return an absolute path.*/) | 114 | If ABSOLUTE-P is non-nil, return an absolute file name. |
| 115 | (Lisp_Object path, Lisp_Object absolute_p) | 115 | For the reverse operation, see `cygwin-convert-file-name-from-windows'. */) |
| 116 | (Lisp_Object file, Lisp_Object absolute_p) | ||
| 116 | { | 117 | { |
| 117 | return from_unicode ( | 118 | return from_unicode ( |
| 118 | conv_filename_to_w32_unicode (path, EQ (absolute_p, Qnil) ? 0 : 1)); | 119 | conv_filename_to_w32_unicode (file, EQ (absolute_p, Qnil) ? 0 : 1)); |
| 119 | } | 120 | } |
| 120 | 121 | ||
| 121 | DEFUN ("cygwin-convert-file-name-from-windows", | 122 | DEFUN ("cygwin-convert-file-name-from-windows", |
| 122 | Fcygwin_convert_file_name_from_windows, | 123 | Fcygwin_convert_file_name_from_windows, |
| 123 | Scygwin_convert_file_name_from_windows, | 124 | Scygwin_convert_file_name_from_windows, |
| 124 | 1, 2, 0, | 125 | 1, 2, 0, |
| 125 | doc: /* Convert a Windows path to a Cygwin path. If ABSOLUTE-P | 126 | doc: /* Convert a Windows-style file name FILE to a Cygwin file name. |
| 126 | is non-nil, return an absolute path.*/) | 127 | If ABSOLUTE-P is non-nil, return an absolute file name. |
| 127 | (Lisp_Object path, Lisp_Object absolute_p) | 128 | For the reverse operation, see `cygwin-convert-file-name-to-windows'. */) |
| 129 | (Lisp_Object file, Lisp_Object absolute_p) | ||
| 128 | { | 130 | { |
| 129 | return conv_filename_from_w32_unicode (to_unicode (path, &path), | 131 | return conv_filename_from_w32_unicode (to_unicode (file, &file), |
| 130 | EQ (absolute_p, Qnil) ? 0 : 1); | 132 | EQ (absolute_p, Qnil) ? 0 : 1); |
| 131 | } | 133 | } |
| 132 | 134 | ||
diff --git a/src/fileio.c b/src/fileio.c index 50fbaa7ff04..9f70c790592 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -379,12 +379,26 @@ Given a Unix syntax file name, returns a string ending in slash. */) | |||
| 379 | strcat (res, "/"); | 379 | strcat (res, "/"); |
| 380 | beg = res; | 380 | beg = res; |
| 381 | p = beg + strlen (beg); | 381 | p = beg + strlen (beg); |
| 382 | dostounix_filename (beg); | ||
| 383 | tem_fn = make_specified_string (beg, -1, p - beg, | ||
| 384 | STRING_MULTIBYTE (filename)); | ||
| 382 | } | 385 | } |
| 386 | else | ||
| 387 | tem_fn = make_specified_string (beg - 2, -1, p - beg + 2, | ||
| 388 | STRING_MULTIBYTE (filename)); | ||
| 389 | } | ||
| 390 | else if (STRING_MULTIBYTE (filename)) | ||
| 391 | { | ||
| 392 | tem_fn = ENCODE_FILE (make_specified_string (beg, -1, p - beg, 1)); | ||
| 393 | dostounix_filename (SSDATA (tem_fn)); | ||
| 394 | tem_fn = DECODE_FILE (tem_fn); | ||
| 395 | } | ||
| 396 | else | ||
| 397 | { | ||
| 398 | dostounix_filename (beg); | ||
| 399 | tem_fn = make_specified_string (beg, -1, p - beg, 0); | ||
| 383 | } | 400 | } |
| 384 | tem_fn = ENCODE_FILE (make_specified_string (beg, -1, p - beg, | 401 | return tem_fn; |
| 385 | STRING_MULTIBYTE (filename))); | ||
| 386 | dostounix_filename (SSDATA (tem_fn)); | ||
| 387 | return DECODE_FILE (tem_fn); | ||
| 388 | #else /* DOS_NT */ | 402 | #else /* DOS_NT */ |
| 389 | return make_specified_string (beg, -1, p - beg, STRING_MULTIBYTE (filename)); | 403 | return make_specified_string (beg, -1, p - beg, STRING_MULTIBYTE (filename)); |
| 390 | #endif /* DOS_NT */ | 404 | #endif /* DOS_NT */ |
| @@ -459,12 +473,14 @@ get a current directory to run processes in. */) | |||
| 459 | return Ffile_name_directory (filename); | 473 | return Ffile_name_directory (filename); |
| 460 | } | 474 | } |
| 461 | 475 | ||
| 462 | /* Convert from file name SRC of length SRCLEN to directory name | 476 | /* Convert from file name SRC of length SRCLEN to directory name in |
| 463 | in DST. On UNIX, just make sure there is a terminating /. | 477 | DST. MULTIBYTE non-zero means the file name in SRC is a multibyte |
| 464 | Return the length of DST in bytes. */ | 478 | string. On UNIX, just make sure there is a terminating /. Return |
| 479 | the length of DST in bytes. */ | ||
| 465 | 480 | ||
| 466 | static ptrdiff_t | 481 | static ptrdiff_t |
| 467 | file_name_as_directory (char *dst, const char *src, ptrdiff_t srclen) | 482 | file_name_as_directory (char *dst, const char *src, ptrdiff_t srclen, |
| 483 | bool multibyte) | ||
| 468 | { | 484 | { |
| 469 | if (srclen == 0) | 485 | if (srclen == 0) |
| 470 | { | 486 | { |
| @@ -483,14 +499,17 @@ file_name_as_directory (char *dst, const char *src, ptrdiff_t srclen) | |||
| 483 | srclen++; | 499 | srclen++; |
| 484 | } | 500 | } |
| 485 | #ifdef DOS_NT | 501 | #ifdef DOS_NT |
| 486 | { | 502 | if (multibyte) |
| 487 | Lisp_Object tem_fn = make_specified_string (dst, -1, srclen, 1); | 503 | { |
| 504 | Lisp_Object tem_fn = make_specified_string (dst, -1, srclen, 1); | ||
| 488 | 505 | ||
| 489 | tem_fn = ENCODE_FILE (tem_fn); | 506 | tem_fn = ENCODE_FILE (tem_fn); |
| 490 | dostounix_filename (SSDATA (tem_fn)); | 507 | dostounix_filename (SSDATA (tem_fn)); |
| 491 | tem_fn = DECODE_FILE (tem_fn); | 508 | tem_fn = DECODE_FILE (tem_fn); |
| 492 | memcpy (dst, SSDATA (tem_fn), (srclen = SBYTES (tem_fn)) + 1); | 509 | memcpy (dst, SSDATA (tem_fn), (srclen = SBYTES (tem_fn)) + 1); |
| 493 | } | 510 | } |
| 511 | else | ||
| 512 | dostounix_filename (dst); | ||
| 494 | #endif | 513 | #endif |
| 495 | return srclen; | 514 | return srclen; |
| 496 | } | 515 | } |
| @@ -526,16 +545,18 @@ For a Unix-syntax file name, just appends a slash. */) | |||
| 526 | } | 545 | } |
| 527 | 546 | ||
| 528 | buf = alloca (SBYTES (file) + 10); | 547 | buf = alloca (SBYTES (file) + 10); |
| 529 | length = file_name_as_directory (buf, SSDATA (file), SBYTES (file)); | 548 | length = file_name_as_directory (buf, SSDATA (file), SBYTES (file), |
| 549 | STRING_MULTIBYTE (file)); | ||
| 530 | return make_specified_string (buf, -1, length, STRING_MULTIBYTE (file)); | 550 | return make_specified_string (buf, -1, length, STRING_MULTIBYTE (file)); |
| 531 | } | 551 | } |
| 532 | 552 | ||
| 533 | /* Convert from directory name SRC of length SRCLEN to | 553 | /* Convert from directory name SRC of length SRCLEN to file name in |
| 534 | file name in DST. On UNIX, just make sure there isn't | 554 | DST. MULTIBYTE non-zero means the file name in SRC is a multibyte |
| 535 | a terminating /. Return the length of DST in bytes. */ | 555 | string. On UNIX, just make sure there isn't a terminating /. |
| 556 | Return the length of DST in bytes. */ | ||
| 536 | 557 | ||
| 537 | static ptrdiff_t | 558 | static ptrdiff_t |
| 538 | directory_file_name (char *dst, char *src, ptrdiff_t srclen) | 559 | directory_file_name (char *dst, char *src, ptrdiff_t srclen, bool multibyte) |
| 539 | { | 560 | { |
| 540 | /* Process as Unix format: just remove any final slash. | 561 | /* Process as Unix format: just remove any final slash. |
| 541 | But leave "/" unchanged; do not change it to "". */ | 562 | But leave "/" unchanged; do not change it to "". */ |
| @@ -551,14 +572,17 @@ directory_file_name (char *dst, char *src, ptrdiff_t srclen) | |||
| 551 | srclen--; | 572 | srclen--; |
| 552 | } | 573 | } |
| 553 | #ifdef DOS_NT | 574 | #ifdef DOS_NT |
| 554 | { | 575 | if (multibyte) |
| 555 | Lisp_Object tem_fn = make_specified_string (dst, -1, srclen, 1); | 576 | { |
| 577 | Lisp_Object tem_fn = make_specified_string (dst, -1, srclen, 1); | ||
| 556 | 578 | ||
| 557 | tem_fn = ENCODE_FILE (tem_fn); | 579 | tem_fn = ENCODE_FILE (tem_fn); |
| 558 | dostounix_filename (SSDATA (tem_fn)); | 580 | dostounix_filename (SSDATA (tem_fn)); |
| 559 | tem_fn = DECODE_FILE (tem_fn); | 581 | tem_fn = DECODE_FILE (tem_fn); |
| 560 | memcpy (dst, SSDATA (tem_fn), (srclen = SBYTES (tem_fn)) + 1); | 582 | memcpy (dst, SSDATA (tem_fn), (srclen = SBYTES (tem_fn)) + 1); |
| 561 | } | 583 | } |
| 584 | else | ||
| 585 | dostounix_filename (dst); | ||
| 562 | #endif | 586 | #endif |
| 563 | return srclen; | 587 | return srclen; |
| 564 | } | 588 | } |
| @@ -594,7 +618,8 @@ In Unix-syntax, this function just removes the final slash. */) | |||
| 594 | } | 618 | } |
| 595 | 619 | ||
| 596 | buf = alloca (SBYTES (directory) + 20); | 620 | buf = alloca (SBYTES (directory) + 20); |
| 597 | length = directory_file_name (buf, SSDATA (directory), SBYTES (directory)); | 621 | length = directory_file_name (buf, SSDATA (directory), SBYTES (directory), |
| 622 | STRING_MULTIBYTE (directory)); | ||
| 598 | return make_specified_string (buf, -1, length, STRING_MULTIBYTE (directory)); | 623 | return make_specified_string (buf, -1, length, STRING_MULTIBYTE (directory)); |
| 599 | } | 624 | } |
| 600 | 625 | ||
| @@ -1044,7 +1069,7 @@ filesystem tree, not (expand-file-name ".." dirname). */) | |||
| 1044 | /* `egetenv' may return a unibyte string, which will bite us since | 1069 | /* `egetenv' may return a unibyte string, which will bite us since |
| 1045 | we expect the directory to be multibyte. */ | 1070 | we expect the directory to be multibyte. */ |
| 1046 | tem = build_string (newdir); | 1071 | tem = build_string (newdir); |
| 1047 | if (!STRING_MULTIBYTE (tem)) | 1072 | if (multibyte && !STRING_MULTIBYTE (tem)) |
| 1048 | { | 1073 | { |
| 1049 | hdir = DECODE_FILE (tem); | 1074 | hdir = DECODE_FILE (tem); |
| 1050 | newdir = SSDATA (hdir); | 1075 | newdir = SSDATA (hdir); |
| @@ -1066,7 +1091,18 @@ filesystem tree, not (expand-file-name ".." dirname). */) | |||
| 1066 | unblock_input (); | 1091 | unblock_input (); |
| 1067 | if (pw) | 1092 | if (pw) |
| 1068 | { | 1093 | { |
| 1094 | Lisp_Object tem; | ||
| 1095 | |||
| 1069 | newdir = pw->pw_dir; | 1096 | newdir = pw->pw_dir; |
| 1097 | /* `getpwnam' may return a unibyte string, which will | ||
| 1098 | bite us since we expect the directory to be | ||
| 1099 | multibyte. */ | ||
| 1100 | tem = build_string (newdir); | ||
| 1101 | if (multibyte && !STRING_MULTIBYTE (tem)) | ||
| 1102 | { | ||
| 1103 | hdir = DECODE_FILE (tem); | ||
| 1104 | newdir = SSDATA (hdir); | ||
| 1105 | } | ||
| 1070 | nm = p; | 1106 | nm = p; |
| 1071 | #ifdef DOS_NT | 1107 | #ifdef DOS_NT |
| 1072 | collapse_newdir = 0; | 1108 | collapse_newdir = 0; |
| @@ -1090,6 +1126,13 @@ filesystem tree, not (expand-file-name ".." dirname). */) | |||
| 1090 | adir = alloca (MAXPATHLEN + 1); | 1126 | adir = alloca (MAXPATHLEN + 1); |
| 1091 | if (!getdefdir (c_toupper (drive) - 'A' + 1, adir)) | 1127 | if (!getdefdir (c_toupper (drive) - 'A' + 1, adir)) |
| 1092 | adir = NULL; | 1128 | adir = NULL; |
| 1129 | else if (multibyte) | ||
| 1130 | { | ||
| 1131 | Lisp_Object tem = build_string (adir); | ||
| 1132 | |||
| 1133 | tem = DECODE_FILE (tem); | ||
| 1134 | memcpy (adir, SSDATA (tem), SBYTES (tem) + 1); | ||
| 1135 | } | ||
| 1093 | } | 1136 | } |
| 1094 | if (!adir) | 1137 | if (!adir) |
| 1095 | { | 1138 | { |
| @@ -1148,6 +1191,7 @@ filesystem tree, not (expand-file-name ".." dirname). */) | |||
| 1148 | indirectly by prepending newdir to nm if necessary, and using | 1191 | indirectly by prepending newdir to nm if necessary, and using |
| 1149 | cwd (or the wd of newdir's drive) as the new newdir. */ | 1192 | cwd (or the wd of newdir's drive) as the new newdir. */ |
| 1150 | char *adir; | 1193 | char *adir; |
| 1194 | |||
| 1151 | if (IS_DRIVE (newdir[0]) && IS_DEVICE_SEP (newdir[1])) | 1195 | if (IS_DRIVE (newdir[0]) && IS_DEVICE_SEP (newdir[1])) |
| 1152 | { | 1196 | { |
| 1153 | drive = (unsigned char) newdir[0]; | 1197 | drive = (unsigned char) newdir[0]; |
| @@ -1157,7 +1201,7 @@ filesystem tree, not (expand-file-name ".." dirname). */) | |||
| 1157 | { | 1201 | { |
| 1158 | ptrdiff_t newlen = strlen (newdir); | 1202 | ptrdiff_t newlen = strlen (newdir); |
| 1159 | char *tmp = alloca (newlen + strlen (nm) + 2); | 1203 | char *tmp = alloca (newlen + strlen (nm) + 2); |
| 1160 | file_name_as_directory (tmp, newdir, newlen); | 1204 | file_name_as_directory (tmp, newdir, newlen, multibyte); |
| 1161 | strcat (tmp, nm); | 1205 | strcat (tmp, nm); |
| 1162 | nm = tmp; | 1206 | nm = tmp; |
| 1163 | } | 1207 | } |
| @@ -1165,10 +1209,17 @@ filesystem tree, not (expand-file-name ".." dirname). */) | |||
| 1165 | if (drive) | 1209 | if (drive) |
| 1166 | { | 1210 | { |
| 1167 | if (!getdefdir (c_toupper (drive) - 'A' + 1, adir)) | 1211 | if (!getdefdir (c_toupper (drive) - 'A' + 1, adir)) |
| 1168 | newdir = "/"; | 1212 | strcpy (adir, "/"); |
| 1169 | } | 1213 | } |
| 1170 | else | 1214 | else |
| 1171 | getcwd (adir, MAXPATHLEN + 1); | 1215 | getcwd (adir, MAXPATHLEN + 1); |
| 1216 | if (multibyte) | ||
| 1217 | { | ||
| 1218 | Lisp_Object tem = build_string (adir); | ||
| 1219 | |||
| 1220 | tem = DECODE_FILE (tem); | ||
| 1221 | memcpy (adir, SSDATA (tem), SBYTES (tem) + 1); | ||
| 1222 | } | ||
| 1172 | newdir = adir; | 1223 | newdir = adir; |
| 1173 | } | 1224 | } |
| 1174 | 1225 | ||
| @@ -1255,7 +1306,7 @@ filesystem tree, not (expand-file-name ".." dirname). */) | |||
| 1255 | strcpy (target, newdir); | 1306 | strcpy (target, newdir); |
| 1256 | } | 1307 | } |
| 1257 | else | 1308 | else |
| 1258 | file_name_as_directory (target, newdir, length); | 1309 | file_name_as_directory (target, newdir, length, multibyte); |
| 1259 | } | 1310 | } |
| 1260 | 1311 | ||
| 1261 | strcat (target, nm); | 1312 | strcat (target, nm); |
| @@ -1341,9 +1392,14 @@ filesystem tree, not (expand-file-name ".." dirname). */) | |||
| 1341 | target[1] = ':'; | 1392 | target[1] = ':'; |
| 1342 | } | 1393 | } |
| 1343 | result = make_specified_string (target, -1, o - target, multibyte); | 1394 | result = make_specified_string (target, -1, o - target, multibyte); |
| 1344 | result = ENCODE_FILE (result); | 1395 | if (multibyte) |
| 1345 | dostounix_filename (SSDATA (result)); | 1396 | { |
| 1346 | result = DECODE_FILE (result); | 1397 | result = ENCODE_FILE (result); |
| 1398 | dostounix_filename (SSDATA (result)); | ||
| 1399 | result = DECODE_FILE (result); | ||
| 1400 | } | ||
| 1401 | else | ||
| 1402 | dostounix_filename (SSDATA (result)); | ||
| 1347 | #else /* !DOS_NT */ | 1403 | #else /* !DOS_NT */ |
| 1348 | result = make_specified_string (target, -1, o - target, multibyte); | 1404 | result = make_specified_string (target, -1, o - target, multibyte); |
| 1349 | #endif /* !DOS_NT */ | 1405 | #endif /* !DOS_NT */ |
| @@ -1625,18 +1681,24 @@ those `/' is discarded. */) | |||
| 1625 | memcpy (nm, SDATA (filename), SBYTES (filename) + 1); | 1681 | memcpy (nm, SDATA (filename), SBYTES (filename) + 1); |
| 1626 | 1682 | ||
| 1627 | #ifdef DOS_NT | 1683 | #ifdef DOS_NT |
| 1628 | { | 1684 | if (multibyte) |
| 1629 | Lisp_Object encoded_filename = ENCODE_FILE (filename); | 1685 | { |
| 1630 | Lisp_Object tem_fn; | 1686 | Lisp_Object encoded_filename = ENCODE_FILE (filename); |
| 1631 | 1687 | Lisp_Object tem_fn; | |
| 1632 | dostounix_filename (SDATA (encoded_filename)); | 1688 | |
| 1633 | tem_fn = DECODE_FILE (encoded_filename); | 1689 | dostounix_filename (SDATA (encoded_filename)); |
| 1634 | nm = alloca (SBYTES (tem_fn) + 1); | 1690 | tem_fn = DECODE_FILE (encoded_filename); |
| 1635 | memcpy (nm, SDATA (tem_fn), SBYTES (tem_fn) + 1); | 1691 | nm = alloca (SBYTES (tem_fn) + 1); |
| 1636 | substituted = (memcmp (nm, SDATA (filename), SBYTES (filename)) != 0); | 1692 | memcpy (nm, SDATA (tem_fn), SBYTES (tem_fn) + 1); |
| 1637 | if (substituted) | 1693 | substituted = (memcmp (nm, SDATA (filename), SBYTES (filename)) != 0); |
| 1638 | filename = tem_fn; | 1694 | if (substituted) |
| 1639 | } | 1695 | filename = tem_fn; |
| 1696 | } | ||
| 1697 | else | ||
| 1698 | { | ||
| 1699 | dostounix_filename (nm); | ||
| 1700 | substituted = (memcmp (nm, SDATA (filename), SBYTES (filename)) != 0); | ||
| 1701 | } | ||
| 1640 | #endif | 1702 | #endif |
| 1641 | endp = nm + SBYTES (filename); | 1703 | endp = nm + SBYTES (filename); |
| 1642 | 1704 | ||
diff --git a/test/ChangeLog b/test/ChangeLog index e7e7c755d02..7d9b10ce787 100644 --- a/test/ChangeLog +++ b/test/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2012-12-27 Dmitry Gutov <dgutov@yandex.ru> | ||
| 2 | |||
| 3 | * automated/ruby-mode-tests.el | ||
| 4 | (ruby-indent-after-block-in-continued-expression): New test. | ||
| 5 | |||
| 1 | 2012-12-14 Dmitry Gutov <dgutov@yandex.ru> | 6 | 2012-12-14 Dmitry Gutov <dgutov@yandex.ru> |
| 2 | 7 | ||
| 3 | * automated/ruby-mode-tests.el | 8 | * automated/ruby-mode-tests.el |
diff --git a/test/automated/ruby-mode-tests.el b/test/automated/ruby-mode-tests.el index 1f0c0ab6f9e..51c28e667fd 100644 --- a/test/automated/ruby-mode-tests.el +++ b/test/automated/ruby-mode-tests.el | |||
| @@ -224,6 +224,19 @@ VALUES-PLIST is a list with alternating index and value elements." | |||
| 224 | | end | 224 | | end |
| 225 | |")) | 225 | |")) |
| 226 | 226 | ||
| 227 | (ert-deftest ruby-indent-after-block-in-continued-expression () | ||
| 228 | (ruby-should-indent-buffer | ||
| 229 | "var = | ||
| 230 | | begin | ||
| 231 | | val | ||
| 232 | | end | ||
| 233 | |statement" | ||
| 234 | "var = | ||
| 235 | |begin | ||
| 236 | |val | ||
| 237 | |end | ||
| 238 | |statement")) | ||
| 239 | |||
| 227 | (ert-deftest ruby-move-to-block-stops-at-indentation () | 240 | (ert-deftest ruby-move-to-block-stops-at-indentation () |
| 228 | (ruby-with-temp-buffer "def f\nend" | 241 | (ruby-with-temp-buffer "def f\nend" |
| 229 | (beginning-of-line) | 242 | (beginning-of-line) |