Skip to content

Commit b3b9bfe

Browse files
committed
Merge pull request #1212 from alexander-yakushev/pagination
Add pagination of long collections to inspector
2 parents 13bf8ef + 89330cc commit b3b9bfe

File tree

3 files changed

+51
-1
lines changed

3 files changed

+51
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### New features
66

7+
* [#1212](https://github.com/clojure-emacs/cider/pull/1212): Add pagination of long collections to inspector.
78
* [#1201](https://github.com/clojure-emacs/cider/pull/1201): Integrate overlays with interactive evaluation. `cider-use-overlays` can be used to turn this on or off.
89
* [#1195](https://github.com/clojure-emacs/cider/pull/1195): CIDER can [create cljs REPLs](https://github.com/clojure-emacs/cider#clojurescript-usage).
910
* [#1191](https://github.com/clojure-emacs/cider/pull/1191): New custom variables `cider-debug-print-level` and `cider-debug-print-length`.

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -875,6 +875,9 @@ Keyboard shortcut | Description
875875
<kbd>Return</kbd> | inspect sub-objects
876876
<kbd>l</kbd> | pop to the parent object
877877
<kbd>g</kbd> | refresh the inspector (e.g. if viewing an atom/ref/agent)
878+
<kbd>SPC</kbd> | jump to next page in paginated view
879+
<kbd>M-SPC</kbd> | jump to previous page in paginated view
880+
<kbd>s</kbd> | set a new page size in paginated view
878881

879882
### cider-test-report-mode
880883

cider-inspector.el

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@
3636

3737
(defconst cider-inspector-buffer "*cider inspect*")
3838

39+
;;; Customization
40+
(defgroup cider-inspector nil
41+
"Presentation and behaviour of the cider value inspector."
42+
:prefix "cider-inspector-"
43+
:group 'cider
44+
:package-version '(cider . "0.10.0"))
45+
46+
(defcustom cider-inspector-page-size 32
47+
"Default page size in paginated inspector view.
48+
The page size can be also changed interactively within the inspector."
49+
:type '(integer :tag "Page size" 32)
50+
:group 'cider-inspector
51+
:package-version '(cider . "0.10.0"))
52+
3953
(push cider-inspector-buffer cider-ancillary-buffers)
4054

4155
(defvar cider-inspector-mode-map
@@ -46,6 +60,9 @@
4660
(define-key map [mouse-1] #'cider-inspector-operate-on-click)
4761
(define-key map "l" #'cider-inspector-pop)
4862
(define-key map "g" #'cider-inspector-refresh)
63+
(define-key map "SPC" #'cider-inspector-next-page)
64+
(define-key map "M-SPC" #'cider-inspector-prev-page)
65+
(define-key map "s" #'cider-inspector-set-page-size)
4966
(define-key map [tab] #'cider-inspector-next-inspectable-object)
5067
(define-key map "\C-i" #'cider-inspector-next-inspectable-object)
5168
(define-key map [(shift tab)] #'cider-inspector-previous-inspectable-object) ; Emacs translates S-TAB
@@ -103,7 +120,8 @@ Used for all inspector nREPL ops."
103120
(defun cider-inspect-expr (expr ns)
104121
(cider--prep-interactive-eval expr)
105122
(nrepl-send-request (append (nrepl--eval-request expr ns)
106-
(list "inspect" "true"))
123+
(list "inspect" "true"
124+
"page-size" (or cider-inspector-page-size 32)))
107125
(cider-inspector-response-handler (current-buffer))))
108126

109127
(defun cider-inspector-pop ()
@@ -124,6 +142,34 @@ Used for all inspector nREPL ops."
124142
"session" (nrepl-current-session))
125143
(cider-inspector-response-handler (current-buffer))))
126144

145+
(defun cider-inspector-next-page ()
146+
"Jump to the next page when inspecting a paginated sequence/map.
147+
148+
Does nothing if already on the last page."
149+
(interactive)
150+
(nrepl-send-request (list "op" "inspect-next-page"
151+
"session" (nrepl-current-session))
152+
(cider-inspector-response-handler (current-buffer))))
153+
154+
(defun cider-inspector-prev-page ()
155+
"Jump to the previous page when expecting a paginated sequence/map.
156+
157+
Does nothing if already on the first page."
158+
(interactive)
159+
(nrepl-send-request (list "op" "inspect-prev-page"
160+
"session" (nrepl-current-session))
161+
(cider-inspector-response-handler (current-buffer))))
162+
163+
(defun cider-inspector-set-page-size (page-size)
164+
"Set the page size in pagination mode to the specified value.
165+
166+
Current page will be reset to zero."
167+
(interactive "nPage size:")
168+
(nrepl-send-request (list "op" "inspect-set-page-size"
169+
"session" (nrepl-current-session)
170+
"page-size" page-size)
171+
(cider-inspector-response-handler (current-buffer))))
172+
127173
;; Render Inspector from Structured Values
128174
(defun cider-irender (buffer str)
129175
(with-current-buffer buffer

0 commit comments

Comments
 (0)