emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] 286/352: Make "syntax" and "case-fold" effective with "parser" fu


From: Stefan Monnier
Subject: [elpa] 286/352: Make "syntax" and "case-fold" effective with "parser" function
Date: Mon, 07 Jul 2014 14:05:01 +0000

monnier pushed a commit to branch master
in repository elpa.

commit fab9d99d9d3ea4169e3905e12a2f72c09f127101
Author: Teemu Likonen <address@hidden>
Date:   Sun Jul 3 17:26:13 2011 +0300

    Make "syntax" and "case-fold" effective with "parser" function
---
 wcheck-mode.el |   78 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 41 insertions(+), 37 deletions(-)

diff --git a/wcheck-mode.el b/wcheck-mode.el
index 7f8d65d..56cf63f 100644
--- a/wcheck-mode.el
+++ b/wcheck-mode.el
@@ -1053,43 +1053,47 @@ separate line."
 
 (defun wcheck-receive-strings (process string)
   "`wcheck-mode' process output handler function."
-  (let ((buffer (wcheck-buffer-data-get :process process :buffer))
-        (parser (wcheck-query-language-data
-                 (wcheck-buffer-data-get :process process :language)
-                 'parser)))
-    (when (buffer-live-p buffer)
-      (with-current-buffer buffer
-
-        ;; If process is running proceed to collect and paint the
-        ;; strings.
-        (condition-case error-data
-            (if (wcheck-process-running-p process)
-                (with-current-buffer (process-buffer process)
-                  (save-excursion
-                    (goto-char (point-max))
-                    (insert string)
-                    (let ((parsed-strings
-                           (save-match-data
-                             (save-excursion
-                               (goto-char (point-min))
-                               (condition-case nil (funcall parser)
-                                 (error (signal 'wcheck-funcall-error
-                                                nil)))))))
-                      (when (and parsed-strings
-                                 (wcheck-list-of-strings-p parsed-strings))
-                        (wcheck-buffer-data-set buffer :strings parsed-strings)
-                        (wcheck-buffer-data-set buffer :paint-req t)))))
-
-              ;; It's not running. Turn off the mode.
-              (wcheck-mode -1)
-              (signal 'wcheck-error "Process is not running for buffer \"%s\""
-                      (buffer-name buffer)))
-
-          (wcheck-funcall-error
-           (message "Checker output parser function signaled an error"))
-
-          (wcheck-error
-           (message "%s" (cdr error-data))))))))
+  (let ((buffer (wcheck-buffer-data-get :process process :buffer)))
+    (wcheck-with-language-data
+        (nil (wcheck-buffer-data-get :process process :language))
+        (parser syntax (case-fold-search case-fold))
+      (when (buffer-live-p buffer)
+        (with-current-buffer buffer
+
+          ;; If process is running proceed to collect and paint the
+          ;; strings.
+          (condition-case error-data
+              (if (wcheck-process-running-p process)
+                  (with-current-buffer (process-buffer process)
+                    (save-excursion
+                      (goto-char (point-max))
+                      (insert string)
+                      (let ((parsed-strings
+                             (save-match-data
+                               (save-excursion
+                                 (goto-char (point-min))
+                                 (condition-case nil
+                                     (with-syntax-table (eval syntax)
+                                       (funcall parser))
+                                   (error (signal 'wcheck-funcall-error
+                                                  nil)))))))
+                        (when (and parsed-strings
+                                   (wcheck-list-of-strings-p parsed-strings))
+                          (wcheck-buffer-data-set
+                           buffer :strings parsed-strings)
+                          (wcheck-buffer-data-set buffer :paint-req t)))))
+
+                ;; It's not running. Turn off the mode.
+                (wcheck-mode -1)
+                (signal 'wcheck-error
+                        "Process is not running for buffer \"%s\""
+                        (buffer-name buffer)))
+
+            (wcheck-funcall-error
+             (message "Checker output parser function signaled an error"))
+
+            (wcheck-error
+             (message "%s" (cdr error-data)))))))))
 
 
 (defun wcheck-timer-paint-event ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]