Simplify code snippets and fix issues with Jekyll 3.X

This commit is contained in:
breandan 2015-12-28 07:49:53 -05:00
parent 58c371171b
commit 956fb785b2
22 changed files with 140 additions and 72 deletions

View File

@ -20,6 +20,8 @@ RUN apt-get --yes install nodejs
# Add bundle install to Docker image
ADD Gemfile* /tmp/
ADD Rakefile /tmp/
ADD _SUMMARY.md /tmp/
ADD .git /tmp/.git
ADD sdkdocs-template /tmp/sdkdocs-template
WORKDIR /tmp
RUN rake bootstrap

View File

@ -1,13 +1,13 @@
GIT
remote: https://github.com/breandan/jekyll-git_metadata.git
revision: 136c70f31a3da3a6077c0b815089185fd6ccfbec
remote: https://github.com/JetBrains/jekyll-git_metadata.git
revision: 5f5e3a02d0cc414d984d85835235b782aac04b4d
branch: fix_windows
specs:
jekyll-git_metadata (0.0.3)
jekyll (~> 3.0)
GIT
remote: https://github.com/breandan/link-checker.git
remote: https://github.com/JetBrains/link-checker.git
revision: 4b9409f5218c3bc215883c4b43061baa203597c4
branch: multiple_fixes
specs:
@ -19,7 +19,7 @@ GIT
trollop (~> 2.0)
GIT
remote: https://github.com/citizenmatt/rouge.git
remote: https://github.com/JetBrains/rouge
revision: 1c6c57410e5b7ffd3112ae99770f7a7e4d6c064a
branch: multiple_fixes
specs:
@ -47,8 +47,8 @@ GEM
safe_yaml (~> 1.0)
jekyll-redirect-from (0.9.1)
jekyll (>= 2.0)
jekyll-sass-converter (1.3.0)
sass (~> 3.2)
jekyll-sass-converter (1.4.0)
sass (~> 3.4)
jekyll-watch (1.3.0)
listen (~> 3.0)
kramdown (1.9.0)
@ -62,34 +62,15 @@ GEM
mini_portile2 (~> 2.0.0.rc2)
nokogiri (1.6.7.1-x64-mingw32)
mini_portile2 (~> 2.0.0.rc2)
octopress (3.0.11)
jekyll (>= 2.0)
mercenary (~> 0.3.2)
octopress-deploy
octopress-escape-code (~> 2.0)
octopress-hooks (~> 2.0)
redcarpet (~> 3.0)
titlecase
octopress-code-highlighter (4.3.0)
jekyll (~> 3.0)
octopress-deploy (1.3.0)
colorator
octopress-escape-code (2.1.1)
jekyll (~> 3.0)
octopress-hooks (2.6.1)
jekyll (>= 2.0)
octopress-render-code (1.0.4)
octopress-code-highlighter (~> 4.2)
rake (10.4.2)
rb-fsevent (0.9.6)
rb-inotify (0.9.5)
ffi (>= 0.5.0)
redcarpet (3.3.3)
robotex (1.0.0)
safe_yaml (1.0.4)
sass (3.4.20)
titlecase (0.1.1)
trollop (2.1.2)
wdm (0.1.1)
PLATFORMS
ruby
@ -100,10 +81,9 @@ DEPENDENCIES
jekyll-git_metadata!
jekyll-redirect-from
link-checker!
octopress (~> 3.0)
octopress-render-code
rake
rouge!
wdm (>= 0.1.0)
BUNDLED WITH
1.10.6

2
faq.md
View File

