Skip to content

Commit f29d8ad

Browse files
sunbryeCopilot
andauthored
Restructure Copilot IDE feature matrix into per-IDE data files (#62693)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7d4919ea-eeca-4c40-afc0-b32393b0dd35 Copilot-Session: 370ea382-992a-41ca-8733-d9498958d5b9
1 parent 38713fc commit f29d8ad

17 files changed

Lines changed: 2578 additions & 2031 deletions

File tree

content/copilot/reference/copilot-feature-matrix.md

Lines changed: 70 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,23 @@ contentType: reference
1515

1616
**Key:**
1717

18-
* ✓ = supported
19-
* ✗ = not supported
20-
* P = under preview
21-
* C = closing down
18+
{% for level in tables.copilot.matrix-meta.supportLevels %}
19+
* {{ level.symbol }} = {{ level.label }}
20+
{%- endfor %}
21+
{%- assign anyNotApplicable = false %}
22+
{%- for ideKey in tables.copilot.matrix-meta.ideOrder %}
23+
{%- assign naList = tables.copilot.matrix[ideKey].notApplicable %}
24+
{%- if naList and naList.size > 0 %}{% assign anyNotApplicable = true %}{% endif %}
25+
{%- endfor %}
26+
{%- if anyNotApplicable %}
27+
* — = does not apply to this IDE
28+
{%- endif %}
2229

23-
<!-- Source for the following tables lives in data/tables/copilot/copilot-matrix.yml -->
30+
{%- comment %}
31+
Source for the following tables lives in:
32+
data/tables/copilot/matrix-meta.yml shared config: ideOrder, featureOrder, supportLevels
33+
data/tables/copilot/matrix/<ide>.yml one file per IDE, owned by that IDE's product owner
34+
{%- endcomment %}
2435

2536
{% ides %}
2637

@@ -30,31 +41,34 @@ The following table shows supported {% data variables.product.prodname_copilot_s
3041

3142
{%- comment %}
3243
This loop generates the "Features by IDE" comparison table:
33-
- Outer loop: Iterates through each feature from VS Code's feature list (using VS Code as the canonical source)
34-
- Inner loop: For each feature, iterates through all IDEs to check support in their latest versions
35-
- Gets the latest version using ideEntry[1].versions | first
36-
- Looks up the support level for that feature in that version
37-
- Outputs ✓ (supported), P (preview), or ✗ (not supported)
44+
- Column order comes from matrix-meta.ideOrder
45+
- Row order comes from matrix-meta.featureOrder, so a feature that ships first in an
46+
IDE other than VS Code still appears here
47+
- For each cell, looks up the feature in that IDE's latest version (versions | first)
48+
- A feature listed in an IDE's `notApplicable` renders as — (does not apply), which is
49+
distinct from ✗ (not supported)
3850
Example row: | Agent mode | ✓ | ✓ | P | ✗ | ... |
3951
{%- endcomment %}
52+
{%- assign matrix = tables.copilot.matrix %}
53+
{%- assign meta = tables.copilot.matrix-meta %}
4054

41-
| Feature{%- for entry in tables.copilot.copilot-matrix.ides %} | {{ entry[0] }}{%- endfor %} |
42-
|:----{%- for entry in tables.copilot.copilot-matrix.ides %}|:----:{%- endfor %}|
43-
{%- for featureEntry in tables.copilot.copilot-matrix.ides["VS Code"].features %}
44-
| {{ featureEntry[0] }}{%- for ideEntry in tables.copilot.copilot-matrix.ides %}{%- assign latestVersion = ideEntry[1].versions | first %}{%- assign supportLevel = ideEntry[1].features[featureEntry[0]][latestVersion] %} | {%- case supportLevel -%}{%- when "supported" %}✓{%- when "preview" %}P{%- when "closing-down" %}C{%- else %}✗{%- endcase -%}{%- endfor %} |
55+
| Feature{%- for ideKey in meta.ideOrder %} | {{ matrix[ideKey].name }}{%- endfor %} |
56+
|:----{%- for ideKey in meta.ideOrder %}|:----:{%- endfor %}|
57+
{%- for feature in meta.featureOrder %}
58+
| {{ feature }}{%- for ideKey in meta.ideOrder %}{%- assign ide = matrix[ideKey] %}{%- assign latestVersion = ide.versions | first %}{%- assign supportLevel = ide.features[feature][latestVersion] %} | {%- if ide.notApplicable contains feature -%}—{%- else -%}{%- case supportLevel -%}{%- when "supported" %}✓{%- when "preview" %}P{%- when "closing-down" %}C{%- else %}✗{%- endcase -%}{%- endif -%}{%- endfor %} |
4559
{%- endfor %}
4660

4761
{% endides %}
4862

4963
{% vscode %}
5064

51-
{% assign ideEntry = tables.copilot.copilot-matrix.ides["VS Code"] %}
65+
{% assign ideEntry = tables.copilot.matrix.vs-code %}
5266

5367
## Features by VS Code version
5468

55-
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the IDE.
69+
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% if ideEntry.versionType == "extension" %}{% data variables.copilot.copilot_extension %} for the {% endif %}IDE.
5670

57-
{%- comment %} Use the predefined versionGroups from JSON data {%- endcomment %}
71+
{%- comment %} Use the predefined versionGroups from the IDE's data file {%- endcomment %}
5872
{% for groupEntry in ideEntry.versionGroups %}
5973
{%- assign groupName = groupEntry[0] %}
6074
{%- assign groupVersions = groupEntry[1] %}
@@ -66,20 +80,24 @@ The following table shows supported {% data variables.product.prodname_copilot_s
6680
{%- for featureEntry in ideEntry.features %}
6781
| {{ featureEntry[0] }}{%- for version in groupVersions %}{%- assign supportLevel = featureEntry[1][version] %} | {%- case supportLevel -%}{%- when "supported" %}✓{%- when "preview" %}P{%- when "closing-down" %}C{%- else %}✗{%- endcase -%}{%- endfor %} |
6882
{%- endfor %}
83+
{%- comment %} Features that do not apply to this IDE at all, rendered as — not ✗ {%- endcomment %}
84+
{%- for naFeature in ideEntry.notApplicable %}
85+
| {{ naFeature }}{%- for version in groupVersions %} | —{%- endfor %} |
86+
{%- endfor %}
6987

7088
{% endfor %}
7189

7290
{% endvscode %}
7391

7492
{% visualstudio %}
7593

76-
{% assign ideEntry = tables.copilot.copilot-matrix.ides["Visual Studio"] %}
94+
{% assign ideEntry = tables.copilot.matrix.visual-studio %}
7795

7896
## Features by Visual Studio version
7997

80-
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the IDE.
98+
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% if ideEntry.versionType == "extension" %}{% data variables.copilot.copilot_extension %} for the {% endif %}IDE.
8199

82-
{%- comment %} Use the predefined versionGroups from JSON data {%- endcomment %}
100+
{%- comment %} Use the predefined versionGroups from the IDE's data file {%- endcomment %}
83101
{% for groupEntry in ideEntry.versionGroups %}
84102
{%- assign groupName = groupEntry[0] %}
85103
{%- assign groupVersions = groupEntry[1] %}
@@ -91,20 +109,24 @@ The following table shows supported {% data variables.product.prodname_copilot_s
91109
{%- for featureEntry in ideEntry.features %}
92110
| {{ featureEntry[0] }}{%- for version in groupVersions %}{%- assign supportLevel = featureEntry[1][version] %} | {%- case supportLevel -%}{%- when "supported" %}✓{%- when "preview" %}P{%- when "closing-down" %}C{%- else %}✗{%- endcase -%}{%- endfor %} |
93111
{%- endfor %}
112+
{%- comment %} Features that do not apply to this IDE at all, rendered as — not ✗ {%- endcomment %}
113+
{%- for naFeature in ideEntry.notApplicable %}
114+
| {{ naFeature }}{%- for version in groupVersions %} | —{%- endfor %} |
115+
{%- endfor %}
94116

95117
{% endfor %}
96118

97119
{% endvisualstudio %}
98120

99121
{% jetbrains %}
100122

101-
{% assign ideEntry = tables.copilot.copilot-matrix.ides["JetBrains"] %}
123+
{% assign ideEntry = tables.copilot.matrix.jetbrains %}
102124

103125
## Features by JetBrains version
104126

105-
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% data variables.copilot.copilot_extension %} for the IDE.
127+
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% if ideEntry.versionType == "extension" %}{% data variables.copilot.copilot_extension %} for the {% endif %}IDE.
106128

