Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit13abe6f

Browse files
majochaKevinRansom
authored andcommitted
Clickable QuickInfo with "go to type" (#2574)
* custom tooltip test* tagClass augmented* kinda works* getting there* module, alias* not sure if works* fix build* go away!* parens out* halleluyah it builds* blank space on empty doc removed* more sensible* handle linked files* collapse empty TextBlocks* styling, simple tooltip, handle scripts* dismiss quickinfo on navigation* reliably dismiss quickinfo session* interface instead of boxing
1 parent96acb9a commit13abe6f

File tree

13 files changed

+351
-236
lines changed

13 files changed

+351
-236
lines changed

‎src/fsharp/NicePrint.fs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ module internal PrintUtilities =
8383
if isAttributethen
8484
defaultArg(String.tryDropSuffix name"Attribute") name
8585
else name
86-
lettyconTextL=wordL(tagEntityRefName tcref demangled)
86+
lettyconTextL=NavigableTaggedText.Create(tagEntityRefName tcref demangled, tcref.DefinitionRange)|> wordL
8787
if denv.shortTypeNamesthen
8888
tyconTextL
8989
else

‎src/fsharp/TastOps.fs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2507,7 +2507,7 @@ let tagEntityRefName (xref: EntityRef) name =
25072507
else tagClass name
25082508

25092509
letfullNameOfEntityRefAsLayout nmF(xref:EntityRef)=
2510-
letn=wordL(tagEntityRefName xref(nmF xref))
2510+
letn=NavigableTaggedText.Create(tagEntityRefName xref(nmF xref), xref.DefinitionRange)|> wordL
25112511
match fullNameOfParentOfEntityRefAsLayout xrefwith
25122512
| None-> n
25132513
| Some pathText-> pathText^^ SepL.dot^^ n

‎src/fsharp/fsi/fsi.fs‎

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -156,24 +156,24 @@ module internal Utilities =
156156

157157
memberr.AddText z s=
158158
letcolor=
159-
match swith
160-
|TaggedText.Keyword_-> ConsoleColor.White
161-
|TaggedText.TypeParameter_
162-
|TaggedText.Alias_
163-
|TaggedText.Class_
164-
|TaggedText.Module_
165-
|TaggedText.Interface_
166-
|TaggedText.Record_
167-
|TaggedText.Struct_
168-
|TaggedText.Union_
169-
|TaggedText.UnknownType_-> ConsoleColor.Cyan
170-
|TaggedText.UnionCase_
171-
|TaggedText.ActivePatternCase_-> ConsoleColor.Magenta
172-
|TaggedText.StringLiteral_-> ConsoleColor.Yellow
173-
|TaggedText.NumericLiteral_-> ConsoleColor.Green
159+
match s.Tagwith
160+
|LayoutTag.Keyword-> ConsoleColor.White
161+
|LayoutTag.TypeParameter
162+
|LayoutTag.Alias
163+
|LayoutTag.Class
164+
|LayoutTag.Module
165+
|LayoutTag.Interface
166+
|LayoutTag.Record
167+
|LayoutTag.Struct
168+
|LayoutTag.Union
169+
|LayoutTag.UnknownType-> ConsoleColor.Cyan
170+
|LayoutTag.UnionCase
171+
|LayoutTag.ActivePatternCase-> ConsoleColor.Magenta
172+
|LayoutTag.StringLiteral-> ConsoleColor.Yellow
173+
|LayoutTag.NumericLiteral-> ConsoleColor.Green
174174
|_-> Console.ForegroundColor
175175

176-
DoWithColor color(fun()-> outWriter.Write s.Value)
176+
DoWithColor color(fun()-> outWriter.Write s.Text)
177177

178178
z
179179

‎src/fsharp/layout.fs‎

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,17 @@ open Microsoft.FSharp.Core.Printf
1111
#nowarn"62"// This construct is for ML compatibility.
1212

1313
typelayout= Internal.Utilities.StructuredFormat.Layout
14+
typeLayoutTag= Internal.Utilities.StructuredFormat.LayoutTag
1415
typeTaggedText= Internal.Utilities.StructuredFormat.TaggedText
1516

17+
typeNavigableTaggedText(tag,text,range: Range.range)=
18+
member valRange= range
19+
interface TaggedTextwith
20+
memberx.Tag= tag
21+
memberx.Text= text
22+
static memberCreate(tt:TaggedText,range)=
23+
NavigableTaggedText(tt.Tag, tt.Text, range)
24+
1625
letspaces n=new String(' ',n)
1726

1827

@@ -33,8 +42,8 @@ let rec juxtRight = function
3342
| Attr(_tag,_attrs,l)-> juxtRight l
3443

3544
// NOTE: emptyL might be better represented as a constructor, so then (Sep"") would have true meaning
36-
letemptyL= Leaf(true,TaggedText.Text"",true)
37-
letisEmptyL=function Leaf(true,tag,true)when tag.Value=""->true|_->false
45+
letemptyL= Leaf(true,Internal.Utilities.StructuredFormat.TaggedTextOps.tag LayoutTag.Text"",true)
46+
letisEmptyL=function Leaf(true,tag,true)when tag.Text=""->true|_->false
3847

3948
letmkNode l r joint=
4049
if isEmptyL lthen relse
@@ -55,11 +64,11 @@ let rightL (str:TaggedText) = Leaf (true ,str,false)
5564
letleftL(str:TaggedText)= Leaf(false,str,true)
5665

5766
moduleTaggedTextOps=
58-
lettagActivePatternCase= Internal.Utilities.StructuredFormat.TaggedText.ActivePatternCase
59-
lettagActivePatternResult= Internal.Utilities.StructuredFormat.TaggedText.ActivePatternResult
67+
lettagActivePatternCase= Internal.Utilities.StructuredFormat.TaggedTextOps.tag LayoutTag.ActivePatternCase
68+
lettagActivePatternResult= Internal.Utilities.StructuredFormat.TaggedTextOps.tag LayoutTag.ActivePatternResult
6069
lettagAlias= Internal.Utilities.StructuredFormat.TaggedTextOps.tagAlias
6170
lettagClass= Internal.Utilities.StructuredFormat.TaggedTextOps.tagClass
62-
lettagUnion= Internal.Utilities.StructuredFormat.TaggedText.Union
71+
lettagUnion= Internal.Utilities.StructuredFormat.TaggedTextOps.tag LayoutTag.Union
6372
lettagUnionCase= Internal.Utilities.StructuredFormat.TaggedTextOps.tagUnionCase
6473
lettagDelegate= Internal.Utilities.StructuredFormat.TaggedTextOps.tagDelegate
6574
lettagEnum= Internal.Utilities.StructuredFormat.TaggedTextOps.tagEnum
@@ -72,7 +81,7 @@ module TaggedTextOps =
7281
lettagRecord= Internal.Utilities.StructuredFormat.TaggedTextOps.tagRecord
7382
lettagRecordField= Internal.Utilities.StructuredFormat.TaggedTextOps.tagRecordField
7483
lettagMethod= Internal.Utilities.StructuredFormat.TaggedTextOps.tagMethod
75-
lettagMember= Internal.Utilities.StructuredFormat.TaggedText.Member
84+
lettagMember= Internal.Utilities.StructuredFormat.TaggedTextOps.tag LayoutTag.Member
7685
lettagModule= Internal.Utilities.StructuredFormat.TaggedTextOps.tagModule
7786
lettagModuleBinding= Internal.Utilities.StructuredFormat.TaggedTextOps.tagModuleBinding
7887
lettagNamespace= Internal.Utilities.StructuredFormat.TaggedTextOps.tagNamespace
@@ -86,8 +95,8 @@ module TaggedTextOps =
8695
lettagTypeParameter= Internal.Utilities.StructuredFormat.TaggedTextOps.tagTypeParameter
8796
lettagText= Internal.Utilities.StructuredFormat.TaggedTextOps.tagText
8897
lettagPunctuation= Internal.Utilities.StructuredFormat.TaggedTextOps.tagPunctuation
89-
lettagUnknownEntity= Internal.Utilities.StructuredFormat.TaggedText.UnknownEntity
90-
lettagUnknownType= Internal.Utilities.StructuredFormat.TaggedText.UnknownType
98+
lettagUnknownEntity= Internal.Utilities.StructuredFormat.TaggedTextOps.tag LayoutTag.UnknownEntity
99+
lettagUnknownType= Internal.Utilities.StructuredFormat.TaggedTextOps.tag LayoutTag.UnknownType
91100

92101
moduleLiterals=
93102
// common tagged literals
@@ -317,8 +326,8 @@ let squashTo maxWidth layout =
317326
letbreaks,layout,pos,offset= fit breaks(pos,l)
318327
letlayout= Attr(tag,attrs,layout)
319328
breaks,layout,pos,offset
320-
| Leaf(_jl,text,_jr)->
321-
lettextWidth=text.Length
329+
| Leaf(_jl,taggedText,_jr)->
330+
lettextWidth=taggedText.Text.Length
322331
let recfitLeaf breaks pos=
323332
if pos+ textWidth<= maxWidththen
324333
breaks,layout,pos+ textWidth,textWidth(* great, it fits*)
@@ -382,7 +391,7 @@ let renderL (rr: LayoutRenderer<_,_>) layout =
382391
| ObjLeaf_-> failwith"ObjLeaf should never apper here"
383392
(* pos is tab level*)
384393
| Leaf(_,text,_)->
385-
k(rr.AddText z text,i+ text.Length)
394+
k(rr.AddText z text,i+ text.Text.Length)
386395
| Node(_,l,_,r,_,Broken indent)->
387396
addL z pos i l<|
388397
fun(z,_i)->
@@ -409,7 +418,7 @@ let renderL (rr: LayoutRenderer<_,_>) layout =
409418
letstringR=
410419
{new LayoutRenderer<string,string list>with
411420
memberx.Start()=[]
412-
memberx.AddText rstrstext=text.Value::rstrs
421+
memberx.AddText rstrstaggedText=taggedText.Text::rstrs
413422
memberx.AddBreak rstrs n=(spaces n)::"\n":: rstrs
414423
memberx.AddTag z(_,_,_)= z
415424
memberx.Finish rstrs= String.Join("",Array.ofList(List.rev rstrs))}
@@ -431,7 +440,7 @@ let taggedTextListR collector =
431440
letchannelR(chan:TextWriter)=
432441
{new LayoutRenderer<NoResult,NoState>with
433442
memberr.Start()= NoState
434-
memberr.AddText z s= chan.Write s.Value; z
443+
memberr.AddText z s= chan.Write s.Text; z
435444
memberr.AddBreak z n= chan.WriteLine(); chan.Write(spaces n); z
436445
memberr.AddTag z(tag,attrs,start)= z
437446
memberr.Finish z= NoResult}
@@ -440,7 +449,7 @@ let channelR (chan:TextWriter) =
440449
letbufferR os=
441450
{new LayoutRenderer<NoResult,NoState>with
442451
memberr.Start()= NoState
443-
memberr.AddText z s= bprintf os"%s" s.Value; z
452+
memberr.AddText z s= bprintf os"%s" s.Text; z
444453
memberr.AddBreak z n= bprintf os"\n"; bprintf os"%s"(spaces n); z
445454
memberr.AddTag z(tag,attrs,start)= z
446455
memberr.Finish z= NoResult}

‎src/fsharp/layout.fsi‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,15 @@ open Internal.Utilities.StructuredFormat
99
openInternal.Utilities.StructuredFormat.TaggedTextOps
1010

1111
typelayout= Internal.Utilities.StructuredFormat.Layout
12+
typeLayoutTag= Internal.Utilities.StructuredFormat.LayoutTag
1213
typeTaggedText= Internal.Utilities.StructuredFormat.TaggedText
14+
15+
typeNavigableTaggedText=
16+
new: LayoutTag* string* Range.range-> NavigableTaggedText
17+
memberRange:Range.range
18+
static memberCreate:TaggedText* Range.range-> NavigableTaggedText
19+
interface TaggedText
20+
1321
module TaggedTextOps= Internal.Utilities.StructuredFormat.TaggedTextOps
1422

1523
valemptyL:Layout

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp