tailwind-ctp-intellisense @master -
refs -
log -
-
https://git.jolheiser.com/tailwind-ctp-intellisense.git
Only watch directories up to workspace root (#709)
* Don't watch beyond workspace root
* Catch errors when adding paths to chokidar watcher
* Normalize paths
* wip
Signature
-----BEGIN PGP SIGNATURE-----
wsBcBAABCAAQBQJj07RsCRBK7hj4Ov3rIwAApbkIAF4GmCfBpc0edO1DnFag8pq/
Ky8MPjoT5OIcnnwhysl2U+LOVUDy3pqdj0WuJl40ss0rO4tB4mFonIWXQa32akZL
6wHxG4KrtkX8v0/yT71XwohCGi5YsU6b4YybUI4OfWpzuzOsXcJ7uNYRsxuZWj8o
ZKNDEuFDHS+HgN1FVHgFPPC79j30jmTr7b1cSnguIvuBrtSoyOl9/JDwuJMhUj1F
05kEjgJgnHG9w/+7PzuFWxFqneirQ16a50paj5+ixiQyNm7fujbKUhMqXe0a8ZX7
GhHbxDYd6h0qn4q/IDsO23UGnP7WxOkHrSZUr+A9q0SL7zGlifu368EulKKBCSI=
=WmO5
-----END PGP SIGNATURE-----
diff --git a/packages/tailwindcss-language-server/src/server.ts b/packages/tailwindcss-language-server/src/server.ts
index 67bd665e1933777d009289d1a5844cf372d62eb5..113231e74dc74097a31f1bdbb810d8691460e9f5 100644
--- a/packages/tailwindcss-language-server/src/server.ts
+++ b/packages/tailwindcss-language-server/src/server.ts
@@ -346,16 +346,22 @@ }
// We need to add parent directories to the watcher:
// https://github.com/microsoft/vscode/issues/60813
-function getWatchPatternsForFile(file: string): string[] {
+function getWatchPatternsForFile(file: string, root: string): string[] {
let tmp: string
let dir = path.dirname(file)
let patterns: string[] = [file, dir]
+ if (dir === root) {
+ return patterns
+ }
while (true) {
dir = path.dirname((tmp = dir))
if (tmp === dir) {
break
} else {
patterns.push(dir)
+ if (dir === root) {
+ break
+ }
}
}
return patterns
@@ -440,8 +446,8 @@ try {
deps = getModuleDependencies(projectConfig.configPath)
} catch {}
watchPatterns([
- ...getWatchPatternsForFile(projectConfig.configPath),
- ...deps.flatMap((dep) => getWatchPatternsForFile(dep)),
+ ...getWatchPatternsForFile(projectConfig.configPath, projectConfig.folder),
+ ...deps.flatMap((dep) => getWatchPatternsForFile(dep, projectConfig.folder)),
])
}
@@ -459,7 +465,7 @@ for (let change of changes) {
let file = normalizePath(change.file)
let isConfigFile = changeAffectsFile(file, [projectConfig.configPath])
- let isDependency = changeAffectsFile(change.file, state.dependencies ?? [])
+ let isDependency = changeAffectsFile(file, state.dependencies ?? [])
let isPackageFile = minimatch(file, `**/${PACKAGE_LOCK_GLOB}`, { dot: true })
if (!isConfigFile && !isDependency && !isPackageFile) continue
@@ -564,7 +570,7 @@ if (!configPath) {
throw new SilentError('No config file found.')
}
- watchPatterns(getWatchPatternsForFile(configPath))
+ watchPatterns(getWatchPatternsForFile(configPath, projectConfig.folder))
const pnpPath = findUp.sync(
(dir) => {
@@ -576,7 +582,7 @@ pnpFile = path.join(dir, '.pnp.cjs')
if (findUp.sync.exists(pnpFile)) {
return pnpFile
}
- if (dir === folder) {
+ if (dir === path.normalize(folder)) {
return findUp.stop
}
},
@@ -1062,7 +1068,11 @@ // chokidarWatcher?.unwatch(state.dependencies)
// }
state.dependencies = getModuleDependencies(state.configPath)
// chokidarWatcher?.add(state.dependencies)
- watchPatterns((state.dependencies ?? []).flatMap((dep) => getWatchPatternsForFile(dep)))
+ watchPatterns(
+ (state.dependencies ?? []).flatMap((dep) =>
+ getWatchPatternsForFile(dep, projectConfig.folder)
+ )
+ )
state.configId = getConfigId(state.configPath, state.dependencies)
@@ -1515,7 +1525,7 @@ let match = css.match(/@config\s*(?<config>'[^']+'|"[^"]+")/)
if (!match) {
return null
}
- return path.resolve(path.dirname(cssFile), match.groups.config.slice(1, -1))
+ return normalizePath(path.resolve(path.dirname(cssFile), match.groups.config.slice(1, -1)))
}
function getPackageRoot(cwd: string, rootDir: string) {
@@ -1526,7 +1536,7 @@ let pkgJson = path.join(dir, 'package.json')
if (findUp.sync.exists(pkgJson)) {
return pkgJson
}
- if (dir === rootDir) {
+ if (dir === path.normalize(rootDir)) {
return findUp.stop
}
},
@@ -1606,7 +1616,7 @@ let globalSettings = await getConfiguration()
let ignore = globalSettings.tailwindCSS.files.exclude
let configFileOrFiles = globalSettings.tailwindCSS.experimental.configFile
- let base = normalizeFileNameToFsPath(this.initializeParams.rootPath)
+ let base = normalizePath(normalizeFileNameToFsPath(this.initializeParams.rootPath))
let cssFileConfigMap: Map<string, string> = new Map()
let configTailwindVersionMap: Map<string, string> = new Map()
@@ -1640,7 +1650,7 @@ workspaceFolders = Object.entries(configFiles).map(
([relativeConfigPath, relativeDocumentSelectorOrSelectors]) => {
return {
folder: base,
- configPath: path.resolve(userDefinedConfigBase, relativeConfigPath),
+ configPath: normalizePath(path.resolve(userDefinedConfigBase, relativeConfigPath)),
documentSelector: [].concat(relativeDocumentSelectorOrSelectors).map((selector) => ({
priority: DocumentSelectorPriority.USER_CONFIGURED,
pattern: normalizePath(path.resolve(userDefinedConfigBase, selector)),