107-
{%- comment %} Use the predefined versionGroups from JSON data {%- endcomment %}
129+
{%- comment %} Use the predefined versionGroups from the IDE's data file {%- endcomment %}
108130
{% for groupEntry in ideEntry.versionGroups %}
109131
{%- assign groupName = groupEntry[0] %}
110132
{%- assign groupVersions = groupEntry[1] %}
@@ -116,20 +138,24 @@ The following table shows supported {% data variables.product.prodname_copilot_s
116138
{%- for featureEntry in ideEntry.features %}
117139
| {{ featureEntry[0] }}{%- for version in groupVersions %}{%- assign supportLevel = featureEntry[1][version] %} | {%- case supportLevel -%}{%- when "supported" %}✓{%- when "preview" %}P{%- when "closing-down" %}C{%- else %}✗{%- endcase -%}{%- endfor %} |
118140
{%- endfor %}
141+
{%- comment %} Features that do not apply to this IDE at all, rendered as — not ✗ {%- endcomment %}
142+
{%- for naFeature in ideEntry.notApplicable %}
143+
| {{ naFeature }}{%- for version in groupVersions %} | —{%- endfor %} |
144+
{%- endfor %}
119145

120146
{% endfor %}
121147

122148
{% endjetbrains %}
123149

124150
{% eclipse %}
125151

126-
{% assign ideEntry = tables.copilot.copilot-matrix.ides["Eclipse"] %}
152+
{% assign ideEntry = tables.copilot.matrix.eclipse %}
127153

128154
## Features by Eclipse version
129155

130-
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% data variables.copilot.copilot_extension %} for the IDE.
156+
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% if ideEntry.versionType == "extension" %}{% data variables.copilot.copilot_extension %} for the {% endif %}IDE.
131157

