Skip to content

Commit 5e152d6

Browse files
Merge branch 'master' into ib/report_parse_error_file
2 parents 0e670f6 + 8f77b37 commit 5e152d6

File tree

5 files changed

+21
-1
lines changed

5 files changed

+21
-1
lines changed

src/LanguageServer.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ include("requests/workspace.jl")
2828
include("requests/actions.jl")
2929
include("requests/init.jl")
3030
include("requests/signatures.jl")
31+
include("requests/highlight.jl")
3132
include("utilities.jl")
3233

3334
end

src/languageserverinstance.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ function Base.run(server::LanguageServerInstance)
303303
msg_dispatcher[textDocument_references_request_type] = request_wrapper(textDocument_references_request, server)
304304
msg_dispatcher[textDocument_rename_request_type] = request_wrapper(textDocument_rename_request, server)
305305
msg_dispatcher[textDocument_documentSymbol_request_type] = request_wrapper(textDocument_documentSymbol_request, server)
306+
msg_dispatcher[textDocument_documentHighlight_request_type] = request_wrapper(textDocument_documentHighlight_request, server)
306307
msg_dispatcher[julia_getModuleAt_request_type] = request_wrapper(julia_getModuleAt_request, server)
307308
msg_dispatcher[julia_getDocAt_request_type] = request_wrapper(julia_getDocAt_request, server)
308309
msg_dispatcher[textDocument_hover_request_type] = request_wrapper(textDocument_hover_request, server)

src/protocol/messagedefs.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const textDocument_formatting_request_type = JSONRPC.RequestType("textDocument/f
66
const textDocument_references_request_type = JSONRPC.RequestType("textDocument/references", ReferenceParams, Vector{Location})
77
const textDocument_rename_request_type = JSONRPC.RequestType("textDocument/rename", RenameParams, WorkspaceEdit)
88
const textDocument_documentSymbol_request_type = JSONRPC.RequestType("textDocument/documentSymbol", DocumentSymbolParams, Vector{SymbolInformation})
9+
const textDocument_documentHighlight_request_type = JSONRPC.RequestType("textDocument/documentHighlight", DocumentHighlightParams, Vector{DocumentHighlight})
910
const textDocument_hover_request_type = JSONRPC.RequestType("textDocument/hover", TextDocumentPositionParams, Hover)
1011
const textDocument_didOpen_notification_type = JSONRPC.NotificationType("textDocument/didOpen", DidOpenTextDocumentParams)
1112
const textDocument_didClose_notification_type = JSONRPC.NotificationType("textDocument/didClose", DidCloseTextDocumentParams)

src/requests/highlight.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function textDocument_documentHighlight_request(params::DocumentHighlightParams, server::LanguageServerInstance, conn)
2+
doc = getdocument(server, URI2(params.textDocument.uri))
3+
offset = get_offset(doc, params.position)
4+
identifier = get_identifier(getcst(doc), offset)
5+
identifier !== nothing || return nothing
6+
highlights = DocumentHighlight[]
7+
if StaticLint.hasref(identifier) && refof(identifier) isa StaticLint.Binding
8+
for ref in refof(identifier).refs
9+
doc1, o = get_file_loc(ref)
10+
if ref isa EXPR && doc1._uri == doc._uri
11+
kind = StaticLint.hasbinding(ref) ? DocumentHighlightKinds.Write : DocumentHighlightKinds.Read
12+
push!(highlights, DocumentHighlight(Range(doc, o .+ (0:ref.span)), kind))
13+
end
14+
end
15+
end
16+
return isempty(highlights) ? nothing : highlights
17+
end

src/requests/init.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const serverCapabilities = ServerCapabilities(
1212
false,
1313
false,
1414
true,
15-
false,
15+
true,
1616
true,
1717
true,
1818
missing,

0 commit comments

Comments
 (0)