@@ -2,8 +2,12 @@ import * as vscode from 'vscode'
22import { LSPClient } from '../lsp/lsp'
33import { isErr } from '@bus/result'
44import { RenderModelEntry } from '../lsp/custom'
5+ import { RenderedModelProvider } from '../providers/renderedModelProvider'
56
6- export function renderModel ( lspClient ?: LSPClient ) {
7+ export function renderModel (
8+ lspClient ?: LSPClient ,
9+ renderedModelProvider ?: RenderedModelProvider ,
10+ ) {
711 return async ( ) => {
812 // Get the current active editor
913 const activeEditor = vscode . window . activeTextEditor
@@ -62,11 +66,19 @@ export function renderModel(lspClient?: LSPClient) {
6266 selectedModel = result . value . models [ 0 ]
6367 }
6468
65- // Create a new untitled document with the rendered SQL
66- const document = await vscode . workspace . openTextDocument ( {
67- language : 'sql' ,
68- content : selectedModel . rendered_query ,
69- } )
69+ if ( ! renderedModelProvider ) {
70+ vscode . window . showErrorMessage ( 'Rendered model provider not available' )
71+ return
72+ }
73+
74+ // Store the rendered content and get a virtual URI
75+ const uri = renderedModelProvider . storeRenderedModel (
76+ selectedModel . name ,
77+ selectedModel . rendered_query ,
78+ )
79+
80+ // Open the virtual document
81+ const document = await vscode . workspace . openTextDocument ( uri )
7082
7183 // Determine the view column for side-by-side display
7284 let viewColumn : vscode . ViewColumn
@@ -86,5 +98,8 @@ export function renderModel(lspClient?: LSPClient) {
8698 preview : true ,
8799 preserveFocus : false ,
88100 } )
101+
102+ // Explicitly set the language mode to SQL for syntax highlighting
103+ await vscode . languages . setTextDocumentLanguage ( document , 'sql' )
89104 }
90105}
0 commit comments