Add a do-nothing implementation for vc-rcs to suppress the message which
the default function adds to the vc-dir buffer (Bug#28570).
* lisp/vc/vc-rcs.el (vc-rcs-dir-extra-headers): New function.
Paul Eggert [Tue, 17 Oct 2017 06:44:32 +0000 (23:44 -0700)]
Work around ImageMagick bug 825
This should fix several bugs reported recently against Emacs
(Bug#28518, Bug#28626, Bug#28632, Bug#28633, Bug#28770).
* src/image.c (imagemagick_load_image):
Do not call MagickWandTerminus.
Paul Eggert [Mon, 16 Oct 2017 22:54:06 +0000 (15:54 -0700)]
Do not reject https://gnu.org in commit messages
* build-aux/git-hooks/commit-msg: Do not reject commit messages
containing http: or ftp: URLs to gnu.org or fsf.org. Instead,
rewrite the messages to use https: URLs.
Gemini Lasswell [Mon, 16 Oct 2017 18:09:29 +0000 (11:09 -0700)]
Fix Edebug spec for cl-defun (bug#24255)
* lisp/emacs-lisp/cl-macs.el: Modify the Edebug spec for
`cl-lambda-list' to support destructuring argument lists.
(cl-defun, cl-defmacro): Fix spelling errors in docstrings.
* lisp/textmodes/rst.el: Remove alternate version of Edebug
specs for `cl-lambda-list' and `cl-type-spec'.
Eli Zaretskii [Mon, 16 Oct 2017 15:51:32 +0000 (18:51 +0300)]
Fix 'line-number-display-width' in hscrolled windows
* src/indent.c (line_number_display_width): Make sure a line
number is generated even when the first line of the window is
completely hscrolled out of view. (Bug#28854)
Andy Moreton [Mon, 16 Oct 2017 08:23:32 +0000 (01:23 -0700)]
Don't reject PBM header whitespace unnecessarily
* lisp/image.el (image-type-header-regexps):
Allow two or more CRs or LFs in initial whitespace sequences. See:
http://netpbm.sourceforge.net/doc/pbm.html
Paul Eggert [Mon, 16 Oct 2017 08:14:58 +0000 (01:14 -0700)]
Fix regression in display of PPM images
Problem reported by Roland Winkler (Bug#28824#35).
Based on a patch proposed by Andy Moreton (Bug#28824#38).
* src/image.c (pbm_scan_index): New function.
(pbm_load): Use it to decode raw data correctly when its top bit
is set.
Noam Postavsky [Sun, 15 Oct 2017 15:38:21 +0000 (11:38 -0400)]
Fix ert-test finding by symbol (Bug#28849)
In 2017-07-28 "* lisp/subr.el (define-symbol-prop): New function", the
symbol used for ert tests in load-history was changed from
`ert-deftest' to `ert--test', but a couple of other places were not
updated accordingly.
* lisp/emacs-lisp/ert.el (ert-find-test-other-window): Pass
`ert--test' as the TYPE to `find-function-do-it'.
(top-level): Use `ert--test' as the key to the
`find-function-regexp-alist' entry.
K. Handa [Sun, 15 Oct 2017 14:15:47 +0000 (23:15 +0900)]
Improve customization of arabic-shaper-ZWNJ-handling.
Make the effect of customizing arabic-shaper-ZWNJ-handling appear
immediately.
* lisp/language/misc-lang.el (arabic-shaper-ZWNJ-handling): Add :set
value.
* src/composite.c (Fclear_composition_cache): New function.
(syms_of_composite): Defsubr it.
Eli Zaretskii [Sat, 14 Oct 2017 08:13:47 +0000 (11:13 +0300)]
Make sure thread stack is properly aligned on MS-Windows
* src/systhread.c: Include w32term.h instead of windows.h.
(w32_beginthread_wrapper): Add ALIGN_STACK attribute, to ensure
the thread's stack is correctly aligned.
* src/w32term.h (ALIGN_STACK): Update commentary.
Paul Eggert [Sat, 14 Oct 2017 07:55:25 +0000 (00:55 -0700)]
Do not under-align pseudovectors
Problem reported by Fabrice Popineau in:
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00357.html
Also see diagnosis by Eli Zaretskii in:
https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00476.html
* src/alloc.c (vector_alignment):
Now a multiple of alignof (max_align_t).
Simen Heggestøyl [Fri, 13 Oct 2017 19:48:12 +0000 (21:48 +0200)]
Fix indentation bug in multi-line CSS selectors
* lisp/textmodes/css-mode.el (css--colon-inside-selector-p): Fix
indentation of multi-line CSS selectors that include both a
pseudo-class and parenthesis.
* test/manual/indent/css-mode.css: Add test for the above change.
Andreas Schwab [Fri, 13 Oct 2017 09:47:29 +0000 (11:47 +0200)]
gnutls_mac_get_nonce_size has been added in gnutls 3.3
* src/gnutls.c (HAVE_GNUTLS_MAC_GET_NONCE_SIZE)
[GNUTLS_VERSION_NUMBER >= 0x030300]: Define.
(gnutls_mac_get_nonce_size): Depend on
HAVE_GNUTLS_MAC_GET_NONCE_SIZE.
(Fgnutls_macs): Use 0 for :mac-algorithm-noncesize if
!HAVE_GNUTLS_MAC_GET_NONCE_SIZE.
Paul Eggert [Thu, 12 Oct 2017 20:08:53 +0000 (13:08 -0700)]
Let rename-file rename dirs across filesystems
Problem diagnosed by Andreas Schwab (Bug#28792#65).
This fixes a bug that I introduced in
2017-09-10T22:39:24@eggert@cs.ucla.edu
"Fix race with rename-file etc. with dir NEWNAME".
* src/fileio.c (Frename_file): Copy a source directory across
file system boundaries even if its name does not end in slash.
João Távora [Thu, 12 Oct 2017 11:11:26 +0000 (12:11 +0100)]
Simplify Flymake user documentation
Fix some confusing parts of Flymake user documentation, like a
repeated listing of situations leading to a syntax check.
Documentation is now divided into three chapters only: "Using
Flymake", "Extending Flymake", and a chapter for the legacy backend.
Obsolete mention of "errors" and "lines" is replaced by
"diagnostics/problems" and "regions" where appropriate.
* doc/misc/flymake.texi (Overview of Flymake): Delete chapter.
(Using Flymake): Merge with chapter "Overview of Flymake".
(Installing Flymake): Delete chapter.
(Flymake mode, Running the syntax check)
(Navigating to error lines): Delete sections.
(Syntax check statuses): Review and augment with x-references.
(Backend exceptions): Mention shortcut in menu.
* lisp/progmodes/flymake.el (flymake-menu): Tweak minor mode
menu to not speak of "errors".
(flymake-goto-next-error, flymake-goto-prev-error): Fix
wording.
Noam Postavsky [Thu, 12 Oct 2017 00:23:40 +0000 (20:23 -0400)]
Don't use (format "%s" ...) for string copying (Bug#28774)
As of 2017-10-04 'Speed up (format "%s" STRING) and the like', (format
"%s" STRING) no longer produces a new string.
* lisp/ido.el (ido-completions): Use `copy-sequence' to make a new
string, so that we can add text properties to (copies of) symbol
names.
João Távora [Sun, 8 Oct 2017 23:12:48 +0000 (00:12 +0100)]
Tweak the Flymake diagnostics buffer again
* lisp/progmodes/flymake.el
(flymake-diagnostics-buffer-mode-map): Don't bind [mouse-1].
(flymake-show-diagnostic): Rename from
flymake-show-diagnostic-at-point. Really use another window.
(flymake-goto-diagnostic): Rename from
flymake-goto-diagnostic-at-point.
(flymake--diagnostics-buffer-entries): Use a button just for
the message bit.
Mark Oteiza [Sun, 8 Oct 2017 21:42:31 +0000 (22:42 +0100)]
Simplify Flymake diagnostics buffer UX
Don't create text-buttons unnecessarily, just bind RET and SPC in the
diagnostics buffer to a command that figures out which diagnostic it
was invoked on.
* lisp/progmodes/flymake.el
(flymake--diagnostics-buffer-mode-keymap): Renamed from
flymake--diagnostics-buffer-button-keymap.
(flymake-show-diagnostic-at-point): Don't take a button.
(flymake-goto-diagnostic-at-point): Don't pass button to
flymake-show-diagnostic-at-point.
(flymake--diagnostics-buffer-entries): Simplify.
Eli Zaretskii [Tue, 10 Oct 2017 14:08:51 +0000 (17:08 +0300)]
Improve the Flymake manual
* doc/misc/flymake.texi: Add a 'coding' cookie. Add a
@syncodeindex directive for @vindex. Use 2 spaces between
sentences. Lower-case @cindex entries.
(Overview of Flymake): Fix use of @itemize and @pxref. Fix
punctuation and markup.
(Backend exceptions): Use @emph instead of @dfn. Add more
indexing.
(Customizable variables, Extending Flymake): Improve wording.
(Flymake error types): Fix usage of @itemize. Improve wording.
(Backend functions): Fix punctuation. Fix markup. Add a
cross-reference to ELisp manual.
(Flymake utility functions): Add a cross-reference to ELisp manual.
(An annotated example backend): Fix punctuation and typos.
(Flymake mode, Running the syntax check)
(Navigating to error lines, Backend exceptions)
(Customizable variables, Flymake error types, Backend functions)
(Flymake utility functions, Proc customization variables)
(Locating a master file, Locating the buildfile)
(Starting the syntax check process, Parsing the output)
(Interaction with other modes): Fix indexing. Add index entries
for functions, variables, and concepts.
João Távora [Tue, 10 Oct 2017 11:47:46 +0000 (12:47 +0100)]
Fix two Flymake bugs
* lisp/progmodes/flymake.el (define-fringe-bitmap): Protect
against --without-x.
(flymake--mode-line-format): Ensure mode-line's mouse-4 and mouse-5 work
in their own windows.
João Távora [Tue, 10 Oct 2017 01:14:46 +0000 (02:14 +0100)]
Add full documentation on new Flymake API
Also, as a minor addition to this API, set flymake-text
on the diagnostic overlay. This enables a good example in
the section "Customization Flymake annotations".
* doc/misc/flymake.texi (Overview of Flymake)
(Syntax check statuses): Rework.
(Backend exceptions): Rename from "Troubleshooting"
(Customizable variables): Add flymake-start-on-flymake-mode. Rework.
(Extending Flymake): Write chapter.
(Customizing Flymake annotations, Flymake backends)
(Flymake utility functions, An annotated example backend):
New sections and subsections
* lisp/progmodes/flymake.el (flymake-diagnostic-functions)
(flymake-diagnostic-types-alist): Rework docstring.
(flymake--highlight-line): Set and use flymake-text property in overlay.
(flymake-goto-next-error, flymake-goto-prev-error): Fix funny quotes.
Paul Eggert [Mon, 9 Oct 2017 17:30:40 +0000 (10:30 -0700)]
Fix unlikely overflows with wd length
* src/sysdep.c (get_current_dir_name_or_unreachable):
Avoid integer overflow if working directory name is absurdly long.
When allocating memory for getcwd, do not exceed MAXPATHLEN.
Ken Olum [Mon, 9 Oct 2017 13:54:00 +0000 (16:54 +0300)]
Fix problems when editing raw undecoded message (Bug#28671)
* lisp/mail/rmailedit.el (rmail-cease-edit): If rmail-old-mime-state
is set, meaning that we are editing the raw message, do not
encode it again. Delete old body after, not before, inserting
new, to avoid moving marker at beginning of next message.
Eli Zaretskii [Mon, 9 Oct 2017 13:39:25 +0000 (16:39 +0300)]
Improve doc string and prompt of 'grep-read-files'
* lisp/progmodes/grep.el (grep-read-files): Clarify in the doc
string and in the prompt that shell wildcards can be used.
Suggested by Allen Li <vianchielfaura@gmail.com>. (Bug#28615)
Eli Zaretskii [Mon, 9 Oct 2017 12:28:16 +0000 (15:28 +0300)]
Avoid assertion violations when line numbers are displayed
* src/xdisp.c (redisplay_window): Clear the window's desired glyph
matrix before calling try_window with the same starting point.
This avoids assertion violations when switching from a buffer
without line numbers to a buffer with line numbers. (Bug28710)
João Távora [Mon, 9 Oct 2017 10:12:57 +0000 (11:12 +0100)]
Be lazy when starting Flymake checks
Don't start the check immediately if the buffer is not being
displayed. Wait until it is, using window-configuration-change-hook.
This enables the user to batch-enable flymake-mode on many buffers and
not have that operation exhaust system resources for checking each
one. Likewise, an editing or save operation in a currently
non-displayed buffer does not immediately start a check.
* lisp/progmodes/flymake.el (flymake-start-on-flymake-mode):
Rename from flymake-start-syntax-check-on-find-file.
(flymake-start-syntax-check-on-find-file): Obsolete alias for
flymake-start-on-flymake-mode.
(flymake-start): Redesign. Affect the global post-command-hook
and local window-configuraiton-change-hook.
(flymake--schedule-timer-maybe)
(flymake-after-change-function, flymake-after-save-hook): Pass
t to flymake-start.
Martin Rudalics [Mon, 9 Oct 2017 07:29:52 +0000 (09:29 +0200)]
Describe how window dividers can replicate vertical borders (Bug#27830)
* doc/emacs/frames.texi (Scroll Bars): Describe how window
dividers can be used to replicate vertical borders when scroll
bars are disabled (Bug#27830).
* doc/emacs/frames.texi (Window Dividers): Mention their use
in replicating vertical borders.
Add line-number faces to the display-line-numbers group
See https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00151.html
and its resulting thread.
* lisp/display-line-numbers.el (display-line-numbers): Add to the
convenience group.
* lisp/faces.el (line-number):
(line-number-current-line): Add to the display-line-numbers group.
Paul Eggert [Sun, 8 Oct 2017 05:56:29 +0000 (22:56 -0700)]
Improve test for unreachable dirs
* src/sysdep.c (get_current_dir_name_or_unreachable):
New function, with most of the old contents of
emacs_get_current_dir_name.
(emacs_get_current_dir_name): Use it. Use a simpler
test for unreachable directory strings, and also apply
it to getcwd etc. (Bug#27871)
K. Handa [Sun, 8 Oct 2017 02:48:01 +0000 (11:48 +0900)]
New option for handling ZWNJ in Arabic text rendering
Provide a new option 'arabic-shaper-ZWNJ-handling' that controls how
to display ZWNJ in Arabic text rendering (Bug#28339).
* lisp/language/misc-lang.el: Register arabic-shape-gstring in
composition-function-table.
(arabic-shaper-ZWNJ-handling): New variable.
(arabic-shape-log): New variable.
(arabic-shape-gstring): New function.
* lisp/composite.el (lgstring-remove-glyph): New function.
Noam Postavsky [Thu, 5 Oct 2017 23:16:46 +0000 (19:16 -0400)]
Make python prettify symbols into a defvar (Bug#28713)
* lisp/progmodes/python.el (python-prettify-symbols-alist): New
variable.
(python--prettify-symbols-alist): Make into obsolete alias for
`python-prettify-symbols-alist'.
Michael Albinus [Sat, 7 Oct 2017 18:17:32 +0000 (20:17 +0200)]
Support gio tool in Tramp
"gvfs-<command>" utilities have been deprecated in GVFS 1.31.1. We
must use "gio <command>" tool instead.
* lisp/net/tramp-gvfs.el (tramp-gvfs-gio-mapping): New defconst.
(tramp-gvfs-handle-file-notify-add-watch): Support also "gio monitor"
(tramp-gvfs-gio-tool-p): New defun.
(tramp-gvfs-send-command): Use it. Call gio tool if available.
Eli Zaretskii [Sat, 7 Oct 2017 11:20:42 +0000 (14:20 +0300)]
Fix glitches in displaying TTY menus
* src/dispnew.c (update_frame_line): Accept an additional argument
UPDATING_MENU_P; if non-zero, home the cursor before updating a
frame's line. All callers changed.
(update_frame_1): Accept an additional argument UPDATING_MENU_P,
and pass it to update_frame_line. All callers changed.
(update_frame_with_menu): Call update_frame_1 with last argument
non-zero. (Bug#17497)
Gemini Lasswell [Fri, 6 Oct 2017 18:30:22 +0000 (11:30 -0700)]
Create new Edebug spec for docstrings and use it in closures
Since (:documentation FORM) can be used to create a docstring
when lexical-binding is on, allow for that possibility in Edebug
specs (bug#24773).
* lisp/emacs-lisp/edebug.el: Define an Edebug spec for docstrings
called lambda-doc and modify the Edebug specs for defun and
defmacro to use it.
(edebug-instrument-function): Check for generic functions first,
to fix bug where edebug-step-in didn't work on methods now that
cl-defgeneric has an Edebug spec.
* lisp/subr.el (lambda): Modify Edebug spec to use lambda-doc.
* lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Add Edebug spec
(bug#27747).
(cl-defmethod): Use lambda-doc in Edebug spec.
* lisp/emacs-lisp/cl-macs.el: Modify Edebug spec for
cl-declarations-or-string to use lambda-doc, and modify Edebug
spec for cl-lambda-expr to use cl-declarations-or-string.
* lisp/emacs-lisp/pcase.el (pcase-lambda): Modify Edebug spec to
use lambda-doc, as well as &define and def-body which are
necessary for using Edebug on code wrapped by lambda.
* lisp/emacs-lisp/generator.el (iter-defun, iter-lambda): Add
Edebug specs.