summaryrefslogtreecommitdiff
path: root/src/lsp/lsp_client.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/lsp/lsp_client.zig')
-rw-r--r--src/lsp/lsp_client.zig8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lsp/lsp_client.zig b/src/lsp/lsp_client.zig
index 0c5e3b7e..b57b348e 100644
--- a/src/lsp/lsp_client.zig
+++ b/src/lsp/lsp_client.zig
@@ -501,6 +501,14 @@ fn run(c: *Conn, si: usize, arena: std.mem.Allocator, req: lsp.Req, out: *std.Io
var uri: std.ArrayList(u8) = .empty;
try uriOf(&uri, arena, req.path);
try syncDoc(c, si, arena, uri.items, req.source);
+ // Every other open file this server answers for, before a query whose
+ // answer reaches them: zls renames only in the documents it has.
+ for (req.others) |doc| if (specFor(doc.path) == si and !std.mem.eql(u8, doc.path, req.path)) {
+ var other: std.ArrayList(u8) = .empty;
+ try uriOf(&other, arena, doc.path);
+ try syncDoc(c, si, arena, other.items, doc.source);
+ tr.note("synced {s} first", .{std.fs.path.basename(doc.path)});
+ };
const pos = posOf(req.source, req.offset, c.caps.enc);
var cx: Cx = .{ .arena = arena, .base = req.root, .cur_path = req.path, .cur_src = req.source, .out = out };