-
Notifications
You must be signed in to change notification settings - Fork 6.3k
Description
Reproduction steps
- Start Zed.
- Make sure format on save is enabled in the editor settings.
- Open a Zig project.
- Slightly edit a file.
- Save the file.
Current vs. Expected behavior
Current: it takes several seconds to format the file before it is saved.
Expected: it should save the file a lot faster.
Problem seems to be Windows only.
Zed version and system specs
Zed 0.217.3
80433cb
0.217.3+stable.105.80433cb239e868271457ac376673a5f75bc4adb1
OS: Windows 11
Processor AMD Ryzen 7 8845HS w/ Radeon 780M Graphics (3.80 GHz)
Installed RAM 32,0 GB (28,8 GB usable)
System type 64-bit operating system, x64-based processor
Attach Zed log file
Zed.log
// Send:
{"jsonrpc":"2.0","id":8,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":15,"character":11}}}
// Receive:
{"jsonrpc":"2.0","id":8,"result":null}
// Send:
{"jsonrpc":"2.0","id":9,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"range":{"start":{"line":15,"character":11},"end":{"line":15,"character":11}},"context":{"diagnostics":[],"only":["quickfix","refactor","source","source.organizeImports","source.fixAll"]}}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":9}}
// Send:
{"jsonrpc":"2.0","id":10,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":19,"character":19}}}
// Receive:
{"jsonrpc":"2.0","id":10,"result":null}
// Send:
{"jsonrpc":"2.0","id":11,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"range":{"start":{"line":19,"character":19},"end":{"line":19,"character":19}},"context":{"diagnostics":[],"only":["quickfix","refactor","source","source.organizeImports","source.fixAll"]}}}
// Receive:
{"jsonrpc":"2.0","id":9,"result":[{"title":"organize @import","kind":"source.organizeImports","isPreferred":true,"edit":{"changes":{"file:///c:/zigsrc/ZedTests/src/main.zig":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"newText":"const std = @import("std");\n\nconst ZedTests = @import("ZedTests");\n\n"},{"range":{"start":{"line":0,"character":0},"end":{"line":1,"character":0}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":3,"character":0}},"newText":""}]}}}]}
// Send:
{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig","version":1},"contentChanges":[{"range":{"start":{"line":19,"character":18},"end":{"line":19,"character":19}},"text":""}]}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":11}}
// Send:
{"jsonrpc":"2.0","id":12,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":19,"character":18}}}
// Send:
{"jsonrpc":"2.0","id":13,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"range":{"start":{"line":19,"character":18},"end":{"line":19,"character":18}},"context":{"diagnostics":[],"only":["quickfix","refactor","source","source.organizeImports","source.fixAll"]}}}
// Receive:
{"jsonrpc":"2.0","id":11,"result":[{"title":"organize @import","kind":"source.organizeImports","isPreferred":true,"edit":{"changes":{"file:///c:/zigsrc/ZedTests/src/main.zig":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"newText":"const std = @import("std");\n\nconst ZedTests = @import("ZedTests");\n\n"},{"range":{"start":{"line":0,"character":0},"end":{"line":1,"character":0}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":3,"character":0}},"newText":""}]}}}]}
// Receive:
{"jsonrpc":"2.0","id":12,"result":null}
// Send:
{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig","version":2},"contentChanges":[{"range":{"start":{"line":17,"character":32},"end":{"line":18,"character":8}},"text":""},{"range":{"start":{"line":17,"character":45},"end":{"line":18,"character":8}},"text":" "},{"range":{"start":{"line":17,"character":55},"end":{"line":18,"character":5}},"text":"))"}]}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":13}}
// Send:
{"jsonrpc":"2.0","method":"workspace/didChangeWatchedFiles","params":{"changes":[{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig","type":2}]}}
// Send:
{"jsonrpc":"2.0","method":"textDocument/didSave","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"}}}
// Send:
{"jsonrpc":"2.0","id":14,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"range":{"start":{"line":17,"character":57},"end":{"line":17,"character":57}},"context":{"diagnostics":[],"only":["quickfix","refactor","source","source.organizeImports","source.fixAll"]}}}
// Receive:
{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/zigsrc/ZedTests/src/main.zig","diagnostics":[]}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":14}}
// Send:
{"jsonrpc":"2.0","id":15,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":15,"character":11}}}
// Send:
{"jsonrpc":"2.0","id":16,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"range":{"start":{"line":15,"character":11},"end":{"line":15,"character":11}},"context":{"diagnostics":[],"only":["quickfix","refactor","source","source.organizeImports","source.fixAll"]}}}
// Receive:
{"jsonrpc":"2.0","id":13,"result":[{"title":"organize @import","kind":"source.organizeImports","isPreferred":true,"edit":{"changes":{"file:///c:/zigsrc/ZedTests/src/main.zig":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"newText":"const std = @import("std");\n\nconst ZedTests = @import("ZedTests");\n\n"},{"range":{"start":{"line":0,"character":0},"end":{"line":1,"character":0}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":3,"character":0}},"newText":""}]}}}]}
// Send:
{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig","version":3},"contentChanges":[{"range":{"start":{"line":15,"character":10},"end":{"line":15,"character":11}},"text":""}]}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":15}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":16}}
// Send:
{"jsonrpc":"2.0","id":17,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":15,"character":10}}}
// Send:
{"jsonrpc":"2.0","id":18,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"range":{"start":{"line":15,"character":10},"end":{"line":15,"character":10}},"context":{"diagnostics":[],"only":["quickfix","refactor","source","source.organizeImports","source.fixAll"]}}}
// Receive:
{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/zigsrc/ZedTests/src/main.zig","diagnostics":[]}}
// Receive:
{"jsonrpc":"2.0","id":15,"result":null}
// Send:
{"jsonrpc":"2.0","id":19,"method":"textDocument/definition","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":17,"character":56}}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":19}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":17}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":18}}
// Send:
{"jsonrpc":"2.0","id":20,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":17,"character":56}}}
// Send:
{"jsonrpc":"2.0","id":21,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":17,"character":56}}}
// Send:
{"jsonrpc":"2.0","id":22,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"range":{"start":{"line":17,"character":56},"end":{"line":17,"character":56}},"context":{"diagnostics":[],"only":["quickfix","refactor","source","source.organizeImports","source.fixAll"]}}}
// Send:
{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig","version":4},"contentChanges":[{"range":{"start":{"line":17,"character":56},"end":{"line":17,"character":56}},"text":","}]}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":20}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":21}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":22}}
// Receive:
{"jsonrpc":"2.0","id":14,"result":[{"title":"organize @import","kind":"source.organizeImports","isPreferred":true,"edit":{"changes":{"file:///c:/zigsrc/ZedTests/src/main.zig":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"newText":"const std = @import("std");\n\nconst ZedTests = @import("ZedTests");\n\n"},{"range":{"start":{"line":0,"character":0},"end":{"line":1,"character":0}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":3,"character":0}},"newText":""}]}}}]}
// Send:
{"jsonrpc":"2.0","id":23,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":17,"character":57}}}
// Send:
{"jsonrpc":"2.0","id":24,"method":"textDocument/definition","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"position":{"line":17,"character":56}}}
// Send:
{"jsonrpc":"2.0","id":25,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"range":{"start":{"line":17,"character":57},"end":{"line":17,"character":57}},"context":{"diagnostics":[],"only":["quickfix","refactor","source","source.organizeImports","source.fixAll"]}}}
// Send:
{"jsonrpc":"2.0","method":"workspace/didChangeWatchedFiles","params":{"changes":[{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig","type":2}]}}
// Send:
{"jsonrpc":"2.0","method":"textDocument/didSave","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"}}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":24}}
// Receive:
{"jsonrpc":"2.0","id":16,"result":[{"title":"organize @import","kind":"source.organizeImports","isPreferred":true,"edit":{"changes":{"file:///c:/zigsrc/ZedTests/src/main.zig":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"newText":"const std = @import("std");\n\nconst ZedTests = @import("ZedTests");\n\n"},{"range":{"start":{"line":0,"character":0},"end":{"line":1,"character":0}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":3,"character":0}},"newText":""}]}}}]}
// Receive:
{"jsonrpc":"2.0","id":17,"result":null}
// Receive:
{"jsonrpc":"2.0","id":20,"result":null}
// Receive:
{"jsonrpc":"2.0","id":19,"result":null}
// Receive:
{"jsonrpc":"2.0","id":21,"result":null}
// Send:
{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig","version":5},"contentChanges":[{"range":{"start":{"line":13,"character":20},"end":{"line":14,"character":8}},"text":""},{"range":{"start":{"line":13,"character":24},"end":{"line":14,"character":8}},"text":" "},{"range":{"start":{"line":13,"character":27},"end":{"line":13,"character":27}},"text":");\n try std.testing.expectEqual(\n @as(i32, 42),\n list.pop(),"},{"range":{"start":{"line":18,"character":0},"end":{"line":19,"character":0}},"text":""}]}}
// Send:
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":25}}
// Send:
{"jsonrpc":"2.0","method":"workspace/didChangeWatchedFiles","params":{"changes":[{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig","type":2}]}}
// Send:
{"jsonrpc":"2.0","method":"textDocument/didSave","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"}}}
// Send:
{"jsonrpc":"2.0","id":26,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///C:/zigsrc/ZedTests/src/main.zig"},"range":{"start":{"line":18,"character":0},"end":{"line":18,"character":0}},"context":{"diagnostics":[],"only":["quickfix","refactor","source","source.organizeImports","source.fixAll"]}}}
// Receive:
{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///c:/zigsrc/ZedTests/src/main.zig","diagnostics":[]}}
Relevant Zed settings
settings.json
{
"use_on_type_format": false,
"languages": {
"Zig": {
"use_on_type_format": false,
"format_on_save": "on",
"formatter": {
"external": {
"command": "zig",
"arguments": ["fmt", "--stdin"],
},
},
"language_servers": ["zls"],
"code_actions_on_format": {
"source.fixAll": false,
"source.organizeImports": false,
},
},
},
"lsp": {
"zls": {
"binary": {
"path": "C:\zigsrc\zls\zls\zig-out\bin\zls.exe",
},
"settings": {
"zls": {},
},
},
},
}
Relevant Keymap
keymap.json
[
{
"context": "Workspace",
"bindings": {
// "shift shift": "file_finder::Toggle"
}
},
{
"context": "Editor && vim_mode == insert",
"bindings": {
// "j k": "vim::NormalBefore"
}
}
]
(for AI issues) Model provider details
No response
If you are using WSL on Windows, what flavor of Linux are you using?
None