Skip to content

Commit

Permalink
checkers: Add checker for Janet (#40)
Browse files Browse the repository at this point in the history
  • Loading branch information
alternateved authored Sep 3, 2024
1 parent 1472603 commit ecc15c7
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 0 deletions.
49 changes: 49 additions & 0 deletions src/checkers/flymake-collection-janet.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
;;; flymake-collection-janet.el --- Janet diagnostic function -*- lexical-binding: t -*-

;; Copyright (c) 2024 Tomasz Hołubowicz

;; Permission is hereby granted, free of charge, to any person obtaining a copy
;; of this software and associated documentation files (the "Software"), to deal
;; in the Software without restriction, including without limitation the rights
;; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
;; copies of the Software, and to permit persons to whom the Software is
;; furnished to do so, subject to the following conditions:

;; The above copyright notice and this permission notice shall be included in all
;; copies or substantial portions of the Software.

;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
;; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
;; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
;; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
;; SOFTWARE.

;;; Commentary:

;; `flymake' syntax checker for Janet using janet flycheck utility

;;; Code:

(require 'flymake)
(require 'flymake-collection)

(eval-when-compile
(require 'flymake-collection-define))

;;;###autoload (autoload 'flymake-collection-janet "flymake-collection-janet")
(flymake-collection-define-rx flymake-collection-janet
"A Janet syntax checker using janet flycheck utility.
See URL `https://janet-lang.org/"
:pre-let ((janet-exec (executable-find "janet")))
:pre-check (unless janet-exec (user-error "Cannot find janet executable"))
:write-type 'pipe
:command `(,janet-exec "-k")
:regexps
((error bol "error: stdin:" line ":" column ": " (message) eol)))

(provide 'flymake-collection-janet)

;;; flymake-collection-janet.el ends here
1 change: 1 addition & 0 deletions src/flymake-collection-hook.el
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
(flymake-collection-clang
(flymake-collection-gcc :disabled t)))
(haskell-mode . (flymake-collection-hlint))
((janet-mode janet-ts-mode) . (flymake-collection-janet))
((js-mode js2-mode typescript-mode typescript-ts-mode) .
(flymake-collection-eslint))
((json-mode json-ts-mode) .
Expand Down
12 changes: 12 additions & 0 deletions tests/checkers/installers/janet.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
JANET_VERSION="1.35.2"

apt-get install -y make gcc

cd "$(mktemp -d)" || exit 1

curl -L https://github.com/janet-lang/janet/archive/refs/tags/v$JANET_VERSION.tar.gz | tar -xzv
cd janet-$JANET_VERSION || exit 1
make && make install

rm -rf "$(pwd)"
cd - || exit 1
23 changes: 23 additions & 0 deletions tests/checkers/test-cases/janet.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
checker: flymake-collection-janet
tests:
- name: no-lints
file: |
(print "hello world")
lints: []
- name: compile-error
file: |
(pri "hello world")
lints:
- point: [1, 0]
level: error
message: |-
compile error: unknown symbol pri
- name: parse-error
file: |
(print "hello world"
lints:
- point: [1, 0]
level: error
message: |-
parse error: unexpected end of source, ( opened at line 1, column 1

0 comments on commit ecc15c7

Please sign in to comment.