aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add mode map to diagnostic buttonscratch/flymake-diagnostics-bufferMark Oteiza2017-10-101-0/+1
| | | | | * lisp/progmodes/flymake.el (flymake--diagnostics-buffer-entries): Add keymap propery.
* Tweak the Flymake diagnostics buffer againJoão Távora2017-10-091-13/+17
| | | | | | | | | | | * 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.
* Simplify Flymake diagnostics buffer UXMark Oteiza2017-10-091-21/+14
| | | | | | | | | | | | | | 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.
* First stab at a Flymake diagnostics bufferJoão Távora2017-10-071-1/+106
| | | | | | | | | | | | | | | | The diagnostics buffer summarizes the diagnostics of a buffer in a tabulated list and is permanently updated after each Flymake check. * lisp/progmodes/flymake.el (flymake--handle-report): Call flymake-show-diagnostics-buffer under certain conditions. (flymake-menu, flymake--diagnostics-buffer-source) (flymake--diagnostics-buffer-button-keymap) (flymake-show-diagnostic-at-point) (flymake-goto-diagnostic-at-point) (flymake--diagnostics-buffer-entries) (flymake-diagnostics-buffer-mode) (flymake--diagnostics-buffer-name) (flymake-show-diagnostics-buffer): New definitions.
* Fix flymake-goto-next-error when message has %-constructsJoão Távora2017-10-071-1/+2
| | | | | * lisp/progmodes/flymake.el (flymake-goto-next-error): Fix message call. Add missing period in docstring.
* Move the entry about 'format' into Incompatible Lisp ChangesEli Zaretskii2017-10-071-7/+9
| | | | | * etc/NEWS: Move the entry about 'format' refraining from allocating new strings into Incompatible Lisp Changes. (Bug#28625)
* Fix glitches in displaying TTY menusEli Zaretskii2017-10-071-8/+14
| | | | | | | | | | * 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)
* Create new Edebug spec for docstrings and use it in closuresGemini Lasswell2017-10-066-22/+35
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* Avoid byte-compilation warnings in message.elEli Zaretskii2017-10-061-0/+1
| | | | | * lisp/gnus/message.el: Require 'subr-x' when compiling, to avoid compiler warnings.
* Fix bug in recent styled_format changePaul Eggert2017-10-061-3/+11
| | | | | | | | | 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."
* Cleanup emacs-lisp-mode's use of FlymakeJoão Távora2017-10-061-66/+54
| | | | | | | | | | | * 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.
* Fix @include directive in Flymake docJoão Távora2017-10-061-1/+1
| | | | * doc/misc/flymake.texi: Don't @include a relative path.
* Move read-multiple-choice to its own libraryMark Oteiza2017-10-064-172/+201
| | | | | | | * 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.
* * src/process.c (syms_of_process): Remove duplicated call to DEFSYM.Piotr Trojanek2017-10-061-1/+0
| | | | | | Fixes: Bug#28721 Copyright-paperwork-exempt: yes.
* Fix typos in Flymake documentationLele Gaifax2017-10-063-40/+35
| | | | | | | | | | | | | | | | | | | | * 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.
* Revert last change in 'shr-descend'Eli Zaretskii2017-10-061-2/+16
| | | | | | | * 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)
* Don't error when turning on Flymake with no known backendsJoão Távora2017-10-061-12/+8
| | | | | | | 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.
* Delete a Flymake obsolete alias that can't possibly workJoão Távora2017-10-061-11/+0
| | | | | | | | | 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.
* Fix bug with unmounted directory on GNU/LinuxPaul Eggert2017-10-051-1/+12
| | | | | * src/sysdep.c (emacs_get_current_dir_name): Do not use get_current_dir_name result unless it is absolute (Bug#27871).
* ; Update ChangeLog.3Nicolas Petton2017-10-051-1/+28145
|
* ; * Makefile.in: set PREFERRED_BRANCH to emacs-26Nicolas Petton2017-10-051-1/+1
|
* Update authors.elNicolas Petton2017-10-051-2/+5
| | | | | * admin/authors.el (authors-renamed-files-alist) (authors-valid-file-names): Additions.
* Fix dynamic binding wrapper in iter-lambda (bug#25965)Gemini Lasswell2017-10-052-2/+11
| | | | | | | * 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.
* Update Org to v9.1.2Rasmus2017-10-0511-49/+59
| | | | Please note this is a bugfix release. See etc/ORG-NEWS for details.
* Fix irregularities with CC Mode fontification, particularly with "known types"Alan Mackenzie2017-10-052-105/+55
| | | | | | | | | | | | | | | | * 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.
* Fix breakage due to recent change in tabulated-list-print-entryEli Zaretskii2017-10-051-19/+13
| | | | | | | | | | | * 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)
* * lisp/ses.el (ses-print-cell): Fix alignment of text cells. (Bug#27653)Gemini Lasswell2017-10-051-2/+1
|
* Set xterm click count to 1 even with no last clickAlexander Gramiak2017-10-051-2/+4
| | | | | | | * 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)
* Support indirection for all shr-tag-* callsVasilij Schneidermann2017-10-051-16/+19
| | | | | | | | | | | | | 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)
* ; * etc/NEWS: Fix the "manual-update" marker of a recent addition.Eli Zaretskii2017-10-051-1/+1
|
* Speed up list-packages when 'visual' line numbers are displayedEli Zaretskii2017-10-051-13/+20
| | | | | | | | | | * 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)
* Misc. minor adjustments to FlymakeJoão Távora2017-10-052-61/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
* Fix search for ~/.Xdefaults-HOSTNAMEJohan Bockgård2017-10-041-2/+5
| | | | | * src/xrdb.c (get_environ_db): Fix typo when handling ~/.Xdefaults-HOSTNAME (Bug#28708).
* Speed up (format "%s" STRING) and the likePaul Eggert2017-10-047-27/+30
| | | | | | | | | | | | | | | | | | | | | | 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.
* Fontify untyped function declarations in C Mode correctly.Alan Mackenzie2017-10-043-12/+45
| | | | | | | | | | | | | | | | | | | | 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.
* * lisp/net/tramp.el (tramp-tramp-file-p): Use `string-match-p'.Michael Albinus2017-10-041-8/+8
| | | | Reported by Clément Pit-Claudel <cpitclaudel@gmail.com>.
* Avoid crashes on C-g when several threads wait for inputEli Zaretskii2017-10-044-31/+45
| | | | | | | | | | | | | | | | | * 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)
* ; Spelling fixesPaul Eggert2017-10-031-5/+5
|
* Warn if --without-pop is now the defaultPaul Eggert2017-10-031-9/+10
| | | | | * configure.ac (with_pop): Set to no-by-default if defaulting to "no". Warn about the change if defaulting to "no". Update URLs.
* --with-pop is now the default only on MS-WindowsPaul Eggert2017-10-033-10/+20
| | | | | | | 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.
* Merge branch 'emacs-26' of git.sv.gnu.org:/srv/git/emacs into emacs-26Michael Albinus2017-10-0311-1835/+2752
|\
| * Merge branch 'scratch/flymake-refactor-clean-for-emacs-26' into emacs-26João Távora2017-10-0311-1835/+2752
| |\
| | * Start rewriting Flymake manualJoão Távora2017-10-031-301/+237
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * Minimal tweak as an attempt to future-proof Flymake APIJoão Távora2017-10-033-26/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * Integrate Flymake elisp checkers into elisp-mode.el directlyJoão Távora2017-10-032-190/+165
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
| | * Hook Flymake onto proper checkdoc and byte-compile interfacesJoão Távora2017-10-033-22/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * Tweak Flymake autoloads and dependenciesJoão Távora2017-10-033-25/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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?
| | * Capitalize "Flymake" in docstrings and commentsJoão Távora2017-10-033-29/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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"
| | * Flymake backends can report multiple times per checkJoão Távora2017-10-034-470/+609
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * Flymake uses proper idle timersJoão Távora2017-10-031-20/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.