Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
7a1f2e07
V
Vscode
项目概览
徽霖
/
Vscode
通知
9
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,发现更多精彩内容 >>
提交
7a1f2e07
编写于
4月 11, 2019
作者:
M
Martin Aeschlimann
提交者:
Alex Dima
4月 11, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
.vcode-workspace: remove remoteAuthority if no longer needed
上级
7a079921
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
34 addition
and
6 deletion
+34
-6
src/vs/base/common/jsonEdit.ts
src/vs/base/common/jsonEdit.ts
+22
-0
src/vs/platform/workspaces/common/workspaces.ts
src/vs/platform/workspaces/common/workspaces.ts
+12
-6
未找到文件。
src/vs/base/common/jsonEdit.ts
浏览文件 @
7a1f2e07
...
...
@@ -5,6 +5,7 @@
import
{
ParseError
,
Node
,
JSONPath
,
Segment
,
parseTree
,
findNodeAtLocation
}
from
'
./json
'
;
import
{
Edit
,
format
,
isEOL
,
FormattingOptions
}
from
'
./jsonFormatter
'
;
import
{
mergeSort
}
from
'
vs/base/common/arrays
'
;
export
function
removeProperty
(
text
:
string
,
path
:
JSONPath
,
formattingOptions
:
FormattingOptions
):
Edit
[]
{
...
...
@@ -158,6 +159,27 @@ export function applyEdit(text: string, edit: Edit): string {
return
text
.
substring
(
0
,
edit
.
offset
)
+
edit
.
content
+
text
.
substring
(
edit
.
offset
+
edit
.
length
);
}
export
function
applyEdits
(
text
:
string
,
edits
:
Edit
[]):
string
{
let
sortedEdits
=
mergeSort
(
edits
,
(
a
,
b
)
=>
{
const
diff
=
a
.
offset
-
b
.
offset
;
if
(
diff
===
0
)
{
return
a
.
length
-
b
.
length
;
}
return
diff
;
});
let
lastModifiedOffset
=
text
.
length
;
for
(
let
i
=
sortedEdits
.
length
-
1
;
i
>=
0
;
i
--
)
{
let
e
=
sortedEdits
[
i
];
if
(
e
.
offset
+
e
.
length
<=
lastModifiedOffset
)
{
text
=
applyEdit
(
text
,
e
);
}
else
{
throw
new
Error
(
'
Overlapping edit
'
);
}
lastModifiedOffset
=
e
.
offset
;
}
return
text
;
}
export
function
isWS
(
text
:
string
,
offset
:
number
)
{
return
'
\r\n
\t
'
.
indexOf
(
text
.
charAt
(
offset
))
!==
-
1
;
}
\ No newline at end of file
src/vs/platform/workspaces/common/workspaces.ts
浏览文件 @
7a1f2e07
...
...
@@ -16,6 +16,8 @@ import * as json from 'vs/base/common/json';
import
{
Schemas
}
from
'
vs/base/common/network
'
;
import
{
normalizeDriveLetter
}
from
'
vs/base/common/labels
'
;
import
{
toSlashes
}
from
'
vs/base/common/extpath
'
;
import
{
FormattingOptions
}
from
'
vs/base/common/jsonFormatter
'
;
import
{
getRemoteAuthority
}
from
'
vs/platform/remote/common/remoteHosts
'
;
export
const
IWorkspacesMainService
=
createDecorator
<
IWorkspacesMainService
>
(
'
workspacesMainService
'
);
export
const
IWorkspacesService
=
createDecorator
<
IWorkspacesService
>
(
'
workspacesService
'
);
...
...
@@ -75,6 +77,7 @@ export interface IResolvedWorkspace extends IWorkspaceIdentifier {
export
interface
IStoredWorkspace
{
folders
:
IStoredWorkspaceFolder
[];
remoteAuthority
?:
string
;
}
export
interface
IWorkspaceSavedEvent
{
...
...
@@ -232,12 +235,15 @@ export function rewriteWorkspaceFileForNewLocation(rawWorkspaceContents: string,
// Preserve as much of the existing workspace as possible by using jsonEdit
// and only changing the folders portion.
let
newRawWorkspaceContents
=
rawWorkspaceContents
;
const
edits
=
jsonEdit
.
setProperty
(
rawWorkspaceContents
,
[
'
folders
'
],
rewrittenFolders
,
{
insertSpaces
:
false
,
tabSize
:
4
,
eol
:
(
isLinux
||
isMacintosh
)
?
'
\n
'
:
'
\r\n
'
});
edits
.
forEach
(
edit
=>
{
newRawWorkspaceContents
=
jsonEdit
.
applyEdit
(
rawWorkspaceContents
,
edit
);
});
return
newRawWorkspaceContents
;
const
formattingOptions
:
FormattingOptions
=
{
insertSpaces
:
false
,
tabSize
:
4
,
eol
:
(
isLinux
||
isMacintosh
)
?
'
\n
'
:
'
\r\n
'
};
const
edits
=
jsonEdit
.
setProperty
(
rawWorkspaceContents
,
[
'
folders
'
],
rewrittenFolders
,
formattingOptions
);
let
newContent
=
jsonEdit
.
applyEdits
(
rawWorkspaceContents
,
edits
);
if
(
storedWorkspace
.
remoteAuthority
===
getRemoteAuthority
(
targetConfigPathURI
))
{
// unsaved remote workspaces have the remoteAuthority set. Remove it when no longer nexessary.
newContent
=
jsonEdit
.
applyEdits
(
newContent
,
jsonEdit
.
removeProperty
(
newContent
,
[
'
remoteAuthority
'
],
formattingOptions
));
}
return
newContent
;
}
function
doParseStoredWorkspace
(
path
:
URI
,
contents
:
string
):
IStoredWorkspace
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录