-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
I'm using a slightly modified version of the catppuccin config, and I have issues with highlighting with tags. I believe it is with the color highlighting.
Tags not next to each other
With Config
Without Config
Tags next to each other
With Config
CRASH
kamfurdev@hp-garuda in ~/.config/dooit via v3.13.3
❯ dooit
╭──────────────────────────────────────────────────────── Traceback (most recent call last) ────────────────────────────────────────────────────────╮
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/trees/model_tree.py:158 in on_mount │
│ │
│ 155 │ │ self.refresh_options() ╭─────────────────── locals ───────────────────╮ │
│ 156 │ │ self = TodosTree(id='TodosTree_Workspace_3') │ │
│ 157 │ def on_mount(self): ╰──────────────────────────────────────────────╯ │
│ ❱ 158 │ │ self.force_refresh() │
│ 159 │ │
│ 160 │ @require_highlighted_node │
│ 161 │ def start_sort(self): │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/trees/_decorators.py:17 in wrapper │
│ │
│ 14 │ │ highlighted_id = self.node.id if self.highlighted is not None else None │
│ 15 │ │ highlighted_index = self.highlighted │
│ 16 │ │ │
│ ❱ 17 │ │ func(self, *args, **kwargs) │
│ 18 │ │ │
│ 19 │ │ try: │
│ 20 │ │ │ if highlighted_id is None: │
│ │
│ ╭───────────────────────── locals ──────────────────────────╮ │
│ │ args = () │ │
│ │ highlighted_id = None │ │
│ │ highlighted_index = None │ │
│ │ kwargs = {} │ │
│ │ self = TodosTree(id='TodosTree_Workspace_3') │ │
│ ╰───────────────────────────────────────────────────────────╯ │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/trees/model_tree.py:129 in force_refresh │
│ │
│ 126 │ ╭─────────────────── locals ───────────────────╮ │
│ 127 │ @fix_highlight │ self = TodosTree(id='TodosTree_Workspace_3') │ │
│ 128 │ def force_refresh(self) -> None: ╰──────────────────────────────────────────────╯ │
│ ❱ 129 │ │ self._force_refresh() │
│ 130 │ │ self.get_column_width.cache_clear() │
│ 131 │ │
│ 132 │ def _force_refresh(self) -> None: │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/trees/model_tree.py:155 in _force_refresh │
│ │
│ 152 │ │ │
│ 153 │ │ has_options = bool(options) │
│ 154 │ │ self.empty_message.display = not has_options │
│ ❱ 155 │ │ self.refresh_options() │
│ 156 │ │
│ 157 │ def on_mount(self): │
│ 158 │ │ self.force_refresh() │
│ │
│ ╭────────────────────── locals ───────────────────────╮ │
│ │ has_options = True │ │
│ │ highlighted = None │ │
│ │ options = [Option(prompt='', id='Todo_7')] │ │
│ │ self = TodosTree(id='TodosTree_Workspace_3') │ │
│ ╰─────────────────────────────────────────────────────╯ │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/trees/model_tree.py:220 in refresh_options │
│ │
│ 217 │ def refresh_options(self) -> None: ╭─────────────────── locals ───────────────────╮ │
│ 218 │ │ for i in self._options: │ i = Option(prompt='', id='Todo_7') │ │
│ 219 │ │ │ assert i.id is not None │ self = TodosTree(id='TodosTree_Workspace_3') │ │
│ ❱ 220 │ │ │ new_prompt = self._renderers[i.id].prompt ╰──────────────────────────────────────────────╯ │
│ 221 │ │ │ if i.prompt != new_prompt: │
│ 222 │ │ │ │ i.set_prompt(self._renderers[i.id].prompt) │
│ 223 │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/renderers/base_renderer.py:40 in prompt │
│ │
│ 37 │ │
│ 38 │ @property │
│ 39 │ def prompt(self) -> RenderableType: │
│ ❱ 40 │ │ return self.make_renderable() │
│ 41 │ │
│ 42 │ @property │
│ 43 │ def model(self) -> ModelType: │
│ │
│ ╭─────────────────────────────────────── locals ────────────────────────────────────────╮ │
│ │ self = <dooit.ui.widgets.renderers.todo_renderer.TodoRender object at 0x72165a0d60d0> │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/renderers/base_renderer.py:72 in make_renderable │
│ │
│ 69 │ │ │ attr = item.value │
│ 70 │ │ │ component = self._get_component(attr) │
│ 71 │ │ │ │
│ ❱ 72 │ │ │ if len(component.render()) > self._get_max_width(attr): │
│ 73 │ │ │ │ self.tree.get_column_width.cache_clear() │
│ 74 │ │ │ │
│ 75 │ │ │ if component.is_editing: │
│ │
│ ╭─────────────────────────────────────────────────── locals ───────────────────────────────────────────────────╮ │
│ │ attr = 'description' │ │
│ │ component = <dooit.ui.widgets.inputs.model_inputs.TodoDescription object at 0x72165a0d6210> │ │
│ │ formatter = <dooit.ui.api.api_components.formatters.model_formatters.TodoFormatter object at 0x72165b24e120> │ │
│ │ item = <TodoWidget.description: 'description'> │ │
│ │ layout = [ │ │
│ │ │ <TodoWidget.status: 'status'>, │ │
│ │ │ <TodoWidget.urgency: 'urgency'>, │ │
│ │ │ <TodoWidget.description: 'description'>, │ │
│ │ │ <TodoWidget.due: 'due'> │ │
│ │ ] │ │
│ │ nest = 0 │ │
│ │ rendered = <text '' [Span(0, 0, 'bold #f38ba8')] ''> │ │
│ │ row = [<text '\uf10c' [Span(0, 1, '#f9e2af')] ''>, <text '' [Span(0, 0, 'bold #f38ba8')] ''>] │ │
│ │ self = <dooit.ui.widgets.renderers.todo_renderer.TodoRender object at 0x72165a0d60d0> │ │
│ │ table = <rich.table.Table object at 0x72165a0d6990> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/renderers/base_renderer.py:56 in _get_max_width │
│ │
│ 53 │ │ return max(len(component.value) + 1, len(rendered)) │
│ 54 │ │
│ 55 │ def _get_max_width(self, attr: str) -> int: │
│ ❱ 56 │ │ return self.tree.get_column_width(attr) │
│ 57 │ │
│ 58 │ def make_renderable(self) -> Table: │
│ 59 │ │ layout = self.table_layout │
│ │
│ ╭─────────────────────────────────────── locals ────────────────────────────────────────╮ │
│ │ attr = 'description' │ │
│ │ self = <dooit.ui.widgets.renderers.todo_renderer.TodoRender object at 0x72165a0d60d0> │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/trees/model_tree.py:56 in get_column_width │
│ │
│ 53 │ ╭─────────────────── locals ───────────────────╮ │
│ 54 │ @cache │ attr = 'description' │ │
│ 55 │ def get_column_width(self, attr: str) -> int: │ self = TodosTree(id='TodosTree_Workspace_3') │ │
│ ❱ 56 │ │ return max(i._get_attr_width(attr) for i in self._renderers.values()) ╰──────────────────────────────────────────────╯ │
│ 57 │ │
│ 58 │ @property │
│ 59 │ def formatter(self) -> "ModelFormatterBase": │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/trees/model_tree.py:56 in <genexpr> │
│ │
│ 53 │ │
│ 54 │ @cache │
│ 55 │ def get_column_width(self, attr: str) -> int: │
│ ❱ 56 │ │ return max(i._get_attr_width(attr) for i in self._renderers.values()) │
│ 57 │ │
│ 58 │ @property │
│ 59 │ def formatter(self) -> "ModelFormatterBase": │
│ │
│ ╭─────────────────────────────────────── locals ────────────────────────────────────────╮ │
│ │ .0 = <dict_valueiterator object at 0x721659eac680> │ │
│ │ attr = 'description' │ │
│ │ i = <dooit.ui.widgets.renderers.todo_renderer.TodoRender object at 0x72165a0d60d0> │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/widgets/renderers/base_renderer.py:49 in _get_attr_width │
│ │
│ 46 │ def _get_attr_width(self, attr: str) -> int: │
│ 47 │ │ component = self._get_component(attr) │
│ 48 │ │ formatter = self.tree.formatter │
│ ❱ 49 │ │ rendered: str = getattr(formatter, attr).format_value( │
│ 50 │ │ │ component.model_value, component.model │
│ 51 │ │ ) │
│ 52 │
│ │
│ ╭─────────────────────────────────────────────────── locals ───────────────────────────────────────────────────╮ │
│ │ attr = 'description' │ │
│ │ component = <dooit.ui.widgets.inputs.model_inputs.TodoDescription object at 0x72165a0d6210> │ │
│ │ formatter = <dooit.ui.api.api_components.formatters.model_formatters.TodoFormatter object at 0x72165b24e120> │ │
│ │ self = <dooit.ui.widgets.renderers.todo_renderer.TodoRender object at 0x72165a0d60d0> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/dooit/ui/api/api_components/formatters/formatter_store.py:129 in format_value │
│ │
│ 126 │ │ │ │ value = str(res) │
│ 127 │ │ │
│ 128 │ │ if value: │
│ ❱ 129 │ │ │ return Text.from_markup(value) │
│ 130 │ │ │
│ 131 │ │ return Text("-", justify="center", style="dim") │
│ 132 │
│ │
│ ╭───────────────────────────────────────────────── locals ──────────────────────────────────────────────────╮ │
│ │ model = <dooit.api.todo.Todo object at 0x72165a0c0890> │ │
│ │ params = {'api': <dooit.ui.api.dooit_api.DooitAPI object at 0x72165b24d550>} │ │
│ │ res = None │ │
│ │ self = <dooit.ui.api.api_components.formatters.formatter_store.FormatterStore object at 0x72165b24e270> │ │
│ │ value = 'tags are [#b4befe[#b4befe]\uf02b \uf02b re[/#b4befe]ally[/#b4befe] @cool' │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/rich/text.py:287 in from_markup │
│ │
│ /home/kamfurdev/.local/share/mamba/lib/python3.13/site-packages/rich/markup.py:167 in render │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
MarkupError: closing tag '[/#b4befe]' at position 46 doesn't match any open tag
Without Config
If dooit crashes with tags next to each other, I either have to remove the config, or remove the tags using an SQL editor.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels


