Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
6f94a1fd
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,发现更多精彩内容 >>
提交
6f94a1fd
编写于
7月 20, 2016
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement lineViewTop, lineViewBottom, lineViewCenter
上级
b7cfce2c
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
108 addition
and
35 deletion
+108
-35
src/vs/editor/browser/editorBrowser.ts
src/vs/editor/browser/editorBrowser.ts
+1
-0
src/vs/editor/browser/view/viewImpl.ts
src/vs/editor/browser/view/viewImpl.ts
+12
-0
src/vs/editor/browser/widget/codeEditorWidget.ts
src/vs/editor/browser/widget/codeEditorWidget.ts
+7
-0
src/vs/editor/common/commonCodeEditor.ts
src/vs/editor/common/commonCodeEditor.ts
+8
-0
src/vs/editor/common/controller/cursor.ts
src/vs/editor/common/controller/cursor.ts
+0
-25
src/vs/editor/common/controller/oneCursor.ts
src/vs/editor/common/controller/oneCursor.ts
+29
-0
src/vs/editor/common/editorCommon.ts
src/vs/editor/common/editorCommon.ts
+4
-1
src/vs/editor/test/common/commands/commandTestUtils.ts
src/vs/editor/test/common/commands/commandTestUtils.ts
+3
-1
src/vs/editor/test/common/commands/sideEditing.test.ts
src/vs/editor/test/common/commands/sideEditing.test.ts
+2
-1
src/vs/editor/test/common/controller/cursor.test.ts
src/vs/editor/test/common/controller/cursor.test.ts
+8
-7
src/vs/editor/test/common/editorTestUtils.ts
src/vs/editor/test/common/editorTestUtils.ts
+30
-0
src/vs/editor/test/common/mocks/mockCodeEditor.ts
src/vs/editor/test/common/mocks/mockCodeEditor.ts
+1
-0
src/vs/monaco.d.ts
src/vs/monaco.d.ts
+3
-0
未找到文件。
src/vs/editor/browser/editorBrowser.ts
浏览文件 @
6f94a1fd
...
...
@@ -58,6 +58,7 @@ export interface IView extends IDisposable {
getCodeEditorHelper
():
ICodeEditorHelper
;
getCenteredRangeInViewport
():
Range
;
getVisibleRangeInViewport
():
Range
;
change
(
callback
:(
changeAccessor
:
IViewZoneChangeAccessor
)
=>
any
):
boolean
;
getWhitespaces
():
editorCommon
.
IEditorWhitespace
[];
...
...
src/vs/editor/browser/view/viewImpl.ts
浏览文件 @
6f94a1fd
...
...
@@ -596,6 +596,14 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
return
viewModel
.
convertViewRangeToModelRange
(
currentCenteredViewRange
);
}
public
getVisibleRangeInViewport
():
Range
{
if
(
this
.
_isDisposed
)
{
throw
new
Error
(
'
ViewImpl.getVisibleRangeInViewport: View is disposed
'
);
}
let
visibleRange
=
this
.
layoutProvider
.
getLinesViewportData
().
visibleRange
;
return
this
.
_context
.
model
.
convertViewRangeToModelRange
(
visibleRange
);
}
// public getLineInfoProvider():view.ILineInfoProvider {
// return this.viewLines;
// }
...
...
@@ -921,6 +929,10 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
this
.
_context
.
privateViewEventBus
.
emit
(
editorCommon
.
EventType
.
ViewFocusChanged
,
this
.
hasFocus
);
}
}
public
getLinesViewportData
():
ViewLinesViewportData
{
return
this
.
layoutProvider
.
getLinesViewportData
();
}
}
function
safeInvokeNoArg
(
func
:
Function
):
any
{
...
...
src/vs/editor/browser/widget/codeEditorWidget.ts
浏览文件 @
6f94a1fd
...
...
@@ -159,6 +159,13 @@ export class CodeEditorWidget extends CommonCodeEditor implements editorBrowser.
return
this
.
_view
.
getCenteredRangeInViewport
();
}
public
getVisibleRangeInViewport
():
Range
{
if
(
!
this
.
hasView
)
{
return
null
;
}
return
this
.
_view
.
getVisibleRangeInViewport
();
}
public
getScrollWidth
():
number
{
if
(
!
this
.
hasView
)
{
return
-
1
;
...
...
src/vs/editor/common/commonCodeEditor.ts
浏览文件 @
6f94a1fd
...
...
@@ -287,6 +287,8 @@ export abstract class CommonCodeEditor extends EventEmitter implements editorCom
public
abstract
getCenteredRangeInViewport
():
Range
;
public
abstract
getVisibleRangeInViewport
():
Range
;
public
getVisibleColumnFromPosition
(
rawPosition
:
editorCommon
.
IPosition
):
number
{
if
(
!
this
.
model
)
{
return
rawPosition
.
column
;
...
...
@@ -788,6 +790,12 @@ export abstract class CommonCodeEditor extends EventEmitter implements editorCom
var
viewModelHelper
:
IViewModelHelper
=
{
viewModel
:
this
.
viewModel
,
getCurrentVisibleRange
:
()
=>
{
return
this
.
viewModel
.
convertModelRangeToViewRange
(
this
.
getVisibleRangeInViewport
());
},
getCurrentCenteredRange
:
()
=>
{
return
this
.
viewModel
.
convertModelRangeToViewRange
(
this
.
getCenteredRangeInViewport
());
},
convertModelPositionToViewPosition
:
(
lineNumber
:
number
,
column
:
number
)
=>
{
return
this
.
viewModel
.
convertModelPositionToViewPosition
(
lineNumber
,
column
);
},
...
...
src/vs/editor/common/controller/cursor.ts
浏览文件 @
6f94a1fd
...
...
@@ -102,31 +102,6 @@ export class Cursor extends EventEmitter {
this
.
model
=
model
;
this
.
viewModelHelper
=
viewModelHelper
;
this
.
enableEmptySelectionClipboard
=
enableEmptySelectionClipboard
;
if
(
!
this
.
viewModelHelper
)
{
this
.
viewModelHelper
=
{
viewModel
:
this
.
model
,
convertModelPositionToViewPosition
:
(
lineNumber
:
number
,
column
:
number
)
=>
{
return
new
Position
(
lineNumber
,
column
);
},
convertModelRangeToViewRange
:
(
modelRange
:
Range
)
=>
{
return
modelRange
;
},
convertViewToModelPosition
:
(
lineNumber
:
number
,
column
:
number
)
=>
{
return
new
Position
(
lineNumber
,
column
);
},
convertViewSelectionToModelSelection
:
(
viewSelection
:
Selection
)
=>
{
return
viewSelection
;
},
validateViewPosition
:
(
viewLineNumber
:
number
,
viewColumn
:
number
,
modelPosition
:
Position
)
=>
{
return
modelPosition
;
},
validateViewRange
:
(
viewStartLineNumber
:
number
,
viewStartColumn
:
number
,
viewEndLineNumber
:
number
,
viewEndColumn
:
number
,
modelRange
:
Range
)
=>
{
return
modelRange
;
}
};
}
this
.
cursors
=
new
CursorCollection
(
this
.
editorId
,
this
.
model
,
this
.
configuration
,
this
.
viewModelHelper
);
this
.
cursorUndoStack
=
[];
...
...
src/vs/editor/common/controller/oneCursor.ts
浏览文件 @
6f94a1fd
...
...
@@ -57,6 +57,9 @@ export interface IViewModelHelper {
viewModel
:
ICursorMoveHelperModel
;
getCurrentVisibleRange
():
Range
;
getCurrentCenteredRange
():
Range
;
convertModelPositionToViewPosition
(
lineNumber
:
number
,
column
:
number
):
Position
;
convertModelRangeToViewRange
(
modelRange
:
Range
):
Range
;
...
...
@@ -547,6 +550,20 @@ export class OneCursor {
public
getViewLineCount
():
number
{
return
this
.
viewModelHelper
.
viewModel
.
getLineCount
();
}
public
getViewTopLine
(
lineFromTop
:
number
):
number
{
let
visibleRange
=
this
.
viewModelHelper
.
getCurrentVisibleRange
();
let
lineNumber
=
visibleRange
.
startLineNumber
+
lineFromTop
-
1
;
return
lineNumber
>
visibleRange
.
endLineNumber
?
visibleRange
.
endLineNumber
:
lineNumber
;
}
public
getViewCenterLine
():
number
{
let
centeredRange
=
this
.
viewModelHelper
.
getCurrentCenteredRange
();
return
centeredRange
.
startLineNumber
;
}
public
getViewBottomLine
(
lineFromBottom
:
number
):
number
{
let
visibleRange
=
this
.
viewModelHelper
.
getCurrentVisibleRange
();
let
lineNumber
=
visibleRange
.
endLineNumber
-
lineFromBottom
+
1
;
return
lineNumber
>
visibleRange
.
startLineNumber
?
lineNumber
:
visibleRange
.
startLineNumber
;
}
public
getViewLineMaxColumn
(
lineNumber
:
number
):
number
{
return
this
.
viewModelHelper
.
viewModel
.
getLineMaxColumn
(
lineNumber
);
}
...
...
@@ -671,6 +688,18 @@ export class OneCursorOp {
return
this
.
moveUp
(
cursor
,
inSelectionMode
,
noOfLines
,
ctx
);
case
editorCommon
.
CursorMoveViewPosition
.
LineDown
:
return
this
.
moveDown
(
cursor
,
inSelectionMode
,
noOfLines
,
ctx
);
case
editorCommon
.
CursorMoveViewPosition
.
LineViewTop
:
viewLineNumber
=
cursor
.
getViewTopLine
(
moveParams
.
noOfLines
||
1
);
viewColumn
=
cursor
.
getViewLineFirstNonWhiteSpaceColumn
(
viewLineNumber
);
break
;
case
editorCommon
.
CursorMoveViewPosition
.
LineViewBottom
:
viewLineNumber
=
cursor
.
getViewBottomLine
(
moveParams
.
noOfLines
||
1
);
viewColumn
=
cursor
.
getViewLineFirstNonWhiteSpaceColumn
(
viewLineNumber
);
break
;
case
editorCommon
.
CursorMoveViewPosition
.
LineViewCenter
:
viewLineNumber
=
cursor
.
getViewCenterLine
();
viewColumn
=
cursor
.
getViewLineFirstNonWhiteSpaceColumn
(
viewLineNumber
);
break
;
default
:
return
false
;
}
...
...
src/vs/editor/common/editorCommon.ts
浏览文件 @
6f94a1fd
...
...
@@ -4184,7 +4184,10 @@ export const CursorMoveViewPosition = {
LineEnd
:
'
lineEnd
'
,
LineLastNonWhitespaceCharacter
:
'
lineLastNonWhitespaceCharacter
'
,
LineUp
:
'
lineUp
'
,
LineDown
:
'
lineDown
'
LineDown
:
'
lineDown
'
,
LineViewTop
:
'
lineViewTop
'
,
LineViewCenter
:
'
lineViewCenter
'
,
LineViewBottom
:
'
lineViewBottom
'
};
/**
...
...
src/vs/editor/test/common/commands/commandTestUtils.ts
浏览文件 @
6f94a1fd
...
...
@@ -6,12 +6,14 @@
import
*
as
assert
from
'
assert
'
;
import
{
Cursor
}
from
'
vs/editor/common/controller/cursor
'
;
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
*
as
editorCommon
from
'
vs/editor/common/editorCommon
'
;
import
{
Model
}
from
'
vs/editor/common/model/model
'
;
import
{
IMode
}
from
'
vs/editor/common/modes
'
;
import
{
MockConfiguration
}
from
'
vs/editor/test/common/mocks/mockConfiguration
'
;
import
{
viewModelHelper
}
from
'
vs/editor/test/common/editorTestUtils
'
;
export
function
testCommand
(
lines
:
string
[],
...
...
@@ -24,7 +26,7 @@ export function testCommand(
let
model
=
Model
.
createFromString
(
lines
.
join
(
'
\n
'
),
undefined
,
mode
);
let
config
=
new
MockConfiguration
(
null
);
let
cursor
=
new
Cursor
(
0
,
config
,
model
,
null
,
false
);
let
cursor
=
new
Cursor
(
0
,
config
,
model
,
viewModelHelper
(
model
)
,
false
);
cursor
.
setSelections
(
'
tests
'
,
[
selection
]);
...
...
src/vs/editor/test/common/commands/sideEditing.test.ts
浏览文件 @
6f94a1fd
...
...
@@ -14,13 +14,14 @@ import {IIdentifiedSingleEditOperation} from 'vs/editor/common/editorCommon';
import
{
Model
}
from
'
vs/editor/common/model/model
'
;
import
{
ILineEdit
,
ModelLine
}
from
'
vs/editor/common/model/modelLine
'
;
import
{
MockConfiguration
}
from
'
vs/editor/test/common/mocks/mockConfiguration
'
;
import
{
viewModelHelper
}
from
'
vs/editor/test/common/editorTestUtils
'
;
const
NO_TAB_SIZE
=
0
;
function
testCommand
(
lines
:
string
[],
selection
:
Selection
,
edits
:
IIdentifiedSingleEditOperation
[],
expectedLines
:
string
[],
expectedSelection
:
Selection
):
void
{
let
model
=
Model
.
createFromString
(
lines
.
join
(
'
\n
'
));
let
config
=
new
MockConfiguration
(
null
);
let
cursor
=
new
Cursor
(
0
,
config
,
model
,
null
,
false
);
let
cursor
=
new
Cursor
(
0
,
config
,
model
,
viewModelHelper
(
model
)
,
false
);
cursor
.
setSelections
(
'
tests
'
,
[
selection
]);
...
...
src/vs/editor/test/common/controller/cursor.test.ts
浏览文件 @
6f94a1fd
...
...
@@ -21,6 +21,7 @@ import {LanguageConfigurationRegistry} from 'vs/editor/common/modes/languageConf
import
{
MockConfiguration
}
from
'
vs/editor/test/common/mocks/mockConfiguration
'
;
import
{
BracketMode
}
from
'
vs/editor/test/common/testModes
'
;
import
{
MockMode
}
from
'
vs/editor/test/common/mocks/mockMode
'
;
import
{
viewModelHelper
}
from
'
vs/editor/test/common/editorTestUtils
'
;
let
H
=
Handler
;
...
...
@@ -205,7 +206,7 @@ suite('Editor Controller - Cursor', () => {
thisModel
=
Model
.
createFromString
(
text
);
thisConfiguration
=
new
MockConfiguration
(
null
);
thisCursor
=
new
Cursor
(
1
,
thisConfiguration
,
thisModel
,
null
,
false
);
thisCursor
=
new
Cursor
(
1
,
thisConfiguration
,
thisModel
,
viewModelHelper
(
thisModel
)
,
false
);
});
teardown
(()
=>
{
...
...
@@ -992,7 +993,7 @@ suite('Editor Controller - Cursor', () => {
'
\t\t
}
'
,
'
\t
}
'
].
join
(
'
\n
'
));
let
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
null
,
true
);
let
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
viewModelHelper
(
model
)
,
true
);
moveTo
(
cursor
,
1
,
7
,
false
);
cursorEqual
(
cursor
,
1
,
7
);
...
...
@@ -1026,7 +1027,7 @@ suite('Editor Controller - Cursor', () => {
'
var concat = require("gulp-concat");
'
,
'
var newer = require("gulp-newer");
'
,
].
join
(
'
\n
'
));
let
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
null
,
true
);
let
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
viewModelHelper
(
model
)
,
true
);
moveTo
(
cursor
,
1
,
4
,
false
);
cursorEqual
(
cursor
,
1
,
4
);
...
...
@@ -1058,7 +1059,7 @@ suite('Editor Controller - Cursor', () => {
'
var concat = require("gulp-concat");
'
,
'
var newer = require("gulp-newer");
'
,
].
join
(
'
\n
'
));
let
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
null
,
true
);
let
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
viewModelHelper
(
model
)
,
true
);
moveTo
(
cursor
,
1
,
4
,
false
);
cursorEqual
(
cursor
,
1
,
4
);
...
...
@@ -1595,7 +1596,7 @@ suite('Editor Controller - Regression tests', () => {
'
qwerty
'
];
let
model
=
Model
.
createFromString
(
text
.
join
(
'
\n
'
));
let
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
null
,
true
);
let
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
viewModelHelper
(
model
)
,
true
);
moveTo
(
cursor
,
2
,
1
,
false
);
cursorEqual
(
cursor
,
2
,
1
,
2
,
1
);
...
...
@@ -1613,7 +1614,7 @@ suite('Editor Controller - Regression tests', () => {
''
];
model
=
Model
.
createFromString
(
text
.
join
(
'
\n
'
));
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
null
,
true
);
cursor
=
new
Cursor
(
1
,
new
MockConfiguration
(
null
),
model
,
viewModelHelper
(
model
)
,
true
);
moveTo
(
cursor
,
2
,
1
,
false
);
cursorEqual
(
cursor
,
2
,
1
,
2
,
1
);
...
...
@@ -2798,7 +2799,7 @@ interface ICursorOpts {
function
usingCursor
(
opts
:
ICursorOpts
,
callback
:(
model
:
Model
,
cursor
:
Cursor
)
=>
void
):
void
{
let
model
=
Model
.
createFromString
(
opts
.
text
.
join
(
'
\n
'
),
opts
.
modelOpts
,
opts
.
mode
);
let
config
=
new
MockConfiguration
(
opts
.
editorOpts
);
let
cursor
=
new
Cursor
(
1
,
config
,
model
,
null
,
false
);
let
cursor
=
new
Cursor
(
1
,
config
,
model
,
viewModelHelper
(
model
)
,
false
);
callback
(
model
,
cursor
);
...
...
src/vs/editor/test/common/editorTestUtils.ts
浏览文件 @
6f94a1fd
...
...
@@ -5,9 +5,39 @@
'
use strict
'
;
import
{
Model
}
from
'
vs/editor/common/model/model
'
;
import
{
IViewModelHelper
}
from
'
vs/editor/common/controller/oneCursor
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Selection
}
from
'
vs/editor/common/core/selection
'
;
export
function
withEditorModel
(
text
:
string
[],
callback
:(
model
:
Model
)
=>
void
):
void
{
var
model
=
Model
.
createFromString
(
text
.
join
(
'
\n
'
));
callback
(
model
);
model
.
dispose
();
}
export
function
viewModelHelper
(
model
):
IViewModelHelper
{
return
{
viewModel
:
model
,
getCurrentVisibleRange
:
()
=>
{
return
null
;
},
getCurrentCenteredRange
:
()
=>
{
return
null
;
},
convertModelPositionToViewPosition
:
(
lineNumber
:
number
,
column
:
number
)
=>
{
return
new
Position
(
lineNumber
,
column
);
},
convertModelRangeToViewRange
:
(
modelRange
:
Range
)
=>
{
return
modelRange
;
},
convertViewToModelPosition
:
(
lineNumber
:
number
,
column
:
number
)
=>
{
return
new
Position
(
lineNumber
,
column
);
},
convertViewSelectionToModelSelection
:
(
viewSelection
:
Selection
)
=>
{
return
viewSelection
;
},
validateViewPosition
:
(
viewLineNumber
:
number
,
viewColumn
:
number
,
modelPosition
:
Position
)
=>
{
return
modelPosition
;
},
validateViewRange
:
(
viewStartLineNumber
:
number
,
viewStartColumn
:
number
,
viewEndLineNumber
:
number
,
viewEndColumn
:
number
,
modelRange
:
Range
)
=>
{
return
modelRange
;
}
};
}
src/vs/editor/test/common/mocks/mockCodeEditor.ts
浏览文件 @
6f94a1fd
...
...
@@ -26,6 +26,7 @@ export class MockCodeEditor extends CommonCodeEditor {
return
new
MockConfiguration
(
options
);
}
public
getCenteredRangeInViewport
():
Range
{
return
null
;
}
public
getVisibleRangeInViewport
():
Range
{
return
null
;
}
public
getScrollWidth
():
number
{
return
0
;
}
public
getScrollLeft
():
number
{
return
0
;
}
...
...
src/vs/monaco.d.ts
浏览文件 @
6f94a1fd
...
...
@@ -3200,6 +3200,9 @@ declare module monaco.editor {
LineLastNonWhitespaceCharacter
:
string
;
LineUp
:
string
;
LineDown
:
string
;
LineViewTop
:
string
;
LineViewCenter
:
string
;
LineViewBottom
:
string
;
};
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录