@ -4,7 +4,7 @@ title: Plugin Development FAQ
This FAQ is a topical index of questions that have been asked (and answered) on our
[OpenAPI forum](https://devnet.jetbrains.com/community/idea/open_api_and_plugin_development)
[OpenAPI forum](https://devnet.jetbrains.com/community/idea/open_api_and_plugin_development).
## Open-Source Plugins
* [How do I compile the Scala plugin?](https://devnet.jetbrains.com/thread/266848)

View File

@ -78,9 +78,13 @@ Create the following directory structure:
![Gradle directory structure](img/gradle_directory_structure.png)
{% include_code gradle_plugin_demo/src/main/java/HelloAction.java %}
```java
{% include /code_samples/gradle_plugin_demo/src/main/java/HelloAction.java %}
```
{% include_code gradle_plugin_demo/src/main/resources/META-INF/plugin.xml %}
```java
{% include /code_samples/gradle_plugin_demo/src/main/resources/META-INF/plugin.xml %}
```
Add a new Gradle Run Configuration, configured like so:

View File

@ -4,11 +4,15 @@ title: 16. Code Style Setting
### 16.1. Define code style settings
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleCodeStyleSettings.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleCodeStyleSettings.java %}
```
### 16.2. Define code style settings provider
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleCodeStyleSettingsProvider.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleCodeStyleSettingsProvider.java %}
```
### 16.3. Register the code style settings provider
@ -18,7 +22,9 @@ title: 16. Code Style Setting
### 16.4. Define language code style settings provider
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleLanguageCodeStyleSettingsProvider.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleLanguageCodeStyleSettingsProvider.java %}
```
### 16.5. Register the language code style settings provider

View File

@ -6,7 +6,9 @@ A commenter allows user to comment the code at the cursor or selected code autom
### 17.1. Define a commenter
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleCommenter.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleCommenter.java %}
```
### 17.2. Register the commenter

View File

@ -9,7 +9,9 @@ The easiest way to provide completion is to use a completion contributor.
Let's provide custom completion for values in property files.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleCompletionContributor.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleCompletionContributor.java %}
```
### 9.2. Register the completion contributor

View File

@ -7,7 +7,9 @@ A scanner breaks the text into words, defines the context for each word and pass
### 11.1. Define a find usages provider
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleFindUsagesProvider.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleFindUsagesProvider.java %}
```
### 11.2. Register the find usages provider

View File

@ -8,7 +8,9 @@ A folding builder helps you to fold the code regions and replace it with specifi
Let's replace usages of properties with its values by default.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleFoldingBuilder.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleFoldingBuilder.java %}
```
### 12.2. Register the folding builder

View File

@ -9,13 +9,17 @@ title: 15. Formatter
The formatter uses the blocks to receive formatting rules for each PSI element.
Our goal is to cover each PSI element with such block. Since each block builds own children blocks we can generate extra blocks or skip any PSI elements.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleBlock.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleBlock.java %}
```
### 15.2. Define a formatting model builder
Let's define a formatter which removes extra spaces except the single ones around the property separator.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleFormattingModelBuilder.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleFormattingModelBuilder.java %}
```
### 15.3. Register the formatter

View File

@ -43,7 +43,9 @@ property ::= (KEY? SEPARATOR VALUE?) | KEY {mixin="com.simpleplugin.psi.impl.Sim
### 13.3. Define a go to symbol contributor
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleChooseByNameContributor.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleChooseByNameContributor.java %}
```
### 13.4. Register the go to symbol contributor

View File

@ -4,17 +4,23 @@ title: 3. Grammar and Parser
### 3.1. Define a token type
{% include_code simple_language_plugin/src/com/simpleplugin/psi/SimpleTokenType.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/psi/SimpleTokenType.java %}
```
### 3.2. Define an element type
{% include_code simple_language_plugin/src/com/simpleplugin/psi/SimpleElementType.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/psi/SimpleElementType.java %}
```
### 3.3. Define grammar
Define a grammar for the properties language with */com/simpleplugin/Simple.bnf* file.
{% include_code simple_language_plugin/src/com/simpleplugin/Simple.bnf lang:java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/Simple.bnf %}
```
As you see a properties file can contain properties, comments and line breaks.

View File

@ -5,7 +5,9 @@ title: 2. Language and File Type
### 2.1. Define a language
{% include_code simple_language_plugin/src/com/simpleplugin/Simple.bnf lang:java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/Simple.bnf %}
```
### 2.2. Define an icon
@ -13,15 +15,21 @@ Copy the
[icon](https://raw.githubusercontent.com/cheptsov/SimplePlugin/master/src/com/simpleplugin/icons/jar-gray.png)
to **com.simpleplugin.icons** package.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleIcons.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleIcons.java %}
```
### 2.3. Define a file type
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleFileType.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleFileType.java %}
```
### 2.4. Define a file type factory
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleFileTypeFactory.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleFileTypeFactory.java %}
```
### 2.5. Register the file type factory

View File

@ -9,7 +9,9 @@ The easiest way to create a lexer is to use [JFlex](http://jflex.de/)
Define */com/simpleplugin/Simple.flex* file with rules for our lexer.
{% include_code simple_language_plugin/src/com/simpleplugin/Simple.flex lang:java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/Simple.flex %}
```
### 4.2. Generate a lexer class
@ -24,15 +26,21 @@ After that the IDE will generate lexer: *com.simpleplugin.SimpleLexer*.
### 4.3. Define an adapter
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleLexerAdapter.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleLexerAdapter.java %}
```
### 4.4. Define a file
{% include_code simple_language_plugin/src/com/simpleplugin/psi/SimpleFile.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/psi/SimpleFile.java %}
```
### 4.5. Define a parser definition
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleParserDefinition.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleParserDefinition.java %}
```
### 4.6. Register the parser definition

View File

@ -9,7 +9,9 @@ These icons may provide navigation to related code.
Let's annotate usages of our properties within Java code and provide navigation to the definition of these properties.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleLineMarkerProvider.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleLineMarkerProvider.java %}
```
## More technical details for implementers

View File

