typescript: Make VTSLS the default language server for Typescript (#13140)

Piotr Osiewicz created

Additionally, limit # of returned completion items + use fuzzy filtering
on VTSLS side. Prime LSP handler for response handling.


Release Notes:

- VTSLS is now a default language server for TypeScript, TSX, and
JavaScript.

Change summary

assets/settings/default.json  | 15 ++++++++---
crates/languages/src/vtsls.rs | 49 ++++++++++++++++++++++++++++++++++++
2 files changed, 59 insertions(+), 5 deletions(-)

Detailed changes

assets/settings/default.json 🔗

@@ -131,7 +131,14 @@
   // The default number of lines to expand excerpts in the multibuffer by.
   "expand_excerpt_lines": 3,
   // Globs to match against file paths to determine if a file is private.
-  "private_files": ["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"],
+  "private_files": [
+    "**/.env*",
+    "**/*.pem",
+    "**/*.key",
+    "**/*.cert",
+    "**/*.crt",
+    "**/secrets.yml"
+  ],
   // Whether to use additional LSP queries to format (and amend) the code after
   // every "trigger" symbol input, defined by LSP server capabilities.
   "use_on_type_format": true,
@@ -722,7 +729,7 @@
       }
     },
     "JavaScript": {
-      "language_servers": ["typescript-language-server", "!vtsls", "..."],
+      "language_servers": ["!typescript-language-server", "vtsls", "..."],
       "prettier": {
         "allowed": true
       }
@@ -765,7 +772,7 @@
       }
     },
     "TSX": {
-      "language_servers": ["typescript-language-server", "!vtsls", "..."],
+      "language_servers": ["!typescript-language-server", "vtsls", "..."],
       "prettier": {
         "allowed": true
       }
@@ -776,7 +783,7 @@
       }
     },
     "TypeScript": {
-      "language_servers": ["typescript-language-server", "!vtsls", "..."],
+      "language_servers": ["!typescript-language-server", "vtsls", "..."],
       "prettier": {
         "allowed": true
       }

crates/languages/src/vtsls.rs 🔗

@@ -174,8 +174,8 @@ impl LspAdapter for VtslsLspAdapter {
                         "enabled": "all",
                         "suppressWhenArgumentMatchesName": false,
 
-                    }
                     },
+
                     "parameterTypes":
                     {
                         "enabled": true
@@ -193,6 +193,15 @@ impl LspAdapter for VtslsLspAdapter {
                     "enumMemberValues":{
                         "enabled": true,
                     }
+                }
+            },
+            "vtsls":
+            {"experimental": {
+                "completion": {
+                    "enableServerSideFuzzyMatch": true,
+                    "entriesLimit": 5000,
+                }
+            }
             }
         })))
     }
@@ -206,8 +215,46 @@ impl LspAdapter for VtslsLspAdapter {
             "typescript": {
                 "suggest": {
                     "completeFunctionCalls": true
+                },
+                "tsdk": "node_modules/typescript/lib",
+                "format": {
+                    "enable": true
+                },
+                "inlayHints":{
+                    "parameterNames":
+                    {
+                        "enabled": "all",
+                        "suppressWhenArgumentMatchesName": false,
+
+                    },
+
+                    "parameterTypes":
+                    {
+                        "enabled": true
+                    },
+                    "variableTypes": {
+                        "enabled": true,
+                        "suppressWhenTypeMatchesName": false,
+                    },
+                    "propertyDeclarationTypes":{
+                        "enabled": true,
+                    },
+                    "functionLikeReturnTypes": {
+                        "enabled": true,
+                    },
+                    "enumMemberValues":{
+                        "enabled": true,
+                    }
+            }
+            },
+            "vtsls":
+            {"experimental": {
+                "completion": {
+                    "enableServerSideFuzzyMatch": true,
+                    "entriesLimit": 5000,
                 }
             }
+            }
         }))
     }