Function: jsonrpc--log-event
jsonrpc--log-event is a byte-compiled function defined in
jsonrpc.el.gz.
Signature
(jsonrpc--log-event CONNECTION ORIGIN &key KIND MESSAGE FOREIGN-MESSAGE LOG-TEXT JSON TYPE ((:id REF-ID) nil) &allow-other-keys)
Documentation
Log a JSONRPC-related event. Installed in jsonrpc-event-hook.
Source Code
;; Defined in /usr/src/emacs/lisp/jsonrpc.el.gz
(cl-defun jsonrpc--log-event (connection origin
&key _kind message
foreign-message log-text json
type ((:id ref-id))
&allow-other-keys)
"Log a JSONRPC-related event. Installed in `jsonrpc-event-hook'."
(let* ((props (slot-value connection '-events-buffer-config))
(max (plist-get props :size))
(format (plist-get props :format)))
(when (or (null max) (cl-plusp max))
(cl-destructuring-bind (&key method id error &allow-other-keys) message
(let* ((inhibit-read-only t)
(depth (length
(jsonrpc--sync-request-alist connection)))
(preamble (format "[jsonrpc] %s[%s]%s "
(pcase type ('error "E") ('debug "D")
(_ (pcase origin
('internal "i")
(_ "e"))))
(format-time-string "%H:%M:%S.%3N")
(if (eq origin 'internal)
(if ref-id (format " [%s]" ref-id) "")
(format " %s%s %s%s"
(make-string (* 2 depth) ? )
(pcase origin
('client "-->")
('server "<--")
(_ ""))
(or method "")
(if id (format "[%s]" id) "")))))
(msg
(pcase format
('full (format "%s%s\n" preamble (or json log-text)))
('short (format "%s%s\n" preamble (or log-text "")))
(_
(format "%s%s" preamble
(or (and foreign-message
(let ((lisp-indent-function ;bug#68072
#'lisp-indent-function))
(concat "\n" (pp-to-string
foreign-message))))
(concat log-text "\n")))))))
(goto-char (point-max))
;; XXX: could use `run-at-time' to delay server logs
;; slightly to play nice with verbose servers' stderr.
(when error
(setq msg (propertize msg 'face 'error)))
(insert-before-markers msg)
(jsonrpc--limit-buffer-size max))))))