doomemacs/modules/ui/vc-gutter/README.org
Henrik Lissner b405225b90
refactor!(vc-gutter): drop git-gutter for diff-hl
BREAKING CHANGE: This removes git-gutter as an implementation for the
`:ui vc-gutter` module, leaving only the diff-hl implementation. There
are no longer any +git-gutter or +diff-hl flags for this module. Users
don't have to do anything to keep the vc gutter, unless they prefer
git-gutter for any reason (in which case they'll need to install and set
it up themselves).

This has been planned for some time, because of a roadmap goal for Doom
to lean into native/built-in functionality where it's equal or better
than the third party alternatives. diff-hl relies on the built-in vc.el
library instead of talking to git directly (thus expanding support to
whatever VCS's vc.el supports, and not git alone), which also means it
can take advantage of its caching and other user configuration for
vc.el. Overall, it is faster and lighter.

What I've also been waiting for was a stage-hunk command, similar to
git-gutter:stage-hunk, which arrived in dgutov/diff-hl@a0560551cd and
dgutov/diff-hl@133538973b, and have evolved since.

Ref: dgutov/diff-hl@a0560551cd
Ref: dgutov/diff-hl@133538973b
Ref: https://github.com/orgs/doomemacs/projects/5/views/1?pane=issue&itemId=58747789
2024-06-22 18:14:04 -04:00

72 lines
2.7 KiB
Org Mode

#+title: :ui vc-gutter
#+subtitle: Get your diff out of the gutter
#+created: June 26, 2018
#+since: 21.12.0
* Description :unfold:
This module displays a diff of the current file (against HEAD) in the fringe.
Supports Git, Svn, Hg, and Bzr.
** Maintainers
- [[doom-user:][@hlissner]]
[[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
- +pretty ::
Apply some stylistic defaults to the fringe that present the diff in the
fringe as thin bars, taking after the modern look of the git-gutter plugin in
VSCode and Sublime Text. However, this will look bad with themes that invert
the foreground/background of diff-hl's faces (like modus-themes does).
** Packages
- [[doom-package:diff-hl]]
** Hacks
- The VC gutter will be updated when pressing ESC, leaving insert mode (evil
users), or refocusing the frame or window where it is active.
- If [[doom-module:+pretty]] is enabled
- The fringes that diff-hl define will be replaced with a set of thin bars.
This achieves a slicker look closer to git-gutter's appearance in VSCode or
Sublime Text, but may look weird for themes that swap their faces'
:foreground and :background (like modus-themes).
- The fringes are moved to the outside of the margins (closest to the frame
edge), so they have some breathing space away from the buffer's contents.
- ~diff-hl-revert-hunk~ displays a preview popup of the hunk being reverted.
It takes up ~50% of the frame, by default, whether you're reverting 2 lines
or 20. Since this isn't easily customized, it has been advised to shrink
this popup to the side of its contents.
- ~diff-hl-revert-hunk~ will sometimes move the cursor to an unexpected
location (the bounds of hunks, is my guess), but this is not intuitive and
often unexpected. Cursor movements have been suppressed for it.
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires any of Git, Svn, Hg, and/or Bazaar to get gutter diffs in
projects version controlled by them.
* TODO Usage
#+begin_quote
󱌣 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
󱌣 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
󱌣 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote