]> git.eshelyaron.com Git - emacs.git/log
emacs.git
7 years ago; Typo fixes, mostly repeated words
Paul Eggert [Tue, 10 Oct 2017 05:53:19 +0000 (22:53 -0700)]
; Typo fixes, mostly repeated words

7 years ago; Spelling fixes
Paul Eggert [Tue, 10 Oct 2017 00:15:42 +0000 (17:15 -0700)]
; Spelling fixes

7 years ago; * src/lread.c (syms_of_lread) <module-file-suffix>: Fix typo
Alexander Gramiak [Mon, 9 Oct 2017 20:22:58 +0000 (14:22 -0600)]
; * src/lread.c (syms_of_lread) <module-file-suffix>: Fix typo

7 years ago* admin/authors.el (authors-renamed-files-alist): addition.
Nicolas Petton [Mon, 9 Oct 2017 19:50:53 +0000 (21:50 +0200)]
* admin/authors.el (authors-renamed-files-alist): addition.

7 years ago; ChangeLog.3 fixes
Nicolas Petton [Mon, 9 Oct 2017 19:50:44 +0000 (21:50 +0200)]
; ChangeLog.3 fixes

7 years agoFix PWD check on DOS_NT
Paul Eggert [Mon, 9 Oct 2017 17:47:56 +0000 (10:47 -0700)]
Fix PWD check on DOS_NT

* src/sysdep.c (get_current_dir_name_or_unreachable):
Do not consider a file name like "a:b" to be absolute on DOS_NT.

7 years agoFix unlikely overflows with wd length
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.

7 years ago* lisp/gnus/message.el: Improve last commit
Stefan Monnier [Mon, 9 Oct 2017 16:33:07 +0000 (12:33 -0400)]
* lisp/gnus/message.el: Improve last commit

(message-clone-locals): Don't mistakenly match other variables whose
name happens to include "message-default-charset".

7 years agoFix problems when editing raw undecoded message (Bug#28671)
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.

7 years agoAvoid encoding errors in message.el
Eli Zaretskii [Mon, 9 Oct 2017 13:46:23 +0000 (16:46 +0300)]
Avoid encoding errors in message.el

* lisp/gnus/message.el (message-clone-locals): Don't clone
message-default-charset.  (Bug#25645)

7 years agoImprove doc string and prompt of 'grep-read-files'
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)

7 years agoAvoid assertion violations when line numbers are displayed
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)

7 years ago; * lisp/emacs-lisp/rmc.el: Minor fix for copyright and license.
Glenn Morris [Mon, 9 Oct 2017 11:44:37 +0000 (07:44 -0400)]
; * lisp/emacs-lisp/rmc.el: Minor fix for copyright and license.

7 years agoBe lazy when starting Flymake checks
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.

* test/lisp/progmodes/flymake-tests.el (flymake-tests--call-with-fixture)
(dummy-backends, recurrent-backend): Start flymake check
explicitly and immediately.

7 years agoFix last change in frameset.el
Eli Zaretskii [Mon, 9 Oct 2017 07:40:37 +0000 (10:40 +0300)]
Fix last change in frameset.el

