@@ -65,54 +65,14 @@ function! s:StdioFindRH(Callback, response) abort
6565 if g: OmniSharp_lookup_metadata
6666 \ && type (body) == type ({})
6767 \ && type (body.MetadataSource) == type ({})
68- call s: MetadataFind (a: Callback , body)
68+ let Callback = function (' s:CBMetadataFind' , [a: Callback ])
69+ call s: StdioMetadataFind (Callback, body)
6970 else
7071 call a: Callback (0 , 1 )
7172 endif
7273 endif
7374endfunction
7475
75- function ! s: CBGotoDefinition (opts, location, fromMetadata) abort
76- if type (a: location ) != type ({}) " Check whether a dict was returned
77- echo ' Not found'
78- let found = 0
79- else
80- let found = OmniSharp#locations#Navigate (a: location , get (a: opts , ' editcommand' , ' edit' ))
81- if found && a: fromMetadata
82- setlocal nomodifiable readonly
83- endif
84- endif
85- if has_key (a: opts , ' Callback' )
86- call a: opts .Callback (found)
87- endif
88- return found
89- endfunction
90-
91- function ! s: CBPreviewDefinition (location, fromMetadata) abort
92- if type (a: location ) != type ({}) " Check whether a dict was returned
93- echo ' Not found'
94- else
95- let jumped_from_preview = &previewwindow
96- call OmniSharp#locations#Preview (a: location )
97- echo OmniSharp#locations#Modify (a: location ).filename
98- if a: fromMetadata && ! jumped_from_preview && &previewwindow
99- silent wincmd p
100- endif
101- endif
102- endfunction
103-
104- function ! s: MetadataFind (callback, metadata) abort
105- if g: OmniSharp_server_stdio
106- let Callback = function (' s:CBMetadataFind' , [a: callback ])
107- call s: StdioMetadataFind (Callback, a: metadata )
108- return 1
109- else
110- echomsg ' GotoMetadata is not supported with the HTTP OmniSharp server. '
111- \ . ' Please consider upgrading to the stdio version.'
112- return 0
113- endif
114- endfunction
115-
11676function ! s: StdioMetadataFind (Callback, metadata) abort
11777 let opts = {
11878 \ ' ResponseHandler' : function (' s:StdioMetadataFindRH' , [a: Callback , a: metadata ]),
@@ -126,7 +86,7 @@ function! s:StdioMetadataFindRH(Callback, metadata, response) abort
12686 call a: Callback (a: response .Body, a: metadata )
12787endfunction
12888
129- function ! s: CBMetadataFind (callback , response, metadata) abort
89+ function ! s: CBMetadataFind (Callback , response, metadata) abort
13090 let host = OmniSharp#GetHost ()
13191 let metadata_filename = fnamemodify (
13292 \ OmniSharp#util#TranslatePathForClient (a: response .SourceName), ' :t' )
@@ -142,7 +102,36 @@ function! s:CBMetadataFind(callback, response, metadata) abort
142102 \ ' lnum' : a: metadata .Line,
143103 \ ' col' : a: metadata .Column
144104 \}
145- call a: callback (location, 1 )
105+ call a: Callback (location, 1 )
106+ endfunction
107+
108+ function ! s: CBGotoDefinition (opts, location, fromMetadata) abort
109+ if type (a: location ) != type ({}) " Check whether a dict was returned
110+ echo ' Not found'
111+ let found = 0
112+ else
113+ let found = OmniSharp#locations#Navigate (a: location , get (a: opts , ' editcommand' , ' edit' ))
114+ if found && a: fromMetadata
115+ setlocal nomodifiable readonly
116+ endif
117+ endif
118+ if has_key (a: opts , ' Callback' )
119+ call a: opts .Callback (found)
120+ endif
121+ return found
122+ endfunction
123+
124+ function ! s: CBPreviewDefinition (location, fromMetadata) abort
125+ if type (a: location ) != type ({}) " Check whether a dict was returned
126+ echo ' Not found'
127+ else
128+ let jumped_from_preview = &previewwindow
129+ call OmniSharp#locations#Preview (a: location )
130+ echo OmniSharp#locations#Modify (a: location ).filename
131+ if a: fromMetadata && ! jumped_from_preview && &previewwindow
132+ silent wincmd p
133+ endif
134+ endif
146135endfunction
147136
148137let &cpoptions = s: save_cpo
0 commit comments