提交 11f85a37 编写于 作者: D Daniel Imms

Merge remote-tracking branch 'origin/master' into tyriar/terminal-find-addon

......@@ -4,14 +4,188 @@
*--------------------------------------------------------------------------------------------*/
declare module 'xterm' {
function init(options?: any): TermJsTerminal;
type LinkMatcherHandler = (event: MouseEvent, uri: string) => boolean | void;
// There seems to be no way to export this so it can be referenced outside of this file when a
// module is a function.
interface TermJsTerminal {
on(event: string, callback: (data: any) => void): void;
class Terminal {
cols: number;
rows: number;
ydisp: number;
element: HTMLElement;
textarea: HTMLTextAreaElement;
/**
* Creates a new `Terminal` object.
*
* @param {object} options An object containing a set of options.
*/
constructor(options?: any);
/**
* Registers an event listener.
* @param eventName The name of the event.
* @param callback The callback.
*/
on(eventName: string, callback: (data: any) => void): void;
/**
* Resizes the terminal.
*
* @param x The number of columns to resize to.
* @param y The number of rows to resize to.
*/
resize(columns: number, rows: number): void;
/**
* Emits an event.
* @param eventName The name of the event.
* @param data The data attached to the event.
*/
emit(eventName: string, data: any): void;
/**
* Writes text to the terminal, followed by a break line character (\n).
* @param data The text to write to the terminal.
*/
writeln(data: string): void;
/**
* Opens the terminal within an element.
* @param parent The element to create the terminal within.
* @param focus Focus the terminal, after it gets instantiated in the
* DOM.
*/
open(parent: HTMLElement, focus: boolean): void;
/**
* Attaches a custom key event handler which is run before keys are
* processed, giving consumers of xterm.js ultimate control as to what
* keys should be processed by the terminal and what keys should not.
* @param customKeyEventHandler The custom KeyboardEvent handler to
* attach. This is a function that takes a KeyboardEvent, allowing
* consumers to stop propogation and/or prevent the default action. The
* function returns whether the event should be processed by xterm.js.
*/
attachCustomKeyEventHandler(customKeyEventHandler: (...any) => boolean);
/**
* Retrieves an option's value from the terminal.
* @param key The option key.
*/
getOption(key: string): any;
/**
* Registers a link matcher, allowing custom link patterns to be matched and
* handled.
* @param {RegExp} regex The regular expression to search for, specifically
* this searches the textContent of the rows. You will want to use \s to match
* a space ' ' character for example.
* @param {LinkMatcherHandler} handler The callback when the link is called.
* @param {LinkMatcherOptions} [options] Options for the link matcher.
* @return {number} The ID of the new matcher, this can be used to deregister.
*/
registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler , options?: any);
/**
* Deregisters a link matcher if it has been registered.
* @param matcherId The link matcher's ID (returned after register)
*/
deregisterLinkMatcher(matcherId: number): void;
/**
* Gets whether the terminal has an active selection.
*/
hasSelection(): boolean;
/**
* Gets the terminal's current selection, this is useful for implementing copy
* behavior outside of xterm.js.
*/
getSelection(): string;
/**
* Clears the current terminal selection.
*/
clearSelection(): void;
/**
* Selects all text within the terminal.
*/
selectAll(): void;
/**
* Focus the terminal. Delegates focus handling to the terminal's DOM element.
*/
focus(): void;
/**
* Find the next instance of the term, then scroll to and select it. If it
* doesn't exist, do nothing.
* @param term Tne search term.
* @return Whether a result was found.
*/
findNext(term: string): boolean;
/**
* Find the previous instance of the term, then scroll to and select it. If it
* doesn't exist, do nothing.
* @param term Tne search term.
* @return Whether a result was found.
*/
findPrevious(term: string): boolean;
/**
* Destroys the terminal.
*/
destroy(): void;
/**
* Scroll the display of the terminal
* @param disp The number of lines to scroll down (negatives scroll up).
*/
scrollDisp(disp: number): void;
/**
* Scroll the display of the terminal by a number of pages.
* @param {number} pageCount The number of pages to scroll (negative scrolls up).
*/
scrollPages(pageCount: number): void;
/**
* Scrolls the display of the terminal to the top.
*/
scrollToTop(): void;
/**
* Scrolls the display of the terminal to the bottom.
*/
scrollToBottom(): void;
/**
* Clears the entire buffer, making the prompt line the new first line.
*/
clear(): void;
/**
* Writes text to the terminal.
* @param data The text to write to the terminal.
*/
write(data: string): void;
/**
* Sets an option on the terminal.
* @param key The option key.
* @param value The option value.
*/
setOption(key: string, value: any): void;
/**
* Tells the renderer to refresh terminal content between two rows (inclusive) at the next
* opportunity.
* @param start The row to start from (between 0 and this.rows - 1).
* @param end The row to end at (between start and this.rows - 1).
*/
refresh(start: number, end: number): void;
}
export = init;
export = Terminal;
}
\ No newline at end of file
......@@ -12,7 +12,7 @@ import * as platform from 'vs/base/common/platform';
import * as dom from 'vs/base/browser/dom';
import Event, { Emitter } from 'vs/base/common/event';
import Uri from 'vs/base/common/uri';
import xterm = require('xterm');
import Terminal = require('xterm');
import { Dimension } from 'vs/base/browser/builder';
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
......@@ -76,7 +76,7 @@ export class TerminalInstance implements ITerminalInstance {
private _instanceDisposables: lifecycle.IDisposable[];
private _processDisposables: lifecycle.IDisposable[];
private _wrapperElement: HTMLDivElement;
private _xterm: any;
private _xterm: Terminal;
private _xtermElement: HTMLDivElement;
private _terminalHasTextContextKey: IContextKey<boolean>;
private _cols: number;
......@@ -209,7 +209,7 @@ export class TerminalInstance implements ITerminalInstance {
* Create xterm.js instance and attach data listeners.
*/
protected _createXterm(): void {
this._xterm = xterm({
this._xterm = new Terminal({
scrollback: this._configHelper.config.scrollback
});
if (this._shellLaunchConfig.initialText) {
......@@ -279,7 +279,7 @@ export class TerminalInstance implements ITerminalInstance {
setTimeout(() => this._refreshSelectionContextKey(), 0);
}));
const xtermHelper: HTMLElement = this._xterm.element.querySelector('.xterm-helpers');
const xtermHelper: HTMLElement = <HTMLElement>this._xterm.element.querySelector('.xterm-helpers');
const focusTrap: HTMLElement = document.createElement('div');
focusTrap.setAttribute('tabindex', '0');
dom.addClass(focusTrap, 'focus-trap');
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册