Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
Tabby
提交
61726cad
T
Tabby
项目概览
后端镜像
/
Tabby
通知
37
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Tabby
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
61726cad
编写于
2月 20, 2019
作者:
E
Eugene Pankov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
parse iTerm OSC 1337 cwd reports
上级
77c25359
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
28 addition
and
0 deletion
+28
-0
terminus-terminal/src/services/sessions.service.ts
terminus-terminal/src/services/sessions.service.ts
+27
-0
terminus-terminal/webpack.config.js
terminus-terminal/webpack.config.js
+1
-0
未找到文件。
terminus-terminal/src/services/sessions.service.ts
浏览文件 @
61726cad
import
psNode
=
require
(
'
ps-node
'
)
let
nodePTY
import
*
as
fs
from
'
mz/fs
'
import
*
as
os
from
'
os
'
import
{
Observable
,
Subject
}
from
'
rxjs
'
import
{
first
}
from
'
rxjs/operators
'
import
{
Injectable
}
from
'
@angular/core
'
...
...
@@ -27,6 +28,8 @@ export interface IChildProcess {
}
const
windowsDirectoryRegex
=
/
([
a-zA-Z
]
:
[^\:\[\]\?\"\<\>\|
]
+
)
/mi
// tslint:disable-line
const
OSC1337Prefix
=
'
\
x1b]1337;
'
const
OSC1337Suffix
=
'
\
x07
'
export
abstract
class
BaseSession
{
open
:
boolean
...
...
@@ -79,6 +82,7 @@ export class Session extends BaseSession {
private
pty
:
any
private
pauseAfterExit
=
false
private
guessedCWD
:
string
private
reportedCWD
:
string
constructor
(
private
config
:
ConfigService
)
{
super
()
...
...
@@ -90,6 +94,7 @@ export class Session extends BaseSession {
let
env
=
{
...
process
.
env
,
TERM
:
'
xterm-256color
'
,
TERMINUS
:
'
1
'
,
...
options
.
env
,
...
this
.
config
.
store
.
terminal
.
environment
||
{},
}
...
...
@@ -139,6 +144,7 @@ export class Session extends BaseSession {
this
.
open
=
true
this
.
pty
.
on
(
'
data-buffered
'
,
data
=>
{
data
=
this
.
processOSC1337
(
data
)
this
.
emitOutput
(
data
)
if
(
process
.
platform
===
'
win32
'
)
{
this
.
guessWindowsCWD
(
data
)
...
...
@@ -166,6 +172,24 @@ export class Session extends BaseSession {
this
.
pauseAfterExit
=
options
.
pauseAfterExit
}
processOSC1337
(
data
)
{
if
(
data
.
includes
(
OSC1337Prefix
))
{
let
preData
=
data
.
substring
(
0
,
data
.
indexOf
(
OSC1337Prefix
))
let
params
=
data
.
substring
(
data
.
indexOf
(
OSC1337Prefix
)
+
OSC1337Prefix
.
length
)
let
postData
=
params
.
substring
(
params
.
indexOf
(
OSC1337Suffix
)
+
OSC1337Suffix
.
length
)
params
=
params
.
substring
(
0
,
params
.
indexOf
(
OSC1337Suffix
))
if
(
params
.
startsWith
(
'
CurrentDir=
'
))
{
this
.
reportedCWD
=
params
.
split
(
'
=
'
)[
1
]
if
(
this
.
reportedCWD
.
startsWith
(
'
~
'
))
{
this
.
reportedCWD
=
os
.
homedir
+
this
.
reportedCWD
.
substring
(
1
)
}
data
=
preData
+
postData
}
}
return
data
}
resize
(
columns
,
rows
)
{
if
(
this
.
pty
.
_writable
)
{
this
.
pty
.
resize
(
columns
,
rows
)
...
...
@@ -242,6 +266,9 @@ export class Session extends BaseSession {
}
async
getWorkingDirectory
():
Promise
<
string
>
{
if
(
this
.
reportedCWD
)
{
return
this
.
reportedCWD
}
if
(
!
this
.
truePID
)
{
return
null
}
...
...
terminus-terminal/webpack.config.js
浏览文件 @
61726cad
...
...
@@ -62,6 +62,7 @@ module.exports = {
'
mz/fs
'
,
'
mz/child_process
'
,
'
node-pty
'
,
'
os
'
,
/^rxjs/
,
/^@angular/
,
/^@ng-bootstrap/
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录