Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
a82789a2
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,发现更多精彩内容 >>
提交
a82789a2
编写于
2月 06, 2020
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Untitled - run mode detection to detect modes from first line upon paste (fix #90147)
上级
b4eb9933
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
5 deletion
+23
-5
src/vs/workbench/browser/parts/editor/textResourceEditor.ts
src/vs/workbench/browser/parts/editor/textResourceEditor.ts
+23
-5
未找到文件。
src/vs/workbench/browser/parts/editor/textResourceEditor.ts
浏览文件 @
a82789a2
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
*
as
nls
from
'
vs/nls
'
;
import
{
assertIsDefined
,
isFunction
}
from
'
vs/base/common/types
'
;
import
{
assertIsDefined
,
isFunction
,
withNullAsUndefined
}
from
'
vs/base/common/types
'
;
import
{
ICodeEditor
,
getCodeEditor
,
IPasteEvent
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
TextEditorOptions
,
EditorInput
,
EditorOptions
}
from
'
vs/workbench/common/editor
'
;
import
{
ResourceEditorInput
}
from
'
vs/workbench/common/editor/resourceEditorInput
'
;
...
...
@@ -26,6 +26,7 @@ import { IModeService } from 'vs/editor/common/services/modeService';
import
{
PLAINTEXT_MODE_ID
}
from
'
vs/editor/common/modes/modesRegistry
'
;
import
{
EditorOption
,
IEditorOptions
}
from
'
vs/editor/common/config/editorOptions
'
;
import
{
basenameOrAuthority
}
from
'
vs/base/common/resources
'
;
import
{
ModelConstants
}
from
'
vs/editor/common/model
'
;
/**
* An editor implementation that is capable of showing the contents of resource inputs. Uses
...
...
@@ -213,8 +214,8 @@ export class TextResourceEditor extends AbstractTextResourceEditor {
}
private
onDidEditorPaste
(
e
:
IPasteEvent
,
codeEditor
:
ICodeEditor
):
void
{
if
(
!
e
.
mode
||
e
.
mode
===
PLAINTEXT_MODE_ID
)
{
return
;
//
require a specific mode
if
(
e
.
range
.
startLineNumber
!==
1
)
{
return
;
//
only when pasting into first line (= likely empty document)
}
if
(
codeEditor
.
getOption
(
EditorOption
.
readOnly
))
{
...
...
@@ -231,7 +232,24 @@ export class TextResourceEditor extends AbstractTextResourceEditor {
return
;
// require current mode to be unspecific
}
// Finally apply mode to model
this
.
modelService
.
setMode
(
textModel
,
this
.
modeService
.
create
(
e
.
mode
));
let
candidateMode
:
string
|
undefined
=
undefined
;
// A mode is provided via the paste event so text was copied using
// VSCode. As such we trust this mode and use it if specific
if
(
e
.
mode
)
{
candidateMode
=
e
.
mode
;
}
// A mode was not provided, so the data comes from outside VSCode
// We can still try to guess a good mode from the first line if
// the paste changed the first line
else
{
candidateMode
=
withNullAsUndefined
(
this
.
modeService
.
getModeIdByFilepathOrFirstLine
(
textModel
.
uri
,
textModel
.
getLineContent
(
1
).
substr
(
0
,
ModelConstants
.
FIRST_LINE_DETECTION_LENGTH_LIMIT
)));
}
// Finally apply mode to model if specified
if
(
candidateMode
!==
PLAINTEXT_MODE_ID
)
{
this
.
modelService
.
setMode
(
textModel
,
this
.
modeService
.
create
(
candidateMode
));
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录