Re: [PATCH v2 07/17] ls-files: add --column

2014-03-26 Thread Eric Sunshine
On Wed, Mar 26, 2014 at 9:48 AM, Nguyễn Thái Ngọc Duy  wrote:
> Signed-off-by: Nguyễn Thái Ngọc Duy 
> ---
>  Documentation/git-ls-files.txt |  6 ++
>  builtin/ls-files.c | 25 +
>  2 files changed, 31 insertions(+)
>
> diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt
> index 5c1b7f3..cd52461 100644
> --- a/Documentation/git-ls-files.txt
> +++ b/Documentation/git-ls-files.txt
> @@ -156,6 +156,12 @@ a space) at the start of each line:
> default to color output, same as `--color=never`. This is the
> default.
>
> +--column[=]::
> +--no-column::
> +   Display files in columns. See configuration variable column.ui
> +   for option syntax.`--column` and `--no-column` without options

Missing space after period.

> +   are equivalent to 'always' and 'never' respectively.
> +
>  \--::
> Do not interpret any more arguments as options.
>
> diff --git a/builtin/ls-files.c b/builtin/ls-files.c
> index 2857b38..335d3b0 100644
> --- a/builtin/ls-files.c
> +++ b/builtin/ls-files.c
> @@ -15,6 +15,7 @@
>  #include "string-list.h"
>  #include "pathspec.h"
>  #include "color.h"
> +#include "column.h"
>
>  static int abbrev;
>  static int show_deleted;
> @@ -29,6 +30,7 @@ static int show_valid_bit;
>  static int line_terminator = '\n';
>  static int debug_mode;
>  static int use_color;
> +static unsigned int colopts;
>
>  static const char *prefix;
>  static int max_prefix_len;
> @@ -39,6 +41,7 @@ static char *ps_matched;
>  static const char *with_tree;
>  static int exc_given;
>  static int exclude_args;
> +static struct string_list output = STRING_LIST_INIT_NODUP;
>
>  static const char *tag_cached = "";
>  static const char *tag_unmerged = "";
> @@ -66,6 +69,10 @@ static void write_name(struct strbuf *sb, const char *name)
>
>  static void strbuf_fputs(struct strbuf *sb, FILE *fp)
>  {
> +   if (column_active(colopts)) {
> +   string_list_append(&output, strbuf_detach(sb, NULL));
> +   return;
> +   }
> fwrite(sb->buf, sb->len, 1, fp);
>  }
>
> @@ -552,6 +559,7 @@ int cmd_ls_files(int argc, const char **argv, const char 
> *cmd_prefix)
> OPT_STRING(0, "with-tree", &with_tree, N_("tree-ish"),
> N_("pretend that paths removed since  are 
> still present")),
> OPT__COLOR(&use_color, N_("show color")),
> +   OPT_COLUMN(0, "column", &colopts, N_("show files in 
> columns")),
> OPT__ABBREV(&abbrev),
> OPT_BOOL(0, "debug", &debug_mode, N_("show debugging data")),
> OPT_END()
> @@ -596,6 +604,18 @@ int cmd_ls_files(int argc, const char **argv, const char 
> *cmd_prefix)
> if (dir.exclude_per_dir)
> exc_given = 1;
>
> +   finalize_colopts(&colopts, -1);
> +   if (explicitly_enable_column(colopts)) {
> +   if (!line_terminator)
> +   die(_("--column and -z are incompatible"));
> +   if (show_resolve_undo)
> +   die(_("--column and --resolve-undo are 
> incompatible"));
> +   if (debug_mode)
> +   die(_("--column and --debug are incompatible"));
> +   }
> +   if (column_active(colopts))
> +   line_terminator = 0;
> +
> if (require_work_tree && !is_inside_work_tree())
> setup_work_tree();
>
> @@ -638,6 +658,11 @@ int cmd_ls_files(int argc, const char **argv, const char 
> *cmd_prefix)
> if (show_resolve_undo)
> show_ru_info();
>
> +   if (column_active(colopts)) {
> +   print_columns(&output, colopts, NULL);
> +   string_list_clear(&output, 0);
> +   }
> +
> if (ps_matched) {
> int bad;
> bad = report_path_error(ps_matched, &pathspec, prefix);
> --
> 1.9.1.345.ga1a145c
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 07/17] ls-files: add --column

2014-03-26 Thread Nguyễn Thái Ngọc Duy
Signed-off-by: Nguyễn Thái Ngọc Duy 
---
 Documentation/git-ls-files.txt |  6 ++
 builtin/ls-files.c | 25 +
 2 files changed, 31 insertions(+)

diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt
index 5c1b7f3..cd52461 100644
--- a/Documentation/git-ls-files.txt
+++ b/Documentation/git-ls-files.txt
@@ -156,6 +156,12 @@ a space) at the start of each line:
default to color output, same as `--color=never`. This is the
default.
 
+--column[=]::
+--no-column::
+   Display files in columns. See configuration variable column.ui
+   for option syntax.`--column` and `--no-column` without options
+   are equivalent to 'always' and 'never' respectively.
+
 \--::
Do not interpret any more arguments as options.
 
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index 2857b38..335d3b0 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -15,6 +15,7 @@
 #include "string-list.h"
 #include "pathspec.h"
 #include "color.h"
+#include "column.h"
 
 static int abbrev;
 static int show_deleted;
@@ -29,6 +30,7 @@ static int show_valid_bit;
 static int line_terminator = '\n';
 static int debug_mode;
 static int use_color;
+static unsigned int colopts;
 
 static const char *prefix;
 static int max_prefix_len;
@@ -39,6 +41,7 @@ static char *ps_matched;
 static const char *with_tree;
 static int exc_given;
 static int exclude_args;
+static struct string_list output = STRING_LIST_INIT_NODUP;
 
 static const char *tag_cached = "";
 static const char *tag_unmerged = "";
@@ -66,6 +69,10 @@ static void write_name(struct strbuf *sb, const char *name)
 
 static void strbuf_fputs(struct strbuf *sb, FILE *fp)
 {
+   if (column_active(colopts)) {
+   string_list_append(&output, strbuf_detach(sb, NULL));
+   return;
+   }
fwrite(sb->buf, sb->len, 1, fp);
 }
 
@@ -552,6 +559,7 @@ int cmd_ls_files(int argc, const char **argv, const char 
*cmd_prefix)
OPT_STRING(0, "with-tree", &with_tree, N_("tree-ish"),
N_("pretend that paths removed since  are 
still present")),
OPT__COLOR(&use_color, N_("show color")),
+   OPT_COLUMN(0, "column", &colopts, N_("show files in columns")),
OPT__ABBREV(&abbrev),
OPT_BOOL(0, "debug", &debug_mode, N_("show debugging data")),
OPT_END()
@@ -596,6 +604,18 @@ int cmd_ls_files(int argc, const char **argv, const char 
*cmd_prefix)
if (dir.exclude_per_dir)
exc_given = 1;
 
+   finalize_colopts(&colopts, -1);
+   if (explicitly_enable_column(colopts)) {
+   if (!line_terminator)
+   die(_("--column and -z are incompatible"));
+   if (show_resolve_undo)
+   die(_("--column and --resolve-undo are incompatible"));
+   if (debug_mode)
+   die(_("--column and --debug are incompatible"));
+   }
+   if (column_active(colopts))
+   line_terminator = 0;
+
if (require_work_tree && !is_inside_work_tree())
setup_work_tree();
 
@@ -638,6 +658,11 @@ int cmd_ls_files(int argc, const char **argv, const char 
*cmd_prefix)
if (show_resolve_undo)
show_ru_info();
 
+   if (column_active(colopts)) {
+   print_columns(&output, colopts, NULL);
+   string_list_clear(&output, 0);
+   }
+
if (ps_matched) {
int bad;
bad = report_path_error(ps_matched, &pathspec, prefix);
-- 
1.9.1.345.ga1a145c

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html