1import { RequestHandler0, NotificationHandler, HandlerResult, CancellationToken } from 'vscode-jsonrpc'; 2import { ProtocolRequestType0, ProtocolNotificationType } from './messages'; 3export interface WorkspaceFoldersInitializeParams { 4 /** 5 * The actual configured workspace folders. 6 */ 7 workspaceFolders: WorkspaceFolder[] | null; 8} 9export interface WorkspaceFoldersClientCapabilities { 10 /** 11 * The workspace client capabilities 12 */ 13 workspace?: { 14 /** 15 * The client has support for workspace folders 16 * 17 * @since 3.6.0 18 */ 19 workspaceFolders?: boolean; 20 }; 21} 22export interface WorkspaceFoldersServerCapabilities { 23 /** 24 * The workspace server capabilities 25 */ 26 workspace?: { 27 workspaceFolders?: { 28 /** 29 * The Server has support for workspace folders 30 */ 31 supported?: boolean; 32 /** 33 * Whether the server wants to receive workspace folder 34 * change notifications. 35 * 36 * If a strings is provided the string is treated as a ID 37 * under which the notification is registered on the client 38 * side. The ID can be used to unregister for these events 39 * using the `client/unregisterCapability` request. 40 */ 41 changeNotifications?: string | boolean; 42 }; 43 }; 44} 45export interface WorkspaceFolder { 46 /** 47 * The associated URI for this workspace folder. 48 */ 49 uri: string; 50 /** 51 * The name of the workspace folder. Used to refer to this 52 * workspace folder in the user interface. 53 */ 54 name: string; 55} 56/** 57 * The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders. 58 */ 59export declare namespace WorkspaceFoldersRequest { 60 const type: ProtocolRequestType0<WorkspaceFolder[] | null, never, void, void>; 61 type HandlerSignature = RequestHandler0<WorkspaceFolder[] | null, void>; 62 type MiddlewareSignature = (token: CancellationToken, next: HandlerSignature) => HandlerResult<WorkspaceFolder[] | null, void>; 63} 64/** 65 * The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace 66 * folder configuration changes. 67 */ 68export declare namespace DidChangeWorkspaceFoldersNotification { 69 const type: ProtocolNotificationType<DidChangeWorkspaceFoldersParams, void>; 70 type HandlerSignature = NotificationHandler<DidChangeWorkspaceFoldersParams>; 71 type MiddlewareSignature = (params: DidChangeWorkspaceFoldersParams, next: HandlerSignature) => void; 72} 73/** 74 * The parameters of a `workspace/didChangeWorkspaceFolders` notification. 75 */ 76export interface DidChangeWorkspaceFoldersParams { 77 /** 78 * The actual workspace folder change event. 79 */ 80 event: WorkspaceFoldersChangeEvent; 81} 82/** 83 * The workspace folder change event. 84 */ 85export interface WorkspaceFoldersChangeEvent { 86 /** 87 * The array of added workspace folders 88 */ 89 added: WorkspaceFolder[]; 90 /** 91 * The array of the removed workspace folders 92 */ 93 removed: WorkspaceFolder[]; 94} 95