|
1 | 1 | let s:save_cpo = &cpoptions
|
2 | 2 | set cpoptions&vim
|
3 | 3 |
|
| 4 | +" Navigate to the next member definition in the class. |
| 5 | +" Optional arguments: |
| 6 | +" Callback: When a callback is passed in, it is called after the response is |
| 7 | +" returned with the member location. No navigation is performed when a |
| 8 | +" callback is passed in. |
4 | 9 | function! OmniSharp#actions#navigate#Down(...) abort
|
5 |
| - if a:0 > 0 |
6 |
| - let Callback = a:1 |
7 |
| - call s:Navigate(1, Callback) |
8 |
| - else |
9 |
| - call s:Navigate(1) |
10 |
| - endif |
| 10 | + call s:Navigate(1, a:0 ? a:1 : function('OmniSharp#locations#Navigate')) |
11 | 11 | endfunction
|
12 | 12 |
|
| 13 | +" See OmniSharp#actions#navigate#Down |
13 | 14 | function! OmniSharp#actions#navigate#Up(...) abort
|
14 |
| - if a:0 > 0 |
15 |
| - let Callback = a:1 |
16 |
| - call s:Navigate(0, Callback) |
17 |
| - else |
18 |
| - call s:Navigate(0) |
19 |
| - endif |
| 15 | + call s:Navigate(0, a:0 ? a:1 : function('OmniSharp#locations#Navigate')) |
20 | 16 | endfunction
|
21 | 17 |
|
22 |
| -function! s:Navigate(down, ...) abort |
| 18 | +function! s:Navigate(down, Callback) abort |
23 | 19 | if g:OmniSharp_server_stdio
|
24 |
| - let Callback = a:0 ? a:1 : function('s:NavigateRH') |
25 |
| - let opts = { 'ResponseHandler': Callback } |
| 20 | + let RH = function('s:StdioNavigateRH', [a:Callback]) |
| 21 | + let opts = { 'ResponseHandler': RH } |
26 | 22 | call OmniSharp#stdio#Request(a:down ? '/navigatedown' : '/navigateup', opts)
|
27 | 23 | else
|
28 | 24 | call OmniSharp#py#Eval(a:down ? 'navigateDown()' : 'navigateUp()')
|
29 | 25 | call OmniSharp#py#CheckForError()
|
30 | 26 | endif
|
31 | 27 | endfunction
|
32 | 28 |
|
33 |
| -function! s:NavigateRH(response) abort |
| 29 | +function! s:StdioNavigateRH(Callback, response) abort |
34 | 30 | if !a:response.Success | return | endif
|
35 |
| - normal! m' |
36 |
| - call cursor(a:response.Body.Line, a:response.Body.Column) |
| 31 | + call a:Callback(OmniSharp#locations#Parse([a:response.Body])[0]) |
37 | 32 | endfunction
|
38 | 33 |
|
39 | 34 | let &cpoptions = s:save_cpo
|
|
0 commit comments