Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
b8a2488a
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,发现更多精彩内容 >>
提交
b8a2488a
编写于
5月 09, 2017
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Reduce view model responsibilities
上级
50b588a5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
83 addition
and
74 deletion
+83
-74
src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts
src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts
+45
-17
src/vs/editor/common/viewModel/viewModel.ts
src/vs/editor/common/viewModel/viewModel.ts
+0
-1
src/vs/editor/common/viewModel/viewModelImpl.ts
src/vs/editor/common/viewModel/viewModelImpl.ts
+38
-56
未找到文件。
src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts
浏览文件 @
b8a2488a
...
...
@@ -13,31 +13,45 @@ import { DynamicViewOverlay } from 'vs/editor/browser/view/dynamicViewOverlay';
import
{
ViewContext
}
from
'
vs/editor/common/view/viewContext
'
;
import
{
RenderingContext
}
from
'
vs/editor/common/view/renderingContext
'
;
import
*
as
viewEvents
from
'
vs/editor/common/view/viewEvents
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
export
class
LineNumbersOverlay
extends
DynamicViewOverlay
{
public
static
CLASS_NAME
=
'
line-numbers
'
;
private
_context
:
ViewContext
;
private
_lineHeight
:
number
;
private
_renderLineNumbers
:
boolean
;
private
_renderCustomLineNumbers
:
(
lineNumber
:
number
)
=>
string
;
private
_renderRelativeLineNumbers
:
boolean
;
private
_lineNumbersLeft
:
number
;
private
_lineNumbersWidth
:
number
;
private
_lastCursorModelPosition
:
Position
;
private
_renderResult
:
string
[];
constructor
(
context
:
ViewContext
)
{
super
();
this
.
_context
=
context
;
this
.
_lineHeight
=
this
.
_context
.
configuration
.
editor
.
lineHeight
;
this
.
_renderLineNumbers
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
renderLineNumbers
;
this
.
_renderRelativeLineNumbers
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
renderRelativeLineNumbers
;
this
.
_lineNumbersLeft
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
lineNumbersLeft
;
this
.
_lineNumbersWidth
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
lineNumbersWidth
;
this
.
_readConfig
();
this
.
_lastCursorModelPosition
=
new
Position
(
1
,
1
);
this
.
_renderResult
=
null
;
this
.
_context
.
addEventHandler
(
this
);
}
private
_readConfig
():
void
{
const
config
=
this
.
_context
.
configuration
.
editor
;
this
.
_lineHeight
=
config
.
lineHeight
;
this
.
_renderLineNumbers
=
config
.
viewInfo
.
renderLineNumbers
;
this
.
_renderCustomLineNumbers
=
config
.
viewInfo
.
renderCustomLineNumbers
;
this
.
_renderRelativeLineNumbers
=
config
.
viewInfo
.
renderRelativeLineNumbers
;
this
.
_lineNumbersLeft
=
config
.
layoutInfo
.
lineNumbersLeft
;
this
.
_lineNumbersWidth
=
config
.
layoutInfo
.
lineNumbersWidth
;
}
public
dispose
():
void
{
this
.
_context
.
removeEventHandler
(
this
);
this
.
_context
=
null
;
...
...
@@ -48,20 +62,12 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
// --- begin event handlers
public
onConfigurationChanged
(
e
:
viewEvents
.
ViewConfigurationChangedEvent
):
boolean
{
if
(
e
.
lineHeight
)
{
this
.
_lineHeight
=
this
.
_context
.
configuration
.
editor
.
lineHeight
;
}
if
(
e
.
viewInfo
)
{
this
.
_renderLineNumbers
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
renderLineNumbers
;
this
.
_renderRelativeLineNumbers
=
this
.
_context
.
configuration
.
editor
.
viewInfo
.
renderRelativeLineNumbers
;
}
if
(
e
.
layoutInfo
)
{
this
.
_lineNumbersLeft
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
lineNumbersLeft
;
this
.
_lineNumbersWidth
=
this
.
_context
.
configuration
.
editor
.
layoutInfo
.
lineNumbersWidth
;
}
this
.
_readConfig
();
return
true
;
}
public
onCursorPositionChanged
(
e
:
viewEvents
.
ViewCursorPositionChangedEvent
):
boolean
{
this
.
_lastCursorModelPosition
=
this
.
_context
.
model
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
e
.
position
);
if
(
this
.
_renderRelativeLineNumbers
)
{
return
true
;
}
...
...
@@ -88,6 +94,28 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
// --- end event handlers
private
_getLineRenderLineNumber
(
viewLineNumber
:
number
):
string
{
const
modelPosition
=
this
.
_context
.
model
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
new
Position
(
viewLineNumber
,
1
));
if
(
modelPosition
.
column
!==
1
)
{
return
''
;
}
let
modelLineNumber
=
modelPosition
.
lineNumber
;
if
(
this
.
_renderCustomLineNumbers
)
{
return
this
.
_renderCustomLineNumbers
(
modelLineNumber
);
}
if
(
this
.
_renderRelativeLineNumbers
)
{
let
diff
=
Math
.
abs
(
this
.
_lastCursorModelPosition
.
lineNumber
-
modelLineNumber
);
if
(
diff
===
0
)
{
return
'
<span class="relative-current-line-number">
'
+
modelLineNumber
+
'
</span>
'
;
}
return
String
(
diff
);
}
return
String
(
modelLineNumber
);
}
public
prepareRender
(
ctx
:
RenderingContext
):
void
{
if
(
!
this
.
_renderLineNumbers
)
{
this
.
_renderResult
=
null
;
...
...
@@ -103,7 +131,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
for
(
let
lineNumber
=
visibleStartLineNumber
;
lineNumber
<=
visibleEndLineNumber
;
lineNumber
++
)
{
let
lineIndex
=
lineNumber
-
visibleStartLineNumber
;
let
renderLineNumber
=
this
.
_
context
.
model
.
getLineRenderLineNumber
(
lineNumber
);
let
renderLineNumber
=
this
.
_getLineRenderLineNumber
(
lineNumber
);
if
(
renderLineNumber
)
{
output
[
lineIndex
]
=
(
common
...
...
src/vs/editor/common/viewModel/viewModel.ts
浏览文件 @
b8a2488a
...
...
@@ -110,7 +110,6 @@ export interface IViewModel {
getLineIndentGuide
(
lineNumber
:
number
):
number
;
getLineMinColumn
(
lineNumber
:
number
):
number
;
getLineMaxColumn
(
lineNumber
:
number
):
number
;
getLineRenderLineNumber
(
lineNumber
:
number
):
string
;
getAllOverviewRulerDecorations
():
ViewModelDecoration
[];
getValueInRange
(
range
:
Range
,
eol
:
EndOfLinePreference
):
string
;
...
...
src/vs/editor/common/viewModel/viewModelImpl.ts
浏览文件 @
b8a2488a
...
...
@@ -100,10 +100,6 @@ export class ViewModel extends Disposable implements IViewModel {
private
_isDisposing
:
boolean
;
private
_renderCustomLineNumbers
:
(
lineNumber
:
number
)
=>
string
;
private
_renderRelativeLineNumbers
:
boolean
;
private
_lastCursorPosition
:
Position
;
private
_centeredViewLine
:
number
;
private
_listeners
:
IViewModelListener
[];
...
...
@@ -119,10 +115,6 @@ export class ViewModel extends Disposable implements IViewModel {
this
.
coordinatesConverter
=
new
CoordinatesConverter
(
this
.
lines
);
this
.
_lastCursorPosition
=
new
Position
(
1
,
1
);
this
.
_renderCustomLineNumbers
=
this
.
configuration
.
editor
.
viewInfo
.
renderCustomLineNumbers
;
this
.
_renderRelativeLineNumbers
=
this
.
configuration
.
editor
.
viewInfo
.
renderRelativeLineNumbers
;
this
.
_centeredViewLine
=
-
1
;
this
.
decorations
=
new
ViewModelDecorations
(
this
.
editorId
,
this
.
model
,
this
.
configuration
,
this
.
coordinatesConverter
);
...
...
@@ -230,8 +222,44 @@ export class ViewModel extends Disposable implements IViewModel {
return
lineMappingChanged
;
}
public
addEventSource
(
eventSource
:
Cursor
):
void
{
this
.
_register
(
eventSource
.
addBulkListener
((
events
:
EmitterEvent
[])
=>
this
.
onEvents
(
events
)));
public
addEventSource
(
cursor
:
Cursor
):
void
{
this
.
_register
(
cursor
.
addBulkListener
((
events
:
EmitterEvent
[])
=>
{
const
eventsCollector
=
new
ViewEventsCollector
();
for
(
let
i
=
0
,
len
=
events
.
length
;
i
<
len
;
i
++
)
{
const
_e
=
events
[
i
];
const
type
=
_e
.
type
;
const
data
=
_e
.
data
;
switch
(
type
)
{
case
CursorEventType
.
CursorPositionChanged
:
{
const
e
=
<
ICursorPositionChangedEvent
>
data
;
this
.
cursors
.
onCursorPositionChanged
(
eventsCollector
,
e
);
break
;
}
case
CursorEventType
.
CursorSelectionChanged
:
{
const
e
=
<
ICursorSelectionChangedEvent
>
data
;
this
.
cursors
.
onCursorSelectionChanged
(
eventsCollector
,
e
);
break
;
}
case
CursorEventType
.
CursorRevealRange
:
{
const
e
=
<
ICursorRevealRangeEvent
>
data
;
this
.
cursors
.
onCursorRevealRange
(
eventsCollector
,
e
);
break
;
}
case
CursorEventType
.
CursorScrollRequest
:
{
const
e
=
<
CursorScrollRequest
>
data
;
this
.
cursors
.
onCursorScrollRequest
(
eventsCollector
,
e
);
break
;
}
default
:
console
.
info
(
'
View received unknown event:
'
);
console
.
info
(
type
,
data
);
}
}
this
.
_emit
(
eventsCollector
.
finalize
());
}));
}
private
onEvents
(
events
:
EmitterEvent
[]):
void
{
...
...
@@ -389,35 +417,11 @@ export class ViewModel extends Disposable implements IViewModel {
// Ignore, since the editor will take care of this and destroy the view shortly
break
;
}
case
CursorEventType
.
CursorPositionChanged
:
{
const
e
=
<
ICursorPositionChangedEvent
>
data
;
this
.
cursors
.
onCursorPositionChanged
(
eventsCollector
,
e
);
this
.
_lastCursorPosition
=
e
.
position
;
break
;
}
case
CursorEventType
.
CursorSelectionChanged
:
{
const
e
=
<
ICursorSelectionChangedEvent
>
data
;
this
.
cursors
.
onCursorSelectionChanged
(
eventsCollector
,
e
);
break
;
}
case
CursorEventType
.
CursorRevealRange
:
{
const
e
=
<
ICursorRevealRangeEvent
>
data
;
this
.
cursors
.
onCursorRevealRange
(
eventsCollector
,
e
);
break
;
}
case
CursorEventType
.
CursorScrollRequest
:
{
const
e
=
<
CursorScrollRequest
>
data
;
this
.
cursors
.
onCursorScrollRequest
(
eventsCollector
,
e
);
break
;
}
case
ConfigurationChanged
:
{
const
e
=
<
IConfigurationChangedEvent
>
data
;
revealPreviousCenteredModelRange
=
this
.
_onWrappingIndentChange
(
eventsCollector
,
this
.
configuration
.
editor
.
wrappingInfo
.
wrappingIndent
)
||
revealPreviousCenteredModelRange
;
revealPreviousCenteredModelRange
=
this
.
_onWrappingColumnChange
(
eventsCollector
,
this
.
configuration
.
editor
.
wrappingInfo
.
wrappingColumn
,
this
.
configuration
.
editor
.
fontInfo
.
typicalFullwidthCharacterWidth
/
this
.
configuration
.
editor
.
fontInfo
.
typicalHalfwidthCharacterWidth
)
||
revealPreviousCenteredModelRange
;
this
.
_renderCustomLineNumbers
=
this
.
configuration
.
editor
.
viewInfo
.
renderCustomLineNumbers
;
this
.
_renderRelativeLineNumbers
=
this
.
configuration
.
editor
.
viewInfo
.
renderRelativeLineNumbers
;
if
(
e
.
readOnly
)
{
// Must read again all decorations due to readOnly filtering
this
.
decorations
.
reset
();
...
...
@@ -491,28 +495,6 @@ export class ViewModel extends Disposable implements IViewModel {
return
result
+
2
;
}
public
getLineRenderLineNumber
(
viewLineNumber
:
number
):
string
{
let
modelPosition
=
this
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
new
Position
(
viewLineNumber
,
1
));
if
(
modelPosition
.
column
!==
1
)
{
return
''
;
}
let
modelLineNumber
=
modelPosition
.
lineNumber
;
if
(
this
.
_renderCustomLineNumbers
)
{
return
this
.
_renderCustomLineNumbers
(
modelLineNumber
);
}
if
(
this
.
_renderRelativeLineNumbers
)
{
let
diff
=
Math
.
abs
(
this
.
_lastCursorPosition
.
lineNumber
-
modelLineNumber
);
if
(
diff
===
0
)
{
return
'
<span class="relative-current-line-number">
'
+
modelLineNumber
+
'
</span>
'
;
}
return
String
(
diff
);
}
return
String
(
modelLineNumber
);
}
public
getDecorationsInViewport
(
visibleRange
:
Range
):
ViewModelDecoration
[]
{
return
this
.
decorations
.
getDecorationsViewportData
(
visibleRange
).
decorations
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录