diff --git a/topics/reference_guide/custom_language_support/parameter_info.md b/topics/reference_guide/custom_language_support/parameter_info.md index 939a6880b..a8916deaf 100644 --- a/topics/reference_guide/custom_language_support/parameter_info.md +++ b/topics/reference_guide/custom_language_support/parameter_info.md @@ -2,7 +2,7 @@ # Parameter Info -Implementing parameter info handler allowing to display method/function parameter names and types before providing actual values. +Implementing parameter info handler allows displaying method/function parameter names and types before providing actual values. @@ -43,11 +43,11 @@ and they all derive from ### Initial Phase -The initial phase describes what happens when no parameter info is currently displayed and it is invoked either automatically or by the user. +The initial phase describes what happens when no parameter info is currently displayed, and it is invoked either automatically or by the user. 1. The `findElementForParameterInfo()` method is called. When overriding this method, language authors use the provided `CreateParameterInfoContext` to access, e.g., the file and offset of the current editor. - The goal is to identify the `ParameterOwner` i.e. a function call at the current offset if it exists. + The goal is to identify the `ParameterOwner` i.e., a function call at the current offset if it exists. It is advised to extract the actual search for the function call into a separate method since it can be re-used later. The `findElementForParameterInfo()` implementation should find all matching function definitions and store them using `setItemsToShow()` of the context parameter. 2. If the returned function call element is valid, the `showParameterInfo()` method is invoked. @@ -65,13 +65,13 @@ This allows for, e.g., highlighting a function usage with different arguments or Therefore, when the user moves the caret or types something, the following happens: 1. The `syncUpdateOnCaretMove()` method is called. -2. The `findElementForUpdatingParameterInfo()` method is called and it should find the correct function call (`ParameterOwner`) for the changed caret position. +2. The `findElementForUpdatingParameterInfo()` method is called, and it should find the correct function call (`ParameterOwner`) for the changed caret position. Implementations return `null` if an appropriate element could not be found or if it is different from `getParameterOwner()` of the provided `UpdateParameterInfoContext`. If `null` is returned, the `dispose()` method is called. 3. The `processFoundElementForUpdatingParameterInfo()` method is called which allows for additional adjustments of the `UpdateParameterInfoContext`. By default, this method does nothing and it's usually not necessary to implement it. 4. The `updateParameterInfo()` is called. Many implementations only invoke `setParameterOwner()` of the `UpdateParameterInfoContext` here. -5. The `updateUI()` method is called for each item in the `getItemsToShow()` array of the context which were collected in the initial phase. +5. The `updateUI()` method is called for each item in the `getItemsToShow()` array of the context which was collected in the initial phase. ## Further Tips @@ -91,7 +91,7 @@ Only `isWhitespaceSensitive()` which is used in the `getCurrentOffset()` method [`ParameterInfoControllerBase`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoControllerBase.java) should be implemented when whitespace matters in a language. -Note that parameter info works during indexing (using incomplete data) when the implementations is marked [dumb aware](indexing_and_psi_stubs.md#DumbAwareAPI). +Note that parameter info works during indexing (using incomplete data) when the implementation is marked as [dumb aware](indexing_and_psi_stubs.md#DumbAwareAPI). It is recommended to adapt tests for [dumb mode](indexing_and_psi_stubs.md#dumb-mode) since the results might be surprising, and more changes to the handler might be required for better results. @@ -107,5 +107,5 @@ Existing, moderately complex, implementations of `ParameterInfoHandler` in the I * [`XPathParameterInfoHandler`](%gh-ic%/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/XPathParameterInfoHandler.java) * [`XmlParameterInfoHandler`](%gh-ic%/xml/impl/src/com/intellij/codeInsight/hint/api/impls/XmlParameterInfoHandler.java) -Implementations of third party plugins can be discovered using the -[IntelliJ Platform Explorer](https://plugins.jetbrains.com/intellij-platform-explorer?extensions=com.intellij.codeInsight.parameterInfo). +Implementations of third-party plugins can be discovered using the +[IntelliJ Platform Explorer](https://jb.gg/ipe?extensions=com.intellij.codeInsight.parameterInfo).