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

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

Issue 3008493002: Add documentation for the new notification support (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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Providing Navigation 1 # Providing Navigation
2 2
3 Navigation information is used by clients to allow users to navigate to the 3 Navigation information is used by clients to allow users to navigate to the
4 location at which an identifier is defined. 4 location at which an identifier is defined.
5 5
6 ## Implementation details 6 ## Implementation details
7 7
8 Navigation information can be requested both by an `analysis.getNavigation` 8 Navigation information can be requested both by an `analysis.getNavigation`
9 request and by a subscription. If the server has subscribed for navigation 9 request and by a subscription. If the server has subscribed for navigation
10 information in some set of files, the the plugin should send the information in 10 information in some set of files, the the plugin should send the information in
11 an `analysis.navigation` notification whenever the information needs to be 11 an `analysis.navigation` notification whenever the information needs to be
12 updated. 12 updated.
13 13
14 When an `analysis.getNavigation` request is received, the method 14 When an `analysis.getNavigation` request is received, the method
15 `handleAnalysisGetNavigation` will be invoked. This method is responsible for 15 `handleAnalysisGetNavigation` will be invoked. This method is responsible for
16 returning a response that contains the available navigation information. 16 returning a response that contains the available navigation information.
17 17
18 The easiest way to implement the method `handleAnalysisGetNavigation` is by 18 When a notification needs to be sent, the method`sendNavigationNotification`
scheglov 2017/08/24 18:19:21 Add a space between "method" and "`"?
19 will be invoked. This method is responsible for sending the notification.
20
21 The easiest way to add support for both the request and the notification is by
19 adding the classes `NavigationMixin` and `DartNavigationMixin` (from 22 adding the classes `NavigationMixin` and `DartNavigationMixin` (from
20 `package:analyzer_plugin/plugin/navigation_mixin.dart`) to the list of mixins 23 `package:analyzer_plugin/plugin/navigation_mixin.dart`) to the list of mixins
21 for your subclass of `ServerPlugin`. This will leave you with one abstract 24 for your subclass of `ServerPlugin`. This will leave you with one abstract
22 method that you need to implement: `getNavigationContributors`. That method is 25 method that you need to implement: `getNavigationContributors`. That method is
23 responsible for returning a list of `NavigationContributor`s. It is the 26 responsible for returning a list of `NavigationContributor`s. It is the
24 navigation contributors that produce the actual navigation information. (Most 27 navigation contributors that produce the actual navigation information. (Most
25 plugins will only need a single navigation contributor.) 28 plugins will only need a single navigation contributor.)
26 29
27 To write a navigation contributor, create a class that implements 30 To write a navigation contributor, create a class that implements
28 `NavigationContributor`. The interface defines a single method named 31 `NavigationContributor`. The interface defines a single method named
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 ```dart 76 ```dart
74 class MyPlugin extends ServerPlugin with NavigationMixin, DartNavigationMixin { 77 class MyPlugin extends ServerPlugin with NavigationMixin, DartNavigationMixin {
75 // ... 78 // ...
76 79
77 @override 80 @override
78 List<NavigationContributor> getNavigationContributors(String path) { 81 List<NavigationContributor> getNavigationContributors(String path) {
79 return <NavigationContributor>[new MyNavigationContributor()]; 82 return <NavigationContributor>[new MyNavigationContributor()];
80 } 83 }
81 } 84 }
82 ``` 85 ```
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698