/jq-mode

Emacs major mode for editing jq queries.

Primary LanguageEmacs LispGNU General Public License v3.0GPL-3.0

What is it?

jq-mode is an emacs major mode for editing jq-scripts.

Getting started

https://melpa.org/packages/jq-mode-badge.svg https://stable.melpa.org/packages/jq-mode-badge.svg

  • Download jq-mode.el and put it in a directory somewhere.
  • Add the following to your .emacs file
(add-to-list 'load-path "/path/to/jq-mode-dir")
(autoload 'jq-mode "jq-mode.el"
    "Major mode for editing jq files" t)
(add-to-list 'auto-mode-alist '("\\.jq$" . jq-mode))

Now jq-mode will load whenever you visit a file whose name ends with .jq. Alternatively, run M-x jq-mode in an existing buffer containing jq commands.

Interactive mode

jq-mode can also be used interactively in a JSON buffer. If you add the following to your .emacs file

(with-eval-after-load "json-mode"
  (define-key json-mode-map (kbd "C-c C-j") #'jq-interactively))

or you can call M-x jq-interactivly. jq-interactively runs the expression that is written in the minibuffer iteratively over the JSON buffer. Press C-g to abort, C-j for newline, RET commits any changes.

Use yq for yaml

It is possible to use yq to process yaml with the interactive mode instead:

(setq jq-interactive-command "yq"
      jq-interactive-font-lock-mode #'yaml-mode
      jq-interactive-default-options "--yaml-roundtrip")

Org babel

jq-mode provides ob-jq for working with literate programming in Org mode.

Add jq under org-babel-load-languages in your .emacs file

(org-babel-do-load-languages 'org-babel-load-languages
                             '((jq . t)))

jq specific header arguments

ob-jq provides some additional header arguments:

:compact
Add -c to jq arguments list suppressing pretty printing

Bugs and Enhancements

If you have a problem or would like to see it get better in a specific way, feel free to drop an issue in the issue tracker. Enjoy!