• 2 Posts
  • 13 Comments
Joined 1 year ago
cake
Cake day: June 19th, 2023

help-circle












  • I find the various linters and checkers a bit too intrusive while I’m trying to code - I prefer to just have a check when I stop fiddling with the code and save it. So I have these checks run in after-save-hook - if there are errors, I get a popup otherwise nothing and all is good:

    ;; ** syntax checking on file save:
    (defun bh/check-syntax ()
      "Check syntax for various languages."
      (when (eq major-mode 'emacs-lisp-mode)
        (ignore-errors (kill-buffer byte-compile-log-buffer))
        (let ((byte-compile-warnings '(not free-vars obsolete unresolved)))
          (unless (byte-compile-file buffer-file-name)
            (pop-to-buffer byte-compile-log-buffer))))
      (when (eq major-mode 'sh-mode)
        (compile (format "bash -n %s && shellcheck -f gcc %s" buffer-file-name buffer-file-name) t))
      (when (eq major-mode 'ruby-mode)
        (compile (format "ruby -c %s" buffer-file-name) t))
      (when (eq major-mode 'python-mode)
        (compile (format "python -B -m py_compile %s" buffer-file-name) t))
      (when (eq major-mode 'awk-mode)
        (compile (format "AWKPATH=$PATH gawk --lint --source 'BEGIN { exit(0) } END { exit(0) }' --file %s" buffer-file-name) t)))
    

    (add-hook 'after-save-hook #'bh/check-syntax)

    I don’t work much with json files but I daresay the idea could be extended to them. Sorry about the crappy elisp.