Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
5ab42104
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,发现更多精彩内容 >>
提交
5ab42104
编写于
2月 05, 2017
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Establish IViewLayout shape
上级
1c3d756b
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
137 addition
and
185 deletion
+137
-185
src/vs/editor/browser/view/viewImpl.ts
src/vs/editor/browser/view/viewImpl.ts
+13
-1
src/vs/editor/browser/view/viewOverlays.ts
src/vs/editor/browser/view/viewOverlays.ts
+11
-11
src/vs/editor/browser/viewLayout/layoutProvider.ts
src/vs/editor/browser/viewLayout/layoutProvider.ts
+9
-97
src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.ts
...er/viewParts/currentLineHighlight/currentLineHighlight.ts
+6
-6
src/vs/editor/browser/viewParts/currentLineMarginHighlight/currentLineMarginHighlight.ts
.../currentLineMarginHighlight/currentLineMarginHighlight.ts
+4
-4
src/vs/editor/browser/viewParts/lines/viewLines.ts
src/vs/editor/browser/viewParts/lines/viewLines.ts
+19
-19
src/vs/editor/browser/viewParts/margin/margin.ts
src/vs/editor/browser/viewParts/margin/margin.ts
+5
-5
src/vs/editor/browser/viewParts/rulers/rulers.ts
src/vs/editor/browser/viewParts/rulers/rulers.ts
+5
-5
src/vs/editor/browser/viewParts/viewZones/viewZones.ts
src/vs/editor/browser/viewParts/viewZones/viewZones.ts
+10
-10
src/vs/editor/common/view/renderingContext.ts
src/vs/editor/common/view/renderingContext.ts
+10
-20
src/vs/editor/common/viewModel/viewModel.ts
src/vs/editor/common/viewModel/viewModel.ts
+42
-4
src/vs/editor/common/viewModel/viewModelImpl.ts
src/vs/editor/common/viewModel/viewModelImpl.ts
+3
-3
未找到文件。
src/vs/editor/browser/view/viewImpl.ts
浏览文件 @
5ab42104
...
...
@@ -127,7 +127,6 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
// - whitespaces (a.k.a. view zones) management & co.
// - line heights updating & co.
this
.
layoutProvider
=
new
LayoutProvider
(
configuration
,
model
,
this
.
eventDispatcher
);
this
.
eventDispatcher
.
addEventHandler
(
this
.
layoutProvider
);
this
.
_scrollbar
=
new
EditorScrollbar
(
this
.
layoutProvider
.
getScrollable
(),
configuration
,
this
.
eventDispatcher
,
this
.
linesContent
,
this
.
domNode
,
this
.
overflowGuardContainer
);
...
...
@@ -448,6 +447,18 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
// --- begin event handlers
public
onModelFlushed
():
boolean
{
this
.
layoutProvider
.
onModelFlushed
();
return
false
;
}
public
onModelLinesDeleted
(
e
:
editorCommon
.
IViewLinesDeletedEvent
):
boolean
{
this
.
layoutProvider
.
onModelLinesDeleted
(
e
);
return
false
;
}
public
onModelLinesInserted
(
e
:
editorCommon
.
IViewLinesInsertedEvent
):
boolean
{
this
.
layoutProvider
.
onModelLinesInserted
(
e
);
return
false
;
}
public
onLayoutChanged
(
layoutInfo
:
editorCommon
.
EditorLayoutInfo
):
boolean
{
if
(
browser
.
isChrome
)
{
/* tslint:disable:no-unused-variable */
...
...
@@ -479,6 +490,7 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
if
(
e
.
viewInfo
.
ariaLabel
)
{
this
.
textArea
.
setAttribute
(
'
aria-label
'
,
this
.
_context
.
configuration
.
editor
.
viewInfo
.
ariaLabel
);
}
this
.
layoutProvider
.
onConfigurationChanged
(
e
);
return
false
;
}
public
onScrollChanged
(
e
:
editorCommon
.
IScrollEvent
):
boolean
{
...
...
src/vs/editor/browser/view/viewOverlays.ts
浏览文件 @
5ab42104
...
...
@@ -12,21 +12,21 @@ import { DynamicViewOverlay } from 'vs/editor/browser/view/dynamicViewOverlay';
import
{
Configuration
}
from
'
vs/editor/browser/config/configuration
'
;
import
{
ViewContext
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
IRenderingContext
,
IRestrictedRenderingContext
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
I
LayoutProvider
}
from
'
vs/editor/browser/viewLayout/layoutProvider
'
;
import
{
I
ViewLayout
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
ViewportData
}
from
'
vs/editor/common/viewLayout/viewLinesViewportData
'
;
export
class
ViewOverlays
extends
ViewLayer
<
ViewOverlayLine
>
{
private
_dynamicOverlays
:
DynamicViewOverlay
[];
private
_isFocused
:
boolean
;
_layoutProvider
:
ILayoutProvider
;
protected
_viewLayout
:
IViewLayout
;
constructor
(
context
:
ViewContext
,
layoutProvider
:
ILayoutProvider
)
{
constructor
(
context
:
ViewContext
,
viewLayout
:
IViewLayout
)
{
super
(
context
);
this
.
_dynamicOverlays
=
[];
this
.
_isFocused
=
false
;
this
.
_
layoutProvider
=
layoutProvider
;
this
.
_
viewLayout
=
viewLayout
;
this
.
domNode
.
setClassName
(
'
view-overlays
'
);
}
...
...
@@ -48,7 +48,7 @@ export class ViewOverlays extends ViewLayer<ViewOverlayLine> {
public
dispose
():
void
{
super
.
dispose
();
this
.
_
layoutProvider
=
null
;
this
.
_
viewLayout
=
null
;
for
(
let
i
=
0
,
len
=
this
.
_dynamicOverlays
.
length
;
i
<
len
;
i
++
)
{
let
dynamicOverlay
=
this
.
_dynamicOverlays
[
i
];
...
...
@@ -183,10 +183,10 @@ export class ContentViewOverlays extends ViewOverlays {
private
_scrollWidth
:
number
;
private
_contentWidth
:
number
;
constructor
(
context
:
ViewContext
,
layoutProvider
:
ILayoutProvider
)
{
super
(
context
,
layoutProvider
);
constructor
(
context
:
ViewContext
,
viewLayout
:
IViewLayout
)
{
super
(
context
,
viewLayout
);
this
.
_scrollWidth
=
this
.
_
layoutProvider
.
getScrollWidth
();
this
.
_scrollWidth
=
this
.
_
viewLayout
.
getScrollWidth
();
this
.
_contentWidth
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
contentWidth
;
this
.
domNode
.
setWidth
(
this
.
_scrollWidth
);
...
...
@@ -216,8 +216,8 @@ export class MarginViewOverlays extends ViewOverlays {
private
_contentLeft
:
number
;
private
_canUseTranslate3d
:
boolean
;
constructor
(
context
:
ViewContext
,
layoutProvider
:
ILayoutProvider
)
{
super
(
context
,
layoutProvider
);
constructor
(
context
:
ViewContext
,
viewLayout
:
IViewLayout
)
{
super
(
context
,
viewLayout
);
this
.
_contentLeft
=
context
.
configuration
.
editor
.
layoutInfo
.
contentLeft
;
this
.
_canUseTranslate3d
=
context
.
configuration
.
editor
.
viewInfo
.
canUseTranslate3d
;
...
...
@@ -250,7 +250,7 @@ export class MarginViewOverlays extends ViewOverlays {
_viewOverlaysRender
(
ctx
:
IRestrictedRenderingContext
):
void
{
super
.
_viewOverlaysRender
(
ctx
);
let
height
=
Math
.
min
(
this
.
_
layoutProvider
.
getTotalHeight
(),
1000000
);
let
height
=
Math
.
min
(
this
.
_
viewLayout
.
getTotalHeight
(),
1000000
);
this
.
domNode
.
setHeight
(
height
);
this
.
domNode
.
setWidth
(
this
.
_contentLeft
);
}
...
...
src/vs/editor/browser/viewLayout/layoutProvider.ts
浏览文件 @
5ab42104
...
...
@@ -8,89 +8,11 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import
{
Scrollable
,
ScrollbarVisibility
}
from
'
vs/base/common/scrollable
'
;
import
*
as
editorCommon
from
'
vs/editor/common/editorCommon
'
;
import
{
LinesLayout
}
from
'
vs/editor/common/viewLayout/linesLayout
'
;
import
{
ViewEventHandler
}
from
'
vs/editor/common/viewModel/viewEventHandler
'
;
import
{
IViewModel
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
IViewLayout
,
IViewModel
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
IPartialViewLinesViewportData
}
from
'
vs/editor/common/viewLayout/viewLinesViewportData
'
;
import
{
IViewEventBus
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
ILayoutProvider
as
IRenderingLayoutProvider
}
from
'
vs/editor/common/view/renderingContext
'
;
export
interface
IWhitespaceManager
{
/**
* Reserve rendering space.
* @param height is specified in pixels.
* @return an identifier that can be later used to remove or change the whitespace.
*/
addWhitespace
(
afterLineNumber
:
number
,
ordinal
:
number
,
height
:
number
):
number
;
/**
* Change the properties of a whitespace.
* @param height is specified in pixels.
*/
changeWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
,
newHeight
:
number
):
boolean
;
/**
* Remove rendering space
*/
removeWhitespace
(
id
:
number
):
boolean
;
/**
* Get the layout information for whitespaces currently in the viewport
*/
getWhitespaceViewportData
():
editorCommon
.
IViewWhitespaceViewportData
[];
getWhitespaces
():
editorCommon
.
IEditorWhitespace
[];
}
export
interface
ILayoutProvider
extends
IVerticalLayoutProvider
,
IScrollingProvider
{
dispose
():
void
;
getCurrentViewport
():
editorCommon
.
Viewport
;
onMaxLineWidthChanged
(
width
:
number
):
void
;
saveState
():
editorCommon
.
IViewState
;
restoreState
(
state
:
editorCommon
.
IViewState
):
void
;
}
export
interface
IScrollingProvider
{
// This is for the glyphs, line numbers, etc.
getScrolledTopFromAbsoluteTop
(
top
:
number
):
number
;
getScrollWidth
():
number
;
getScrollLeft
():
number
;
getScrollHeight
():
number
;
getScrollTop
():
number
;
setScrollPosition
(
position
:
editorCommon
.
INewScrollPosition
):
void
;
}
export
interface
IVerticalLayoutProvider
{
/**
* Compute vertical offset (top) of line number
*/
getVerticalOffsetForLineNumber
(
lineNumber
:
number
):
number
;
/**
* Return line number at `verticalOffset` or closest line number
*/
getLineNumberAtVerticalOffset
(
verticalOffset
:
number
):
number
;
/**
* Compute content height (including one extra scroll page if necessary)
*/
getTotalHeight
():
number
;
/**
* Compute the lines that need to be rendered in the current viewport position.
*/
getLinesViewportData
():
IPartialViewLinesViewportData
;
}
export
class
LayoutProvider
extends
ViewEventHandler
implements
IDisposable
,
ILayoutProvider
,
IWhitespaceManager
,
IRenderingLayoutProvider
{
export
class
LayoutProvider
implements
IDisposable
,
IViewLayout
{
static
LINES_HORIZONTAL_EXTRA_PX
=
30
;
...
...
@@ -102,8 +24,6 @@ export class LayoutProvider extends ViewEventHandler implements IDisposable, ILa
private
_scrollable
:
Scrollable
;
constructor
(
configuration
:
editorCommon
.
IConfiguration
,
model
:
IViewModel
,
privateViewEventBus
:
IViewEventBus
)
{
super
();
this
.
_scrollable
=
new
Scrollable
();
this
.
_scrollable
.
updateState
({
width
:
configuration
.
editor
.
layoutInfo
.
contentWidth
,
...
...
@@ -131,38 +51,31 @@ export class LayoutProvider extends ViewEventHandler implements IDisposable, ILa
return
this
.
_scrollable
;
}
private
_updateLineCount
():
void
{
this
.
_configuration
.
setMaxLineNumber
(
this
.
_model
.
getMaxLineNumber
());
}
public
onHeightMaybeChanged
():
void
{
this
.
_updateHeight
();
}
// ---- begin view event handlers
public
onModelFlushed
():
boolean
{
public
onModelFlushed
():
void
{
this
.
_linesLayout
.
onModelFlushed
(
this
.
_model
.
getLineCount
());
this
.
_
updateLineCount
(
);
this
.
_
configuration
.
setMaxLineNumber
(
this
.
_model
.
getMaxLineNumber
()
);
this
.
_updateHeight
();
return
false
;
}
public
onModelLinesDeleted
(
e
:
editorCommon
.
IViewLinesDeletedEvent
):
boolean
{
public
onModelLinesDeleted
(
e
:
editorCommon
.
IViewLinesDeletedEvent
):
void
{
this
.
_linesLayout
.
onModelLinesDeleted
(
e
.
fromLineNumber
,
e
.
toLineNumber
);
this
.
_
updateLineCount
(
);
this
.
_
configuration
.
setMaxLineNumber
(
this
.
_model
.
getMaxLineNumber
()
);
this
.
_updateHeight
();
return
false
;
}
public
onModelLinesInserted
(
e
:
editorCommon
.
IViewLinesInsertedEvent
):
boolean
{
public
onModelLinesInserted
(
e
:
editorCommon
.
IViewLinesInsertedEvent
):
void
{
this
.
_linesLayout
.
onModelLinesInserted
(
e
.
fromLineNumber
,
e
.
toLineNumber
);
this
.
_
updateLineCount
(
);
this
.
_
configuration
.
setMaxLineNumber
(
this
.
_model
.
getMaxLineNumber
()
);
this
.
_updateHeight
();
return
false
;
}
public
onConfigurationChanged
(
e
:
editorCommon
.
IConfigurationChangedEvent
):
boolean
{
public
onConfigurationChanged
(
e
:
editorCommon
.
IConfigurationChangedEvent
):
void
{
if
(
e
.
lineHeight
)
{
this
.
_linesLayout
.
setLineHeight
(
this
.
_configuration
.
editor
.
lineHeight
);
}
...
...
@@ -174,7 +87,6 @@ export class LayoutProvider extends ViewEventHandler implements IDisposable, ILa
this
.
_emitLayoutChangedEvent
();
}
this
.
_updateHeight
();
return
false
;
}
private
_updateHeight
():
void
{
...
...
src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.ts
浏览文件 @
5ab42104
...
...
@@ -10,33 +10,33 @@ import * as editorCommon from 'vs/editor/common/editorCommon';
import
{
DynamicViewOverlay
}
from
'
vs/editor/browser/view/dynamicViewOverlay
'
;
import
{
ViewContext
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
IRenderingContext
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
I
LayoutProvider
}
from
'
vs/editor/browser/viewLayout/layoutProvider
'
;
import
{
I
ViewLayout
}
from
'
vs/editor/common/viewModel/viewModel
'
;
export
class
CurrentLineHighlightOverlay
extends
DynamicViewOverlay
{
private
_context
:
ViewContext
;
private
_lineHeight
:
number
;
private
_readOnly
:
boolean
;
private
_renderLineHighlight
:
'
none
'
|
'
gutter
'
|
'
line
'
|
'
all
'
;
private
_
layoutProvider
:
ILayoutProvider
;
private
_
viewLayout
:
IViewLayout
;
private
_selectionIsEmpty
:
boolean
;
private
_primaryCursorIsInEditableRange
:
boolean
;
private
_primaryCursorLineNumber
:
number
;
private
_scrollWidth
:
number
;
private
_contentWidth
:
number
;
constructor
(
context
:
ViewContext
,
layoutProvider
:
ILayoutProvider
)
{
constructor
(
context
:
ViewContext
,
viewLayout
:
IViewLayout
)
{
super
();
this
.
_context
=
context
;
this
.
_lineHeight
=
this
.
_context
.
configuration
.
editor
.
lineHeight
;
this
.
_readOnly
=
this
.
_context
.
configuration
.
editor
.
readOnly
;
this
.
_renderLineHighlight
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
renderLineHighlight
;
this
.
_
layoutProvider
=
layoutProvider
;
this
.
_
viewLayout
=
viewLayout
;
this
.
_selectionIsEmpty
=
true
;
this
.
_primaryCursorIsInEditableRange
=
true
;
this
.
_primaryCursorLineNumber
=
1
;
this
.
_scrollWidth
=
this
.
_
layoutProvider
.
getScrollWidth
();
this
.
_scrollWidth
=
this
.
_
viewLayout
.
getScrollWidth
();
this
.
_contentWidth
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
contentWidth
;
this
.
_context
.
addEventHandler
(
this
);
...
...
@@ -53,7 +53,7 @@ export class CurrentLineHighlightOverlay extends DynamicViewOverlay {
this
.
_primaryCursorIsInEditableRange
=
true
;
this
.
_selectionIsEmpty
=
true
;
this
.
_primaryCursorLineNumber
=
1
;
this
.
_scrollWidth
=
this
.
_
layoutProvider
.
getScrollWidth
();
this
.
_scrollWidth
=
this
.
_
viewLayout
.
getScrollWidth
();
return
true
;
}
public
onModelLinesDeleted
(
e
:
editorCommon
.
IViewLinesDeletedEvent
):
boolean
{
...
...
src/vs/editor/browser/viewParts/currentLineMarginHighlight/currentLineMarginHighlight.ts
浏览文件 @
5ab42104
...
...
@@ -10,24 +10,24 @@ import * as editorCommon from 'vs/editor/common/editorCommon';
import
{
DynamicViewOverlay
}
from
'
vs/editor/browser/view/dynamicViewOverlay
'
;
import
{
ViewContext
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
IRenderingContext
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
I
LayoutProvider
}
from
'
vs/editor/browser/viewLayout/layoutProvider
'
;
import
{
I
ViewLayout
}
from
'
vs/editor/common/viewModel/viewModel
'
;
export
class
CurrentLineMarginHighlightOverlay
extends
DynamicViewOverlay
{
private
_context
:
ViewContext
;
private
_lineHeight
:
number
;
private
_renderLineHighlight
:
'
none
'
|
'
gutter
'
|
'
line
'
|
'
all
'
;
private
_
layoutProvider
:
ILayoutProvider
;
private
_
viewLayout
:
IViewLayout
;
private
_primaryCursorIsInEditableRange
:
boolean
;
private
_primaryCursorLineNumber
:
number
;
private
_contentLeft
:
number
;
constructor
(
context
:
ViewContext
,
layoutProvider
:
ILayoutProvider
)
{
constructor
(
context
:
ViewContext
,
viewLayout
:
IViewLayout
)
{
super
();
this
.
_context
=
context
;
this
.
_lineHeight
=
this
.
_context
.
configuration
.
editor
.
lineHeight
;
this
.
_renderLineHighlight
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
renderLineHighlight
;
this
.
_
layoutProvider
=
layoutProvider
;
this
.
_
viewLayout
=
viewLayout
;
this
.
_primaryCursorIsInEditableRange
=
true
;
this
.
_primaryCursorLineNumber
=
1
;
...
...
src/vs/editor/browser/viewParts/lines/viewLines.ts
浏览文件 @
5ab42104
...
...
@@ -17,7 +17,7 @@ import { Configuration } from 'vs/editor/browser/config/configuration';
import
{
ViewContext
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
ViewportData
}
from
'
vs/editor/common/viewLayout/viewLinesViewportData
'
;
import
{
IViewLines
,
VisibleRange
,
LineVisibleRanges
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
I
LayoutProvider
}
from
'
vs/editor/browser/viewLayout/layoutProvider
'
;
import
{
I
ViewLayout
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
PartFingerprint
,
PartFingerprints
}
from
'
vs/editor/browser/view/viewPart
'
;
class
LastRenderedData
{
...
...
@@ -58,7 +58,7 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
private
static
HORIZONTAL_EXTRA_PX
=
30
;
private
_
layoutProvider
:
ILayoutProvider
;
private
_
viewLayout
:
IViewLayout
;
private
_textRangeRestingSpot
:
HTMLElement
;
// --- config
...
...
@@ -75,14 +75,14 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
private
_lastCursorRevealRangeHorizontallyEvent
:
editorCommon
.
IViewRevealRangeEvent
;
private
_lastRenderedData
:
LastRenderedData
;
constructor
(
context
:
ViewContext
,
layoutProvider
:
ILayoutProvider
)
{
constructor
(
context
:
ViewContext
,
viewLayout
:
IViewLayout
)
{
super
(
context
);
this
.
_lineHeight
=
this
.
_context
.
configuration
.
editor
.
lineHeight
;
this
.
_isViewportWrapping
=
this
.
_context
.
configuration
.
editor
.
wrappingInfo
.
isViewportWrapping
;
this
.
_revealHorizontalRightPadding
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
revealHorizontalRightPadding
;
this
.
_canUseTranslate3d
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
canUseTranslate3d
;
this
.
_viewLineOptions
=
new
ViewLineOptions
(
this
.
_context
.
configuration
);
this
.
_
layoutProvider
=
layoutProvider
;
this
.
_
viewLayout
=
viewLayout
;
PartFingerprints
.
write
(
this
.
domNode
.
domNode
,
PartFingerprint
.
ViewLines
);
this
.
domNode
.
setClassName
(
ClassNames
.
VIEW_LINES
);
...
...
@@ -103,7 +103,7 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
public
dispose
():
void
{
this
.
_asyncUpdateLineWidths
.
dispose
();
this
.
_
layoutProvider
=
null
;
this
.
_
viewLayout
=
null
;
super
.
dispose
();
}
...
...
@@ -175,13 +175,13 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
}
public
onCursorRevealRange
(
e
:
editorCommon
.
IViewRevealRangeEvent
):
boolean
{
let
newScrollTop
=
this
.
_computeScrollTopToRevealRange
(
this
.
_
layoutProvider
.
getCurrentViewport
(),
e
.
range
,
e
.
verticalType
);
let
newScrollTop
=
this
.
_computeScrollTopToRevealRange
(
this
.
_
viewLayout
.
getCurrentViewport
(),
e
.
range
,
e
.
verticalType
);
if
(
e
.
revealHorizontal
)
{
this
.
_lastCursorRevealRangeHorizontallyEvent
=
e
;
}
this
.
_
layoutProvider
.
setScrollPosition
({
this
.
_
viewLayout
.
setScrollPosition
({
scrollTop
:
newScrollTop
});
...
...
@@ -189,9 +189,9 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
}
public
onCursorScrollRequest
(
e
:
editorCommon
.
IViewScrollRequestEvent
):
boolean
{
let
currentScrollTop
=
this
.
_
layoutProvider
.
getScrollTop
();
let
currentScrollTop
=
this
.
_
viewLayout
.
getScrollTop
();
let
newScrollTop
=
currentScrollTop
+
e
.
deltaLines
*
this
.
_lineHeight
;
this
.
_
layoutProvider
.
setScrollPosition
({
this
.
_
viewLayout
.
setScrollPosition
({
scrollTop
:
newScrollTop
});
return
true
;
...
...
@@ -371,7 +371,7 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
continue
;
}
let
adjustedLineNumberVerticalOffset
=
this
.
_
layoutProvider
.
getVerticalOffsetForLineNumber
(
lineNumber
)
-
bigNumbersDelta
+
deltaTop
;
let
adjustedLineNumberVerticalOffset
=
this
.
_
viewLayout
.
getVerticalOffsetForLineNumber
(
lineNumber
)
-
bigNumbersDelta
+
deltaTop
;
for
(
let
i
=
0
,
len
=
visibleRangesForLine
.
length
;
i
<
len
;
i
++
)
{
result
.
push
(
new
VisibleRange
(
adjustedLineNumberVerticalOffset
,
visibleRangesForLine
[
i
].
left
,
visibleRangesForLine
[
i
].
width
));
}
...
...
@@ -420,8 +420,8 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
super
.
_renderLines
(
viewportData
);
this
.
_lastRenderedData
.
setBigNumbersDelta
(
viewportData
.
bigNumbersDelta
);
this
.
_lastRenderedData
.
setCurrentVisibleRange
(
viewportData
.
visibleRange
);
this
.
domNode
.
setWidth
(
this
.
_
layoutProvider
.
getScrollWidth
());
this
.
domNode
.
setHeight
(
Math
.
min
(
this
.
_
layoutProvider
.
getTotalHeight
(),
1000000
));
this
.
domNode
.
setWidth
(
this
.
_
viewLayout
.
getScrollWidth
());
this
.
domNode
.
setHeight
(
Math
.
min
(
this
.
_
viewLayout
.
getTotalHeight
(),
1000000
));
// (2) execute DOM writing that forces sync layout (e.g. textArea manipulation)
onAfterLinesRendered
();
...
...
@@ -446,21 +446,21 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
}
// set `scrollLeft`
this
.
_
layoutProvider
.
setScrollPosition
({
this
.
_
viewLayout
.
setScrollPosition
({
scrollLeft
:
newScrollLeft
.
scrollLeft
});
}
// (4) handle scrolling
if
(
this
.
_canUseTranslate3d
)
{
let
transform
=
'
translate3d(
'
+
-
this
.
_
layoutProvider
.
getScrollLeft
()
+
'
px,
'
+
viewportData
.
visibleRangesDeltaTop
+
'
px, 0px)
'
;
let
transform
=
'
translate3d(
'
+
-
this
.
_
viewLayout
.
getScrollLeft
()
+
'
px,
'
+
viewportData
.
visibleRangesDeltaTop
+
'
px, 0px)
'
;
StyleMutator
.
setTransform
(
<
HTMLElement
>
this
.
domNode
.
domNode
.
parentNode
,
transform
);
StyleMutator
.
setTop
(
<
HTMLElement
>
this
.
domNode
.
domNode
.
parentNode
,
0
);
// TODO@Alex
StyleMutator
.
setLeft
(
<
HTMLElement
>
this
.
domNode
.
domNode
.
parentNode
,
0
);
// TODO@Alex
}
else
{
StyleMutator
.
setTransform
(
<
HTMLElement
>
this
.
domNode
.
domNode
.
parentNode
,
''
);
StyleMutator
.
setTop
(
<
HTMLElement
>
this
.
domNode
.
domNode
.
parentNode
,
viewportData
.
visibleRangesDeltaTop
);
// TODO@Alex
StyleMutator
.
setLeft
(
<
HTMLElement
>
this
.
domNode
.
domNode
.
parentNode
,
-
this
.
_
layoutProvider
.
getScrollLeft
());
// TODO@Alex
StyleMutator
.
setLeft
(
<
HTMLElement
>
this
.
domNode
.
domNode
.
parentNode
,
-
this
.
_
viewLayout
.
getScrollLeft
());
// TODO@Alex
}
// Update max line width (not so important, it is just so the horizontal scrollbar doesn't get too small)
...
...
@@ -473,7 +473,7 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
let
iLineWidth
=
Math
.
ceil
(
lineWidth
);
if
(
this
.
_maxLineWidth
<
iLineWidth
)
{
this
.
_maxLineWidth
=
iLineWidth
;
this
.
_
layoutProvider
.
onMaxLineWidthChanged
(
this
.
_maxLineWidth
);
this
.
_
viewLayout
.
onMaxLineWidthChanged
(
this
.
_maxLineWidth
);
}
}
...
...
@@ -485,8 +485,8 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
let
boxEndY
:
number
;
// Have a box that includes one extra line height (for the horizontal scrollbar)
boxStartY
=
this
.
_
layoutProvider
.
getVerticalOffsetForLineNumber
(
range
.
startLineNumber
);
boxEndY
=
this
.
_
layoutProvider
.
getVerticalOffsetForLineNumber
(
range
.
endLineNumber
)
+
this
.
_lineHeight
;
boxStartY
=
this
.
_
viewLayout
.
getVerticalOffsetForLineNumber
(
range
.
startLineNumber
);
boxEndY
=
this
.
_
viewLayout
.
getVerticalOffsetForLineNumber
(
range
.
endLineNumber
)
+
this
.
_lineHeight
;
if
(
verticalType
===
editorCommon
.
VerticalRevealType
.
Simple
||
verticalType
===
editorCommon
.
VerticalRevealType
.
Bottom
)
{
// Reveal one line more when the last line would be covered by the scrollbar - arrow down case or revealing a line explicitly at bottom
boxEndY
+=
this
.
_lineHeight
;
...
...
@@ -522,7 +522,7 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
};
}
let
viewport
=
this
.
_
layoutProvider
.
getCurrentViewport
();
let
viewport
=
this
.
_
viewLayout
.
getCurrentViewport
();
let
viewportStartX
=
viewport
.
left
;
let
viewportEndX
=
viewportStartX
+
viewport
.
width
;
...
...
src/vs/editor/browser/viewParts/margin/margin.ts
浏览文件 @
5ab42104
...
...
@@ -11,20 +11,20 @@ import { ClassNames } from 'vs/editor/browser/editorBrowser';
import
{
ViewPart
}
from
'
vs/editor/browser/view/viewPart
'
;
import
{
ViewContext
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
IRenderingContext
,
IRestrictedRenderingContext
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
I
LayoutProvider
}
from
'
vs/editor/browser/viewLayout/layoutProvider
'
;
import
{
I
ViewLayout
}
from
'
vs/editor/common/viewModel/viewModel
'
;
export
class
Margin
extends
ViewPart
{
public
domNode
:
HTMLElement
;
private
_
layoutProvider
:
ILayoutProvider
;
private
_
viewLayout
:
IViewLayout
;
private
_canUseTranslate3d
:
boolean
;
private
_contentLeft
:
number
;
private
_glyphMarginLeft
:
number
;
private
_glyphMarginWidth
:
number
;
private
_glyphMarginBackgroundDomNode
:
FastDomNode
;
constructor
(
context
:
ViewContext
,
layoutProvider
:
ILayoutProvider
)
{
constructor
(
context
:
ViewContext
,
viewLayout
:
IViewLayout
)
{
super
(
context
);
this
.
_
layoutProvider
=
layoutProvider
;
this
.
_
viewLayout
=
viewLayout
;
this
.
_canUseTranslate3d
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
canUseTranslate3d
;
this
.
_contentLeft
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
contentLeft
;
this
.
_glyphMarginLeft
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
glyphMarginLeft
;
...
...
@@ -89,7 +89,7 @@ export class Margin extends ViewPart {
StyleMutator
.
setTop
(
this
.
domNode
,
ctx
.
viewportData
.
visibleRangesDeltaTop
);
}
let
height
=
Math
.
min
(
this
.
_
layoutProvider
.
getTotalHeight
(),
1000000
);
let
height
=
Math
.
min
(
this
.
_
viewLayout
.
getTotalHeight
(),
1000000
);
StyleMutator
.
setHeight
(
this
.
domNode
,
height
);
StyleMutator
.
setWidth
(
this
.
domNode
,
this
.
_contentLeft
);
...
...
src/vs/editor/browser/viewParts/rulers/rulers.ts
浏览文件 @
5ab42104
...
...
@@ -11,19 +11,19 @@ import * as editorCommon from 'vs/editor/common/editorCommon';
import
{
ViewPart
}
from
'
vs/editor/browser/view/viewPart
'
;
import
{
ViewContext
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
IRenderingContext
,
IRestrictedRenderingContext
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
I
LayoutProvider
}
from
'
vs/editor/browser/viewLayout/layoutProvider
'
;
import
{
I
ViewLayout
}
from
'
vs/editor/common/viewModel/viewModel
'
;
export
class
Rulers
extends
ViewPart
{
public
domNode
:
HTMLElement
;
private
_
layoutProvider
:
ILayoutProvider
;
private
_
viewLayout
:
IViewLayout
;
private
_rulers
:
number
[];
private
_height
:
number
;
private
_typicalHalfwidthCharacterWidth
:
number
;
constructor
(
context
:
ViewContext
,
layoutProvider
:
ILayoutProvider
)
{
constructor
(
context
:
ViewContext
,
viewLayout
:
IViewLayout
)
{
super
(
context
);
this
.
_
layoutProvider
=
layoutProvider
;
this
.
_
viewLayout
=
viewLayout
;
this
.
domNode
=
document
.
createElement
(
'
div
'
);
this
.
domNode
.
className
=
'
view-rulers
'
;
this
.
_rulers
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
rulers
;
...
...
@@ -79,7 +79,7 @@ export class Rulers extends ViewPart {
this
.
domNode
.
appendChild
(
node
);
}
StyleMutator
.
setHeight
(
node
,
Math
.
min
(
this
.
_
layoutProvider
.
getTotalHeight
(),
1000000
));
StyleMutator
.
setHeight
(
node
,
Math
.
min
(
this
.
_
viewLayout
.
getTotalHeight
(),
1000000
));
StyleMutator
.
setLeft
(
node
,
this
.
_rulers
[
i
]
*
this
.
_typicalHalfwidthCharacterWidth
);
}
}
...
...
src/vs/editor/browser/viewParts/viewZones/viewZones.ts
浏览文件 @
5ab42104
...
...
@@ -12,7 +12,7 @@ import { ViewPart } from 'vs/editor/browser/view/viewPart';
import
{
ViewContext
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
{
IRenderingContext
,
IRestrictedRenderingContext
}
from
'
vs/editor/common/view/renderingContext
'
;
import
{
I
WhitespaceManager
}
from
'
vs/editor/browser/viewLayout/layoutProvider
'
;
import
{
I
ViewLayout
}
from
'
vs/editor/common/viewModel/viewModel
'
;
export
interface
IMyViewZone
{
whitespaceId
:
number
;
...
...
@@ -31,7 +31,7 @@ interface IComputedViewZoneProps {
export
class
ViewZones
extends
ViewPart
{
private
_
whitespaceManager
:
IWhitespaceManager
;
private
_
viewLayout
:
IViewLayout
;
private
_zones
:
{
[
id
:
string
]:
IMyViewZone
;
};
private
_lineHeight
:
number
;
private
_contentWidth
:
number
;
...
...
@@ -41,12 +41,12 @@ export class ViewZones extends ViewPart {
public
marginDomNode
:
HTMLElement
;
constructor
(
context
:
ViewContext
,
whitespaceManager
:
IWhitespaceManager
)
{
constructor
(
context
:
ViewContext
,
viewLayout
:
IViewLayout
)
{
super
(
context
);
this
.
_lineHeight
=
this
.
_context
.
configuration
.
editor
.
lineHeight
;
this
.
_contentWidth
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
contentWidth
;
this
.
_contentLeft
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
contentLeft
;
this
.
_
whitespaceManager
=
whitespaceManager
;
this
.
_
viewLayout
=
viewLayout
;
this
.
domNode
=
document
.
createElement
(
'
div
'
);
this
.
domNode
.
className
=
ClassNames
.
VIEW_ZONES
;
...
...
@@ -65,7 +65,7 @@ export class ViewZones extends ViewPart {
public
dispose
():
void
{
super
.
dispose
();
this
.
_
whitespaceManager
=
null
;
this
.
_
viewLayout
=
null
;
this
.
_zones
=
{};
}
...
...
@@ -79,7 +79,7 @@ export class ViewZones extends ViewPart {
let
id
=
keys
[
i
];
let
zone
=
this
.
_zones
[
id
];
let
props
=
this
.
_computeWhitespaceProps
(
zone
.
delegate
);
if
(
this
.
_
whitespaceManager
.
changeWhitespace
(
parseInt
(
id
,
10
),
props
.
afterViewLineNumber
,
props
.
heightInPx
))
{
if
(
this
.
_
viewLayout
.
changeWhitespace
(
parseInt
(
id
,
10
),
props
.
afterViewLineNumber
,
props
.
heightInPx
))
{
this
.
_safeCallOnComputedHeight
(
zone
.
delegate
,
props
.
heightInPx
);
hadAChange
=
true
;
}
...
...
@@ -188,7 +188,7 @@ export class ViewZones extends ViewPart {
public
addZone
(
zone
:
IViewZone
):
number
{
let
props
=
this
.
_computeWhitespaceProps
(
zone
);
let
whitespaceId
=
this
.
_
whitespaceManager
.
addWhitespace
(
props
.
afterViewLineNumber
,
this
.
_getZoneOrdinal
(
zone
),
props
.
heightInPx
);
let
whitespaceId
=
this
.
_
viewLayout
.
addWhitespace
(
props
.
afterViewLineNumber
,
this
.
_getZoneOrdinal
(
zone
),
props
.
heightInPx
);
let
myZone
:
IMyViewZone
=
{
whitespaceId
:
whitespaceId
,
...
...
@@ -224,7 +224,7 @@ export class ViewZones extends ViewPart {
if
(
this
.
_zones
.
hasOwnProperty
(
id
.
toString
()))
{
let
zone
=
this
.
_zones
[
id
.
toString
()];
delete
this
.
_zones
[
id
.
toString
()];
this
.
_
whitespaceManager
.
removeWhitespace
(
zone
.
whitespaceId
);
this
.
_
viewLayout
.
removeWhitespace
(
zone
.
whitespaceId
);
zone
.
delegate
.
domNode
.
removeAttribute
(
'
monaco-visible-view-zone
'
);
zone
.
delegate
.
domNode
.
removeAttribute
(
'
monaco-view-zone
'
);
...
...
@@ -249,7 +249,7 @@ export class ViewZones extends ViewPart {
let
zone
=
this
.
_zones
[
id
.
toString
()];
let
props
=
this
.
_computeWhitespaceProps
(
zone
.
delegate
);
// let newOrdinal = this._getZoneOrdinal(zone.delegate);
changed
=
this
.
_
whitespaceManager
.
changeWhitespace
(
zone
.
whitespaceId
,
props
.
afterViewLineNumber
,
props
.
heightInPx
)
||
changed
;
changed
=
this
.
_
viewLayout
.
changeWhitespace
(
zone
.
whitespaceId
,
props
.
afterViewLineNumber
,
props
.
heightInPx
)
||
changed
;
// TODO@Alex: change `newOrdinal` too
if
(
changed
)
{
...
...
@@ -306,7 +306,7 @@ export class ViewZones extends ViewPart {
}
public
render
(
ctx
:
IRestrictedRenderingContext
):
void
{
let
visibleWhitespaces
=
this
.
_
whitespaceManager
.
getWhitespaceViewportData
();
let
visibleWhitespaces
=
this
.
_
viewLayout
.
getWhitespaceViewportData
();
let
visibleZones
:
{
[
id
:
string
]:
editorCommon
.
IViewWhitespaceViewportData
;
}
=
{};
let
hasVisibleZone
=
false
;
...
...
src/vs/editor/common/view/renderingContext.ts
浏览文件 @
5ab42104
...
...
@@ -4,20 +4,10 @@
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
{
ViewModelDecoration
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
IViewLayout
,
ViewModelDecoration
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
ViewportData
}
from
'
vs/editor/common/viewLayout/viewLinesViewportData
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
{
Viewport
}
from
'
vs/editor/common/editorCommon
'
;
export
interface
ILayoutProvider
{
getScrollWidth
():
number
;
getScrollHeight
():
number
;
getCurrentViewport
():
Viewport
;
getScrolledTopFromAbsoluteTop
(
top
:
number
):
number
;
getVerticalOffsetForLineNumber
(
lineNumber
:
number
):
number
;
}
export
interface
IViewLines
{
linesVisibleRangesForRange
(
range
:
Range
,
includeNewLines
:
boolean
):
LineVisibleRanges
[];
...
...
@@ -41,21 +31,21 @@ export class RenderingContext implements IRenderingContext {
public
readonly
viewportHeight
:
number
;
public
readonly
viewportLeft
:
number
;
private
readonly
_
layoutProvider
:
ILayoutProvider
;
private
readonly
_
viewLayout
:
IViewLayout
;
private
readonly
_viewLines
:
IViewLines
;
constructor
(
viewLines
:
IViewLines
,
layoutProvider
:
ILayoutProvider
,
viewportData
:
ViewportData
)
{
constructor
(
viewLines
:
IViewLines
,
viewLayout
:
IViewLayout
,
viewportData
:
ViewportData
)
{
this
.
_viewLines
=
viewLines
;
this
.
_
layoutProvider
=
layoutProvider
;
this
.
_
viewLayout
=
viewLayout
;
this
.
viewportData
=
viewportData
;
this
.
scrollWidth
=
this
.
_
layoutProvider
.
getScrollWidth
();
this
.
scrollHeight
=
this
.
_
layoutProvider
.
getScrollHeight
();
this
.
scrollWidth
=
this
.
_
viewLayout
.
getScrollWidth
();
this
.
scrollHeight
=
this
.
_
viewLayout
.
getScrollHeight
();
this
.
visibleRange
=
this
.
viewportData
.
visibleRange
;
this
.
bigNumbersDelta
=
this
.
viewportData
.
bigNumbersDelta
;
const
vInfo
=
this
.
_
layoutProvider
.
getCurrentViewport
();
const
vInfo
=
this
.
_
viewLayout
.
getCurrentViewport
();
this
.
viewportWidth
=
vInfo
.
width
;
this
.
viewportHeight
=
vInfo
.
height
;
this
.
viewportLeft
=
vInfo
.
left
;
...
...
@@ -63,12 +53,12 @@ export class RenderingContext implements IRenderingContext {
}
public
getScrolledTopFromAbsoluteTop
(
absoluteTop
:
number
):
number
{
return
this
.
_
layoutProvider
.
getScrolledTopFromAbsoluteTop
(
absoluteTop
);
return
this
.
_
viewLayout
.
getScrolledTopFromAbsoluteTop
(
absoluteTop
);
}
public
getViewportVerticalOffsetForLineNumber
(
lineNumber
:
number
):
number
{
const
verticalOffset
=
this
.
_
layoutProvider
.
getVerticalOffsetForLineNumber
(
lineNumber
);
const
scrolledTop
=
this
.
_
layoutProvider
.
getScrolledTopFromAbsoluteTop
(
verticalOffset
);
const
verticalOffset
=
this
.
_
viewLayout
.
getVerticalOffsetForLineNumber
(
lineNumber
);
const
scrolledTop
=
this
.
_
viewLayout
.
getScrolledTopFromAbsoluteTop
(
verticalOffset
);
return
scrolledTop
;
}
...
...
src/vs/editor/common/viewModel/viewModel.ts
浏览文件 @
5ab42104
...
...
@@ -5,11 +5,49 @@
'
use strict
'
;
import
{
IEventEmitter
}
from
'
vs/base/common/eventEmitter
'
;
import
{
IModelDecoration
,
EndOfLinePreference
,
IPosition
}
from
'
vs/editor/common/editorCommon
'
;
import
{
I
NewScrollPosition
,
IViewWhitespaceViewportData
,
Viewport
,
I
ModelDecoration
,
EndOfLinePreference
,
IPosition
}
from
'
vs/editor/common/editorCommon
'
;
import
{
ViewLineToken
}
from
'
vs/editor/common/core/viewLineToken
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Selection
}
from
'
vs/editor/common/core/selection
'
;
// import { Viewport } from 'vs/editor/common/editorCommon';
export
interface
IViewLayout
{
onMaxLineWidthChanged
(
width
:
number
):
void
;
getScrollLeft
():
number
;
getScrollWidth
():
number
;
getScrollHeight
():
number
;
getScrollTop
():
number
;
getCurrentViewport
():
Viewport
;
getTotalHeight
():
number
;
getScrolledTopFromAbsoluteTop
(
top
:
number
):
number
;
getVerticalOffsetForLineNumber
(
lineNumber
:
number
):
number
;
setScrollPosition
(
position
:
INewScrollPosition
):
void
;
// --------------- Begin vertical whitespace management
/**
* Reserve rendering space.
* @return an identifier that can be later used to remove or change the whitespace.
*/
addWhitespace
(
afterLineNumber
:
number
,
ordinal
:
number
,
height
:
number
):
number
;
/**
* Change the properties of a whitespace.
*/
changeWhitespace
(
id
:
number
,
newAfterLineNumber
:
number
,
newHeight
:
number
):
boolean
;
/**
* Remove rendering space
*/
removeWhitespace
(
id
:
number
):
boolean
;
/**
* Get the layout information for whitespaces currently in the viewport
*/
getWhitespaceViewportData
():
IViewWhitespaceViewportData
[];
// --------------- End vertical whitespace management
}
export
interface
ICoordinatesConverter
{
// View -> Model conversion and related methods
...
...
@@ -17,7 +55,7 @@ export interface ICoordinatesConverter {
convertViewRangeToModelRange
(
viewRange
:
Range
):
Range
;
convertViewSelectionToModelSelection
(
viewSelection
:
Selection
):
Selection
;
validateViewPosition
(
viewPosition
:
Position
,
expectedModelPosition
:
Position
):
Position
;
validateViewRange
(
viewRange
:
Range
,
m
odelRange
:
Range
):
Range
;
validateViewRange
(
viewRange
:
Range
,
expectedM
odelRange
:
Range
):
Range
;
// Model -> View conversion and related methods
convertModelPositionToViewPosition
(
modelPosition
:
Position
):
Position
;
...
...
@@ -52,9 +90,9 @@ export interface IViewModel extends IEventEmitter {
getEOL
():
string
;
getValueInRange
(
range
:
Range
,
eol
:
EndOfLinePreference
):
string
;
getModelLineContent
(
l
ineNumber
:
number
):
string
;
getModelLineContent
(
modelL
ineNumber
:
number
):
string
;
getModelLineMaxColumn
(
modelLineNumber
:
number
):
number
;
validateModelPosition
(
p
osition
:
IPosition
):
Position
;
validateModelPosition
(
modelP
osition
:
IPosition
):
Position
;
}
export
class
ViewLineRenderingData
{
...
...
src/vs/editor/common/viewModel/viewModelImpl.ts
浏览文件 @
5ab42104
...
...
@@ -46,9 +46,9 @@ export class CoordinatesConverter implements ICoordinatesConverter {
return
this
.
_lines
.
validateViewPosition
(
viewPosition
.
lineNumber
,
viewPosition
.
column
,
expectedModelPosition
);
}
public
validateViewRange
(
viewRange
:
Range
,
m
odelRange
:
Range
):
Range
{
var
validViewStart
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
startLineNumber
,
viewRange
.
startColumn
,
m
odelRange
.
getStartPosition
());
var
validViewEnd
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
endLineNumber
,
viewRange
.
endColumn
,
m
odelRange
.
getEndPosition
());
public
validateViewRange
(
viewRange
:
Range
,
expectedM
odelRange
:
Range
):
Range
{
var
validViewStart
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
startLineNumber
,
viewRange
.
startColumn
,
expectedM
odelRange
.
getStartPosition
());
var
validViewEnd
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
endLineNumber
,
viewRange
.
endColumn
,
expectedM
odelRange
.
getEndPosition
());
return
new
Range
(
validViewStart
.
lineNumber
,
validViewStart
.
column
,
validViewEnd
.
lineNumber
,
validViewEnd
.
column
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录