blob: 657092a43427893f2deb761b281a6e00b76e3d19 [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import * as vscode from 'vscode'
import { TDMLProvider } from './TDMLProvider'
import { AppConstants } from './utilities/constants'
let outputChannel: vscode.OutputChannel
export function activate(context: vscode.ExtensionContext) {
outputChannel = vscode.window.createOutputChannel('TDML Editor')
printChannelOutput('TDML Editor extension activated.', true)
let openPreviewCommand = vscode.commands.registerCommand(
AppConstants.openPreviewCommand,
() => {
const editor = vscode.window.activeTextEditor
vscode.commands.executeCommand(
'vscode.openWith',
editor?.document?.uri,
AppConstants.viewTypeId,
{
preview: true,
viewColumn: vscode.ViewColumn.Beside,
}
)
}
)
let openInTdmlEditor = vscode.commands.registerCommand(
AppConstants.openInTdmlEditorCommand,
() => {
const editor = vscode.window.activeTextEditor
vscode.commands.executeCommand(
'vscode.openWith',
editor?.document?.uri,
AppConstants.viewTypeId,
{
preview: false,
viewColumn: vscode.ViewColumn.Active,
}
)
}
)
context.subscriptions.push(openPreviewCommand)
context.subscriptions.push(openInTdmlEditor)
context.subscriptions.push(TDMLProvider.register(context))
}
/**
* Prints the given content on the output channel.
*
* @param content The content to be printed.
* @param reveal Whether the output channel should be revealed.
*/
export const printChannelOutput = (
content: string,
verbose: boolean,
reveal = false
): void => {
// do not throw on logging, just log to console in the event of an error
try {
if (!outputChannel) {
return
}
// if it is verbose logging and verbose is not enabled, return
if (
verbose &&
!vscode.workspace.getConfiguration('tdml-editor').get('verboseLogging')
) {
return
}
const timestamp = new Date().toISOString()
outputChannel.appendLine(`[${timestamp}] ${content}`)
if (reveal) {
outputChannel.show(true)
}
} catch (e) {
console.log(e)
}
}
export function deactivate() {}