Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
00d20b9d
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,发现更多精彩内容 >>
未验证
提交
00d20b9d
编写于
9月 20, 2021
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use neighbouring word range iff avialable,
https://github.com/microsoft/vscode/issues/125995
上级
35518adc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
34 addition
and
10 deletion
+34
-10
src/vs/editor/contrib/inlayHints/inlayHintsController.ts
src/vs/editor/contrib/inlayHints/inlayHintsController.ts
+34
-10
未找到文件。
src/vs/editor/contrib/inlayHints/inlayHintsController.ts
浏览文件 @
00d20b9d
...
...
@@ -19,8 +19,8 @@ import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService
import
{
EditorOption
}
from
'
vs/editor/common/config/editorOptions
'
;
import
{
Position
}
from
'
vs/editor/common/core/position
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
IEditorContribution
}
from
'
vs/editor/common/editorCommon
'
;
import
{
IModelDeltaDecoration
,
ITextModel
}
from
'
vs/editor/common/model
'
;
import
{
I
ContentDecorationRenderOptions
,
IDecorationRenderOptions
,
I
EditorContribution
}
from
'
vs/editor/common/editorCommon
'
;
import
{
IModelDeltaDecoration
,
ITextModel
,
TrackedRangeStickiness
}
from
'
vs/editor/common/model
'
;
import
{
InlayHint
,
InlayHintsProvider
,
InlayHintsProviderRegistry
}
from
'
vs/editor/common/modes
'
;
import
{
LanguageFeatureRequestDelays
}
from
'
vs/editor/common/modes/languageFeatureRegistry
'
;
import
{
ITextModelService
}
from
'
vs/editor/common/services/resolverService
'
;
...
...
@@ -191,16 +191,18 @@ export class InlayHintsController implements IEditorContribution {
const
fontFamilyVar
=
'
--inlayHintsFontFamily
'
;
this
.
_editor
.
getContainerDomNode
().
style
.
setProperty
(
fontFamilyVar
,
fontFamily
);
const
model
=
this
.
_editor
.
getModel
()
!
;
for
(
const
{
list
:
hints
}
of
hintsData
)
{
for
(
let
j
=
0
;
j
<
hints
.
length
&&
newDecorationsData
.
length
<
MAX_DECORATORS
;
j
++
)
{
const
{
text
,
position
,
whitespaceBefore
,
whitespaceAfter
}
=
hints
[
j
];
const
marginBefore
=
whitespaceBefore
?
(
fontSize
/
3
)
|
0
:
0
;
const
marginAfter
=
whitespaceAfter
?
(
fontSize
/
3
)
|
0
:
0
;
const
massagedText
=
fixSpace
(
text
);
const
beforeInjectedText
=
{
const
contentOptions
:
IContentDecorationRenderOptions
=
{
contentText
:
massagedText
,
backgroundColor
:
`
${
backgroundColor
}
`
,
color
:
`
${
fontColor
}
`
,
...
...
@@ -209,11 +211,29 @@ export class InlayHintsController implements IEditorContribution {
fontFamily
:
`var(
${
fontFamilyVar
}
)`
,
padding
:
`0px
${(
fontSize
/
4
)
|
0
}
px`
,
borderRadius
:
`
${(
fontSize
/
4
)
|
0
}
px`
,
verticalAlign
:
'
middle
'
,
affectsLetterSpacing
:
true
verticalAlign
:
'
middle
'
};
const
key
=
'
inlayHints-
'
+
hash
(
beforeInjectedText
).
toString
(
16
);
this
.
_codeEditorService
.
registerDecorationType
(
'
inlay-hints-controller
'
,
key
,
{
beforeInjectedText
},
undefined
,
this
.
_editor
);
let
renderOptions
:
IDecorationRenderOptions
=
{
beforeInjectedText
:
{
...
contentOptions
,
affectsLetterSpacing
:
true
}
};
let
range
=
Range
.
fromPositions
(
position
);
let
word
=
model
.
getWordAtPosition
(
position
);
let
usesWordRange
=
false
;
if
(
word
)
{
if
(
word
.
endColumn
===
position
.
column
)
{
// change decoration to after
range
=
new
Range
(
position
.
lineNumber
,
position
.
column
,
position
.
lineNumber
,
word
.
endColumn
);
renderOptions
.
afterInjectedText
=
renderOptions
.
beforeInjectedText
;
renderOptions
.
beforeInjectedText
=
undefined
;
usesWordRange
=
true
;
}
else
if
(
word
.
startColumn
===
position
.
column
)
{
range
=
new
Range
(
position
.
lineNumber
,
word
.
startColumn
,
position
.
lineNumber
,
position
.
column
);
usesWordRange
=
true
;
}
}
const
key
=
'
inlayHints-
'
+
hash
(
renderOptions
).
toString
(
16
);
this
.
_codeEditorService
.
registerDecorationType
(
'
inlay-hints-controller
'
,
key
,
renderOptions
,
undefined
,
this
.
_editor
);
// decoration types are ref-counted which means we only need to
// call register und remove equally often
...
...
@@ -221,8 +241,12 @@ export class InlayHintsController implements IEditorContribution {
const
options
=
this
.
_codeEditorService
.
resolveDecorationOptions
(
key
,
true
);
newDecorationsData
.
push
({
range
:
Range
.
fromPositions
(
position
),
options
range
,
options
:
{
...
options
,
showIfCollapsed
:
!
usesWordRange
,
stickiness
:
TrackedRangeStickiness
.
AlwaysGrowsWhenTypingAtEdges
}
});
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录