From 234b1e3864b8b940f72f3727fe7087cf7e90b43d Mon Sep 17 00:00:00 2001
From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= <joaotavora@gmail.com>
Date: Fri, 20 Oct 2017 00:50:34 +0100
Subject: [PATCH] Flymake backends must check proc obsoleteness in source
 buffer

Flymake backends that rely on sentinels running asynchronously and
checking buffer-local variables that hold running processes should
check for obsoleteness in the correct buffers, otherwise a (harmless)
warning might be triggered.

* doc/misc/flymake.texi (An annotated example backend):
Check buffer-local proc in the current buffer.

* lisp/progmodes/elisp-mode.el (elisp-flymake-byte-compile):
Check buffer-local proc in the current buffer.
---
 doc/misc/flymake.texi        | 2 +-
 lisp/progmodes/elisp-mode.el | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 99ab1271ac9..2aabaf06b73 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -600,7 +600,7 @@ Binding,,, elisp, The Emacs Lisp Reference Manual}) to be active.
                 ;; `ruby--flymake-proc', which indicates that
                 ;; `proc' is not an obsolete process.
                 ;;
-                (if (eq proc ruby--flymake-proc)
+                (if (with-current-buffer source (eq proc ruby--flymake-proc))
                     (with-current-buffer (process-buffer proc)
                       (goto-char (point-min))
                       ;; Parse the output buffer for diagnostic's
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 99a4841e318..41415943a58 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -1693,7 +1693,8 @@ current buffer state and calls REPORT-FN when done."
           (when (eq (process-status proc) 'exit)
             (unwind-protect
                 (cond
-                 ((not (eq proc elisp-flymake--byte-compile-process))
+                 ((not (eq proc (with-current-buffer source-buffer
+                                  elisp-flymake--byte-compile-process)))
                   (flymake-log :warning "byte-compile process %s obsolete" proc))
                  ((zerop (process-exit-status proc))
                   (elisp-flymake--byte-compile-done report-fn
-- 
2.39.5