Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
b7a8a4aa
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,体验更适合开发者的 AI 搜索 >>
提交
b7a8a4aa
编写于
1月 21, 2020
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
untitled - do not pick first line name if it does not include words
上级
6d5a1e82
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
31 addition
and
9 deletion
+31
-9
src/vs/workbench/common/editor/untitledTextEditorInput.ts
src/vs/workbench/common/editor/untitledTextEditorInput.ts
+19
-6
src/vs/workbench/test/common/editor/untitledTextEditor.test.ts
...s/workbench/test/common/editor/untitledTextEditor.test.ts
+12
-3
未找到文件。
src/vs/workbench/common/editor/untitledTextEditorInput.ts
浏览文件 @
b7a8a4aa
...
...
@@ -18,6 +18,7 @@ import { IResolvedTextEditorModel } from 'vs/editor/common/services/resolverServ
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IEditorGroupsService
}
from
'
vs/workbench/services/editor/common/editorGroupsService
'
;
import
{
IWorkbenchEnvironmentService
}
from
'
vs/workbench/services/environment/common/environmentService
'
;
import
{
ensureValidWordDefinition
}
from
'
vs/editor/common/model/wordHelper
'
;
/**
* An editor input to be used for untitled text buffers.
...
...
@@ -34,7 +35,7 @@ export class UntitledTextEditorInput extends TextEditorInput implements IEncodin
readonly
onDidModelChangeEncoding
=
this
.
_onDidModelChangeEncoding
.
event
;
private
cachedModel
:
UntitledTextEditorModel
|
null
=
null
;
private
cachedModelFirst
Line
:
string
|
undefined
=
undefined
;
private
cachedModelFirst
Words
:
string
|
undefined
=
undefined
;
private
modelResolve
:
Promise
<
UntitledTextEditorModel
&
IResolvedTextEditorModel
>
|
null
=
null
;
...
...
@@ -76,11 +77,11 @@ export class UntitledTextEditorInput extends TextEditorInput implements IEncodin
getName
():
string
{
// Take name from first
line
if present and only if
// Take name from first
words
if present and only if
// we have no associated file path. In that case we
// prefer the file name as title.
if
(
!
this
.
_hasAssociatedFilePath
&&
this
.
cachedModelFirst
Line
)
{
return
this
.
cachedModelFirst
Line
;
if
(
!
this
.
_hasAssociatedFilePath
&&
this
.
cachedModelFirst
Words
)
{
return
this
.
cachedModelFirst
Words
;
}
// Otherwise fallback to resource
...
...
@@ -302,9 +303,21 @@ export class UntitledTextEditorInput extends TextEditorInput implements IEncodin
}
private
onDidChangeFirstLine
(
model
:
UntitledTextEditorModel
):
void
{
// Determine the first words of the model following these rules:
// - cannot be only whitespace (so we trim())
// - cannot be only non-alphanumeric characters (so we run word definition regex over it)
// - cannot be longer than FIRST_LINE_MAX_TITLE_LENGTH
let
modelFirstWordsCandidate
:
string
|
undefined
=
undefined
;
const
firstLineText
=
model
.
textEditorModel
?.
getValueInRange
({
startLineNumber
:
1
,
endLineNumber
:
1
,
startColumn
:
1
,
endColumn
:
UntitledTextEditorInput
.
FIRST_LINE_MAX_TITLE_LENGTH
}).
trim
();
if
(
firstLineText
!==
this
.
cachedModelFirstLine
)
{
this
.
cachedModelFirstLine
=
firstLineText
;
if
(
firstLineText
&&
ensureValidWordDefinition
().
exec
(
firstLineText
))
{
modelFirstWordsCandidate
=
firstLineText
;
}
if
(
modelFirstWordsCandidate
!==
this
.
cachedModelFirstWords
)
{
this
.
cachedModelFirstWords
=
modelFirstWordsCandidate
;
this
.
_onDidChangeLabel
.
fire
();
}
}
...
...
src/vs/workbench/test/common/editor/untitledTextEditor.test.ts
浏览文件 @
b7a8a4aa
...
...
@@ -387,10 +387,19 @@ suite('Workbench untitled text editors', () => {
model
.
textEditorModel
.
setValue
(
''
);
assert
.
equal
(
input
.
getName
(),
'
Untitled-1
'
);
assert
.
equal
(
counter
,
3
);
model
.
textEditorModel
.
setValue
(
'
'
);
assert
.
equal
(
input
.
getName
(),
'
Untitled-1
'
);
model
.
textEditorModel
.
setValue
(
'
([]}
'
);
// require actual words
assert
.
equal
(
input
.
getName
(),
'
Untitled-1
'
);
model
.
textEditorModel
.
setValue
(
'
([]}hello
'
);
// require actual words
assert
.
equal
(
input
.
getName
(),
'
([]}hello
'
);
assert
.
equal
(
counter
,
6
);
model
.
textEditorModel
.
setValue
(
'
Hello
\n
World
'
);
assert
.
equal
(
counter
,
4
);
assert
.
equal
(
counter
,
7
);
function
createSingleEditOp
(
text
:
string
,
positionLineNumber
:
number
,
positionColumn
:
number
,
selectionLineNumber
:
number
=
positionLineNumber
,
selectionColumn
:
number
=
positionColumn
):
IIdentifiedSingleEditOperation
{
let
range
=
new
Range
(
...
...
@@ -409,7 +418,7 @@ suite('Workbench untitled text editors', () => {
}
model
.
textEditorModel
.
applyEdits
([
createSingleEditOp
(
'
hello
'
,
2
,
2
)]);
assert
.
equal
(
counter
,
4
);
// change was not on first line
assert
.
equal
(
counter
,
7
);
// change was not on first line
input
.
dispose
();
model
.
dispose
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录