Alan Mackenzie [Mon, 18 Jan 2016 13:32:22 +0000 (13:32 +0000)]
Desktop: protect users against inadvertant upgrading of desktop file.
An upgraded (version 208) desktop file cannot be read in Emacs < 25.
* etc/NEWS: Add an entry about upgrading a desktop file.
* lisp/desktop.el (desktop-file-version): Amend doc string.
(desktop-native-file-version, desktop-io-file-version): new variables.
(desktop-clear): Set desktop-io-file-version to nil.
(desktop-buffer-info): make the presence of the last item on the list
conditional on (>= desktop-io-file-version 208).
(desktop-save): Add extra parameter VERSION to take user's C-u or C-u C-u.
Amend the doc string. Add code to determine the output file version.
(desktop-create-buffer): Set desktop-io-file-version to the input file's
version.
Paul Eggert [Mon, 18 Jan 2016 01:16:12 +0000 (17:16 -0800)]
Initialize GnuTLS before calling gnutls_rnd
* src/gnutls.c (emacs_gnutls_global_init): Now extern.
Don’t set gnutls_global_initialized if gnutls_global_init fails.
* src/sysdep.c: Include "gnutls.h", and <gnutls/crypto.h>
if 2.12 or later, which has gnutls_rnd.
(emacs_gnutls_global_init, gnutls_rnd): New fallback
placeholder macros if before 2.12.
(init_random): Initialize gnutls globals before trying to
use gnutls_rnd.
Paul Eggert [Sun, 17 Jan 2016 22:10:26 +0000 (14:10 -0800)]
Port cleanup attribute to OpenBSD
The OpenBSD C compiler issues false alarms about strcpy, strcat, and
sprintf, and this messes up 'configure' when it tests for the cleanup
attribute. Work around the problem by using __has_attribute directly.
Problem reported by Joakim Jalap (Bug#22385).
* configure.ac: Don’t use AX_GCC_VAR_ATTRIBUTE.
* m4/ax_gcc_var_attribute.m4: Remove.
* src/conf_post.h (__has_attribute): Provide a substitute, for
non-GCC or older GCC compilers. All uses changed to assume
the substitute. Check for the cleanup attribute.
* src/emacs-module.c (module_has_cleanup): Just use __has_attribute.
Paul Eggert [Sun, 17 Jan 2016 20:12:08 +0000 (12:12 -0800)]
Prefer GnuTLS when acquiring random seed
This attempts to improve on the fix for Bug#22202.
* configure.ac (HAVE_DEV_URANDOM): Remove.
Check /dev/urandom existence at run time, not at build time,
since the device could exist in the former but not the latter.
* src/sysdep.c [HAVE_GNUTLS]: Include gnutls/gnutls.h.
(gnutls_rnd) [GNUTLS_VERSION_NUMBER < 0x020c00]: New fallback macro.
(random_seed): New typedef.
(set_random_seed): New static function.
(seed_random): Use them.
(init_random): Use random_seed instead of uintmax_t, so as to
not consume more entropy than needed. Prefer gnutls_rnd if it
works; this avoids a redundant open of /dev/urandom on
GNU/Linux with modern GnuTLS.
Eli Zaretskii [Sat, 16 Jan 2016 15:30:11 +0000 (17:30 +0200)]
Improve documentation of dynamic modules
* doc/lispref/loading.texi (How Programs Do Loading): Update the
description of searching for files in 'load' when Emacs was built
with support for dynamic modules.
Eli Zaretskii [Sat, 16 Jan 2016 13:56:50 +0000 (15:56 +0200)]
Document renaming of selection-related functions
* doc/lispref/frames.texi (Window System Selections): Rename "x-*"
functions into the corresponding "gui-*" functions. Make the
description slightly less X-centric.
Fix incompatbilities with MS-Windows 2000 and older
* src/w32.c <multiByteToWideCharFlags>: New global variable.
(filename_to_utf16, filename_from_ansi, check_windows_init_file):
Use it instead of the literal MB_ERR_INVALID_CHARS.
(maybe_load_unicows_dll): Initialize multiByteToWideCharFlags as
appropriate for the underlying OS version. For details, see
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00835.html.
* src/w32.h: Declare multiByteToWideCharFlags.
* src/w32fns.c (Fx_file_dialog, Fw32_shell_execute)
(add_tray_notification): Use multiByteToWideCharFlags instead of
the literal MB_ERR_INVALID_CHARS.
(_resetstkoflw_proc): New typedef.
(w32_reset_stack_overflow_guard): Call _resetstkoflw via a
pointer, as this function is absent in msvcrt.dll shipped with W2K
and older systems.
Eli Zaretskii [Sat, 16 Jan 2016 09:23:42 +0000 (11:23 +0200)]
Mention in PROBLEMS an issue with MS-Windows NT4
* etc/PROBLEMS (MS-Windows): Mention the problem with Shell32.dll
on Windows NT4. For the details, see
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00835.html.
Ensure 8-byte aligned memory allocation on MS-Windows 9X
* src/w32heap.c (init_heap): Redirect malloc, realloc, and free to
special functions on Windows 9X. Refuse to dump Emacs on Windows 9X.
(malloc_after_dump_9x, realloc_after_dump_9x)
(free_after_dump_9x): New functions. (Bug#22379) See also
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00852.html
for more details about the original problem.
Eli Zaretskii [Sat, 16 Jan 2016 07:55:00 +0000 (09:55 +0200)]
Fix tests for active region in hideif.el
* lisp/progmodes/hideif.el (hif-evaluate-macro, hide-ifdef-block): Use
'use-region-p' to test whether to operate on region, instead of
testing 'mark-active'.
Eli Zaretskii [Sat, 16 Jan 2016 07:40:12 +0000 (09:40 +0200)]
Fix interactive specs in some hideif.el commands
* lisp/progmodes/hideif.el (hif-evaluate-macro)
(hide-ifdef-undef, show-ifdef-block): Don't use '(interactive "r")'
in commands that should only act on the region if it's active.
Eli Zaretskii [Fri, 15 Jan 2016 09:47:55 +0000 (11:47 +0200)]
Make 'random' seeds cryptographically secure if possible
* configure.ac: Check for "/dev/urandom".
* src/sysdep.c (init_random) [HAVE_DEV_URANDOM]: Read the stream
for the seed from "/dev/urandom".
[WINDOWSNT]: Obtain the stream for the seed from w32 APIs.
* src/fns.c (Frandom): Update the doc string to indicate that
system entropy is used when available.
* src/w32.c: Include wincrypt.h.
(w32_init_crypt_random, w32_init_random): New functions, use the
CryptGenRandom API.
(globals_of_w32): Initialize w32_crypto_hprov handle to zero.
* src/w32.h (w32_init_random): Add prototype.
* doc/lispref/numbers.texi (Random Numbers): Document more details
about 't' as the argument to 'random'.
* etc/NEWS: Mention that '(random t)' now uses a cryptographically
strong seed if possible.
Simen Heggestøyl [Thu, 14 Jan 2016 18:24:03 +0000 (19:24 +0100)]
Disallow parenthesis in non-pseudo CSS selectors
* lisp/textmodes/css-mode.el (css--font-lock-keywords): Disallow
parenthesis in selectors except for in the function notation that
might appear right after a pseudo-class.
* test/indent/scss-mode.scss: Add a test for it.
Eli Zaretskii [Wed, 13 Jan 2016 19:14:22 +0000 (21:14 +0200)]
Document obsoletion of 'intangible' and 'point-entered/left'
* doc/lispref/text.texi (Special Properties): Document the new
properties 'cursor-intangible' and 'cursor-sensor-functions'.
Document the obsolete status of 'intangible', 'pointer-left',
and 'point-entered' properties, and of 'inhibit-point-motion-hooks'.
* doc/lispref/display.texi (Overlay Properties): Document that
'intangible' overlay property is obsolete.
Paul Eggert [Tue, 12 Jan 2016 21:04:17 +0000 (13:04 -0800)]
Merge from gnulib
This mostly just changes "UTC" to "UTC0" for POSIX conformance.
It also updates to the latest version of texinfo.tex.
* build-aux/gitlog-to-changelog, build-aux/move-if-change:
* build-aux/update-copyright, doc/misc/texinfo.tex:
Update from gnulib.
Paul Eggert [Tue, 12 Jan 2016 17:09:27 +0000 (09:09 -0800)]
Fix time-stamp-time-zone bugs introduced in July
This fixes a bug introduced when the July changes to
format-time-string installed, as the changes were not
correctly handled in this module (Bug#22302).
Also, document time stamp time zones.
* lisp/time-stamp.el (time-stamp-time-zone): Document values better.
(time-stamp--format): New private function.
(time-stamp-string, time-stamp-string-preprocess)
(time-stamp-do-number): Use it.
* doc/emacs/files.texi (Time Stamps): Mention time zones.
* doc/misc/autotype.texi (Timestamps): Document time-stamp-time-zone.
Eli Zaretskii [Tue, 12 Jan 2016 16:41:58 +0000 (18:41 +0200)]
Make piping to subprocesses more robust on MS-Windows
* src/w32.c (sys_write): Don't write to a pipe more stuff than its
buffer can hold. Don't return -1 if something has been written to
the pipe. Zero out 'errno' before calling '_write', to avoid
returning a stale value. (Bug#22344)
* src/w32proc.c (syms_of_ntproc) <w32-pipe-buffer-size>: New variable.
* src/w32.c (pipe2): Use it to request a user-defined size for the
pipe being created.
Alan Mackenzie [Mon, 11 Jan 2016 17:46:04 +0000 (17:46 +0000)]
Java Mode: Fontify identifiers in the presence of annotations.
* lisp/progmodes/cc-engine.el (c-forward-annotation): Tidy up the coding:
Don't move point when the defun fails.
(c-forward-decl-or-cast-1): Correct a usage of match data.
* lisp/progmodes/cc-fonts.el (c-font-lock-maybe-decl-faces): Remove.
(c-font-lock-declarations): Use the new c-maybe-decl-faces in place of the
removed variable.
* lisp/progmodes/cc-langs.el (c-maybe-decl-faces): New language variable.
Eli Zaretskii [Mon, 11 Jan 2016 16:05:40 +0000 (18:05 +0200)]
Avoid an infloop when we run out of memory
* src/alloc.c (garbage_collect_1): Don't bother saving and
restoring the echo-area message if we are GC'ing after running out
of memory. This avoids an infloop due to repeated attempts to
allocate memory for the cons cell needed to save the message,
which signals the memory-full error, which attempts to save the
echo-area message, which signals memory-full again, etc.
Eli Zaretskii [Mon, 11 Jan 2016 16:00:13 +0000 (18:00 +0200)]
Avoid unnecessary failures of auto-saving after fatal error
* src/w32.c (map_w32_filename): Avoid non-trivial system calls for
the benefit of FAT volumes if we are called as part of shutting
down due to a fatal error, which probably means we are trying to
auto-save the session.
* src/lread.c (check_obarray): Don't bother making the obarray
valid if we are shutting down due to a fatal error. This avoids
interfering with auto-saving the crashed session.
Paul Eggert [Mon, 11 Jan 2016 05:41:59 +0000 (21:41 -0800)]
Simplify HAVE_MODULES use in mark_maybe_pointer
* src/alloc.c (HAVE_MODULES): Now a constant 0 if not defined,
so that later code can use 'if' rather than '#ifdef'.
(mark_maybe_pointer): Simplify based on HAVE_MODULES now
always working.
Paul Eggert [Mon, 11 Jan 2016 05:39:55 +0000 (21:39 -0800)]
Revert attempt to use 'noexcept' in typedef
This use of 'noexcept' runs afoul of the C++11 standard.
Problem reported by Philipp Stephani in:
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00706.html
* src/emacs-module.c (emacs_finalizer_function):
Move this typedef here ...
* src/emacs-module.h: ... from here, and use only the C
version of the typedef. The typedef is now private since it
is never used in the .h file now and anyway it seemed to be
causing more confusion than it cured.
(make_user_ptr, get_user_finalizer, set_user_finalizer):
Open-code the type instead.
Eli Zaretskii [Sun, 10 Jan 2016 17:24:54 +0000 (19:24 +0200)]
Document new features if Eshell
* doc/misc/eshell.texi (Input/Output): Document the new
'#<bufname>' syntax.
(Input/Output): Document 'eshell-destroy-buffer-when-process-dies'.
Disable "Key Index" generation, as there are no @kindex entries in
this manual.
Michael Albinus [Sun, 10 Jan 2016 12:07:21 +0000 (13:07 +0100)]
Handle too long commands in Tramp
* lisp/net/tramp-sh.el (tramp-sh-handle-make-symbolic-link)
(tramp-do-file-attributes-with-ls): Send sequence of commands, in
order to not exceed shell command line limit.
* test/automated/tramp-tests.el (tramp--test-darwin-p): Remove.
(tramp--test-utf8): Include Arabic file name, again.
Dmitry Gutov [Sun, 10 Jan 2016 01:09:42 +0000 (04:09 +0300)]
Use short date for 'hg annotate', and output the author
* lisp/vc/vc-hg.el (vc-hg-annotate-command):
Change '-d' to '-dq'. (Bug#21805)
(vc-hg-annotate-switches): Default to "-u" "--follow".
(vc-hg-annotate-re): Update to recognize the short date format
and the optional username.
(vc-hg-annotate-time)
(vc-hg-annotate-extract-revision-at-line): Update accordingly.
Eli Zaretskii [Sat, 9 Jan 2016 19:12:46 +0000 (21:12 +0200)]
Document the user-level features of the Xref package
* doc/emacs/maintaining.texi (Maintaining): Add a list of
described features.
(Xref): New section, made out of thoroughly rewritten "Tags"
section.
(Find Identifiers, Looking Up Identifiers, Xref Commands)
(Identifier Search, List Identifiers): New subsections,
incorporating the old tags commands and the new xref commands.
(Tags Tables, Tag Syntax, Create Tags Table, Etags Regexps):
Section and subsections demoted to a lower level.
* doc/emacs/search.texi (Search):
* doc/emacs/windows.texi (Pop Up Window):
* doc/emacs/frames.texi (Creating Frames):
* doc/emacs/programs.texi (Imenu, Symbol Completion):
* doc/emacs/building.texi (Grep Searching):
* doc/emacs/dired.texi (Operating on Files):
* doc/emacs/glossary.texi (Glossary): All references to tags changed.
Alan Mackenzie [Sat, 9 Jan 2016 15:18:29 +0000 (15:18 +0000)]
Allow the use of `font-lock-extend-region-multiline' in CC Mode.
* lisp/progmodes/cc-mode.el (c-font-lock-init): Remove
`font-lock-extend-regions-wholelines' from
`font-lock-extend-region-functions' rather than setting the latter to
nil.
* lisp/net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
Set coding system to `utf-8-hfs' for Mac OS X.
* test/automated/tramp-tests.el (tramp-test29-vc-registered):
Flush directory properties when needed.
(tramp--test-utf8): Include Chinese file name, again.
Eli Zaretskii [Sat, 9 Jan 2016 08:55:35 +0000 (10:55 +0200)]
Update 'load-history' docs
* doc/lispref/loading.texi (Where Defined): Update the list of
forms in 'load-history' by adding the forms created for the
'cl-generic' generics. (Bug#21422)
Paul Eggert [Fri, 8 Jan 2016 22:53:10 +0000 (14:53 -0800)]
Fix (error ...) error
Problem reported by Glenn Morris in:
http://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00561.html
* lisp/vc/add-log.el (change-log-goto-source): Fix typos
introduced in my Aug 28 change, where I got confused by the
two meanings of (error ...).
Alan Mackenzie [Fri, 8 Jan 2016 22:42:47 +0000 (22:42 +0000)]
Correctly analyze brace arguments in templated C++ function declarations.
* lisp/progmodes/cc-defs.el (c-go-list-forward, c-go-list-backward): add
POS and LIMIT parameters, like the other c-go-list-* functions have.
* lisp/progmodes/cc-engine.el (c-restore-<>-properties): Check backwards
for a ?\( rather than a ?<. (c-looking-at-inexpr-block): Handle names
followed by template specifiers.