Support different colors per completion column.

Now colors.completion.fg may be set to a list to specify a different
color for each completion column. For example:

:set colors.completion.fg [black,blue,white] will use black text for the
first column, blue for the second, and white for the third.

Setting to a single value still works and behaves as before. The default
is unchanged from 'white'.

Resolves #1794.
This commit is contained in:
Ryan Roden-Corrent 2017-12-13 17:03:59 -05:00
parent 0a612db733
commit 57e2d407ce
2 changed files with 13 additions and 5 deletions

View File

@ -138,10 +138,10 @@ class CompletionItemDelegate(QStyledItemDelegate):
self._painter.translate(text_rect.left(), text_rect.top())
self._get_textdoc(index)
self._draw_textdoc(text_rect)
self._draw_textdoc(text_rect, index.column())
self._painter.restore()
def _draw_textdoc(self, rect):
def _draw_textdoc(self, rect, col):
"""Draw the QTextDocument of an item.
Args:
@ -156,7 +156,9 @@ class CompletionItemDelegate(QStyledItemDelegate):
elif not self._opt.state & QStyle.State_Enabled:
color = config.val.colors.completion.category.fg
else:
color = config.val.colors.completion.fg
colors = config.val.colors.completion.fg
# if multiple colors are set, use different colors per column
color = colors[col % len(colors)]
self._painter.setPen(color)
ctx = QAbstractTextDocumentLayout.PaintContext()

View File

@ -1541,8 +1541,14 @@ zoom.text_only:
colors.completion.fg:
default: white
type: QtColor
desc: Text color of the completion widget.
type:
name: ListOrValue
valtype: QtColor
desc: >-
Text color of the completion widget.
May be a single value to specify the color for all columns, or a list
specifying a different color for each column.
colors.completion.odd.bg:
default: '#444444'