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

Side by Side Diff: pkg/analyzer_plugin/doc/tutorial/completion.md

Issue 2992843002: Add more documentation for plugins (Closed)
Patch Set: Created 3 years, 4 months 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 unified diff | Download patch
OLDNEW
1 # Providing Code Completions 1 # Providing Code Completions
2 2
3 A code completion is used by clients to provide a set of possible completions to 3 A code completion is used by clients to provide a set of possible completions to
4 partially entered code. Completions are intended to address two use cases: to 4 partially entered code. Completions are intended to address two use cases: to
5 help users enter code with less effort and to help users discover the behavior 5 help users enter code with less effort and to help users discover the behavior
6 of an object. 6 of an object.
7 7
8 For example, if the user has typed `o.toSt` and then requested completions, one 8 For example, if the user has typed `o.toSt` and then requested completions, one
9 suggestion might be `toString`. 9 suggestion might be `toString`.
10 10
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 implement the method `computeSuggestions`. Your contributor should invoke the 51 implement the method `computeSuggestions`. Your contributor should invoke the
52 method `checkAborted`, defined on the `CompletionRequest` object, before 52 method `checkAborted`, defined on the `CompletionRequest` object, before
53 starting any slow work. This allows the computation of completion suggestions 53 starting any slow work. This allows the computation of completion suggestions
54 to be preempted if the client no longer needs the results. 54 to be preempted if the client no longer needs the results.
55 55
56 For example, your contributor might look something like the following: 56 For example, your contributor might look something like the following:
57 57
58 ```dart 58 ```dart
59 class MyCompletionContributor implements CompletionContributor { 59 class MyCompletionContributor implements CompletionContributor {
60 @override 60 @override
61 Future<Null> computeSuggestions(covariant DartCompletionRequest request, 61 Future<Null> computeSuggestions(DartCompletionRequest request,
62 CompletionCollector collector) async { 62 CompletionCollector collector) async {
63 // ... 63 // ...
64 } 64 }
65 } 65 }
66 ``` 66 ```
67 67
68 Given a contributor like the one above, you can implement your plugin similar to 68 Given a contributor like the one above, you can implement your plugin similar to
69 the following: 69 the following:
70 70
71 ```dart 71 ```dart
72 class MyPlugin extends ServerPlugin with CompletionMixin, DartCompletionMixin { 72 class MyPlugin extends ServerPlugin with CompletionMixin, DartCompletionMixin {
73 // ... 73 // ...
74 74
75 @override 75 @override
76 List<CompletionContributor> getCompletionContributors( 76 List<CompletionContributor> getCompletionContributors(
77 covariant AnalysisDriverGeneric driver) { 77 AnalysisDriverGeneric driver) {
78 return <CompletionContributor>[new MyCompletionContributor()]; 78 return <CompletionContributor>[new MyCompletionContributor()];
79 } 79 }
80 } 80 }
81 ``` 81 ```
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698