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

235 lines
18 KiB
HTML

<!doctype html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>16. Code Style Setting / 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/code_style_settings">
<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>16. Code Style Setting</h1>
<a name="define-code-style-settings" class="elem-anchor"></a>
<h3>16.1. Define code style settings<a href="#define-code-style-settings" class="anchor-link"><span></span></a></h3>
<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.psi.codeStyle.CodeStyleSettings</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.psi.codeStyle.CustomCodeStyleSettings</span><span class="o">;</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">SimpleCodeStyleSettings</span> <span class="kd">extends</span> <span class="n">CustomCodeStyleSettings</span> <span class="o">{</span>
<span class="kd">public</span> <span class="nf">SimpleCodeStyleSettings</span><span class="o">(</span><span class="n">CodeStyleSettings</span> <span class="n">settings</span><span class="o">)</span> <span class="o">{</span>
<span class="kd">super</span><span class="o">(</span><span class="s">"SimpleCodeStyleSettings"</span><span class="o">,</span> <span class="n">settings</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
</code></pre>
<a name="define-code-style-settings-provider" class="elem-anchor"></a>
<h3>16.2. Define code style settings provider<a href="#define-code-style-settings-provider" class="anchor-link"><span></span></a></h3>
<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.application.options.CodeStyleAbstractConfigurable</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.application.options.CodeStyleAbstractPanel</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.application.options.TabbedLanguageCodeStylePanel</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.openapi.options.Configurable</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.psi.codeStyle.CodeStyleSettings</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.psi.codeStyle.CodeStyleSettingsProvider</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.psi.codeStyle.CustomCodeStyleSettings</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.jetbrains.annotations.NotNull</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.jetbrains.annotations.Nullable</span><span class="o">;</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">SimpleCodeStyleSettingsProvider</span> <span class="kd">extends</span> <span class="n">CodeStyleSettingsProvider</span> <span class="o">{</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="n">CustomCodeStyleSettings</span> <span class="nf">createCustomSettings</span><span class="o">(</span><span class="n">CodeStyleSettings</span> <span class="n">settings</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nf">SimpleCodeStyleSettings</span><span class="o">(</span><span class="n">settings</span><span class="o">);</span>
<span class="o">}</span>
<span class="nd">@Nullable</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="n">String</span> <span class="nf">getConfigurableDisplayName</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="s">"Simple"</span><span class="o">;</span>
<span class="o">}</span>
<span class="nd">@NotNull</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="n">Configurable</span> <span class="nf">createSettingsPage</span><span class="o">(</span><span class="n">CodeStyleSettings</span> <span class="n">settings</span><span class="o">,</span> <span class="n">CodeStyleSettings</span> <span class="n">originalSettings</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nf">CodeStyleAbstractConfigurable</span><span class="o">(</span><span class="n">settings</span><span class="o">,</span> <span class="n">originalSettings</span><span class="o">,</span> <span class="s">"Simple"</span><span class="o">)</span> <span class="o">{</span>
<span class="nd">@Override</span>
<span class="kd">protected</span> <span class="n">CodeStyleAbstractPanel</span> <span class="nf">createPanel</span><span class="o">(</span><span class="n">CodeStyleSettings</span> <span class="n">settings</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nf">SimpleCodeStyleMainPanel</span><span class="o">(</span><span class="n">getCurrentSettings</span><span class="o">(),</span> <span class="n">settings</span><span class="o">);</span>
<span class="o">}</span>
<span class="nd">@Nullable</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="n">String</span> <span class="nf">getHelpTopic</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">};</span>
<span class="o">}</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">SimpleCodeStyleMainPanel</span> <span class="kd">extends</span> <span class="n">TabbedLanguageCodeStylePanel</span> <span class="o">{</span>
<span class="kd">public</span> <span class="nf">SimpleCodeStyleMainPanel</span><span class="o">(</span><span class="n">CodeStyleSettings</span> <span class="n">currentSettings</span><span class="o">,</span> <span class="n">CodeStyleSettings</span> <span class="n">settings</span><span class="o">)</span> <span class="o">{</span>
<span class="kd">super</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="n">currentSettings</span><span class="o">,</span> <span class="n">settings</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
</code></pre>
<a name="register-the-code-style-settings-provider" class="elem-anchor"></a>
<h3>16.3. Register the code style settings provider<a href="#register-the-code-style-settings-provider" class="anchor-link"><span></span></a></h3>
<pre><code class="code-block__wrapper code-block _highlighted lang_xml"><span class="nt">&lt;codeStyleSettingsProvider</span> <span class="na">implementation=</span><span class="s">"com.simpleplugin.SimpleCodeStyleSettingsProvider"</span><span class="nt">/&gt;</span>
</code></pre>
<a name="define-language-code-style-settings-provider" class="elem-anchor"></a>
<h3>16.4. Define language code style settings provider<a href="#define-language-code-style-settings-provider" class="anchor-link"><span></span></a></h3>
<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.lang.Language</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.psi.codeStyle.CodeStyleSettingsCustomizable</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider</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">SimpleLanguageCodeStyleSettingsProvider</span> <span class="kd">extends</span> <span class="n">LanguageCodeStyleSettingsProvider</span> <span class="o">{</span>
<span class="nd">@NotNull</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="n">Language</span> <span class="nf">getLanguage</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">SimpleLanguage</span><span class="o">.</span><span class="na">INSTANCE</span><span class="o">;</span>
<span class="o">}</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">customizeSettings</span><span class="o">(</span><span class="nd">@NotNull</span> <span class="n">CodeStyleSettingsCustomizable</span> <span class="n">consumer</span><span class="o">,</span> <span class="nd">@NotNull</span> <span class="n">SettingsType</span> <span class="n">settingsType</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="n">settingsType</span> <span class="o">==</span> <span class="n">SettingsType</span><span class="o">.</span><span class="na">SPACING_SETTINGS</span><span class="o">)</span> <span class="o">{</span>
<span class="n">consumer</span><span class="o">.</span><span class="na">showStandardOptions</span><span class="o">(</span><span class="s">"SPACE_AROUND_ASSIGNMENT_OPERATORS"</span><span class="o">);</span>
<span class="n">consumer</span><span class="o">.</span><span class="na">renameStandardOption</span><span class="o">(</span><span class="s">"SPACE_AROUND_ASSIGNMENT_OPERATORS"</span><span class="o">,</span> <span class="s">"Separator"</span><span class="o">);</span>
<span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="n">settingsType</span> <span class="o">==</span> <span class="n">SettingsType</span><span class="o">.</span><span class="na">BLANK_LINES_SETTINGS</span><span class="o">)</span> <span class="o">{</span>
<span class="n">consumer</span><span class="o">.</span><span class="na">showStandardOptions</span><span class="o">(</span><span class="s">"KEEP_BLANK_LINES_IN_CODE"</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="n">String</span> <span class="nf">getCodeSample</span><span class="o">(</span><span class="nd">@NotNull</span> <span class="n">SettingsType</span> <span class="n">settingsType</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="s">"# You are reading the \".properties\" entry.\n"</span> <span class="o">+</span>
<span class="s">"! The exclamation mark can also mark text as comments.\n"</span> <span class="o">+</span>
<span class="s">"website = http://en.wikipedia.org/\n"</span> <span class="o">+</span>
<span class="s">"\n"</span> <span class="o">+</span>
<span class="s">"\n"</span> <span class="o">+</span>
<span class="s">"\n"</span> <span class="o">+</span>
<span class="s">"language = English\n"</span> <span class="o">+</span>
<span class="s">"# The backslash below tells the application to continue reading\n"</span> <span class="o">+</span>
<span class="s">"# the value onto the next line.\n"</span> <span class="o">+</span>
<span class="s">"message = Welcome to \\\n"</span> <span class="o">+</span>
<span class="s">" Wikipedia!\n"</span> <span class="o">+</span>
<span class="s">"# Add spaces to the key\n"</span> <span class="o">+</span>
<span class="s">"key\\ with\\ spaces = This is the value that could be looked up with the key \"key with spaces\".\n"</span> <span class="o">+</span>
<span class="s">"# Unicode\n"</span> <span class="o">+</span>
<span class="s">"tab : \\u0009"</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
</code></pre>
<a name="register-the-language-code-style-settings-provider" class="elem-anchor"></a>
<h3>16.5. Register the language code style settings provider<a href="#register-the-language-code-style-settings-provider" class="anchor-link"><span></span></a></h3>
<pre><code class="code-block__wrapper code-block _highlighted lang_xml"><span class="nt">&lt;langCodeStyleSettingsProvider</span> <span class="na">implementation=</span><span class="s">"com.simpleplugin.SimpleLanguageCodeStyleSettingsProvider"</span><span class="nt">/&gt;</span>
</code></pre>
<a name="run-the-project" class="elem-anchor"></a>
<h3>16.6. Run the project<a href="#run-the-project" class="anchor-link"><span></span></a></h3>
<p><img src="img/code_style_settings.png" alt="Code Style Settings" /></p>
<p><a href="formatter.html"><span>Previous</span></a>
<a href="/intellij/sdk/docs/tutorials/custom_language_support_tutorial.html"><span>Top</span></a>
<a href="commenter.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>