Skip to content

Commit e04b51c

Browse files
authored
Merge pull request #1308 from julia-vscode/change-file-client-cap
Use watch files client capability
2 parents d8bf74c + 8f07a30 commit e04b51c

File tree

4 files changed

+40
-3
lines changed

4 files changed

+40
-3
lines changed

src/protocol/configuration.jl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,17 @@ end
4949
changes::Vector{FileEvent}
5050
end
5151

52+
const Pattern = String
53+
54+
struct RelativePattern <: Outbound
55+
baseUri::Union{WorkspaceFolder,URI}
56+
pattern::Pattern
57+
end
58+
59+
const GlobPattern = Union{Pattern,RelativePattern}
60+
5261
struct FileSystemWatcher <: Outbound
53-
globPattern::String
62+
globPattern::GlobPattern
5463
kind::Union{WatchKind,Missing}
5564
end
5665

src/protocol/initialize.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ end
2323

2424
@dict_readable struct DidChangeWatchedFilesClientCapabilities <: Outbound
2525
dynamicRegistration::Union{Bool,Missing}
26+
relativePatternSupport::Union{Bool,Missing}
2627
end
2728

2829
@dict_readable struct WorkspaceClientCapabilities <: Outbound

src/requests/init.jl

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,39 @@ end
189189
function initialized_notification(params::InitializedParams, server::LanguageServerInstance, conn)
190190
server.status = :running
191191

192+
client_capabilities_registrations = Registration[]
193+
192194
if server.clientcapability_workspace_didChangeConfiguration
195+
push!(
196+
client_capabilities_registrations,
197+
Registration(string(uuid4()), "workspace/didChangeConfiguration", missing)
198+
)
199+
end
200+
201+
if !ismissing(server.clientCapabilities) &&
202+
!ismissing(server.clientCapabilities.workspace) &&
203+
!ismissing(server.clientCapabilities.workspace.didChangeWatchedFiles) &&
204+
!ismissing(server.clientCapabilities.workspace.didChangeWatchedFiles.dynamicRegistration) &&
205+
!ismissing(server.clientCapabilities.workspace.didChangeWatchedFiles.relativePatternSupport) &&
206+
server.clientCapabilities.workspace.didChangeWatchedFiles.dynamicRegistration &&
207+
server.clientCapabilities.workspace.didChangeWatchedFiles.relativePatternSupport
208+
209+
push!(
210+
client_capabilities_registrations,
211+
Registration("workspace/didChangeWatchedFiles", "workspace/didChangeWatchedFiles", DidChangeWatchedFilesRegistrationOptions([
212+
FileSystemWatcher("**/*.{jl,jmd,md}", missing),
213+
FileSystemWatcher("**/{Project.toml,JuliaProject.toml,Manifest.toml,JuliaManifest.toml,.JuliaLint.toml}", missing)
214+
]))
215+
)
216+
end
217+
218+
if length(client_capabilities_registrations) > 0
193219
JSONRPC.send(
194220
conn,
195221
client_registerCapability_request_type,
196-
RegistrationParams([Registration(string(uuid4()), "workspace/didChangeConfiguration", missing)])
222+
RegistrationParams(client_capabilities_registrations)
197223
)
224+
198225
end
199226

200227
JuliaWorkspaces.mark_current_diagnostics(server.workspace)

test/test_shared_init_request.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ init_request = LanguageServer.InitializeParams(
1111
true,
1212
LanguageServer.WorkspaceEditClientCapabilities(true, missing, missing),
1313
LanguageServer.DidChangeConfigurationClientCapabilities(false),
14-
LanguageServer.DidChangeWatchedFilesClientCapabilities(false,),
14+
LanguageServer.DidChangeWatchedFilesClientCapabilities(false,false),
1515
LanguageServer.WorkspaceSymbolClientCapabilities(true, missing),
1616
LanguageServer.ExecuteCommandClientCapabilities(true),
1717
missing,

0 commit comments

Comments
 (0)