Flog is a Git branch viewer that integrates with Fugitive.
This release focuses on making Flog even better looking, even faster, and adding auto-updates.
See the v3 help thread for migration instructions and configuration tips if you are coming from v2.
If you have any questions, don't hesitate to ask.
After installing Flog, you can also run :help flog
to see the full help documentation.
If you encounter any bugs or other problems, please post a new issue.
Major improvements:
- Add support for new branch drawing unicode characters.
This currently requires the Kitty terminal or flog-symbols.
These symbols make merges and forks clearer and make the graph prettier. - Use a streamlined branch drawing structure to make branches clearer even if new symbols aren't used.
- Improve performance even more.
The Rust repo now loads with 20,000 commits in0.38
seconds
Previously, it loaded in0.58
seconds, making this case a more than 1.5x improvement.
Performance improvements are non-linear and are better the more commits are included in the output. - Dynamically color commits instead of relying on syntax highlighting.
This relies on concealed characters in the output. - Dynamically color branches instead of relying on inaccurate syntax highlighting (Neovim only).
Branch color shifts with moving branches, and merges are colored according to relevant branches.
This is more performant than syntax-based highlighting while scrolling. - Add the
-auto-update
option to automatically update Flog when there are any changes to the repository (Neovim only). - Tweak default branch colors to avoid so many similar colors.
Other enhancements:
- Add mappings to yank commit graph window text with or without the graph:
y<C-X>
,y<C-T>
.
These removes any of the new concealed characters from the yanked text. - Add
-default-expanded
and-default-collapsed
options. - Add mappings to expand/collapse all commits:
g>
,g<
. - Toggle
-patch
based on implied value if it was not previously set. - Jump to top/bottom of commits when changing
-skip
using]]
/[[
. - Change the default number of branch highlight groups to 8 instead of 9.
- Add a setting to tweak the number of branch highlight groups for customization:
g:flog_num_branch_colors
- Add a setting to add an extra blank line after commits:
g:flog_enable_extra_padding
- Improve dynamic update detection even when not using auto-updates.
- Document available highlight groups.
- Add
flog#Version()
to make it easier for plugin authors to detect the version. - Add
:Flogsp
as an abbreviation for:Flogsplit
. - Add
:Flogspc
as an abbreviation for:Flogsplitcommit
. - Open
:Flog
in the current tab if it is empty by default. - Tweak the
flog#Exec()
API to be clearer and have better defaults. - Keep focus in the final window by default when using
:Floggit
.
Previously, focus returned to the commit graph window by default.
This makes the command work similarly to:Git
. - Close temporary side windows before opening new ones instead of after.
This fixes many cases where window layout could be butchered, but may make integration/custom commands harder to write. - Add Lua wrappers for public API functions for Neovim users.
- Disable mini.trailspace in the Flog buffer.
- Add the
%(h'x,'y)
format item for getting a range of hashes, such as the visual range. - Add the
%P
format item for getting the current path(s) prefixed with "--".
This can be used for constructing commands that always use the current path.
Other fixes:
- Fix Neovim-specific memory and performance issues, particularly with multiline commits and inline patches.
- Fix various user options being overridden with defaults.
- Make default jumplist mappings (
g:flog_jumplist_default_mappings
) silent. - Fix count on default jumplist mappings.
- Fix malformed jumplist when using default jumplist mappings.
- Improve handling of alternate filename and jumplist on update.