GNU bug report logs - #30423
2018-01-25; [patch] flymake support

Previous Next

Package: auctex;

Reported by: Alex Branham <alex.branham <at> gmail.com>

Date: Sun, 11 Feb 2018 18:07:02 UTC

Severity: normal

Tags: patch

Done: Mosè Giordano <mose <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Alex Branham <alex.branham <at> gmail.com>
Subject: bug#30423: closed (Re: separate flymake into latex-flymake.el)
Date: Sat, 17 Feb 2018 18:57:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#30423: 2018-01-25; [patch] flymake support

which was filed against the auctex package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 30423 <at> debbugs.gnu.org.

-- 
30423: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=30423
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Mosè Giordano <mose <at> gnu.org>
To: Alex Branham <alex.branham <at> gmail.com>
Cc: 30423-done <at> debbugs.gnu.org
Subject: Re: separate flymake into latex-flymake.el
Date: Sat, 17 Feb 2018 19:55:51 +0100
Hi Alex,

2018-02-16 17:57 GMT+01:00 Alex Branham <alex.branham <at> gmail.com>:
> Here's a different version of the patch I sent with flymake support in
> its own file. I also removed the lexical-binding from latex.el.

Great!  Patch installed, thanks again.

Bye,
Mosè

[Message part 3 (message/rfc822, inline)]
From: Alex Branham <alex.branham <at> gmail.com>
To: bug-auctex <at> gnu.org
Subject: 2018-01-25; [patch] flymake support
Date: Sun, 11 Feb 2018 12:06:56 -0600
[Message part 4 (text/plain, inline)]
Flymake got a major rewrite in Emacs 26, the attached patch adds support for this in latex.el. Users can enable it by calling adding flymake-mode to LaTeX-mode-hook.



From 0b8eeebd01d0ed25823d4f40a7ab3cff0d150b8f Mon Sep 17 00:00:00 2001
From: Alex Branham <branham <at> utexas.edu>
Date: Sun, 11 Feb 2018 11:54:09 -0600
Subject: [PATCH] Support flymake in Emacs 26+ using chktex

---
 latex.el | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 72 insertions(+), 1 deletion(-)

diff --git a/latex.el b/latex.el
index c2d8a4ca..e3792faf 100644
--- a/latex.el
+++ b/latex.el
@@ -1,4 +1,4 @@
-;;; latex.el --- Support for LaTeX documents.
+;;; latex.el --- Support for LaTeX documents.  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1991, 1993-2017 Free Software Foundation, Inc.
 
@@ -6568,6 +6568,77 @@ function would return non-nil and `(match-string 1)' would return
 		     (1+ any-col)
 		   beg-col))))))))
 
+;; Flymake
+
+(defvar-local LaTeX--flymake-proc nil)
+
+(defun LaTeX-flymake (report-fn &rest _args)
+  "Setup flymake integration.
+
+REPORT-FN is flymake's callback function."
+  (unless (executable-find "chktex")
+    (error "Cannot find chktex"))
+  (when (process-live-p LaTeX--flymake-proc)
+    (kill-process LaTeX--flymake-proc))
+  (let ((source (current-buffer)))
+    (save-restriction
+      (widen)
+      (setq
+       LaTeX--flymake-proc
+       (make-process
+        :name "LaTeX-flymake" :noquery t :connection-type 'pipe
+        :buffer (generate-new-buffer " *LaTeX-flymake*")
+        :command '("chktex" "--verbosity=0" "--quiet" "--inputfiles")
+        :sentinel
+        (lambda (proc _event)
+          (when (eq 'exit (process-status proc))
+            (unwind-protect
+                (if (with-current-buffer source (eq proc LaTeX--flymake-proc))
+                    (with-current-buffer (process-buffer proc)
+                      (goto-char (point-min))
+                      (cl-loop
+                       while (search-forward-regexp
+                              (rx line-start "stdin:"
+                                  ;; line
+                                  (group-n 1 (one-or-more num))
+                                  ":"
+                                  ;; column
+                                  (group-n 2 (one-or-more num))
+                                  ":"
+                                  ;; This is information about the
+                                  ;; number of the warning, which we
+                                  ;; probably don't care about:
+                                  (one-or-more num)
+                                  ":"
+                                  ;; Warning message:
+                                  (group-n 3 (one-or-more not-newline)) line-end)
+                              nil t)
+                       for msg = (match-string 3)
+                       for (beg . end) = (flymake-diag-region
+                                          source
+                                          (string-to-number (match-string 1))
+                                          (string-to-number (match-string 2)))
+                       for type = :warning
+                       collect (flymake-make-diagnostic source
+                                                        beg
+                                                        end
+                                                        type
+                                                        msg)
+                       into diags
+                       finally (funcall report-fn diags)))
+                  (flymake-log :warning "Canceling obsolete check %s"
+                               proc))
+              (kill-buffer (process-buffer proc)))))))
+      (process-send-region LaTeX--flymake-proc (point-min) (point-max))
+      (process-send-eof LaTeX--flymake-proc))))
+
+(defun LaTeX-setup-flymake-backend ()
+  "Setup flymake backend for LaTeX."
+  (add-hook 'flymake-diagnostic-functions 'LaTeX-flymake nil t))
+
+(when (< 25 emacs-major-version)
+  (add-hook 'LaTeX-mode-hook 'LaTeX-setup-flymake-backend))
+
 (provide 'latex)
 
 ;;; latex.el ends here
-- 
2.16.1

[0001-Support-flymake-in-Emacs-26-using-chktex.patch (text/x-patch, attachment)]

This bug report was last modified 7 years and 176 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.