Glenn Morris [Wed, 29 Nov 2017 00:58:32 +0000 (19:58 -0500)]
Remove some bogus definition-prefixes from loaddefs
* lisp/emacs-lisp/autoload.el (autoload-generate-file-autoloads):
Don't register a definition prefix from define-erc-module,
which adds an erc- prefix to its argument.
Kaushal Modi [Tue, 28 Nov 2017 17:17:48 +0000 (19:17 +0200)]
Update documentation of '.dir-locals-2.el'
See https://lists.gnu.org/r/emacs-devel/2017-11/msg00649.html
for more details.
* lisp/files.el (dir-locals-file-2): Remove unused constant.
* lisp/files.el (dir-locals-file): Mention ".dir-locals-2.el" in
the doc string.
* doc/lispref/variables.texi (Directory Local Variables): Mention
".dir-locals-2.el".
* etc/NEWS: Replace `dir-locals-file-2' mention with
`dir-locals-file'.
Michael Albinus [Mon, 27 Nov 2017 12:31:53 +0000 (13:31 +0100)]
Fix Bug#29163
* lisp/net/tramp.el (tramp-autoload-file-name-regexp):
Do not use "\\'" in regexp. (Bug#29163)
(top) Do not run (tramp-register-autoload-file-name-handlers)
when loading tramp.el.
* test/lisp/net/tramp-tests.el (tramp--test-mock-p): New defun.
(tramp-test32-environment-variables-and-port-numbers)
(tramp-test41-asynchronous-requests): Use it.
(tramp-test42-auto-load): New test.
(tramp-test43-recursive-load, tramp-test44-remote-load-path)
(tramp-test45-delay-load, tramp-test46-unload): Rename.
Paul Eggert [Mon, 27 Nov 2017 03:15:14 +0000 (19:15 -0800)]
Harden exec_byte_code against redefining 'error'
Problem discovered by configuring with --enable-gcc-warnings on
Ubuntu 17.10 x86-64 with gcc (Ubuntu 7.2.0-8ubuntu3).
* src/bytecode.c (exec_byte_code): Call the C error function
instead of the Lisp one, so that the Emacs interpreter does not go
haywire if the user redefines the Lisp error function.
Gemini Lasswell [Mon, 6 Nov 2017 05:36:58 +0000 (21:36 -0800)]
Fix Edebug specs for if-let* and and-let* (Bug#29236)
* test/lisp/emacs-lisp/subr-x.el (if-let*, if-let): Change Edebug
spec to cause Edebug to instrument tests the results of which are
not bound to symbols (the (VALUEFORM) case).
(and-let*): Change Edebug spec to allow empty body.
*test/lisp/emacs-lisp/subr-x-tests.el:
(subr-x-and-let*-test-group-1): Add missing quote to erroneous
form so Edebug will work on this test.
Gemini Lasswell [Thu, 2 Nov 2017 04:13:02 +0000 (21:13 -0700)]
Fix Edebug's handling of dotted specs (bug#6415)
* lisp/emacs-lisp/cl-macs.el (cl-destructuring-bind): Use
cl-macro-list1 instead of cl-macro-list in Edebug spec.
* lisp/emacs-lisp/edebug.el (edebug-after-dotted-spec): Delete
unused variable.
(edebug-dotted-spec): Add docstring.
(edebug-match-specs): Allow &optional and &rest specs to
match nothing at the tail of a dotted form. Handle matches of
dotted form tails which return non-lists.
* test/lisp/emacs-lisp/edebug-tests.el (edebug-tests-dotted-forms):
New test.
* test/lisp/emacs-lisp/edebug-resources/edebug-test-code.el:
(edebug-test-code-use-destructuring-bind): New function.
Eli Zaretskii [Sun, 26 Nov 2017 18:23:15 +0000 (20:23 +0200)]
Improve documentation of "constant" symbols
* src/font.c (syms_of_font) <font-weight-table, font-slant-table>
<font-width-table>:
* src/data.c (syms_of_data) <most-positive-fixnum>
<most-negative-fixnum>:
* src/buffer.c (syms_of_buffer) <enable-multibyte-characters>:
Mention in the doc strings that these variables are read-only.
* doc/lispref/variables.texi (Creating Buffer-Local): Document
that making a constant variable buffer-local signals an error.
* doc/lispref/variables.texi (Constant Variables):
* doc/lispref/errors.texi (Standard Errors): More accurate and
up-to-date documentation of which symbols cannot be assigned
values.
Paul Eggert [Sun, 26 Nov 2017 00:11:43 +0000 (16:11 -0800)]
Work around GCC bug 80776 on Fedora 27 x86
* src/buffer.c (Fgenerate_new_buffer_name): Pacify GCC 7.2.1 20170915 (Red Hat 7.2.1-2) on i686 with -Wformat-overflow -O2 by
using XINT rather than XFASTINT and by adding an eassume. This
works around GCC bug 80776.
Paul Eggert [Sat, 25 Nov 2017 21:04:30 +0000 (13:04 -0800)]
Tweak copy-file, rename-file doc
* src/fileio.c (Fcopy_file, Frename_file): Tweak the recent change
slightly, as NEWNAME is treated as a directory name depending only
on the contents of the NEWNAME string, and independently of
whether NEWNAME names a directory (i.e., whether the directory
exists) (Bug#29362).
Eli Zaretskii [Sat, 25 Nov 2017 10:35:09 +0000 (12:35 +0200)]
Make sure 'dired-filename' property is always put by ls-lisp
* lisp/ls-lisp.el (ls-lisp-classify): Do not put the
'dired-filename' text property on the file name here...
(ls-lisp-classify-file): ...put it here instead. (Bug#29423)
Eli Zaretskii [Fri, 24 Nov 2017 14:36:33 +0000 (16:36 +0200)]
Improve discoverability of 'defvar' for suppressing warnings
* doc/lispref/compile.texi (Compiler Errors): Add index entries.
* doc/lispref/variables.texi (Defining Variables): Mention that
defvar with no value is used for suppressing compiler warnings.
(Bug#29400)
Eli Zaretskii [Fri, 24 Nov 2017 10:49:04 +0000 (12:49 +0200)]
Improve documentation of self-insert-uses-region-functions
* lisp/simple.el (self-insert-uses-region-functions): Clarify the
doc string.
* lisp/delsel.el (delete-selection-uses-region-p): Mention
'self-insert-command' in the doc string. (Bug#29373)
* doc/lispref/text.texi (Commands for Insertion): Mention
'self-insert-uses-region-functions'.
* doc/lispref/modes.texi (Keymaps and Minor Modes): Add a
cross-reference to "Commands for Insertion".
Dmitry Gutov [Tue, 21 Nov 2017 23:44:52 +0000 (01:44 +0200)]
Extract the common part of ruby-flymake-simple and ruby-flymake-rubocop
* lisp/progmodes/ruby-mode.el (ruby-flymake-simple)
(ruby-flymake-rubocop):
Extract the common part as ruby-flymake--helper.
(ruby--rubocop-flymake-proc): Remove. Use the first proc
variable instead.
Dmitry Gutov [Tue, 21 Nov 2017 23:04:27 +0000 (01:04 +0200)]
Add Rubocop Flymake backend
* lisp/progmodes/ruby-mode.el (ruby-flymake-command):
Inline the value. There are no known substitutes.
(ruby-flymake): Rename to `ruby-flymake-simple' and simplify
the docstring.
(ruby-flymake-use-rubocop-if-available): New option.
(ruby--rubocop-flymake-proc): New variable.
(ruby-rubocop-config): New option.
(ruby-flymake-rubocop, ruby-flymake-auto): New functions.
(ruby-mode): Use `ruby-flymake-auto'.
Noam Postavsky [Tue, 7 Nov 2017 23:01:01 +0000 (18:01 -0500)]
Update nt/INSTALL.W64 (Bug#28601)
* nt/INSTALL.W64 (Download and install MinGW-w64 and MSYS2): Move
suggestion about modifying PATH to...
(Test Emacs): ... here.
(Run configure): Remove the unnecessary setting of PKG_CONFIG_PATH.
(Troubleshooting): New section, includes suggestion to check
PKG_CONFIG_PATH.
Remove incorrect NEWS item about VC state indicator (Bug#28817)
* etc/NEWS (VC and related modes): Remove news item about the VC
state indicator. This should have been done with commit 7882dc6
of 2016-03-06 'Revert "Use colors in the VC mode lines"'.
Alan Mackenzie [Tue, 21 Nov 2017 18:06:11 +0000 (18:06 +0000)]
Make c-defun-name analyze more thoroughly a function type which is a struct
This fixes bug #29293.
* lisp/progmodes/cc-cmds.el (c-defun-name): When a struct (etc.) type is
encountered, check whether it is the return type of a function rather than a
declaration of the struct itself. Similarly adapt the cond arm which deals
with functions properly to recognize struct return types.
Jay Kamat [Tue, 21 Nov 2017 07:31:40 +0000 (08:31 +0100)]
Fix erc keep-place module with new defaults (Bug#29111)
* lisp/erc/erc-goodies.el (erc-keep-place): Allow erc
keep-place to continue working with
switch-to-buffer-preserve-window-point set to t, the new default.
Michael Albinus [Mon, 20 Nov 2017 13:28:22 +0000 (14:28 +0100)]
Fix Bug#29149
* lisp/net/tramp.el (tramp-drop-volume-letter): Handle also
backup file names.
(tramp-handle-find-backup-file-name):
Call `tramp-drop-volume-letter' on the results. (Bug#29149)
Mike Kupfer [Sun, 19 Nov 2017 00:49:10 +0000 (16:49 -0800)]
MH-E: don't automatically download external-body parts
* lisp/mh-e/mh-mime.el (mh-mime-display-single): Use
mm-automatic-display-p to verify that a part should be
displayed before doing the inline checks (SF#475).
Alan Mackenzie [Sat, 18 Nov 2017 14:52:39 +0000 (14:52 +0000)]
Filter obtrusive events in help-read-key-sequence.
This fixes most of bug #29272.
* lisp/help.el (help-read-key-sequence): After a mouse event, pause for 0.01s,
discarding any events (such as <help-echo>) received in this time, before
polling for the double-click (etc.) events which may follow. This fixes the
infinite loop which occurred whwn <help-echo> events triggered a sit-for
whilst handling menu events.
OGAWA Hirofumi [Sat, 18 Nov 2017 10:29:41 +0000 (12:29 +0200)]
Fix quick-calc in C mode with hex values
* lisp/calc/calc-aent.el (math-read-token): Make sure the match
against "0[xX][0-9a-fA-F]+" is found at math-exp-pos. See
http://lists.gnu.org/archive/html/emacs-devel/2017-11/msg00174.html
for the details.
Eli Zaretskii [Fri, 17 Nov 2017 19:37:04 +0000 (21:37 +0200)]
Prevent aborts in line-move-visual
* src/indent.c (line_number_display_width): Avoid assertion
violations in init_iterator when the window's buffer was
temporarily switched without updating window-start. (Bug#29326)
Robert Pluim [Fri, 17 Nov 2017 13:39:02 +0000 (15:39 +0200)]
Document how to enter whitespace when using grep-read-files
* lisp/progmodes/grep.el (lgrep, rgrep, grep-read-files): Explain
how to enter whitespace when using grep-read-files. (Bug#29303)
* lisp/progmodes/project.el (project-find-regexp): Likewise.
* lisp/vc/vc-git.el (vc-git-grep): Likewise.
Martin Rudalics [Tue, 14 Nov 2017 17:36:12 +0000 (18:36 +0100)]
; Fix last fix of 'mouse-drag-and-drop-region'
* lisp/mouse.el (mouse-drag-and-drop-region): Use 'car-safe'
instead of 'car' to ignore 'select-window' events. Thanks to
Stefan Monnier for spotting this.
Daniel Pittman [Tue, 14 Nov 2017 10:38:30 +0000 (11:38 +0100)]
Fix Bug#28139
* tramp-sh.el: Set TERM and INSIDE_EMACS environment earlier.
(tramp-remote-process-environment): Remove TERM and INSIDE_EMACS.
(tramp-remote-process-environment): Document their special handling.
(tramp-open-shell): Set TERM and INSIDE_EMACS prior to starting the
initial remote shell, so that it is also aware of the environment
in which it is operating. (Bug#28139)
Katsumi Yamaoka [Mon, 13 Nov 2017 23:56:26 +0000 (23:56 +0000)]
Fix cookie handling (bug#29282)
* lisp/url/url-cookie.el (url-cookie-handle-set-cookie):
Regard a Set-Cookie header as it contains a single cookie;
prefer Max-Age to Expires and convert it to Expires;
remove support for old time string styles (bug#29282).
Gemini Lasswell [Mon, 13 Nov 2017 21:22:39 +0000 (13:22 -0800)]
Improve documentation of Edebug and macros
* doc/lispref/edebug.texi (Instrumenting Macro Calls): Improve
discussion of when it might be necessary to find and evaluate macro
specifications before instrumenting.
(Specification List): Clarify what "defining form" means to Edebug
and when 'def-form' or 'def-body' should be used instead of 'form'
or 'body'.
Paul Eggert [Mon, 13 Nov 2017 16:51:41 +0000 (08:51 -0800)]
Simplify by removing HAVE_STRUCT_ATTRIBUTE_ALIGNED
* configure.ac (HAVE_STRUCT_ATTRIBUTE_ALIGNED): Remove. No longer
needed, since we no longer rely on __attribute__ ((aligned (8))).
All uses removed.
* src/emacs-module.c (HAVE_STRUCT_ATTRIBUTE_ALIGNED): Remove.
(lisp_to_value): Simplify now that we no longer need to worry
whether HAVE_STRUCT_ATTRIBUTE_ALIGNED is false.
Paul Eggert [Mon, 13 Nov 2017 16:51:41 +0000 (08:51 -0800)]
Use alignas to fix GCALIGN-related bugs
Use alignas and unions to specify alignments of objects needing
addresses that are at least a multiple of GCALIGNMENT. Using
these standard C facilities should be safer than relying on ad hoc
and poorly-understood features like GCC’s __attribute__
((aligned (N))), the root cause for recent porting bugs like
Bug#29040. The alignas macro was standardized by C11 and Gnulib
supports alignas for pre-C11 platforms. I have tested this on Sun
Studio 12 sparc (2007) and GCC 4.4.7 x86-64 (2012) as well as on
more recent platforms like GCC 7.2.1 (2017) on Fedora 26 (both
x86-64 and x86).
* lib-src/make-docfile.c (close_emacs_globals): lispsym is now
just an array of struct Lisp_Symbol, since struct Lisp_Symbol is
now properly aligned. All uses changed.
* src/alloc.c (NEXT_FREE_LISP_STRING): Just use the new u.next
member; this is simpler and safer than casting a pointer that
might not be aligned properly.
(aligned_Lisp_Symbol): Remove. No longer needed, now that struct
Lisp_Symbol is aligned properly. All uses replaced with struct
Lisp_Symbol.
* src/lisp.h (GCALIGNED): Remove, as it does not work as expected:
it can cause the natural alignment to be ignored. All uses
replaced by unions with a ‘char alignas (GCALIGNMENT)’ member as
described below.
(struct Lisp_Symbol, struct Lisp_Cons, struct Lisp_String):
Change definition from ‘struct TAG { MEMBERS };’ to
‘struct TAG { union { struct { MEMBERS } s; char alignas
(GCALIGNMENT) gcaligned; } u; };’. This guarantees ‘struct TAG’
to have an alignment that at least max (GCALIGNMENT, N) where N is
its old alignment. All uses like ‘PTR->MEMBER’ changed to
‘PTR->u.s.MEMBER’; these uses were supposed to be mostly private
anyway. Verify that the resulting ‘struct TAG’ is properly
aligned for Emacs.
(union vectorlike_header): New member ‘gcaligned’ to guarantee
that this type, and its containing types like ‘struct Lisp_Subr’,
‘struct buffer’ and ‘struct thread_state’, are all properly
aligned for Emacs.
(struct Lisp_String): New union member ‘next’, for the benefit
of NEXT_FREE_LISP_STRING.
(union Aligned_Cons, union Aligned_String): Remove. All uses
replaced by struct Lisp_Cons and struct Lisp_String, since they
are now properly aligned.
(USE_STACK_CONS, USE_STACK_STRING): Simplify now that we can
assume struct Lisp_Cons and struct Lisp_String are properly
aligned.
Paul Eggert [Mon, 13 Nov 2017 16:51:41 +0000 (08:51 -0800)]
Change vectorlike from struct to union
* src/lisp.h (vectorlike_headed): Change from struct to union.
All uses changed. Since it has only one member, this does not
change semantics. This is designed to simplify future changes
needed to fix bugs like Bug#29040. All uses changed.