1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-09 04:26:08 +02:00
git/column.h
Nguyễn Thái Ngọc Duy 077539d734 column: add columnar layout
COL_COLUMN and COL_ROW fill column by column (or row by row
respectively), given the terminal width and how many space between
columns. All cells have equal width.

Strings are supposed to be in UTF-8. Valid ANSI escape strings are OK.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-27 09:26:38 -07:00

41 lines
1.2 KiB
C

#ifndef COLUMN_H
#define COLUMN_H
#define COL_LAYOUT_MASK 0x000F
#define COL_ENABLE_MASK 0x0030 /* always, never or auto */
#define COL_PARSEOPT 0x0040 /* --column is given from cmdline */
#define COL_DISABLED 0x0000 /* must be zero */
#define COL_ENABLED 0x0010
#define COL_AUTO 0x0020
#define COL_LAYOUT(c) ((c) & COL_LAYOUT_MASK)
#define COL_COLUMN 0 /* Fill columns before rows */
#define COL_ROW 1 /* Fill rows before columns */
#define COL_PLAIN 15 /* one column */
#define explicitly_enable_column(c) \
(((c) & COL_PARSEOPT) && column_active(c))
struct column_options {
int width;
int padding;
const char *indent;
const char *nl;
};
struct option;
extern int parseopt_column_callback(const struct option *, const char *, int);
extern int git_column_config(const char *var, const char *value,
const char *command, unsigned int *colopts);
extern int finalize_colopts(unsigned int *colopts, int stdout_is_tty);
static inline int column_active(unsigned int colopts)
{
return (colopts & COL_ENABLE_MASK) == COL_ENABLED;
}
extern void print_columns(const struct string_list *list, unsigned int colopts,
const struct column_options *opts);
#endif