Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
bf8518de
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,发现更多精彩内容 >>
提交
bf8518de
编写于
10月 25, 2017
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Have the view ask for indent guides in batches
上级
51d8f360
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
91 addition
and
23 deletion
+91
-23
src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts
src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts
+4
-2
src/vs/editor/common/editorCommon.ts
src/vs/editor/common/editorCommon.ts
+1
-1
src/vs/editor/common/model/textModelWithTokens.ts
src/vs/editor/common/model/textModelWithTokens.ts
+8
-0
src/vs/editor/common/viewModel/splitLinesCollection.ts
src/vs/editor/common/viewModel/splitLinesCollection.ts
+64
-7
src/vs/editor/common/viewModel/viewModel.ts
src/vs/editor/common/viewModel/viewModel.ts
+1
-1
src/vs/editor/common/viewModel/viewModelImpl.ts
src/vs/editor/common/viewModel/viewModelImpl.ts
+2
-2
src/vs/editor/test/common/viewModel/splitLinesCollection.test.ts
...editor/test/common/viewModel/splitLinesCollection.test.ts
+11
-9
test/mocha.opts
test/mocha.opts
+0
-1
未找到文件。
src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts
浏览文件 @
bf8518de
...
...
@@ -96,10 +96,12 @@ export class IndentGuidesOverlay extends DynamicViewOverlay {
const
lineHeight
=
this
.
_lineHeight
;
const
indentGuideWidth
=
dom
.
computeScreenAwareSize
(
1
);
const
indents
=
this
.
_context
.
model
.
getLinesIndentGuides
(
visibleStartLineNumber
,
visibleEndLineNumber
);
let
output
:
string
[]
=
[];
for
(
let
lineNumber
=
visibleStartLineNumber
;
lineNumber
<=
visibleEndLineNumber
;
lineNumber
++
)
{
le
t
lineIndex
=
lineNumber
-
visibleStartLineNumber
;
let
indent
=
this
.
_context
.
model
.
getLineIndentGuide
(
lineNumber
)
;
cons
t
lineIndex
=
lineNumber
-
visibleStartLineNumber
;
const
indent
=
indents
[
lineIndex
]
;
let
result
=
''
;
let
leftMostVisiblePosition
=
ctx
.
visibleRangeForPosition
(
new
Position
(
lineNumber
,
1
));
...
...
src/vs/editor/common/editorCommon.ts
浏览文件 @
bf8518de
...
...
@@ -908,7 +908,7 @@ export interface ITokenizedModel extends ITextModel {
/**
* @internal
*/
getLine
IndentGuide
(
lineNumber
:
number
):
number
;
getLine
sIndentGuides
(
startLineNumber
:
number
,
endLineNumber
:
number
):
number
[]
;
}
/**
...
...
src/vs/editor/common/model/textModelWithTokens.ts
浏览文件 @
bf8518de
...
...
@@ -855,6 +855,14 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
return
this
.
_getIndentRanges
();
}
public
getLinesIndentGuides
(
startLineNumber
:
number
,
endLineNumber
:
number
):
number
[]
{
let
result
:
number
[]
=
[];
for
(
let
j
=
startLineNumber
;
j
<=
endLineNumber
;
j
++
)
{
result
[
j
-
startLineNumber
]
=
this
.
getLineIndentGuide
(
j
);
}
return
result
;
}
public
getLineIndentGuide
(
lineNumber
:
number
):
number
{
this
.
_assertNotDisposed
();
if
(
lineNumber
<
1
||
lineNumber
>
this
.
getLineCount
())
{
...
...
src/vs/editor/common/viewModel/splitLinesCollection.ts
浏览文件 @
bf8518de
...
...
@@ -79,7 +79,7 @@ export interface IViewModelLinesCollection {
getViewLineCount
():
number
;
warmUpLookupCache
(
viewStartLineNumber
:
number
,
viewEndLineNumber
:
number
):
void
;
getViewLine
IndentGuide
(
viewLineNumber
:
number
):
number
;
getViewLine
sIndentGuides
(
viewStartLineNumber
:
number
,
viewEndLineNumber
:
number
):
number
[]
;
getViewLineContent
(
viewLineNumber
:
number
):
string
;
getViewLineMinColumn
(
viewLineNumber
:
number
):
number
;
getViewLineMaxColumn
(
viewLineNumber
:
number
):
number
;
...
...
@@ -499,11 +499,63 @@ export class SplitLinesCollection implements IViewModelLinesCollection {
this
.
prefixSumComputer
.
warmUpCache
(
viewStartLineNumber
-
1
,
viewEndLineNumber
-
1
);
}
public
getViewLine
IndentGuide
(
viewLineNumber
:
number
):
number
{
public
getViewLine
sIndentGuides
(
viewStartLineNumber
:
number
,
viewEndLineNumber
:
number
):
number
[]
{
this
.
_ensureValidState
();
viewLineNumber
=
this
.
_toValidViewLineNumber
(
viewLineNumber
);
let
r
=
this
.
prefixSumComputer
.
getIndexOf
(
viewLineNumber
-
1
);
return
this
.
model
.
getLineIndentGuide
(
r
.
index
+
1
);
viewStartLineNumber
=
this
.
_toValidViewLineNumber
(
viewStartLineNumber
);
viewEndLineNumber
=
this
.
_toValidViewLineNumber
(
viewEndLineNumber
);
const
modelStart
=
this
.
convertViewPositionToModelPosition
(
viewStartLineNumber
,
this
.
getViewLineMinColumn
(
viewStartLineNumber
));
const
modelEnd
=
this
.
convertViewPositionToModelPosition
(
viewEndLineNumber
,
this
.
getViewLineMaxColumn
(
viewEndLineNumber
));
let
result
:
number
[]
=
[];
let
resultRepeatCount
:
number
[]
=
[];
const
modelStartLineIndex
=
modelStart
.
lineNumber
-
1
;
const
modelEndLineIndex
=
modelEnd
.
lineNumber
-
1
;
let
reqStart
:
Position
=
null
;
for
(
let
modelLineIndex
=
modelStartLineIndex
;
modelLineIndex
<=
modelEndLineIndex
;
modelLineIndex
++
)
{
const
line
=
this
.
lines
[
modelLineIndex
];
if
(
line
.
isVisible
())
{
let
count
=
0
;
if
(
modelLineIndex
===
modelStartLineIndex
)
{
let
viewLineStartIndex
=
line
.
getViewLineNumberOfModelPosition
(
0
,
modelStart
.
column
);
let
viewLineEndIndex
=
line
.
getViewLineNumberOfModelPosition
(
0
,
this
.
model
.
getLineMaxColumn
(
modelLineIndex
+
1
));
count
=
viewLineEndIndex
-
viewLineStartIndex
+
1
;
}
else
{
let
viewLineStartIndex
=
line
.
getViewLineNumberOfModelPosition
(
0
,
1
);
let
viewLineEndIndex
=
line
.
getViewLineNumberOfModelPosition
(
0
,
this
.
model
.
getLineMaxColumn
(
modelLineIndex
+
1
));
count
=
viewLineEndIndex
-
viewLineStartIndex
+
1
;
}
resultRepeatCount
.
push
(
count
);
// merge into previous request
if
(
reqStart
===
null
)
{
reqStart
=
new
Position
(
modelLineIndex
+
1
,
0
);
}
}
else
{
// hit invisible line => flush request
if
(
reqStart
!==
null
)
{
result
=
result
.
concat
(
this
.
model
.
getLinesIndentGuides
(
reqStart
.
lineNumber
,
modelLineIndex
));
reqStart
=
null
;
}
}
}
if
(
reqStart
!==
null
)
{
result
=
result
.
concat
(
this
.
model
.
getLinesIndentGuides
(
reqStart
.
lineNumber
,
modelEnd
.
lineNumber
));
reqStart
=
null
;
}
const
viewLineCount
=
viewEndLineNumber
-
viewStartLineNumber
+
1
;
let
viewIndents
=
new
Array
<
number
>
(
viewLineCount
);
let
currIndex
=
0
;
for
(
let
i
=
0
,
len
=
result
.
length
;
i
<
len
;
i
++
)
{
let
value
=
result
[
i
];
let
count
=
Math
.
min
(
viewLineCount
-
currIndex
,
resultRepeatCount
[
i
]);
for
(
let
j
=
0
;
j
<
count
;
j
++
)
{
viewIndents
[
currIndex
++
]
=
value
;
}
}
return
viewIndents
;
}
public
getViewLineContent
(
viewLineNumber
:
number
):
string
{
...
...
@@ -1149,8 +1201,13 @@ export class IdentityLinesCollection implements IViewModelLinesCollection {
public
warmUpLookupCache
(
viewStartLineNumber
:
number
,
viewEndLineNumber
:
number
):
void
{
}
public
getViewLineIndentGuide
(
viewLineNumber
:
number
):
number
{
return
0
;
public
getViewLinesIndentGuides
(
viewStartLineNumber
:
number
,
viewEndLineNumber
:
number
):
number
[]
{
const
viewLineCount
=
viewEndLineNumber
-
viewStartLineNumber
+
1
;
let
result
=
new
Array
<
number
>
(
viewLineCount
);
for
(
let
i
=
0
;
i
<
viewLineCount
;
i
++
)
{
result
[
i
]
=
0
;
}
return
result
;
}
public
getViewLineContent
(
viewLineNumber
:
number
):
string
{
...
...
src/vs/editor/common/viewModel/viewModel.ts
浏览文件 @
bf8518de
...
...
@@ -134,7 +134,7 @@ export interface IViewModel {
getTabSize
():
number
;
getLineCount
():
number
;
getLineContent
(
lineNumber
:
number
):
string
;
getLine
IndentGuide
(
lineNumber
:
number
):
number
;
getLine
sIndentGuides
(
startLineNumber
:
number
,
endLineNumber
:
number
):
number
[]
;
getLineMinColumn
(
lineNumber
:
number
):
number
;
getLineMaxColumn
(
lineNumber
:
number
):
number
;
getLineFirstNonWhitespaceColumn
(
lineNumber
:
number
):
number
;
...
...
src/vs/editor/common/viewModel/viewModelImpl.ts
浏览文件 @
bf8518de
...
...
@@ -366,8 +366,8 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel
this
.
lines
.
warmUpLookupCache
(
startLineNumber
,
endLineNumber
);
}
public
getLine
IndentGuide
(
lineNumber
:
number
):
number
{
return
this
.
lines
.
getViewLine
IndentGuide
(
l
ineNumber
);
public
getLine
sIndentGuides
(
startLineNumber
:
number
,
endLineNumber
:
number
):
number
[]
{
return
this
.
lines
.
getViewLine
sIndentGuides
(
startLineNumber
,
endL
ineNumber
);
}
public
getLineContent
(
lineNumber
:
number
):
string
{
...
...
src/vs/editor/test/common/viewModel/splitLinesCollection.test.ts
浏览文件 @
bf8518de
...
...
@@ -136,15 +136,17 @@ suite('Editor ViewModel - SplitLinesCollection', () => {
assert
.
equal
(
linesCollection
.
getViewLineCount
(),
6
);
// getOutputIndentGuide
assert
.
equal
(
linesCollection
.
getViewLineIndentGuide
(
-
1
),
0
);
assert
.
equal
(
linesCollection
.
getViewLineIndentGuide
(
0
),
0
);
assert
.
equal
(
linesCollection
.
getViewLineIndentGuide
(
1
),
0
);
assert
.
equal
(
linesCollection
.
getViewLineIndentGuide
(
2
),
1
);
assert
.
equal
(
linesCollection
.
getViewLineIndentGuide
(
3
),
0
);
assert
.
equal
(
linesCollection
.
getViewLineIndentGuide
(
4
),
0
);
assert
.
equal
(
linesCollection
.
getViewLineIndentGuide
(
5
),
1
);
assert
.
equal
(
linesCollection
.
getViewLineIndentGuide
(
6
),
0
);
assert
.
equal
(
linesCollection
.
getViewLineIndentGuide
(
7
),
0
);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
-
1
,
-
1
),
[
0
]);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
0
,
0
),
[
0
]);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
1
,
1
),
[
0
]);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
2
,
2
),
[
1
]);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
3
,
3
),
[
0
]);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
4
,
4
),
[
0
]);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
5
,
5
),
[
1
]);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
6
,
6
),
[
0
]);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
7
,
7
),
[
0
]);
assert
.
deepEqual
(
linesCollection
.
getViewLinesIndentGuides
(
0
,
7
),
[
0
,
1
,
0
,
0
,
1
,
0
]);
// getOutputLineContent
assert
.
equal
(
linesCollection
.
getViewLineContent
(
-
1
),
'
int main() {
'
);
...
...
test/mocha.opts
浏览文件 @
bf8518de
...
...
@@ -2,4 +2,3 @@
--ui tdd
--timeout 10000
test/all.js
extensions/*/server/out/test/*.test.js
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录