<p dir="auto">It would be nice if the bottom-docked pane (integrated terminal, Output view, etc.) could optionally appear as a column alongside the editors, instead of docked to the bottom. My team has a command-line test watcher and node server that we keep an eye on while developing. Our terminal output tends to be tall and narrow. A column view or side-docked view would fit better and not cover vertical space of the editors.</p>
<p dir="auto">It's nice that the implementations of <code class="notranslate">FormatDocumentProvider</code> and <code class="notranslate">DocumentSymbolProvider</code> can be used via <code class="notranslate">executeCommand</code>.  However, the return types are undocumented and subtely different from what the implementation side produces.</p>
<ol dir="auto">
<li>Is this intentional?</li>
<li>Is it considered a supported scenario for extensions to use <code class="notranslate">executeCommand</code> on these commands?  Or should they factor out their implementation and use the implementation code directly?</li>
</ol>
<p dir="auto">For <code class="notranslate">FormatDocumentProvider</code> for example, I provide a <code class="notranslate">TextEdit[]</code> which is:</p>
<div class="highlight highlight-source-json notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="[
 {
  &quot;_range&quot;: {
   &quot;_start&quot;: {
    &quot;_line&quot;: 2,
    &quot;_character&quot;: 7
   },
   &quot;_end&quot;: {
    &quot;_line&quot;: 4,
    &quot;_character&quot;: 4
   }
  },
  &quot;_newText&quot;: &quot;&quot;
 },
 {
  &quot;_range&quot;: {
   &quot;_start&quot;: {
    &quot;_line&quot;: 4,
    &quot;_character&quot;: 14
   },
   &quot;_end&quot;: {
    &quot;_line&quot;: 5,
    &quot;_character&quot;: 1
   }
  },
  &quot;_newText&quot;: &quot;&quot;
 }
]"><pre class="notranslate">[
 {
  <span class="pl-ent">"_range"</span>: {
   <span class="pl-ent">"_start"</span>: {
    <span class="pl-ent">"_line"</span>: <span class="pl-c1">2</span>,
    <span class="pl-ent">"_character"</span>: <span class="pl-c1">7</span>
   },
   <span class="pl-ent">"_end"</span>: {
    <span class="pl-ent">"_line"</span>: <span class="pl-c1">4</span>,
    <span class="pl-ent">"_character"</span>: <span class="pl-c1">4</span>
   }
  },
  <span class="pl-ent">"_newText"</span>: <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>
 },
 {
  <span class="pl-ent">"_range"</span>: {
   <span class="pl-ent">"_start"</span>: {
    <span class="pl-ent">"_line"</span>: <span class="pl-c1">4</span>,
    <span class="pl-ent">"_character"</span>: <span class="pl-c1">14</span>
   },
   <span class="pl-ent">"_end"</span>: {
    <span class="pl-ent">"_line"</span>: <span class="pl-c1">5</span>,
    <span class="pl-ent">"_character"</span>: <span class="pl-c1">1</span>
   }
  },
  <span class="pl-ent">"_newText"</span>: <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>
 }
]</pre></div>
<p dir="auto">but <code class="notranslate">executeCommand("vscode.executeFormatDocumentProvider", ...)</code> receives this as:</p>
<div class="highlight highlight-source-json notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="[
 {
  &quot;text&quot;: &quot;&quot;,
  &quot;range&quot;: {
   &quot;startLineNumber&quot;: 3,
   &quot;startColumn&quot;: 8,
   &quot;endLineNumber&quot;: 5,
   &quot;endColumn&quot;: 5
  }
 },
 {
  &quot;text&quot;: &quot;&quot;,
  &quot;range&quot;: {
   &quot;startLineNumber&quot;: 5,
   &quot;startColumn&quot;: 15,
   &quot;endLineNumber&quot;: 6,
   &quot;endColumn&quot;: 2
  }
 }
]"><pre class="notranslate">[
 {
  <span class="pl-ent">"text"</span>: <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>,
  <span class="pl-ent">"range"</span>: {
   <span class="pl-ent">"startLineNumber"</span>: <span class="pl-c1">3</span>,
   <span class="pl-ent">"startColumn"</span>: <span class="pl-c1">8</span>,
   <span class="pl-ent">"endLineNumber"</span>: <span class="pl-c1">5</span>,
   <span class="pl-ent">"endColumn"</span>: <span class="pl-c1">5</span>
  }
 },
 {
  <span class="pl-ent">"text"</span>: <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>,
  <span class="pl-ent">"range"</span>: {
   <span class="pl-ent">"startLineNumber"</span>: <span class="pl-c1">5</span>,
   <span class="pl-ent">"startColumn"</span>: <span class="pl-c1">15</span>,
   <span class="pl-ent">"endLineNumber"</span>: <span class="pl-c1">6</span>,
   <span class="pl-ent">"endColumn"</span>: <span class="pl-c1">2</span>
  }
 }
]</pre></div>
<p dir="auto">The combination of completely different shape plus the 1-based numbering makes this data difficult to work with.</p>
<p dir="auto">Similarly different results are returned from others similar commands.</p>