@@ -33,16 +33,14 @@ type internal NavigateToSearchResult(item: NavigableItem, matchKind: FSharpNavig
3333
3434module private Index =
3535 [<System.Diagnostics.DebuggerDisplay( " {DebugString()}" ) >]
36- type private IndexEntry ( str : string , offset : int , item : NavigableItem , isOperator : bool ) =
36+ type private IndexEntry ( str : string , offset : int , item : NavigableItem ) =
3737 member _.String = str
3838 member _.Offset = offset
3939 member _.Length = str.Length - offset
4040 member _.Item = item
41- member _.IsOperator = isOperator
4241 member x.StartsWith ( s : string ) =
4342 if s.Length > x.Length then false
4443 else CultureInfo.CurrentCulture.CompareInfo.IndexOf( str, s, offset, s.Length, CompareOptions.IgnoreCase) = offset
45- member private _.DebugString () = sprintf " %s (offset %d ) (%s )" ( str.Substring offset) offset str
4644
4745 let private indexEntryComparer =
4846 { new IComparer< IndexEntry> with
@@ -70,20 +68,20 @@ module private Index =
7068 let entries = ResizeArray()
7169
7270 for item in items do
73- let isOperator , name =
71+ let name =
7472 if PrettyNaming.IsMangledOpName item.Name then
75- true , PrettyNaming.DecompileOpName item.Name
73+ PrettyNaming.DecompileOpName item.Name
7674 else
77- false , item.Name
75+ item.Name
7876 for i = 0 to name.Length - 1 do
79- entries.Add( IndexEntry( name, i, item, isOperator ))
77+ entries.Add( IndexEntry( name, i, item))
8078
8179 entries.Sort( indexEntryComparer)
8280 { new IIndexedNavigableItems with
8381 member _.Find ( searchValue ) =
8482 let result = HashSet( navigateToSearchResultComparer)
8583 if entries.Count > 0 then
86- let entryToFind = IndexEntry( searchValue, 0 , Unchecked.defaultof<_>, Unchecked.defaultof <_> )
84+ let entryToFind = IndexEntry( searchValue, 0 , Unchecked.defaultof<_>)
8785
8886 let initial =
8987 let p = entries.BinarySearch( entryToFind, indexEntryComparer)
@@ -143,7 +141,8 @@ module private Utils =
143141 | NavigableItemKind.EnumCase -> Glyph.EnumPublic
144142 | NavigableItemKind.UnionCase -> Glyph.EnumPublic
145143
146- let containerToString ( container : NavigableContainer ) ( project : Project ) =
144+ let containerToString ( container : NavigableContainer ) ( document : Document ) =
145+ let project = document.Project
147146 let typeAsString =
148147 match container.Type with
149148 | NavigableContainerType.File -> " project "
@@ -156,7 +155,13 @@ module private Utils =
156155 | NavigableContainerType.File ->
157156 ( Path.GetFileNameWithoutExtension project.Name) + " , " + ( Path.GetFileName container.Name)
158157 | _ -> container.Name
159- typeAsString + name
158+
159+ let combined = typeAsString + name
160+
161+ if isSignatureFile document.FilePath then
162+ " signature for: " + combined
163+ else
164+ combined
160165
161166 type PerDocumentSavedData = { Hash: int ; Items: Index .IIndexedNavigableItems }
162167
@@ -181,23 +186,29 @@ type internal FSharpNavigateToSearchService
181186 match parseResults with
182187 | None -> return [||]
183188 | Some parseResults ->
184-
185- let! sourceText = document.GetTextAsync( cancellationToken) |> Async.AwaitTask
186- let navItems parsedInput =
187- NavigateTo.GetNavigableItems parsedInput
188- |> Array.filter ( fun i -> kinds.Contains( navigateToItemKindToRoslynKind i.Kind))
189-
190- let items = parseResults.ParseTree |> navItems
191- let navigableItems =
192- [| for item in items do
193- match RoslynHelpers.TryFSharpRangeToTextSpan( sourceText, item.Range) with
194- | None -> ()
195- | Some sourceSpan ->
196- let glyph = navigateToItemKindToGlyph item.Kind
197- let kind = navigateToItemKindToRoslynKind item.Kind
198- let additionalInfo = containerToString item.Container document.Project
199- yield NavigableItem( document, sourceSpan, glyph, item.Name, kind, additionalInfo) |]
200- return navigableItems
189+ let! sourceText = document.GetTextAsync( cancellationToken) |> Async.AwaitTask
190+ let navItems parsedInput =
191+ NavigateTo.GetNavigableItems parsedInput
192+ |> Array.filter ( fun i -> kinds.Contains( navigateToItemKindToRoslynKind i.Kind))
193+
194+ let items = parseResults.ParseTree |> navItems
195+ let navigableItems =
196+ [|
197+ for item in items do
198+ match RoslynHelpers.TryFSharpRangeToTextSpan( sourceText, item.Range) with
199+ | None -> ()
200+ | Some sourceSpan ->
201+ let glyph = navigateToItemKindToGlyph item.Kind
202+ let kind = navigateToItemKindToRoslynKind item.Kind
203+ let additionalInfo = containerToString item.Container document
204+ let _name =
205+ if isSignatureFile document.FilePath then
206+ item.Name + " (signature)"
207+ else
208+ item.Name
209+ yield NavigableItem( document, sourceSpan, glyph, item.Name, kind, additionalInfo)
210+ |]
211+ return navigableItems
201212 }
202213
203214 let getCachedIndexedNavigableItems ( document : Document , parsingOptions : FSharpParsingOptions , kinds : IImmutableSet < string >) =
0 commit comments