kotlin-language-server
kotlin-language-server copied to clipboard
Kotlin files in dot directories not indexed
Teamcity kotlin files typically live in .teamcity/.
Example:
$ git clone https://github.com/tekumara/teamcity-kotlin-example
$ tree -a teamcity-kotlin-example
teamcity-kotlin-example
....
└── .teamcity
├── common.kt
├── pom.xml
└── settings.kts
When I open teamcity-kotlin-example/ in vscode, the Kotlin LS doesn't add the teamcity kotlin files to the source path:
[Info - 6:38:39 PM] main Adding script definitions [ScriptTemplateWithArgs]
[Info - 6:38:39 PM] main Kotlin Language Server: Version 1.1.1
[Info - 6:38:39 PM] main Connected to client
[Info - 6:38:39 PM] async0 Adding workspace folder teamcity-kotlin-example
[Info - 6:38:40 PM] async0 Adding 0 files under /tmp/teamcity-kotlin-example to source path
...
And therefore Go to Definition, hover etc. in settings.kts doesn't work, eg: on line 39 open class BaseBuildType() : BuildType()
Other scenarios:
- open teamcity-kotlin-example/.teamcity in vscode. The kotlin files will be indexed, but I can no longer work on the other files in the repository at the same time.
- rename .teamcity/ to teamcity/ and open the root folder (ie: teamcity-kotlin-example/). The Kotlin LS correctly adds the files to the source path on startup:
[Info - 8:56:12 PM] async0 Adding workspace folder teamcity-kotlin-example
[Info - 8:56:12 PM] async0 Adding .../teamcity/common.kt, .../teamcity/settings.kts under /tmp/teamcity-kotlin-example to source path
vscode extension: fwcd.kotlin v0.2.22
NB: A multi-root workspace which adds .teamcity as a separate root does get around this, but is a little inconvenient and non-obvious for newcomers.
Looks like (just guessing), that the root cause is here - https://github.com/fwcd/kotlin-language-server/blob/main/shared/src/main/kotlin/org/javacs/kt/SourceExclusions.kt#L17 in excluding ".*" pattern.
LS can't find any source files if they're in hidden directories.
~~Am i right?~~
UPD: i believe it was made to ignore .git, .svn, .hg or any other unrelated directories, but unfortunately, there are also related ones.