132-
{%- comment %} Use the predefined versionGroups from JSON data {%- endcomment %}
158+
{%- comment %} Use the predefined versionGroups from the IDE's data file {%- endcomment %}
133159
{% for groupEntry in ideEntry.versionGroups %}
134160
{%- assign groupName = groupEntry[0] %}
135161
{%- assign groupVersions = groupEntry[1] %}
@@ -141,20 +167,24 @@ The following table shows supported {% data variables.product.prodname_copilot_s
141167
{%- for featureEntry in ideEntry.features %}
142168
| {{ featureEntry[0] }}{%- for version in groupVersions %}{%- assign supportLevel = featureEntry[1][version] %} | {%- case supportLevel -%}{%- when "supported" %}✓{%- when "preview" %}P{%- when "closing-down" %}C{%- else %}✗{%- endcase -%}{%- endfor %} |
143169
{%- endfor %}
170+
{%- comment %} Features that do not apply to this IDE at all, rendered as — not ✗ {%- endcomment %}
171+
{%- for naFeature in ideEntry.notApplicable %}
172+
| {{ naFeature }}{%- for version in groupVersions %} | —{%- endfor %} |
173+
{%- endfor %}
144174

145175
{% endfor %}
146176

147177
{% endeclipse %}
148178

149179
{% xcode %}
150180

151-
{% assign ideEntry = tables.copilot.copilot-matrix.ides["Xcode"] %}
181+
{% assign ideEntry = tables.copilot.matrix.xcode %}
152182

153183
## Features by Xcode version
154184

155-
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% data variables.copilot.copilot_extension %} for the IDE.
185+
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% if ideEntry.versionType == "extension" %}{% data variables.copilot.copilot_extension %} for the {% endif %}IDE.
156186

157-
{%- comment %} Use the predefined versionGroups from JSON data {%- endcomment %}
187+
{%- comment %} Use the predefined versionGroups from the IDE's data file {%- endcomment %}
158188
{% for groupEntry in ideEntry.versionGroups %}
159189
{%- assign groupName = groupEntry[0] %}
160190
{%- assign groupVersions = groupEntry[1] %}
@@ -166,20 +196,24 @@ The following table shows supported {% data variables.product.prodname_copilot_s
166196
{%- for featureEntry in ideEntry.features %}
167197
| {{ featureEntry[0] }}{%- for version in groupVersions %}{%- assign supportLevel = featureEntry[1][version] %} | {%- case supportLevel -%}{%- when "supported" %}✓{%- when "preview" %}P{%- when "closing-down" %}C{%- else %}✗{%- endcase -%}{%- endfor %} |
168198
{%- endfor %}
199+
{%- comment %} Features that do not apply to this IDE at all, rendered as — not ✗ {%- endcomment %}
200+
{%- for naFeature in ideEntry.notApplicable %}
201+
| {{ naFeature }}{%- for version in groupVersions %} | —{%- endfor %} |
202+
{%- endfor %}
169203

170204
{% endfor %}
171205

172206
{% endxcode %}
173207

174208
{% vimneovim %}
175209

176-
{% assign ideEntry = tables.copilot.copilot-matrix.ides["NeoVim"] %}
210+
{% assign ideEntry = tables.copilot.matrix.neovim %}
177211

178212
## Features by NeoVim version
179213

180-
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% data variables.copilot.copilot_extension %} for the IDE.
214+
The following table shows supported {% data variables.product.prodname_copilot_short %} features across recent versions of the {% if ideEntry.versionType == "extension" %}{% data variables.copilot.copilot_extension %} for the {% endif %}IDE.
181215

182-
{%- comment %} Use the predefined versionGroups from JSON data {%- endcomment %}
216+
{%- comment %} Use the predefined versionGroups from the IDE's data file {%- endcomment %}
183217
{% for groupEntry in ideEntry.versionGroups %}
184218
{%- assign groupName = groupEntry[0] %}
185219
{%- assign groupVersions = groupEntry[1] %}
@@ -191,6 +225,10 @@ The following table shows supported {% data variables.product.prodname_copilot_s
191225
{%- for featureEntry in ideEntry.features %}
192226
| {{ featureEntry[0] }}{%- for version in groupVersions %}{%- assign supportLevel = featureEntry[1][version] %} | {%- case supportLevel -%}{%- when "supported" %}✓{%- when "preview" %}P{%- when "closing-down" %}C{%- else %}✗{%- endcase -%}{%- endfor %} |
193227
{%- endfor %}
228+
{%- comment %} Features that do not apply to this IDE at all, rendered as — not ✗ {%- endcomment %}
229+
{%- for naFeature in ideEntry.notApplicable %}
230+
| {{ naFeature }}{%- for version in groupVersions %} | —{%- endfor %} |
231+
{%- endfor %}
194232

195233
{% endfor %}
196234

0 commit comments

Comments
 (0)