Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
6d04391f
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,发现更多精彩内容 >>
提交
6d04391f
编写于
4月 27, 2018
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixes #34855: Add syntax highlighting for deleted lines in inline diff editor
上级
ea68cdf3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
40 deletion
+19
-40
src/vs/editor/browser/widget/diffEditorWidget.ts
src/vs/editor/browser/widget/diffEditorWidget.ts
+19
-40
未找到文件。
src/vs/editor/browser/widget/diffEditorWidget.ts
浏览文件 @
6d04391f
...
...
@@ -23,13 +23,11 @@ import { LineDecoration } from 'vs/editor/common/viewLayout/lineDecorations';
import
{
renderViewLine
,
RenderLineInput
}
from
'
vs/editor/common/viewLayout/viewLineRenderer
'
;
import
*
as
editorBrowser
from
'
vs/editor/browser/editorBrowser
'
;
import
{
CodeEditor
}
from
'
vs/editor/browser/codeEditor
'
;
import
{
LineTokens
}
from
'
vs/editor/common/core/lineTokens
'
;
import
{
Configuration
}
from
'
vs/editor/browser/config/configuration
'
;
import
{
Position
,
IPosition
}
from
'
vs/editor/common/core/position
'
;
import
{
Selection
,
ISelection
}
from
'
vs/editor/common/core/selection
'
;
import
{
InlineDecoration
,
InlineDecorationType
,
ViewLineRenderingData
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
ServiceCollection
}
from
'
vs/platform/instantiation/common/serviceCollection
'
;
import
{
ColorId
,
MetadataConsts
,
FontStyle
}
from
'
vs/editor/common/modes
'
;
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
*
as
editorOptions
from
'
vs/editor/common/config/editorOptions
'
;
import
{
registerThemingParticipant
,
IThemeService
,
ITheme
,
getThemeTypeSelector
}
from
'
vs/platform/theme/common/themeService
'
;
...
...
@@ -1175,7 +1173,7 @@ interface IDataSource {
getModifiedEditor
():
editorBrowser
.
ICodeEditor
;
}
class
DiffEditorWidgetStyle
extends
Disposable
{
abstract
class
DiffEditorWidgetStyle
extends
Disposable
{
_dataSource
:
IDataSource
;
_insertColor
:
Color
;
...
...
@@ -1223,17 +1221,9 @@ class DiffEditorWidgetStyle extends Disposable {
};
}
_getViewZones
(
lineChanges
:
editorCommon
.
ILineChange
[],
originalForeignVZ
:
IEditorWhitespace
[],
modifiedForeignVZ
:
IEditorWhitespace
[],
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
,
renderIndicators
:
boolean
):
IEditorsZones
{
return
null
;
}
_getOriginalEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
return
null
;
}
_getModifiedEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
return
null
;
}
protected
abstract
_getViewZones
(
lineChanges
:
editorCommon
.
ILineChange
[],
originalForeignVZ
:
IEditorWhitespace
[],
modifiedForeignVZ
:
IEditorWhitespace
[],
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
,
renderIndicators
:
boolean
):
IEditorsZones
;
protected
abstract
_getOriginalEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
;
protected
abstract
_getModifiedEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
;
}
interface
IMyViewZone
extends
editorBrowser
.
IViewZone
{
...
...
@@ -1617,12 +1607,12 @@ class DiffEdtorWidgetSideBySide extends DiffEditorWidgetStyle implements IDiffEd
return
this
.
_dataSource
.
getHeight
();
}
_getViewZones
(
lineChanges
:
editorCommon
.
ILineChange
[],
originalForeignVZ
:
IEditorWhitespace
[],
modifiedForeignVZ
:
IEditorWhitespace
[],
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorsZones
{
protected
_getViewZones
(
lineChanges
:
editorCommon
.
ILineChange
[],
originalForeignVZ
:
IEditorWhitespace
[],
modifiedForeignVZ
:
IEditorWhitespace
[],
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorsZones
{
let
c
=
new
SideBySideViewZonesComputer
(
lineChanges
,
originalForeignVZ
,
modifiedForeignVZ
);
return
c
.
getViewZones
();
}
_getOriginalEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
protected
_getOriginalEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
const
overviewZoneColor
=
this
.
_removeColor
.
toString
();
let
result
:
IEditorDiffDecorations
=
{
...
...
@@ -1682,7 +1672,7 @@ class DiffEdtorWidgetSideBySide extends DiffEditorWidgetStyle implements IDiffEd
return
result
;
}
_getModifiedEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
protected
_getModifiedEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
const
overviewZoneColor
=
this
.
_insertColor
.
toString
();
let
result
:
IEditorDiffDecorations
=
{
...
...
@@ -1749,7 +1739,7 @@ class SideBySideViewZonesComputer extends ViewZonesComputer {
super
(
lineChanges
,
originalForeignVZ
,
modifiedForeignVZ
);
}
_produceOriginalFromDiff
(
lineChange
:
editorCommon
.
ILineChange
,
lineChangeOriginalLength
:
number
,
lineChangeModifiedLength
:
number
):
IMyViewZone
{
protected
_produceOriginalFromDiff
(
lineChange
:
editorCommon
.
ILineChange
,
lineChangeOriginalLength
:
number
,
lineChangeModifiedLength
:
number
):
IMyViewZone
{
if
(
lineChangeModifiedLength
>
lineChangeOriginalLength
)
{
return
{
afterLineNumber
:
Math
.
max
(
lineChange
.
originalStartLineNumber
,
lineChange
.
originalEndLineNumber
),
...
...
@@ -1760,7 +1750,7 @@ class SideBySideViewZonesComputer extends ViewZonesComputer {
return
null
;
}
_produceModifiedFromDiff
(
lineChange
:
editorCommon
.
ILineChange
,
lineChangeOriginalLength
:
number
,
lineChangeModifiedLength
:
number
):
IMyViewZone
{
protected
_produceModifiedFromDiff
(
lineChange
:
editorCommon
.
ILineChange
,
lineChangeOriginalLength
:
number
,
lineChangeModifiedLength
:
number
):
IMyViewZone
{
if
(
lineChangeOriginalLength
>
lineChangeModifiedLength
)
{
return
{
afterLineNumber
:
Math
.
max
(
lineChange
.
modifiedStartLineNumber
,
lineChange
.
modifiedEndLineNumber
),
...
...
@@ -1797,12 +1787,12 @@ class DiffEdtorWidgetInline extends DiffEditorWidgetStyle implements IDiffEditor
// Nothing to do..
}
_getViewZones
(
lineChanges
:
editorCommon
.
ILineChange
[],
originalForeignVZ
:
IEditorWhitespace
[],
modifiedForeignVZ
:
IEditorWhitespace
[],
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
,
renderIndicators
:
boolean
):
IEditorsZones
{
protected
_getViewZones
(
lineChanges
:
editorCommon
.
ILineChange
[],
originalForeignVZ
:
IEditorWhitespace
[],
modifiedForeignVZ
:
IEditorWhitespace
[],
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
,
renderIndicators
:
boolean
):
IEditorsZones
{
let
computer
=
new
InlineViewZonesComputer
(
lineChanges
,
originalForeignVZ
,
modifiedForeignVZ
,
originalEditor
,
modifiedEditor
,
renderIndicators
);
return
computer
.
getViewZones
();
}
_getOriginalEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
protected
_getOriginalEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
const
overviewZoneColor
=
this
.
_removeColor
.
toString
();
let
result
:
IEditorDiffDecorations
=
{
...
...
@@ -1831,7 +1821,7 @@ class DiffEdtorWidgetInline extends DiffEditorWidgetStyle implements IDiffEditor
return
result
;
}
_getModifiedEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
protected
_getModifiedEditorDecorations
(
lineChanges
:
editorCommon
.
ILineChange
[],
ignoreTrimWhitespace
:
boolean
,
renderIndicators
:
boolean
,
originalEditor
:
editorBrowser
.
ICodeEditor
,
modifiedEditor
:
editorBrowser
.
ICodeEditor
):
IEditorDiffDecorations
{
const
overviewZoneColor
=
this
.
_insertColor
.
toString
();
let
result
:
IEditorDiffDecorations
=
{
...
...
@@ -1913,7 +1903,7 @@ class InlineViewZonesComputer extends ViewZonesComputer {
this
.
renderIndicators
=
renderIndicators
;
}
_produceOriginalFromDiff
(
lineChange
:
editorCommon
.
ILineChange
,
lineChangeOriginalLength
:
number
,
lineChangeModifiedLength
:
number
):
IMyViewZone
{
protected
_produceOriginalFromDiff
(
lineChange
:
editorCommon
.
ILineChange
,
lineChangeOriginalLength
:
number
,
lineChangeModifiedLength
:
number
):
IMyViewZone
{
let
marginDomNode
=
document
.
createElement
(
'
div
'
);
marginDomNode
.
className
=
'
inline-added-margin-view-zone
'
;
Configuration
.
applyFontInfoSlow
(
marginDomNode
,
this
.
modifiedEditorConfiguration
.
fontInfo
);
...
...
@@ -1926,7 +1916,7 @@ class InlineViewZonesComputer extends ViewZonesComputer {
};
}
_produceModifiedFromDiff
(
lineChange
:
editorCommon
.
ILineChange
,
lineChangeOriginalLength
:
number
,
lineChangeModifiedLength
:
number
):
IMyViewZone
{
protected
_produceModifiedFromDiff
(
lineChange
:
editorCommon
.
ILineChange
,
lineChangeOriginalLength
:
number
,
lineChangeModifiedLength
:
number
):
IMyViewZone
{
let
decorations
:
InlineDecoration
[]
=
[];
if
(
lineChange
.
charChanges
)
{
for
(
let
j
=
0
,
lengthJ
=
lineChange
.
charChanges
.
length
;
j
<
lengthJ
;
j
++
)
{
...
...
@@ -1946,7 +1936,7 @@ class InlineViewZonesComputer extends ViewZonesComputer {
let
lineDecorationsWidth
=
this
.
modifiedEditorConfiguration
.
layoutInfo
.
decorationsWidth
;
let
lineHeight
=
this
.
modifiedEditorConfiguration
.
lineHeight
;
for
(
let
lineNumber
=
lineChange
.
originalStartLineNumber
;
lineNumber
<=
lineChange
.
originalEndLineNumber
;
lineNumber
++
)
{
this
.
renderOriginalLine
(
lineNumber
-
lineChange
.
originalStartLineNumber
,
this
.
originalModel
,
this
.
modifiedEditorConfiguration
,
this
.
modifiedEditorTabSize
,
lineNumber
,
decorations
,
sb
);
this
.
_
renderOriginalLine
(
lineNumber
-
lineChange
.
originalStartLineNumber
,
this
.
originalModel
,
this
.
modifiedEditorConfiguration
,
this
.
modifiedEditorTabSize
,
lineNumber
,
decorations
,
sb
);
if
(
this
.
renderIndicators
)
{
let
index
=
lineNumber
-
lineChange
.
originalStartLineNumber
;
...
...
@@ -1975,22 +1965,11 @@ class InlineViewZonesComputer extends ViewZonesComputer {
};
}
private
renderOriginalLine
(
count
:
number
,
originalModel
:
ITextModel
,
config
:
editorOptions
.
InternalEditorOptions
,
tabSize
:
number
,
lineNumber
:
number
,
decorations
:
InlineDecoration
[],
sb
:
IStringBuilder
):
void
{
let
lineContent
=
originalModel
.
getLineContent
(
lineNumber
);
let
actualDecorations
=
LineDecoration
.
filter
(
decorations
,
lineNumber
,
1
,
lineContent
.
length
+
1
);
const
defaultMetadata
=
(
(
FontStyle
.
None
<<
MetadataConsts
.
FONT_STYLE_OFFSET
)
|
(
ColorId
.
DefaultForeground
<<
MetadataConsts
.
FOREGROUND_OFFSET
)
|
(
ColorId
.
DefaultBackground
<<
MetadataConsts
.
BACKGROUND_OFFSET
)
)
>>>
0
;
const
tokens
=
new
Uint32Array
(
2
);
tokens
[
0
]
=
lineContent
.
length
;
tokens
[
1
]
=
defaultMetadata
;
private
_renderOriginalLine
(
count
:
number
,
originalModel
:
ITextModel
,
config
:
editorOptions
.
InternalEditorOptions
,
tabSize
:
number
,
lineNumber
:
number
,
decorations
:
InlineDecoration
[],
sb
:
IStringBuilder
):
void
{
const
lineTokens
=
originalModel
.
getLineTokens
(
lineNumber
);
const
lineContent
=
lineTokens
.
getLineContent
();
const
lineTokens
=
new
LineTokens
(
tokens
,
lineContent
);
const
actualDecorations
=
LineDecoration
.
filter
(
decorations
,
lineNumber
,
1
,
lineContent
.
length
+
1
);
sb
.
appendASCIIString
(
'
<div class="view-line
'
);
if
(
decorations
.
length
===
0
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录