aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenichi Handa2014-01-29 22:39:00 +0900
committerKenichi Handa2014-01-29 22:39:00 +0900
commit908df335d0ccb2779f23c695f355a9939fe07bf2 (patch)
tree1cf4f8d633364c4833ed37d286104d8e4f7c8b0f
parent52840a9cc870d3e8946b6edebe2b0a0a23d23cec (diff)
parent5442c6cebbf80898f83d211d5b0d34cbfb289490 (diff)
downloademacs-908df335d0ccb2779f23c695f355a9939fe07bf2.tar.gz
emacs-908df335d0ccb2779f23c695f355a9939fe07bf2.zip
merge trunk
-rw-r--r--doc/emacs/ChangeLog18
-rw-r--r--doc/emacs/buffers.texi2
-rw-r--r--doc/emacs/calendar.texi4
-rw-r--r--doc/emacs/dired.texi30
-rw-r--r--doc/emacs/indent.texi19
-rw-r--r--doc/emacs/killing.texi9
-rw-r--r--doc/emacs/text.texi7
-rw-r--r--doc/lispref/ChangeLog4
-rw-r--r--doc/lispref/text.texi23
-rw-r--r--doc/misc/ChangeLog9
-rw-r--r--doc/misc/idlwave.texi14
-rw-r--r--doc/misc/remember.texi4
-rw-r--r--doc/misc/vip.texi8
-rw-r--r--doc/misc/viper.texi130
-rw-r--r--etc/NEWS128
-rw-r--r--etc/TODO3
-rw-r--r--lisp/ChangeLog60
-rw-r--r--lisp/calendar/timeclock.el3
-rw-r--r--lisp/dired.el13
-rw-r--r--lisp/emulation/cua-base.el7
-rw-r--r--lisp/emulation/viper-ex.el3
-rw-r--r--lisp/emulation/viper-init.el2
-rw-r--r--lisp/emulation/viper-keym.el4
-rw-r--r--lisp/emulation/viper-macs.el22
-rw-r--r--lisp/emulation/viper.el33
-rw-r--r--lisp/hippie-exp.el2
-rw-r--r--lisp/ido.el1
-rw-r--r--lisp/indent.el15
-rw-r--r--lisp/net/quickurl.el1
-rw-r--r--lisp/obsolete/otodo-mode.el7
-rw-r--r--lisp/progmodes/hideif.el247
-rw-r--r--lisp/progmodes/idlwave.el1
-rw-r--r--lisp/saveplace.el1
-rw-r--r--lisp/shadowfile.el28
-rw-r--r--lisp/simple.el36
-rw-r--r--lisp/strokes.el15
-rw-r--r--lisp/textmodes/fill.el8
-rw-r--r--lisp/textmodes/remember.el3
-rw-r--r--lisp/type-break.el4
-rw-r--r--lisp/vc/pcvs.el5
-rw-r--r--lisp/whitespace.el2
-rw-r--r--lisp/window.el97
-rw-r--r--src/ChangeLog33
-rw-r--r--src/data.c6
-rw-r--r--src/lread.c3
-rw-r--r--src/terminal.c11
-rw-r--r--src/w32fns.c2
-rw-r--r--src/xdisp.c16
-rw-r--r--src/xfaces.c3
-rw-r--r--src/xmenu.c2
-rw-r--r--test/ChangeLog15
-rw-r--r--test/automated/file-notify-tests.el23
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 @@
12014-01-29 Glenn Morris <rgm@gnu.org>
2
3 * killing.texi (Deletion): Mention cycle-spacing.
4
52014-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
112014-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
12014-01-26 Glenn Morris <rgm@gnu.org> 192014-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
177line in the list shows one buffer's name, major mode and visited file. 177line in the list shows one buffer's name, size, major mode and visited file.
178The buffers are listed in the order that they were current; the 178The buffers are listed in the order that they were current; the
179buffers that were current most recently come first. 179buffers 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
1616then, only an explicit @kbd{M-x timeclock-out} or @kbd{M-x 1616then, only an explicit @kbd{M-x timeclock-out} or @kbd{M-x
1617timeclock-change} will tell Emacs that the current interval is over. 1617timeclock-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
1623called @file{.timelog} in your home directory. You can specify a 1623called @file{~/.emacs.d/timelog}. You can specify a
1624different name for this file by customizing the variable 1624different 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
1626you change the value of any of timeclock's customizable variables, you 1626you 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
1382a regular expression search. @xref{Repeat Isearch}, for information 1382a regular expression search. @xref{Repeat Isearch}, for information
1383about search repetition. 1383about 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
1403it added to the kill ring, so you can use it to display the list of 1403it added to the kill ring, so you can use it to display the list of
1404currently marked files in the echo area. 1404currently 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
1412details, such as ownership or file permissions, are visible in the
1413current Dired buffer. By default, it also hides the targets of
1414symbolic links, and all lines other than the header line and
1415file/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
1440to the file in that directory. Precisely which action is taken is 1453to the file in that directory. Precisely which action is taken is
1441determined by the originating program. Dragging files out of a Dired 1454determined by the originating program. Dragging files out of a Dired
1442buffer is currently not supported. 1455buffer 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
1451details, such as ownership or file permissions, are hidden. If the
1452variable @code{dired-hide-details-hide-symlink-targets} is
1453non-@code{nil} then targets of symbolic links are hidden as well. A
1454non-@code{nil} value for the variable
1455@code{dired-hide-details-hide-information-lines} means that all lines
1456other than the header and lines containing files and directories are
1457hidden.
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
158are used as stopping points by @key{TAB} when inserting whitespace in 158are used as stopping points by @key{TAB} when inserting whitespace in
159Text mode and related modes (@pxref{Indentation}), and by commands 159Text mode and related modes (@pxref{Indentation}), and by commands
160like @kbd{M-i} (@pxref{Indentation Commands}). By default, tab stops 160like @kbd{M-i} (@pxref{Indentation Commands}). The variable
161are located every 8 columns. These positions are stored in the 161@code{tab-stop-list} controls these positions. The default value
162variable @code{tab-stop-list}, whose value is a list of column numbers 162is @code{nil}, which means a tab stop every 8 columns. The value
163in increasing order. 163can also be a list of column numbers (in increasing order) at which to
164place tab stops. Emacs extends the list forever by repeating the
165difference 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
180The first line contains a colon at each tab stop. The numbers on the 182The first line contains a colon at each tab stop. The numbers on the
181next two lines are present just to indicate where the colons are. It 183next two lines are present just to indicate where the colons are.
182is implicitly extended to infinity by repeating the last step. 184If the value of @code{tab-stop-list} is @code{nil}, as it is by default,
185no 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
185colons on the desired columns. The buffer uses Overwrite mode 188colons 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
190tab stops forever by repeating the difference between the last two
191explicit stops that you place. When you are done, type @kbd{C-c C-c} to make
187the new tab stops take effect. Normally, the new tab stop settings 192the new tab stops take effect. Normally, the new tab stop settings
188apply to all buffers. However, if you have made the 193apply 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
109delete all the text in the region if it is active (@pxref{Using 109delete all the text in the region if it is active (@pxref{Using
110Region}). 110Region}).
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
119characters: spaces, tabs and newlines. @kbd{M-\} 118characters: 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
126leaves @var{n} spaces before point if @var{n} is positive; if @var{n} 125leaves @var{n} spaces before point if @var{n} is positive; if @var{n}
127is negative, it deletes newlines in addition to spaces and tabs, 126is negative, it deletes newlines in addition to spaces and tabs,
128leaving @var{-n} spaces before point. 127leaving @var{-n} spaces before point. The command @code{cycle-spacing}
128acts like a more flexible version of @code{just-one-space}. It
129does different things if you call it repeatedly in succession.
130The first call acts like @code{just-one-space}, the next removes
131all 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
131after the current line. If the current line is blank, it deletes all 134after 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
563arguments, with point positioned where Emacs is considering breaking a 563arguments, with point positioned where Emacs is considering breaking a
564line. If a function returns a non-@code{nil} value, Emacs will not 564line. If a function returns a non-@code{nil} value, Emacs will not
565break the line there. Two functions you can use are 565break 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
567a sentence or before the last) and @code{fill-french-nobreak-p} (don't 567a sentence or before the last); @code{fill-single-char-nobreak-p}
568break 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 @@
12014-01-28 Glenn Morris <rgm@gnu.org>
2
3 * text.texi (Indent Tabs): Update related to tab-stops.
4
12014-01-24 Glenn Morris <rgm@gnu.org> 52014-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
775This function deletes blank lines surrounding point. If point is on a 778This function deletes blank lines surrounding point. If point is on a
776blank line with one or more blank lines before or after it, then all but 779blank 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
2462This command inserts spaces or tabs before point, up to the next tab 2465This command inserts spaces or tabs before point, up to the next tab
2463stop column defined by @code{tab-stop-list}. It searches the list for 2466stop column defined by @code{tab-stop-list}.
2464an element greater than the current column number, and uses that element
2465as the column to indent to. It does nothing if no such element is
2466found.
2467@end deffn 2467@end deffn
2468 2468
2469@defopt tab-stop-list 2469@defopt tab-stop-list
2470This variable is the list of tab stop columns used by 2470This 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 2471It should be either @code{nil}, or a list of increasing integers,
2472order. The tab stop columns need not be evenly spaced. 2472which need not be evenly spaced. The list is implicitly
2473 2473extended to infinity through repetition of the interval between the
2474Use @kbd{M-x edit-tab-stops} to edit the location of tab stops 2474last and penultimate elements (or @code{tab-width} if the list has
2475interactively. 2475fewer than two elements). A value of @code{nil} means a tab stop
2476every @code{tab-width} columns.
2477
2478Use @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 @@
12014-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
12014-01-25 Xue Fuqiao <xfq.free@gmail.com> 102014-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
689selected by default) and click on the @samp{Scan&Save} button. Then 689selected by default) and click on the @samp{Scan&Save} button. Then
690go for a cup of coffee while IDLWAVE collects information for each and 690go for a cup of coffee while IDLWAVE collects information for each and
691every IDL routine on your search path. All this information is 691every IDL routine on your search path. All this information is
692written to the file @file{.idlwave/idlusercat.el} in your home 692written to the file @file{~/.emacs.d/idlwave/idlusercat.el}
693directory and will from now on automatically load whenever you use 693and will from now on automatically load whenever you use
694IDLWAVE@. You may find it necessary to rebuild the catalog on occasion 694IDLWAVE@. You may find it necessary to rebuild the catalog on occasion
695as your local libraries change, or build a library catalog for those 695as your local libraries change, or build a library catalog for those
696directories instead. Invoke routine info (@kbd{C-c ?}) or completion 696directories instead. Invoke routine info (@kbd{C-c ?}) or completion
@@ -1262,7 +1262,7 @@ directly with IDL, along with an XML-based catalog of routine
1262information. By default, IDLWAVE automatically attempts to convert this 1262information. By default, IDLWAVE automatically attempts to convert this
1263XML catalog into a format Emacs can more easily understand, and caches 1263XML catalog into a format Emacs can more easily understand, and caches
1264this information in your @code{idlwave_config_directory} 1264this 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
1266it is newer than the current cached version. You can force rescan with 1266it is newer than the current cached version. You can force rescan with
1267the menu entry @code{IDLWAVE->Routine Info->Rescan XML Help Catalog}. 1267the 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.
2466Non-@code{nil} means preserve command history between sessions. 2466Non-@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})
2470The file in which the command history of the idlwave shell is saved. 2470The file in which the command history of the idlwave shell is saved.
2471Unless it's an absolute path, it goes in 2471Unless 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
3518to setup directories for user catalog scan (@pxref{User Catalog} for 3518to setup directories for user catalog scan (@pxref{User Catalog} for
3519more on this variable). Note that, before the shell is running, IDLWAVE 3519more on this variable). Note that, before the shell is running, IDLWAVE
3520can only know about the IDL search path by consulting the file pointed 3520can only know about the IDL search path by consulting the file pointed
3521to by @code{idlwave-path-file} (@file{~/.idlwave/idlpath.el}, by 3521to by @code{idlwave-path-file} (@file{~/.emacs.d/idlwave/idlpath.el}, by
3522default). If @code{idlwave-auto-write-path} is enabled (which is the 3522default). If @code{idlwave-auto-write-path} is enabled (which is the
3523default), the paths are written out whenever the IDLWAVE shell is 3523default), the paths are written out whenever the IDLWAVE shell is
3524started. 3524started.
@@ -3540,7 +3540,7 @@ locating HTML help and the IDL Assistant for IDL v6.2 and later. Under
3540Unix/MacOSX, will be obtained from the Shell and recorded, if run. 3540Unix/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})
3544Default path where IDLWAVE saves configuration information, a user 3544Default path where IDLWAVE saves configuration information, a user
3545catalog (if any), and a cached scan of the XML catalog (IDL v6.2 and 3545catalog (if any), and a cached scan of the XML catalog (IDL v6.2 and
3546later). 3546later).
@@ -3629,7 +3629,7 @@ performance is a problem and/or the catalogs are not needed.
3629 3629
3630The user catalog is the old routine catalog system. It is produced 3630The user catalog is the old routine catalog system. It is produced
3631within Emacs, and stored in a single file in the user's home directory 3631within 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
3633are more flexible, there may be reasons to prefer a user catalog 3633are more flexible, there may be reasons to prefer a user catalog
3634instead, including: 3634instead, 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
203the @samp{*Remember*} buffer. 203the @samp{*Remember*} buffer.
204@end itemize 204@end itemize
205 205
206By default, @code{remember-finalize} saves the note in @file{~/.notes}. 206By default, @code{remember-finalize} saves the note in @file{~/emacs.d/notes}.
207You can edit it now to see the remembered and timestamped note. You 207You can edit it now to see the remembered and timestamped note. You
208can edit this file however you want. New entries will always be added 208can edit this file however you want. New entries will always be added
209to the end. 209to the end.
@@ -213,7 +213,7 @@ remember} displays a @samp{*Remember*} buffer with the region as the
213initial contents. 213initial contents.
214 214
215As a simple beginning, you can start by using the Text File backend, 215As a simple beginning, you can start by using the Text File backend,
216keeping your @file{~/.notes} file in outline-mode format, with a final 216keeping your @file{~/.emacs.d/notes} file in outline-mode format, with a final
217entry called @samp{* Raw data}. Remembered data will be added to the 217entry called @samp{* Raw data}. Remembered data will be added to the
218end of the file. Every so often, you can move the data that gets 218end of the file. Every so often, you can move the data that gets
219appended there into other files, or reorganize your document. 219appended 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
1866If you have a file called @file{.vip} in your home directory, then it 1866If you have a file called @file{~/.emacs.d/vip} (or @file{~/.vip}), then it
1867will also be loaded when VIP is loaded. This file is thus useful for 1867will also be loaded when VIP is loaded. This file is thus useful for
1868customizing VIP. 1868customizing 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
1905You can reset these constants in VIP by the Ex command @kbd{set}. Or you 1905You can reset these constants in VIP by the Ex command @kbd{set}. Or you
1906can include a line like this in your @file{.vip} file: 1906can 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:
1916VIP uses @code{vip-command-mode-map} as the @dfn{local keymap} for vi mode. 1916VIP uses @code{vip-command-mode-map} as the @dfn{local keymap} for vi mode.
1917For example, in vi mode, @key{SPC} is bound to the function 1917For 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
1920file. 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
170in some cases, especially in the Vi Insert state. John Hawkins 170in 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
172enables additional Emacs bindings under Viper. These customizations can be 172enables additional Emacs bindings under Viper. These customizations can be
173included in your @file{~/.viper} file and are found at the following URL: 173included in your @file{~/.emacs.d/viper} file and are found at the
174@file{http://traeki.freeshell.org/files/viper-sample}. 174following 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
329version 20.0, Emacsen have an interactive interface, which simplifies the 329version 20.0, Emacsen have an interactive interface, which simplifies the
330job of customization significantly. 330job of customization significantly.
331 331
332Viper also uses the file @file{~/.viper} for Viper-specific customization. 332Viper also uses the file @file{~/.emacs.d/viper} for Viper-specific customization.
333The location of Viper customization file can be changed by setting the 333The location of Viper customization file can be changed by setting the
334variable @code{viper-custom-file-name} in @file{.emacs} @emph{prior} to loading 334variable @code{viper-custom-file-name} in @file{.emacs} @emph{prior} to loading
335Viper. 335Viper.
336 336
337The latest versions of Emacs have an interactive customization facility, 337The latest versions of Emacs have an interactive customization facility,
338which allows you to (mostly) bypass the use of the @file{.emacs} and 338which 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
340facility from within Viper's VI state by executing the Ex command 340facility 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
611need for deleting file names that Emacs provides in its prompts. (This is 611need for deleting file names that Emacs provides in its prompts. (This is
612usually convenient, but occasionally the prompt may suggest a wrong file 612usually convenient, but occasionally the prompt may suggest a wrong file
613name for you.) If you see a prompt @kbd{/usr/foo/} and you wish to edit the 613name for you.) If you see a prompt @kbd{/usr/foo/} and you wish to edit the
614file @kbd{~/.viper}, you don't have to erase the prompt. Instead, simply 614file @kbd{~/.file}, you don't have to erase the prompt. Instead, simply
615continue typing what you need. Emacs will interpret @kbd{/usr/foo/~/.viper} 615continue typing what you need. Emacs will interpret @kbd{/usr/foo/~/.file}
616correctly. Similarly, if the prompt is @kbd{~/foo/} and you need to get to 616correctly. 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.
795Initially, the minibuffer comes up in Insert state. 795Initially, the minibuffer comes up in Insert state.
796 796
797Some users prefer plain Emacs bindings in the minibuffer. To this end, set 797Some 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. 799your Viper customization file. @xref{Customization}, to learn how to do this.
800 800
801When the minibuffer changes Viper states, you will notice that the appearance 801When the minibuffer changes Viper states, you will notice that the appearance
802of the text there changes as well. This is useful because the minibuffer 802of 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
990buffers. These can be seen in the @kbd{:args} list and switched using 990buffers. 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
992specify @code{(setq ex-cycle-through-non-files t)} in your @file{.viper} 992specify @code{(setq ex-cycle-through-non-files t)} in your
993file. @xref{Customization}, for details. 993Viper 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
1134Viper provides buffer search, the ability to search the buffer for a region 1134Viper provides buffer search, the ability to search the buffer for a region
1135under the cursor. You have to turn this on in @file{.viper} either by calling 1135under the cursor. You have to turn this on in your Viper customization file
1136either 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
1185in @file{~/.viper}. If you want to change how patterns are highlighted, you 1186in your Viper customization file. If you want to change how patterns are
1186will have to change @code{viper-search-face} to your liking. The easiest 1187highlighted, you will have to change @code{viper-search-face} to your liking.
1187way to do this is to use Emacs customization widget, which is accessible 1188The easiest way to do this is to use Emacs customization widget, which is
1188from the menubar. Viper customization group is located under the 1189accessible 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
1191faces are grouped together under Viper's 1192faces are grouped together under Viper's
@@ -1225,8 +1226,8 @@ Facilities like this make Vi's @kbd{:ab} command obsolete.
1225 1226
1226Viper can be set free from the line--limited movements in Vi, such as @kbd{l} 1227Viper can be set free from the line--limited movements in Vi, such as @kbd{l}
1227refusing to move beyond the line, @key{ESC} moving one character back, 1228refusing to move beyond the line, @key{ESC} moving one character back,
1228etc. These derive from Ex, which is a line editor. If your @file{.viper} 1229etc. These derive from Ex, which is a line editor. If your
1229contains 1230Viper 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
1306hit @kbd{C-x} followed by @kbd{2}, then the current window will be split 1307hit @kbd{C-x} followed by @kbd{2}, then the current window will be split
1307into 2. Except for novice users, @kbd{C-c} is also set to execute an Emacs 1308into 2. Except for novice users, @kbd{C-c} is also set to execute an Emacs
1308command from the current major mode. @key{ESC} will do the same, if you 1309command from the current major mode. @key{ESC} will do the same, if you
1309configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to @code{nil} 1310configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to
1310in @file{.viper}. @xref{Customization}. @kbd{C-\} in Insert, Replace, or Vi 1311@code{nil} in your Viper customization file. @xref{Customization}.
1311states 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{\}
1314Escape to Emacs to execute a single Emacs command. For instance, 1316Escape 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
1577Elisp code in a @file{.viper} file in your home directory. Viper 1579Elisp code in a @file{~/.emacs.d/viper} (or @file{~/.viper}) file.
1578loads @file{.viper} just before it does the binding for mode 1580Viper loads this file just before it does the binding for mode hooks.
1579hooks. This is recommended for experts only. 1581This is recommended for experts only.
1580@item 1582@item
1581@cindex .emacs 1583@cindex .emacs
1582Elisp code in your @file{.emacs} file before and after the @code{(require 1584Elisp 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
1591customizable variables easily. This method is good for novice and 1593customizable variables easily. This method is good for novice and
1592experts alike. The customization code in the form of Lisp commands will be 1594experts alike. The customization code in the form of Lisp commands will be
1593placed in @file{~/.emacs} or some other customization file depending on the 1595placed in @file{~/.emacs} or some other customization file depending on the
1594version of Emacs that you use. Still, it is recommended to separate 1596version of Emacs that you use. Still, it is recommended to separate
1595Viper-related customization produced by the Emacs customization widget 1597Viper-related customization produced by the Emacs customization widget
1596and keep it in the @file{.viper} file. 1598and keep it in your Viper customization file.
1597 1599
1598Some advanced customization cannot be accomplished this way, however, and 1600Some advanced customization cannot be accomplished this way, however, and
1599has to be done in Emacs Lisp in the @file{.viper} file. For the common 1601has to be done in Emacs Lisp in your Viper customization file. For the common
1600cases, examples are provided that you can use directly. 1602cases, 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
1753for each buffer (or you can add @code{viper-mode} to the appropriate major mode 1755for each buffer (or you can add @code{viper-mode} to the appropriate major mode
1754hooks using @code{viper-load-hook}). 1756hooks using @code{viper-load-hook}).
1755 1757
1756This option must be set in the file @file{~/.viper}. 1758This 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"
1758File used for Viper-specific customization. 1760File used for Viper-specific customization.
1759Change this setting, if you want. Must be set in @file{.emacs} (not @file{.viper}!) 1761Change this setting, if you want. Must be set in @file{.emacs}
1760before Viper is loaded. Note that you 1762before Viper is loaded. Note that you
1761have to set it as a string inside double quotes. 1763have 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},
1808which checks the second key by which it is invoked to see which of the 1810which checks the second key by which it is invoked to see which of the
1809previous commands to invoke. Viper binds @kbd{f12 1} and @kbd{f12 2} only, 1811previous commands to invoke. Viper binds @kbd{f12 1} and @kbd{f12 2} only,
1810but the user can bind more in @file{~/.viper}. @xref{Vi Macros}, for how to do 1812but the user can bind more in his/her Viper customization file.
1811this. 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
1813If not @code{nil}, Viper tries to not move point when undoing commands. 1815If not @code{nil}, Viper tries to not move point when undoing commands.
1814Instead, it will briefly move the cursor to the place where change has 1816Instead, 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
1873replacement regions (and multi-line replacement regions are deleted). 1875replacement regions (and multi-line replacement regions are deleted).
1874@item viper-toggle-key "\C-z" 1876@item viper-toggle-key "\C-z"
1875Specifies the key used to switch from Emacs to Vi and back. 1877Specifies the key used to switch from Emacs to Vi and back.
1876Must be set in @file{.viper}. This variable can't be 1878Must be set in your Viper customization file. This variable can't be
1877changed interactively after Viper is loaded. 1879changed interactively after Viper is loaded.
1878 1880
1879In Insert state, this key acts as a temporary escape to Vi state, i.e., it 1881In 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
1907You can reset some of these constants in Viper with the Ex command @kbd{:set} 1909You 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
1909can include a line like this in your @file{.viper} file: 1911can 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.
2018If you want to 2020If you want to
2019bind a key, say @kbd{C-v}, to the function that scrolls 2021bind a key, say @kbd{C-v}, to the function that scrolls
2020page down and to make @kbd{0} display information on the current buffer, 2022page down and to make @kbd{0} display information on the current buffer,
2021putting this in @file{.viper} will do the trick in Vi state: 2023putting 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
2070in @file{~/.viper}. To do the same in Vi and Insert states, you should use 2072in 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 2073should use @code{vi-state} and @code{insert-state}. Changes in Insert state
2072in effect in Replace state. For instance, suppose that the user wants to 2074are also in effect in Replace state. For instance, suppose that the user wants
2073use @kbd{dd} in Vi state under Dired mode to delete files, @kbd{u} to unmark 2075to use @kbd{dd} in Vi state under Dired mode to delete files, @kbd{u} to unmark
2074files, etc. The following code in @file{~/.viper} will then do the job: 2076files, etc. The following code in the Viper customization file will then do
2077the 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
2275several such minor modes and takes care of them, so the above trick 2278several such minor modes and takes care of them, so the above trick
2276is usually not necessary. If you find that some minor mode, e.g., 2279is 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: 2281your 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
2333Enable buffer search. Explicit call to @code{viper-buffer-search-enable} 2336Enable buffer search. Explicit call to @code{viper-buffer-search-enable}
2334sets @code{viper-buffer-search-char} to @kbd{g}. Alternatively, the user can 2337sets @code{viper-buffer-search-char} to @kbd{g}. Alternatively, the user can
2335set @code{viper-buffer-search-char} in @file{.viper} to a key sequence 2338set @code{viper-buffer-search-char} in his/her Viper customization file to a key
2336to be used for buffer search. There is no need to call 2339sequence 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
2356second @kbd{/} doesn't follow quickly enough, then Viper will issue the 2359second @kbd{/} doesn't follow quickly enough, then Viper will issue the
2357usual prompt @kbd{/} and will wait for input, as usual in Vi. 2360usual prompt @kbd{/} and will wait for input, as usual in Vi.
2358If you don't like this behavior, you can ``unrecord'' these macros in your 2361If 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 2362Viper customization file. For instance, if you don't like the above
2360this in @file{~/.viper}: 2363feature, 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}
2444in succession 2447in succession
2445will undo the previous insertion from the ring and insert the next item on 2448will undo the previous insertion from the ring and insert the next item on
2446the ring. If a larger ring size is needed, change the value of the above 2449the ring. If a larger ring size is needed, change the value of the above
2447variable in the @file{~/.viper} file. 2450variable in the Viper customization file.
2448 2451
2449Since typing these sequences of keys may be tedious, it is suggested that the 2452Since typing these sequences of keys may be tedious, it is suggested that the
2450user should bind a function key, such as @kbd{f31}, as follows: 2453user 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
2518in the @file{~/.viper} file or through the customization widget, as 2521in their Viper customization file or through the customization widget, as
2519described above. However, in that case, the user will not have any 2522described above. However, in that case, the user will not have any
2520indication of the current Viper state in the minibuffer. (This is important 2523indication of the current Viper state in the minibuffer. (This is important
2521if the user accidentally switches to another Viper state by typing @key{ESC} or 2524if 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
2587not already bound to something else. If you want to use the mouse-search 2590not already bound to something else. If you want to use the mouse-search
2588feature, and the @kbd{Meta-Shift-Mouse-1} mouse action is already bound to 2591feature, and the @kbd{Meta-Shift-Mouse-1} mouse action is already bound to
2589something else, you can rebind the mouse-search feature by setting 2592something 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
2591file: 2594your 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
2601If the requested mouse action (e.g., (meta 1)) is already taken for other 2604If the requested mouse action (e.g., (meta 1)) is already taken for other
2602purposes then you have to confirm your intention by placing the following 2605purposes then you have to confirm your intention by placing the following
2603command in @code{~/.viper} after setting @code{viper-mouse-search-key}: 2606command 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.)
2642Note: while loading initially, Viper binds this mouse action only if it not 2646Note: while loading initially, Viper binds this mouse action only if it not
2643already bound to something else. If you want to use this feature and the 2647already bound to something else. If you want to use this feature and the
2644default mouse action is already bound, you can rebind mouse-insert by 2648default mouse action is already bound, you can rebind mouse-insert by
2645placing this command in @code{~/.viper}: 2649placing 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
2649If you want to bind mouse-insert to an action even if this action is 2653If you want to bind mouse-insert to an action even if this action is
2650already taken for other purposes in Emacs, then you should add this command 2654already taken for other purposes in Emacs, then you should add this command
2651to @code{~/.viper}, after setting @code{viper-mouse-insert-key}: 2655to 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}.
2785When the user finishes defining a macro (which is done by typing @kbd{C-x)}, 2789When the user finishes defining a macro (which is done by typing @kbd{C-x)},
2786a departure from Vi), you will be asked whether you want this 2790a departure from Vi), you will be asked whether you want this
2787macro to be global, mode-specific, or buffer-specific. You will also be 2791macro to be global, mode-specific, or buffer-specific. You will also be
2788given a chance to save the macro in your @file{~/.viper} file. 2792given a chance to save the macro in your Viper customization file.
2789This is the easiest way to save a macro and make 2793This is the easiest way to save a macro and make
2790it permanently available. If you work your startup files with bare hands, 2794it permanently available. If you work your startup files with bare hands,
2791here is how Viper saves the above macro so that it will be 2795here 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
2835For convenience, Viper also lets you define Vi-style macros in its Emacs 2839For convenience, Viper also lets you define Vi-style macros in its Emacs
2836state. There is no Ex command, like @kbd{:map} and @kbd{:map!} for doing 2840state. There is no Ex command, like @kbd{:map} and @kbd{:map!} for doing
2837this, but the user can include such a macro in the @file{~/.viper} file. The 2841this, but the user can include such a macro in the Viper customization file.
2838only thing is that the @code{viper-record-kbd-macro} command should specify 2842The 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
2841The user can get rid of a macro either by using the Ex commands @kbd{:unmap} 2845The 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
2899macro is executed. Suppose now we wanted to bind the key sequence 2903macro 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
2901can type @kbd{M-x eval-last-sexp} followed by @kbd{C-x )}. 2905can type @kbd{M-x eval-last-sexp} followed by @kbd{C-x )}.
2902If you answer positively to Viper's offer to save this macro in @file{~/.viper} 2906If you answer positively to Viper's offer to save this macro in your
2903for future uses, the following will be inserted in that file: 2907Viper customization file for future uses, the following will be inserted
2908in 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
2972recognized as a timeout macro is controlled by the variable 2977recognized 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
2975For the most part, Viper macros defined in @file{~/.viper} can be shared 2980For the most part, Viper macros defined in the Viper customization file can
2976between X and TTY modes. 2981be shared between X and TTY modes.
2977The problem with TTY may be that the function keys there generate sequences 2982The problem with TTY may be that the function keys there generate sequences
2978of events instead of a single event (as under a window system). 2983of events instead of a single event (as under a window system).
2979Emacs maps some of these sequences back to the logical keys 2984Emacs maps some of these sequences back to the logical keys
@@ -3359,7 +3364,8 @@ this function.
3359Find the next bracket/parenthesis/brace and go to its match. 3364Find the next bracket/parenthesis/brace and go to its match.
3360By default, Viper ignores brackets/parentheses/braces that occur inside 3365By default, Viper ignores brackets/parentheses/braces that occur inside
3361parentheses. You can change this by setting 3366parentheses. 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
3368customization file.
3363This option can also be toggled interactively if you quickly hit @kbd{%%%}. 3369This option can also be toggled interactively if you quickly hit @kbd{%%%}.
3364 3370
3365This latter feature is implemented as a vi-style keyboard macro. If you 3371This 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
3373in your @file{~/.viper} file. 3379in 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
3545Since typing the above sequences of keys may be tedious, the 3551Since typing the above sequences of keys may be tedious, the
3546functions doing the perusing can be bound to unused keyboard keys in the 3552functions doing the perusing can be bound to unused keyboard keys in the
3547@file{~/.viper} file. @xref{Viper Specials}, for details. 3553Viper 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
3984any file where this newline is missing. This is done by setting Emacs 3990any file where this newline is missing. This is done by setting Emacs
3985variable @code{require-final-newline} to @code{t}. If you don't like this 3991variable @code{require-final-newline} to @code{t}. If you don't like this
3986feature, use @code{setq-default} to set @code{require-final-newline} to 3992feature, 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>
3989Write to the file <name>. 3995Write to the file <name>.
3990@item :[x,y] w>> <name> 3996@item :[x,y] w>> <name>
diff --git a/etc/NEWS b/etc/NEWS
index f934bc30bd6..bf26c669ea1 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -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.
45It is no longer needed, as the crt*.o files are no longer linked 45It is no longer needed, as the crt*.o files are no longer linked specially.
46specially.
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',
243and works for git too, if you fetch the repository notes. 242and 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,
248used by commands like `rgrep', `lgrep' `occur', `highlight-regexp', etc. 245used by commands like `rgrep', `lgrep' `occur', `highlight-regexp', etc.
249You can customize this to specify a function that provides a default 246You can customize this to specify a function that provides a default
250value from the regexp last history element, or from the symbol found 247value from the regexp last history element, or from the symbol found
251at point. 248at 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
255file to load. If this is non-nil, then when both .el and .elc 252the file to load. If this is non-nil, then when both .el and .elc
256versions of a file exist, and the caller did not explicitly specify 253versions of a file exist, and the caller did not explicitly specify
257which one to load, then the newer file is loaded. The default, nil, 254which one to load, then the newer file is loaded. The default, nil,
258means to always load the .elc file. 255means 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
275the last step. Its default value is changed to nil, which means a tab 273the last step. Its default value is changed to nil, which means a tab
276stop every `tab-width' columns. 274stop 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: 278When called in succession, it cycles between spacing conventions:
281having just one space, no spaces, or reverting to the original 279one space, no spaces, original spacing.
282spacing. Like `just-one-space', it can handle or ignore newlines and
283leave different number of spaces.
284
285*** `fill-single-char-nobreak-p' prevents fill from breaking a line after
286a 1-letter word, which is an error according to Polish and
287Czech 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
283a line after a one-letter word, which is an error in some typographical
284conventions. 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>.
324Affected files: 320Affected 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
354code run via JIT Lock. 350code 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
384uses January 1, 1 AD as its day number 1. Previously Calc used the 378uses January 1, 1 AD as its day number 1. Previously Calc used the
385Julian calendar for dates before September 14, 1752, and it used 379Julian calendar for dates before September 14, 1752, and it used
386December 31, 1 BC as its day number 1; the new scheme is more 380December 31, 1 BC as its day number 1; the new scheme is more
387consistent with Calendar's calendrical system and day numbering. 381consistent with Calendar's calendrical system and day numbering.
388 382
389*** The new variable `calc-gregorian-switch' lets you configure the 383+++
390date when Calc switches from the Julian to the Gregorian calendar. 384*** The new option `calc-gregorian-switch' lets you configure if
391Nil, the default value, means to always use the Gregorian calendar. 385(and when) Calc switches from the Julian to the Gregorian calendar.
392The value (YEAR MONTH DAY) means to start using the Gregorian calendar
393on 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++.
414They are also displayed by the summarize feature in the modeline. 407They 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++.
417This also includes parsing of function pointers as function arguments. 410This 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.
420For example, this enables parsing of macros which open new namespaces. 413For 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'.
434Hence, you can now enable it independently from `transient-mark-mode', 427Hence, 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.
438You can disable `transient-mark-mode' to get the same result. 432You 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".
447There is a fallback syntax available if you don't have cf-promises or 443There is a fallback syntax available if you don't have cf-promises or
448if it doesn't support that option. 444if 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
460and `desktop-restore-forces-onscreen' offer further customization. 456and `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 460such 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
497strings and comments. 492strings and comments.
498 493
499** EPA 494** New EPA option `epa-mail-aliases'.
500
501*** New option `epa-mail-aliases'.
502You can set this to a list of alias expansions for keys to use 495You can set this to a list of alias expansions for keys to use
503in `epa-mail-encrypt'. 496in `epa-mail-encrypt'.
504 497
@@ -511,9 +504,7 @@ that means: when one of the recipients of the message being encrypted
511is `foo@bar.com', ignore that name as regards encryption. 504is `foo@bar.com', ignore that name as regards encryption.
512This is useful to avoid a query when you have no key for that name. 505This 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'.
517If set to a number, this can be used to avoid accidentally pasting large 508If set to a number, this can be used to avoid accidentally pasting large
518amounts of data into the ERC input. 509amounts of data into the ERC input.
519 510
@@ -542,9 +533,8 @@ External su and sudo commands are now the default; the internal,
542Tramp-using variants can still be used by enabling the eshell-tramp 533Tramp-using variants can still be used by enabling the eshell-tramp
543module. 534module.
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.
613If declaration spans several lines, variables on the following lines 607If a declaration spans several lines, variables on the following lines
614are lined up to the first one. 608are lined up to the first one.
615 609
616*** We now recognize and better indent continuations in array 610---
617comprehensions. 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+++
622See 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
755that it matches symbols, and non-symbol characters between symbols. 747that 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'.
771Emacs can learn the appropriate indentation settings if you provide it 765Emacs can learn the appropriate indentation settings if you provide it
@@ -857,10 +851,6 @@ received with a pull operation.
857under current version control system. When called with a prefix 851under current version control system. When called with a prefix
858argument, you can remove a file from the ignored file list. 852argument, 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'
862because 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'
874are obsolete. Customize the `woman-*' faces instead. 864are 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')
diff --git a/etc/TODO b/etc/TODO
index 8483f39dca0..834fe0638ad 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -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 @@
12014-01-29 Glenn Morris <rgm@gnu.org>
2
3 * simple.el (just-one-space, cycle-spacing): Doc fixes.
4
52014-01-28 Martin Rudalics <rudalics@gmx.at>
6
7 * window.el (fit-frame-to-buffer): Fix calculations for margins and
8 height constraints.
9
102014-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
242014-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
332014-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
12014-01-26 Glenn Morris <rgm@gnu.org> 612014-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.
2272When this minor mode is enabled, details such as file ownership and
2273permissions are hidden from view.
2274
2275See 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
1427You can customize `cua-enable-cua-keys' to completely disable the 1427You can customize `cua-enable-cua-keys' to completely disable the
1428CUA bindings, or `cua-prefix-override-inhibit-delay' to change 1428CUA bindings, or `cua-prefix-override-inhibit-delay' to change
1429the prefix fallback behavior. 1429the prefix fallback behavior."
1430
1431CUA mode manages Transient Mark mode internally. Trying to disable
1432Transient Mark mode while CUA mode is enabled does not work; if you
1433only want to highlight the region when it is selected using a
1434shifted 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.
925Should be set in `~/.viper' file." 925Should 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.
326Can be used in `viper-custom-file-name' to define permanent macros.
326MACRO-NAME is a string of characters or a vector of keys. STATE is 327MACRO-NAME is a string of characters or a vector of keys. STATE is
327either `vi-state' or `insert-state'. It specifies the Viper state in which to 328either `vi-state' or `insert-state'. It specifies the Viper state in which to
328define the macro. MACRO-BODY is a string that represents the keyboard macro. 329define 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.
486MACRO-NAME must be a vector of viper-style keys. This command is used by Viper 487MACRO-NAME must be a vector of viper-style keys. This command is used
487internally, but the user can also use it in ~/.viper to delete pre-defined 488by Viper internally, but you can also use it in `viper-custom-file-name'
488macros supplied with Viper. The best way to avoid mistakes in macro names to 489to delete pre-defined macros supplied with Viper. The best way to avoid
489be passed to this function is to use viper-describe-kbd-macros and copy the 490mistakes in macro names to be passed to this function is to use
490name 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.
322NOTE: Viper customization should be saved in `viper-custom-file-name', which 322NOTE: Viper customization should be saved in `viper-custom-file-name'."
323defaults 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
1224in your init file (preferably, close to the top). 1223in your init file (preferably, close to the top).
1225These two lines must come in the order given. 1224These 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'."
956Variables stored are: `ido-last-directory-list', `ido-work-directory-list', 956Variables 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'.
958Must be set before enabling ido mode." 958Must 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'.
592This should be a list of integers, ordered from smallest to largest. 591This should be nil, or a list of integers, ordered from smallest to largest.
593It implicitly extends to infinity by repeating the last step (e.g. '(1 2 5) 592It implicitly extends to infinity through repetition of the last step.
594is equivalent to '(1 2 5 8 11)). 593For example, '(1 2 5) is equivalent to '(1 2 5 8 11 ...). If the list has
595If the list has less than 2 elements, `tab-width' is used as the \"last step\"." 594fewer than 2 elements, `tab-width' is used as the \"last step\".
595A 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
273This is useful in conjunction with `calendar' and `diary' if you use 273This 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
277in your diary file to include your todo list file as part of your 277in your diary file to include your todo list file as part of your
278diary. With the default value \"*/*\" the diary displays each entry 278diary. 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
322Not in TODO format, but diary compatible. 324Not in TODO format, but diary compatible.
323Automatically generated when `todo-save-top-priorities' is non-nil." 325Automatically 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.
111The `shadow-info-file' should be shadowed to all your accounts to 115The `shadow-info-file' should be shadowed to all your accounts to
112ensure consistency. Default: ~/.shadows" 116ensure 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
119decide not to copy your shadow files at the end of one Emacs session, it will 123decide not to copy your shadow files at the end of one Emacs session, it will
120remember and ask you again in your next Emacs session. 124remember and ask you again in your next Emacs session.
121This file must NOT be shadowed to any other system, it is host-specific. 125This file must NOT be shadowed to any other system, it is host-specific.
122Default: ~/.shadow_todo" 126Default: ~/.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).
797If N is negative, delete newlines as well, leaving -N spaces." 797If N is negative, delete newlines as well, leaving -N spaces.
798See 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
805variable.") 806variable.")
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.
810In interactive use, this function behaves differently in successive
811consecutive calls.
809 812
810When run as an interactive command, the first time it's called 813The first call in a sequence acts like `just-one-space'.
811in a sequence, deletes all spaces and tabs around point leaving 814It deletes all spaces and tabs around point, leaving one space
812one (or N spaces). If this does not change content of the 815\(or N spaces). N is the prefix argument. If N is negative,
813buffer, skips to the second step: 816it deletes newlines as well, leaving -N spaces.
817\(If PRESERVE-NL-BACK is non-nil, it does not delete newlines before point.)
814 818
815When run for the second time in a sequence, deletes all the 819The second call in a sequence (or the first call if the above does
816spaces it has previously inserted. 820not result in any changes) deletes all spaces.
817 821
818When run for the third time, returns the whitespace and point in 822The third call in a sequence restores the original whitespace (and point).
819a state encountered when it had been run for the first time.
820 823
821For example, if buffer contains \"foo ^ bar\" with \"^\" denoting the 824If SINGLE-SHOT is non-nil, it only performs the first step in the sequence."
822point, calling `cycle-spacing' command will replace two spaces with
823a single space, calling it again immediately after, will remove all
824spaces, and calling it for the third time will bring two spaces back
825together.
826
827If N is negative, delete newlines as well. However, if
828PRESERVE-NL-BACK is t new line characters prior to the point
829won't be removed.
830
831If SINGLE-SHOT is non-nil, will only perform the first step. In
832other 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
994Your strokes are stored as you enter them. They get saved in a file 994Your strokes are stored as you enter them. They get saved into the
995called ~/.strokes, along with other strokes configuration variables. 995file specified by the `strokes-file' variable, along with other strokes
996You can change this location by setting the variable `strokes-file'. 996configuration variables. You will be prompted to save them when
997You will be prompted to save them when you exit Emacs, or you can save 997you exit Emacs, or you can save them with
998them 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.
334This is used in `fill-nobreak-predicate' to prevent breaking line just 334This function is suitable for adding to the hook `fill-nobreak-predicate',
335after a 1-letter word (usually conjunction or preposition) which is 335to prevent the breaking of a line just after a one-letter word,
336considered composition error in Polish and Czech typography." 336which 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.
387When set via customize, visited file of the notes buffer (if it 387When set via customize, visited file of the notes buffer (if it
388exists) might be changed." 388exists) 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.
210If this is nil, no data will be saved across sessions." 209If 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
142014-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
192014-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
242014-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
342014-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
422014-01-26 Paul Eggert <eggert@cs.ucla.edu>
43
44 * data.c (Fstring_to_number): Document results if unparsable
45 (Bug#16551).
46
142014-01-26 Jan Djärv <jan.h.d@swipnet.se> 472014-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
2524DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, 2524DEFUN ("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.
2526This parses both integers and floating point numbers. 2526Ignore leading spaces and tabs, and all trailing chars. Return 0 if
2527It ignores leading spaces and tabs, and all trailing chars. 2527STRING cannot be parsed as an integer or floating point number.
2528 2528
2529If BASE, interpret STRING as a number in that base. If BASE isn't 2529If BASE, interpret STRING as a number in that base. If BASE isn't
2530present, base 10 is used. BASE must be between 2 and 16 (inclusive). 2530present, base 10 is used. BASE must be between 2 and 16 (inclusive).
2531If the base used is not 10, STRING is always parsed as integer. */) 2531If 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
506static void
507initial_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
574static int last_max_ascent, last_height; 574static 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
9511include the height of the mode- or header-line of WINDOW in the return 9509include the height of the mode- or header-line of WINDOW in the return
9512value. If it is either the symbol `mode-line' or `header-line', include 9510value. If it is either the symbol `mode-line' or `header-line', include
9513only the height of that line, if present, in the return value. If t, 9511only the height of that line, if present, in the return value. If t,
9514include the height of any of these lines in the return value. */) 9512include 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
699void 700void
700free_frame_faces (struct frame *f) 701free_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 @@
12014-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
112014-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
12014-01-22 Michael Albinus <michael.albinus@gmx.de> 162014-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.
192TIMEOUT is the maximum time to wait for." 187TIMEOUT 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)