2016-01-14 19:38:06 -08:00

147 lines
8.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>9. Completion Contributor / IntelliJ Platform SDK DevGuide</title>
<link rel="stylesheet" href="/intellij/sdk/docs/app/css/styles.min.css">
<!-- non-retina iPad pre iOS 7 -->
<link rel="apple-touch-icon" href="/intellij/sdk/docs/apple-touch-icon-72x72.png" sizes="72x72">
<!-- retina iPhone pre iOS 7 -->
<link rel="apple-touch-icon" href="/intellij/sdk/docs/apple-touch-icon-114x114.png" sizes="114x114">
<!-- retina iPad pre iOS 7 -->
<link rel="apple-touch-icon" href="/intellij/sdk/docs/apple-touch-icon-144x144.png" sizes="144x144">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/intellij/sdk/docs/apple-touch-icon-precomposed.png">
<!-- normal favicon -->
<link rel="shortcut icon" type="image/x-icon" href="/intellij/sdk/docs/favicon.ico">
<link rel="icon" type="image/png" href="/intellij/sdk/docs/favicon.png">
<link rel="stylesheet" href="/intellij/sdk/docs/styles/styles.css"></head>
<body data-id="tutorials/custom_language_support/completion_contributor">
<div class="wrapper">
<section class="panel _nav">
<header class="panel__header">
<div class="container">
<form class="search-box">
<label for="search-box__input" class="search-box__label">
<input type="text" class="search-box__input" id="search-box__input" placeholder="Search IntelliJ Platform SDK DevGuide">
</label>
<div class="search-box__clear" title="Clear"></div>
</form>
</div>
</header>
<nav class="panel__content">
<div class="container _nav">
<menu class="nav-tree"></menu>
</div>
<div class="container _footer panel__footer">
<p><a href="https://youtrack.jetbrains.com/issues/IJSDK">Send feedback</a></p>
<p>&copy; 2000&ndash;2016 <a href="//www.jetbrains.com">JetBrains</a> s.r.o.<br>
All rights reserved.</p>
</div>
</nav>
</section>
<main class="panel _main" role="main">
<header class="panel__header">
<div class="container">
<h3>IntelliJ Platform SDK DevGuide</h3>
<div class="shortcuts-switcher"><label for="switch-shortcuts">Keymap:</label><select id="switch-shortcuts" class="select _shortcuts" height="1">
<option data-group="primary" value="default" selected>Default</option>
<option data-group="primary" value="default_for_gnome">GNOME</option>
<option data-group="primary" value="default_for_kde">KDE</option>
<option data-group="primary" value="default_for_xwin">XWindow</option>
<option data-group="primary" value="emacs">Emacs</option>
<option data-group="primary" value="jbuilder">JBuilder</option>
<option data-group="primary" value="visual_studio">Visual Studio</option>
<option data-group="primary" value="netbeans_6.5">NetBeans 6.5</option>
<option data-group="primary" value="eclipse">Eclipse</option>
<option data-group="secondary" value="mac_os_x_10.5_">OS X 10.5+</option>
<option data-group="secondary" value="mac_os_x">OS X</option>
<option data-group="secondary" value="eclipse_mac_os_x">OS X Eclipse</option></select>
</div>
<div class="panel-trigger"></div>
</div>
</header>
<section class="panel__content">
<div class="container">
<article class="article" data-shortcut-switcher="false">
<h1>9. Completion Contributor</h1>
<p>The easiest way to provide completion is to use a completion contributor.</p>
<a name="define-a-completion-contributor" class="elem-anchor"></a>
<h3>9.1. Define a completion contributor<a href="#define-a-completion-contributor" class="anchor-link"><span></span></a></h3>
<p>Lets provide custom completion for values in property files.</p>
<pre><code class="code-block__wrapper code-block _highlighted lang_java"><span class="kn">package</span> <span class="n">com</span><span class="o">.</span><span class="na">simpleplugin</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.codeInsight.completion.*</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.codeInsight.lookup.LookupElementBuilder</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.patterns.PlatformPatterns</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.util.ProcessingContext</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.simpleplugin.psi.SimpleTypes</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.jetbrains.annotations.NotNull</span><span class="o">;</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">SimpleCompletionContributor</span> <span class="kd">extends</span> <span class="n">CompletionContributor</span> <span class="o">{</span>
<span class="kd">public</span> <span class="nf">SimpleCompletionContributor</span><span class="o">()</span> <span class="o">{</span>
<span class="n">extend</span><span class="o">(</span><span class="n">CompletionType</span><span class="o">.</span><span class="na">BASIC</span><span class="o">,</span>
<span class="n">PlatformPatterns</span><span class="o">.</span><span class="na">psiElement</span><span class="o">(</span><span class="n">SimpleTypes</span><span class="o">.</span><span class="na">VALUE</span><span class="o">).</span><span class="na">withLanguage</span><span class="o">(</span><span class="n">SimpleLanguage</span><span class="o">.</span><span class="na">INSTANCE</span><span class="o">),</span>
<span class="k">new</span> <span class="n">CompletionProvider</span><span class="o">&lt;</span><span class="n">CompletionParameters</span><span class="o">&gt;()</span> <span class="o">{</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">addCompletions</span><span class="o">(</span><span class="nd">@NotNull</span> <span class="n">CompletionParameters</span> <span class="n">parameters</span><span class="o">,</span>
<span class="n">ProcessingContext</span> <span class="n">context</span><span class="o">,</span>
<span class="nd">@NotNull</span> <span class="n">CompletionResultSet</span> <span class="n">resultSet</span><span class="o">)</span> <span class="o">{</span>
<span class="n">resultSet</span><span class="o">.</span><span class="na">addElement</span><span class="o">(</span><span class="n">LookupElementBuilder</span><span class="o">.</span><span class="na">create</span><span class="o">(</span><span class="s">"Hello"</span><span class="o">));</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
</code></pre>
<a name="register-the-completion-contributor" class="elem-anchor"></a>
<h3>9.2. Register the completion contributor<a href="#register-the-completion-contributor" class="anchor-link"><span></span></a></h3>
<pre><code class="code-block__wrapper code-block _highlighted lang_xml"><span class="nt">&lt;completion.contributor</span> <span class="na">language=</span><span class="s">"Simple"</span> <span class="na">implementationClass=</span><span class="s">"com.simpleplugin.SimpleCompletionContributor"</span><span class="nt">/&gt;</span>
</code></pre>
<a name="run-the-project" class="elem-anchor"></a>
<h3>9.3. Run the project<a href="#run-the-project" class="anchor-link"><span></span></a></h3>
<p><img src="img/completion.png" alt="Completion" /></p>
<p><a href="line_marker_provider.html"><span>Previous</span></a>
<a href="/intellij/sdk/docs/tutorials/custom_language_support_tutorial.html"><span>Top</span></a>
<a href="reference_contributor.html"><span>Next</span></a></p>
<div class="last-modified">
Last modified: 28 December 2015
</div>
</article>
<section class="disqus">
<div id="disqus_thread"></div>
</section>
</div>
</section>
</main>
</div>
<script data-main="/intellij/sdk/docs/app/js/main.build" data-baseurl="/intellij/sdk/docs/" src="/intellij/sdk/docs/app/js/vendor/requirejs/require.js"></script>
</body>
</html>