better processing of lyng.d. files
This commit is contained in:
1 parent
9f10786a94
commit
8e10540257
11 files changed
+643
-76
No files matched your search
@@ -178,6 +178,7 @@ object CompletionEngineLight {
|
||||
is MiniMemberDecl -> node.range
|
||||
else -> return
|
||||
}
|
||||
if (range.start.source != src || range.end.source != src) return
|
||||
val start = src.offsetOf(range.start)
|
||||
val end = src.offsetOf(range.end).coerceAtMost(text.length)
|
||||
|
||||
@@ -372,9 +373,12 @@ object CompletionEngineLight {
|
||||
val src = Source("<engine>", text)
|
||||
val provider = LenientImportProvider.create()
|
||||
Compiler.compileWithMini(src, provider, sink)
|
||||
sink.build()
|
||||
sink.build() ?: MiniScript(MiniRange(src.startPos, src.startPos))
|
||||
} catch (_: Throwable) {
|
||||
sink.build()
|
||||
sink.build() ?: run {
|
||||
val src = Source("<engine>", text)
|
||||
MiniScript(MiniRange(src.startPos, src.startPos))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -387,6 +391,7 @@ object CompletionEngineLight {
|
||||
|
||||
// Text helpers
|
||||
private fun prefixAt(text: String, offset: Int): String {
|
||||
if (text.isEmpty()) return ""
|
||||
val off = offset.coerceIn(0, text.length)
|
||||
var i = (off - 1).coerceAtLeast(0)
|
||||
while (i >= 0 && DocLookupUtils.isIdentChar(text[i])) i--
|
||||
|
||||
@@ -1163,6 +1163,7 @@ object DocLookupUtils {
|
||||
}
|
||||
|
||||
fun findDotLeft(text: String, offset: Int): Int? {
|
||||
if (text.isEmpty()) return null
|
||||
var i = (offset - 1).coerceAtLeast(0)
|
||||
while (i >= 0 && text[i].isWhitespace()) i--
|
||||
return if (i >= 0 && text[i] == '.') i else null
|
||||
|
||||
Reference in new issue
Block a user