Merge pull request #457 from vivien/text-variable
[tig.git] / tigrc
blob95d3f8a88aa27c34091bde5f4738994ffd94fad0
1 # Tig default configuration
3 # Please see 'man tigrc' for a complete reference.
5 # Settings
6 # --------
7 # Most of these settings can be toggleable, either via the toggle-*
8 # actions or via the option menu (bound to `o` by default).
10 # View settings
12 # Supported column types and their options:
14 #   author
15 #    - display (enum) [no|full|abbreviated|email|email-user]
16 #                                       : Show author information?
17 #   commit-title
18 #    - display (bool)                   : Show the commit title?
19 #    - graph (enum) [no|v2|v1]          : Show the commit graph? (main view only)
20 #    - refs (bool)                      : Show branches, tags and remotes? (main view only)
21 #    - overflow (boolint)               : Highlight overflows? Defaults to 50 when enabled.
23 #   date
24 #    - display (enum) [no|default|local|relative|short]
25 #                                       : Show dates?
26 #   file-name
27 #    - display (enum) [no|always|auto]  : Show file names?
29 #   file-size
30 #    - display (enum) [no|default|units]        : Show file sizes?
32 #   id
33 #    - display (bool)                   : Show commit/tree ID?
35 #   line-number
36 #    - display (bool)                   : Show line numbers?
37 #    - interval (int)                   : Interval between line numbers; defaults to 5
39 #   mode
40 #    - display (bool)                   : Show file modes?
42 #   status
43 #    - display (enum) [no|short|long]   : Show status label?
45 #   text
46 #    - display (bool)                   : Show text?
47 #    - commit-title-overflow (boolint)  : Highlight overflow in log and diff view?
49 # All columns also support a width option to configure the max width of
50 # the column. Use zero (the default value) to auto-size the column based
51 # on the content.
53 set blame-view  = date:default author:full file-name:auto id:yes,color line-number:no,interval=5 text
54 set grep-view   = file-name:no line-number:yes,interval=1 text
55 set main-view   = line-number:no,interval=5 id:no date:default author:full commit-title:yes,graph,refs,overflow=no
56 set refs-view   = line-number:no id:no date:default author:full ref commit-title
57 set stash-view  = line-number:no,interval=5 id:no date:default author:full commit-title
58 set status-view = line-number:no,interval=5 status:short file-name
59 set tree-view   = line-number:no,interval=5 mode author:full file-size date:default id:no file-name
61 # Pager based views
62 set pager-view  = line-number:no,interval=5 text
63 set stage-view  = line-number:no,interval=5 text
64 set log-view    = line-number:no,interval=5 text
65 set blob-view   = line-number:no,interval=5 text
66 set diff-view   = line-number:no,interval=5 text:yes,commit-title-overflow=no
68 # UI display settings
69 set show-changes                = yes           # Show changes commits in the main view?
70 set wrap-lines                  = no            # Wrap long lines in pager views?
71 set tab-size                    = 8             # Number of spaces to use when expanding tabs
72 set line-graphics               = default       # Enum: ascii, default, utf-8
74 # Format reference names based on type.
75 #  - head               : The current HEAD.
76 #  - tag                : A signed tag.
77 #  - local-tag          : An unsigned tag.
78 #  - remote             : A remote.
79 #  - tracked-remote     : The remote tracked by current HEAD.
80 #  - replace            : A replaced reference.
81 #  - branch             : Any other reference.
82 # If no format is defined for `local-tag` then the one for `tag` is used.
83 # Similarly, `remote` is used if no `tracked-remote` format exists.
84 # Prefix with `hide:` to not show that reference type, e.g. `hide:remote`.
85 # Expects a space separated list of format strings.
86 set reference-format            = [branch] <tag> {remote} ~replace~
88 # Settings controlling how content is read from Git
89 set commit-order                = auto          # Enum: auto, default, topo, date, reverse (main)
90 set status-untracked-dirs       = yes           # Show files in untracked directories? (status)
91 set ignore-space                = no            # Enum: no, all, some, at-eol (diff)
92 set show-notes                  = yes           # When non-bool passed as `--show-notes=...` (diff)
93 #set diff-context               = 3             # Number of lines to show around diff changes (diff)
94 #set diff-options               = -C            # User-defined options for `tig show` (git-diff)
95 #set blame-options              = -C -C -C      # User-defined options for `tig blame` (git-blame)
96 #set log-options                = --pretty=raw  # User-defined options for `tig log` (git-log)
97 #set main-options               = -n 1000       # User-defined options for `tig` (git-log)
98 #set mailmap                    = yes           # Use .mailmap to show canonical name and email address
100 # Misc
101 set refresh-mode                = auto          # Enum: manual, auto, after-command, periodic
102 set refresh-interval            = 10            # Interval in seconds between refreshes
103 set ignore-case                 = no            # Ignore case when searching?
104 set wrap-search                 = yes           # Wrap around to top/bottom of view when searching
105 set focus-child                 = yes           # Move focus to child view when opened?
106 set horizontal-scroll           = 50%           # Number of columns to scroll as % of width
107 set split-view-height           = 67%           # Height of the bottom view for horizontal splits
108 set vertical-split              = auto          # Enum: horizontal, vertical, auto; Use auto to
109                                                 # switch to horizontal split when width allows it
110 set split-view-width            = 50%           # Width of right-most view for vertical splits
111 set editor-line-number          = yes           # Automatically pass line number to editor? Used
112                                                 # for opening file at specific line e.g. from a diff
113 set mouse                       = no            # Enable mouse support?
114 set mouse-scroll                = 3             # Number of lines to scroll via the mouse
116 # User-defined commands
117 # ---------------------
118 # These commands allow to run shell commands directly from within Tig.
119 # Unless otherwise specified, commands are run in the foreground with
120 # their console output shown (as if '!' was specified). When multiple
121 # command options are specified their behavior are combined, e.g. "?<git
122 # commit" will prompt the user whether to execute the command and will
123 # exit Tig after completion.
125 #   !   Run the command in the foreground with output shown.
126 #   @   Run the command in the background with no output.
127 #   ?   Prompt the user before executing the command.
128 #   <   Exit Tig after executing the command.
130 # User-defined commands can optionally refer to Tig's internal state
131 # using the following variable names, which are substituted before
132 # commands are run:
134 #   %(head)             The current ref ID. Defaults to HEAD
135 #   %(commit)           The current commit ID.
136 #   %(blob)             The current blob ID.
137 #   %(branch)           The current branch name.
138 #   %(remote)           The current remote name.
139 #   %(tag)              The current tag name.
140 #   %(stash)            The current stash name.
141 #   %(directory)        The current directory path in the tree view; 
142 #                       empty for the root directory.
143 #   %(file)             The currently selected file.
144 #   %(ref)              The reference given to blame or HEAD if undefined.
145 #   %(revargs)          The revision arguments passed on the command line.
146 #   %(fileargs)         The file arguments passed on the command line.
147 #   %(cmdlineargs)      All other options passed on the command line.
148 #   %(diffargs)         The diff options from `diff-options` or `TIG_DIFF_OPTS`
149 #   %(prompt)           Prompt for the argument value.
151 bind main       C       ?git cherry-pick %(commit)
152 bind status     C       !git commit
153 bind stash      P       ?git stash pop %(stash)
154 bind stash      !       ?git stash drop %(stash)
155 bind refs       C       ?git checkout %(branch)
156 bind refs       !       ?git branch -D %(branch)
158 # Normal commands
159 # ---------------
161 # View switching
162 bind generic    m       view-main
163 bind generic    d       view-diff
164 bind generic    l       view-log
165 bind generic    t       view-tree
166 bind generic    f       view-blob
167 bind generic    b       view-blame
168 bind generic    r       view-refs
169 bind generic    p       view-pager
170 bind generic    h       view-help
171 bind generic    s       view-status
172 bind generic    S       view-status             # Compat binding to avoid going crazy!
173 bind generic    c       view-stage
174 bind generic    y       view-stash
175 bind generic    g       view-grep
177 # View manipulation
178 bind generic    <Enter> enter                   # Enter and open selected entry
179 bind generic    <Lt>    back                    # Go back to the previous view state
180 bind generic    <Down>  next                    # Move to next
181 bind generic    <C-N>   next
182 bind generic    J       next
183 bind generic    <Up>    previous                # Move to previous
184 bind generic    <C-P>   previous
185 bind generic    K       previous
186 bind generic    ,       parent                  # Move to parent
187 bind generic    <Tab>   view-next               # Move focus to the next view
188 bind generic    R       refresh                 # Reload and refresh view
189 bind generic    <F5>    refresh
190 bind generic    O       maximize                # Maximize the current view
191 bind generic    q       view-close              # Close the current view
192 bind generic    Q       quit                    # Close all views and quit
194 # View specific
195 bind status     u       status-update           # Stage/unstage changes in file
196 bind status     !       status-revert           # Revert changes in file
197 bind status     M       status-merge            # Open git-mergetool(1)
198 #bind status    ???     :toggle status          # Show short or long status labels
199 bind stage      u       status-update           # Stage/unstage current diff (c)hunk
200 bind stage      1       stage-update-line       # Stage/unstage current line
201 bind stage      !       status-revert           # Revert current diff (c)hunk
202 bind stage      \       stage-split-chunk       # Split current diff (c)hunk
203 bind stage      @       :/^@@                   # Jump to next (c)hunk
204 bind stage      [       :toggle diff-context -1 # Decrease the diff context
205 bind stage      ]       :toggle diff-context +1 # Increase the diff context
206 bind diff       @       :/^@@                   # Jump to next (c)hunk
207 bind diff       [       :toggle diff-context -1
208 bind diff       ]       :toggle diff-context +1
209 bind main       G       :toggle commit-title-graph # Toggle revision graph visualization
210 bind main       F       :toggle commit-title-refs  # Toggle reference display (tags/branches)
212 # Cursor navigation
213 bind generic    j       move-down
214 bind generic    k       move-up
215 #bind generic   ?       move-half-page-down
216 #bind generic   ?       move-half-page-up
217 bind generic    <PgDown> move-page-down
218 bind generic    <C-D>   move-page-down
219 bind generic    <Space> move-page-down
220 bind generic    <PgUp>  move-page-up
221 bind generic    <C-U>   move-page-up
222 bind generic    -       move-page-up
223 bind generic    <Home>  move-first-line
224 bind generic    <End>   move-last-line
226 # Scrolling
227 bind generic    |       scroll-first-col
228 bind generic    <Left>  scroll-left
229 bind generic    <Right> scroll-right
230 bind generic    <Ins>   scroll-line-up
231 bind generic    <C-Y>   scroll-line-up
232 bind generic    <Del>   scroll-line-down
233 bind generic    <C-E>   scroll-line-down
234 bind generic    <SBack> scroll-page-up
235 bind generic    <SFwd>  scroll-page-down
237 # Searching
238 bind generic    /       search
239 bind generic    ?       search-back
240 bind generic    n       find-next
241 bind generic    N       find-prev
242 # Navigation keys used while searching
243 bind search     <Down>  find-next
244 bind search     <C-N>   find-next
245 bind search     <C-J>   find-next
246 bind search     <Up>    find-prev
247 bind search     <C-P>   find-prev
248 bind search     <C-K>   find-prev
250 # Option manipulation
251 bind generic    o       options                 # Open the options menu
252 # Bindings for toggling settings
253 bind generic    I       :toggle sort-order      # Toggle ascending/descending sort order
254 bind generic    i       :toggle sort-field      # Toggle field to sort by
255 bind generic    <Hash>  :toggle line-number     # Toggle line numbers
256 bind generic    D       :toggle date            # Toggle date display
257 bind generic    A       :toggle author          # Toggle author display
258 bind generic    ~       :toggle line-graphics   # Toggle (line) graphics mode
259 bind generic    F       :toggle file-name       # Toggle file name display
260 # bind generic  ???     :toogle show-changes    # Toggle local changes display in the main view
261 bind generic    W       :toggle ignore-space    # Toggle ignoring whitespace in diffs
262 # bind generic  ?       :toggle commit-order    # Toggle commit ordering
263 bind generic    X       :toggle id              # Toggle commit ID display
264 bind generic    $       :toggle commit-title-overflow
265                                                 # Toggle highlighting of commit title overflow
266 # bind generic  ???     :toggle file-size       # Toggle file size format
267 # bind generic  ???     :toggle status          # Toggle status display
268 # bind generic  ???     :toggle status-untracked-dirs
269                                                 # Toggle display of file in untracked directories
270 # bind generic  ???     :toggle vertical-split  # Toggle vertical split
271 bind generic    %       :toggle file-filter
273 # Misc
274 bind generic    e       edit                    # Open in editor
275 bind generic    :       prompt                  # Open the prompt
276 bind generic    <C-L>   screen-redraw           # Redraw the screen
277 bind generic    z       stop-loading            # Stop all loading views
278 bind generic    v       show-version            # Show Tig version
280 # Colors
281 # ------
283 # The colors in the UI can be customized. In addition to the colors used
284 # for the UI you can also define new colors to use in the pager, blob,
285 # diff, and stage views by placing the text to match for in quotes.
287 # Prefix the name of a view to set a color only for that view, e.g.
289 #       color grep.file blue default
291 # As an example, this setting will to color Signed-off-by lines with a
292 # yellow foreground color and use the default background color.
294 #       color "    Signed-off-by"       yellow  default
296 # Note the four leading spaces in the string to match. This is because
297 # Git automatically indents commit messages by four spaces.
299 color "diff --"                 yellow  default
300 color "--- "                    yellow  default
301 color "+++ "                    yellow  default
302 color "@@"                      magenta default
303 color "+"                       green   default
304 color " +"                      green   default
305 color "-"                       red     default
306 color " -"                      red     default
307 color "index "                  blue    default
308 color "old file mode "          yellow  default
309 color "new file mode "          yellow  default
310 color "deleted file mode "      yellow  default
311 color "copy from "              yellow  default
312 color "copy to "                yellow  default
313 color "rename from "            yellow  default
314 color "rename to "              yellow  default
315 color "similarity "             yellow  default
316 color "dissimilarity "          yellow  default
317 color "diff-tree "              blue    default
318 color "Author: "                cyan    default
319 color "Commit: "                magenta default
320 color "Tagger: "                magenta default
321 color "Merge: "                 blue    default
322 color "Date: "                  yellow  default
323 color "AuthorDate: "            yellow  default
324 color "CommitDate: "            yellow  default
325 color "TaggerDate: "            yellow  default
326 color "Refs: "                  red     default
327 color "Reflog: "                red     default
328 color "Reflog message: "        yellow  default
329 color "stash@{"                 magenta default
330 color "commit "                 green   default
331 color "parent "                 blue    default
332 color "tree "                   blue    default
333 color "author "                 green   default
334 color "committer "              magenta default
335 color "    Signed-off-by"       yellow  default
336 color "    Acked-by"            yellow  default
337 color "    Tested-by"           yellow  default
338 color "    Reviewed-by"         yellow  default
339 color default                   default default normal
340 color cursor                    white   green   bold
341 color status                    green   default
342 color delimiter                 magenta default
343 color date                      blue    default
344 color mode                      cyan    default
345 color id                        magenta default
346 color overflow                  red     default
347 color header                    yellow  default
348 color section                   cyan    default
349 color directory                 yellow  default
350 color file                      default default
351 color grep.file                 blue    default
352 color file-size                 default default
353 color line-number               cyan    default
354 color title-blur                white   blue
355 color title-focus               white   blue    bold
356 color main-commit               default default
357 color main-tag                  magenta default bold
358 color main-local-tag            magenta default
359 color main-remote               yellow  default
360 color main-replace              cyan    default
361 color main-tracked              yellow  default bold
362 color main-ref                  cyan    default
363 color main-head                 cyan    default bold
364 color stat-none                 default default
365 color stat-staged               magenta default
366 color stat-unstaged             magenta default
367 color stat-untracked            magenta default
368 color help-group                blue    default
369 color help-action               yellow  default
370 color diff-stat                 blue    default
371 color palette-0                 magenta default
372 color palette-1                 yellow  default
373 color palette-2                 cyan    default
374 color palette-3                 green   default
375 color palette-4                 default default
376 color palette-5                 white   default
377 color palette-6                 red     default
378 color palette-7                 magenta default bold
379 color palette-8                 yellow  default bold
380 color palette-9                 cyan    default bold
381 color palette-10                green   default bold
382 color palette-11                default default bold
383 color palette-12                white   default bold
384 color palette-13                red     default bold
385 color graph-commit              blue    default
386 color search-result             black   yellow
388 # Mappings for colors read from git configuration.
389 # Set to "no" to disable.
390 set git-colors = \
391         branch.current=main-head \
392         branch.local=main-ref \
393         branch.plain=main-ref \
394         branch.remote=main-remote \
395         \
396         diff.meta=diff-header \
397         diff.meta=diff-index \
398         diff.meta=diff-oldmode \
399         diff.meta=diff-newmode \
400         diff.frag=diff-chunk \
401         diff.old=diff-del \
402         diff.new=diff-add \
403         \
404         grep.filename=grep.file \
405         grep.linenumber=grep.line-number \
406         grep.separator=grep.delimiter \
407         \
408         status.branch=status.header \
409         status.added=stat-staged \
410         status.updated=stat-staged \
411         status.changed=stat-unstaged \
412         status.untracked=stat-untracked