|
1 | | -/*--------------------------------------------------------------------------------------------- |
2 | | - * Copyright (c) Microsoft Corporation. All rights reserved. |
3 | | - * Licensed under the MIT License. See License.txt in the project root for license information. |
4 | | - *--------------------------------------------------------------------------------------------*/ |
5 | | - |
6 | | -import AbstractSupport from './abstractProvider'; |
7 | | -import * as protocol from '../omnisharp/protocol'; |
8 | | -import * as serverUtils from '../omnisharp/utils'; |
9 | | -import {toRange} from '../omnisharp/typeConvertion'; |
10 | | -import {CancellationToken, Uri, WorkspaceSymbolProvider, SymbolInformation, SymbolKind} from 'vscode'; |
11 | | - |
12 | | - |
13 | | -export default class OmnisharpWorkspaceSymbolProvider extends AbstractSupport implements WorkspaceSymbolProvider { |
14 | | - |
15 | | - public async provideWorkspaceSymbols(search: string, token: CancellationToken): Promise<SymbolInformation[]> { |
16 | | - |
17 | | - return serverUtils.findSymbols(this._server, { Filter: search, FileName: '' }, token).then(res => { |
18 | | - if (res && Array.isArray(res.QuickFixes)) { |
19 | | - return res.QuickFixes.map(OmnisharpWorkspaceSymbolProvider._asSymbolInformation); |
20 | | - } |
21 | | - }); |
22 | | - } |
23 | | - |
24 | | - private static _asSymbolInformation(symbolInfo: protocol.SymbolLocation): SymbolInformation { |
25 | | - |
26 | | - return new SymbolInformation(symbolInfo.Text, OmnisharpWorkspaceSymbolProvider._toKind(symbolInfo), |
27 | | - toRange(symbolInfo), |
28 | | - Uri.file(symbolInfo.FileName)); |
29 | | - } |
30 | | - |
31 | | - private static _toKind(symbolInfo: protocol.SymbolLocation): SymbolKind { |
32 | | - switch (symbolInfo.Kind) { |
33 | | - case 'Method': |
34 | | - return SymbolKind.Method; |
35 | | - case 'Field': |
36 | | - return SymbolKind.Field; |
37 | | - case 'Property': |
38 | | - return SymbolKind.Property; |
39 | | - case 'Interface': |
40 | | - return SymbolKind.Interface; |
41 | | - case 'Enum': |
42 | | - return SymbolKind.Enum; |
43 | | - case 'Struct': |
44 | | - return SymbolKind.Struct; |
45 | | - case 'Event': |
46 | | - return SymbolKind.Event; |
47 | | - case 'EnumMember': |
48 | | - return SymbolKind.EnumMember; |
49 | | - case 'Class': |
50 | | - return SymbolKind.Class; |
51 | | - default: |
52 | | - return SymbolKind.Class; |
53 | | - |
54 | | - } |
55 | | - } |
56 | | -} |
| 1 | +/*--------------------------------------------------------------------------------------------- |
| 2 | + * Copyright (c) Microsoft Corporation. All rights reserved. |
| 3 | + * Licensed under the MIT License. See License.txt in the project root for license information. |
| 4 | + *--------------------------------------------------------------------------------------------*/ |
| 5 | + |
| 6 | +import AbstractSupport from './abstractProvider'; |
| 7 | +import { OmniSharpServer } from '../omnisharp/server'; |
| 8 | +import OptionProvider from '../observers/OptionProvider'; |
| 9 | +import * as protocol from '../omnisharp/protocol'; |
| 10 | +import * as serverUtils from '../omnisharp/utils'; |
| 11 | +import {toRange} from '../omnisharp/typeConvertion'; |
| 12 | +import {CancellationToken, Uri, WorkspaceSymbolProvider, SymbolInformation, SymbolKind} from 'vscode'; |
| 13 | + |
| 14 | + |
| 15 | +export default class OmnisharpWorkspaceSymbolProvider extends AbstractSupport implements WorkspaceSymbolProvider { |
| 16 | + |
| 17 | + constructor(server: OmniSharpServer, private optionProvider: OptionProvider) { |
| 18 | + super(server); |
| 19 | + } |
| 20 | + |
| 21 | + public async provideWorkspaceSymbols(search: string, token: CancellationToken): Promise<SymbolInformation[]> { |
| 22 | + |
| 23 | + let options = this.optionProvider.GetLatestOptions(); |
| 24 | + let minFilterLength = options.minFindSymbolsFilterLength > 0 ? options.minFindSymbolsFilterLength : undefined; |
| 25 | + let maxItemsToReturn = options.maxFindSymbolsItems > 0 ? options.maxFindSymbolsItems : undefined; |
| 26 | + return serverUtils.findSymbols(this._server, { Filter: search, MinFilterLength: minFilterLength, MaxItemsToReturn: maxItemsToReturn, FileName: '' }, token).then(res => { |
| 27 | + if (res && Array.isArray(res.QuickFixes)) { |
| 28 | + return res.QuickFixes.map(OmnisharpWorkspaceSymbolProvider._asSymbolInformation); |
| 29 | + } |
| 30 | + }); |
| 31 | + } |
| 32 | + |
| 33 | + private static _asSymbolInformation(symbolInfo: protocol.SymbolLocation): SymbolInformation { |
| 34 | + |
| 35 | + return new SymbolInformation(symbolInfo.Text, OmnisharpWorkspaceSymbolProvider._toKind(symbolInfo), |
| 36 | + toRange(symbolInfo), |
| 37 | + Uri.file(symbolInfo.FileName)); |
| 38 | + } |
| 39 | + |
| 40 | + private static _toKind(symbolInfo: protocol.SymbolLocation): SymbolKind { |
| 41 | + switch (symbolInfo.Kind) { |
| 42 | + case 'Method': |
| 43 | + return SymbolKind.Method; |
| 44 | + case 'Field': |
| 45 | + return SymbolKind.Field; |
| 46 | + case 'Property': |
| 47 | + return SymbolKind.Property; |
| 48 | + case 'Interface': |
| 49 | + return SymbolKind.Interface; |
| 50 | + case 'Enum': |
| 51 | + return SymbolKind.Enum; |
| 52 | + case 'Struct': |
| 53 | + return SymbolKind.Struct; |
| 54 | + case 'Event': |
| 55 | + return SymbolKind.Event; |
| 56 | + case 'EnumMember': |
| 57 | + return SymbolKind.EnumMember; |
| 58 | + case 'Class': |
| 59 | + return SymbolKind.Class; |
| 60 | + default: |
| 61 | + return SymbolKind.Class; |
| 62 | + |
| 63 | + } |
| 64 | + } |
| 65 | +} |
0 commit comments