@@ -28,20 +28,21 @@ function! OmniSharp#actions#definition#Find(...) abort
28
28
else
29
29
let loc = OmniSharp#py#Eval (' gotoDefinition()' )
30
30
if OmniSharp#py#CheckForError () | return 0 | endif
31
- " Mock metadata info for old server based setups
32
- return s: CBGotoDefinition (opts, loc , { ' MetadataSource ' : {}} )
31
+ " We never come from metadata here
32
+ return s: CBGotoDefinition (opts, loc , 0 )
33
33
endif
34
34
endfunction
35
35
36
36
function ! OmniSharp#actions#definition#Preview (... ) abort
37
37
let opts = a: 0 && a: 1 isnot 0 ? { ' Callback' : a: 1 } : {}
38
38
if g: OmniSharp_server_stdio
39
- let Callback = function (' s:CBPreviewDefinition' , [opts] )
39
+ let Callback = function (' s:CBPreviewDefinition' )
40
40
call s: StdioFind (Callback)
41
41
else
42
42
let loc = OmniSharp#py#Eval (' gotoDefinition()' )
43
43
if OmniSharp#py#CheckForError () | return 0 | endif
44
- call s: CBPreviewDefinition ({}, loc , {})
44
+ " We never come from metadata here
45
+ call s: CBPreviewDefinition (loc , 0 )
45
46
endif
46
47
endfunction
47
48
@@ -59,51 +60,50 @@ function! s:StdioFindRH(Callback, response) abort
59
60
if ! a: response .Success | return | endif
60
61
let body = a: response .Body
61
62
if type (body) == type ({}) && get (body, ' FileName' , v: null ) != v: null
62
- call a: Callback (OmniSharp#locations#Parse ([body])[0 ], body )
63
+ call a: Callback (OmniSharp#locations#Parse ([body])[0 ], 0 )
63
64
else
64
- call a: Callback (0 , body)
65
+ if g: OmniSharp_lookup_metadata
66
+ \ && type (body) == type ({})
67
+ \ && type (body.MetadataSource) == type ({})
68
+ call s: MetadataFind (a: Callback , body)
69
+ else
70
+ call a: Callback (0 , 1 )
71
+ endif
65
72
endif
66
73
endfunction
67
74
68
- function ! s: CBGotoDefinition (opts, location, metadata) abort
69
- let went_to_metadata = 0
75
+ function ! s: CBGotoDefinition (opts, location, fromMetadata) abort
70
76
if type (a: location ) != type ({}) " Check whether a dict was returned
71
- if g: OmniSharp_lookup_metadata
72
- \ && type (a: metadata ) == type ({})
73
- \ && type (a: metadata .MetadataSource) == type ({})
74
- let found = s: MetadataFind (0 , a: metadata , a: opts )
75
- let went_to_metadata = 1
76
- else
77
- echo ' Not found'
78
- let found = 0
79
- endif
77
+ echo ' Not found'
78
+ let found = 0
80
79
else
81
- let found = OmniSharp#locations#Navigate (a: location , a: opts .editcommand)
80
+ let found = OmniSharp#locations#Navigate (a: location , get (a: opts , ' editcommand' , ' edit' ))
81
+ if found && a: fromMetadata
82
+ setlocal nomodifiable readonly
83
+ endif
82
84
endif
83
- if has_key (a: opts , ' Callback' ) && ! went_to_metadata
85
+ if has_key (a: opts , ' Callback' )
84
86
call a: opts .Callback (found)
85
87
endif
86
88
return found
87
89
endfunction
88
90
89
- function ! s: CBPreviewDefinition (opts, location, metadata ) abort
91
+ function ! s: CBPreviewDefinition (location, fromMetadata ) abort
90
92
if type (a: location ) != type ({}) " Check whether a dict was returned
91
- if g: OmniSharp_lookup_metadata
92
- \ && type (a: metadata ) == type ({})
93
- \ && type (a: metadata .MetadataSource) == type ({})
94
- let found = s: MetadataFind (1 , a: metadata , a: opts )
95
- else
96
- echo ' Not found'
97
- endif
93
+ echo ' Not found'
98
94
else
95
+ let jumped_from_preview = &previewwindow
99
96
call OmniSharp#locations#Preview (a: location )
100
97
echo OmniSharp#locations#Modify (a: location ).filename
98
+ if a: fromMetadata && ! jumped_from_preview && &previewwindow
99
+ silent wincmd p
100
+ endif
101
101
endif
102
102
endfunction
103
103
104
- function ! s: MetadataFind (open_in_preview , metadata, opts ) abort
104
+ function ! s: MetadataFind (callback , metadata) abort
105
105
if g: OmniSharp_server_stdio
106
- let Callback = function (' s:CBGotoMetadata ' , [a: open_in_preview , a: opts ])
106
+ let Callback = function (' s:CBMetadataFind ' , [a: callback ])
107
107
call s: StdioMetadataFind (Callback, a: metadata )
108
108
return 1
109
109
else
@@ -126,7 +126,7 @@ function! s:StdioMetadataFindRH(Callback, metadata, response) abort
126
126
call a: Callback (a: response .Body, a: metadata )
127
127
endfunction
128
128
129
- function ! s: CBGotoMetadata (open_in_preview, opts , response, metadata) abort
129
+ function ! s: CBMetadataFind (callback , response, metadata) abort
130
130
let host = OmniSharp#GetHost ()
131
131
let metadata_filename = fnamemodify (
132
132
\ OmniSharp#util#TranslatePathForClient (a: response .SourceName), ' :t' )
@@ -137,24 +137,12 @@ function! s:CBGotoMetadata(open_in_preview, opts, response, metadata) abort
137
137
let bufnr = bufadd (temp_file)
138
138
call setbufvar (bufnr , ' OmniSharp_host' , host)
139
139
call setbufvar (bufnr , ' OmniSharp_metadata_filename' , a: response .SourceName)
140
- let jumped_from_preview = &previewwindow
141
140
let location = {
142
141
\ ' filename' : temp_file,
143
142
\ ' lnum' : a: metadata .Line,
144
143
\ ' col' : a: metadata .Column
145
144
\}
146
- if a: open_in_preview
147
- call OmniSharp#locations#Preview (location)
148
- else
149
- call OmniSharp#locations#Navigate (location, get (a: opts , ' editcommand' , ' edit' ))
150
- setlocal nomodifiable readonly
151
- endif
152
- if a: open_in_preview && ! jumped_from_preview && &previewwindow
153
- silent wincmd p
154
- endif
155
- if has_key (a: opts , ' Callback' )
156
- call a: opts .Callback (1 ) " found
157
- endif
145
+ call a: callback (location, 1 )
158
146
endfunction
159
147
160
148
let &cpoptions = s: save_cpo
0 commit comments