aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenichi Handa2014-01-13 08:26:08 +0900
committerKenichi Handa2014-01-13 08:26:08 +0900
commit1a0778b078b9ffaa68e1ae0d4b26de147872b421 (patch)
tree993d3a684b6c08a7cdd98fd8827ddd058931ebc9
parent67671fb1dcbfd46ddee7e753d6f545d25821d445 (diff)
parentb30dee657df010645703150248a33f3e22a002d2 (diff)
downloademacs-1a0778b078b9ffaa68e1ae0d4b26de147872b421.tar.gz
emacs-1a0778b078b9ffaa68e1ae0d4b26de147872b421.zip
merge trunk
-rw-r--r--ChangeLog6
-rw-r--r--README5
-rw-r--r--doc/man/ChangeLog4
-rw-r--r--doc/man/emacs.13
-rw-r--r--doc/misc/ChangeLog22
-rw-r--r--doc/misc/efaq.texi18
-rw-r--r--doc/misc/eieio.texi41
-rw-r--r--doc/misc/eww.texi8
-rw-r--r--doc/misc/tramp.texi247
-rw-r--r--etc/COOKIES157
-rw-r--r--etc/ChangeLog15
-rw-r--r--etc/INTERVIEW442
-rw-r--r--etc/MAILINGLISTS261
-rw-r--r--etc/MOTIVATION179
-rw-r--r--etc/NEWS15
-rw-r--r--etc/SERVICE11
-rw-r--r--etc/copying.paper819
-rw-r--r--lisp/ChangeLog42
-rw-r--r--lisp/dired-x.el2
-rw-r--r--lisp/dired.el2
-rw-r--r--lisp/emacs-lisp/eldoc.el54
-rw-r--r--lisp/emacs-lisp/generic.el4
-rw-r--r--lisp/mouse-drag.el2
-rw-r--r--lisp/net/eww.el4
-rw-r--r--lisp/org/org-list.el2
-rw-r--r--lisp/org/ox.el2
-rw-r--r--lisp/play/bubbles.el40
-rw-r--r--lisp/progmodes/octave.el8
-rw-r--r--lisp/progmodes/sh-script.el2
-rw-r--r--lisp/simple.el1
-rw-r--r--lisp/version.el80
-rw-r--r--nt/ChangeLog5
-rw-r--r--nt/inc/sys/stat.h7
33 files changed, 363 insertions, 2147 deletions
diff --git a/ChangeLog b/ChangeLog
index d220f2254ea..52519f3382c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,6 @@
12014-01-11 Eric S. Raymond <esr@thyrsus.com> 12014-01-12 Glenn Morris <rgm@gnu.org>
2 2
3 * celibacy.1, sex.6, condom.1, echo.msg: Deleted at RMS's 3 * README: Replace reference to etc/MAILINGLISTS.
4 suggestion. Not lost to posterity as they are part of the
5 widely distributed funny-manpages collection.
6 4
72014-01-11 Fabrice Popineau <fabrice.popineau@gmail.com> 52014-01-11 Fabrice Popineau <fabrice.popineau@gmail.com>
8 6
diff --git a/README b/README
index e13564354c3..ceb09bf3fd4 100644
--- a/README
+++ b/README
@@ -24,8 +24,9 @@ list bug-gnu-emacs@gnu.org. If possible, use M-x report-emacs-bug.
24See the "Bugs" section of the Emacs manual for more information on how 24See the "Bugs" section of the Emacs manual for more information on how
25to report bugs. (The file `BUGS' in this directory explains how you 25to report bugs. (The file `BUGS' in this directory explains how you
26can find and read that section using the Info files that come with 26can find and read that section using the Info files that come with
27Emacs.) See `etc/MAILINGLISTS' for more information on mailing lists 27Emacs.) For a list of mailing lists related to Emacs, see
28relating to GNU packages. 28<http://savannah.gnu.org/mail/?group=emacs>. For the complete
29list of GNU mailing lists, see <http://lists.gnu.org/>.
29 30
30The `etc' subdirectory contains several other files, named in capital 31The `etc' subdirectory contains several other files, named in capital
31letters, which you might consider looking at when installing GNU 32letters, which you might consider looking at when installing GNU
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog
index 37f765db00f..34ecda837ef 100644
--- a/doc/man/ChangeLog
+++ b/doc/man/ChangeLog
@@ -1,3 +1,7 @@
12014-01-12 Glenn Morris <rgm@gnu.org>
2
3 * emacs.1: Replace reference to etc/MAILINGLISTS.
4
12014-01-09 Glenn Morris <rgm@gnu.org> 52014-01-09 Glenn Morris <rgm@gnu.org>
2 6
3 * emacs.1: Refer to online service directory rather than etc/SERVICE. 7 * emacs.1: Refer to online service directory rather than etc/SERVICE.
diff --git a/doc/man/emacs.1 b/doc/man/emacs.1
index bd568a2e9da..04475d35da7 100644
--- a/doc/man/emacs.1
+++ b/doc/man/emacs.1
@@ -598,8 +598,7 @@ For personal assistance, consult the service directory at
598<http://www.fsf.org/resources/service/> for a list of people who offer it. 598<http://www.fsf.org/resources/service/> for a list of people who offer it.
599 599
600Please do not send anything but bug reports to this mailing list. 600Please do not send anything but bug reports to this mailing list.
601For more information about Emacs mailing lists, see the 601For other Emacs lists, see <http://savannah.gnu.org/mail/?group=emacs>.
602file /usr/local/share/emacs/$VERSION/etc/MAILINGLISTS.
603. 602.
604. 603.
605.SH UNRESTRICTIONS 604.SH UNRESTRICTIONS
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 722d11c70f2..2718c59cf25 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,25 @@
12014-01-12 Michael Albinus <michael.albinus@gmx.de>
2
3 * tramp.texi (all): Doc fix according to GNU Coding Standards.
4 Use "file name" instead of "filename" or "path". Use "host"
5 instead of "machine".
6
72014-01-12 David Engster <deng@randomsample.de>
8
9 * eieio.texi (Introduction): `class-of' is obsolete.
10 (Predicates, Basic Methods): Adapt function names to namespace
11 cleanup.
12
132014-01-12 Xue Fuqiao <xfq.free@gmail.com>
14
15 * eww.texi (Basics): Use "directory" instead of "path" (Bug#16419).
16
172014-01-12 Glenn Morris <rgm@gnu.org>
18
19 * efaq.texi (Guidelines for newsgroup postings)
20 (Informational files for Emacs):
21 Remove references to etc/MAILINGLISTS, etc/INTERVIEW.
22
12014-01-10 Stefan Monnier <monnier@iro.umontreal.ca> 232014-01-10 Stefan Monnier <monnier@iro.umontreal.ca>
2 24
3 * cl.texi (Function Bindings): Fix incorrect description of cl-let. 25 * cl.texi (Function Bindings): Fix incorrect description of cl-let.
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi
index aaca5d6f0c1..c54423e887e 100644
--- a/doc/misc/efaq.texi
+++ b/doc/misc/efaq.texi
@@ -392,12 +392,9 @@ recipients the same freedom that you enjoyed.
392@cindex Posting messages to newsgroups 392@cindex Posting messages to newsgroups
393 393
394@cindex GNU mailing lists 394@cindex GNU mailing lists
395The file @file{etc/MAILINGLISTS} describes the purpose of each GNU 395The Emacs mailing lists are described at
396mailing list (@pxref{Informational files for Emacs}). For those lists 396@uref{http://savannah.gnu.org/mail/?group=emacs, the Emacs Savannah
397which are gatewayed with newsgroups, it lists both the newsgroup name 397page}. Some of them are gatewayed to newsgroups.
398and the mailing list address. The Emacs mailing lists are also
399described at @uref{http://savannah.gnu.org/mail/?group=emacs, the Emacs
400Savannah page}.
401 398
402The newsgroup @uref{news:comp.emacs} is for discussion of Emacs programs 399The newsgroup @uref{news:comp.emacs} is for discussion of Emacs programs
403in general. The newsgroup @uref{news:gnu.emacs.help} is specifically 400in general. The newsgroup @uref{news:gnu.emacs.help} is specifically
@@ -865,9 +862,7 @@ You can get Tkinfo at
865@cindex @file{COPYING}, description of file 862@cindex @file{COPYING}, description of file
866@cindex @file{DISTRIB}, description of file 863@cindex @file{DISTRIB}, description of file
867@cindex @file{GNU}, description of file 864@cindex @file{GNU}, description of file
868@cindex @file{INTERVIEW}, description of file
869@cindex @file{MACHINES}, description of file 865@cindex @file{MACHINES}, description of file
870@cindex @file{MAILINGLISTS}, description of file
871@cindex @file{NEWS}, description of file 866@cindex @file{NEWS}, description of file
872 867
873This isn't a frequently asked question, but it should be! A variety of 868This isn't a frequently asked question, but it should be! A variety of
@@ -891,16 +886,9 @@ Emacs Availability Information
891@item GNU 886@item GNU
892The GNU Manifesto 887The GNU Manifesto
893 888
894@item INTERVIEW
895Richard Stallman discusses his public-domain UNIX-compatible software
896system with BYTE editors
897
898@item MACHINES 889@item MACHINES
899Status of Emacs on Various Machines and Systems 890Status of Emacs on Various Machines and Systems
900 891
901@item MAILINGLISTS
902GNU Project Electronic Mailing Lists
903
904@item NEWS 892@item NEWS
905Emacs news, a history of recent user-visible changes 893Emacs news, a history of recent user-visible changes
906 894
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index 36c9eee9caf..427c10c160e 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -223,10 +223,9 @@ first argument, and this one must be an @eieio{} type.
223@item Support for metaclasses 223@item Support for metaclasses
224There is just one default metaclass, @code{eieio-default-superclass}, 224There is just one default metaclass, @code{eieio-default-superclass},
225and you cannot define your own. The @code{:metaclass} tag in 225and you cannot define your own. The @code{:metaclass} tag in
226@code{defclass} is ignored. Also, functions like `class-of' and 226@code{defclass} is ignored. Also, functions like `find-class', which
227`find-class', which should return instances of the metaclass, behave 227should return instances of the metaclass, behave differently in
228differently in @eieio{} in that they return symbols or plain structures 228@eieio{} in that they return symbols or plain structures instead.
229instead.
230 229
231@item EQL specialization 230@item EQL specialization
232EIEIO does not support it. 231EIEIO does not support it.
@@ -1065,7 +1064,7 @@ make a slot unbound.
1065@var{object} can be an instance or a class. 1064@var{object} can be an instance or a class.
1066@end defun 1065@end defun
1067 1066
1068@defun class-name class 1067@defun eieio-class-name class
1069Return a string of the form @samp{#<class myclassname>} which should look 1068Return a string of the form @samp{#<class myclassname>} which should look
1070similar to other Lisp objects like buffers and processes. Printing a 1069similar to other Lisp objects like buffers and processes. Printing a
1071class results only in a symbol. 1070class results only in a symbol.
@@ -1089,7 +1088,7 @@ constructor is a function used to create new instances of
1089without knowing what it is. This is not a part of CLOS. 1088without knowing what it is. This is not a part of CLOS.
1090@end defun 1089@end defun
1091 1090
1092@defun object-name obj 1091@defun eieio-object-name obj
1093Return a string of the form @samp{#<object-class myobjname>} for @var{obj}. 1092Return a string of the form @samp{#<object-class myobjname>} for @var{obj}.
1094This should look like Lisp symbols from other parts of Emacs such as 1093This should look like Lisp symbols from other parts of Emacs such as
1095buffers and processes, and is shorter and cleaner than printing the 1094buffers and processes, and is shorter and cleaner than printing the
@@ -1098,43 +1097,39 @@ and object's print form, as this allows the object to add extra display
1098information into the symbol. 1097information into the symbol.
1099@end defun 1098@end defun
1100 1099
1101@defun object-class obj 1100@defun eieio-object-class obj
1102Returns the class symbol from @var{obj}. 1101Returns the class symbol from @var{obj}.
1103@end defun 1102@end defun
1104 1103
1105@defun class-of obj 1104@defun eieio--object-class obj
1106CLOS symbol which does the same thing as @code{object-class} 1105Same as @code{eieio-object-class} except this is a macro, and no
1107@end defun
1108
1109@defun object-class-fast obj
1110Same as @code{object-class} except this is a macro, and no
1111type-checking is performed. 1106type-checking is performed.
1112@end defun 1107@end defun
1113 1108
1114@defun object-class-name obj 1109@defun eieio-object-class-name obj
1115Returns the symbol of @var{obj}'s class. 1110Returns the symbol of @var{obj}'s class.
1116@end defun 1111@end defun
1117 1112
1118@defun class-parents class 1113@defun eieio-class-parents class
1119Returns the direct parents class of @var{class}. Returns @code{nil} if 1114Returns the direct parents class of @var{class}. Returns @code{nil} if
1120it is a superclass. 1115it is a superclass.
1121@end defun 1116@end defun
1122 1117
1123@defun class-parents-fast class 1118@defun eieio-class-parents-fast class
1124Just like @code{class-parent} except it is a macro and no type checking 1119Just like @code{eieio-class-parents} except it is a macro and no type checking
1125is performed. 1120is performed.
1126@end defun 1121@end defun
1127 1122
1128@defun class-parent class 1123@defun eieio-class-parent class
1129Deprecated function which returns the first parent of @var{class}. 1124Deprecated function which returns the first parent of @var{class}.
1130@end defun 1125@end defun
1131 1126
1132@defun class-children class 1127@defun eieio-class-children class
1133Return the list of classes inheriting from @var{class}. 1128Return the list of classes inheriting from @var{class}.
1134@end defun 1129@end defun
1135 1130
1136@defun class-children-fast class 1131@defun eieio-class-children-fast class
1137Just like @code{class-children}, but with no checks. 1132Just like @code{eieio-class-children}, but with no checks.
1138@end defun 1133@end defun
1139 1134
1140@defun same-class-p obj class 1135@defun same-class-p obj class
@@ -1676,9 +1671,9 @@ sure to call @dfn{call-next-method} first and modify the returned object.
1676 1671
1677@defun object-print this &rest strings 1672@defun object-print this &rest strings
1678@anchor{object-print} 1673@anchor{object-print}
1679Pretty printer for object @var{this}. Call function @dfn{object-name} with @var{strings}. 1674Pretty printer for object @var{this}. Call function @dfn{eieio-object-name} with @var{strings}.
1680The default method for printing object @var{this} is to use the 1675The default method for printing object @var{this} is to use the
1681function @dfn{object-name}. 1676function @dfn{eieio-object-name}.
1682 1677
1683It is sometimes useful to put a summary of the object into the 1678It is sometimes useful to put a summary of the object into the
1684default #<notation> string when using eieio browsing tools. 1679default #<notation> string when using eieio browsing tools.
diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi
index b84de7509da..6fc344d8465 100644
--- a/doc/misc/eww.texi
+++ b/doc/misc/eww.texi
@@ -83,8 +83,8 @@ However a GNU Emacs with @code{libxml2} support is required.
83If the input doesn't look like a URL or domain name the web will be 83If the input doesn't look like a URL or domain name the web will be
84searched via @code{eww-search-prefix}. The default search engine is 84searched via @code{eww-search-prefix}. The default search engine is
85@url{https://duckduckgo.com, DuckDuckGo}. If you want to open a file 85@url{https://duckduckgo.com, DuckDuckGo}. If you want to open a file
86either prefix the path with @code{file://} or use the command @kbd{M-x 86either prefix the file name with @code{file://} or use the command
87eww-open-file}. 87@kbd{M-x eww-open-file}.
88 88
89@findex eww-quit 89@findex eww-quit
90@findex eww-reload 90@findex eww-reload
@@ -99,12 +99,12 @@ web page hit @kbd{g} (@code{eww-reload}). Pressing @kbd{w}
99(@code{eww-copy-page-url}) will copy the current URL to the kill ring. 99(@code{eww-copy-page-url}) will copy the current URL to the kill ring.
100 100
101@findex eww-download 101@findex eww-download
102@vindex eww-download-path 102@vindex eww-download-directory
103@kindex d 103@kindex d
104@cindex Download 104@cindex Download
105 A URL under the point can be downloaded with @kbd{d} 105 A URL under the point can be downloaded with @kbd{d}
106(@code{eww-download}). The file will be written to the directory 106(@code{eww-download}). The file will be written to the directory
107specified in @code{eww-download-path} (Default: @file{~/Downloads/}). 107specified in @code{eww-download-directory} (Default: @file{~/Downloads/}).
108 108
109@findex eww-back-url 109@findex eww-back-url
110@findex eww-forward-url 110@findex eww-forward-url
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index dfe57689e5e..b3057c255fc 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -17,7 +17,7 @@
17 17
18@include trampver.texi 18@include trampver.texi
19 19
20@c Macro for formatting a filename according to the respective syntax. 20@c Macro for formatting a file name according to the respective syntax.
21@c xxx and yyy are auxiliary macros in order to omit leading and 21@c xxx and yyy are auxiliary macros in order to omit leading and
22@c trailing whitespace. Not very elegant, but I don't know it better. 22@c trailing whitespace. Not very elegant, but I don't know it better.
23 23
@@ -198,7 +198,7 @@ Installing @value{tramp} with your @value{emacsname}
198 198
199Configuring @value{tramp} for use 199Configuring @value{tramp} for use
200 200
201* Connection types:: Types of connections made to remote machines. 201* Connection types:: Types of connections made to remote hosts.
202* Inline methods:: Inline methods. 202* Inline methods:: Inline methods.
203* External methods:: External methods. 203* External methods:: External methods.
204@ifset emacsgvfs 204@ifset emacsgvfs
@@ -217,7 +217,7 @@ Configuring @value{tramp} for use
217* Connection caching:: Reusing connection related information. 217* Connection caching:: Reusing connection related information.
218* Predefined connection information:: 218* Predefined connection information::
219 Setting own connection related information. 219 Setting own connection related information.
220* Remote Programs:: How @value{tramp} finds and uses programs on the remote machine. 220* Remote Programs:: How @value{tramp} finds and uses programs on the remote host.
221* Remote shell setup:: Remote shell setup hints. 221* Remote shell setup:: Remote shell setup hints.
222* Android shell setup:: Android shell setup hints. 222* Android shell setup:: Android shell setup hints.
223* Auto-save and Backup:: Auto-save and Backup. 223* Auto-save and Backup:: Auto-save and Backup.
@@ -225,8 +225,8 @@ Configuring @value{tramp} for use
225 225
226Using @value{tramp} 226Using @value{tramp}
227 227
228* Filename Syntax:: @value{tramp} filename conventions. 228* File name Syntax:: @value{tramp} file name conventions.
229* Filename completion:: Filename completion. 229* File name completion:: File name completion.
230* Ad-hoc multi-hops:: Declaring multiple hops in the file name. 230* Ad-hoc multi-hops:: Declaring multiple hops in the file name.
231* Remote processes:: Integration with other @value{emacsname} packages. 231* Remote processes:: Integration with other @value{emacsname} packages.
232* Cleanup remote connections:: Cleanup remote connections. 232* Cleanup remote connections:: Cleanup remote connections.
@@ -247,18 +247,18 @@ How file names, directories and localnames are mangled and managed
247@cindex overview 247@cindex overview
248 248
249After the installation of @value{tramp} into your @value{emacsname}, you 249After the installation of @value{tramp} into your @value{emacsname}, you
250will be able to access files on remote machines as though they were 250will be able to access files on remote hosts as though they were
251local. Access to the remote file system for editing files, version 251local. Access to the remote file system for editing files, version
252control, and @code{dired} are transparently enabled. 252control, and @code{dired} are transparently enabled.
253 253
254Your access to the remote machine can be with the @command{rsh}, 254Your access to the remote host can be with the @command{rsh},
255@command{rlogin}, @command{telnet} programs or with any similar 255@command{rlogin}, @command{telnet} programs or with any similar
256connection method. This connection must pass @acronym{ASCII} 256connection method. This connection must pass @acronym{ASCII}
257successfully to be usable but need not be 8-bit clean. 257successfully to be usable but need not be 8-bit clean.
258 258
259The package provides support for @command{ssh} connections out of the 259The package provides support for @command{ssh} connections out of the
260box, one of the more common uses of the package. This allows 260box, one of the more common uses of the package. This allows
261relatively secure access to machines, especially if @command{ftp} 261relatively secure access to hosts, especially if @command{ftp}
262access is disabled. 262access is disabled.
263 263
264Under Windows, @value{tramp} is integrated with the PuTTY package, 264Under Windows, @value{tramp} is integrated with the PuTTY package,
@@ -267,11 +267,11 @@ using the @command{plink} program.
267The majority of activity carried out by @value{tramp} requires only that 267The majority of activity carried out by @value{tramp} requires only that
268the remote login is possible and is carried out at the terminal. In 268the remote login is possible and is carried out at the terminal. In
269order to access remote files @value{tramp} needs to transfer their content 269order to access remote files @value{tramp} needs to transfer their content
270to the local machine temporarily. 270to the local host temporarily.
271 271
272@value{tramp} can transfer files between the machines in a variety of ways. 272@value{tramp} can transfer files between the hosts in a variety of ways.
273The details are easy to select, depending on your needs and the 273The details are easy to select, depending on your needs and the
274machines in question. 274hosts in question.
275 275
276The fastest transfer methods for large files rely on a remote file 276The fastest transfer methods for large files rely on a remote file
277transfer package such as @command{rcp}, @command{scp}, @command{rsync} 277transfer package such as @command{rcp}, @command{scp}, @command{rsync}
@@ -280,7 +280,7 @@ or (under Windows) @command{pscp}.
280If the remote copy methods are not suitable for you, @value{tramp} also 280If the remote copy methods are not suitable for you, @value{tramp} also
281supports the use of encoded transfers directly through the shell. 281supports the use of encoded transfers directly through the shell.
282This requires that the @command{mimencode} or @command{uuencode} tools 282This requires that the @command{mimencode} or @command{uuencode} tools
283are available on the remote machine. These methods are generally 283are available on the remote host. These methods are generally
284faster for small files. 284faster for small files.
285 285
286@value{tramp} is still under active development and any problems you encounter, 286@value{tramp} is still under active development and any problems you encounter,
@@ -351,7 +351,7 @@ shell prompt, and a few other things.
351@item 351@item
352Now the remote shell is up and it good working order. Remember, what 352Now the remote shell is up and it good working order. Remember, what
353was supposed to happen is that @value{tramp} tries to find out what files exist 353was supposed to happen is that @value{tramp} tries to find out what files exist
354on the remote host so that it can do filename completion. 354on the remote host so that it can do file name completion.
355 355
356So, @value{tramp} basically issues @command{cd} and @command{ls} commands and 356So, @value{tramp} basically issues @command{cd} and @command{ls} commands and
357also sometimes @command{echo} with globbing. Another command that is 357also sometimes @command{echo} with globbing. Another command that is
@@ -360,7 +360,7 @@ directory or the like. The output of each command is parsed for the
360necessary operation. 360necessary operation.
361 361
362@item 362@item
363Suppose you are finished with filename completion, have entered @kbd{C-x 363Suppose you are finished with file name completion, have entered @kbd{C-x
364C-f}, a full file name and hit @kbd{@key{RET}}. Now comes the time to 364C-f}, a full file name and hit @kbd{@key{RET}}. Now comes the time to
365transfer the file contents from the remote host to the local host so 365transfer the file contents from the remote host to the local host so
366that you can edit them. 366that you can edit them.
@@ -470,7 +470,7 @@ many more methods for getting a remote shell and for transferring the
470file contents were added. Support for VC was added. 470file contents were added. Support for VC was added.
471 471
472After that, there were added the multi-hop methods in April 2000 and 472After that, there were added the multi-hop methods in April 2000 and
473the unification of @value{tramp} and Ange-FTP filenames in July 2002. 473the unification of @value{tramp} and Ange-FTP file names in July 2002.
474In July 2004, multi-hop methods have been replaced by proxy hosts. 474In July 2004, multi-hop methods have been replaced by proxy hosts.
475Running commands on remote hosts was introduced in December 2005. 475Running commands on remote hosts was introduced in December 2005.
476@ifset emacsgw 476@ifset emacsgw
@@ -508,8 +508,8 @@ the first release including @value{tramp} was Emacs 22.1.
508@value{tramp} is (normally) fully functional when it is initially 508@value{tramp} is (normally) fully functional when it is initially
509installed. It is initially configured to use the @command{scp} 509installed. It is initially configured to use the @command{scp}
510program to connect to the remote host. So in the easiest case, you 510program to connect to the remote host. So in the easiest case, you
511just type @kbd{C-x C-f} and then enter the filename 511just type @kbd{C-x C-f} and then enter the file name
512@file{@trampfn{, user, machine, /path/to.file}}. 512@file{@trampfn{, user, host, /path/to.file}}.
513 513
514On some hosts, there are problems with opening a connection. These are 514On some hosts, there are problems with opening a connection. These are
515related to the behavior of the remote shell. See @xref{Remote shell 515related to the behavior of the remote shell. See @xref{Remote shell
@@ -518,7 +518,7 @@ setup}, for details on this.
518If you do not wish to use these commands to connect to the remote 518If you do not wish to use these commands to connect to the remote
519host, you should change the default connection and transfer method 519host, you should change the default connection and transfer method
520that @value{tramp} uses. There are several different methods that @value{tramp} 520that @value{tramp} uses. There are several different methods that @value{tramp}
521can use to connect to remote machines and transfer files 521can use to connect to remote hosts and transfer files
522(@pxref{Connection types}). 522(@pxref{Connection types}).
523 523
524If you don't know which method is right for you, see @xref{Default 524If you don't know which method is right for you, see @xref{Default
@@ -526,7 +526,7 @@ Method}.
526 526
527 527
528@menu 528@menu
529* Connection types:: Types of connections made to remote machines. 529* Connection types:: Types of connections made to remote hosts.
530* Inline methods:: Inline methods. 530* Inline methods:: Inline methods.
531* External methods:: External methods. 531* External methods:: External methods.
532@ifset emacsgvfs 532@ifset emacsgvfs
@@ -548,7 +548,7 @@ Method}.
548* Connection caching:: Reusing connection related information. 548* Connection caching:: Reusing connection related information.
549* Predefined connection information:: 549* Predefined connection information::
550 Setting own connection related information. 550 Setting own connection related information.
551* Remote Programs:: How @value{tramp} finds and uses programs on the remote machine. 551* Remote Programs:: How @value{tramp} finds and uses programs on the remote host.
552* Remote shell setup:: Remote shell setup hints. 552* Remote shell setup:: Remote shell setup hints.
553* Android shell setup:: Android shell setup hints. 553* Android shell setup:: Android shell setup hints.
554* Auto-save and Backup:: Auto-save and Backup. 554* Auto-save and Backup:: Auto-save and Backup.
@@ -557,17 +557,17 @@ Method}.
557 557
558 558
559@node Connection types 559@node Connection types
560@section Types of connections made to remote machines 560@section Types of connections made to remote hosts
561@cindex connection types, overview 561@cindex connection types, overview
562 562
563There are two basic types of transfer methods, each with its own 563There are two basic types of transfer methods, each with its own
564advantages and limitations. Both types of connection make use of a 564advantages and limitations. Both types of connection make use of a
565remote shell access program such as @command{rsh}, @command{ssh} or 565remote shell access program such as @command{rsh}, @command{ssh} or
566@command{telnet} to connect to the remote machine. 566@command{telnet} to connect to the remote host.
567 567
568This connection is used to perform many of the operations that @value{tramp} 568This connection is used to perform many of the operations that @value{tramp}
569requires to make the remote file system transparently accessible from 569requires to make the remote file system transparently accessible from
570the local machine. It is only when visiting files that the methods 570the local host. It is only when visiting files that the methods
571differ. 571differ.
572 572
573@cindex inline methods 573@cindex inline methods
@@ -575,9 +575,9 @@ differ.
575@cindex methods, inline 575@cindex methods, inline
576@cindex methods, external 576@cindex methods, external
577Loading or saving a remote file requires that the content of the file 577Loading or saving a remote file requires that the content of the file
578be transferred between the two machines. The content of the file can 578be transferred between the two hosts. The content of the file can
579be transferred using one of two methods: the @dfn{inline method} over 579be transferred using one of two methods: the @dfn{inline method} over
580the same connection used to log in to the remote machine, or the 580the same connection used to log in to the remote host, or the
581@dfn{external method} through another connection using a remote copy 581@dfn{external method} through another connection using a remote copy
582program such as @command{rcp}, @command{scp} or @command{rsync}. 582program such as @command{rcp}, @command{scp} or @command{rsync}.
583 583
@@ -607,12 +607,12 @@ action.
607The inline methods in @value{tramp} are quite powerful and can work in 607The inline methods in @value{tramp} are quite powerful and can work in
608situations where you cannot use an external transfer program to connect. 608situations where you cannot use an external transfer program to connect.
609Inline methods are the only methods that work when connecting to the 609Inline methods are the only methods that work when connecting to the
610remote machine via telnet. (There are also strange inline methods which 610remote host via telnet. (There are also strange inline methods which
611allow you to transfer files between @emph{user identities} rather than 611allow you to transfer files between @emph{user identities} rather than
612hosts, see below.) 612hosts, see below.)
613 613
614These methods depend on the existence of a suitable encoding and 614These methods depend on the existence of a suitable encoding and
615decoding command on remote machine. Locally, @value{tramp} may be able to 615decoding command on remote host. Locally, @value{tramp} may be able to
616use features of @value{emacsname} to decode and encode the files or 616use features of @value{emacsname} to decode and encode the files or
617it may require access to external commands to perform that task. 617it may require access to external commands to perform that task.
618 618
@@ -789,11 +789,11 @@ fair trade-off between both approaches.
789@cindex rsh (with rcp method) 789@cindex rsh (with rcp method)
790 790
791This method uses the @command{rsh} and @command{rcp} commands to connect 791This method uses the @command{rsh} and @command{rcp} commands to connect
792to the remote machine and transfer files. This is probably the fastest 792to the remote host and transfer files. This is probably the fastest
793connection method available. 793connection method available.
794 794
795The alternative method @option{remcp} uses the @command{remsh} and 795The alternative method @option{remcp} uses the @command{remsh} and
796@command{rcp} commands. It should be applied on machines where 796@command{rcp} commands. It should be applied on hosts where
797@command{remsh} is used instead of @command{rsh}. 797@command{remsh} is used instead of @command{rsh}.
798 798
799 799
@@ -804,8 +804,8 @@ The alternative method @option{remcp} uses the @command{remsh} and
804@cindex ssh (with scp method) 804@cindex ssh (with scp method)
805 805
806Using @command{ssh} to connect to the remote host and @command{scp} to 806Using @command{ssh} to connect to the remote host and @command{scp} to
807transfer files between the machines is the best method for securely 807transfer files between the hosts is the best method for securely
808connecting to a remote machine and accessing files. 808connecting to a remote host and accessing files.
809 809
810The performance of this option is also quite good. It may be slower than 810The performance of this option is also quite good. It may be slower than
811the inline methods when you often open and close small files however. 811the inline methods when you often open and close small files however.
@@ -843,7 +843,7 @@ This method supports the @samp{-p} argument.
843@cindex ssh (with rsync method) 843@cindex ssh (with rsync method)
844 844
845Using the @command{ssh} command to connect securely to the remote 845Using the @command{ssh} command to connect securely to the remote
846machine and the @command{rsync} command to transfer files is almost 846host and the @command{rsync} command to transfer files is almost
847identical to the @option{scp} method. 847identical to the @option{scp} method.
848 848
849While @command{rsync} performs much better than @command{scp} when 849While @command{rsync} performs much better than @command{scp} when
@@ -945,7 +945,7 @@ anyway.
945This is not a native @value{tramp} method. Instead, it forwards all 945This is not a native @value{tramp} method. Instead, it forwards all
946requests to @value{ftppackagename}. 946requests to @value{ftppackagename}.
947@ifset xemacs 947@ifset xemacs
948This works only for unified filenames, see @ref{Issues}. 948This works only for unified file names, see @ref{Issues}.
949@end ifset 949@end ifset
950 950
951 951
@@ -974,15 +974,15 @@ For authorization, MS Windows uses both a user name and a domain name.
974Because of this, the @value{tramp} syntax has been extended: you can 974Because of this, the @value{tramp} syntax has been extended: you can
975specify a user name which looks like @code{user%domain} (the real user 975specify a user name which looks like @code{user%domain} (the real user
976name, then a percent sign, then the domain name). So, to connect to 976name, then a percent sign, then the domain name). So, to connect to
977the machine @code{melancholia} as user @code{daniel} of the domain 977the host @code{melancholia} as user @code{daniel} of the domain
978@code{BIZARRE}, and edit @file{.emacs} in the home directory (share 978@code{BIZARRE}, and edit @file{.emacs} in the home directory (share
979@code{daniel$}) I would specify the filename @file{@trampfn{smb, 979@code{daniel$}) I would specify the file name @file{@trampfn{smb,
980daniel%BIZARRE, melancholia, /daniel$$/.emacs}}. 980daniel%BIZARRE, melancholia, /daniel$$/.emacs}}.
981 981
982Depending on the Windows domain configuration, a Windows user might be 982Depending on the Windows domain configuration, a Windows user might be
983considered as domain user per default. In order to connect as local 983considered as domain user per default. In order to connect as local
984user, the WINS name of that machine must be given as domain name. 984user, the WINS name of that host must be given as domain name.
985Usually, it is the machine name in capital letters. In the example 985Usually, it is the host name in capital letters. In the example
986above, the local user @code{daniel} would be specified as 986above, the local user @code{daniel} would be specified as
987@file{@trampfn{smb, daniel%MELANCHOLIA, melancholia, /daniel$$/.emacs}}. 987@file{@trampfn{smb, daniel%MELANCHOLIA, melancholia, /daniel$$/.emacs}}.
988 988
@@ -1156,7 +1156,7 @@ example, the following two lines specify to use the @option{ssh}
1156method for all user names matching @samp{john} and the @option{rsync} 1156method for all user names matching @samp{john} and the @option{rsync}
1157method for all host names matching @samp{lily}. The third line 1157method for all host names matching @samp{lily}. The third line
1158specifies to use the @option{su} method for the user @samp{root} on 1158specifies to use the @option{su} method for the user @samp{root} on
1159the machine @samp{localhost}. 1159the host @samp{localhost}.
1160 1160
1161@lisp 1161@lisp
1162(add-to-list 'tramp-default-method-alist '("" "john" "ssh")) 1162(add-to-list 'tramp-default-method-alist '("" "john" "ssh"))
@@ -1180,9 +1180,9 @@ environment you will use them in and, especially when used over the
1180Internet, the security implications of your preferred method. 1180Internet, the security implications of your preferred method.
1181 1181
1182The @option{rsh} and @option{telnet} methods send your password as 1182The @option{rsh} and @option{telnet} methods send your password as
1183plain text as you log in to the remote machine, as well as 1183plain text as you log in to the remote host, as well as
1184transferring the files in such a way that the content can easily be 1184transferring the files in such a way that the content can easily be
1185read from other machines. 1185read from other hosts.
1186 1186
1187If you need to connect to remote systems that are accessible from the 1187If you need to connect to remote systems that are accessible from the
1188Internet, you should give serious thought to using @option{ssh} based 1188Internet, you should give serious thought to using @option{ssh} based
@@ -1207,7 +1207,7 @@ want to edit mostly small files. And if you access large text files,
1207compression (driven by @var{tramp-inline-compress-start-size}) shall 1207compression (driven by @var{tramp-inline-compress-start-size}) shall
1208still result in good performance. 1208still result in good performance.
1209 1209
1210I guess that these days, most people can access a remote machine by 1210I guess that these days, most people can access a remote host by
1211using @command{ssh}. So I suggest that you use the @option{ssh} 1211using @command{ssh}. So I suggest that you use the @option{ssh}
1212method. So, type @kbd{C-x C-f @trampfn{ssh, root, otherhost, 1212method. So, type @kbd{C-x C-f @trampfn{ssh, root, otherhost,
1213/etc/motd} @key{RET}} to edit the @file{/etc/motd} file on the other 1213/etc/motd} @key{RET}} to edit the @file{/etc/motd} file on the other
@@ -1359,7 +1359,7 @@ file name located on a remote target matching @var{user}@@@var{host}.
1359@var{host} and @var{user} are regular expressions or @code{nil}, which 1359@var{host} and @var{user} are regular expressions or @code{nil}, which
1360is interpreted as a regular expression which always matches. 1360is interpreted as a regular expression which always matches.
1361 1361
1362@var{proxy} must be a Tramp filename which localname part is ignored. 1362@var{proxy} must be a Tramp file name which localname part is ignored.
1363Method and user name on @var{proxy} are optional, which is interpreted 1363Method and user name on @var{proxy} are optional, which is interpreted
1364with the default values. 1364with the default values.
1365@ifset emacsgw 1365@ifset emacsgw
@@ -1500,7 +1500,7 @@ variable, accessible with @kbd{C-h v tramp-methods @key{RET}}.
1500 1500
1501The variable @code{tramp-completion-function-alist} is intended to 1501The variable @code{tramp-completion-function-alist} is intended to
1502customize which files are taken into account for user and host name 1502customize which files are taken into account for user and host name
1503completion (@pxref{Filename completion}). For every method, it keeps 1503completion (@pxref{File name completion}). For every method, it keeps
1504a set of configuration files, accompanied by a Lisp function able to 1504a set of configuration files, accompanied by a Lisp function able to
1505parse that file. Entries in @code{tramp-completion-function-alist} 1505parse that file. Entries in @code{tramp-completion-function-alist}
1506have the form (@var{method} @var{pair1} @var{pair2} ...). 1506have the form (@var{method} @var{pair1} @var{pair2} ...).
@@ -1763,7 +1763,7 @@ connection at will. Since there is no reliable test for this,
1763 1763
1764 1764
1765@node Remote Programs 1765@node Remote Programs
1766@section How @value{tramp} finds and uses programs on the remote machine 1766@section How @value{tramp} finds and uses programs on the remote host
1767 1767
1768@value{tramp} depends on a number of programs on the remote host in order to 1768@value{tramp} depends on a number of programs on the remote host in order to
1769function, including @command{ls}, @command{test}, @command{find} and 1769function, including @command{ls}, @command{test}, @command{find} and
@@ -1782,14 +1782,14 @@ remote file access.
1782@vindex tramp-default-remote-path 1782@vindex tramp-default-remote-path
1783@vindex tramp-own-remote-path 1783@vindex tramp-own-remote-path
1784@defopt tramp-remote-path 1784@defopt tramp-remote-path
1785When @value{tramp} connects to the remote machine, it searches for the 1785When @value{tramp} connects to the remote host, it searches for the
1786programs that it can use. The variable @code{tramp-remote-path} 1786programs that it can use. The variable @code{tramp-remote-path}
1787controls the directories searched on the remote machine. 1787controls the directories searched on the remote host.
1788 1788
1789By default, this is set to a reasonable set of defaults for most 1789By default, this is set to a reasonable set of defaults for most
1790machines. The symbol @code{tramp-default-remote-path} is a place 1790hosts. The symbol @code{tramp-default-remote-path} is a place
1791holder, it is replaced by the list of directories received via the 1791holder, it is replaced by the list of directories received via the
1792command @command{getconf PATH} on your remote machine. For example, 1792command @command{getconf PATH} on your remote host. For example,
1793on Debian GNU/Linux this is @file{/bin:/usr/bin}, whereas on Solaris 1793on Debian GNU/Linux this is @file{/bin:/usr/bin}, whereas on Solaris
1794this is @file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin}. 1794this is @file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin}.
1795It is recommended to apply this symbol on top of 1795It is recommended to apply this symbol on top of
@@ -2067,7 +2067,7 @@ fi
2067Android devices use a restricted shell. They can be accessed via the 2067Android devices use a restricted shell. They can be accessed via the
2068@option{adb} method. However, this restricts the access to a USB 2068@option{adb} method. However, this restricts the access to a USB
2069connection, and it requires the installation of the Android SDK on the 2069connection, and it requires the installation of the Android SDK on the
2070local machine. 2070local host.
2071 2071
2072When an @command{sshd} process runs on the Android device, like 2072When an @command{sshd} process runs on the Android device, like
2073provided by the @code{SSHDroid} app, any @option{ssh}-based method can 2073provided by the @code{SSHDroid} app, any @option{ssh}-based method can
@@ -2293,7 +2293,7 @@ This section needs a lot of work! Please help.
2293@cindex sshx method with Cygwin 2293@cindex sshx method with Cygwin
2294The recent Cygwin installation of @command{ssh} works only with a 2294The recent Cygwin installation of @command{ssh} works only with a
2295Cygwinized @value{emacsname}. You can check it by typing @kbd{M-x 2295Cygwinized @value{emacsname}. You can check it by typing @kbd{M-x
2296eshell}, and starting @kbd{ssh test.machine}. The problem is evident 2296eshell}, and starting @kbd{ssh test.host}. The problem is evident
2297if you see a message like this: 2297if you see a message like this:
2298 2298
2299@example 2299@example
@@ -2309,12 +2309,12 @@ can find information about setting up Cygwin in their FAQ at
2309@cindex scpx method with Cygwin 2309@cindex scpx method with Cygwin
2310If you wish to use the @option{scpx} connection method, then you might 2310If you wish to use the @option{scpx} connection method, then you might
2311have the problem that @value{emacsname} calls @command{scp} with a 2311have the problem that @value{emacsname} calls @command{scp} with a
2312Windows filename such as @code{c:/foo}. The Cygwin version of 2312Windows file name such as @code{c:/foo}. The Cygwin version of
2313@command{scp} does not know about Windows filenames and interprets 2313@command{scp} does not know about Windows file names and interprets
2314this as a remote filename on the host @code{c}. 2314this as a remote file name on the host @code{c}.
2315 2315
2316One possible workaround is to write a wrapper script for @option{scp} 2316One possible workaround is to write a wrapper script for @option{scp}
2317which converts the Windows filename to a Cygwinized filename. 2317which converts the Windows file name to a Cygwinized file name.
2318 2318
2319@cindex Cygwin and ssh-agent 2319@cindex Cygwin and ssh-agent
2320@cindex SSH_AUTH_SOCK and @value{emacsname} on Windows 2320@cindex SSH_AUTH_SOCK and @value{emacsname} on Windows
@@ -2338,7 +2338,7 @@ know anything at all about Windows@dots{}
2338@cindex using @value{tramp} 2338@cindex using @value{tramp}
2339 2339
2340Once you have installed @value{tramp} it will operate fairly 2340Once you have installed @value{tramp} it will operate fairly
2341transparently. You will be able to access files on any remote machine 2341transparently. You will be able to access files on any remote host
2342that you can log in to as though they were local. 2342that you can log in to as though they were local.
2343 2343
2344Files are specified to @value{tramp} using a formalized syntax specifying the 2344Files are specified to @value{tramp} using a formalized syntax specifying the
@@ -2357,52 +2357,52 @@ minute when a connection needs to be opened. Maybe after half a
2357minute you have already forgotten that you hit that key! 2357minute you have already forgotten that you hit that key!
2358 2358
2359@menu 2359@menu
2360* Filename Syntax:: @value{tramp} filename conventions. 2360* File name Syntax:: @value{tramp} file name conventions.
2361* Filename completion:: Filename completion. 2361* File name completion:: File name completion.
2362* Ad-hoc multi-hops:: Declaring multiple hops in the file name. 2362* Ad-hoc multi-hops:: Declaring multiple hops in the file name.
2363* Remote processes:: Integration with other @value{emacsname} packages. 2363* Remote processes:: Integration with other @value{emacsname} packages.
2364* Cleanup remote connections:: Cleanup remote connections. 2364* Cleanup remote connections:: Cleanup remote connections.
2365@end menu 2365@end menu
2366 2366
2367 2367
2368@node Filename Syntax 2368@node File name Syntax
2369@section @value{tramp} filename conventions 2369@section @value{tramp} file name conventions
2370@cindex filename syntax 2370@cindex file name syntax
2371@cindex filename examples 2371@cindex file name examples
2372 2372
2373To access the file @var{localname} on the remote machine @var{machine} 2373To access the file @var{localname} on the remote host @var{host}
2374you would specify the filename @file{@trampfn{, , machine, 2374you would specify the file name @file{@trampfn{, , host,
2375localname}}. This will connect to @var{machine} and transfer the file 2375localname}}. This will connect to @var{host} and transfer the file
2376using the default method. @xref{Default Method}. 2376using the default method. @xref{Default Method}.
2377 2377
2378Some examples of @value{tramp} filenames are shown below. 2378Some examples of @value{tramp} file names are shown below.
2379 2379
2380@table @file 2380@table @file
2381@item @value{prefix}melancholia@value{postfix}.emacs 2381@item @value{prefix}melancholia@value{postfix}.emacs
2382Edit the file @file{.emacs} in your home directory on the machine 2382Edit the file @file{.emacs} in your home directory on the host
2383@code{melancholia}. 2383@code{melancholia}.
2384 2384
2385@item @value{prefix}melancholia.danann.net@value{postfix}.emacs 2385@item @value{prefix}melancholia.danann.net@value{postfix}.emacs
2386This edits the same file, using the fully qualified domain name of 2386This edits the same file, using the fully qualified domain name of
2387the machine. 2387the host.
2388 2388
2389@item @value{prefix}melancholia@value{postfix}~/.emacs 2389@item @value{prefix}melancholia@value{postfix}~/.emacs
2390This also edits the same file; the @file{~} is expanded to your 2390This also edits the same file; the @file{~} is expanded to your
2391home directory on the remote machine, just like it is locally. 2391home directory on the remote host, just like it is locally.
2392 2392
2393@item @value{prefix}melancholia@value{postfix}~daniel/.emacs 2393@item @value{prefix}melancholia@value{postfix}~daniel/.emacs
2394This edits the file @file{.emacs} in the home directory of the user 2394This edits the file @file{.emacs} in the home directory of the user
2395@code{daniel} on the machine @code{melancholia}. The @file{~<user>} 2395@code{daniel} on the host @code{melancholia}. The @file{~<user>}
2396construct is expanded to the home directory of that user on the remote 2396construct is expanded to the home directory of that user on the remote
2397machine. 2397host.
2398 2398
2399@item @value{prefix}melancholia@value{postfix}/etc/squid.conf 2399@item @value{prefix}melancholia@value{postfix}/etc/squid.conf
2400This edits the file @file{/etc/squid.conf} on the machine 2400This edits the file @file{/etc/squid.conf} on the host
2401@code{melancholia}. 2401@code{melancholia}.
2402 2402
2403@end table 2403@end table
2404 2404
2405@var{machine} can also be an IPv4 or IPv6 address, like in 2405@var{host} can also be an IPv4 or IPv6 address, like in
2406@file{@trampfn{, , 127.0.0.1, .emacs}} or @file{@trampfn{, , 2406@file{@trampfn{, , 127.0.0.1, .emacs}} or @file{@trampfn{, ,
2407@value{ipv6prefix}::1@value{ipv6postfix}, .emacs}}. 2407@value{ipv6prefix}::1@value{ipv6postfix}, .emacs}}.
2408@ifset emacs 2408@ifset emacs
@@ -2413,17 +2413,17 @@ brackets @file{@value{ipv6prefix}} and @file{@value{ipv6postfix}}.
2413Unless you specify a different name to use, @value{tramp} will use the 2413Unless you specify a different name to use, @value{tramp} will use the
2414current local user name as the remote user name to log in with. If you 2414current local user name as the remote user name to log in with. If you
2415need to log in as a different user, you can specify the user name as 2415need to log in as a different user, you can specify the user name as
2416part of the filename. 2416part of the file name.
2417 2417
2418To log in to the remote machine as a specific user, you use the syntax 2418To log in to the remote host as a specific user, you use the syntax
2419@file{@trampfn{, user, machine, path/to.file}}. That means that 2419@file{@trampfn{, user, host, path/to.file}}. That means that
2420connecting to @code{melancholia} as @code{daniel} and editing 2420connecting to @code{melancholia} as @code{daniel} and editing
2421@file{.emacs} in your home directory you would specify 2421@file{.emacs} in your home directory you would specify
2422@file{@trampfn{, daniel, melancholia, .emacs}}. 2422@file{@trampfn{, daniel, melancholia, .emacs}}.
2423 2423
2424It is also possible to specify other file transfer methods 2424It is also possible to specify other file transfer methods
2425(@pxref{Inline methods}, @pxref{External methods}) as part of the 2425(@pxref{Inline methods}, @pxref{External methods}) as part of the
2426filename. 2426file name.
2427@ifset emacs 2427@ifset emacs
2428This is done by putting the method before the user and host name, as 2428This is done by putting the method before the user and host name, as
2429in @file{@value{prefix}@var{method}@value{postfixhop}} (Note the 2429in @file{@value{prefix}@var{method}@value{postfixhop}} (Note the
@@ -2434,15 +2434,15 @@ This is done by replacing the initial @file{@value{prefix}} with
2434@file{@value{prefix}<method>@value{postfixhop}}. (Note the trailing 2434@file{@value{prefix}<method>@value{postfixhop}}. (Note the trailing
2435slash!). 2435slash!).
2436@end ifset 2436@end ifset
2437The user, machine and file specification remain the same. 2437The user, host and file specification remain the same.
2438 2438
2439So, to connect to the machine @code{melancholia} as @code{daniel}, 2439So, to connect to the host @code{melancholia} as @code{daniel},
2440using the @option{ssh} method to transfer files, and edit 2440using the @option{ssh} method to transfer files, and edit
2441@file{.emacs} in my home directory I would specify the filename 2441@file{.emacs} in my home directory I would specify the file name
2442@file{@trampfn{ssh, daniel, melancholia, .emacs}}. 2442@file{@trampfn{ssh, daniel, melancholia, .emacs}}.
2443 2443
2444@ifset emacs 2444@ifset emacs
2445A remote filename containing a host name only, which is equal to a 2445A remote file name containing a host name only, which is equal to a
2446method name, is not allowed. If such a host name is used, it must 2446method name, is not allowed. If such a host name is used, it must
2447always be preceded by an explicit method name, like 2447always be preceded by an explicit method name, like
2448@file{@value{prefix}ssh@value{postfixhop}ssh@value{postfix}}. 2448@file{@value{prefix}ssh@value{postfixhop}ssh@value{postfix}}.
@@ -2454,13 +2454,13 @@ by adding @file{#<port>} to the host name, like in @file{@trampfn{ssh,
2454daniel, melancholia#42, .emacs}}. 2454daniel, melancholia#42, .emacs}}.
2455 2455
2456 2456
2457@node Filename completion 2457@node File name completion
2458@section Filename completion 2458@section File name completion
2459@cindex filename completion 2459@cindex file name completion
2460 2460
2461Filename completion works with @value{tramp} for completion of method 2461File name completion works with @value{tramp} for completion of method
2462names, of user names and of machine names as well as for completion of 2462names, of user names and of host names as well as for completion of
2463file names on remote machines. 2463file names on remote hosts.
2464@ifset emacs 2464@ifset emacs
2465In order to enable this, partial completion must be activated in your 2465In order to enable this, partial completion must be activated in your
2466@file{.emacs}. 2466@file{.emacs}.
@@ -2488,8 +2488,7 @@ If you, for example, type @kbd{C-x C-f @value{prefix}t
2488@samp{@value{prefixhop}telnet@value{postfixhop}} 2488@samp{@value{prefixhop}telnet@value{postfixhop}}
2489is a possible completion for the respective method, 2489is a possible completion for the respective method,
2490@ifset emacs 2490@ifset emacs
2491@samp{tmp/} stands for the directory @file{/tmp} on your local 2491@samp{tmp/} stands for the directory @file{/tmp} on your local host,
2492machine,
2493@end ifset 2492@end ifset
2494and @samp{@value{prefixhop}toto@value{postfix}} 2493and @samp{@value{prefixhop}toto@value{postfix}}
2495might be a host @value{tramp} has detected in your @file{~/.ssh/known_hosts} 2494might be a host @value{tramp} has detected in your @file{~/.ssh/known_hosts}
@@ -2497,7 +2496,7 @@ file (given you're using default method @option{ssh}).
2497 2496
2498If you go on to type @kbd{e @key{TAB}}, the minibuffer is completed to 2497If you go on to type @kbd{e @key{TAB}}, the minibuffer is completed to
2499@samp{@value{prefix}telnet@value{postfixhop}}. 2498@samp{@value{prefix}telnet@value{postfixhop}}.
2500Next @kbd{@key{TAB}} brings you all machine names @value{tramp} detects in 2499Next @kbd{@key{TAB}} brings you all host names @value{tramp} detects in
2501your @file{/etc/hosts} file, let's say 2500your @file{/etc/hosts} file, let's say
2502 2501
2503@example 2502@example
@@ -2509,21 +2508,21 @@ your @file{/etc/hosts} file, let's say
2509@end multitable 2508@end multitable
2510@end example 2509@end example
2511 2510
2512Now you can choose the desired machine, and you can continue to 2511Now you can choose the desired host, and you can continue to
2513complete file names on that machine. 2512complete file names on that host.
2514 2513
2515If the configuration files (@pxref{Customizing Completion}), which 2514If the configuration files (@pxref{Customizing Completion}), which
2516@value{tramp} uses for analysis of completion, offer user names, those user 2515@value{tramp} uses for analysis of completion, offer user names, those user
2517names will be taken into account as well. 2516names will be taken into account as well.
2518 2517
2519Remote machines which have been visited in the past and kept 2518Remote hosts which have been visited in the past and kept
2520persistently (@pxref{Connection caching}) will be offered too. 2519persistently (@pxref{Connection caching}) will be offered too.
2521 2520
2522Once the remote machine identification is completed, it comes to 2521Once the remote host identification is completed, it comes to
2523filename completion on the remote host. This works pretty much like 2522file name completion on the remote host. This works pretty much like
2524for files on the local host, with the exception that minibuffer 2523for files on the local host, with the exception that minibuffer
2525killing via a double-slash works only on the filename part, except 2524killing via a double-slash works only on the file name part, except
2526that filename part starts with @file{//}. 2525that file name part starts with @file{//}.
2527@ifset emacs 2526@ifset emacs
2528A triple-slash stands for the default behavior. 2527A triple-slash stands for the default behavior.
2529@end ifset 2528@end ifset
@@ -2557,14 +2556,14 @@ Example:
2557 2556
2558A remote directory might have changed its contents out of 2557A remote directory might have changed its contents out of
2559@value{emacsname} control, for example by creation or deletion of 2558@value{emacsname} control, for example by creation or deletion of
2560files by other processes. Therefore, during filename completion, the 2559files by other processes. Therefore, during file name completion, the
2561remote directory contents are reread regularly in order to detect such 2560remote directory contents are reread regularly in order to detect such
2562changes, which would be invisible otherwise (@pxref{Connection caching}). 2561changes, which would be invisible otherwise (@pxref{Connection caching}).
2563 2562
2564@defopt tramp-completion-reread-directory-timeout 2563@defopt tramp-completion-reread-directory-timeout
2565This variable defines the number of seconds since last remote command 2564This variable defines the number of seconds since last remote command
2566before rereading a directory contents. A value of 0 would require an 2565before rereading a directory contents. A value of 0 would require an
2567immediate reread during filename completion, @code{nil} means to use 2566immediate reread during file name completion, @code{nil} means to use
2568always cached values for the directory contents. 2567always cached values for the directory contents.
2569@end defopt 2568@end defopt
2570 2569
@@ -2632,7 +2631,7 @@ host when the variable @code{default-directory} is remote:
2632@ifset emacsgvfs 2631@ifset emacsgvfs
2633If the remote host is mounted via GVFS (see @ref{GVFS based methods}), 2632If the remote host is mounted via GVFS (see @ref{GVFS based methods}),
2634the remote filesystem is mounted locally. Therefore, there are no 2633the remote filesystem is mounted locally. Therefore, there are no
2635remote processes; all processes run still locally on your machine with 2634remote processes; all processes run still locally on your host with
2636an adapted @code{default-directory}. This section does not apply for 2635an adapted @code{default-directory}. This section does not apply for
2637such connection methods. 2636such connection methods.
2638@end ifset 2637@end ifset
@@ -2645,7 +2644,7 @@ integrated. Integration of further packages is planned, any help for
2645this is welcome! 2644this is welcome!
2646 2645
2647When your program is not found in the default search path 2646When your program is not found in the default search path
2648@value{tramp} sets on the remote machine, you should either use an 2647@value{tramp} sets on the remote host, you should either use an
2649absolute path, or extend @code{tramp-remote-path} (see @ref{Remote 2648absolute path, or extend @code{tramp-remote-path} (see @ref{Remote
2650Programs}): 2649Programs}):
2651 2650
@@ -2713,18 +2712,18 @@ that host.
2713 2712
2714Calling @kbd{M-x shell} in a buffer related to a remote host runs the 2713Calling @kbd{M-x shell} in a buffer related to a remote host runs the
2715local shell as defined in @option{shell-file-name}. This might be 2714local shell as defined in @option{shell-file-name}. This might be
2716also a valid path name for a shell to be applied on the remote host, 2715also a valid file name for a shell to be applied on the remote host,
2717but it will fail at least when your local and remote hosts belong to 2716but it will fail at least when your local and remote hosts belong to
2718different system types, like @samp{windows-nt} and @samp{gnu/linux}. 2717different system types, like @samp{windows-nt} and @samp{gnu/linux}.
2719 2718
2720You must set the variable @option{explicit-shell-file-name} to the 2719You must set the variable @option{explicit-shell-file-name} to the
2721shell path name on the remote host, in order to start that shell on 2720shell file name on the remote host, in order to start that shell on
2722the remote host. 2721the remote host.
2723 2722
2724@ifset emacs 2723@ifset emacs
2725Starting with Emacs 24 this won't be necessary, if you call 2724Starting with Emacs 24 this won't be necessary, if you call
2726@code{shell} interactively. You will be asked for the remote shell 2725@code{shell} interactively. You will be asked for the remote shell
2727path, if you are on a remote buffer, and if 2726file name, if you are on a remote buffer, and if
2728@option{explicit-shell-file-name} is equal to @code{nil}. 2727@option{explicit-shell-file-name} is equal to @code{nil}.
2729@end ifset 2728@end ifset
2730 2729
@@ -2924,7 +2923,7 @@ the @value{tramp} Mail Subscription Page}.
2924@ifset emacs 2923@ifset emacs
2925@ifset installchapter 2924@ifset installchapter
2926Before sending a bug report, you could check whether @value{tramp} 2925Before sending a bug report, you could check whether @value{tramp}
2927works at all. Run the test suite on your local machine, @ref{Testing}. 2926works at all. Run the test suite on your local host, @ref{Testing}.
2928@end ifset 2927@end ifset
2929@end ifset 2928@end ifset
2930 2929
@@ -2935,7 +2934,7 @@ of your system and @value{tramp} version.
2935 2934
2936When submitting a bug report, please try to describe in excruciating 2935When submitting a bug report, please try to describe in excruciating
2937detail the steps required to reproduce the problem, the setup of the 2936detail the steps required to reproduce the problem, the setup of the
2938remote machine and any special conditions that exist. You should also 2937remote host and any special conditions that exist. You should also
2939check that your problem is not described already in @xref{Frequently 2938check that your problem is not described already in @xref{Frequently
2940Asked Questions}. 2939Asked Questions}.
2941 2940
@@ -3009,7 +3008,7 @@ information about remote hosts is kept in the file specified in
3009confident that files on remote hosts are not changed out of 3008confident that files on remote hosts are not changed out of
3010@value{emacsname}' control, set @code{remote-file-name-inhibit-cache} 3009@value{emacsname}' control, set @code{remote-file-name-inhibit-cache}
3011to @code{nil}. Set also @code{tramp-completion-reread-directory-timeout} 3010to @code{nil}. Set also @code{tramp-completion-reread-directory-timeout}
3012to @code{nil}, @ref{Filename completion}. 3011to @code{nil}, @ref{File name completion}.
3013 3012
3014Disable version control. If you access remote files which are not 3013Disable version control. If you access remote files which are not
3015under version control, a lot of check operations can be avoided by 3014under version control, a lot of check operations can be avoided by
@@ -3037,7 +3036,7 @@ reasons heading the bug mailing list:
3037@item 3036@item
3038Unknown characters in the prompt 3037Unknown characters in the prompt
3039 3038
3040@value{tramp} needs to recognize the prompt on the remote machine 3039@value{tramp} needs to recognize the prompt on the remote host
3041after execution any command. This is not possible when the prompt 3040after execution any command. This is not possible when the prompt
3042contains unknown characters like escape sequences for coloring. This 3041contains unknown characters like escape sequences for coloring. This
3043should be avoided on the remote side. @xref{Remote shell setup}. for 3042should be avoided on the remote side. @xref{Remote shell setup}. for
@@ -3069,7 +3068,7 @@ incidentally) doesn't work with WinSSHD due to strange prompt settings.
3069@item 3068@item
3070Echoed characters after login 3069Echoed characters after login
3071 3070
3072When the remote machine opens an echoing shell, there might be control 3071When the remote host opens an echoing shell, there might be control
3073characters in the welcome message. @value{tramp} tries to suppress 3072characters in the welcome message. @value{tramp} tries to suppress
3074such echoes via the @command{stty -echo} command, but sometimes this 3073such echoes via the @command{stty -echo} command, but sometimes this
3075command is not reached, because the echoed output has confused 3074command is not reached, because the echoed output has confused
@@ -3167,7 +3166,7 @@ your @file{~/.ssh/config}:
3167@item 3166@item
3168File name completion does not work with @value{tramp} 3167File name completion does not work with @value{tramp}
3169 3168
3170When you log in to the remote machine, do you see the output of 3169When you log in to the remote host, do you see the output of
3171@command{ls} in color? If so, this may be the cause of your problems. 3170@command{ls} in color? If so, this may be the cause of your problems.
3172 3171
3173@command{ls} outputs @acronym{ANSI} escape sequences that your terminal 3172@command{ls} outputs @acronym{ANSI} escape sequences that your terminal
@@ -3175,12 +3174,12 @@ emulator interprets to set the colors. These escape sequences will
3175confuse @value{tramp} however. 3174confuse @value{tramp} however.
3176 3175
3177In your @file{.bashrc}, @file{.profile} or equivalent on the remote 3176In your @file{.bashrc}, @file{.profile} or equivalent on the remote
3178machine you probably have an alias configured that adds the option 3177host you probably have an alias configured that adds the option
3179@option{--color=yes} or @option{--color=auto}. 3178@option{--color=yes} or @option{--color=auto}.
3180 3179
3181You should remove that alias and ensure that a new login @emph{does not} 3180You should remove that alias and ensure that a new login @emph{does not}
3182display the output of @command{ls} in color. If you still cannot use 3181display the output of @command{ls} in color. If you still cannot use
3183filename completion, report a bug to the @value{tramp} developers. 3182file name completion, report a bug to the @value{tramp} developers.
3184 3183
3185 3184
3186@item 3185@item
@@ -3726,7 +3725,7 @@ names. As such, the lisp functions @code{file-name-directory} and
3726package. 3725package.
3727 3726
3728Their replacements are reasonably simplistic in their approach. They 3727Their replacements are reasonably simplistic in their approach. They
3729dissect the filename, call the original handler on the localname and 3728dissect the file name, call the original handler on the localname and
3730then rebuild the @value{tramp} file name with the result. 3729then rebuild the @value{tramp} file name with the result.
3731 3730
3732This allows the platform specific hacks in the original handlers to take 3731This allows the platform specific hacks in the original handlers to take
@@ -3736,19 +3735,19 @@ effect while preserving the @value{tramp} file name information.
3736@ifset emacs 3735@ifset emacs
3737@node External packages 3736@node External packages
3738@section Integration with external Lisp packages 3737@section Integration with external Lisp packages
3739@subsection Filename completion. 3738@subsection File name completion.
3740 3739
3741While reading filenames in the minibuffer, @value{tramp} must decide 3740While reading file names in the minibuffer, @value{tramp} must decide
3742whether it completes possible incomplete filenames, or not. Imagine 3741whether it completes possible incomplete file names, or not. Imagine
3743there is the following situation: You have typed @kbd{C-x C-f 3742there is the following situation: You have typed @kbd{C-x C-f
3744@value{prefix}ssh@value{postfixhop} @key{TAB}}. @value{tramp} cannot 3743@value{prefix}ssh@value{postfixhop} @key{TAB}}. @value{tramp} cannot
3745know, whether @option{ssh} is a method or a host name. It checks 3744know, whether @option{ssh} is a method or a host name. It checks
3746therefore the last input character you have typed. If this is 3745therefore the last input character you have typed. If this is
3747@key{TAB}, @key{SPACE} or @kbd{?}, @value{tramp} assumes that you are 3746@key{TAB}, @key{SPACE} or @kbd{?}, @value{tramp} assumes that you are
3748still in filename completion, and it does not connect to the possible 3747still in file name completion, and it does not connect to the possible
3749remote host @option{ssh}. 3748remote host @option{ssh}.
3750 3749
3751External packages, which use other characters for completing filenames 3750External packages, which use other characters for completing file names
3752in the minibuffer, must signal this to @value{tramp}. For this case, 3751in the minibuffer, must signal this to @value{tramp}. For this case,
3753the variable @code{non-essential} can be bound temporarily to 3752the variable @code{non-essential} can be bound temporarily to
3754a non-@code{nil} value. 3753a non-@code{nil} value.
@@ -3891,16 +3890,16 @@ printed and deleted.
3891But I have decided that this is too fragile to reliably work, so on some 3890But I have decided that this is too fragile to reliably work, so on some
3892systems you'll have to do without the uuencode methods. 3891systems you'll have to do without the uuencode methods.
3893 3892
3894@item The @value{tramp} filename syntax differs between Emacs and XEmacs. 3893@item The @value{tramp} file name syntax differs between Emacs and XEmacs.
3895 3894
3896The Emacs maintainers wish to use a unified filename syntax for 3895The Emacs maintainers wish to use a unified file name syntax for
3897Ange-FTP and @value{tramp} so that users don't have to learn a new 3896Ange-FTP and @value{tramp} so that users don't have to learn a new
3898syntax. It is sufficient to learn some extensions to the old syntax. 3897syntax. It is sufficient to learn some extensions to the old syntax.
3899 3898
3900For the XEmacs maintainers, the problems caused from using a unified 3899For the XEmacs maintainers, the problems caused from using a unified
3901filename syntax are greater than the gains. The XEmacs package system 3900file name syntax are greater than the gains. The XEmacs package system
3902uses EFS for downloading new packages. So, obviously, EFS has to be 3901uses EFS for downloading new packages. So, obviously, EFS has to be
3903installed from the start. If the filenames were unified, @value{tramp} 3902installed from the start. If the file names were unified, @value{tramp}
3904would have to be installed from the start, too. 3903would have to be installed from the start, too.
3905 3904
3906@ifset xemacs 3905@ifset xemacs
@@ -3917,12 +3916,12 @@ The autoload of the @value{emacsname} @value{tramp} package must be
3917disabled. This can be achieved by setting file permissions @code{000} 3916disabled. This can be achieved by setting file permissions @code{000}
3918to the files @file{.../xemacs-packages/lisp/tramp/auto-autoloads.el*}. 3917to the files @file{.../xemacs-packages/lisp/tramp/auto-autoloads.el*}.
3919 3918
3920In case of unified filenames, all @value{emacsname} download sites are 3919In case of unified file names, all @value{emacsname} download sites are
3921added to @code{tramp-default-method-alist} with default method 3920added to @code{tramp-default-method-alist} with default method
3922@option{ftp} @xref{Default Method}. These settings shouldn't be 3921@option{ftp} @xref{Default Method}. These settings shouldn't be
3923touched for proper working of the @value{emacsname} package system. 3922touched for proper working of the @value{emacsname} package system.
3924 3923
3925The syntax for unified filenames is described in the @value{tramp} manual 3924The syntax for unified file names is described in the @value{tramp} manual
3926for @value{emacsothername}. 3925for @value{emacsothername}.
3927@end ifset 3926@end ifset
3928@end itemize 3927@end itemize
@@ -3955,7 +3954,5 @@ for @value{emacsothername}.
3955@c shells. 3954@c shells.
3956@c * Explain how tramp.el works in principle: open a shell on a remote 3955@c * Explain how tramp.el works in principle: open a shell on a remote
3957@c host and then send commands to it. 3956@c host and then send commands to it.
3958@c * Use `filename' resp. `file name' consistently.
3959@c * Use `host' resp. `machine' consistently.
3960@c * Consistent small or capitalized words especially in menus. 3957@c * Consistent small or capitalized words especially in menus.
3961@c * Make a unique declaration of @trampfn. 3958@c * Make a unique declaration of @trampfn.
diff --git a/etc/COOKIES b/etc/COOKIES
deleted file mode 100644
index 1d8c0955d42..00000000000
--- a/etc/COOKIES
+++ /dev/null
@@ -1,157 +0,0 @@
1[Someone sent this in from California, and we decided to extend
2our campaign against information hoarding to recipes as well
3as software. (Recipes are the closest thing, not involving computers,
4to software.)
5
6The story appears to be a myth, according to the Chicago Tribune,
7which says that Mrs Fields Cookies hoards the information completely.
8Therefore, this recipe can be thought of as a compatible replacement.
9We have reports that the cookies it makes are pretty good.]
10
11Someone at PG&E called the Mrs. Fields Cookie office
12and requested the recipe for her cookies. They asked
13her for her charge card number, and she gave it to them
14thinking the cost would be $15 to $25. It turned out
15to be $200!
16
17Therefore, this person is giving the recipe to anyone
18and everyone she knows (and doesn't know) so that
19someone can get use of her $200. Anyway, just keep
20passing it on.
21
22Cream together: 2 cups butter
23 2 cups sugar
24 2 cups brown sugar
25
26Add: 4 eggs
27 2 tsp. vanilla
28
29Mix together in
30separate bowl: 4 cups flour
31 5 cups oatmeal (put small
32 amounts of oatmeal in blender until it turns to
33 powder. Measure out 5 cups of oatmeal and only
34 "powderize" that, NOT 5 cups "powderized" oatmeal)
35
36 1 tsp salt
37 2 tsp baking powder
38 2 tsp baking soda
39
40Mix: All of the above
41
42Add: 24 oz. bag of chocolate chips and
43 1 finely grated 8 oz Hershey bar (plain)
44
45Add: 3 cups chopped nuts (any kind)
46
47Bake on greased cookie sheet (make golf ball sized balls) and
48bake about two inches apart. Bake at 350 degrees for 8 - 10
49minutes. DO NOT OVERBAKE. Makes 112.
50
51From: ucdavis!lll-lcc!hplabs!parcvax!bane@ucbvax.berkeley.edu (John R. Bane)
52Subject: Re: free cookie foundation?
53
54Hi! I "stole" your very expensive cookie recipe off the net. If you
55want to send me your SnailMail address, I'll be glad to send you a
56dollar (I would like to suggest this to the net, but I think there is
57some netiquette rule against asking for money - or is that only money
58for oneself?) to help defray the cost (it's not much, but if EVERYone
59who took the recipe sent you a dollar, it would help).
60
61Here also is another cookie recipe which I'm very fond of.
62
63Makes 6-8 dozen
64Bake at 375 degrees for ~10 min.
65
66Cream together:
67
681 cup shortening (I use Weight Watcher's Reduced Calorie Margarine!)
691/4 cup peanut butter (I recommend the non-sugared kind)
701/2 cup sugar
711/2 cup brown sugar
722 eggs
731 teaspoon vanilla
74
75Add:
76
771/2 cup flour
781 teaspoon soda
791/2 teaspoon salt
802 cups rolled oats (I use the 5-min variety)
811-2 cups chocolate chips (I use 2 cups semi-sweet - ummmm!)
821 cup nuts (I use pecan pieces - don't get them crushed, or the extra
83 oil will make greasy cookies)
841 cup shredded or flaked coconut
85
86(The nuts were listed as optional and I added the coconut myself, but
87I really love them there! You could also add things like m&m's, or
88raisins (I don't care for raisins in cookies, but you might). I've
89always wanted to try banana chips.)
90
91Mix well. Drop by teaspoonfuls on greased cookie sheet (I use pam).
92Bake at 375 degrees for approx. 10 min.
93
94My aunt found this recipe in an Amish book called something like
95"Eating Well When The Whole World Is Starving," and although I thought
96a cookie recipe was a bit odd for a book like that, they are about the
97healthiest a cookie is ever likely to get.
98
99They are also very easy to make (no blending, sifting, rolling, etc.)
100and extremely delicious. I get rave reviews and recipe requests whenever
101I make them.
102
103 - rene
104
105Chocolate Chip Cookies - Glamorous, crunchy, rich with chocolate bits & nuts.
106
107Also known as "Toll House" Cookies ... from Kenneth and Ruth Wakefield's
108charming New England Toll House on the outskirts of Whitman, Massachusetts.
109These cookies were first introduced to American homemakers in 1939 through
110our series of radio talks on "Famous Foods From Famous Eating Places."
111
112Mix Thoroughly :
113 2/3 cup soft shortening ( part butter )
114 1/2 cup granulated sugar
115 1/2 cup brown sugar ( packed )
116 1 egg
117 1 tsp vanilla
118
119Sift together and stir in :
120 1-1/2 cups sifted flour (*)
121 1/2 tsp soda
122 1/2 tsp salt
123
124Stir in :
125 1/2 cup cut-up nuts
126 6 oz package of semi-sweet chocolate pieces ( about 1-1/4 cups )
127
128
129(*) for a softer, more rounded cookie, use 1-3/4 cups sifted flour.
130
131
132Drop rounded teaspoonfuls about 2" apart on ungreased baking sheet. Bake until
133delicately browned ... cookies should still be soft. Cool slightly before you
134remove them from the baking sheet.
135
136Temperature: 375 F. ( modern oven )
137Time: bake 8 - 10 minutes
138Amount: 4 - 5 dozen 2" cookies
139
140
141=====
142
143Personal comments :
144
145I find it tastes better with a mixture of shortening and butter, as they say.
146
147You don't need << all >> of that sugar, and it can be whatever color you want.
148
149The nuts are optional. Feel free to play with the recipe. I put oatmeal in it,
150reducing flour accordingly, and sometimes cinnamon.
151
152I also find it useful to grease the cookie sheets.
153
154I think I'm going to go bake some now ...
155
156-- richard
157
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 7af5d65092f..a6f51d04ae2 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,18 @@
12014-01-12 David Engster <deng@randomsample.de>
2
3 * NEWS: Add missing renames to EIEIO section. Also, no functions
4 were removed but only made obsolete. Class field accessors were
5 always purely internal, so remove that remark. Add markup.
6
72014-01-11 Eric S. Raymond <esr@thyrsus.com>
8
9 * celibacy.1, sex.6, condom.1, echo.msg: Deleted at RMS's
10 suggestion. Not lost to posterity as they are part of the
11 widely distributed funny-manpages collection.
12
13 * COOKIES, copying.paper, INTERVIEW, MAILINGLISTS, MOTIVATION,
14 * SERVICE: More deletions suggested by RMS.
15
12014-01-10 Glenn Morris <rgm@gnu.org> 162014-01-10 Glenn Morris <rgm@gnu.org>
2 17
3 * ORDERS: Replace contents with pointer to emacs.info, mark obsolete. 18 * ORDERS: Replace contents with pointer to emacs.info, mark obsolete.
diff --git a/etc/INTERVIEW b/etc/INTERVIEW
deleted file mode 100644
index 4e109ba49dd..00000000000
--- a/etc/INTERVIEW
+++ /dev/null
@@ -1,442 +0,0 @@
1
2 GNU'S NOT UNIX
3
4 Conducted by David Betz and Jon Edwards
5
6 Richard Stallman discusses his public-domain
7 UNIX-compatible software system
8 with BYTE editors
9 (July 1986)
10
11Copyright (C) 1986 Richard Stallman. Permission is granted to make and
12distribute copies of this article as long as the copyright and this notice
13appear on all copies.
14
15Richard Stallman has undertaken probably the most ambitious free software
16development project to date, the GNU system. In his GNU Manifesto,
17published in the March 1985 issue of Dr. Dobb's Journal, Stallman described
18GNU as a "complete Unix-compatible software system which I am writing so
19that I can give it away free to everyone who can use it... Once GNU is
20written, everyone will be able to obtain good system software free, just
21like air." (GNU is an acronym for GNU's Not UNIX; the "G" is pronounced.)
22
23 Stallman is widely known as the author of EMACS, a powerful text editor
24that he developed at the MIT Artificial Intelligence Laboratory. It is no
25coincidence that the first piece of software produced as part of the GNU
26project was a new implementation of EMACS. GNU EMACS has already achieved a
27reputation as one of the best implementations of EMACS currently available
28at any price.
29
30BYTE: We read your GNU Manifesto in the March 1985 issue of Dr. Dobb's.
31What has happened since? Was that really the beginning, and how have you
32progressed since then?
33
34Stallman: The publication in Dr. Dobb's wasn't the beginning of the
35project. I wrote the GNU Manifesto when I was getting ready to start the
36project, as a proposal to ask computer manufacturers for funding. They
37didn't want to get involved, and I decided that rather than spend my time
38trying to pursue funds, I ought to spend it writing code. The manifesto was
39published about a year and a half after I had written it, when I had barely
40begun distributing the GNU EMACS. Since that time, in addition to making
41GNU EMACS more complete and making it run on many more computers, I have
42nearly finished the optimizing C compiler and all the other software that
43is needed for running C programs. This includes a source-level debugger
44that has many features that the other source-level debuggers on UNIX don't
45have. For example, it has convenience variables within the debugger so you
46can save values, and it also has a history of all the values that you have
47printed out, making it tremendously easier to chase around list structures.
48
49BYTE: You have finished an editor that is now widely distributed and you
50are about to finish the compiler.
51
52Stallman: I expect that it will be finished this October.
53
54BYTE: What about the kernel?
55
56Stallman: I'm currently planning to start with the kernel that was written
57at MIT and was released to the public recently with the idea that I would
58use it. This kernel is called TRIX; it's based on remote procedure call. I
59still need to add compatibility for a lot of the features of UNIX which it
60doesn't have currently. I haven't started to work on that yet. I'm
61finishing the compiler before I go to work on the kernel. I am also going
62to have to rewrite the file system. I intend to make it failsafe just by
63having it write blocks in the proper order so that the disk structure is
64always consistent. Then I want to add version numbers. I have a complicated
65scheme to reconcile version numbers with the way people usually use UNIX.
66You have to be able to specify filenames without version numbers, but you
67also have to be able to specify them with explicit version numbers, and
68these both need to work with ordinary UNIX programs that have not been
69modified in any way to deal with the existence of this feature. I think I
70have a scheme for doing this, and only trying it will show me whether it
71really does the job.
72
73BYTE: Do you have a brief description you can give us as to how GNU as a
74system will be superior to other systems? We know that one of your goals is
75to produce something that is compatible with UNIX. But at least in the area
76of file systems you have already said that you are going to go beyond UNIX
77and produce something that is better.
78
79Stallman: The C compiler will produce better code and run faster. The
80debugger is better. With each piece I may or may not find a way to improve
81it. But there is no one answer to this question. To some extent I am
82getting the benefit of reimplementation, which makes many systems much
83better. To some extent it's because I have been in the field a long time
84and worked on many other systems. I therefore have many ideas to bring to
85bear. One way in which it will be better is that practically everything in
86the system will work on files of any size, on lines of any size, with any
87characters appearing in them. The UNIX system is very bad in that regard.
88It's not anything new as a principle of software engineering that you
89shouldn't have arbitrary limits. But it just was the standard practice in
90writing UNIX to put those in all the time, possibly just because they were
91writing it for a very small computer. The only limit in the GNU system is
92when your program runs out of memory because it tried to work on too much
93data and there is no place to keep it all.
94
95BYTE: And that isn't likely to be hit if you've got virtual memory. You may
96just take forever to come up with the solution.
97
98Stallman: Actually these limits tend to hit in a time long before you take
99forever to come up with the solution.
100
101BYTE: Can you say something about what types of machines and environments
102GNU EMACS in particular has been made to run under? It's now running on
103VAXes; has it migrated in any form to personal computers?
104
105Stallman: I'm not sure what you mean by personal computers. For example, is
106a Sun a personal computer? GNU EMACS requires at least a megabyte of
107available memory and preferably more. It is normally used on machines that
108have virtual memory. Except for various technical problems in a few C
109compilers, almost any machine with virtual memory and running a fairly
110recent version of UNIX will run GNU EMACS, and most of them currently do.
111
112BYTE: Has anyone tried to port it to Ataris or Macintoshes?
113
114Stallman: The Atari 1040ST still doesn't have quite enough memory. The next
115Atari machine, I expect, will run it. I also think that future Ataris will
116have some forms of memory mapping. Of course, I am not designing the
117software to run on the kinds of computers that are prevalent today. I knew
118when I started this project it was going to take a few years. I therefore
119decided that I didn't want to make a worse system by taking on the
120additional challenge of making it run in the currently constrained
121environment. So instead I decided I'm going to write it in the way that
122seems the most natural and best. I am confident that in a couple of years
123machines of sufficient size will be prevalent. In fact, increases in memory
124size are happening so fast it surprises me how slow most of the people are
125to put in virtual memory; I think it is totally essential.
126
127BYTE: I think people don't really view it as being necessary for
128single-user machines.
129
130Stallman: They don't understand that single user doesn't mean single
131program. Certainly for any UNIX-like system it's important to be able to
132run lots of different processes at the same time even if there is only one
133of you. You could run GNU EMACS on a nonvirtual-memory machine with enough
134memory, but you couldn't run the rest of the GNU system very well or a UNIX
135system very well.
136
137BYTE: How much of LISP is present in GNU EMACS? It occurred to me that it
138may be useful to use that as a tool for learning LISP.
139
140Stallman: You can certainly do that. GNU EMACS contains a complete,
141although not very powerful, LISP system. It's powerful enough for writing
142editor commands. It's not comparable with, say, a Common LISP System,
143something you could really use for system programming, but it has all the
144things that LISP needs to have.
145
146BYTE: Do you have any predictions about when you would be likely to
147distribute a workable environment in which, if we put it on our machines or
148workstations, we could actually get reasonable work done without using
149anything other than code that you distribute?
150
151Stallman: It's really hard to say. That could happen in a year, but of
152course it could take longer. It could also conceivably take less, but
153that's not too likely anymore. I think I'll have the compiler finished in a
154month or two. The only other large piece of work I really have to do is in
155the kernel. I first predicted GNU would take something like two years, but
156it has now been two and a half years and I'm still not finished. Part of
157the reason for the delay is that I spent a lot of time working on one
158compiler that turned out to be a dead end. I had to rewrite it completely.
159Another reason is that I spent so much time on GNU EMACS. I originally
160thought I wouldn't have to do that at all.
161
162BYTE: Tell us about your distribution scheme.
163
164Stallman: I don't put software or manuals in the public domain, and the
165reason is that I want to make sure that all the users get the freedom to
166share. I don't want anyone making an improved version of a program I wrote
167and distributing it as proprietary. I don't want that to ever be able to
168happen. I want to encourage the free improvements to these programs, and
169the best way to do that is to take away any temptation for a person to make
170improvements nonfree. Yes, a few of them will refrain from making
171improvements, but a lot of others will make the same improvements and
172they'll make them free.
173
174BYTE: And how do you go about guaranteeing that?
175
176Stallman: I do this by copyrighting the programs and putting on a notice
177giving people explicit permission to copy the programs and change them but
178only on the condition that they distribute under the same terms that I
179used, if at all. You don't have to distribute the changes you make to any
180of my programs--you can just do it for yourself, and you don't have to give
181it to anyone or tell anyone. But if you do give it to someone else, you
182have to do it under the same terms that I use.
183
184BYTE: Do you obtain any rights over the executable code derived from the C
185compiler?
186
187Stallman: The copyright law doesn't give me copyright on output from the
188compiler, so it doesn't give me a way to say anything about that, and in
189fact I don't try to. I don't sympathize with people developing proprietary
190products with any compiler, but it doesn't seem especially useful to try to
191stop them from developing them with this compiler, so I am not going to.
192
193BYTE: Do your restrictions apply if people take pieces of your code to
194produce other things as well?
195
196Stallman: Yes, if they incorporate with changes any sizable piece. If it
197were two lines of code, that's nothing; copyright doesn't apply to that.
198Essentially, I have chosen these conditions so that first there is a
199copyright, which is what all the software hoarders use to stop everybody
200from doing anything, and then I add a notice giving up part of those
201rights. So the conditions talk only about the things that copyright applies
202to. I don't believe that the reason you should obey these conditions is
203because of the law. The reason you should obey is because an upright person
204when he distributes software encourages other people to share it further.
205
206BYTE: In a sense you are enticing people into this mode of thinking by
207providing all of these interesting tools that they can use but only if they
208buy into your philosophy.
209
210Stallman: Yes. You could also see it as using the legal system that
211software hoarders have set up against them. I'm using it to protect the
212public from them.
213
214BYTE: Given that manufacturers haven't wanted to fund the project, who do
215you think will use the GNU system when it is done?
216
217Stallman: I have no idea, but it is not an important question. My purpose
218is to make it possible for people to reject the chains that come with
219proprietary software. I know that there are people who want to do that.
220Now, there may be others who don't care, but they are not my concern. I
221feel a bit sad for them and for the people that they influence. Right now a
222person who perceives the unpleasantness of the terms of proprietary
223software feels that he is stuck and has no alternative except not to use a
224computer. Well, I am going to give him a comfortable alternative.
225 Other people may use the GNU system simply because it is technically
226superior. For example, my C compiler is producing about as good a code as I
227have seen from any C compiler. And GNU EMACS is generally regarded as being
228far superior to the commercial competition. And GNU EMACS was not funded by
229anyone either, but everyone is using it. I therefore think that many people
230will use the rest of the GNU system because of its technical advantages.
231But I would be doing a GNU system even if I didn't know how to make it
232technically better because I want it to be socially better. The GNU project
233is really a social project. It uses technical means to make a change in
234society.
235
236BYTE: Then it is fairly important to you that people adopt GNU. It is not
237just an academic exercise to produce this software to give it away to
238people. You hope it will change the way the software industry operates.
239
240Stallman: Yes. Some people say no one will ever use it because it doesn't
241have some attractive corporate logo on it, and other people say that they
242think it is tremendously important and everyone's going to want to use it.
243I have no way of knowing what is really going to happen. I don't know any
244other way to try to change the ugliness of the field that I find myself in,
245so this is what I have to do.
246
247BYTE: Can you address the implications? You obviously feel that this is an
248important political and social statement.
249
250Stallman: It is a change. I'm trying to change the way people approach
251knowledge and information in general. I think that to try to own knowledge,
252to try to control whether people are allowed to use it, or to try to stop
253other people from sharing it, is sabotage. It is an activity that benefits
254the person that does it at the cost of impoverishing all of society. One
255person gains one dollar by destroying two dollars' worth of wealth. I think
256a person with a conscience wouldn't do that sort of thing except perhaps if
257he would otherwise die. And of course the people who do this are fairly
258rich; I can only conclude that they are unscrupulous. I would like to see
259people get rewards for writing free software and for encouraging other
260people to use it. I don't want to see people get rewards for writing
261proprietary software because that is not really a contribution to society.
262The principle of capitalism is the idea that people manage to make money by
263producing things and thereby are encouraged to do what is useful,
264automatically, so to speak. But that doesn't work when it comes to owning
265knowledge. They are encouraged to do not really what's useful, and what
266really is useful is not encouraged. I think it is important to say that
267information is different from material objects like cars and loaves of
268bread because people can copy it and share it on their own and, if nobody
269attempts to stop them, they can change it and make it better for
270themselves. That is a useful thing for people to do. This isn't true of
271loaves of bread. If you have one loaf of bread and you want another, you
272can't just put your loaf of bread into a bread copier. you can't make
273another one except by going through all the steps that were used to make
274the first one. It therefore is irrelevant whether people are permitted to
275copy it--it's impossible.
276 Books were printed only on printing presses until recently. It was
277possible to make a copy yourself by hand, but it wasn't practical because
278it took so much more work than using a printing press. And it produced
279something so much less attractive that, for all intents and purposes, you
280could act as if it were impossible to make books except by mass producing
281them. And therefore copyright didn't really take any freedom away from the
282reading public. There wasn't anything that a book purchaser could do that
283was forbidden by copyright.
284 But this isn't true for computer programs. It's also not true for tape
285cassettes. It's partly false now for books, but it is still true that for
286most books it is more expensive and certainly a lot more work to Xerox them
287than to buy a copy, and the result is still less attractive. Right now we
288are in a period where the situation that made copyright harmless and
289acceptable is changing to a situation where copyright will become
290destructive and intolerable. So the people who are slandered as "pirates"
291are in fact the people who are trying to do something useful that they have
292been forbidden to do. The copyright laws are entirely designed to help
293people take complete control over the use of some information for their own
294good. But they aren't designed to help people who want to make sure that
295the information is accessible to the public and stop others from depriving
296the public. I think that the law should recognize a class of works that are
297owned by the public, which is different from public domain in the same
298sense that a public park is different from something found in a garbage
299can. It's not there for anybody to take away, it's there for everyone to
300use but for no one to impede. Anybody in the public who finds himself being
301deprived of the derivative work of something owned by the public should be
302able to sue about it.
303
304BYTE: But aren't pirates interested in getting copies of programs because
305they want to use those programs, not because they want to use that
306knowledge to produce something better?
307
308Stallman: I don't see that that's the important distinction. More people
309using a program means that the program contributes more to society. You
310have a loaf of bread that could be eaten either once or a million times.
311
312BYTE: Some users buy commercial software to obtain support. How does your
313distribution scheme provide support?
314
315Stallman: I suspect that those users are misled and are not thinking
316clearly. It is certainly useful to have support, but when they start
317thinking about how that has something to do with selling software or with
318the software being proprietary, at that point they are confusing
319themselves. There is no guarantee that proprietary software will receive
320good support. Simply because sellers say that they provide support, that
321doesn't mean it will be any good. And they may go out of business. In fact,
322people think that GNU EMACS has better support than commercial EMACSes. One
323of the reasons is that I'm probably a better hacker than the people who
324wrote the other EMACSes, but the other reason is that everyone has sources
325and there are so many people interested in figuring out how to do things
326with it that you don't have to get your support from me. Even just the free
327support that consists of my fixing bugs people report to me and
328incorporating that in the next release has given people a good level of
329support. You can always hire somebody to solve a problem for you, and when
330the software is free you have a competitive market for the support. You can
331hire anybody. I distribute a service list with EMACS, a list of people's
332names and phone numbers and what they charge to provide support.
333
334BYTE: Do you collect their bug fixes?
335
336Stallman: Well, they send them to me. I asked all the people who wanted to
337be listed to promise that they would never ask any of their customers to
338keep secret whatever they were told or any changes they were given to the
339GNU software as part of that support.
340
341BYTE: So you can't have people competing to provide support based on their
342knowing the solution to some problem that somebody else doesn't know.
343
344Stallman: No. They can compete based on their being clever and more likely
345to find the solution to your problem, or their already understanding more
346of the common problems, or knowing better how to explain to you what you
347should do. These are all ways they can compete. They can try to do better,
348but they cannot actively impede their competitors.
349
350BYTE: I suppose it's like buying a car. You're not forced to go back to the
351original manufacturer for support or continued maintenance.
352
353Stallman: Or buying a house--what would it be like if the only person who
354could ever fix problems with your house was the contractor who built it
355originally? That is the kind of imposition that's involved in proprietary
356software. People tell me about a problem that happens in UNIX. Because
357manufacturers sell improved versions of UNIX, they tend to collect fixes
358and not give them out except in binaries. The result is that the bugs don't
359really get fixed.
360
361BYTE: They're all duplicating effort trying to solve bugs independently.
362
363Stallman: Yes. Here is another point that helps put the problem of
364proprietary information in a social perspective. Think about the liability
365insurance crisis. In order to get any compensation from society, an injured
366person has to hire a lawyer and split the money with that lawyer. This is a
367stupid and inefficient way of helping out people who are victims of
368accidents. And consider all the time that people put into hustling to take
369business away from their competition. Think of the pens that are packaged
370in large cardboard packages that cost more than the pen--just to make sure
371that the pen isn't stolen. Wouldn't it be better if we just put free pens
372on every street corner? And think of all the toll booths that impede the
373flow of traffic. It's a gigantic social phenomenon. People find ways of
374getting money by impeding society. Once they can impede society, they can
375be paid to leave people alone. The waste inherent in owning information
376will become more and more important and will ultimately make the difference
377between the utopia in which nobody really has to work for a living because
378it's all done by robots and a world just like ours where everyone spends
379much time replicating what the next fellow is doing.
380
381BYTE: Like typing in copyright notices on the software.
382
383Stallman: More like policing everyone to make sure that they don't have
384forbidden copies of anything and duplicating all the work people have
385already done because it is proprietary.
386
387BYTE: A cynic might wonder how you earn your living.
388
389Stallman: From consulting. When I do consulting, I always reserve the right
390to give away what I wrote for the consulting job. Also, I could be making
391my living by mailing copies of the free software that I wrote and some that
392other people wrote. Lots of people send in $150 for GNU EMACS, but now this
393money goes to the Free Software Foundation that I started. The foundation
394doesn't pay me a salary because it would be a conflict of interest.
395Instead, it hires other people to work on GNU. As long as I can go on
396making a living by consulting I think that's the best way.
397
398BYTE: What is currently included in the official GNU distribution tape?
399
400Stallman: Right now the tape contains GNU EMACS (one version fits all
401computers); Bison, a program that replaces YACC; MIT Scheme, which is
402Professor Sussman's super-simplified dialect of LISP; and Hack, a
403dungeon-exploring game similar to Rogue.
404
405BYTE: Does the printed manual come with the tape as well?
406
407Stallman: No. Printed manuals cost $15 each or copy them yourself. Copy
408this interview and share it, too.
409
410BYTE: How can you get a copy of that?
411
412Stallman: Write to the Free Software Foundation, 675 Massachusetts Ave.,
413Cambridge, MA 02139.
414
415[As of April 2005, this address is:
416 Free Software Foundation
417 51 Franklin Street, Fifth Floor
418 Boston, MA 02110-1301, USA
419 Voice: +1-617-542-5942
420 Fax: +1-617-542-2652
421]
422
423BYTE: What are you going to do when you are done with the GNU system?
424
425Stallman: I'm not sure. Sometimes I think that what I'll go on to do is the
426same thing in other areas of software.
427
428BYTE: So this is just the first of a whole series of assaults on the
429software industry?
430
431Stallman: I hope so. But perhaps what I'll do is just live a life of ease
432working a little bit of the time just to live. I don't have to live
433expensively. The rest of the time I can find interesting people to hang
434around with or learn to do things that I don't know how to do.
435
436Editorial Note: BYTE holds the right to provide this interview on BIX but
437will not interfere with its distribution.
438
439Richard Stallman, 545 Technology Square, Room 703, Cambridge, MA 02139.
440Copyright (C) 1986 Richard Stallman. Permission is granted to make and
441distribute copies of this article as long as the copyright and this notice
442appear on all copies.
diff --git a/etc/MAILINGLISTS b/etc/MAILINGLISTS
deleted file mode 100644
index 0d5ce9bf6ce..00000000000
--- a/etc/MAILINGLISTS
+++ /dev/null
@@ -1,261 +0,0 @@
1 GNU Project Electronic Mailing Lists and gnUSENET Newsgroups
2 Last Updated 2006-06-03
3
4 Please report improvements to: gnu@gnu.org
5
6 See the end of this file for copyright notice and copying conditions
7
8* Mailing list archives
9
10The GNU mailing lists are archived at http://lists.gnu.org.
11
12* Some GNU mailing lists are also distributed as USENET news groups
13
14Certain GNU mailing lists are gated both ways with the gnu.all
15newsgroups at uunet. You can tell which they are, because the names
16correspond. For instance, bug-gnu-emacs corresponds to gnu.emacs.bug;
17info-gnu-emacs, to gnu.emacs.announce; help-gnu-emacs, to
18gnu.emacs.help; gnu-emacs-sources, to gnu.emacs.sources. Replacing
19`emacs' with some other program in those four examples shows you
20the whole pattern.
21
22* How to subscribe to and report bugs in mailing lists
23
24Send requests to be added or removed, to help-gnu-emacs-request (or
25info-gnu-request, bug-gdb-request, etc.), NOT to info-gnu-emacs (or
26info-gnu, etc.). Most <LIST_NAME>-request addresses are now handled
27automagically by GNU Mailman.
28
29If you need to report problems to a human, send mail to gnu@gnu.org
30explaining the problem.
31
32Many of the GNU mailing lists are very large and are received by many
33people.
34
35If a message you mail to a list is returned from a MAILER-DAEMON (often
36with the line:
37 ----- Transcript of session follows -----
38 don't resend the message to the list. All this return means is that
39your original message failed to reach a few addresses on the list. Such
40messages are NEVER a reason to resend a piece of mail a 2nd time. This
41just bothers all (less the few delivery failures (which will probably
42just fail again!)) of the readers of the list with a message they have
43already seen. It also wastes computer and network resources.
44
45It is appropriate to send these to the -request address for a list, and
46ask them to check the problem out.
47
48* Send Specific Requests for Information to: gnu@gnu.org
49
50Specific requests for information about obtaining GNU software, or GNU
51activities in Cambridge and elsewhere can be directed to:
52 gnu@gnu.org
53
54* General Information about all lists
55
56Do not send very large files to mailing lists; instead put then on a web
57page and announce the URL. Good bug reports are short.
58See section '* General Information about bug-* lists and ...' for
59further details.
60
61The GNU mailing lists and newsgroups, like the GNU project itself, exist
62to promote the freedom to share software. So don't use these lists to
63promote or recommend non-free software or documentation, like
64proprietary books on GNU software. (Using them to post ordering
65information is the ultimate faux pas.) If there is no free program to
66do a certain task, then somebody should write one! Similarly, free
67documentation that is inadequate should be improved--a way in which
68non-programmers can make a valuable contribution. See also the article
69at <URL:http://www.gnu.org/philosophy/free-doc.html>.
70
71* General Information about info-* lists
72
73These lists and their newsgroups are meant for important announcements.
74Since the GNU project uses software development as a means for social
75change, the announcements may be technical or political.
76
77Most GNU projects info-* lists (and their corresponding gnu.*.announce
78newsgroups) are moderated to keep their content significant and
79relevant. If you have a bug to report, send it to the bug-* list. If
80you need help on something else and the help-* list exists, ask it.
81
82See section '* General Information about all lists'.
83
84* General Information about help-* lists
85
86These lists (and their newsgroups) exist for anyone to ask questions
87about the GNU software that the list deals with. The lists are read by
88people who are willing to take the time to help other users.
89
90When you answer the questions that people ask on the help-* lists, keep
91in mind that you shouldn't answer by promoting a proprietary program as
92a solution. The only real solutions are the ones all the readers can
93share.
94
95If a program crashes, or if you build it following the standard
96procedure on a system on which it is supposed to work and it does not
97work at all, or if an command does not behave as it is documented to
98behave, this is a bug. Don't send bug reports to a help-* list; mail
99them to the bug-* list instead.
100
101See section '* General Information about all lists'.
102
103* General Information about bug-* lists and reporting program bugs
104
105If you think something is a bug in a program, it might be one; or, it
106might be a misunderstanding or even a feature. Before beginning to
107report bugs, please read the section ``Reporting Bugs'' in
108the GNU Emacs reference manual (or node Bugs in Emacs's
109built-in Info system) for a discussion of how and when to send in bug
110reports. For GNU programs other than GNU Emacs, also consult their
111documentation for their bug reporting procedures. Always include the
112version number of the GNU program, as well as the operating system and
113machine the program was ran on (if the program doesn't have a version
114number, send the date of the latest entry in the file ChangeLog). For
115GNU Emacs bugs, type "M-x emacs-version". A debugger backtrace of any
116core dump can also be useful. Be careful to separate out hypothesis
117from fact! For bugs in GNU Emacs lisp, set variable debug-on-error to
118t, and re-enter the command(s) that cause the error message; Emacs will
119pop up a debug buffer if something is wrong; please include a copy of
120the buffer in your bug report. Please also try to make your bug report
121as short as possible; distill the problem to as few lines of code and/or
122input as possible. GNU maintainers give priority to the shortest, high
123quality bug reports.
124
125Please don't send in a patch without a test case to illustrate the
126problem the patch is supposed to fix. Sometimes the patches aren't
127correct or aren't the best way to do the job, and without a test case
128there is no way to debug an alternate fix.
129
130The purpose of reporting a bug is to enable the bug to be fixed for the
131sake of the whole community of users. You may or may not receive a
132response; the maintainers will send one if that helps them find or
133verify a fix. Most GNU maintainers are volunteers and all are
134overworked; they don't have time to help individuals and still fix the
135bugs and make the improvements that everyone wants. If you want help
136for yourself in particular, you may have to hire someone. The GNU
137project maintains a list of people providing such services. It is
138found at <URL:http://www.fsf.org/resources/service>.
139
140Anything addressed to the implementers and maintainers of a GNU program
141via a bug-* list, should NOT be sent to the corresponding info-* or
142help-* list.
143
144Please DON'T post your bug reports on the gnu.*.bug newsgroups! Mail
145them to bug-*@gnu.org instead! At first sight, it seems to make no
146difference: anything sent to one will be propagated to the other; but:
147 - if you post on the newsgroup, the information about how to
148reach you is lost in the message that goes on the mailing list. It
149can be very important to know how to reach you, if there is anything
150in the bug report that we don't understand;
151 - bug reports reach the GNU maintainers quickest when they are
152sent to the bug-* mailing list submittal address;
153 - mail is much more reliable then netnews; and
154 - if the internet mailers can't get your bug report delivered,
155they almost always send you an error message, so you can find another
156way to get the bug report in. When netnews fails to get your message
157delivered to the maintainers, you'll never know about it and the
158maintainers will never see the bug report.
159
160And please DON'T post your GNU bug reports to comp.* or other gnu.*
161newsgroups, they never make it to the GNU maintainers at all. Please
162mail them to bug-*@gnu.org instead!
163
164* Some special lists that don't fit the usual patterns of help-, bug- and info-
165
166** info-gnu-request@gnu.org to subscribe to info-gnu
167
168gnUSENET newsgroup: gnu.announce
169Send announcements to: info-gnu@gnu.org
170
171This list distributes progress reports on the GNU Project. It is also
172used by the GNU Project to ask people for various kinds of help. It is
173moderated and NOT for general discussion.
174
175** gnu-misc-discuss-request@gnu.org to subscribe to gnu-misc-discuss
176
177gnUSENET newsgroup: gnu.misc.discuss
178Send contributions to: gnu-misc-discuss@gnu.org
179
180This list is for serious discussion of free software, the GNU Project,
181the GNU Manifesto, and their implications. It's THE place for
182discussion that is not appropriate in the other GNU mailing lists and
183gnUSENET newsgroups.
184
185Flaming is out of place. Tit-for-tat is not welcome. Repetition
186should not occur.
187
188Good READING and writing are expected. Before posting, wait a while,
189cool off, and think.
190
191Don't use this group for complaints and bug reports about GNU software!
192The maintainers of the package you are using probably don't read this
193group; they won't see your complaint. Use the appropriate bug-reporting
194mailing list instead, so that people who can do something about the
195problem will see it. Likewise, use the help- list for technical
196questions.
197
198Don't trust pronouncements made on gnu-misc-discuss about what GNU is,
199what FSF position is, what the GNU General Public License is, etc.,
200unless they are made by someone you know is well connected with GNU and
201are sure the message is not forged.
202
203USENET and gnUSENET readers are expected to have read ALL the articles
204in news.announce.newusers before posting.
205
206Remember, "GNUs Not Unix" and "gnUSENET is Not USENET". We have
207higher standards!
208
209** gnu-emacs-sources-request@gnu.org to subscribe to gnu-emacs-sources
210
211gnUSENET newsgroup: gnu.emacs.sources
212GNU Emacs source code to: gnu-emacs-sources@gnu.org
213
214This list/newsgroup will be for the posting, by their authors, of Emacs
215Lisp and C sources and patches that improve GNU Emacs. Its contents
216will be reviewed by the FSF for inclusion in future releases of GNU
217Emacs.
218
219Please do NOT discuss or request source code here. Use
220help-gnu-emacs/gnu.emacs.help for those purposes. This allows the
221automatic archiving of sources posted to this list/newsgroup.
222
223Please do NOT post such sources to any other GNU mailing list (e.g
224help-gnu-emacs) or gnUSENET newsgroups (e.g. gnu.emacs.help). It's up
225to each poster to decide whether to cross-post to any non-gnUSENET
226newsgroup (e.g. comp.emacs).
227
228Please do NOT announce that you have posted source code to
229gnu.emacs.sources to any other GNU mailing list (e.g. help-gnu-emacs) or
230gnUSENET newsgroups (e.g. gnu.emacs.help). People who want to keep up
231with sources will read this list/newsgroup. It's up to each poster to
232decide whether to announce a gnu.emacs.sources article in any
233non-gnUSENET newsgroup (e.g. comp.emacs).
234
235If source or patches that were previously posted or a simple fix is
236requested in help-gnu-emacs, please mail it to the requester. Do NOT
237repost it. If you also want something that is requested, send mail to
238the requester asking him to forward it to you. This kind of traffic is
239best handled by e-mail, not by a broadcast medium that reaches millions
240of sites.
241
242If the requested source is very long, send mail offering to
243send it. This prevents the requester from getting many redundant copies
244and saves network bandwidth.
245
246Local variables:
247mode: outline
248fill-column: 72
249End:
250
251Copyright (C) 1999, 2001-2014 Free Software Foundation, Inc.
252
253 Permission is hereby granted, free of charge, to any person obtaining
254 a copy of this file, to deal in the file without restriction, including
255 without limitation the rights to use, copy, modify, merge, publish,
256 distribute, sublicense, and/or sell copies of the file, and to
257 permit persons to whom the file is furnished to do so, subject to
258 the following condition:
259
260 The above copyright notice and this permission notice shall be
261 included in all copies or substantial portions of the file.
diff --git a/etc/MOTIVATION b/etc/MOTIVATION
deleted file mode 100644
index 50194925f13..00000000000
--- a/etc/MOTIVATION
+++ /dev/null
@@ -1,179 +0,0 @@
1STUDIES FIND REWARD OFTEN NO MOTIVATOR
2
3Creativity and intrinsic interest diminish if task is done for gain
4
5By Alfie Kohn
6Special to the Boston Globe
7[reprinted with permission of the author
8 from the Monday 19 January 1987 Boston Globe]
9
10Verbatim copying and distribution is permitted in any medium
11provided this notice is preserved.
12
13In the laboratory, rats get Rice Krispies. In the classroom the top
14students get A's, and in the factory or office the best workers get
15raises. It's an article of faith for most of us that rewards promote
16better performance.
17
18But a growing body of research suggests that this law is not nearly as
19ironclad as was once thought. Psychologists have been finding that
20rewards can lower performance levels, especially when the performance
21involves creativity.
22
23A related series of studies shows that intrinsic interest in a task -
24the sense that something is worth doing for its own sake - typically
25declines when someone is rewarded for doing it.
26
27If a reward - money, awards, praise, or winning a contest - comes to
28be seen as the reason one is engaging in an activity, that activity
29will be viewed as less enjoyable in its own right.
30
31With the exception of some behaviorists who doubt the very existence
32of intrinsic motivation, these conclusions are now widely accepted
33among psychologists. Taken together, they suggest we may unwittingly
34be squelching interest and discouraging innovation among workers,
35students and artists.
36
37The recognition that rewards can have counter-productive effects is
38based on a variety of studies, which have come up with such findings
39as these: Young children who are rewarded for drawing are less likely
40to draw on their own that are children who draw just for the fun of
41it. Teenagers offered rewards for playing word games enjoy the games
42less and do not do as well as those who play with no rewards.
43Employees who are praised for meeting a manager's expectations suffer
44a drop in motivation.
45
46Much of the research on creativity and motivation has been performed
47by Theresa Amabile, associate professor of psychology at Brandeis
48University. In a paper published early last year on her most recent
49study, she reported on experiments involving elementary school and
50college students. Both groups were asked to make "silly" collages.
51The young children were also asked to invent stories.
52
53The least-creative projects, as rated by several teachers, were done
54by those students who had contracted for rewards. "It may be that
55commissioned work will, in general, be less creative than work that is
56done out of pure interest," Amabile said.
57
58In 1985, Amabile asked 72 creative writers at Brandeis and at Boston
59University to write poetry. Some students then were given a list of
60extrinsic (external) reasons for writing, such as impressing teachers,
61making money and getting into graduate school, and were asked to think
62about their own writing with respect to these reasons. Others were
63given a list of intrinsic reasons: the enjoyment of playing with
64words, satisfaction from self-expression, and so forth. A third group
65was not given any list. All were then asked to do more writing.
66
67The results were clear. Students given the extrinsic reasons not only
68wrote less creatively than the others, as judged by 12 independent
69poets, but the quality of their work dropped significantly. Rewards,
70Amabile says, have this destructive effect primarily with creative
71tasks, including higher-level problem-solving. "The more complex the
72activity, the more it's hurt by extrinsic reward," she said.
73
74But other research shows that artists are by no means the only ones
75affected.
76
77In one study, girls in the fifth and sixth grades tutored younger
78children much less effectively if they were promised free movie
79tickets for teaching well. The study, by James Gabarino, now
80president of Chicago's Erikson Institute for Advanced Studies in Child
81Development, showed that tutors working for the reward took longer to
82communicate ideas, got frustrated more easily, and did a poorer job in
83the end than those who were not rewarded.
84
85Such findings call into question the widespread belief that money is
86an effective and even necessary way to motivate people. They also
87challenge the behaviorist assumption that any activity is more likely
88to occur if it is rewarded. Amabile says her research "definitely
89refutes the notion that creativity can be operantly conditioned."
90
91But Kenneth McGraw, associate professor of psychology at the
92University of Mississippi, cautions that this does not mean
93behaviorism itself has been invalidated. "The basic principles of
94reinforcement and rewards certainly work, but in a restricted context"
95- restricted, that is, to tasks that are not especially interesting.
96
97Researchers offer several explanations for their surprising findings
98about rewards and performance.
99
100First, rewards encourage people to focus narrowly on a task, to do it
101as quickly as possible and to take few risks. "If they feel that
102'this is something I have to get through to get the prize,' they're
103going to be less creative," Amabile said.
104
105Second, people come to see themselves as being controlled by the
106reward. They feel less autonomous, and this may interfere with
107performance. "To the extent one's experience of being
108self-determined is limited," said Richard Ryan, associate psychology
109professor at the University of Rochester, "one's creativity will be
110reduced as well."
111
112Finally, extrinsic rewards can erode intrinsic interest. People who
113see themselves as working for money, approval or competitive success
114find their tasks less pleasurable, and therefore do not do them as
115well.
116
117The last explanation reflects 15 years of work by Ryan's mentor at the
118University of Rochester, Edward Deci. In 1971, Deci showed that
119"money may work to buy off one's intrinsic motivation for an activity"
120on a long-term basis. Ten years later, Deci and his colleagues
121demonstrated that trying to best others has the same effect. Students
122who competed to solve a puzzle quickly were less likely than those who
123were not competing to keep working at it once the experiment was over.
124
125Control plays role
126
127There is general agreement, however, that not all rewards have the
128same effect. Offering a flat fee for participating in an experiment -
129similar to an hourly wage in the workplace - usually does not reduce
130intrinsic motivation. It is only when the rewards are based on
131performing a given task or doing a good job at it - analogous to
132piece-rate payment and bonuses, respectively - that the problem
133develops.
134
135The key, then, lies in how a reward is experienced. If we come to
136view ourselves as working to get something, we will no longer find
137that activity worth doing in its own right.
138
139There is an old joke that nicely illustrates the principle. An
140elderly man, harassed by the taunts of neighborhood children, finally
141devises a scheme. He offered to pay each child a dollar if they would
142all return Tuesday and yell their insults again. They did so eagerly
143and received the money, but he told them he could only pay 25 cents on
144Wednesday. When they returned, insulted him again and collected their
145quarters, he informed them that Thursday's rate would be just a penny.
146"Forget it," they said - and never taunted him again.
147
148Means to and end
149
150In a 1982 study, Stanford psychologist Mark L. Lepper showed that any
151task, no matter how enjoyable it once seemed, would be devalued if it
152were presented as a means rather than an end. He told a group of
153preschoolers they could not engage in one activity they liked until
154they first took part in another. Although they had enjoyed both
155activities equally, the children came to dislike the task that was a
156prerequisite for the other.
157
158It should not be surprising that when verbal feedback is experienced
159as controlling, the effect on motivation can be similar to that of
160payment. In a study of corporate employees, Ryan found that those who
161were told, "Good, you're doing as you /should/" were "significantly
162less intrinsically motivated than those who received feedback
163informationally."
164
165There's a difference, Ryan says, between saying, "I'm giving you this
166reward because I recognize the value of your work" and "You're getting
167this reward because you've lived up to my standards."
168
169A different but related set of problems exists in the case of
170creativity. Artists must make a living, of course, but Amabile
171emphasizes that "the negative impact on creativity of working for
172rewards can be minimized" by playing down the significance of these
173rewards and trying not to use them in a controlling way. Creative
174work, the research suggests, cannot be forced, but only allowed to
175happen.
176
177/Alfie Kohn, a Cambridge, MA writer, is the author of "No Contest: The
178Case Against Competition," recently published by Houghton Mifflin Co.,
179Boston, MA. ISBN 0-395-39387-6. /
diff --git a/etc/NEWS b/etc/NEWS
index 9817115918b..81675d4eea2 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1230,25 +1230,25 @@ and setting the current frame of a multi-frame image.
1230 1230
1231** EIEIO 1231** EIEIO
1232 1232
1233+++
1233*** Namespace cleanup by obsolete-aliasing functions to use `eieio-' prefix. 1234*** Namespace cleanup by obsolete-aliasing functions to use `eieio-' prefix.
1234**** object-name -> eieio-object-name 1235**** object-name -> eieio-object-name
1235**** object-class -> eieio-object-class 1236**** object-class -> eieio-object-class
1236**** object-class-fast -> eieio--object-class 1237**** object-class-fast -> eieio--object-class
1238**** object-class-name -> eieio-object-class-name
1237**** object-name-string -> eieio-object-name-string 1239**** object-name-string -> eieio-object-name-string
1238**** object-num-slots -> eieio--object-num-slots 1240**** object-num-slots -> eieio--object-num-slots
1239**** object-set-name-string -> eieio-object-set-name-string 1241**** object-set-name-string -> eieio-object-set-name-string
1242**** class-of -> eieio-object-class
1243**** class-name -> eieio-class-name
1240**** class-parent -> eieio-class-parent 1244**** class-parent -> eieio-class-parent
1241**** class-parents -> eieio-class-parents 1245**** class-parents -> eieio-class-parents
1246**** class-parents-fast -> eieio-class-parents-fast
1242**** class-children -> eieio-class-children 1247**** class-children -> eieio-class-children
1243**** class-num-slots -> eieio--class-num-slots 1248**** class-num-slots -> eieio--class-num-slots
1244**** class-precedence-list -> eieio-class-precedence-list 1249**** class-precedence-list -> eieio-class-precedence-list
1245**** All generated class-* and object-* field accessors are now 1250**** class-direct-subclasses -> eieio-class-children
1246prefixed with `eieio-' as well. 1251**** class-direct-superclasses -> eieio-class-parents
1247
1248*** Obsoleted functions:
1249**** class-of
1250**** class-direct-subclasses
1251**** class-direct-superclasses
1252 1252
1253** Changes in encoding and decoding of text 1253** Changes in encoding and decoding of text
1254 1254
@@ -1295,6 +1295,7 @@ regular file with contents being what would have been in the symlink.
1295+++ 1295+++
1296** New functions `group-gid' and `group-real-gid'. 1296** New functions `group-gid' and `group-real-gid'.
1297 1297
1298---
1298** The spelling of the rx.el category `chinese-two-byte' has been 1299** The spelling of the rx.el category `chinese-two-byte' has been
1299corrected (the first 'e' was missing). 1300corrected (the first 'e' was missing).
1300 1301
diff --git a/etc/SERVICE b/etc/SERVICE
deleted file mode 100644
index eed62ea60aa..00000000000
--- a/etc/SERVICE
+++ /dev/null
@@ -1,11 +0,0 @@
1GNU Service Directory
2---------------------
3
4Please see <http://www.fsf.org/resources/service/> for a list of
5people who have asked to be listed as offering support services for
6GNU software, including GNU Emacs, for a fee or in some cases at no
7charge.
8
9Note added January 2014:
10This file is obsolete and will be removed in future.
11Please update any links to use the above URL.
diff --git a/etc/copying.paper b/etc/copying.paper
deleted file mode 100644
index e0a478aed06..00000000000
--- a/etc/copying.paper
+++ /dev/null
@@ -1,819 +0,0 @@
1(For more information about the GNU project and free software,
2look at the files `GNU', `COPYING', and `DISTRIB', in the same
3directory as this file.)
4
5
6 Why Software Should Be Free
7
8 by Richard Stallman
9
10 (Version of April 24, 1992)
11
12 Copyright (C) 1991, 1992, Free Software Foundation, Inc.
13 Verbatim copying and redistribution is permitted
14 without royalty; alteration is not permitted.
15
16Introduction
17************
18
19 The existence of software inevitably raises the question of how
20decisions about its use should be made. For example, suppose one
21individual who has a copy of a program meets another who would like a
22copy. It is possible for them to copy the program; who should decide
23whether this is done? The individuals involved? Or another party,
24called the "owner"?
25
26 Software developers typically consider these questions on the
27assumption that the criterion for the answer is to maximize developers'
28profits. The political power of business has led to the government
29adoption of both this criterion and the answer proposed by the
30developers: that the program has an owner, typically a corporation
31associated with its development.
32
33 I would like to consider the same question using a different
34criterion: the prosperity and freedom of the public in general.
35
36 This answer cannot be decided by current law--the law should conform
37to ethics, not the other way around. Nor does current practice decide
38this question, although it may suggest possible answers. The only way
39to judge is to see who is helped and who is hurt by recognizing owners
40of software, why, and how much. In other words, we should perform a
41cost-benefit analysis on behalf of society as a whole, taking account of
42individual freedom as well as production of material goods.
43
44 In this essay, I will describe the effects of having owners, and show
45that the results are detrimental. My conclusion is that programmers
46have the duty to encourage others to share, redistribute, study and
47improve the software we write: in other words, to write "free"
48software.(1)
49
50How Owners Justify Their Power
51******************************
52
53 Those who benefit from the current system where programs are property
54offer two arguments in support of their claims to own programs: the
55emotional argument and the economic argument.
56
57 The emotional argument goes like this: "I put my sweat, my heart, my
58soul into this program. It comes from *me*, it's *mine*!"
59
60 This argument does not require serious refutation. The feeling of
61attachment is one that programmers can cultivate when it suits them; it
62is not inevitable. Consider, for example, how willingly the same
63programmers usually sign over all rights to a large corporation for a
64salary; the emotional attachment mysteriously vanishes. By contrast,
65consider the great artists and artisans of medieval times, who didn't
66even sign their names to their work. To them, the name of the artist
67was not important. What mattered was that the work was done--and the
68purpose it would serve. This view prevailed for hundreds of years.
69
70 The economic argument goes like this: "I want to get rich (usually
71described inaccurately as `making a living'), and if you don't allow me
72to get rich by programming, then I won't program. Everyone else is like
73me, so nobody will ever program. And then you'll be stuck with no
74programs at all!" This threat is usually veiled as friendly advice
75from the wise.
76
77 I'll explain later why this threat is a bluff. First I want to
78address an implicit assumption that is more visible in another
79formulation of the argument.
80
81 This formulation starts by comparing the social utility of a
82proprietary program with that of no program, and then concludes that
83proprietary software development is, on the whole, beneficial, and
84should be encouraged. The fallacy here is in comparing only two
85outcomes--proprietary software vs. no software--and assuming there are
86no other possibilities.
87
88 Given a system of intellectual property, software development is
89usually linked with the existence of an owner who controls the
90software's use. As long as this linkage exists, we are often faced
91with the choice of proprietary software or none. However, this linkage
92is not inherent or inevitable; it is a consequence of the specific
93social/legal policy decision that we are questioning: the decision to
94have owners. To formulate the choice as between proprietary software
95vs. no software is begging the question.
96
97The Argument against Having Owners
98**********************************
99
100 The question at hand is, "Should development of software be linked
101with having owners to restrict the use of it?"
102
103 In order to decide this, we have to judge the effect on society of
104each of those two activities *independently*: the effect of developing
105the software (regardless of its terms of distribution), and the effect
106of restricting its use (assuming the software has been developed). If
107one of these activities is helpful and the other is harmful, we would be
108better off dropping the linkage and doing only the helpful one.
109
110 To put it another way, if restricting the distribution of a program
111already developed is harmful to society overall, then an ethical
112software developer will reject the option of doing so.
113
114 To determine the effect of restricting sharing, we need to compare
115the value to society of a restricted (i.e., proprietary) program with
116that of the same program, available to everyone. This means comparing
117two possible worlds.
118
119 This analysis also addresses the simple counterargument sometimes
120made that "the benefit to the neighbor of giving him or her a copy of a
121program is cancelled by the harm done to the owner." This
122counterargument assumes that the harm and the benefit are equal in
123magnitude. The analysis involves comparing these magnitudes, and shows
124that the benefit is much greater.
125
126 To elucidate this argument, let's apply it in another area: road
127construction.
128
129 It would be possible to fund the construction of all roads with
130tolls. This would entail having toll booths at all street corners.
131Such a system would provide a great incentive to improve roads. It
132would also have the virtue of causing the users of any given road to
133pay for that road. However, a toll booth is an artificial obstruction
134to smooth driving--artificial, because it is not a consequence of how
135roads or cars work.
136
137 Comparing free roads and toll roads by their usefulness, we find that
138(all else being equal) roads without toll booths are cheaper to
139construct, cheaper to run, safer, and more efficient to use.(2) In a
140poor country, tolls may make the roads unavailable to many citizens.
141The roads without toll booths thus offer more benefit to society at
142less cost; they are preferable for society. Therefore, society should
143choose to fund roads in another way, not by means of toll booths. Use
144of roads, once built, should be free.
145
146 When the advocates of toll booths propose them as *merely* a way of
147raising funds, they distort the choice that is available. Toll booths
148do raise funds, but they do something else as well: in effect, they
149degrade the road. The toll road is not as good as the free road; giving
150us more or technically superior roads may not be an improvement if this
151means substituting toll roads for free roads.
152
153 Of course, the construction of a free road does cost money, which the
154public must somehow pay. However, this does not imply the inevitability
155of toll booths. We who must in either case pay will get more value for
156our money by buying a free road.
157
158 I am not saying that a toll road is worse than no road at all. That
159would be true if the toll were so great that hardly anyone used the
160road--but this is an unlikely policy for a toll collector. However, as
161long as the toll booths cause significant waste and inconvenience, it is
162better to raise the funds in a less obstructive fashion.
163
164 To apply the same argument to software development, I will now show
165that having "toll booths" for useful software programs costs society
166dearly: it makes the programs more expensive to construct, more
167expensive to distribute, and less satisfying and efficient to use. It
168will follow that program construction should be encouraged in some other
169way. Then I will go on to explain other methods of encouraging and (to
170the extent actually necessary) funding software development.
171
172The Harm Done by Obstructing Software
173=====================================
174
175 Consider for a moment that a program has been developed, and any
176necessary payments for its development have been made; now society must
177choose either to make it proprietary or allow free sharing and use.
178Assume that the existence of the program and its availability is a
179desirable thing.(3)
180
181 Restrictions on the distribution and modification of the program
182cannot facilitate its use. They can only interfere. So the effect can
183only be negative. But how much? And what kind?
184
185 Three different levels of material harm come from such obstruction:
186
187 * Fewer people use the program.
188
189 * None of the users can adapt or fix the program.
190
191 * Other developers cannot learn from the program, or base new work
192 on it.
193
194 Each level of material harm has a concomitant form of psychosocial
195harm. This refers to the effect that people's decisions have on their
196subsequent feelings, attitudes and predispositions. These changes in
197people's ways of thinking will then have a further effect on their
198relationships with their fellow citizens, and can have material
199consequences.
200
201 The three levels of material harm waste part of the value that the
202program could contribute, but they cannot reduce it to zero. If they
203waste nearly all the value of the program, then writing the program
204harms society by at most the effort that went into writing the program.
205Arguably a program that is profitable to sell must provide some net
206direct material benefit.
207
208 However, taking account of the concomitant psychosocial harm, there
209is no limit to the harm that proprietary software development can do.
210
211Obstructing Use of Programs
212===========================
213
214 The first level of harm impedes the simple use of a program. A copy
215of a program has nearly zero marginal cost (and you can pay this cost by
216doing the work yourself), so in a free market, it would have nearly zero
217price. A license fee is a significant disincentive to use the program.
218If a widely-useful program is proprietary, far fewer people will use it.
219
220 It is easy to show that the total contribution of a program to
221society is reduced by assigning an owner to it. Each potential user of
222the program, faced with the need to pay to use it, may choose to pay,
223or may forego use of the program. When a user chooses to pay, this is a
224zero-sum transfer of wealth between two parties. But each time someone
225chooses to forego use of the program, this harms that person without
226benefiting anyone. The sum of negative numbers and zeros must be
227negative.
228
229 But this does not reduce the amount of work it takes to *develop*
230the program. As a result, the efficiency of the whole process, in
231delivered user satisfaction per hour of work, is reduced.
232
233 This reflects a crucial difference between copies of programs and
234cars, chairs, or sandwiches. There is no copying machine for material
235objects outside of science fiction. But programs are easy to copy;
236anyone can produce as many copies as are wanted, with very little
237effort. This isn't true for material objects because matter is
238conserved: each new copy has to be built from raw materials in the same
239way that the first copy was built.
240
241 With material objects, a disincentive to use them makes sense,
242because fewer objects bought means less raw materials and work needed
243to make them. It's true that there is usually also a startup cost, a
244development cost, which is spread over the production run. But as long
245as the marginal cost of production is significant, adding a share of the
246development cost does not make a qualitative difference. And it does
247not require restrictions on the freedom of ordinary users.
248
249 However, imposing a price on something that would otherwise be free
250is a qualitative change. A centrally-imposed fee for software
251distribution becomes a powerful disincentive.
252
253 What's more, central production as now practiced is inefficient even
254as a means of delivering copies of software. This system involves
255enclosing physical disks or tapes in superfluous packaging, shipping
256large numbers of them around the world, and storing them for sale. This
257cost is presented as an expense of doing business; in truth, it is part
258of the waste caused by having owners.
259
260Damaging Social Cohesion
261========================
262
263 Suppose that both you and your neighbor would find it useful to run a
264certain program. In ethical concern for your neighbor, you should feel
265that proper handling of the situation will enable both of you to use it.
266A proposal to permit only one of you to use the program, while
267restraining the other, is divisive; neither you nor your neighbor should
268find it acceptable.
269
270 Signing a typical software license agreement means betraying your
271neighbor: "I promise to deprive my neighbor of this program so that I
272can have a copy for myself." People who make such choices feel
273internal psychological pressure to justify them, by downgrading the
274importance of helping one's neighbors--thus public spirit suffers.
275This is psychosocial harm associated with the material harm of
276discouraging use of the program.
277
278 Many users unconsciously recognize the wrong of refusing to share, so
279they decide to ignore the licenses and laws, and share programs anyway.
280But they often feel guilty about doing so. They know that they must
281break the laws in order to be good neighbors, but they still consider
282the laws authoritative, and they conclude that being a good neighbor
283(which they are) is naughty or shameful. That is also a kind of
284psychosocial harm, but one can escape it by deciding that these licenses
285and laws have no moral force.
286
287 Programmers also suffer psychosocial harm knowing that many users
288will not be allowed to use their work. This leads to an attitude of
289cynicism or denial. A programmer may describe enthusiastically the
290work that he finds technically exciting; then when asked, "Will I be
291permitted to use it?", his face falls, and he admits the answer is no.
292To avoid feeling discouraged, he either ignores this fact most of the
293time or adopts a cynical stance designed to minimize the importance of
294it.
295
296 Since the age of Reagan, the greatest scarcity in the United States
297is not technical innovation, but rather the willingness to work together
298for the public good. It makes no sense to encourage the former at the
299expense of the latter.
300
301Obstructing Custom Adaptation of Programs
302=========================================
303
304 The second level of material harm is the inability to adapt programs.
305The ease of modification of software is one of its great advantages over
306older technology. But most commercially available software isn't
307available for modification, even after you buy it. It's available for
308you to take it or leave it, as a black box--that is all.
309
310 A program that you can run consists of a series of numbers whose
311meaning is obscure. No one, not even a good programmer, can easily
312change the numbers to make the program do something different.
313
314 Programmers normally work with the "source code" for a program, which
315is written in a programming language such as Fortran or C. It uses
316names to designate the data being used and the parts of the program, and
317it represents operations with symbols such as `+' for addition and `-'
318for subtraction. It is designed to help programmers read and change
319programs. Here is an example; a program to calculate the distance
320between two points in a plane:
321
322 float
323 distance (p0, p1)
324 struct point p0, p1;
325 {
326 float xdist = p1.x - p0.x;
327 float ydist = p1.y - p0.y;
328 return sqrt (xdist * xdist + ydist * ydist);
329 }
330
331 Here is the same program in executable form, on the computer I
332normally use:
333
334 1314258944 -232267772 -231844864 1634862
335 1411907592 -231844736 2159150 1420296208
336 -234880989 -234879837 -234879966 -232295424
337 1644167167 -3214848 1090581031 1962942495
338 572518958 -803143692 1314803317
339
340 Source code is useful (at least potentially) to every user of a
341program. But most users are not allowed to have copies of the source
342code. Usually the source code for a proprietary program is kept secret
343by the owner, lest anybody else learn something from it. Users receive
344only the files of incomprehensible numbers that the computer will
345execute. This means that only the program's owner can change the
346program.
347
348 A friend once told me of working as a programmer in a bank for about
349six months, writing a program similar to something that was commercially
350available. She believed that if she could have gotten source code for
351that commercially available program, it could easily have been adapted
352to their needs. The bank was willing to pay for this, but was not
353permitted to--the source code was a secret. So she had to do six
354months of make-work, work that counts in the GNP but was actually waste.
355
356 The MIT Artificial Intelligence lab (AI lab) received a graphics
357printer as a gift from Xerox around 1977. It was run by free software
358to which we added many convenient features. For example, the software
359would notify a user immediately on completion of a print job. Whenever
360the printer had trouble, such as a paper jam or running out of paper,
361the software would immediately notify all users who had print jobs
362queued. These features facilitated smooth operation.
363
364 Later Xerox gave the AI lab a newer, faster printer, one of the first
365laser printers. It was driven by proprietary software that ran in a
366separate dedicated computer, so we couldn't add any of our favorite
367features. We could arrange to send a notification when a print job was
368sent to the dedicated computer, but not when the job was actually
369printed (and the delay was usually considerable). There was no way to
370find out when the job was actually printed; you could only guess. And
371no one was informed when there was a paper jam, so the printer often
372went for an hour without being fixed.
373
374 The system programmers at the AI lab were capable of fixing such
375problems, probably as capable as the original authors of the program.
376Xerox was uninterested in fixing them, and chose to prevent us, so we
377were forced to accept the problems. They were never fixed.
378
379 Most good programmers have experienced this frustration. The bank
380could afford to solve the problem by writing a new program from
381scratch, but a typical user, no matter how skilled, can only give up.
382
383 Giving up causes psychosocial harm--to the spirit of self-reliance.
384It is demoralizing to live in a house that you cannot rearrange to suit
385your needs. It leads to resignation and discouragement, which can
386spread to affect other aspects of one's life. People who feel this way
387are unhappy and do not do good work.
388
389 Imagine what it would be like if recipes were hoarded in the same
390fashion as software. You might say, "How do I change this recipe to
391take out the salt?", and the great chef would respond, "How dare you
392insult my recipe, the child of my brain and my palate, by trying to
393tamper with it? You don't have the judgment to change my recipe and
394make it work right!"
395
396 "But my doctor says I'm not supposed to eat salt! What can I do?
397Will you take out the salt for me?"
398
399 "I would be glad to do that; my fee is only $50,000." Since the
400owner has a monopoly on changes, the fee tends to be large. "However,
401right now I don't have time. I am busy with a commission to design a
402new recipe for ship's biscuit for the Navy Department. I might get
403around to you in about two years."
404
405Obstructing Software Development
406================================
407
408 The third level of material harm affects software development.
409Software development used to be an evolutionary process, where a person
410would take an existing program and rewrite parts of it for one new
411feature, and then another person would rewrite parts to add another
412feature; in some cases, this continued over a period of twenty years.
413Meanwhile, parts of the program would be "cannibalized" to form the
414beginnings of other programs.
415
416 The existence of owners prevents this kind of evolution, making it
417necessary to start from scratch when developing a program. It also
418prevents new practitioners from studying existing programs to learn
419useful techniques or even how large programs can be structured.
420
421 Owners also obstruct education. I have met bright students in
422computer science who have never seen the source code of a large
423program. They may be good at writing small programs, but they can't
424begin to learn the different skills of writing large ones if they can't
425see how others have done it.
426
427 In any intellectual field, one can reach greater heights by standing
428on the shoulders of others. But that is no longer generally allowed in
429the software field--you can only stand on the shoulders of the other
430people *in your own company*.
431
432 The associated psychosocial harm affects the spirit of scientific
433cooperation, which used to be so strong that scientists would cooperate
434even when their countries were at war. In this spirit, Japanese
435oceanographers abandoning their lab on an island in the Pacific
436carefully preserved their work for the invading U.S. Marines, and left a
437note asking them to take good care of it.
438
439 Conflict for profit has destroyed what international conflict spared.
440Nowadays scientists in many fields don't publish enough in their papers
441to enable others to replicate the experiment. They publish only enough
442to let readers marvel at how much they were able to do. This is
443certainly true in computer science, where the source code for the
444programs reported on is usually secret.
445
446It Does Not Matter How Sharing Is Restricted
447============================================
448
449 I have been discussing the effects of preventing people from copying,
450changing and building on a program. I have not specified how this
451obstruction is carried out, because that doesn't affect the conclusion.
452Whether it is done by copy protection, or copyright, or licenses, or
453encryption, or ROM cards, or hardware serial numbers, if it *succeeds*
454in preventing use, it does harm.
455
456 Users do consider some of these methods more obnoxious than others.
457I suggest that the methods most hated are those that accomplish their
458objective.
459
460Software Should be Free
461=======================
462
463 I have shown how ownership of a program--the power to restrict
464changing or copying it--is obstructive. Its negative effects are
465widespread and important. It follows that society shouldn't have
466owners for programs.
467
468 Another way to understand this is that what society needs is free
469software, and proprietary software is a poor substitute. Encouraging
470the substitute is not a rational way to get what we need.
471
472 Vaclav Havel has advised us to "Work for something because it is
473good, not just because it stands a chance to succeed." A business
474making proprietary software stands a chance of success in its own narrow
475terms, but it is not what is good for society.
476
477Why People Will Develop Software
478********************************
479
480 If we eliminate intellectual property as a means of encouraging
481people to develop software, at first less software will be developed,
482but that software will be more useful. It is not clear whether the
483overall delivered user satisfaction will be less; but if it is, or if
484we wish to increase it anyway, there are other ways to encourage
485development, just as there are ways besides toll booths to raise money
486for streets. Before I talk about how that can be done, first I want to
487question how much artificial encouragement is truly necessary.
488
489Programming is Fun
490==================
491
492 There are some lines of work that few will enter except for money;
493road construction, for example. There are other fields of study and
494art in which there is little chance to become rich, which people enter
495for their fascination or their perceived value to society. Examples
496include mathematical logic, classical music, and archaeology; and
497political organizing among working people. People compete, more sadly
498than bitterly, for the few funded positions available, none of which is
499funded very well. They may even pay for the chance to work in the
500field, if they can afford to.
501
502 Such a field can transform itself overnight if it begins to offer the
503possibility of getting rich. When one worker gets rich, others demand
504the same opportunity. Soon all may demand large sums of money for doing
505what they used to do for pleasure. When another couple of years go by,
506everyone connected with the field will deride the idea that work would
507be done in the field without large financial returns. They will advise
508social planners to ensure that these returns are possible, prescribing
509special privileges, powers and monopolies as necessary to do so.
510
511 This change happened in the field of computer programming in the past
512decade. Fifteen years ago, there were articles on "computer
513addiction": users were "onlining" and had hundred-dollar-a-week habits.
514It was generally understood that people frequently loved programming
515enough to break up their marriages. Today, it is generally understood
516that no one would program except for a high rate of pay. People have
517forgotten what they knew fifteen years ago.
518
519 When it is true at a given time that most people will work in a
520certain field only for high pay, it need not remain true. The dynamic
521of change can run in reverse, if society provides an impetus. If we
522take away the possibility of great wealth, then after a while, when the
523people have readjusted their attitudes, they will once again be eager
524to work in the field for the joy of accomplishment.
525
526 The question, "How can we pay programmers?", becomes an easier
527question when we realize that it's not a matter of paying them a
528fortune. A mere living is easier to raise.
529
530Funding Free Software
531=====================
532
533 Institutions that pay programmers do not have to be software houses.
534Many other institutions already exist which can do this.
535
536 Hardware manufacturers find it essential to support software
537development even if they cannot control the use of the software. In
5381970, much of their software was free because they did not consider
539restricting it. Today, their increasing willingness to join
540consortiums shows their realization that owning the software is not
541what is really important for them.
542
543 Universities conduct many programming projects. Today, they often
544sell the results, but in the 1970s, they did not. Is there any doubt
545that universities would develop free software if they were not allowed
546to sell software? These projects could be supported by the same
547government contracts and grants which now support proprietary software
548development.
549
550 It is common today for university researchers to get grants to
551develop a system, develop it nearly to the point of completion and call
552that "finished", and then start companies where they really finish the
553project and make it usable. Sometimes they declare the unfinished
554version "free"; if they are thoroughly corrupt, they instead get an
555exclusive license from the university. This is not a secret; it is
556openly admitted by everyone concerned. Yet if the researchers were not
557exposed to the temptation to do these things, they would still do their
558research.
559
560 Programmers writing free software can make their living by selling
561services related to the software. I have been hired to port the GNU C
562compiler to new hardware, and to make user-interface extensions to GNU
563Emacs. (I offer these improvements to the public once they are done.)
564I also teach classes for which I am paid.
565
566 I am not alone in working this way; there is now a successful,
567growing corporation which does no other kind of work. Several other
568companies also provide commercial support for the free software of the
569GNU system. This is the beginning of the independent software support
570industry-an industry that could become quite large if free software
571becomes prevalent. It provides users with an option generally
572unavailable for proprietary software, except to the very wealthy.
573
574 New institutions such as the Free Software Foundation can also fund
575programmers. Most of the foundation's funds come from users buying
576tapes through the mail. The software on the tapes is free, which means
577that every user has the freedom to copy it and change it, but many
578nonetheless pay to get copies. (Recall that "free software" refers to
579freedom, not to price.) Some users order tapes who already have a copy,
580as a way of making a contribution they feel we deserve. The Foundation
581also receives sizable donations from computer manufacturers.
582
583 The Free Software Foundation is a charity, and its income is spent on
584hiring as many programmers as possible. If it had been set up as a
585business, distributing the same free software to the public for the same
586fee, it would now provide a very good living for its founder.
587
588 Because the Foundation is a charity, programmers often work for the
589Foundation for half of what they could make elsewhere. They do this
590because we are free of bureaucracy, and because they feel satisfaction
591in knowing that their work will not be obstructed from use. Most of
592all, they do it because programming is fun. In addition, volunteers
593have written many useful programs for us. (Recently even technical
594writers have begun to volunteer.)
595
596 This confirms that programming is among the most fascinating of all
597fields, along with music and art. We don't have to fear that no one
598will want to program.
599
600What Do Users Owe to Developers?
601================================
602
603 There is a good reason for users of software to feel a moral
604obligation to contribute to its support. Developers of free software
605are contributing to the users' activities, and it is both fair and in
606the long term interest of the users to give them funds to continue.
607
608 However, this does not apply to proprietary software developers,
609since obstructionism deserves a punishment rather than a reward.
610
611 We thus have a paradox: the developer of useful software is entitled
612to the support of the users, but any attempt to turn this moral
613obligation into a requirement destroys the basis for the obligation. A
614developer can either deserve a reward or demand it, but not both.
615
616 I believe that an ethical developer faced with this paradox must act
617so as to deserve the reward, but should also entreat the users for
618voluntary donations. Eventually the users will learn to support
619developers without coercion, just as they have learned to support public
620radio and television stations.
621
622What Is Software Productivity?
623******************************
624
625 If software were free, there would still be programmers, but perhaps
626fewer of them. Would this be bad for society?
627
628 Not necessarily. Today the advanced nations have fewer farmers than
629in 1900, but we do not think this is bad for society, because the few
630deliver more food to the consumers than the many used to do. We call
631this improved productivity. Free software would require far fewer
632programmers to satisfy the demand, because of increased software
633productivity at all levels:
634
635 * Wider use of each program that is developed.
636
637 * The ability to adapt existing programs for customization instead
638 of starting from scratch.
639
640 * Better education of programmers.
641
642 * The elimination of duplicate development effort.
643
644 Those who object to cooperation because it would result in the
645employment of fewer programmers, are actually objecting to increased
646productivity. Yet these people usually accept the widely-held belief
647that the software industry needs increased productivity. How is this?
648
649 "Software productivity" can mean two different things: the overall
650productivity of all software development, or the productivity of
651individual projects. Overall productivity is what society would like to
652improve, and the most straightforward way to do this is to eliminate the
653artificial obstacles to cooperation which reduce it. But researchers
654who study the field of "software productivity" focus only on the
655second, limited, sense of the term, where improvement requires difficult
656technological advances.
657
658Is Competition Inevitable?
659**************************
660
661 Is it inevitable that people will try to compete, to surpass their
662rivals in society? Perhaps it is. But competition itself is not
663harmful; the harmful thing is *combat*.
664
665 There are many ways to compete. Competition can consist of trying to
666achieve ever more, to outdo what others have done. For example, in the
667old days, there was competition among programming wizards--competition
668for who could make the computer do the most amazing thing, or for who
669could make the shortest or fastest program for a given task. This kind
670of competition can benefit everyone, *as long as* the spirit of good
671sportsmanship is maintained.
672
673 Constructive competition is enough competition to motivate people to
674great efforts. A number of people are competing to be the first to have
675visited all the countries on Earth; some even spend fortunes trying to
676do this. But they do not bribe ship captains to strand their rivals on
677desert islands. They are content to let the best person win.
678
679 Competition becomes combat when the competitors begin trying to
680impede each other instead of advancing themselves--when "Let the best
681person win" gives way to "Let me win, best or not." Proprietary
682software is harmful, not because it is a form of competition, but
683because it is a form of combat among the citizens of our society.
684
685 Competition in business is not necessarily combat. For example, when
686two grocery stores compete, their entire effort is to improve their own
687operations, not to sabotage the rival. But this does not demonstrate a
688special commitment to business ethics; rather, there is little scope for
689combat in this line of business short of physical violence. Not all
690areas of business share this characteristic. Withholding information
691that could help everyone advance is a form of combat.
692
693 Business ideology does not prepare people to resist the temptation to
694combat the competition. Some forms of combat have been made banned with
695anti-trust laws, truth in advertising laws, and so on, but rather than
696generalizing this to a principled rejection of combat in general,
697executives invent other forms of combat which are not specifically
698prohibited. Society's resources are squandered on the economic
699equivalent of factional civil war.
700
701"Why Don't You Move to Russia?"
702*******************************
703
704 In the United States, any advocate of other than the most extreme
705form of laissez-faire selfishness has often heard this accusation. For
706example, it is leveled against the supporters of a national health care
707system, such as is found in all the other industrialized nations of the
708free world. It is leveled against the advocates of public support for
709the arts, also universal in advanced nations. The idea that citizens
710have any obligation to the public good is identified in America with
711Communism. But how similar are these ideas?
712
713 Communism as was practiced in the Soviet Union was a system of
714central control where all activity was regimented, supposedly for the
715common good, but actually for the sake of the members of the Communist
716party. And where copying equipment was closely guarded to prevent
717illegal copying.
718
719 The American system of intellectual property exercises central
720control over distribution of a program, and guards copying equipment
721with automatic copying protection schemes to prevent illegal copying.
722
723 By contrast, I am working to build a system where people are free to
724decide their own actions; in particular, free to help their neighbors,
725and free to alter and improve the tools which they use in their daily
726lives. A system based on voluntary cooperation, and decentralization.
727
728 Thus, if we are to judge views by their resemblance to Russian
729Communism, it is the software owners who are the Communists.
730
731The Question of Premises
732************************
733
734 I make the assumption in this paper that a user of software is no
735less important than an author, or even an author's employer. In other
736words, their interests and needs have equal weight, when we decide
737which course of action is best.
738
739 This premise is not universally accepted. Many maintain that an
740author's employer is fundamentally more important than anyone else.
741They say, for example, that the purpose of having owners of software is
742to give the author's employer the advantage he deserves--regardless of
743how this may affect the public.
744
745 It is no use trying to prove or disprove these premises. Proof
746requires shared premises. So most of what I have to say is addressed
747only to those who share the premises I use, or at least are interested
748in what their consequences are. For those who believe that the owners
749are more important than everyone else, this paper is simply irrelevant.
750
751 But why would a large number of Americans accept a premise which
752elevates certain people in importance above everyone else? Partly
753because of the belief that this premise is part of the legal traditions
754of American society. Some people feel that doubting the premise means
755challenging the basis of society.
756
757 It is important for these people to know that this premise is not
758part of our legal tradition. It never has been.
759
760 Thus, the Constitution says that the purpose of copyright is to
761"promote the progress of science and the useful arts." The Supreme
762Court has elaborated on this, stating in `Fox Film vs. Doyal' that "The
763sole interest of the United States and the primary object in conferring
764the [copyright] monopoly lie in the general benefits derived by the
765public from the labors of authors."
766
767 We are not required to agree with the Constitution or the Supreme
768Court. (At one time, they both condoned slavery.) So their positions
769do not disprove the owner supremacy premise. But I hope that the
770awareness that this is a radical right-wing assumption rather than a
771traditionally recognized one will weaken its appeal.
772
773Conclusion
774**********
775
776 We like to think that our society encourages helping your neighbor;
777but each time we reward someone for obstructionism, or admire them for
778the wealth they have gained in this way, we are sending the opposite
779message.
780
781 Software hoarding is one form of our general willingness to disregard
782the welfare of society for personal gain. We can trace this disregard
783from Ronald Reagan to Jim Bakker, from Ivan Boesky to Exxon, from
784failing banks to failing schools. We can measure it with the size of
785the homeless population and the prison population. The antisocial
786spirit feeds on itself, because the more we see that other people will
787not help us, the more it seems futile to help them. Thus society decays
788into a jungle.
789
790 If we don't want to live in a jungle, we must change our attitudes.
791We must start sending the message that a good citizen is one who
792cooperates when appropriate, not one who is successful at taking from
793others. I hope that the free software movement will contribute to
794this: at least in one area, we will replace the jungle with a more
795efficient system which encourages and runs on voluntary cooperation.
796
797 ---------- Footnotes ----------
798
799 (1) The word "free" in "free software" refers to freedom, not to
800price; the price paid for a copy of a free program may be zero, or
801small, or (rarely) quite large.
802
803 (2) The issues of pollution and traffic congestion do not alter
804this conclusion. If we wish to make driving more expensive to
805discourage driving in general, it is disadvantageous to do this using
806toll booths, which contribute to both pollution and congestion. A tax
807on gasoline is much better. Likewise, a desire to enhance safety by
808limiting maximum speed is not relevant; a free access road enhances the
809average speed by avoiding stops and delays, for any given speed limit.
810
811 (3) One might regard a particular computer program as a harmful
812thing that should not be available at all, like the Lotus Marketplace
813database of personal information, which was withdrawn from sale due to
814public disapproval. Most of what I say does not apply to this case,
815but it makes little sense to argue for having an owner on the grounds
816that the owner will make the program less available. The owner will
817not make it *completely* unavailable, as one would wish in the case of
818a program whose use is considered destructive.
819
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 5647c86053e..d113d60af83 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,45 @@
12014-01-12 Xue Fuqiao <xfq.free@gmail.com>
2
3 * net/eww.el (eww-download-directory): Rename from
4 `eww-download-path' (Bug#16419).
5
62014-01-12 Leo Liu <sdl.web@gmail.com>
7
8 * dired-x.el (dired-mode-map): Fix last change.
9
10 * emacs-lisp/eldoc.el (eldoc-mode): Add hook locally.
11
122014-01-12 Paul Eggert <eggert@cs.ucla.edu>
13
14 Spelling fixes.
15 * emacs-lisp/generic.el (generic--normalize-comments):
16 Rename from generic--normalise-comments. All uses changed.
17 * play/bubbles.el (bubbles--neighborhood-score):
18 (bubbles--mark-direct-neighbors, bubbles--mark-neighborhood)
19 (bubbles--neighborhood-available)
20 (bubbles--update-neighborhood-score):
21 Rename from names with 'neighbourhood'. All uses changed.
22
232014-01-12 Leo Liu <sdl.web@gmail.com>
24
25 Re-implement the feature of showing eldoc info after editing.
26 * emacs-lisp/eldoc.el (eldoc-post-insert-mode): Remove.
27 (eldoc-edit-message-commands): New function.
28 (eldoc-print-after-edit): New variable.
29 (eldoc-pre-command-refresh-echo-area): Emit message only by
30 eldoc-message-commands.
31 (eldoc-mode): Restrict eldoc-message-commands to editing commands
32 if eldoc-print-after-edit is set. (Bug#16346)
33
34 * progmodes/octave.el (octave-mode-menu): Adapt to change in
35 eldoc.
36
12014-01-11 Eric S. Raymond <esr@thyrsus.com> 372014-01-11 Eric S. Raymond <esr@thyrsus.com>
2 38
39 * version.el (emacs-repository-get-version): Enhance so the
40 function works correctly in either a Bazaar or Git repo. The
41 Bazaar case can be discarded after the repo transition.
42
3 * play/meese.el: It's 2014 and Ed Meese is justly forgotten. Goes 43 * play/meese.el: It's 2014 and Ed Meese is justly forgotten. Goes
4 with removal of the joke manpages from /etc. 44 with removal of the joke manpages from /etc.
5 45
@@ -243,7 +283,7 @@
2432014-01-06 Leo Liu <sdl.web@gmail.com> 2832014-01-06 Leo Liu <sdl.web@gmail.com>
244 284
245 * dired-x.el (dired-mode-map): Rebind dired-omit-mode to C-x M-o 285 * dired-x.el (dired-mode-map): Rebind dired-omit-mode to C-x M-o
246 to avoid shadowning global key. (Bug#16354) 286 to avoid shadowing global key. (Bug#16354)
247 287
2482014-01-06 Daniel Colascione <dancol@dancol.org> 2882014-01-06 Daniel Colascione <dancol@dancol.org>
249 289
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index a1ee1fa2e07..947de7cd9f8 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -241,7 +241,7 @@ to nil: a pipe using `zcat' or `gunzip -c' will be used."
241 241
242;;; KEY BINDINGS. 242;;; KEY BINDINGS.
243 243
244(define-key dired-mode-map "\C-c\M-o" 'dired-omit-mode) 244(define-key dired-mode-map "\C-x\M-o" 'dired-omit-mode)
245(define-key dired-mode-map "*O" 'dired-mark-omitted) 245(define-key dired-mode-map "*O" 'dired-mark-omitted)
246(define-key dired-mode-map "\M-(" 'dired-mark-sexp) 246(define-key dired-mode-map "\M-(" 'dired-mark-sexp)
247(define-key dired-mode-map "*(" 'dired-mark-sexp) 247(define-key dired-mode-map "*(" 'dired-mark-sexp)
diff --git a/lisp/dired.el b/lisp/dired.el
index 571e0d25be1..a30f34bc43a 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -4353,7 +4353,7 @@ instead.
4353 4353
4354;;;*** 4354;;;***
4355 4355
4356;;;### (autoloads nil "dired-x" "dired-x.el" "fe5dbf515419da3b9907f32e5d4311fa") 4356;;;### (autoloads nil "dired-x" "dired-x.el" "291bc6e869bf72c900604c45d40f45ed")
4357;;; Generated autoloads from dired-x.el 4357;;; Generated autoloads from dired-x.el
4358 4358
4359(autoload 'dired-jump "dired-x" "\ 4359(autoload 'dired-jump "dired-x" "\
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 8bd9ebc1e63..fa1574b0a88 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -1,4 +1,4 @@
1;;; eldoc.el --- show function arglist or variable docstring in echo area 1;;; eldoc.el --- show function arglist or variable docstring in echo area -*- lexical-binding: t; -*-
2 2
3;; Copyright (C) 1996-2014 Free Software Foundation, Inc. 3;; Copyright (C) 1996-2014 Free Software Foundation, Inc.
4 4
@@ -62,6 +62,12 @@ If this variable is set to 0, no idle time is required."
62 :type 'number 62 :type 'number
63 :group 'eldoc) 63 :group 'eldoc)
64 64
65(defcustom eldoc-print-after-edit nil
66 "If non-nil eldoc info is only shown when editing.
67Changing the value requires toggling `eldoc-mode'."
68 :type 'boolean
69 :group 'eldoc)
70
65;;;###autoload 71;;;###autoload
66(defcustom eldoc-minor-mode-string (purecopy " ElDoc") 72(defcustom eldoc-minor-mode-string (purecopy " ElDoc")
67 "String to display in mode line when ElDoc Mode is enabled; nil for none." 73 "String to display in mode line when ElDoc Mode is enabled; nil for none."
@@ -150,6 +156,16 @@ This is used to determine if `eldoc-idle-delay' is changed by the user.")
150 "The function used by `eldoc-message' to display messages. 156 "The function used by `eldoc-message' to display messages.
151It should receive the same arguments as `message'.") 157It should receive the same arguments as `message'.")
152 158
159(defun eldoc-edit-message-commands ()
160 (let ((cmds (make-vector 31 0))
161 (re (regexp-opt '("delete" "insert" "edit" "electric" "newline"))))
162 (mapatoms (lambda (s)
163 (and (commandp s)
164 (string-match-p re (symbol-name s))
165 (intern (symbol-name s) cmds)))
166 obarray)
167 cmds))
168
153 169
154;;;###autoload 170;;;###autoload
155(define-minor-mode eldoc-mode 171(define-minor-mode eldoc-mode
@@ -168,25 +184,13 @@ expression point is on."
168 (setq eldoc-last-message nil) 184 (setq eldoc-last-message nil)
169 (if eldoc-mode 185 (if eldoc-mode
170 (progn 186 (progn
187 (when eldoc-print-after-edit
188 (setq-local eldoc-message-commands (eldoc-edit-message-commands)))
171 (add-hook 'post-command-hook 'eldoc-schedule-timer nil t) 189 (add-hook 'post-command-hook 'eldoc-schedule-timer nil t)
172 (add-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area t)) 190 (add-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area nil t))
173 (remove-hook 'post-command-hook 'eldoc-schedule-timer) 191 (kill-local-variable 'eldoc-message-commands)
174 (remove-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area))) 192 (remove-hook 'post-command-hook 'eldoc-schedule-timer t)
175 193 (remove-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area t)))
176;;;###autoload
177(define-minor-mode eldoc-post-insert-mode nil
178 :group 'eldoc :lighter (:eval (if eldoc-mode ""
179 (concat eldoc-minor-mode-string "|i")))
180 (setq eldoc-last-message nil)
181 (let ((prn-info (lambda ()
182 (unless eldoc-mode
183 (eldoc-print-current-symbol-info)))))
184 (if eldoc-post-insert-mode
185 (add-hook 'post-self-insert-hook prn-info nil t)
186 (remove-hook 'post-self-insert-hook prn-info t))))
187
188;; FIXME: This changes Emacs's behavior when the file is loaded!
189(add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-post-insert-mode)
190 194
191;;;###autoload 195;;;###autoload
192(defun turn-on-eldoc-mode () 196(defun turn-on-eldoc-mode ()
@@ -264,8 +268,10 @@ Otherwise work like `message'."
264;; This doesn't seem to be required for Emacs 19.28 and earlier. 268;; This doesn't seem to be required for Emacs 19.28 and earlier.
265(defun eldoc-pre-command-refresh-echo-area () 269(defun eldoc-pre-command-refresh-echo-area ()
266 (and eldoc-last-message 270 (and eldoc-last-message
267 (if (eldoc-display-message-no-interference-p) 271 (if (and (eldoc-display-message-no-interference-p)
268 (eldoc-message eldoc-last-message) 272 (symbolp this-command)
273 (intern-soft (symbol-name this-command) eldoc-message-commands))
274 (eldoc-message eldoc-last-message)
269 (setq eldoc-last-message nil)))) 275 (setq eldoc-last-message nil))))
270 276
271;; Decide whether now is a good time to display a message. 277;; Decide whether now is a good time to display a message.
@@ -283,9 +289,7 @@ Otherwise work like `message'."
283;; Check various conditions about the current environment that might make 289;; Check various conditions about the current environment that might make
284;; it undesirable to print eldoc messages right this instant. 290;; it undesirable to print eldoc messages right this instant.
285(defun eldoc-display-message-no-interference-p () 291(defun eldoc-display-message-no-interference-p ()
286 (and eldoc-mode 292 (not (or executing-kbd-macro (bound-and-true-p edebug-active))))
287 (not executing-kbd-macro)
288 (not (and (boundp 'edebug-active) edebug-active))))
289 293
290 294
291;;;###autoload 295;;;###autoload
@@ -309,7 +313,7 @@ Emacs Lisp mode) that support ElDoc.")
309 ;; This is run from post-command-hook or some idle timer thing, 313 ;; This is run from post-command-hook or some idle timer thing,
310 ;; so we need to be careful that errors aren't ignored. 314 ;; so we need to be careful that errors aren't ignored.
311 (with-demoted-errors "eldoc error: %s" 315 (with-demoted-errors "eldoc error: %s"
312 (and (or (eldoc-display-message-p) eldoc-post-insert-mode) 316 (and (eldoc-display-message-p)
313 (if eldoc-documentation-function 317 (if eldoc-documentation-function
314 (eldoc-message (funcall eldoc-documentation-function)) 318 (eldoc-message (funcall eldoc-documentation-function))
315 (let* ((current-symbol (eldoc-current-symbol)) 319 (let* ((current-symbol (eldoc-current-symbol))
diff --git a/lisp/emacs-lisp/generic.el b/lisp/emacs-lisp/generic.el
index 146219885da..02c30aad55f 100644
--- a/lisp/emacs-lisp/generic.el
+++ b/lisp/emacs-lisp/generic.el
@@ -224,7 +224,7 @@ Some generic modes are defined in `generic-x.el'."
224 224
225;;; Comment Functionality 225;;; Comment Functionality
226 226
227(defun generic--normalise-comments (comment-list) 227(defun generic--normalize-comments (comment-list)
228 (let ((normalized '())) 228 (let ((normalized '()))
229 (dolist (start comment-list) 229 (dolist (start comment-list)
230 (let (end) 230 (let (end)
@@ -300,7 +300,7 @@ Some generic modes are defined in `generic-x.el'."
300(defun generic-mode-set-comments (comment-list) 300(defun generic-mode-set-comments (comment-list)
301 "Set up comment functionality for generic mode." 301 "Set up comment functionality for generic mode."
302 (let ((st (make-syntax-table)) 302 (let ((st (make-syntax-table))
303 (comment-list (generic--normalise-comments comment-list))) 303 (comment-list (generic--normalize-comments comment-list)))
304 (generic-set-comment-syntax st comment-list) 304 (generic-set-comment-syntax st comment-list)
305 (generic-set-comment-vars comment-list) 305 (generic-set-comment-vars comment-list)
306 (set-syntax-table st))) 306 (set-syntax-table st)))
diff --git a/lisp/mouse-drag.el b/lisp/mouse-drag.el
index a0115f8ea66..082c9235ff9 100644
--- a/lisp/mouse-drag.el
+++ b/lisp/mouse-drag.el
@@ -291,7 +291,7 @@ To test this function, evaluate:
291 (or (mouse-movement-p event) 291 (or (mouse-movement-p event)
292 (eq (car-safe event) 'switch-frame))) 292 (eq (car-safe event) 'switch-frame)))
293 ;; Scroll if see if we're on the edge. 293 ;; Scroll if see if we're on the edge.
294 ;; NEEDSWORK: should handle mouse-in-other window. 294 ;; FIXME: should handle mouse-in-other window.
295 (cond 295 (cond
296 ((not (eq start-window (posn-window end))) 296 ((not (eq start-window (posn-window end)))
297 t) ; wait for return to original window 297 t) ; wait for return to original window
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 38726fd7dcc..4375a31bd36 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -50,8 +50,8 @@
50 :group 'eww 50 :group 'eww
51 :type 'string) 51 :type 'string)
52 52
53(defcustom eww-download-path "~/Downloads/" 53(defcustom eww-download-directory "~/Downloads/"
54 "Path where files will downloaded." 54 "Directory where files will downloaded."
55 :version "24.4" 55 :version "24.4"
56 :group 'eww 56 :group 'eww
57 :type 'string) 57 :type 'string)
diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el
index 69ad4da60ca..d24dad28363 100644
--- a/lisp/org/org-list.el
+++ b/lisp/org/org-list.el
@@ -1223,7 +1223,7 @@ some heuristics to guess the result."
1223 ;; When `org-blank-before-new-entry' says so, it is 1. 1223 ;; When `org-blank-before-new-entry' says so, it is 1.
1224 ((eq insert-blank-p t) 1) 1224 ((eq insert-blank-p t) 1)
1225 ;; `plain-list-item' is 'auto. Count blank lines separating 1225 ;; `plain-list-item' is 'auto. Count blank lines separating
1226 ;; neighbours items in list. 1226 ;; neighbors' items in list.
1227 (t (let ((next-p (org-list-get-next-item item struct prevs))) 1227 (t (let ((next-p (org-list-get-next-item item struct prevs)))
1228 (cond 1228 (cond
1229 ;; Is there a next item? 1229 ;; Is there a next item?
diff --git a/lisp/org/ox.el b/lisp/org/ox.el
index fcf6aab2069..0102523b5c7 100644
--- a/lisp/org/ox.el
+++ b/lisp/org/ox.el
@@ -5093,7 +5093,7 @@ Return the new string."
5093;;;; Topology 5093;;;; Topology
5094;; 5094;;
5095;; Here are various functions to retrieve information about the 5095;; Here are various functions to retrieve information about the
5096;; neighbourhood of a given element or object. Neighbours of interest 5096;; neighborhood of a given element or object. Neighbors of interest
5097;; are direct parent (`org-export-get-parent'), parent headline 5097;; are direct parent (`org-export-get-parent'), parent headline
5098;; (`org-export-get-parent-headline'), first element containing an 5098;; (`org-export-get-parent-headline'), first element containing an
5099;; object, (`org-export-get-parent-element'), parent table 5099;; object, (`org-export-get-parent-element'), parent table
diff --git a/lisp/play/bubbles.el b/lisp/play/bubbles.el
index 8294d6398fe..e7f5725a0f0 100644
--- a/lisp/play/bubbles.el
+++ b/lisp/play/bubbles.el
@@ -231,7 +231,7 @@ Available modes are `shift-default' and `shift-always'."
231(defvar bubbles--score 0 231(defvar bubbles--score 0
232 "Current Bubbles score.") 232 "Current Bubbles score.")
233 233
234(defvar bubbles--neighbourhood-score 0 234(defvar bubbles--neighborhood-score 0
235 "Score of active bubbles neighborhood.") 235 "Score of active bubbles neighborhood.")
236 236
237(defvar bubbles--faces nil 237(defvar bubbles--faces nil
@@ -925,7 +925,7 @@ static char * dot3d_xpm[] = {
925 (buffer-disable-undo) 925 (buffer-disable-undo)
926 (force-mode-line-update) 926 (force-mode-line-update)
927 (redisplay) 927 (redisplay)
928 (add-hook 'post-command-hook 'bubbles--mark-neighbourhood t t)) 928 (add-hook 'post-command-hook 'bubbles--mark-neighborhood t t))
929 929
930;;;###autoload 930;;;###autoload
931(defun bubbles () 931(defun bubbles ()
@@ -1087,7 +1087,7 @@ Set `bubbles--col-offset' and `bubbles--row-offset'."
1087 (char-after (point)) 1087 (char-after (point))
1088 nil))) 1088 nil)))
1089 1089
1090(defun bubbles--mark-direct-neighbours (row col char) 1090(defun bubbles--mark-direct-neighbors (row col char)
1091 "Mark direct neighbors of bubble at ROW COL with same CHAR." 1091 "Mark direct neighbors of bubble at ROW COL with same CHAR."
1092 (save-excursion 1092 (save-excursion
1093 (let ((count 0)) 1093 (let ((count 0))
@@ -1097,13 +1097,13 @@ Set `bubbles--col-offset' and `bubbles--row-offset'."
1097 (add-text-properties (point) (1+ (point)) 1097 (add-text-properties (point) (1+ (point))
1098 '(active t face 'bubbles--highlight-face)) 1098 '(active t face 'bubbles--highlight-face))
1099 (setq count (+ 1 1099 (setq count (+ 1
1100 (bubbles--mark-direct-neighbours row (1+ col) char) 1100 (bubbles--mark-direct-neighbors row (1+ col) char)
1101 (bubbles--mark-direct-neighbours row (1- col) char) 1101 (bubbles--mark-direct-neighbors row (1- col) char)
1102 (bubbles--mark-direct-neighbours (1+ row) col char) 1102 (bubbles--mark-direct-neighbors (1+ row) col char)
1103 (bubbles--mark-direct-neighbours (1- row) col char)))) 1103 (bubbles--mark-direct-neighbors (1- row) col char))))
1104 count))) 1104 count)))
1105 1105
1106(defun bubbles--mark-neighbourhood (&optional pos) 1106(defun bubbles--mark-neighborhood (&optional pos)
1107 "Mark neighborhood of point. 1107 "Mark neighborhood of point.
1108Use optional parameter POS instead of point if given." 1108Use optional parameter POS instead of point if given."
1109 (when bubbles--playing 1109 (when bubbles--playing
@@ -1117,17 +1117,17 @@ Use optional parameter POS instead of point if given."
1117 '(face default active nil)) 1117 '(face default active nil))
1118 (let ((count 0)) 1118 (let ((count 0))
1119 (when (and row col (not (eq char (bubbles--empty-char)))) 1119 (when (and row col (not (eq char (bubbles--empty-char))))
1120 (setq count (bubbles--mark-direct-neighbours row col char)) 1120 (setq count (bubbles--mark-direct-neighbors row col char))
1121 (unless (> count 1) 1121 (unless (> count 1)
1122 (add-text-properties (point-min) (point-max) 1122 (add-text-properties (point-min) (point-max)
1123 '(face default active nil)) 1123 '(face default active nil))
1124 (setq count 0))) 1124 (setq count 0)))
1125 (bubbles--update-neighbourhood-score count)) 1125 (bubbles--update-neighborhood-score count))
1126 (put-text-property (point-min) (point-max) 'pointer 'arrow) 1126 (put-text-property (point-min) (point-max) 'pointer 'arrow)
1127 (bubbles--update-faces-or-images) 1127 (bubbles--update-faces-or-images)
1128 (sit-for 0))))) 1128 (sit-for 0)))))
1129 1129
1130(defun bubbles--neighbourhood-available () 1130(defun bubbles--neighborhood-available ()
1131 "Return t if another valid neighborhood is available." 1131 "Return t if another valid neighborhood is available."
1132 (catch 'found 1132 (catch 'found
1133 (save-excursion 1133 (save-excursion
@@ -1153,20 +1153,20 @@ Use optional parameter POS instead of point if given."
1153 1153
1154(defun bubbles--reset-score () 1154(defun bubbles--reset-score ()
1155 "Reset bubbles score." 1155 "Reset bubbles score."
1156 (setq bubbles--neighbourhood-score 0 1156 (setq bubbles--neighborhood-score 0
1157 bubbles--score 0) 1157 bubbles--score 0)
1158 (bubbles--update-score)) 1158 (bubbles--update-score))
1159 1159
1160(defun bubbles--update-score () 1160(defun bubbles--update-score ()
1161 "Calculate and display new bubbles score." 1161 "Calculate and display new bubbles score."
1162 (setq bubbles--score (+ bubbles--score bubbles--neighbourhood-score)) 1162 (setq bubbles--score (+ bubbles--score bubbles--neighborhood-score))
1163 (bubbles--show-scores)) 1163 (bubbles--show-scores))
1164 1164
1165(defun bubbles--update-neighbourhood-score (size) 1165(defun bubbles--update-neighborhood-score (size)
1166 "Calculate and display score of active neighborhood from its SIZE." 1166 "Calculate and display score of active neighborhood from its SIZE."
1167 (if (> size 1) 1167 (if (> size 1)
1168 (setq bubbles--neighbourhood-score (expt (- size 1) 2)) 1168 (setq bubbles--neighborhood-score (expt (- size 1) 2))
1169 (setq bubbles--neighbourhood-score 0)) 1169 (setq bubbles--neighborhood-score 0))
1170 (bubbles--show-scores)) 1170 (bubbles--show-scores))
1171 1171
1172(defun bubbles--show-scores () 1172(defun bubbles--show-scores ()
@@ -1177,7 +1177,7 @@ Use optional parameter POS instead of point if given."
1177 (let ((inhibit-read-only t) 1177 (let ((inhibit-read-only t)
1178 (pos (point))) 1178 (pos (point)))
1179 (delete-region (point) (point-max)) 1179 (delete-region (point) (point-max))
1180 (insert (format "Selected: %4d\n" bubbles--neighbourhood-score)) 1180 (insert (format "Selected: %4d\n" bubbles--neighborhood-score))
1181 (insert " ") 1181 (insert " ")
1182 (add-text-properties (1- (point)) (point) 1182 (add-text-properties (1- (point)) (point)
1183 (list 'intangible t 'display 1183 (list 'intangible t 'display
@@ -1216,10 +1216,10 @@ Use optional parameter POS instead of point if given."
1216 "Remove active bubbles region." 1216 "Remove active bubbles region."
1217 (interactive) 1217 (interactive)
1218 (when (and bubbles--playing 1218 (when (and bubbles--playing
1219 (> bubbles--neighbourhood-score 0)) 1219 (> bubbles--neighborhood-score 0))
1220 (setq bubbles--save-data (list bubbles--score (buffer-string))) 1220 (setq bubbles--save-data (list bubbles--score (buffer-string)))
1221 (let ((inhibit-read-only t)) 1221 (let ((inhibit-read-only t))
1222 ;; blank out current neighbourhood 1222 ;; blank out current neighborhood
1223 (let ((row (bubbles--row (point))) 1223 (let ((row (bubbles--row (point)))
1224 (col (bubbles--col (point)))) 1224 (col (bubbles--col (point))))
1225 (goto-char (point-max)) 1225 (goto-char (point-max))
@@ -1289,7 +1289,7 @@ Use optional parameter POS instead of point if given."
1289 (bubbles--update-faces-or-images) 1289 (bubbles--update-faces-or-images)
1290 (sit-for 0))) 1290 (sit-for 0)))
1291 (put-text-property (point-min) (point-max) 'removed nil) 1291 (put-text-property (point-min) (point-max) 'removed nil)
1292 (unless (bubbles--neighbourhood-available) 1292 (unless (bubbles--neighborhood-available)
1293 (bubbles--game-over))) 1293 (bubbles--game-over)))
1294 ;; undo 1294 ;; undo
1295 (setq buffer-undo-list '((apply bubbles-undo . nil))) 1295 (setq buffer-undo-list '((apply bubbles-undo . nil)))
diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el
index e2ef492a9ad..1378e8fdb59 100644
--- a/lisp/progmodes/octave.el
+++ b/lisp/progmodes/octave.el
@@ -154,12 +154,8 @@ parenthetical grouping.")
154 ["Insert Function" octave-insert-defun t] 154 ["Insert Function" octave-insert-defun t]
155 ["Update Function File Comment" octave-update-function-file-comment t] 155 ["Update Function File Comment" octave-update-function-file-comment t]
156 "---" 156 "---"
157 ["Function Syntax Hints" (call-interactively 157 ["Function Syntax Hints" (eldoc-mode 'toggle)
158 (if (fboundp 'eldoc-post-insert-mode) 158 :style toggle :selected (bound-and-true-p eldoc-mode)
159 'eldoc-post-insert-mode
160 'eldoc-mode))
161 :style toggle :selected (or (bound-and-true-p eldoc-post-insert-mode)
162 (bound-and-true-p eldoc-mode))
163 :help "Display function signatures after typing `SPC' or `('"] 159 :help "Display function signatures after typing `SPC' or `('"]
164 ["Delimiter Matching" show-paren-mode 160 ["Delimiter Matching" show-paren-mode
165 :style toggle :selected show-paren-mode 161 :style toggle :selected show-paren-mode
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 3ae9a21c3e4..daf8d299663 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -3504,7 +3504,7 @@ so that `occur-next' and `occur-prev' will work."
3504 3504
3505;; Originally this was sh-learn-region-indent (beg end) 3505;; Originally this was sh-learn-region-indent (beg end)
3506;; However, in practice this was awkward so I changed it to 3506;; However, in practice this was awkward so I changed it to
3507;; use the whole buffer. Use narrowing if needbe. 3507;; use the whole buffer. Use narrowing if need be.
3508(defun sh-learn-buffer-indent (&optional arg) 3508(defun sh-learn-buffer-indent (&optional arg)
3509 "Learn how to indent the buffer the way it currently is. 3509 "Learn how to indent the buffer the way it currently is.
3510 3510
diff --git a/lisp/simple.el b/lisp/simple.el
index 5c2f3c3db1d..ae18ae65fb5 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1387,6 +1387,7 @@ display the result of expression evaluation."
1387 (lambda () 1387 (lambda ()
1388 (add-hook 'completion-at-point-functions 1388 (add-hook 'completion-at-point-functions
1389 #'lisp-completion-at-point nil t) 1389 #'lisp-completion-at-point nil t)
1390 (eldoc-mode 1)
1390 (run-hooks 'eval-expression-minibuffer-setup-hook)) 1391 (run-hooks 'eval-expression-minibuffer-setup-hook))
1391 (read-from-minibuffer prompt initial-contents 1392 (read-from-minibuffer prompt initial-contents
1392 read-expression-map t 1393 read-expression-map t
diff --git a/lisp/version.el b/lisp/version.el
index 71e56858afa..b2557142a78 100644
--- a/lisp/version.el
+++ b/lisp/version.el
@@ -145,40 +145,52 @@ maybe ask the VCS itself, if the sources appear to be under
145version control. If `force', always ask. the VCS. Otherwise 145version control. If `force', always ask. the VCS. Otherwise
146only ask the VCS if we cannot find any information ourselves." 146only ask the VCS if we cannot find any information ourselves."
147 (or dir (setq dir source-directory)) 147 (or dir (setq dir source-directory))
148 (when (file-directory-p (expand-file-name ".bzr/branch" dir)) 148 (or
149 (if (eq external 'force) 149 ;; Bazaar case -- to be removed after transition
150 (emacs-bzr-version-bzr dir) 150 (when (file-directory-p (expand-file-name ".bzr/branch" dir))
151 (let (file loc rev) 151 (if (eq external 'force)
152 (cond ((file-readable-p 152 (emacs-bzr-version-bzr dir)
153 (setq file (expand-file-name ".bzr/branch/last-revision" dir))) 153 (let (file loc rev)
154 (with-temp-buffer 154 (cond ((file-readable-p
155 (insert-file-contents file) 155 (setq file (expand-file-name ".bzr/branch/last-revision" dir)))
156 (goto-char (point-max)) 156 (with-temp-buffer
157 (if (looking-back "\n") 157 (insert-file-contents file)
158 (delete-char -1)) 158 (goto-char (point-max))
159 (buffer-string))) 159 (if (looking-back "\n")
160 ;; OK, no last-revision. Is it a lightweight checkout? 160 (delete-char -1))
161 ((file-readable-p 161 (buffer-string)))
162 (setq file (expand-file-name ".bzr/branch/location" dir))) 162 ;; OK, no last-revision. Is it a lightweight checkout?
163 (setq rev (emacs-bzr-version-dirstate dir)) 163 ((file-readable-p
164 ;; If the parent branch is local, try looking there for the rev. 164 (setq file (expand-file-name ".bzr/branch/location" dir)))
165 ;; Note: there is no guarantee that the parent branch's rev 165 (setq rev (emacs-bzr-version-dirstate dir))
166 ;; corresponds to this branch. This branch could have 166 ;; If the parent branch is local, try looking there for the rev.
167 ;; been made with a specific -r revno argument, or the 167 ;; Note: there is no guarantee that the parent branch's rev
168 ;; parent could have been updated since this branch was created. 168 ;; corresponds to this branch. This branch could have
169 ;; To try and detect this, we check the dirstate revids 169 ;; been made with a specific -r revno argument, or the
170 ;; to see if they match. 170 ;; parent could have been updated since this branch was created.
171 (if (and (setq loc (with-temp-buffer 171 ;; To try and detect this, we check the dirstate revids
172 (insert-file-contents file) 172 ;; to see if they match.
173 (if (looking-at "file://\\(.*\\)") 173 (if (and (setq loc (with-temp-buffer
174 (match-string 1)))) 174 (insert-file-contents file)
175 (equal rev (emacs-bzr-version-dirstate loc))) 175 (if (looking-at "file://\\(.*\\)")
176 (emacs-bzr-get-version loc) 176 (match-string 1))))
177 ;; If parent does not match, the best we can do without 177 (equal rev (emacs-bzr-version-dirstate loc)))
178 ;; calling external commands is to use the dirstate rev. 178 (emacs-bzr-get-version loc)
179 rev)) 179 ;; If parent does not match, the best we can do without
180 (external 180 ;; calling external commands is to use the dirstate rev.
181 (emacs-bzr-version-bzr dir))))))) 181 rev))
182 (external
183 (emacs-bzr-version-bzr dir))))))
184 ;; Git case
185 (when (file-directory-p (expand-file-name ".git" dir))
186 (message "Waiting for git...")
187 (with-temp-buffer
188 (if (zerop
189 (call-process "git" nil '(t nil) nil "log"
190 "-1"
191 "--pretty=format:%N"))
192 (replace-regexp-in-string "\n" "" (buffer-string)))))
193 ))
182 194
183;; We put version info into the executable in the form that `ident' uses. 195;; We put version info into the executable in the form that `ident' uses.
184(purecopy (concat "\n$Id: " (subst-char-in-string ?\n ?\s (emacs-version)) 196(purecopy (concat "\n$Id: " (subst-char-in-string ?\n ?\s (emacs-version))
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 551b973b016..5605fafb5e1 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,8 @@
12014-01-11 Claudio Bley <claudio.bley@googlemail.com>
2
3 * inc/sys/stat.h (_WSTAT_DEFINED): Define, to avoid compilation
4 failures when wchar.h is included.
5
12014-01-11 Fabrice Popineau <fabrice.popineau@supelec.fr> 62014-01-11 Fabrice Popineau <fabrice.popineau@supelec.fr>
2 7
3 * inc/ms-w32.h (pthread_sigmask): Undefine if defined, for MinGW64. 8 * inc/ms-w32.h (pthread_sigmask): Undefine if defined, for MinGW64.
diff --git a/nt/inc/sys/stat.h b/nt/inc/sys/stat.h
index d9a01ee112b..7dfe78a27c3 100644
--- a/nt/inc/sys/stat.h
+++ b/nt/inc/sys/stat.h
@@ -141,6 +141,13 @@ extern int w32_stat_get_owner_group;
141 141
142/* Prevent redefinition by other headers, e.g. wchar.h. */ 142/* Prevent redefinition by other headers, e.g. wchar.h. */
143#define _STAT_DEFINED 143#define _STAT_DEFINED
144/* This prevents definition in MinGW's wchar.h of inline functions
145 that use struct _stat64i32 etc., which we don't define and don't
146 support in our implementation of 'stat' and 'fstat'. If we don't
147 prevent definition of those inline functions, any program (e.g.,
148 test programs run by configure) that includes both wchar.h and
149 sys/stat.h will fail to compile. */
150#define _WSTAT_DEFINED
144 151
145int __cdecl __MINGW_NOTHROW fstat (int, struct stat*); 152int __cdecl __MINGW_NOTHROW fstat (int, struct stat*);
146int __cdecl __MINGW_NOTHROW stat (const char*, struct stat*); 153int __cdecl __MINGW_NOTHROW stat (const char*, struct stat*);