mercurial/revlogutils/debug.py
changeset 49254 69983adfed06
parent 49253 a321304269cf
child 49255 251650844331
equal deleted inserted replaced
49253:a321304269cf 49254:69983adfed06
    20 
    20 
    21 
    21 
    22 class _column_base:
    22 class _column_base:
    23     """constains the definition of a revlog column
    23     """constains the definition of a revlog column
    24 
    24 
    25     name:       the column header,
    25     name:         the column header,
    26     value_func: the function called to get a value,
    26     value_func:   the function called to get a value,
    27     size:       the width of the column.
    27     size:         the width of the column,
       
    28     verbose_only: only include the column in verbose mode.
    28     """
    29     """
    29 
    30 
    30     def __init__(self, name, value_func, size=None):
    31     def __init__(self, name, value_func, size=None, verbose=False):
    31         self.name = name
    32         self.name = name
    32         self.value_func = value_func
    33         self.value_func = value_func
    33         if size is not NODE_SIZE:
    34         if size is not NODE_SIZE:
    34             if size is None:
    35             if size is None:
    35                 size = 8  # arbitrary default
    36                 size = 8  # arbitrary default
    36             size = max(len(name), size)
    37             size = max(len(name), size)
    37         self._size = size
    38         self._size = size
       
    39         self.verbose_only = verbose
    38 
    40 
    39     def get_size(self, node_size):
    41     def get_size(self, node_size):
    40         if self._size is NODE_SIZE:
    42         if self._size is NODE_SIZE:
    41             return node_size
    43             return node_size
    42         else:
    44         else:
    43             return self._size
    45             return self._size
    44 
    46 
    45 
    47 
    46 def debug_column(name, size=None):
    48 def debug_column(name, size=None, verbose=False):
    47     """decorated function is registered as a column
    49     """decorated function is registered as a column
    48 
    50 
    49     name: the name of the column,
    51     name: the name of the column,
    50     size: the expected size of the column.
    52     size: the expected size of the column.
    51     """
    53     """
    53     def register(func):
    55     def register(func):
    54         entry = _column_base(
    56         entry = _column_base(
    55             name=name,
    57             name=name,
    56             value_func=func,
    58             value_func=func,
    57             size=size,
    59             size=size,
       
    60             verbose=verbose,
    58         )
    61         )
    59         INDEX_ENTRY_DEBUG_COLUMN.append(entry)
    62         INDEX_ENTRY_DEBUG_COLUMN.append(entry)
    60         return entry
    63         return entry
    61 
    64 
    62     return register
    65     return register
   111 
   114 
   112     fm = formatter
   115     fm = formatter
   113 
   116 
   114     header_pieces = []
   117     header_pieces = []
   115     for column in INDEX_ENTRY_DEBUG_COLUMN:
   118     for column in INDEX_ENTRY_DEBUG_COLUMN:
       
   119         if column.verbose_only and not ui.verbose:
       
   120             continue
   116         size = column.get_size(idlen)
   121         size = column.get_size(idlen)
   117         name = column.name
   122         name = column.name
   118         header_pieces.append(name.rjust(size))
   123         header_pieces.append(name.rjust(size))
   119 
   124 
   120     fm.plain(b' '.join(header_pieces) + b'\n')
   125     fm.plain(b' '.join(header_pieces) + b'\n')
   124     for rev in revlog:
   129     for rev in revlog:
   125         fm.startitem()
   130         fm.startitem()
   126         entry = index[rev]
   131         entry = index[rev]
   127         first = True
   132         first = True
   128         for column in INDEX_ENTRY_DEBUG_COLUMN:
   133         for column in INDEX_ENTRY_DEBUG_COLUMN:
       
   134             if column.verbose_only and not ui.verbose:
       
   135                 continue
   129             if not first:
   136             if not first:
   130                 fm.plain(b' ')
   137                 fm.plain(b' ')
   131             first = False
   138             first = False
   132 
   139 
   133             size = column.get_size(idlen)
   140             size = column.get_size(idlen)