Code

Add an option to ignore unknown directories contents in the status view
authorPierre Habouzit <madcoder@debian.org>
Mon, 28 Jun 2010 08:26:17 +0000 (10:26 +0200)
committerJonas Fonseca <fonseca@diku.dk>
Tue, 29 Jun 2010 02:17:06 +0000 (22:17 -0400)
Similar to git ls-files --directory

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
NEWS
tig.c
tigrc.5.txt

diff --git a/NEWS b/NEWS
index 61d6c884d2dcdc50c56e0be1e245d1d36345b2ad..e06467576bf23cc0e6b67614a000eaac9d4b0700 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,8 @@ Improvements:
 
  - Add scroll-first-col action to jump to the first column. Bound to '|'
    by default.
+ - Add 'status-untracked-dirs' option to ignore unknown directories
+   contents in the status view. On by default.
 
 Bug fixes:
 
diff --git a/tig.c b/tig.c
index 1d6312c45f9bbd2868295f5a8f92d3455d3ec5b4..b6df54c82060163ce895102c69180a1294b48e78 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -1223,6 +1223,7 @@ static bool opt_line_number               = FALSE;
 static bool opt_line_graphics          = TRUE;
 static bool opt_rev_graph              = FALSE;
 static bool opt_show_refs              = TRUE;
+static bool opt_untracked_dirs_content = TRUE;
 static int opt_num_interval            = 5;
 static double opt_hscroll              = 0.50;
 static double opt_scale_split_view     = 2.0 / 3.0;
@@ -2017,6 +2018,9 @@ option_set_command(int argc, const char *argv[])
        if (!strcmp(argv[0], "commit-encoding"))
                return parse_string(opt_encoding, argv[2], sizeof(opt_encoding));
 
+       if (!strcmp(argv[0], "status-untracked-dirs"))
+               return parse_bool(&opt_untracked_dirs_content, argv[2]);
+
        config_msg = "Unknown variable name";
        return ERR;
 }
@@ -5699,7 +5703,7 @@ static const char *status_diff_files_argv[] = {
 };
 
 static const char *status_list_other_argv[] = {
-       "git", "ls-files", "-z", "--others", "--exclude-standard", opt_prefix, NULL
+       "git", "ls-files", "-z", "--others", "--exclude-standard", opt_prefix, NULL, NULL,
 };
 
 static const char *status_list_no_head_argv[] = {
@@ -5804,6 +5808,9 @@ status_open(struct view *view)
                return FALSE;
        }
 
+       if (!opt_untracked_dirs_content)
+               status_list_other_argv[ARRAY_SIZE(status_list_other_argv) - 2] = "--directory";
+
        if (!status_run(view, status_diff_files_argv, 0, LINE_STAT_UNSTAGED) ||
            !status_run(view, status_list_other_argv, '?', LINE_STAT_UNTRACKED))
                return FALSE;
index df487497c79048131bae5fb28da3bc7abfb96d25..2d9afddd2dff47198d85112cfede22d164c78a46 100644 (file)
@@ -143,6 +143,12 @@ The following variables can be set:
        The encoding used for commits. The default is UTF-8. Note this option
        is shadowed by the "i18n.commitencoding" option in `.git/config`.
 
+'status-untracked-dirs' (bool)::
+
+       Show untracked directories contents in the status view (analog to
+       `git ls-files --directory` option. On by default.
+
+
 Bind command
 ------------