Skip to content

Commit e99a712

Browse files
committed
feat: update the "load more" button with current progress information
1 parent 5d952d3 commit e99a712

File tree

1 file changed

+34
-3
lines changed

1 file changed

+34
-3
lines changed

lsp-mssql.el

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,21 @@ PARAMS the params."
247247
(apply #'concat))))
248248
(s-join "|\n")))
249249

250+
(defun lsp-mssql--replace-overlay-text (ov string)
251+
"Replace text inside overlay OV with STRING."
252+
(let ((start (overlay-start ov)))
253+
(save-excursion
254+
;; This is a bit silly, but this way we don't have to make new
255+
;; buttons, we just replace the text inside an exisiting button.
256+
;; We can't insert at the start of the overlay because that
257+
;; would only push the existing one away, not inserting the new
258+
;; text into it.
259+
(goto-char (1+ start))
260+
(insert string)
261+
(delete-region (point) (overlay-end ov))
262+
(goto-char (1+ start))
263+
(delete-char -1))))
264+
250265
(defun lsp-mssql--result-set-complete (workspace params)
251266
"Result set complete handler.
252267
WORKSPACE is the active workspace.
@@ -283,7 +298,21 @@ PARAMS the params."
283298
(setf loaded-index (+ loaded-index to-load)))
284299
:batchIndex ,batchId))
285300
(lsp--info "All items are loaded")
286-
nil)))
301+
nil))
302+
(render-load-more
303+
()
304+
(if (= loaded-index row-count)
305+
(progn
306+
(when (looking-at-p "^Load")
307+
(delete-region (line-beginning-position) (line-end-position)))
308+
(insert "|-")
309+
(org-table-align)
310+
(end-of-line))
311+
(if (looking-at-p "^Load")
312+
(lsp-mssql--replace-overlay-text
313+
(car (overlays-at (point)))
314+
(format "Load %s more... (%s/%s)" to-load loaded-index row-count))
315+
(insert (format "Load %s more... (%s/%s)" to-load loaded-index row-count))))))
287316
(when-let ((params (subset-params)))
288317
(with-lsp-workspace workspace
289318
(lsp-request-async
@@ -297,7 +326,7 @@ PARAMS the params."
297326
(setq more-items-marker (copy-marker (point)))
298327
(insert "\n")
299328
(let ((start (point)))
300-
(insert (format "Load %s more... (%s/%s)" to-load loaded-index row-count))
329+
(render-load-more)
301330
(make-button
302331
start (point)
303332
'action (lambda (&rest _)
@@ -312,7 +341,9 @@ PARAMS the params."
312341
(goto-char (1- (marker-position more-items-marker)))
313342
(insert "\n")
314343
(insert (lsp-mssql--render-table result))
315-
(org-table-align)))
344+
(org-table-align)
345+
(forward-line 1)
346+
(render-load-more)))
316347
:mode 'detached))))
317348
'keymap (-doto (make-sparse-keymap)
318349
(define-key [M-return] 'push-button)

0 commit comments

Comments
 (0)