summaryrefslogtreecommitdiff
path: root/lisp/progmodes/flymake-proc.el
Commit message (Collapse)AuthorAgeFilesLines
* Obsolete Flymake's flymake-diagnostic-types-alistJoão Távora2018-06-051-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That varaiable was an association between symbols and properties, effecively duplicating symbol's property lists. It is simpler to just put properties on symbols. Backward compatibility to the old variable has been kept. * doc/misc/flymake.texi (Flymake error types): Don't mention flymake-diagnostic-types-alist. (Flymake error types): Rework section. (Backend functions): Refill a paragraph. (Flymake utility functions): Don't mention flymake-diagnostic-types-alist. (Proc customization variables): Don't mention flymake-diagnostic-types-alist. * etc/NEWS: Mention obsoletion of flymake-diagnostic-types-alist. * lisp/progmodes/flymake-proc.el (flymake-proc--diagnostics-for-pattern): Don't use flymake-diagnostic-types-alist. * lisp/progmodes/flymake.el: Rewrite commentary. (flymake-make-diagnostic, flymake-mode, flymake-goto-next-error) (flymake-goto-prev-error): Don't mention flymake-diagnostic-types-alist in docstring. (flymake-diagnostic-types-alist): Make obsolete. (:error, :warning, :note): Put flymake-category in these symbols. (flymake-error, flymake-warning, flymake-note): Put `flymake-bitmap', not `bitmap' in these symbols. (flymake--lookup-type-property, flymake--highlight-line): Rewrite. Honor flymake-diagnostic-types-alist for backward compatibility. * lisp/progmodes/python.el (python-flymake-msg-alist): Don't mention flymake-diagnostic-types-alist.
* Update version information for Flymake package and manualJoão Távora2018-06-051-2/+2
| | | | | | | | | | * doc/misc/flymake.texi: Update date and version. Make myself the first author. * lisp/progmodes/flymake.el: Update Maintainer and Version fields. * lisp/progmodes/flymake-proc.el (flymake-proc--diagnostics-for-pattern): Update Maintainer and Version fields.
* Fix filesystem littering by Flymake's legacy backendJoão Távora2018-05-111-36/+36
| | | | | | | | | | | | The Flymake legacy "proc" backend, which is active by default will try to syntax-check foo.c/foo.cpp and many other types of files, but on failing to find a suitable Makefile target, will fail. There's nothing wrong with that except that it used to leave behind the foo_flymake.c and foo_flymake.cpp auxiliary files behind, littering the filesystem. * lisp/progmodes/flymake-proc.el (flymake-proc-legacy-flymake): Call init-function inside of the unwind-protect.
* The tedious game of whack-a-mole with compiler warnings continuesGlenn Morris2018-04-201-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/abbrev.el (edit-abbrevs-map): * lisp/emacs-lock.el (emacs-lock-from-exiting): * lisp/htmlfontify.el (hfy-optimisations): * lisp/ielm.el (inferior-emacs-lisp-mode-hook) (inferior-emacs-lisp-mode-map): * lisp/isearch.el (isearch-lazy-highlight-word): * lisp/select.el (x-select-enable-clipboard, x-select-enable-primary): * lisp/shell.el (shell-dirtrack-mode): * lisp/skeleton.el (skeleton-transformation, skeleton-filter): * lisp/startup.el (inhibit-splash-screen, inhibit-startup-message): * lisp/window.el (even-window-heights): * lisp/calendar/timeclock.el (timeclock-modeline-display): * lisp/cedet/semantic/db-mode.el (semanticdb-mode-hook) (semanticdb-global-mode): * lisp/emacs-lisp/edebug.el (gud-inhibit-global-bindings): * lisp/emacs-lisp/warnings.el (display-warning-minimum-level) (log-warning-minimum-level): * lisp/erc/erc-dcc.el (erc-dcc-chat-filter-hook): * lisp/gnus/nnspool.el (news-path): * lisp/org/org-agenda.el (org-agenda-search-view-search-words-only) (org-agenda-remove-tags-when-in-prefix) (org-agenda-align-tags-to-column, org-agenda-keymap): * lisp/org/org.el (org-special-ctrl-a) (org-log-state-notes-into-drawer) (org-agenda-multi-occur-extra-files): * lisp/progmodes/flymake-proc.el (flymake-err-line-patterns) (flymake-check-file-limit): * lisp/progmodes/make-mode.el (makefile-query-one-target-method): * lisp/progmodes/octave.el (inferior-octave-startup-hook): * lisp/progmodes/python.el (python-buffer) (python-preoutput-result): * lisp/progmodes/sql.el (sql-dialect): * lisp/textmodes/artist.el (artist-text-renderer): * lisp/textmodes/bibtex.el (bibtex-autokey-name-case-convert) (bibtex-autokey-titleword-case-convert): * lisp/textmodes/flyspell.el (flyspell-generic-check-word-p): * lisp/textmodes/ispell.el (ispell-format-word): * lisp/textmodes/rst.el (rst-preferred-decorations): * lisp/textmodes/sgml-mode.el (sgml-transformation): Move aliases before targets, to silence new compiler warning. * lisp/term/ns-win.el (ns-option-modifier, ns-right-option-modifier): Silence warning.
* Merge from origin/emacs-26Paul Eggert2018-01-011-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 63b04c11d5 Fix copyright years by hand 5c7dd8a783 Update copyright year to 2018 220a9ecba1 Merge from Gnulib 312c565566 Don't add empty keyboard macro to macro ring (Bug#24992) 39ca289a7a Allow customization of decoding of "man" command f8240815ea * etc/NEWS: Add security consideration note on passphrase ... 0c78822c70 Fix subtle problem with scroll-down when scroll-margin is ... acd289c5a4 Fix problems with indexing in User manual b240c7846b * lisp/help.el (describe-key): Only (copy-sequence elt) wh... e879a5444a * src/buffer.c (Frestore_buffer_modified_p): Fix bug#29846 81b1028b63 Improve documentation of 'inhibit-modification-hooks' and ... 7175496d7a Fix doc string of 'enable-recursive-minibuffers' 5b38406491 Fix documentation of delsel and of killing text # Conflicts: # etc/NEWS # etc/refcards/ru-refcard.tex
| * Update copyright year to 2018Paul Eggert2018-01-011-1/+1
| | | | | | | | Run admin/update-copyright.
* | Merge from origin/emacs-26Glenn Morris2017-12-201-70/+71
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b3f4a3a (origin/emacs-26) Special-case %DUMBFW for GnuTLS between 3.2... c2ae057 Work around GnuTLS version issues with %DUMBFW (tiny change) 2f9d9ef ; Remove the mention of "plain C code" in the docstring as well aca827b Merge branch 'widen-less' into emacs-26 87548f5 ; Rephrase NEWS entry a bit da0d773 (emacs-26) ; * lisp/erc/erc.el: Update URL. 3a60515 * lisp/erc/erc.el (erc-shorten-server-name): Silence compiler... 471b6c1 ; Replace non-ascii quote characters in doc strings etc 7af7f5e Fix some more aliases to user options 79fb4b5 Fix some flymake aliases b9fbc03 (origin/widen-less) Widen in indent-for-tab-command in the no... 446faf3 Replace the mention of c-indent-defun with js-indent-line 7e9eef0 Consolidate 'widen' calls # Conflicts: # etc/NEWS # lisp/progmodes/flymake-proc.el
| * Fix some flymake aliasesGlenn Morris2017-12-201-70/+71
| | | | | | | | | | | | | | | | * lisp/progmodes/flymake-proc.el (flymake-xml-program) (flymake-compilation-prevents-syntax-check, flymake-master-file-dirs) (flymake-master-file-count-limit, flymake-allowed-file-name-masks): * lisp/progmodes/flymake.el (flymake-start-syntax-check-on-find-file): Define aliases to user options before the options are defined.
* | Merge from origin/emacs-26Paul Eggert2017-11-251-1/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a89f0b6f33 maint: shorten https://lists.gnu.org/archive/html/... links 8be3aee281 Merge from Gnulib 265cee553f Work around GCC bug 80776 on Fedora 27 x86 dc7a97fb84 Tweak copy-file, rename-file doc cfa2a944d4 Change font-lock-extend-region-multiline handling in mhtml... a8664cc998 Minor cleanup in tramp-gvfs-handle-file-local-copy 55c5b12fa0 Add test for Bug#29423 in Tramp. 3198a1646e Avoid jumbled order in HTML rendered by shr.el 23bfc2d2db Make sure 'dired-filename' property is always put by ls-lisp f7fdaea4c0 A better solution for bug#29347 86e6ed8521 ; * src/thread.c (acquire_global_lock): Fix thinko in last... f300852037 Avoid a hang after C-g while sit-for on a Unix TTY d7fc719ff1 Improve the doc string of 'list-packages' b4f67ebb92 Improve discoverability of 'defvar' for suppressing warnings 8a2b204e64 Improve discoverability of 'read-buffer-completion-ignore-... eea4e9194c Improve documentation of self-insert-uses-region-functions e6e41dac87 Reflect changes in copy-file and rename-file in doc strings 0ec534070f * lisp/progmodes/cc-vars.el (c-offsets-alist): Doc fix. (... 1d0dbdff6c Reorder type predicates in ELisp manual b081ec9dd7 Fix backward scrolling in buffers with header-line 8e40429c96 ; Fix some doc typos ed2c542920 * lisp/bindings.el (buffer-file-coding-system): Add explic... d82474e452 * src/fns.c (syms_of_fns) <overriding-plist-environment>: ... 292c09ff6d Fix incorrect interaction of drag/drop and double click (b... d6fadb1d26 * lisp/menu-bar.el (menu-bar-options-save): Add display-li... daa959efbc * lisp/menu-bar.el (menu-bar-options-save): Add global-dis... 17fc74d1b9 * lisp/follow.el (follow-mode): Restore mode line lighter.... f20c2e2f3d ; Compare process status against 127 exactly 2d203ffb7e Extract the common part of ruby-flymake-simple and ruby-fl... 09944d499a Add Rubocop Flymake backend c65a0ae7c4 ; Fix a typo 7ab7603125 Update nt/INSTALL.W64 (Bug#28601) 11db253c08 Remove incorrect NEWS item about VC state indicator (Bug#2... 2fdc01c036 * lisp/emacs-lisp/byte-run.el (defsubst): Doc fix. 735c8b516e Make c-defun-name analyze more thoroughly a function type ... 92f0c4cd56 Avoid bogus abbreviated file names if HOME changes 8d450453fa * lisp/emacs-lisp/byte-run.el (inline): Give it a doc. 37a3b4ea40 Fix erc keep-place module with new defaults (Bug#29111) 6c312605bf Add window divider faces to NS (bug#29353) # Conflicts: # etc/NEWS # lisp/ruler-mode.el
| * ; Fix a typoDmitry Gutov2017-11-221-1/+1
| |
* | Merge from origin/emacs-26Paul Eggert2017-11-081-1/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 255ba01148 Fix handling of nil PRED2 arg for completion-table-with-pr... 949b70a7d8 ; Minor comment copyedit in window.c 20f9bf30f0 Describe Lao rendering problem 3d61657694 Fix docstring of arabic-shaper-ZWNJ-handling db949166ec Handle single-line comments correctly (Bug#26049) 795bb233a5 * test/lisp/net/tramp-tests.el (tramp-test16-file-expand-w... ba00ea7d0d * etc/PROBLEMS: Add URL to relevant issues for xterm+evil bug 4a6015811e ; In text.texi fix typo spotted by Štěpán Němec 93cd8415b2 Document new treatment of 'comment-auto-fill-only-comments' ca2d94ba61 Do not load Tramp unless `tramp-mode' is non-nil 709478eaa8 Prefer `customize-set-variable' in tramp.texi 5d36f2227f Fix last change in hscroll_window_tree 72d07d1950 Ediff: add some missing documentation 18af404ef3 Support python virtualenv on w32 (Bug#24464) efd0371c23 Improve dired deletion error handling (Bug#28797) 5d744e032f Don't replace user input when completion prefix is empty (... ec6cf35c5f ; Describe xt-mouse problems with Evil mode c572e1f329 Return non-nil from gnutls-available-p under GnuTLS 2.x a2cc6d74c5 Fix Flymake help-echo functions across windows (bug#29142) 58bb3462ee Add tests for Flymake backends for Ruby and Perl 58e742b21d Add a Flymake backend for Perl 9dee764165 Add a Flymake backend for Ruby 3ad712ebc9 Add a Flymake backend for Python (bug#28808) 8db2b3a79b Allow "%" in Tramp host names 8c50842790 ; Fix typo in test/file-organization.org 00fa4449cd ; Fix typo 918a2dda07 Use hybrid malloc for FreeBSD (Bug#28308) 725ab635d9 Add html-, mhtml- and python-mode support to semantic symref 369da28702 Improve documentation of 'window-scroll-functions' 93818eed8a Fix subtle problems in tabulated-list-mode with line numbers 1f1de8e872 Make gdb-non-stop-setting default to nil on MS-Windows 680e8e119b Fix gdb-mi prompt after "attach PID" command ff33074546 Fix doc string of 'window-configuration-change-hook' 787b75ad71 Improve documentation of window hooks d9be8704ae Fix hscroll suspension after cursor motion 6f43d29d29 ; * CONTRIBUTE, admin/make-tarball.txt: Doc tweaks re 'ema... a0d30d6369 Introduce a function to CC Mode which displays the current... 383abc8898 ; Fix some comment typos b02c2714c3 Fix typos in ediff-wind.el 4f38bdec74 Examine tex-chktex--process in the correct buffer 94b490529a * nt/INSTALL.W64: Update to current mingw64 install instru... c25113d4ac Don't resignal errors in flymake-diag-region e950f329c0 New xref-quit-and-goto-xref command bound to TAB (bug#28814) 5d34e1b288 Allow split-window-sensibly to split threshold in further ... 2a973edeac Honor window-switching intents in xref-find-definitions (b... 78e9065e9f * lisp/emacs-lisp/generator.el (iter-do): Add a debug decl... caa63cc96c * lisp/progmodes/flymake.el (flymake-start): Fix dead buff... 9f4f130b79 Fix buffer name comparison in async shell-command # Conflicts: # etc/NEWS # lisp/vc/ediff-wind.el
| * Add a Flymake backend for PerlJoão Távora2017-11-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Define a simple backend in perl-mode.el, which cperl-mode.el also uses. * lisp/progmodes/cperl-mode.el (cperl-mode): Add to flymake-diagnostic-functions. * lisp/progmodes/flymake-proc.el (flymake-proc-allowed-file-name-masks): Disable legacy backend for perl files. * lisp/progmodes/perl-mode.el (perl-flymake-command): New defcustom. (perl--flymake-proc): New buffer-local variable. (perl-flymake): New function. (perl-mode): Add to flymake-diagnostic-functions.
* | Merge from origin/emacs-26Paul Eggert2017-11-021-4/+4
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 460fe4a1bc ; Doc fixes 41adf3281e Avoid duplicate calls to xfree for the same pointer 3e7ebbe1bd Don't clobber docstrings of explicitly-defined mode hook v... 9c8fe0248b Avoid fullscreen ediff control frames by default (Bug#29026) 7d32176acc Fix the bug#24034 change (revno 9eb028f) causing infloop (... ee493663ba Merge branch 'emacs-26' of git.savannah.gnu.org:/srv/git/e... ca5eb0d0b7 Fix a typo in the ELisp manual d10c9479ca Fix doc and doc-strings for minibuffer window related func... 18331d00da Fix "Args out of range" error in c-determine-limit. Fixes... edde35e6f8 * lisp/progmodes/perl-mode.el: Fix electric indentation wi... 056587c45f Extend mhtml submode region when in comment 4c4ad80848 Fix mthml submode lighting at end of buffer 557e252aa2 Remember more variables in mhtml-mode 336cd0a11a ; * lisp/select.el (select-enable-primary): Add missing pe... 134099bc90 ; * etc/NEWS (EUDC): Mark as not requiring documentation. 1a340274bf * etc/NEWS (EUDC): Deprecate BBDB 2.x backward compatibility. 4189d0ef7b Fix minibuffer window related docs and strings (Bug#28978) 2ebdde6e9c Add ChkTeX flymake backend for latex-mode 5b59841791 Fix doc typos 82a16c547b Fix some duplicate word typos 266888b1d7 * doc/lispref/commands.texi (Adjusting Point): Fix wording... 00c3c6d88d Avoid segfaults in 64-bit Windows builds a8e6741066 Fix conversion of pixel coordinates to buffer position d43b486f6c Fix doc strings in desktop.el 9102fb603e Add Index to ERT manual 68182a4710 Make manuals and NEWS consistent 451823b0e5 Don't allow (minibuffer-window-active-p nil) to return t cc8f72ca22 Clarify obsolescence message for 'whitespace-tab' 50f711e7fa Fix some duplicate words typos 8bd9524a7c * lisp/button.el (button-activate): Fix doc typo. 0b0d91e60a * lisp/calendar/todo-mode.el (todo-toggle-mark-item): Fix ... e6b4e5ffdf Fix some doc typos e8636ac8cc Fix startup display on Cygwin 3926c5ad83 * src/fileio.c (Fset_default_file_modes): Fix typo in doc ... 9715317dfd * lisp/dired.el (dired-find-alternate-file): Doc fix. (Bu... 9e442a001a Improve documentation of how faces are applied to display ... 1bda71ec3b Improve pixel-scroll-mode 196106d37d Support Certification Authority Authorization in dns-mode.el ec08d70b4f Improve documentation of set-default-file-modes # Conflicts: # etc/NEWS
| * Fix some duplicate words typosGlenn Morris2017-10-271-4/+4
| | | | | | | | | | | | | | | | | | | | * lisp/erc/erc.el (erc-hide-current-message-p): * lisp/progmodes/flymake-proc.el (flymake-proc-diagnostic-type-pred): * doc/lispref/display.texi (Bidirectional Display, Delayed Warnings): * doc/lispref/functions.texi (Defining Functions): * doc/lispref/os.texi (Terminal-Specific): * doc/misc/sem-user.texi (Analyzer Debug): * doc/misc/srecode.texi (Special Variables): Fix typos.
* | User can specify files never subject to flymake.Sam Steingold2017-11-011-9/+24
|/ | | | | | | * lisp/progmodes/flymake-proc.el (flymake-proc-ignored-file-name-regexps): Add user customization option. (flymake-proc--get-file-name-mode-and-masks): Check it before `flymake-proc-allowed-file-name-masks'.
* ; Prefer https: to http: in GNU URLsPaul Eggert2017-10-141-1/+1
|
* Don't log "emergencies" in the Flymake legacy backendJoão Távora2017-10-101-2/+2
| | | | | * lisp/progmodes/flymake-proc.el (flymake-proc--panic) (flymake-proc-legacy-flymake): Don't log "emergencies"
* Fix typos in Flymake documentationLele Gaifax2017-10-061-4/+3
| | | | | | | | | | | | | | | | | | | | * 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.
* Misc. minor adjustments to FlymakeJoão Távora2017-10-051-19/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
* Minimal tweak as an attempt to future-proof Flymake APIJoão Távora2017-10-031-3/+4
| | | | | | | | | | | | | | | | | 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.
* Capitalize "Flymake" in docstrings and commentsJoão Távora2017-10-031-6/+6
| | | | | | | | | | | | | | | | | | * 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-031-124/+123
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 variable flymake-diagnostic-functions now a special hookJoão Távora2017-10-031-2/+1
| | | | | | | | | | | | * 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.
* Batch of minor Flymake cleanup actions agreed to with StefanJoão Távora2017-10-031-333/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix three Flymake bugs when checking C header filesJoão Távora2017-10-031-5/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Flymake's flymake-proc.el backend slightly easier to debugJoão Távora2017-10-031-24/+44
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Simplify Flymake logging and erroringJoão Távora2017-10-031-16/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* New Flymake API variable flymake-diagnostic-functionsJoão Távora2017-10-031-95/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* More Flymake cleanup before advancing to backend redesignJoão Távora2017-10-031-13/+20
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* Flymake highlights GCC info/notes as detected by flymake-proc.elJoão Távora2017-10-031-53/+68
| | | | | | | | | | | | | | | | | | | | | | | | * 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.
* Flymake's flymake-proc.el parses column numbers from gcc/javac errorsJoão Távora2017-10-031-2/+2
| | | | | | | | | | | 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.
* New Flymake variable flymake-diagnostic-types-alist and much cleanupJoão Távora2017-10-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A new user-visible variable is introduced where different diagnostic types can be categorized. Flymake backends can also contribute to this variable. Anything that doesn’t match an existing error type is considered. The variable’s alists are used to propertize the overlays pertaining to each error type. The user can override the built-in properties by either by modifying the alist, or by modifying the properties of a special "category" symbol, named by the `flymake-category' entry in the alist. The `flymake-category' entry is especially useful for, say, the author of foo-flymake-backend, who issues diagnostics of type :foo-note, that should behave like notes, except with no fringe bitmap: (add-to-list 'flymake-diagnostic-types-alist '(:foo-note . ((flymake-category . flymake-note) (bitmap . nil)))) For essential properties like `severity', `priority', etc, a default value is produced. Some properties like `evaporate' cannot be overriden. * lisp/progmodes/flymake.el (flymake--diag): Rename from flymake-ler. (flymake-ler-make): Obsolete alias for flymake-diagnostic-make (flymake-ler-errorp): Rewrite using flymake--severity. (flymake--place-overlay): Delete. (flymake--overlays): Now a cl-defun with &key args. Document. Use `overlays-at' if BEG is non-nil and END is nil. (flymake--lookup-type-property): New helper. (flymake--highlight-line): Rewrite. (flymake-diagnostic-types-alist): New API variable. (flymake--diag-region) (flymake--severity, flymake--face) (flymake--fringe-overlay-spec): New helper. (flymake-popup-current-error-menu): Use new flymake-overlays. (flymake-popup-current-error-menu, flymake-report): Use flymake--diag-errorp. (flymake--fix-line-numbers): Use flymake--diag-line. (flymake-goto-next-error): Pass :key to flymake-overlays * lisp/progmodes/flymake-proc.el (flymake-proc--diagnostics-for-pattern): Use flymake-diagnostic-make.
* Flymake diagnostics now apply to arbitrary buffer regionsJoão Távora2017-10-031-23/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make Flymake UI some 150 lines lighter Strip away much of the original implementation's complexity in manipulating objects representing diagnostics as well as creating and navigating overlays. Lay some groundwork for a more flexible approach that allows for different classes of diagnostics, not necessarily line-based. Importantly, one overlay per diagnostic is created, whereas the original implementation had one per line, and on it it concatenated the results of errors and warnings. This means that currently, an error and warning on the same line are problematic and the warning might be overlooked but this will soon be fixed by setting appropriate priorities. Since diagnostics can highlight arbitrary regions, not just lines, the faces were renamed. Tests pass and backward compatibility with interactive functions is maintained, but probably any third-party extension or customization relying on more than a trivial set of flymake.el internals has stopped working. * lisp/progmodes/flymake-proc.el (flymake-proc--diagnostics-for-pattern): Use new flymake-ler-make constructor syntax. * lisp/progmodes/flymake.el (flymake-ins-after) (flymake-set-at, flymake-er-make-er, flymake-er-get-line) (flymake-er-get-line-err-info-list, flymake-ler-set-file) (flymake-ler-set-full-file, flymake-ler-set-line) (flymake-get-line-err-count, flymake-get-err-count) (flymake-highlight-err-lines, flymake-overlay-p) (flymake-make-overlay, flymake-region-has-flymake-overlays) (flymake-find-err-info) (flymake-line-err-info-is-less-or-equal) (flymake-add-line-err-info, flymake-add-err-info) (flymake-get-first-err-line-no) (flymake-get-last-err-line-no, flymake-get-next-err-line-no) (flymake-get-prev-err-line-no, flymake-skip-whitespace) (flymake-goto-line, flymake-goto-next-error) (flymake-goto-prev-error, flymake-patch-err-text): Delete functions no longer used. (flymake-goto-next-error, flymake-goto-prev-error): Rewrite. (flymake-report): Rewrite. (flymake-popup-current-error-menu): Rewrite. (flymake--highlight-line): Rename from flymake-highlight-line. Call `flymake--place-overlay. (flymake--place-overlay): New function. (flymake-ler-errorp): New predicate. (flymake-ler): Simplify. (flymake-error): Rename from flymake-errline. (flymake-warning): Rename from flymake-warnline. (flymake-warnline, flymake-errline): Obsoletion aliases. * test/lisp/progmodes/flymake-tests.el (warning-predicate-rx-gcc) (warning-predicate-function-gcc, warning-predicate-rx-perl) (warning-predicate-function-perl): Use face `flymake-warning'.
* Move symbols in flymake-proc.el to separate namespaceJoão Távora2017-10-031-226/+531
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Every symbol in this flymake now starts with the prefix flymake-proc-. Make obsolete aliases for (almost?) every symbol. Furthermore, many flymake-proc.el symbols are prefixed with "flymake-proc--", that is they were considered internal. Some customization variables, interactive functions, and other symbols considered useful to user customizations or third-party libraries are considered "public" or "external" and so use a "flymake-proc-" prefix. * lisp/progmodes/flymake-proc.el: Every symbol renamed. * test/lisp/progmodes/flymake-tests.el (flymake-tests--current-face): Use flymake-proc-warning-predicate, not flymake-warning-predicate. * lisp/progmodes/flymake-proc.el (flymake-proc--get-project-include-dirs-function) (flymake-proc--get-project-include-dirs-imp) (flymake-proc--get-include-dirs-dot) (flymake-proc--get-tex-args) (flymake-proc--find-make-buildfile) (flymake-proc--get-syntax-check-program-args) (flymake-proc--init-create-temp-source-and-master-buffer-copy) (flymake-proc--init-find-buildfile-dir) (flymake-proc--get-full-nonpatched-file-name) (flymake-proc--get-full-patched-file-name) (flymake-proc--base-dir, flymake-proc--temp-master-file-name) (flymake-proc--master-file-name) (flymake-proc--temp-source-file-name) (flymake-proc--delete-temp-directory) (flymake-proc--kill-process) (flymake-proc--start-syntax-check-process) (flymake-proc--compilation-is-running) (flymake-proc--safe-delete-directory) (flymake-proc--safe-delete-file) (flymake-proc--get-program-dir) (flymake-proc--restore-formatting) (flymake-proc--clear-project-include-dirs-cache) (flymake-proc--project-include-dirs-cache) (flymake-proc--get-system-include-dirs) (flymake-proc--get-project-include-dirs) (flymake-proc--add-project-include-dirs-to-cache) (flymake-proc--get-project-include-dirs-from-cache) (flymake-proc--post-syntax-check) (flymake-proc--process-sentinel) (flymake-proc--process-filter) (flymake-proc--create-master-file) (flymake-proc--find-buffer-for-file) (flymake-proc--copy-buffer-to-temp-buffer) (flymake-proc--read-file-to-temp-buffer) (flymake-proc--save-buffer-in-file) (flymake-proc--replace-region, flymake-proc--check-include) (flymake-proc--check-patch-master-file-buffer) (flymake-proc--master-file-compare) (flymake-proc--find-possible-master-files) (flymake-proc--included-file-name, flymake-proc--same-files) (flymake-proc--fix-file-name, flymake-proc--find-buildfile) (flymake-proc--clear-buildfile-cache) (flymake-proc--add-buildfile-to-cache) (flymake-proc--get-buildfile-from-cache) (flymake-proc--find-buildfile-cache) (flymake-proc--get-real-file-name-function) (flymake-proc--get-cleanup-function) (flymake-proc--get-init-function) (flymake-proc--get-file-name-mode-and-masks) (flymake-proc--processes): Rename to internal symbol from flymake-proc- version.
* Completely rewrite Flymake's subprocess output processingJoão Távora2017-10-031-157/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of parsing and matching regexps line-by-line, insert subprocess output in a separate buffer and parse using `search-forward-regexp'. This eventually enables multi-line error patterns and simplifies code all around. Store per-check information in the subprocess using `process-get' and `process-put'. Treat error messages, warnings, etc. more generically as "diagnostics". Create these objects as soon as possible, reusing existing `flymake-ler' structure. Fix some whitespace. * lisp/progmodes/flymake.el (cl-lib): Require also when loading. (flymake--fix-line-numbers): Rename from flymake-fix-line-numbers. Simplify. (flymake-report): Call flymake--fix-line-numbers. Rearrange plain diagnostics list into alist format expected by flymake-highlight-err-lines. * lisp/progmodes/flymake-proc.el (flymake-process-filter): Insert process output and parse in dedicated output buffer. (flymake-proc--diagnostics-for-pattern): New helper function. (flymake-process-sentinel): Call flymake-post-syntax-check with collected diagnostics. Kill output buffer. (flymake-post-syntax-check): Receive diagnostics as third argument. (flymake-parse-output-and-residual, flymake-new-err-info) (flymake-parse-residual, flymake-parse-err-lines) (flymake-split-output, flymake-proc-parse-line) (flymake-output-residual): Delete. (flymake-start-syntax-check-process): Use make-process. Setup dedicated an output buffer
* Flymake provides flymake-report re-entry point for backendsJoão Távora2017-10-031-25/+13
| | | | | | | * lisp/progmodes/flymake-proc.el (flymake-post-syntax-check): Simplify. Call flymake-report. * lisp/progmodes/flymake.el (flymake-report): New function.
* Split Flymake into flymake.el into flymake-proc.el (again!)João Távora2017-10-031-0/+1070
| | | | | | | | | | | | | | | | | | | | | | | | | | | | After deciding that this work would continue on master only, which caused two commits named Revert "Split flymake.el into flymake-proc.el and flymake-ui.el" and Revert "Add flymake-backends defcustom" to be added to the emacs-26 branch, further discussion reversed that decision. See: https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg01020.html https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg01030.html This means that those two commits MUST be merged to master AFTER ALL. flymke-proc.el contains the main syntax-checking backend, while flymake.el keeps mostly the UI part. * lisp/progmodes/flymake-proc.el: New file. Require flymake. * lisp/progmodes/flymake.el: Require flymake-proc.el at the end.
* Revert "Split flymake.el into flymake-proc.el and flymake-ui.el"João Távora2017-09-281-1091/+0
| | | | | | | | | | | | | | | | In other words, re-coalesce the two files, lisp/progmodes/flymake-proc.el and lisp/progmodes/flymake-ui.el, back into a single one, lisp/progmodes/flymake.el. The changesets "Prefer HTTPS to FTP and HTTP in documentation" and "allow nil init in flymake-allowed-file-name-masks to disable flymake" are kept in place in the new lisp/progmodes/flymake.el. This reverts Git commit eb34f7f5a29e7bf62326ecb6e693f28878be28cd. Don't merge this back to master as development happening there builds upon this work. See also https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00932.html.
* Revert "Add flymake-backends defcustom"João Távora2017-09-281-16/+7
| | | | | | | | This reverts Git commit 13993c46a21495167517f76d2e36b6c09ac5e89e. Don't merge this back to master as development happening there builds upon this work. See also https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00932.html
* Prefer HTTPS to FTP and HTTP in documentationPaul Eggert2017-09-131-1/+1
| | | | | | | | | | | | | Most of this change is to boilerplate commentary such as license URLs. This change was prompted by ftp://ftp.gnu.org's going-away party, planned for November. Change these FTP URLs to https://ftp.gnu.org instead. Make similar changes for URLs to other organizations moving away from FTP. Also, change HTTP to HTTPS for URLs to gnu.org and fsf.org when this works, as this will further help defend against man-in-the-middle attacks (for this part I omitted the MS-DOS and MS-Windows sources and the test tarballs to keep the workload down). HTTPS is not fully working to lists.gnu.org so I left those URLs alone for now.
* allow nil init in flymake-allowed-file-name-masks to disable flymakeSam Steingold2017-08-211-6/+9
| | | | | (flymake-allowed-file-name-masks): Update doc and :type. (flymake-get-file-name-mode-and-masks): Handle nil init.
* Add flymake-backends defcustomJoão Távora2017-08-171-7/+16
| | | | | | | | | | | | | | | | | | | | * lisp/progmodes/flymake-proc.el (flymake-proc-can-syntax-check-buffer): Rename from flymake-can-syntax-check-file. Suitable for adding to flymake-backends. (flymake-proc-start-syntax-check): Rename from flymake-start-syntax-check. Don't check again if buffer can be checked. (add-to-list flymake-backends): Hook only flymake-ui.el * lisp/progmodes/flymake-ui.el (flymake-backends): New defcustom. (flymake-on-timer-event, flymake-after-change-function) (flymake-after-save-hook, flymake-find-file-hook): Call new flymake--start-syntax-check-buffer and flymake--can-syntax-check-buffer. (flymake-mode): Call flymake--can-syntax-check-buffer and set flymake-backend. (flymake--backend): New buffer-local variable.
* Split flymake.el into flymake-proc.el and flymake-ui.elJoão Távora2017-08-171-0/+1088
flymake.el is now a stub that requires both files. * lisp/progmodes/flymake-proc.el: New file. * lisp/progmodes/flymake-ui.el: New file. * lisp/progmodes/flymake.el: Split into flymake-ui.el and flymake-proc.el. Require both files.