Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
9c850946
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,发现更多精彩内容 >>
提交
9c850946
编写于
3月 02, 2016
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixes #3559: C# folding error
上级
33a4ec72
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
126 addition
and
127 deletion
+126
-127
src/vs/editor/browser/viewLayout/layoutProvider.ts
src/vs/editor/browser/viewLayout/layoutProvider.ts
+2
-5
src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts
...editor/browser/viewParts/contentWidgets/contentWidgets.ts
+11
-8
src/vs/editor/browser/viewParts/viewZones/viewZones.ts
src/vs/editor/browser/viewParts/viewZones/viewZones.ts
+64
-49
src/vs/editor/common/editorCommon.ts
src/vs/editor/common/editorCommon.ts
+3
-8
src/vs/editor/common/viewLayout/linesLayout.ts
src/vs/editor/common/viewLayout/linesLayout.ts
+2
-20
src/vs/editor/common/viewLayout/verticalObjects.ts
src/vs/editor/common/viewLayout/verticalObjects.ts
+2
-20
src/vs/editor/common/viewLayout/whitespaceComputer.ts
src/vs/editor/common/viewLayout/whitespaceComputer.ts
+9
-2
src/vs/editor/common/viewModel/splitLinesCollection.ts
src/vs/editor/common/viewModel/splitLinesCollection.ts
+11
-2
src/vs/editor/common/viewModel/viewModel.ts
src/vs/editor/common/viewModel/viewModel.ts
+12
-3
src/vs/editor/test/common/viewLayout/verticalObjects.test.ts
src/vs/editor/test/common/viewLayout/verticalObjects.test.ts
+2
-2
src/vs/editor/test/common/viewLayout/whitespaceComputer.test.ts
.../editor/test/common/viewLayout/whitespaceComputer.test.ts
+8
-8
未找到文件。
src/vs/editor/browser/viewLayout/layoutProvider.ts
浏览文件 @
9c850946
...
@@ -174,11 +174,8 @@ export class LayoutProvider extends ViewEventHandler implements IDisposable, ILa
...
@@ -174,11 +174,8 @@ export class LayoutProvider extends ViewEventHandler implements IDisposable, ILa
public
addWhitespace
(
afterLineNumber
:
number
,
ordinal
:
number
,
height
:
number
):
number
{
public
addWhitespace
(
afterLineNumber
:
number
,
ordinal
:
number
,
height
:
number
):
number
{
return
this
.
linesLayout
.
insertWhitespace
(
afterLineNumber
,
ordinal
,
height
);
return
this
.
linesLayout
.
insertWhitespace
(
afterLineNumber
,
ordinal
,
height
);
}
}
public
changeWhitespace
(
id
:
number
,
newHeight
:
number
):
boolean
{
public
changeWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
,
newHeight
:
number
):
boolean
{
return
this
.
linesLayout
.
changeWhitespace
(
id
,
newHeight
);
return
this
.
linesLayout
.
changeWhitespace
(
id
,
newAfterLineNumber
,
newHeight
);
}
public
changeAfterLineNumberForWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
):
boolean
{
return
this
.
linesLayout
.
changeAfterLineNumberForWhitespace
(
id
,
newAfterLineNumber
);
}
}
public
removeWhitespace
(
id
:
number
):
boolean
{
public
removeWhitespace
(
id
:
number
):
boolean
{
return
this
.
linesLayout
.
removeWhitespace
(
id
);
return
this
.
linesLayout
.
removeWhitespace
(
id
);
...
...
src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts
浏览文件 @
9c850946
...
@@ -297,11 +297,14 @@ export class ViewContentWidgets extends ViewPart {
...
@@ -297,11 +297,14 @@ export class ViewContentWidgets extends ViewPart {
}
}
// Do not trust that widgets have a valid position
// Do not trust that widgets have a valid position
let
validModelPosition
=
this
.
_context
.
model
.
validateModelPosition
(
widgetData
.
position
),
let
validModelPosition
=
this
.
_context
.
model
.
validateModelPosition
(
widgetData
.
position
);
position
=
this
.
_context
.
model
.
convertModelPositionToViewPosition
(
validModelPosition
.
lineNumber
,
validModelPosition
.
column
),
pref
:
ContentWidgetPositionPreference
,
if
(
!
this
.
_context
.
model
.
modelPositionIsVisible
(
validModelPosition
))
{
pass
:
number
,
// this position is hidden by the view model
i
:
number
;
return
null
;
}
let
position
=
this
.
_context
.
model
.
convertModelPositionToViewPosition
(
validModelPosition
.
lineNumber
,
validModelPosition
.
column
);
let
placement
:
IBoxLayoutResult
=
null
;
let
placement
:
IBoxLayoutResult
=
null
;
let
fetchPlacement
=
()
=>
{
let
fetchPlacement
=
()
=>
{
...
@@ -318,9 +321,9 @@ export class ViewContentWidgets extends ViewPart {
...
@@ -318,9 +321,9 @@ export class ViewContentWidgets extends ViewPart {
};
};
// Do two passes, first for perfect fit, second picks first option
// Do two passes, first for perfect fit, second picks first option
for
(
pass
=
1
;
pass
<=
2
;
pass
++
)
{
for
(
let
pass
=
1
;
pass
<=
2
;
pass
++
)
{
for
(
i
=
0
;
i
<
widgetData
.
preference
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
widgetData
.
preference
.
length
;
i
++
)
{
pref
=
widgetData
.
preference
[
i
];
let
pref
=
widgetData
.
preference
[
i
];
if
(
pref
===
ContentWidgetPositionPreference
.
ABOVE
)
{
if
(
pref
===
ContentWidgetPositionPreference
.
ABOVE
)
{
fetchPlacement
();
fetchPlacement
();
if
(
!
placement
)
{
if
(
!
placement
)
{
...
...
src/vs/editor/browser/viewParts/viewZones/viewZones.ts
浏览文件 @
9c850946
...
@@ -20,6 +20,11 @@ export interface IMyRenderData {
...
@@ -20,6 +20,11 @@ export interface IMyRenderData {
data
:
editorCommon
.
IViewWhitespaceViewportData
[];
data
:
editorCommon
.
IViewWhitespaceViewportData
[];
}
}
interface
IComputedViewZoneProps
{
afterViewLineNumber
:
number
;
heightInPx
:
number
;
}
export
class
ViewZones
extends
ViewPart
{
export
class
ViewZones
extends
ViewPart
{
private
_whitespaceManager
:
editorCommon
.
IWhitespaceManager
;
private
_whitespaceManager
:
editorCommon
.
IWhitespaceManager
;
...
@@ -46,24 +51,24 @@ export class ViewZones extends ViewPart {
...
@@ -46,24 +51,24 @@ export class ViewZones extends ViewPart {
// ---- begin view event handlers
// ---- begin view event handlers
public
onConfigurationChanged
(
e
:
editorCommon
.
IConfigurationChangedEvent
):
boolean
{
private
_recomputeWhitespacesProps
():
boolean
{
let
id
:
string
;
if
(
e
.
lineHeight
)
{
let
zone2Height
:{[
id
:
string
]:
number
;}
=
{};
var
id
:
string
,
let
hadAChange
=
false
;
zone
:
IMyViewZone
,
newComputedHeight
:
number
,
zone2Height
:{[
id
:
string
]:
number
;}
=
{};
for
(
id
in
this
.
_zones
)
{
for
(
id
in
this
.
_zones
)
{
if
(
this
.
_zones
.
hasOwnProperty
(
id
))
{
if
(
this
.
_zones
.
hasOwnProperty
(
id
))
{
zone
=
this
.
_zones
[
id
];
let
zone
=
this
.
_zones
[
id
];
newComputedHeight
=
this
.
_heightInPixels
(
zone
.
delegate
);
let
props
=
this
.
_computeWhitespaceProps
(
zone
.
delegate
);
this
.
_safeCallOnComputedHeight
(
zone
.
delegate
,
newComputedHeight
);
if
(
this
.
_whitespaceManager
.
changeWhitespace
(
parseInt
(
id
,
10
),
props
.
afterViewLineNumber
,
props
.
heightInPx
))
{
zone2Height
[
id
]
=
newComputedHeight
;
this
.
_safeCallOnComputedHeight
(
zone
.
delegate
,
props
.
heightInPx
);
this
.
_whitespaceManager
.
changeWhitespace
(
parseInt
(
id
,
10
),
newComputedHeight
);
zone2Height
[
id
]
=
props
.
heightInPx
;
hadAChange
=
true
;
}
}
}
}
}
if
(
hadAChange
)
{
this
.
_requestModificationFrame
(()
=>
{
this
.
_requestModificationFrame
(()
=>
{
for
(
id
in
this
.
_zones
)
{
for
(
id
in
this
.
_zones
)
{
if
(
this
.
_zones
.
hasOwnProperty
(
id
))
{
if
(
this
.
_zones
.
hasOwnProperty
(
id
))
{
...
@@ -74,28 +79,22 @@ export class ViewZones extends ViewPart {
...
@@ -74,28 +79,22 @@ export class ViewZones extends ViewPart {
}
}
}
}
});
});
return
true
;
}
}
return
fals
e
;
return
hadAChang
e
;
}
}
public
onLineMappingChanged
():
boolean
{
public
onConfigurationChanged
(
e
:
editorCommon
.
IConfigurationChangedEvent
):
boolean
{
var
hadAChange
=
false
,
zone
:
IMyViewZone
,
id
:
string
;
for
(
id
in
this
.
_zones
)
{
if
(
e
.
lineHeight
)
{
if
(
this
.
_zones
.
hasOwnProperty
(
id
))
{
return
this
.
_recomputeWhitespacesProps
();
zone
=
this
.
_zones
[
id
];
var
newAfterLineNumber
=
this
.
_computeWhitespaceAfterLineNumber
(
zone
.
delegate
);
hadAChange
=
this
.
_whitespaceManager
.
changeAfterLineNumberForWhitespace
(
parseInt
(
id
,
10
),
newAfterLineNumber
)
||
hadAChange
;
}
}
}
return
hadAChange
;
return
false
;
}
public
onLineMappingChanged
():
boolean
{
return
this
.
_recomputeWhitespacesProps
();
}
}
public
onLayoutChanged
(
layoutInfo
:
editorCommon
.
IEditorLayoutInfo
):
boolean
{
public
onLayoutChanged
(
layoutInfo
:
editorCommon
.
IEditorLayoutInfo
):
boolean
{
...
@@ -134,19 +133,22 @@ export class ViewZones extends ViewPart {
...
@@ -134,19 +133,22 @@ export class ViewZones extends ViewPart {
}
}
private
_computeWhitespace
AfterLineNumber
(
zone
:
IViewZone
):
number
{
private
_computeWhitespace
Props
(
zone
:
IViewZone
):
IComputedViewZoneProps
{
if
(
zone
.
afterLineNumber
===
0
)
{
if
(
zone
.
afterLineNumber
===
0
)
{
return
0
;
return
{
afterViewLineNumber
:
0
,
heightInPx
:
this
.
_heightInPixels
(
zone
)
};
}
}
var
zoneAfterModelPosition
:
editorCommon
.
IPosition
;
let
zoneAfterModelPosition
:
editorCommon
.
IPosition
;
if
(
typeof
zone
.
afterColumn
!==
'
undefined
'
)
{
if
(
typeof
zone
.
afterColumn
!==
'
undefined
'
)
{
zoneAfterModelPosition
=
this
.
_context
.
model
.
validateModelPosition
({
zoneAfterModelPosition
=
this
.
_context
.
model
.
validateModelPosition
({
lineNumber
:
zone
.
afterLineNumber
,
lineNumber
:
zone
.
afterLineNumber
,
column
:
zone
.
afterColumn
column
:
zone
.
afterColumn
});
});
}
else
{
}
else
{
var
validAfterLineNumber
=
this
.
_context
.
model
.
validateModelPosition
({
let
validAfterLineNumber
=
this
.
_context
.
model
.
validateModelPosition
({
lineNumber
:
zone
.
afterLineNumber
,
lineNumber
:
zone
.
afterLineNumber
,
column
:
1
column
:
1
}).
lineNumber
;
}).
lineNumber
;
...
@@ -157,21 +159,38 @@ export class ViewZones extends ViewPart {
...
@@ -157,21 +159,38 @@ export class ViewZones extends ViewPart {
};
};
}
}
var
viewPosition
=
this
.
_context
.
model
.
convertModelPositionToViewPosition
(
zoneAfterModelPosition
.
lineNumber
,
zoneAfterModelPosition
.
column
);
let
zoneBeforeModelPosition
:
editorCommon
.
IPosition
;
return
viewPosition
.
lineNumber
;
if
(
zoneAfterModelPosition
.
column
===
this
.
_context
.
model
.
getModelLineMaxColumn
(
zoneAfterModelPosition
.
lineNumber
))
{
zoneBeforeModelPosition
=
this
.
_context
.
model
.
validateModelPosition
({
lineNumber
:
zoneAfterModelPosition
.
lineNumber
+
1
,
column
:
1
});
}
else
{
zoneBeforeModelPosition
=
this
.
_context
.
model
.
validateModelPosition
({
lineNumber
:
zoneAfterModelPosition
.
lineNumber
,
column
:
zoneAfterModelPosition
.
column
+
1
});
}
let
viewPosition
=
this
.
_context
.
model
.
convertModelPositionToViewPosition
(
zoneAfterModelPosition
.
lineNumber
,
zoneAfterModelPosition
.
column
);
let
isVisible
=
this
.
_context
.
model
.
modelPositionIsVisible
(
zoneBeforeModelPosition
);
return
{
afterViewLineNumber
:
viewPosition
.
lineNumber
,
heightInPx
:
(
isVisible
?
this
.
_heightInPixels
(
zone
)
:
0
)
};
}
}
public
addZone
(
zone
:
IViewZone
):
number
{
public
addZone
(
zone
:
IViewZone
):
number
{
var
computedHeight
=
this
.
_heightInPixel
s
(
zone
);
let
props
=
this
.
_computeWhitespaceProp
s
(
zone
);
var
whitespaceId
=
this
.
_whitespaceManager
.
addWhitespace
(
this
.
_computeWhitespaceAfterLineNumber
(
zone
),
this
.
_getZoneOrdinal
(
zone
),
computedHeight
);
let
whitespaceId
=
this
.
_whitespaceManager
.
addWhitespace
(
props
.
afterViewLineNumber
,
this
.
_getZoneOrdinal
(
zone
),
props
.
heightInPx
);
var
myZone
:
IMyViewZone
=
{
let
myZone
:
IMyViewZone
=
{
whitespaceId
:
whitespaceId
,
whitespaceId
:
whitespaceId
,
delegate
:
zone
,
delegate
:
zone
,
isVisible
:
false
isVisible
:
false
};
};
this
.
_safeCallOnComputedHeight
(
myZone
.
delegate
,
computedHeight
);
this
.
_safeCallOnComputedHeight
(
myZone
.
delegate
,
props
.
heightInPx
);
this
.
_requestModificationFrame
(()
=>
{
this
.
_requestModificationFrame
(()
=>
{
if
(
!
myZone
.
delegate
.
domNode
.
hasAttribute
(
'
monaco-view-zone
'
))
{
if
(
!
myZone
.
delegate
.
domNode
.
hasAttribute
(
'
monaco-view-zone
'
))
{
...
@@ -179,7 +198,7 @@ export class ViewZones extends ViewPart {
...
@@ -179,7 +198,7 @@ export class ViewZones extends ViewPart {
return
;
return
;
}
}
myZone
.
delegate
.
domNode
.
style
.
position
=
'
absolute
'
;
myZone
.
delegate
.
domNode
.
style
.
position
=
'
absolute
'
;
StyleMutator
.
setHeight
(
myZone
.
delegate
.
domNode
,
computedHeight
);
StyleMutator
.
setHeight
(
myZone
.
delegate
.
domNode
,
props
.
heightInPx
);
myZone
.
delegate
.
domNode
.
style
.
width
=
'
100%
'
;
myZone
.
delegate
.
domNode
.
style
.
width
=
'
100%
'
;
StyleMutator
.
setDisplay
(
myZone
.
delegate
.
domNode
,
'
none
'
);
StyleMutator
.
setDisplay
(
myZone
.
delegate
.
domNode
,
'
none
'
);
});
});
...
@@ -216,16 +235,12 @@ export class ViewZones extends ViewPart {
...
@@ -216,16 +235,12 @@ export class ViewZones extends ViewPart {
}
}
public
layoutZone
(
id
:
number
):
boolean
{
public
layoutZone
(
id
:
number
):
boolean
{
var
changed
=
false
;
let
changed
=
false
;
if
(
this
.
_zones
.
hasOwnProperty
(
id
.
toString
()))
{
if
(
this
.
_zones
.
hasOwnProperty
(
id
.
toString
()))
{
var
zone
=
this
.
_zones
[
id
.
toString
()];
let
zone
=
this
.
_zones
[
id
.
toString
()];
let
props
=
this
.
_computeWhitespaceProps
(
zone
.
delegate
);
var
newComputedHeight
=
this
.
_heightInPixels
(
zone
.
delegate
);
// let newOrdinal = this._getZoneOrdinal(zone.delegate);
var
newAfterLineNumber
=
this
.
_computeWhitespaceAfterLineNumber
(
zone
.
delegate
);
changed
=
this
.
_whitespaceManager
.
changeWhitespace
(
zone
.
whitespaceId
,
props
.
afterViewLineNumber
,
props
.
heightInPx
)
||
changed
;
// var newOrdinal = this._getZoneOrdinal(zone.delegate);
changed
=
this
.
_whitespaceManager
.
changeWhitespace
(
zone
.
whitespaceId
,
newComputedHeight
)
||
changed
;
changed
=
this
.
_whitespaceManager
.
changeAfterLineNumberForWhitespace
(
zone
.
whitespaceId
,
newAfterLineNumber
)
||
changed
;
// TODO@Alex: change `newOrdinal` too
// TODO@Alex: change `newOrdinal` too
}
}
return
changed
;
return
changed
;
...
...
src/vs/editor/common/editorCommon.ts
浏览文件 @
9c850946
...
@@ -2504,16 +2504,10 @@ export interface IWhitespaceManager {
...
@@ -2504,16 +2504,10 @@ export interface IWhitespaceManager {
addWhitespace
(
afterLineNumber
:
number
,
ordinal
:
number
,
height
:
number
):
number
;
addWhitespace
(
afterLineNumber
:
number
,
ordinal
:
number
,
height
:
number
):
number
;
/**
/**
* Change the
height
of a whitespace.
* Change the
properties
of a whitespace.
* @param height is specified in pixels.
* @param height is specified in pixels.
*/
*/
changeWhitespace
(
id
:
number
,
newHeight
:
number
):
boolean
;
changeWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
,
newHeight
:
number
):
boolean
;
/**
* Change the `afterLineNumber` of a whitespace.
* @return a boolean indicating if something has actually changed
*/
changeAfterLineNumberForWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
):
boolean
;
/**
/**
* Remove rendering space
* Remove rendering space
...
@@ -2553,6 +2547,7 @@ export interface IViewModel extends IEventEmitter, IDisposable {
...
@@ -2553,6 +2547,7 @@ export interface IViewModel extends IEventEmitter, IDisposable {
convertViewRangeToModelRange
(
viewRange
:
IRange
):
IEditorRange
;
convertViewRangeToModelRange
(
viewRange
:
IRange
):
IEditorRange
;
convertModelPositionToViewPosition
(
modelLineNumber
:
number
,
modelColumn
:
number
):
IEditorPosition
;
convertModelPositionToViewPosition
(
modelLineNumber
:
number
,
modelColumn
:
number
):
IEditorPosition
;
convertModelSelectionToViewSelection
(
modelSelection
:
IEditorSelection
):
IEditorSelection
;
convertModelSelectionToViewSelection
(
modelSelection
:
IEditorSelection
):
IEditorSelection
;
modelPositionIsVisible
(
position
:
IPosition
):
boolean
;
}
}
export
interface
IViewEventNames
{
export
interface
IViewEventNames
{
...
...
src/vs/editor/common/viewLayout/linesLayout.ts
浏览文件 @
9c850946
...
@@ -40,26 +40,8 @@ export class LinesLayout {
...
@@ -40,26 +40,8 @@ export class LinesLayout {
return
this
.
verticalObjects
.
insertWhitespace
(
afterLineNumber
,
ordinal
,
height
);
return
this
.
verticalObjects
.
insertWhitespace
(
afterLineNumber
,
ordinal
,
height
);
}
}
/**
public
changeWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
,
newHeight
:
number
):
boolean
{
* Change the height of an existing whitespace
return
this
.
verticalObjects
.
changeWhitespace
(
id
,
newAfterLineNumber
,
newHeight
);
*
* @param id The whitespace to change
* @param newHeightInPx The new height of the whitespace, in pixels
* @return Returns true if the whitespace is found and if the new height is different than the old height
*/
public
changeWhitespace
(
id
:
number
,
newHeight
:
number
):
boolean
{
return
this
.
verticalObjects
.
changeWhitespace
(
id
,
newHeight
);
}
/**
* Change the line number after which an existing whitespace flows.
*
* @param id The whitespace to change
* @param newAfterLineNumber The new line number the whitespace will follow
* @return Returns true if the whitespace is found and if the new line number is different than the old line number
*/
public
changeAfterLineNumberForWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
):
boolean
{
return
this
.
verticalObjects
.
changeAfterLineNumberForWhitespace
(
id
,
newAfterLineNumber
);
}
}
/**
/**
...
...
src/vs/editor/common/viewLayout/verticalObjects.ts
浏览文件 @
9c850946
...
@@ -53,26 +53,8 @@ export class VerticalObjects {
...
@@ -53,26 +53,8 @@ export class VerticalObjects {
return
this
.
whitespaces
.
insertWhitespace
(
afterLineNumber
,
ordinal
,
heightInPx
);
return
this
.
whitespaces
.
insertWhitespace
(
afterLineNumber
,
ordinal
,
heightInPx
);
}
}
/**
public
changeWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
,
newHeight
:
number
):
boolean
{
* Change the height of an existing whitespace
return
this
.
whitespaces
.
changeWhitespace
(
id
,
newAfterLineNumber
,
newHeight
);
*
* @param id The whitespace to change
* @param newHeightInPx The new height of the whitespace, in pixels
* @return Returns true if the whitespace is found and if the new height is different than the old height
*/
public
changeWhitespace
(
id
:
number
,
newHeightInPx
:
number
):
boolean
{
return
this
.
whitespaces
.
changeWhitespace
(
id
,
newHeightInPx
);
}
/**
* Change the line number after which an existing whitespace flows.
*
* @param id The whitespace to change
* @param newAfterLineNumber The new line number the whitespace will follow
* @return Returns true if the whitespace is found and if the new line number is different than the old line number
*/
public
changeAfterLineNumberForWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
):
boolean
{
return
this
.
whitespaces
.
changeAfterLineNumberForWhitespace
(
id
,
newAfterLineNumber
);
}
}
/**
/**
...
...
src/vs/editor/common/viewLayout/whitespaceComputer.ts
浏览文件 @
9c850946
...
@@ -133,6 +133,13 @@ export class WhitespaceComputer {
...
@@ -133,6 +133,13 @@ export class WhitespaceComputer {
this
.
prefixSumValidIndex
=
Math
.
min
(
this
.
prefixSumValidIndex
,
insertIndex
-
1
);
this
.
prefixSumValidIndex
=
Math
.
min
(
this
.
prefixSumValidIndex
,
insertIndex
-
1
);
}
}
public
changeWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
,
newHeight
:
number
):
boolean
{
let
hasChanges
=
false
;
hasChanges
=
this
.
changeWhitespaceHeight
(
id
,
newHeight
)
||
hasChanges
;
hasChanges
=
this
.
changeWhitespaceAfterLineNumber
(
id
,
newAfterLineNumber
)
||
hasChanges
;
return
hasChanges
;
}
/**
/**
* Change the height of an existing whitespace
* Change the height of an existing whitespace
*
*
...
@@ -140,7 +147,7 @@ export class WhitespaceComputer {
...
@@ -140,7 +147,7 @@ export class WhitespaceComputer {
* @param newHeightInPx The new height of the whitespace, in pixels
* @param newHeightInPx The new height of the whitespace, in pixels
* @return Returns true if the whitespace is found and if the new height is different than the old height
* @return Returns true if the whitespace is found and if the new height is different than the old height
*/
*/
public
changeWhitespace
(
id
:
number
,
newHeightInPx
:
number
):
boolean
{
public
changeWhitespace
Height
(
id
:
number
,
newHeightInPx
:
number
):
boolean
{
var
sid
=
id
.
toString
();
var
sid
=
id
.
toString
();
if
(
this
.
whitespaceId2Index
.
hasOwnProperty
(
sid
))
{
if
(
this
.
whitespaceId2Index
.
hasOwnProperty
(
sid
))
{
var
index
=
this
.
whitespaceId2Index
[
sid
];
var
index
=
this
.
whitespaceId2Index
[
sid
];
...
@@ -160,7 +167,7 @@ export class WhitespaceComputer {
...
@@ -160,7 +167,7 @@ export class WhitespaceComputer {
* @param newAfterLineNumber The new line number the whitespace will follow
* @param newAfterLineNumber The new line number the whitespace will follow
* @return Returns true if the whitespace is found and if the new line number is different than the old line number
* @return Returns true if the whitespace is found and if the new line number is different than the old line number
*/
*/
public
change
AfterLineNumberForWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
):
boolean
{
public
change
WhitespaceAfterLineNumber
(
id
:
number
,
newAfterLineNumber
:
number
):
boolean
{
var
sid
=
id
.
toString
();
var
sid
=
id
.
toString
();
if
(
this
.
whitespaceId2Index
.
hasOwnProperty
(
sid
))
{
if
(
this
.
whitespaceId2Index
.
hasOwnProperty
(
sid
))
{
var
index
=
this
.
whitespaceId2Index
[
sid
];
var
index
=
this
.
whitespaceId2Index
[
sid
];
...
...
src/vs/editor/common/viewModel/splitLinesCollection.ts
浏览文件 @
9c850946
...
@@ -362,7 +362,7 @@ export class SplitLinesCollection implements ILinesCollection {
...
@@ -362,7 +362,7 @@ export class SplitLinesCollection implements ILinesCollection {
return
result
;
return
result
;
}
}
public
setHiddenAreas
(
_ranges
:
editorCommon
.
IRange
[],
emit
:(
evenType
:
string
,
payload
:
any
)
=>
void
):
void
{
public
setHiddenAreas
(
_ranges
:
editorCommon
.
IRange
[],
emit
:(
evenType
:
string
,
payload
:
any
)
=>
void
):
boolean
{
let
newRanges
=
this
.
_reduceRanges
(
_ranges
);
let
newRanges
=
this
.
_reduceRanges
(
_ranges
);
...
@@ -378,7 +378,7 @@ export class SplitLinesCollection implements ILinesCollection {
...
@@ -378,7 +378,7 @@ export class SplitLinesCollection implements ILinesCollection {
}
}
}
}
if
(
!
hasDifference
)
{
if
(
!
hasDifference
)
{
return
;
return
false
;
}
}
}
}
// END TODO@Martin: Please stop calling this method on each model change!
// END TODO@Martin: Please stop calling this method on each model change!
...
@@ -430,6 +430,15 @@ export class SplitLinesCollection implements ILinesCollection {
...
@@ -430,6 +430,15 @@ export class SplitLinesCollection implements ILinesCollection {
}
}
emit
(
editorCommon
.
ViewEventNames
.
ModelFlushedEvent
,
null
);
emit
(
editorCommon
.
ViewEventNames
.
ModelFlushedEvent
,
null
);
return
true
;
}
public
inputPositionIsVisible
(
inputLineNumber
:
number
,
inputColumn
:
number
):
boolean
{
if
(
inputLineNumber
<
1
||
inputLineNumber
>
this
.
lines
.
length
)
{
// invalid arguments
return
false
;
}
return
this
.
lines
[
inputLineNumber
-
1
].
isVisible
();
}
}
public
setTabSize
(
newTabSize
:
number
,
emit
:(
evenType
:
string
,
payload
:
any
)
=>
void
):
boolean
{
public
setTabSize
(
newTabSize
:
number
,
emit
:(
evenType
:
string
,
payload
:
any
)
=>
void
):
boolean
{
...
...
src/vs/editor/common/viewModel/viewModel.ts
浏览文件 @
9c850946
...
@@ -31,6 +31,7 @@ export interface ILinesCollection {
...
@@ -31,6 +31,7 @@ export interface ILinesCollection {
convertOutputPositionToInputPosition
(
viewLineNumber
:
number
,
viewColumn
:
number
):
editorCommon
.
IEditorPosition
;
convertOutputPositionToInputPosition
(
viewLineNumber
:
number
,
viewColumn
:
number
):
editorCommon
.
IEditorPosition
;
convertInputPositionToOutputPosition
(
inputLineNumber
:
number
,
inputColumn
:
number
):
editorCommon
.
IEditorPosition
;
convertInputPositionToOutputPosition
(
inputLineNumber
:
number
,
inputColumn
:
number
):
editorCommon
.
IEditorPosition
;
setHiddenAreas
(
ranges
:
editorCommon
.
IRange
[],
emit
:(
evenType
:
string
,
payload
:
any
)
=>
void
):
void
;
setHiddenAreas
(
ranges
:
editorCommon
.
IRange
[],
emit
:(
evenType
:
string
,
payload
:
any
)
=>
void
):
void
;
inputPositionIsVisible
(
inputLineNumber
:
number
,
inputColumn
:
number
):
boolean
;
dispose
():
void
;
dispose
():
void
;
}
}
...
@@ -82,12 +83,20 @@ export class ViewModel extends EventEmitter implements editorCommon.IViewModel {
...
@@ -82,12 +83,20 @@ export class ViewModel extends EventEmitter implements editorCommon.IViewModel {
public
setHiddenAreas
(
ranges
:
editorCommon
.
IRange
[]):
void
{
public
setHiddenAreas
(
ranges
:
editorCommon
.
IRange
[]):
void
{
this
.
deferredEmit
(()
=>
{
this
.
deferredEmit
(()
=>
{
this
.
lines
.
setHiddenAreas
(
ranges
,
(
eventType
:
string
,
payload
:
any
)
=>
this
.
emit
(
eventType
,
payload
));
let
lineMappingChanged
=
this
.
lines
.
setHiddenAreas
(
ranges
,
(
eventType
:
string
,
payload
:
any
)
=>
this
.
emit
(
eventType
,
payload
));
this
.
decorations
.
onLineMappingChanged
((
eventType
:
string
,
payload
:
any
)
=>
this
.
emit
(
eventType
,
payload
));
if
(
lineMappingChanged
)
{
this
.
cursors
.
onLineMappingChanged
((
eventType
:
string
,
payload
:
any
)
=>
this
.
emit
(
eventType
,
payload
));
this
.
emit
(
editorCommon
.
ViewEventNames
.
LineMappingChangedEvent
);
this
.
decorations
.
onLineMappingChanged
((
eventType
:
string
,
payload
:
any
)
=>
this
.
emit
(
eventType
,
payload
));
this
.
cursors
.
onLineMappingChanged
((
eventType
:
string
,
payload
:
any
)
=>
this
.
emit
(
eventType
,
payload
));
this
.
_updateShouldForceTokenization
();
}
});
});
}
}
public
modelPositionIsVisible
(
position
:
editorCommon
.
IPosition
):
boolean
{
return
this
.
lines
.
inputPositionIsVisible
(
position
.
lineNumber
,
position
.
column
);
}
public
dispose
():
void
{
public
dispose
():
void
{
this
.
listenersToRemove
.
forEach
((
element
)
=>
{
this
.
listenersToRemove
.
forEach
((
element
)
=>
{
element
();
element
();
...
...
src/vs/editor/test/common/viewLayout/verticalObjects.test.ts
浏览文件 @
9c850946
...
@@ -145,7 +145,7 @@ suite('Editor ViewLayout - VerticalObjects', () => {
...
@@ -145,7 +145,7 @@ suite('Editor ViewLayout - VerticalObjects', () => {
// Change whitespace height
// Change whitespace height
// 10 lines
// 10 lines
// whitespace: - a(2,10)
// whitespace: - a(2,10)
verticalObjects
.
changeWhitespace
(
a
,
10
);
verticalObjects
.
changeWhitespace
(
a
,
2
,
10
);
assert
.
equal
(
verticalObjects
.
getTotalHeight
(
1
),
20
);
assert
.
equal
(
verticalObjects
.
getTotalHeight
(
1
),
20
);
assert
.
equal
(
verticalObjects
.
getVerticalOffsetForLineNumber
(
1
,
1
),
0
);
assert
.
equal
(
verticalObjects
.
getVerticalOffsetForLineNumber
(
1
,
1
),
0
);
assert
.
equal
(
verticalObjects
.
getVerticalOffsetForLineNumber
(
2
,
1
),
1
);
assert
.
equal
(
verticalObjects
.
getVerticalOffsetForLineNumber
(
2
,
1
),
1
);
...
@@ -161,7 +161,7 @@ suite('Editor ViewLayout - VerticalObjects', () => {
...
@@ -161,7 +161,7 @@ suite('Editor ViewLayout - VerticalObjects', () => {
// Change whitespace position
// Change whitespace position
// 10 lines
// 10 lines
// whitespace: - a(5,10)
// whitespace: - a(5,10)
verticalObjects
.
change
AfterLineNumberForWhitespace
(
a
,
5
);
verticalObjects
.
change
Whitespace
(
a
,
5
,
10
);
assert
.
equal
(
verticalObjects
.
getTotalHeight
(
1
),
20
);
assert
.
equal
(
verticalObjects
.
getTotalHeight
(
1
),
20
);
assert
.
equal
(
verticalObjects
.
getVerticalOffsetForLineNumber
(
1
,
1
),
0
);
assert
.
equal
(
verticalObjects
.
getVerticalOffsetForLineNumber
(
1
,
1
),
0
);
assert
.
equal
(
verticalObjects
.
getVerticalOffsetForLineNumber
(
2
,
1
),
1
);
assert
.
equal
(
verticalObjects
.
getVerticalOffsetForLineNumber
(
2
,
1
),
1
);
...
...
src/vs/editor/test/common/viewLayout/whitespaceComputer.test.ts
浏览文件 @
9c850946
...
@@ -43,7 +43,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
...
@@ -43,7 +43,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
assert
.
equal
(
whitespaceComputer
.
getAccumulatedHeightBeforeLineNumber
(
4
),
30
);
assert
.
equal
(
whitespaceComputer
.
getAccumulatedHeightBeforeLineNumber
(
4
),
30
);
// Change last inserted whitespace height to 30
// Change last inserted whitespace height to 30
whitespaceComputer
.
changeWhitespace
(
b
,
30
);
whitespaceComputer
.
changeWhitespace
Height
(
b
,
30
);
// whitespaces: a(2, 10), b(2, 30)
// whitespaces: a(2, 10), b(2, 30)
assert
.
equal
(
whitespaceComputer
.
getCount
(),
2
);
assert
.
equal
(
whitespaceComputer
.
getCount
(),
2
);
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
2
);
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
2
);
...
@@ -131,7 +131,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
...
@@ -131,7 +131,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
assert
.
equal
(
whitespaceComputer
.
getAccumulatedHeightBeforeLineNumber
(
5
),
110
);
assert
.
equal
(
whitespaceComputer
.
getAccumulatedHeightBeforeLineNumber
(
5
),
110
);
// Change whitespace after line 2 to height of 100
// Change whitespace after line 2 to height of 100
whitespaceComputer
.
changeWhitespace
(
a
,
100
);
whitespaceComputer
.
changeWhitespace
Height
(
a
,
100
);
// whitespaces: b(0, 50), a(2, 100), d(3, 30), c(4, 20)
// whitespaces: b(0, 50), a(2, 100), d(3, 30), c(4, 20)
assert
.
equal
(
whitespaceComputer
.
getCount
(),
4
);
assert
.
equal
(
whitespaceComputer
.
getCount
(),
4
);
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
0
);
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
0
);
...
@@ -376,7 +376,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
...
@@ -376,7 +376,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
assert
.
equal
(
WhitespaceComputer
.
findInsertionIndex
(
arr
,
16
,
ordinals
,
0
),
8
);
assert
.
equal
(
WhitespaceComputer
.
findInsertionIndex
(
arr
,
16
,
ordinals
,
0
),
8
);
});
});
test
(
'
WhitespaceComputer change
AfterLineNumberForWhitespace
& getFirstWhitespaceIndexAfterLineNumber
'
,
()
=>
{
test
(
'
WhitespaceComputer change
WhitespaceAfterLineNumber
& getFirstWhitespaceIndexAfterLineNumber
'
,
()
=>
{
var
whitespaceComputer
=
new
WhitespaceComputer
();
var
whitespaceComputer
=
new
WhitespaceComputer
();
var
a
=
whitespaceComputer
.
insertWhitespace
(
0
,
0
,
1
);
var
a
=
whitespaceComputer
.
insertWhitespace
(
0
,
0
,
1
);
...
@@ -400,7 +400,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
...
@@ -400,7 +400,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
assert
.
equal
(
whitespaceComputer
.
getFirstWhitespaceIndexAfterLineNumber
(
8
),
-
1
);
// --
assert
.
equal
(
whitespaceComputer
.
getFirstWhitespaceIndexAfterLineNumber
(
8
),
-
1
);
// --
// Do not really move a
// Do not really move a
whitespaceComputer
.
change
AfterLineNumberForWhitespace
(
a
,
1
);
whitespaceComputer
.
change
WhitespaceAfterLineNumber
(
a
,
1
);
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
a
);
// 1
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
a
);
// 1
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
1
);
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
1
);
...
@@ -420,7 +420,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
...
@@ -420,7 +420,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
// Do not really move a
// Do not really move a
whitespaceComputer
.
change
AfterLineNumberForWhitespace
(
a
,
2
);
whitespaceComputer
.
change
WhitespaceAfterLineNumber
(
a
,
2
);
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
a
);
// 2
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
a
);
// 2
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
2
);
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
2
);
...
@@ -440,7 +440,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
...
@@ -440,7 +440,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
// Change a to conflict with c => a gets placed after c
// Change a to conflict with c => a gets placed after c
whitespaceComputer
.
change
AfterLineNumberForWhitespace
(
a
,
3
);
whitespaceComputer
.
change
WhitespaceAfterLineNumber
(
a
,
3
);
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
c
);
// 3
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
c
);
// 3
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
3
);
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
3
);
...
@@ -460,7 +460,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
...
@@ -460,7 +460,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
// Make a no-op
// Make a no-op
whitespaceComputer
.
change
AfterLineNumberForWhitespace
(
c
,
3
);
whitespaceComputer
.
change
WhitespaceAfterLineNumber
(
c
,
3
);
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
c
);
// 3
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
c
);
// 3
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
3
);
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
3
);
...
@@ -481,7 +481,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
...
@@ -481,7 +481,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
// Conflict c with b => c gets placed after b
// Conflict c with b => c gets placed after b
whitespaceComputer
.
change
AfterLineNumberForWhitespace
(
c
,
7
);
whitespaceComputer
.
change
WhitespaceAfterLineNumber
(
c
,
7
);
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
a
);
// 3
assert
.
equal
(
whitespaceComputer
.
getIdForWhitespaceIndex
(
0
),
a
);
// 3
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
3
);
assert
.
equal
(
whitespaceComputer
.
getAfterLineNumberForWhitespaceIndex
(
0
),
3
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录