| Index: pkg/analysis_server/lib/src/edit/edit_domain.dart
|
| diff --git a/pkg/analysis_server/lib/src/edit/edit_domain.dart b/pkg/analysis_server/lib/src/edit/edit_domain.dart
|
| index 1ffa3d772c8fde6be2b1d5c09d50d0cd6b647e10..f104bddd41977a2b3b108bb88ce10360d25b6e37 100644
|
| --- a/pkg/analysis_server/lib/src/edit/edit_domain.dart
|
| +++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart
|
| @@ -9,8 +9,7 @@ import 'package:analysis_server/src/constants.dart';
|
| import 'package:analysis_server/src/edit/fix.dart';
|
| import 'package:analysis_server/src/protocol.dart';
|
| import 'package:analysis_server/src/protocol2.dart' show AnalysisError,
|
| - EditGetAssistsParams, EditGetAvailableRefactoringsParams,
|
| - EditGetFixesParams;
|
| + EditGetAssistsParams, EditGetAvailableRefactoringsParams, EditGetFixesParams;
|
| import 'package:analysis_server/src/services/correction/assist.dart';
|
| import 'package:analysis_server/src/services/correction/change.dart';
|
| import 'package:analysis_server/src/services/correction/fix.dart';
|
| @@ -52,8 +51,8 @@ class EditDomainHandler implements RequestHandler {
|
| server.getResolvedCompilationUnits(params.file);
|
| if (units.isNotEmpty) {
|
| CompilationUnit unit = units[0];
|
| - List<Assist> assists = computeAssists(searchEngine, unit, params.offset,
|
| - params.length);
|
| + List<Assist> assists =
|
| + computeAssists(searchEngine, unit, params.offset, params.length);
|
| assists.forEach((Assist assist) {
|
| changes.add(assist.change);
|
| });
|
| @@ -66,16 +65,25 @@ class EditDomainHandler implements RequestHandler {
|
|
|
| Response getAvailableRefactorings(Request request) {
|
| var params = new EditGetAvailableRefactoringsParams.fromRequest(request);
|
| - // TODO(paulberry): params.length isn't used. Is this a bug?
|
| + String file = params.file;
|
| + int offset = params.offset;
|
| + int length = params.length;
|
| List<String> kinds = <String>[];
|
| - List<Element> elements = server.getElementsAtOffset(params.file,
|
| - params.offset);
|
| - if (elements.isNotEmpty) {
|
| - Element element = elements[0];
|
| - RenameRefactoring renameRefactoring =
|
| - new RenameRefactoring(searchEngine, element);
|
| - if (renameRefactoring != null) {
|
| - kinds.add(RefactoringKind.RENAME);
|
| + // try EXTRACT_*
|
| + if (length != 0) {
|
| + kinds.add(RefactoringKind.EXTRACT_LOCAL_VARIABLE);
|
| + kinds.add(RefactoringKind.EXTRACT_METHOD);
|
| + }
|
| + // try RENAME
|
| + {
|
| + List<Element> elements = server.getElementsAtOffset(file, offset);
|
| + if (elements.isNotEmpty) {
|
| + Element element = elements[0];
|
| + RenameRefactoring renameRefactoring =
|
| + new RenameRefactoring(searchEngine, element);
|
| + if (renameRefactoring != null) {
|
| + kinds.add(RefactoringKind.RENAME);
|
| + }
|
| }
|
| }
|
| // respond
|
| @@ -86,7 +94,8 @@ class EditDomainHandler implements RequestHandler {
|
| var params = new EditGetFixesParams.fromRequest(request);
|
| // TODO(paulberry): params.offset isn't used. Is this a bug?
|
| List<ErrorFixes> errorFixesList = <ErrorFixes>[];
|
| - List<CompilationUnit> units = server.getResolvedCompilationUnits(params.file);
|
| + List<CompilationUnit> units =
|
| + server.getResolvedCompilationUnits(params.file);
|
| for (CompilationUnit unit in units) {
|
| engine.AnalysisErrorInfo errorInfo = server.getErrors(params.file);
|
| if (errorInfo != null) {
|
|
|