diff options
author | Thomas Voss <thomas.voss@humanwave.nl> | 2025-08-29 10:16:37 +0200 |
---|---|---|
committer | Thomas Voss <thomas.voss@humanwave.nl> | 2025-08-29 10:16:37 +0200 |
commit | 249d86d1d7c576e68be1f1e5628a6f2815625095 (patch) | |
tree | 06e543cab021ea9fa3de1edae36d8898b70db812 /.config | |
parent | ac89a8b04087921951755487dce0e8ea907f46cc (diff) |
emacs: Add a command for JQ filtering in JSON buffers
Diffstat (limited to '.config')
-rw-r--r-- | .config/emacs/modules/mm-editing.el | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/.config/emacs/modules/mm-editing.el b/.config/emacs/modules/mm-editing.el index c5844c0..152b181 100644 --- a/.config/emacs/modules/mm-editing.el +++ b/.config/emacs/modules/mm-editing.el @@ -320,6 +320,36 @@ is as described by `emmet-expand-line'." (emmet-self-closing-tag-style "")) +;;; JQ Manipulation in JSON Mode + +(defun mm-jq-filter (query &optional beg end) + "TODO" + (interactive + (list + (read-string (format-prompt "Query" nil)) + (when (use-region-p) (region-beginning)) + (when (use-region-p) (region-end)))) + (let* ((beg (or beg (point-min))) + (end (or end (point-max))) + (temp-buffer (generate-new-buffer "* jq temp*")) + (exit-code (call-process-region beg end "jq" nil temp-buffer nil + "--tab" query)) + (output (with-current-buffer temp-buffer (buffer-string)))) + (if (zerop exit-code) + (atomic-change-group + (delete-region beg end) + (insert output) + (indent-region beg (point))) + (message "%s" output)) + (kill-buffer temp-buffer))) + +(use-package json-ts-mode + :bind ( :map json-ts-mode-map + ("C-|" . #'mm-jq-filter)) + :config + (require 'live-jq)) + + ;;; Number Formatting (use-package number-format-mode |