git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v7 01/10] Add git-column for columnar display

From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Date
Mar 2, 2012, 12:36 UTC
Message-ID
<CACsJy8BQy_j08x5k_bzcngTy4qKi9DPkKCDA1hEUR6-osRTf2g@mail.gmail.com>
In-Reply-To
<7v8vjm25iy.fsf@alter.siamese.dyndns.org>
2012/2/29 Junio C Hamano <gitster@pobox.com>:
Show 9 quoted lines
>> +     memset(&copts, 0, sizeof(copts));
>> +     copts.width = term_columns();
>> +     copts.padding = 1;
>> +     argc = parse_options(argc, argv, "", options, builtin_column_usage, 0);
>
> Curious. The usual pattern is to set up the built-in default, call
> git_config() to override it with the configured values, and then call
> parse_options() to override at the runtime.  I see configuration callback
> defined in column.c but no call to git_config() here?

History reason. It was test-column and I did not care much whether it respected config. Will fix.

Show 22 quoted lines
>> +void print_columns(const struct string_list *list, unsigned int mode,
>> +                struct column_options *opts)
>> +{
>> +     const char *indent = "", *nl = "\n";
>> +     int padding = 1, width = term_columns();
>> +
>> +     if (!list->nr)
>> +             return;
>> +     if (opts) {
>> +             if (opts->indent)
>> +                     indent = opts->indent;
>> +             if (opts->nl)
>> +                     nl = opts->nl;
>> +             if (opts->width)
>> +                     width = opts->width;
>> +             padding = opts->padding;
>> +     }
>> +     if (width <= 1 || !(mode & COL_ENABLED)) {
>
> Curious why this is "1".  If your terminal is only 2 columns wide, you
> wouldn't be able to show your list items in two columns as you would want
> to have an inter-column gap, no?

Yeah, should drop that "width <= 1". Other layout functions should be able to deal with too narrow width anyway.

Show 6 quoted lines
>> +     if (set < 0) {  /* auto */
>> +             if (stdout_is_tty < 0)
>> +                     stdout_is_tty = isatty(1);
>> +             set = stdout_is_tty || (pager_in_use() && pager_use_color);
>
> Why does this have anything to do with the use of color?
Hm.. no it does not have to.
Show 13 quoted lines
>> +     }
>> +     if (set)
>> +             *mode = *mode | COL_ENABLED | COL_ENABLED_SET;
>> +     else
>> +             *mode = (*mode & ~COL_ENABLED) | COL_ENABLED_SET;
>> +     return 0;
>> +}
>
> OK, so we record the desired value (either COL_ENABLED or not) and the
> fact that a call to set_enable_bit() function set it.  Which implies that
> this function must be called from only one codepath (either setting from
> the configuration mechanism, or by parsing the command line option) but
> not both.  I guess this is only called from configuration codepath?

Both share the same code path. COL_ENABLED_SET is probably badly named, perhaps COL_ENABLED_VALID is better. It's there to deal distinguish "never" and not explicitly stating any of never/auto/always. In both cases, COL_ENABLED is 0. COL_ENABLED_SET is set in the former, but not in the latter. I depend on that to make default behavior "always". Now thinking again, it would make more sense to set default "never", and drop COL_ENABLED_SET.

> I am afraid that we do not have enough to judge if this is sane in this
> patch, as there is no support for column.ui at this stage.  Perhaps the
> series is not structured well and has things that are not yet relevant in
> early part of it.  Sigh.

If it's not clear whether it's sane, it's more likely not. I'll re-read the series again and redo. One good thing about git development is only tidy things can become part of upstream, which makes archaelogy a pleasant experience.

-- 
Duy
Previous: Junio C HamanoNext: Nguyễn Thái Ngọc Duy
Message 26 of 66 in “Column display”
  1. 00/11 Column displayNguyễn Thái Ngọc Duy, Feb 25, 2012
  2. 01/11 column: add API to print items in columnsNguyễn Thái Ngọc Duy, Feb 25, 2012
  3. 02/11 Add git-column and column mode parsingNguyễn Thái Ngọc Duy, Feb 25, 2012
  4. Ramsay JonesFeb 27, 2012
  5. Nguyen Thai Ngoc DuyFeb 28, 2012
  6. 03/11 Stop starting pager recursivelyNguyễn Thái Ngọc Duy, Feb 25, 2012
  7. 04/11 column: add columnar layoutNguyễn Thái Ngọc Duy, Feb 25, 2012
  8. 05/11 column: support columns with different widthsNguyễn Thái Ngọc Duy, Feb 25, 2012
  9. Junio C HamanoFeb 26, 2012
  10. 06/11 column: add column.ui for default column output settingsNguyễn Thái Ngọc Duy, Feb 25, 2012
  11. Junio C HamanoFeb 27, 2012
  12. Nguyen Thai Ngoc DuyFeb 27, 2012
  13. 07/11 help: reuse print_columns() for help -aNguyễn Thái Ngọc Duy, Feb 25, 2012
  14. 08/11 branch: add --columnNguyễn Thái Ngọc Duy, Feb 25, 2012
  15. 09/11 status: add --columnNguyễn Thái Ngọc Duy, Feb 25, 2012
  16. 10/11 column: support piping stdout to external git-column processNguyễn Thái Ngọc Duy, Feb 25, 2012
  17. 11/11 tag: add --columnNguyễn Thái Ngọc Duy, Feb 25, 2012
  18. Junio C HamanoFeb 26, 2012
  19. Nguyen Thai Ngoc DuyFeb 27, 2012
  20. Junio C HamanoFeb 27, 2012
  21. Junio C HamanoFeb 27, 2012
  22. Nguyen Thai Ngoc DuyFeb 27, 2012
  23. 00/10 Column displayNguyễn Thái Ngọc Duy, Feb 28, 2012
  24. 01/10 Add git-column for columnar displayNguyễn Thái Ngọc Duy, Feb 28, 2012
  25. Junio C HamanoFeb 28, 2012
  26. Nguyen Thai Ngoc DuyMar 2, 2012
  27. 02/10 Stop starting pager recursivelyNguyễn Thái Ngọc Duy, Feb 28, 2012
  28. Junio C HamanoFeb 28, 2012
  29. Junio C HamanoFeb 28, 2012
  30. Nguyen Thai Ngoc DuyFeb 29, 2012
  31. Junio C HamanoFeb 29, 2012
  32. Nguyen Thai Ngoc DuyFeb 29, 2012
  33. Junio C HamanoFeb 29, 2012
  34. 03/10 column: add columnar layoutNguyễn Thái Ngọc Duy, Feb 28, 2012
  35. Junio C HamanoFeb 28, 2012
  36. 04/10 column: add dense layout supportNguyễn Thái Ngọc Duy, Feb 28, 2012
  37. Junio C HamanoFeb 28, 2012
  38. Nguyen Thai Ngoc DuyMar 2, 2012
  39. Junio C HamanoMar 2, 2012
  40. 05/10 column: add column.ui for default column output settingsNguyễn Thái Ngọc Duy, Feb 28, 2012
  41. Junio C HamanoFeb 28, 2012
  42. 06/10 help: reuse print_columns() for help -aNguyễn Thái Ngọc Duy, Feb 28, 2012
  43. 07/10 branch: add --columnNguyễn Thái Ngọc Duy, Feb 28, 2012
  44. 08/10 status: add --columnNguyễn Thái Ngọc Duy, Feb 28, 2012
  45. 09/10 column: support piping stdout to external git-column processNguyễn Thái Ngọc Duy, Feb 28, 2012
  46. 10/10 tag: add --columnNguyễn Thái Ngọc Duy, Feb 28, 2012
  47. Thomas RastMar 2, 2012
  48. Nguyen Thai Ngoc DuyMar 11, 2012
  49. Junio C HamanoMar 12, 2012
  50. 00/9 Column displayNguyễn Thái Ngọc Duy, Mar 13, 2012
  51. Nguyen Thai Ngoc DuyMar 13, 2012
  52. 01/9 Add column layout skeleton and git-columnNguyễn Thái Ngọc Duy, Mar 13, 2012
  53. 02/9 Stop starting pager recursivelyNguyễn Thái Ngọc Duy, Mar 13, 2012
  54. 03/9 column: add columnar layoutNguyễn Thái Ngọc Duy, Mar 13, 2012
  55. 04/9 column: add dense layout supportNguyễn Thái Ngọc Duy, Mar 13, 2012
  56. 05/9 help: reuse print_columns() for help -aNguyễn Thái Ngọc Duy, Mar 13, 2012
  57. 06/9 branch: add --columnNguyễn Thái Ngọc Duy, Mar 13, 2012
  58. 07/9 status: add --columnNguyễn Thái Ngọc Duy, Mar 13, 2012
  59. 08/9 column: support piping stdout to external git-column processNguyễn Thái Ngọc Duy, Mar 13, 2012
  60. 09/9 tag: add --columnNguyễn Thái Ngọc Duy, Mar 13, 2012
  61. 10/9 ls-files: support --columnNguyễn Thái Ngọc Duy, Mar 13, 2012
  62. 11/9 column: support "denser" modeNguyễn Thái Ngọc Duy, Mar 13, 2012
  63. 12/9 column: support grouping entriesNguyễn Thái Ngọc Duy, Mar 13, 2012
  64. Junio C HamanoMar 13, 2012
  65. Nguyen Thai Ngoc DuyMar 14, 2012
  66. Junio C HamanoMar 14, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.