Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
7abe1a64
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,发现更多精彩内容 >>
提交
7abe1a64
编写于
8月 04, 2016
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Editor scroll by wrapped lines, lines, page, half page #9609
上级
63765cc2
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
59 addition
and
7 deletion
+59
-7
src/vs/editor/common/controller/cursor.ts
src/vs/editor/common/controller/cursor.ts
+25
-5
src/vs/editor/common/controller/oneCursor.ts
src/vs/editor/common/controller/oneCursor.ts
+28
-0
src/vs/editor/common/editorCommon.ts
src/vs/editor/common/editorCommon.ts
+4
-2
src/vs/monaco.d.ts
src/vs/monaco.d.ts
+2
-0
未找到文件。
src/vs/editor/common/controller/cursor.ts
浏览文件 @
7abe1a64
...
...
@@ -1455,26 +1455,46 @@ export class Cursor extends EventEmitter {
private
_editorScroll
(
ctx
:
IMultipleCursorOperationContext
):
boolean
{
let
editorScrollArg
:
editorCommon
.
EditorScrollArguments
=
ctx
.
eventData
;
let
value
=
editorScrollArg
.
value
||
1
;
editorScrollArg
.
value
=
editorScrollArg
.
value
||
1
;
switch
(
editorScrollArg
.
to
)
{
case
editorCommon
.
EditorScrollDirection
.
Up
:
value
=
-
(
value
);
case
editorCommon
.
EditorScrollDirection
.
Down
:
ctx
.
requestScrollDeltaLines
=
value
*
(
editorCommon
.
EditorScrollByUnit
.
Page
===
editorScrollArg
.
by
?
this
.
cursors
.
getAll
()[
0
].
getPageSize
()
:
1
);
return
this
.
_scrollUpOrDown
(
editorScrollArg
,
ctx
);
}
return
true
;
}
private
_scrollUpOrDown
(
editorScrollArg
:
editorCommon
.
EditorScrollArguments
,
ctx
:
IMultipleCursorOperationContext
):
boolean
{
let
up
=
editorScrollArg
.
to
===
editorCommon
.
EditorScrollDirection
.
Up
;
let
noOfLines
=
1
;
let
cursor
:
OneCursor
=
this
.
cursors
.
getAll
()[
0
];
switch
(
editorScrollArg
.
by
)
{
case
editorCommon
.
EditorScrollByUnit
.
WrappedLine
:
noOfLines
=
editorScrollArg
.
value
;
break
;
case
editorCommon
.
EditorScrollByUnit
.
Line
:
noOfLines
=
(
up
?
cursor
.
getDeltaViewLinesToRevealModelLineBeforeViewPortTop
(
editorScrollArg
.
value
)
:
cursor
.
getDeltaViewLinesToRevealModelLineAfteriewPortBottom
(
editorScrollArg
.
value
))
||
1
;
break
;
case
editorCommon
.
EditorScrollByUnit
.
Page
:
noOfLines
=
cursor
.
getPageSize
()
*
editorScrollArg
.
value
;
break
;
case
editorCommon
.
EditorScrollByUnit
.
HalfPage
:
noOfLines
=
Math
.
round
(
this
.
cursors
.
getAll
()[
0
].
getPageSize
()
/
2
)
*
editorScrollArg
.
value
;
break
;
}
ctx
.
requestScrollDeltaLines
=
(
up
?
-
1
:
1
)
*
noOfLines
;
return
true
;
}
private
_scrollUp
(
isPaged
:
boolean
,
ctx
:
IMultipleCursorOperationContext
):
boolean
{
ctx
.
eventData
=
<
editorCommon
.
EditorScrollArguments
>
{
to
:
editorCommon
.
EditorScrollDirection
.
Up
,
value
:
1
};
ctx
.
eventData
.
by
=
isPaged
?
editorCommon
.
EditorScrollByUnit
.
Page
:
editorCommon
.
EditorScrollByUnit
.
Line
;
ctx
.
eventData
.
by
=
isPaged
?
editorCommon
.
EditorScrollByUnit
.
Page
:
editorCommon
.
EditorScrollByUnit
.
Wrapped
Line
;
return
this
.
_editorScroll
(
ctx
);
}
private
_scrollDown
(
isPaged
:
boolean
,
ctx
:
IMultipleCursorOperationContext
):
boolean
{
ctx
.
eventData
=
<
editorCommon
.
EditorScrollArguments
>
{
to
:
editorCommon
.
EditorScrollDirection
.
Down
,
value
:
1
};
ctx
.
eventData
.
by
=
isPaged
?
editorCommon
.
EditorScrollByUnit
.
Page
:
editorCommon
.
EditorScrollByUnit
.
Line
;
ctx
.
eventData
.
by
=
isPaged
?
editorCommon
.
EditorScrollByUnit
.
Page
:
editorCommon
.
EditorScrollByUnit
.
Wrapped
Line
;
return
this
.
_editorScroll
(
ctx
);
}
...
...
src/vs/editor/common/controller/oneCursor.ts
浏览文件 @
7abe1a64
...
...
@@ -518,6 +518,34 @@ export class OneCursor {
}
// -- model
public
getDeltaViewLinesToRevealModelLineBeforeViewPortTop
(
noOfLinesBeforeTop
:
number
):
number
{
let
visibleModelRange
=
this
.
viewModelHelper
.
getCurrentVisibleModelRangeInViewPort
();
let
visibleViewRange
=
this
.
viewModelHelper
.
getCurrentVisibleViewRangeInViewPort
();
let
startColumn
=
this
.
model
.
getLineMinColumn
(
visibleModelRange
.
startLineNumber
);
let
startViewLineOfModelLine
=
this
.
viewModelHelper
.
convertModelPositionToViewPosition
(
visibleModelRange
.
startLineNumber
,
startColumn
).
lineNumber
;
// Reveal first line if it is partially visible
let
revealLineNumber
=
(
startViewLineOfModelLine
!==
visibleViewRange
.
startLineNumber
?
visibleModelRange
.
startLineNumber
:
visibleModelRange
.
startLineNumber
-
1
)
-
(
noOfLinesBeforeTop
-
1
);
revealLineNumber
=
revealLineNumber
>
1
?
revealLineNumber
:
1
;
let
revealLineEndColumn
=
this
.
model
.
getLineMinColumn
(
revealLineNumber
);
let
revealViewLineNumber
=
this
.
viewModelHelper
.
convertModelPositionToViewPosition
(
revealLineNumber
,
revealLineEndColumn
).
lineNumber
;
return
visibleViewRange
.
startLineNumber
-
revealViewLineNumber
;
}
public
getDeltaViewLinesToRevealModelLineAfteriewPortBottom
(
noOfLinesAfterBottom
:
number
):
number
{
let
visibleModelRange
=
this
.
viewModelHelper
.
getCurrentVisibleModelRangeInViewPort
();
let
visibleViewRange
=
this
.
viewModelHelper
.
getCurrentVisibleViewRangeInViewPort
();
let
endColumn
=
this
.
model
.
getLineMaxColumn
(
visibleModelRange
.
endLineNumber
);
let
endViewLineOfModelLine
=
this
.
viewModelHelper
.
convertModelPositionToViewPosition
(
visibleModelRange
.
endLineNumber
,
endColumn
).
lineNumber
;
// Reveal last line if it is partially visible
let
revealLineNumber
=
(
endViewLineOfModelLine
!==
visibleViewRange
.
endLineNumber
?
visibleModelRange
.
endLineNumber
:
visibleModelRange
.
endLineNumber
+
1
)
+
(
noOfLinesAfterBottom
-
1
);
revealLineNumber
=
revealLineNumber
<
this
.
model
.
getLineCount
()
?
revealLineNumber
:
this
.
model
.
getLineCount
();
let
revealLineEndColumn
=
this
.
model
.
getLineMaxColumn
(
revealLineNumber
);
let
revealViewLineNumber
=
this
.
viewModelHelper
.
convertModelPositionToViewPosition
(
revealLineNumber
,
revealLineEndColumn
).
lineNumber
;
return
revealViewLineNumber
-
visibleViewRange
.
endLineNumber
;
}
public
getLineFromViewPortTop
(
lineFromTop
:
number
=
1
):
number
{
let
visibleRange
=
this
.
viewModelHelper
.
getCurrentVisibleModelRangeInViewPort
();
let
startColumn
=
this
.
model
.
getLineMinColumn
(
visibleRange
.
startLineNumber
);
...
...
src/vs/editor/common/editorCommon.ts
浏览文件 @
7abe1a64
...
...
@@ -4290,7 +4290,9 @@ export const EditorScrollDirection = {
*/
export
const
EditorScrollByUnit
=
{
Line
:
'
line
'
,
Page
:
'
page
'
WrappedLine
:
'
wrappedLine
'
,
Page
:
'
page
'
,
HalfPage
:
'
halfPage
'
};
/**
...
...
@@ -4366,7 +4368,7 @@ export var CommandDescription = {
\`\`\`
'by': Unit to move. Default is computed based on 'to' value.
\`\`\`
'line', '
p
age'
'line', '
wrappedLine', page', 'halfP
age'
\`\`\`
'value': Number of units to move. Default is '1'.
`
,
...
...
src/vs/monaco.d.ts
浏览文件 @
7abe1a64
...
...
@@ -3228,7 +3228,9 @@ declare module monaco.editor {
*/
export
const
EditorScrollByUnit
:
{
Line
:
string
;
WrappedLine
:
string
;
Page
:
string
;
HalfPage
:
string
;
};
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录