Skip to content

Commit e423941

Browse files
authored
Boot language servers for nested workspace folders (#642)
1 parent 2ab6ee7 commit e423941

File tree

1 file changed

+33
-18
lines changed

1 file changed

+33
-18
lines changed

packages/vscode-tailwindcss/src/extension.ts

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -73,20 +73,6 @@ function sortedWorkspaceFolders(): string[] {
7373
return _sortedWorkspaceFolders
7474
}
7575

76-
function getOuterMostWorkspaceFolder(folder: WorkspaceFolder): WorkspaceFolder {
77-
let sorted = sortedWorkspaceFolders()
78-
for (let element of sorted) {
79-
let uri = folder.uri.toString()
80-
if (uri.charAt(uri.length - 1) !== '/') {
81-
uri = uri + '/'
82-
}
83-
if (uri.startsWith(element)) {
84-
return Workspace.getWorkspaceFolder(Uri.parse(element))!
85-
}
86-
}
87-
return folder
88-
}
89-
9076
function getUserLanguages(folder?: WorkspaceFolder): Record<string, string> {
9177
const langs = Workspace.getConfiguration('tailwindCSS', folder).includeLanguages
9278
return isObject(langs) ? langs : {}
@@ -217,7 +203,6 @@ export async function activate(context: ExtensionContext) {
217203
if (!folder || isExcluded(uri.fsPath, folder)) {
218204
return
219205
}
220-
folder = getOuterMostWorkspaceFolder(folder)
221206
bootWorkspaceClient(folder)
222207
})
223208

@@ -231,7 +216,6 @@ export async function activate(context: ExtensionContext) {
231216
return
232217
}
233218
if (await fileContainsAtConfig(uri)) {
234-
folder = getOuterMostWorkspaceFolder(folder)
235219
bootWorkspaceClient(folder)
236220
}
237221
}
@@ -465,6 +449,34 @@ export async function activate(context: ExtensionContext) {
465449
outputChannel: outputChannel,
466450
revealOutputChannelOn: RevealOutputChannelOn.Never,
467451
middleware: {
452+
provideCompletionItem(document, position, context, token, next) {
453+
let workspaceFolder = Workspace.getWorkspaceFolder(document.uri)
454+
if (workspaceFolder !== folder) {
455+
return null
456+
}
457+
return next(document, position, context, token)
458+
},
459+
provideHover(document, position, token, next) {
460+
let workspaceFolder = Workspace.getWorkspaceFolder(document.uri)
461+
if (workspaceFolder !== folder) {
462+
return null
463+
}
464+
return next(document, position, token)
465+
},
466+
handleDiagnostics(uri, diagnostics, next) {
467+
let workspaceFolder = Workspace.getWorkspaceFolder(uri)
468+
if (workspaceFolder !== folder) {
469+
return
470+
}
471+
next(uri, diagnostics)
472+
},
473+
provideCodeActions(document, range, context, token, next) {
474+
let workspaceFolder = Workspace.getWorkspaceFolder(document.uri)
475+
if (workspaceFolder !== folder) {
476+
return null
477+
}
478+
return next(document, range, context, token)
479+
},
468480
async resolveCompletionItem(item, token, next) {
469481
let result = await next(item, token)
470482
let selections = Window.activeTextEditor.selections
@@ -506,6 +518,11 @@ export async function activate(context: ExtensionContext) {
506518
return result
507519
},
508520
async provideDocumentColors(document, token, next) {
521+
let workspaceFolder = Workspace.getWorkspaceFolder(document.uri)
522+
if (workspaceFolder !== folder) {
523+
return null
524+
}
525+
509526
let colors = await next(document, token)
510527
let editableColors = colors.filter((color) => {
511528
let text =
@@ -666,8 +683,6 @@ export async function activate(context: ExtensionContext) {
666683
if (!folder) {
667684
return
668685
}
669-
// If we have nested workspace folders we only start a server on the outer most workspace folder.
670-
folder = getOuterMostWorkspaceFolder(folder)
671686

672687
if (searchedFolders.has(folder.uri.toString())) {
673688
return

0 commit comments

Comments
 (0)