[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/eglot df5e72e 09/12: Close #23: Report progress when ap
From: |
João Távora |
Subject: |
[elpa] externals/eglot df5e72e 09/12: Close #23: Report progress when applying edits |
Date: |
Fri, 22 Jun 2018 11:52:16 -0400 (EDT) |
branch: externals/eglot
commit df5e72ee2589308abee70231cf9ee2a2cee93f22
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>
Close #23: Report progress when applying edits
Use make-progress-reporter in eglot--apply-text-edits
As suggested by mkcms <address@hidden>, but do it in
eglot--apply-text-edits, where it benefits all its users.
* eglot.el (eglot--apply-text-edits): Use a progress reporter.
Fix marker point recovery.
---
eglot.el | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/eglot.el b/eglot.el
index 489e365..9e686ee 100644
--- a/eglot.el
+++ b/eglot.el
@@ -1584,18 +1584,27 @@ If SKIP-SIGNATURE, don't try to send
textDocument/signatureHelp."
(eglot--error "Edits on `%s' require version %d, you have %d"
(current-buffer) version eglot--versioned-identifier))
(atomic-change-group
- (mapc (pcase-lambda (`(,newText ,beg . ,end))
- (save-restriction
- (narrow-to-region beg end)
+ (let* ((howmany (length edits))
+ (reporter (make-progress-reporter
+ (format "[eglot] applying %s edits to `%s'..."
+ howmany (current-buffer))
+ 0 howmany))
+ (done 0))
+ (mapc (pcase-lambda (`(,newText ,beg . ,end))
(let ((source (current-buffer)))
(with-temp-buffer
(insert newText)
(let ((temp (current-buffer)))
- (with-current-buffer source (replace-buffer-contents
temp)))))))
- (mapcar (eglot--lambda (&key range newText)
- (cons newText (eglot--range-region range 'markers)))
- edits)))
- (eglot--message "%s: Performed %s edits" (current-buffer) (length edits)))
+ (with-current-buffer source
+ (save-excursion
+ (save-restriction
+ (narrow-to-region beg end)
+ (replace-buffer-contents temp)))
+ (progress-reporter-update reporter (cl-incf done)))))))
+ (mapcar (eglot--lambda (&key range newText)
+ (cons newText (eglot--range-region range 'markers)))
+ edits))
+ (progress-reporter-done reporter))))
(defun eglot--apply-workspace-edit (wedit &optional confirm)
"Apply the workspace edit WEDIT. If CONFIRM, ask user first."
- [elpa] externals/eglot 0176264 12/12: * eglot.el (Version): Bump to 0.11, (continued)
- [elpa] externals/eglot 0176264 12/12: * eglot.el (Version): Bump to 0.11, João Távora, 2018/06/22
- [elpa] externals/eglot 610d95b 03/12: Use gfm-mode for formatted strings (#20), João Távora, 2018/06/22
- [elpa] externals/eglot 0cde01f 05/12: Close #26: Guess server for js2-mode and rjsx-mode, João Távora, 2018/06/22
- [elpa] externals/eglot 364348d 04/12: Close #25: Improve eglot-ensure and mention it in README.md, João Távora, 2018/06/22
- [elpa] externals/eglot efc0f45 02/12: Minor cleanup to new textDocument/formatting feature, João Távora, 2018/06/22
- [elpa] externals/eglot a9010f1 01/12: Implement formatting (#19), João Távora, 2018/06/22
- [elpa] externals/eglot 17ef74e 07/12: Defer textDocument/formatting requests, João Távora, 2018/06/22
- [elpa] externals/eglot 0b9cffe 08/12: Per #22: Apply text edits atomically, João Távora, 2018/06/22
- [elpa] externals/eglot 48c3f45 10/12: Close #22: Apply text edits as a single undoable edit, João Távora, 2018/06/22
- [elpa] externals/eglot cbc418c 06/12: Per #22: Simplify eglot-format-buffer, João Távora, 2018/06/22
- [elpa] externals/eglot df5e72e 09/12: Close #23: Report progress when applying edits,
João Távora <=