@ -9,7 +9,9 @@ If we want to have custom methods in PSI classes we need to define them separate
Let's define an utility class with these helper methods.
{% include_code simple_language_plugin/src/com/simpleplugin/psi/impl/SimplePsiImplUtil.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/psi/impl/SimplePsiImplUtil.java %}
```
### 6.2. Update grammar and regenerate the parser
@ -49,7 +51,9 @@ After we made our changes to the grammar we can regenerate the parser and PSI cl
Now we need an utility class to search PSI elements for defined properties over the project.
We will use this utility later when implementing code assistance.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleUtil.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleUtil.java %}
```
----------------
[Previous](syntax_highlighter_and_color_settings_page.md)

View File

@ -9,17 +9,23 @@ Let's add a quick fix which helps to define an unresolved property from its usag
### 18.1. Update the element factory
{% include_code simple_language_plugin/src/com/simpleplugin/psi/SimpleElementFactory.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/psi/SimpleElementFactory.java %}
```
### 18.2. Define an intention action
The quick fix will create a property in the file chosen by user, and navigate to this property after creation.
{% include_code simple_language_plugin/src/com/simpleplugin/CreatePropertyQuickFix.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/CreatePropertyQuickFix.java %}
```
### 18.3. Update the annotator
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleAnnotator.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleAnnotator.java %}
```
### 18.4. Run the project

View File

@ -10,9 +10,13 @@ Resolving references means the ability to go from the usage of an element to the
### 10.1. Define a base named element class
{% include_code simple_language_plugin/src/com/simpleplugin/psi/SimpleNamedElement.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/psi/SimpleNamedElement.java %}
```
{% include_code simple_language_plugin/src/com/simpleplugin/psi/impl/SimpleNamedElementImpl.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/psi/impl/SimpleNamedElementImpl.java %}
```
### 10.2. Define helper methods for generated PSI elements
@ -80,14 +84,18 @@ property ::= (KEY? SEPARATOR VALUE?) | KEY {mixin="com.simpleplugin.psi.impl.Sim
Now we need to define a reference class to resolve a property from it's usage.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleReference.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleReference.java %}
```
### 10.6. Define a reference contributor
A reference contributor allows you to provide references from elements in other languages such as Java to elements in your language.
Let's contribute a reference to each usage of a property.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleReferenceContributor.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleReferenceContributor.java %}
```
### 10.7. Register the reference contributor
@ -109,7 +117,9 @@ As you see the IDE now resolves the property and provides completion.
To allow in-place refactoring we should specify it explicitly in a refactoring support provider.
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleRefactoringSupportProvider.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleRefactoringSupportProvider.java %}
```
### 10.10. Register the refactoring support provider

View File

@ -7,15 +7,21 @@ A structure view factory allows to show the structure of any file in a *Structur
### 14.1. Define a structure view factory
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleStructureViewFactory.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleStructureViewFactory.java %}
```
### 14.2. Define a structure view model
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleStructureViewModel.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleStructureViewModel.java %}
```
### 14.3. Define a structure view element
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleStructureViewElement.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleStructureViewElement.java %}
```
### 14.4. Register the structure view factory

View File

@ -5,11 +5,15 @@ title: 5. Syntax Highlighter and Color Settings Page
### 5.1. Define a syntax highlighter
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleSyntaxHighlighter.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleSyntaxHighlighter.java %}
```
### 5.2. Define a syntax highlighter factory
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleSyntaxHighlighterFactory.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleSyntaxHighlighterFactory.java %}
```
### 5.3. Register the syntax highlighter factory
@ -23,7 +27,9 @@ title: 5. Syntax Highlighter and Color Settings Page
### 5.5. Define a color settings page
{% include_code simple_language_plugin/src/com/simpleplugin/SimpleColorSettingsPage.java %}
```java
{% include /code_samples/simple_language_plugin/src/com/simpleplugin/SimpleColorSettingsPage.java %}
```
### 5.6. Register the color settings page

View File

@ -27,11 +27,15 @@ tab : \u0009
Create one more file *CompleteTestData.java*.
{% include_code simple_language_plugin/testData/CompleteTestData.java %}
```java
{% include /code_samples/simple_language_plugin/testData/CompleteTestData.java %}
```
### 3.2. Define a test
{% include_code simple_language_plugin/tests/com/simpleplugin/SimpleCodeInsightTest.java %}
```java
{% include /code_samples/simple_language_plugin/tests/com/simpleplugin/SimpleCodeInsightTest.java %}
```
### 3.3. Run the test

View File

@ -95,7 +95,9 @@ Simple File(0,433)
### 2.4. Define a parsing test
{% include_code simple_language_plugin/tests/com/simpleplugin/SimpleParsingTest.java %}
```java
{% include /code_samples/simple_language_plugin/tests/com/simpleplugin/SimpleParsingTest.java %}
```
### 2.5. Run the test