@@ -2448,15 +2448,17 @@ buffer."
2448
2448
(defun eglot--post-self-insert-hook ()
2449
2449
" Set `eglot--last-inserted-char' , maybe call on-type-formatting."
2450
2450
(setq eglot--last-inserted-char last-input-event)
2451
- (let ((ot-provider (eglot--server-capable :documentOnTypeFormattingProvider )))
2451
+ (let ((ot-provider (eglot--server-capable :documentOnTypeFormattingProvider ))
2452
+ ; ; transform carriage return into line-feed
2453
+ (adjusted-ie (if (= last-input-event 13 ) 10 last-input-event)))
2452
2454
(when (and ot-provider
2453
2455
(ignore-errors ; github#906, some LS's send empty strings
2454
- (or (eq last-input-event
2456
+ (or (eq adjusted-ie
2455
2457
(seq-first (plist-get ot-provider :firstTriggerCharacter )))
2456
- (cl-find last-input-event
2458
+ (cl-find adjusted-ie
2457
2459
(plist-get ot-provider :moreTriggerCharacter )
2458
2460
:key #'seq-first ))))
2459
- (eglot-format (point ) nil last-input-event ))))
2461
+ (eglot-format (point ) nil adjusted-ie ))))
2460
2462
2461
2463
(defvar eglot--workspace-symbols-cache (make-hash-table :test #'equal )
2462
2464
" Cache of `workspace/Symbol' results used by `xref-find-definitions' ." )
@@ -2973,7 +2975,9 @@ for which LSP on-type-formatting should be requested."
2973
2975
:insertSpaces (if indent-tabs-mode :json-false t )
2974
2976
:insertFinalNewline (if require-final-newline t :json-false )
2975
2977
:trimFinalNewlines (if delete-trailing-lines t :json-false ))
2976
- args)))))
2978
+ args))
2979
+ nil
2980
+ on-type-format)))
2977
2981
2978
2982
(defvar eglot-cache-session-completions t
2979
2983
" If non-nil Eglot caches data during completion sessions." )
@@ -3380,19 +3384,21 @@ Returns a list as described in docstring of `imenu--index-alist'."
3380
3384
(((SymbolInformation)) (eglot--imenu-SymbolInformation res))
3381
3385
(((DocumentSymbol)) (eglot--imenu-DocumentSymbol res))))))
3382
3386
3383
- (cl-defun eglot--apply-text-edits (edits &optional version )
3384
- " Apply EDITS for current buffer if at VERSION, or if it's nil."
3387
+ (cl-defun eglot--apply-text-edits (edits &optional version silent )
3388
+ " Apply EDITS for current buffer if at VERSION, or if it's nil.
3389
+ If SILENT, don't echo progress in mode-line."
3385
3390
(unless edits (cl-return-from eglot--apply-text-edits))
3386
3391
(unless (or (not version) (equal version eglot--versioned-identifier))
3387
3392
(jsonrpc-error " Edits on `%s' require version %d, you have %d"
3388
3393
(current-buffer ) version eglot--versioned-identifier))
3389
3394
(atomic-change-group
3390
3395
(let* ((change-group (prepare-change-group ))
3391
3396
(howmany (length edits))
3392
- (reporter (make-progress-reporter
3393
- (format " [eglot] applying %s edits to `%s' ... "
3394
- howmany (current-buffer ))
3395
- 0 howmany))
3397
+ (reporter (unless silent
3398
+ (make-progress-reporter
3399
+ (format " [eglot] applying %s edits to `%s' ... "
3400
+ howmany (current-buffer ))
3401
+ 0 howmany)))
3396
3402
(done 0 ))
3397
3403
(mapc (pcase-lambda (`(, newText , beg . , end ))
3398
3404
(let ((source (current-buffer )))
@@ -3404,12 +3410,14 @@ Returns a list as described in docstring of `imenu--index-alist'."
3404
3410
(save-restriction
3405
3411
(narrow-to-region beg end)
3406
3412
(replace-buffer-contents temp)))
3407
- (eglot--reporter-update reporter (cl-incf done)))))))
3413
+ (when reporter
3414
+ (eglot--reporter-update reporter (cl-incf done))))))))
3408
3415
(mapcar (eglot--lambda ((TextEdit) range newText)
3409
3416
(cons newText (eglot--range-region range 'markers )))
3410
3417
(reverse edits)))
3411
3418
(undo-amalgamate-change-group change-group)
3412
- (progress-reporter-done reporter))))
3419
+ (when reporter
3420
+ (progress-reporter-done reporter)))))
3413
3421
3414
3422
(defun eglot--apply-workspace-edit (wedit &optional confirm )
3415
3423
" Apply the workspace edit WEDIT. If CONFIRM, ask user first."
0 commit comments