* lisp/frameset.el (frameset-filter-font-param): Fix a thinko in
filtering the 'font' parameter.  (Bug#17352)

7 years agoDescribe how window dividers can replicate vertical borders (Bug#27830)
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.

7 years agoAdd line-number faces to the display-line-numbers group
Alexander Gramiak [Sat, 7 Oct 2017 21:02:01 +0000 (15:02 -0600)]
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.

7 years agoIncrease xterm click count only within double-click-fuzz
Alexander Gramiak [Sat, 30 Sep 2017 21:47:56 +0000 (15:47 -0600)]
Increase xterm click count only within double-click-fuzz

* lisp/xt-mouse.el (xterm-mouse-event): Save the last click's position
and check it against the current click's position.  (Bug#28658)

7 years agoChange pause in fullscreen toggling for NS port (bug#28496)
Alan Third [Sun, 8 Oct 2017 18:26:34 +0000 (19:26 +0100)]
Change pause in fullscreen toggling for NS port (bug#28496)

* lisp/frame.el (toggle-frame-fullscreen): Replace sit-for with
sleep-for, and reduce time.

7 years agoHandle PARENTS properly in tramp-*-handle-make-directory
Michael Albinus [Sun, 8 Oct 2017 11:55:20 +0000 (13:55 +0200)]
Handle PARENTS properly in tramp-*-handle-make-directory

* lisp/net/tramp-adb.el (tramp-adb-handle-make-directory):
* lisp/net/tramp-gvfs.el (tramp-gvfs-handle-make-directory):
Handle PARENTS properly.

* test/lisp/net/tramp-tests.el (tramp-test13-make-directory):
Extend test.

7 years ago; Merge from Gnulib (comment changes only)
Paul Eggert [Sun, 8 Oct 2017 06:08:24 +0000 (23:08 -0700)]
; Merge from Gnulib (comment changes only)

7 years agoImprove test for unreachable dirs
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)

7 years ago* src/xsmfns.c (x_session_initialize): Fix memory leak.
Paul Eggert [Sun, 8 Oct 2017 05:48:49 +0000 (22:48 -0700)]
* src/xsmfns.c (x_session_initialize): Fix memory leak.

7 years agoMerge branch 'emacs-26' of git.sv.gnu.org:/srv/git/emacs into emacs-26
K. Handa [Sun, 8 Oct 2017 02:56:06 +0000 (11:56 +0900)]
Merge branch 'emacs-26' of git.sv.gnu.org:/srv/git/emacs into emacs-26

7 years agoNew option for handling ZWNJ in Arabic text rendering
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.

7 years agoMake python prettify symbols into a defvar (Bug#28713)
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'.

7 years agoFix fullscreen crash on macOS (bug#28496)
Alan Third [Sat, 30 Sep 2017 23:06:23 +0000 (00:06 +0100)]
Fix fullscreen crash on macOS (bug#28496)

* lisp/frame.el (toggle-frame-fullscreen): Wait for animation to
complete on macOS.

7 years agoFix crash when closing fullscreen frame on macOS (bug#28661)
Alan Third [Sat, 7 Oct 2017 15:00:49 +0000 (16:00 +0100)]
Fix crash when closing fullscreen frame on macOS (bug#28661)

* src/nsterm.m (EmacsView::windowWillResize): Return new frame size
unmodified if the frame isn't live.

7 years agoSupport gio tool in Tramp
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.

7 years agoFix flymake-goto-next-error when message has %-constructs
João Távora [Sat, 7 Oct 2017 15:55:04 +0000 (16:55 +0100)]
Fix flymake-goto-next-error when message has %-constructs

* lisp/progmodes/flymake.el (flymake-goto-next-error): Fix
message call.  Add missing period in docstring.

7 years ago* src/gnutls.c (syms_of_gnutls): Remove duplicated call to DEFSYM.
Piotr Trojanek [Sat, 7 Oct 2017 14:54:36 +0000 (17:54 +0300)]
* src/gnutls.c (syms_of_gnutls): Remove duplicated call to DEFSYM.

Copyright-paperwork-exempt: yes.

7 years agoMove the entry about 'format' into Incompatible Lisp Changes
Eli Zaretskii [Sat, 7 Oct 2017 11:32:12 +0000 (14:32 +0300)]
Move the entry about 'format' into Incompatible Lisp Changes

* etc/NEWS: Move the entry about 'format' refraining from allocating
new strings into Incompatible Lisp Changes.  (Bug#28625)

7 years agoFix glitches in displaying TTY menus
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)

7 years agoCreate new Edebug spec for docstrings and use it in closures
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.

7 years agoAvoid byte-compilation warnings in message.el
Eli Zaretskii [Fri, 6 Oct 2017 17:49:39 +0000 (20:49 +0300)]
Avoid byte-compilation warnings in message.el

* lisp/gnus/message.el: Require 'subr-x' when compiling, to
avoid compiler warnings.

7 years agoFix bug in recent styled_format change
Paul Eggert [Fri, 6 Oct 2017 17:32:46 +0000 (10:32 -0700)]
Fix bug in recent styled_format change

Problem reported by Kaushal Modi in:
http://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00141.html
* src/editfns.c (styled_format): Fix bug where USE_SAFE_ALLOCA was
not always followed by SAFE_FREE.  This bug was introduced in my
patch 2017-09-26T23:31:57Z!eggert@cs.ucla.edu entitled "Avoid some
unnecessary copying in Fformat etc."

7 years agoCleanup emacs-lisp-mode's use of Flymake
João Távora [Fri, 6 Oct 2017 16:51:40 +0000 (17:51 +0100)]
Cleanup emacs-lisp-mode's use of Flymake

* lisp/progmodes/elisp-mode.el (elisp-flymake--checkdoc-1):
Delete.
(elisp-flymake-checkdoc): Incorporate old
elisp-flymake--checkdoc-1.
(elisp-flymake--byte-compile-done): Simplify.  Don't cleanup
here.
(elisp-flymake-byte-compile): Remove spurious interactive spec.
Simplify.  Cleanup on every possible exit.

7 years agoFix @include directive in Flymake doc
João Távora [Fri, 6 Oct 2017 15:42:37 +0000 (16:42 +0100)]
Fix @include directive in Flymake doc

* doc/misc/flymake.texi: Don't @include a relative path.

7 years agoMove read-multiple-choice to its own library
Mark Oteiza [Fri, 6 Oct 2017 14:42:06 +0000 (10:42 -0400)]
Move read-multiple-choice to its own library

* lisp/emacs-lisp/rmc.el: New file.
* lisp/emacs-lisp/subr-x.el (read-multiple-choice): Remove.
* lisp/gnus/message.el:
* lisp/net/nsm.el: Change required library.

7 years ago* src/process.c (syms_of_process): Remove duplicated call to DEFSYM.
Piotr Trojanek [Fri, 6 Oct 2017 14:12:31 +0000 (17:12 +0300)]
* src/process.c (syms_of_process): Remove duplicated call to DEFSYM.

Fixes: Bug#28721
Copyright-paperwork-exempt: yes.

7 years agoFix typos in Flymake documentation
Lele Gaifax [Fri, 6 Oct 2017 13:08:49 +0000 (14:08 +0100)]
Fix typos in Flymake documentation

* doc/misc/flymake.texi (Syntax check statuses)
(Adding support for a new syntax check tool)
(Implementation overview, Locating the buildfile): Fix typos.

* lisp/progmodes/flymake-proc.el (flymake-proc--report-fn)
(flymake-proc--find-possible-master-files):Fix typos.
(flymake-proc--panic)
(flymake-proc-legacy-flymake): Fix function reference in doc.

* lisp/progmodes/flymake.el (flymake-error)
(flymake-diagnostic-functions): Fix typos.
(flymake-diagnostic-types-alist): Rephrase and fix typos.
(flymake--backend-state): Fix typos and rephrase.
(flymake--handle-report): Delete empty line.
(flymake--disable-backend)
(flymake--run-backend): Fix typos.
(flymake-goto-next-error, flymake-goto-prev-error): Rephrase.

7 years agoRevert last change in 'shr-descend'
Eli Zaretskii [Fri, 6 Oct 2017 12:42:22 +0000 (15:42 +0300)]
Revert last change in 'shr-descend'

* lisp/net/shr.el (shr-descend): Revert the part of the last
change which introduced calls to shr-indirect-call into this
function.  Add a comment explaining the rationale for that.
(Bug#28402)

7 years agoDon't error when turning on Flymake with no known backends
João Távora [Thu, 5 Oct 2017 23:07:53 +0000 (00:07 +0100)]
Don't error when turning on Flymake with no known backends

Leave it to the mode line indicator to inform the user that there
is still some configuration to do.

* lisp/progmodes/flymake.el (flymake-mode): Simplify.

7 years agoDelete a Flymake obsolete alias that can't possibly work
João Távora [Thu, 5 Oct 2017 21:23:24 +0000 (22:23 +0100)]
Delete a Flymake obsolete alias that can't possibly work

The function `flymake-ler-make-ler' can't possibly work as an backward
compatible interface to existing extensinos (even purely hypothetical
ones, since none are known).  This is because every diagnostic
considered by Flymake has to passed to a report-fn function.

* lisp/progmodes/flymake.el (flymake-ler-make-ler): Delete.

7 years agoFix bug with unmounted directory on GNU/Linux
Paul Eggert [Thu, 5 Oct 2017 22:55:10 +0000 (15:55 -0700)]
Fix bug with unmounted directory on GNU/Linux

* src/sysdep.c (emacs_get_current_dir_name): Do not use
get_current_dir_name result unless it is absolute (Bug#27871).

7 years ago; Update ChangeLog.3
Nicolas Petton [Thu, 5 Oct 2017 21:18:23 +0000 (23:18 +0200)]
; Update ChangeLog.3

7 years ago; * Makefile.in: set PREFERRED_BRANCH to emacs-26
Nicolas Petton [Thu, 5 Oct 2017 20:23:49 +0000 (22:23 +0200)]
; * Makefile.in: set PREFERRED_BRANCH to emacs-26

7 years agoUpdate authors.el
Nicolas Petton [Wed, 4 Oct 2017 19:49:22 +0000 (21:49 +0200)]
Update authors.el

* admin/authors.el (authors-renamed-files-alist)
(authors-valid-file-names): Additions.

7 years agoFix dynamic binding wrapper in iter-lambda (bug#25965)
Gemini Lasswell [Thu, 5 Oct 2017 19:41:35 +0000 (12:41 -0700)]
Fix dynamic binding wrapper in iter-lambda (bug#25965)

* lisp/emacs-lisp/generator.el (cps--make-dynamic-binding-wrapper):
Remove extra evaluation of form.
* test/lisp/emacs-lisp/generator-tests.el
(cps-iter-lambda-with-dynamic-binding): New test.

7 years agoUpdate Org to v9.1.2
Rasmus [Thu, 5 Oct 2017 19:30:05 +0000 (21:30 +0200)]
Update Org to v9.1.2

Please note this is a bugfix release.  See etc/ORG-NEWS for details.

7 years agoFix irregularities with CC Mode fontification, particularly with "known types"
Alan Mackenzie [Mon, 18 Sep 2017 08:52:24 +0000 (08:52 +0000)]
Fix irregularities with CC Mode fontification, particularly with "known types"

* lisp/progmodes/cc-fonts.el (c-font-lock-declarators): Introduce a new
optional parameter, template-class.  In "class <X = Y>", fontify "Y" as a
type.
(c-font-lock-single-decl): New variable template-class, set to non-nil when we
have a construct like the above.  Pass this as argument to
c-font-lock-declarators.
(c-font-lock-cut-off-declarators): Check more rigorously that a declaration
being processed starts before the function's starting position.
(c-complex-decl-matchers): Remove the redundant clause which fontified "types
preceded by, e.g., "struct"".

* lisp/progmodes/cc-langs.el (c-template-typename-kwds)
(c-template-typename-key): New lang defconsts and defvar.

7 years agoFix breakage due to recent change in tabulated-list-print-entry
Eli Zaretskii [Thu, 5 Oct 2017 14:57:58 +0000 (17:57 +0300)]
Fix breakage due to recent change in tabulated-list-print-entry

* lisp/emacs-lisp/tabulated-list.el (tabulated-list-printer):
Update the doc string.
(tabulated-list-print-entry): Revert to using only 2 arguments.
Update the doc string.
(tabulated-list-entry-lnum-width): New defvar.
(tabulated-list-print): Compute the width of line-number display
once, then store that value in tabulated-list-entry-lnum-width,
for tabulated-list-printer to use.  (Bug#28704)

7 years ago* lisp/ses.el (ses-print-cell): Fix alignment of text cells. (Bug#27653)
Gemini Lasswell [Thu, 5 Oct 2017 13:49:34 +0000 (16:49 +0300)]
* lisp/ses.el (ses-print-cell): Fix alignment of text cells.  (Bug#27653)

7 years agoSet xterm click count to 1 even with no last click
Alexander Gramiak [Thu, 5 Oct 2017 10:50:02 +0000 (13:50 +0300)]
Set xterm click count to 1 even with no last click

* lisp/xt-mouse.el (xterm-mouse-event): Move the check for
the last click so that click-count is initialized properly.
Handle the value of t for double-click-time.
(Bug#28658)

7 years agoSupport indirection for all shr-tag-* calls
Vasilij Schneidermann [Thu, 5 Oct 2017 10:00:13 +0000 (13:00 +0300)]
Support indirection for all shr-tag-* calls

The 'shr-external-rendering-functions' variable was previously only
honored in the shr-descend function, now all direct calls to the
shr-tag-* functions have been replaced by a call to
'shr-indirect-call' which tries using an alternative rendering
function first.

* lisp/net/shr.el (shr-indirect-call): New helper function.
(shr-descend, shr-tag-object, shr-tag-video):
(shr-collect-extra-strings-in-table): Fix callers to call via
shr-indirect-call.  (Bug#28402)

7 years ago; * etc/NEWS: Fix the "manual-update" marker of a recent addition.
Eli Zaretskii [Thu, 5 Oct 2017 09:55:47 +0000 (12:55 +0300)]
; * etc/NEWS: Fix the "manual-update" marker of a recent addition.

7 years agoSpeed up list-packages when 'visual' line numbers are displayed
Eli Zaretskii [Thu, 5 Oct 2017 09:41:36 +0000 (12:41 +0300)]
Speed up list-packages when 'visual' line numbers are displayed

* lisp/emacs-lisp/tabulated-list.el (tabulated-list-printer):
Update the doc string.
(tabulated-list-print-entry): Accept an additional optional
argument INDENT.  Update the doc string.
(tabulated-list-print): Compute the width of line-number display
once, then call tabulated-list-printer with that value as 3rd
argument.  (Bug#28704)

7 years agoMisc. minor adjustments to Flymake
João Távora [Thu, 5 Oct 2017 01:42:01 +0000 (02:42 +0100)]
Misc. minor adjustments to Flymake

- Add a half-decent minor-mode menu;
- Fix "waiting for backends" mode line message;
- Adjust the flymake-diag-region API;
- Autoload the flymake-log macro;
- Auto-disable the legacy backend in more situations;
- Fix a couple of warnings in legacy backend.

* lisp/progmodes/flymake-proc.el
(flymake-proc--diagnostics-for-pattern): Use new
flymake-diag-region.

* lisp/progmodes/flymake-proc.el
(flymake-proc-legacy-flymake): Do error when no
buffer-file-name or not writable.
(flymake-proc-legacy-flymake)
(flymake-proc-simple-cleanup): Don't reference flymake-last-change-time

* lisp/progmodes/flymake.el (flymake-diag-region):
Autoload.  Take buffer as first argument.

* lisp/progmodes/flymake.el (flymake-switch-to-log-buffer):
New command.
(flymake-menu): Add a simple menu.
(flymake--mode-line-format): Use menu.  Fix message.  Switch to
log buffer when clicking exceptional warnings.

7 years agoFix search for ~/.Xdefaults-HOSTNAME
Johan Bockgård [Wed, 4 Oct 2017 22:24:43 +0000 (15:24 -0700)]
Fix search for ~/.Xdefaults-HOSTNAME

* src/xrdb.c (get_environ_db): Fix typo when handling
~/.Xdefaults-HOSTNAME (Bug#28708).

7 years agoSpeed up (format "%s" STRING) and the like
Paul Eggert [Wed, 4 Oct 2017 21:29:58 +0000 (14:29 -0700)]
Speed up (format "%s" STRING) and the like

Although the Lisp manual said that ‘format’ returns a
newly-allocated string, this was not true for a few cases like
(format "%s" ""), and fixing the documentation to allow reuse of
arguments lets us improve performance in common cases like
(format "foo") and (format "%s" "foo") (Bug#28625).
* doc/lispref/strings.texi (Formatting Strings):
* etc/NEWS:
Say that the result of ‘format’ might not be newly allocated.
* src/callint.c (Fcall_interactively):
* src/dbusbind.c (XD_OBJECT_TO_STRING):
* src/editfns.c (Fmessage, Fmessage_box):
* src/xdisp.c (vadd_to_log, Ftrace_to_stderr):
Just use Fformat or Fformat_message, as that’s simpler and no
longer makes unnecessary copies.
* src/editfns.c (styled_format): Remove last argument, as it
is no longer needed: all callers now want it to behave as if it
were true.  All remaining callers changed.  Make this function
static again.  Simplify the function now that we no longer
need to worry about whether the optimization is allowed.

7 years agoFontify untyped function declarations in C Mode correctly.
Alan Mackenzie [Wed, 4 Oct 2017 17:34:27 +0000 (17:34 +0000)]
Fontify untyped function declarations in C Mode correctly.

Also correct two bugs where deleting WS at a BOL could leave an untyped
function declaration unfontified.

* lisp/progmodes/cc-engine.el (c-find-decl-spots): Don't set the flag
"top-level" when we're in a macro.
(c-forward-decl-or-cast-1): Recognize top-level "foo(bar)" or "foo()" in C
Mode as a implicitly typed function declaration.
(c-just-after-func-arglist-p): Don't get confused by "defined (foo)" inside a
macro.  It's not a function plus arglist.

* lisp/progmodes/cc-langs.el (c-cpp-expr-functions-key): New defconst and
defvar.

* lisp/progmodes/cc-mode.el (c-fl-decl-end): After c-forward-declarator, move
over any following parenthesis expression (i.e. parameter list).
(c-change-expand-fl-region): When c-new-END is at a BOL, include that line in
the returned region, to cope with deletions at column 0.

7 years ago* lisp/net/tramp.el (tramp-tramp-file-p): Use `string-match-p'.
Michael Albinus [Wed, 4 Oct 2017 09:48:37 +0000 (11:48 +0200)]
* lisp/net/tramp.el (tramp-tramp-file-p): Use `string-match-p'.

Reported by Clément Pit-Claudel <cpitclaudel@gmail.com>.

7 years agoAvoid crashes on C-g when several threads wait for input
Eli Zaretskii [Wed, 4 Oct 2017 07:27:49 +0000 (10:27 +0300)]
Avoid crashes on C-g when several threads wait for input

* src/thread.h (m_getcjmp): New member of 'struct thread_state'.
(getcjmp): Define to current thread's 'm_getcjmp'.
* src/thread.c (maybe_reacquire_global_lock): Switch to main
thread, since this is called from a SIGINT handler, which always
runs in the context of the main thread.
* src/lisp.h (sys_jmp_buf, sys_setjmp, sys_longjmp): Move the
definitions before thread.h is included, as thread.h now uses
sys_jmp_buf.
* src/keyboard.c (getcjmp): Remove declaration.
(read_char): Don't call maybe_reacquire_global_lock here.
(handle_interrupt): Call maybe_reacquire_global_lock here, if
invoked from the SIGINT handler, to make sure
quit_throw_to_read_char runs with main thread's Lisp bindings and
uses the main thread's jmp_buf buffer.  (Bug#28630)

7 years ago; Spelling fixes
Paul Eggert [Tue, 3 Oct 2017 23:04:30 +0000 (16:04 -0700)]
; Spelling fixes

7 years agoWarn if --without-pop is now the default
Paul Eggert [Tue, 3 Oct 2017 22:42:10 +0000 (15:42 -0700)]
Warn if --without-pop is now the default

* configure.ac (with_pop): Set to no-by-default if defaulting to "no".
Warn about the change if defaulting to "no".  Update URLs.

7 years ago--with-pop is now the default only on MS-Windows
Paul Eggert [Tue, 3 Oct 2017 22:42:10 +0000 (15:42 -0700)]
--with-pop is now the default only on MS-Windows

Problem reported by N. Jackson (Bug#28597).
This improves an earlier suggestion by Robert Pluim (Bug#28597#47).
* INSTALL, configure.ac, etc/NEWS:
Make --with-pop the default only on native MS-Windows.

7 years agoMerge branch 'emacs-26' of git.sv.gnu.org:/srv/git/emacs into emacs-26
Michael Albinus [Tue, 3 Oct 2017 14:08:04 +0000 (16:08 +0200)]
Merge branch 'emacs-26' of git.sv.gnu.org:/srv/git/emacs into emacs-26

7 years agoAdd support for `file-system-info' in Tramp
Michael Albinus [Tue, 3 Oct 2017 14:07:32 +0000 (16:07 +0200)]
Add support for `file-system-info' in Tramp

* lisp/net/tramp.el (tramp-file-name-for-operation):
Add `file-system-info'.

* lisp/net/tramp-adb.el (tramp-adb-handle-file-system-info): New defun.
(tramp-adb-file-name-handler-alist): Use it.

* lisp/net/tramp-gvfs.el (tramp-gvfs-file-system-attributes)
(tramp-gvfs-file-system-attributes-regexp): New defconst.
(tramp-gvfs-handle-file-system-info): New defun.
(tramp-gvfs-file-name-handler-alist): Use it.
(tramp-gvfs-get-directory-attributes): Fix property name.
(tramp-gvfs-get-root-attributes): Support also file system attributes.

* lisp/net/tramp-sh.el (tramp-sh-handle-file-system-info): New defun.
(tramp-sh-file-name-handler-alist): Use it.
(tramp-sh-handle-insert-directory): Insert size information.
(tramp-get-remote-df): New defun.

* lisp/net/tramp-smb.el (tramp-smb-handle-file-system-info): New defun.
(tramp-smb-file-name-handler-alist): Use it.
(tramp-smb-handle-insert-directory): Insert size information.

* test/lisp/net/tramp-tests.el (tramp-test37-file-system-info):
New test.
(tramp-test38-asynchronous-requests)
(tramp-test39-recursive-load, tramp-test40-remote-load-path)
(tramp-test41-unload): Rename.

7 years agoMerge branch 'scratch/flymake-refactor-clean-for-emacs-26' into emacs-26
João Távora [Tue, 3 Oct 2017 13:48:22 +0000 (14:48 +0100)]
Merge branch 'scratch/flymake-refactor-clean-for-emacs-26' into emacs-26

7 years agoStart rewriting Flymake manual
João Távora [Wed, 27 Sep 2017 17:42:02 +0000 (18:42 +0100)]
Start rewriting Flymake manual

Missing the parts pertaining to the new customization API.

* doc/misc/flymake.texi (Overview of Flymake): Rewrite a bit.
(Installing Flymake): Delete most of this.
(Running the syntax check): Mention flymake-start.
(Navigating to error lines): Rewrite.
(Viewing error messages): Commente out.
(Syntax check statuses, Troubleshooting): Rewrite a bit.
(Customizable variables): New section under "Using
Flymake".  Don't mention any proc variables here.
(Configuring Flymake): Delete
(Proc backend): New chapter
(Proc customization variables): New chapter.

* doc/misc/flymake.texi (Overview of Flymake): Rewrite a bit.
(Installing Flymake): Mostly scratch. Flymake comes with Emacs.
(Running the syntax check): Simplify.
(Viewing error messages): Dekete,
(Syntax check statuses): Rewrite.
(Troubleshooting): Simplify.
(Customizable variables): Rewrite.
(Extending Flymake): New chapter, empty for now.
(The legacy Proc backend): New chapter.
(Proc customizable variables)
(Adding support for a new syntax check tool)
(Implementation overview)
(Making a temporary copy)
(Locating a master file)
(Getting the include directories)
(Locating the buildfile)
(Starting the syntax check process)
(Parsing the output)
(Interaction with other modes)
(Example---Configuring a tool called via make)
(Example---Configuring a tool called directly): Rewrite a bit.

7 years agoMinimal tweak as an attempt to future-proof Flymake API
João Távora [Mon, 2 Oct 2017 12:28:18 +0000 (13:28 +0100)]
Minimal tweak as an attempt to future-proof Flymake API

Discussed with Stefan that this should allow Flymake to request more
from backends in the future, while also allowing backends to report
more accurately.

* lisp/progmodes/elisp-mode.el (elisp-flymake-checkdoc)
(elisp-flymake-byte-compile): Adjust to new API.

* lisp/progmodes/flymake-proc.el ()
(flymake-proc-legacy-flymake): Adjust to new API.

* lisp/progmodes/flymake.el (flymake-diagnostic-functions):
Review API again.
(flymake--handle-report): Allow other keys.  Change ACTION to
REPORT-ACTION.

7 years agoIntegrate Flymake elisp checkers into elisp-mode.el directly
João Távora [Sun, 1 Oct 2017 14:24:15 +0000 (15:24 +0100)]
Integrate Flymake elisp checkers into elisp-mode.el directly

* lisp/progmodes/elisp-mode.el (emacs-lisp-mode): Use
elisp-flymake-checkdoc and elisp-flymake-byte-compile.
(elisp-flymake--checkdoc-1, elisp-flymake-checkdoc)
(elisp-flymake--byte-compile-done)
(elisp-flymake--byte-compile-process)
(elisp-flymake-byte-compile): Rename from flymake-elisp
counterparts in deleted flymake-elisp.el
(elisp-flymake--batch-compile-for-flymake): New helper.
(checkdoc-create-error-function)
(checkdoc-autofix-flag)
(checkdoc-generate-compile-warnings-flag)
(checkdoc-diagnostic-buffer): Forward declare.

* lisp/progmodes/flymake-elisp.el: Delete.

7 years agoHook Flymake onto proper checkdoc and byte-compile interfaces
João Távora [Sun, 1 Oct 2017 12:30:38 +0000 (13:30 +0100)]
Hook Flymake onto proper checkdoc and byte-compile interfaces

The interfaces in bytecomp.el and checkdoc.el are mostly boilerplate,
with little knowledge of actual internals or thought given to the
usefulness of said interfaces in contexts other than Flymake's.

* lisp/emacs-lisp/bytecomp.el
(byte-compile-log-warning-function): New variable.
(byte-compile-log-warning): Use it.
(byte-compile--log-warning-for-byte-compile): New function.

* lisp/emacs-lisp/checkdoc.el
(checkdoc-create-error-function): New variable.
(checkdoc-create-error): Use it.
(checkdoc--create-error-for-checkdoc): New function.xo

* lisp/progmodes/flymake-elisp.el (flymake-elisp--checkdoc-1):
Use checkdoc-create-error-function.
(flymake-elisp--batch-byte-compile): Use
byte-compile-log-warning-function.

7 years agoTweak Flymake autoloads and dependencies
João Távora [Sun, 1 Oct 2017 00:24:31 +0000 (01:24 +0100)]
Tweak Flymake autoloads and dependencies

* lisp/progmodes/elisp-mode.el (emacs-lisp-mode): Add to
flymake-diagnostic-functions here.

* lisp/progmodes/flymake-elisp.el[top]: Don't add to
emacs-lisp-mode-hook.  Don't call flymake-elisp-setup-backends in
every buffer.  (flymake-elisp-checkdoc) (flymake-elisp-byte-compile):
Autoload.  (flymake-elisp-setup-backends): Remove.

* lisp/progmodes/flymake.el: Add some top-level comments.
(flymake-make-diagnostic)
(flymake-mode, flymake-mode-on, flymake-mode-off): Add autoloads

Where to fixup this shit?

7 years agoCapitalize "Flymake" in docstrings and comments
João Távora [Sat, 30 Sep 2017 17:04:45 +0000 (18:04 +0100)]
Capitalize "Flymake" in docstrings and comments

* lisp/progmodes/flymake-elisp.el (flymake-elisp-checkdoc)
(flymake-elisp-setup-backends): Capitalize "Flymake"

* lisp/progmodes/flymake-proc.el:
(flymake-proc-reformat-err-line-patterns-from-compile-el)
(flymake-proc--panic, flymake-proc-legacy-flymake)
(flymake-start-syntax-check, flymake-proc-compile)
(define-obsolete-variable-alias): Capitalize "Flymake"

* lisp/progmodes/flymake.el (flymake-fringe-indicator-position)
(flymake-make-diagnostic, flymake-delete-own-overlays)
(flymake-diagnostic-functions)
(flymake-diagnostic-types-alist, flymake-is-running)
(flymake-make-report-fn, flymake-mode-on, flymake-mode-off)
(flymake-goto-next-error, flymake-goto-prev-error): Capitalize "Flymake"

7 years agoFlymake backends can report multiple times per check
João Távora [Sat, 30 Sep 2017 16:32:53 +0000 (17:32 +0100)]
Flymake backends can report multiple times per check

Rewrote a significant part of the Flymake backend API.  Flymake now
ignores the return value of backend functions: a function can either
returns or errors.  If it doesn't error, a backend is no longer
constrained to call REPORT-FN exactly once.  It may do so any number
of times, cumulatively reporting diagnostics.  Flymake keeps track of
outdated REPORT-FN instances and disconsiders obsolete reports.
Backends should avoid reporting obsolete data by cancelling any
ongoing processing at every renewed call to the backend function.

Consolidated flymake.el internal data structures to require less
buffer-local variables.  Adjusted Flymake's mode-line indicator to the
new semantics.

Adapted and simplified the implementation of elisp and legacy
backends, fixing potential race conditions when calling backends in
rapid succession.

Added a new test for a backend that calls REPORT-FN multiple
times.  Simplify test infrastructure.

* lisp/progmodes/flymake-elisp.el (flymake-elisp-checkdoc)
(flymake-elisp-byte-compile): Error instead of returning nil
if not in emacs-lisp-mode.
(flymake-elisp--byte-compile-process): New buffer-local variable.
(flymake-elisp-byte-compile): Mark (and kill) previous process
obsolete process before starting a new one.  Don't report if
obsolete process.

* lisp/progmodes/flymake-proc.el
(flymake-proc--current-process): New buffer-local variable.
(flymake-proc--processes): Remove.
(flymake-proc--process-filter): Don't bind
flymake-proc--report-fn.
(flymake-proc--process-sentinel): Rewrite.  Don't report if
obsolete process.
(flymake-proc-legacy-flymake): Rewrite.  Mark (and kill)
previous process obsolete process before starting a new
one.  Integrate flymake-proc--start-syntax-check-process
helper.
(flymake-proc--start-syntax-check-process): Delete.
(flymake-proc-stop-all-syntax-checks): Don't use
flymake-proc--processes, iterate buffers.
(flymake-proc-compile):

* lisp/progmodes/flymake.el (subr-x): Require it
explicitly.
(flymake-diagnostic-functions): Reword docstring.
(flymake--running-backends, flymake--disabled-backends)
(flymake--diagnostics-table): Delete.
(flymake--backend-state): New buffer-local variable and new defstruct.
(flymake--with-backend-state, flymake--collect)
(flymake-running-backends, flymake-disabled-backends)
(flymake-reporting-backends): New helpers.
(flymake-is-running): Use flymake-running-backends.
(flymake--handle-report): Rewrite.
(flymake-make-report-fn): Ensure REPORT-FN runs in the correct
buffer or not at all.
(flymake--disable-backend, flymake--run-backend): Rewrite.
(flymake-start): Rewrite.
(flymake-mode): Set flymake--backend-state.
(flymake--mode-line-format): Rewrite.

* test/lisp/progmodes/flymake-tests.el
(flymake-tests--wait-for-backends): New helper.
(flymake-tests--call-with-fixture): Use it.
(included-c-header-files): Fix whitespace.
(flymake-tests--diagnose-words): New helper.
(dummy-backends): Rewrite for new semantics.  Use cl-letf.
(flymake-tests--assert-set): Use quote.
(recurrent-backend): New test.

7 years agoFlymake uses proper idle timers
João Távora [Sat, 30 Sep 2017 09:45:48 +0000 (10:45 +0100)]
Flymake uses proper idle timers

Also, flymake-no-changes-timeout can be set to nil to disable
automatic periodic checks.  But even in that situation the idle timer
still runs at a reduced rate to detect changes in the variable and
revert that decision.

* lisp/progmodes/flymake.el (flymake-no-changes-timeout): Improve doc.
(flymake-last-change-time): Delete.
(flymake--schedule-timer-maybe): New helper.
(flymake-after-change-function): Use it.
(flymake-on-timer-event): Delete
(flymake-mode): Don't scheduler timer.

7 years agoFlymake variable flymake-diagnostic-functions now a special hook
João Távora [Fri, 29 Sep 2017 11:18:30 +0000 (12:18 +0100)]
Flymake variable flymake-diagnostic-functions now a special hook

* lisp/progmodes/flymake-proc.el: Use add-hook to affect
flymake-diagnostic-functions.

* lisp/progmodes/flymake-elisp.el
(flymake-elisp-setup-backends): Use add-hook.

* lisp/progmodes/flymake.el (flymake-diagnostic-functions):
Revise docstring.
(flymake-start): Use run-hook-wrapped.

7 years agoBatch of minor Flymake cleanup actions agreed to with Stefan
João Távora [Fri, 29 Sep 2017 10:02:36 +0000 (11:02 +0100)]
Batch of minor Flymake cleanup actions agreed to with Stefan

Discussed with Stefan, in no particular order

- Remove aliases for symbols thought to be internal to flymake-proc.el
- Don’t need :group in defcustom and defface in flymake.el
- Fix docstring of flymake-make-diagnostic
- Fix docstring of flymake-diagnostic-functions to clarify keywords.
- Mark overlays with just the property ’flymake, not ’flymake-overlay
- Tune flymake-overlays for performance
- Make flymake-mode-on and flymake-mode-off obsolete
- Don’t use hash-table-keys unless necessary.
- Copyright notice in flymake-elisp.

Added some more

- Clarify docstring of flymake-goto-next-error
- Clarify a comment in flymake--run-backend complaining about ert-deftest.
- Prevent compilation warnings in flymake-proc.el
- Remove doctring from obsolete aliases

Now the changelog:

* lisp/progmodes/flymake-elisp.el: Proper copyright notice.

* lisp/progmodes/flymake-proc.el (flymake-warning-re)
(flymake-proc-diagnostic-type-pred)
(flymake-proc-default-guess)
(flymake-proc--get-file-name-mode-and-masks): Move up to
beginning of file to shoosh compiler warnings
(define-obsolete-variable-alias): Delete many obsolete aliases.

* lisp/progmodes/flymake.el (flymake-error-bitmap)
(flymake-warning-bitmap, flymake-note-bitmap)
(flymake-fringe-indicator-position)
(flymake-start-syntax-check-on-newline)
(flymake-no-changes-timeout, flymake-gui-warnings-enabled)
(flymake-start-syntax-check-on-find-file, flymake-log-level)
(flymake-wrap-around, flymake-error, flymake-warning)
(flymake-note): Don't need :group in these defcustom and defface.
(flymake--run-backend): Clarify comment
(flymake-mode-map): Remove.
(flymake-make-diagnostic): Fix docstring.
(flymake--highlight-line, flymake--overlays): Identify flymake
overlays with just ’flymake.
(flymake--overlays): Reverse order of invocation for
cl-remove-if-not and cl-sort.
(flymake-mode-on)
(flymake-mode-off): Make obsolete.
(flymake-goto-next-error, flymake-goto-prev-error): Fix docstring.
(flymake-diagnostic-functions): Clarify keyword arguments in
docstring.

Maybe squash in that one where I remove many obsoletes

7 years agoExplicitly add a(n empty) keymap for Flymake
João Távora [Thu, 28 Sep 2017 13:57:01 +0000 (14:57 +0100)]
Explicitly add a(n empty) keymap for Flymake

Too early to decide what will be in it, if anything.  Though "M-n" and
"M-p" would be great.

* lisp/progmodes/flymake-ui.el (flymake-mode-map): New variable

7 years agoFlymake uses some new fringe bitmaps
João Távora [Thu, 28 Sep 2017 13:17:27 +0000 (14:17 +0100)]
Flymake uses some new fringe bitmaps

Also fix behaviour whereby flymake wouldn't react to a change in the
variable.

* lisp/progmodes/flymake-ui.el (flymake-error-bitmap)
(flymake-warning-bitmap): Update bitmaps.
(flymake-note-bitmap): New defcustom.
(flymake-double-exclamation-mark): New bitmap.
(flymake-error, flymake-warning, flymake-note)
(flymake--highlight-line): 'bitmap property must be a symbol.
Also set default face to flymake-error.
(flymake--fringe-overlay-spec): Bitmap property can be a
variable symbol.

7 years agoRemove old flymake-display-err-menu-for-current-line, it's useless
João Távora [Thu, 28 Sep 2017 11:24:44 +0000 (12:24 +0100)]
Remove old flymake-display-err-menu-for-current-line, it's useless

See https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00949.html

* lisp/progmodes/flymake-ui.el
(flymake-popup-current-error-menu): Remove.

7 years agoTreat Flymake errors as just another type of diagnostic
João Távora [Thu, 28 Sep 2017 11:21:43 +0000 (12:21 +0100)]
Treat Flymake errors as just another type of diagnostic

* lisp/progmodes/flymake.el (flymake--diag-errorp): Remove.
(flymake--handle-report, flymake-popup-current-error-menu):
Don't use it.

7 years agoFix three Flymake bugs when checking C header files
João Távora [Thu, 28 Sep 2017 11:06:56 +0000 (12:06 +0100)]
Fix three Flymake bugs when checking C header files

The first of these problems is longstanding: if an error-less B.h is
included from error-ridden A.h, flymake's legacy parser will panic
(and disable itself) since it sees a non-zero exit for a clean file.
To fix this, recommend returning 'true' in the documentation for the
check-syntax target.

Another problem was introduced by the parser rewrite.  For error
patterns spanning more than one line, point may be left in the middle
of a line and thus render other patterns useless.  Those patterns were
written for the old line-by-line parser.  To make them useful again,
move to the beginning of line in those situations.

The third problem was also longstanding and happened on newer GCC's:
The "In file included from" prefix confused
flymake-proc-get-real-file-name.  Fix this.

Also updated flymake--diag-region to fallback to highlighting a full
line less often.

Add automatic tests to check this.

* lisp/progmodes/flymake-proc.el
(flymake-proc--diagnostics-for-pattern): Fix bug when patterns
accidentally spans more than one line.  Don't create
diagnostics without error messages.
(flymake-proc-real-file-name-considering-includes): New
helper.
(flymake-proc-allowed-file-name-masks): Use it.

* lisp/progmodes/flymake.el (flymake-diag-region): Make COL
argument explicitly optional.  Only fall back to full line in extreme
cases.

* test/lisp/progmodes/flymake-tests.el
(included-c-header-files): New test.
(different-diagnostic-types): Update.

* test/lisp/progmodes/flymake-resources/Makefile
(check-syntax): Always return success (0) error code.
(CC_OPTS): Add -Wextra

* test/lisp/progmodes/flymake-resources/errors-and-warnings.c
(main): Rewrite comments.

* test/lisp/progmodes/flymake-resources/errors-and-warnings.c:
Include some dummy header files.

* test/lisp/progmodes/flymake-resources/no-problems.h: New file.

* test/lisp/progmodes/flymake-resources/some-problems.h: New file.

* doc/misc/flymake.texi (Example---Configuring a tool called
via make): Recommend adding "|| true" to the check-syntax target.

7 years agoAdd interactive flymake-start function
João Távora [Wed, 27 Sep 2017 16:47:14 +0000 (17:47 +0100)]
Add interactive flymake-start function

* lisp/progmodes/flymake.el (flymake-on-timer-event)
(flymake-after-change-function, flymake-mode): Call
flymake-start.
(flymake-start): Rename from flymake--start-syntax-check.

7 years agoA couple of Flymake backends for emacs-lisp-mode
João Távora [Wed, 27 Sep 2017 01:44:06 +0000 (02:44 +0100)]
A couple of Flymake backends for emacs-lisp-mode

Loading flymake-elisp.el doesn't setup flymake-mode to turn on
automatically, but it affects emacs-lisp-mode-hook so that
flymake-diagnostic-functions is setup with a suitable buffer-local
value.  The variable flymake-diagnostic-funtions in every live
emacs-lisp-mode buffer is also adjusted.

* lisp/progmodes/flymake.el (top): Require flymake-elisp.

* lisp/progmodes/flymake-elisp.el: New file.

7 years agoFancy Flymake mode-line construct displays status
João Távora [Wed, 27 Sep 2017 01:31:58 +0000 (02:31 +0100)]
Fancy Flymake mode-line construct displays status

Imitates compilation-mode's mode-line a bit, and uses its faces.

* lisp/progmodes/flymake.el
(flymake-error, flymake-warning, flymake-note): Add
mode-line-face to these flymake error types.
(flymake-note): Notes don't need a noisy fringe bitmap.
(flymake-lighter): Delete.
(flymake--update-lighter): Delete.
(flymake--mode-line-format): New function and variable.
(flymake--diagnostics-table): New buffer-local variable.
(flymake--handle-report): Don't update "lighters".  Affect
flymake--diagnostics-table.
(flymake--run-backend): Init flymake--diagnostics-table for backend.
(flymake-mode): Use flymake--mode-line-format.
(flymake-mode): Don't update lighter.
(flymake--highlight-line): Be more careful when overriding a
nil default overlay property.

7 years agoTweak Flymake commands flymake-goto-[next/prev]-error
João Távora [Wed, 27 Sep 2017 11:42:20 +0000 (12:42 +0100)]
Tweak Flymake commands flymake-goto-[next/prev]-error

Add filters, useful for backends like the upcoming
flymake-elisp-checkdoc backend, for example, which litters everything
with low-priority notes.

Also re-implement wraparound for flymake-goto-next-error. Manual
mentions this, so it's probably a good idea to keep it.  Added a new
customization variable flymake-wrap-around to control it.

* lisp/progmodes/flymake.el (flymake-goto-prev-error)
(flymake-goto-next-error): Accept FILTER argument.
(flymake-wrap-around): New variable.
(flymake-goto-next-error): Wrap around according to flymake-wrap-around.

* test/lisp/progmodes/flymake-tests.el
(different-diagnostic-types, dummy-backends): Pass FILTER to
flymake-goto-prev-error.
(different-diagnostic-types)
(dummy-backends): Use flymake-wrap-around.

7 years agoFlymake's flymake-proc.el backend slightly easier to debug
João Távora [Tue, 19 Sep 2017 13:56:59 +0000 (14:56 +0100)]
Flymake's flymake-proc.el backend slightly easier to debug

Misc cleanup in flymake-proc.el

Improve description of what this file contains.

Better name for the backend function.  Fix the case where it is run
interactively.

Keep the output buffer alive iff the external process panics.

* lisp/progmodes/flymake-proc.el
(flymake-proc-legacy-flymake): Rename from
flymake-proc-start-syntax-check.  Allow running interactively.
(flymake-start-syntax-check): Obsolete alias for
flymake-proc-legacy-flymake.
(flymake-proc-start-syntax-check): Delete.
(flymake-diagnostic-functions): Include flymake-proc-legacy-flymake
(flymake-proc--process-sentinel): Keep output buffer alive.
Clarify with comments.
(flymake-proc--diagnostics-for-pattern)
(flymake-proc--process-sentinel)
(flymake-proc--safe-delete-directory)
(flymake-proc--start-syntax-check-process): Use condition-case-unless-debug.

7 years agoSimplify Flymake logging and erroring
João Távora [Tue, 26 Sep 2017 00:35:43 +0000 (01:35 +0100)]
Simplify Flymake logging and erroring

Use display-warning and a dedicated *Flymake log* buffer.

To ease readability, flymake log messages are now prefixed with a
common prefix and the buffer that originated them.

Some situations of over-zealous logging are fixed.

Use byte-compiler info, if available, to determine whence the
flymake-related log message is coming.

* lisp/progmodes/flymake-proc.el
(flymake-proc--diagnostics-for-pattern): Improve log message.
(flymake-proc--panic): Always flymake-log an error
(flymake-proc--safe-delete-file)
(flymake-proc--safe-delete-directory):
Downgrade warning
(flymake-proc-start-syntax-check): Simplify slightly.
(flymake-proc--start-syntax-check-process): Simplify.
(flymake-proc--init-find-buildfile-dir)
(flymake-proc--init-create-temp-source-and-master-buffer-copy):
No need to warn twice.

* lisp/progmodes/flymake.el (flymake-log): Convert to macro.
(flymake--log-1): New helper.
(flymake-log-level): Deprecate.
(flymake-error): New helper.
(flymake-ler-make-ler, flymake--handle-report, flymake-mode):
Use flymake-error.
(flymake-on-timer-event)
(flymake--handle-report, flymake--disable-backend)
(flymake--run-backend, flymake-start, flymake-mode-on)
(flymake-mode-off, flymake-after-change-function)
(flymake-after-save-hook, flymake-find-file-hook): Adjust
flymake-log calls.

* test/lisp/progmodes/flymake-tests.el
(flymake-tests--call-with-fixture): Only log errors.

7 years agoWork around deprecation of gtk_style_context_get_background_color
Philipp Stephani [Fri, 29 Sep 2017 21:55:57 +0000 (23:55 +0200)]
Work around deprecation of gtk_style_context_get_background_color

* src/gtkutil.c (xg_check_special_colors): Replace call to
gtk_style_context_get_background_color with its definition.

7 years agoNew Flymake API variable flymake-diagnostic-functions
João Távora [Mon, 25 Sep 2017 23:45:46 +0000 (00:45 +0100)]
New Flymake API variable flymake-diagnostic-functions

Lay groundwork for multiple active backends in the same buffer.

Backends are lisp functions called when flymake-mode sees fit.  They
are responsible for examining the current buffer and telling
flymake.el, via return value, if they can syntax check it.
Backends should return quickly and inexpensively, but they are also
passed a REPORT-FN argument which they may or may not call
asynchronously after performing more expensive work.

REPORT-FN's calling convention stipulates that a backend calls it with
a list of diagnostics as argument, or, alternatively, with a symbol
denoting an exceptional situation, usually some panic resulting from a
misconfigured backend.  In keeping with legacy behaviour,
flymake.el's response to a panic is to disable the issuing backend.

The flymake--diag object representing a diagnostic now also keeps
information about its source backend.  Among other uses, this allows
flymake to selectively cleanup overlays based on which backend is
updating its diagnostics.

* lisp/progmodes/flymake-proc.el (flymake-proc--report-fn):
New dynamic variable.
(flymake-proc--process): New variable.
(flymake-can-syntax-check-buffer): Remove.
(flymake-proc--process-sentinel): Simplify.  Use
unwind-protect.  Affect flymake-proc--processes here.
Bind flymake-proc--report-fn.
(flymake-proc--process-filter): Bind flymake-proc--report-fn.
(flymake-proc--post-syntax-check): Delete
(flymake-proc-start-syntax-check): Take mandatory
report-fn.  Rewrite.  Bind flymake-proc--report-fn.
(flymake-proc--process-sentinel): Rewrite and simplify.
(flymake-proc--panic): New helper.
(flymake-proc--start-syntax-check-process): Record report-fn
in process.  Use flymake-proc--panic.
(flymake-proc-stop-all-syntax-checks): Use mapc.  Don't affect
flymake-proc--processes here.  Record interruption reason.
(flymake-proc--init-find-buildfile-dir)
(flymake-proc--init-create-temp-source-and-master-buffer-copy):
Use flymake-proc--panic.
(flymake-diagnostic-functions): Add
flymake-proc-start-syntax-check.
(flymake-proc-compile): Call
flymake-proc-stop-all-syntax-checks with a reason.

* lisp/progmodes/flymake.el (flymake-backends): Delete.
(flymake-check-was-interrupted): Delete.
(flymake--diag): Add backend slot.
(flymake-delete-own-overlays): Take optional filter arg.
(flymake-diagnostic-functions): New user-visible variable.
(flymake--running-backends, flymake--disabled-backends): New
buffer-local variables.
(flymake-is-running): Now a function, not a variable.
(flymake-mode-line, flymake-mode-line-e-w)
(flymake-mode-line-status): Delete.
(flymake-lighter):  flymake's minor-mode "lighter".
(flymake-report): Delete.
(flymake--backend): Delete.
(flymake--can-syntax-check-buffer): Delete.
(flymake--handle-report, flymake--disable-backend)
(flymake--run-backend, flymake--run-backend):  New helpers.
(flymake-make-report-fn): Make a lambda.
(flymake--start-syntax-check): Iterate
flymake-diagnostic-functions.
(flymake-mode): Use flymake-lighter.  Simplify.  Initialize
flymake--running-backends and flymake--disabled-backends.
(flymake-find-file-hook): Simplify.

* test/lisp/progmodes/flymake-tests.el
(flymake-tests--call-with-fixture): Use flymake-is-running the
function.  Check if flymake-mode already active before activating it.
Add a thorough test for flymake multiple backends

* lisp/progmodes/flymake.el (flymake--start-syntax-check):
Don't use condition-case-unless-debug, use condition-case

* test/lisp/progmodes/flymake-tests.el
(flymake-tests--assert-set): New helper macro.
(dummy-backends): New test.

7 years agoMore Flymake cleanup before advancing to backend redesign
João Távora [Sat, 23 Sep 2017 17:15:40 +0000 (18:15 +0100)]
More Flymake cleanup before advancing to backend redesign

Diagnostics are reported for buffers, not necessarily files.  It’s the
backend’s responsibility to compute the buffer where the diagnostic is
applicable.  For now, this has to match the buffer where flymake-mode
is active and which is at the origin of the backend call.

flymake.el knows nothing about line/column diagnostics (except for
backward-compatible flymake-ler-make-ler, which must yet be tested).
It’s also the backend’s reponsibility to compute a BEG and END
positions for the diagnostic in the relevant buffer.

* lisp/progmodes/flymake-proc.el
(flymake-proc--diagnostics-for-pattern): Convert LINE/COL to
region here.  Check file buffer here.
(flymake-proc--process-sentinel): Don’t kill output buffer if
high enough log level.

* lisp/progmodes/flymake.el (flymake-diag-region): Make this a utility
function.  (flymake--highlight-line): Diagnostic has region now.
(flymake-popup-current-error-menu): Don’t add file and line numbers to
already this silly menu.  (flymake--fix-line-numbers): Remove.
(flymake-report): No need to fix diagnostics here.

7 years agoProtect Flymake's eager checks against commands like fill-paragraph
João Távora [Fri, 22 Sep 2017 00:31:23 +0000 (01:31 +0100)]
Protect Flymake's eager checks against commands like fill-paragraph

If flymake-start-syntax-check-on-newline is t, check should start as
soon as a newline is seen by after-change-functions.  But don't rush
it: since the buffer state might not be final, we might end up with
invalid diagnostic regions after some commands silently insert and
delete newlines (looking at you, fill-paragraph).

* lisp/progmodes/flymake.el (flymake-after-change-function): Pass
`deferred' to flymake--start-syntax-check.
(flymake--start-syntax-check): Take optional `deferred' arg.

7 years agoFlymake highlights GCC info/notes as detected by flymake-proc.el
João Távora [Thu, 21 Sep 2017 13:44:13 +0000 (14:44 +0100)]
Flymake highlights GCC info/notes as detected by flymake-proc.el

* lisp/progmodes/flymake-proc.el
(flymake-proc--diagnostics-for-pattern): Rewrite (using cl-loop) to
honour more sophisticated flymake-proc-diagnostic-type-pred.
(flymake-warning-re): Is now an obsolete alias for
flymake-proc-diagnostic-type-pred.
(flymake-proc-diagnostic-type-pred): Rename and augment from
flymake-proc-warning-predicate.  (flymake-proc-warning-predicate):
Delete.

* lisp/progmodes/flymake.el (flymake-note): New face.
(flymake-diagnostic-types-alist): Simplify.
(flymake-note): New overlay category.
(flymake--lookup-type-property): Only lookup single keys, not lists.
(flymake--diag-errorp): Rewrite.
(flymake--highlight-line): Use flymake--lookup-type-property.

* test/lisp/progmodes/flymake-tests.el
(different-diagnostic-types): Rename from errors-and-warnings.
Check notes.
(flymake-tests--call-with-fixture): Use
flymake-proc-diagnostic-type-pred.

7 years agoFlymake checks file names before considering diagnostics
João Távora [Thu, 21 Sep 2017 13:45:21 +0000 (14:45 +0100)]
Flymake checks file names before considering diagnostics

The error patterns for gcc picked up errors for the Makefile itself,
for example.  These shouldn't count as actual errors.

* lisp/progmodes/flymake.el (flymake-report): Check
matching file names.

7 years agoEcho Flymake error messages when navigating errors interactively
João Távora [Thu, 21 Sep 2017 13:20:22 +0000 (14:20 +0100)]
Echo Flymake error messages when navigating errors interactively

Perhaps binding M-n and M-p to flymake-goto-next-error and
flymake-goto-prev-error also wouldn't be a bad idea.

* lisp/progmodes/flymake.el (flymake-goto-next-error): Use
target overlay's help-echo.

7 years agoAdd a new Flymake test for multiple errors and warnings
João Távora [Thu, 21 Sep 2017 13:57:20 +0000 (14:57 +0100)]
Add a new Flymake test for multiple errors and warnings

* test/lisp/progmodes/flymake-tests.el
(flymake-tests--call-with-fixture): Save excursion.
(errors-and-warnings): New test.

* test/lisp/progmodes/flymake-resources/errors-and-warnings.c:
New test fixture.

7 years agoFlymake warning face easier to distinguish
João Távora [Wed, 20 Sep 2017 18:09:10 +0000 (19:09 +0100)]
Flymake warning face easier to distinguish

A orange wavy underline is very hard to tell from a red wavy
underline.

* lisp/progmodes/flymake.el (flymake-warning): Change color to
"deep sky blue"

7 years agoFlymake's flymake-proc.el parses column numbers from gcc/javac errors
João Távora [Tue, 19 Sep 2017 13:25:34 +0000 (14:25 +0100)]
Flymake's flymake-proc.el parses column numbers from gcc/javac errors

Column numbers are not a great way of marking diagnostic regions, but
that's probably all that can be expected from the flymake-proc.el
backend.  For now, try (end-of-thing 'sexp) to discover the
diagnostic's end position.

* lisp/progmodes/flymake-proc.el ()
(flymake-proc-err-line-patterns): Also parse column numbers,
if available, for gcc/javac warnings.