Commit Graph

152 Commits

Author SHA1 Message Date
Andrew Branch
7b357dd3a5 [typescript-language-features] Add autoImportSpecifierExcludeRegexes preference 2024-08-21 12:10:36 -07:00
Matt Bierner
ddbe321368 Remove presets for now
https://github.com/microsoft/typescript/issues/59579
2024-08-16 13:01:03 -07:00
Matt Bierner
2a045a1bc1 Merge branch 'main' into organize-imports-settings 2024-08-08 11:57:09 -07:00
Gabriela Araujo Britto
878af0771b [typescript-language-features] Region-based semantic diagnostics for TypeScript (#208713)
* WIP

* invalidate diagnostics in range

* check whether should use region based diagnostics

* add ts-expect-errors

* make region opt off by default

* bump to expected 5.6

* update comments to refer to 5.6

* make region diagnostics on by default for insiders
2024-06-19 15:12:57 -07:00
Matt Bierner
b7e5750fa9 Restrict copy/paste with imports to TS 5.6+ (#215386)
Also skips when the copied file is the same as the paste file
2024-06-12 22:20:46 +02:00
Matt Bierner
934af755c4 Hook up prototype paste with imports for JS/TS (#204665)
* Hook up prototype paste with imports for JS/TS

For https://github.com/microsoft/TypeScript/pull/57262 but with proposed changes to ts protocol

* Support new api

* Update
2024-05-24 21:57:30 +02:00
Matt Bierner
daec93b827 Disable web ata for safari (#212726) 2024-05-14 11:12:28 -07:00
Matt Bierner
a4643b0ee0 Enable web type acquisition by default for js/ts (#212370)
* Enable web type acquisition by default for js/ts

Fixes #182791
Fixes #172887

* Cleanup
2024-05-09 20:09:49 +02:00
Sheetal Nandi
b2c4302323 Use vscode watches for tsserver (#193848) 2024-04-09 13:39:34 +02:00
Isabel Duan
bc2c9609c2 add settings 2024-04-01 19:24:48 +00:00
Nathan Shively-Sanders
5e6ec068b2 Split TS' AI-backed code actions into separate entries (#201140)
* Split TS' AI-backed code actions into separate entries

Lets the user decide whether to add AI to their code action, which shows
intent, which is good for us to learn whether people actually want this.

Related: this should be unflagged for insiders. To do this, do I just
delete the flags?

* Stop appending a duplicate message in missingFunctionDeclaration

* Fix: quickfix was still showing Copilot-only

It's a workaround--I'm not sure of the right way to do this.

* Update to use `isAI`

* Put AI code actions after others.

* Add isAI to rest of code actions

* Remove flags for TS AI code actions

* Check for copilot-chat instead of copilot

It's possible to have copilot installed without copilot-chat.

* Fix file casing

---------

Co-authored-by: Matt Bierner <matb@microsoft.com>
2024-01-31 22:46:39 +00:00
John Murray
77dc8793db Add typescript.implementationsCodeLens.showOnInterfaceMethods setting (#136282) (#198419)
* Add `typescript.implementationsCodeLens.showOnInterfaceMethods` setting (#136282)

* Update codelenses when `typescript.referencesCodeLens.showOnAllFunctions` changes

* Improve handling of disposables
2023-11-16 22:46:41 +00:00
Andrew Branch
48f4a503f8 Add missing preference description for preferTypeOnlyAutoImports 2023-11-03 12:57:23 -07:00
Joyce Er
dedfcf65d3 feat: add enum descriptions for TS locale setting (#195947) 2023-10-19 01:52:49 +02:00
Greg Van Liew
ef0871b7bb Edits to setting descriptions (#195007) 2023-10-06 10:04:37 -07:00
Matt Bierner
a12bb0543d Restore copilot fixes/refactorings (#194092)
Reverts #193810 to restore #193810
2023-09-26 09:40:27 +02:00
Johannes Rieken
b7fad0df6d Revert "Copilot-based TS refactors" 2023-09-22 16:05:04 +02:00
Nathan Shively-Sanders
530870bd40 Config: change defaults and add descriptions 2023-09-20 10:12:11 -07:00
Nathan Shively-Sanders
968d1bd1bb Merge branch 'main' into ai-codefixes 2023-09-14 11:24:50 -07:00
Nathan Shively-Sanders
d1d6055aa5 Add more complex options 2023-09-14 11:23:16 -07:00
Gabriela Araujo Britto
f563e33800 [typescript-language-features] Add option for excluding library symbols in "Go to Symbol in Workspace" (#192798)
* add option for excluding library symbols

* clarify in message that new option requires ts 5.3

* remove expect error
2023-09-13 18:19:52 +00:00
Gabriela Araujo Britto
efc1b30976 Add custom Node option to run TS Server (#191019)
* Add config for running tsserver on custom node

* log when custom node install is used

* create node version manager

* get node path from node version manager everywhere

* modify prompt

* fix useIpc

* use spawn for custom node and set windowsHide

* detect node

* link memory setting to node setting
2023-09-06 20:27:16 +00:00
Matt Bierner
45e2e0bfd0 JS/TS package acquisition (#184438)
* Experiment with adding ata using `@types` packages shipped in an extension

* Use own file system instead of `https`

* JS/TS type support on web

* Tsconfig needs esModuleInterop not module:nodenext

We actually want webpack to emit commonjs, but need to write ES default
imports to use node-maintainer

* fix package.json indentation

* Adding setting to disable web type acquisition

* Fix merge of yarn lock

* Fixing merge errors

* Fixing errors

* Pick up package externally

* Fixing conflicts

* Bump version

---------

Co-authored-by: Kat Marchán <kzm@zkat.tech>
Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2023-08-28 00:49:40 -07:00
Andrew Branch
6c94c8e088 [typescript-language-features] Update autoImportFileExcludePatterns description (#186528)
Update autoImportFileExcludePatterns description
2023-07-14 18:36:38 +00:00
Matt Bierner
42498ee647 Mention tsconfig / jsconfig in 'Go to project configuration' (#184441)
This makes the commands more discoverable
2023-06-06 13:41:54 -07:00
Aiday Marlen Kyzy
81f98eb8fe adding text to better explain the dependence on the AI extension 2023-05-25 15:20:55 +02:00
Aiday Marlen Kyzy
203c911ca0 adding a setting in order to control whether the ai assisted setting is enabled or not 2023-05-24 16:18:04 +02:00
Bhavya U
b0cf9f8e24 Remove temp walkthroughs (#182996) 2023-05-19 15:28:27 -07:00
Matt Bierner
4d59b19b73 Enable project wide JS/TS intellisense on web by default (#182812)
Fixes #170920

Enables this feature by default but also disables semantic errors. This is needed to avoid lots of annoying false positive errors for external modules. We plan to remove this limitation once type downloading support is enabled
2023-05-18 00:06:00 +02:00
Matt Bierner
6a9c24cbd0 Update importModuleSpecifierEnding to mention .ts (#180349)
Makes the `importModuleSpecifierEnding` settings mention that it can include `.js` or `.ts`
2023-04-19 20:43:53 +02:00
Matt Bierner
f24d50369f Add note on required TS version to setting (#180271) 2023-04-18 19:14:17 -07:00
Donald33 Wang
7122771026 Support custom switch-case indentation (#179670) 2023-04-18 17:24:51 +00:00
Matt Bierner
26ccce443f Enable renaming of matching jsx tags (#179806)
Fixes #159534

Uses the new linked editing api to make f2 rename matching jsx tags
2023-04-12 21:42:59 +02:00
Andrew Branch
117668153b [typescript-language-features] Support replacing Go to Definition with Go to Source Definition by preference (#178840)
* Add preference for replacing Go to Definition with Go to Source Definition

* Support replacing Go to Definition with Go to Source Definition by preference

* Predicate call on TS version
2023-04-05 21:17:01 +00:00
Fabio Spampinato
2a20cc59f0 Updated title for typescript.restartTsServer command (#177167) 2023-03-15 16:14:31 +00:00
Nathan Shively-Sanders
3261c7d3af Cross-file Typescript support in vscode-web (#169311)
* recreate logging from other machine

* comment out openSystemBrowser

Because I dont have the default browser set up correctnly on any of my
machiens

* Add vscode-wasm-typescript dep

And some logging as I figure out how to use it

* remove unused reference to module

* use require reference that linter allows

* Add vscode-wasm-typescript to tsserver.web.js

Use webpack's CopyPlugin transform pattern to do this manually. This is
probably a bad idea! It's just for prototyping purposes.

* Update vscode-wasm-typescript dependency

* Fix minor syntax in webpack hack

Nonetheless required for it to work!

* Fix another typo in webpack hack!

* Fix provided typescript path

Another typo. Guess my local test wasn't running the contents really

* Try to improve module.exports handling in webpack hac

* tsserver.web.js comes from local builds

Also:
- tsserver.js is no longer minified
- log crossOriginIsolated

* First attempt to set up server-side support

* Remove auto-imported identifier

* Move sync-api setup code to serverProcess.browser.ts

Because it's browser-specific

* Reorder webpack hack and clean up unused logging

* Update vscode-wasm/vscode-wasm-typescript dependencies

* Add file watching

* Extract webpack hack

Build only the ts parts of tsserver.web.js, don't rebuild the vscode
extension. This is a lot faster.

* Remove manual verbose logging

Sheetal showed me the correct way to create a verbose logger instead.

* Add vscode-test-web to semantic-supported schemes

And make isWeb support semantic mode.

* Also update the webpack-hack-only build

* Switch to tsserverlibrary

Also paste in some example code for cancellation, which is not finished
at all.

* Remove bogus auto-import and unneeded (?) dep

* remove webpack-like hack

* move code from vscode-wasm-typescript

* Initial prototype of cancellation

It compiles and looks kind of plausible. But I haven't tested it yet.

* Switch tsserver to separate MessageChannel

* Move watches to a separate MessagePort

Further simplifies the message dispatch code by shifting complexity to
setup. And the setup is straight-line code.

* switch vscode-web from in-memory to real filesystem

goto-def is currently broken because some part of main vscode still
needs treat the files as in-memory, though.

* Make toResource translate / -> vscode-test-web

* Encode scheme and authority in TS filenames

Like the previous host did, but without the leading ^ that TS hard-codes
as "in-memory".

The tsserver host needs to know about the encoding, but the translation
is in a single function. This also means that displayed file paths are
prefixed with /scheme/authority (/vscode-test-web/mount in my testing), but I think that's fine.

* Lift parseUri outside createServerHost

I'm not using it to set the schema/authority for getCurrentDirectory
right now, so there's no shared state to mutate.

* Special-case URI of lib*d.ts in webServer.toResource

Similar to the special-casing in typescriptServiceClient.toResource.
Also requires passing in the extensionUri. This feels like it's breaking
through at least one abstraction layer, which might be a problem.

* Improve cancellation

1. Simplify cancellation checking in web tsserver host to match the
checking in typescript's node host.
2. Move cancellation of request in the extension to tryCancelRequest
from sendNextRequests.
3. Only send cancellation via node or web cancellation, not both.

* Pass in current request instead of waiting for a fresh one.

* Address initial PR comments

Also add some TODO comments for the revision to watches.

* Add cancellation bit to each (cancellable) request, locally fix an issue with retrieving the cancellation bit

* Switch to per-file/directory watches

Watching the entire filesystem recursively is supposed to be
inefficient.

Not done yet: there is an error when watching directories, but it works.
And I can't tell whether watching files works yet.

* Parse --serverMode partialSemantic in webServer

Now the syntax server actually runs as a syntax server.

* Simplify logging code

* Cleanup in webServer

1. Remove a little logging.
2. Correct failure return value for getFileSize
3. Reorder some methods and parameters.

* Switch to markdown extension's FileWatcherManager

I'm not sure if it's OK to depend on a module from another extension;
it's probably better to include the files from a central place instead.

* Clean up host methods

1. Copy and adapt implementations from node host where possible.
2. Note questions for the PR elsewhere.
3. Remove logging except for caught exceptions.

* More logging/TODO cleanup

* Remove duplicate dependency

* Add setting to enable/disable semantic mode on web

Also gate it behind a check to `crossOriginIsolated`

* Re-order and re-arrange code to minimise PR diff

It won't minimise it *much*, but I also consolidated some
unnecessarily-spread-out code that will be easier to read in the long
term, and possibly easier to read in diff form as well.

* Copy fileWatchingManager to typescript extension

Copy from markdown extension to typescript extension. I used the
existing dependencies in the typescript extension, but verified that
they would work the same.

* Fix linting of webServer

* Align formatting of catch / else

* Extract isProjectWideIntellisenseOnWebEnabled and keep using in-memory prefix when project wide intellisense is disabled

* Make sure we still work if SharedArrayBuffers aren't supported

* Remove symlink support and fix typo

Symlinks are implicitly supported by the filesystem right now.

* Fix compile errors

Co-authored-by: Johannes <johannes.rieken@gmail.com>
Co-authored-by: Matt Bierner <matb@microsoft.com>
2023-01-12 11:54:39 -08:00
Matt Bierner
95f9599d16 Remove typescript.suggest.includeCompletionsWithSnippetText setting (#171098)
Fixes #171091

This setting controls TS Server's behavior and should not be exposed directly. Instead you can use the `includeCompletionsForImportStatements` and  `suggest.classMemberSnippets.enabled` settings to enable/disable individual types of completions
2023-01-11 12:09:32 -08:00
Greg Van Liew
816f31f691 More settings description tuning (#166429) 2022-11-16 09:33:33 -08:00
Greg Van Liew
27a550f451 Settings description edits (#166315)
* Settings description edits

* Remove unnecessary trailing line returns
2022-11-14 13:47:54 -08:00
Andrew Branch
1fb956d2f5 [typescript-language-features] Add removeUnusedImports command (#161654)
* Add `removeUnusedImports` command

* Continue to send `skipDestructiveCodeActions` for older TS versions

* Expose Sort Imports and Remove Unused Imports commands

* Update localization keys

* Update for 4.9 protocol

* Proto must be type only import?
2022-10-18 09:00:16 -07:00
Tyler James Leonhardt
4322170fd8 comment is an array (#163348) 2022-10-11 13:39:12 -07:00
Matt Bierner
3c37a5a8d7 Reapply JavaScript and Node.js walkthrough (#161003)
This reverts commit cfc0119755.

Brings the walkthrough back in but makes sure it is only loaded on desktop
2022-09-15 13:02:43 -07:00
Benjamin Pasero
cfc0119755 Revert "JavaScript and Node.js walkthrough" (#160959)
Revert "JavaScript and Node.js walkthrough (#157965)"

This reverts commit 0cbcb1b1ab.
2022-09-15 08:26:22 +02:00
Daniel Rosenwasser
0cbcb1b1ab JavaScript and Node.js walkthrough (#157965)
* Initial contents for JavaScript walkthrough.

* Just suggest a `.js` file.

* Switch the walkthrough to be a Node.js walkthrough.

* Remove leftover file from HTML walkthrough.

* Add basic detection mechanism for node.

* Don't check for a Node install until the user runs debug.

* Add "learn more" link.

* Some assets.

* Remove "run" section.

* Add a "try debugging anyway" option just in case.

* Remove "view terminal" command in run & debug.

* More copy.

* Remove unused command.

* Update icon and themed walkthrough SVGs

* Default to not showing the extension.

* Replace icon

* Delete TODO.md

* jsWelcome -> nodejsWelcome

Co-authored-by: David Dossett <ddossett@microsoft.com>
Co-authored-by: Matt Bierner <matb@microsoft.com>
2022-09-14 09:53:37 -07:00
Andrew Branch
1d16e313d6 [typescript-language-features] Add setting for autoImportFileExcludePatterns (#153160)
* Add setting for autoImportFileExcludePatterns

* Add TS 4.8 to message
2022-06-28 16:43:24 -07:00
Matt Bierner
6428d0fc7d Support TS's includeInlayVariableTypeHintsWhenTypeMatchesName setting (#150489)
From https://github.com/microsoft/TypeScript/pull/48529

Let users control is variable type inlay hints are suppresed if the variable name matches the type name, such as:

```ts
const range = new Range();
```
2022-05-26 16:00:04 -07:00
Matt Bierner
d851ea5d49 Add 'go to source definition' command
Fixes #147532

Requires TS 4.7+
2022-04-19 19:32:19 -07:00
Gabriela Araujo Britto
4e159b9e28 [typescript-language-features] Add includeCompletionsWithObjectLiteralMethodSnippets preference (#145941)
* create flag for object literal method snippet completions

* reword description
2022-03-24 15:17:43 -07:00
Matt Bierner
b3832713db Use esnext as implicit js/ts module
For https://github.com/microsoft/TypeScript/issues/46698

Also adds new settings for the target and module in implicit projects
2022-03-09 14:33:37 -08:00
Ondrej Medek
529cc9c859 fix markdownDescription for javascript.suggest.jsdoc.generateReturns (#144486) 2022-03-07 17:12:55 -08:00