Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(779)

Unified Diff: pkg/analysis_server/lib/src/services/correction/assist_internal.dart

Issue 1470753002: Quick assist for converting block documentation comments into line ones. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/lib/src/services/correction/assist_internal.dart
diff --git a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
index a7de360200aabe2703b34f28b68c9733b8fe9120..abad641b62f21daa9145920773b43b2425436f92 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
@@ -93,7 +93,8 @@ class AssistProcessor {
_addProposal_addTypeAnnotation_SimpleFormalParameter();
_addProposal_addTypeAnnotation_VariableDeclaration();
_addProposal_assignToLocalVariable();
- _addProposal_convertIntoBlockDocumentationComment();
+ _addProposal_convertDocumentationIntoBlock();
+ _addProposal_convertDocumentationIntoLine();
_addProposal_convertToBlockFunctionBody();
_addProposal_convertToExpressionFunctionBody();
_addProposal_convertToForIndexLoop();
@@ -401,7 +402,7 @@ class AssistProcessor {
_addAssist(DartAssistKind.ASSIGN_TO_LOCAL_VARIABLE, []);
}
- void _addProposal_convertIntoBlockDocumentationComment() {
+ void _addProposal_convertDocumentationIntoBlock() {
Comment comment = node.getAncestor((n) => n is Comment);
if (comment != null && comment.isDocumentation) {
String prefix = utils.getNodePrefix(comment);
@@ -427,6 +428,54 @@ class AssistProcessor {
_addAssist(DartAssistKind.CONVERT_DOCUMENTATION_INTO_BLOCK, []);
}
+ void _addProposal_convertDocumentationIntoLine() {
+ Comment comment = node.getAncestor((n) => n is Comment);
+ if (comment != null && comment.isDocumentation) {
+ if (comment.tokens.length == 1) {
+ Token token = comment.tokens.first;
+ if (token.type == TokenType.MULTI_LINE_COMMENT) {
+ String text = token.lexeme;
+ List<String> lines = text.split('\n');
+ String prefix = utils.getNodePrefix(comment);
+ SourceBuilder sb = new SourceBuilder(file, comment.offset);
+ bool firstLine = true;
+ String linePrefix = '';
+ for (String line in lines) {
+ if (firstLine) {
+ firstLine = false;
+ String expectedPrefix = '/**';
+ if (!line.startsWith(expectedPrefix)) {
+ return;
+ }
+ line = line.substring(expectedPrefix.length).trim();
+ if (line.isNotEmpty) {
+ sb.append('/// ');
+ sb.append(line);
+ linePrefix = eol + prefix;
+ }
+ } else {
+ if (line.startsWith(prefix + ' */')) {
+ break;
+ }
+ String expectedPrefix = prefix + ' * ';
+ if (!line.startsWith(expectedPrefix)) {
+ return;
+ }
+ line = line.substring(expectedPrefix.length).trim();
+ sb.append(linePrefix);
+ sb.append('/// ');
+ sb.append(line);
+ linePrefix = eol + prefix;
+ }
+ }
+ _insertBuilder(sb, comment.length);
+ }
+ }
+ }
+ // add proposal
+ _addAssist(DartAssistKind.CONVERT_DOCUMENTATION_INTO_LINE, []);
+ }
+
void _addProposal_convertToBlockFunctionBody() {
FunctionBody body = getEnclosingFunctionBody();
// prepare expression body

Powered by Google App Engine
This is Rietveld 408576698