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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 26, 2014 at 9:48 AM, Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> wrote:
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx>
> ---
>  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[=<options>]::
> +--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 <tree-ish> 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 majordomo@xxxxxxxxxxxxxxx
> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]