Skip to content

v3.0.0

Latest
Compare
Choose a tag to compare
@rbong rbong released this 06 Sep 18:37
· 45 commits to master since this release

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.

screen-graph

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 in 0.38 seconds
    Previously, it loaded in 0.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.