Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
4014ee77
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,发现更多精彩内容 >>
未验证
提交
4014ee77
编写于
11月 08, 2019
作者:
M
Miguel Solorio
提交者:
GitHub
11月 08, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into misolori/dialog-polish
上级
e61d5b90
b1033567
变更
3
展开全部
显示空白变更内容
内联
并排
Showing
3 changed file
with
28 addition
and
10 deletion
+28
-10
extensions/markdown-language-features/media/index.js
extensions/markdown-language-features/media/index.js
+2
-2
extensions/markdown-language-features/preview-src/scroll-sync.ts
...ons/markdown-language-features/preview-src/scroll-sync.ts
+25
-6
extensions/markdown-language-features/src/features/preview.ts
...nsions/markdown-language-features/src/features/preview.ts
+1
-2
未找到文件。
extensions/markdown-language-features/media/index.js
浏览文件 @
4014ee77
此差异已折叠。
点击以展开。
extensions/markdown-language-features/preview-src/scroll-sync.ts
浏览文件 @
4014ee77
...
...
@@ -5,6 +5,7 @@
import
{
getSettings
}
from
'
./settings
'
;
const
codeLineClass
=
'
code-line
'
;
function
clamp
(
min
:
number
,
max
:
number
,
value
:
number
)
{
return
Math
.
min
(
max
,
Math
.
max
(
min
,
value
));
...
...
@@ -25,7 +26,7 @@ const getCodeLineElements = (() => {
return
()
=>
{
if
(
!
elements
)
{
elements
=
[{
element
:
document
.
body
,
line
:
0
}];
for
(
const
element
of
document
.
getElementsByClassName
(
'
code-line
'
))
{
for
(
const
element
of
document
.
getElementsByClassName
(
codeLineClass
))
{
const
line
=
+
element
.
getAttribute
(
'
data-line
'
)
!
;
if
(
isNaN
(
line
))
{
continue
;
...
...
@@ -75,7 +76,7 @@ export function getLineElementsAtPageOffset(offset: number): { previous: CodeLin
let
hi
=
lines
.
length
-
1
;
while
(
lo
+
1
<
hi
)
{
const
mid
=
Math
.
floor
((
lo
+
hi
)
/
2
);
const
bounds
=
lines
[
mid
].
element
.
getBoundingClientRect
(
);
const
bounds
=
getElementBounds
(
lines
[
mid
]
);
if
(
bounds
.
top
+
bounds
.
height
>=
position
)
{
hi
=
mid
;
}
...
...
@@ -84,7 +85,7 @@ export function getLineElementsAtPageOffset(offset: number): { previous: CodeLin
}
}
const
hiElement
=
lines
[
hi
];
const
hiBounds
=
hiElement
.
element
.
getBoundingClientRect
(
);
const
hiBounds
=
getElementBounds
(
hiElement
);
if
(
hi
>=
1
&&
hiBounds
.
top
>
position
)
{
const
loElement
=
lines
[
lo
];
return
{
previous
:
loElement
,
next
:
hiElement
};
...
...
@@ -95,6 +96,24 @@ export function getLineElementsAtPageOffset(offset: number): { previous: CodeLin
return
{
previous
:
hiElement
};
}
function
getElementBounds
({
element
}:
CodeLineElement
):
{
top
:
number
,
height
:
number
}
{
const
myBounds
=
element
.
getBoundingClientRect
();
// Some code line elements may contain other code line elements.
// In those cases, only take the height up to that child.
const
codeLineChild
=
element
.
querySelector
(
`.
${
codeLineClass
}
`
);
if
(
codeLineChild
)
{
const
childBounds
=
codeLineChild
.
getBoundingClientRect
();
const
height
=
Math
.
max
(
1
,
(
childBounds
.
top
-
myBounds
.
top
));
return
{
top
:
myBounds
.
top
,
height
:
height
};
}
return
myBounds
;
}
/**
* Attempt to reveal the element for a source line in the editor.
*/
...
...
@@ -113,7 +132,7 @@ export function scrollToRevealSourceLine(line: number) {
return
;
}
let
scrollTo
=
0
;
const
rect
=
previous
.
element
.
getBoundingClientRect
(
);
const
rect
=
getElementBounds
(
previous
);
const
previousTop
=
rect
.
top
;
if
(
next
&&
next
.
line
!==
previous
.
line
)
{
// Between two elements. Go to percentage offset between them.
...
...
@@ -130,10 +149,10 @@ export function scrollToRevealSourceLine(line: number) {
export
function
getEditorLineNumberForPageOffset
(
offset
:
number
)
{
const
{
previous
,
next
}
=
getLineElementsAtPageOffset
(
offset
);
if
(
previous
)
{
const
previousBounds
=
previous
.
element
.
getBoundingClientRect
(
);
const
previousBounds
=
getElementBounds
(
previous
);
const
offsetFromPrevious
=
(
offset
-
window
.
scrollY
-
previousBounds
.
top
);
if
(
next
)
{
const
progressBetweenElements
=
offsetFromPrevious
/
(
next
.
element
.
getBoundingClientRect
(
).
top
-
previousBounds
.
top
);
const
progressBetweenElements
=
offsetFromPrevious
/
(
getElementBounds
(
next
).
top
-
previousBounds
.
top
);
const
line
=
previous
.
line
+
progressBetweenElements
*
(
next
.
line
-
previous
.
line
);
return
clampLine
(
line
);
}
else
{
...
...
extensions/markdown-language-features/src/features/preview.ts
浏览文件 @
4014ee77
...
...
@@ -223,7 +223,7 @@ export class DynamicMarkdownPreview extends Disposable {
this
.
_register
(
vscode
.
window
.
onDidChangeActiveTextEditor
(
editor
=>
{
if
(
editor
&&
isMarkdownFile
(
editor
.
document
)
&&
!
this
.
_locked
)
{
this
.
update
(
editor
.
document
.
uri
);
this
.
update
(
editor
.
document
.
uri
,
false
);
}
}));
...
...
@@ -264,7 +264,6 @@ export class DynamicMarkdownPreview extends Disposable {
this
.
_onDisposeEmitter
.
fire
();
this
.
_onDisposeEmitter
.
dispose
();
this
.
_onDidChangeViewStateEmitter
.
dispose
();
this
.
editor
.
dispose
();
super
.
dispose
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录