Merge pull request #21334 from GlenCFL/1.22

atom: support 1.22, fixes for AtomEnvironment, add useful methods.
This commit is contained in:
Daniel Rosenwasser
2017-11-09 00:32:24 -08:00
committed by GitHub
2 changed files with 93 additions and 18 deletions

View File

@@ -825,8 +825,12 @@ function testDock() {
subscription = dock.onDidChangeActivePane(pane => pane.activate());
subscription = dock.observeActivePane(pane => pane.activate());
subscription = dock.onDidAddPaneItem(event => event.index && event.item && event.pane);
subscription = dock.onWillDestroyPaneItem(event => event.index && event.item && event.pane);
subscription = dock.onDidDestroyPaneItem(event => event.index && event.item && event.pane);
subscription = dock.onWillDestroyPaneItem(event => {
event.index && event.item && event.pane;
});
subscription = dock.onDidDestroyPaneItem(event => {
event.index && event.item && event.pane;
});
// Pane Items
objs = dock.getPaneItems();
@@ -2987,8 +2991,9 @@ function testWorkspace() {
subscription = atom.workspace.observeActivePane(pane => pane.activate());
subscription = atom.workspace.onDidAddPaneItem(event => event.index && event.item &&
event.pane);
subscription = atom.workspace.onWillDestroyPaneItem(event => event.index &&
event.item && event.pane);
subscription = atom.workspace.onWillDestroyPaneItem(event => {
event.index && event.item && event.pane;
});
subscription = atom.workspace.onDidDestroyPaneItem(event => event.index &&
event.item && event.pane);
subscription = atom.workspace.onDidAddTextEditor(event => event.index && event.pane &&

98
types/atom/index.d.ts vendored
View File

@@ -1,4 +1,4 @@
// Type definitions for Atom 1.21
// Type definitions for Atom 1.22
// Project: https://github.com/atom/atom
// Definitions by: GlenCFL <https://github.com/GlenCFL>,
// smhxx <https://github.com/smhxx>
@@ -6,7 +6,7 @@
// TypeScript Version: 2.3
// NOTE: only those classes exported within this file should be retain that status below.
// https://github.com/atom/atom/blob/v1.21.0/exports/atom.js
// https://github.com/atom/atom/blob/v1.22.0/exports/atom.js
/// <reference types="jquery" />
/// <reference types="node" />
@@ -201,6 +201,10 @@ export interface AtomEnvironment {
/**
* A flexible way to open a dialog akin to an alert dialog.
* If the dialog is closed (via `Esc` key or `X` in the top corner) without
* selecting a button the first button will be clicked unless a "Cancel" or "No"
* button is provided.
*
* Returns the chosen button index number if the buttons option was an array.
*/
confirm(options: {
@@ -211,6 +215,10 @@ export interface AtomEnvironment {
/**
* A flexible way to open a dialog akin to an alert dialog.
* If the dialog is closed (via `Esc` key or `X` in the top corner) without
* selecting a button the first button will be clicked unless a "Cancel" or "No"
* button is provided.
*
* Returns the chosen button index number if the buttons option was an array.
*/
confirm(options: {
@@ -223,10 +231,10 @@ export interface AtomEnvironment {
// Managing the Dev Tools
/** Open the dev tools for the current window. */
openDevTools(): Promise<undefined>;
openDevTools(): Promise<null>;
/** Toggle the visibility of the dev tools for the current window. */
toggleDevTools(): Promise<undefined>;
toggleDevTools(): Promise<null>;
/** Execute code in dev tools. */
executeJavaScriptInDevTools(code: string): void;
@@ -2516,8 +2524,12 @@ export interface Workspace {
/**
* Invoke the given callback when a pane item is about to be destroyed,
* before the user is prompted to save it.
* @param callback The function to be called before pane items are destroyed.
* If this function returns a Promise, then the item will not be destroyed
* until the promise resolves.
*/
onWillDestroyPaneItem(callback: (event: PaneItemObservedEvent) => void): Disposable;
onWillDestroyPaneItem(callback: (event: PaneItemObservedEvent) => void|Promise<void>):
Disposable;
/** Invoke the given callback when a pane item is destroyed. */
onDidDestroyPaneItem(callback: (event: PaneItemObservedEvent) => void): Disposable;
@@ -2786,8 +2798,12 @@ export interface WorkspaceCenter {
/**
* Invoke the given callback when a pane item is about to be destroyed, before the user
* is prompted to save it.
* @param callback The function to be called before pane items are destroyed.
* If this function returns a Promise, then the item will not be destroyed
* until the promise resolves.
*/
onWillDestroyPaneItem(callback: (event: PaneItemObservedEvent) => void): Disposable;
onWillDestroyPaneItem(callback: (event: PaneItemObservedEvent) => void|Promise<void>):
Disposable;
/** Invoke the given callback when a pane item is destroyed. */
onDidDestroyPaneItem(callback: (event: PaneItemObservedEvent) => void): Disposable;
@@ -3299,8 +3315,12 @@ export interface Dock {
/**
* Invoke the given callback when a pane item is about to be destroyed, before the user is
* prompted to save it.
* @param callback The function to be called before pane items are destroyed.
* If this function returns a Promise, then the item will not be destroyed
* until the promise resolves.
*/
onWillDestroyPaneItem(callback: (event: PaneItemObservedEvent) => void): Disposable;
onWillDestroyPaneItem(callback: (event: PaneItemObservedEvent) => void|Promise<void>):
Disposable;
/** Invoke the given callback when a pane item is destroyed. */
onDidDestroyPaneItem(callback: (event: PaneItemObservedEvent) => void): Disposable;
@@ -3956,6 +3976,15 @@ export interface PackageManager {
/** Returns an Array of strings of all the available package metadata. */
getAvailablePackageMetadata(): string[];
/** Activate a single package by name or path. */
activatePackage(nameOrPath: string): Promise<Package>;
/** Triggers the given package activation hook. */
triggerActivationHook(hook: string): void;
/** Trigger all queued activation hooks immediately. */
triggerDeferredActivationHooks(): void;
}
/** A container for presenting content in the center of the workspace. */
@@ -4072,16 +4101,16 @@ export interface Pane {
moveItemToPane(item: object, pane: Pane, index: number): void;
/** Destroy the active item and activate the next item. */
destroyActiveItem(): void;
destroyActiveItem(): Promise<boolean>;
/** Destroy the given item. */
destroyItem(item: object, force?: boolean): Promise<boolean>;
/** Destroy all items. */
destroyItems(): void;
destroyItems(): Promise<boolean[]>;
/** Destroy all items except for the active item. */
destroyInactiveItems(): void;
destroyInactiveItems(): Promise<boolean[]>;
/** Save the active item. */
saveActiveItem<T = void>(nextAction?: (error?: Error) => T):
@@ -4158,7 +4187,6 @@ export interface Pane {
* should not create a Panel directly, instead use Workspace::addTopPanel and
* friends to add panels.
*/
// TODO: constraints once Item is defined.
export interface Panel<T = object> {
/** Whether or not the Panel is visible. */
visible: boolean;
@@ -4675,6 +4703,12 @@ export class TextBuffer {
/** The unique identifier for this buffer. */
id: string;
/** The number of retainers for the buffer. */
refcount: number;
/** Whether or not the bufffer has been destroyed. */
destroyed: boolean;
/** Create a new buffer backed by the given file path. */
static load(source: string, params?: BufferLoadOptions): Promise<TextBuffer>;
@@ -4703,6 +4737,9 @@ export class TextBuffer {
shouldDestroyOnFileDelete?(): boolean
});
/** Returns the unique identifier for this buffer. */
getId(): string;
// Event Subscription
/**
* Invoke the given callback synchronously before the content of the buffer
@@ -5093,6 +5130,33 @@ export class TextBuffer {
/** Reload the buffer's contents from disk. */
reload(): void;
/** Destroy the buffer, even if there are retainers for it. */
destroy(): void;
/** Returns whether or not this buffer is alive. */
isAlive(): boolean;
/** Returns whether or not this buffer has been destroyed. */
isDestroyed(): boolean;
/** Returns whether or not this buffer has a retainer. */
isRetained(): boolean;
/**
* Places a retainer on the buffer, preventing its destruction until the
* final retainer has called ::release().
*/
retain(): TextBuffer;
/**
* Releases a retainer on the buffer, destroying the buffer if there are
* no additional retainers.
*/
release(): TextBuffer;
/** Identifies if the buffer belongs to multiple editors. */
hasMultipleEditors(): boolean;
}
/** Handles loading and activating available themes. */
@@ -5477,7 +5541,7 @@ export interface TextEditorObservedEvent {
// information under certain contexts.
// NOTE: the config schema with these defaults can be found here:
// https://github.com/atom/atom/blob/v1.21.0/src/config-schema.js
// https://github.com/atom/atom/blob/v1.22.0/src/config-schema.js
/**
* Allows you to strongly type Atom configuration variables. Additional key:value
* pairings merged into this interface will result in configuration values under
@@ -5641,6 +5705,12 @@ export interface ConfigValues {
*/
"editor.preferredLineLength": number;
/**
* Defines the maximum width of the editor window before soft wrapping is enforced,
* in number of characters.
*/
"editor.maxScreenLineLength": number;
/** Number of spaces used to represent a tab. */
"editor.tabLength": number;
@@ -6483,8 +6553,8 @@ export interface WindowLoadSettings {
appVersion: string;
atomHome: string;
devMode: boolean;
env: { [key: string]: string|undefined };
profileStartup: boolean;
resourcePath: string;
safeMode: boolean;
env?: { [key: string]: string|undefined };
profileStartup?: boolean;
}