mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
Jsonrpc: add major mode for events buffers
If the 'jq' program is installed, this dramatically simplifies debugging LSP transcripts. * lisp/jsonrpc.el (jsonrpc-events-jq-at-point): New function. (jsonrpc-events-occur-at-point): New function. (jsonrpc-events-mode-map): New variable. (jsonrpc-events-mode): New major mode. (jsonrpc-events-buffer): Use new mode.
This commit is contained in:
parent
0bb36ec255
commit
b26e9bb6bc
1 changed files with 29 additions and 2 deletions
|
|
@ -208,6 +208,34 @@ JSONRPC message."
|
|||
"jsonrpc-lambda-elem")))
|
||||
`(lambda (,e) (apply (cl-function (lambda ,cl-lambda-list ,@body)) ,e))))
|
||||
|
||||
(defun jsonrpc-events-jq-at-point ()
|
||||
"Find first { in line, use forward-sexp to grab JSON, pipe through jq."
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(when (search-forward "{" (line-end-position) t)
|
||||
(backward-char)
|
||||
(let ((start (point)))
|
||||
(forward-sexp)
|
||||
(shell-command-on-region start (point) "jq" "*jq output*")))))
|
||||
|
||||
(defun jsonrpc-events-occur-at-point ()
|
||||
"Run occur on thing at point."
|
||||
(interactive)
|
||||
(occur (thing-at-point 'symbol)))
|
||||
|
||||
(defvar jsonrpc-events-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map (kbd "RET") 'jsonrpc-events-jq-at-point)
|
||||
(define-key map (kbd "C-c C-o") 'jsonrpc-events-occur-at-point)
|
||||
map)
|
||||
"Keymap for `jsonrpc-events-mode'.")
|
||||
|
||||
(define-derived-mode jsonrpc-events-mode special-mode "JSONRPC-Events"
|
||||
"Major mode for JSONRPC events buffers."
|
||||
(buffer-disable-undo)
|
||||
(setq buffer-read-only t))
|
||||
|
||||
(defun jsonrpc-events-buffer (connection)
|
||||
"Get or create JSONRPC events buffer for CONNECTION."
|
||||
(let ((probe (jsonrpc--events-buffer connection)))
|
||||
|
|
@ -215,8 +243,7 @@ JSONRPC message."
|
|||
probe
|
||||
(with-current-buffer
|
||||
(get-buffer-create (format "*%s events*" (jsonrpc-name connection)))
|
||||
(buffer-disable-undo)
|
||||
(setq buffer-read-only t)
|
||||
(jsonrpc-events-mode)
|
||||
(setf (jsonrpc--events-buffer connection)
|
||||
(current-buffer))))))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue