That’s a pretty specific problem. So the linter cannot work on the context of a single file because the lexical scope is spread across multiple files without any kind of import/export or namespacing to dictate which files belong together? If so, then maybe the linter could read all files, cache the scope and partially invalidate it on each update to a file.