summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2014-10-15 16:16:10 +0300
committerEli Zaretskii <eliz@gnu.org>2014-10-15 16:16:10 +0300
commitb8ec977659df3970a6c8afb7a5b79c9b61e08307 (patch)
tree58d317d79edc1406c8f50235062c86cb71ae18b5
parent48af58622bd07f37124a7b35f903b00de119f4a8 (diff)
parent73d4c39e1519a5fec742686e3c81941113d41448 (diff)
downloademacs-b8ec977659df3970a6c8afb7a5b79c9b61e08307.tar.gz
Merge from trunk.
-rw-r--r--INSTALL140
-rw-r--r--README5
-rw-r--r--admin/notes/exit-value28
-rw-r--r--admin/notes/iftc26
-rw-r--r--admin/notes/lel-TODO124
-rw-r--r--admin/notes/versioning26
-rw-r--r--admin/versioning49
-rw-r--r--etc/NXML-NEWS24
-rw-r--r--lisp/ChangeLog12
-rw-r--r--lisp/emacs-lisp/tabulated-list.el5
-rw-r--r--lisp/erc/ChangeLog9
-rw-r--r--lisp/erc/erc-track.el2
-rw-r--r--lisp/gnus/ChangeLog7
-rw-r--r--lisp/gnus/gnus-start.el33
-rw-r--r--lisp/progmodes/elisp-mode.el13
-rw-r--r--nextstep/INSTALL10
-rw-r--r--nextstep/README37
17 files changed, 148 insertions, 402 deletions
diff --git a/INSTALL b/INSTALL
index 4bda46cfbc0..8ecee65aaa5 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,5 @@
GNU Emacs Installation Guide
-Copyright (C) 1992, 1994, 1996-1997, 2000-2014 Free Software Foundation,
-Inc.
+Copyright (C) 1992, 1994, 1996-1997, 2000-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -34,9 +33,9 @@ some of the steps manually. The more detailed description in the other
sections of this guide will help you do that, so please refer to those
sections if you need to.
- 1. Unpacking the Emacs 24.1 release requires about 180 MB of free
- disk space. Building Emacs uses about another 70 MB of space.
- The final installed Emacs uses about 110 MB of disk space.
+ 1. Unpacking the Emacs 24 release requires about 200 MB of free
+ disk space. Building Emacs uses about another 200 MB of space.
+ The final installed Emacs uses about 150 MB of disk space.
This includes the space-saving that comes from automatically
compressing the Lisp source files on installation.
@@ -208,24 +207,11 @@ corresponding command is `yum-builddep emacs'.
DETAILED BUILDING AND INSTALLATION:
-(This is for a Unix or Unix-like system. For MS-DOS and MS Windows 3.X,
-see msdos/INSTALL. For later versions of MS Windows, see the file
-nt/INSTALL. For GNUstep and Mac OS X, see nextstep/INSTALL.)
-
-1) Make sure your system has enough swapping space allocated to handle
-a program whose pure code is 1.5 MB and whose data area is at
-least 2.8 MB and can reach 100 MB or more. If the swapping space is
-insufficient, you will get an error in the command `temacs -batch -l
-loadup dump', found in `./src/Makefile.in', or possibly when
-running the final dumped Emacs. (This should not be an issue
-on any recent system.)
-
-Building Emacs requires about 230 MB of disk space (including the
-Emacs sources). Once installed, Emacs occupies about 120 MB in the file
-system where it is installed; this includes the executable files, Lisp
-libraries, miscellaneous data files, and on-line documentation. If
-the building and installation take place in different directories,
-then the installation procedure momentarily requires 230+120 MB.
+(This is for a Unix or Unix-like system. For GNUstep and Mac OS X,
+see nextstep/INSTALL. For non-ancient versions of MS Windows, see
+the file nt/INSTALL. For MS-DOS and MS Windows 3.X, see msdos/INSTALL.)
+
+1) See the basic installation summary above for the disk space requirements.
2) In the unlikely event that `configure' does not detect your system
type correctly, consult `./etc/MACHINES' to see what --host, --build
@@ -264,8 +250,7 @@ Gtk or Motif, if you have the Xaw3d library installed (see
"Image support libraries" above for Xaw3d availability).
You can tell configure where to search for GTK by giving it the
-argument PKG_CONFIG='/full/name/of/pkg-config'. GTK version 2.6 or
-newer is required for Emacs.
+argument PKG_CONFIG='/full/name/of/pkg-config'.
Emacs will autolaunch a D-Bus session bus, when the environment
variable DISPLAY is set, but no session bus is running. This might be
@@ -374,8 +359,7 @@ without sound support.
`configure' doesn't do any compilation or installation itself.
It just creates the files that influence those things:
`./Makefile' in the top-level directory and several subdirectories;
-and `./src/config.h'. For details on exactly what it does, see the
-section called `CONFIGURATION BY HAND', below.
+and `./src/config.h'.
When it is done, `configure' prints a description of what it did and
creates a shell script `config.status' which, when run, recreates the
@@ -430,11 +414,6 @@ those libraries are. For example:
./configure \
PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig'
-The work of `configure' can be done by editing various files in the
-distribution, but using `configure' is easier. See the section called
-"CONFIGURATION BY HAND" below if you want to do the configuration
-yourself.
-
3b) To build in a separate directory, go to that directory
and run the program `configure' as follows:
@@ -444,9 +423,6 @@ SOURCE-DIR refers to the top-level Emacs source directory which is
where Emacs's configure script is located. `configure' looks for the
Emacs source code in the directory that `configure' is in.
-(Do not try to build in a separate directory by creating many links to
-the real source directory--there is no need, and installation will fail.)
-
4) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
Lisp code you want Emacs to load before it is dumped out. Use
site-load.el for additional libraries if you arrange for their
@@ -559,11 +535,7 @@ to enable it to write the lock files. We believe this is safe.
9) You are done! You can remove executables and object files from
the build directory by typing `make clean'. To also remove the files
that `configure' created (so you can compile Emacs for a different
-configuration), type `make distclean'. If you don't need some, or all
-of the input methods from the Leim package, you can remove the
-unneeded files in the leim subdirectories of your site's lisp
-directory (usually /usr/local/share/emacs/VERSION/).
-
+configuration), type `make distclean'.
MAKE VARIABLES
@@ -671,94 +643,6 @@ Makefiles for the subdirectories, so you don't have to specify them
when running make in the subdirectories.
-CONFIGURATION BY HAND
-
-This should not be necessary and is not recommended. Instead of
-running the `configure' program, you have to perform the following steps.
-
-1) Copy `./src/config.in' to `./src/config.h'.
-
-2) Edit `./src/config.h' to set the right options for your system.
-
-3) Create `Makefile' files in various directories from the
-corresponding `Makefile.in' files. This isn't so hard, just a matter
-of editing in appropriate substitutions for the @...@ constructs.
-
-The `configure' script is built from `configure.ac' by the
-`autogen.sh' script, which checks that `autoconf' and other build
-tools are sufficiently up to date and then runs the build tools.
-
-BUILDING GNU EMACS BY HAND
-
-Once Emacs is configured, running `make' in the top directory performs
-the following steps.
-
-1) Run `make epaths-force' in the top directory. This produces
-`./src/epaths.h' from the template file `./src/epaths.in', changing
-the paths to the values specified in `./Makefile'.
-
-2) Go to directory `./lib' and run `make'. This creates include files
-and libraries used in later steps.
-
-3) Go to directory `./lib-src' and run `make'. This creates
-executables named `etags', `make-docfile', and others.
-
-4) Go to directory `./src' and run `make'. This refers to files in
-the `./lisp', `./lib', and `./lib-src' subdirectories using names
-`../lisp', `../lib', and `../lib-src'.
-
-This creates a file `./src/emacs' which is the runnable Emacs,
-which has another name that contains a version number.
-Each time you do this, that version number increments in the last place.
-
-It also creates a file in `./etc' whose name is `DOC' followed by the
-current Emacs version. This file contains documentation strings for
-all the functions in Emacs. Each time you run make to make a new
-emacs, a new DOC file with a new name is made. You must keep the DOC
-file for an Emacs version as long as you keep using that Emacs version.
-
-
-INSTALLATION BY HAND
-
-The steps below are done by running `make install' in the main
-directory of the Emacs distribution.
-
-1) Copy `./lisp' and its subdirectories, `./etc', and the executables
-in `./lib-src' to their final destinations, as selected in `./src/epaths.h'.
-
-Strictly speaking, not all of the executables in `./lib-src' need be copied.
-- The programs `hexl', `movemail', `profile', and `rcs2log'
- are used by Emacs; they do need to be copied.
-- The programs `etags', `ctags', and `emacsclient' are intended to be
- run by users; they are handled below.
-- The program `make-docfile' was used in building Emacs, and is
- not needed any more.
-
-2) Copy the files in `./info' to the place specified in
-`./lisp/site-init.el' or `./lisp/info.el'. Note that if the
-destination directory already contains a file named `dir', you
-probably don't want to replace it with the `dir' file in the Emacs
-distribution. Instead, you should make sure that the existing `dir'
-file contains an appropriate menu entry for the Emacs info.
-
-3) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
-in users' search paths. `./src/emacs' has an alternate name
-`./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
-`/usr/local/bin/emacs' pointing to that alternate name, as an easy way
-of installing different versions.
-
-You can delete `./src/temacs'.
-
-4) Copy the programs `emacsclient', `ctags', and `etags' from `./lib-src'
-to `/usr/local/bin'. These programs are intended for users to run.
-
-5) Copy the man pages in `./doc/man' into the appropriate man directory.
-
-6) The files in the `./src' subdirectory, except for `emacs', are not
-used by Emacs once it is built. However, it is very desirable to keep
-the source on line for debugging.
-
-
PROBLEMS
See the file `./etc/PROBLEMS' for a list of various problems sometimes
diff --git a/README b/README
index 6c83c75bee3..ad412c4fb86 100644
--- a/README
+++ b/README
@@ -39,10 +39,7 @@ process of building and installing Emacs. See INSTALL for more
detailed information.
The file `configure.ac' is the input used by the autoconf program to
-construct the `configure' script. Since Emacs has some configuration
-requirements that autoconf can't meet directly, and for historical
-reasons, `configure.ac' uses an unholy marriage of custom-baked
-configuration code and autoconf macros.
+construct the `configure' script.
The shell script `autogen.sh' generates 'configure' and other files by
running the GNU build tools autoconf and automake, which in turn use
diff --git a/admin/notes/exit-value b/admin/notes/exit-value
deleted file mode 100644
index 96337e4c8dd..00000000000
--- a/admin/notes/exit-value
+++ /dev/null
@@ -1,28 +0,0 @@
-ttn 2004-05-09
-
-The exit value of a program returning to the shell on unixoid systems
-is typically 0 for success, and non-0 (such as 1) for failure. This is
-not always the case on other systems.
-
-From the point of view of the program stdlib.h provides macros
-`EXIT_SUCCESS' and `EXIT_FAILURE' that should DTRT. N.B. The
-numerical values of these macros DO NOT need to fulfill the exit value
-requirements outlined in the first paragraph! That is the job of the
-`exit' function. Thus, this kind of construct shows misunderstanding:
-
- #ifdef WEIRD_OS
- exit (1);
- #else
- exit (0);
- #endif
-
-Values aside from EXIT_SUCCESS and EXIT_FAILURE are tricky, but can be
-used to indicate finer gradations of failure. If this is the only
-information available to the caller, clamping such values to
-EXIT_FAILURE loses information. If there are other ways to indicate
-the problem to the caller (such as a message to stderr) it may be ok
-to clamp. In all cases, it is the relationship between the program
-and its caller that must be examined.
-
-[Insert ZAMM quote here.] <-- I presume this refers to ``Zen and the
-Art of Motorcycle Maintenance'' - Reuben Thomas <rrt@sc3d.org>.
diff --git a/admin/notes/iftc b/admin/notes/iftc
deleted file mode 100644
index 983b1486685..00000000000
--- a/admin/notes/iftc
+++ /dev/null
@@ -1,26 +0,0 @@
-Iso-Functional Type Contour
-
-
-This is a term coined to describe "column int->float" change approach, and can
-be used whenever low-level types need to change (hopefully not often!) but the
-meanings of the values (whose type has changed) do not.
-
-The premise is that changing a low-level type potentially means lots of code
-needs to be changed as well, and the question is how to do this incrementally,
-which is the preferred way to change things.
-
-Say LOW and HIGH are C functions:
-
- int LOW (void) { return 1; }
- void HIGH (void) { int value = LOW (); }
-
-We want to convert LOW to return float, so we cast HIGH usage:
-
- float LOW (void) { return 1.0; }
- void HIGH (void) { int value = (int) LOW (); } /* iftc */
-
-The comment /* iftc */ is used to mark this type of casting to differentiate
-it from other casting. We commit the changes and can now go about modifying
-LOW and HIGH separately. When HIGH is ready to handle the type change, the
-cast can be removed.
-
diff --git a/admin/notes/lel-TODO b/admin/notes/lel-TODO
deleted file mode 100644
index 4a4ccb5e6e8..00000000000
--- a/admin/notes/lel-TODO
+++ /dev/null
@@ -1,124 +0,0 @@
-Some lisp/emacs-lisp/ Features and Where They Are Documented
-
-Copyright (C) 2007-2014 Free Software Foundation, Inc.
-See the end of the file for license conditions.
-
-
-* Status Key
- - -- as yet unknown
- n/a -- not applicable (internal, uninteresting, etc)
- obsolete -- an obsolete feature, to be removed in future
- todo -- not documented but should be
- NODE -- documented in or under info node NODE
-
-
-* Features
- advice (elisp) Advising Functions
- advice-preload n/a
- assoc -
- authors -
- autoload (elisp) Autoload
- avl-tree -
- backquote n/a
- benchmark n/a
- bindat (elisp) Byte Packing
- byte-compile (elisp) Byte Compilation
- byte-opt -
- bytecomp (elisp) Compilation Functions
- checkdoc (elisp) Documentation Tips
- cl (cl)
- cl-compat n/a
- cl-specs n/a
- copyright -
- crm -
- cust-print (elisp) Printing in Edebug
- debug (elisp) Debugger
- derived (elisp) Derived Modes
- disass (elisp) Disassembly
- easy-mmode (elisp) Defining Minor Modes
- easymenu -
- edebug (elisp) Edebug
- eldoc -
- elint -
- elp n/a
- ewoc (elisp) Separated Rendering
- find-func -
- find-gc -
- generic (elisp) Generic Modes
- gulp n/a
- helper -
- levents obsolete
- lisp-float-type -
- lisp-mnt -
- lisp-mode n/a
- lmenu obsolete
- lucid obsolete
- macroexp (elisp) Expansion
- pp (emacs) Program Indent
- re-builder -
- regexp-opt (elisp) Regexp Functions
- regi -
- ring (elisp) Rings
- rx -
- shadow -
- sregex obsolete
- syntax (elisp) Position Parse
- testcover -
- timer (elisp) Timers
- tq (elisp) Transaction Queues
- trace -
- unsafep (elisp) Function Safety
- warnings (elisp) Warnings
-
-
-* Above list created using default directory lisp/emacs-lisp/ with
- (shell-command
- "sed '/^(provide '\\''/!d;s// /;s/).*//' *.el | sort | uniq")
-
-
-* How to use this file to improve Emacs
- (loop
- (let* ((feature (choose-one Features))
- (status (feature-status feature)))
- (if (or (eq '- status) (not (verify status)))
- (update feature (current-docs feature))
- (case status
- (todo (let (doc patch feedback)
- (while (not (grok feature))
- (or (play-with feature)
- (grep feature Internet)
- (grep feature (wisdom-maybe "emacs-devel"))))
- (setq doc (write-documentation feature)
- patch (diff (current-docs) doc))
- (while (not (and (correct doc)
- (well-placed doc)
- (well-formed patch)))
- (setq doc (revise doc)
- patch (diff (current-docs) doc))
- feedback (wisdom-maybe "emacs-devel" patch))
- (when (install patch)
- (when (update feature (current-docs feature))
- (job-well-done user-login-name)))))
- (n/a (job-well-done user-login-name))))))
-
-
-* Etc
-
-This file is part of GNU Emacs.
-
-GNU Emacs is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-GNU Emacs is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
- Local variables:
- mode: outline
- End:
diff --git a/admin/notes/versioning b/admin/notes/versioning
new file mode 100644
index 00000000000..e422b22e432
--- /dev/null
+++ b/admin/notes/versioning
@@ -0,0 +1,26 @@
+GNU EMACS VERSIONING -*- org -*-
+
+Ref: http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00872.html
+
+Emacs version numbers have the form
+
+ major.minor[.devel].build
+
+"build" increments each time Emacs is built in the same location
+(without cleaning) and isn't really part of the version.
+
+bugfix releases increase "minor" by 1.
+non-bugfix releases increase "major" by 1, and reset "minor" to 1.
+(The division between bugfix and non-bugfix has not always been clear
+historically.)
+
+Unreleased (development) versions have an extra "devel" component.
+This is a fairly meaningless number that may be unchanged for a long time.
+It is normally 50.
+When the release process starts, it changes to 90, 91, ...
+When the actual release is made, this component is removed.
+
+The development version for a new major release has "minor" = 0.
+The development version for a new minor release has "minor" = that of
+the previous release.
+
diff --git a/admin/versioning b/admin/versioning
deleted file mode 100644
index da547ee94ca..00000000000
--- a/admin/versioning
+++ /dev/null
@@ -1,49 +0,0 @@
-GNU EMACS VERSIONING -*- org -*-
-
-The version number scheme of Emacs, including how to determine when to
-bump various components of the version number, has evolved over the
-years. This file defines the current method, explains why it was
-chosen, and lightly documents the previous schemes. It was prompted
-by http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00872.html.
-
-Related info:
-- [[file:FOR-RELEASE][FOR-RELEASE]]
-- [[file:make-tarball.txt][make-tarball.txt]]
-
-* what: MAJOR.MINOR
-
-This has always been the case (see [[was]], below). MINOR is 1 or more,
-usually, the exception being for pretest releases, where there is
-an additional trailing ".ALPHA" (e.g., 24.3.95 prior to 24.4).
-
-To determine any release's version, we follow this algorithm:
-
-- If MAJOR-CHANGES, increment MAJOR and set MINOR to 1.
-- Otherwise, increment MINOR.
-
-where MAJOR-CHANGES is defined roughly as the union of:
-
-- dropped support for IMPORTANT
- - platforms (almost never happens)
- - Emacs Lisp features
- - non-programming features/packages
-- IMPORTANT additions and changes
- - Emacs Lisp features
- - non-programming features/packages
-
-and IMPORTANT is defined through discussion on the [[http://mail.gnu.org/archive/html/emacs-devel/][emacs-devel]]
-mailing list and/or private arm-twisting (although this latter
-method is somewhat discouraged :-D).
-
-* why
-
-People expect bumps in MINOR for "minor" changes. This typically
-includes bugfixes, doc improvements, or fully-backward-compatible
-additions and changes, only.
-
-Anything else is actually IMPORTANT, to the user. [Actually, who
-really knows what the user thinks? I certainly don't. --ttn]
-
-* was
-
-TODO (be sure to include "ad-hoc" :-D)
diff --git a/etc/NXML-NEWS b/etc/NXML-NEWS
index ab0d351096d..8a284e2617b 100644
--- a/etc/NXML-NEWS
+++ b/etc/NXML-NEWS
@@ -1,3 +1,10 @@
+Copyright (C) 2007-2014 Free Software Foundation, Inc.
+See the end of the file for license conditions.
+
+
+For more recent changes, see the main Emacs NEWS file.
+
+
20041004
--------
@@ -197,3 +204,20 @@ Bug fixes.
--------
Initial release.
+
+
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 055ec17160e..80157c67704 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,15 @@
+2014-10-15 Eli Zaretskii <eliz@gnu.org>
+
+ * emacs-lisp/tabulated-list.el (tabulated-list-mode): Force
+ bidi-paragraph-direction to 'left-to-right'. This fixes
+ buffer-menu display when the first buffer happens to start with
+ R2L letter.
+
+2014-10-15 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/elisp-mode.el (elisp--local-variables-1):
+ Handle quoted expressions (bug#18688).
+
2014-10-14 Jérémy Compostella <jeremy.compostella@intel.com>
Michael Albinus <michael.albinus@gmx.de>
diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el
index 3ee261aa06b..1e613c7fd4e 100644
--- a/lisp/emacs-lisp/tabulated-list.el
+++ b/lisp/emacs-lisp/tabulated-list.el
@@ -519,7 +519,10 @@ as the ewoc pretty-printer."
(setq-local buffer-read-only t)
(setq-local buffer-undo-list t)
(setq-local revert-buffer-function #'tabulated-list-revert)
- (setq-local glyphless-char-display tabulated-list-glyphless-char-display))
+ (setq-local glyphless-char-display tabulated-list-glyphless-char-display)
+ ;; Avoid messing up the entries' display just because the first
+ ;; column of the first entry happens to begin with a R2L letter.
+ (setq bidi-paragraph-direction 'left-to-right))
(put 'tabulated-list-mode 'mode-class 'special)
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 0833bda4cb1..c12f289ce0f 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,8 @@
+2014-10-15 Ivan Shmakov <ivan@siamics.net>
+
+ * erc-track.el (erc-modified-channels-display): Update mode line
+ more frequently (bug#18510).
+
2014-10-10 Kelvin White <kwhite@gnu.org>
* erc.el (erc-initialize-log-marker): Only initialize
@@ -434,9 +439,9 @@
2011-11-28 Mike Kazantsev <mk.fraggod@gmail.com> (tiny change)
- * erc-dcc.el (erc-dcc-ctcp-query-send-regexp): Updated regexp to
+ * erc-dcc.el (erc-dcc-ctcp-query-send-regexp): Update regexp to
match quoted filenames with spaces inside.
- (erc-dcc-handle-ctcp-send): Updated regexp match group numbers,
+ (erc-dcc-handle-ctcp-send): Update regexp match group numbers,
added processing of escaped quotes and backslashes if filename
itself was in quotes.
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 706cce2fefe..47e76c3ea1e 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -860,7 +860,7 @@ Use `erc-make-mode-line-buffer-name' to create buttons."
faces (cdr faces)))
strings)))
(newobject (erc-modified-channels-object strings)))
- (unless (equal oldobject newobject)
+ (unless (equal-including-properties oldobject newobject)
(setq erc-modified-channels-object newobject)
(force-mode-line-update t)))))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 6c59200dfa6..30eda3d2bf0 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,10 @@
+2014-10-14 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-start.el (gnus-save-newsrc-file-check-timestamp): New option to
+ check the newsrc.eld file's timestamp before saving it.
+ (gnus-save-newsrc-file): Use it, with a prompt when the newsrc.eld
+ timestamp has changed to be newer.
+
2014-10-06 Jan Tatarik <jan.tatarik@gmail.com>
* gnus-icalendar.el (gnus-icalendar-identities):
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 766e7c26ac4..5b734d0ae77 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -442,6 +442,14 @@ See also `gnus-before-startup-hook'."
:group 'gnus-newsrc
:type 'hook)
+(defcustom gnus-save-newsrc-file-check-timestamp nil
+ "Check the modification time of the newsrc.eld file before saving it.
+When the newsrc.eld file is updated by multiple machines,
+checking the file's modification time is a good way to avoid
+overwriting updated data."
+ :group 'gnus-newsrc
+ :type 'boolean)
+
(defcustom gnus-save-newsrc-hook nil
"A hook called before saving any of the newsrc files."
:group 'gnus-newsrc
@@ -2783,6 +2791,7 @@ If FORCE is non-nil, the .newsrc file is read."
'msdos-long-file-names
(lambda () t))))
+(defvar gnus-save-newsrc-file-last-timestamp nil)
(defun gnus-save-newsrc-file (&optional force)
"Save .newsrc file."
;; Note: We cannot save .newsrc file if all newsgroups are removed
@@ -2821,12 +2830,30 @@ If FORCE is non-nil, the .newsrc file is read."
(erase-buffer)
(gnus-message 5 "Saving %s.eld..." gnus-current-startup-file)
+ ;; check timestamp of `gnus-current-startup-file'.eld against
+ ;; `gnus-save-newsrc-file-last-timestamp'
+ (when gnus-save-newsrc-file-check-timestamp
+ (let* ((checkfile (concat gnus-current-startup-file ".eld"))
+ (mtime (nth 5 (file-attributes checkfile))))
+ (when (and gnus-save-newsrc-file-last-timestamp
+ (time-less-p gnus-save-newsrc-file-last-timestamp
+ mtime))
+ (unless (y-or-n-p
+ (format "%s was updated externally after %s, save?"
+ checkfile
+ (format-time-string
+ "%c"
+ gnus-save-newsrc-file-last-timestamp)))
+ (error "Couldn't save %s: updated externally" checkfile)))))
+
(if gnus-save-startup-file-via-temp-buffer
(let ((coding-system-for-write gnus-ding-file-coding-system)
(standard-output (current-buffer)))
(gnus-gnus-to-quick-newsrc-format)
(gnus-run-hooks 'gnus-save-quick-newsrc-hook)
- (save-buffer))
+ (save-buffer)
+ (setq gnus-save-newsrc-file-last-timestamp
+ (nth 5 (file-attributes buffer-file-name))))
(let ((coding-system-for-write gnus-ding-file-coding-system)
(version-control gnus-backup-startup-file)
(startup-file (concat gnus-current-startup-file ".eld"))
@@ -2861,7 +2888,9 @@ If FORCE is non-nil, the .newsrc file is read."
;; Replace the existing startup file with the temp file.
(rename-file working-file startup-file t)
- (gnus-set-file-modes startup-file setmodes)))
+ (gnus-set-file-modes startup-file setmodes)
+ (setq gnus-save-newsrc-file-last-timestamp
+ (nth 5 (file-attributes startup-file)))))
(condition-case nil
(delete-file working-file)
(file-error nil)))))
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index f3143bd76ee..900e859b54a 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -255,18 +255,27 @@ Blank lines separate paragraphs. Semicolons start comments.
(dolist (binding bindings)
(push (or (car-safe binding) binding) vars))
(elisp--local-variables-1 vars (car (last body)))))
- (`(lambda ,_) (setq sexp nil))
+ (`(lambda ,_args)
+ ;; FIXME: Look for the witness inside `args'.
+ (setq sexp nil))
(`(lambda ,args . ,body)
(elisp--local-variables-1
- (append args vars) (car (last body))))
+ (append (remq '&optional (remq '&rest args)) vars)
+ (car (last body))))
(`(condition-case ,_ ,e) (elisp--local-variables-1 vars e))
(`(condition-case ,v ,_ . ,catches)
(elisp--local-variables-1
(cons v vars) (cdr (car (last catches)))))
+ (`(quote . ,_)
+ ;; FIXME: Look for the witness inside sexp.
+ (setq sexp nil))
+ ;; FIXME: Handle `cond'.
(`(,_ . ,_)
(elisp--local-variables-1 vars (car (last sexp))))
(`elisp--witness--lisp (or vars '(nil)))
(_ nil)))
+ ;; We didn't find the witness in the last element so we try to
+ ;; backtrack to the last-but-one.
(setq sexp (ignore-errors (butlast sexp)))))
res))
diff --git a/nextstep/INSTALL b/nextstep/INSTALL
index 63f52efdca9..76cc01c5831 100644
--- a/nextstep/INSTALL
+++ b/nextstep/INSTALL
@@ -2,6 +2,16 @@ Copyright (C) 2008-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
+Requirements
+------------
+Mac OS X 10.6 or later
+
+- or -
+
+GNUstep "Startup 0.23" or later
+Tested on GNU/Linux, may work on other systems.
+
+
Compilation
-----------
diff --git a/nextstep/README b/nextstep/README
index 07f0d897e13..45b9b23ee10 100644
--- a/nextstep/README
+++ b/nextstep/README
@@ -1,37 +1,4 @@
-Copyright (C) 2008-2014 Free Software Foundation, Inc.
-See the end of the file for license conditions.
-
-This directory contains the files needed to build Emacs on
-Nextstep-based platforms, including GNUstep and Mac OS X.
-
-The Nextstep support code works on many POSIX systems (and possibly
-W32) using the GNUstep libraries, and on MacOS X systems using the
-Cocoa libraries.
+This directory contains files needed to build Emacs on Nextstep-based
+platforms, including GNUstep and Mac OS X (using the Cocoa libraries).
See the INSTALL file in this directory for compilation instructions.
-
-Requirements
-------------
-Mac OS X 10.6 or later
-
-- or -
-
-GNUstep "Startup 0.23" or later
-Tested on GNU/Linux, should work on other systems, perhaps with minor
-build tweaking.
-
-
-This file is part of GNU Emacs.
-
-GNU Emacs is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-GNU Emacs is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.