Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion internal/ls/autoimports.go
Original file line number Diff line number Diff line change
Expand Up @@ -1010,7 +1010,9 @@ func (l *LanguageService) getNewImportFixes(
) []*ImportFix /* FixAddNewImport | FixAddJsdocTypeImport */ {
isJs := tspath.HasJSFileExtension(sourceFile.FileName())
compilerOptions := l.GetProgram().Options()
// !!! packagejsonAutoimportProvider
// !!! if preferences.IncludePackageJsonAutoImports != "off" {
// !!! packagejsonAutoimportProvider
// !!! }
// getChecker := createGetChecker(program, host)// memoized typechecker based on `isFromPackageJson` bool

getModuleSpecifiers := func(moduleSymbol *ast.Symbol, checker *checker.Checker) ([]string, modulespecifiers.ResultKind) {
Expand Down Expand Up @@ -1345,6 +1347,10 @@ func forEachExternalModuleToImportFrom(
},
)

// if preferences.IncludePackageJsonAutoImports == "off" {
// return;
// }

// !!! autoImportProvider
// if autoImportProvider := useAutoImportProvider && l.getPackageJsonAutoImportProvider(); autoImportProvider != nil {
// // start := timestamp();
Expand Down
4 changes: 3 additions & 1 deletion internal/ls/completions.go
Original file line number Diff line number Diff line change
Expand Up @@ -1188,7 +1188,9 @@ func (l *LanguageService) getCompletionData(
isValidTypeOnlyUseSite := ast.IsValidTypeOnlyAliasUseSite(location)

// !!! moduleSpecifierCache := host.getModuleSpecifierCache();
// !!! packageJsonAutoImportProvider := host.getPackageJsonAutoImportProvider();
// !!! if preferences.includePackageJsonAutoImports != "off" {
// !!! packageJsonAutoImportProvider := host.getPackageJsonAutoImportProvider();
// !!! }
addSymbolToList := func(info []*SymbolExportInfo, symbolName string, isFromAmbientModule bool, exportMapKey ExportInfoMapKey) []*SymbolExportInfo {
// Do a relatively cheap check to bail early if all re-exports are non-importable
// due to file location or package.json dependency filtering. For non-node16+
Expand Down
8 changes: 6 additions & 2 deletions internal/ls/findallreferences.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/microsoft/typescript-go/internal/compiler"
"github.com/microsoft/typescript-go/internal/core"
"github.com/microsoft/typescript-go/internal/debug"
"github.com/microsoft/typescript-go/internal/ls"
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
"github.com/microsoft/typescript-go/internal/scanner"
"github.com/microsoft/typescript-go/internal/stringutil"
Expand Down Expand Up @@ -452,11 +453,11 @@ func (l *LanguageService) getImplementationReferenceEntries(ctx context.Context,
return core.FlatMap(symbolsAndEntries, func(s *SymbolAndEntries) []*referenceEntry { return s.references })
}

func (l *LanguageService) ProvideRename(ctx context.Context, params *lsproto.RenameParams) (lsproto.WorkspaceEditOrNull, error) {
func (l *LanguageService) ProvideRename(ctx context.Context, params *lsproto.RenameParams, prefs *ls.UserPreferences) (lsproto.WorkspaceEditOrNull, error) {
program, sourceFile := l.getProgramAndFile(params.TextDocument.Uri)
position := int(l.converters.LineAndCharacterToPosition(sourceFile, params.Position))
node := astnav.GetTouchingPropertyName(sourceFile, position)
if node.Kind != ast.KindIdentifier {
if node.Kind != ast.KindIdentifier && !(ast.IsStringLiteralLike(node) && tryGetImportFromModuleSpecifier(node) != nil && prefs.AllowRenameOfImportPath) {
return lsproto.WorkspaceEditOrNull{}, nil
}
options := refOptions{use: referenceUseRename, useAliasesForRename: true}
Expand All @@ -467,6 +468,9 @@ func (l *LanguageService) ProvideRename(ctx context.Context, params *lsproto.Ren
defer done()
for _, entry := range entries {
uri := FileNameToDocumentURI(l.getFileNameOfEntry(entry))
if !prefs.AllowRenameOfImportPath && entry.node != nil && ast.IsStringLiteralLike(entry.node) && tryGetImportFromModuleSpecifier(entry.node) != nil {
continue
}
textEdit := &lsproto.TextEdit{
Range: *l.getRangeOfEntry(entry),
NewText: l.getTextForRename(node, entry, params.NewName, checker),
Expand Down
4 changes: 2 additions & 2 deletions internal/lsp/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -855,8 +855,8 @@ func (s *Server) handleDocumentSymbol(ctx context.Context, ls *ls.LanguageServic
return ls.ProvideDocumentSymbols(ctx, params.TextDocument.Uri)
}

func (s *Server) handleRename(ctx context.Context, ls *ls.LanguageService, params *lsproto.RenameParams) (lsproto.RenameResponse, error) {
return ls.ProvideRename(ctx, params)
func (s *Server) handleRename(ctx context.Context, languageServer *ls.LanguageService, params *lsproto.RenameParams) (lsproto.RenameResponse, error) {
return languageServer.ProvideRename(ctx, params, &ls.UserPreferences{})
}

func (s *Server) handleDocumentHighlight(ctx context.Context, ls *ls.LanguageService, params *lsproto.DocumentHighlightParams) (lsproto.DocumentHighlightResponse, error) {
Expand Down
3 changes: 3 additions & 0 deletions internal/modulespecifiers/preferences.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ func getPreferredEnding(
type ModuleSpecifierPreferences struct {
relativePreference RelativePreferenceKind
getAllowedEndingsInPreferredOrder func(syntaxImpliedNodeFormat core.ResolutionMode) []ModuleSpecifierEnding
packageJsonAutoImports IncludePackageJsonAutoImports
excludeRegexes []string
}

Expand Down Expand Up @@ -170,6 +171,7 @@ func getModuleSpecifierPreferences(
// all others are shortest
}
}

filePreferredEnding := getPreferredEnding(
prefs,
host,
Expand Down Expand Up @@ -226,6 +228,7 @@ func getModuleSpecifierPreferences(
}

return ModuleSpecifierPreferences{
packageJsonAutoImports: prefs.IncludePackageJsonAutoImports,
excludeRegexes: excludes,
relativePreference: relativePreference,
getAllowedEndingsInPreferredOrder: getAllowedEndingsInPreferredOrder,
Expand Down
2 changes: 1 addition & 1 deletion internal/modulespecifiers/specifiers.go
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ func getLocalModuleSpecifier(
}

var fromPackageJsonImports string
if !pathsOnly {
if !pathsOnly && preferences.packageJsonAutoImports != IncludePackageJsonAutoImportsOff {
fromPackageJsonImports = tryGetModuleNameFromPackageJsonImports(
moduleFileName,
sourceDirectory,
Expand Down
11 changes: 11 additions & 0 deletions internal/modulespecifiers/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,20 @@ const (
ImportModuleSpecifierEndingPreferenceJs ImportModuleSpecifierEndingPreference = "js"
)

type IncludePackageJsonAutoImports string

const (
IncludePackageJsonAutoImportsNone IncludePackageJsonAutoImports = ""
IncludePackageJsonAutoImportsAuto IncludePackageJsonAutoImports = "auto"
IncludePackageJsonAutoImportsOn IncludePackageJsonAutoImports = "on"
IncludePackageJsonAutoImportsOff IncludePackageJsonAutoImports = "off"
)

type UserPreferences struct {
ImportModuleSpecifierPreference ImportModuleSpecifierPreference
ImportModuleSpecifierEnding ImportModuleSpecifierEndingPreference
IncludePackageJsonAutoImports IncludePackageJsonAutoImports
allowRenameOfImportPath core.Tristate
AutoImportSpecifierExcludeRegexes []string
}

Expand Down
Loading