Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
9cd81dcb
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9cd81dcb
编写于
5月 24, 2019
作者:
P
Peng Lyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Always compare change with context.
上级
bbeeefd7
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
40 addition
and
76 deletion
+40
-76
extensions/merge-conflict/package.json
extensions/merge-conflict/package.json
+0
-11
extensions/merge-conflict/package.nls.json
extensions/merge-conflict/package.nls.json
+0
-2
extensions/merge-conflict/src/codelensProvider.ts
extensions/merge-conflict/src/codelensProvider.ts
+1
-7
extensions/merge-conflict/src/commandHandler.ts
extensions/merge-conflict/src/commandHandler.ts
+22
-27
extensions/merge-conflict/src/contentProvider.ts
extensions/merge-conflict/src/contentProvider.ts
+17
-29
未找到文件。
extensions/merge-conflict/package.json
浏览文件 @
9cd81dcb
...
...
@@ -81,12 +81,6 @@
"title"
:
"%command.compare%"
,
"original"
:
"Compare Current Conflict"
,
"command"
:
"merge-conflict.compare"
},
{
"category"
:
"%command.category%"
,
"title"
:
"%command.compareAll%"
,
"original"
:
"Compare All Conflict in Current Editor"
,
"command"
:
"merge-conflict.compareAll"
}
],
"menus"
:
{
...
...
@@ -121,11 +115,6 @@
"description"
:
"%config.autoNavigateNextConflictEnabled%"
,
"default"
:
false
},
"merge-conflict.diffViewContext"
:
{
"type"
:
"number"
,
"description"
:
"%config.diffViewContext%"
,
"default"
:
0
},
"merge-conflict.openDiffInNewEditor"
:
{
"type"
:
"boolean"
,
"description"
:
"%config.openDiffInNewEditor%"
,
...
...
extensions/merge-conflict/package.nls.json
浏览文件 @
9cd81dcb
...
...
@@ -12,11 +12,9 @@
"command.next"
:
"Next Conflict"
,
"command.previous"
:
"Previous Conflict"
,
"command.compare"
:
"Compare Current Conflict"
,
"command.compareAll"
:
"Compare All Conflict in Current Editor"
,
"config.title"
:
"Merge Conflict"
,
"config.autoNavigateNextConflictEnabled"
:
"Whether to automatically navigate to the next merge conflict after resolving a merge conflict."
,
"config.codeLensEnabled"
:
"Create a Code Lens for merge conflict blocks within editor."
,
"config.decoratorsEnabled"
:
"Create decorators for merge conflict blocks within editor."
,
"config.diffViewContext"
:
"Controls how many unchanged lines around the merge conflict should be displayed in the diff view."
,
"config.openDiffInNewEditor"
:
"Controls if the diff view should be opened in a new editor group when comparing changes in merge conflicts."
}
\ No newline at end of file
extensions/merge-conflict/src/codelensProvider.ts
浏览文件 @
9cd81dcb
...
...
@@ -85,17 +85,11 @@ export default class MergeConflictCodeLensProvider implements vscode.CodeLensPro
arguments
:
[
conflict
]
};
let
diffAllCommand
:
vscode
.
Command
=
{
command
:
'
merge-conflict.compareAll
'
,
title
:
localize
(
'
compareAllChanges
'
,
'
Compare All Changes
'
)
};
items
.
push
(
new
vscode
.
CodeLens
(
conflict
.
range
,
acceptCurrentCommand
),
new
vscode
.
CodeLens
(
conflict
.
range
.
with
(
conflict
.
range
.
start
.
with
({
character
:
conflict
.
range
.
start
.
character
+
1
})),
acceptIncomingCommand
),
new
vscode
.
CodeLens
(
conflict
.
range
.
with
(
conflict
.
range
.
start
.
with
({
character
:
conflict
.
range
.
start
.
character
+
2
})),
acceptBothCommand
),
new
vscode
.
CodeLens
(
conflict
.
range
.
with
(
conflict
.
range
.
start
.
with
({
character
:
conflict
.
range
.
start
.
character
+
3
})),
diffCommand
),
new
vscode
.
CodeLens
(
conflict
.
range
.
with
(
conflict
.
range
.
start
.
with
({
character
:
conflict
.
range
.
start
.
character
+
4
})),
diffAllCommand
)
new
vscode
.
CodeLens
(
conflict
.
range
.
with
(
conflict
.
range
.
start
.
with
({
character
:
conflict
.
range
.
start
.
character
+
3
})),
diffCommand
)
);
});
...
...
extensions/merge-conflict/src/commandHandler.ts
浏览文件 @
9cd81dcb
...
...
@@ -39,8 +39,7 @@ export default class CommandHandler implements vscode.Disposable {
this
.
registerTextEditorCommand
(
'
merge-conflict.accept.all-both
'
,
this
.
acceptAllBoth
),
this
.
registerTextEditorCommand
(
'
merge-conflict.next
'
,
this
.
navigateNext
),
this
.
registerTextEditorCommand
(
'
merge-conflict.previous
'
,
this
.
navigatePrevious
),
this
.
registerTextEditorCommand
(
'
merge-conflict.compare
'
,
this
.
compare
),
this
.
registerTextEditorCommand
(
'
merge-conflict.compareAll
'
,
this
.
compareAll
)
this
.
registerTextEditorCommand
(
'
merge-conflict.compare
'
,
this
.
compare
)
);
}
...
...
@@ -89,27 +88,6 @@ export default class CommandHandler implements vscode.Disposable {
}
}
const
scheme
=
editor
.
document
.
uri
.
scheme
;
let
range
=
conflict
.
current
.
content
;
const
leftUri
=
editor
.
document
.
uri
.
with
({
scheme
:
ContentProvider
.
scheme
,
query
:
JSON
.
stringify
({
scheme
,
range
,
fullRange
:
conflict
.
range
})
});
range
=
conflict
.
incoming
.
content
;
const
rightUri
=
leftUri
.
with
({
query
:
JSON
.
stringify
({
scheme
,
range
,
fullRange
:
conflict
.
range
})
});
const
title
=
localize
(
'
compareChangesTitle
'
,
'
{0}: Current Changes ⟷ Incoming Changes
'
,
fileName
);
const
mergeConflictConfig
=
vscode
.
workspace
.
getConfiguration
(
'
merge-conflict
'
);
const
openToTheside
=
mergeConflictConfig
.
get
<
boolean
>
(
'
openDiffInNewEditor
'
);
const
opts
:
vscode
.
TextDocumentShowOptions
=
{
viewColumn
:
openToTheside
?
vscode
.
ViewColumn
.
Beside
:
vscode
.
ViewColumn
.
Active
};
vscode
.
commands
.
executeCommand
(
'
vscode.diff
'
,
leftUri
,
rightUri
,
title
,
opts
);
}
async
compareAll
(
editor
:
vscode
.
TextEditor
)
{
const
fileName
=
path
.
basename
(
editor
.
document
.
uri
.
fsPath
);
const
conflicts
=
await
this
.
tracker
.
getConflicts
(
editor
.
document
);
// Still failed to find conflict, warn the user and exit
...
...
@@ -119,21 +97,38 @@ export default class CommandHandler implements vscode.Disposable {
}
const
scheme
=
editor
.
document
.
uri
.
scheme
;
let
range
=
conflict
.
current
.
content
;
let
leftRanges
=
conflicts
.
map
(
conflict
=>
[
conflict
.
current
.
content
,
conflict
.
range
]);
let
rightRanges
=
conflicts
.
map
(
conflict
=>
[
conflict
.
incoming
.
content
,
conflict
.
range
]);
const
leftUri
=
editor
.
document
.
uri
.
with
({
scheme
:
ContentProvider
.
scheme
,
query
:
JSON
.
stringify
({
type
:
'
full
'
,
schem
e
,
ranges
:
leftRanges
})
query
:
JSON
.
stringify
({
scheme
,
range
:
rang
e
,
ranges
:
leftRanges
})
});
const
rightUri
=
leftUri
.
with
({
query
:
JSON
.
stringify
({
type
:
'
full
'
,
scheme
,
ranges
:
rightRanges
})
});
range
=
conflict
.
incoming
.
content
;
const
rightUri
=
leftUri
.
with
({
query
:
JSON
.
stringify
({
scheme
,
ranges
:
rightRanges
})
});
let
mergeConflictLineOffsets
=
0
;
for
(
let
nextconflict
of
conflicts
)
{
if
(
nextconflict
.
range
.
isEqual
(
conflict
.
range
))
{
break
;
}
else
{
mergeConflictLineOffsets
+=
(
nextconflict
.
range
.
end
.
line
-
nextconflict
.
range
.
start
.
line
)
-
(
nextconflict
.
incoming
.
content
.
end
.
line
-
nextconflict
.
incoming
.
content
.
start
.
line
);
}
}
const
selection
=
new
vscode
.
Range
(
conflict
.
range
.
start
.
line
-
mergeConflictLineOffsets
,
conflict
.
range
.
start
.
character
,
conflict
.
range
.
start
.
line
-
mergeConflictLineOffsets
,
conflict
.
range
.
start
.
character
);
const
title
=
localize
(
'
compareChangesTitle
'
,
'
{0}: Current Changes ⟷ Incoming Changes
'
,
fileName
);
const
mergeConflictConfig
=
vscode
.
workspace
.
getConfiguration
(
'
merge-conflict
'
);
const
openToThe
s
ide
=
mergeConflictConfig
.
get
<
boolean
>
(
'
openDiffInNewEditor
'
);
const
openToThe
S
ide
=
mergeConflictConfig
.
get
<
boolean
>
(
'
openDiffInNewEditor
'
);
const
opts
:
vscode
.
TextDocumentShowOptions
=
{
viewColumn
:
openToTheside
?
vscode
.
ViewColumn
.
Beside
:
vscode
.
ViewColumn
.
Active
viewColumn
:
openToTheSide
?
vscode
.
ViewColumn
.
Beside
:
vscode
.
ViewColumn
.
Active
,
selection
};
vscode
.
commands
.
executeCommand
(
'
vscode.diff
'
,
leftUri
,
rightUri
,
title
,
opts
);
...
...
extensions/merge-conflict/src/contentProvider.ts
浏览文件 @
9cd81dcb
...
...
@@ -23,40 +23,28 @@ export default class MergeConflictContentProvider implements vscode.TextDocument
async
provideTextDocumentContent
(
uri
:
vscode
.
Uri
):
Promise
<
string
|
null
>
{
try
{
const
{
type
,
scheme
,
range
,
fullRange
,
ranges
}
=
JSON
.
parse
(
uri
.
query
)
as
{
type
:
string
,
scheme
:
string
;
range
:
{
line
:
number
,
character
:
number
}[],
fullRange
:
{
line
:
number
,
character
:
number
}[]
,
ranges
:
[{
line
:
number
,
character
:
number
}[],
{
line
:
number
,
character
:
number
}[]][]
};
const
{
scheme
,
ranges
}
=
JSON
.
parse
(
uri
.
query
)
as
{
scheme
:
string
,
ranges
:
[{
line
:
number
,
character
:
number
}[],
{
line
:
number
,
character
:
number
}[]][]
};
if
(
type
===
'
full
'
)
{
// complete diff
const
document
=
await
vscode
.
workspace
.
openTextDocument
(
uri
.
with
({
scheme
,
query
:
''
}));
// complete diff
const
document
=
await
vscode
.
workspace
.
openTextDocument
(
uri
.
with
({
scheme
,
query
:
''
}));
let
text
=
''
;
let
lastPosition
=
new
vscode
.
Position
(
0
,
0
);
ranges
.
forEach
(
rangeObj
=>
{
let
[
range
,
fullRange
]
=
rangeObj
;
const
[
start
,
end
]
=
range
;
const
[
fullStart
,
fullEnd
]
=
fullRange
;
let
text
=
''
;
let
lastPosition
=
new
vscode
.
Position
(
0
,
0
);
text
+=
document
.
getText
(
new
vscode
.
Range
(
lastPosition
.
line
,
lastPosition
.
character
,
fullStart
.
line
,
fullStart
.
character
));
text
+=
document
.
getText
(
new
vscode
.
Range
(
start
.
line
,
start
.
character
,
end
.
line
,
end
.
character
))
;
lastPosition
=
new
vscode
.
Position
(
fullEnd
.
line
,
fullEnd
.
character
)
;
})
;
ranges
.
forEach
(
rangeObj
=>
{
let
[
conflictRange
,
fullRange
]
=
rangeObj
;
const
[
start
,
end
]
=
conflictRange
;
const
[
fullStart
,
fullEnd
]
=
fullRange
;
let
documentEnd
=
document
.
lineAt
(
document
.
lineCount
-
1
).
range
.
end
;
text
+=
document
.
getText
(
new
vscode
.
Range
(
lastPosition
.
line
,
lastPosition
.
character
,
documentEnd
.
line
,
documentEnd
.
character
));
text
+=
document
.
getText
(
new
vscode
.
Range
(
lastPosition
.
line
,
lastPosition
.
character
,
fullStart
.
line
,
fullStart
.
character
));
text
+=
document
.
getText
(
new
vscode
.
Range
(
start
.
line
,
start
.
character
,
end
.
line
,
end
.
character
));
lastPosition
=
new
vscode
.
Position
(
fullEnd
.
line
,
fullEnd
.
character
);
});
return
text
;
}
else
{
const
[
start
,
end
]
=
range
;
const
[
fullStart
,
fullEnd
]
=
fullRange
;
const
mergeConflictConfig
=
vscode
.
workspace
.
getConfiguration
(
'
merge-conflict
'
);
const
context
=
Math
.
max
(
0
,
mergeConflictConfig
.
get
<
number
>
(
'
diffViewContext
'
)
||
0
);
const
document
=
await
vscode
.
workspace
.
openTextDocument
(
uri
.
with
({
scheme
,
query
:
''
}));
const
text
=
document
.
getText
(
new
vscode
.
Range
(
Math
.
max
(
0
,
fullStart
.
line
-
context
),
0
,
fullStart
.
line
,
fullStart
.
character
))
+
document
.
getText
(
new
vscode
.
Range
(
start
.
line
,
start
.
character
,
end
.
line
,
end
.
character
))
+
document
.
getText
(
new
vscode
.
Range
(
fullEnd
.
line
,
fullEnd
.
character
,
Math
.
min
(
document
.
lineCount
,
fullEnd
.
line
+
context
+
1
),
0
));
return
text
;
}
let
documentEnd
=
document
.
lineAt
(
document
.
lineCount
-
1
).
range
.
end
;
text
+=
document
.
getText
(
new
vscode
.
Range
(
lastPosition
.
line
,
lastPosition
.
character
,
documentEnd
.
line
,
documentEnd
.
character
));
return
text
;
}
catch
(
ex
)
{
await
vscode
.
window
.
showErrorMessage
(
'
Unable to show comparison
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录