From ea41945a6684d1aeb3e1e667736d7907ad581501 Mon Sep 17 00:00:00 2001 From: Justin Barclay Date: Thu, 31 Oct 2024 02:20:01 -0700 Subject: [PATCH] feat: define a flycheck checker --- parinfer-rust-flycheck.el | 53 +++++++++++++++++++++++++++++++++++++++ parinfer-rust-mode.el | 1 + 2 files changed, 54 insertions(+) create mode 100644 parinfer-rust-flycheck.el diff --git a/parinfer-rust-flycheck.el b/parinfer-rust-flycheck.el new file mode 100644 index 0000000..8d5109c --- /dev/null +++ b/parinfer-rust-flycheck.el @@ -0,0 +1,53 @@ +;;; parinfer-rust-flycheck.el --- Flycheck integration for parinfer-rust-mode -*- lexical-binding: t; -*- + +;; Copyright (C) 2024 Justin Barclay + +;; Author: Justin Barclay + +;; This program is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;; This file is not part of GNU Emacs. + +;;; Commentary:;; An assortment of helper functions and ports of functions from Emacs + +;;; Code: +(eval-when-compile + (defvar parinfe-rust--errors '())) + +(defun parinfer-rust--flycheck-start (checker callback) + "Process errors stored in parinfer-rust--errors into flycheck format." + (funcall callback 'finished + (mapcar (lambda (error) + (flycheck-error-new-at + (+ 1 (plist-get error :line_no)) + (+ 1 (plist-get error :x)) + 'error + (plist-get error :message) + :id (plist-get error :name) + :checker checker)) + parinfer-rust--errors))) +;; require flycheck if it is available +(when (require 'flycheck nil t) + (flycheck-define-generic-checker 'parinfer-rust + "A checker for parinfer-rust." + :start 'parinfer-rust--flycheck-start + :modes '(emacs-lisp-mode + scheme-mode + lisp-mode + clojure-mode + clojurescript-mode + clojure-ts-mode))) + +(provide 'parifner-rust-flycheck) +;;; parinfer-rust-flycheck.el ends here diff --git a/parinfer-rust-mode.el b/parinfer-rust-mode.el index 2651797..8555252 100644 --- a/parinfer-rust-mode.el +++ b/parinfer-rust-mode.el @@ -620,6 +620,7 @@ CHANGES." (when (and (local-variable-if-set-p 'parinfer-rust--in-debug) parinfer-rust--in-debug) (parinfer-rust-debug "./parinfer-rust-debug.txt" options answer)) + (setq parinfer-rust--errors (list parinfer-error)) (if parinfer-error (message "Problem on line %s: %s" (plist-get parinfer-error :line_no)