sindrets / diffview.nvim

Single tabpage interface for easily cycling through diffs for all modified files for any git rev.
Other
3.92k stars 107 forks source link

feat: add formatting options for file_history_panel #441

Open protiumx opened 10 months ago

protiumx commented 10 months ago

Description

Adding formatting option as a list of parts for the file_history_panel commit list

'status',
'stats',
'hash',
'reflog',
'ref',
'subject',
'author',
 'date'

The default configuration includes all the parts that matches the commit format before this PR. E.g.

M | 52   64 | ba89b731 (HEAD -> feat/file-history-panel-commit-format, origin/feat/file-history-panel-commit-format) feat: add formatting options as a list Brian Mayo, 7 minutes ago

Implementation

I defined a map of formatters, one per each part which allows the user to use a list as config. This looks up in the map and runs the formatter on the RenderComponent table. The only significant change in the format is the part for author, date which now will show as author date. Should we add a different HL to make a distinction?

Stylua prolems

I have ran the following command and it has reformatted a lot of files, I'm not sure why

stylua --glob "*.lua" -a -f stylua.toml .

stylua 0.19.1

Docs

I updated the only the default config docs. I'll need assistance to add an entry in the main docs since I don't have experience writing vim docs

Testing

I covered almost all cases except for date, in the branch that compares against the current time. This test would require to monkey patch os.time which I don't think would be a good practice.

Closes #438

sindrets commented 10 months ago

Thanks for the PR! Really nicely done with the tests :)

I'll try to find time to review this properly sometime over this weekend. Something I can comment on immediately: please remove all unrelated code formatting changes from your PR. It only makes it harder to review the actual changes.

Regarding your question about stylua: we don't use it. I should remove the config in the repo. I don't like how it formats code, and it's my opinion that it often hurts code readability. However, feel free to use it on the code that you write yourself.

Regarding your remarks about monkey patching os.time for tests: mocking timers even by the means of monkey patching is very common in test environments. You can use plenary.busted's before_each(), after_each() hooks to ensure that the patched functions only apply for the duration of the test suite.

protiumx commented 10 months ago

Hey @sindrets I removed the format changes. How do you format the lua files? I found the default lua lsp formatter to also produce different results. Regarding the tests, I have added a case for the date formatter to monkey patch os.diffdate. All cases should be covered

protiumx commented 4 months ago

Hi @sindrets, any news for this PR?