colors: Colorize matrix block quotes.

This commit is contained in:
Damir Jelić 2018-08-20 11:11:54 +02:00
parent c9ef4ac086
commit 7f71bf47a1
2 changed files with 20 additions and 7 deletions

View file

@ -21,7 +21,7 @@ from __future__ import unicode_literals
# pylint: disable=redefined-builtin
from builtins import str
from collections import namedtuple
from matrix.globals import W
from matrix.globals import W, OPTIONS
from matrix.utils import string_strikethrough
import textwrap
@ -33,13 +33,9 @@ except ImportError:
from html.parser import HTMLParser
import html
from html.entities import name2codepoint
FormattedString = namedtuple('FormattedString', ['text', 'attributes'])
quote_wrapper = textwrap.TextWrapper(
initial_indent="> ", subsequent_indent="> ")
class Formatted():
@ -47,6 +43,17 @@ class Formatted():
# type: (List[FormattedString]) -> None
self.substrings = substrings
@property
def textwrapper(self):
return textwrap.TextWrapper(
width=67,
initial_indent="{}> ".format(
W.color(W.config_string(OPTIONS.options["quote"]))
),
subsequent_indent="{}> ".format(
W.color(W.config_string(OPTIONS.options["quote"]))
))
def is_formatted(self):
# type: (Formatted) -> bool
for string in self.substrings:
@ -268,7 +275,8 @@ class Formatted():
return string_strikethrough(string)
elif name == "quote" and value:
return quote_wrapper.fill(string.replace("\n", ""))
return self.textwrapper.fill(
W.string_remove_color(string.replace("\n", ""), ""))
elif name == "fgcolor" and value:
return "{color_on}{text}{color_off}".format(

View file

@ -138,6 +138,11 @@ def matrix_config_init(config_file):
("Use a separate buffer for debug logs.")),
]
color_options = [
Option("quote", "color", "", 0, 0, "lightgreen",
("Color for matrix style blockquotes"))
]
def add_global_options(section, options):
for option in options:
OPTIONS.options[option.name] = W.config_new_option(
@ -149,7 +154,7 @@ def matrix_config_init(config_file):
section = W.config_new_section(config_file, "color", 0, 0, "", "", "", "",
"", "", "", "", "", "")
# TODO color options
add_global_options(section, color_options)
section = W.config_new_section(config_file, "look", 0, 0, "", "", "", "",
"", "", "", "", "", "")