summaryrefslogtreecommitdiffstats
path: root/lisp/init-javascript.el
diff options
context:
space:
mode:
authorMartin Polden <martin.polden@gmail.com>2014-06-23 09:57:08 +0200
committerMartin Polden <martin.polden@gmail.com>2014-06-23 09:57:08 +0200
commitd17460d44ee6c533e04a00b1113ea3165ef72895 (patch)
tree635a91e92f2a79ecbf286cde640f7990293be50e /lisp/init-javascript.el
parent2b435d6c38dda0b5c6c51ddc24c59192d966036e (diff)
Correct some filenames
Diffstat (limited to 'lisp/init-javascript.el')
-rw-r--r--lisp/init-javascript.el31
1 files changed, 31 insertions, 0 deletions
diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el
new file mode 100644
index 0000000..1611ed4
--- /dev/null
+++ b/lisp/init-javascript.el
@@ -0,0 +1,31 @@
+;; install packages
+(require-package 'js2-mode)
+(require-package 'json-mode)
+
+;; load js2-mode
+(require 'js2-mode)
+(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
+
+;; load json-mode
+(require 'json-mode)
+(add-to-list 'auto-mode-alist '("\\.json\\'" . json-mode))
+
+;; prefer jq for reformatting json
+(defun jq-reformat-region (begin end)
+ (interactive "r")
+ (if (executable-find "jq")
+ (shell-command-on-region
+ begin end "jq --monochrome-output --ascii-output ." (current-buffer) t)
+ (json-reformat-region begin end)))
+
+(defun jq-reformat ()
+ (interactive)
+ (if (use-region-p)
+ (jq-reformat-region (region-beginning) (region-end))
+ (jq-reformat-region (point-min) (point-max))))
+
+(add-hook 'json-mode-hook
+ (lambda ()
+ (define-key json-mode-map (kbd "C-c C-f") 'jq-reformat)))
+
+(provide 'init-javascript)