Skip to content

Commit 51beeb9

Browse files
committed
[colorizers] sheet._colorizers has all colorizers #1225
1 parent abf1b2e commit 51beeb9

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

visidata/sheets.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ def __init__(self, *names, rows=UNLOADED, **kwargs):
141141
self.initialCols = kwargs.pop('columns', None) or type(self).columns
142142
self.resetCols()
143143

144-
self._colorizers = []
144+
self._colorizers = self.classColorizers
145145
self.recalc() # set .sheet on columns and start caches
146146

147147
self.__dict__.update(kwargs) # also done earlier in BaseSheet.__init__
@@ -158,13 +158,15 @@ def topRowIndex(self, v):
158158
def addColorizer(self, c):
159159
'Add Colorizer *c* to the list of colorizers for this sheet.'
160160
self._colorizers.append(c)
161+
self._colorizers = sorted(self._colorizers, key=lambda x: x.precedence, reverse=True)
161162

162163
def removeColorizer(self, c):
163164
'Remove Colorizer *c* from the list of colorizers for this sheet.'
164165
self._colorizers.remove(c)
165166

166-
@drawcache_property
167-
def allColorizers(self):
167+
@property
168+
def classColorizers(self) -> list:
169+
'List of all colorizers from sheet class hierarchy in precedence order (highest precedence first)'
168170
# all colorizers must be in the same bucket
169171
# otherwise, precedence does not get applied properly
170172
_colorizers = set()
@@ -177,14 +179,13 @@ def allParents(cls):
177179
for c in getattr(b, 'colorizers', []):
178180
_colorizers.add(c)
179181

180-
_colorizers |= set(self._colorizers)
181182
return sorted(_colorizers, key=lambda x: x.precedence, reverse=True)
182183

183184
def _colorize(self, col, row, value=None) -> ColorAttr:
184-
'Returns ColorAttr for the given colorizers/col/row/value'
185+
'Return ColorAttr for the given colorizers/col/row/value'
185186

186187
colorstack = []
187-
for colorizer in self.allColorizers:
188+
for colorizer in self._colorizers:
188189
try:
189190
r = colorizer.func(self, col, row, value)
190191
if r:

0 commit comments

Comments
 (0)