Skip to content

Commit 0c7bd47

Browse files
committed
Add more instrumentation
1 parent 4542f17 commit 0c7bd47

File tree

1 file changed

+44
-33
lines changed

1 file changed

+44
-33
lines changed

src/requests/textdocument.jl

Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ end
116116
function measure_sub_operation(f, request_name, server)
117117
start_time = string(Dates.unix2datetime(time()), "Z")
118118
tic = time_ns()
119-
f()
119+
res = f()
120120
toc = time_ns()
121121
duration = (toc - tic) / 1e+6
122122

@@ -132,6 +132,8 @@ function measure_sub_operation(f, request_name, server)
132132
"time" => start_time
133133
)
134134
)
135+
136+
return res
135137
end
136138

137139
function textDocument_didChange_notification(params::DidChangeTextDocumentParams, server::LanguageServerInstance, conn)
@@ -418,7 +420,9 @@ function try_to_load_parents(child_path, server)
418420
end
419421

420422
function publish_diagnostics(uris::Vector{URI}, server, conn, source)
421-
jw_diagnostics_updated, jw_diagnostics_deleted = JuliaWorkspaces.get_files_with_updated_diagnostics(server.workspace)
423+
jw_diagnostics_updated, jw_diagnostics_deleted = measure_sub_operation("publish_diagnostics - get_files_with_updated_diagnostics", server) do
424+
JuliaWorkspaces.get_files_with_updated_diagnostics(server.workspace)
425+
end
422426

423427
all_uris_with_updates = Set{URI}()
424428

@@ -432,42 +436,49 @@ function publish_diagnostics(uris::Vector{URI}, server, conn, source)
432436

433437
diagnostics = Dict{URI,Vector{Diagnostic}}()
434438

435-
for uri in all_uris_with_updates
436-
diags = Diagnostic[]
437-
diagnostics[uri] = diags
439+
measure_sub_operation("publish_diagnostics - loop over updates", server) do
440+
for uri in all_uris_with_updates
441+
diags = Diagnostic[]
442+
diagnostics[uri] = diags
438443

439-
if hasdocument(server, uri)
440-
doc = getdocument(server, uri)
444+
if hasdocument(server, uri)
445+
doc = getdocument(server, uri)
441446

442-
if server.runlinter && (is_workspace_file(doc) || isunsavedfile(doc))
443-
pkgpath = getpath(doc)
444-
if any(is_in_target_dir_of_package.(Ref(pkgpath), server.lint_disableddirs))
445-
filter!(!is_diag_dependent_on_env, doc.diagnostics)
447+
if server.runlinter && (is_workspace_file(doc) || isunsavedfile(doc))
448+
pkgpath = getpath(doc)
449+
if any(is_in_target_dir_of_package.(Ref(pkgpath), server.lint_disableddirs))
450+
filter!(!is_diag_dependent_on_env, doc.diagnostics)
451+
end
452+
append!(diags, doc.diagnostics)
446453
end
447-
append!(diags, doc.diagnostics)
448454
end
449-
end
450455

451-
if JuliaWorkspaces.has_file(server.workspace, uri)
452-
st = JuliaWorkspaces.get_text_file(server.workspace, uri).content
453-
append!(diags, Diagnostic(
454-
Range(st, i.range),
455-
if i.severity==:error
456-
DiagnosticSeverities.Error
457-
elseif i.severity==:warning
458-
DiagnosticSeverities.Warning
459-
elseif i.severity==:info
460-
DiagnosticSeverities.Information
461-
else
462-
error("Unknown severity $(i.severity)")
463-
end,
464-
missing,
465-
missing,
466-
i.source,
467-
i.message,
468-
missing,
469-
missing
470-
) for i in JuliaWorkspaces.get_diagnostic(server.workspace, uri))
456+
if JuliaWorkspaces.has_file(server.workspace, uri)
457+
st = JuliaWorkspaces.get_text_file(server.workspace, uri).content
458+
459+
new_diags = measure_sub_operation("publish_diagnostics - get_diagnostic", server) do
460+
JuliaWorkspaces.get_diagnostic(server.workspace, uri)
461+
end
462+
463+
append!(diags, Diagnostic(
464+
Range(st, i.range),
465+
if i.severity==:error
466+
DiagnosticSeverities.Error
467+
elseif i.severity==:warning
468+
DiagnosticSeverities.Warning
469+
elseif i.severity==:info
470+
DiagnosticSeverities.Information
471+
else
472+
error("Unknown severity $(i.severity)")
473+
end,
474+
missing,
475+
missing,
476+
i.source,
477+
i.message,
478+
missing,
479+
missing
480+
) for i in new_diags)
481+
end
471482
end
472483
end
473484

0 commit comments

Comments
 (0)