Skip to content

P2: Markdown com syntax highlighting real (tree-sitter/syntect) #31

Description

@chapzin

Problema

O jcode-harness renderiza markdown via src/tui/markdown.rs e jcode-tui-markdown, mas o syntax highlighting em code blocks e basico (apenas coloracao de indentacao, sem analise sintatica real por linguagem).

O que precisa ser feito

1. Syntax highlighting real

  • Integrar tree-sitter ou syntect para highlighting por linguagem
  • Suportar linguagens comuns: rust, python, typescript, javascript, go, bash, json, yaml, toml, sql, html, css, diff
  • Detectar linguagem do fence: rust, python, ```typescript, etc.
  • Fallback para texto simples se linguagem nao reconhecida

2. Tabelas Markdown

  • Renderizar tabelas com bordas Unicode:
┌──────────┬──────────┬──────────┐
│ Coluna 1 │ Coluna 2 │ Coluna 3 │
├──────────┼──────────┼──────────┤
│ valor    │ valor    │ valor    │
└──────────┴──────────┴──────────┘
  • Suportar alinhamento (:---, :---:, ---:)
  • Truncar colunas largas com "..."
  • Fallback para lista de key-value em terminais estreitos

3. Blockquotes estilizados

  • Barra vertical colorida a esquerda (│ ou ┃)
  • Cor diferente do texto normal
  • Suportar nested blockquotes (> > texto)

4. Checkboxes renderizadas

    • → ☐ (pending)
    • → ☑ (completed)
  • Cores diferentes para cada estado

5. Links clicaveis

  • Detectar URLs text e urls nuas
  • Sublinhado ou cor diferente para indicar clicaveis
  • Ctrl+Click para abrir no navegador
  • Hover mostra URL completa

Dependencias potenciais

  • tree-sitter + tree-sitter-highlight (recomendado, mesma stack do zed)
  • ou syntect (mais maduro, usado pelo bat)
  • unicode-width (ja usado)

Arquivos a modificar

  • src/tui/markdown.rs — adicionar highlighting, tabelas, blockquotes
  • crates/jcode-tui-markdown/ — renderizacao de code blocks com syntect
  • crates/jcode-tui-render/src/chrome.rs — helpers de borda para tabelas
  • Cargo.toml — adicionar dependencia tree-sitter ou syntect

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions