Repository navigation
Open
Labels
bugSomething isn't workingSomething isn't workinghelp wantedExtra attention is neededExtra attention is needed
Description
Feedback source
None
GitHub Copilot plugin version
0.14.0
Eclipse IDE and version
Version: 2025-12 (4.38.0) Build id: 20251204-0850
Platform
Windows 11
Steps to reproduce
Prompt: Output a comparison of web components vs plain vanillajs in a table to build a simple visual toggle.
Any prompt resulting in a markdown table being output will generate the same issue
Logs (optional)
No response
Expected behavior
A proper table should be visualized
Actual behavior
The plain-text version of the table markdown is shown.
| Aspect | Plain Vanilla JS | Web Components | |--------|------------------|----------------| | Setup | Find a DIV, attach handlers directly | Define a custom element class, register with customElements.define() | | HTML Usage |
+ initTagManager('#myTags') | | | Style Isolation | None—CSS can bleed in/out, must use unique class names | Shadow DOM provides full encapsulation | | Reusability | Copy/paste JS + CSS, call init function | Just use the HTML tag anywhere | | Form Integration | Manually create/update hidden input | Same, or use ElementInternals API | | Dependencies | None | None | | Browser Support | All browsers | All modern browsers (IE11 needs polyfill) | | File Structure | Separate JS + CSS files, or inline | Single self-contained JS file | | Initialization | Explicit: TagManager.init(element, options) | Automatic: element self-initializes when added to DOM | | Multiple Instances | Must call init for each instance | Just add multiple tags | | Configuration | Pass options object to init function | Use HTML attributes: | | Event Handling | Custom callbacks or manual event dispatch | Native CustomEvent dispatch, use addEventListener | | Cleanup | Manual: must track and remove listeners | Automatic via disconnectedCallback() | | Learning Curve | Low—standard DOM manipulation | Medium—must learn lifecycle callbacks, Shadow DOM | | Debugging | Straightforward DOM inspection | Shadow DOM adds a layer in DevTools | | Framework Compatibility | Works anywhere with minor integration | Works anywhere as native HTML element | | Code Size | Minimal boilerplate | ~20-30 extra lines for class structure | | Attribute Reactivity | Manual: watch for changes yourself | Built-in: attributeChangedCallback() | | Semantic HTML | Generic with classes | Custom element name conveys meaning |
Additional information
No response
Reacted by Dietrich Travkin and Marian Zeis
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workinghelp wantedExtra attention is neededExtra attention is needed
Activity
jdneo commentedon Jan 6, 2026
Upstream issue: eclipse-mylyn/org.eclipse.mylyn#364
iloveeclipse commentedon Feb 11, 2026
Sheng Chen (@jdneo): see eclipse-lsp4e/lsp4e#1488.
That would add commonmark to tm4e.
jdneo commentedon Feb 12, 2026
Andrey Loskutov (@iloveeclipse) Thank you for sharing this information.
Seems that it's using the
HtmlRenderer. We are now using MarkupViewer from mylyn.I'll do some experiments on that.
dougbreaux commentedon May 18, 2026
Further, it doesn't insert linefeeds between lines, so copy/paste is more painful than it should be
DerIngo commentedon Jun 17, 2026
any update on this?
travkin79 commentedon Jun 17, 2026
I did not yet start investigating this, but this could be an interesting issue. I'm wondering if Copilot for Eclipse could use commonmark (instead of mylyn.wikitext) like LSP4E and use the tables extension and what effort is needed for the migration. It works pretty much the same with flexmark-java, which I'm already somewhat familiar with.
jdneo commentedon Jun 18, 2026
Dietrich Travkin (@travkin79) The context is mylyn.wikitext only support standard markup grammar, but the table rendering is out of this scope, it is an extension of the language, so we cannot render the table now.
Benefit of using
mylyn.wikitextis that we deal it as a runtime dependency, so we will not distributed that as a lib. Sincecommonmarkis not embedded in Eclipse, so we need to add it as a 3rd party dependency, some legal/IP check is needed from our side. (Though seems like it is BSD licensed, so should be ok)travkin79 commentedon Jun 18, 2026
Hello Sheng Chen (@jdneo),
Thank you for clarification. Do you think, it's worth trying the migration to commonmark (checking which effort and consequences we have to expect)? Do you want to perform the legal/IP check first?
In principle, we could ask the commonmark developers to also (automatically) publish an Eclipse feature and update site with the commonmark library bundled as an OSGi bundle. I've done that already for the PlantUML library. This way, commonmark could be a runtime / plug-in dependency similar to mylyn.wikitext today.
travkin79 commentedon Jun 19, 2026
Update:
After some experimenting with commonmark in copilot-for-eclipse, I have the following findings:
ChatMarkupViewer.computeHtml(String)is basically enoughMarkupVieweris based onStyledTextwidgets. For that reason, applying CSS styles doesn't work if we just add them to the HTML document's header (e.g. adding a border). Besides, the table cells are not aligned as we would expect them to be. It very much looks as if we need to switch fromMarkupViewerandStyledTexttoorg.eclipse.swt.browser.Browserfor real HTML rendering. But that's significantly more effort and I'm not sure yet about the things we could loose this way.<table>,`<br>`, or`| --- |`, see example below.In case, someone wants to see the experimental changes, you'll find them in this branch: https://github.com/travkin79/copilot-for-eclipse/tree/fix-64-table-rendering
Example:
Displaying a copilot answer like the following Markdown code results in the following rendering result.
In a web browser the table is rendered as:
FYI: Sheng Chen (@jdneo)
jdneo commentedon Jun 22, 2026
Dietrich Travkin (@travkin79)
Thank you for the detailed sharing, looks promising.
I like the solution to make it as a runtime dependency, and since it's download site is https://download.eclipse.org, this should not be blocked by the company firewall usually.
Just one further question: Did you observe any kind of perf downgrade/improvement on you side after switching to commonmark solution?
travkin79 commentedon Jun 22, 2026
Hi Sheng Chen (@jdneo),
I did not compare the performance yet, since the implementation is not final. But I did not observe any significant performance changes while testing/debugging with a launch config.
I think, it's worth investigating a slightly different approach, i.e. implementing a Browser widget for real HTML rendering. Otherwise, tables are not rendered as grids, at the moment the table cells are rather rendered as "text snippets in flow layout". But migrating to Browser widget could become complex when coping with CSS styles. Besides, if going with Browser-based widgets, it might be beneficial to have one Browser widget for the complete conversation instead of multiple widgets for requests, answers, etc.
jdneo commentedon Jun 22, 2026
I'm also thinking about using a webview for the chat view, but this could be a very large refactoring.
27 remaining items
test: Add side-by-side comparison via new Copilot menu entry (microso…
test: Probe both chat renderers via launch property (microsoft#64)
fix: Add browser-based chat view widget for rendering conversations (m…
test: Add unit tests (microsoft#64)
test: Add side-by-side comparison via new Copilot menu entry (microso…
test: Probe both chat renderers via launch property (microsoft#64)
tamasmiklossy commentedon Nov 4, 2026
CC Lars Vogel (@vogella)
refactor: Introduce IConversationWidget abstraction for the chat view (…
feat: Add utilities for loading bundle resources as data URIs (micros…
feat: Provide display names and data-URI avatars via AvatarService (m…
feat: Add browser-based conversation widget (microsoft#64)
feat: Add preference for switching to the browser-based chat renderer (…
test: Add unit tests (microsoft#64)
test: Add side-by-side comparison via new Copilot menu entry (microso…
test: Probe both chat renderers via launch property (microsoft#64)