Skip to content

Instantly share code, notes, and snippets.

Created January 7, 2011 12:43
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)
Copy link

kaichen commented Jan 7, 2011

Copy link

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.

Copy link

sishen commented Jan 8, 2011

Hey, happygiraffe.

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

Copy link

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 "
         " "

Copy link

(the above also needs:)

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

Copy link

sishen commented Jan 10, 2011

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

Copy link

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