Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
810164ab
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,发现更多精彩内容 >>
提交
810164ab
编写于
7月 06, 2017
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extract IViewModelLinesCollection (#30180)
上级
c95d90d5
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
95 addition
and
66 deletion
+95
-66
src/vs/editor/common/viewModel/splitLinesCollection.ts
src/vs/editor/common/viewModel/splitLinesCollection.ts
+92
-2
src/vs/editor/common/viewModel/viewModelImpl.ts
src/vs/editor/common/viewModel/viewModelImpl.ts
+3
-64
未找到文件。
src/vs/editor/common/viewModel/splitLinesCollection.ts
浏览文件 @
810164ab
...
@@ -5,11 +5,12 @@
...
@@ -5,11 +5,12 @@
'
use strict
'
;
'
use strict
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
{
Selection
}
from
'
vs/editor/common/core/selection
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
*
as
editorCommon
from
'
vs/editor/common/editorCommon
'
;
import
*
as
editorCommon
from
'
vs/editor/common/editorCommon
'
;
import
{
LineTokens
}
from
'
vs/editor/common/core/lineTokens
'
;
import
{
LineTokens
}
from
'
vs/editor/common/core/lineTokens
'
;
import
{
PrefixSumComputerWithCache
}
from
'
vs/editor/common/viewModel/prefixSumComputer
'
;
import
{
PrefixSumComputerWithCache
}
from
'
vs/editor/common/viewModel/prefixSumComputer
'
;
import
{
ViewLineData
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
ViewLineData
,
ICoordinatesConverter
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
*
as
viewEvents
from
'
vs/editor/common/view/viewEvents
'
;
import
*
as
viewEvents
from
'
vs/editor/common/view/viewEvents
'
;
import
{
WrappingIndent
}
from
'
vs/editor/common/config/editorOptions
'
;
import
{
WrappingIndent
}
from
'
vs/editor/common/config/editorOptions
'
;
import
{
ModelDecorationOptions
}
from
'
vs/editor/common/model/textModelWithDecorations
'
;
import
{
ModelDecorationOptions
}
from
'
vs/editor/common/model/textModelWithDecorations
'
;
...
@@ -58,7 +59,92 @@ export interface ISplitLine {
...
@@ -58,7 +59,92 @@ export interface ISplitLine {
getViewPositionOfModelPosition
(
deltaLineNumber
:
number
,
inputColumn
:
number
):
Position
;
getViewPositionOfModelPosition
(
deltaLineNumber
:
number
,
inputColumn
:
number
):
Position
;
}
}
export
class
SplitLinesCollection
{
export
interface
IViewModelLinesCollection
{
createCoordinatesConverter
():
ICoordinatesConverter
;
dispose
():
void
;
setWrappingSettings
(
wrappingIndent
:
WrappingIndent
,
wrappingColumn
:
number
,
columnsForFullWidthChar
:
number
):
boolean
;
setTabSize
(
newTabSize
:
number
):
boolean
;
setHiddenAreas
(
_ranges
:
Range
[]):
boolean
;
onModelFlushed
():
void
;
onModelLinesDeleted
(
versionId
:
number
,
fromLineNumber
:
number
,
toLineNumber
:
number
):
viewEvents
.
ViewLinesDeletedEvent
;
onModelLinesInserted
(
versionId
:
number
,
fromLineNumber
:
number
,
toLineNumber
:
number
,
text
:
string
[]):
viewEvents
.
ViewLinesInsertedEvent
;
onModelLineChanged
(
versionId
:
number
,
lineNumber
:
number
,
newText
:
string
):
[
boolean
,
viewEvents
.
ViewLinesChangedEvent
,
viewEvents
.
ViewLinesInsertedEvent
,
viewEvents
.
ViewLinesDeletedEvent
];
acceptVersionId
(
versionId
:
number
):
void
;
getViewLineCount
():
number
;
warmUpLookupCache
(
viewStartLineNumber
:
number
,
viewEndLineNumber
:
number
):
void
;
getViewLineIndentGuide
(
viewLineNumber
:
number
):
number
;
getViewLineContent
(
viewLineNumber
:
number
):
string
;
getViewLineMinColumn
(
viewLineNumber
:
number
):
number
;
getViewLineMaxColumn
(
viewLineNumber
:
number
):
number
;
getViewLineData
(
viewLineNumber
:
number
):
ViewLineData
;
getViewLinesData
(
viewStartLineNumber
:
number
,
viewEndLineNumber
:
number
,
needed
:
boolean
[]):
ViewLineData
[];
}
export
class
CoordinatesConverter
implements
ICoordinatesConverter
{
private
readonly
_lines
:
SplitLinesCollection
;
constructor
(
lines
:
SplitLinesCollection
)
{
this
.
_lines
=
lines
;
}
// View -> Model conversion and related methods
public
convertViewPositionToModelPosition
(
viewPosition
:
Position
):
Position
{
return
this
.
_lines
.
convertViewPositionToModelPosition
(
viewPosition
.
lineNumber
,
viewPosition
.
column
);
}
public
convertViewRangeToModelRange
(
viewRange
:
Range
):
Range
{
let
start
=
this
.
_lines
.
convertViewPositionToModelPosition
(
viewRange
.
startLineNumber
,
viewRange
.
startColumn
);
let
end
=
this
.
_lines
.
convertViewPositionToModelPosition
(
viewRange
.
endLineNumber
,
viewRange
.
endColumn
);
return
new
Range
(
start
.
lineNumber
,
start
.
column
,
end
.
lineNumber
,
end
.
column
);
}
public
convertViewSelectionToModelSelection
(
viewSelection
:
Selection
):
Selection
{
let
selectionStart
=
this
.
_lines
.
convertViewPositionToModelPosition
(
viewSelection
.
selectionStartLineNumber
,
viewSelection
.
selectionStartColumn
);
let
position
=
this
.
_lines
.
convertViewPositionToModelPosition
(
viewSelection
.
positionLineNumber
,
viewSelection
.
positionColumn
);
return
new
Selection
(
selectionStart
.
lineNumber
,
selectionStart
.
column
,
position
.
lineNumber
,
position
.
column
);
}
public
validateViewPosition
(
viewPosition
:
Position
,
expectedModelPosition
:
Position
):
Position
{
return
this
.
_lines
.
validateViewPosition
(
viewPosition
.
lineNumber
,
viewPosition
.
column
,
expectedModelPosition
);
}
public
validateViewRange
(
viewRange
:
Range
,
expectedModelRange
:
Range
):
Range
{
var
validViewStart
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
startLineNumber
,
viewRange
.
startColumn
,
expectedModelRange
.
getStartPosition
());
var
validViewEnd
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
endLineNumber
,
viewRange
.
endColumn
,
expectedModelRange
.
getEndPosition
());
return
new
Range
(
validViewStart
.
lineNumber
,
validViewStart
.
column
,
validViewEnd
.
lineNumber
,
validViewEnd
.
column
);
}
// Model -> View conversion and related methods
public
convertModelPositionToViewPosition
(
modelPosition
:
Position
):
Position
{
return
this
.
_lines
.
convertModelPositionToViewPosition
(
modelPosition
.
lineNumber
,
modelPosition
.
column
);
}
public
convertModelRangeToViewRange
(
modelRange
:
Range
):
Range
{
let
start
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelRange
.
startLineNumber
,
modelRange
.
startColumn
);
let
end
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelRange
.
endLineNumber
,
modelRange
.
endColumn
);
return
new
Range
(
start
.
lineNumber
,
start
.
column
,
end
.
lineNumber
,
end
.
column
);
}
public
convertModelSelectionToViewSelection
(
modelSelection
:
Selection
):
Selection
{
let
selectionStart
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelSelection
.
selectionStartLineNumber
,
modelSelection
.
selectionStartColumn
);
let
position
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelSelection
.
positionLineNumber
,
modelSelection
.
positionColumn
);
return
new
Selection
(
selectionStart
.
lineNumber
,
selectionStart
.
column
,
position
.
lineNumber
,
position
.
column
);
}
public
modelPositionIsVisible
(
modelPosition
:
Position
):
boolean
{
return
this
.
_lines
.
modelPositionIsVisible
(
modelPosition
.
lineNumber
,
modelPosition
.
column
);
}
}
export
class
SplitLinesCollection
implements
IViewModelLinesCollection
{
private
model
:
editorCommon
.
IModel
;
private
model
:
editorCommon
.
IModel
;
private
_validModelVersionId
:
number
;
private
_validModelVersionId
:
number
;
...
@@ -91,6 +177,10 @@ export class SplitLinesCollection {
...
@@ -91,6 +177,10 @@ export class SplitLinesCollection {
this
.
hiddenAreasIds
=
this
.
model
.
deltaDecorations
(
this
.
hiddenAreasIds
,
[]);
this
.
hiddenAreasIds
=
this
.
model
.
deltaDecorations
(
this
.
hiddenAreasIds
,
[]);
}
}
public
createCoordinatesConverter
():
ICoordinatesConverter
{
return
new
CoordinatesConverter
(
this
);
}
private
_ensureValidState
():
void
{
private
_ensureValidState
():
void
{
let
modelVersion
=
this
.
model
.
getVersionId
();
let
modelVersion
=
this
.
model
.
getVersionId
();
if
(
modelVersion
!==
this
.
_validModelVersionId
)
{
if
(
modelVersion
!==
this
.
_validModelVersionId
)
{
...
...
src/vs/editor/common/viewModel/viewModelImpl.ts
浏览文件 @
810164ab
...
@@ -8,13 +8,12 @@ import { EmitterEvent } from 'vs/base/common/eventEmitter';
...
@@ -8,13 +8,12 @@ import { EmitterEvent } from 'vs/base/common/eventEmitter';
import
*
as
strings
from
'
vs/base/common/strings
'
;
import
*
as
strings
from
'
vs/base/common/strings
'
;
import
{
Position
,
IPosition
}
from
'
vs/editor/common/core/position
'
;
import
{
Position
,
IPosition
}
from
'
vs/editor/common/core/position
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Selection
}
from
'
vs/editor/common/core/selection
'
;
import
*
as
editorCommon
from
'
vs/editor/common/editorCommon
'
;
import
*
as
editorCommon
from
'
vs/editor/common/editorCommon
'
;
import
{
TokenizationRegistry
,
ColorId
,
LanguageId
}
from
'
vs/editor/common/modes
'
;
import
{
TokenizationRegistry
,
ColorId
,
LanguageId
}
from
'
vs/editor/common/modes
'
;
import
{
tokenizeLineToHTML
}
from
'
vs/editor/common/modes/textToHtmlTokenizer
'
;
import
{
tokenizeLineToHTML
}
from
'
vs/editor/common/modes/textToHtmlTokenizer
'
;
import
{
ViewModelDecorations
}
from
'
vs/editor/common/viewModel/viewModelDecorations
'
;
import
{
ViewModelDecorations
}
from
'
vs/editor/common/viewModel/viewModelDecorations
'
;
import
{
MinimapLinesRenderingData
,
ViewLineRenderingData
,
ViewModelDecoration
,
IViewModel
,
ICoordinatesConverter
,
ViewEventsCollector
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
MinimapLinesRenderingData
,
ViewLineRenderingData
,
ViewModelDecoration
,
IViewModel
,
ICoordinatesConverter
,
ViewEventsCollector
}
from
'
vs/editor/common/viewModel/viewModel
'
;
import
{
SplitLinesCollection
}
from
'
vs/editor/common/viewModel/splitLinesCollection
'
;
import
{
SplitLinesCollection
,
IViewModelLinesCollection
}
from
'
vs/editor/common/viewModel/splitLinesCollection
'
;
import
*
as
viewEvents
from
'
vs/editor/common/view/viewEvents
'
;
import
*
as
viewEvents
from
'
vs/editor/common/view/viewEvents
'
;
import
{
MinimapTokensColorTracker
}
from
'
vs/editor/common/view/minimapCharRenderer
'
;
import
{
MinimapTokensColorTracker
}
from
'
vs/editor/common/view/minimapCharRenderer
'
;
import
*
as
textModelEvents
from
'
vs/editor/common/model/textModelEvents
'
;
import
*
as
textModelEvents
from
'
vs/editor/common/model/textModelEvents
'
;
...
@@ -22,72 +21,12 @@ import { IConfigurationChangedEvent } from 'vs/editor/common/config/editorOption
...
@@ -22,72 +21,12 @@ import { IConfigurationChangedEvent } from 'vs/editor/common/config/editorOption
import
{
CharacterHardWrappingLineMapperFactory
}
from
'
vs/editor/common/viewModel/characterHardWrappingLineMapper
'
;
import
{
CharacterHardWrappingLineMapperFactory
}
from
'
vs/editor/common/viewModel/characterHardWrappingLineMapper
'
;
import
{
ViewLayout
}
from
'
vs/editor/common/viewLayout/viewLayout
'
;
import
{
ViewLayout
}
from
'
vs/editor/common/viewLayout/viewLayout
'
;
export
class
CoordinatesConverter
implements
ICoordinatesConverter
{
private
readonly
_lines
:
SplitLinesCollection
;
constructor
(
lines
:
SplitLinesCollection
)
{
this
.
_lines
=
lines
;
}
// View -> Model conversion and related methods
public
convertViewPositionToModelPosition
(
viewPosition
:
Position
):
Position
{
return
this
.
_lines
.
convertViewPositionToModelPosition
(
viewPosition
.
lineNumber
,
viewPosition
.
column
);
}
public
convertViewRangeToModelRange
(
viewRange
:
Range
):
Range
{
let
start
=
this
.
_lines
.
convertViewPositionToModelPosition
(
viewRange
.
startLineNumber
,
viewRange
.
startColumn
);
let
end
=
this
.
_lines
.
convertViewPositionToModelPosition
(
viewRange
.
endLineNumber
,
viewRange
.
endColumn
);
return
new
Range
(
start
.
lineNumber
,
start
.
column
,
end
.
lineNumber
,
end
.
column
);
}
public
convertViewSelectionToModelSelection
(
viewSelection
:
Selection
):
Selection
{
let
selectionStart
=
this
.
_lines
.
convertViewPositionToModelPosition
(
viewSelection
.
selectionStartLineNumber
,
viewSelection
.
selectionStartColumn
);
let
position
=
this
.
_lines
.
convertViewPositionToModelPosition
(
viewSelection
.
positionLineNumber
,
viewSelection
.
positionColumn
);
return
new
Selection
(
selectionStart
.
lineNumber
,
selectionStart
.
column
,
position
.
lineNumber
,
position
.
column
);
}
public
validateViewPosition
(
viewPosition
:
Position
,
expectedModelPosition
:
Position
):
Position
{
return
this
.
_lines
.
validateViewPosition
(
viewPosition
.
lineNumber
,
viewPosition
.
column
,
expectedModelPosition
);
}
public
validateViewRange
(
viewRange
:
Range
,
expectedModelRange
:
Range
):
Range
{
var
validViewStart
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
startLineNumber
,
viewRange
.
startColumn
,
expectedModelRange
.
getStartPosition
());
var
validViewEnd
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
endLineNumber
,
viewRange
.
endColumn
,
expectedModelRange
.
getEndPosition
());
return
new
Range
(
validViewStart
.
lineNumber
,
validViewStart
.
column
,
validViewEnd
.
lineNumber
,
validViewEnd
.
column
);
}
// Model -> View conversion and related methods
public
convertModelPositionToViewPosition
(
modelPosition
:
Position
):
Position
{
return
this
.
_lines
.
convertModelPositionToViewPosition
(
modelPosition
.
lineNumber
,
modelPosition
.
column
);
}
public
convertModelRangeToViewRange
(
modelRange
:
Range
):
Range
{
let
start
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelRange
.
startLineNumber
,
modelRange
.
startColumn
);
let
end
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelRange
.
endLineNumber
,
modelRange
.
endColumn
);
return
new
Range
(
start
.
lineNumber
,
start
.
column
,
end
.
lineNumber
,
end
.
column
);
}
public
convertModelSelectionToViewSelection
(
modelSelection
:
Selection
):
Selection
{
let
selectionStart
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelSelection
.
selectionStartLineNumber
,
modelSelection
.
selectionStartColumn
);
let
position
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelSelection
.
positionLineNumber
,
modelSelection
.
positionColumn
);
return
new
Selection
(
selectionStart
.
lineNumber
,
selectionStart
.
column
,
position
.
lineNumber
,
position
.
column
);
}
public
modelPositionIsVisible
(
modelPosition
:
Position
):
boolean
{
return
this
.
_lines
.
modelPositionIsVisible
(
modelPosition
.
lineNumber
,
modelPosition
.
column
);
}
}
export
class
ViewModel
extends
viewEvents
.
ViewEventEmitter
implements
IViewModel
{
export
class
ViewModel
extends
viewEvents
.
ViewEventEmitter
implements
IViewModel
{
private
readonly
editorId
:
number
;
private
readonly
editorId
:
number
;
private
readonly
configuration
:
editorCommon
.
IConfiguration
;
private
readonly
configuration
:
editorCommon
.
IConfiguration
;
private
readonly
model
:
editorCommon
.
IModel
;
private
readonly
model
:
editorCommon
.
IModel
;
private
readonly
lines
:
Split
LinesCollection
;
private
readonly
lines
:
IViewModel
LinesCollection
;
public
readonly
coordinatesConverter
:
ICoordinatesConverter
;
public
readonly
coordinatesConverter
:
ICoordinatesConverter
;
public
readonly
viewLayout
:
ViewLayout
;
public
readonly
viewLayout
:
ViewLayout
;
...
@@ -120,7 +59,7 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel
...
@@ -120,7 +59,7 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel
conf
.
wrappingInfo
.
wrappingIndent
conf
.
wrappingInfo
.
wrappingIndent
);
);
this
.
coordinatesConverter
=
new
CoordinatesConverter
(
this
.
lines
);
this
.
coordinatesConverter
=
this
.
lines
.
createCoordinatesConverter
(
);
this
.
viewLayout
=
this
.
_register
(
new
ViewLayout
(
this
.
configuration
,
this
.
getLineCount
()));
this
.
viewLayout
=
this
.
_register
(
new
ViewLayout
(
this
.
configuration
,
this
.
getLineCount
()));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录