├── PSI程序结构接口
├── demo
│ ├── src
│ │ ├── main
│ │ │ ├── resources
│ │ │ │ └── application.properties
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── demo
│ │ │ │ ├── DemoApplication.java
│ │ │ │ ├── dto
│ │ │ │ ├── User.java
│ │ │ │ └── Order.java
│ │ │ │ └── cotroller
│ │ │ │ └── HelloWorldController.java
│ │ └── test
│ │ │ └── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── demo
│ │ │ └── DemoApplicationTests.java
│ └── .mvn
│ │ └── wrapper
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── PsiDemo
│ ├── settings.gradle
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ └── java
│ │ └── org
│ │ └── example
│ │ └── action
│ │ ├── RenameElementAction.java
│ │ ├── GetLocalVariableMethod.java
│ │ └── PsiFileDemoAction.java
└── APIDocPlugin
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── src
│ └── main
│ │ ├── java
│ │ └── org
│ │ │ └── example
│ │ │ └── dto
│ │ │ ├── ApiHeaderDTO.java
│ │ │ ├── ApiRequestParamDTO.java
│ │ │ └── ApiBodyDTO.java
│ │ └── resources
│ │ └── META-INF
│ │ └── plugin.xml
│ └── build.gradle
├── 数据持久化
└── Translator
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── build.gradle
│ └── src
│ └── main
│ └── java
│ └── org
│ └── example
│ └── extension
│ ├── TranslatorSetting.java
│ └── TranslatorCache.java
├── 监听器
└── Translator
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── src
│ └── main
│ │ └── java
│ │ └── org
│ │ └── example
│ │ ├── listener
│ │ ├── TranslateListener.java
│ │ ├── TranslatorActionListenerA.java
│ │ ├── TranslatorActionListenerB.java
│ │ ├── InitTranslatorWindowListener.java
│ │ └── GlobalProblemListener.java
│ │ └── extension
│ │ ├── TranslatorSetting.java
│ │ └── TranslatorCache.java
│ └── build.gradle
├── 丰富的拓展点
└── Translator
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── build.gradle
│ └── src
│ └── main
│ ├── resources
│ └── META-INF
│ │ └── plugin.xml
│ └── java
│ └── org
│ └── example
│ └── action
│ └── TranslatorAction.java
├── 丰富的消息通知方式
├── Translator
│ ├── settings.gradle
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── src
│ │ └── main
│ │ │ ├── resources
│ │ │ └── icons
│ │ │ │ ├── translator.png
│ │ │ │ ├── translator@2x.png
│ │ │ │ ├── translator_dark.png
│ │ │ │ └── translator@2x_dark.png
│ │ │ └── java
│ │ │ ├── icons
│ │ │ └── TranslatorIcons.java
│ │ │ └── org
│ │ │ └── example
│ │ │ ├── listener
│ │ │ ├── TranslateListener.java
│ │ │ ├── TranslatorActionListenerA.java
│ │ │ ├── TranslatorActionListenerB.java
│ │ │ ├── InitTranslatorWindowListener.java
│ │ │ └── GlobalProblemListener.java
│ │ │ ├── util
│ │ │ └── TranslatorTextProvider.java
│ │ │ └── extension
│ │ │ ├── TranslatorSetting.java
│ │ │ └── TranslatorCache.java
│ └── build.gradle
└── Notifications
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── build.gradle
│ └── src
│ └── main
│ ├── java
│ └── org
│ │ └── example
│ │ └── action
│ │ ├── HintNotification.java
│ │ ├── DialogNotification.java
│ │ └── TopLevelNotification.java
│ └── resources
│ └── META-INF
│ └── plugin.xml
├── 主题插件开发流程
└── ThemeDemo
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── build.gradle
│ └── src
│ └── main
│ └── resources
│ ├── META-INF
│ └── plugin.xml
│ └── icons
│ ├── build.svg
│ └── run.svg
├── 插件UI上篇
└── Translator
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── src
│ └── main
│ │ └── java
│ │ └── org
│ │ └── example
│ │ ├── listener
│ │ ├── TranslateListener.java
│ │ ├── TranslatorActionListenerA.java
│ │ ├── TranslatorActionListenerB.java
│ │ ├── InitTranslatorWindowListener.java
│ │ ├── GlobalProblemListener.java
│ │ └── TranslatorButtonActionListener.java
│ │ └── extension
│ │ ├── TranslatorSetting.java
│ │ └── TranslatorCache.java
│ └── build.gradle
├── 插件UI下篇
└── Translator
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── src
│ └── main
│ │ ├── resources
│ │ └── icons
│ │ │ ├── translator.png
│ │ │ ├── translator@2x.png
│ │ │ ├── translator_dark.png
│ │ │ └── translator@2x_dark.png
│ │ └── java
│ │ ├── icons
│ │ └── TranslatorIcons.java
│ │ └── org
│ │ └── example
│ │ ├── listener
│ │ ├── TranslateListener.java
│ │ ├── TranslatorActionListenerA.java
│ │ ├── TranslatorActionListenerB.java
│ │ ├── InitTranslatorWindowListener.java
│ │ └── GlobalProblemListener.java
│ │ ├── util
│ │ └── TranslatorTextProvider.java
│ │ └── extension
│ │ ├── TranslatorSetting.java
│ │ └── TranslatorCache.java
│ └── build.gradle
├── 虚拟文件与文本编辑
├── JsonToJava
│ ├── settings.gradle
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── src
│ │ └── main
│ │ │ ├── resources
│ │ │ └── META-INF
│ │ │ │ └── plugin.xml
│ │ │ └── java
│ │ │ └── org
│ │ │ └── example
│ │ │ └── listener
│ │ │ └── ProjectInitListener.java
│ └── build.gradle
└── TextEditorDemo
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── build.gradle
│ └── src
│ └── main
│ └── resources
│ └── META-INF
│ └── plugin.xml
├── 插件国际化与其他小技巧介绍
├── PluginI18N
│ ├── settings.gradle
│ ├── src
│ │ └── main
│ │ │ ├── resources
│ │ │ ├── i18n
│ │ │ │ ├── plugin_en.properties
│ │ │ │ └── plugin_zh.properties
│ │ │ └── META-INF
│ │ │ │ └── plugin.xml
│ │ │ └── java
│ │ │ └── org
│ │ │ └── example
│ │ │ ├── config
│ │ │ └── PluginConfig.java
│ │ │ ├── util
│ │ │ └── I18nUtils.java
│ │ │ └── action
│ │ │ └── NotifyAction.java
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ └── build.gradle
└── ConsoleViewDemo
│ ├── settings.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── src
│ └── main
│ │ ├── java
│ │ └── org
│ │ │ └── example
│ │ │ └── action
│ │ │ └── TestConsoleAction.java
│ │ └── resources
│ │ └── META-INF
│ │ └── plugin.xml
│ └── build.gradle
├── 自定义语言2
└── HTTPRequester
│ ├── settings.gradle
│ ├── lib
│ └── jflex-1.7.0-2.jar
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── src
│ └── main
│ │ ├── java
│ │ └── org
│ │ │ └── example
│ │ │ └── language
│ │ │ ├── CURLLexerAdapter.java
│ │ │ ├── HTTPIcons.java
│ │ │ ├── CURLElementType.java
│ │ │ ├── psi
│ │ │ ├── CURLKv.java
│ │ │ ├── CURLOption1.java
│ │ │ ├── CURLOption2.java
│ │ │ ├── CURLOption3.java
│ │ │ ├── CURLOption4.java
│ │ │ ├── CURLOption5.java
│ │ │ ├── CURLOption6.java
│ │ │ ├── CURLOption7.java
│ │ │ ├── CURLOption4Statement.java
│ │ │ ├── CURLCommand.java
│ │ │ ├── CURLOption3Statement.java
│ │ │ ├── CURLOption5Statement.java
│ │ │ ├── CURLOption1Statement.java
│ │ │ ├── CURLOption2Statement.java
│ │ │ ├── CURLOption6Statement.java
│ │ │ ├── CURLOption7Statement.java
│ │ │ ├── CURLOptions.java
│ │ │ └── impl
│ │ │ │ ├── CURLKvImpl.java
│ │ │ │ ├── CURLOption1Impl.java
│ │ │ │ ├── CURLOption2Impl.java
│ │ │ │ ├── CURLOption3Impl.java
│ │ │ │ ├── CURLOption4Impl.java
│ │ │ │ ├── CURLOption5Impl.java
│ │ │ │ ├── CURLOption6Impl.java
│ │ │ │ ├── CURLOption7Impl.java
│ │ │ │ ├── CURLOption4StatementImpl.java
│ │ │ │ ├── CURLCommandImpl.java
│ │ │ │ ├── CURLOption3StatementImpl.java
│ │ │ │ ├── CURLOption5StatementImpl.java
│ │ │ │ └── CURLOption1StatementImpl.java
│ │ │ ├── HTTPLanguage.java
│ │ │ ├── CURLTokenType.java
│ │ │ ├── HTTPFile.java
│ │ │ └── HTTPFileType.java
│ │ └── resources
│ │ └── META-INF
│ │ └── plugin.xml
│ └── build.gradle
├── 自定义语言3
└── HTTPRequester
│ ├── settings.gradle
│ ├── lib
│ └── jflex-1.7.0-2.jar
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── src
│ └── main
│ │ └── java
│ │ └── org
│ │ └── example
│ │ └── language
│ │ ├── CURLLexerAdapter.java
│ │ ├── HTTPIcons.java
│ │ ├── CURLElementType.java
│ │ ├── psi
│ │ ├── CURLKv.java
│ │ ├── CURLOption1.java
│ │ ├── CURLOption2.java
│ │ ├── CURLOption3.java
│ │ ├── CURLOption4.java
│ │ ├── CURLOption5.java
│ │ ├── CURLOption6.java
│ │ ├── CURLOption7.java
│ │ ├── CURLOption4Statement.java
│ │ ├── CURLOption3Statement.java
│ │ ├── CURLOption5Statement.java
│ │ ├── CURLOption1Statement.java
│ │ ├── CURLOption2Statement.java
│ │ ├── CURLOption6Statement.java
│ │ ├── CURLOption7Statement.java
│ │ ├── CURLCommand.java
│ │ ├── CURLOptions.java
│ │ └── impl
│ │ │ ├── CURLKvImpl.java
│ │ │ ├── CURLOption1Impl.java
│ │ │ ├── CURLOption2Impl.java
│ │ │ ├── CURLOption3Impl.java
│ │ │ ├── CURLOption4Impl.java
│ │ │ ├── CURLOption5Impl.java
│ │ │ ├── CURLOption6Impl.java
│ │ │ ├── CURLOption7Impl.java
│ │ │ ├── CURLOption4StatementImpl.java
│ │ │ ├── CURLOption3StatementImpl.java
│ │ │ └── CURLOption5StatementImpl.java
│ │ ├── HTTPLanguage.java
│ │ ├── CURLTokenType.java
│ │ ├── HTTPFile.java
│ │ ├── feature
│ │ └── CURLSyntaxHighlighterFactory.java
│ │ └── HTTPFileType.java
│ └── build.gradle
├── 自定义语言4
└── HTTPRequester
│ ├── settings.gradle
│ ├── lib
│ └── jflex-1.7.0-2.jar
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── src
│ └── main
│ │ ├── java
│ │ └── org
│ │ │ └── example
│ │ │ └── language
│ │ │ ├── CURLParserUtil.java
│ │ │ ├── CURLLexerAdapter.java
│ │ │ ├── HTTPIcons.java
│ │ │ ├── CURLElementType.java
│ │ │ ├── psi
│ │ │ ├── CURLKv.java
│ │ │ ├── CURLOption1.java
│ │ │ ├── CURLOption2.java
│ │ │ ├── CURLOption3.java
│ │ │ ├── CURLOption4.java
│ │ │ ├── CURLOption5.java
│ │ │ ├── CURLOption6.java
│ │ │ ├── CURLOption7.java
│ │ │ ├── CURLOption4Statement.java
│ │ │ ├── CURLOption3Statement.java
│ │ │ ├── CURLOption5Statement.java
│ │ │ ├── CURLOption1Statement.java
│ │ │ ├── CURLOption2Statement.java
│ │ │ ├── CURLOption6Statement.java
│ │ │ ├── CURLOption7Statement.java
│ │ │ ├── CURLCommand.java
│ │ │ ├── CURLOptions.java
│ │ │ └── impl
│ │ │ │ ├── CURLKvImpl.java
│ │ │ │ ├── CURLOption1Impl.java
│ │ │ │ ├── CURLOption2Impl.java
│ │ │ │ ├── CURLOption3Impl.java
│ │ │ │ ├── CURLOption4Impl.java
│ │ │ │ ├── CURLOption5Impl.java
│ │ │ │ ├── CURLOption6Impl.java
│ │ │ │ ├── CURLOption7Impl.java
│ │ │ │ ├── CURLOption4StatementImpl.java
│ │ │ │ ├── CURLOption3StatementImpl.java
│ │ │ │ └── CURLOption5StatementImpl.java
│ │ │ ├── HTTPLanguage.java
│ │ │ ├── CURLTokenType.java
│ │ │ ├── HTTPFile.java
│ │ │ ├── feature
│ │ │ ├── CURLSyntaxHighlighterFactory.java
│ │ │ ├── CURLCommenter.java
│ │ │ └── CURLCommandInsertHandler.java
│ │ │ └── HTTPFileType.java
│ │ └── gen
│ │ └── org
│ │ └── example
│ │ └── language
│ │ └── psi
│ │ ├── CURLKv.java
│ │ ├── CURLOption1.java
│ │ ├── CURLOption2.java
│ │ ├── CURLOption3.java
│ │ ├── CURLOption4.java
│ │ ├── CURLOption5.java
│ │ ├── CURLOption6.java
│ │ ├── CURLOption7.java
│ │ ├── CURLOption4Statement.java
│ │ ├── CURLOption3Statement.java
│ │ ├── CURLOption5Statement.java
│ │ ├── CURLOption1Statement.java
│ │ ├── CURLOption2Statement.java
│ │ ├── CURLOption6Statement.java
│ │ ├── CURLOption7Statement.java
│ │ ├── CURLCommand.java
│ │ ├── CURLOptions.java
│ │ └── impl
│ │ ├── CURLKvImpl.java
│ │ ├── CURLOption1Impl.java
│ │ ├── CURLOption2Impl.java
│ │ ├── CURLOption3Impl.java
│ │ ├── CURLOption4Impl.java
│ │ ├── CURLOption5Impl.java
│ │ ├── CURLOption6Impl.java
│ │ ├── CURLOption7Impl.java
│ │ ├── CURLOption4StatementImpl.java
│ │ ├── CURLOption3StatementImpl.java
│ │ └── CURLOption5StatementImpl.java
│ └── build.gradle
├── 搭建插件项目
├── HelloWorldPlugin
│ ├── settings.gradle
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── org
│ │ │ └── example
│ │ │ └── action
│ │ │ └── HelloWorldAction.java
│ │ └── resources
│ │ └── META-INF
│ │ └── plugin.xml
└── HelloWorldPlugin2
│ ├── HelloWorldPlugin2.jar
│ ├── src
│ └── main
│ │ └── org
│ │ └── example
│ │ └── action
│ │ └── HelloWorldAction.java
│ └── resources
│ └── META-INF
│ └── plugin.xml
├── .gitignore
├── README.md
└── 自定义语言1
└── ParserDemo
└── pom.xml
/PSI程序结构接口/demo/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/PSI程序结构接口/PsiDemo/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'PsiDemo'
2 |
3 |
--------------------------------------------------------------------------------
/数据持久化/Translator/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'Translator'
2 |
3 |
--------------------------------------------------------------------------------
/监听器/Translator/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'Translator'
2 |
3 |
--------------------------------------------------------------------------------
/丰富的拓展点/Translator/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'Translator'
2 |
3 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'Translator'
2 |
3 |
--------------------------------------------------------------------------------
/主题插件开发流程/ThemeDemo/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'ThemeDemo'
2 |
3 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'Translator'
2 |
3 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'Translator'
2 |
3 |
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/JsonToJava/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'JsonToJava'
2 |
3 |
--------------------------------------------------------------------------------
/PSI程序结构接口/APIDocPlugin/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'APIDocPlugin'
2 |
3 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'PluginI18N'
2 |
3 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'HTTPRequester'
2 |
3 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'HTTPRequester'
2 |
3 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'HTTPRequester'
2 |
3 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Notifications/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'Notifications'
2 |
3 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/src/main/resources/i18n/plugin_en.properties:
--------------------------------------------------------------------------------
1 | translate=Translate
--------------------------------------------------------------------------------
/搭建插件项目/HelloWorldPlugin/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'HelloWorldPlugin'
2 |
3 |
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/TextEditorDemo/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'TextEditorDemo'
2 |
3 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/ConsoleViewDemo/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'ConsoleViewDemo'
2 |
3 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/src/main/resources/i18n/plugin_zh.properties:
--------------------------------------------------------------------------------
1 | translate=\u7ffb\u8bd1
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | output
3 | \#*
4 | .DS_Store
5 | log
6 | out
7 | .gradle
8 | build
9 | *.iml
10 | *.cmd
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## PluginDevelopmentTutorial
2 |
3 | 本项目为掘金小册《IntelliJ IDE 插件开发指南》的配套学习课程项目。
4 | 课程购买链接:https://juejin.cn/book/7146874802144280611
5 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/lib/jflex-1.7.0-2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/自定义语言2/HTTPRequester/lib/jflex-1.7.0-2.jar
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/lib/jflex-1.7.0-2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/自定义语言3/HTTPRequester/lib/jflex-1.7.0-2.jar
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/lib/jflex-1.7.0-2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/自定义语言4/HTTPRequester/lib/jflex-1.7.0-2.jar
--------------------------------------------------------------------------------
/PSI程序结构接口/demo/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/PSI程序结构接口/demo/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/搭建插件项目/HelloWorldPlugin2/HelloWorldPlugin2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/搭建插件项目/HelloWorldPlugin2/HelloWorldPlugin2.jar
--------------------------------------------------------------------------------
/数据持久化/Translator/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/数据持久化/Translator/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/监听器/Translator/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/监听器/Translator/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/PSI程序结构接口/PsiDemo/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/PSI程序结构接口/PsiDemo/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/丰富的拓展点/Translator/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/丰富的拓展点/Translator/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/主题插件开发流程/ThemeDemo/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/主题插件开发流程/ThemeDemo/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/插件UI上篇/Translator/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/插件UI上篇/Translator/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/插件UI下篇/Translator/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/插件UI下篇/Translator/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/丰富的消息通知方式/Translator/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/自定义语言2/HTTPRequester/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/自定义语言3/HTTPRequester/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/自定义语言4/HTTPRequester/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/JsonToJava/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/虚拟文件与文本编辑/JsonToJava/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/PSI程序结构接口/APIDocPlugin/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/PSI程序结构接口/APIDocPlugin/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/resources/icons/translator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/插件UI下篇/Translator/src/main/resources/icons/translator.png
--------------------------------------------------------------------------------
/搭建插件项目/HelloWorldPlugin/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/搭建插件项目/HelloWorldPlugin/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/丰富的消息通知方式/Notifications/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/丰富的消息通知方式/Notifications/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/resources/icons/translator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/丰富的消息通知方式/Translator/src/main/resources/icons/translator.png
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/resources/icons/translator@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/插件UI下篇/Translator/src/main/resources/icons/translator@2x.png
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/插件国际化与其他小技巧介绍/PluginI18N/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/TextEditorDemo/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/虚拟文件与文本编辑/TextEditorDemo/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/resources/icons/translator_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/插件UI下篇/Translator/src/main/resources/icons/translator_dark.png
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/resources/icons/translator@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/丰富的消息通知方式/Translator/src/main/resources/icons/translator@2x.png
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/resources/icons/translator_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/丰富的消息通知方式/Translator/src/main/resources/icons/translator_dark.png
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/resources/icons/translator@2x_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/插件UI下篇/Translator/src/main/resources/icons/translator@2x_dark.png
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/ConsoleViewDemo/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/插件国际化与其他小技巧介绍/ConsoleViewDemo/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/resources/icons/translator@2x_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HongJinFeng/PluginDevelopmentTutorial/HEAD/丰富的消息通知方式/Translator/src/main/resources/icons/translator@2x_dark.png
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/src/main/java/org/example/config/PluginConfig.java:
--------------------------------------------------------------------------------
1 | package org.example.config;
2 |
3 | // 配置类,可结合持久化配置知识创建,此处我们只做配置举例
4 | public class PluginConfig {
5 |
6 | public static String langConfig = "en";
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/CURLParserUtil.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.lang.parser.GeneratedParserUtilBase;
4 |
5 | public class CURLParserUtil extends GeneratedParserUtilBase {
6 | }
7 |
--------------------------------------------------------------------------------
/PSI程序结构接口/PsiDemo/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/丰富的拓展点/Translator/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/数据持久化/Translator/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/监听器/Translator/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/PSI程序结构接口/APIDocPlugin/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/主题插件开发流程/ThemeDemo/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/JsonToJava/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Notifications/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/搭建插件项目/HelloWorldPlugin/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/TextEditorDemo/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/PSI程序结构接口/demo/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar
3 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/ConsoleViewDemo/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/java/icons/TranslatorIcons.java:
--------------------------------------------------------------------------------
1 | package icons;
2 |
3 | import com.intellij.openapi.util.IconLoader;
4 |
5 | import javax.swing.*;
6 |
7 | public interface TranslatorIcons {
8 | Icon TRANS = IconLoader.getIcon("/icons/translator.png", TranslatorIcons.class);
9 | }
10 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/java/icons/TranslatorIcons.java:
--------------------------------------------------------------------------------
1 | package icons;
2 |
3 | import com.intellij.openapi.util.IconLoader;
4 |
5 | import javax.swing.*;
6 |
7 | public interface TranslatorIcons {
8 | Icon TRANS = IconLoader.getIcon("/icons/translator.png", TranslatorIcons.class);
9 | }
10 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/CURLLexerAdapter.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.lexer.FlexAdapter;
4 |
5 | public class CURLLexerAdapter extends FlexAdapter {
6 |
7 | public CURLLexerAdapter() {
8 | super(new _CURLLexer(null));
9 | }
10 |
11 | }
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/CURLLexerAdapter.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.lexer.FlexAdapter;
4 |
5 | public class CURLLexerAdapter extends FlexAdapter {
6 |
7 | public CURLLexerAdapter() {
8 | super(new _CURLLexer(null));
9 | }
10 |
11 | }
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/CURLLexerAdapter.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.lexer.FlexAdapter;
4 |
5 | public class CURLLexerAdapter extends FlexAdapter {
6 |
7 | public CURLLexerAdapter() {
8 | super(new _CURLLexer(null));
9 | }
10 |
11 | }
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/HTTPIcons.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.openapi.util.IconLoader;
4 |
5 | import javax.swing.*;
6 |
7 | public class HTTPIcons {
8 | public static final Icon FILE = IconLoader.getIcon("/icons/http.svg", HTTPIcons.class);
9 | }
10 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/HTTPIcons.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.openapi.util.IconLoader;
4 |
5 | import javax.swing.*;
6 |
7 | public class HTTPIcons {
8 | public static final Icon FILE = IconLoader.getIcon("/icons/http.svg", HTTPIcons.class);
9 | }
10 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/HTTPIcons.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.openapi.util.IconLoader;
4 |
5 | import javax.swing.*;
6 |
7 | public class HTTPIcons {
8 | public static final Icon FILE = IconLoader.getIcon("/icons/http.svg", HTTPIcons.class);
9 | }
10 |
--------------------------------------------------------------------------------
/PSI程序结构接口/demo/src/test/java/com/example/demo/DemoApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.example.demo;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class DemoApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/CURLElementType.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.psi.tree.IElementType;
4 |
5 | class CURLElementType extends IElementType {
6 |
7 | public CURLElementType(String debugName) {
8 | super(debugName, HTTPLanguage.INSTANCE);
9 | }
10 | }
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/CURLElementType.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.psi.tree.IElementType;
4 |
5 | class CURLElementType extends IElementType {
6 |
7 | public CURLElementType(String debugName) {
8 | super(debugName, HTTPLanguage.INSTANCE);
9 | }
10 | }
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/CURLElementType.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.psi.tree.IElementType;
4 |
5 | class CURLElementType extends IElementType {
6 |
7 | public CURLElementType(String debugName) {
8 | super(debugName, HTTPLanguage.INSTANCE);
9 | }
10 | }
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLKv.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLKv extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLKv.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLKv extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLKv.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLKv extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLKv.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLKv extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption1.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption1 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption2.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption2 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption3.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption3 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption4.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption4 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption5.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption5 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption6.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption6 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption7.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption7 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption1.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption1 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption2.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption2 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption3.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption3 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption4.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption4 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption5.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption5 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption6.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption6 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption7.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption7 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption1.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption1 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption2.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption2 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption3.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption3 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption4.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption4 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption5.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption5 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption6.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption6 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption7.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption7 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption1.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption1 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption2.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption2 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption3.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption3 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption4.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption4 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption5.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption5 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption6.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption6 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption7.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption7 extends PsiElement {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/HTTPLanguage.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.lang.Language;
4 |
5 | public class HTTPLanguage extends Language {
6 |
7 | public static final HTTPLanguage INSTANCE = new HTTPLanguage();
8 |
9 | private HTTPLanguage() {
10 | super("HTTP");
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/HTTPLanguage.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.lang.Language;
4 |
5 | public class HTTPLanguage extends Language {
6 |
7 | public static final HTTPLanguage INSTANCE = new HTTPLanguage();
8 |
9 | private HTTPLanguage() {
10 | super("HTTP");
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/HTTPLanguage.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.lang.Language;
4 |
5 | public class HTTPLanguage extends Language {
6 |
7 | public static final HTTPLanguage INSTANCE = new HTTPLanguage();
8 |
9 | private HTTPLanguage() {
10 | super("HTTP");
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/src/main/java/org/example/util/I18nUtils.java:
--------------------------------------------------------------------------------
1 | package org.example.util;
2 |
3 |
4 | import java.util.Locale;
5 | import java.util.ResourceBundle;
6 |
7 | public class I18nUtils {
8 |
9 | public static String getLocalMessage(String langCode, String key) {
10 | return ResourceBundle.getBundle("i18n.plugin", Locale.forLanguageTag(langCode)).getString(key);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/PSI程序结构接口/demo/src/main/java/com/example/demo/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.example.demo;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class DemoApplication {
8 |
9 | public static void main(String[] args) {
10 | SpringApplication.run(DemoApplication.class, args);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption4Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption4Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption4 getOption4();
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption4Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption4Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption4 getOption4();
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption4Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption4Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption4 getOption4();
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption4Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption4Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption4 getOption4();
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/搭建插件项目/HelloWorldPlugin/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.5.3'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 |
15 | }
16 |
17 | // See https://github.com/JetBrains/gradle-intellij-plugin/
18 | intellij {
19 | version = '2021.2'
20 | }
21 |
22 | test {
23 | useJUnitPlatform()
24 | }
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/CURLTokenType.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.psi.tree.IElementType;
4 |
5 | public class CURLTokenType extends IElementType {
6 |
7 | public CURLTokenType(String debugName) {
8 | super(debugName, HTTPLanguage.INSTANCE);
9 | }
10 |
11 | public String toString() {
12 | return "CURLTokenType." + super.toString();
13 | }
14 |
15 | }
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/CURLTokenType.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.psi.tree.IElementType;
4 |
5 | public class CURLTokenType extends IElementType {
6 |
7 | public CURLTokenType(String debugName) {
8 | super(debugName, HTTPLanguage.INSTANCE);
9 | }
10 |
11 | public String toString() {
12 | return "CURLTokenType." + super.toString();
13 | }
14 |
15 | }
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/CURLTokenType.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.psi.tree.IElementType;
4 |
5 | public class CURLTokenType extends IElementType {
6 |
7 | public CURLTokenType(String debugName) {
8 | super(debugName, HTTPLanguage.INSTANCE);
9 | }
10 |
11 | public String toString() {
12 | return "CURLTokenType." + super.toString();
13 | }
14 |
15 | }
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLCommand.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLCommand extends PsiElement {
9 |
10 | @NotNull
11 | List getOptionsList();
12 |
13 | @NotNull
14 | PsiElement getUrl();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption3Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption3Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLKv getKv();
12 |
13 | @NotNull
14 | CURLOption3 getOption3();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption3Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption3Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLKv getKv();
12 |
13 | @NotNull
14 | CURLOption3 getOption3();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption3Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption3Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLKv getKv();
12 |
13 | @NotNull
14 | CURLOption3 getOption3();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption3Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption3Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLKv getKv();
12 |
13 | @NotNull
14 | CURLOption3 getOption3();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption5Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption5Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption5 getOption5();
12 |
13 | @NotNull
14 | PsiElement getMethod();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption5Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption5Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption5 getOption5();
12 |
13 | @NotNull
14 | PsiElement getMethod();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption5Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption5Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption5 getOption5();
12 |
13 | @NotNull
14 | PsiElement getMethod();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption5Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption5Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption5 getOption5();
12 |
13 | @NotNull
14 | PsiElement getMethod();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption1Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption1Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption1 getOption1();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption2Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption2Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption2 getOption2();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption6Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption6Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption6 getOption6();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOption7Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption7Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption7 getOption7();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption1Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption1Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption1 getOption1();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption2Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption2Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption2 getOption2();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption6Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption6Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption6 getOption6();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOption7Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption7Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption7 getOption7();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption1Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption1Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption1 getOption1();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption2Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption2Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption2 getOption2();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption6Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption6Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption6 getOption6();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOption7Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption7Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption7 getOption7();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption1Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption1Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption1 getOption1();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption2Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption2Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption2 getOption2();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption6Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption6Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption6 getOption6();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOption7Statement.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOption7Statement extends PsiElement {
9 |
10 | @NotNull
11 | CURLOption7 getOption7();
12 |
13 | @NotNull
14 | PsiElement getQuotedString();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/监听器/Translator/src/main/java/org/example/listener/TranslateListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.openapi.project.Project;
4 | import com.intellij.util.messages.Topic;
5 |
6 | public interface TranslateListener {
7 | Topic TRANSLATE_TOPIC = Topic.create("translate", TranslateListener.class);
8 |
9 | default void beforeTranslated(Project project) {
10 | }
11 |
12 | default void afterTranslated(Project project) {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/src/main/java/org/example/listener/TranslateListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.openapi.project.Project;
4 | import com.intellij.util.messages.Topic;
5 |
6 | public interface TranslateListener {
7 | Topic TRANSLATE_TOPIC = Topic.create("translate", TranslateListener.class);
8 |
9 | default void beforeTranslated(Project project) {
10 | }
11 |
12 | default void afterTranslated(Project project) {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/java/org/example/listener/TranslateListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.openapi.project.Project;
4 | import com.intellij.util.messages.Topic;
5 |
6 | public interface TranslateListener {
7 | Topic TRANSLATE_TOPIC = Topic.create("translate", TranslateListener.class);
8 |
9 | default void beforeTranslated(Project project) {
10 | }
11 |
12 | default void afterTranslated(Project project) {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/java/org/example/listener/TranslateListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.openapi.project.Project;
4 | import com.intellij.util.messages.Topic;
5 |
6 | public interface TranslateListener {
7 | Topic TRANSLATE_TOPIC = Topic.create("translate", TranslateListener.class);
8 |
9 | default void beforeTranslated(Project project) {
10 | }
11 |
12 | default void afterTranslated(Project project) {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLCommand.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLCommand extends PsiElement {
9 |
10 | @NotNull
11 | List getOptionsList();
12 |
13 | @NotNull
14 | PsiElement getCurl();
15 |
16 | @NotNull
17 | PsiElement getUrl();
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLCommand.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLCommand extends PsiElement {
9 |
10 | @NotNull
11 | List getOptionsList();
12 |
13 | @NotNull
14 | PsiElement getCurl();
15 |
16 | @NotNull
17 | PsiElement getUrl();
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLCommand.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLCommand extends PsiElement {
9 |
10 | @NotNull
11 | List getOptionsList();
12 |
13 | @NotNull
14 | PsiElement getCurl();
15 |
16 | @NotNull
17 | PsiElement getUrl();
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/HTTPFile.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.extapi.psi.PsiFileBase;
4 | import com.intellij.openapi.fileTypes.FileType;
5 | import com.intellij.psi.FileViewProvider;
6 | import org.jetbrains.annotations.NotNull;
7 |
8 | public class HTTPFile extends PsiFileBase {
9 |
10 | protected HTTPFile(@NotNull FileViewProvider viewProvider) {
11 | super(viewProvider, HTTPLanguage.INSTANCE);
12 | }
13 |
14 | @Override
15 | public @NotNull FileType getFileType() {
16 | return HTTPFileType.INSTANCE;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/HTTPFile.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.extapi.psi.PsiFileBase;
4 | import com.intellij.openapi.fileTypes.FileType;
5 | import com.intellij.psi.FileViewProvider;
6 | import org.jetbrains.annotations.NotNull;
7 |
8 | public class HTTPFile extends PsiFileBase {
9 |
10 | protected HTTPFile(@NotNull FileViewProvider viewProvider) {
11 | super(viewProvider, HTTPLanguage.INSTANCE);
12 | }
13 |
14 | @Override
15 | public @NotNull FileType getFileType() {
16 | return HTTPFileType.INSTANCE;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/HTTPFile.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.extapi.psi.PsiFileBase;
4 | import com.intellij.openapi.fileTypes.FileType;
5 | import com.intellij.psi.FileViewProvider;
6 | import org.jetbrains.annotations.NotNull;
7 |
8 | public class HTTPFile extends PsiFileBase {
9 |
10 |
11 | protected HTTPFile(@NotNull FileViewProvider viewProvider) {
12 | super(viewProvider, HTTPLanguage.INSTANCE);
13 | }
14 |
15 | @Override
16 | public @NotNull FileType getFileType() {
17 | return HTTPFileType.INSTANCE;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/PSI程序结构接口/APIDocPlugin/src/main/java/org/example/dto/ApiHeaderDTO.java:
--------------------------------------------------------------------------------
1 | package org.example.dto;
2 |
3 | public class ApiHeaderDTO {
4 |
5 | /**
6 | * 请求头 key
7 | */
8 | private String name = "";
9 |
10 | /**
11 | * 注释
12 | */
13 | private String desc = "";
14 |
15 | public String getName() {
16 | return name;
17 | }
18 |
19 | public void setName(String name) {
20 | this.name = name;
21 | }
22 |
23 | public String getDesc() {
24 | return desc;
25 | }
26 |
27 | public void setDesc(String desc) {
28 | this.desc = desc;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/丰富的拓展点/Translator/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.6.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | implementation group: 'com.alibaba', name: 'fastjson', version: '2.0.4'
17 | }
18 |
19 | // See https://github.com/JetBrains/gradle-intellij-plugin/
20 | intellij {
21 | version = '2021.2'
22 | }
23 |
24 | test {
25 | useJUnitPlatform()
26 | }
--------------------------------------------------------------------------------
/自定义语言1/ParserDemo/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | org.example
8 | ParserDemo
9 | 1.0-SNAPSHOT
10 |
11 |
12 | 11
13 | 11
14 |
15 |
16 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/ConsoleViewDemo/src/main/java/org/example/action/TestConsoleAction.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.execution.ui.ConsoleViewContentType;
4 | import com.intellij.openapi.actionSystem.AnAction;
5 | import com.intellij.openapi.actionSystem.AnActionEvent;
6 | import org.example.toolwindow.ConsoleOutputToolWindow;
7 | import org.jetbrains.annotations.NotNull;
8 |
9 | public class TestConsoleAction extends AnAction {
10 |
11 | @Override
12 | public void actionPerformed(@NotNull AnActionEvent e) {
13 | ConsoleOutputToolWindow.getConsoleView(e.getProject()).print("测试控制台输出", ConsoleViewContentType.NORMAL_OUTPUT);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/主题插件开发流程/ThemeDemo/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.7.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | // See https://github.com/JetBrains/gradle-intellij-plugin/
19 | intellij {
20 | version = '2021.2'
21 | }
22 | patchPluginXml {
23 | changeNotes = """
24 | Add change notes here.
25 | most HTML tags may be used"""
26 | }
27 | test {
28 | useJUnitPlatform()
29 | }
--------------------------------------------------------------------------------
/丰富的消息通知方式/Notifications/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.6.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | // See https://github.com/JetBrains/gradle-intellij-plugin/
19 | intellij {
20 | version = '2021.2'
21 | }
22 | patchPluginXml {
23 | changeNotes = """
24 | Add change notes here.
25 | most HTML tags may be used"""
26 | }
27 | test {
28 | useJUnitPlatform()
29 | }
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/java/org/example/util/TranslatorTextProvider.java:
--------------------------------------------------------------------------------
1 | package org.example.util;
2 |
3 | import com.intellij.ui.TextFieldWithAutoCompletionListProvider;
4 | import org.jetbrains.annotations.NotNull;
5 |
6 | import java.util.HashSet;
7 | import java.util.Set;
8 |
9 | public class TranslatorTextProvider extends TextFieldWithAutoCompletionListProvider {
10 |
11 | public static Set items = new HashSet<>();
12 |
13 | public TranslatorTextProvider() {
14 | super(items);
15 | }
16 |
17 | @Override
18 | protected @NotNull String getLookupString(@NotNull String item) {
19 | return item.substring(item.lastIndexOf(" ") + 1);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.9.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | // See https://github.com/JetBrains/gradle-intellij-plugin/
19 | intellij {
20 | version = '2021.2'
21 | }
22 | patchPluginXml {
23 | changeNotes = """
24 | Add change notes here.
25 | most HTML tags may be used"""
26 | }
27 | test {
28 | useJUnitPlatform()
29 | }
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/TextEditorDemo/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.8.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | // See https://github.com/JetBrains/gradle-intellij-plugin/
19 | intellij {
20 | version = '2021.2'
21 | }
22 | patchPluginXml {
23 | changeNotes = """
24 | Add change notes here.
25 | most HTML tags may be used"""
26 | }
27 | test {
28 | useJUnitPlatform()
29 | }
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/java/org/example/util/TranslatorTextProvider.java:
--------------------------------------------------------------------------------
1 | package org.example.util;
2 |
3 | import com.intellij.ui.TextFieldWithAutoCompletionListProvider;
4 | import org.jetbrains.annotations.NotNull;
5 |
6 | import java.util.HashSet;
7 | import java.util.Set;
8 |
9 | public class TranslatorTextProvider extends TextFieldWithAutoCompletionListProvider {
10 |
11 | public static Set items = new HashSet<>();
12 |
13 | public TranslatorTextProvider() {
14 | super(items);
15 | }
16 |
17 | @Override
18 | protected @NotNull String getLookupString(@NotNull String item) {
19 | return item.substring(item.lastIndexOf(" ") + 1);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/ConsoleViewDemo/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.9.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | // See https://github.com/JetBrains/gradle-intellij-plugin/
19 | intellij {
20 | version = '2021.2'
21 | }
22 | patchPluginXml {
23 | changeNotes = """
24 | Add change notes here.
25 | most HTML tags may be used"""
26 | }
27 | test {
28 | useJUnitPlatform()
29 | }
--------------------------------------------------------------------------------
/丰富的消息通知方式/Notifications/src/main/java/org/example/action/HintNotification.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.codeInsight.hint.HintManager;
4 | import com.intellij.openapi.actionSystem.AnAction;
5 | import com.intellij.openapi.actionSystem.AnActionEvent;
6 | import com.intellij.openapi.actionSystem.PlatformDataKeys;
7 | import com.intellij.openapi.editor.Editor;
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class HintNotification extends AnAction {
11 | @Override
12 | public void actionPerformed(@NotNull AnActionEvent e) {
13 | Editor editor = e.getData(PlatformDataKeys.EDITOR);
14 | HintManager.getInstance().showInformationHint(editor, "编辑器提示");
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.9.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | intellij {
19 | version = '2021.2'
20 | plugins = ['com.intellij.java']
21 | }
22 |
23 | sourceSets.main.java.srcDirs 'src/main/java'
24 |
25 | patchPluginXml {
26 | changeNotes = """
27 | Add change notes here.
28 | most HTML tags may be used"""
29 | }
30 | test {
31 | useJUnitPlatform()
32 | }
--------------------------------------------------------------------------------
/PSI程序结构接口/PsiDemo/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.8.1'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | // See https://github.com/JetBrains/gradle-intellij-plugin/
19 | intellij {
20 | version = '2021.2'
21 | plugins = ['com.intellij.java']
22 | }
23 | patchPluginXml {
24 | changeNotes = """
25 | Add change notes here.
26 | most HTML tags may be used"""
27 | }
28 | test {
29 | useJUnitPlatform()
30 | }
--------------------------------------------------------------------------------
/PSI程序结构接口/demo/src/main/java/com/example/demo/dto/User.java:
--------------------------------------------------------------------------------
1 | package com.example.demo.dto;
2 |
3 | public class User {
4 |
5 | private String name;
6 |
7 | private String age;
8 |
9 | private String address;
10 |
11 | public String getName() {
12 | return name;
13 | }
14 |
15 | public void setName(String name) {
16 | this.name = name;
17 | }
18 |
19 | public String getAge() {
20 | return age;
21 | }
22 |
23 | public void setAge(String age) {
24 | this.age = age;
25 | }
26 |
27 | public String getAddress() {
28 | return address;
29 | }
30 |
31 | public void setAddress(String address) {
32 | this.address = address;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.9.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | intellij {
19 | version = '2021.2'
20 | plugins = ['com.intellij.java']
21 | }
22 |
23 | sourceSets.main.java.srcDirs 'src/main/java'
24 |
25 | patchPluginXml {
26 | changeNotes = """
27 | Add change notes here.
28 | most HTML tags may be used"""
29 | }
30 | test {
31 | useJUnitPlatform()
32 | }
--------------------------------------------------------------------------------
/PSI程序结构接口/APIDocPlugin/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.9.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | // See https://github.com/JetBrains/gradle-intellij-plugin/
19 | intellij {
20 | version = '2021.2'
21 | plugins = ['com.intellij.java']
22 | }
23 | patchPluginXml {
24 | changeNotes = """
25 | Add change notes here.
26 | most HTML tags may be used"""
27 | }
28 | test {
29 | useJUnitPlatform()
30 | }
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/feature/CURLSyntaxHighlighterFactory.java:
--------------------------------------------------------------------------------
1 | package org.example.language.feature;
2 |
3 | import com.intellij.openapi.fileTypes.SyntaxHighlighter;
4 | import com.intellij.openapi.fileTypes.SyntaxHighlighterFactory;
5 | import com.intellij.openapi.project.Project;
6 | import com.intellij.openapi.vfs.VirtualFile;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 |
10 | public class CURLSyntaxHighlighterFactory extends SyntaxHighlighterFactory {
11 |
12 | @Override
13 | public @NotNull SyntaxHighlighter getSyntaxHighlighter(@Nullable Project project, @Nullable VirtualFile virtualFile) {
14 | return new CURLSyntaxHighlighter();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/feature/CURLSyntaxHighlighterFactory.java:
--------------------------------------------------------------------------------
1 | package org.example.language.feature;
2 |
3 | import com.intellij.openapi.fileTypes.SyntaxHighlighter;
4 | import com.intellij.openapi.fileTypes.SyntaxHighlighterFactory;
5 | import com.intellij.openapi.project.Project;
6 | import com.intellij.openapi.vfs.VirtualFile;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 |
10 | public class CURLSyntaxHighlighterFactory extends SyntaxHighlighterFactory {
11 |
12 | @Override
13 | public @NotNull SyntaxHighlighter getSyntaxHighlighter(@Nullable Project project, @Nullable VirtualFile virtualFile) {
14 | return new CURLSyntaxHighlighter();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.9.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | }
17 |
18 | // See https://github.com/JetBrains/gradle-intellij-plugin/
19 | intellij {
20 | version = '2021.2'
21 | }
22 |
23 | sourceSets.main.java.srcDirs 'src/main/java'
24 |
25 | patchPluginXml {
26 | changeNotes = """
27 | Add change notes here.
28 | most HTML tags may be used"""
29 | }
30 | test {
31 | useJUnitPlatform()
32 | }
--------------------------------------------------------------------------------
/PSI程序结构接口/PsiDemo/src/main/java/org/example/action/RenameElementAction.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.openapi.actionSystem.AnAction;
4 | import com.intellij.openapi.actionSystem.AnActionEvent;
5 | import com.intellij.openapi.actionSystem.CommonDataKeys;
6 | import com.intellij.psi.PsiElement;
7 | import com.intellij.refactoring.RefactoringFactory;
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class RenameElementAction extends AnAction {
11 |
12 | @Override
13 | public void actionPerformed(@NotNull AnActionEvent e) {
14 | PsiElement psiElement = e.getData(CommonDataKeys.PSI_ELEMENT);
15 | RefactoringFactory.getInstance(e.getProject()).createRename(psiElement, "newName", false, false).run();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/监听器/Translator/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.6.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | implementation group: 'com.alibaba', name: 'fastjson', version: '2.0.4'
17 | }
18 |
19 | // See https://github.com/JetBrains/gradle-intellij-plugin/
20 | intellij {
21 | version = '2021.2'
22 | }
23 | patchPluginXml {
24 | changeNotes = """
25 | Add change notes here.
26 | most HTML tags may be used"""
27 | }
28 | test {
29 | useJUnitPlatform()
30 | }
--------------------------------------------------------------------------------
/插件UI上篇/Translator/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.6.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | implementation group: 'com.alibaba', name: 'fastjson', version: '2.0.4'
17 | }
18 |
19 | // See https://github.com/JetBrains/gradle-intellij-plugin/
20 | intellij {
21 | version = '2021.2'
22 | }
23 | patchPluginXml {
24 | changeNotes = """
25 | Add change notes here.
26 | most HTML tags may be used"""
27 | }
28 | test {
29 | useJUnitPlatform()
30 | }
--------------------------------------------------------------------------------
/插件UI下篇/Translator/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.6.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | implementation group: 'com.alibaba', name: 'fastjson', version: '2.0.4'
17 | }
18 |
19 | // See https://github.com/JetBrains/gradle-intellij-plugin/
20 | intellij {
21 | version = '2021.2'
22 | }
23 | patchPluginXml {
24 | changeNotes = """
25 | Add change notes here.
26 | most HTML tags may be used"""
27 | }
28 | test {
29 | useJUnitPlatform()
30 | }
--------------------------------------------------------------------------------
/数据持久化/Translator/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.6.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | implementation group: 'com.alibaba', name: 'fastjson', version: '2.0.4'
17 | }
18 |
19 | // See https://github.com/JetBrains/gradle-intellij-plugin/
20 | intellij {
21 | version = '2021.2'
22 | }
23 | patchPluginXml {
24 | changeNotes = """
25 | Add change notes here.
26 | most HTML tags may be used"""
27 | }
28 | test {
29 | useJUnitPlatform()
30 | }
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.6.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | implementation group: 'com.alibaba', name: 'fastjson', version: '2.0.4'
17 | }
18 |
19 | // See https://github.com/JetBrains/gradle-intellij-plugin/
20 | intellij {
21 | version = '2021.2'
22 | }
23 | patchPluginXml {
24 | changeNotes = """
25 | Add change notes here.
26 | most HTML tags may be used"""
27 | }
28 | test {
29 | useJUnitPlatform()
30 | }
--------------------------------------------------------------------------------
/主题插件开发流程/ThemeDemo/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.ThemeDemo
3 | Plugin display name here
4 | YourCompany
5 |
6 |
8 | most HTML tags may be used
9 | ]]>
10 |
11 | com.intellij.modules.platform
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/PSI程序结构接口/demo/src/main/java/com/example/demo/dto/Order.java:
--------------------------------------------------------------------------------
1 | package com.example.demo.dto;
2 |
3 | import java.util.Date;
4 |
5 | import com.example.demo.dto.User;
6 |
7 | public class Order {
8 |
9 | private String orderID;
10 |
11 | private Date orderTime;
12 |
13 | private User user;
14 |
15 | public String getOrderID() {
16 | return orderID;
17 | }
18 |
19 | public void setOrderID(String orderID) {
20 | this.orderID = orderID;
21 | }
22 |
23 | public Date getOrderTime() {
24 | return orderTime;
25 | }
26 |
27 | public void setOrderTime(Date orderTime) {
28 | this.orderTime = orderTime;
29 | }
30 |
31 | public User getUser() {
32 | return user;
33 | }
34 |
35 | public void setUser(User user) {
36 | this.user = user;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/src/main/java/org/example/listener/TranslatorActionListenerA.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.project.Project;
7 |
8 | public class TranslatorActionListenerA implements TranslateListener {
9 |
10 | @Override
11 | public void beforeTranslated(Project project) {
12 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第一个监听器:beforeTranslated", NotificationType.INFORMATION), project);
13 | }
14 |
15 | @Override
16 | public void afterTranslated(Project project) {
17 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第一个监听器:afterTranslated", NotificationType.INFORMATION), project);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/src/main/java/org/example/listener/TranslatorActionListenerB.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.project.Project;
7 |
8 | public class TranslatorActionListenerB implements TranslateListener {
9 |
10 | @Override
11 | public void beforeTranslated(Project project) {
12 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第二个监听器:beforeTranslated", NotificationType.INFORMATION), project);
13 | }
14 |
15 | @Override
16 | public void afterTranslated(Project project) {
17 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第二个监听器:afterTranslated", NotificationType.INFORMATION), project);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/java/org/example/listener/TranslatorActionListenerA.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.project.Project;
7 |
8 | public class TranslatorActionListenerA implements TranslateListener {
9 |
10 | @Override
11 | public void beforeTranslated(Project project) {
12 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第一个监听器:beforeTranslated", NotificationType.INFORMATION), project);
13 | }
14 |
15 | @Override
16 | public void afterTranslated(Project project) {
17 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第一个监听器:afterTranslated", NotificationType.INFORMATION), project);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/java/org/example/listener/TranslatorActionListenerB.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.project.Project;
7 |
8 | public class TranslatorActionListenerB implements TranslateListener {
9 |
10 | @Override
11 | public void beforeTranslated(Project project) {
12 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第二个监听器:beforeTranslated", NotificationType.INFORMATION), project);
13 | }
14 |
15 | @Override
16 | public void afterTranslated(Project project) {
17 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第二个监听器:afterTranslated", NotificationType.INFORMATION), project);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/监听器/Translator/src/main/java/org/example/listener/TranslatorActionListenerA.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.project.Project;
7 |
8 | public class TranslatorActionListenerA implements TranslateListener {
9 |
10 | @Override
11 | public void beforeTranslated(Project project) {
12 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第一个监听器:beforeTranslated", NotificationType.INFORMATION), project);
13 | }
14 |
15 | @Override
16 | public void afterTranslated(Project project) {
17 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第一个监听器:afterTranslated", NotificationType.INFORMATION), project);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/监听器/Translator/src/main/java/org/example/listener/TranslatorActionListenerB.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.project.Project;
7 |
8 | public class TranslatorActionListenerB implements TranslateListener {
9 |
10 | @Override
11 | public void beforeTranslated(Project project) {
12 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第二个监听器:beforeTranslated", NotificationType.INFORMATION), project);
13 | }
14 |
15 | @Override
16 | public void afterTranslated(Project project) {
17 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第二个监听器:afterTranslated", NotificationType.INFORMATION), project);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/CURLOptions.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOptions extends PsiElement {
9 |
10 | @Nullable
11 | CURLOption1Statement getOption1Statement();
12 |
13 | @Nullable
14 | CURLOption2Statement getOption2Statement();
15 |
16 | @Nullable
17 | CURLOption3Statement getOption3Statement();
18 |
19 | @Nullable
20 | CURLOption4Statement getOption4Statement();
21 |
22 | @Nullable
23 | CURLOption5Statement getOption5Statement();
24 |
25 | @Nullable
26 | CURLOption6Statement getOption6Statement();
27 |
28 | @Nullable
29 | CURLOption7Statement getOption7Statement();
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/CURLOptions.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOptions extends PsiElement {
9 |
10 | @Nullable
11 | CURLOption1Statement getOption1Statement();
12 |
13 | @Nullable
14 | CURLOption2Statement getOption2Statement();
15 |
16 | @Nullable
17 | CURLOption3Statement getOption3Statement();
18 |
19 | @Nullable
20 | CURLOption4Statement getOption4Statement();
21 |
22 | @Nullable
23 | CURLOption5Statement getOption5Statement();
24 |
25 | @Nullable
26 | CURLOption6Statement getOption6Statement();
27 |
28 | @Nullable
29 | CURLOption7Statement getOption7Statement();
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/CURLOptions.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOptions extends PsiElement {
9 |
10 | @Nullable
11 | CURLOption1Statement getOption1Statement();
12 |
13 | @Nullable
14 | CURLOption2Statement getOption2Statement();
15 |
16 | @Nullable
17 | CURLOption3Statement getOption3Statement();
18 |
19 | @Nullable
20 | CURLOption4Statement getOption4Statement();
21 |
22 | @Nullable
23 | CURLOption5Statement getOption5Statement();
24 |
25 | @Nullable
26 | CURLOption6Statement getOption6Statement();
27 |
28 | @Nullable
29 | CURLOption7Statement getOption7Statement();
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/CURLOptions.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.psi.PsiElement;
7 |
8 | public interface CURLOptions extends PsiElement {
9 |
10 | @Nullable
11 | CURLOption1Statement getOption1Statement();
12 |
13 | @Nullable
14 | CURLOption2Statement getOption2Statement();
15 |
16 | @Nullable
17 | CURLOption3Statement getOption3Statement();
18 |
19 | @Nullable
20 | CURLOption4Statement getOption4Statement();
21 |
22 | @Nullable
23 | CURLOption5Statement getOption5Statement();
24 |
25 | @Nullable
26 | CURLOption6Statement getOption6Statement();
27 |
28 | @Nullable
29 | CURLOption7Statement getOption7Statement();
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/java/org/example/listener/TranslatorActionListenerA.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.project.Project;
7 |
8 | public class TranslatorActionListenerA implements TranslateListener {
9 |
10 | @Override
11 | public void beforeTranslated(Project project) {
12 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第一个监听器:beforeTranslated", NotificationType.INFORMATION), project);
13 | }
14 |
15 | @Override
16 | public void afterTranslated(Project project) {
17 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第一个监听器:afterTranslated", NotificationType.INFORMATION), project);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/java/org/example/listener/TranslatorActionListenerB.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.project.Project;
7 |
8 | public class TranslatorActionListenerB implements TranslateListener {
9 |
10 | @Override
11 | public void beforeTranslated(Project project) {
12 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第二个监听器:beforeTranslated", NotificationType.INFORMATION), project);
13 | }
14 |
15 | @Override
16 | public void afterTranslated(Project project) {
17 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "第二个监听器:afterTranslated", NotificationType.INFORMATION), project);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/JsonToJava/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.JsonToJava
3 | JsonToJava
4 | YourCompany
5 |
6 |
8 | most HTML tags may be used
9 | ]]>
10 |
11 | com.intellij.modules.platform
12 |
13 |
14 |
15 |
16 |
17 |
18 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/feature/CURLCommenter.java:
--------------------------------------------------------------------------------
1 | package org.example.language.feature;
2 |
3 | import com.intellij.lang.Commenter;
4 | import org.jetbrains.annotations.Nullable;
5 |
6 | public class CURLCommenter implements Commenter {
7 | @Override
8 | public @Nullable String getLineCommentPrefix() {
9 | return "//";
10 | }
11 |
12 | @Override
13 | public @Nullable String getBlockCommentPrefix() {
14 | return null;
15 | }
16 |
17 | @Override
18 | public @Nullable String getBlockCommentSuffix() {
19 | return null;
20 | }
21 |
22 | @Override
23 | public @Nullable String getCommentedBlockCommentPrefix() {
24 | return null;
25 | }
26 |
27 | @Override
28 | public @Nullable String getCommentedBlockCommentSuffix() {
29 | return null;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/JsonToJava/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'org.jetbrains.intellij' version '1.8.0'
3 | id 'java'
4 | }
5 |
6 | group 'org.example'
7 | version '1.0-SNAPSHOT'
8 |
9 | repositories {
10 | mavenCentral()
11 | }
12 |
13 | dependencies {
14 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
15 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
16 | implementation group: 'io.github.sharelison', name: 'jsontojava', version: '1.0.1'
17 | implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.83'
18 |
19 | }
20 |
21 | // See https://github.com/JetBrains/gradle-intellij-plugin/
22 | intellij {
23 | version = '2021.2'
24 | }
25 | patchPluginXml {
26 | changeNotes = """
27 | Add change notes here.
28 | most HTML tags may be used"""
29 | }
30 | test {
31 | useJUnitPlatform()
32 | }
--------------------------------------------------------------------------------
/PSI程序结构接口/APIDocPlugin/src/main/java/org/example/dto/ApiRequestParamDTO.java:
--------------------------------------------------------------------------------
1 | package org.example.dto;
2 |
3 | public class ApiRequestParamDTO {
4 |
5 | /**
6 | * 参数名字
7 | */
8 | private String name = "";
9 |
10 | /**
11 | * 参数类型
12 | */
13 | private String type = "";
14 |
15 | /**
16 | * 参数注释
17 | */
18 | private String desc = "";
19 |
20 |
21 | public String getName() {
22 | return name;
23 | }
24 |
25 | public void setName(String name) {
26 | this.name = name;
27 | }
28 |
29 | public String getType() {
30 | return type;
31 | }
32 |
33 | public void setType(String type) {
34 | this.type = type;
35 | }
36 |
37 | public String getDesc() {
38 | return desc;
39 | }
40 |
41 | public void setDesc(String desc) {
42 | this.desc = desc;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/src/main/java/org/example/listener/InitTranslatorWindowListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.openapi.project.Project;
4 | import com.intellij.openapi.wm.ex.ToolWindowManagerListener;
5 | import org.example.extension.TranslatorCache;
6 | import org.example.extension.TranslatorToolsWindow;
7 | import org.jetbrains.annotations.NotNull;
8 |
9 | public class InitTranslatorWindowListener implements ToolWindowManagerListener {
10 |
11 | private final Project project;
12 |
13 | public InitTranslatorWindowListener(Project project) {
14 | this.project = project;
15 | }
16 |
17 | @Override
18 | public void toolWindowRegistered(@NotNull String id) {
19 | if (!id.equals("Translator")) {
20 | return;
21 | }
22 | TranslatorCache.getInstance(project).transCache.forEach(TranslatorToolsWindow::addNote);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/java/org/example/listener/InitTranslatorWindowListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.openapi.project.Project;
4 | import com.intellij.openapi.wm.ex.ToolWindowManagerListener;
5 | import org.example.extension.TranslatorCache;
6 | import org.example.extension.TranslatorToolsWindow;
7 | import org.jetbrains.annotations.NotNull;
8 |
9 | public class InitTranslatorWindowListener implements ToolWindowManagerListener {
10 |
11 | private final Project project;
12 |
13 | public InitTranslatorWindowListener(Project project) {
14 | this.project = project;
15 | }
16 |
17 | @Override
18 | public void toolWindowRegistered(@NotNull String id) {
19 | if (!id.equals("Translator")) {
20 | return;
21 | }
22 | TranslatorCache.getInstance(project).transCache.forEach(TranslatorToolsWindow::addNote);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/TextEditorDemo/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.TextEditorDemo
3 | Plugin display name here
4 | YourCompany
5 |
6 |
8 | most HTML tags may be used
9 | ]]>
10 |
11 | com.intellij.modules.platform
12 |
13 |
14 |
15 |
16 |
17 |
18 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/java/org/example/listener/InitTranslatorWindowListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.openapi.project.Project;
4 | import com.intellij.openapi.wm.ex.ToolWindowManagerListener;
5 | import org.example.extension.TranslatorCache;
6 | import org.example.extension.TranslatorToolsWindow;
7 | import org.jetbrains.annotations.NotNull;
8 |
9 |
10 | public class InitTranslatorWindowListener implements ToolWindowManagerListener {
11 |
12 | private final Project project;
13 |
14 | public InitTranslatorWindowListener(Project project) {
15 | this.project = project;
16 | }
17 |
18 | @Override
19 | public void toolWindowRegistered(@NotNull String id) {
20 | if (!id.equals("Translator")) {
21 | return;
22 | }
23 | TranslatorCache.getInstance(project).transCache.forEach(TranslatorToolsWindow::addNote);
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/PSI程序结构接口/demo/src/main/java/com/example/demo/cotroller/HelloWorldController.java:
--------------------------------------------------------------------------------
1 | package com.example.demo.cotroller;
2 |
3 | import com.example.demo.dto.User;
4 | import com.example.demo.dto.Order;
5 | import org.springframework.web.bind.annotation.*;
6 |
7 | @RequestMapping(value = "/demo/test/gen_doc")
8 | public class HelloWorldController {
9 |
10 | /**
11 | * hello 接口
12 | *
13 | * @param user
14 | * @return
15 | */
16 | @GetMapping(value = "/test_get")
17 | public String helloWorld(@RequestParam User user) {
18 | return getHelloWorld();
19 | }
20 |
21 | /**
22 | * hello 接口
23 | *
24 | * @param user
25 | * @return
26 | */
27 | @PostMapping(value = "/test_post")
28 | public Order testPost(@RequestBody User user) {
29 | return new Order();
30 | }
31 |
32 | private String getHelloWorld() {
33 | return "Hello World";
34 | }
35 | }
--------------------------------------------------------------------------------
/虚拟文件与文本编辑/JsonToJava/src/main/java/org/example/listener/ProjectInitListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.openapi.actionSystem.IdeActions;
4 | import com.intellij.openapi.editor.actionSystem.EditorActionManager;
5 | import com.intellij.openapi.project.Project;
6 | import com.intellij.openapi.project.ProjectManagerListener;
7 | import com.intellij.openapi.vfs.LocalFileSystem;
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class ProjectInitListener implements ProjectManagerListener {
11 | @Override
12 | public void projectOpened(@NotNull Project project) {
13 | // 虚拟文件监听器临时注释,防止于编辑器监听器冲突
14 | //LocalFileSystem.getInstance().addVirtualFileListener(new VirtualFileListenerImpl());
15 | EditorActionManager actionManager = EditorActionManager.getInstance();
16 | actionManager.setActionHandler(IdeActions.ACTION_EDITOR_PASTE, new EditorPasteListener());
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/PSI程序结构接口/APIDocPlugin/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.APIDocPlugin
3 | Plugin display name here
4 | YourCompany
5 |
6 |
8 | most HTML tags may be used
9 | ]]>
10 |
11 |
12 | com.intellij.modules.platform
13 | com.intellij.modules.java
14 |
15 |
16 |
17 |
18 |
19 |
20 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/feature/CURLCommandInsertHandler.java:
--------------------------------------------------------------------------------
1 | package org.example.language.feature;
2 |
3 | import com.intellij.codeInsight.completion.InsertHandler;
4 | import com.intellij.codeInsight.completion.InsertionContext;
5 | import com.intellij.codeInsight.lookup.LookupElement;
6 | import com.intellij.psi.PsiElement;
7 | import org.jetbrains.annotations.NotNull;
8 |
9 | public class CURLCommandInsertHandler implements InsertHandler {
10 |
11 | @Override
12 | public void handleInsert(@NotNull InsertionContext context, @NotNull LookupElement item) {
13 | PsiElement element = context.getFile().findElementAt(context.getStartOffset());
14 | context.getDocument().replaceString(element.getTextOffset(), context.getTailOffset(), item.getLookupString());
15 | context.getEditor().getCaretModel().moveToOffset(context.getStartOffset() + context.getTailOffset() + 1);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/HTTPFileType.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.openapi.fileTypes.LanguageFileType;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.jetbrains.annotations.Nullable;
6 |
7 | import javax.swing.*;
8 |
9 | public class HTTPFileType extends LanguageFileType {
10 |
11 | public static final HTTPFileType INSTANCE = new HTTPFileType();
12 |
13 | public HTTPFileType() {
14 | super(HTTPLanguage.INSTANCE);
15 | }
16 |
17 | @Override
18 | public @NotNull String getName() {
19 | return "HTTP";
20 | }
21 |
22 | @Override
23 | public @NotNull String getDescription() {
24 | return "HTTP language file";
25 | }
26 |
27 | @Override
28 | public @NotNull String getDefaultExtension() {
29 | return "http";
30 | }
31 |
32 | @Override
33 | public @Nullable Icon getIcon() {
34 | return HTTPIcons.FILE;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/HTTPFileType.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.openapi.fileTypes.LanguageFileType;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.jetbrains.annotations.Nullable;
6 |
7 | import javax.swing.*;
8 |
9 | public class HTTPFileType extends LanguageFileType {
10 |
11 | public static final HTTPFileType INSTANCE = new HTTPFileType();
12 |
13 | public HTTPFileType() {
14 | super(HTTPLanguage.INSTANCE);
15 | }
16 |
17 | @Override
18 | public @NotNull String getName() {
19 | return "HTTP";
20 | }
21 |
22 | @Override
23 | public @NotNull String getDescription() {
24 | return "HTTP language file";
25 | }
26 |
27 | @Override
28 | public @NotNull String getDefaultExtension() {
29 | return "http";
30 | }
31 |
32 | @Override
33 | public @Nullable Icon getIcon() {
34 | return HTTPIcons.FILE;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/HTTPFileType.java:
--------------------------------------------------------------------------------
1 | package org.example.language;
2 |
3 | import com.intellij.openapi.fileTypes.LanguageFileType;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.jetbrains.annotations.Nullable;
6 |
7 | import javax.swing.*;
8 |
9 | public class HTTPFileType extends LanguageFileType {
10 |
11 | public static final HTTPFileType INSTANCE = new HTTPFileType();
12 |
13 | public HTTPFileType() {
14 | super(HTTPLanguage.INSTANCE);
15 | }
16 |
17 | @Override
18 | public @NotNull String getName() {
19 | return "HTTP";
20 | }
21 |
22 | @Override
23 | public @NotNull String getDescription() {
24 | return "HTTP language file";
25 | }
26 |
27 | @Override
28 | public @NotNull String getDefaultExtension() {
29 | return "http";
30 | }
31 |
32 | @Override
33 | public @Nullable Icon getIcon() {
34 | return HTTPIcons.FILE;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/主题插件开发流程/ThemeDemo/src/main/resources/icons/build.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.PluginI18N
3 | Plugin display name here
4 | YourCompany
5 |
6 |
8 | most HTML tags may be used
9 | ]]>
10 |
11 |
13 | com.intellij.modules.platform
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/监听器/Translator/src/main/java/org/example/listener/InitTranslatorWindowListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.openapi.project.Project;
4 | import com.intellij.openapi.wm.ex.ToolWindowManagerListener;
5 | import org.example.extension.TranslatorCache;
6 | import org.example.extension.TranslatorToolsWindow;
7 | import org.jetbrains.annotations.NotNull;
8 |
9 | public class InitTranslatorWindowListener implements ToolWindowManagerListener {
10 |
11 | private final Project project;
12 |
13 | public InitTranslatorWindowListener(Project project) {
14 | this.project = project;
15 | }
16 |
17 | // 打开插件的窗口时,加载缓存的翻译结果到表格中,这里每次打开一次翻译窗口就会加载一次,大家可以思考一下,如何解决(例如内存中维护一个静态变量记录一下)。
18 | @Override
19 | public void toolWindowShown(@NotNull ToolWindow toolWindow) {
20 | if (!toolWindow.getId().equals("Translator")) {
21 | return;
22 | }
23 | TranslatorCache.getInstance(project).transCache.forEach(TranslatorToolsWindow::addNote);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Notifications/src/main/java/org/example/action/DialogNotification.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.openapi.actionSystem.AnAction;
4 | import com.intellij.openapi.actionSystem.AnActionEvent;
5 | import com.intellij.openapi.project.Project;
6 | import com.intellij.openapi.ui.DialogWrapper;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 |
10 | import javax.swing.*;
11 |
12 | public class DialogNotification extends AnAction {
13 |
14 | @Override
15 | public void actionPerformed(@NotNull AnActionEvent e) {
16 | new MyDialog(e.getProject()).show();
17 | }
18 |
19 | static class MyDialog extends DialogWrapper {
20 |
21 | protected MyDialog(@Nullable Project project) {
22 | super(project);
23 | init();
24 | }
25 |
26 | @Override
27 | protected @Nullable JComponent createCenterPanel() {
28 | return new JLabel("对话框提示");
29 | }
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/监听器/Translator/src/main/java/org/example/extension/TranslatorSetting.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.application.ApplicationManager;
4 | import com.intellij.openapi.components.*;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 |
8 | @State(name = "translator", storages = {@Storage(value = "translator.xml")})
9 | public class TranslatorSetting implements PersistentStateComponent {
10 |
11 | public String appID;
12 |
13 | public String securityKey;
14 |
15 | public static TranslatorSetting getInstance() {
16 | return ApplicationManager.getApplication().getService(TranslatorSetting.class);
17 | }
18 |
19 | @Override
20 | public @Nullable TranslatorSetting getState() {
21 | return this;
22 | }
23 |
24 | @Override
25 | public void loadState(@NotNull TranslatorSetting state) {
26 | this.appID = state.appID;
27 | this.securityKey = state.securityKey;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/src/main/java/org/example/extension/TranslatorSetting.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.application.ApplicationManager;
4 | import com.intellij.openapi.components.*;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 |
8 | @State(name = "translator", storages = {@Storage(value = "translator.xml")})
9 | public class TranslatorSetting implements PersistentStateComponent {
10 |
11 | public String appID;
12 |
13 | public String securityKey;
14 |
15 | public static TranslatorSetting getInstance() {
16 | return ApplicationManager.getApplication().getService(TranslatorSetting.class);
17 | }
18 |
19 | @Override
20 | public @Nullable TranslatorSetting getState() {
21 | return this;
22 | }
23 |
24 | @Override
25 | public void loadState(@NotNull TranslatorSetting state) {
26 | this.appID = state.appID;
27 | this.securityKey = state.securityKey;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/java/org/example/extension/TranslatorSetting.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.application.ApplicationManager;
4 | import com.intellij.openapi.components.*;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 |
8 | @State(name = "translator", storages = {@Storage(value = "translator.xml")})
9 | public class TranslatorSetting implements PersistentStateComponent {
10 |
11 | public String appID;
12 |
13 | public String securityKey;
14 |
15 | public static TranslatorSetting getInstance() {
16 | return ApplicationManager.getApplication().getService(TranslatorSetting.class);
17 | }
18 |
19 | @Override
20 | public @Nullable TranslatorSetting getState() {
21 | return this;
22 | }
23 |
24 | @Override
25 | public void loadState(@NotNull TranslatorSetting state) {
26 | this.appID = state.appID;
27 | this.securityKey = state.securityKey;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/PluginI18N/src/main/java/org/example/action/NotifyAction.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.actionSystem.AnAction;
7 | import com.intellij.openapi.actionSystem.AnActionEvent;
8 | import org.example.config.PluginConfig;
9 | import org.jetbrains.annotations.NotNull;
10 |
11 | import java.util.Locale;
12 | import java.util.ResourceBundle;
13 |
14 | public class NotifyAction extends AnAction {
15 |
16 | @Override
17 | public void actionPerformed(@NotNull AnActionEvent e) {
18 | Notifications.Bus.notify(new Notification("Print", getLocalMessage(PluginConfig.langConfig, "translate"), NotificationType.INFORMATION));
19 | }
20 |
21 | public static String getLocalMessage(String langCode, String key) {
22 | return ResourceBundle.getBundle("i18n.plugin", Locale.forLanguageTag("zh")).getString(key);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/数据持久化/Translator/src/main/java/org/example/extension/TranslatorSetting.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.application.ApplicationManager;
4 | import com.intellij.openapi.components.*;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 |
8 | @State(name = "translator", storages = {@Storage(value = "translator.xml")})
9 | public class TranslatorSetting implements PersistentStateComponent {
10 |
11 | public String appID;
12 |
13 | public String securityKey;
14 |
15 | public static TranslatorSetting getInstance() {
16 | return ApplicationManager.getApplication().getService(TranslatorSetting.class);
17 | }
18 |
19 | @Override
20 | public @Nullable TranslatorSetting getState() {
21 | return this;
22 | }
23 |
24 | @Override
25 | public void loadState(@NotNull TranslatorSetting state) {
26 | this.appID = state.appID;
27 | this.securityKey = state.securityKey;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/java/org/example/extension/TranslatorSetting.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.application.ApplicationManager;
4 | import com.intellij.openapi.components.*;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 |
8 | @State(name = "translator", storages = {@Storage(value = "translator.xml")})
9 | public class TranslatorSetting implements PersistentStateComponent {
10 |
11 | public String appID;
12 |
13 | public String securityKey;
14 |
15 | public static TranslatorSetting getInstance() {
16 | return ApplicationManager.getApplication().getService(TranslatorSetting.class);
17 | }
18 |
19 | @Override
20 | public @Nullable TranslatorSetting getState() {
21 | return this;
22 | }
23 |
24 | @Override
25 | public void loadState(@NotNull TranslatorSetting state) {
26 | this.appID = state.appID;
27 | this.securityKey = state.securityKey;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLKvImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLKvImpl extends ASTWrapperPsiElement implements CURLKv {
15 |
16 | public CURLKvImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitKv(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLKvImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLKvImpl extends ASTWrapperPsiElement implements CURLKv {
15 |
16 | public CURLKvImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitKv(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLKvImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLKvImpl extends ASTWrapperPsiElement implements CURLKv {
15 |
16 | public CURLKvImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitKv(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLKvImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLKvImpl extends ASTWrapperPsiElement implements CURLKv {
15 |
16 | public CURLKvImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitKv(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.HTTPRequester
3 | HTTP Requester
4 |
5 |
6 | com.intellij.modules.platform
7 |
8 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption1Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption1Impl extends ASTWrapperPsiElement implements CURLOption1 {
15 |
16 | public CURLOption1Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption1(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption2Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption2Impl extends ASTWrapperPsiElement implements CURLOption2 {
15 |
16 | public CURLOption2Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption2(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption3Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption3Impl extends ASTWrapperPsiElement implements CURLOption3 {
15 |
16 | public CURLOption3Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption3(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption4Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption4Impl extends ASTWrapperPsiElement implements CURLOption4 {
15 |
16 | public CURLOption4Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption4(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption5Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption5Impl extends ASTWrapperPsiElement implements CURLOption5 {
15 |
16 | public CURLOption5Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption5(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption6Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption6Impl extends ASTWrapperPsiElement implements CURLOption6 {
15 |
16 | public CURLOption6Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption6(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption7Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption7Impl extends ASTWrapperPsiElement implements CURLOption7 {
15 |
16 | public CURLOption7Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption7(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption1Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption1Impl extends ASTWrapperPsiElement implements CURLOption1 {
15 |
16 | public CURLOption1Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption1(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption2Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption2Impl extends ASTWrapperPsiElement implements CURLOption2 {
15 |
16 | public CURLOption2Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption2(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption3Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption3Impl extends ASTWrapperPsiElement implements CURLOption3 {
15 |
16 | public CURLOption3Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption3(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption4Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption4Impl extends ASTWrapperPsiElement implements CURLOption4 {
15 |
16 | public CURLOption4Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption4(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption5Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption5Impl extends ASTWrapperPsiElement implements CURLOption5 {
15 |
16 | public CURLOption5Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption5(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption6Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption6Impl extends ASTWrapperPsiElement implements CURLOption6 {
15 |
16 | public CURLOption6Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption6(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption7Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption7Impl extends ASTWrapperPsiElement implements CURLOption7 {
15 |
16 | public CURLOption7Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption7(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption1Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption1Impl extends ASTWrapperPsiElement implements CURLOption1 {
15 |
16 | public CURLOption1Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption1(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption2Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption2Impl extends ASTWrapperPsiElement implements CURLOption2 {
15 |
16 | public CURLOption2Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption2(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption3Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption3Impl extends ASTWrapperPsiElement implements CURLOption3 {
15 |
16 | public CURLOption3Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption3(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption4Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption4Impl extends ASTWrapperPsiElement implements CURLOption4 {
15 |
16 | public CURLOption4Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption4(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption5Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption5Impl extends ASTWrapperPsiElement implements CURLOption5 {
15 |
16 | public CURLOption5Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption5(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption6Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption6Impl extends ASTWrapperPsiElement implements CURLOption6 {
15 |
16 | public CURLOption6Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption6(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption7Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption7Impl extends ASTWrapperPsiElement implements CURLOption7 {
15 |
16 | public CURLOption7Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption7(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption1Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption1Impl extends ASTWrapperPsiElement implements CURLOption1 {
15 |
16 | public CURLOption1Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption1(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption2Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption2Impl extends ASTWrapperPsiElement implements CURLOption2 {
15 |
16 | public CURLOption2Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption2(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption3Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption3Impl extends ASTWrapperPsiElement implements CURLOption3 {
15 |
16 | public CURLOption3Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption3(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption4Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption4Impl extends ASTWrapperPsiElement implements CURLOption4 {
15 |
16 | public CURLOption4Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption4(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption5Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption5Impl extends ASTWrapperPsiElement implements CURLOption5 {
15 |
16 | public CURLOption5Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption5(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption6Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption6Impl extends ASTWrapperPsiElement implements CURLOption6 {
15 |
16 | public CURLOption6Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption6(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption7Impl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption7Impl extends ASTWrapperPsiElement implements CURLOption7 {
15 |
16 | public CURLOption7Impl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption7(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/插件国际化与其他小技巧介绍/ConsoleViewDemo/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.ConsoleViewDemo
3 | Plugin display name here
4 | YourCompany
5 |
6 |
8 | most HTML tags may be used
9 | ]]>
10 |
11 |
13 | com.intellij.modules.platform
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/丰富的拓展点/Translator/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.Translator
3 | Translator
4 |
5 |
6 | Translator
8 |
这是一个翻译插件,翻译插件基于百度翻译API,提供了在IDE中翻译的能力
9 | ]]>
10 |
11 | com.intellij.modules.platform
12 |
13 |
14 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/PSI程序结构接口/PsiDemo/src/main/java/org/example/action/GetLocalVariableMethod.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.actionSystem.AnAction;
7 | import com.intellij.openapi.actionSystem.AnActionEvent;
8 | import com.intellij.openapi.actionSystem.CommonDataKeys;
9 | import com.intellij.psi.PsiElement;
10 | import com.intellij.psi.PsiMethod;
11 | import com.intellij.psi.util.PsiTreeUtil;
12 | import org.jetbrains.annotations.NotNull;
13 |
14 | public class GetLocalVariableMethod extends AnAction {
15 |
16 | @Override
17 | public void actionPerformed(@NotNull AnActionEvent e) {
18 | PsiElement psiElement = e.getData(CommonDataKeys.PSI_ELEMENT);
19 | PsiElement parent = PsiTreeUtil.getParentOfType(psiElement, PsiMethod.class);;
20 | if (parent != null) {
21 | Notifications.Bus.notify(new Notification("Print", "PSIDemo", ((PsiMethod) parent).getName(), NotificationType.INFORMATION), e.getProject());
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/PSI程序结构接口/APIDocPlugin/src/main/java/org/example/dto/ApiBodyDTO.java:
--------------------------------------------------------------------------------
1 | package org.example.dto;
2 |
3 | import java.util.List;
4 |
5 | public class ApiBodyDTO {
6 |
7 | private List bodyDto;
8 |
9 | /**
10 | * 参数名字
11 | */
12 | private String name = "";
13 |
14 | /**
15 | * 参数类型
16 | */
17 | private String type = "";
18 |
19 | /**
20 | * 参数注释
21 | */
22 | private String desc = "";
23 |
24 | public List getBodyDto() {
25 | return bodyDto;
26 | }
27 |
28 | public void setBodyDto(List bodyDto) {
29 | this.bodyDto = bodyDto;
30 | }
31 |
32 | public String getName() {
33 | return name;
34 | }
35 |
36 | public void setName(String name) {
37 | this.name = name;
38 | }
39 |
40 | public String getType() {
41 | return type;
42 | }
43 |
44 | public void setType(String type) {
45 | this.type = type;
46 | }
47 |
48 | public String getDesc() {
49 | return desc;
50 | }
51 |
52 | public void setDesc(String desc) {
53 | this.desc = desc;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/搭建插件项目/HelloWorldPlugin2/src/main/org/example/action/HelloWorldAction.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.actionSystem.AnAction;
7 | import com.intellij.openapi.actionSystem.AnActionEvent;
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class HelloWorldAction extends AnAction {
11 |
12 | @Override
13 | public void actionPerformed(@NotNull AnActionEvent e) {
14 | /**
15 | * Notifications.Bus.notify 是IDE中发送通知提醒的一个API,我们熟悉它即可。
16 | * Notification中有几个核心字段,该构造方法中:
17 | * 第一个参数是通知消息的分组
18 | * 第二个参数是通知框的标题,第三个参数是通知框的内容。
19 | * 第四个参数是通知信息级别,主要的有Info,Waring,Error 3个级别。
20 | *
21 | * e.getProject() 是一个获取到当前IDE所打开项目在代码中的对象抽象表示的API。
22 | * 本处表示在我们当前IDE中所打开的项目进行提示,若我们同时打开多个IDE,其他IDE项目中不会收到改消息。
23 | */
24 | Notifications.Bus.notify(new Notification("Print", "我的第一个插件", "Hello, World, " + System.currentTimeMillis(), NotificationType.INFORMATION), e.getProject());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/搭建插件项目/HelloWorldPlugin/src/main/java/org/example/action/HelloWorldAction.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.actionSystem.AnAction;
7 | import com.intellij.openapi.actionSystem.AnActionEvent;
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class HelloWorldAction extends AnAction {
11 |
12 | @Override
13 | public void actionPerformed(@NotNull AnActionEvent e) {
14 | /**
15 | * Notifications.Bus.notify 是IDE中发送通知提醒的一个API,我们熟悉它即可。
16 | * Notification中有几个核心字段,该构造方法中:
17 | * 第一个参数是通知消息的分组
18 | * 第二个参数是通知框的标题,第三个参数是通知框的内容。
19 | * 第四个参数是通知信息级别,主要的有Info,Waring,Error 3个级别。
20 | *
21 | * e.getProject() 是一个获取到当前IDE所打开项目在代码中的对象抽象表示的API。
22 | * 本处表示在我们当前IDE中所打开的项目进行提示,若我们同时打开多个IDE,其他IDE项目中不会收到改消息。
23 | */
24 | Notifications.Bus.notify(new Notification("Print", "我的第一个插件", "Hello, World, " + System.currentTimeMillis(), NotificationType.INFORMATION), e.getProject());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/PSI程序结构接口/PsiDemo/src/main/java/org/example/action/PsiFileDemoAction.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.openapi.actionSystem.AnAction;
4 | import com.intellij.openapi.actionSystem.AnActionEvent;
5 | import com.intellij.openapi.actionSystem.CommonDataKeys;
6 | import com.intellij.psi.PsiElement;
7 | import com.intellij.psi.PsiFile;
8 | import com.intellij.psi.PsiJavaFile;
9 | import com.intellij.psi.PsiRecursiveElementWalkingVisitor;
10 | import org.jetbrains.annotations.NotNull;
11 |
12 | public class PsiFileDemoAction extends AnAction {
13 |
14 | @Override
15 | public void actionPerformed(@NotNull AnActionEvent e) {
16 | PsiFile psiFile = e.getData(CommonDataKeys.PSI_FILE);
17 | // 获取当前的文件类型
18 | String fileType = psiFile.getFileType().getName();
19 | System.out.println(fileType);
20 | PsiJavaFile javaFile = (PsiJavaFile) psiFile;
21 | javaFile.accept(new PsiRecursiveElementWalkingVisitor() {
22 | @Override
23 | public void visitElement(@NotNull PsiElement element) {
24 | System.out.println(element.getText());
25 | }
26 | });
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Notifications/src/main/java/org/example/action/TopLevelNotification.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationAction;
5 | import com.intellij.notification.NotificationType;
6 | import com.intellij.notification.Notifications;
7 | import com.intellij.openapi.actionSystem.AnAction;
8 | import com.intellij.openapi.actionSystem.AnActionEvent;
9 | import org.jetbrains.annotations.NotNull;
10 |
11 | public class TopLevelNotification extends AnAction {
12 |
13 | @Override
14 | public void actionPerformed(@NotNull AnActionEvent e) {
15 | Notification notification = new Notification("Print", "顶层通知标题", "顶层通知内容", NotificationType.INFORMATION);
16 | notification.addAction(new NotificationAction("点我") {
17 | @Override
18 | public void actionPerformed(@NotNull AnActionEvent e, @NotNull Notification notification) {
19 | Notifications.Bus.notify(new Notification("Print", "顶层通知标题", "套娃通知事件", NotificationType.INFORMATION), e.getProject());
20 | }
21 | });
22 | Notifications.Bus.notify(notification, e.getProject());
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/src/main/java/org/example/extension/TranslatorCache.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.components.PersistentStateComponent;
4 | import com.intellij.openapi.components.State;
5 | import com.intellij.openapi.components.Storage;
6 | import com.intellij.openapi.project.Project;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 |
10 | import java.util.LinkedHashMap;
11 | import java.util.Map;
12 |
13 | @State(name = "translator.cache", storages = {@Storage(value = "translator-cache.xml")})
14 | public class TranslatorCache implements PersistentStateComponent {
15 |
16 | public Map transCache = new LinkedHashMap<>();
17 |
18 | public static TranslatorCache getInstance(Project project) {
19 | return project.getService(TranslatorCache.class);
20 | }
21 |
22 | @Override
23 | public @Nullable TranslatorCache getState() {
24 | return this;
25 | }
26 |
27 | @Override
28 | public void loadState(@NotNull TranslatorCache state) {
29 | if (state.transCache == null) {
30 | return;
31 | }
32 | this.transCache = state.transCache;
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/java/org/example/extension/TranslatorCache.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.components.PersistentStateComponent;
4 | import com.intellij.openapi.components.State;
5 | import com.intellij.openapi.components.Storage;
6 | import com.intellij.openapi.project.Project;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 |
10 | import java.util.LinkedHashMap;
11 | import java.util.Map;
12 |
13 | @State(name = "translator.cache", storages = {@Storage(value = "translator-cache.xml")})
14 | public class TranslatorCache implements PersistentStateComponent {
15 |
16 | public Map transCache = new LinkedHashMap<>();
17 |
18 | public static TranslatorCache getInstance(Project project) {
19 | return project.getService(TranslatorCache.class);
20 | }
21 |
22 | @Override
23 | public @Nullable TranslatorCache getState() {
24 | return this;
25 | }
26 |
27 | @Override
28 | public void loadState(@NotNull TranslatorCache state) {
29 | if (state.transCache == null) {
30 | return;
31 | }
32 | this.transCache = state.transCache;
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/数据持久化/Translator/src/main/java/org/example/extension/TranslatorCache.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.components.PersistentStateComponent;
4 | import com.intellij.openapi.components.State;
5 | import com.intellij.openapi.components.Storage;
6 | import com.intellij.openapi.project.Project;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 |
10 | import java.util.LinkedHashMap;
11 | import java.util.Map;
12 |
13 | @State(name = "translator.cache", storages = {@Storage(value = "translator-cache.xml")})
14 | public class TranslatorCache implements PersistentStateComponent {
15 |
16 | public Map transCache = new LinkedHashMap<>();
17 |
18 | public static TranslatorCache getInstance(Project project) {
19 | return project.getService(TranslatorCache.class);
20 | }
21 |
22 | @Override
23 | public @Nullable TranslatorCache getState() {
24 | return this;
25 | }
26 |
27 | @Override
28 | public void loadState(@NotNull TranslatorCache state) {
29 | if (state.transCache == null) {
30 | return;
31 | }
32 | this.transCache = state.transCache;
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/监听器/Translator/src/main/java/org/example/extension/TranslatorCache.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.components.PersistentStateComponent;
4 | import com.intellij.openapi.components.State;
5 | import com.intellij.openapi.components.Storage;
6 | import com.intellij.openapi.project.Project;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 |
10 | import java.util.LinkedHashMap;
11 | import java.util.Map;
12 |
13 | @State(name = "translator.cache", storages = {@Storage(value = "translator-cache.xml")})
14 | public class TranslatorCache implements PersistentStateComponent {
15 |
16 | public Map transCache = new LinkedHashMap<>();
17 |
18 | public static TranslatorCache getInstance(Project project) {
19 | return project.getService(TranslatorCache.class);
20 | }
21 |
22 | @Override
23 | public @Nullable TranslatorCache getState() {
24 | return this;
25 | }
26 |
27 | @Override
28 | public void loadState(@NotNull TranslatorCache state) {
29 | if (state.transCache == null) {
30 | return;
31 | }
32 | this.transCache = state.transCache;
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/java/org/example/extension/TranslatorCache.java:
--------------------------------------------------------------------------------
1 | package org.example.extension;
2 |
3 | import com.intellij.openapi.components.PersistentStateComponent;
4 | import com.intellij.openapi.components.State;
5 | import com.intellij.openapi.components.Storage;
6 | import com.intellij.openapi.project.Project;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 |
10 | import java.util.LinkedHashMap;
11 | import java.util.Map;
12 |
13 | @State(name = "translator.cache", storages = {@Storage(value = "translator-cache.xml")})
14 | public class TranslatorCache implements PersistentStateComponent {
15 |
16 | public Map transCache = new LinkedHashMap<>();
17 |
18 | public static TranslatorCache getInstance(Project project) {
19 | return project.getService(TranslatorCache.class);
20 | }
21 |
22 | @Override
23 | public @Nullable TranslatorCache getState() {
24 | return this;
25 | }
26 |
27 | @Override
28 | public void loadState(@NotNull TranslatorCache state) {
29 | if (state.transCache == null) {
30 | return;
31 | }
32 | this.transCache = state.transCache;
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/监听器/Translator/src/main/java/org/example/listener/GlobalProblemListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.analysis.problemsView.Problem;
4 | import com.intellij.analysis.problemsView.ProblemsListener;
5 | import com.intellij.notification.Notification;
6 | import com.intellij.notification.NotificationType;
7 | import com.intellij.notification.Notifications;
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class GlobalProblemListener implements ProblemsListener {
11 |
12 | @Override
13 | public void problemAppeared(@NotNull Problem problem) {
14 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
15 | }
16 |
17 | @Override
18 | public void problemDisappeared(@NotNull Problem problem) {
19 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
20 | }
21 |
22 | @Override
23 | public void problemUpdated(@NotNull Problem problem) {
24 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Translator/src/main/java/org/example/listener/GlobalProblemListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.analysis.problemsView.Problem;
4 | import com.intellij.analysis.problemsView.ProblemsListener;
5 | import com.intellij.notification.Notification;
6 | import com.intellij.notification.NotificationType;
7 | import com.intellij.notification.Notifications;
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class GlobalProblemListener implements ProblemsListener {
11 |
12 | @Override
13 | public void problemAppeared(@NotNull Problem problem) {
14 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
15 | }
16 |
17 | @Override
18 | public void problemDisappeared(@NotNull Problem problem) {
19 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
20 | }
21 |
22 | @Override
23 | public void problemUpdated(@NotNull Problem problem) {
24 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/src/main/java/org/example/listener/GlobalProblemListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.analysis.problemsView.Problem;
4 | import com.intellij.analysis.problemsView.ProblemsListener;
5 | import com.intellij.notification.Notification;
6 | import com.intellij.notification.NotificationType;
7 | import com.intellij.notification.Notifications;
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class GlobalProblemListener implements ProblemsListener {
11 |
12 | @Override
13 | public void problemAppeared(@NotNull Problem problem) {
14 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
15 | }
16 |
17 | @Override
18 | public void problemDisappeared(@NotNull Problem problem) {
19 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
20 | }
21 |
22 | @Override
23 | public void problemUpdated(@NotNull Problem problem) {
24 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/插件UI下篇/Translator/src/main/java/org/example/listener/GlobalProblemListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import com.intellij.analysis.problemsView.Problem;
4 | import com.intellij.analysis.problemsView.ProblemsListener;
5 | import com.intellij.notification.Notification;
6 | import com.intellij.notification.NotificationType;
7 | import com.intellij.notification.Notifications;
8 | import org.jetbrains.annotations.NotNull;
9 |
10 | public class GlobalProblemListener implements ProblemsListener {
11 |
12 | @Override
13 | public void problemAppeared(@NotNull Problem problem) {
14 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
15 | }
16 |
17 | @Override
18 | public void problemDisappeared(@NotNull Problem problem) {
19 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
20 | }
21 |
22 | @Override
23 | public void problemUpdated(@NotNull Problem problem) {
24 | Notifications.Bus.notify(new Notification("Print", problem.getDescription(), NotificationType.ERROR), problem.getProvider().getProject());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption4StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption4StatementImpl extends ASTWrapperPsiElement implements CURLOption4Statement {
15 |
16 | public CURLOption4StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption4Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLOption4 getOption4() {
33 | return findNotNullChildByClass(CURLOption4.class);
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption4StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption4StatementImpl extends ASTWrapperPsiElement implements CURLOption4Statement {
15 |
16 | public CURLOption4StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption4Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLOption4 getOption4() {
33 | return findNotNullChildByClass(CURLOption4.class);
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption4StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption4StatementImpl extends ASTWrapperPsiElement implements CURLOption4Statement {
15 |
16 | public CURLOption4StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption4Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLOption4 getOption4() {
33 | return findNotNullChildByClass(CURLOption4.class);
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption4StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption4StatementImpl extends ASTWrapperPsiElement implements CURLOption4Statement {
15 |
16 | public CURLOption4StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption4Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLOption4 getOption4() {
33 | return findNotNullChildByClass(CURLOption4.class);
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/搭建插件项目/HelloWorldPlugin/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.HelloWorldPlugin
3 | HelloWorldPlugin
4 | org.example.HelloWorldPlugin
5 | // name标签中的内容就是我们的插件名字
6 | HelloWorldPlugin
7 | // 联系邮箱,网站,公司,这个标签也可以删除。关系不大
8 | Juejin
9 | // 插件描述信息
10 | HelloWord
12 | 这是我的第一个插件,名字叫做HelloWord。
13 | 让我们在知识的海洋中快乐的学习。
14 | 我要变强,我要变强 ,我要变强。
15 | ]]>
16 |
17 | 1.0.0
19 | 1. 搭建项目框架
20 | ]]>
21 |
22 |
23 | com.intellij.modules.platform
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/丰富的消息通知方式/Notifications/src/main/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.Notifications
3 | Notifications
4 |
5 |
6 | Notifications
8 |
IntelliJ 平台中关于消息通知的项目Demo
9 | ]]>
10 |
11 | com.intellij.modules.platform
12 |
13 |
14 |
15 |
16 |
17 |
18 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/插件UI上篇/Translator/src/main/java/org/example/listener/TranslatorButtonActionListener.java:
--------------------------------------------------------------------------------
1 | package org.example.listener;
2 |
3 | import org.example.ui.TranslatorWindow;
4 | import org.example.util.TranslatorUtils;
5 |
6 | import javax.swing.*;
7 | import java.awt.event.ActionEvent;
8 | import java.util.HashMap;
9 | import java.util.Map;
10 |
11 | public class TranslatorButtonActionListener extends AbstractAction {
12 |
13 | private final TranslatorWindow window;
14 |
15 | private final Map langMap;
16 |
17 | public TranslatorButtonActionListener(TranslatorWindow window) {
18 | this.window = window;
19 | langMap = new HashMap<>();
20 | langMap.put("中文", "zh");
21 | langMap.put("英文", "en");
22 | }
23 |
24 | @Override
25 | public void actionPerformed(ActionEvent e) {
26 | // 获取原语言文本、原语言、和目标翻译语言
27 | String originalText = window.getOriginalTextArea().getText();
28 | String fromLang = langMap.get((String) window.getComboBox1().getSelectedItem());
29 | String toLang = langMap.get((String) window.getComboBox2().getSelectedItem());
30 | // 翻译后,将文本设置到翻译结果文本输入框
31 | String result = TranslatorUtils.getTransResult(originalText, fromLang, toLang);
32 | window.getTranslateTextArea().setText(result);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/主题插件开发流程/ThemeDemo/src/main/resources/icons/run.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/丰富的拓展点/Translator/src/main/java/org/example/action/TranslatorAction.java:
--------------------------------------------------------------------------------
1 | package org.example.action;
2 |
3 | import com.intellij.notification.Notification;
4 | import com.intellij.notification.NotificationType;
5 | import com.intellij.notification.Notifications;
6 | import com.intellij.openapi.actionSystem.AnAction;
7 | import com.intellij.openapi.actionSystem.AnActionEvent;
8 | import com.intellij.openapi.actionSystem.CommonDataKeys;
9 | import com.intellij.openapi.editor.Editor;
10 | import org.example.util.TranslatorUtils;
11 | import org.jetbrains.annotations.NotNull;
12 |
13 | public class TranslatorAction extends AnAction {
14 |
15 | @Override
16 | public void actionPerformed(@NotNull AnActionEvent e) {
17 | Editor editor = e.getData(CommonDataKeys.EDITOR);
18 | if (TranslatorUtils.appid == null || TranslatorUtils.securityKey == null) {
19 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", "请先设置appID,securityKey", NotificationType.ERROR), e.getProject());
20 | return;
21 | }
22 | String text = editor.getSelectionModel().getSelectedText();
23 | String transResult = TranslatorUtils.getTransResult(text, "auto", "zh");
24 | Notifications.Bus.notify(new Notification("Print", "小天才翻译机", transResult, NotificationType.INFORMATION), e.getProject());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/搭建插件项目/HelloWorldPlugin2/resources/META-INF/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 | org.example.HelloWorldPlugin
3 | HelloWorldPlugin
4 | org.example.HelloWorldPlugin
5 | // name标签中的内容就是我们的插件名字
6 | HelloWorldPlugin
7 | // 联系邮箱,网站,公司,这个标签也可以删除。关系不大
8 | Juejin
9 | // 插件描述信息
10 | HelloWord
12 | 这是我的第一个插件,名字叫做HelloWord。
13 | 让我们在知识的海洋中快乐的学习。
14 | 我要变强,我要变强 ,我要变强。
15 | ]]>
16 |
17 | 1.0.0
19 | 1. 搭建项目框架
20 | ]]>
21 |
22 |
24 | com.intellij.modules.platform
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLCommandImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLCommandImpl extends ASTWrapperPsiElement implements CURLCommand {
15 |
16 | public CURLCommandImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitCommand(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public List getOptionsList() {
33 | return PsiTreeUtil.getChildrenOfTypeAsList(this, CURLOptions.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public PsiElement getUrl() {
39 | return findNotNullChildByType(URL);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption3StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption3StatementImpl extends ASTWrapperPsiElement implements CURLOption3Statement {
15 |
16 | public CURLOption3StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption3Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLKv getKv() {
33 | return findNotNullChildByClass(CURLKv.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public CURLOption3 getOption3() {
39 | return findNotNullChildByClass(CURLOption3.class);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption3StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption3StatementImpl extends ASTWrapperPsiElement implements CURLOption3Statement {
15 |
16 | public CURLOption3StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption3Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLKv getKv() {
33 | return findNotNullChildByClass(CURLKv.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public CURLOption3 getOption3() {
39 | return findNotNullChildByClass(CURLOption3.class);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption3StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption3StatementImpl extends ASTWrapperPsiElement implements CURLOption3Statement {
15 |
16 | public CURLOption3StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption3Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLKv getKv() {
33 | return findNotNullChildByClass(CURLKv.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public CURLOption3 getOption3() {
39 | return findNotNullChildByClass(CURLOption3.class);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/gen/org/example/language/psi/impl/CURLOption5StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption5StatementImpl extends ASTWrapperPsiElement implements CURLOption5Statement {
15 |
16 | public CURLOption5StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption5Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLOption5 getOption5() {
33 | return findNotNullChildByClass(CURLOption5.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public PsiElement getMethod() {
39 | return findNotNullChildByType(METHOD);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption3StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption3StatementImpl extends ASTWrapperPsiElement implements CURLOption3Statement {
15 |
16 | public CURLOption3StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption3Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLKv getKv() {
33 | return findNotNullChildByClass(CURLKv.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public CURLOption3 getOption3() {
39 | return findNotNullChildByClass(CURLOption3.class);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption5StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption5StatementImpl extends ASTWrapperPsiElement implements CURLOption5Statement {
15 |
16 | public CURLOption5StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption5Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLOption5 getOption5() {
33 | return findNotNullChildByClass(CURLOption5.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public PsiElement getMethod() {
39 | return findNotNullChildByType(METHOD);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/自定义语言3/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption5StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption5StatementImpl extends ASTWrapperPsiElement implements CURLOption5Statement {
15 |
16 | public CURLOption5StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption5Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLOption5 getOption5() {
33 | return findNotNullChildByClass(CURLOption5.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public PsiElement getMethod() {
39 | return findNotNullChildByType(METHOD);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/自定义语言4/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption5StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption5StatementImpl extends ASTWrapperPsiElement implements CURLOption5Statement {
15 |
16 | public CURLOption5StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption5Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLOption5 getOption5() {
33 | return findNotNullChildByClass(CURLOption5.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public PsiElement getMethod() {
39 | return findNotNullChildByType(METHOD);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/自定义语言2/HTTPRequester/src/main/java/org/example/language/psi/impl/CURLOption1StatementImpl.java:
--------------------------------------------------------------------------------
1 | // This is a generated file. Not intended for manual editing.
2 | package org.example.language.psi.impl;
3 |
4 | import java.util.List;
5 | import org.jetbrains.annotations.*;
6 | import com.intellij.lang.ASTNode;
7 | import com.intellij.psi.PsiElement;
8 | import com.intellij.psi.PsiElementVisitor;
9 | import com.intellij.psi.util.PsiTreeUtil;
10 | import static org.example.language.CURLTypes.*;
11 | import com.intellij.extapi.psi.ASTWrapperPsiElement;
12 | import org.example.language.psi.*;
13 |
14 | public class CURLOption1StatementImpl extends ASTWrapperPsiElement implements CURLOption1Statement {
15 |
16 | public CURLOption1StatementImpl(@NotNull ASTNode node) {
17 | super(node);
18 | }
19 |
20 | public void accept(@NotNull CURLVisitor visitor) {
21 | visitor.visitOption1Statement(this);
22 | }
23 |
24 | @Override
25 | public void accept(@NotNull PsiElementVisitor visitor) {
26 | if (visitor instanceof CURLVisitor) accept((CURLVisitor)visitor);
27 | else super.accept(visitor);
28 | }
29 |
30 | @Override
31 | @NotNull
32 | public CURLOption1 getOption1() {
33 | return findNotNullChildByClass(CURLOption1.class);
34 | }
35 |
36 | @Override
37 | @NotNull
38 | public PsiElement getQuotedString() {
39 | return findNotNullChildByType(QUOTED_STRING);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------