diff options
| author | Kenichi Handa | 2014-01-29 22:39:00 +0900 |
|---|---|---|
| committer | Kenichi Handa | 2014-01-29 22:39:00 +0900 |
| commit | 908df335d0ccb2779f23c695f355a9939fe07bf2 (patch) | |
| tree | 1cf4f8d633364c4833ed37d286104d8e4f7c8b0f | |
| parent | 52840a9cc870d3e8946b6edebe2b0a0a23d23cec (diff) | |
| parent | 5442c6cebbf80898f83d211d5b0d34cbfb289490 (diff) | |
| download | emacs-908df335d0ccb2779f23c695f355a9939fe07bf2.tar.gz emacs-908df335d0ccb2779f23c695f355a9939fe07bf2.zip | |
merge trunk
52 files changed, 728 insertions, 418 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index ce43ff1a474..8f29d7c01f6 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog | |||
| @@ -1,3 +1,21 @@ | |||
| 1 | 2014-01-29 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * killing.texi (Deletion): Mention cycle-spacing. | ||
| 4 | |||
| 5 | 2014-01-28 Glenn Morris <rgm@gnu.org> | ||
| 6 | |||
| 7 | * text.texi (Fill Commands): Mention fill-single-char-nobreak-p. | ||
| 8 | |||
| 9 | * indent.texi (Tab Stops): Updates for new tab-stop behavior. | ||
| 10 | |||
| 11 | 2014-01-27 Glenn Morris <rgm@gnu.org> | ||
| 12 | |||
| 13 | * dired.texi (Misc Dired Features): Copyedits for hide-details. | ||
| 14 | |||
| 15 | * buffers.texi (List Buffers): Tiny edit. | ||
| 16 | |||
| 17 | * calendar.texi (Time Intervals): Update for files in ~/.emacs.d/. | ||
| 18 | |||
| 1 | 2014-01-26 Glenn Morris <rgm@gnu.org> | 19 | 2014-01-26 Glenn Morris <rgm@gnu.org> |
| 2 | 20 | ||
| 3 | * ack.texi (Acknowledgments): | 21 | * ack.texi (Acknowledgments): |
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index 13212164632..c96b657b481 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi | |||
| @@ -174,7 +174,7 @@ List the existing buffers (@code{list-buffers}). | |||
| 174 | @kindex C-x C-b | 174 | @kindex C-x C-b |
| 175 | @findex list-buffers | 175 | @findex list-buffers |
| 176 | To display a list of existing buffers, type @kbd{C-x C-b}. Each | 176 | To display a list of existing buffers, type @kbd{C-x C-b}. Each |
| 177 | line in the list shows one buffer's name, major mode and visited file. | 177 | line in the list shows one buffer's name, size, major mode and visited file. |
| 178 | The buffers are listed in the order that they were current; the | 178 | The buffers are listed in the order that they were current; the |
| 179 | buffers that were current most recently come first. | 179 | buffers that were current most recently come first. |
| 180 | 180 | ||
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi index b403dfdf78b..ef6d44a968f 100644 --- a/doc/emacs/calendar.texi +++ b/doc/emacs/calendar.texi | |||
| @@ -1616,11 +1616,11 @@ you. You can, however, customize the value of the variable | |||
| 1616 | then, only an explicit @kbd{M-x timeclock-out} or @kbd{M-x | 1616 | then, only an explicit @kbd{M-x timeclock-out} or @kbd{M-x |
| 1617 | timeclock-change} will tell Emacs that the current interval is over. | 1617 | timeclock-change} will tell Emacs that the current interval is over. |
| 1618 | 1618 | ||
| 1619 | @cindex @file{.timelog} file | 1619 | @cindex @file{timelog} file |
| 1620 | @vindex timeclock-file | 1620 | @vindex timeclock-file |
| 1621 | @findex timeclock-reread-log | 1621 | @findex timeclock-reread-log |
| 1622 | The timeclock functions work by accumulating the data in a file | 1622 | The timeclock functions work by accumulating the data in a file |
| 1623 | called @file{.timelog} in your home directory. You can specify a | 1623 | called @file{~/.emacs.d/timelog}. You can specify a |
| 1624 | different name for this file by customizing the variable | 1624 | different name for this file by customizing the variable |
| 1625 | @code{timeclock-file}. If you edit the timeclock file manually, or if | 1625 | @code{timeclock-file}. If you edit the timeclock file manually, or if |
| 1626 | you change the value of any of timeclock's customizable variables, you | 1626 | you change the value of any of timeclock's customizable variables, you |
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index b7de1bdf3aa..70553c13747 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi | |||
| @@ -1382,7 +1382,7 @@ file, the search wraps around to the first marked file. The command | |||
| 1382 | a regular expression search. @xref{Repeat Isearch}, for information | 1382 | a regular expression search. @xref{Repeat Isearch}, for information |
| 1383 | about search repetition. | 1383 | about search repetition. |
| 1384 | 1384 | ||
| 1385 | @cindex Adding to the kill ring in Dired. | 1385 | @cindex adding to the kill ring in Dired |
| 1386 | @kindex w @r{(Dired)} | 1386 | @kindex w @r{(Dired)} |
| 1387 | @findex dired-copy-filename-as-kill | 1387 | @findex dired-copy-filename-as-kill |
| 1388 | The command @kbd{w} (@code{dired-copy-filename-as-kill}) puts the | 1388 | The command @kbd{w} (@code{dired-copy-filename-as-kill}) puts the |
| @@ -1403,6 +1403,19 @@ names into arguments for other Emacs commands. It also displays what | |||
| 1403 | it added to the kill ring, so you can use it to display the list of | 1403 | it added to the kill ring, so you can use it to display the list of |
| 1404 | currently marked files in the echo area. | 1404 | currently marked files in the echo area. |
| 1405 | 1405 | ||
| 1406 | @kindex ( @r{(Dired)} | ||
| 1407 | @findex dired-hide-details-mode | ||
| 1408 | @vindex dired-hide-details-hide-symlink-targets | ||
| 1409 | @vindex dired-hide-details-hide-information-lines | ||
| 1410 | @cindex hiding details in Dired | ||
| 1411 | The command @kbd{(} (@code{dired-hide-details-mode}) toggles whether | ||
| 1412 | details, such as ownership or file permissions, are visible in the | ||
| 1413 | current Dired buffer. By default, it also hides the targets of | ||
| 1414 | symbolic links, and all lines other than the header line and | ||
| 1415 | file/directory listings. To change this, customize the options | ||
| 1416 | @code{dired-hide-details-hide-symlink-targets} and | ||
| 1417 | @code{dired-hide-details-hide-information-lines}, respectively. | ||
| 1418 | |||
| 1406 | @cindex Dired and version control | 1419 | @cindex Dired and version control |
| 1407 | If the directory you are visiting is under version control | 1420 | If the directory you are visiting is under version control |
| 1408 | (@pxref{Version Control}), then the normal VC diff and log commands | 1421 | (@pxref{Version Control}), then the normal VC diff and log commands |
| @@ -1440,18 +1453,3 @@ it onto a Dired buffer; this either moves, copies, or creates a link | |||
| 1440 | to the file in that directory. Precisely which action is taken is | 1453 | to the file in that directory. Precisely which action is taken is |
| 1441 | determined by the originating program. Dragging files out of a Dired | 1454 | determined by the originating program. Dragging files out of a Dired |
| 1442 | buffer is currently not supported. | 1455 | buffer is currently not supported. |
| 1443 | |||
| 1444 | @kindex ( @r{(Dired)} | ||
| 1445 | @c ) | ||
| 1446 | @findex dired-hide-details-mode | ||
| 1447 | @vindex dired-hide-details-hide-symlink-targets | ||
| 1448 | @vindex dired-hide-details-hide-information-lines | ||
| 1449 | @cindex Hide details in Dired. | ||
| 1450 | The command @kbd{(} (@code{dired-hide-details-mode}) toggles whether | ||
| 1451 | details, such as ownership or file permissions, are hidden. If the | ||
| 1452 | variable @code{dired-hide-details-hide-symlink-targets} is | ||
| 1453 | non-@code{nil} then targets of symbolic links are hidden as well. A | ||
| 1454 | non-@code{nil} value for the variable | ||
| 1455 | @code{dired-hide-details-hide-information-lines} means that all lines | ||
| 1456 | other than the header and lines containing files and directories are | ||
| 1457 | hidden. | ||
diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi index e0c269ad575..9aec6202de6 100644 --- a/doc/emacs/indent.texi +++ b/doc/emacs/indent.texi | |||
| @@ -157,10 +157,12 @@ C-u -999 C-x @key{TAB} | |||
| 157 | Emacs defines certain column numbers to be @dfn{tab stops}. These | 157 | Emacs defines certain column numbers to be @dfn{tab stops}. These |
| 158 | are used as stopping points by @key{TAB} when inserting whitespace in | 158 | are used as stopping points by @key{TAB} when inserting whitespace in |
| 159 | Text mode and related modes (@pxref{Indentation}), and by commands | 159 | Text mode and related modes (@pxref{Indentation}), and by commands |
| 160 | like @kbd{M-i} (@pxref{Indentation Commands}). By default, tab stops | 160 | like @kbd{M-i} (@pxref{Indentation Commands}). The variable |
| 161 | are located every 8 columns. These positions are stored in the | 161 | @code{tab-stop-list} controls these positions. The default value |
| 162 | variable @code{tab-stop-list}, whose value is a list of column numbers | 162 | is @code{nil}, which means a tab stop every 8 columns. The value |
| 163 | in increasing order. | 163 | can also be a list of column numbers (in increasing order) at which to |
| 164 | place tab stops. Emacs extends the list forever by repeating the | ||
| 165 | difference between the last and next-to-last elements. | ||
| 164 | 166 | ||
| 165 | @findex edit-tab-stops | 167 | @findex edit-tab-stops |
| 166 | @kindex C-c C-c @r{(Edit Tab Stops)} | 168 | @kindex C-c C-c @r{(Edit Tab Stops)} |
| @@ -178,12 +180,15 @@ To install changes, type C-c C-c | |||
| 178 | 180 | ||
| 179 | @noindent | 181 | @noindent |
| 180 | The first line contains a colon at each tab stop. The numbers on the | 182 | The first line contains a colon at each tab stop. The numbers on the |
| 181 | next two lines are present just to indicate where the colons are. It | 183 | next two lines are present just to indicate where the colons are. |
| 182 | is implicitly extended to infinity by repeating the last step. | 184 | If the value of @code{tab-stop-list} is @code{nil}, as it is by default, |
| 185 | no colons are displayed initially. | ||
| 183 | 186 | ||
| 184 | You can edit this buffer to specify different tab stops by placing | 187 | You can edit this buffer to specify different tab stops by placing |
| 185 | colons on the desired columns. The buffer uses Overwrite mode | 188 | colons on the desired columns. The buffer uses Overwrite mode |
| 186 | (@pxref{Minor Modes}). When you are done, type @kbd{C-c C-c} to make | 189 | (@pxref{Minor Modes}). Remember that Emacs will extend the list of |
| 190 | tab stops forever by repeating the difference between the last two | ||
| 191 | explicit stops that you place. When you are done, type @kbd{C-c C-c} to make | ||
| 187 | the new tab stops take effect. Normally, the new tab stop settings | 192 | the new tab stops take effect. Normally, the new tab stop settings |
| 188 | apply to all buffers. However, if you have made the | 193 | apply to all buffers. However, if you have made the |
| 189 | @code{tab-stop-list} variable local to the buffer where you called | 194 | @code{tab-stop-list} variable local to the buffer where you called |
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 1da226971eb..77dfad04bef 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi | |||
| @@ -109,12 +109,11 @@ number of characters. If the numeric argument is omitted or one, they | |||
| 109 | delete all the text in the region if it is active (@pxref{Using | 109 | delete all the text in the region if it is active (@pxref{Using |
| 110 | Region}). | 110 | Region}). |
| 111 | 111 | ||
| 112 | @c FIXME: `cycle-spacing' should be documented, too. (Maybe not in | ||
| 113 | @c this node, tho.) --xfq | ||
| 114 | @kindex M-\ | 112 | @kindex M-\ |
| 115 | @findex delete-horizontal-space | 113 | @findex delete-horizontal-space |
| 116 | @kindex M-SPC | 114 | @kindex M-SPC |
| 117 | @findex just-one-space | 115 | @findex just-one-space |
| 116 | @findex cycle-spacing | ||
| 118 | The other delete commands are those that delete only whitespace | 117 | The other delete commands are those that delete only whitespace |
| 119 | characters: spaces, tabs and newlines. @kbd{M-\} | 118 | characters: spaces, tabs and newlines. @kbd{M-\} |
| 120 | (@code{delete-horizontal-space}) deletes all the spaces and tab | 119 | (@code{delete-horizontal-space}) deletes all the spaces and tab |
| @@ -125,7 +124,11 @@ point, regardless of the number of spaces that existed previously | |||
| 125 | (even if there were none before). With a numeric argument @var{n}, it | 124 | (even if there were none before). With a numeric argument @var{n}, it |
| 126 | leaves @var{n} spaces before point if @var{n} is positive; if @var{n} | 125 | leaves @var{n} spaces before point if @var{n} is positive; if @var{n} |
| 127 | is negative, it deletes newlines in addition to spaces and tabs, | 126 | is negative, it deletes newlines in addition to spaces and tabs, |
| 128 | leaving @var{-n} spaces before point. | 127 | leaving @var{-n} spaces before point. The command @code{cycle-spacing} |
| 128 | acts like a more flexible version of @code{just-one-space}. It | ||
| 129 | does different things if you call it repeatedly in succession. | ||
| 130 | The first call acts like @code{just-one-space}, the next removes | ||
| 131 | all whitespace, and a third call restores the original whitespace. | ||
| 129 | 132 | ||
| 130 | @kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines | 133 | @kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines |
| 131 | after the current line. If the current line is blank, it deletes all | 134 | after the current line. If the current line is blank, it deletes all |
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index 4d19ddbf1a6..1d30740467e 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi | |||
| @@ -562,10 +562,11 @@ customize the abnormal hook variable @code{fill-nobreak-predicate} | |||
| 562 | (@pxref{Hooks}). Each function in this hook is called with no | 562 | (@pxref{Hooks}). Each function in this hook is called with no |
| 563 | arguments, with point positioned where Emacs is considering breaking a | 563 | arguments, with point positioned where Emacs is considering breaking a |
| 564 | line. If a function returns a non-@code{nil} value, Emacs will not | 564 | line. If a function returns a non-@code{nil} value, Emacs will not |
| 565 | break the line there. Two functions you can use are | 565 | break the line there. Functions you can use there include: |
| 566 | @code{fill-single-word-nobreak-p} (don't break after the first word of | 566 | @code{fill-single-word-nobreak-p} (don't break after the first word of |
| 567 | a sentence or before the last) and @code{fill-french-nobreak-p} (don't | 567 | a sentence or before the last); @code{fill-single-char-nobreak-p} |
| 568 | break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}). | 568 | (don't break after a one-letter word); and @code{fill-french-nobreak-p} |
| 569 | (don't break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}). | ||
| 569 | 570 | ||
| 570 | @node Fill Prefix | 571 | @node Fill Prefix |
| 571 | @subsection The Fill Prefix | 572 | @subsection The Fill Prefix |
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 6f27e71b7b7..78d7531f869 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2014-01-28 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * text.texi (Indent Tabs): Update related to tab-stops. | ||
| 4 | |||
| 1 | 2014-01-24 Glenn Morris <rgm@gnu.org> | 5 | 2014-01-24 Glenn Morris <rgm@gnu.org> |
| 2 | 6 | ||
| 3 | * control.texi (Handling Errors): Update with-demoted-errors. | 7 | * control.texi (Handling Errors): Update with-demoted-errors. |
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 60cda8068bb..786628bb32a 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi | |||
| @@ -771,6 +771,9 @@ space, or @var{n} spaces if @var{n} is specified. It returns | |||
| 771 | @code{nil}. | 771 | @code{nil}. |
| 772 | @end deffn | 772 | @end deffn |
| 773 | 773 | ||
| 774 | @c There is also cycle-spacing, but I cannot see it being useful in | ||
| 775 | @c Lisp programs, so it is not mentioned here. | ||
| 776 | |||
| 774 | @deffn Command delete-blank-lines | 777 | @deffn Command delete-blank-lines |
| 775 | This function deletes blank lines surrounding point. If point is on a | 778 | This function deletes blank lines surrounding point. If point is on a |
| 776 | blank line with one or more blank lines before or after it, then all but | 779 | blank line with one or more blank lines before or after it, then all but |
| @@ -2460,19 +2463,19 @@ stop feature only in a few major modes, such as Text mode. | |||
| 2460 | 2463 | ||
| 2461 | @deffn Command tab-to-tab-stop | 2464 | @deffn Command tab-to-tab-stop |
| 2462 | This command inserts spaces or tabs before point, up to the next tab | 2465 | This command inserts spaces or tabs before point, up to the next tab |
| 2463 | stop column defined by @code{tab-stop-list}. It searches the list for | 2466 | stop column defined by @code{tab-stop-list}. |
| 2464 | an element greater than the current column number, and uses that element | ||
| 2465 | as the column to indent to. It does nothing if no such element is | ||
| 2466 | found. | ||
| 2467 | @end deffn | 2467 | @end deffn |
| 2468 | 2468 | ||
| 2469 | @defopt tab-stop-list | 2469 | @defopt tab-stop-list |
| 2470 | This variable is the list of tab stop columns used by | 2470 | This variable defines the tab stop columns used by @code{tab-to-tab-stop}. |
| 2471 | @code{tab-to-tab-stops}. The elements should be integers in increasing | 2471 | It should be either @code{nil}, or a list of increasing integers, |
| 2472 | order. The tab stop columns need not be evenly spaced. | 2472 | which need not be evenly spaced. The list is implicitly |
| 2473 | 2473 | extended to infinity through repetition of the interval between the | |
| 2474 | Use @kbd{M-x edit-tab-stops} to edit the location of tab stops | 2474 | last and penultimate elements (or @code{tab-width} if the list has |
| 2475 | interactively. | 2475 | fewer than two elements). A value of @code{nil} means a tab stop |
| 2476 | every @code{tab-width} columns. | ||
| 2477 | |||
| 2478 | Use @kbd{M-x edit-tab-stops} to edit the location of tab stops interactively. | ||
| 2476 | @end defopt | 2479 | @end defopt |
| 2477 | 2480 | ||
| 2478 | @node Motion by Indent | 2481 | @node Motion by Indent |
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 589f0060840..33f6057e94f 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,12 @@ | |||
| 1 | 2014-01-27 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * idlwave.texi (Lesson III---User Catalog, Online Help) | ||
| 4 | (Starting the Shell, Catalogs, User Catalog): | ||
| 5 | * remember.texi (Quick Start): | ||
| 6 | * viper.texi: | ||
| 7 | * vip.texi (Customization, Customizing Constants) | ||
| 8 | (Customizing Key Bindings): Update for files being in ~/.emacs.d/. | ||
| 9 | |||
| 1 | 2014-01-25 Xue Fuqiao <xfq.free@gmail.com> | 10 | 2014-01-25 Xue Fuqiao <xfq.free@gmail.com> |
| 2 | 11 | ||
| 3 | * cc-mode.texi (Minor Modes): Minor fix. | 12 | * cc-mode.texi (Minor Modes): Minor fix. |
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi index c4719dcd039..b56b311e273 100644 --- a/doc/misc/idlwave.texi +++ b/doc/misc/idlwave.texi | |||
| @@ -689,8 +689,8 @@ you want; directories with existing library catalogs will not be | |||
| 689 | selected by default) and click on the @samp{Scan&Save} button. Then | 689 | selected by default) and click on the @samp{Scan&Save} button. Then |
| 690 | go for a cup of coffee while IDLWAVE collects information for each and | 690 | go for a cup of coffee while IDLWAVE collects information for each and |
| 691 | every IDL routine on your search path. All this information is | 691 | every IDL routine on your search path. All this information is |
| 692 | written to the file @file{.idlwave/idlusercat.el} in your home | 692 | written to the file @file{~/.emacs.d/idlwave/idlusercat.el} |
| 693 | directory and will from now on automatically load whenever you use | 693 | and will from now on automatically load whenever you use |
| 694 | IDLWAVE@. You may find it necessary to rebuild the catalog on occasion | 694 | IDLWAVE@. You may find it necessary to rebuild the catalog on occasion |
| 695 | as your local libraries change, or build a library catalog for those | 695 | as your local libraries change, or build a library catalog for those |
| 696 | directories instead. Invoke routine info (@kbd{C-c ?}) or completion | 696 | directories instead. Invoke routine info (@kbd{C-c ?}) or completion |
| @@ -1262,7 +1262,7 @@ directly with IDL, along with an XML-based catalog of routine | |||
| 1262 | information. By default, IDLWAVE automatically attempts to convert this | 1262 | information. By default, IDLWAVE automatically attempts to convert this |
| 1263 | XML catalog into a format Emacs can more easily understand, and caches | 1263 | XML catalog into a format Emacs can more easily understand, and caches |
| 1264 | this information in your @code{idlwave_config_directory} | 1264 | this information in your @code{idlwave_config_directory} |
| 1265 | (@file{~/.idlwave/}, by default). It also re-scans the XML catalog if | 1265 | (@file{~/.emacs.d/idlwave/}, by default). It also re-scans the XML catalog if |
| 1266 | it is newer than the current cached version. You can force rescan with | 1266 | it is newer than the current cached version. You can force rescan with |
| 1267 | the menu entry @code{IDLWAVE->Routine Info->Rescan XML Help Catalog}. | 1267 | the menu entry @code{IDLWAVE->Routine Info->Rescan XML Help Catalog}. |
| 1268 | 1268 | ||
| @@ -2466,7 +2466,7 @@ Initial commands, separated by newlines, to send to IDL. | |||
| 2466 | Non-@code{nil} means preserve command history between sessions. | 2466 | Non-@code{nil} means preserve command history between sessions. |
| 2467 | @end defopt | 2467 | @end defopt |
| 2468 | 2468 | ||
| 2469 | @defopt idlwave-shell-command-history-file (@file{~/.idlwave/.idlwhist}) | 2469 | @defopt idlwave-shell-command-history-file (@file{~/.emacs.d/idlwave/.idlwhist}) |
| 2470 | The file in which the command history of the idlwave shell is saved. | 2470 | The file in which the command history of the idlwave shell is saved. |
| 2471 | Unless it's an absolute path, it goes in | 2471 | Unless it's an absolute path, it goes in |
| 2472 | @code{idlwave-config-directory}. | 2472 | @code{idlwave-config-directory}. |
| @@ -3518,7 +3518,7 @@ information (e.g., Windows), a library path must be specified in | |||
| 3518 | to setup directories for user catalog scan (@pxref{User Catalog} for | 3518 | to setup directories for user catalog scan (@pxref{User Catalog} for |
| 3519 | more on this variable). Note that, before the shell is running, IDLWAVE | 3519 | more on this variable). Note that, before the shell is running, IDLWAVE |
| 3520 | can only know about the IDL search path by consulting the file pointed | 3520 | can only know about the IDL search path by consulting the file pointed |
| 3521 | to by @code{idlwave-path-file} (@file{~/.idlwave/idlpath.el}, by | 3521 | to by @code{idlwave-path-file} (@file{~/.emacs.d/idlwave/idlpath.el}, by |
| 3522 | default). If @code{idlwave-auto-write-path} is enabled (which is the | 3522 | default). If @code{idlwave-auto-write-path} is enabled (which is the |
| 3523 | default), the paths are written out whenever the IDLWAVE shell is | 3523 | default), the paths are written out whenever the IDLWAVE shell is |
| 3524 | started. | 3524 | started. |
| @@ -3540,7 +3540,7 @@ locating HTML help and the IDL Assistant for IDL v6.2 and later. Under | |||
| 3540 | Unix/MacOSX, will be obtained from the Shell and recorded, if run. | 3540 | Unix/MacOSX, will be obtained from the Shell and recorded, if run. |
| 3541 | @end defopt | 3541 | @end defopt |
| 3542 | 3542 | ||
| 3543 | @defopt idlwave-config-directory (@file{~/.idlwave}) | 3543 | @defopt idlwave-config-directory (@file{~/.emacs.d/idlwave}) |
| 3544 | Default path where IDLWAVE saves configuration information, a user | 3544 | Default path where IDLWAVE saves configuration information, a user |
| 3545 | catalog (if any), and a cached scan of the XML catalog (IDL v6.2 and | 3545 | catalog (if any), and a cached scan of the XML catalog (IDL v6.2 and |
| 3546 | later). | 3546 | later). |
| @@ -3629,7 +3629,7 @@ performance is a problem and/or the catalogs are not needed. | |||
| 3629 | 3629 | ||
| 3630 | The user catalog is the old routine catalog system. It is produced | 3630 | The user catalog is the old routine catalog system. It is produced |
| 3631 | within Emacs, and stored in a single file in the user's home directory | 3631 | within Emacs, and stored in a single file in the user's home directory |
| 3632 | (@file{.idlwave/idlusercat.el} by default). Although library catalogs | 3632 | (@file{.emacs.d/idlwave/idlusercat.el} by default). Although library catalogs |
| 3633 | are more flexible, there may be reasons to prefer a user catalog | 3633 | are more flexible, there may be reasons to prefer a user catalog |
| 3634 | instead, including: | 3634 | instead, including: |
| 3635 | 3635 | ||
diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi index a32c71f7d66..d9c11cea424 100644 --- a/doc/misc/remember.texi +++ b/doc/misc/remember.texi | |||
| @@ -203,7 +203,7 @@ Type @kbd{C-c C-c} (@code{remember-finalize}) to save the note and close | |||
| 203 | the @samp{*Remember*} buffer. | 203 | the @samp{*Remember*} buffer. |
| 204 | @end itemize | 204 | @end itemize |
| 205 | 205 | ||
| 206 | By default, @code{remember-finalize} saves the note in @file{~/.notes}. | 206 | By default, @code{remember-finalize} saves the note in @file{~/emacs.d/notes}. |
| 207 | You can edit it now to see the remembered and timestamped note. You | 207 | You can edit it now to see the remembered and timestamped note. You |
| 208 | can edit this file however you want. New entries will always be added | 208 | can edit this file however you want. New entries will always be added |
| 209 | to the end. | 209 | to the end. |
| @@ -213,7 +213,7 @@ remember} displays a @samp{*Remember*} buffer with the region as the | |||
| 213 | initial contents. | 213 | initial contents. |
| 214 | 214 | ||
| 215 | As a simple beginning, you can start by using the Text File backend, | 215 | As a simple beginning, you can start by using the Text File backend, |
| 216 | keeping your @file{~/.notes} file in outline-mode format, with a final | 216 | keeping your @file{~/.emacs.d/notes} file in outline-mode format, with a final |
| 217 | entry called @samp{* Raw data}. Remembered data will be added to the | 217 | entry called @samp{* Raw data}. Remembered data will be added to the |
| 218 | end of the file. Every so often, you can move the data that gets | 218 | end of the file. Every so often, you can move the data that gets |
| 219 | appended there into other files, or reorganize your document. | 219 | appended there into other files, or reorganize your document. |
diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi index 40701054d5a..367ed2adb4c 100644 --- a/doc/misc/vip.texi +++ b/doc/misc/vip.texi | |||
| @@ -1863,7 +1863,7 @@ The following Ex commands are available in Vi, but not implemented in VIP. | |||
| 1863 | @node Customization | 1863 | @node Customization |
| 1864 | @chapter Customization | 1864 | @chapter Customization |
| 1865 | 1865 | ||
| 1866 | If you have a file called @file{.vip} in your home directory, then it | 1866 | If you have a file called @file{~/.emacs.d/vip} (or @file{~/.vip}), then it |
| 1867 | will also be loaded when VIP is loaded. This file is thus useful for | 1867 | will also be loaded when VIP is loaded. This file is thus useful for |
| 1868 | customizing VIP. | 1868 | customizing VIP. |
| 1869 | 1869 | ||
| @@ -1903,7 +1903,7 @@ if @code{nil} then it sis bound to @code{delete-backward-char}. | |||
| 1903 | @end table | 1903 | @end table |
| 1904 | @noindent | 1904 | @noindent |
| 1905 | You can reset these constants in VIP by the Ex command @kbd{set}. Or you | 1905 | You can reset these constants in VIP by the Ex command @kbd{set}. Or you |
| 1906 | can include a line like this in your @file{.vip} file: | 1906 | can include a line like this in your @file{~/.emacs.d/vip} file: |
| 1907 | @example | 1907 | @example |
| 1908 | (setq vip-case-fold-search t) | 1908 | (setq vip-case-fold-search t) |
| 1909 | @end example | 1909 | @end example |
| @@ -1916,8 +1916,8 @@ can include a line like this in your @file{.vip} file: | |||
| 1916 | VIP uses @code{vip-command-mode-map} as the @dfn{local keymap} for vi mode. | 1916 | VIP uses @code{vip-command-mode-map} as the @dfn{local keymap} for vi mode. |
| 1917 | For example, in vi mode, @key{SPC} is bound to the function | 1917 | For example, in vi mode, @key{SPC} is bound to the function |
| 1918 | @code{vip-scroll}. But, if you wish to make @key{SPC} and some other keys | 1918 | @code{vip-scroll}. But, if you wish to make @key{SPC} and some other keys |
| 1919 | behave like Vi, you can include the following lines in your @file{.vip} | 1919 | behave like Vi, you can include the following lines in your |
| 1920 | file. | 1920 | @file{~/.emacs.d/vip} file. |
| 1921 | 1921 | ||
| 1922 | @example | 1922 | @example |
| 1923 | (define-key vip-command-mode-map "\C-g" 'vip-info-on-file) | 1923 | (define-key vip-command-mode-map "\C-g" 'vip-info-on-file) |
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi index 0048d1363f3..ee3a4d057ee 100644 --- a/doc/misc/viper.texi +++ b/doc/misc/viper.texi | |||
| @@ -170,8 +170,8 @@ world of Vi! These users are well familiar with Emacs bindings and prefer them | |||
| 170 | in some cases, especially in the Vi Insert state. John Hawkins | 170 | in some cases, especially in the Vi Insert state. John Hawkins |
| 171 | <jshawkin@@eecs.umich.edu> has provided a set of customizations, which | 171 | <jshawkin@@eecs.umich.edu> has provided a set of customizations, which |
| 172 | enables additional Emacs bindings under Viper. These customizations can be | 172 | enables additional Emacs bindings under Viper. These customizations can be |
| 173 | included in your @file{~/.viper} file and are found at the following URL: | 173 | included in your @file{~/.emacs.d/viper} file and are found at the |
| 174 | @file{http://traeki.freeshell.org/files/viper-sample}. | 174 | following URL: @file{http://traeki.freeshell.org/files/viper-sample}. |
| 175 | 175 | ||
| 176 | @menu | 176 | @menu |
| 177 | * Emacs Preliminaries:: Basic concepts in Emacs. | 177 | * Emacs Preliminaries:: Basic concepts in Emacs. |
| @@ -329,14 +329,14 @@ the place where all general Emacs customization takes place. Beginning with | |||
| 329 | version 20.0, Emacsen have an interactive interface, which simplifies the | 329 | version 20.0, Emacsen have an interactive interface, which simplifies the |
| 330 | job of customization significantly. | 330 | job of customization significantly. |
| 331 | 331 | ||
| 332 | Viper also uses the file @file{~/.viper} for Viper-specific customization. | 332 | Viper also uses the file @file{~/.emacs.d/viper} for Viper-specific customization. |
| 333 | The location of Viper customization file can be changed by setting the | 333 | The location of Viper customization file can be changed by setting the |
| 334 | variable @code{viper-custom-file-name} in @file{.emacs} @emph{prior} to loading | 334 | variable @code{viper-custom-file-name} in @file{.emacs} @emph{prior} to loading |
| 335 | Viper. | 335 | Viper. |
| 336 | 336 | ||
| 337 | The latest versions of Emacs have an interactive customization facility, | 337 | The latest versions of Emacs have an interactive customization facility, |
| 338 | which allows you to (mostly) bypass the use of the @file{.emacs} and | 338 | which allows you to (mostly) bypass the use of the @file{.emacs} and |
| 339 | @file{.viper} files. You can reach this customization | 339 | @code{viper-custom-file-name} files. You can reach this customization |
| 340 | facility from within Viper's VI state by executing the Ex command | 340 | facility from within Viper's VI state by executing the Ex command |
| 341 | @kbd{:customize}. | 341 | @kbd{:customize}. |
| 342 | 342 | ||
| @@ -611,8 +611,8 @@ is slightly different from other programs. It is designed to minimize the | |||
| 611 | need for deleting file names that Emacs provides in its prompts. (This is | 611 | need for deleting file names that Emacs provides in its prompts. (This is |
| 612 | usually convenient, but occasionally the prompt may suggest a wrong file | 612 | usually convenient, but occasionally the prompt may suggest a wrong file |
| 613 | name for you.) If you see a prompt @kbd{/usr/foo/} and you wish to edit the | 613 | name for you.) If you see a prompt @kbd{/usr/foo/} and you wish to edit the |
| 614 | file @kbd{~/.viper}, you don't have to erase the prompt. Instead, simply | 614 | file @kbd{~/.file}, you don't have to erase the prompt. Instead, simply |
| 615 | continue typing what you need. Emacs will interpret @kbd{/usr/foo/~/.viper} | 615 | continue typing what you need. Emacs will interpret @kbd{/usr/foo/~/.file} |
| 616 | correctly. Similarly, if the prompt is @kbd{~/foo/} and you need to get to | 616 | correctly. Similarly, if the prompt is @kbd{~/foo/} and you need to get to |
| 617 | @kbd{/bar/file}, keep typing. Emacs interprets @kbd{~/foo//bar/} as | 617 | @kbd{/bar/file}, keep typing. Emacs interprets @kbd{~/foo//bar/} as |
| 618 | @kbd{/bar/file}, since when it sees @samp{//}, it understands that | 618 | @kbd{/bar/file}, since when it sees @samp{//}, it understands that |
| @@ -795,8 +795,8 @@ between the Vi state and Insert state at will, and even use the replace mode. | |||
| 795 | Initially, the minibuffer comes up in Insert state. | 795 | Initially, the minibuffer comes up in Insert state. |
| 796 | 796 | ||
| 797 | Some users prefer plain Emacs bindings in the minibuffer. To this end, set | 797 | Some users prefer plain Emacs bindings in the minibuffer. To this end, set |
| 798 | @code{viper-vi-style-in-minibuffer} to @code{nil} in @file{.viper}. | 798 | @code{viper-vi-style-in-minibuffer} to @code{nil} in |
| 799 | @xref{Customization}, to learn how to do this. | 799 | your Viper customization file. @xref{Customization}, to learn how to do this. |
| 800 | 800 | ||
| 801 | When the minibuffer changes Viper states, you will notice that the appearance | 801 | When the minibuffer changes Viper states, you will notice that the appearance |
| 802 | of the text there changes as well. This is useful because the minibuffer | 802 | of the text there changes as well. This is useful because the minibuffer |
| @@ -989,8 +989,8 @@ In the Overview chapter, some Multiple File issues were discussed | |||
| 989 | (@pxref{Multiple Files in Viper}). In addition to the files, Emacs has | 989 | (@pxref{Multiple Files in Viper}). In addition to the files, Emacs has |
| 990 | buffers. These can be seen in the @kbd{:args} list and switched using | 990 | buffers. These can be seen in the @kbd{:args} list and switched using |
| 991 | @kbd{:next} if you type @kbd{:set ex-cycle-through-non-files t}, or | 991 | @kbd{:next} if you type @kbd{:set ex-cycle-through-non-files t}, or |
| 992 | specify @code{(setq ex-cycle-through-non-files t)} in your @file{.viper} | 992 | specify @code{(setq ex-cycle-through-non-files t)} in your |
| 993 | file. @xref{Customization}, for details. | 993 | Viper customization file. @xref{Customization}, for details. |
| 994 | 994 | ||
| 995 | @node Undo and Backups | 995 | @node Undo and Backups |
| 996 | @section Undo and Backups | 996 | @section Undo and Backups |
| @@ -1132,7 +1132,8 @@ of the form @kbd{/foo//bar} as @kbd{/bar} and @kbd{/foo/~/bar} as | |||
| 1132 | @cindex word search | 1132 | @cindex word search |
| 1133 | 1133 | ||
| 1134 | Viper provides buffer search, the ability to search the buffer for a region | 1134 | Viper provides buffer search, the ability to search the buffer for a region |
| 1135 | under the cursor. You have to turn this on in @file{.viper} either by calling | 1135 | under the cursor. You have to turn this on in your Viper customization file |
| 1136 | either by calling | ||
| 1136 | 1137 | ||
| 1137 | @example | 1138 | @example |
| 1138 | (viper-buffer-search-enable) | 1139 | (viper-buffer-search-enable) |
| @@ -1182,10 +1183,10 @@ variable that controls how search patterns are highlighted is | |||
| 1182 | @end example | 1183 | @end example |
| 1183 | @vindex @code{viper-search-face} | 1184 | @vindex @code{viper-search-face} |
| 1184 | @noindent | 1185 | @noindent |
| 1185 | in @file{~/.viper}. If you want to change how patterns are highlighted, you | 1186 | in your Viper customization file. If you want to change how patterns are |
| 1186 | will have to change @code{viper-search-face} to your liking. The easiest | 1187 | highlighted, you will have to change @code{viper-search-face} to your liking. |
| 1187 | way to do this is to use Emacs customization widget, which is accessible | 1188 | The easiest way to do this is to use Emacs customization widget, which is |
| 1188 | from the menubar. Viper customization group is located under the | 1189 | accessible from the menubar. Viper customization group is located under the |
| 1189 | @emph{Emulations} customization group, which in turn is under the | 1190 | @emph{Emulations} customization group, which in turn is under the |
| 1190 | @emph{Editing} group (or simply by typing @kbd{:customize}). All Viper | 1191 | @emph{Editing} group (or simply by typing @kbd{:customize}). All Viper |
| 1191 | faces are grouped together under Viper's | 1192 | faces are grouped together under Viper's |
| @@ -1225,8 +1226,8 @@ Facilities like this make Vi's @kbd{:ab} command obsolete. | |||
| 1225 | 1226 | ||
| 1226 | Viper can be set free from the line--limited movements in Vi, such as @kbd{l} | 1227 | Viper can be set free from the line--limited movements in Vi, such as @kbd{l} |
| 1227 | refusing to move beyond the line, @key{ESC} moving one character back, | 1228 | refusing to move beyond the line, @key{ESC} moving one character back, |
| 1228 | etc. These derive from Ex, which is a line editor. If your @file{.viper} | 1229 | etc. These derive from Ex, which is a line editor. If your |
| 1229 | contains | 1230 | Viper customization file contains |
| 1230 | 1231 | ||
| 1231 | @example | 1232 | @example |
| 1232 | @code{(setq viper-ex-style-motion nil)} | 1233 | @code{(setq viper-ex-style-motion nil)} |
| @@ -1306,9 +1307,10 @@ These two keys invoke many important Emacs functions. For example, if you | |||
| 1306 | hit @kbd{C-x} followed by @kbd{2}, then the current window will be split | 1307 | hit @kbd{C-x} followed by @kbd{2}, then the current window will be split |
| 1307 | into 2. Except for novice users, @kbd{C-c} is also set to execute an Emacs | 1308 | into 2. Except for novice users, @kbd{C-c} is also set to execute an Emacs |
| 1308 | command from the current major mode. @key{ESC} will do the same, if you | 1309 | command from the current major mode. @key{ESC} will do the same, if you |
| 1309 | configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to @code{nil} | 1310 | configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to |
| 1310 | in @file{.viper}. @xref{Customization}. @kbd{C-\} in Insert, Replace, or Vi | 1311 | @code{nil} in your Viper customization file. @xref{Customization}. |
| 1311 | states will make Emacs think @kbd{Meta} has been hit. | 1312 | @kbd{C-\} in Insert, Replace, or Vi states will make Emacs think |
| 1313 | @kbd{Meta} has been hit. | ||
| 1312 | @item \ | 1314 | @item \ |
| 1313 | @kindex @kbd{\} | 1315 | @kindex @kbd{\} |
| 1314 | Escape to Emacs to execute a single Emacs command. For instance, | 1316 | Escape to Emacs to execute a single Emacs command. For instance, |
| @@ -1574,9 +1576,9 @@ Customization can be done in 2 ways. | |||
| 1574 | @item | 1576 | @item |
| 1575 | @cindex initialization | 1577 | @cindex initialization |
| 1576 | @cindex .viper | 1578 | @cindex .viper |
| 1577 | Elisp code in a @file{.viper} file in your home directory. Viper | 1579 | Elisp code in a @file{~/.emacs.d/viper} (or @file{~/.viper}) file. |
| 1578 | loads @file{.viper} just before it does the binding for mode | 1580 | Viper loads this file just before it does the binding for mode hooks. |
| 1579 | hooks. This is recommended for experts only. | 1581 | This is recommended for experts only. |
| 1580 | @item | 1582 | @item |
| 1581 | @cindex .emacs | 1583 | @cindex .emacs |
| 1582 | Elisp code in your @file{.emacs} file before and after the @code{(require | 1584 | Elisp code in your @file{.emacs} file before and after the @code{(require |
| @@ -1591,12 +1593,12 @@ customization widget, which lets you change the values of Viper | |||
| 1591 | customizable variables easily. This method is good for novice and | 1593 | customizable variables easily. This method is good for novice and |
| 1592 | experts alike. The customization code in the form of Lisp commands will be | 1594 | experts alike. The customization code in the form of Lisp commands will be |
| 1593 | placed in @file{~/.emacs} or some other customization file depending on the | 1595 | placed in @file{~/.emacs} or some other customization file depending on the |
| 1594 | version of Emacs that you use. Still, it is recommended to separate | 1596 | version of Emacs that you use. Still, it is recommended to separate |
| 1595 | Viper-related customization produced by the Emacs customization widget | 1597 | Viper-related customization produced by the Emacs customization widget |
| 1596 | and keep it in the @file{.viper} file. | 1598 | and keep it in your Viper customization file. |
| 1597 | 1599 | ||
| 1598 | Some advanced customization cannot be accomplished this way, however, and | 1600 | Some advanced customization cannot be accomplished this way, however, and |
| 1599 | has to be done in Emacs Lisp in the @file{.viper} file. For the common | 1601 | has to be done in Emacs Lisp in your Viper customization file. For the common |
| 1600 | cases, examples are provided that you can use directly. | 1602 | cases, examples are provided that you can use directly. |
| 1601 | @end itemize | 1603 | @end itemize |
| 1602 | 1604 | ||
| @@ -1753,10 +1755,10 @@ cases. @code{nil} means you either has to invoke @code{viper-mode} manually | |||
| 1753 | for each buffer (or you can add @code{viper-mode} to the appropriate major mode | 1755 | for each buffer (or you can add @code{viper-mode} to the appropriate major mode |
| 1754 | hooks using @code{viper-load-hook}). | 1756 | hooks using @code{viper-load-hook}). |
| 1755 | 1757 | ||
| 1756 | This option must be set in the file @file{~/.viper}. | 1758 | This option must be set in your Viper customization file. |
| 1757 | @item viper-custom-file-name "~/.viper" | 1759 | @item viper-custom-file-name "~/.emacs.d/viper" |
| 1758 | File used for Viper-specific customization. | 1760 | File used for Viper-specific customization. |
| 1759 | Change this setting, if you want. Must be set in @file{.emacs} (not @file{.viper}!) | 1761 | Change this setting, if you want. Must be set in @file{.emacs} |
| 1760 | before Viper is loaded. Note that you | 1762 | before Viper is loaded. Note that you |
| 1761 | have to set it as a string inside double quotes. | 1763 | have to set it as a string inside double quotes. |
| 1762 | @item viper-spell-function 'ispell-region | 1764 | @item viper-spell-function 'ispell-region |
| @@ -1807,8 +1809,8 @@ Both these macros are bound (as Viper macros) to | |||
| 1807 | @code{viper-repeat-from-history}, | 1809 | @code{viper-repeat-from-history}, |
| 1808 | which checks the second key by which it is invoked to see which of the | 1810 | which checks the second key by which it is invoked to see which of the |
| 1809 | previous commands to invoke. Viper binds @kbd{f12 1} and @kbd{f12 2} only, | 1811 | previous commands to invoke. Viper binds @kbd{f12 1} and @kbd{f12 2} only, |
| 1810 | but the user can bind more in @file{~/.viper}. @xref{Vi Macros}, for how to do | 1812 | but the user can bind more in his/her Viper customization file. |
| 1811 | this. | 1813 | @xref{Vi Macros}, for how to do this. |
| 1812 | @item viper-keep-point-on-undo nil | 1814 | @item viper-keep-point-on-undo nil |
| 1813 | If not @code{nil}, Viper tries to not move point when undoing commands. | 1815 | If not @code{nil}, Viper tries to not move point when undoing commands. |
| 1814 | Instead, it will briefly move the cursor to the place where change has | 1816 | Instead, it will briefly move the cursor to the place where change has |
| @@ -1873,7 +1875,7 @@ emulate the standard Vi behavior, which supports only intra-line | |||
| 1873 | replacement regions (and multi-line replacement regions are deleted). | 1875 | replacement regions (and multi-line replacement regions are deleted). |
| 1874 | @item viper-toggle-key "\C-z" | 1876 | @item viper-toggle-key "\C-z" |
| 1875 | Specifies the key used to switch from Emacs to Vi and back. | 1877 | Specifies the key used to switch from Emacs to Vi and back. |
| 1876 | Must be set in @file{.viper}. This variable can't be | 1878 | Must be set in your Viper customization file. This variable can't be |
| 1877 | changed interactively after Viper is loaded. | 1879 | changed interactively after Viper is loaded. |
| 1878 | 1880 | ||
| 1879 | In Insert state, this key acts as a temporary escape to Vi state, i.e., it | 1881 | In Insert state, this key acts as a temporary escape to Vi state, i.e., it |
| @@ -1906,7 +1908,7 @@ the last chance to do customization before Viper is up and running. | |||
| 1906 | @noindent | 1908 | @noindent |
| 1907 | You can reset some of these constants in Viper with the Ex command @kbd{:set} | 1909 | You can reset some of these constants in Viper with the Ex command @kbd{:set} |
| 1908 | (when so indicated in the table). Or you | 1910 | (when so indicated in the table). Or you |
| 1909 | can include a line like this in your @file{.viper} file: | 1911 | can include a line like this in your Viper customization file: |
| 1910 | @example | 1912 | @example |
| 1911 | (setq viper-case-fold-search t) | 1913 | (setq viper-case-fold-search t) |
| 1912 | @end example | 1914 | @end example |
| @@ -2018,7 +2020,7 @@ state. | |||
| 2018 | If you want to | 2020 | If you want to |
| 2019 | bind a key, say @kbd{C-v}, to the function that scrolls | 2021 | bind a key, say @kbd{C-v}, to the function that scrolls |
| 2020 | page down and to make @kbd{0} display information on the current buffer, | 2022 | page down and to make @kbd{0} display information on the current buffer, |
| 2021 | putting this in @file{.viper} will do the trick in Vi state: | 2023 | putting this in your Viper customization file will do the trick in Vi state: |
| 2022 | @example | 2024 | @example |
| 2023 | (define-key viper-vi-global-user-map "\C-v" 'scroll-down) | 2025 | (define-key viper-vi-global-user-map "\C-v" 'scroll-down) |
| 2024 | @end example | 2026 | @end example |
| @@ -2067,11 +2069,12 @@ keys necessary in that keymap, and put | |||
| 2067 | @end example | 2069 | @end example |
| 2068 | 2070 | ||
| 2069 | @noindent | 2071 | @noindent |
| 2070 | in @file{~/.viper}. To do the same in Vi and Insert states, you should use | 2072 | in your Viper customization file. To do the same in Vi and Insert states, you |
| 2071 | @code{vi-state} and @code{insert-state}. Changes in Insert state are also | 2073 | should use @code{vi-state} and @code{insert-state}. Changes in Insert state |
| 2072 | in effect in Replace state. For instance, suppose that the user wants to | 2074 | are also in effect in Replace state. For instance, suppose that the user wants |
| 2073 | use @kbd{dd} in Vi state under Dired mode to delete files, @kbd{u} to unmark | 2075 | to use @kbd{dd} in Vi state under Dired mode to delete files, @kbd{u} to unmark |
| 2074 | files, etc. The following code in @file{~/.viper} will then do the job: | 2076 | files, etc. The following code in the Viper customization file will then do |
| 2077 | the job: | ||
| 2075 | 2078 | ||
| 2076 | @example | 2079 | @example |
| 2077 | (setq my-dired-modifier-map (make-sparse-keymap)) | 2080 | (setq my-dired-modifier-map (make-sparse-keymap)) |
| @@ -2275,7 +2278,7 @@ can happen only in the beginning, when the minor mode kicks in. Typing | |||
| 2275 | several such minor modes and takes care of them, so the above trick | 2278 | several such minor modes and takes care of them, so the above trick |
| 2276 | is usually not necessary. If you find that some minor mode, e.g., | 2279 | is usually not necessary. If you find that some minor mode, e.g., |
| 2277 | @code{nasty-mode} interferes with Viper, putting the following in | 2280 | @code{nasty-mode} interferes with Viper, putting the following in |
| 2278 | @file{.viper} should fix the problem: | 2281 | your Viper customization file should fix the problem: |
| 2279 | @lisp | 2282 | @lisp |
| 2280 | (viper-harness-minor-mode "nasty-mode") | 2283 | (viper-harness-minor-mode "nasty-mode") |
| 2281 | @end lisp | 2284 | @end lisp |
| @@ -2332,8 +2335,8 @@ document. Other features are explained here. | |||
| 2332 | @item viper-buffer-search-char nil | 2335 | @item viper-buffer-search-char nil |
| 2333 | Enable buffer search. Explicit call to @code{viper-buffer-search-enable} | 2336 | Enable buffer search. Explicit call to @code{viper-buffer-search-enable} |
| 2334 | sets @code{viper-buffer-search-char} to @kbd{g}. Alternatively, the user can | 2337 | sets @code{viper-buffer-search-char} to @kbd{g}. Alternatively, the user can |
| 2335 | set @code{viper-buffer-search-char} in @file{.viper} to a key sequence | 2338 | set @code{viper-buffer-search-char} in his/her Viper customization file to a key |
| 2336 | to be used for buffer search. There is no need to call | 2339 | sequence to be used for buffer search. There is no need to call |
| 2337 | @code{viper-buffer-search-enable} in that case. | 2340 | @code{viper-buffer-search-enable} in that case. |
| 2338 | @findex @code{viper-buffer-search-enable} | 2341 | @findex @code{viper-buffer-search-enable} |
| 2339 | @vindex @code{viper-buffer-search-char} | 2342 | @vindex @code{viper-buffer-search-char} |
| @@ -2356,8 +2359,8 @@ If you hit something other than @kbd{/} after the first @kbd{/} or if the | |||
| 2356 | second @kbd{/} doesn't follow quickly enough, then Viper will issue the | 2359 | second @kbd{/} doesn't follow quickly enough, then Viper will issue the |
| 2357 | usual prompt @kbd{/} and will wait for input, as usual in Vi. | 2360 | usual prompt @kbd{/} and will wait for input, as usual in Vi. |
| 2358 | If you don't like this behavior, you can ``unrecord'' these macros in your | 2361 | If you don't like this behavior, you can ``unrecord'' these macros in your |
| 2359 | @file{~/.viper} file. For instance, if you don't like the above feature, put | 2362 | Viper customization file. For instance, if you don't like the above |
| 2360 | this in @file{~/.viper}: | 2363 | feature, put this in the file: |
| 2361 | @example | 2364 | @example |
| 2362 | (viper-set-searchstyle-toggling-macros 'undefine) | 2365 | (viper-set-searchstyle-toggling-macros 'undefine) |
| 2363 | @end example | 2366 | @end example |
| @@ -2444,7 +2447,7 @@ the direction of newer insertions. Hitting @kbd{C-c M-p} or @kbd{C-c M-n} | |||
| 2444 | in succession | 2447 | in succession |
| 2445 | will undo the previous insertion from the ring and insert the next item on | 2448 | will undo the previous insertion from the ring and insert the next item on |
| 2446 | the ring. If a larger ring size is needed, change the value of the above | 2449 | the ring. If a larger ring size is needed, change the value of the above |
| 2447 | variable in the @file{~/.viper} file. | 2450 | variable in the Viper customization file. |
| 2448 | 2451 | ||
| 2449 | Since typing these sequences of keys may be tedious, it is suggested that the | 2452 | Since typing these sequences of keys may be tedious, it is suggested that the |
| 2450 | user should bind a function key, such as @kbd{f31}, as follows: | 2453 | user should bind a function key, such as @kbd{f31}, as follows: |
| @@ -2515,7 +2518,7 @@ putting | |||
| 2515 | (copy-face 'default 'viper-minibuffer-insert-face) | 2518 | (copy-face 'default 'viper-minibuffer-insert-face) |
| 2516 | (copy-face 'default 'viper-minibuffer-emacs-face) | 2519 | (copy-face 'default 'viper-minibuffer-emacs-face) |
| 2517 | @end example | 2520 | @end example |
| 2518 | in the @file{~/.viper} file or through the customization widget, as | 2521 | in their Viper customization file or through the customization widget, as |
| 2519 | described above. However, in that case, the user will not have any | 2522 | described above. However, in that case, the user will not have any |
| 2520 | indication of the current Viper state in the minibuffer. (This is important | 2523 | indication of the current Viper state in the minibuffer. (This is important |
| 2521 | if the user accidentally switches to another Viper state by typing @key{ESC} or | 2524 | if the user accidentally switches to another Viper state by typing @key{ESC} or |
| @@ -2587,8 +2590,8 @@ Note: while loading initially, Viper binds this mouse action only if it is | |||
| 2587 | not already bound to something else. If you want to use the mouse-search | 2590 | not already bound to something else. If you want to use the mouse-search |
| 2588 | feature, and the @kbd{Meta-Shift-Mouse-1} mouse action is already bound to | 2591 | feature, and the @kbd{Meta-Shift-Mouse-1} mouse action is already bound to |
| 2589 | something else, you can rebind the mouse-search feature by setting | 2592 | something else, you can rebind the mouse-search feature by setting |
| 2590 | @code{viper-mouse-search-key} to something else in your @code{~/.viper} | 2593 | @code{viper-mouse-search-key} to something else in |
| 2591 | file: | 2594 | your Viper customization file: |
| 2592 | @lisp | 2595 | @lisp |
| 2593 | (setq viper-mouse-search-key '(meta 1)) | 2596 | (setq viper-mouse-search-key '(meta 1)) |
| 2594 | @end lisp | 2597 | @end lisp |
| @@ -2600,7 +2603,8 @@ Meta key and clicking mouse button 1. The allowed values of | |||
| 2600 | 2603 | ||
| 2601 | If the requested mouse action (e.g., (meta 1)) is already taken for other | 2604 | If the requested mouse action (e.g., (meta 1)) is already taken for other |
| 2602 | purposes then you have to confirm your intention by placing the following | 2605 | purposes then you have to confirm your intention by placing the following |
| 2603 | command in @code{~/.viper} after setting @code{viper-mouse-search-key}: | 2606 | command in your Viper customization file after setting |
| 2607 | @code{viper-mouse-search-key}: | ||
| 2604 | @lisp | 2608 | @lisp |
| 2605 | (viper-bind-mouse-search-key 'force) | 2609 | (viper-bind-mouse-search-key 'force) |
| 2606 | @end lisp | 2610 | @end lisp |
| @@ -2642,13 +2646,13 @@ case of a triple-click, the prefix argument is ignored.) | |||
| 2642 | Note: while loading initially, Viper binds this mouse action only if it not | 2646 | Note: while loading initially, Viper binds this mouse action only if it not |
| 2643 | already bound to something else. If you want to use this feature and the | 2647 | already bound to something else. If you want to use this feature and the |
| 2644 | default mouse action is already bound, you can rebind mouse-insert by | 2648 | default mouse action is already bound, you can rebind mouse-insert by |
| 2645 | placing this command in @code{~/.viper}: | 2649 | placing this command in your Viper customization file: |
| 2646 | @lisp | 2650 | @lisp |
| 2647 | (setq viper-mouse-insert-key '(meta 2)) | 2651 | (setq viper-mouse-insert-key '(meta 2)) |
| 2648 | @end lisp | 2652 | @end lisp |
| 2649 | If you want to bind mouse-insert to an action even if this action is | 2653 | If you want to bind mouse-insert to an action even if this action is |
| 2650 | already taken for other purposes in Emacs, then you should add this command | 2654 | already taken for other purposes in Emacs, then you should add this command |
| 2651 | to @code{~/.viper}, after setting @code{viper-mouse-insert-key}: | 2655 | to your Viper customization file, after setting @code{viper-mouse-insert-key}: |
| 2652 | @lisp | 2656 | @lisp |
| 2653 | (viper-bind-mouse-insert-key 'force) | 2657 | (viper-bind-mouse-insert-key 'force) |
| 2654 | @end lisp | 2658 | @end lisp |
| @@ -2785,7 +2789,7 @@ Manual}. | |||
| 2785 | When the user finishes defining a macro (which is done by typing @kbd{C-x)}, | 2789 | When the user finishes defining a macro (which is done by typing @kbd{C-x)}, |
| 2786 | a departure from Vi), you will be asked whether you want this | 2790 | a departure from Vi), you will be asked whether you want this |
| 2787 | macro to be global, mode-specific, or buffer-specific. You will also be | 2791 | macro to be global, mode-specific, or buffer-specific. You will also be |
| 2788 | given a chance to save the macro in your @file{~/.viper} file. | 2792 | given a chance to save the macro in your Viper customization file. |
| 2789 | This is the easiest way to save a macro and make | 2793 | This is the easiest way to save a macro and make |
| 2790 | it permanently available. If you work your startup files with bare hands, | 2794 | it permanently available. If you work your startup files with bare hands, |
| 2791 | here is how Viper saves the above macro so that it will be | 2795 | here is how Viper saves the above macro so that it will be |
| @@ -2834,8 +2838,8 @@ the latter says that the macro is to be defined for all buffers | |||
| 2834 | 2838 | ||
| 2835 | For convenience, Viper also lets you define Vi-style macros in its Emacs | 2839 | For convenience, Viper also lets you define Vi-style macros in its Emacs |
| 2836 | state. There is no Ex command, like @kbd{:map} and @kbd{:map!} for doing | 2840 | state. There is no Ex command, like @kbd{:map} and @kbd{:map!} for doing |
| 2837 | this, but the user can include such a macro in the @file{~/.viper} file. The | 2841 | this, but the user can include such a macro in the Viper customization file. |
| 2838 | only thing is that the @code{viper-record-kbd-macro} command should specify | 2842 | The only thing is that the @code{viper-record-kbd-macro} command should specify |
| 2839 | @code{emacs-state} instead of @code{vi-state} or @code{insert-state}. | 2843 | @code{emacs-state} instead of @code{vi-state} or @code{insert-state}. |
| 2840 | 2844 | ||
| 2841 | The user can get rid of a macro either by using the Ex commands @kbd{:unmap} | 2845 | The user can get rid of a macro either by using the Ex commands @kbd{:unmap} |
| @@ -2899,8 +2903,9 @@ Vi and Emacs commands, so that you could see what will happen each time the | |||
| 2899 | macro is executed. Suppose now we wanted to bind the key sequence | 2903 | macro is executed. Suppose now we wanted to bind the key sequence |
| 2900 | @kbd{f13 f13} to the command @code{eval-last-sexp}. To accomplish this, we | 2904 | @kbd{f13 f13} to the command @code{eval-last-sexp}. To accomplish this, we |
| 2901 | can type @kbd{M-x eval-last-sexp} followed by @kbd{C-x )}. | 2905 | can type @kbd{M-x eval-last-sexp} followed by @kbd{C-x )}. |
| 2902 | If you answer positively to Viper's offer to save this macro in @file{~/.viper} | 2906 | If you answer positively to Viper's offer to save this macro in your |
| 2903 | for future uses, the following will be inserted in that file: | 2907 | Viper customization file for future uses, the following will be inserted |
| 2908 | in that file: | ||
| 2904 | 2909 | ||
| 2905 | @example | 2910 | @example |
| 2906 | (viper-record-kbd-macro [f16 f16] 'vi-state | 2911 | (viper-record-kbd-macro [f16 f16] 'vi-state |
| @@ -2972,8 +2977,8 @@ The rate at which the user must type keys in order for them to be | |||
| 2972 | recognized as a timeout macro is controlled by the variable | 2977 | recognized as a timeout macro is controlled by the variable |
| 2973 | @code{viper-fast-keyseq-timeout}, which defaults to 200 milliseconds. | 2978 | @code{viper-fast-keyseq-timeout}, which defaults to 200 milliseconds. |
| 2974 | 2979 | ||
| 2975 | For the most part, Viper macros defined in @file{~/.viper} can be shared | 2980 | For the most part, Viper macros defined in the Viper customization file can |
| 2976 | between X and TTY modes. | 2981 | be shared between X and TTY modes. |
| 2977 | The problem with TTY may be that the function keys there generate sequences | 2982 | The problem with TTY may be that the function keys there generate sequences |
| 2978 | of events instead of a single event (as under a window system). | 2983 | of events instead of a single event (as under a window system). |
| 2979 | Emacs maps some of these sequences back to the logical keys | 2984 | Emacs maps some of these sequences back to the logical keys |
| @@ -3359,7 +3364,8 @@ this function. | |||
| 3359 | Find the next bracket/parenthesis/brace and go to its match. | 3364 | Find the next bracket/parenthesis/brace and go to its match. |
| 3360 | By default, Viper ignores brackets/parentheses/braces that occur inside | 3365 | By default, Viper ignores brackets/parentheses/braces that occur inside |
| 3361 | parentheses. You can change this by setting | 3366 | parentheses. You can change this by setting |
| 3362 | @code{viper-parse-sexp-ignore-comments} to @code{nil} in your @file{.viper} file. | 3367 | @code{viper-parse-sexp-ignore-comments} to @code{nil} in your Viper |
| 3368 | customization file. | ||
| 3363 | This option can also be toggled interactively if you quickly hit @kbd{%%%}. | 3369 | This option can also be toggled interactively if you quickly hit @kbd{%%%}. |
| 3364 | 3370 | ||
| 3365 | This latter feature is implemented as a vi-style keyboard macro. If you | 3371 | This latter feature is implemented as a vi-style keyboard macro. If you |
| @@ -3370,7 +3376,7 @@ don't want this macro, put | |||
| 3370 | @end example | 3376 | @end example |
| 3371 | @findex @code{viper-set-parsing-style-toggling-macro} | 3377 | @findex @code{viper-set-parsing-style-toggling-macro} |
| 3372 | 3378 | ||
| 3373 | in your @file{~/.viper} file. | 3379 | in your Viper customization file. |
| 3374 | 3380 | ||
| 3375 | @end table | 3381 | @end table |
| 3376 | @kindex @kbd{%} | 3382 | @kindex @kbd{%} |
| @@ -3544,7 +3550,7 @@ then be executed by typing `@kbd{.}'. | |||
| 3544 | 3550 | ||
| 3545 | Since typing the above sequences of keys may be tedious, the | 3551 | Since typing the above sequences of keys may be tedious, the |
| 3546 | functions doing the perusing can be bound to unused keyboard keys in the | 3552 | functions doing the perusing can be bound to unused keyboard keys in the |
| 3547 | @file{~/.viper} file. @xref{Viper Specials}, for details. | 3553 | Viper customization file. @xref{Viper Specials}, for details. |
| 3548 | @end table | 3554 | @end table |
| 3549 | @kindex @kbd{C-c M-p} | 3555 | @kindex @kbd{C-c M-p} |
| 3550 | @kindex @kbd{C-c M-n} | 3556 | @kindex @kbd{C-c M-n} |
| @@ -3984,7 +3990,7 @@ Write the file. Viper makes sure that a final newline is always added to | |||
| 3984 | any file where this newline is missing. This is done by setting Emacs | 3990 | any file where this newline is missing. This is done by setting Emacs |
| 3985 | variable @code{require-final-newline} to @code{t}. If you don't like this | 3991 | variable @code{require-final-newline} to @code{t}. If you don't like this |
| 3986 | feature, use @code{setq-default} to set @code{require-final-newline} to | 3992 | feature, use @code{setq-default} to set @code{require-final-newline} to |
| 3987 | @code{nil}. This must be done in @file{.viper} file. | 3993 | @code{nil}. This must be done in the Viper customization file. |
| 3988 | @item :[x,y] w <name> | 3994 | @item :[x,y] w <name> |
| 3989 | Write to the file <name>. | 3995 | Write to the file <name>. |
| 3990 | @item :[x,y] w>> <name> | 3996 | @item :[x,y] w>> <name> |
| @@ -42,8 +42,7 @@ of _any_ files during installation. | |||
| 42 | 42 | ||
| 43 | --- | 43 | --- |
| 44 | ** The configure option `--with-crt-dir' has been removed. | 44 | ** The configure option `--with-crt-dir' has been removed. |
| 45 | It is no longer needed, as the crt*.o files are no longer linked | 45 | It is no longer needed, as the crt*.o files are no longer linked specially. |
| 46 | specially. | ||
| 47 | 46 | ||
| 48 | --- | 47 | --- |
| 49 | ** Directories passed to configure option `--enable-locallisppath' are | 48 | ** Directories passed to configure option `--enable-locallisppath' are |
| @@ -242,17 +241,15 @@ and this variable has been marked obsolete. | |||
| 242 | ** `emacs-bzr-version' has been renamed to `emacs-repository-version', | 241 | ** `emacs-bzr-version' has been renamed to `emacs-repository-version', |
| 243 | and works for git too, if you fetch the repository notes. | 242 | and works for git too, if you fetch the repository notes. |
| 244 | 243 | ||
| 245 | ** New user options: | 244 | ** `read-regexp-defaults-function' defines a function to read regexps, |
| 246 | |||
| 247 | *** `read-regexp-defaults-function' defines a function to read regexps, | ||
| 248 | used by commands like `rgrep', `lgrep' `occur', `highlight-regexp', etc. | 245 | used by commands like `rgrep', `lgrep' `occur', `highlight-regexp', etc. |
| 249 | You can customize this to specify a function that provides a default | 246 | You can customize this to specify a function that provides a default |
| 250 | value from the regexp last history element, or from the symbol found | 247 | value from the regexp last history element, or from the symbol found |
| 251 | at point. | 248 | at point. |
| 252 | 249 | ||
| 253 | +++ | 250 | +++ |
| 254 | *** `load-prefer-newer' affects how the `load' function chooses the | 251 | ** New option `load-prefer-newer' affects how the `load' function chooses |
| 255 | file to load. If this is non-nil, then when both .el and .elc | 252 | the file to load. If this is non-nil, then when both .el and .elc |
| 256 | versions of a file exist, and the caller did not explicitly specify | 253 | versions of a file exist, and the caller did not explicitly specify |
| 257 | which one to load, then the newer file is loaded. The default, nil, | 254 | which one to load, then the newer file is loaded. The default, nil, |
| 258 | means to always load the .elc file. | 255 | means to always load the .elc file. |
| @@ -271,22 +268,20 @@ normal editing behavior. | |||
| 271 | 268 | ||
| 272 | *** `electric-indent-mode' is enabled by default. | 269 | *** `electric-indent-mode' is enabled by default. |
| 273 | 270 | ||
| 271 | +++ | ||
| 274 | *** `tab-stop-list' is now implicitly extended to infinity by repeating | 272 | *** `tab-stop-list' is now implicitly extended to infinity by repeating |
| 275 | the last step. Its default value is changed to nil, which means a tab | 273 | the last step. Its default value is changed to nil, which means a tab |
| 276 | stop every `tab-width' columns. | 274 | stop every `tab-width' columns. |
| 277 | 275 | ||
| 278 | ** Filling changes | 276 | +++ |
| 279 | 277 | ** New command `cycle-spacing' acts like a smarter `just-one-space'. | |
| 280 | *** New command `cycle-spacing' cycles between spacing conventions: | 278 | When called in succession, it cycles between spacing conventions: |
| 281 | having just one space, no spaces, or reverting to the original | 279 | one space, no spaces, original spacing. |
| 282 | spacing. Like `just-one-space', it can handle or ignore newlines and | ||
| 283 | leave different number of spaces. | ||
| 284 | |||
| 285 | *** `fill-single-char-nobreak-p' prevents fill from breaking a line after | ||
| 286 | a 1-letter word, which is an error according to Polish and | ||
| 287 | Czech typography rules. To globally enable this feature, evaluate: | ||
| 288 | 280 | ||
| 289 | (add-hook 'fill-nobreak-predicate 'fill-single-char-nobreak-p) | 281 | +++ |
| 282 | ** The new function `fill-single-char-nobreak-p' can stop fill from breaking | ||
| 283 | a line after a one-letter word, which is an error in some typographical | ||
| 284 | conventions. To use it, add it to the `fill-nobreak-predicate' hook. | ||
| 290 | 285 | ||
| 291 | +++ | 286 | +++ |
| 292 | ** Uniquify is enabled by default, with `post-forward-angle-brackets' style. | 287 | ** Uniquify is enabled by default, with `post-forward-angle-brackets' style. |
| @@ -320,6 +315,7 @@ copy of each repeated line. The lines need not be sorted. | |||
| 320 | 315 | ||
| 321 | * Changes in Specialized Modes and Packages in Emacs 24.4 | 316 | * Changes in Specialized Modes and Packages in Emacs 24.4 |
| 322 | 317 | ||
| 318 | +++ | ||
| 323 | ** More packages look for ~/.emacs.d/<foo> additionally to ~/.<foo>. | 319 | ** More packages look for ~/.emacs.d/<foo> additionally to ~/.<foo>. |
| 324 | Affected files: | 320 | Affected files: |
| 325 | ~/.emacs.d/timelog replaces ~/.timelog | 321 | ~/.emacs.d/timelog replaces ~/.timelog |
| @@ -328,7 +324,7 @@ Affected files: | |||
| 328 | ~/.emacs.d/ido.last replaces ~/.ido.last | 324 | ~/.emacs.d/ido.last replaces ~/.ido.last |
| 329 | ~/.emacs.d/kkcrc replaces ~/.kkcrc | 325 | ~/.emacs.d/kkcrc replaces ~/.kkcrc |
| 330 | ~/.emacs.d/quickurls replaces ~/.quickurls | 326 | ~/.emacs.d/quickurls replaces ~/.quickurls |
| 331 | ~/.emacs.d/idlwave replaces ~/.idlwave | 327 | ~/.emacs.d/idlwave/ replaces ~/.idlwave/ |
| 332 | ~/.emacs.d/bdfcache.el replaces ~/.bdfcache.el | 328 | ~/.emacs.d/bdfcache.el replaces ~/.bdfcache.el |
| 333 | ~/.emacs.d/places replaces ~/.emacs-places | 329 | ~/.emacs.d/places replaces ~/.emacs-places |
| 334 | ~/.emacs.d/shadows replaces ~/.shadows | 330 | ~/.emacs.d/shadows replaces ~/.shadows |
| @@ -353,14 +349,11 @@ you access lexical variables. | |||
| 353 | *** New minor mode `jit-lock-debug-mode' lets you use the debuggers on | 349 | *** New minor mode `jit-lock-debug-mode' lets you use the debuggers on |
| 354 | code run via JIT Lock. | 350 | code run via JIT Lock. |
| 355 | 351 | ||
| 356 | ** Battery | ||
| 357 | |||
| 358 | --- | 352 | --- |
| 359 | *** Battery information via the BSD `apm' utility is now supported. | 353 | ** Battery information can now be retrieved from BSD's `apm' utility. |
| 360 | |||
| 361 | ** Buffer Menu | ||
| 362 | 354 | ||
| 363 | *** `M-s a C-o' shows lines matching a regexp in marked buffers using Occur. | 355 | --- |
| 356 | ** In the Buffer Menu, `M-s a C-o' shows matches for a regexp in marked buffers. | ||
| 364 | 357 | ||
| 365 | ** Calendar and Diary | 358 | ** Calendar and Diary |
| 366 | 359 | ||
| @@ -380,18 +373,18 @@ and `calendar-month-header'. | |||
| 380 | 373 | ||
| 381 | ** Calc | 374 | ** Calc |
| 382 | 375 | ||
| 376 | +++ | ||
| 383 | *** Calc by default now uses the Gregorian calendar for all dates, and | 377 | *** Calc by default now uses the Gregorian calendar for all dates, and |
| 384 | uses January 1, 1 AD as its day number 1. Previously Calc used the | 378 | uses January 1, 1 AD as its day number 1. Previously Calc used the |
| 385 | Julian calendar for dates before September 14, 1752, and it used | 379 | Julian calendar for dates before September 14, 1752, and it used |
| 386 | December 31, 1 BC as its day number 1; the new scheme is more | 380 | December 31, 1 BC as its day number 1; the new scheme is more |
| 387 | consistent with Calendar's calendrical system and day numbering. | 381 | consistent with Calendar's calendrical system and day numbering. |
| 388 | 382 | ||
| 389 | *** The new variable `calc-gregorian-switch' lets you configure the | 383 | +++ |
| 390 | date when Calc switches from the Julian to the Gregorian calendar. | 384 | *** The new option `calc-gregorian-switch' lets you configure if |
| 391 | Nil, the default value, means to always use the Gregorian calendar. | 385 | (and when) Calc switches from the Julian to the Gregorian calendar. |
| 392 | The value (YEAR MONTH DAY) means to start using the Gregorian calendar | ||
| 393 | on the given date. | ||
| 394 | 386 | ||
| 387 | +++ | ||
| 395 | *** Support for ISO 8601 dates. | 388 | *** Support for ISO 8601 dates. |
| 396 | 389 | ||
| 397 | ** CEDET | 390 | ** CEDET |
| @@ -411,13 +404,13 @@ target architecture auto-detection. | |||
| 411 | **** Improved detection of used namespaces in current scope in C++. | 404 | **** Improved detection of used namespaces in current scope in C++. |
| 412 | 405 | ||
| 413 | **** Parsing of default values for variables and function arguments in C/C++. | 406 | **** Parsing of default values for variables and function arguments in C/C++. |
| 414 | They are also displayed by the summarize feature in the modeline. | 407 | They are also displayed by the summarize feature in the mode line. |
| 415 | 408 | ||
| 416 | **** Improved parsing of function pointers in C/C++. | 409 | **** Improved parsing of function pointers in C/C++. |
| 417 | This also includes parsing of function pointers as function arguments. | 410 | This also includes parsing of function pointers as function arguments. |
| 418 | 411 | ||
| 419 | **** Parsing of C/C++ preprocessor macros which open new scope. | 412 | **** Parsing of C/C++ preprocessor macros that open new scope. |
| 420 | For example, this enables parsing of macros which open new namespaces. | 413 | For example, this enables parsing of macros that open new namespaces. |
| 421 | 414 | ||
| 422 | **** Support for 'this' pointer in inline member functions in C++. | 415 | **** Support for 'this' pointer in inline member functions in C++. |
| 423 | 416 | ||
| @@ -431,9 +424,10 @@ For example, this enables parsing of macros which open new namespaces. | |||
| 431 | ** CUA mode | 424 | ** CUA mode |
| 432 | 425 | ||
| 433 | *** CUA mode now uses `delete-selection-mode' and `shift-select-mode'. | 426 | *** CUA mode now uses `delete-selection-mode' and `shift-select-mode'. |
| 434 | Hence, you can now enable it independently from `transient-mark-mode', | 427 | Hence, you can now enable it independently from those modes, and from |
| 435 | `delete-selection-mode', and `shift-select-mode'. | 428 | `transient-mark-mode'. |
| 436 | 429 | ||
| 430 | --- | ||
| 437 | *** `cua-highlight-region-shift-only' is now obsolete. | 431 | *** `cua-highlight-region-shift-only' is now obsolete. |
| 438 | You can disable `transient-mark-mode' to get the same result. | 432 | You can disable `transient-mark-mode' to get the same result. |
| 439 | 433 | ||
| @@ -441,11 +435,13 @@ You can disable `transient-mark-mode' to get the same result. | |||
| 441 | 435 | ||
| 442 | ** CFEngine mode | 436 | ** CFEngine mode |
| 443 | 437 | ||
| 438 | --- | ||
| 444 | *** Support for completion, ElDoc, and Flycheck has been added. | 439 | *** Support for completion, ElDoc, and Flycheck has been added. |
| 445 | 440 | ||
| 441 | --- | ||
| 446 | *** The current CFEngine syntax is parsed from "cf-promises -s json". | 442 | *** The current CFEngine syntax is parsed from "cf-promises -s json". |
| 447 | There is a fallback syntax available if you don't have cf-promises or | 443 | There is a fallback syntax available if you don't have cf-promises or |
| 448 | if it doesn't support that option. | 444 | if your version doesn't support that option. See option `cfengine-cf-promises'. |
| 449 | 445 | ||
| 450 | ** Delete Selection mode can now be used without `transient-mark-mode'. | 446 | ** Delete Selection mode can now be used without `transient-mark-mode'. |
| 451 | 447 | ||
| @@ -460,9 +456,8 @@ restoring the frame/window configuration (frameset). Additional options | |||
| 460 | and `desktop-restore-forces-onscreen' offer further customization. | 456 | and `desktop-restore-forces-onscreen' offer further customization. |
| 461 | 457 | ||
| 462 | +++ | 458 | +++ |
| 463 | ** Dired | 459 | ** New Dired minor mode `dired-hide-details-mode' toggles whether details, |
| 464 | 460 | such as file ownership or permissions, are visible. | |
| 465 | *** New minor mode `dired-hide-details-mode' hides details. | ||
| 466 | 461 | ||
| 467 | ** Eldoc Mode works properly in the minibuffer. | 462 | ** Eldoc Mode works properly in the minibuffer. |
| 468 | 463 | ||
| @@ -496,9 +491,7 @@ You can customize `electric-pair-text-pairs' and | |||
| 496 | `electric-pair-text-syntax-table' to tweak pairing behavior inside | 491 | `electric-pair-text-syntax-table' to tweak pairing behavior inside |
| 497 | strings and comments. | 492 | strings and comments. |
| 498 | 493 | ||
| 499 | ** EPA | 494 | ** New EPA option `epa-mail-aliases'. |
| 500 | |||
| 501 | *** New option `epa-mail-aliases'. | ||
| 502 | You can set this to a list of alias expansions for keys to use | 495 | You can set this to a list of alias expansions for keys to use |
| 503 | in `epa-mail-encrypt'. | 496 | in `epa-mail-encrypt'. |
| 504 | 497 | ||
| @@ -511,9 +504,7 @@ that means: when one of the recipients of the message being encrypted | |||
| 511 | is `foo@bar.com', ignore that name as regards encryption. | 504 | is `foo@bar.com', ignore that name as regards encryption. |
| 512 | This is useful to avoid a query when you have no key for that name. | 505 | This is useful to avoid a query when you have no key for that name. |
| 513 | 506 | ||
| 514 | ** ERC | 507 | ** New ERC option `erc-accidental-paste-threshold-seconds'. |
| 515 | |||
| 516 | *** New option `erc-accidental-paste-threshold-seconds'. | ||
| 517 | If set to a number, this can be used to avoid accidentally pasting large | 508 | If set to a number, this can be used to avoid accidentally pasting large |
| 518 | amounts of data into the ERC input. | 509 | amounts of data into the ERC input. |
| 519 | 510 | ||
| @@ -542,9 +533,8 @@ External su and sudo commands are now the default; the internal, | |||
| 542 | Tramp-using variants can still be used by enabling the eshell-tramp | 533 | Tramp-using variants can still be used by enabling the eshell-tramp |
| 543 | module. | 534 | module. |
| 544 | 535 | ||
| 545 | ** F90 mode | ||
| 546 | --- | 536 | --- |
| 547 | *** New option `f90-smart-end-names'. | 537 | ** New F90 mode option `f90-smart-end-names'. |
| 548 | 538 | ||
| 549 | ** Icomplete is a bit more like Ido. | 539 | ** Icomplete is a bit more like Ido. |
| 550 | 540 | ||
| @@ -609,17 +599,19 @@ entries displayed by `Info-index-next', `Info-virtual-index' and | |||
| 609 | 599 | ||
| 610 | ** JS Mode | 600 | ** JS Mode |
| 611 | 601 | ||
| 602 | --- | ||
| 603 | *** New option `js-switch-indent-offset'. | ||
| 604 | |||
| 605 | --- | ||
| 612 | *** Better indentation of multiple-variable declarations. | 606 | *** Better indentation of multiple-variable declarations. |
| 613 | If declaration spans several lines, variables on the following lines | 607 | If a declaration spans several lines, variables on the following lines |
| 614 | are lined up to the first one. | 608 | are lined up to the first one. |
| 615 | 609 | ||
| 616 | *** We now recognize and better indent continuations in array | 610 | --- |
| 617 | comprehensions. | 611 | *** Recognition and better indentation of continuations in array comprehensions. |
| 618 | |||
| 619 | *** New option `js-switch-indent-offset`. | ||
| 620 | 612 | ||
| 621 | ** MH-E has been updated to MH-E version 8.5. | 613 | +++ |
| 622 | See MH-E-NEWS for details. | 614 | ** MH-E has been updated to version 8.5 - see separate MH-E-NEWS file. |
| 623 | 615 | ||
| 624 | +++ | 616 | +++ |
| 625 | ** Octave mode | 617 | ** Octave mode |
| @@ -755,7 +747,7 @@ The same rules are now applied to the symbol search with the difference | |||
| 755 | that it matches symbols, and non-symbol characters between symbols. | 747 | that it matches symbols, and non-symbol characters between symbols. |
| 756 | 748 | ||
| 757 | +++ | 749 | +++ |
| 758 | ** New SES command `ses-rename-cell' allows assigning names to SES cells. | 750 | ** New SES command `ses-rename-cell' allows assignment of names to SES cells. |
| 759 | 751 | ||
| 760 | --- | 752 | --- |
| 761 | ** The shell.el option `explicit-bash-args' includes --noediting by default. | 753 | ** The shell.el option `explicit-bash-args' includes --noediting by default. |
| @@ -763,9 +755,11 @@ All non-ancient Bash versions support this option. | |||
| 763 | 755 | ||
| 764 | ** Shell Script mode | 756 | ** Shell Script mode |
| 765 | 757 | ||
| 766 | *** `sh-mode' now has its own setting for `add-log-current-defun-function'. | 758 | --- |
| 759 | *** The SMIE indentation engine is now used by default - see `sh-use-smie'. | ||
| 767 | 760 | ||
| 768 | *** The SMIE indentation engine is now used by default. | 761 | --- |
| 762 | *** `sh-mode' now has its own setting for `add-log-current-defun-function'. | ||
| 769 | 763 | ||
| 770 | ** SMIE indentation can be customized via `smie-config'. | 764 | ** SMIE indentation can be customized via `smie-config'. |
| 771 | Emacs can learn the appropriate indentation settings if you provide it | 765 | Emacs can learn the appropriate indentation settings if you provide it |
| @@ -857,10 +851,6 @@ received with a pull operation. | |||
| 857 | under current version control system. When called with a prefix | 851 | under current version control system. When called with a prefix |
| 858 | argument, you can remove a file from the ignored file list. | 852 | argument, you can remove a file from the ignored file list. |
| 859 | 853 | ||
| 860 | --- | ||
| 861 | *** `cvs-append-to-ignore' has been renamed to `vc-cvs-append-to-ignore' | ||
| 862 | because it is moved to vc-cvs.el. | ||
| 863 | |||
| 864 | ** VHDL mode | 854 | ** VHDL mode |
| 865 | 855 | ||
| 866 | --- | 856 | --- |
| @@ -873,7 +863,7 @@ because it is moved to vc-cvs.el. | |||
| 873 | ** The Woman commands `woman-default-faces' and `woman-monochrome-faces' | 863 | ** The Woman commands `woman-default-faces' and `woman-monochrome-faces' |
| 874 | are obsolete. Customize the `woman-*' faces instead. | 864 | are obsolete. Customize the `woman-*' faces instead. |
| 875 | 865 | ||
| 876 | ** Obsolete packages: | 866 | ** Obsolete packages |
| 877 | 867 | ||
| 878 | *** Iswitchb is made obsolete by icomplete-mode. | 868 | *** Iswitchb is made obsolete by icomplete-mode. |
| 879 | 869 | ||
| @@ -1084,7 +1074,7 @@ displaying the buffer in a window. | |||
| 1084 | ** New hook `pre-redisplay-function'. | 1074 | ** New hook `pre-redisplay-function'. |
| 1085 | 1075 | ||
| 1086 | +++ | 1076 | +++ |
| 1087 | ** New bool-vector set operation functions: | 1077 | ** New bool-vector set operation functions |
| 1088 | *** `bool-vector-exclusive-or' | 1078 | *** `bool-vector-exclusive-or' |
| 1089 | *** `bool-vector-union' | 1079 | *** `bool-vector-union' |
| 1090 | *** `bool-vector-intersection' | 1080 | *** `bool-vector-intersection' |
| @@ -1113,10 +1103,10 @@ This is like the old `eval-after-load', but better behaved. | |||
| 1113 | ** New library subr-x.el with miscellaneous small utility functions | 1103 | ** New library subr-x.el with miscellaneous small utility functions |
| 1114 | *** `hash-table-keys' | 1104 | *** `hash-table-keys' |
| 1115 | *** `hash-table-values' | 1105 | *** `hash-table-values' |
| 1116 | *** `string-blank-p` | 1106 | *** `string-blank-p' |
| 1117 | *** `string-empty-p` | 1107 | *** `string-empty-p' |
| 1118 | *** `string-join` | 1108 | *** `string-join' |
| 1119 | *** `string-reverse` | 1109 | *** `string-reverse' |
| 1120 | *** `string-trim-left' | 1110 | *** `string-trim-left' |
| 1121 | *** `string-trim-right' | 1111 | *** `string-trim-right' |
| 1122 | *** `string-trim' | 1112 | *** `string-trim' |
| @@ -1124,7 +1114,7 @@ This is like the old `eval-after-load', but better behaved. | |||
| 1124 | *** `string-remove-suffix' | 1114 | *** `string-remove-suffix' |
| 1125 | 1115 | ||
| 1126 | +++ | 1116 | +++ |
| 1127 | ** Obsoleted functions: | 1117 | ** Obsoleted functions |
| 1128 | *** `log10' | 1118 | *** `log10' |
| 1129 | *** `dont-compile' | 1119 | *** `dont-compile' |
| 1130 | *** `lisp-complete-symbol' | 1120 | *** `lisp-complete-symbol' |
| @@ -3363,7 +3353,7 @@ means you can just remove all calls to the function in question): | |||
| 3363 | *** `frame-update-faces' (not needed) | 3353 | *** `frame-update-faces' (not needed) |
| 3364 | *** `frame-update-face-colors' (`frame-set-background-mode') | 3354 | *** `frame-update-face-colors' (`frame-set-background-mode') |
| 3365 | *** `x-frob-font-weight' and `x-frob-font-slant' (`make-face-*' functions) | 3355 | *** `x-frob-font-weight' and `x-frob-font-slant' (`make-face-*' functions) |
| 3366 | *** `x-make-font-bold and x-make-font-demibold (`make-face-bold') | 3356 | *** `x-make-font-bold' and `x-make-font-demibold' (`make-face-bold') |
| 3367 | *** `x-make-font-italic' and `x-make-font-oblique' (`make-face-italic') | 3357 | *** `x-make-font-italic' and `x-make-font-oblique' (`make-face-italic') |
| 3368 | *** `x-make-font-bold-italic' (`make-face-bold-italic') | 3358 | *** `x-make-font-bold-italic' (`make-face-bold-italic') |
| 3369 | *** `x-make-font-unbold' (`make-face-unbold') | 3359 | *** `x-make-font-unbold' (`make-face-unbold') |
| @@ -1225,6 +1225,9 @@ systems for HTML/XML files automatically." | |||
| 1225 | More specifically do what's needed to make ibuffer.el the default, | 1225 | More specifically do what's needed to make ibuffer.el the default, |
| 1226 | or just an extension of buff-menu.el. | 1226 | or just an extension of buff-menu.el. |
| 1227 | 1227 | ||
| 1228 | ** Replace linum.el with nlinum.el | ||
| 1229 | http://lists.gnu.org/archive/html/emacs-devel/2013-08/msg00379.html | ||
| 1230 | |||
| 1228 | ** Use pcomplete by default in shell-mode. | 1231 | ** Use pcomplete by default in shell-mode. |
| 1229 | This means to make it behave (by default) more like the current code. | 1232 | This means to make it behave (by default) more like the current code. |
| 1230 | Use it also for read-shell-command, M-x compile, ... | 1233 | Use it also for read-shell-command, M-x compile, ... |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fcbff5b8ee5..469393adae6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,63 @@ | |||
| 1 | 2014-01-29 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * simple.el (just-one-space, cycle-spacing): Doc fixes. | ||
| 4 | |||
| 5 | 2014-01-28 Martin Rudalics <rudalics@gmx.at> | ||
| 6 | |||
| 7 | * window.el (fit-frame-to-buffer): Fix calculations for margins and | ||
| 8 | height constraints. | ||
| 9 | |||
| 10 | 2014-01-28 Luke Lee <luke.yx.lee@gmail.com> | ||
| 11 | |||
| 12 | * progmodes/hideif.el: Extend to full CPP expression syntax. | ||
| 13 | (hif-token-alist): Add missing tokens. | ||
| 14 | (hif-token-regexp): Add support for float/octal/hex immediates. | ||
| 15 | (hif-string-literal-regexp): New const. | ||
| 16 | (hif-tokenize): Recognize strings and float/octal/hex immediates. | ||
| 17 | (hif-exprlist): New function. | ||
| 18 | (hif-parse-if-exp): Use it. | ||
| 19 | (hif-logior-expr, hif-logxor-expr, hif-logand-expr, hif-comp-expr) | ||
| 20 | (hif-logshift-expr, hif-muldiv-expr, hif-lognot, hif-shiftleft) | ||
| 21 | (hif-shiftright, hif-multiply, hif-divide, hif-modulo, hif-equal) | ||
| 22 | (hif-logxor, hif-comma): New functions. | ||
| 23 | |||
| 24 | 2014-01-28 Glenn Morris <rgm@gnu.org> | ||
| 25 | |||
| 26 | * textmodes/fill.el (fill-single-char-nobreak-p): Doc tweak. | ||
| 27 | |||
| 28 | * indent.el (tab-stop-list): Doc fix. Add :version. | ||
| 29 | |||
| 30 | * vc/pcvs.el (vc-editable-p, vc-checkout): Remove unused declarations. | ||
| 31 | (cvs-append-to-ignore): Add compatibility alias. | ||
| 32 | |||
| 33 | 2014-01-27 Glenn Morris <rgm@gnu.org> | ||
| 34 | |||
| 35 | * dired.el (dired-hide-details-mode): Don't autoload it, | ||
| 36 | since it cannot be used outside Dired buffers anyway. | ||
| 37 | |||
| 38 | * emulation/cua-base.el (cua-mode): Doc fix. | ||
| 39 | |||
| 40 | * dired.el (dired-hide-details-hide-symlink-targets) | ||
| 41 | (dired-hide-details-hide-information-lines) | ||
| 42 | (dired-hide-details-mode): Doc fixes. | ||
| 43 | |||
| 44 | * shadowfile.el (shadow-info-file, shadow-todo-file): Doc fix. | ||
| 45 | * strokes.el (strokes-file): Doc fix. Bump :version. | ||
| 46 | (strokes-help): Doc fix. | ||
| 47 | * emulation/viper-init.el (viper-vi-style-in-minibuffer): Doc fix. | ||
| 48 | * emulation/viper.el (viper): Doc fix for custom group. | ||
| 49 | (top-level): Remove oh-so-no-longer-relevant text about vip. | ||
| 50 | * obsolete/otodo-mode.el (todo-prefix): Doc fix. | ||
| 51 | |||
| 52 | * ido.el (ido-save-directory-list-file): | ||
| 53 | * saveplace.el (save-place-file): | ||
| 54 | * calendar/timeclock.el (timeclock-file): | ||
| 55 | * net/quickurl.el (quickurl-url-file): | ||
| 56 | * obsolete/otodo-mode.el (todo-file-do, todo-file-done, todo-file-top): | ||
| 57 | * progmodes/idlwave.el (idlwave-config-directory): | ||
| 58 | * textmodes/remember.el (remember-data-file): | ||
| 59 | Bump :version. | ||
| 60 | |||
| 1 | 2014-01-26 Glenn Morris <rgm@gnu.org> | 61 | 2014-01-26 Glenn Morris <rgm@gnu.org> |
| 2 | 62 | ||
| 3 | * progmodes/opascal.el (opascal-tab-always-indents, opascal-tab): | 63 | * progmodes/opascal.el (opascal-tab-always-indents, opascal-tab): |
diff --git a/lisp/calendar/timeclock.el b/lisp/calendar/timeclock.el index 016fa2f8738..2b4db9a7820 100644 --- a/lisp/calendar/timeclock.el +++ b/lisp/calendar/timeclock.el | |||
| @@ -64,7 +64,7 @@ | |||
| 64 | ;; | 64 | ;; |
| 65 | ;; (add-hook 'kill-emacs-query-functions 'timeclock-query-out) | 65 | ;; (add-hook 'kill-emacs-query-functions 'timeclock-query-out) |
| 66 | 66 | ||
| 67 | ;; NOTE: If you change your .timelog file without using timeclock's | 67 | ;; NOTE: If you change your timelog file without using timeclock's |
| 68 | ;; functions, or if you change the value of any of timeclock's | 68 | ;; functions, or if you change the value of any of timeclock's |
| 69 | ;; customizable variables, you should run the command | 69 | ;; customizable variables, you should run the command |
| 70 | ;; `timeclock-reread-log'. This will recompute any discrepancies in | 70 | ;; `timeclock-reread-log'. This will recompute any discrepancies in |
| @@ -83,6 +83,7 @@ | |||
| 83 | 83 | ||
| 84 | (defcustom timeclock-file (locate-user-emacs-file "timelog" ".timelog") | 84 | (defcustom timeclock-file (locate-user-emacs-file "timelog" ".timelog") |
| 85 | "The file used to store timeclock data in." | 85 | "The file used to store timeclock data in." |
| 86 | :version "24.4" ; added locate-user-emacs-file | ||
| 86 | :type 'file | 87 | :type 'file |
| 87 | :group 'timeclock) | 88 | :group 'timeclock) |
| 88 | 89 | ||
diff --git a/lisp/dired.el b/lisp/dired.el index a30f34bc43a..c56e15a71a1 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -241,13 +241,13 @@ new Dired buffers." | |||
| 241 | :group 'dired) | 241 | :group 'dired) |
| 242 | 242 | ||
| 243 | (defcustom dired-hide-details-hide-symlink-targets t | 243 | (defcustom dired-hide-details-hide-symlink-targets t |
| 244 | "If non-nil, `dired-hide-details-mode' hides symbolic link targets." | 244 | "Non-nil means `dired-hide-details-mode' hides symbolic link targets." |
| 245 | :type 'boolean | 245 | :type 'boolean |
| 246 | :version "24.4" | 246 | :version "24.4" |
| 247 | :group 'dired) | 247 | :group 'dired) |
| 248 | 248 | ||
| 249 | (defcustom dired-hide-details-hide-information-lines t | 249 | (defcustom dired-hide-details-hide-information-lines t |
| 250 | "Non-nil means hide lines other than header and file/dir lines." | 250 | "Non-nil means `dired-hide-details-mode' hides all but header and file lines." |
| 251 | :type 'boolean | 251 | :type 'boolean |
| 252 | :version "24.4" | 252 | :version "24.4" |
| 253 | :group 'dired) | 253 | :group 'dired) |
| @@ -2267,10 +2267,13 @@ unchanged." | |||
| 2267 | (substring file (match-end 0)) | 2267 | (substring file (match-end 0)) |
| 2268 | file)) | 2268 | file)) |
| 2269 | 2269 | ||
| 2270 | ;;; Minor mode for hiding details | ||
| 2271 | ;;;###autoload | ||
| 2272 | (define-minor-mode dired-hide-details-mode | 2270 | (define-minor-mode dired-hide-details-mode |
| 2273 | "Hide details in Dired mode." | 2271 | "Toggle visibility of detailed information in current Dired buffer. |
| 2272 | When this minor mode is enabled, details such as file ownership and | ||
| 2273 | permissions are hidden from view. | ||
| 2274 | |||
| 2275 | See options: `dired-hide-details-hide-symlink-targets' and | ||
| 2276 | `dired-hide-details-hide-information-lines'." | ||
| 2274 | :group 'dired | 2277 | :group 'dired |
| 2275 | (unless (derived-mode-p 'dired-mode) | 2278 | (unless (derived-mode-p 'dired-mode) |
| 2276 | (error "Not a Dired buffer")) | 2279 | (error "Not a Dired buffer")) |
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el index 0befb41826b..00058652aef 100644 --- a/lisp/emulation/cua-base.el +++ b/lisp/emulation/cua-base.el | |||
| @@ -1426,12 +1426,7 @@ options: | |||
| 1426 | 1426 | ||
| 1427 | You can customize `cua-enable-cua-keys' to completely disable the | 1427 | You can customize `cua-enable-cua-keys' to completely disable the |
| 1428 | CUA bindings, or `cua-prefix-override-inhibit-delay' to change | 1428 | CUA bindings, or `cua-prefix-override-inhibit-delay' to change |
| 1429 | the prefix fallback behavior. | 1429 | the prefix fallback behavior." |
| 1430 | |||
| 1431 | CUA mode manages Transient Mark mode internally. Trying to disable | ||
| 1432 | Transient Mark mode while CUA mode is enabled does not work; if you | ||
| 1433 | only want to highlight the region when it is selected using a | ||
| 1434 | shifted movement key, set `cua-highlight-region-shift-only'." | ||
| 1435 | :global t | 1430 | :global t |
| 1436 | :group 'cua | 1431 | :group 'cua |
| 1437 | :set-after '(cua-enable-modeline-indications | 1432 | :set-after '(cua-enable-modeline-indications |
diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el index a4a5f349ffe..65192c245e0 100644 --- a/lisp/emulation/viper-ex.el +++ b/lisp/emulation/viper-ex.el | |||
| @@ -1887,7 +1887,8 @@ Please contact your system administrator. " | |||
| 1887 | (if (featurep 'xemacs) "X" "") | 1887 | (if (featurep 'xemacs) "X" "") |
| 1888 | )))))) | 1888 | )))))) |
| 1889 | 1889 | ||
| 1890 | ;; Ex source command. Loads the file specified as argument or `~/.viper' | 1890 | ;; Ex source command. |
| 1891 | ;; Loads the file specified as argument or viper-custom-file-name. | ||
| 1891 | (defun ex-source () | 1892 | (defun ex-source () |
| 1892 | (viper-get-ex-file) | 1893 | (viper-get-ex-file) |
| 1893 | (if (string= ex-file "") | 1894 | (if (string= ex-file "") |
diff --git a/lisp/emulation/viper-init.el b/lisp/emulation/viper-init.el index 27e7c30375b..9914fdcd2f4 100644 --- a/lisp/emulation/viper-init.el +++ b/lisp/emulation/viper-init.el | |||
| @@ -922,7 +922,7 @@ value refers to the number of characters affected." | |||
| 922 | 922 | ||
| 923 | (defcustom viper-vi-style-in-minibuffer t | 923 | (defcustom viper-vi-style-in-minibuffer t |
| 924 | "If t, use vi-style editing in minibuffer. | 924 | "If t, use vi-style editing in minibuffer. |
| 925 | Should be set in `~/.viper' file." | 925 | Should be set in `viper-custom-file-name'." |
| 926 | :type 'boolean | 926 | :type 'boolean |
| 927 | :group 'viper) | 927 | :group 'viper) |
| 928 | 928 | ||
diff --git a/lisp/emulation/viper-keym.el b/lisp/emulation/viper-keym.el index 10afe229a63..95f3dbb1a40 100644 --- a/lisp/emulation/viper-keym.el +++ b/lisp/emulation/viper-keym.el | |||
| @@ -147,8 +147,8 @@ viper-insert-basic-map. Not recommended, except for novice users.") | |||
| 147 | (defvar viper-empty-keymap (make-sparse-keymap)) | 147 | (defvar viper-empty-keymap (make-sparse-keymap)) |
| 148 | 148 | ||
| 149 | ;; This was the main Vi mode in old versions of VIP which may have been | 149 | ;; This was the main Vi mode in old versions of VIP which may have been |
| 150 | ;; extensively used by VIP users. We declare it as a global var | 150 | ;; extensively used by VIP users. We declare it as a global var and, after |
| 151 | ;; and, after .viper is loaded, we add this keymap to viper-vi-basic-map. | 151 | ;; viper-custom-file-name is loaded, we add this keymap to viper-vi-basic-map. |
| 152 | (defvar viper-mode-map (make-sparse-keymap)) | 152 | (defvar viper-mode-map (make-sparse-keymap)) |
| 153 | 153 | ||
| 154 | ;; Some important keys used in viper | 154 | ;; Some important keys used in viper |
diff --git a/lisp/emulation/viper-macs.el b/lisp/emulation/viper-macs.el index a937309c63d..0c4e7ddac6f 100644 --- a/lisp/emulation/viper-macs.el +++ b/lisp/emulation/viper-macs.el | |||
| @@ -322,7 +322,8 @@ a key is a symbol, e.g., `a', `\\1', `f2', etc., or a list, e.g., | |||
| 322 | ;; More general definitions are inherited by more specific scopes: | 322 | ;; More general definitions are inherited by more specific scopes: |
| 323 | ;; global->major mode->buffer. More specific definitions override more general | 323 | ;; global->major mode->buffer. More specific definitions override more general |
| 324 | (defun viper-record-kbd-macro (macro-name state macro-body &optional scope) | 324 | (defun viper-record-kbd-macro (macro-name state macro-body &optional scope) |
| 325 | "Record a Vi macro. Can be used in `.viper' file to define permanent macros. | 325 | "Record a Vi macro. |
| 326 | Can be used in `viper-custom-file-name' to define permanent macros. | ||
| 326 | MACRO-NAME is a string of characters or a vector of keys. STATE is | 327 | MACRO-NAME is a string of characters or a vector of keys. STATE is |
| 327 | either `vi-state' or `insert-state'. It specifies the Viper state in which to | 328 | either `vi-state' or `insert-state'. It specifies the Viper state in which to |
| 328 | define the macro. MACRO-BODY is a string that represents the keyboard macro. | 329 | define the macro. MACRO-BODY is a string that represents the keyboard macro. |
| @@ -351,8 +352,8 @@ If SCOPE is nil, the user is asked to specify the scope." | |||
| 351 | (error "Can't map an empty macro name")) | 352 | (error "Can't map an empty macro name")) |
| 352 | 353 | ||
| 353 | ;; Macro-name is usually a vector. However, command history or macros | 354 | ;; Macro-name is usually a vector. However, command history or macros |
| 354 | ;; recorded in ~/.viper may be recorded as strings. So, convert to | 355 | ;; recorded in viper-custom-file-name may be recorded as strings. |
| 355 | ;; vectors. | 356 | ;; So, convert to vectors. |
| 356 | (setq macro-name (viper-fixup-macro macro-name)) | 357 | (setq macro-name (viper-fixup-macro macro-name)) |
| 357 | (if (viper-char-array-p macro-name) | 358 | (if (viper-char-array-p macro-name) |
| 358 | (setq macro-name (viper-char-array-to-macro macro-name))) | 359 | (setq macro-name (viper-char-array-to-macro macro-name))) |
| @@ -422,7 +423,7 @@ If SCOPE is nil, the user is asked to specify the scope." | |||
| 422 | ;; if we don't let vector macro-body through %S, | 423 | ;; if we don't let vector macro-body through %S, |
| 423 | ;; the symbols `\.' `\[' etc will be converted into | 424 | ;; the symbols `\.' `\[' etc will be converted into |
| 424 | ;; characters, causing invalid read error on recorded | 425 | ;; characters, causing invalid read error on recorded |
| 425 | ;; macros in .viper. | 426 | ;; macros in viper-custom-file-name. |
| 426 | ;; I am not sure is macro-body can still be a string at | 427 | ;; I am not sure is macro-body can still be a string at |
| 427 | ;; this point, but I am preserving this option anyway. | 428 | ;; this point, but I am preserving this option anyway. |
| 428 | (if (vectorp macro-body) | 429 | (if (vectorp macro-body) |
| @@ -483,11 +484,11 @@ If SCOPE is nil, the user is asked to specify the scope." | |||
| 483 | ;; in effect | 484 | ;; in effect |
| 484 | (defun viper-unrecord-kbd-macro (macro-name state) | 485 | (defun viper-unrecord-kbd-macro (macro-name state) |
| 485 | "Delete macro MACRO-NAME from Viper STATE. | 486 | "Delete macro MACRO-NAME from Viper STATE. |
| 486 | MACRO-NAME must be a vector of viper-style keys. This command is used by Viper | 487 | MACRO-NAME must be a vector of viper-style keys. This command is used |
| 487 | internally, but the user can also use it in ~/.viper to delete pre-defined | 488 | by Viper internally, but you can also use it in `viper-custom-file-name' |
| 488 | macros supplied with Viper. The best way to avoid mistakes in macro names to | 489 | to delete pre-defined macros supplied with Viper. The best way to avoid |
| 489 | be passed to this function is to use viper-describe-kbd-macros and copy the | 490 | mistakes in macro names to be passed to this function is to use |
| 490 | name from there." | 491 | `viper-describe-kbd-macros' and copy the name from there." |
| 491 | (let* (state-name keymap | 492 | (let* (state-name keymap |
| 492 | (macro-alist-var | 493 | (macro-alist-var |
| 493 | (cond ((eq state 'vi-state) | 494 | (cond ((eq state 'vi-state) |
| @@ -507,7 +508,8 @@ name from there." | |||
| 507 | macro-pair macro-entry) | 508 | macro-pair macro-entry) |
| 508 | 509 | ||
| 509 | ;; Macro-name is usually a vector. However, command history or macros | 510 | ;; Macro-name is usually a vector. However, command history or macros |
| 510 | ;; recorded in ~/.viper may appear as strings. So, convert to vectors. | 511 | ;; recorded in viper-custom-file-name may appear as strings. |
| 512 | ;; So, convert to vectors. | ||
| 511 | (setq macro-name (viper-fixup-macro macro-name)) | 513 | (setq macro-name (viper-fixup-macro macro-name)) |
| 512 | (if (viper-char-array-p macro-name) | 514 | (if (viper-char-array-p macro-name) |
| 513 | (setq macro-name (viper-char-array-to-macro macro-name))) | 515 | (setq macro-name (viper-char-array-to-macro macro-name))) |
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el index 690cd881c6c..650b8acbb81 100644 --- a/lisp/emulation/viper.el +++ b/lisp/emulation/viper.el | |||
| @@ -153,9 +153,9 @@ | |||
| 153 | ;; | 153 | ;; |
| 154 | ;; The last viper-vi-basic-minor-mode contains most of the usual Vi bindings | 154 | ;; The last viper-vi-basic-minor-mode contains most of the usual Vi bindings |
| 155 | ;; in its edit mode. This mode provides access to all Emacs facilities. | 155 | ;; in its edit mode. This mode provides access to all Emacs facilities. |
| 156 | ;; Novice users, however, may want to set their viper-expert-level to 1 | 156 | ;; Novice users, however, may want to set their viper-expert-level to 1 in |
| 157 | ;; in their .viper file. This will enable viper-vi-diehard-minor-mode. This | 157 | ;; their viper-custom-file-name. This will enable viper-vi-diehard-minor-mode. |
| 158 | ;; minor mode's bindings make Viper simulate the usual Vi very closely. | 158 | ;; This minor mode's bindings make Viper simulate the usual Vi very closely. |
| 159 | ;; For instance, C-c will not have its standard Emacs binding | 159 | ;; For instance, C-c will not have its standard Emacs binding |
| 160 | ;; and so many of the goodies of Emacs are not available. | 160 | ;; and so many of the goodies of Emacs are not available. |
| 161 | ;; | 161 | ;; |
| @@ -165,12 +165,12 @@ | |||
| 165 | ;; | 165 | ;; |
| 166 | ;; Viper gurus should have at least | 166 | ;; Viper gurus should have at least |
| 167 | ;; (setq viper-expert-level 4) | 167 | ;; (setq viper-expert-level 4) |
| 168 | ;; in their ~/.viper files. This will unsuppress all Emacs keys that are not | 168 | ;; in their viper-custom-file-name. This will unsuppress all Emacs keys |
| 169 | ;; essential for VI-style editing. | 169 | ;; that are not essential for VI-style editing. |
| 170 | ;; Pick-and-choose users may want to put | 170 | ;; Pick-and-choose users may want to put |
| 171 | ;; (setq viper-expert-level 5) | 171 | ;; (setq viper-expert-level 5) |
| 172 | ;; in ~/.viper. Viper will then leave it up to the user to set the variables | 172 | ;; in viper-custom-file-name. Viper will then leave it up to the user to |
| 173 | ;; viper-want-* See viper-set-expert-level for details. | 173 | ;; set the variables viper-want-* See viper-set-expert-level for details. |
| 174 | ;; | 174 | ;; |
| 175 | ;; The very first minor mode, viper-vi-intercept-minor-mode, is of no | 175 | ;; The very first minor mode, viper-vi-intercept-minor-mode, is of no |
| 176 | ;; concern for the user. It is needed to bind Viper's vital keys, such as | 176 | ;; concern for the user. It is needed to bind Viper's vital keys, such as |
| @@ -319,8 +319,7 @@ If set by the user, this must be done _before_ Viper is loaded in `~/.emacs'.") | |||
| 319 | 319 | ||
| 320 | (defgroup viper nil | 320 | (defgroup viper nil |
| 321 | "Vi emulation within Emacs. | 321 | "Vi emulation within Emacs. |
| 322 | NOTE: Viper customization should be saved in `viper-custom-file-name', which | 322 | NOTE: Viper customization should be saved in `viper-custom-file-name'." |
| 323 | defaults to `~/.viper'." | ||
| 324 | :prefix "viper-" | 323 | :prefix "viper-" |
| 325 | :group 'emulations) | 324 | :group 'emulations) |
| 326 | 325 | ||
| @@ -1222,11 +1221,7 @@ If you wish to Viperize AND make this your way of life, please put | |||
| 1222 | (require 'viper) | 1221 | (require 'viper) |
| 1223 | 1222 | ||
| 1224 | in your init file (preferably, close to the top). | 1223 | in your init file (preferably, close to the top). |
| 1225 | These two lines must come in the order given. | 1224 | These two lines must come in the order given.")) |
| 1226 | |||
| 1227 | ** Viper users: | ||
| 1228 | **** The startup file name has been changed from .vip to .viper | ||
| 1229 | **** All vip-* style names have been converted to viper-* style.")) | ||
| 1230 | (if (y-or-n-p "Viperize? ") | 1225 | (if (y-or-n-p "Viperize? ") |
| 1231 | (setq viper-mode t) | 1226 | (setq viper-mode t) |
| 1232 | (setq viper-mode nil)) | 1227 | (setq viper-mode nil)) |
| @@ -1268,8 +1263,8 @@ These two lines must come in the order given. | |||
| 1268 | 1263 | ||
| 1269 | 1264 | ||
| 1270 | ;; Set some useful macros, advices | 1265 | ;; Set some useful macros, advices |
| 1271 | ;; These must be BEFORE ~/.viper is loaded, | 1266 | ;; These must be BEFORE viper-custom-file-name is loaded, |
| 1272 | ;; so the user can unrecord them in ~/.viper. | 1267 | ;; so the user can unrecord them in viper-custom-file-name. |
| 1273 | (if viper-mode | 1268 | (if viper-mode |
| 1274 | (progn | 1269 | (progn |
| 1275 | ;; set advices and some variables that give emacs Vi look. | 1270 | ;; set advices and some variables that give emacs Vi look. |
| @@ -1289,7 +1284,7 @@ These two lines must come in the order given. | |||
| 1289 | ;; Make %%% toggle parsing comments for matching parentheses | 1284 | ;; Make %%% toggle parsing comments for matching parentheses |
| 1290 | (viper-set-parsing-style-toggling-macro nil) | 1285 | (viper-set-parsing-style-toggling-macro nil) |
| 1291 | 1286 | ||
| 1292 | ;; ~/.viper is loaded if exists | 1287 | ;; viper-custom-file-name is loaded if exists |
| 1293 | (viper-load-custom-file) | 1288 | (viper-load-custom-file) |
| 1294 | 1289 | ||
| 1295 | ;; should be after loading custom file to avoid the pesky msg that | 1290 | ;; should be after loading custom file to avoid the pesky msg that |
| @@ -1300,7 +1295,7 @@ These two lines must come in the order given. | |||
| 1300 | 1295 | ||
| 1301 | 1296 | ||
| 1302 | 1297 | ||
| 1303 | ;; Applying Viper customization -- runs after (load .viper) | 1298 | ;; Applying Viper customization -- runs after (load viper-custom-file-name) |
| 1304 | 1299 | ||
| 1305 | ;; Save user settings or Viper defaults for vars controlled by | 1300 | ;; Save user settings or Viper defaults for vars controlled by |
| 1306 | ;; viper-expert-level | 1301 | ;; viper-expert-level |
| @@ -1350,7 +1345,7 @@ These two lines must come in the order given. | |||
| 1350 | 1345 | ||
| 1351 | 1346 | ||
| 1352 | ;; Intercept maps could go in viper-keym.el | 1347 | ;; Intercept maps could go in viper-keym.el |
| 1353 | ;; We keep them here in case someone redefines them in ~/.viper | 1348 | ;; We keep them here in case someone redefines them in viper-custom-file-name |
| 1354 | 1349 | ||
| 1355 | (define-key viper-vi-intercept-map viper-ESC-key 'viper-intercept-ESC-key) | 1350 | (define-key viper-vi-intercept-map viper-ESC-key 'viper-intercept-ESC-key) |
| 1356 | (define-key viper-insert-intercept-map viper-ESC-key 'viper-intercept-ESC-key) | 1351 | (define-key viper-insert-intercept-map viper-ESC-key 'viper-intercept-ESC-key) |
diff --git a/lisp/hippie-exp.el b/lisp/hippie-exp.el index bd4055b9314..d25978eee5f 100644 --- a/lisp/hippie-exp.el +++ b/lisp/hippie-exp.el | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | ;; Copyright (C) 1992, 2001-2014 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1992, 2001-2014 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Anders Holst <aho@sans.kth.se> | 5 | ;; Author: Anders Holst <aho@sans.kth.se> |
| 6 | ;; Last change: 3 March 1998 | 6 | ;; Maintainer: FSF |
| 7 | ;; Version: 1.6 | 7 | ;; Version: 1.6 |
| 8 | ;; Keywords: abbrev convenience | 8 | ;; Keywords: abbrev convenience |
| 9 | 9 | ||
diff --git a/lisp/ido.el b/lisp/ido.el index f0a4dd36a98..265a9a9f1c1 100644 --- a/lisp/ido.el +++ b/lisp/ido.el | |||
| @@ -956,6 +956,7 @@ ido is running. Copied from `icomplete-minibuffer-setup-hook'." | |||
| 956 | Variables stored are: `ido-last-directory-list', `ido-work-directory-list', | 956 | Variables stored are: `ido-last-directory-list', `ido-work-directory-list', |
| 957 | `ido-work-file-list', and `ido-dir-file-cache'. | 957 | `ido-work-file-list', and `ido-dir-file-cache'. |
| 958 | Must be set before enabling ido mode." | 958 | Must be set before enabling ido mode." |
| 959 | :version "24.4" ; added locate-user-emacs-file | ||
| 959 | :type 'string | 960 | :type 'string |
| 960 | :group 'ido) | 961 | :group 'ido) |
| 961 | 962 | ||
diff --git a/lisp/indent.el b/lisp/indent.el index ca221530458..c042db891c4 100644 --- a/lisp/indent.el +++ b/lisp/indent.el | |||
| @@ -586,16 +586,17 @@ See also `indent-relative-maybe'." | |||
| 586 | (move-marker opoint nil)) | 586 | (move-marker opoint nil)) |
| 587 | (tab-to-tab-stop)))) | 587 | (tab-to-tab-stop)))) |
| 588 | 588 | ||
| 589 | (defcustom tab-stop-list | 589 | (defcustom tab-stop-list nil |
| 590 | nil | ||
| 591 | "List of tab stop positions used by `tab-to-tab-stop'. | 590 | "List of tab stop positions used by `tab-to-tab-stop'. |
| 592 | This should be a list of integers, ordered from smallest to largest. | 591 | This should be nil, or a list of integers, ordered from smallest to largest. |
| 593 | It implicitly extends to infinity by repeating the last step (e.g. '(1 2 5) | 592 | It implicitly extends to infinity through repetition of the last step. |
| 594 | is equivalent to '(1 2 5 8 11)). | 593 | For example, '(1 2 5) is equivalent to '(1 2 5 8 11 ...). If the list has |
| 595 | If the list has less than 2 elements, `tab-width' is used as the \"last step\"." | 594 | fewer than 2 elements, `tab-width' is used as the \"last step\". |
| 595 | A value of nil means a tab stop every `tab-width' columns." | ||
| 596 | :group 'indent | 596 | :group 'indent |
| 597 | :version "24.4" ; from explicit list to nil | ||
| 598 | :safe 'listp | ||
| 597 | :type '(repeat integer)) | 599 | :type '(repeat integer)) |
| 598 | (put 'tab-stop-list 'safe-local-variable 'listp) | ||
| 599 | 600 | ||
| 600 | (defvar edit-tab-stops-map | 601 | (defvar edit-tab-stops-map |
| 601 | (let ((map (make-sparse-keymap))) | 602 | (let ((map (make-sparse-keymap))) |
diff --git a/lisp/net/quickurl.el b/lisp/net/quickurl.el index c2e4a734214..fdb117ea690 100644 --- a/lisp/net/quickurl.el +++ b/lisp/net/quickurl.el | |||
| @@ -97,6 +97,7 @@ | |||
| 97 | (defcustom quickurl-url-file | 97 | (defcustom quickurl-url-file |
| 98 | (locate-user-emacs-file "quickurls" ".quickurls") | 98 | (locate-user-emacs-file "quickurls" ".quickurls") |
| 99 | "File that contains the URL list." | 99 | "File that contains the URL list." |
| 100 | :version "24.4" ; added locate-user-emacs-file | ||
| 100 | :type 'file | 101 | :type 'file |
| 101 | :group 'quickurl) | 102 | :group 'quickurl) |
| 102 | 103 | ||
diff --git a/lisp/obsolete/otodo-mode.el b/lisp/obsolete/otodo-mode.el index 53220f06481..d551d167a91 100644 --- a/lisp/obsolete/otodo-mode.el +++ b/lisp/obsolete/otodo-mode.el | |||
| @@ -272,7 +272,7 @@ | |||
| 272 | 272 | ||
| 273 | This is useful in conjunction with `calendar' and `diary' if you use | 273 | This is useful in conjunction with `calendar' and `diary' if you use |
| 274 | 274 | ||
| 275 | #include \"~/.todo-do\" | 275 | #include \"~/.emacs.d/todo-do\" |
| 276 | 276 | ||
| 277 | in your diary file to include your todo list file as part of your | 277 | in your diary file to include your todo list file as part of your |
| 278 | diary. With the default value \"*/*\" the diary displays each entry | 278 | diary. With the default value \"*/*\" the diary displays each entry |
| @@ -284,10 +284,12 @@ the diary file somewhat." | |||
| 284 | :group 'todo) | 284 | :group 'todo) |
| 285 | (defcustom todo-file-do (locate-user-emacs-file "todo-do" ".todo-do") | 285 | (defcustom todo-file-do (locate-user-emacs-file "todo-do" ".todo-do") |
| 286 | "TODO mode list file." | 286 | "TODO mode list file." |
| 287 | :version "24.4" ; added locate-user-emacs-file | ||
| 287 | :type 'file | 288 | :type 'file |
| 288 | :group 'todo) | 289 | :group 'todo) |
| 289 | (defcustom todo-file-done (locate-user-emacs-file "todo-done" ".todo-done") | 290 | (defcustom todo-file-done (locate-user-emacs-file "todo-done" ".todo-done") |
| 290 | "TODO mode archive file." | 291 | "TODO mode archive file." |
| 292 | :version "24.4" ; added locate-user-emacs-file | ||
| 291 | :type 'file | 293 | :type 'file |
| 292 | :group 'todo) | 294 | :group 'todo) |
| 293 | (defcustom todo-mode-hook nil | 295 | (defcustom todo-mode-hook nil |
| @@ -321,6 +323,7 @@ window." | |||
| 321 | 323 | ||
| 322 | Not in TODO format, but diary compatible. | 324 | Not in TODO format, but diary compatible. |
| 323 | Automatically generated when `todo-save-top-priorities' is non-nil." | 325 | Automatically generated when `todo-save-top-priorities' is non-nil." |
| 326 | :version "24.4" ; added locate-user-emacs-file | ||
| 324 | :type 'string | 327 | :type 'string |
| 325 | :group 'todo) | 328 | :group 'todo) |
| 326 | 329 | ||
| @@ -916,7 +919,7 @@ If INCLUDE-SEP is non-nil, return point after the separator." | |||
| 916 | ["Quit" todo-quit t] | 919 | ["Quit" todo-quit t] |
| 917 | )) | 920 | )) |
| 918 | 921 | ||
| 919 | ;; As calendar reads .todo-do before todo-mode is loaded. | 922 | ;; As calendar reads todo-file-do before todo-mode is loaded. |
| 920 | ;;;###autoload | 923 | ;;;###autoload |
| 921 | (define-derived-mode todo-mode nil "TODO" | 924 | (define-derived-mode todo-mode nil "TODO" |
| 922 | "Major mode for editing TODO lists." | 925 | "Major mode for editing TODO lists." |
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el index 35daeb0a573..fc04e5e558f 100644 --- a/lisp/progmodes/hideif.el +++ b/lisp/progmodes/hideif.el | |||
| @@ -35,9 +35,7 @@ | |||
| 35 | ;; M-x hide-ifdefs or C-c @ h | 35 | ;; M-x hide-ifdefs or C-c @ h |
| 36 | ;; | 36 | ;; |
| 37 | ;; Hide-ifdef suppresses the display of code that the preprocessor wouldn't | 37 | ;; Hide-ifdef suppresses the display of code that the preprocessor wouldn't |
| 38 | ;; pass through. The support of constant expressions in #if lines is | 38 | ;; pass through. Support complete C/C++ expression and precedence. |
| 39 | ;; limited to identifiers, parens, and the operators: &&, ||, !, and | ||
| 40 | ;; "defined". Please extend this. | ||
| 41 | ;; | 39 | ;; |
| 42 | ;; The hidden code is marked by ellipses (...). Be | 40 | ;; The hidden code is marked by ellipses (...). Be |
| 43 | ;; cautious when editing near ellipses, since the hidden text is | 41 | ;; cautious when editing near ellipses, since the hidden text is |
| @@ -97,6 +95,9 @@ | |||
| 97 | ;; | 95 | ;; |
| 98 | ;; Written by Brian Marick, at Gould, Computer Systems Division, Urbana IL. | 96 | ;; Written by Brian Marick, at Gould, Computer Systems Division, Urbana IL. |
| 99 | ;; Extensively modified by Daniel LaLiberte (while at Gould). | 97 | ;; Extensively modified by Daniel LaLiberte (while at Gould). |
| 98 | ;; | ||
| 99 | ;; Extensively modified by Luke Lee in 2013 to support complete C expression | ||
| 100 | ;; evaluation. | ||
| 100 | 101 | ||
| 101 | ;;; Code: | 102 | ;;; Code: |
| 102 | 103 | ||
| @@ -368,26 +369,44 @@ that form should be displayed.") | |||
| 368 | (defvar hif-token-list) | 369 | (defvar hif-token-list) |
| 369 | 370 | ||
| 370 | (defconst hif-token-alist | 371 | (defconst hif-token-alist |
| 371 | '(("||" . or) | 372 | '(("||" . hif-or) |
| 372 | ("&&" . and) | 373 | ("&&" . hif-and) |
| 373 | ("|" . hif-logior) | 374 | ("|" . hif-logior) |
| 375 | ("^" . hif-logxor) | ||
| 374 | ("&" . hif-logand) | 376 | ("&" . hif-logand) |
| 375 | ("==" . equal) | 377 | ("<<" . hif-shiftleft) |
| 378 | (">>" . hif-shiftright) | ||
| 379 | ("==" . hif-equal) | ||
| 380 | ;; Note: we include tokens like `=' which aren't supported by CPP's | ||
| 381 | ;; expression syntax, because they are still relevant for the tokenizer, | ||
| 382 | ;; especially in conjunction with ##. | ||
| 383 | ("=" . hif-assign) | ||
| 376 | ("!=" . hif-notequal) | 384 | ("!=" . hif-notequal) |
| 377 | ("!" . not) | 385 | ("##" . hif-token-concat) |
| 378 | ("(" . lparen) | 386 | ("!" . hif-not) |
| 379 | (")" . rparen) | 387 | ("~" . hif-lognot) |
| 388 | ("(" . hif-lparen) | ||
| 389 | (")" . hif-rparen) | ||
| 380 | (">" . hif-greater) | 390 | (">" . hif-greater) |
| 381 | ("<" . hif-less) | 391 | ("<" . hif-less) |
| 382 | (">=" . hif-greater-equal) | 392 | (">=" . hif-greater-equal) |
| 383 | ("<=" . hif-less-equal) | 393 | ("<=" . hif-less-equal) |
| 384 | ("+" . hif-plus) | 394 | ("+" . hif-plus) |
| 385 | ("-" . hif-minus) | 395 | ("-" . hif-minus) |
| 396 | ("*" . hif-multiply) | ||
| 397 | ("/" . hif-divide) | ||
| 398 | ("%" . hif-modulo) | ||
| 386 | ("?" . hif-conditional) | 399 | ("?" . hif-conditional) |
| 387 | (":" . hif-colon))) | 400 | (":" . hif-colon))) |
| 388 | 401 | ||
| 389 | (defconst hif-token-regexp | 402 | (defconst hif-token-regexp |
| 390 | (concat (regexp-opt (mapcar 'car hif-token-alist)) "\\|\\w+")) | 403 | (concat (regexp-opt (mapcar 'car hif-token-alist)) |
| 404 | "\\|0x[0-9a-fA-F]+\\.?[0-9a-fA-F]*" | ||
| 405 | "\\|[0-9]+\\.?[0-9]*" ;; decimal/octal | ||
| 406 | "\\|\\w+")) | ||
| 407 | |||
| 408 | (defconst hif-string-literal-regexp "\\(\"\\(?:[^\"\\]\\|\\\\.\\)*\"\\)") | ||
| 409 | |||
| 391 | 410 | ||
| 392 | (defun hif-tokenize (start end) | 411 | (defun hif-tokenize (start end) |
| 393 | "Separate string between START and END into a list of tokens." | 412 | "Separate string between START and END into a list of tokens." |
| @@ -401,23 +420,63 @@ that form should be displayed.") | |||
| 401 | ((looking-at "\\\\\n") | 420 | ((looking-at "\\\\\n") |
| 402 | (forward-char 2)) | 421 | (forward-char 2)) |
| 403 | 422 | ||
| 423 | ((looking-at hif-string-literal-regexp) | ||
| 424 | (push (substring-no-properties (match-string 1)) token-list) | ||
| 425 | (goto-char (match-end 0))) | ||
| 404 | ((looking-at hif-token-regexp) | 426 | ((looking-at hif-token-regexp) |
| 405 | (let ((token (buffer-substring (point) (match-end 0)))) | 427 | (let ((token (buffer-substring (point) (match-end 0)))) |
| 406 | (goto-char (match-end 0)) | 428 | (goto-char (match-end 0)) |
| 407 | ;; (message "token: %s" token) (sit-for 1) | 429 | ;; (message "token: %s" token) (sit-for 1) |
| 408 | (push (or (cdr (assoc token hif-token-alist)) | 430 | (push |
| 409 | (if (string-equal token "defined") 'hif-defined) | 431 | (or (cdr (assoc token hif-token-alist)) |
| 410 | (if (string-match "\\`[0-9]*\\'" token) | 432 | (if (string-equal token "defined") 'hif-defined) |
| 411 | (string-to-number token)) | 433 | ;; TODO: |
| 412 | (intern token)) | 434 | ;; 1. postfix 'l', 'll', 'ul' and 'ull' |
| 413 | token-list))) | 435 | ;; 2. floating number formats |
| 436 | ;; 3. hexadecimal/octal floats | ||
| 437 | ;; 4. 098 is interpreted as octal conversion error | ||
| 438 | ;; FIXME: string-to-number does not convert hex floats | ||
| 439 | (if (string-match "0x\\([0-9a-fA-F]+\\.?[0-9a-fA-F]*\\)" | ||
| 440 | token) | ||
| 441 | (string-to-number (match-string 1 token) 16)) ;; hex | ||
| 442 | ;; FIXME: string-to-number does not convert octal floats | ||
| 443 | (if (string-match "\\`0[0-9]+\\(\\.[0-9]+\\)?\\'" token) | ||
| 444 | (string-to-number token 8)) ;; octal | ||
| 445 | (if (string-match "\\`[1-9][0-9]*\\(\\.[0-9]+\\)?\\'" | ||
| 446 | token) | ||
| 447 | (string-to-number token)) ;; decimal | ||
| 448 | (intern token)) | ||
| 449 | token-list))) | ||
| 414 | (t (error "Bad #if expression: %s" (buffer-string))))))) | 450 | (t (error "Bad #if expression: %s" (buffer-string))))))) |
| 415 | (nreverse token-list))) | 451 | (nreverse token-list))) |
| 416 | 452 | ||
| 417 | ;;;----------------------------------------------------------------- | 453 | ;;------------------------------------------------------------------------ |
| 418 | ;;; Translate C preprocessor #if expressions using recursive descent. | 454 | ;; Translate C preprocessor #if expressions using recursive descent. |
| 419 | ;;; This parser is limited to the operators &&, ||, !, and "defined". | 455 | ;; This parser was limited to the operators &&, ||, !, and "defined". |
| 420 | ;;; Added ==, !=, +, and -. Gary Oberbrunner, garyo@avs.com, 8/9/94 | 456 | ;; Added ==, !=, +, and -. Gary Oberbrunner, garyo@avs.com, 8/9/94 |
| 457 | ;; | ||
| 458 | ;; Implement the C language operator precedence table. Add all those | ||
| 459 | ;; missing operators that could be used in macros. Luke Lee 2013-09-04 | ||
| 460 | |||
| 461 | ;; | Operator Type | Operator | Associativity | | ||
| 462 | ;; +----------------------+-----------------------------+---------------+ | ||
| 463 | ;; | Primary Expression | () [] . -> expr++ expr-- | left-to-right | | ||
| 464 | ;; | Unary Operators | * & + - ! ~ ++expr --expr | right-to-left | | ||
| 465 | ;; | | (typecast) sizeof | | | ||
| 466 | ;; | Binary Operators | * / % | left-to-right | | ||
| 467 | ;; | | + - | | | ||
| 468 | ;; | | >> << | | | ||
| 469 | ;; | | < > <= >= | | | ||
| 470 | ;; | | == != | | | ||
| 471 | ;; | | & | | | ||
| 472 | ;; | | ^ | | | ||
| 473 | ;; | | | | | | ||
| 474 | ;; | | && | | | ||
| 475 | ;; | | || | | | ||
| 476 | ;; | Ternary Operator | ?: | right-to-left | | ||
| 477 | ;; x| Assignment Operators | = += -= *= /= %= >>= <<= &= | right-to-left | | ||
| 478 | ;; | | ^= = | | | ||
| 479 | ;; | Comma | , | left-to-right | | ||
| 421 | 480 | ||
| 422 | (defsubst hif-nexttoken () | 481 | (defsubst hif-nexttoken () |
| 423 | "Pop the next token from token-list into the let variable \"hif-token\"." | 482 | "Pop the next token from token-list into the let variable \"hif-token\"." |
| @@ -428,10 +487,24 @@ that form should be displayed.") | |||
| 428 | (let ((hif-token-list token-list)) | 487 | (let ((hif-token-list token-list)) |
| 429 | (hif-nexttoken) | 488 | (hif-nexttoken) |
| 430 | (prog1 | 489 | (prog1 |
| 431 | (hif-expr) | 490 | (and hif-token |
| 491 | (hif-exprlist)) | ||
| 432 | (if hif-token ; is there still a token? | 492 | (if hif-token ; is there still a token? |
| 433 | (error "Error: unexpected token: %s" hif-token))))) | 493 | (error "Error: unexpected token: %s" hif-token))))) |
| 434 | 494 | ||
| 495 | (defun hif-exprlist () | ||
| 496 | "Parse an exprlist: expr { ',' expr}" | ||
| 497 | (let ((result (hif-expr))) | ||
| 498 | (if (eq hif-token 'hif-comma) | ||
| 499 | (let ((temp (list result))) | ||
| 500 | (while | ||
| 501 | (progn | ||
| 502 | (hif-nexttoken) | ||
| 503 | (push (hif-expr) temp) | ||
| 504 | (eq hif-token 'hif-comma))) | ||
| 505 | (cons 'hif-comma (nreverse temp))) | ||
| 506 | result))) | ||
| 507 | |||
| 435 | (defun hif-expr () | 508 | (defun hif-expr () |
| 436 | "Parse an expression as found in #if. | 509 | "Parse an expression as found in #if. |
| 437 | expr : or-expr | or-expr '?' expr ':' expr." | 510 | expr : or-expr | or-expr '?' expr ':' expr." |
| @@ -448,67 +521,125 @@ that form should be displayed.") | |||
| 448 | result)) | 521 | result)) |
| 449 | 522 | ||
| 450 | (defun hif-or-expr () | 523 | (defun hif-or-expr () |
| 451 | "Parse n or-expr : and-expr | or-expr '||' and-expr." | 524 | "Parse an or-expr : and-expr | or-expr '||' and-expr." |
| 452 | (let ((result (hif-and-expr))) | 525 | (let ((result (hif-and-expr))) |
| 453 | (while (eq hif-token 'or) | 526 | (while (eq hif-token 'hif-or) |
| 454 | (hif-nexttoken) | 527 | (hif-nexttoken) |
| 455 | (setq result (list 'hif-or result (hif-and-expr)))) | 528 | (setq result (list 'hif-or result (hif-and-expr)))) |
| 456 | result)) | 529 | result)) |
| 457 | 530 | ||
| 458 | (defun hif-and-expr () | 531 | (defun hif-and-expr () |
| 459 | "Parse an and-expr : eq-expr | and-expr '&&' eq-expr." | 532 | "Parse an and-expr : logior-expr | and-expr '&&' logior-expr." |
| 533 | (let ((result (hif-logior-expr))) | ||
| 534 | (while (eq hif-token 'hif-and) | ||
| 535 | (hif-nexttoken) | ||
| 536 | (setq result (list 'hif-and result (hif-logior-expr)))) | ||
| 537 | result)) | ||
| 538 | |||
| 539 | (defun hif-logior-expr () | ||
| 540 | "Parse a logor-expr : logxor-expr | logor-expr '|' logxor-expr." | ||
| 541 | (let ((result (hif-logxor-expr))) | ||
| 542 | (while (eq hif-token 'hif-logior) | ||
| 543 | (hif-nexttoken) | ||
| 544 | (setq result (list 'hif-logior result (hif-logxor-expr)))) | ||
| 545 | result)) | ||
| 546 | |||
| 547 | (defun hif-logxor-expr () | ||
| 548 | "Parse a logxor-expr : logand-expr | logxor-expr '^' logand-expr." | ||
| 549 | (let ((result (hif-logand-expr))) | ||
| 550 | (while (eq hif-token 'hif-logxor) | ||
| 551 | (hif-nexttoken) | ||
| 552 | (setq result (list 'hif-logxor result (hif-logand-expr)))) | ||
| 553 | result)) | ||
| 554 | |||
| 555 | (defun hif-logand-expr () | ||
| 556 | "Parse a logand-expr : eq-expr | logand-expr '&' eq-expr." | ||
| 460 | (let ((result (hif-eq-expr))) | 557 | (let ((result (hif-eq-expr))) |
| 461 | (while (eq hif-token 'and) | 558 | (while (eq hif-token 'hif-logand) |
| 462 | (hif-nexttoken) | 559 | (hif-nexttoken) |
| 463 | (setq result (list 'hif-and result (hif-eq-expr)))) | 560 | (setq result (list 'hif-logand result (hif-eq-expr)))) |
| 464 | result)) | 561 | result)) |
| 465 | 562 | ||
| 466 | (defun hif-eq-expr () | 563 | (defun hif-eq-expr () |
| 467 | "Parse an eq-expr : math | eq-expr `=='|`!='|`<'|`>'|`>='|`<=' math." | 564 | "Parse an eq-expr : comp | eq-expr `=='|`!=' comp." |
| 468 | (let ((result (hif-math)) | 565 | (let ((result (hif-comp-expr)) |
| 469 | (eq-token nil)) | 566 | (eq-token nil)) |
| 470 | (while (memq hif-token '(equal hif-notequal hif-greater hif-less | 567 | (while (memq hif-token '(hif-equal hif-notequal)) |
| 471 | hif-greater-equal hif-less-equal)) | ||
| 472 | (setq eq-token hif-token) | 568 | (setq eq-token hif-token) |
| 473 | (hif-nexttoken) | 569 | (hif-nexttoken) |
| 474 | (setq result (list eq-token result (hif-math)))) | 570 | (setq result (list eq-token result (hif-comp-expr)))) |
| 571 | result)) | ||
| 572 | |||
| 573 | (defun hif-comp-expr () | ||
| 574 | "Parse a comp-expr : logshift | comp-expr `<'|`>'|`>='|`<=' logshift." | ||
| 575 | (let ((result (hif-logshift-expr)) | ||
| 576 | (comp-token nil)) | ||
| 577 | (while (memq hif-token '(hif-greater hif-less hif-greater-equal hif-less-equal)) | ||
| 578 | (setq comp-token hif-token) | ||
| 579 | (hif-nexttoken) | ||
| 580 | (setq result (list comp-token result (hif-logshift-expr)))) | ||
| 581 | result)) | ||
| 582 | |||
| 583 | (defun hif-logshift-expr () | ||
| 584 | "Parse a logshift : math | logshift `<<'|`>>' math." | ||
| 585 | (let ((result (hif-math)) | ||
| 586 | (shift-token nil)) | ||
| 587 | (while (memq hif-token '(hif-shiftleft hif-shiftright)) | ||
| 588 | (setq shift-token hif-token) | ||
| 589 | (hif-nexttoken) | ||
| 590 | (setq result (list shift-token result (hif-math)))) | ||
| 475 | result)) | 591 | result)) |
| 476 | 592 | ||
| 477 | (defun hif-math () | 593 | (defun hif-math () |
| 478 | "Parse an expression with + or - and simpler things. | 594 | "Parse an expression with + or -. |
| 479 | math : factor | math '+|-' factor." | 595 | math : muldiv | math '+|-' muldiv." |
| 596 | (let ((result (hif-muldiv-expr)) | ||
| 597 | (math-op nil)) | ||
| 598 | (while (memq hif-token '(hif-plus hif-minus)) | ||
| 599 | (setq math-op hif-token) | ||
| 600 | (hif-nexttoken) | ||
| 601 | (setq result (list math-op result (hif-muldiv-expr)))) | ||
| 602 | result)) | ||
| 603 | |||
| 604 | (defun hif-muldiv-expr () | ||
| 605 | "Parse an expression with *,/,%. | ||
| 606 | muldiv : factor | muldiv '*|/|%' factor." | ||
| 480 | (let ((result (hif-factor)) | 607 | (let ((result (hif-factor)) |
| 481 | (math-op nil)) | 608 | (math-op nil)) |
| 482 | (while (memq hif-token '(hif-plus hif-minus hif-logior hif-logand)) | 609 | (while (memq hif-token '(hif-multiply hif-divide hif-modulo)) |
| 483 | (setq math-op hif-token) | 610 | (setq math-op hif-token) |
| 484 | (hif-nexttoken) | 611 | (hif-nexttoken) |
| 485 | (setq result (list math-op result (hif-factor)))) | 612 | (setq result (list math-op result (hif-factor)))) |
| 486 | result)) | 613 | result)) |
| 487 | 614 | ||
| 488 | (defun hif-factor () | 615 | (defun hif-factor () |
| 489 | "Parse a factor: '!' factor | '(' expr ')' | 'defined(' id ')' | id." | 616 | "Parse a factor: '!' factor | '~' factor | '(' expr ')' | 'defined(' id ')' | 'id(parmlist)' | strings | id." |
| 490 | (cond | 617 | (cond |
| 491 | ((eq hif-token 'not) | 618 | ((eq hif-token 'hif-not) |
| 492 | (hif-nexttoken) | 619 | (hif-nexttoken) |
| 493 | (list 'hif-not (hif-factor))) | 620 | (list 'hif-not (hif-factor))) |
| 494 | 621 | ||
| 495 | ((eq hif-token 'lparen) | 622 | ((eq hif-token 'hif-lognot) |
| 496 | (hif-nexttoken) | 623 | (hif-nexttoken) |
| 497 | (let ((result (hif-expr))) | 624 | (list 'hif-lognot (hif-factor))) |
| 498 | (if (not (eq hif-token 'rparen)) | 625 | |
| 626 | ((eq hif-token 'hif-lparen) | ||
| 627 | (hif-nexttoken) | ||
| 628 | (let ((result (hif-exprlist))) | ||
| 629 | (if (not (eq hif-token 'hif-rparen)) | ||
| 499 | (error "Bad token in parenthesized expression: %s" hif-token) | 630 | (error "Bad token in parenthesized expression: %s" hif-token) |
| 500 | (hif-nexttoken) | 631 | (hif-nexttoken) |
| 501 | result))) | 632 | result))) |
| 502 | 633 | ||
| 503 | ((eq hif-token 'hif-defined) | 634 | ((eq hif-token 'hif-defined) |
| 504 | (hif-nexttoken) | 635 | (hif-nexttoken) |
| 505 | (let ((paren (when (eq hif-token 'lparen) (hif-nexttoken) t)) | 636 | (let ((paren (when (eq hif-token 'hif-lparen) (hif-nexttoken) t)) |
| 506 | (ident hif-token)) | 637 | (ident hif-token)) |
| 507 | (if (memq hif-token '(or and not hif-defined lparen rparen)) | 638 | (if (memq hif-token '(or and not hif-defined hif-lparen hif-rparen)) |
| 508 | (error "Error: unexpected token: %s" hif-token)) | 639 | (error "Error: unexpected token: %s" hif-token)) |
| 509 | (when paren | 640 | (when paren |
| 510 | (hif-nexttoken) | 641 | (hif-nexttoken) |
| 511 | (unless (eq hif-token 'rparen) | 642 | (unless (eq hif-token 'hif-rparen) |
| 512 | (error "Error: expected \")\" after identifier"))) | 643 | (error "Error: expected \")\" after identifier"))) |
| 513 | (hif-nexttoken) | 644 | (hif-nexttoken) |
| 514 | `(hif-defined (quote ,ident)))) | 645 | `(hif-defined (quote ,ident)))) |
| @@ -541,22 +672,54 @@ that form should be displayed.") | |||
| 541 | (or (not (zerop (hif-mathify a))) (not (zerop (hif-mathify b))))) | 672 | (or (not (zerop (hif-mathify a))) (not (zerop (hif-mathify b))))) |
| 542 | (defun hif-not (a) | 673 | (defun hif-not (a) |
| 543 | (zerop (hif-mathify a))) | 674 | (zerop (hif-mathify a))) |
| 675 | (defun hif-lognot (a) | ||
| 676 | (lognot (hif-mathify a))) | ||
| 544 | 677 | ||
| 545 | (defmacro hif-mathify-binop (fun) | 678 | (defmacro hif-mathify-binop (fun) |
| 546 | `(lambda (a b) | 679 | `(lambda (a b) |
| 547 | ,(format "Like `%s' but treat t and nil as 1 and 0." fun) | 680 | ,(format "Like `%s' but treat t and nil as 1 and 0." fun) |
| 548 | (,fun (hif-mathify a) (hif-mathify b)))) | 681 | (,fun (hif-mathify a) (hif-mathify b)))) |
| 549 | 682 | ||
| 683 | (defun hif-shiftleft (a b) | ||
| 684 | (setq a (hif-mathify a)) | ||
| 685 | (setq b (hif-mathify b)) | ||
| 686 | (if (< a 0) | ||
| 687 | (ash a b) | ||
| 688 | (lsh a b))) | ||
| 689 | |||
| 690 | (defun hif-shiftright (a b) | ||
| 691 | (setq a (hif-mathify a)) | ||
| 692 | (setq b (hif-mathify b)) | ||
| 693 | (if (< a 0) | ||
| 694 | (ash a (- b)) | ||
| 695 | (lsh a (- b)))) | ||
| 696 | |||
| 697 | |||
| 698 | (defalias 'hif-multiply (hif-mathify-binop *)) | ||
| 699 | (defalias 'hif-divide (hif-mathify-binop /)) | ||
| 700 | (defalias 'hif-modulo (hif-mathify-binop %)) | ||
| 550 | (defalias 'hif-plus (hif-mathify-binop +)) | 701 | (defalias 'hif-plus (hif-mathify-binop +)) |
| 551 | (defalias 'hif-minus (hif-mathify-binop -)) | 702 | (defalias 'hif-minus (hif-mathify-binop -)) |
| 703 | (defalias 'hif-equal (hif-mathify-binop =)) | ||
| 552 | (defalias 'hif-notequal (hif-mathify-binop /=)) | 704 | (defalias 'hif-notequal (hif-mathify-binop /=)) |
| 553 | (defalias 'hif-greater (hif-mathify-binop >)) | 705 | (defalias 'hif-greater (hif-mathify-binop >)) |
| 554 | (defalias 'hif-less (hif-mathify-binop <)) | 706 | (defalias 'hif-less (hif-mathify-binop <)) |
| 555 | (defalias 'hif-greater-equal (hif-mathify-binop >=)) | 707 | (defalias 'hif-greater-equal (hif-mathify-binop >=)) |
| 556 | (defalias 'hif-less-equal (hif-mathify-binop <=)) | 708 | (defalias 'hif-less-equal (hif-mathify-binop <=)) |
| 557 | (defalias 'hif-logior (hif-mathify-binop logior)) | 709 | (defalias 'hif-logior (hif-mathify-binop logior)) |
| 710 | (defalias 'hif-logxor (hif-mathify-binop logxor)) | ||
| 558 | (defalias 'hif-logand (hif-mathify-binop logand)) | 711 | (defalias 'hif-logand (hif-mathify-binop logand)) |
| 559 | 712 | ||
| 713 | |||
| 714 | (defun hif-comma (&rest expr) | ||
| 715 | "Evaluate a list of expr, return the result of the last item" | ||
| 716 | (let ((result nil)) | ||
| 717 | (dolist (e expr) | ||
| 718 | (ignore-errors | ||
| 719 | (setq result (funcall hide-ifdef-evaluator e)))) | ||
| 720 | result)) | ||
| 721 | |||
| 722 | |||
| 560 | ;;;----------- end of parser ----------------------- | 723 | ;;;----------- end of parser ----------------------- |
| 561 | 724 | ||
| 562 | 725 | ||
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index 3dcc183345a..8d4320669a1 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el | |||
| @@ -449,6 +449,7 @@ value of `!DIR'. See also `idlwave-library-path'." | |||
| 449 | (defcustom idlwave-config-directory | 449 | (defcustom idlwave-config-directory |
| 450 | (locate-user-emacs-file "idlwave" ".idlwave") | 450 | (locate-user-emacs-file "idlwave" ".idlwave") |
| 451 | "Directory for configuration files and user-library catalog." | 451 | "Directory for configuration files and user-library catalog." |
| 452 | :version "24.4" ; added locate-user-emacs-file | ||
| 452 | :group 'idlwave-routine-info | 453 | :group 'idlwave-routine-info |
| 453 | :type 'file) | 454 | :type 'file) |
| 454 | 455 | ||
diff --git a/lisp/saveplace.el b/lisp/saveplace.el index 064a70a1041..91da103ba9e 100644 --- a/lisp/saveplace.el +++ b/lisp/saveplace.el | |||
| @@ -70,6 +70,7 @@ following code in your init file: | |||
| 70 | 70 | ||
| 71 | (defcustom save-place-file (locate-user-emacs-file "places" ".emacs-places") | 71 | (defcustom save-place-file (locate-user-emacs-file "places" ".emacs-places") |
| 72 | "Name of the file that records `save-place-alist' value." | 72 | "Name of the file that records `save-place-alist' value." |
| 73 | :version "24.4" ; added locate-user-emacs-file | ||
| 73 | :type 'file | 74 | :type 'file |
| 74 | :group 'save-place) | 75 | :group 'save-place) |
| 75 | 76 | ||
diff --git a/lisp/shadowfile.el b/lisp/shadowfile.el index d409d5672f5..2bf200d07dd 100644 --- a/lisp/shadowfile.el +++ b/lisp/shadowfile.el | |||
| @@ -34,21 +34,22 @@ | |||
| 34 | ;; documentation for these functions for information on how and when to use | 34 | ;; documentation for these functions for information on how and when to use |
| 35 | ;; them). After doing this once, everything should be automatic. | 35 | ;; them). After doing this once, everything should be automatic. |
| 36 | 36 | ||
| 37 | ;; The lists of clusters and shadows are saved in a file called .shadows, | 37 | ;; The lists of clusters and shadows are saved in a ~/.emacs.d/shadows |
| 38 | ;; so that they can be remembered from one Emacs session to another, even | 38 | ;; (`shadow-info-file') file, so that they can be remembered from one |
| 39 | ;; (as much as possible) if the Emacs session terminates abnormally. The | 39 | ;; Emacs session to another, even (as much as possible) if the Emacs |
| 40 | ;; files needing to be copied are stored in .shadow_todo; if a file cannot | 40 | ;; session terminates abnormally. The files needing to be copied are |
| 41 | ;; be copied for any reason, it will stay on the list to be tried again | 41 | ;; stored in `shadow-todo-file'; if a file cannot be copied for any |
| 42 | ;; next time. The .shadows file should itself have shadows on all your | 42 | ;; reason, it will stay on the list to be tried again next time. The |
| 43 | ;; accounts so that the information in it is consistent everywhere, but | 43 | ;; `shadow-info-file' file should itself have shadows on all your accounts |
| 44 | ;; .shadow_todo is local information and should have no shadows. | 44 | ;; so that the information in it is consistent everywhere, but |
| 45 | ;; `shadow-todo-file' is local information and should have no shadows. | ||
| 45 | 46 | ||
| 46 | ;; If you do not want to copy a particular file, you can answer "no" and | 47 | ;; If you do not want to copy a particular file, you can answer "no" and |
| 47 | ;; be asked again next time you hit C-x 4 s or exit Emacs. If you do not | 48 | ;; be asked again next time you hit C-x 4 s or exit Emacs. If you do not |
| 48 | ;; want to be asked again, use shadow-cancel, and you will not be asked | 49 | ;; want to be asked again, use shadow-cancel, and you will not be asked |
| 49 | ;; until you change the file and save it again. If you do not want to | 50 | ;; until you change the file and save it again. If you do not want to |
| 50 | ;; shadow that file ever again, you can edit it out of the .shadows | 51 | ;; shadow that file ever again, you can edit it out of the shadows |
| 51 | ;; buffer. Anytime you edit the .shadows buffer, you must type M-x | 52 | ;; buffer. Anytime you edit the shadows buffer, you must type M-x |
| 52 | ;; shadow-read-files to load in the new information, or your changes will | 53 | ;; shadow-read-files to load in the new information, or your changes will |
| 53 | ;; be overwritten! | 54 | ;; be overwritten! |
| 54 | 55 | ||
| @@ -106,10 +107,13 @@ files that have been changed and need to be copied to other systems." | |||
| 106 | :type 'boolean | 107 | :type 'boolean |
| 107 | :group 'shadow) | 108 | :group 'shadow) |
| 108 | 109 | ||
| 110 | ;; FIXME in a sense, this changed in 24.4 (addition of locate-user-emacs-file), | ||
| 111 | ;; but due to the weird way this variable is initialized to nil, it didn't | ||
| 112 | ;; literally change. Same for shadow-todo-file. | ||
| 109 | (defcustom shadow-info-file nil | 113 | (defcustom shadow-info-file nil |
| 110 | "File to keep shadow information in. | 114 | "File to keep shadow information in. |
| 111 | The `shadow-info-file' should be shadowed to all your accounts to | 115 | The `shadow-info-file' should be shadowed to all your accounts to |
| 112 | ensure consistency. Default: ~/.shadows" | 116 | ensure consistency. Default: ~/.emacs.d/shadows" |
| 113 | :type '(choice (const nil) file) | 117 | :type '(choice (const nil) file) |
| 114 | :group 'shadow) | 118 | :group 'shadow) |
| 115 | 119 | ||
| @@ -119,7 +123,7 @@ This means that if a remote system is down, or for any reason you cannot or | |||
| 119 | decide not to copy your shadow files at the end of one Emacs session, it will | 123 | decide not to copy your shadow files at the end of one Emacs session, it will |
| 120 | remember and ask you again in your next Emacs session. | 124 | remember and ask you again in your next Emacs session. |
| 121 | This file must NOT be shadowed to any other system, it is host-specific. | 125 | This file must NOT be shadowed to any other system, it is host-specific. |
| 122 | Default: ~/.shadow_todo" | 126 | Default: ~/.emacs.d/shadow_todo" |
| 123 | :type '(choice (const nil) file) | 127 | :type '(choice (const nil) file) |
| 124 | :group 'shadow) | 128 | :group 'shadow) |
| 125 | 129 | ||
diff --git a/lisp/simple.el b/lisp/simple.el index 5eb0a04471f..0aa32767295 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -794,7 +794,8 @@ If BACKWARD-ONLY is non-nil, only delete them before point." | |||
| 794 | 794 | ||
| 795 | (defun just-one-space (&optional n) | 795 | (defun just-one-space (&optional n) |
| 796 | "Delete all spaces and tabs around point, leaving one space (or N spaces). | 796 | "Delete all spaces and tabs around point, leaving one space (or N spaces). |
| 797 | If N is negative, delete newlines as well, leaving -N spaces." | 797 | If N is negative, delete newlines as well, leaving -N spaces. |
| 798 | See also `cycle-spacing'." | ||
| 798 | (interactive "*p") | 799 | (interactive "*p") |
| 799 | (cycle-spacing n nil t)) | 800 | (cycle-spacing n nil t)) |
| 800 | 801 | ||
| @@ -805,31 +806,22 @@ position and original spacing around the point in this | |||
| 805 | variable.") | 806 | variable.") |
| 806 | 807 | ||
| 807 | (defun cycle-spacing (&optional n preserve-nl-back single-shot) | 808 | (defun cycle-spacing (&optional n preserve-nl-back single-shot) |
| 808 | "Manipulate spaces around the point in a smart way. | 809 | "Manipulate whitespace around point in a smart way. |
| 810 | In interactive use, this function behaves differently in successive | ||
| 811 | consecutive calls. | ||
| 809 | 812 | ||
| 810 | When run as an interactive command, the first time it's called | 813 | The first call in a sequence acts like `just-one-space'. |
| 811 | in a sequence, deletes all spaces and tabs around point leaving | 814 | It deletes all spaces and tabs around point, leaving one space |
| 812 | one (or N spaces). If this does not change content of the | 815 | \(or N spaces). N is the prefix argument. If N is negative, |
| 813 | buffer, skips to the second step: | 816 | it deletes newlines as well, leaving -N spaces. |
| 817 | \(If PRESERVE-NL-BACK is non-nil, it does not delete newlines before point.) | ||
| 814 | 818 | ||
| 815 | When run for the second time in a sequence, deletes all the | 819 | The second call in a sequence (or the first call if the above does |
| 816 | spaces it has previously inserted. | 820 | not result in any changes) deletes all spaces. |
| 817 | 821 | ||
| 818 | When run for the third time, returns the whitespace and point in | 822 | The third call in a sequence restores the original whitespace (and point). |
| 819 | a state encountered when it had been run for the first time. | ||
| 820 | 823 | ||
| 821 | For example, if buffer contains \"foo ^ bar\" with \"^\" denoting the | 824 | If SINGLE-SHOT is non-nil, it only performs the first step in the sequence." |
| 822 | point, calling `cycle-spacing' command will replace two spaces with | ||
| 823 | a single space, calling it again immediately after, will remove all | ||
| 824 | spaces, and calling it for the third time will bring two spaces back | ||
| 825 | together. | ||
| 826 | |||
| 827 | If N is negative, delete newlines as well. However, if | ||
| 828 | PRESERVE-NL-BACK is t new line characters prior to the point | ||
| 829 | won't be removed. | ||
| 830 | |||
| 831 | If SINGLE-SHOT is non-nil, will only perform the first step. In | ||
| 832 | other words, it will work just like `just-one-space' command." | ||
| 833 | (interactive "*p") | 825 | (interactive "*p") |
| 834 | (let ((orig-pos (point)) | 826 | (let ((orig-pos (point)) |
| 835 | (skip-characters (if (and n (< n 0)) " \t\n\r" " \t")) | 827 | (skip-characters (if (and n (< n 0)) " \t\n\r" " \t")) |
diff --git a/lisp/strokes.el b/lisp/strokes.el index 890c3d0726c..35136e5da65 100644 --- a/lisp/strokes.el +++ b/lisp/strokes.el | |||
| @@ -118,8 +118,7 @@ | |||
| 118 | 118 | ||
| 119 | ;; > M-x strokes-prompt-user-save-strokes | 119 | ;; > M-x strokes-prompt-user-save-strokes |
| 120 | 120 | ||
| 121 | ;; and it will save your strokes in ~/.strokes, or you may wish to change | 121 | ;; and it will save your strokes in your `strokes-file'. |
| 122 | ;; this by setting the variable `strokes-file'. | ||
| 123 | 122 | ||
| 124 | ;; Note that internally, all of the routines that are part of this | 123 | ;; Note that internally, all of the routines that are part of this |
| 125 | ;; package are able to deal with complex strokes, as they are a superset | 124 | ;; package are able to deal with complex strokes, as they are a superset |
| @@ -261,7 +260,8 @@ WARNING: Changing the value of this variable will gravely affect the | |||
| 261 | :group 'strokes) | 260 | :group 'strokes) |
| 262 | 261 | ||
| 263 | (defcustom strokes-file (locate-user-emacs-file "strokes" ".strokes") | 262 | (defcustom strokes-file (locate-user-emacs-file "strokes" ".strokes") |
| 264 | "File containing saved strokes for Strokes mode (default is ~/.strokes)." | 263 | "File containing saved strokes for Strokes mode." |
| 264 | :version "24.4" ; added locate-user-emacs-file | ||
| 265 | :type 'file | 265 | :type 'file |
| 266 | :group 'strokes) | 266 | :group 'strokes) |
| 267 | 267 | ||
| @@ -991,11 +991,10 @@ down, then use a prefix argument: | |||
| 991 | 991 | ||
| 992 | > C-u M-x strokes-list-strokes | 992 | > C-u M-x strokes-list-strokes |
| 993 | 993 | ||
| 994 | Your strokes are stored as you enter them. They get saved in a file | 994 | Your strokes are stored as you enter them. They get saved into the |
| 995 | called ~/.strokes, along with other strokes configuration variables. | 995 | file specified by the `strokes-file' variable, along with other strokes |
| 996 | You can change this location by setting the variable `strokes-file'. | 996 | configuration variables. You will be prompted to save them when |
| 997 | You will be prompted to save them when you exit Emacs, or you can save | 997 | you exit Emacs, or you can save them with |
| 998 | them with | ||
| 999 | 998 | ||
| 1000 | > M-x strokes-prompt-user-save-strokes | 999 | > M-x strokes-prompt-user-save-strokes |
| 1001 | 1000 | ||
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index 35cc5320250..93e69055b21 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el | |||
| @@ -330,10 +330,10 @@ places." | |||
| 330 | (eq (char-syntax (following-char)) ?w))))))) | 330 | (eq (char-syntax (following-char)) ?w))))))) |
| 331 | 331 | ||
| 332 | (defun fill-single-char-nobreak-p () | 332 | (defun fill-single-char-nobreak-p () |
| 333 | "Return t if point is placed just after a 1-letter word. | 333 | "Return non-nil if a one-letter word is before point. |
| 334 | This is used in `fill-nobreak-predicate' to prevent breaking line just | 334 | This function is suitable for adding to the hook `fill-nobreak-predicate', |
| 335 | after a 1-letter word (usually conjunction or preposition) which is | 335 | to prevent the breaking of a line just after a one-letter word, |
| 336 | considered composition error in Polish and Czech typography." | 336 | which is an error according to some typographical conventions." |
| 337 | (save-excursion | 337 | (save-excursion |
| 338 | (skip-chars-backward " \t") | 338 | (skip-chars-backward " \t") |
| 339 | (backward-char 2) | 339 | (backward-char 2) |
diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el index ceecbd9ba37..3f5227f908b 100644 --- a/lisp/textmodes/remember.el +++ b/lisp/textmodes/remember.el | |||
| @@ -118,7 +118,7 @@ | |||
| 118 | ;; | 118 | ;; |
| 119 | ;; * Using "remember" | 119 | ;; * Using "remember" |
| 120 | ;; | 120 | ;; |
| 121 | ;; As a rough beginning, what I do is to keep my .notes file in | 121 | ;; As a rough beginning, what I do is to keep my `remember-data-file' in |
| 122 | ;; outline-mode format, with a final entry called "* Raw data". Then, | 122 | ;; outline-mode format, with a final entry called "* Raw data". Then, |
| 123 | ;; at intervals, I can move the data that gets appended there into | 123 | ;; at intervals, I can move the data that gets appended there into |
| 124 | ;; other places. But certainly this should evolve into an intuitive | 124 | ;; other places. But certainly this should evolve into an intuitive |
| @@ -386,6 +386,7 @@ Subject: %s\n\n" | |||
| 386 | "The file in which to store unprocessed data. | 386 | "The file in which to store unprocessed data. |
| 387 | When set via customize, visited file of the notes buffer (if it | 387 | When set via customize, visited file of the notes buffer (if it |
| 388 | exists) might be changed." | 388 | exists) might be changed." |
| 389 | :version "24.4" ; added locate-user-emacs-file | ||
| 389 | :type 'file | 390 | :type 'file |
| 390 | :set (lambda (symbol value) | 391 | :set (lambda (symbol value) |
| 391 | (let ((buf (find-buffer-visiting (default-value symbol)))) | 392 | (let ((buf (find-buffer-visiting (default-value symbol)))) |
diff --git a/lisp/type-break.el b/lisp/type-break.el index 3e09a7a6c06..f954e5d1c26 100644 --- a/lisp/type-break.el +++ b/lisp/type-break.el | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | ;;; type-break.el --- encourage rests from typing at appropriate intervals -*- lexical-binding: t -*- | 1 | ;;; type-break.el --- encourage rests from typing at appropriate intervals -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1994-1995, 1997, 2000-2014 Free Software Foundation, | 3 | ;; Copyright (C) 1994-1995, 1997, 2000-2014 Free Software Foundation, Inc. |
| 4 | ;; Inc. | ||
| 5 | 4 | ||
| 6 | ;; Author: Noah Friedman | 5 | ;; Author: Noah Friedman |
| 7 | ;; Maintainer: Noah Friedman <friedman@splode.com> | 6 | ;; Maintainer: Noah Friedman <friedman@splode.com> |
| @@ -208,6 +207,7 @@ key is pressed." | |||
| 208 | (locate-user-emacs-file "type-break" ".type-break") | 207 | (locate-user-emacs-file "type-break" ".type-break") |
| 209 | "Name of file used to save state across sessions. | 208 | "Name of file used to save state across sessions. |
| 210 | If this is nil, no data will be saved across sessions." | 209 | If this is nil, no data will be saved across sessions." |
| 210 | :version "24.4" ; added locate-user | ||
| 211 | :type 'file) | 211 | :type 'file) |
| 212 | 212 | ||
| 213 | (defvar type-break-post-command-hook '(type-break-check) | 213 | (defvar type-break-post-command-hook '(type-break-check) |
diff --git a/lisp/vc/pcvs.el b/lisp/vc/pcvs.el index 5c645ffd519..4f0f1e8e7fe 100644 --- a/lisp/vc/pcvs.el +++ b/lisp/vc/pcvs.el | |||
| @@ -1976,8 +1976,9 @@ This command ignores files that are not flagged as `Unknown'." | |||
| 1976 | (setf (cvs-fileinfo->type fi) 'DEAD)) | 1976 | (setf (cvs-fileinfo->type fi) 'DEAD)) |
| 1977 | (cvs-cleanup-collection cvs-cookies nil nil nil)) | 1977 | (cvs-cleanup-collection cvs-cookies nil nil nil)) |
| 1978 | 1978 | ||
| 1979 | (declare-function vc-editable-p "vc" (file)) | 1979 | (define-obsolete-function-alias 'cvs-append-to-ignore 'vc-cvs-append-to-ignore |
| 1980 | (declare-function vc-checkout "vc" (file &optional writable rev)) | 1980 | "24.4") |
| 1981 | |||
| 1981 | 1982 | ||
| 1982 | (defun cvs-mode-find-file-other-window (e) | 1983 | (defun cvs-mode-find-file-other-window (e) |
| 1983 | "Select a buffer containing the file in another window." | 1984 | "Select a buffer containing the file in another window." |
diff --git a/lisp/whitespace.el b/lisp/whitespace.el index 7630ffbdb9c..3208c578fe7 100644 --- a/lisp/whitespace.el +++ b/lisp/whitespace.el | |||
| @@ -1084,7 +1084,7 @@ See also `whitespace-style', `whitespace-newline' and | |||
| 1084 | (not (memq major-mode (cdr whitespace-global-modes))) | 1084 | (not (memq major-mode (cdr whitespace-global-modes))) |
| 1085 | (memq major-mode whitespace-global-modes))) | 1085 | (memq major-mode whitespace-global-modes))) |
| 1086 | (t nil)) | 1086 | (t nil)) |
| 1087 | ;; ...we have a display (we're running a batch job) | 1087 | ;; ...we have a display (not running a batch job) |
| 1088 | (not noninteractive) | 1088 | (not noninteractive) |
| 1089 | ;; ...the buffer is not internal (name starts with a space) | 1089 | ;; ...the buffer is not internal (name starts with a space) |
| 1090 | (not (eq (aref (buffer-name) 0) ?\ )) | 1090 | (not (eq (aref (buffer-name) 0) ?\ )) |
diff --git a/lisp/window.el b/lisp/window.el index 1845fdd8e7b..5d035d2586e 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -6864,20 +6864,30 @@ FRAME." | |||
| 6864 | ;; Handle margins. | 6864 | ;; Handle margins. |
| 6865 | (margins (or (frame-parameter frame 'fit-frame-to-buffer-margins) | 6865 | (margins (or (frame-parameter frame 'fit-frame-to-buffer-margins) |
| 6866 | fit-frame-to-buffer-margins)) | 6866 | fit-frame-to-buffer-margins)) |
| 6867 | (left-margin (or (window--sanitize-margin | 6867 | (left-margin (if (nth 0 margins) |
| 6868 | (nth 0 margins) 0 display-width) | 6868 | (or (window--sanitize-margin |
| 6869 | (nth 0 workarea))) | 6869 | (nth 0 margins) 0 display-width) |
| 6870 | (top-margin (or (window--sanitize-margin | 6870 | 0) |
| 6871 | (nth 1 margins) 0 display-height) | 6871 | (nth 0 workarea))) |
| 6872 | (nth 1 workarea))) | 6872 | (top-margin (if (nth 1 margins) |
| 6873 | (or (window--sanitize-margin | ||
| 6874 | (nth 1 margins) 0 display-height) | ||
| 6875 | 0) | ||
| 6876 | (nth 1 workarea))) | ||
| 6873 | (workarea-width (nth 2 workarea)) | 6877 | (workarea-width (nth 2 workarea)) |
| 6874 | (right-margin (or (window--sanitize-margin | 6878 | (right-margin (if (nth 2 margins) |
| 6875 | (nth 2 margins) left-margin display-width) | 6879 | (- display-width |
| 6876 | (+ left-margin workarea-width))) | 6880 | (or (window--sanitize-margin |
| 6881 | (nth 2 margins) left-margin display-width) | ||
| 6882 | 0)) | ||
| 6883 | (nth 2 workarea))) | ||
| 6877 | (workarea-height (nth 3 workarea)) | 6884 | (workarea-height (nth 3 workarea)) |
| 6878 | (bottom-margin (or (window--sanitize-margin | 6885 | (bottom-margin (if (nth 3 margins) |
| 6879 | (nth 3 margins) top-margin display-height) | 6886 | (- display-height |
| 6880 | (+ top-margin workarea-height))) | 6887 | (or (window--sanitize-margin |
| 6888 | (nth 3 margins) top-margin display-height) | ||
| 6889 | 0)) | ||
| 6890 | (nth 3 workarea))) | ||
| 6881 | ;; The pixel width of FRAME (which does not include the | 6891 | ;; The pixel width of FRAME (which does not include the |
| 6882 | ;; window manager's decorations). | 6892 | ;; window manager's decorations). |
| 6883 | (frame-width (frame-pixel-width)) | 6893 | (frame-width (frame-pixel-width)) |
| @@ -6927,11 +6937,7 @@ FRAME." | |||
| 6927 | (not (zerop lines))) | 6937 | (not (zerop lines))) |
| 6928 | (1- lines) | 6938 | (1- lines) |
| 6929 | 0)))) | 6939 | 0)))) |
| 6930 | ;; The maximum height we can use for fitting. | 6940 | ;; The pixel position of FRAME's top border. |
| 6931 | (fit-height | ||
| 6932 | (- workarea-height extra-height toolbar-extra-height)) | ||
| 6933 | ;; The pixel position of FRAME's top border. We usually | ||
| 6934 | ;; try to leave this alone. | ||
| 6935 | (top | 6941 | (top |
| 6936 | (let ((top (frame-parameter nil 'top))) | 6942 | (let ((top (frame-parameter nil 'top))) |
| 6937 | (if (consp top) | 6943 | (if (consp top) |
| @@ -6943,7 +6949,8 @@ FRAME." | |||
| 6943 | (max-height | 6949 | (max-height |
| 6944 | (cond | 6950 | (cond |
| 6945 | ((numberp (nth 0 sizes)) (* (nth 0 sizes) char-height)) | 6951 | ((numberp (nth 0 sizes)) (* (nth 0 sizes) char-height)) |
| 6946 | ((numberp max-height) (* max-height char-height)))) | 6952 | ((numberp max-height) (* max-height char-height)) |
| 6953 | (t display-height))) | ||
| 6947 | (min-height | 6954 | (min-height |
| 6948 | (cond | 6955 | (cond |
| 6949 | ((numberp (nth 1 sizes)) (* (nth 1 sizes) char-height)) | 6956 | ((numberp (nth 1 sizes)) (* (nth 1 sizes) char-height)) |
| @@ -6954,7 +6961,8 @@ FRAME." | |||
| 6954 | ((numberp (nth 2 sizes)) | 6961 | ((numberp (nth 2 sizes)) |
| 6955 | (- (* (nth 2 sizes) char-width) window-extra-width)) | 6962 | (- (* (nth 2 sizes) char-width) window-extra-width)) |
| 6956 | ((numberp max-width) | 6963 | ((numberp max-width) |
| 6957 | (- (* max-width char-width) window-extra-width)))) | 6964 | (- (* max-width char-width) window-extra-width)) |
| 6965 | (t display-height))) | ||
| 6958 | (min-width | 6966 | (min-width |
| 6959 | (cond | 6967 | (cond |
| 6960 | ((numberp (nth 3 sizes)) | 6968 | ((numberp (nth 3 sizes)) |
| @@ -6967,59 +6975,48 @@ FRAME." | |||
| 6967 | (value (window-text-pixel-size | 6975 | (value (window-text-pixel-size |
| 6968 | nil t t workarea-width workarea-height t)) | 6976 | nil t t workarea-width workarea-height t)) |
| 6969 | (width (+ (car value) (window-right-divider-width))) | 6977 | (width (+ (car value) (window-right-divider-width))) |
| 6970 | (height (+ (cdr value) (window-bottom-divider-width))) | 6978 | (height (+ (cdr value) (window-bottom-divider-width)))) |
| 6971 | remainder) | ||
| 6972 | (unless frame-resize-pixelwise | ||
| 6973 | ;; Round sizes to character sizes. | ||
| 6974 | (setq remainder (% width char-width)) | ||
| 6975 | (unless (zerop remainder) | ||
| 6976 | (setq width (+ width (- char-width remainder)))) | ||
| 6977 | (setq remainder (% height char-height)) | ||
| 6978 | (setq height (+ height (- char-height remainder)))) | ||
| 6979 | ;; Now make sure that we don't get larger than our rounded | ||
| 6980 | ;; maximum lines and columns. | ||
| 6981 | (when (> width fit-width) | ||
| 6982 | (setq width (- fit-width (% fit-width char-width)))) | ||
| 6983 | (when (> height fit-height) | ||
| 6984 | (setq height (- fit-height (% fit-height char-height)))) | ||
| 6985 | ;; Don't change height or width when the window's size is fixed | 6979 | ;; Don't change height or width when the window's size is fixed |
| 6986 | ;; in either direction. | 6980 | ;; in either direction. |
| 6987 | (cond | 6981 | (cond |
| 6988 | ((eq window-size-fixed 'height) | ||
| 6989 | (setq height nil)) | ||
| 6990 | ((eq window-size-fixed 'width) | 6982 | ((eq window-size-fixed 'width) |
| 6983 | (setq width nil)) | ||
| 6984 | ((eq window-size-fixed 'height) | ||
| 6991 | (setq height nil))) | 6985 | (setq height nil))) |
| 6986 | ;; Fit width to constraints. | ||
| 6992 | (when width | 6987 | (when width |
| 6988 | (unless frame-resize-pixelwise | ||
| 6989 | ;; Round to character sizes. | ||
| 6990 | (setq width (* (/ (+ width char-width -1) char-width) | ||
| 6991 | char-width))) | ||
| 6993 | ;; Fit to maximum and minimum widths. | 6992 | ;; Fit to maximum and minimum widths. |
| 6994 | (when max-width | 6993 | (setq width (max (min width max-width) min-width)) |
| 6995 | (setq width (min width max-width))) | ||
| 6996 | (when min-width | ||
| 6997 | (setq width (max width min-width))) | ||
| 6998 | ;; Add extra width. | 6994 | ;; Add extra width. |
| 6999 | (setq width (+ width extra-width)) | 6995 | (setq width (+ width extra-width)) |
| 7000 | ;; Preserve right margin. | 6996 | ;; Preserve margins. |
| 7001 | (let ((right (+ left width extra-width))) | 6997 | (let ((right (+ left width))) |
| 7002 | (cond | 6998 | (cond |
| 7003 | ((> right right-margin) | 6999 | ((> right right-margin) |
| 7004 | ;; Move frame to left (we don't know its real width). | 7000 | ;; Move frame to left (we don't know its real width). |
| 7005 | (setq left (min (- right-margin display-width) -1))) | 7001 | (setq left (max left-margin (- left (- right right-margin))))) |
| 7006 | ((< left left-margin) | 7002 | ((< left left-margin) |
| 7007 | ;; Move frame to right. | 7003 | ;; Move frame to right. |
| 7008 | (setq left left-margin))))) | 7004 | (setq left left-margin))))) |
| 7005 | ;; Fit height to constraints. | ||
| 7009 | (when height | 7006 | (when height |
| 7007 | (unless frame-resize-pixelwise | ||
| 7008 | (setq height (* (/ (+ height char-height -1) char-height) | ||
| 7009 | char-height))) | ||
| 7010 | ;; Fit to maximum and minimum heights. | 7010 | ;; Fit to maximum and minimum heights. |
| 7011 | (when max-height | 7011 | (setq height (max (min height max-height) min-height)) |
| 7012 | (setq height (min height max-height))) | ||
| 7013 | (when min-height | ||
| 7014 | (setq height (max height min-height))) | ||
| 7015 | ;; Add extra height. | 7012 | ;; Add extra height. |
| 7016 | (setq height (+ height extra-height)) | 7013 | (setq height (+ height extra-height)) |
| 7017 | ;; Preserve bottom and top margins. | 7014 | ;; Preserve margins. |
| 7018 | (let ((bottom (+ top height extra-height))) | 7015 | (let ((bottom (+ top height))) |
| 7019 | (cond | 7016 | (cond |
| 7020 | ((> bottom bottom-margin) | 7017 | ((> bottom bottom-margin) |
| 7021 | ;; Move frame up (we don't know its real height). | 7018 | ;; Move frame up (we don't know its real height). |
| 7022 | (setq top (min (- bottom-margin display-height) -1))) | 7019 | (setq top (max top-margin (- top (- bottom bottom-margin))))) |
| 7023 | ((< top top-margin) | 7020 | ((< top top-margin) |
| 7024 | ;; Move frame down. | 7021 | ;; Move frame down. |
| 7025 | (setq top top-margin))))) | 7022 | (setq top top-margin))))) |
diff --git a/src/ChangeLog b/src/ChangeLog index aa3a65ccb60..04f5f0d6bbe 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -11,6 +11,39 @@ | |||
| 11 | 11 | ||
| 12 | * fileio.c (Finsert_file_contents): Cancel the previous change. | 12 | * fileio.c (Finsert_file_contents): Cancel the previous change. |
| 13 | 13 | ||
| 14 | 2014-01-29 Martin Rudalics <rudalics@gmx.at> | ||
| 15 | |||
| 16 | * w32fns.c (x_set_tool_bar_lines): Don't clear area on frames | ||
| 17 | that are not visible. | ||
| 18 | |||
| 19 | 2014-01-29 Jan Djärv <jan.h.d@swipnet.se> | ||
| 20 | |||
| 21 | * xmenu.c (create_and_show_popup_menu): Handle case when no key | ||
| 22 | is grabbed (Bug#16565). | ||
| 23 | |||
| 24 | 2014-01-28 Martin Rudalics <rudalics@gmx.at> | ||
| 25 | |||
| 26 | * xdisp.c (last_max_ascent): Re-remove after erroneously | ||
| 27 | reintroducing it on 2013-11-30 and abolishing Dmitry's removal | ||
| 28 | from 2013-03-29. | ||
| 29 | (move_it_to): Re-remove reference to last_max_ascent. | ||
| 30 | (Fwindow_text_pixel_size): Add iterator's max_ascent and | ||
| 31 | max_descent here instead of calling line_bottom_y. Fix | ||
| 32 | doc-string. | ||
| 33 | |||
| 34 | 2014-01-28 Dmitry Antipov <dmantipov@yandex.ru> | ||
| 35 | |||
| 36 | * terminal.c (initial_free_frame_resources): New function. | ||
| 37 | (init_initial_terminal): Install new hook to free face cache | ||
| 38 | on initial frame and avoid memory leak. For details, see | ||
| 39 | <http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01974.html>. | ||
| 40 | * xfaces.c (free_frame_faces): Adjust comment. | ||
| 41 | |||
| 42 | 2014-01-26 Paul Eggert <eggert@cs.ucla.edu> | ||
| 43 | |||
| 44 | * data.c (Fstring_to_number): Document results if unparsable | ||
| 45 | (Bug#16551). | ||
| 46 | |||
| 14 | 2014-01-26 Jan Djärv <jan.h.d@swipnet.se> | 47 | 2014-01-26 Jan Djärv <jan.h.d@swipnet.se> |
| 15 | 48 | ||
| 16 | * xterm.c (x_focus_changed): Check for non-X terminal-frame (Bug#16540) | 49 | * xterm.c (x_focus_changed): Check for non-X terminal-frame (Bug#16540) |
diff --git a/src/data.c b/src/data.c index 2a64c1bbf82..91a1d8b75fb 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -2523,12 +2523,12 @@ NUMBER may be an integer or a floating point number. */) | |||
| 2523 | 2523 | ||
| 2524 | DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, | 2524 | DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, |
| 2525 | doc: /* Parse STRING as a decimal number and return the number. | 2525 | doc: /* Parse STRING as a decimal number and return the number. |
| 2526 | This parses both integers and floating point numbers. | 2526 | Ignore leading spaces and tabs, and all trailing chars. Return 0 if |
| 2527 | It ignores leading spaces and tabs, and all trailing chars. | 2527 | STRING cannot be parsed as an integer or floating point number. |
| 2528 | 2528 | ||
| 2529 | If BASE, interpret STRING as a number in that base. If BASE isn't | 2529 | If BASE, interpret STRING as a number in that base. If BASE isn't |
| 2530 | present, base 10 is used. BASE must be between 2 and 16 (inclusive). | 2530 | present, base 10 is used. BASE must be between 2 and 16 (inclusive). |
| 2531 | If the base used is not 10, STRING is always parsed as integer. */) | 2531 | If the base used is not 10, STRING is always parsed as an integer. */) |
| 2532 | (register Lisp_Object string, Lisp_Object base) | 2532 | (register Lisp_Object string, Lisp_Object base) |
| 2533 | { | 2533 | { |
| 2534 | register char *p; | 2534 | register char *p; |
diff --git a/src/lread.c b/src/lread.c index d6118d0a4e3..635862f2654 100644 --- a/src/lread.c +++ b/src/lread.c | |||
| @@ -3938,7 +3938,8 @@ OBARRAY defaults to the value of the variable `obarray'. */) | |||
| 3938 | 3938 | ||
| 3939 | /* Return the symbol in OBARRAY whose names matches the string | 3939 | /* Return the symbol in OBARRAY whose names matches the string |
| 3940 | of SIZE characters (SIZE_BYTE bytes) at PTR. | 3940 | of SIZE characters (SIZE_BYTE bytes) at PTR. |
| 3941 | If there is no such symbol in OBARRAY, return nil. | 3941 | If there is no such symbol, return the integer bucket number of |
| 3942 | where the symbol would be if it were present. | ||
| 3942 | 3943 | ||
| 3943 | Also store the bucket number in oblookup_last_bucket_number. */ | 3944 | Also store the bucket number in oblookup_last_bucket_number. */ |
| 3944 | 3945 | ||
diff --git a/src/terminal.c b/src/terminal.c index 15e7e8a4474..d0a38b97bb4 100644 --- a/src/terminal.c +++ b/src/terminal.c | |||
| @@ -500,7 +500,15 @@ selected frame's terminal). */) | |||
| 500 | return store_terminal_param (t, parameter, value); | 500 | return store_terminal_param (t, parameter, value); |
| 501 | } | 501 | } |
| 502 | 502 | ||
| 503 | 503 | /* Initial frame has no device-dependent output data, but has | |
| 504 | face cache which should be freed when the frame is deleted. */ | ||
| 505 | |||
| 506 | static void | ||
| 507 | initial_free_frame_resources (struct frame *f) | ||
| 508 | { | ||
| 509 | eassert (FRAME_INITIAL_P (f)); | ||
| 510 | free_frame_faces (f); | ||
| 511 | } | ||
| 504 | 512 | ||
| 505 | /* Create the bootstrap display terminal for the initial frame. | 513 | /* Create the bootstrap display terminal for the initial frame. |
| 506 | Returns a terminal of type output_initial. */ | 514 | Returns a terminal of type output_initial. */ |
| @@ -516,6 +524,7 @@ init_initial_terminal (void) | |||
| 516 | initial_terminal->name = xstrdup ("initial_terminal"); | 524 | initial_terminal->name = xstrdup ("initial_terminal"); |
| 517 | initial_terminal->kboard = initial_kboard; | 525 | initial_terminal->kboard = initial_kboard; |
| 518 | initial_terminal->delete_terminal_hook = &delete_initial_terminal; | 526 | initial_terminal->delete_terminal_hook = &delete_initial_terminal; |
| 527 | initial_terminal->delete_frame_hook = &initial_free_frame_resources; | ||
| 519 | /* All other hooks are NULL. */ | 528 | /* All other hooks are NULL. */ |
| 520 | 529 | ||
| 521 | return initial_terminal; | 530 | return initial_terminal; |
diff --git a/src/w32fns.c b/src/w32fns.c index 8d64af5b93d..98456cd20d4 100644 --- a/src/w32fns.c +++ b/src/w32fns.c | |||
| @@ -1713,7 +1713,7 @@ x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval) | |||
| 1713 | /* If the tool bar gets smaller, the internal border below it | 1713 | /* If the tool bar gets smaller, the internal border below it |
| 1714 | has to be cleared. It was formerly part of the display | 1714 | has to be cleared. It was formerly part of the display |
| 1715 | of the larger tool bar, and updating windows won't clear it. */ | 1715 | of the larger tool bar, and updating windows won't clear it. */ |
| 1716 | if (FRAME_INTERNAL_BORDER_WIDTH (f) != 0) | 1716 | if (FRAME_INTERNAL_BORDER_WIDTH (f) != 0 && FRAME_VISIBLE_P (f)) |
| 1717 | { | 1717 | { |
| 1718 | int height = FRAME_INTERNAL_BORDER_WIDTH (f); | 1718 | int height = FRAME_INTERNAL_BORDER_WIDTH (f); |
| 1719 | int width = FRAME_PIXEL_WIDTH (f); | 1719 | int width = FRAME_PIXEL_WIDTH (f); |
diff --git a/src/xdisp.c b/src/xdisp.c index 7717f1c2861..b5dec35568a 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -571,7 +571,7 @@ static struct glyph scratch_glyphs[MAX_SCRATCH_GLYPHS]; | |||
| 571 | 571 | ||
| 572 | /* Ascent and height of the last line processed by move_it_to. */ | 572 | /* Ascent and height of the last line processed by move_it_to. */ |
| 573 | 573 | ||
| 574 | static int last_max_ascent, last_height; | 574 | static int last_height; |
| 575 | 575 | ||
| 576 | /* Non-zero if there's a help-echo in the echo area. */ | 576 | /* Non-zero if there's a help-echo in the echo area. */ |
| 577 | 577 | ||
| @@ -9099,7 +9099,6 @@ move_it_to (struct it *it, ptrdiff_t to_charpos, int to_x, int to_y, int to_vpos | |||
| 9099 | it->current_y += it->max_ascent + it->max_descent; | 9099 | it->current_y += it->max_ascent + it->max_descent; |
| 9100 | ++it->vpos; | 9100 | ++it->vpos; |
| 9101 | last_height = it->max_ascent + it->max_descent; | 9101 | last_height = it->max_ascent + it->max_descent; |
| 9102 | last_max_ascent = it->max_ascent; | ||
| 9103 | it->max_ascent = it->max_descent = 0; | 9102 | it->max_ascent = it->max_descent = 0; |
| 9104 | } | 9103 | } |
| 9105 | 9104 | ||
| @@ -9126,7 +9125,6 @@ move_it_to (struct it *it, ptrdiff_t to_charpos, int to_x, int to_y, int to_vpos | |||
| 9126 | it->current_y += it->max_ascent + it->max_descent; | 9125 | it->current_y += it->max_ascent + it->max_descent; |
| 9127 | ++it->vpos; | 9126 | ++it->vpos; |
| 9128 | last_height = it->max_ascent + it->max_descent; | 9127 | last_height = it->max_ascent + it->max_descent; |
| 9129 | last_max_ascent = it->max_ascent; | ||
| 9130 | } | 9128 | } |
| 9131 | 9129 | ||
| 9132 | if (backup_data) | 9130 | if (backup_data) |
| @@ -9511,7 +9509,7 @@ Optional argument MODE_AND_HEADER_LINE nil or omitted means do not | |||
| 9511 | include the height of the mode- or header-line of WINDOW in the return | 9509 | include the height of the mode- or header-line of WINDOW in the return |
| 9512 | value. If it is either the symbol `mode-line' or `header-line', include | 9510 | value. If it is either the symbol `mode-line' or `header-line', include |
| 9513 | only the height of that line, if present, in the return value. If t, | 9511 | only the height of that line, if present, in the return value. If t, |
| 9514 | include the height of any of these lines in the return value. */) | 9512 | include the height of both, if present, in the return value. */) |
| 9515 | (Lisp_Object window, Lisp_Object from, Lisp_Object to, Lisp_Object x_limit, Lisp_Object y_limit, | 9513 | (Lisp_Object window, Lisp_Object from, Lisp_Object to, Lisp_Object x_limit, Lisp_Object y_limit, |
| 9516 | Lisp_Object mode_and_header_line) | 9514 | Lisp_Object mode_and_header_line) |
| 9517 | { | 9515 | { |
| @@ -9579,7 +9577,6 @@ include the height of any of these lines in the return value. */) | |||
| 9579 | SET_TEXT_POS (startp, start, CHAR_TO_BYTE (start)); | 9577 | SET_TEXT_POS (startp, start, CHAR_TO_BYTE (start)); |
| 9580 | start_display (&it, w, startp); | 9578 | start_display (&it, w, startp); |
| 9581 | 9579 | ||
| 9582 | /** move_it_vertically_backward (&it, 0); **/ | ||
| 9583 | if (NILP (x_limit)) | 9580 | if (NILP (x_limit)) |
| 9584 | x = move_it_to (&it, end, -1, max_y, -1, MOVE_TO_POS | MOVE_TO_Y); | 9581 | x = move_it_to (&it, end, -1, max_y, -1, MOVE_TO_POS | MOVE_TO_Y); |
| 9585 | else | 9582 | else |
| @@ -9593,14 +9590,7 @@ include the height of any of these lines in the return value. */) | |||
| 9593 | MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y); | 9590 | MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y); |
| 9594 | } | 9591 | } |
| 9595 | 9592 | ||
| 9596 | if (start == end) | 9593 | y = it.current_y + it.max_ascent + it.max_descent; |
| 9597 | y = it.current_y; | ||
| 9598 | else | ||
| 9599 | { | ||
| 9600 | /* Count last line. */ | ||
| 9601 | last_height = 0; | ||
| 9602 | y = line_bottom_y (&it); /* - y; */ | ||
| 9603 | } | ||
| 9604 | 9594 | ||
| 9605 | if (!EQ (mode_and_header_line, Qheader_line) | 9595 | if (!EQ (mode_and_header_line, Qheader_line) |
| 9606 | && !EQ (mode_and_header_line, Qt)) | 9596 | && !EQ (mode_and_header_line, Qt)) |
diff --git a/src/xfaces.c b/src/xfaces.c index 4321eb3dd8c..f2d777a12b1 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -694,7 +694,8 @@ init_frame_faces (struct frame *f) | |||
| 694 | } | 694 | } |
| 695 | 695 | ||
| 696 | 696 | ||
| 697 | /* Free face cache of frame F. Called from delete_frame. */ | 697 | /* Free face cache of frame F. Called from frame-dependent |
| 698 | resource freeing function, e.g. (x|tty)_free_frame_resources. */ | ||
| 698 | 699 | ||
| 699 | void | 700 | void |
| 700 | free_frame_faces (struct frame *f) | 701 | free_frame_faces (struct frame *f) |
diff --git a/src/xmenu.c b/src/xmenu.c index 6f628527a6d..c101d9f5975 100644 --- a/src/xmenu.c +++ b/src/xmenu.c | |||
| @@ -1306,6 +1306,8 @@ create_and_show_popup_menu (struct frame *f, widget_value *first_wv, | |||
| 1306 | for (i = 0; i < 5; i++) | 1306 | for (i = 0; i < 5; i++) |
| 1307 | if (FRAME_DISPLAY_INFO (f)->grabbed & (1 << i)) | 1307 | if (FRAME_DISPLAY_INFO (f)->grabbed & (1 << i)) |
| 1308 | break; | 1308 | break; |
| 1309 | // If keys aren't grabbed (i.e. a mouse up event), use 0. | ||
| 1310 | if (i == 5) i = 0; | ||
| 1309 | } | 1311 | } |
| 1310 | 1312 | ||
| 1311 | /* Display the menu. */ | 1313 | /* Display the menu. */ |
diff --git a/test/ChangeLog b/test/ChangeLog index 4b931acbf22..50ffd7c3957 100644 --- a/test/ChangeLog +++ b/test/ChangeLog | |||
| @@ -1,3 +1,18 @@ | |||
| 1 | 2014-01-27 Michael Albinus <michael.albinus@gmx.de> | ||
| 2 | |||
| 3 | * automated/file-notify-tests.el (file-notify--deftest-remote): | ||
| 4 | Do not skip when the local test has failed. They are unrelated. | ||
| 5 | (file-notify--wait-for-events): Use `sit-for'. Let-bind | ||
| 6 | `noninteractive' to nil, otherwise `sit-for' could be degraded to | ||
| 7 | `sleep-for'. | ||
| 8 | (file-notify-test02-events): Check for `file-remote-p' instead of | ||
| 9 | `file-notify--test-remote-enabled'. | ||
| 10 | |||
| 11 | 2014-01-26 Michael Albinus <michael.albinus@gmx.de> | ||
| 12 | |||
| 13 | * automated/file-notify-tests.el (file-notify-test02-events): | ||
| 14 | Let test case fail for Bug#16519. | ||
| 15 | |||
| 1 | 2014-01-22 Michael Albinus <michael.albinus@gmx.de> | 16 | 2014-01-22 Michael Albinus <michael.albinus@gmx.de> |
| 2 | 17 | ||
| 3 | * automated/file-notify-tests.el (file-notify-test02-events): | 18 | * automated/file-notify-tests.el (file-notify-test02-events): |
diff --git a/test/automated/file-notify-tests.el b/test/automated/file-notify-tests.el index de0f32b5e94..e92595f0ec6 100644 --- a/test/automated/file-notify-tests.el +++ b/test/automated/file-notify-tests.el | |||
| @@ -102,11 +102,6 @@ being the result.") | |||
| 102 | file-notify-test-remote-temporary-file-directory) | 102 | file-notify-test-remote-temporary-file-directory) |
| 103 | (ert-test (ert-get-test ',test))) | 103 | (ert-test (ert-get-test ',test))) |
| 104 | (skip-unless (file-notify--test-remote-enabled)) | 104 | (skip-unless (file-notify--test-remote-enabled)) |
| 105 | ;; The local test could have passed, skipped, or quit. All of | ||
| 106 | ;; these results should not prevent us to run the remote test. | ||
| 107 | ;; That's why we skip only for failed local tests. | ||
| 108 | (skip-unless | ||
| 109 | (not (ert-test-failed-p (ert-test-most-recent-result ert-test)))) | ||
| 110 | (tramp-cleanup-connection | 105 | (tramp-cleanup-connection |
| 111 | (tramp-dissect-file-name temporary-file-directory) nil 'keep-password) | 106 | (tramp-dissect-file-name temporary-file-directory) nil 'keep-password) |
| 112 | (funcall (ert-test-body ert-test))))) | 107 | (funcall (ert-test-body ert-test))))) |
| @@ -189,16 +184,20 @@ Save the result in `file-notify--test-results', for later analysis." | |||
| 189 | 184 | ||
| 190 | (defmacro file-notify--wait-for-events (timeout until) | 185 | (defmacro file-notify--wait-for-events (timeout until) |
| 191 | "Wait for file notification events until form UNTIL is true. | 186 | "Wait for file notification events until form UNTIL is true. |
| 192 | TIMEOUT is the maximum time to wait for." | 187 | TIMEOUT is the maximum time to wait for, in seconds." |
| 193 | `(with-timeout (,timeout (ignore)) | 188 | `(with-timeout (,timeout (ignore)) |
| 194 | (while (null ,until) | 189 | (while (null ,until) |
| 195 | ;; glib events, and remote events. | 190 | (let (noninteractive) |
| 196 | (accept-process-output nil 0.1) | 191 | (sit-for 0.1 'nodisplay))))) |
| 197 | ;; inotify events. | ||
| 198 | (read-event nil nil 0.1)))) | ||
| 199 | 192 | ||
| 200 | (ert-deftest file-notify-test02-events () | 193 | (ert-deftest file-notify-test02-events () |
| 201 | "Check file creation/removal notifications." | 194 | "Check file creation/removal notifications." |
| 195 | ;; Bug#16519. | ||
| 196 | :expected-result | ||
| 197 | (if (and noninteractive | ||
| 198 | (not (file-remote-p temporary-file-directory)) | ||
| 199 | (memq file-notify--library '(gfilenotify w32notify))) | ||
| 200 | :failed :passed) | ||
| 202 | (skip-unless (file-notify--test-local-enabled)) | 201 | (skip-unless (file-notify--test-local-enabled)) |
| 203 | (let (desc) | 202 | (let (desc) |
| 204 | (unwind-protect | 203 | (unwind-protect |
| @@ -237,9 +236,7 @@ TIMEOUT is the maximum time to wait for." | |||
| 237 | (ignore-errors (delete-file file-notify--test-tmpfile)) | 236 | (ignore-errors (delete-file file-notify--test-tmpfile)) |
| 238 | (ignore-errors (delete-file file-notify--test-tmpfile1)))) | 237 | (ignore-errors (delete-file file-notify--test-tmpfile1)))) |
| 239 | 238 | ||
| 240 | (should | 239 | (should file-notify--test-results) |
| 241 | (or file-notify--test-results | ||
| 242 | (and noninteractive (eq file-notify--library 'gfilenotify)))) ;; Bug#16519. | ||
| 243 | (dolist (result file-notify--test-results) | 240 | (dolist (result file-notify--test-results) |
| 244 | ;(message "%s" (ert-test-result-messages result)) | 241 | ;(message "%s" (ert-test-result-messages result)) |
| 245 | (when (ert-test-failed-p result) | 242 | (when (ert-test-failed-p result) |