Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
c1b81e5e
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,发现更多精彩内容 >>
提交
c1b81e5e
编写于
6月 28, 2017
作者:
R
rebornix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #29803. Do not reindent the line if the content is pasted to the middle
上级
63fe7bab
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
58 addition
and
52 deletion
+58
-52
src/vs/editor/common/modes/languageConfigurationRegistry.ts
src/vs/editor/common/modes/languageConfigurationRegistry.ts
+4
-0
src/vs/editor/contrib/indentation/common/indentation.ts
src/vs/editor/contrib/indentation/common/indentation.ts
+54
-52
未找到文件。
src/vs/editor/common/modes/languageConfigurationRegistry.ts
浏览文件 @
c1b81e5e
...
...
@@ -473,6 +473,10 @@ export class LanguageConfigurationRegistryImpl {
indentation
=
indentConverter
.
unshiftIndent
(
indentation
);
}
if
(
indentRulesSupport
.
shouldDecrease
(
lineContent
))
{
indentation
=
indentConverter
.
unshiftIndent
(
indentation
);
}
if
(
enterResult
.
appendText
)
{
indentation
+=
enterResult
.
appendText
;
}
...
...
src/vs/editor/contrib/indentation/common/indentation.ts
浏览文件 @
c1b81e5e
...
...
@@ -462,61 +462,63 @@ export class AutoIndentOnPaste implements IEditorContribution {
return
;
}
let
indentOfFirstLine
=
LanguageConfigurationRegistry
.
getGoodIndentForLine
(
model
,
model
.
getLanguageIdentifier
().
id
,
startLineNumber
,
indentConverter
);
if
(
indentOfFirstLine
!==
null
)
{
let
firstLineText
=
model
.
getLineContent
(
startLineNumber
);
let
oldIndentation
=
strings
.
getLeadingWhitespace
(
firstLineText
);
let
newSpaceCnt
=
IndentUtil
.
getSpaceCnt
(
indentOfFirstLine
,
tabSize
);
let
oldSpaceCnt
=
IndentUtil
.
getSpaceCnt
(
oldIndentation
,
tabSize
);
if
(
newSpaceCnt
!==
oldSpaceCnt
)
{
let
newIndent
=
IndentUtil
.
generateIndent
(
newSpaceCnt
,
tabSize
,
insertSpaces
);
textEdits
.
push
({
range
:
new
Range
(
startLineNumber
,
1
,
startLineNumber
,
oldIndentation
.
length
+
1
),
text
:
newIndent
});
firstLineText
=
newIndent
+
firstLineText
.
substr
(
oldIndentation
.
length
);
let
firstLineText
=
model
.
getLineContent
(
startLineNumber
);
if
(
!
/
\S
/
.
test
(
firstLineText
.
substring
(
0
,
range
.
startColumn
-
1
)))
{
let
indentOfFirstLine
=
LanguageConfigurationRegistry
.
getGoodIndentForLine
(
model
,
model
.
getLanguageIdentifier
().
id
,
startLineNumber
,
indentConverter
);
if
(
indentOfFirstLine
!==
null
)
{
let
oldIndentation
=
strings
.
getLeadingWhitespace
(
firstLineText
);
let
newSpaceCnt
=
IndentUtil
.
getSpaceCnt
(
indentOfFirstLine
,
tabSize
);
let
oldSpaceCnt
=
IndentUtil
.
getSpaceCnt
(
oldIndentation
,
tabSize
);
if
(
newSpaceCnt
!==
oldSpaceCnt
)
{
let
newIndent
=
IndentUtil
.
generateIndent
(
newSpaceCnt
,
tabSize
,
insertSpaces
);
textEdits
.
push
({
range
:
new
Range
(
startLineNumber
,
1
,
startLineNumber
,
oldIndentation
.
length
+
1
),
text
:
newIndent
});
firstLineText
=
newIndent
+
firstLineText
.
substr
(
oldIndentation
.
length
);
}
}
}
if
(
startLineNumber
!==
range
.
endLineNumber
)
{
let
virtualModel
=
{
getLineTokens
:
(
lineNumber
:
number
)
=>
{
return
model
.
getLineTokens
(
lineNumber
);
},
getLanguageIdentifier
:
()
=>
{
return
model
.
getLanguageIdentifier
();
},
getLanguageIdAtPosition
:
(
lineNumber
:
number
,
column
:
number
)
=>
{
return
model
.
getLanguageIdAtPosition
(
lineNumber
,
column
);
},
getLineContent
:
(
lineNumber
)
=>
{
if
(
lineNumber
===
startLineNumber
)
{
return
firstLineText
;
}
else
{
return
model
.
getLineContent
(
lineNumber
);
}
if
(
startLineNumber
!==
range
.
endLineNumber
)
{
let
virtualModel
=
{
getLineTokens
:
(
lineNumber
:
number
)
=>
{
return
model
.
getLineTokens
(
lineNumber
);
},
getLanguageIdentifier
:
()
=>
{
return
model
.
getLanguageIdentifier
();
},
getLanguageIdAtPosition
:
(
lineNumber
:
number
,
column
:
number
)
=>
{
return
model
.
getLanguageIdAtPosition
(
lineNumber
,
column
);
},
getLineContent
:
(
lineNumber
)
=>
{
if
(
lineNumber
===
startLineNumber
)
{
return
firstLineText
;
}
else
{
return
model
.
getLineContent
(
lineNumber
);
}
}
;
let
indentOfSecondLine
=
LanguageConfigurationRegistry
.
getGoodIndentForLine
(
virtualModel
,
model
.
getLanguageIdentifier
().
id
,
startLineNumber
+
1
,
indentConverter
)
;
let
newSpaceCntOfSecondLine
=
IndentUtil
.
getSpaceCnt
(
indentOfSecondLine
,
tabSize
);
let
oldSpaceCntOfSecondLine
=
IndentUtil
.
getSpaceCnt
(
strings
.
getLeadingWhitespace
(
model
.
getLineContent
(
startLineNumber
+
1
))
,
tabSize
);
if
(
newSpaceCntOfSecondLine
!==
oldSpaceCntOfSecondLine
)
{
let
spaceCntOffset
=
newSpaceCntOfSecondLine
-
oldSpaceCntOfSecondLine
;
for
(
let
i
=
startLineNumber
+
1
;
i
<=
range
.
endLineNumber
;
i
++
)
{
let
lineContent
=
model
.
getLineContent
(
i
);
let
originalIndent
=
strings
.
getLeadingWhitespace
(
lineContent
);
let
originalSpacesCnt
=
IndentUtil
.
getSpaceCnt
(
originalIndent
,
tabSize
);
let
newSpacesCnt
=
originalSpacesCnt
+
spaceCntOffset
;
let
newIndent
=
IndentUtil
.
generateIndent
(
newSpacesCnt
,
tabSize
,
insertSpaces
)
;
if
(
newIndent
!==
originalIndent
)
{
textEdits
.
push
(
{
range
:
new
Range
(
i
,
1
,
i
,
originalIndent
.
length
+
1
),
text
:
newIndent
});
}
}
}
;
let
indentOfSecondLine
=
LanguageConfigurationRegistry
.
getGoodIndentForLine
(
virtualModel
,
model
.
getLanguageIdentifier
().
id
,
startLineNumber
+
1
,
indentConverter
);
let
newSpaceCntOfSecondLine
=
IndentUtil
.
getSpaceCnt
(
indentOfSecondLine
,
tabSize
);
let
oldSpaceCntOfSecondLine
=
IndentUtil
.
getSpaceCnt
(
strings
.
getLeadingWhitespace
(
model
.
getLineContent
(
startLineNumber
+
1
)),
tabSize
);
if
(
newSpaceCntOfSecondLine
!==
oldSpaceCntOfSecondLine
)
{
let
spaceCntOffset
=
newSpaceCntOfSecondLine
-
oldSpaceCntOfSecondLine
;
for
(
let
i
=
startLineNumber
+
1
;
i
<=
range
.
endLineNumber
;
i
++
)
{
let
lineContent
=
model
.
getLineContent
(
i
);
let
originalIndent
=
strings
.
getLeadingWhitespace
(
lineContent
);
let
originalSpacesCnt
=
IndentUtil
.
getSpaceCnt
(
originalIndent
,
tabSize
)
;
let
newSpacesCnt
=
originalSpacesCnt
+
spaceCntOffset
;
let
newIndent
=
IndentUtil
.
generateIndent
(
newSpacesCnt
,
tabSize
,
insertSpaces
);
if
(
newIndent
!==
originalIndent
)
{
textEdits
.
push
({
range
:
new
Range
(
i
,
1
,
i
,
originalIndent
.
length
+
1
),
text
:
newIndent
}
);
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录