Fringe version of git-gutter.el
Emacs Lisp
Latest commit 16226ca Jan 13, 2017 @syohex committed on GitHub Merge pull request #31 from alvinfrancis/face-inheritance-order
Prioritize git-gutter faces over fringe face in inheritance

README.md

git-gutter-fringe.el melpa badge melpa stable badge

Introduction

git-gutter-fringe.el is fringe version of of git-gutter.el.

git-gutter.el does not work with linum-mode but git-gutter-fringe.el can work with linum-mode. In contrast, git-gutter-fringe.el does not work in tty frame(emacs -nw), but git-gutter.el can work in tty frame.

NOTE: You can not use both git-gutter.el and git-gutter-fringe.el

Screenshot

Screenshot of git-gutter-fringe.el

Requirements

Installation

You can install git-gutter.el from MELPA with package.el (M-x package-install git-gutter-fringe).

And you can also install it with el-get.

Basic Usage

Interfaces are same as git-gutter.el.

  • git-gutter
  • git-gutter:clear
  • git-gutter:toggle

Sample Configuration

;; You need to install fringe-helper.el
(require 'git-gutter-fringe)

Customize

Look and feel

git-gutter-fringe-customize

You can change faces like following.

(set-face-foreground 'git-gutter-fr:modified "yellow")
(set-face-foreground 'git-gutter-fr:added    "blue")
(set-face-foreground 'git-gutter-fr:deleted  "white")

Change signs in fringe

git-gutter-fringe-change-signs

;; Please adjust fringe width if your own sign is too big.
(setq-default left-fringe-width  20)
(setq-default right-fringe-width 20)

(fringe-helper-define 'git-gutter-fr:added nil
  ".XXXXXX."
  "XX....XX"
  "X......X"
  "X......X"
  "XXXXXXXX"
  "XXXXXXXX"
  "X......X"
  "X......X")

(fringe-helper-define 'git-gutter-fr:deleted nil
  "XXXXXX.."
  "XX....X."
  "XX.....X"
  "XX.....X"
  "XX.....X"
  "XX.....X"
  "XX....X."
  "XXXXXX..")

(fringe-helper-define 'git-gutter-fr:modified nil
  "XXXXXXXX"
  "X..XX..X"
  "X..XX..X"
  "X..XX..X"
  "X..XX..X"
  "X..XX..X"
  "X..XX..X"
  "X..XX..X")

Position of fringe

git-gutter-fringe-right

You can change position of fringe, left or right. Default is left.

(setq git-gutter-fr:side 'right-fringe)

Comparison with diff-hl

I suppose if you enable vc-mode, you should use diff-hl rather than git-gutter-fringe. I always use git-gutter.el(and I love git-gutter.el), however I don't use git-gutter-fringe and don't do dog-fooding myself.

diff-hl is based on Emacs VC. git-gutter-fringe does not use vc.

You can use git-gutter-fringe even if you disable vc-mode. While diff-hl benefits from VC. For example, if vc supports new VCS which is greater than git, diff-hl works with such VCS with no code modification. However git-gutter.el does not benefit from vc-mode, I need to add code for supporting such new great VCS.

See also