All files / src extension.ts

91.66% Statements 11/12
100% Branches 4/4
87.5% Functions 7/8
90.9% Lines 10/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68            10x   10x 6x 6x   5x               10x                                                         3x     1x     1x     1x                  
import * as vscode from 'vscode';
import { PreviewCodeLensProvider } from './codeLensProvider';
import { VibeCustomTextEditorProvider } from './customTextEditorProvider';
import { CUSTOM_EDITOR_VIEW_TYPES, getCustomEditorViewType } from './editorTypes';
 
export function activate(context: vscode.ExtensionContext) {
  const provider = new VibeCustomTextEditorProvider(context);
 
  const openWithVibeEditor = (uri: vscode.Uri | undefined, column: vscode.ViewColumn) => {
    const targetUri = uri ?? vscode.window.activeTextEditor?.document.uri;
    if (!targetUri) return;
 
    return vscode.commands.executeCommand(
      'vscode.openWith',
      targetUri,
      getCustomEditorViewType(targetUri.fsPath),
      { viewColumn: column }
    );
  };
 
  context.subscriptions.push(
    vscode.window.registerCustomEditorProvider(
      CUSTOM_EDITOR_VIEW_TYPES.markdown,
      provider,
      { webviewOptions: { retainContextWhenHidden: true }, supportsMultipleEditorsPerDocument: true }
    ),
    vscode.window.registerCustomEditorProvider(
      CUSTOM_EDITOR_VIEW_TYPES.csv,
      provider,
      { webviewOptions: { retainContextWhenHidden: true }, supportsMultipleEditorsPerDocument: true }
    ),
    vscode.window.registerCustomEditorProvider(
      CUSTOM_EDITOR_VIEW_TYPES.excalidraw,
      provider,
      { webviewOptions: { retainContextWhenHidden: true }, supportsMultipleEditorsPerDocument: true }
    ),
    vscode.languages.registerCodeLensProvider(
      { language: 'markdown' },
      new PreviewCodeLensProvider('markdown')
    ),
    vscode.languages.registerCodeLensProvider(
      { pattern: '**/*.excalidraw' },
      new PreviewCodeLensProvider('excalidraw')
    ),
    vscode.languages.registerCodeLensProvider(
      { pattern: '**/*.csv' },
      new PreviewCodeLensProvider('csv')
    ),
    vscode.commands.registerCommand('vibeDocuments.showPreview', (uri?: vscode.Uri) => {
      return openWithVibeEditor(uri, vscode.ViewColumn.Active);
    }),
    vscode.commands.registerCommand('vibeDocuments.showPreviewToSide', (uri?: vscode.Uri) => {
      return openWithVibeEditor(uri, vscode.ViewColumn.Beside);
    }),
    vscode.commands.registerCommand('vibeDocuments.showExcalidrawPreview', (uri?: vscode.Uri) => {
      return openWithVibeEditor(uri, vscode.ViewColumn.Active);
    }),
    vscode.commands.registerCommand('vibeDocuments.showCsvPreview', (uri?: vscode.Uri) => {
      return openWithVibeEditor(uri, vscode.ViewColumn.Active);
    }),
    vscode.commands.registerCommand('vibeDocuments.toggleMode', () => {
      provider.toggleMode();
    })
  );
}
 
export function deactivate() {}