From 249d86d1d7c576e68be1f1e5628a6f2815625095 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Fri, 29 Aug 2025 10:16:37 +0200 Subject: emacs: Add a command for JQ filtering in JSON buffers --- .config/emacs/modules/mm-editing.el | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to '.config/emacs/modules') 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 @@ -319,6 +319,36 @@ is as described by `emmet-expand-line'." :custom (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 -- cgit v1.2.3