Skip to content

Commit 17d035f

Browse files
committed
refactor: normalize file paths in formatter and test snapshots
- Update formatter to show relative paths when inside cwd, basename when outside - Normalize file paths in replay test snapshots to be cwd-relative - Update expected test data to use relative paths instead of absolute paths
1 parent e31450c commit 17d035f

File tree

8 files changed

+22
-11
lines changed

8 files changed

+22
-11
lines changed

lua/opencode/ui/formatter.lua

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -501,12 +501,13 @@ end
501501
function M._format_file_tool(output, tool_type, input, metadata)
502502
local file_name = ''
503503
if input then
504-
local relative = vim.fn.fnamemodify(input.filePath, ':.')
504+
local cwd = vim.fn.getcwd()
505505
local absolute = vim.fn.fnamemodify(input.filePath, ':p')
506-
if relative == absolute then
507-
file_name = vim.fn.fnamemodify(input.filePath, ':~')
506+
507+
if vim.startswith(absolute, cwd .. '/') then
508+
file_name = absolute:sub(#cwd + 2)
508509
else
509-
file_name = relative
510+
file_name = vim.fn.fnamemodify(input.filePath, ':t')
510511
end
511512
end
512513

tests/data/diagnostics.expected.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

tests/data/diff.expected.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"lines":["----","","","can you add \"great\" before \"string\" in @diff-test.txt?","","[diff-test.txt](diff-test.txt)","","----","","","** edit** `/Users/cam/tmp/a/diff-test.txt`","","`````txt"," this is a string"," this is a great string","","`````","","**󰻛 Created Snapshot** `1f593f7e`","","----","","",""],"extmarks":[[1,1,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287269001C5gRusYfX7A1w1]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_repeat_linebreak":false}],[2,2,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[3,3,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[4,3,39,{"ns_id":3,"hl_group":"OpencodeMention","end_col":53,"end_row":3,"hl_eol":false,"priority":1000,"right_gravity":true,"end_right_gravity":false}],[5,4,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[6,5,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[7,8,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287287001HVwpPaH7WkRVdN]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_repeat_linebreak":false}],[8,10,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[9,11,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[10,12,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[11,13,0,{"ns_id":3,"end_row":14,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"end_col":0,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","priority":5000,"right_gravity":true,"virt_text_repeat_linebreak":false}],[12,13,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[13,14,0,{"ns_id":3,"end_row":15,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"end_col":0,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"right_gravity":true,"virt_text_repeat_linebreak":false}],[14,14,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[15,15,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[16,16,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[17,21,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:43:03)","OpencodeHint"],[" [msg_9d7288f2f001hW6NqqhtBc72UU]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_repeat_linebreak":false}]],"timestamp":1769091073,"actions":[{"key":"R","type":"diff_revert_selected_file","text":"[R]evert file","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"display_line":18,"range":{"from":18,"to":18}},{"key":"A","type":"diff_revert_all","text":"Revert [A]ll","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"display_line":18,"range":{"from":18,"to":18}},{"key":"D","type":"diff_open","text":"[D]iff","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"display_line":18,"range":{"from":18,"to":18}}]}
1+
{"timestamp":1769093505,"actions":[{"display_line":18,"text":"[R]evert file","key":"R","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"range":{"to":18,"from":18},"type":"diff_revert_selected_file"},{"display_line":18,"text":"Revert [A]ll","key":"A","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"range":{"to":18,"from":18},"type":"diff_revert_all"},{"display_line":18,"text":"[D]iff","key":"D","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"range":{"to":18,"from":18},"type":"diff_open"}],"lines":["----","","","can you add \"great\" before \"string\" in @diff-test.txt?","","[diff-test.txt](diff-test.txt)","","----","","","** edit** `diff-test.txt`","","`````txt"," this is a string"," this is a great string","","`````","","**󰻛 Created Snapshot** `1f593f7e`","","----","","",""],"extmarks":[[1,1,0,{"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287269001C5gRusYfX7A1w1]","OpencodeHint"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","right_gravity":true}],[2,2,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[3,3,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[4,3,39,{"end_col":53,"end_right_gravity":false,"right_gravity":true,"hl_eol":false,"priority":1000,"hl_group":"OpencodeMention","ns_id":3,"end_row":3}],[5,4,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[6,5,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[7,8,0,{"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287287001HVwpPaH7WkRVdN]","OpencodeHint"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","right_gravity":true}],[8,10,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[9,11,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[10,12,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[11,13,0,{"end_col":0,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","ns_id":3,"right_gravity":true,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":14,"hl_group":"OpencodeDiffDelete","priority":5000}],[12,13,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[13,14,0,{"end_col":0,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","ns_id":3,"right_gravity":true,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":15,"hl_group":"OpencodeDiffAdd","priority":5000}],[14,14,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[15,15,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[16,16,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","right_gravity":true}],[17,21,0,{"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:43:03)","OpencodeHint"],[" [msg_9d7288f2f001hW6NqqhtBc72UU]","OpencodeHint"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","right_gravity":true}]]}

0 commit comments

Comments
 (0)