Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
1c3d756b
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,发现更多精彩内容 >>
提交
1c3d756b
编写于
2月 04, 2017
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Align CoordinatesConverter methods
上级
487f4dbe
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
92 addition
and
108 deletion
+92
-108
src/vs/editor/browser/view/viewController.ts
src/vs/editor/browser/view/viewController.ts
+1
-1
src/vs/editor/browser/view/viewImpl.ts
src/vs/editor/browser/view/viewImpl.ts
+2
-2
src/vs/editor/browser/view/viewOutgoingEvents.ts
src/vs/editor/browser/view/viewOutgoingEvents.ts
+1
-1
src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts
...editor/browser/viewParts/contentWidgets/contentWidgets.ts
+1
-1
src/vs/editor/browser/viewParts/lines/viewLines.ts
src/vs/editor/browser/viewParts/lines/viewLines.ts
+2
-2
src/vs/editor/browser/viewParts/viewZones/viewZones.ts
src/vs/editor/browser/viewParts/viewZones/viewZones.ts
+1
-1
src/vs/editor/common/commonCodeEditor.ts
src/vs/editor/common/commonCodeEditor.ts
+1
-18
src/vs/editor/common/controller/oneCursor.ts
src/vs/editor/common/controller/oneCursor.ts
+23
-26
src/vs/editor/common/controller/textAreaHandler.ts
src/vs/editor/common/controller/textAreaHandler.ts
+2
-1
src/vs/editor/common/controller/textAreaState.ts
src/vs/editor/common/controller/textAreaState.ts
+1
-1
src/vs/editor/common/viewModel/viewModel.ts
src/vs/editor/common/viewModel/viewModel.ts
+5
-6
src/vs/editor/common/viewModel/viewModelDecorations.ts
src/vs/editor/common/viewModel/viewModelDecorations.ts
+6
-2
src/vs/editor/common/viewModel/viewModelImpl.ts
src/vs/editor/common/viewModel/viewModelImpl.ts
+16
-24
src/vs/editor/test/browser/controller/imeTester.ts
src/vs/editor/test/browser/controller/imeTester.ts
+2
-2
src/vs/editor/test/common/controller/textAreaState.test.ts
src/vs/editor/test/common/controller/textAreaState.test.ts
+2
-2
src/vs/editor/test/common/editorTestUtils.ts
src/vs/editor/test/common/editorTestUtils.ts
+26
-18
未找到文件。
src/vs/editor/browser/view/viewController.ts
浏览文件 @
1c3d756b
...
...
@@ -243,7 +243,7 @@ export class ViewController implements IViewController {
// ----------------------
private
convertViewToModelPosition
(
viewPosition
:
Position
):
Position
{
return
this
.
viewModel
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
viewPosition
.
lineNumber
,
viewPosition
.
column
);
return
this
.
viewModel
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
viewPosition
);
}
public
emitKeyDown
(
e
:
IKeyboardEvent
):
void
{
...
...
src/vs/editor/browser/view/viewImpl.ts
浏览文件 @
1c3d756b
...
...
@@ -588,7 +588,7 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
lineNumber
:
modelLineNumber
,
column
:
modelColumn
});
let
viewPosition
=
this
.
_context
.
model
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
modelPosition
.
lineNumber
,
modelPosition
.
column
);
let
viewPosition
=
this
.
_context
.
model
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
modelPosition
);
return
this
.
layoutProvider
.
getVerticalOffsetForLineNumber
(
viewPosition
.
lineNumber
);
},
delegateVerticalScrollbarMouseDown
:
(
browserEvent
:
MouseEvent
)
=>
{
...
...
@@ -605,7 +605,7 @@ export class View extends ViewEventHandler implements editorBrowser.IView, IDisp
lineNumber
:
modelLineNumber
,
column
:
modelColumn
});
let
viewPosition
=
this
.
_context
.
model
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
modelPosition
.
lineNumber
,
modelPosition
.
column
);
let
viewPosition
=
this
.
_context
.
model
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
modelPosition
);
this
.
_flushAccumulatedAndRenderNow
();
let
visibleRanges
=
this
.
viewLines
.
visibleRangesForRange2
(
new
Range
(
viewPosition
.
lineNumber
,
viewPosition
.
column
,
viewPosition
.
lineNumber
,
viewPosition
.
column
),
0
);
if
(
!
visibleRanges
)
{
...
...
src/vs/editor/browser/view/viewOutgoingEvents.ts
浏览文件 @
1c3d756b
...
...
@@ -99,7 +99,7 @@ export class ViewOutgoingEvents extends Disposable {
}
private
_convertViewToModelPosition
(
viewPosition
:
Position
):
Position
{
return
this
.
_viewModel
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
viewPosition
.
lineNumber
,
viewPosition
.
column
);
return
this
.
_viewModel
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
viewPosition
);
}
private
_convertViewToModelRange
(
viewRange
:
Range
):
Range
{
...
...
src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts
浏览文件 @
1c3d756b
...
...
@@ -333,7 +333,7 @@ export class ViewContentWidgets extends ViewPart {
return
null
;
}
let
position
=
this
.
_context
.
model
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
validModelPosition
.
lineNumber
,
validModelPosition
.
column
);
let
position
=
this
.
_context
.
model
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
validModelPosition
);
let
placement
:
IBoxLayoutResult
=
null
;
let
fetchPlacement
=
()
=>
{
...
...
src/vs/editor/browser/viewParts/lines/viewLines.ts
浏览文件 @
1c3d756b
...
...
@@ -300,7 +300,7 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
let
nextLineModelLineNumber
:
number
;
if
(
includeNewLines
)
{
nextLineModelLineNumber
=
this
.
_context
.
model
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
range
.
startLineNumber
,
1
).
lineNumber
;
nextLineModelLineNumber
=
this
.
_context
.
model
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
new
Position
(
range
.
startLineNumber
,
1
)
).
lineNumber
;
}
let
rendStartLineNumber
=
this
.
_linesCollection
.
getStartLineNumber
();
...
...
@@ -321,7 +321,7 @@ export class ViewLines extends ViewLayer<ViewLine> implements IViewLines {
if
(
includeNewLines
&&
lineNumber
<
originalEndLineNumber
)
{
let
currentLineModelLineNumber
=
nextLineModelLineNumber
;
nextLineModelLineNumber
=
this
.
_context
.
model
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
lineNumber
+
1
,
1
).
lineNumber
;
nextLineModelLineNumber
=
this
.
_context
.
model
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
new
Position
(
lineNumber
+
1
,
1
)
).
lineNumber
;
if
(
currentLineModelLineNumber
!==
nextLineModelLineNumber
)
{
visibleRangesForLine
[
visibleRangesForLine
.
length
-
1
].
width
+=
ViewLines
.
LINE_FEED_WIDTH
;
...
...
src/vs/editor/browser/viewParts/viewZones/viewZones.ts
浏览文件 @
1c3d756b
...
...
@@ -178,7 +178,7 @@ export class ViewZones extends ViewPart {
});
}
let
viewPosition
=
this
.
_context
.
model
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
zoneAfterModelPosition
.
lineNumber
,
zoneAfterModelPosition
.
column
);
let
viewPosition
=
this
.
_context
.
model
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
zoneAfterModelPosition
);
let
isVisible
=
this
.
_context
.
model
.
coordinatesConverter
.
modelPositionIsVisible
(
zoneBeforeModelPosition
);
return
{
afterViewLineNumber
:
viewPosition
.
lineNumber
,
...
...
src/vs/editor/common/commonCodeEditor.ts
浏览文件 @
1c3d756b
...
...
@@ -814,30 +814,13 @@ export abstract class CommonCodeEditor extends EventEmitter implements editorCom
let
viewModelHelper
:
IViewModelHelper
=
{
viewModel
:
this
.
viewModel
,
coordinatesConverter
:
this
.
viewModel
.
coordinatesConverter
,
getCurrentCompletelyVisibleViewLinesRangeInViewport
:
()
=>
{
return
this
.
viewModel
.
coordinatesConverter
.
convertModelRangeToViewRange
(
this
.
getCompletelyVisibleLinesRangeInViewport
());
},
getCurrentCompletelyVisibleModelLinesRangeInViewport
:
()
=>
{
return
this
.
getCompletelyVisibleLinesRangeInViewport
();
},
convertModelPositionToViewPosition
:
(
lineNumber
:
number
,
column
:
number
)
=>
{
return
this
.
viewModel
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
lineNumber
,
column
);
},
convertModelRangeToViewRange
:
(
modelRange
:
Range
)
=>
{
return
this
.
viewModel
.
coordinatesConverter
.
convertModelRangeToViewRange
(
modelRange
);
},
convertViewToModelPosition
:
(
lineNumber
:
number
,
column
:
number
)
=>
{
return
this
.
viewModel
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
lineNumber
,
column
);
},
convertViewSelectionToModelSelection
:
(
viewSelection
:
Selection
)
=>
{
return
this
.
viewModel
.
coordinatesConverter
.
convertViewSelectionToModelSelection
(
viewSelection
);
},
validateViewPosition
:
(
viewPosition
:
Position
,
modelPosition
:
Position
):
Position
=>
{
return
this
.
viewModel
.
coordinatesConverter
.
validateViewPosition
(
viewPosition
.
lineNumber
,
viewPosition
.
column
,
modelPosition
);
},
validateViewRange
:
(
viewRange
:
Range
,
modelRange
:
Range
):
Range
=>
{
return
this
.
viewModel
.
coordinatesConverter
.
validateViewRange
(
viewRange
.
startLineNumber
,
viewRange
.
startColumn
,
viewRange
.
endLineNumber
,
viewRange
.
endColumn
,
modelRange
);
}
};
this
.
cursor
=
new
Cursor
(
...
...
src/vs/editor/common/controller/oneCursor.ts
浏览文件 @
1c3d756b
...
...
@@ -13,6 +13,7 @@ import * as editorCommon from 'vs/editor/common/editorCommon';
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
MoveOperations
,
SingleMoveOperationResult
}
from
'
vs/editor/common/controller/cursorMoveOperations
'
;
import
{
WordOperations
,
WordNavigationType
}
from
'
vs/editor/common/controller/cursorWordOperations
'
;
import
{
ICoordinatesConverter
}
from
'
vs/editor/common/viewModel/viewModel
'
;
export
interface
IOneCursorOperationContext
{
cursorPositionChangeReason
:
editorCommon
.
CursorChangeReason
;
...
...
@@ -51,19 +52,13 @@ export interface CursorMoveArguments extends editorCommon.CursorMoveArguments {
export
interface
IViewModelHelper
{
coordinatesConverter
:
ICoordinatesConverter
;
viewModel
:
ICursorSimpleModel
;
getCurrentCompletelyVisibleViewLinesRangeInViewport
():
Range
;
getCurrentCompletelyVisibleModelLinesRangeInViewport
():
Range
;
convertModelPositionToViewPosition
(
lineNumber
:
number
,
column
:
number
):
Position
;
convertModelRangeToViewRange
(
modelRange
:
Range
):
Range
;
convertViewToModelPosition
(
lineNumber
:
number
,
column
:
number
):
Position
;
convertViewSelectionToModelSelection
(
viewSelection
:
Selection
):
Selection
;
validateViewPosition
(
viewPosition
:
Position
,
modelPosition
:
Position
):
Position
;
validateViewRange
(
viewRange
:
Range
,
modelRange
:
Range
):
Range
;
}
export
interface
IOneCursorState
{
...
...
@@ -111,6 +106,7 @@ export class OneCursor implements IOneCursor {
public
readonly
viewModel
:
ICursorSimpleModel
;
private
readonly
configuration
:
editorCommon
.
IConfiguration
;
private
readonly
viewModelHelper
:
IViewModelHelper
;
private
readonly
coordinatesConverter
:
ICoordinatesConverter
;
private
readonly
_modelOptionsListener
:
IDisposable
;
private
readonly
_configChangeListener
:
IDisposable
;
...
...
@@ -135,6 +131,7 @@ export class OneCursor implements IOneCursor {
this
.
configuration
=
configuration
;
this
.
modeConfiguration
=
modeConfiguration
;
this
.
viewModelHelper
=
viewModelHelper
;
this
.
coordinatesConverter
=
viewModelHelper
.
coordinatesConverter
;
this
.
viewModel
=
this
.
viewModelHelper
.
viewModel
;
this
.
_recreateCursorConfig
();
...
...
@@ -195,8 +192,8 @@ export class OneCursor implements IOneCursor {
modelState
=
new
SingleCursorState
(
selectionStart
,
selectionStartLeftoverVisibleColumns
,
position
,
leftoverVisibleColumns
);
// Validate new view state
let
viewSelectionStart
=
this
.
viewModelHelp
er
.
validateViewRange
(
viewState
.
selectionStart
,
modelState
.
selectionStart
);
let
viewPosition
=
this
.
viewModelHelp
er
.
validateViewPosition
(
viewState
.
position
,
modelState
.
position
);
let
viewSelectionStart
=
this
.
coordinatesConvert
er
.
validateViewRange
(
viewState
.
selectionStart
,
modelState
.
selectionStart
);
let
viewPosition
=
this
.
coordinatesConvert
er
.
validateViewPosition
(
viewState
.
position
,
modelState
.
position
);
viewState
=
new
SingleCursorState
(
viewSelectionStart
,
selectionStartLeftoverVisibleColumns
,
viewPosition
,
leftoverVisibleColumns
);
if
(
this
.
modelState
&&
this
.
viewState
&&
this
.
modelState
.
equals
(
modelState
)
&&
this
.
viewState
.
equals
(
viewState
))
{
...
...
@@ -241,12 +238,12 @@ export class OneCursor implements IOneCursor {
selectionStart
=
new
Range
(
position
.
lineNumber
,
position
.
column
,
position
.
lineNumber
,
position
.
column
);
}
let
viewPosition
=
this
.
viewModelHelp
er
.
validateViewPosition
(
new
Position
(
state
.
viewPosition
.
lineNumber
,
state
.
viewPosition
.
column
),
position
);
let
viewPosition
=
this
.
coordinatesConvert
er
.
validateViewPosition
(
new
Position
(
state
.
viewPosition
.
lineNumber
,
state
.
viewPosition
.
column
),
position
);
let
viewSelectionStart
:
Range
;
if
(
state
.
viewSelectionStart
)
{
viewSelectionStart
=
this
.
viewModelHelp
er
.
validateViewRange
(
new
Range
(
state
.
viewSelectionStart
.
startLineNumber
,
state
.
viewSelectionStart
.
startColumn
,
state
.
viewSelectionStart
.
endLineNumber
,
state
.
viewSelectionStart
.
endColumn
),
selectionStart
);
viewSelectionStart
=
this
.
coordinatesConvert
er
.
validateViewRange
(
new
Range
(
state
.
viewSelectionStart
.
startLineNumber
,
state
.
viewSelectionStart
.
startColumn
,
state
.
viewSelectionStart
.
endLineNumber
,
state
.
viewSelectionStart
.
endColumn
),
selectionStart
);
}
else
{
viewSelectionStart
=
this
.
viewModelHelp
er
.
convertModelRangeToViewRange
(
selectionStart
);
viewSelectionStart
=
this
.
coordinatesConvert
er
.
convertModelRangeToViewRange
(
selectionStart
);
}
this
.
_setState
(
...
...
@@ -292,11 +289,11 @@ export class OneCursor implements IOneCursor {
let
viewSelectionStart
:
Position
;
if
(
viewSelection
)
{
viewPosition
=
this
.
viewModelHelp
er
.
validateViewPosition
(
new
Position
(
viewSelection
.
positionLineNumber
,
viewSelection
.
positionColumn
),
position
);
viewSelectionStart
=
this
.
viewModelHelp
er
.
validateViewPosition
(
new
Position
(
viewSelection
.
selectionStartLineNumber
,
viewSelection
.
selectionStartColumn
),
selectionStart
);
viewPosition
=
this
.
coordinatesConvert
er
.
validateViewPosition
(
new
Position
(
viewSelection
.
positionLineNumber
,
viewSelection
.
positionColumn
),
position
);
viewSelectionStart
=
this
.
coordinatesConvert
er
.
validateViewPosition
(
new
Position
(
viewSelection
.
selectionStartLineNumber
,
viewSelection
.
selectionStartColumn
),
selectionStart
);
}
else
{
viewPosition
=
this
.
viewModelHelper
.
convertModelPositionToViewPosition
(
position
.
lineNumber
,
position
.
colum
n
);
viewSelectionStart
=
this
.
viewModelHelper
.
convertModelPositionToViewPosition
(
selectionStart
.
lineNumber
,
selectionStart
.
column
);
viewPosition
=
this
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
positio
n
);
viewSelectionStart
=
this
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
selectionStart
);
}
this
.
_setState
(
...
...
@@ -311,7 +308,7 @@ export class OneCursor implements IOneCursor {
public
setSelectionStart
(
range
:
Range
):
void
{
this
.
_setState
(
this
.
modelState
.
withSelectionStart
(
range
),
this
.
viewState
.
withSelectionStart
(
this
.
viewModelHelp
er
.
convertModelRangeToViewRange
(
range
)),
this
.
viewState
.
withSelectionStart
(
this
.
coordinatesConvert
er
.
convertModelRangeToViewRange
(
range
)),
false
);
}
...
...
@@ -325,12 +322,12 @@ export class OneCursor implements IOneCursor {
}
public
moveModelPosition
(
inSelectionMode
:
boolean
,
lineNumber
:
number
,
column
:
number
,
leftoverVisibleColumns
:
number
,
ensureInEditableRange
:
boolean
):
void
{
let
viewPosition
=
this
.
viewModelHelper
.
convertModelPositionToViewPosition
(
lineNumber
,
column
);
let
viewPosition
=
this
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
new
Position
(
lineNumber
,
column
)
);
this
.
_move
(
inSelectionMode
,
lineNumber
,
column
,
viewPosition
.
lineNumber
,
viewPosition
.
column
,
leftoverVisibleColumns
,
ensureInEditableRange
);
}
public
moveViewPosition
(
inSelectionMode
:
boolean
,
viewLineNumber
:
number
,
viewColumn
:
number
,
leftoverVisibleColumns
:
number
,
ensureInEditableRange
:
boolean
):
void
{
let
modelPosition
=
this
.
viewModelHelper
.
convertViewToModelPosition
(
viewLineNumber
,
viewColumn
);
let
modelPosition
=
this
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
new
Position
(
viewLineNumber
,
viewColumn
)
);
this
.
_move
(
inSelectionMode
,
modelPosition
.
lineNumber
,
modelPosition
.
column
,
viewLineNumber
,
viewColumn
,
leftoverVisibleColumns
,
ensureInEditableRange
);
}
...
...
@@ -367,8 +364,8 @@ export class OneCursor implements IOneCursor {
let
selectionStart
=
new
Range
(
recoveredSelection
.
selectionStartLineNumber
,
recoveredSelection
.
selectionStartColumn
,
recoveredSelection
.
selectionStartLineNumber
,
recoveredSelection
.
selectionStartColumn
);
let
position
=
new
Position
(
recoveredSelection
.
positionLineNumber
,
recoveredSelection
.
positionColumn
);
let
viewSelectionStart
=
this
.
viewModelHelp
er
.
convertModelRangeToViewRange
(
selectionStart
);
let
viewPosition
=
this
.
viewModelHelper
.
convertViewToModelPosition
(
position
.
lineNumber
,
position
.
colum
n
);
let
viewSelectionStart
=
this
.
coordinatesConvert
er
.
convertModelRangeToViewRange
(
selectionStart
);
let
viewPosition
=
this
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
positio
n
);
this
.
_setState
(
new
SingleCursorState
(
selectionStart
,
0
,
position
,
0
),
...
...
@@ -396,17 +393,17 @@ export class OneCursor implements IOneCursor {
return
this
.
model
.
validatePosition
(
position
);
}
public
validateViewPosition
(
viewLineNumber
:
number
,
viewColumn
:
number
,
modelPosition
:
Position
):
Position
{
return
this
.
viewModelHelp
er
.
validateViewPosition
(
new
Position
(
viewLineNumber
,
viewColumn
),
modelPosition
);
return
this
.
coordinatesConvert
er
.
validateViewPosition
(
new
Position
(
viewLineNumber
,
viewColumn
),
modelPosition
);
}
public
convertViewSelectionToModelSelection
(
viewSelection
:
Selection
):
Selection
{
return
this
.
viewModelHelp
er
.
convertViewSelectionToModelSelection
(
viewSelection
);
return
this
.
coordinatesConvert
er
.
convertViewSelectionToModelSelection
(
viewSelection
);
}
public
convertViewToModelPosition
(
lineNumber
:
number
,
column
:
number
):
Position
{
return
this
.
viewModelHelper
.
convertViewToModelPosition
(
lineNumber
,
column
);
return
this
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
new
Position
(
lineNumber
,
column
)
);
}
public
convertModelPositionToViewPosition
(
lineNumber
:
number
,
column
:
number
):
Position
{
return
this
.
viewModelHelper
.
convertModelPositionToViewPosition
(
lineNumber
,
column
);
return
this
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
new
Position
(
lineNumber
,
column
)
);
}
// -- model
...
...
src/vs/editor/common/controller/textAreaHandler.ts
浏览文件 @
1c3d756b
...
...
@@ -11,6 +11,7 @@ import { KeyCode } from 'vs/base/common/keyCodes';
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IClipboardEvent
,
ICompositionEvent
,
IKeyboardEventWrapper
,
ISimpleModel
,
ITextAreaWrapper
,
ITypeData
,
TextAreaState
,
TextAreaStrategy
,
createTextAreaState
}
from
'
vs/editor/common/controller/textAreaState
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
{
EndOfLinePreference
}
from
'
vs/editor/common/editorCommon
'
;
const
enum
ReadFromTextArea
{
...
...
@@ -352,7 +353,7 @@ export class TextAreaHandler extends Disposable {
let
range
:
Range
=
selections
[
0
];
if
(
range
.
isEmpty
())
{
if
(
this
.
Browser
.
enableEmptySelectionClipboard
)
{
let
modelLineNumber
=
this
.
model
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
range
.
startLineNumber
,
1
).
lineNumber
;
let
modelLineNumber
=
this
.
model
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
new
Position
(
range
.
startLineNumber
,
1
)
).
lineNumber
;
return
this
.
model
.
getModelLineContent
(
modelLineNumber
)
+
newLineCharacter
;
}
else
{
return
''
;
...
...
src/vs/editor/common/controller/textAreaState.ts
浏览文件 @
1c3d756b
...
...
@@ -58,7 +58,7 @@ export interface ISimpleModel {
getLineCount
():
number
;
coordinatesConverter
:
{
convertViewPositionToModelPosition
(
view
LineNumber
:
number
,
viewColumn
:
number
):
Position
;
convertViewPositionToModelPosition
(
view
Position
:
Position
):
Position
;
};
}
...
...
src/vs/editor/common/viewModel/viewModel.ts
浏览文件 @
1c3d756b
...
...
@@ -13,17 +13,16 @@ import { Selection } from 'vs/editor/common/core/selection';
export
interface
ICoordinatesConverter
{
// View -> Model conversion and related methods
convertViewPositionToModelPosition
(
view
LineNumber
:
number
,
viewColumn
:
number
):
Position
;
convertViewPositionToModelPosition
(
view
Position
:
Position
):
Position
;
convertViewRangeToModelRange
(
viewRange
:
Range
):
Range
;
convertViewSelectionToModelSelection
(
viewSelection
:
Selection
):
Selection
;
validateViewPosition
(
view
LineNumber
:
number
,
viewColumn
:
number
,
expectedModelPosition
:
Position
):
Position
;
validateViewRange
(
view
StartLineNumber
:
number
,
viewStartColumn
:
number
,
viewEndLineNumber
:
number
,
viewEndColumn
:
number
,
modelRange
:
Range
):
Range
;
validateViewPosition
(
view
Position
:
Position
,
expectedModelPosition
:
Position
):
Position
;
validateViewRange
(
view
Range
:
Range
,
modelRange
:
Range
):
Range
;
// Model -> View conversion and related methods
convertModelPositionToViewPosition
(
model
LineNumber
:
number
,
modelColumn
:
number
):
Position
;
convertModelPositionToViewPosition
(
model
Position
:
Position
):
Position
;
convertModelRangeToViewRange
(
modelRange
:
Range
):
Range
;
convertWholeLineModelRangeToViewRange
(
modelRange
:
Range
):
Range
;
modelPositionIsVisible
(
position
:
Position
):
boolean
;
modelPositionIsVisible
(
modelPosition
:
Position
):
boolean
;
}
export
interface
IViewModel
extends
IEventEmitter
{
...
...
src/vs/editor/common/viewModel/viewModelDecorations.ts
浏览文件 @
1c3d756b
...
...
@@ -6,6 +6,7 @@
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
*
as
editorCommon
from
'
vs/editor/common/editorCommon
'
;
import
{
InlineDecoration
,
ViewModelDecoration
,
ICoordinatesConverter
}
from
'
vs/editor/common/viewModel/viewModel
'
;
...
...
@@ -94,10 +95,13 @@ export class ViewModelDecorations implements IDisposable {
this
.
_decorationsCache
[
id
]
=
r
;
}
if
(
r
.
range
===
null
)
{
const
modelRange
=
modelDecoration
.
range
;
if
(
modelDecoration
.
options
.
isWholeLine
)
{
r
.
range
=
this
.
_coordinatesConverter
.
convertWholeLineModelRangeToViewRange
(
modelDecoration
.
range
);
let
start
=
this
.
_coordinatesConverter
.
convertModelPositionToViewPosition
(
new
Position
(
modelRange
.
startLineNumber
,
1
));
let
end
=
this
.
_coordinatesConverter
.
convertModelPositionToViewPosition
(
new
Position
(
modelRange
.
endLineNumber
,
this
.
model
.
getLineMaxColumn
(
modelRange
.
endLineNumber
)));
r
.
range
=
new
Range
(
start
.
lineNumber
,
start
.
column
,
end
.
lineNumber
,
end
.
column
);
}
else
{
r
.
range
=
this
.
_coordinatesConverter
.
convertModelRangeToViewRange
(
model
Decoration
.
r
ange
);
r
.
range
=
this
.
_coordinatesConverter
.
convertModelRangeToViewRange
(
model
R
ange
);
}
}
return
r
;
...
...
src/vs/editor/common/viewModel/viewModelImpl.ts
浏览文件 @
1c3d756b
...
...
@@ -18,18 +18,16 @@ import { SplitLinesCollection } from 'vs/editor/common/viewModel/splitLinesColle
export
class
CoordinatesConverter
implements
ICoordinatesConverter
{
private
readonly
_model
:
editorCommon
.
IModel
;
private
readonly
_lines
:
SplitLinesCollection
;
constructor
(
model
:
editorCommon
.
IModel
,
lines
:
SplitLinesCollection
)
{
this
.
_model
=
model
;
constructor
(
lines
:
SplitLinesCollection
)
{
this
.
_lines
=
lines
;
}
// View -> Model conversion and related methods
public
convertViewPositionToModelPosition
(
view
LineNumber
:
number
,
viewColumn
:
number
):
Position
{
return
this
.
_lines
.
convertViewPositionToModelPosition
(
view
LineNumber
,
viewC
olumn
);
public
convertViewPositionToModelPosition
(
view
Position
:
Position
):
Position
{
return
this
.
_lines
.
convertViewPositionToModelPosition
(
view
Position
.
lineNumber
,
viewPosition
.
c
olumn
);
}
public
convertViewRangeToModelRange
(
viewRange
:
Range
):
Range
{
...
...
@@ -44,20 +42,20 @@ export class CoordinatesConverter implements ICoordinatesConverter {
return
new
Selection
(
selectionStart
.
lineNumber
,
selectionStart
.
column
,
position
.
lineNumber
,
position
.
column
);
}
public
validateViewPosition
(
view
LineNumber
:
number
,
viewColumn
:
number
,
expectedModelPosition
:
Position
):
Position
{
return
this
.
_lines
.
validateViewPosition
(
view
LineNumber
,
viewC
olumn
,
expectedModelPosition
);
public
validateViewPosition
(
view
Position
:
Position
,
expectedModelPosition
:
Position
):
Position
{
return
this
.
_lines
.
validateViewPosition
(
view
Position
.
lineNumber
,
viewPosition
.
c
olumn
,
expectedModelPosition
);
}
public
validateViewRange
(
view
StartLineNumber
:
number
,
viewStartColumn
:
number
,
viewEndLineNumber
:
number
,
viewEndColumn
:
number
,
modelRange
:
Range
):
Range
{
var
validViewStart
=
this
.
validateViewPosition
(
viewStartLineNumber
,
viewS
tartColumn
,
modelRange
.
getStartPosition
());
var
validViewEnd
=
this
.
validateViewPosition
(
viewEndLineNumber
,
viewE
ndColumn
,
modelRange
.
getEndPosition
());
public
validateViewRange
(
view
Range
:
Range
,
modelRange
:
Range
):
Range
{
var
validViewStart
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
startLineNumber
,
viewRange
.
s
tartColumn
,
modelRange
.
getStartPosition
());
var
validViewEnd
=
this
.
_lines
.
validateViewPosition
(
viewRange
.
endLineNumber
,
viewRange
.
e
ndColumn
,
modelRange
.
getEndPosition
());
return
new
Range
(
validViewStart
.
lineNumber
,
validViewStart
.
column
,
validViewEnd
.
lineNumber
,
validViewEnd
.
column
);
}
// Model -> View conversion and related methods
public
convertModelPositionToViewPosition
(
model
LineNumber
:
number
,
modelColumn
:
number
):
Position
{
return
this
.
_lines
.
convertModelPositionToViewPosition
(
model
LineNumber
,
modelC
olumn
);
public
convertModelPositionToViewPosition
(
model
Position
:
Position
):
Position
{
return
this
.
_lines
.
convertModelPositionToViewPosition
(
model
Position
.
lineNumber
,
modelPosition
.
c
olumn
);
}
public
convertModelRangeToViewRange
(
modelRange
:
Range
):
Range
{
...
...
@@ -66,14 +64,8 @@ export class CoordinatesConverter implements ICoordinatesConverter {
return
new
Range
(
start
.
lineNumber
,
start
.
column
,
end
.
lineNumber
,
end
.
column
);
}
public
convertWholeLineModelRangeToViewRange
(
modelRange
:
Range
):
Range
{
let
start
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelRange
.
startLineNumber
,
1
);
let
end
=
this
.
_lines
.
convertModelPositionToViewPosition
(
modelRange
.
endLineNumber
,
this
.
_model
.
getLineMaxColumn
(
modelRange
.
endLineNumber
));
return
new
Range
(
start
.
lineNumber
,
start
.
column
,
end
.
lineNumber
,
end
.
column
);
}
public
modelPositionIsVisible
(
position
:
Position
):
boolean
{
return
this
.
_lines
.
modelPositionIsVisible
(
position
.
lineNumber
,
position
.
column
);
public
modelPositionIsVisible
(
modelPosition
:
Position
):
boolean
{
return
this
.
_lines
.
modelPositionIsVisible
(
modelPosition
.
lineNumber
,
modelPosition
.
column
);
}
}
...
...
@@ -105,7 +97,7 @@ export class ViewModel extends EventEmitter implements IViewModel {
this
.
configuration
=
configuration
;
this
.
model
=
model
;
this
.
coordinatesConverter
=
new
CoordinatesConverter
(
this
.
model
,
this
.
lines
);
this
.
coordinatesConverter
=
new
CoordinatesConverter
(
this
.
lines
);
this
.
_lastCursorPosition
=
new
Position
(
1
,
1
);
this
.
_renderCustomLineNumbers
=
this
.
configuration
.
editor
.
viewInfo
.
renderCustomLineNumbers
;
...
...
@@ -397,8 +389,8 @@ export class ViewModel extends EventEmitter implements IViewModel {
for
(
let
i
=
0
,
len
=
e
.
ranges
.
length
;
i
<
len
;
i
++
)
{
let
modelRange
=
e
.
ranges
[
i
];
let
viewStartLineNumber
=
this
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
modelRange
.
fromLineNumber
,
1
).
lineNumber
;
let
viewEndLineNumber
=
this
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
modelRange
.
toLineNumber
,
this
.
model
.
getLineMaxColumn
(
modelRange
.
toLineNumber
)).
lineNumber
;
let
viewStartLineNumber
=
this
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
new
Position
(
modelRange
.
fromLineNumber
,
1
)
).
lineNumber
;
let
viewEndLineNumber
=
this
.
coordinatesConverter
.
convertModelPositionToViewPosition
(
new
Position
(
modelRange
.
toLineNumber
,
this
.
model
.
getLineMaxColumn
(
modelRange
.
toLineNumber
)
)).
lineNumber
;
viewRanges
[
i
]
=
{
fromLineNumber
:
viewStartLineNumber
,
toLineNumber
:
viewEndLineNumber
...
...
@@ -491,7 +483,7 @@ export class ViewModel extends EventEmitter implements IViewModel {
}
public
getLineRenderLineNumber
(
viewLineNumber
:
number
):
string
{
let
modelPosition
=
this
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
viewLineNumber
,
1
);
let
modelPosition
=
this
.
coordinatesConverter
.
convertViewPositionToModelPosition
(
new
Position
(
viewLineNumber
,
1
)
);
if
(
modelPosition
.
column
!==
1
)
{
return
''
;
}
...
...
src/vs/editor/test/browser/controller/imeTester.ts
浏览文件 @
1c3d756b
...
...
@@ -20,8 +20,8 @@ class SingleLineTestModel implements ISimpleModel {
private
_eol
:
string
;
public
coordinatesConverter
=
{
convertViewPositionToModelPosition
:
(
view
LineNumber
:
number
,
viewColumn
:
number
):
Position
=>
{
return
new
Position
(
viewLineNumber
,
viewColumn
)
;
convertViewPositionToModelPosition
:
(
view
Position
:
Position
):
Position
=>
{
return
viewPosition
;
}
};
...
...
src/vs/editor/test/common/controller/textAreaState.test.ts
浏览文件 @
1c3d756b
...
...
@@ -412,8 +412,8 @@ class SimpleModel implements ISimpleModel {
private
_eol
:
string
;
public
coordinatesConverter
=
{
convertViewPositionToModelPosition
:
(
view
LineNumber
:
number
,
viewColumn
:
number
):
Position
=>
{
return
new
Position
(
viewLineNumber
,
viewColumn
)
;
convertViewPositionToModelPosition
:
(
view
Position
:
Position
):
Position
=>
{
return
viewPosition
;
}
};
...
...
src/vs/editor/test/common/editorTestUtils.ts
浏览文件 @
1c3d756b
...
...
@@ -19,25 +19,33 @@ export function withEditorModel(text: string[], callback: (model: Model) => void
export
function
viewModelHelper
(
model
):
IViewModelHelper
{
return
{
viewModel
:
model
,
coordinatesConverter
:
{
convertViewPositionToModelPosition
:
(
viewPosition
:
Position
):
Position
=>
{
return
viewPosition
;
},
convertViewRangeToModelRange
:
(
viewRange
:
Range
):
Range
=>
{
return
viewRange
;
},
convertViewSelectionToModelSelection
:
(
viewSelection
:
Selection
):
Selection
=>
{
return
viewSelection
;
},
validateViewPosition
:
(
viewPosition
:
Position
,
expectedModelPosition
:
Position
):
Position
=>
{
return
expectedModelPosition
;
},
validateViewRange
:
(
viewRange
:
Range
,
modelRange
:
Range
):
Range
=>
{
return
modelRange
;
},
convertModelPositionToViewPosition
:
(
modelPosition
:
Position
):
Position
=>
{
return
modelPosition
;
},
convertModelRangeToViewRange
:
(
modelRange
:
Range
):
Range
=>
{
return
modelRange
;
},
modelPositionIsVisible
:
(
modelPosition
:
Position
):
boolean
=>
{
return
true
;
},
},
getCurrentCompletelyVisibleViewLinesRangeInViewport
:
()
=>
{
return
null
;
},
getCurrentCompletelyVisibleModelLinesRangeInViewport
:
()
=>
{
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
:
(
viewPosition
:
Position
,
modelPosition
:
Position
):
Position
=>
{
return
modelPosition
;
},
validateViewRange
:
(
viewRange
:
Range
,
modelRange
:
Range
):
Range
=>
{
return
modelRange
;
}
};
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录