简体   繁体   中英

VScode API why can't I get the current line?

I am using typescript to write a vs code extension and for some reason I am unable to get the current line.

The function I am trying to make is:

function makeFrame()
{
    vscode.window.activeTextEditor.selection.active.line;
}

Which fails with error: Object is possibly undefined The import statement is:

import {window, commands, Disposable, ExtensionContext, StatusBarAlignment, StatusBarItem, TextDocument} from 'vscode';

What am I doing wrong?

(I am both new to TypeScript and writing extensions for VS code)

activeTextEditor may be undefined . This indicates that there is no active editor and will happen for example when you first open a new workspace or when you close all editors

To fix, just add a quick check:

function makeFrame()
{
    const activeEditor = vscode.window.activeTextEditor;
    if (activeEditor) {
        activeEditor.selection.active.line;
    }
}

Object is possibly undefined

Because there may or may not be an activeEditor .

You can do an explicit check:

function makeFrame() {
    const activeEditor = vscode.window.activeTextEditor;
    if (activeEditor != null) {
        activeEditor.selection.active.line;
    }
}

Or an assertion if you are sure:

function makeFrame()
{
    vscode.window.activeTextEditor!.selection.active.line;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM