]> git.eshelyaron.com Git - emacs.git/commitdiff
Snappier completions that don't hinder typing
authorJoão Távora <joaotavora@gmail.com>
Fri, 10 Aug 2018 00:03:59 +0000 (01:03 +0100)
committerJoão Távora <joaotavora@gmail.com>
Fri, 10 Aug 2018 00:03:59 +0000 (01:03 +0100)
This should improve company-capf's performance.

* eglot.el (Package-Requires): Require jsonrpc 1.0,1
(eglot-completion-at-point): Use completion-table-dynamic.  Pass
CANCEL-ON-INPUT to jsonrpc-request.

GitHub-reference: close https://github.com/joaotavora/eglot/issues/61

lisp/progmodes/eglot.el

index d29bef540cb53ad8fa16809836f8a83164a0d3c6..9e714163a470c3f7844a894c22af21ca0aa3e454 100644 (file)
@@ -7,7 +7,7 @@
 ;; Maintainer: João Távora <joaotavora@gmail.com>
 ;; URL: https://github.com/joaotavora/eglot
 ;; Keywords: convenience, languages
-;; Package-Requires: ((emacs "26.1") (jsonrpc "1.0.0"))
+;; Package-Requires: ((emacs "26.1") (jsonrpc "1.0.1"))
 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -1275,12 +1275,13 @@ is not active."
       (list
        (or (car bounds) (point))
        (or (cdr bounds) (point))
-       (completion-table-with-cache
+       (completion-table-dynamic
         (lambda (_ignored)
           (let* ((resp (jsonrpc-request server
                                         :textDocument/completion
                                         (eglot--TextDocumentPositionParams)
-                                        :deferred :textDocument/completion))
+                                        :deferred :textDocument/completion
+                                        :cancel-on-input t))
                  (items (if (vectorp resp) resp (plist-get resp :items))))
             (mapcar
              (jsonrpc-lambda (&rest all &key label insertText &allow-other-keys)
@@ -1317,7 +1318,8 @@ is not active."
                           (plist-get
                            (jsonrpc-request server :completionItem/resolve
                                             (get-text-property
-                                             0 'eglot--lsp-completion obj))
+                                             0 'eglot--lsp-completion obj)
+                                            :cancel-on-input t)
                            :documentation)))))
            (when documentation
              (with-current-buffer (get-buffer-create " *eglot doc*")