diff --git a/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs b/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs index ee47b94e085..b5da2f6bb24 100644 --- a/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs +++ b/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs @@ -85,10 +85,9 @@ type internal FSharpCompletionProvider else let triggerPosition = caretPosition - 1 let triggerChar = sourceText.[triggerPosition] - let prevChar = sourceText.[triggerPosition - 1] - + // do not trigger completion if it's not single dot, i.e. range expression - if not Settings.IntelliSense.ShowAfterCharIsTyped && prevChar = '.' then + if not Settings.IntelliSense.ShowAfterCharIsTyped && triggerPosition > 0 && sourceText.[triggerPosition - 1] = '.' then false else let documentId, filePath, defines = getInfo() diff --git a/vsintegration/tests/unittests/CompletionProviderTests.fs b/vsintegration/tests/unittests/CompletionProviderTests.fs index 6a6c64f44b1..5e0212f62bd 100644 --- a/vsintegration/tests/unittests/CompletionProviderTests.fs +++ b/vsintegration/tests/unittests/CompletionProviderTests.fs @@ -273,6 +273,18 @@ xVal**y let triggered = FSharpCompletionProvider.ShouldTriggerCompletionAux(SourceText.From(fileContents), caretPosition, CompletionTriggerKind.Insertion, getInfo) Assert.IsTrue(triggered, "Completion should trigger after typing an identifier that follows a mathematical operation") +[] +let ShouldTriggerCompletionAtStartOfFileWithInsertion = + let fileContents = """ +l""" + + let marker = "l" + let caretPosition = fileContents.IndexOf(marker) + marker.Length + let documentId = DocumentId.CreateNewId(ProjectId.CreateNewId()) + let getInfo() = documentId, filePath, [] + let triggered = FSharpCompletionProvider.ShouldTriggerCompletionAux(SourceText.From(fileContents), caretPosition, CompletionTriggerKind.Insertion, getInfo) + Assert.IsTrue(triggered, "Completion should trigger after typing an Insertion character at the top of the file, e.g. a function definition in a new script file.") + [] let ShouldDisplayTypeMembers() = let fileContents = """