Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
11f85a37
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
11f85a37
编写于
7月 13, 2017
作者:
D
Daniel Imms
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/master' into tyriar/terminal-find-addon
上级
b8002832
c829d4c8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
184 addition
and
10 deletion
+184
-10
src/typings/xterm.d.ts
src/typings/xterm.d.ts
+180
-6
src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts
...bench/parts/terminal/electron-browser/terminalInstance.ts
+4
-4
未找到文件。
src/typings/xterm.d.ts
浏览文件 @
11f85a37
...
...
@@ -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
src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts
浏览文件 @
11f85a37
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录