Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Emacs Func: Use ~/bin/jslint4java-1.4.4.jar to automatically JSLint the Javascript file
;;; C-x c calls jslint and outputs to the *compilation* buffer.
(setq jslint-wrapper (concat "java -jar " (substitute-in-file-name "$HOME") "/bin/jslint4java-1.4.4.jar "))
(require 'compile)
(add-hook 'javascript-mode-hook
(lambda ()
(set (make-local-variable 'compilation-read-command) nil)
(set (make-local-variable 'compile-command)
(concat jslint-wrapper buffer-file-name))
(local-set-key (kbd "C-x c") 'compile)))
;;;auto check on save of a javascript file
(defun jslint-hook ()
(let* ((filename (buffer-file-name))
(suffix (downcase (file-name-extension filename))))
(if (and filename (string= suffix "js"))
(call-interactively 'compile))))
(add-hook 'after-save-hook 'jslint-hook)
(defun notify-compilation-result(buffer msg)
"Notify that the compilation is finished,
close the *compilation* buffer if the compilation is successful,
and set the focus back to Emacs frame"
(if (string-match "^finished" msg)
(delete-windows-on buffer)
(tooltip-show "\n Compilation Successful :-) \n "))
(tooltip-show "\n Compilation Failed :-( \n "))
(setq current-frame (car (car (cdr (current-frame-configuration)))))
(select-frame-set-input-focus current-frame))
(add-to-list 'compilation-finish-functions 'notify-compilation-result)

Could you invoke it via M-x compile instead? I designed the output to be roughly compiler like so you could jump to the errors easily.


sishen commented Jan 8, 2011

Hey, happygiraffe.

I can't quit understand you. What's your requirement?

Sorry, I was wondering if, instead of invoking this function into a separate buffer, you could use the standard M-x compile functionality. Then you automatically get output in a *compilation* buffer as well as navigation via C-x backquote You have to set the compile-command variable, something like this.

(add-hook 'javascript-mode
  (lambda ()
    (set (make-local-variable 'compile-command)
     (concat "java -jar "
         " "

(the above also needs:)

(setq jslint4java "/opt/misc/jslint4java-1.4.4/jslint4java-1.4.4.jar")

sishen commented Jan 10, 2011

Thanks happygiraffe. I rewrote it based on your comment, :)

purcell commented Dec 11, 2012

Also check out, which uses flymake to show jslint hints directly in the javascript buffer.


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment