From 8551cf9426f5a98a3e90e30522ee9126d5ee704d Mon Sep 17 00:00:00 2001 From: Austin Bingham Date: Sun, 14 May 2017 13:42:14 +0200 Subject: [PATCH] Sorta working. --- flycheck-vale.el | 53 +++++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/flycheck-vale.el b/flycheck-vale.el index f4a2c47..ad5d165 100644 --- a/flycheck-vale.el +++ b/flycheck-vale.el @@ -60,7 +60,7 @@ '(("error" . error) ("warning" . warning))) -(defun flycheck-vale--result-to-error (result) +(defun flycheck-vale--issue-to-error (result) (let-alist result (flycheck-error-new :line .Line @@ -72,13 +72,10 @@ :level (assoc-default .Severity flycheck-vale--level-map 'string-equal 'error)))) (defun flycheck-vale--output-to-errors (output) - (let* ((data (json-read-string output)) - (issues (concatenate 'list (mapcar 'cdr data)))) - (mapcar 'flycheck-vale--issue-to-error issues)) - (mapcar 'flycheck-vale--result-to-error results)) - -(defun flycheck-vale--handle-process-finished () - (message "llamas")) + (let* ((full-results (json-read-from-string output)) + (result-vecs (mapcar 'cdr full-results)) + (issues (apply 'concatenate 'list (mapcar 'cdr full-results)))) + (mapcar 'flycheck-vale--issue-to-error issues))) (defun flycheck-vale--start (checker callback) "Run vale on the current buffer's contents." @@ -89,29 +86,25 @@ (with-current-buffer outbuf (read-only-mode 0) (erase-buffer)) - (let ((proc (call-process-region - (point-min) - (point-max) - flycheck-vale-program - nil ;; delete - outbuf - nil ;; display - "--output" - "JSON"))) - (set-process-sentinel - proc - #'(lambda (process event) - (when (string-equal event "finished\n") - (flycheck-vale--handle-process-finished) - ;; (with-current-buffer outbuf - ;; (let ((errors (flycheck-vale--parse-output (buffer-string)))) - ;; (loop for err in errors do - ;; (setf (flycheck-error-buffer err) orig-buf) - ;; (setf (flycheck-error-filename err) (buffer-file-name orig-buf)) - ;; (setf (flycheck-error-checker err) checker)) - ;; (funcall callback 'finished errors))) - )))))) + ;; Run vale + (call-process-region + (point-min) + (point-max) + flycheck-vale-program + nil ;; delete + outbuf + nil ;; display + "--output" + "JSON") + + (with-current-buffer outbuf + (let ((errors (flycheck-vale--output-to-errors (buffer-string)))) + (loop for err in errors do + (setf (flycheck-error-buffer err) orig-buf) + (setf (flycheck-error-filename err) (buffer-file-name orig-buf)) + (setf (flycheck-error-checker err) checker)) + (funcall callback 'finished errors))))) (defun flycheck-vale--in-supported-mode () "Determines if buffer is in a mode where vale linting is appropriate."