Showing preview only (3,317K chars total). Download the full file or copy to clipboard to get everything.
Repository: reasonml-editor/reasonml-idea-plugin
Branch: master
Commit: c3df8ada78a9
Files: 873
Total size: 3.0 MB
Directory structure:
gitextract_px5e5xvk/
├── .github/
│ ├── FUNDING.md
│ ├── FUNDING.yml
│ └── workflows/
│ ├── gradle.yml
│ └── website-deploy.yml
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── ISSUE_TEMPLATE.md
├── LICENSE
├── README.md
├── build.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ └── reason/
│ │ │ │ ├── FileHelper.java
│ │ │ │ ├── comp/
│ │ │ │ │ ├── CliType.java
│ │ │ │ │ ├── CompilerOutputAnalyzer.java
│ │ │ │ │ ├── CompilerOutputListener.java
│ │ │ │ │ ├── ORCompiler.java
│ │ │ │ │ ├── ORCompilerConfigManager.java
│ │ │ │ │ ├── ORCompilerManager.java
│ │ │ │ │ ├── ORCompilerOutputAnalyzer.java
│ │ │ │ │ ├── ORConstants.java
│ │ │ │ │ ├── ORPlatform.java
│ │ │ │ │ ├── ORResolvedCompiler.java
│ │ │ │ │ ├── ProcessFinishedListener.java
│ │ │ │ │ ├── bs/
│ │ │ │ │ │ ├── BsColoredProcessHandler.java
│ │ │ │ │ │ ├── BsCompiler.java
│ │ │ │ │ │ ├── BsConfig.java
│ │ │ │ │ │ ├── BsConfigReader.java
│ │ │ │ │ │ ├── BsFormatProcess.java
│ │ │ │ │ │ ├── BsLineProcessor.java
│ │ │ │ │ │ ├── BsNotification.java
│ │ │ │ │ │ ├── BsPlatform.java
│ │ │ │ │ │ ├── BsProcess.java
│ │ │ │ │ │ ├── BsResolvedCompiler.java
│ │ │ │ │ │ └── Ninja.java
│ │ │ │ │ ├── dune/
│ │ │ │ │ │ ├── DuneCompiler.java
│ │ │ │ │ │ ├── DuneOutputAnalyzer.java
│ │ │ │ │ │ ├── DunePlatform.java
│ │ │ │ │ │ └── DuneProcess.java
│ │ │ │ │ ├── esy/
│ │ │ │ │ │ ├── Esy.java
│ │ │ │ │ │ ├── EsyCompiler.java
│ │ │ │ │ │ ├── EsyConstants.java
│ │ │ │ │ │ ├── EsyNotification.java
│ │ │ │ │ │ ├── EsyPackageJson.java
│ │ │ │ │ │ ├── EsyPlatform.java
│ │ │ │ │ │ └── EsyProcess.java
│ │ │ │ │ ├── ocaml/
│ │ │ │ │ │ ├── OcamlFormatProcess.java
│ │ │ │ │ │ ├── OpamCommandLine.java
│ │ │ │ │ │ ├── OpamEnv.java
│ │ │ │ │ │ └── OpamProcess.java
│ │ │ │ │ └── rescript/
│ │ │ │ │ ├── ResCompiler.java
│ │ │ │ │ ├── ResConfigReader.java
│ │ │ │ │ ├── ResFormatProcess.java
│ │ │ │ │ ├── ResPlatform.java
│ │ │ │ │ ├── ResProcessHandler.java
│ │ │ │ │ ├── ResResolvedCompiler.java
│ │ │ │ │ └── RescriptOutputAnalyzer.java
│ │ │ │ ├── hints/
│ │ │ │ │ ├── InsightManager.java
│ │ │ │ │ ├── Rincewind.java
│ │ │ │ │ ├── RincewindDownloader.java
│ │ │ │ │ └── RincewindProcess.java
│ │ │ │ ├── ide/
│ │ │ │ │ ├── CompileOnSave.java
│ │ │ │ │ ├── EditorPosition.java
│ │ │ │ │ ├── IconProvider.java
│ │ │ │ │ ├── OREditorFactoryListener.java
│ │ │ │ │ ├── OREditorTracker.java
│ │ │ │ │ ├── ORFileDocumentListener.java
│ │ │ │ │ ├── ORFileUtils.java
│ │ │ │ │ ├── ORIcons.java
│ │ │ │ │ ├── ORPostStartupActivity.java
│ │ │ │ │ ├── ORVirtualFileListener.java
│ │ │ │ │ ├── actions/
│ │ │ │ │ │ ├── ConvertAction.java
│ │ │ │ │ │ └── TransformAction.java
│ │ │ │ │ ├── annotations/
│ │ │ │ │ │ ├── BsErrorAnnotator.java
│ │ │ │ │ │ ├── ErrorFileHighlighter.java
│ │ │ │ │ │ ├── ErrorsManager.java
│ │ │ │ │ │ ├── ORErrorAnnotator.java
│ │ │ │ │ │ ├── OutputInfo.java
│ │ │ │ │ │ └── ResErrorAnnotator.java
│ │ │ │ │ ├── comment/
│ │ │ │ │ │ ├── DuneCommenter.java
│ │ │ │ │ │ ├── MlyCommenter.java
│ │ │ │ │ │ ├── OclCommenter.java
│ │ │ │ │ │ └── RmlCommenter.java
│ │ │ │ │ ├── console/
│ │ │ │ │ │ ├── ClearLogAction.java
│ │ │ │ │ │ ├── CompilerAction.java
│ │ │ │ │ │ ├── ORConsoleFilter.java
│ │ │ │ │ │ ├── ORConsoleFilterProvider.java
│ │ │ │ │ │ ├── ORToolWindowFactory.java
│ │ │ │ │ │ ├── ORToolWindowManager.java
│ │ │ │ │ │ ├── bs/
│ │ │ │ │ │ │ ├── BsConsoleView.java
│ │ │ │ │ │ │ ├── BsMakeAction.java
│ │ │ │ │ │ │ ├── BsMakeWorldAction.java
│ │ │ │ │ │ │ └── BsToolWindowFactory.java
│ │ │ │ │ │ ├── dune/
│ │ │ │ │ │ │ ├── DuneBuildAction.java
│ │ │ │ │ │ │ ├── DuneCleanAction.java
│ │ │ │ │ │ │ ├── DuneConsoleView.java
│ │ │ │ │ │ │ ├── DuneToolWindowFactory.java
│ │ │ │ │ │ │ └── OCamlConsoleFilter.java
│ │ │ │ │ │ ├── esy/
│ │ │ │ │ │ │ ├── EsyBuildAction.java
│ │ │ │ │ │ │ ├── EsyConsoleView.java
│ │ │ │ │ │ │ └── EsyToolWindowFactory.java
│ │ │ │ │ │ └── rescript/
│ │ │ │ │ │ ├── RescriptBuildAction.java
│ │ │ │ │ │ ├── RescriptConsoleFilter.java
│ │ │ │ │ │ ├── RescriptConsoleView.java
│ │ │ │ │ │ ├── RescriptResetAction.java
│ │ │ │ │ │ └── RescriptToolWindowFactory.java
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ ├── OCamlApplicationConfiguration.java
│ │ │ │ │ │ ├── OCamlApplicationRunningState.java
│ │ │ │ │ │ ├── OCamlDebugRunner.java
│ │ │ │ │ │ ├── OCamlModuleBasedConfiguration.java
│ │ │ │ │ │ ├── ORLineBreakpointProperties.java
│ │ │ │ │ │ ├── ORLineBreakpointType.java
│ │ │ │ │ │ └── OclDebuggerRunnerSettings.java
│ │ │ │ │ ├── docs/
│ │ │ │ │ │ ├── DocFormatter.java
│ │ │ │ │ │ └── ORDocumentationProvider.java
│ │ │ │ │ ├── editors/
│ │ │ │ │ │ ├── CmtFileEditor.java
│ │ │ │ │ │ ├── CmtFileEditorProvider.java
│ │ │ │ │ │ └── CmtXmlComponent.java
│ │ │ │ │ ├── files/
│ │ │ │ │ │ ├── CmtFileType.java
│ │ │ │ │ │ ├── DuneFile.java
│ │ │ │ │ │ ├── DuneFileType.java
│ │ │ │ │ │ ├── FileBase.java
│ │ │ │ │ │ ├── Ml4File.java
│ │ │ │ │ │ ├── Ml4FileType.java
│ │ │ │ │ │ ├── MlgFile.java
│ │ │ │ │ │ ├── MlgFileType.java
│ │ │ │ │ │ ├── MlgFileViewProvider.java
│ │ │ │ │ │ ├── MlgFileViewProviderFactory.java
│ │ │ │ │ │ ├── MllFile.java
│ │ │ │ │ │ ├── MllFileType.java
│ │ │ │ │ │ ├── MllFileViewProvider.java
│ │ │ │ │ │ ├── MllFileViewProviderFactory.java
│ │ │ │ │ │ ├── MlyFile.java
│ │ │ │ │ │ ├── MlyFileType.java
│ │ │ │ │ │ ├── MlyFileViewProvider.java
│ │ │ │ │ │ ├── MlyFileViewProviderFactory.java
│ │ │ │ │ │ ├── ORConfigJsonFileType.java
│ │ │ │ │ │ ├── ORTargetElementEvaluator.java
│ │ │ │ │ │ ├── OclFile.java
│ │ │ │ │ │ ├── OclFileType.java
│ │ │ │ │ │ ├── OclInterfaceFile.java
│ │ │ │ │ │ ├── OclInterfaceFileType.java
│ │ │ │ │ │ ├── ResFile.java
│ │ │ │ │ │ ├── ResFileType.java
│ │ │ │ │ │ ├── ResInterfaceFile.java
│ │ │ │ │ │ ├── ResInterfaceFileType.java
│ │ │ │ │ │ ├── RmlFile.java
│ │ │ │ │ │ ├── RmlFileType.java
│ │ │ │ │ │ ├── RmlInterfaceFile.java
│ │ │ │ │ │ └── RmlInterfaceFileType.java
│ │ │ │ │ ├── folding/
│ │ │ │ │ │ ├── DuneFoldingBuilder.java
│ │ │ │ │ │ └── ORFoldingBuilder.java
│ │ │ │ │ ├── format/
│ │ │ │ │ │ ├── FormatterProcessor.java
│ │ │ │ │ │ ├── ORPostFormatProcessor.java
│ │ │ │ │ │ └── ReformatOnSave.java
│ │ │ │ │ ├── go/
│ │ │ │ │ │ ├── FileModuleDataModuleRendererFactory.java
│ │ │ │ │ │ ├── ORLineMarkerProvider.java
│ │ │ │ │ │ └── ORModuleContributor.java
│ │ │ │ │ ├── handlers/
│ │ │ │ │ │ ├── ORTypedHandler.java
│ │ │ │ │ │ ├── OclQuoteHandler.java
│ │ │ │ │ │ ├── ResQuoteHandler.java
│ │ │ │ │ │ └── RmlQuoteHandler.java
│ │ │ │ │ ├── highlight/
│ │ │ │ │ │ ├── DuneSyntaxAnnotator.java
│ │ │ │ │ │ ├── DuneSyntaxHighlighter.java
│ │ │ │ │ │ ├── DuneSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── ORSyntaxAnnotator.java
│ │ │ │ │ │ ├── ORSyntaxHighlighter.java
│ │ │ │ │ │ ├── OclGrammarEditorHighlighter.java
│ │ │ │ │ │ ├── OclGrammarSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── OclLexEditorHighlighter.java
│ │ │ │ │ │ ├── OclLexSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── OclSyntaxAnnotator.java
│ │ │ │ │ │ ├── OclSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── OclYaccEditorHighlighter.java
│ │ │ │ │ │ ├── OclYaccSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── ResSyntaxAnnotator.java
│ │ │ │ │ │ ├── ResSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── RmlSyntaxAnnotator.java
│ │ │ │ │ │ └── RmlSyntaxHighlighterFactory.java
│ │ │ │ │ ├── hints/
│ │ │ │ │ │ ├── CodeLens.java
│ │ │ │ │ │ ├── InferredTypes.java
│ │ │ │ │ │ ├── InferredTypesImplementation.java
│ │ │ │ │ │ ├── InferredTypesService.java
│ │ │ │ │ │ ├── OREditorLinePainter.java
│ │ │ │ │ │ ├── ORParameterInfoHandler.java
│ │ │ │ │ │ ├── OclParameterInfoHandler.java
│ │ │ │ │ │ ├── ResParameterInfoHandler.java
│ │ │ │ │ │ ├── RmlParameterInfoHandler.java
│ │ │ │ │ │ ├── RmlTypeProvider.java
│ │ │ │ │ │ └── SignatureProvider.java
│ │ │ │ │ ├── importWizard/
│ │ │ │ │ │ ├── DuneExternalConstants.java
│ │ │ │ │ │ ├── DuneProjectImportBuilder.java
│ │ │ │ │ │ ├── DuneProjectImportProvider.java
│ │ │ │ │ │ ├── DuneProjectOpenProcessor.java
│ │ │ │ │ │ ├── DuneProjectRootStep.form
│ │ │ │ │ │ ├── DuneProjectRootStep.java
│ │ │ │ │ │ └── ImportedDuneBuild.java
│ │ │ │ │ ├── insight/
│ │ │ │ │ │ ├── CompletionUtils.java
│ │ │ │ │ │ ├── KeywordCompletionContributor.java
│ │ │ │ │ │ ├── ORCompletionContributor.java
│ │ │ │ │ │ ├── OclCompletionContributor.java
│ │ │ │ │ │ ├── OclKeywordCompletionContributor.java
│ │ │ │ │ │ ├── ResCompletionContributor.java
│ │ │ │ │ │ ├── ResKeywordCompletionContributor.java
│ │ │ │ │ │ ├── RmlCompletionContributor.java
│ │ │ │ │ │ ├── RmlKeywordCompletionContributor.java
│ │ │ │ │ │ ├── pattern/
│ │ │ │ │ │ │ └── ORElementPatternMatcher.java
│ │ │ │ │ │ └── provider/
│ │ │ │ │ │ ├── DotExpressionCompletionProvider.java
│ │ │ │ │ │ ├── FreeExpressionCompletionProvider.java
│ │ │ │ │ │ ├── JsxAttributeCompletionProvider.java
│ │ │ │ │ │ ├── JsxNameCompletionProvider.java
│ │ │ │ │ │ ├── ModuleCompletionProvider.java
│ │ │ │ │ │ └── ObjectCompletionProvider.java
│ │ │ │ │ ├── intentions/
│ │ │ │ │ │ ├── ExpandLocalOpenIntention.java
│ │ │ │ │ │ └── FunctionBracesIntention.java
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── JsIconProvider.java
│ │ │ │ │ │ ├── JsInjector.java
│ │ │ │ │ │ ├── ORIndexableFileNamesProvider.java
│ │ │ │ │ │ └── ORJsLibraryManager.java
│ │ │ │ │ ├── library/
│ │ │ │ │ │ ├── OclLibraryKind.java
│ │ │ │ │ │ ├── OclLibraryRootProvider.java
│ │ │ │ │ │ ├── OclLibraryRootsComponentDescriptor.java
│ │ │ │ │ │ ├── OclLibraryType.java
│ │ │ │ │ │ └── OclSdkSetupValidator.java
│ │ │ │ │ ├── match/
│ │ │ │ │ │ ├── DunePairedBraceMatcher.java
│ │ │ │ │ │ ├── OclPairedBraceMatcher.java
│ │ │ │ │ │ ├── ResPairedBraceMatcher.java
│ │ │ │ │ │ └── RmlPairedBraceMatcher.java
│ │ │ │ │ ├── module/
│ │ │ │ │ │ ├── DuneModuleEditor.form
│ │ │ │ │ │ ├── DuneModuleEditor.java
│ │ │ │ │ │ └── DuneModuleEditorProvider.java
│ │ │ │ │ ├── refactor/
│ │ │ │ │ │ └── ORRefactoringSupportProvider.java
│ │ │ │ │ ├── repl/
│ │ │ │ │ │ ├── PromptConsole.java
│ │ │ │ │ │ ├── PromptConsoleView.java
│ │ │ │ │ │ ├── PromptHistory.java
│ │ │ │ │ │ ├── ReplConfigurationFactory.java
│ │ │ │ │ │ ├── ReplGenericState.java
│ │ │ │ │ │ ├── ReplRunConfiguration.java
│ │ │ │ │ │ ├── ReplRunConfigurationType.java
│ │ │ │ │ │ ├── ReplRunSettingsEditor.form
│ │ │ │ │ │ └── ReplRunSettingsEditor.java
│ │ │ │ │ ├── search/
│ │ │ │ │ │ ├── FileModuleData.java
│ │ │ │ │ │ ├── IndexedFileModule.java
│ │ │ │ │ │ ├── ModuleIndexService.java
│ │ │ │ │ │ ├── ORFindUsagesProvider.java
│ │ │ │ │ │ ├── ORImplementationSearch.java
│ │ │ │ │ │ ├── OclFindUsagesProvider.java
│ │ │ │ │ │ ├── PsiTypeElementProvider.java
│ │ │ │ │ │ ├── ResFindUsagesProvider.java
│ │ │ │ │ │ ├── RmlFindUsagesProvider.java
│ │ │ │ │ │ ├── index/
│ │ │ │ │ │ │ ├── ClassFqnIndex.java
│ │ │ │ │ │ │ ├── ClassMethodFqnIndex.java
│ │ │ │ │ │ │ ├── ExceptionFqnIndex.java
│ │ │ │ │ │ │ ├── ExceptionIndex.java
│ │ │ │ │ │ │ ├── ExternalFqnIndex.java
│ │ │ │ │ │ │ ├── ExternalIndex.java
│ │ │ │ │ │ │ ├── FileModuleIndex.java
│ │ │ │ │ │ │ ├── FileModuleIndexService.java
│ │ │ │ │ │ │ ├── IncludeIndex.java
│ │ │ │ │ │ │ ├── IndexKeys.java
│ │ │ │ │ │ │ ├── LetComponentFqnIndex.java
│ │ │ │ │ │ │ ├── LetFqnIndex.java
│ │ │ │ │ │ │ ├── ModuleFqnIndex.java
│ │ │ │ │ │ │ ├── ModuleIndex.java
│ │ │ │ │ │ │ ├── ModuleSignatureIndex.java
│ │ │ │ │ │ │ ├── NamespaceIndex.java
│ │ │ │ │ │ │ ├── ObjectFieldIndex.java
│ │ │ │ │ │ │ ├── OpenIndex.java
│ │ │ │ │ │ │ ├── ParameterFqnIndex.java
│ │ │ │ │ │ │ ├── ParameterIndex.java
│ │ │ │ │ │ │ ├── RecordFieldIndex.java
│ │ │ │ │ │ │ ├── TypeFqnIndex.java
│ │ │ │ │ │ │ ├── TypeIndex.java
│ │ │ │ │ │ │ ├── ValFqnIndex.java
│ │ │ │ │ │ │ └── VariantFqnIndex.java
│ │ │ │ │ │ └── reference/
│ │ │ │ │ │ ├── ORFakeResolvedElement.java
│ │ │ │ │ │ ├── ORModuleResolutionPsiGist.java
│ │ │ │ │ │ ├── ORMultiSymbolReference.java
│ │ │ │ │ │ ├── ORPsiLiteralStringReference.java
│ │ │ │ │ │ ├── ORPsiLowerSymbolReference.java
│ │ │ │ │ │ ├── ORPsiPropertyNameReference.java
│ │ │ │ │ │ ├── ORPsiUpperSymbolReference.java
│ │ │ │ │ │ └── ORReferenceAnalyzer.java
│ │ │ │ │ ├── settings/
│ │ │ │ │ │ ├── DuneColorSettingsPage.java
│ │ │ │ │ │ ├── ORColorSettingsPage.java
│ │ │ │ │ │ ├── ORSettings.java
│ │ │ │ │ │ ├── ORSettingsConfigurable.form
│ │ │ │ │ │ ├── ORSettingsConfigurable.java
│ │ │ │ │ │ ├── OpamConfigurationTab.form
│ │ │ │ │ │ └── OpamConfigurationTab.java
│ │ │ │ │ ├── spellcheckers/
│ │ │ │ │ │ ├── ORSpellCheckerStrategy.java
│ │ │ │ │ │ ├── OclSpellCheckerStrategy.java
│ │ │ │ │ │ ├── ResSpellCheckerStrategy.java
│ │ │ │ │ │ └── RmlSpellCheckerStrategy.java
│ │ │ │ │ ├── structure/
│ │ │ │ │ │ ├── NestedFunctionsFilter.java
│ │ │ │ │ │ ├── ORStructureViewModel.java
│ │ │ │ │ │ ├── ShowVariableFilter.java
│ │ │ │ │ │ ├── StructureViewElement.java
│ │ │ │ │ │ └── StructureViewFactory.java
│ │ │ │ │ ├── template/
│ │ │ │ │ │ ├── OCamlBaseLiveTemplateContextType.java
│ │ │ │ │ │ ├── OCamlCodeLiveTemplateContextType.java
│ │ │ │ │ │ ├── OCamlCommentLiveTemplateContextType.java
│ │ │ │ │ │ ├── ResBaseLiveTemplateContextType.java
│ │ │ │ │ │ └── RmlBaseLiveTemplateContextType.java
│ │ │ │ │ └── testAssistant/
│ │ │ │ │ ├── GotoTestDataAction.java
│ │ │ │ │ └── TestDataNavigationHandler.java
│ │ │ │ └── lang/
│ │ │ │ ├── CommonPsiParser.java
│ │ │ │ ├── Marker.java
│ │ │ │ ├── ModuleHelper.java
│ │ │ │ ├── ORLanguageParser.java
│ │ │ │ ├── ORLanguageProperties.java
│ │ │ │ ├── ORParser.java
│ │ │ │ ├── core/
│ │ │ │ │ ├── LiteralStringManipulator.java
│ │ │ │ │ ├── ORCodeFactory.java
│ │ │ │ │ ├── ORUtil.java
│ │ │ │ │ ├── psi/
│ │ │ │ │ │ ├── RPsiClass.java
│ │ │ │ │ │ ├── RPsiClassMethod.java
│ │ │ │ │ │ ├── RPsiConditional.java
│ │ │ │ │ │ ├── RPsiException.java
│ │ │ │ │ │ ├── RPsiExternal.java
│ │ │ │ │ │ ├── RPsiField.java
│ │ │ │ │ │ ├── RPsiFunctor.java
│ │ │ │ │ │ ├── RPsiInclude.java
│ │ │ │ │ │ ├── RPsiInferredType.java
│ │ │ │ │ │ ├── RPsiInnerModule.java
│ │ │ │ │ │ ├── RPsiLanguageConverter.java
│ │ │ │ │ │ ├── RPsiLet.java
│ │ │ │ │ │ ├── RPsiModule.java
│ │ │ │ │ │ ├── RPsiOCamlInjection.java
│ │ │ │ │ │ ├── RPsiOpen.java
│ │ │ │ │ │ ├── RPsiParameterDeclaration.java
│ │ │ │ │ │ ├── RPsiQualifiedPathElement.java
│ │ │ │ │ │ ├── RPsiRecordField.java
│ │ │ │ │ │ ├── RPsiSignature.java
│ │ │ │ │ │ ├── RPsiSignatureElement.java
│ │ │ │ │ │ ├── RPsiSignatureItem.java
│ │ │ │ │ │ ├── RPsiSignatureUtil.java
│ │ │ │ │ │ ├── RPsiStructuredElement.java
│ │ │ │ │ │ ├── RPsiType.java
│ │ │ │ │ │ ├── RPsiVal.java
│ │ │ │ │ │ ├── RPsiVar.java
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── ORASTFactory.java
│ │ │ │ │ │ │ ├── RPsiAnnotation.java
│ │ │ │ │ │ │ ├── RPsiArray.java
│ │ │ │ │ │ │ ├── RPsiAssert.java
│ │ │ │ │ │ │ ├── RPsiBinaryCondition.java
│ │ │ │ │ │ │ ├── RPsiClassConstructor.java
│ │ │ │ │ │ │ ├── RPsiClassField.java
│ │ │ │ │ │ │ ├── RPsiClassImpl.java
│ │ │ │ │ │ │ ├── RPsiClassInitializer.java
│ │ │ │ │ │ │ ├── RPsiClassMethodImpl.java
│ │ │ │ │ │ │ ├── RPsiConstraints.java
│ │ │ │ │ │ │ ├── RPsiDeconstruction.java
│ │ │ │ │ │ │ ├── RPsiDefaultValue.java
│ │ │ │ │ │ │ ├── RPsiDirective.java
│ │ │ │ │ │ │ ├── RPsiDuneField.java
│ │ │ │ │ │ │ ├── RPsiDuneFields.java
│ │ │ │ │ │ │ ├── RPsiDuneSExpr.java
│ │ │ │ │ │ │ ├── RPsiDuneStanza.java
│ │ │ │ │ │ │ ├── RPsiDuneVar.java
│ │ │ │ │ │ │ ├── RPsiExceptionImpl.java
│ │ │ │ │ │ │ ├── RPsiExternalImpl.java
│ │ │ │ │ │ │ ├── RPsiFieldValue.java
│ │ │ │ │ │ │ ├── RPsiFirstClass.java
│ │ │ │ │ │ │ ├── RPsiForLoop.java
│ │ │ │ │ │ │ ├── RPsiFunSwitch.java
│ │ │ │ │ │ │ ├── RPsiFunction.java
│ │ │ │ │ │ │ ├── RPsiFunctionBody.java
│ │ │ │ │ │ │ ├── RPsiFunctionCall.java
│ │ │ │ │ │ │ ├── RPsiFunctorBinding.java
│ │ │ │ │ │ │ ├── RPsiFunctorCall.java
│ │ │ │ │ │ │ ├── RPsiFunctorImpl.java
│ │ │ │ │ │ │ ├── RPsiFunctorResult.java
│ │ │ │ │ │ │ ├── RPsiGuard.java
│ │ │ │ │ │ │ ├── RPsiIfStatement.java
│ │ │ │ │ │ │ ├── RPsiIncludeImpl.java
│ │ │ │ │ │ │ ├── RPsiInherit.java
│ │ │ │ │ │ │ ├── RPsiInnerModuleImpl.java
│ │ │ │ │ │ │ ├── RPsiInterpolation.java
│ │ │ │ │ │ │ ├── RPsiInterpolationReference.java
│ │ │ │ │ │ │ ├── RPsiJsObject.java
│ │ │ │ │ │ │ ├── RPsiLeafPropertyName.java
│ │ │ │ │ │ │ ├── RPsiLetAttribute.java
│ │ │ │ │ │ │ ├── RPsiLetBinding.java
│ │ │ │ │ │ │ ├── RPsiLetImpl.java
│ │ │ │ │ │ │ ├── RPsiLiteralString.java
│ │ │ │ │ │ │ ├── RPsiLocalOpen.java
│ │ │ │ │ │ │ ├── RPsiLowerName.java
│ │ │ │ │ │ │ ├── RPsiLowerSymbol.java
│ │ │ │ │ │ │ ├── RPsiMacro.java
│ │ │ │ │ │ │ ├── RPsiMacroBody.java
│ │ │ │ │ │ │ ├── RPsiMacroName.java
│ │ │ │ │ │ │ ├── RPsiMethodCall.java
│ │ │ │ │ │ │ ├── RPsiMixinField.java
│ │ │ │ │ │ │ ├── RPsiModuleBinding.java
│ │ │ │ │ │ │ ├── RPsiModuleSignature.java
│ │ │ │ │ │ │ ├── RPsiMultiLineInterpolator.java
│ │ │ │ │ │ │ ├── RPsiObject.java
│ │ │ │ │ │ │ ├── RPsiObjectField.java
│ │ │ │ │ │ │ ├── RPsiOpenImpl.java
│ │ │ │ │ │ │ ├── RPsiOption.java
│ │ │ │ │ │ │ ├── RPsiOptionValue.java
│ │ │ │ │ │ │ ├── RPsiParameterDeclarationImpl.java
│ │ │ │ │ │ │ ├── RPsiParameterReference.java
│ │ │ │ │ │ │ ├── RPsiParameters.java
│ │ │ │ │ │ │ ├── RPsiPatternMatch.java
│ │ │ │ │ │ │ ├── RPsiPatternMatchBody.java
│ │ │ │ │ │ │ ├── RPsiPolyVariantConstraint.java
│ │ │ │ │ │ │ ├── RPsiRecord.java
│ │ │ │ │ │ │ ├── RPsiRecordFieldImpl.java
│ │ │ │ │ │ │ ├── RPsiScopedExpr.java
│ │ │ │ │ │ │ ├── RPsiSignatureImpl.java
│ │ │ │ │ │ │ ├── RPsiSignatureItemImpl.java
│ │ │ │ │ │ │ ├── RPsiStruct.java
│ │ │ │ │ │ │ ├── RPsiSwitch.java
│ │ │ │ │ │ │ ├── RPsiSwitchBody.java
│ │ │ │ │ │ │ ├── RPsiTag.java
│ │ │ │ │ │ │ ├── RPsiTagBody.java
│ │ │ │ │ │ │ ├── RPsiTagClose.java
│ │ │ │ │ │ │ ├── RPsiTagProperty.java
│ │ │ │ │ │ │ ├── RPsiTagPropertyValue.java
│ │ │ │ │ │ │ ├── RPsiTagStart.java
│ │ │ │ │ │ │ ├── RPsiTernary.java
│ │ │ │ │ │ │ ├── RPsiTokenStub.java
│ │ │ │ │ │ │ ├── RPsiTry.java
│ │ │ │ │ │ │ ├── RPsiTryBody.java
│ │ │ │ │ │ │ ├── RPsiTryHandler.java
│ │ │ │ │ │ │ ├── RPsiTryHandlerBody.java
│ │ │ │ │ │ │ ├── RPsiTuple.java
│ │ │ │ │ │ │ ├── RPsiTypeBinding.java
│ │ │ │ │ │ │ ├── RPsiTypeConstraint.java
│ │ │ │ │ │ │ ├── RPsiTypeImpl.java
│ │ │ │ │ │ │ ├── RPsiUnit.java
│ │ │ │ │ │ │ ├── RPsiUnpack.java
│ │ │ │ │ │ │ ├── RPsiUpperSymbol.java
│ │ │ │ │ │ │ ├── RPsiUpperTagName.java
│ │ │ │ │ │ │ ├── RPsiValImpl.java
│ │ │ │ │ │ │ ├── RPsiVariantDeclaration.java
│ │ │ │ │ │ │ └── RPsiWhile.java
│ │ │ │ │ │ ├── ocamlgrammar/
│ │ │ │ │ │ │ ├── RPsiGrammarArgument.java
│ │ │ │ │ │ │ ├── RPsiGrammarGrammar.java
│ │ │ │ │ │ │ ├── RPsiGrammarTactic.java
│ │ │ │ │ │ │ └── RPsiGrammarVernac.java
│ │ │ │ │ │ ├── ocamllex/
│ │ │ │ │ │ │ ├── RPsiLexLet.java
│ │ │ │ │ │ │ ├── RPsiLexPattern.java
│ │ │ │ │ │ │ └── RPsiLexRule.java
│ │ │ │ │ │ └── ocamlyacc/
│ │ │ │ │ │ ├── RPsiYaccDeclaration.java
│ │ │ │ │ │ ├── RPsiYaccHeader.java
│ │ │ │ │ │ ├── RPsiYaccRule.java
│ │ │ │ │ │ └── RPsiYaccRuleBody.java
│ │ │ │ │ ├── stub/
│ │ │ │ │ │ ├── OclFileStub.java
│ │ │ │ │ │ ├── OclStubBasedElementTypes.java
│ │ │ │ │ │ ├── PsiExceptionStub.java
│ │ │ │ │ │ ├── PsiExternalStub.java
│ │ │ │ │ │ ├── PsiIncludeStub.java
│ │ │ │ │ │ ├── PsiLetStub.java
│ │ │ │ │ │ ├── PsiModuleStub.java
│ │ │ │ │ │ ├── PsiObjectFieldStub.java
│ │ │ │ │ │ ├── PsiOpenStub.java
│ │ │ │ │ │ ├── PsiParameterDeclarationStub.java
│ │ │ │ │ │ ├── PsiQualifiedNameStub.java
│ │ │ │ │ │ ├── PsiTypeStub.java
│ │ │ │ │ │ ├── PsiValStub.java
│ │ │ │ │ │ ├── PsiVariantDeclarationStub.java
│ │ │ │ │ │ ├── ResFileStub.java
│ │ │ │ │ │ ├── ResStubBasedElementTypes.java
│ │ │ │ │ │ ├── RmlFileStub.java
│ │ │ │ │ │ ├── RmlStubBasedElementTypes.java
│ │ │ │ │ │ ├── RsiClassMethodStub.java
│ │ │ │ │ │ ├── RsiClassStub.java
│ │ │ │ │ │ ├── RsiRecordFieldStub.java
│ │ │ │ │ │ └── type/
│ │ │ │ │ │ ├── ORStubElementType.java
│ │ │ │ │ │ ├── ORStubVersions.java
│ │ │ │ │ │ ├── OclFileStubElementType.java
│ │ │ │ │ │ ├── PsiExceptionStubElementType.java
│ │ │ │ │ │ ├── PsiExternalStubElementType.java
│ │ │ │ │ │ ├── PsiFunctorModuleStubElementType.java
│ │ │ │ │ │ ├── PsiIncludeStubElementType.java
│ │ │ │ │ │ ├── PsiInnerModuleStubElementType.java
│ │ │ │ │ │ ├── PsiLetStubElementType.java
│ │ │ │ │ │ ├── PsiModuleStubElementType.java
│ │ │ │ │ │ ├── PsiObjectFieldStubElementType.java
│ │ │ │ │ │ ├── PsiOpenStubElementType.java
│ │ │ │ │ │ ├── PsiParameterDeclarationStubElementType.java
│ │ │ │ │ │ ├── PsiTypeStubElementType.java
│ │ │ │ │ │ ├── PsiValStubElementType.java
│ │ │ │ │ │ ├── PsiVariantStubElementType.java
│ │ │ │ │ │ ├── RPsiClassMethodStubElementType.java
│ │ │ │ │ │ ├── RPsiClassStubElementType.java
│ │ │ │ │ │ ├── RPsiRecordFieldStubElementType.java
│ │ │ │ │ │ ├── ResFileStubElementType.java
│ │ │ │ │ │ ├── RmlFileStubElementType.java
│ │ │ │ │ │ └── SerializerUtil.java
│ │ │ │ │ └── type/
│ │ │ │ │ ├── ORCompositeElementType.java
│ │ │ │ │ ├── ORCompositePsiElement.java
│ │ │ │ │ ├── ORCompositeType.java
│ │ │ │ │ ├── ORLangTypes.java
│ │ │ │ │ ├── ORTokenElementType.java
│ │ │ │ │ ├── ORTypes.java
│ │ │ │ │ └── ORTypesUtil.java
│ │ │ │ ├── doc/
│ │ │ │ │ ├── ORDocConverter.java
│ │ │ │ │ ├── ocaml/
│ │ │ │ │ │ ├── ODocLexer.java
│ │ │ │ │ │ ├── OclDocConverter.java
│ │ │ │ │ │ ├── OclDocLanguage.java
│ │ │ │ │ │ ├── OclDocTypes.java
│ │ │ │ │ │ └── odoc.flex
│ │ │ │ │ └── reason/
│ │ │ │ │ ├── RDocLexer.java
│ │ │ │ │ ├── RmlDocConverter.java
│ │ │ │ │ ├── RmlDocLanguage.java
│ │ │ │ │ ├── RmlDocTypes.java
│ │ │ │ │ └── rdoc.flex
│ │ │ │ ├── dune/
│ │ │ │ │ ├── Dune.flex
│ │ │ │ │ ├── DuneASTFactory.java
│ │ │ │ │ ├── DuneLanguage.java
│ │ │ │ │ ├── DuneLexer.java
│ │ │ │ │ ├── DuneParser.java
│ │ │ │ │ ├── DuneParserDefinition.java
│ │ │ │ │ └── DuneTypes.java
│ │ │ │ ├── extra/
│ │ │ │ │ ├── OclP4Language.java
│ │ │ │ │ └── OclP4ParserDefinition.java
│ │ │ │ ├── ocaml/
│ │ │ │ │ ├── OCaml.flex
│ │ │ │ │ ├── OCamlLexer.java
│ │ │ │ │ ├── OclASTFactory.java
│ │ │ │ │ ├── OclLanguage.java
│ │ │ │ │ ├── OclLexer.java
│ │ │ │ │ ├── OclParser.java
│ │ │ │ │ ├── OclParserDefinition.java
│ │ │ │ │ ├── OclSafeParserDefinition.java
│ │ │ │ │ └── OclTypes.java
│ │ │ │ ├── ocamlgrammar/
│ │ │ │ │ ├── OclGrammarAstFactory.java
│ │ │ │ │ ├── OclGrammarElementType.java
│ │ │ │ │ ├── OclGrammarLanguage.java
│ │ │ │ │ ├── OclGrammarLexer.java
│ │ │ │ │ ├── OclGrammarParser.java
│ │ │ │ │ ├── OclGrammarParserDefinition.java
│ │ │ │ │ ├── OclGrammarTypes.java
│ │ │ │ │ └── mlg.flex
│ │ │ │ ├── ocamllex/
│ │ │ │ │ ├── OclLexAstFactory.java
│ │ │ │ │ ├── OclLexElementType.java
│ │ │ │ │ ├── OclLexLanguage.java
│ │ │ │ │ ├── OclLexLexer.java
│ │ │ │ │ ├── OclLexParser.java
│ │ │ │ │ ├── OclLexParserDefinition.java
│ │ │ │ │ ├── OclLexTypes.java
│ │ │ │ │ └── mll.flex
│ │ │ │ ├── ocamlyacc/
│ │ │ │ │ ├── OclYaccAstFactory.java
│ │ │ │ │ ├── OclYaccElementType.java
│ │ │ │ │ ├── OclYaccLanguage.java
│ │ │ │ │ ├── OclYaccLexer.java
│ │ │ │ │ ├── OclYaccParser.java
│ │ │ │ │ ├── OclYaccParserDefinition.java
│ │ │ │ │ ├── OclYaccTypes.java
│ │ │ │ │ └── mly.flex
│ │ │ │ ├── reason/
│ │ │ │ │ ├── ReasonML.flex
│ │ │ │ │ ├── ReasonMLLexer.java
│ │ │ │ │ ├── RmlASTFactory.java
│ │ │ │ │ ├── RmlLanguage.java
│ │ │ │ │ ├── RmlLexer.java
│ │ │ │ │ ├── RmlParser.java
│ │ │ │ │ ├── RmlParserDefinition.java
│ │ │ │ │ ├── RmlSafeParserDefinition.java
│ │ │ │ │ └── RmlTypes.java
│ │ │ │ └── rescript/
│ │ │ │ ├── ResASTFactory.java
│ │ │ │ ├── ResFlexLexer.java
│ │ │ │ ├── ResLanguage.java
│ │ │ │ ├── ResLexer.java
│ │ │ │ ├── ResParser.java
│ │ │ │ ├── ResParserDefinition.java
│ │ │ │ ├── ResSafeParserDefinition.java
│ │ │ │ ├── ResTypes.java
│ │ │ │ └── Rescript.flex
│ │ │ └── jpsplugin/
│ │ │ └── com/
│ │ │ └── reason/
│ │ │ ├── AutoDeletingTempFile.java
│ │ │ ├── FileUtil.java
│ │ │ ├── Interrupted.java
│ │ │ ├── Joiner.java
│ │ │ ├── Log.java
│ │ │ ├── OCamlExecutable.java
│ │ │ ├── OClSourcesOrderRootTypeUIFactory.java
│ │ │ ├── ORNotification.java
│ │ │ ├── ORProcessTerminated.java
│ │ │ ├── OclSourcesOrderRootType.java
│ │ │ ├── Platform.java
│ │ │ ├── Streams.java
│ │ │ ├── StringUtil.java
│ │ │ ├── WGet.java
│ │ │ ├── sdk/
│ │ │ │ └── SdkDownloader.java
│ │ │ └── wizard/
│ │ │ ├── OCamlModuleWizardStep.java
│ │ │ └── WizardStepForm.form
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ ├── java-deps.xml
│ │ │ ├── js-deps.xml
│ │ │ └── plugin.xml
│ │ ├── fileTemplates/
│ │ │ ├── OCaml Interface.mli.ft
│ │ │ ├── OCaml Module.ml.ft
│ │ │ ├── Reason Interface.rei.ft
│ │ │ ├── Reason Module.re.ft
│ │ │ ├── Rescript Interface.resi.ft
│ │ │ └── Rescript Module.res.ft
│ │ ├── icons/
│ │ │ ├── reasonml-icon-file.xcf
│ │ │ └── reasonml-icon.xcf
│ │ ├── intentionDescriptions/
│ │ │ ├── ExpandLocalOpenIntention/
│ │ │ │ ├── after.re.template
│ │ │ │ ├── before.re.template
│ │ │ │ └── description.html
│ │ │ └── FunctionBracesIntention/
│ │ │ ├── after.re.template
│ │ │ ├── before.re.template
│ │ │ └── description.html
│ │ └── liveTemplates/
│ │ ├── OCaml.xml
│ │ ├── Reason.xml
│ │ └── Rescript.xml
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── reason/
│ │ ├── FileHelperTest.java
│ │ ├── comp/
│ │ │ ├── bs/
│ │ │ │ ├── BsConfigReaderTest.java
│ │ │ │ ├── BsLineProcessorTest.java
│ │ │ │ ├── NinjaTest.java
│ │ │ │ └── ResConfigReaderTest.java
│ │ │ ├── dune/
│ │ │ │ └── DuneOutputAnalyzerTest.java
│ │ │ ├── esy/
│ │ │ │ └── EsyPackageJsonTest.java
│ │ │ ├── ocaml/
│ │ │ │ └── OpamProcessTest.java
│ │ │ └── rescript/
│ │ │ ├── RescriptOutputAnalyzerTest.java
│ │ │ └── error-syntax.txt
│ │ ├── hints/
│ │ │ └── RincewindTest.java
│ │ ├── ide/
│ │ │ ├── ORBasePlatformTestCase.java
│ │ │ ├── ORFileUtilsTest.java
│ │ │ ├── RenameLowerTest.java
│ │ │ ├── RenameUpper_OCL_Test.java
│ │ │ ├── RenameUpper_RES_Test.java
│ │ │ ├── RenameUpper_RML_Test.java
│ │ │ ├── TypeConversionOclTest.java
│ │ │ ├── comment/
│ │ │ │ └── OclCommenterTest.java
│ │ │ ├── completion/
│ │ │ │ ├── CommentCompletion_OCL_Test.java
│ │ │ │ ├── CommentCompletion_RES_Test.java
│ │ │ │ ├── CommentCompletion_RML_Test.java
│ │ │ │ ├── DotCompletion_OCL_Test.java
│ │ │ │ ├── DotCompletion_RES_Test.java
│ │ │ │ ├── DotCompletion_RML_Test.java
│ │ │ │ ├── FreeCompletion_OCL_Test.java
│ │ │ │ ├── FreeCompletion_RES_Test.java
│ │ │ │ ├── FreeCompletion_RML_Test.java
│ │ │ │ ├── JsObjectCompletion_RES_Test.java
│ │ │ │ ├── JsObjectCompletion_RML_Test.java
│ │ │ │ ├── Jsx3NameCompletion_RES_Test.java
│ │ │ │ ├── Jsx3NameCompletion_RML_Test.java
│ │ │ │ ├── Jsx3PropertyCompletion_RES_Test.java
│ │ │ │ ├── Jsx3PropertyCompletion_RML_Test.java
│ │ │ │ ├── Jsx4PropertyCompletion_RES_Test.java
│ │ │ │ ├── KeywordCompletion_OCL_Test.java
│ │ │ │ ├── KeywordCompletion_RES_Test.java
│ │ │ │ ├── KeywordCompletion_RML_Test.java
│ │ │ │ ├── ModuleCompletion_OCL_Test.java
│ │ │ │ ├── ModuleCompletion_RES_Test.java
│ │ │ │ ├── ModuleCompletion_RML_Test.java
│ │ │ │ ├── RecordCompletion_OCL_Test.java
│ │ │ │ ├── RecordCompletion_RES_Test.java
│ │ │ │ └── RecordCompletion_RML_Test.java
│ │ │ ├── console/
│ │ │ │ ├── OCamlMessages.java
│ │ │ │ ├── ocaml/
│ │ │ │ │ └── OCamlConsoleFilterTest.java
│ │ │ │ └── rescript/
│ │ │ │ └── RescriptConsoleFilterTest.java
│ │ │ ├── docs/
│ │ │ │ ├── ORDocumentationProviderTest.java
│ │ │ │ ├── QuickDocRESTest.java
│ │ │ │ ├── QuickDocRMLTest.java
│ │ │ │ ├── ShowDocOCLTest.java
│ │ │ │ ├── ShowDocRESTest.java
│ │ │ │ └── ShowDocRMLTest.java
│ │ │ ├── go/
│ │ │ │ ├── GotoImplementationOCLTest.java
│ │ │ │ ├── GotoImplementationRESTest.java
│ │ │ │ ├── GotoImplementationRMLTest.java
│ │ │ │ ├── LineMarkerProviderOCLTest.java
│ │ │ │ ├── LineMarkerProviderRESTest.java
│ │ │ │ └── LineMarkerProviderRMLTest.java
│ │ │ ├── hints/
│ │ │ │ ├── OclParameterInfoHandlerTest.java
│ │ │ │ ├── ResParameterInfoHandlerTest.java
│ │ │ │ └── RmlParameterInfoHandlerTest.java
│ │ │ ├── intention/
│ │ │ │ ├── ExpandLocalOpenIntentionRMLTest.java
│ │ │ │ ├── FunctionBracesIntentionRESTest.java
│ │ │ │ └── FunctionBracesIntentionRMLTest.java
│ │ │ ├── search/
│ │ │ │ └── reference/
│ │ │ │ ├── FindLIdentUsagesOCLTest.java
│ │ │ │ ├── FindLIdentUsagesRESTest.java
│ │ │ │ ├── FindLIdentUsagesRMLTest.java
│ │ │ │ ├── FindUIdentUsagesOCLTest.java
│ │ │ │ ├── FindUIdentUsagesRESTest.java
│ │ │ │ ├── FindUIdentUsagesRMLTest.java
│ │ │ │ ├── ORModuleResolutionPsiGist_OCL_Test.java
│ │ │ │ ├── ORModuleResolutionPsiGist_RES_Test.java
│ │ │ │ ├── ORModuleResolutionPsiGist_RML_Test.java
│ │ │ │ ├── ResolveJsxPropertyElementRESTest.java
│ │ │ │ ├── ResolveJsxPropertyElementRMLTest.java
│ │ │ │ ├── ResolveJsxTagElementRESTest.java
│ │ │ │ ├── ResolveJsxTagElementRMLTest.java
│ │ │ │ ├── ResolveLowerElement_OCL_Test.java
│ │ │ │ ├── ResolveLowerElement_RES_Test.java
│ │ │ │ ├── ResolveLowerElement_RML_Test.java
│ │ │ │ ├── ResolveUpperElement_OCL_Test.java
│ │ │ │ ├── ResolveUpperElement_RES_Test.java
│ │ │ │ └── ResolveUpperElement_RML_Test.java
│ │ │ └── structure/
│ │ │ ├── ProjectStructure_DUNE_Test.java
│ │ │ ├── ProjectStructure_OCL_Test.java
│ │ │ └── ValPresentation_OCL_Test.java
│ │ └── lang/
│ │ ├── BaseParsingTestCase.java
│ │ ├── core/
│ │ │ ├── FileBaseTest.java
│ │ │ ├── ORSignatureTest.java
│ │ │ └── ORUtilTest.java
│ │ ├── doc/
│ │ │ ├── ocaml/
│ │ │ │ └── OclDocConverterTest.java
│ │ │ └── reason/
│ │ │ └── RmlDocConverterTest.java
│ │ ├── dune/
│ │ │ ├── CommentParsingTest.java
│ │ │ ├── DuneParsingTestCase.java
│ │ │ ├── DuneStanzaParsingTest.java
│ │ │ ├── DuneVarParsingTest.java
│ │ │ └── SExprParsingTest.java
│ │ ├── ocaml/
│ │ │ ├── AndParsingTest.java
│ │ │ ├── AnnotationParsingTest.java
│ │ │ ├── AssertParsingTest.java
│ │ │ ├── BeginParsingTest.java
│ │ │ ├── ChainingParsingTest.java
│ │ │ ├── ClassParsingTest.java
│ │ │ ├── CommentParsingTest.java
│ │ │ ├── DirectiveParsingTest.java
│ │ │ ├── ExceptionParsingTest.java
│ │ │ ├── ExpressionsParsingTest.java
│ │ │ ├── ExternalParsingTest.java
│ │ │ ├── FirstClassModuleParsingTest.java
│ │ │ ├── FunctionCallParsingTest.java
│ │ │ ├── FunctionParsingTest.java
│ │ │ ├── FunctorCallParsingTest.java
│ │ │ ├── FunctorParsingTest.java
│ │ │ ├── IfParsingTest.java
│ │ │ ├── ImmediateObjectParsingTest.java
│ │ │ ├── IncludeParsingTest.java
│ │ │ ├── LetParsingTest.java
│ │ │ ├── LocalOpenParsingTest.java
│ │ │ ├── LoopParsingTest.java
│ │ │ ├── MatchParsingTest.java
│ │ │ ├── ModuleParsingTest.java
│ │ │ ├── OclParsingTestCase.java
│ │ │ ├── OpenParsingTest.java
│ │ │ ├── OperatorParsingTest.java
│ │ │ ├── PolyVariantParsingTest.java
│ │ │ ├── RecordParsingTest.java
│ │ │ ├── SamplesParsingTest.java
│ │ │ ├── SignatureParsingTest.java
│ │ │ ├── TryWithParsingTest.java
│ │ │ ├── TypeParsingTest.java
│ │ │ ├── ValParsingTest.java
│ │ │ ├── VariantCallParsingTest.java
│ │ │ └── VariantDeclarationParsingTest.java
│ │ ├── reason/
│ │ │ ├── AndParsingTest.java
│ │ │ ├── AnnotationParsingTest.java
│ │ │ ├── AssertParsingTest.java
│ │ │ ├── ClassParsingTest.java
│ │ │ ├── CommentTest.java
│ │ │ ├── ComponentJsx3ParsingTest.java
│ │ │ ├── ExceptionParsingTest.java
│ │ │ ├── ExternalParsingTest.java
│ │ │ ├── FirstClassModuleParsingTest.java
│ │ │ ├── FunParsingTest.java
│ │ │ ├── FunctionCallParsingTest.java
│ │ │ ├── FunctionParsingTest.java
│ │ │ ├── FunctorCallParsingTest.java
│ │ │ ├── FunctorParsingTest.java
│ │ │ ├── IfParsingTest.java
│ │ │ ├── IncludeParsingTest.java
│ │ │ ├── JsObjectParsingTest.java
│ │ │ ├── JsxParsingTest.java
│ │ │ ├── LetParsingTest.java
│ │ │ ├── LocalOpenParsingTest.java
│ │ │ ├── MacroParsingTest.java
│ │ │ ├── ModuleParsingTest.java
│ │ │ ├── OpenParsingTest.java
│ │ │ ├── PolyVariantParsingTest.java
│ │ │ ├── PolyVariantTest.java
│ │ │ ├── RecordParsingTest.java
│ │ │ ├── RmlParsingTestCase.java
│ │ │ ├── SamplesParsingTest.java
│ │ │ ├── SignatureParsingTest.java
│ │ │ ├── StringTemplateParsingTest.java
│ │ │ ├── SwitchParsingTest.java
│ │ │ ├── TryParsingTest.java
│ │ │ ├── TypeParsingTest.java
│ │ │ ├── VariantCallParsingTest.java
│ │ │ └── VariantDeclarationParsingTest.java
│ │ └── rescript/
│ │ ├── AndParsingTest.java
│ │ ├── AnnotationParsingTest.java
│ │ ├── AssertParsingTest.java
│ │ ├── ChainingParsingTest.java
│ │ ├── CommentTest.java
│ │ ├── ComponentJsx3ParsingTest.java
│ │ ├── ExceptionParsingTest.java
│ │ ├── ExpressionChainingParsingTest.java
│ │ ├── ExternalParsingTest.java
│ │ ├── FileFromJarTest.java
│ │ ├── FirstClassModuleParsingTest.java
│ │ ├── FunctionCallParsingTest.java
│ │ ├── FunctionParsingTest.java
│ │ ├── FunctorCallParsingTest.java
│ │ ├── FunctorParsingTest.java
│ │ ├── IfParsingTest.java
│ │ ├── IncludeParsingTest.java
│ │ ├── JsObjectParsingTest.java
│ │ ├── JsxParsingTest.java
│ │ ├── LetParsingTest.java
│ │ ├── LocalOpenParsingTest.java
│ │ ├── MacroParsingTest.java
│ │ ├── ModuleParsingTest.java
│ │ ├── OpenParsingTest.java
│ │ ├── PolyVariantParsingTest.java
│ │ ├── RecordParsingTest.java
│ │ ├── ResParsingTestCase.java
│ │ ├── SignatureParsingTest.java
│ │ ├── StringTemplateParsingTest.java
│ │ ├── SwitchParsingTest.java
│ │ ├── TryParsingTest.java
│ │ ├── TypeParsingTest.java
│ │ ├── VariantCallParsingTest.java
│ │ └── VariantDeclarationParsingTest.java
│ └── testData/
│ ├── com/
│ │ └── reason/
│ │ ├── bs/
│ │ │ ├── bsplatform.json
│ │ │ ├── comments.json
│ │ │ ├── deps.json
│ │ │ ├── issue_214.json
│ │ │ ├── ninja-rescript.build
│ │ │ ├── src_array.json
│ │ │ ├── src_object.json
│ │ │ └── src_string.json
│ │ ├── esy/
│ │ │ └── package.json
│ │ └── lang/
│ │ ├── ReactDOM.res
│ │ ├── component/
│ │ │ ├── AnotherComp.re
│ │ │ ├── CompMessage.res
│ │ │ ├── Component.re
│ │ │ ├── Inner.re
│ │ │ └── Inner.res
│ │ ├── jsxDOMU.res
│ │ ├── pervasives.ml
│ │ └── samples/
│ │ ├── belt_Map.ml
│ │ ├── stream.ml
│ │ └── toto.re
│ ├── icu4j/
│ │ └── mt.res
│ └── ns/
│ └── bsconfig.json
└── website/
├── .gitignore
├── README.md
├── babel.config.js
├── docs/
│ ├── Other/
│ │ ├── faq.md
│ │ └── live-templates.md
│ ├── build-tools/
│ │ ├── _category_.json
│ │ ├── bucklescript.md
│ │ ├── dune.md
│ │ └── esy.md
│ ├── contributing/
│ │ ├── _category_.json
│ │ ├── how-to-contribute.md
│ │ ├── plugin-architecture.md
│ │ ├── plugin-development.md
│ │ └── resources.md
│ ├── intro.md
│ ├── language-support/
│ │ ├── _category_.json
│ │ ├── ocaml.md
│ │ ├── reason.md
│ │ └── rescript.md
│ └── project-types.md
├── docusaurus.config.js
├── package.json
├── sidebars.js
├── src/
│ ├── components/
│ │ └── HomepageFeatures/
│ │ ├── index.js
│ │ └── styles.module.css
│ ├── css/
│ │ └── custom.css
│ └── pages/
│ ├── index.js
│ └── index.module.css
└── static/
├── .nojekyll
└── img/
└── arch/
├── fake_module.excalidraw
├── parser.excalidraw
├── psihier.excalidraw
├── stub_keys.excalidraw
├── tokens.xcf
└── types.excalidraw
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.md
================================================
github: giraud
custom: "https://www.paypal.com/paypalme/rvgiraud"
================================================
FILE: .github/FUNDING.yml
================================================
github: giraud
custom: "https://www.paypal.com/paypalme/rvgiraud"
================================================
FILE: .github/workflows/gradle.yml
================================================
# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
name: Build Status
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '17'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
- name: Test with Gradle
run: ./gradlew test
================================================
FILE: .github/workflows/website-deploy.yml
================================================
name: Deploy Website
on:
pull_request:
branches: [master]
push:
branches: [master]
jobs:
checks:
if: github.event_name != 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: '18.x'
- name: Test Build
run: |
cd website
if [ -e yarn.lock ]; then
yarn install --frozen-lockfile
elif [ -e package-lock.json ]; then
npm ci
else
npm i
fi
npm run build
gh-release:
if: github.event_name != 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: '18.x'
- name: Add key to allow access to repository
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
mkdir -p ~/.ssh
ssh-keyscan github.com >> ~/.ssh/known_hosts
echo "${{ secrets.GH_PAGES_DEPLOY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
cat <<EOT >> ~/.ssh/config
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa
EOT
- name: Release to GitHub Pages
env:
USE_SSH: true
GIT_USER: git
run: |
git config --global user.email "actions@github.com"
git config --global user.name "gh-actions"
cd website
if [ -e yarn.lock ]; then
yarn install --frozen-lockfile
elif [ -e package-lock.json ]; then
npm ci
else
npm i
fi
npx docusaurus deploy
================================================
FILE: .gitignore
================================================
.gradle/
!.idea/
.idea/*
.intellijPlatform/*
!.idea/codeStyles/
!.idea/google-java-format.xml
out/
build/
*.iml
idea-flex*.skeleton
jflex-*.jar
jps-plugin/build
jps-plugin/out
================================================
FILE: CHANGELOG.md
================================================
# Changelog
> **Tags:**
> - :boom: [Breaking Change]
> - :rocket: [New Feature]
> - :bug: [Bug Fix]
> - :memo: [Documentation]
> - :house: [Internal]
> - :nail_care: [Polish]
(_Tags are copied from [babel](https://github.com/babel/babel/blob/master/CHANGELOG.md)_)
# unreleased
**NOTE**: minimal supported version is **2024.3**
# 0.131 - 2025/09/01
- :bug: [#511](https://github.com/giraud/reasonml-idea-plugin/issues/511) Fix infinite indexing (parameters)
# 0.130 - 2025/07/10
- :bug: Fix lower element resolution with typed parameter
- :bug: ![n] Fix variant declaration with @as
- :bug: Parse warning message in output analyzer
- :bug: Fix anonymous function declaration in option
- :bug: Fix constraints of module signature
- :bug: Fix log level
# 0.129 - 2025/04/14
- :bug: [#504](https://github.com/giraud/reasonml-idea-plugin/issues/504) Fix StackOverflow exception
- :bug: [#476](https://github.com/giraud/reasonml-idea-plugin/issues/476) Better indexing of recursive declarations
# 0.128 - 2025/02/18
- :bug: [#499](https://github.com/giraud/reasonml-idea-plugin/issues/499) Find usages of destructured elements
- :bug: [#498](https://github.com/giraud/reasonml-idea-plugin/issues/498) Parser error with patterns and parenthesis
- :bug: [#497](https://github.com/giraud/reasonml-idea-plugin/issues/497) Fix include inlined module
- :bug: [#496](https://github.com/giraud/reasonml-idea-plugin/issues/496) Improve free completion of poly variants
- :house: Remove 'function' keyword in Rescript lexer
# 0.127 - 2025/01/14
- :bug: [#494](https://github.com/giraud/reasonml-idea-plugin/issues/494) JsonFileType exception in 2024.3
- :bug: ![o] [#492](https://github.com/giraud/reasonml-idea-plugin/issues/492) Ocaml parser error when using #end
- :bug: [#490](https://github.com/giraud/reasonml-idea-plugin/issues/490) Object representation in structure panel
- :bug: [#246](https://github.com/giraud/reasonml-idea-plugin/issues/246) Input in priority in autocomplete list
**NOTE**: minimal supported version is **2024.1**
# 0.126 - 2024/11/19
- :rocket: [#485](https://github.com/giraud/reasonml-idea-plugin/issues/485) Gutter icons on module signatures
- :bug: [#487](https://github.com/giraud/reasonml-idea-plugin/issues/487) Ocaml setup on Mac OS (same than 480)
- :bug: [#480](https://github.com/giraud/reasonml-idea-plugin/issues/480) No Opam switch detection
- :house: update platform-gradle-plugin to v2
# 0.125 - 2024/08/26
**NOTE**: Added support for version **2024.3**
- :bug: [#475](https://github.com/giraud/reasonml-idea-plugin/issues/475) Stack overflow
- :rocket: [#473](https://github.com/giraud/reasonml-idea-plugin/issues/473) Enhancement: Structure panel: provide a filter setting to select whether to show variables
- :bug: ![o] [#469](https://github.com/giraud/reasonml-idea-plugin/issues/469) '"' in comments confuses comment recognition
- :bug: [#465](https://github.com/giraud/reasonml-idea-plugin/issues/465) Exception for action 'add braces to blockless function'
- :nail_care: Fix incorrect file icons
# 0.124 - 2024/05/02
- parsers updates, resolution updates
- Completion of js objects in Rescript
- Remove violations fonud by plugin verifier
# 0.123 - 2024/03/28
- :bug: [#461](https://github.com/giraud/reasonml-idea-plugin/issues/461) Parameter signature element incorrectly referenced
- :bug: [#460](https://github.com/giraud/reasonml-idea-plugin/issues/460) Keywords used as identifier
- :bug: [#459](https://github.com/giraud/reasonml-idea-plugin/issues/459) Convert to light services
- :bug: ![n] [#458](https://github.com/giraud/reasonml-idea-plugin/issues/458) Pipe first operator chaining not correctly parsed in rescript
- :bug: ![o] [#456](https://github.com/giraud/reasonml-idea-plugin/issues/456) OCaml function parameters incorrectly parsed if using tuples
- :bug: [#455](https://github.com/giraud/reasonml-idea-plugin/issues/455) Color scheme improvements request for records and functions (OCaml)
- :bug: [#453](https://github.com/giraud/reasonml-idea-plugin/issues/453) Completion of records when using mixin
- :bug: [#450](https://github.com/giraud/reasonml-idea-plugin/issues/450) Can’t rename a module
## 0.122 - 2024/03/11
- :bug: [#454](https://github.com/giraud/reasonml-idea-plugin/issues/454) Duplicate definitions for globally opened modules in completion
- :bug: [#452](https://github.com/giraud/reasonml-idea-plugin/issues/452) Resolve unpacked module
- :bug: ![n] [#451](https://github.com/giraud/reasonml-idea-plugin/issues/451) Module incorrectly parsed as functor in Rescript
- :bug: [#449](https://github.com/giraud/reasonml-idea-plugin/issues/449) Navigation icon in the gutter referencing wrong module
## 0.121 - 2024/02/02
- :bug: ![o] [#445](https://github.com/giraud/reasonml-idea-plugin/issues/445) Fix jump to implementation
- :bug: ![o] [#442](https://github.com/giraud/reasonml-idea-plugin/issues/442) Incorrect parsing of 'IN' in pattern matching
- :bug: ![o] [#441](https://github.com/giraud/reasonml-idea-plugin/issues/441) Incorrect parsing of pattern matching
## 0.120 - 2024/01/11
**NOTE**: minimal supported version is **2023.1**
- :bug: ![o] [#444](https://github.com/giraud/reasonml-idea-plugin/issues/444) Fix OCaml parser for 'inherit'
- :bug: ![o] [#440](https://github.com/giraud/reasonml-idea-plugin/issues/440) Incorrect parsing of record (OCaml)
- :bug: [#439](https://github.com/giraud/reasonml-idea-plugin/issues/439) Do not display 'let _' in structure panel
- :bug: ![n] [#438](https://github.com/giraud/reasonml-idea-plugin/issues/438) Resolution of js object field references in Rescript
- :bug: [#415](https://github.com/giraud/reasonml-idea-plugin/issues/415) Remove one level deep in structure view
## 0.119 - 2023/12/06
**NOTE**: minimal supported version is **2022.3**
- :bug: [#437](https://github.com/giraud/reasonml-idea-plugin/issues/437) Incorrect language injection in macro
- :house: Removing some TODOs in code
- :house: Fix cast exception in ORModuleContributor
- :house: Fix some parser errors
## 0.118.2 - 2023/11/21
- :rocket: Support for JSX 4
- :bug: [#436](https://github.com/giraud/reasonml-idea-plugin/issues/436) Macro parsing error
- :bug: [#434](https://github.com/giraud/reasonml-idea-plugin/issues/435) Rescript 11 deprecate bsconfig.json, wants rescript.json
- :bug: [#434](https://github.com/giraud/reasonml-idea-plugin/issues/434) Update rescript keywords
- :bug: [#433](https://github.com/giraud/reasonml-idea-plugin/issues/433) Gutter icon in ml file pointing to mli file disappears when it shouldn't
- :bug: [#430](https://github.com/giraud/reasonml-idea-plugin/issues/430) No SDK created when importing a dune project
- :bug: [#423](https://github.com/giraud/reasonml-idea-plugin/issues/423) Incorrect parsing when 'ref' is used as identifier
## 0.117.1 - 2023/09/11
- :bug: [#429](https://github.com/giraud/reasonml-idea-plugin/issues/429) Structure panel shows "Unknown presentation ..." for "module X : sig ..."
- :bug: [#428](https://github.com/giraud/reasonml-idea-plugin/issues/428) Webstorm error: No display name specified in plugin descriptor...
- :bug: [#427](https://github.com/giraud/reasonml-idea-plugin/issues/427) Preview not working in 'find in files'
- :bug: [#425](https://github.com/giraud/reasonml-idea-plugin/issues/425) Structure panel Some variables have the icon indicating a function
## 0.116 - 2023/08/31
- :bug: [#426](https://github.com/giraud/reasonml-idea-plugin/issues/426) Module alias must be resolved for resolution (same file)
- :bug: ![n] [#424](https://github.com/giraud/reasonml-idea-plugin/issues/424) Incorrect ternary parsing in Rescript when using newline
- :bug: [#422](https://github.com/giraud/reasonml-idea-plugin/issues/422) Plugin "failed to save settings and has been disabled" in PyCharm
- :bug: ![o] [#421](https://github.com/giraud/reasonml-idea-plugin/issues/421) End of comments containing quotes not always detected
- :bug: ![r] ![n] [#418](https://github.com/giraud/reasonml-idea-plugin/issues/418) Globally opened modules don’t participate in autocomplete resolution
## 0.115 - 2023/08/22
**NOTE**: Added support for version **2023.2**
- :house: [#416](https://github.com/giraud/reasonml-idea-plugin/issues/416) Excessive CPU use
- :bug: ![o] [#409](https://github.com/giraud/reasonml-idea-plugin/issues/409) Wrong structure on let b = 1 = 1 in (OCaml)
## 0.114 - 2023/07/04
(!) Jfrog is no longer serving binaries for rincewind, URL is changed and you must upgrade your plugin to this revision
if you want to continue using it (type annotations)
- :rocket: ![o] [#118](https://github.com/giraud/reasonml-idea-plugin/issues/118) Much better parsing of mlg files (ocaml injection, highlighting, folding)
## 0.113 - 2023/05/29
- :bug: ![n] [#414](https://github.com/giraud/reasonml-idea-plugin/issues/414) Extensible variant incorrectly parsed in Rescript
- :bug: ![n] [#413](https://github.com/giraud/reasonml-idea-plugin/issues/413) Unpack is a keyword in rescript
- :bug: ![o] [#412](https://github.com/giraud/reasonml-idea-plugin/issues/412) Scope incorrectly parsed in mll file
- :bug: ![o] [#411](https://github.com/giraud/reasonml-idea-plugin/issues/411) Block comment operation (Ctrl-Shift-/) on highlighted text should not add a newline
- :bug: [#410](https://github.com/giraud/reasonml-idea-plugin/issues/410) Goto icons not shown between module and module type in same file
- :bug: ![o] [#409](https://github.com/giraud/reasonml-idea-plugin/issues/409) Wrong structure on let b = 1 = 1 in
## 0.112 - 2023/05/05
**NOTE**: minimal supported version is **2022.2**
- :bug: ![o] [#409](https://github.com/giraud/reasonml-idea-plugin/issues/409) Wrong structure on let b = 1 = 1 in
- :bug: ![o] [#408](https://github.com/giraud/reasonml-idea-plugin/issues/408) let ... in not shown in let a = ... structure
- :bug: ![o] [#407](https://github.com/giraud/reasonml-idea-plugin/issues/407) Support operator (non-alphanum) declarations
- :bug: ![o] [#406](https://github.com/giraud/reasonml-idea-plugin/issues/406) Faulty let open ... in parsing
## 0.111.1 - 2023/05/03
- :house: New reference resolution algorithm
- :bug: ![o] [#405](https://github.com/giraud/reasonml-idea-plugin/issues/405) Bad parsing of if in method
- :bug: [#350](https://github.com/giraud/reasonml-idea-plugin/issues/350) Use declaration documentation if no local documentation
- :bug: [#319](https://github.com/giraud/reasonml-idea-plugin/issues/319) "Comment with line comment" action incorrect for lines ending with "("
- :bug: ![o] [#174](https://github.com/giraud/reasonml-idea-plugin/issues/174) Compiler output listener needs a change for ocaml >= 4.09
## 0.110 - 2023/03/01
- :bug: ![n] [#399](https://github.com/giraud/reasonml-idea-plugin/issues/399) Rescript: incorrectly parse element as tag
- :bug: ![n] [#384](https://github.com/giraud/reasonml-idea-plugin/issues/384) Rescript compile errors not being displayed on code
## 0.109.2 - 2023/01/24
**NOTE**: minimal supported version is **2022.1**
- :bug: [#398](https://github.com/giraud/reasonml-idea-plugin/issues/398) Rescript format doesn’t respect UTF-8 encoding
- 0.109.1
- :bug: [#392](https://github.com/giraud/reasonml-idea-plugin/issues/392) Attempting to open editorconfig causes IDE exception
- :bug: [#391](https://github.com/giraud/reasonml-idea-plugin/issues/391) Dune comments are broken (lexer)
- :bug: [#390](https://github.com/giraud/reasonml-idea-plugin/issues/390) Stub mismatch exceptions fixed
## 0.108 - 2022/12/01
**NOTE**: minimal supported version is **2021.3**
- :nail_care: Display dune-project fields in structure view
- :bug: [#389](https://github.com/giraud/reasonml-idea-plugin/issues/389) java.util.EmptyStackException
- :bug: [#358](https://github.com/giraud/reasonml-idea-plugin/issues/358) Incorrect resolution with module in pattern
- :bug: [#323](https://github.com/giraud/reasonml-idea-plugin/issues/323) Method declarations in .ml files should link to their implementations
- :house: ![o] Parse ternary if in OCaml
- :house: ![o] Fix illegal characters in dune files
## 0.107 - 2022/09/13
- :nail_care: fix missing color for fragment tag
- :bug: [#379](https://github.com/giraud/reasonml-idea-plugin/issues/379) Plugin crashes with NoClassDefFoundError in WebStorm during any attempt to autocomplete
- :house: reworked the parsers.
Some resources files (potentially in binary form) inside jars are using the .res extension,
but there is no possibility to detect they are not rescript files.
The plugin now do not index files inside a jar archive.
## 0.106.1 - 2022/05/02
- :bug: [#379](https://github.com/giraud/reasonml-idea-plugin/issues/379) Plugin crashes with NoClassDefFoundError in
WebStorm during any attempt to autocomplete
- :bug: [#378](https://github.com/giraud/reasonml-idea-plugin/issues/378) NPE in macro
- :boom: :rocket: New opam configuration, should allow other IDE to use dune projects. Dune facet is removed.
- :bug: [#364](https://github.com/giraud/reasonml-idea-plugin/issues/364) StringIndexOutOfBoundsException
## 0.105.1 - 2021/11/12
Logo changed: it was too similar to the jetbrains plugins
- :bug: [#362](https://github.com/giraud/reasonml-idea-plugin/issues/362) Check invalid file before compile (rescript execution exception)
- :bug: ![o] [#360](https://github.com/giraud/reasonml-idea-plugin/issues/360) Should not display annotation signature
- :bug: [#359](https://github.com/giraud/reasonml-idea-plugin/issues/359) Doc not displayed for JSX component
- :house: prevent multiple compiler run in parallel
## 0.104 - 2021/10/14
- :bug: [#357](https://github.com/giraud/reasonml-idea-plugin/issues/357) Read access is allowed from inside read-action
- :bug: [#354](https://github.com/giraud/reasonml-idea-plugin/issues/354) Update spellCheck strategy
- :bug: ![r] [#353](https://github.com/giraud/reasonml-idea-plugin/issues/353) Interpolation incorrectly parsed
- :bug: [#352](https://github.com/giraud/reasonml-idea-plugin/issues/352) CMT viewer is broken
- :bug: [#327](https://github.com/giraud/reasonml-idea-plugin/issues/327) Use resolver for completions
## 0.103 - 2021/09/21
- :rocket: [#344](https://github.com/giraud/reasonml-idea-plugin/pull/344) Enabling spellchecker [@QuentinRa](https://github.com/QuentinRa)
- :rocket: ![o] [#343](https://github.com/giraud/reasonml-idea-plugin/pull/343) Adding live templates for OCaml by [@QuentinRa](https://github.com/QuentinRa)
- :bug: ![o] [#325](https://github.com/giraud/reasonml-idea-plugin/issues/325) Structure panel missing "pp_misc" for "let misc, pp_misc = ...". Gutter icon missing for pp_misc in mli file
- :bug: ![o] [#322](https://github.com/giraud/reasonml-idea-plugin/issues/322) Class types in .mli files should link to the corresponding definition in the .ml file
- :house: [#351](https://github.com/giraud/reasonml-idea-plugin/issues/351) Error annotator use detected compiler, not file language
- :house: update GitHub workflow to use Java 11
- :house: add qualified name index for classes
- :house: add line markers for Rescript
- :house: enable line markers in every IDE
## 0.102.2 - 2021/08/26
- :bug: ![o] [#340](https://github.com/giraud/reasonml-idea-plugin/issues/340) Items missing in structure panel after let ending with match (incorrect object parsing)
- :bug: ![o] [#329](https://github.com/giraud/reasonml-idea-plugin/issues/329) IllegalArgumentException: Not an OCaml node: Element(OCAML_LAZY_NODE)
- :house: remove jps-plugin.jar reference in plugin.xml
0.102.1
- :bug: [#333](https://github.com/giraud/reasonml-idea-plugin/issues/333) CLion crash, remove dependency to java only class
- :bug: [#157](https://github.com/giraud/reasonml-idea-plugin/issues/157) Update parameter info handler, only show known types
0.102
- :house: [#328](https://github.com/giraud/reasonml-idea-plugin/issues/328) Update Rescript parser to latest syntax
- :bug: [#326](https://github.com/giraud/reasonml-idea-plugin/issues/326) Structure panel shows "mutable" for mutable record fields rather than the field name
- :bug: [#318](https://github.com/giraud/reasonml-idea-plugin/issues/318) Rescript integration
## 0.101 - 2021/05/27
- :bug: [#303](https://github.com/giraud/reasonml-idea-plugin/issues/303) Incorrect resolution for record field
- :house: Reference resolution algorithm has been totally redesigned
## 0.100 - 2021/05/05
- :house: move to jfrog, bintray is no more available
- :bug: [#317](https://github.com/giraud/reasonml-idea-plugin/issues/317) Belt.Array incorrectly resolved
# 0.99 - 2021/04/08
Version 0.99 supports the 2021.1 release.
- :bug: [#315](https://github.com/giraud/reasonml-idea-plugin/issues/315) ![r] insertion handler for JSX doesn't detect close tag
- :bug: [#190](https://github.com/giraud/reasonml-idea-plugin/issues/190) show nested function definitions in structure panel
- :bug: fix incorrect identification of optional parameter
- :nail_care: ![r] order jsx attributes, mandatory first
# 0.98.3 - 2021/04/06
- :bug: [#314](https://github.com/giraud/reasonml-idea-plugin/issues/314) missing item in structure panel (structural diff operator)
- :bug: [#313](https://github.com/giraud/reasonml-idea-plugin/issues/313) alphabetize opened/included modules in the structure panel
0.98.2
- :bug: [#312](https://github.com/giraud/reasonml-idea-plugin/issues/312) ![o] switch with optional is not parsed correctly
- :bug: [#311](https://github.com/giraud/reasonml-idea-plugin/issues/311) ![o] Missing icon in mli file
- :bug: [#310](https://github.com/giraud/reasonml-idea-plugin/issues/310) ![o] Missing types in structure panel after class definition
0.98.1
- :bug: [#293](https://github.com/giraud/reasonml-idea-plugin/issues/293) ![o] Better 'and' parsing
- :house: Better integration with yarn workspaces (v2?): search for node_modules in parent directory also
0.98
- :nail_care: ![o] highlight of ocaml annotation include arrobase
- :bug: [#309](https://github.com/giraud/reasonml-idea-plugin/issues/309) incorrectly parse infix operators
- :bug: [#261](https://github.com/giraud/reasonml-idea-plugin/issues/261) warning configuration in bsconfig.json is not being applied
# 0.97 - 2021/02/04
- :bug: [#304](https://github.com/giraud/reasonml-idea-plugin/issues/304) ![r] Properties in component using external are not found
- :bug: Keep caret at position when reformat
- :house: Fix file pattern introduced in bs-platform 8.3
- :house: Fix reformatOnSave when multiple projects (different settings) are opened
- :house: Update ErrorAnnotator to use new ninja format introduced since bs-platform 8.4
- :house: Update ppx error extraction
## 0.96 - 2021/01/08
- :bug: [#295](https://github.com/giraud/reasonml-idea-plugin/issues/295) ![o] Parser error: incorrect chaining module/type
- :bug: [#294](https://github.com/giraud/reasonml-idea-plugin/issues/294) ![o] `let open in` incorrectly parsed
- :bug: [#291](https://github.com/giraud/reasonml-idea-plugin/issues/291) ![o] 'function' not parsed as function
- :house: Better usage of externalAnnotator to highlight compilation problems in editor by [@pooch](https://github.com/JohnPucciarelli)
- :house: Better reformatOnSave implementation that should prevent infinite loop
## 0.95.1 - 2020/12/03
A brand new site created by John Pucciarelli (https://giraud.github.io/reasonml-idea-plugin/)
2020.3 support
- :rocket: [#284](https://github.com/giraud/reasonml-idea-plugin/issues/284) ![o] Support for OCamlFormat
- :rocket: [#110](https://github.com/giraud/reasonml-idea-plugin/issues/110) ![o]![r]![n] Language injection in strings
- :bug: [#279](https://github.com/giraud/reasonml-idea-plugin/issues/279) ![n] Matched brace isn't highlighted in .res source file
- :bug: [#278](https://github.com/giraud/reasonml-idea-plugin/issues/278) ![o] let (//) incorrectly parsed as comment
- :bug: [#277](https://github.com/giraud/reasonml-idea-plugin/issues/277) Wrong module resolution for js object
- :nail_care: New plugin icon by [@pooch](https://github.com/JohnPucciarelli)
## 0.94 - 2020/11/03
Dune integration has been updated, [documentation](https://github.com/giraud/reasonml-idea-plugin/tree/master/docs) is also up to date.
- :bug: [#276](https://github.com/giraud/reasonml-idea-plugin/issues/276) Class JSFile not found
- :bug: [#275](https://github.com/giraud/reasonml-idea-plugin/issues/275) Incorrect parsing of switch with signature
- :bug: [#245](https://github.com/giraud/reasonml-idea-plugin/issues/245) Resolve property of JSX tag
- :bug: [#124](https://github.com/giraud/reasonml-idea-plugin/issues/124) Repl freezes with Ocaml 4.07
- :nail_care: Fold switch/match
- :house: Use [rincewind@0.9.1](https://github.com/giraud/rincewind)
- :house: refactor Dune integration: works with native (linux), wsl (windows) and cygwin (windows)
## 0.93.1 - 2020/10/09
0.93.1
- :bug: [#272](https://github.com/giraud/reasonml-idea-plugin/issues/272) Another case: structure panel missing function definition with "and"
- :nail_care: [#274](https://github.com/giraud/reasonml-idea-plugin/issues/274) Omit '()' in structure panel
- :nail_care: [#273](https://github.com/giraud/reasonml-idea-plugin/issues/273) Some constructor names not highlighted in function/match patterns
0.93
- :rocket: [#119](https://github.com/giraud/reasonml-idea-plugin/issues/119) support for automatically closing quotes (double)
- :nail_care: 'Goto class' use a custom presentation for inner modules
- :bug: [#271](https://github.com/giraud/reasonml-idea-plugin/issues/271) Structure panel missing function defined with "and"
- :bug: [#270](https://github.com/giraud/reasonml-idea-plugin/issues/270) Function definition with type variables not recognized as a function
- :bug: [#91](https://github.com/giraud/reasonml-idea-plugin/issues/91) Jumping to some module-related symbol definitions from Structure Panel doesn't highlight symbol right away (incorrect module type detection)
- :bug: Fix monorepo on windows
## 0.92 - 2020/09/18
0.92.1
- :bug: [#269](https://github.com/giraud/reasonml-idea-plugin/issues/269) Incorrect display of class methods names in structure panel
- :nail_care: Better parsing of React fragment <></>
- :nail_care: Better presentation of inner modules in 'goto class' dialog
0.92
This new version is compatible with 2020.2.
To support that version, the references have been redesigned. It might be needed to invalidate your caches and
maybe restart project from scratch (or remove .idea folder).
- :rocket: [#264](https://github.com/giraud/reasonml-idea-plugin/pull/264) a new unified language settings by [@pooch](https://github.com/JohnPucciarelli)
- :rocket: [#81](https://github.com/giraud/reasonml-idea-plugin/issues/81) Support GoTo/Implementation(s)
- :bug: [#266](https://github.com/giraud/reasonml-idea-plugin/issues/266) Incompatible with 2020.2 IDEs
- :bug: [#268](https://github.com/giraud/reasonml-idea-plugin/issues/268) Regression: Structure panel should group methods under the class name
- :bug: [#256](https://github.com/giraud/reasonml-idea-plugin/issues/256) Probable regression for jumping to a symbol
- :house: Reworked parsers (try to remove some complexity) - rescript included [#260](https://github.com/giraud/reasonml-idea-plugin/issues/260)
- :house: .res files are automatically compiled when saved, like .re
## 0.90.2 - 2020/07/02
0.90.1
This is a quick patch release to provide syntax highlighting to the new `.res` and `.resi` file types.
Don't expect anything more than just highlighting.
- :bug: Fix 'add braces' action when function has signature
0.90.0
- :memo: Reworked documentation, moved from wiki to the [docs](https://github.com/giraud/reasonml-idea-plugin/tree/master/docs) directory by [@pooch](https://github.com/JohnPucciarelli)
- :memo: [#252](https://github.com/giraud/reasonml-idea-plugin/issues/252) Add an architecture documentation to explain some of the internal details
- :bug: [#247](https://github.com/giraud/reasonml-idea-plugin/issues/247) Duplicated file templates
- :bug: [#205](https://github.com/giraud/reasonml-idea-plugin/issues/205) Functors are now indexed (completion and resolution should work)
- :bug: [#254](https://github.com/giraud/reasonml-idea-plugin/issues/254) ![r] Make a distinction between single-line and multi-line comments in parser
- :bug: [#254](https://github.com/giraud/reasonml-idea-plugin/issues/254) ![r] Fold multiline JSX tags
- :house: Add github action for CI (and badges) by [@pooch](https://github.com/JohnPucciarelli)
- :house: [#253](https://github.com/giraud/reasonml-idea-plugin/pull/253) Breaking apart modules to avoid extra instances of IntelliJ when testing by [@pooch](https://github.com/JohnPucciarelli)
- :house: [#257](https://github.com/giraud/reasonml-idea-plugin/pull/257) Fix monorepo executable by [@Coobaha](https://github.com/Coobaha)
## 0.89.0 - 2020/05/22
- :rocket: [#239](https://github.com/giraud/reasonml-idea-plugin/pull/239) Experimental: start of ESY support work by [@pooch](https://github.com/JohnPucciarelli)
- :bug: [#249](https://github.com/giraud/reasonml-idea-plugin/issues/249) Too many warnings in log (bsconfig not found)
- :bug: [#241](https://github.com/giraud/reasonml-idea-plugin/pull/241) Fix bug that prevent IDEA to keep correctly the source of SDK by [@kayl669](https://github.com/kayl669)
- :bug: [#236](https://github.com/giraud/reasonml-idea-plugin/issues/236) Cannot find a module definition if namespace is used
- :house: Find real bsc/bsb binaries if a symlink is found
- :house: Fix gutter icons for navigation in OCaml files
## 0.88.1 - 2020/05/02
0.88.1
- :house: [#238](https://github.com/giraud/reasonml-idea-plugin/pull/238) ![o] ![r] Add build system info to action labels by [@Coobaha](https://github.com/Coobaha)
- :house: [#234](https://github.com/giraud/reasonml-idea-plugin/issues/234) Display warning instead of exception
0.88
- :rocket: ![o] You can easily download OCaml SDK sources in SDK platform settings
- :bug: [#231](https://github.com/giraud/reasonml-idea-plugin/issues/231) Fix ClassCastException when reading bsconfig.json
- :nail_care: [#220](https://github.com/giraud/reasonml-idea-plugin/pull/220) ![o] ![r] Added BuckleScript file type and icon by [@pooch](https://github.com/JohnPucciarelli)
- :nail_care: [#219](https://github.com/giraud/reasonml-idea-plugin/pull/219) ![o] ![r] Added file type support for Esy by [@pooch](https://github.com/JohnPucciarelli)
- :nail_care: ![o] ![r] Poly-variants can have a different highlighting, color scheme updated
- :nail_care: ![o] ![r] Use SVG icons
- :house: [#224](https://github.com/giraud/reasonml-idea-plugin/pull/224) ![r] Use bsb.exe instead of node.js wrapper in monorepo by [@Coobaha](https://github.com/Coobaha)
- :house: [#221](https://github.com/giraud/reasonml-idea-plugin/pull/221) ![o] ![r] Compilers have separate tool windows by [@pooch](https://github.com/JohnPucciarelli)
- :house: Use rincewind@0.8
## 0.87.1 - 2020/04/03
0.87.1
- :bug: [#214](https://github.com/giraud/reasonml-idea-plugin/issues/214) Infinite indexing
0.87
- :rocket: Compatible with bucklescript 7.2.2
- :rocket: Add OCaml 4.10 to the list of downloadable SDKs
- :bug: [#211](https://github.com/giraud/reasonml-idea-plugin/issues/211) `let%private` support
- :bug: [#209](https://github.com/giraud/reasonml-idea-plugin/issues/209) Deep dependencies are not indexed in IDE that have javascript functionality (ultimate/webstorm)
- :house: Use rincewind 0.7 (support of OCaml 4.10)
## 0.86.1 - 2020/02/21
- :rocket: [#204](https://github.com/giraud/reasonml-idea-plugin/issues/204) ![r] New on-the-fly compilation to get faster inferred information
- :bug: [#167](https://github.com/giraud/reasonml-idea-plugin/issues/167) Go-to definition is not working correctly for deconstructed tuples
- :house: Compatible with bucklescript 7.2
## 0.85 - 2020/02/04
- :rocket: File | New menu as OCaml and ReasonML templates
- :rocket: Display cmt file in a custom editor
- :rocket: [#200](https://github.com/giraud/reasonml-idea-plugin/issues/200) OCaml SDK can be set at the module level
- :house: Fix bsc path
- :house: New indexing of file modules
- :house: Use Rincewind 0.6
- :house: [#199](https://github.com/giraud/reasonml-idea-plugin/issues/199) Prepare for dynamic plugins
- :house: [#196](https://github.com/giraud/reasonml-idea-plugin/issues/196) Redesign content root finding
## 0.84 - 2019/12/10
- :bug: [#197](https://github.com/giraud/reasonml-idea-plugin/issues/197) java.lang.Throwable: Assertion failed: Undoable actions allowed inside commands only
- :bug: [#192](https://github.com/giraud/reasonml-idea-plugin/issues/192) Undoing causes Following files have changes that cannot be undone: error
- :house: Fix a stub exception for functor parameter
## 0.83 - 2019/12/03
New versioning scheme: each intellij release has its own plugin version.
For example, 2019.3 can only use plugin 0.83-2019.3.
This is much more work when developing the plugin but it is needed because API changes between releases
can have many incompatibilities. The consequence is that I won't be able to maintain too
many versions active. Older version of the plugin will be frozen and won't get any updates.
## [0.82] - 2019/11/15
- :rocket: Importing a Dune project automatically configure project structure : SDK, module and project.
SDK can be automatically downloaded and indexed.
- :rocket: Dune stanzas visible in the structure view
- :rocket: Dune stanzas can be folded when they span on multiple lines
- :bug: [#189](https://github.com/giraud/reasonml-idea-plugin/issues/189) ![o] Structure panel missing members/parse problem for `while`
- :bug: [#175](https://github.com/giraud/reasonml-idea-plugin/issues/175) ![o] Structure panel missing top level functions defined after nested `let foo = function`
- :house: Fix bs version extractor (format changed in bucklescript 6.2.1)
- :house: Improved Dune parser
## [0.81] - 2019/10/17
- :bug: [#185](https://github.com/giraud/reasonml-idea-plugin/issues/185) `gradle verifyPlugin` fails
- :bug: [#156](https://github.com/giraud/reasonml-idea-plugin/issues/156) Assigning any value to new variable confuses plugin
- :bug: [#88](https://github.com/giraud/reasonml-idea-plugin/issues/88) ![r] ![o] GoTo/Declaration not looking for locally-defined symbol
- :bug: [#83](https://github.com/giraud/reasonml-idea-plugin/issues/83) ![r] ![o] Support GoTo/Declaration for function-local symbols
- :nail_care: Try to improve quick navigation doc
- :house: ![o] Parsing directives (`#if`, `#else`, `#end`)
- :house: Get inferred type from definition if not found in usage
- :house: Some deduplication of pervasives expressions in free completion contributor
- :house: Work on signature conversion (partial conversion)
- :house: Better dot completion when module is an alias (ex: Belt.Map.String.<caret>)
## [0.80] - 2019/09/23
- :bug: [#155](https://github.com/giraud/reasonml-idea-plugin/issues/155) ![r] Quick documentation is not showing inside parenthesis
- :bug: [#133](https://github.com/giraud/reasonml-idea-plugin/issues/133) Syntax error popup is truncated
- :bug: [#27](https://github.com/giraud/reasonml-idea-plugin/issues/27) ![o] Reworked the uncommenter
- :nail_care: ![r] Better function folding
- :nail_care: ![r] Better parsing/highlighting of js template string
- :nail_care: Remove custom syntax highlighting for `options` in default style settings
- :house: rework Bs output listener, add test
## [0.79] - 2019/08/28
- :bug: [#176](https://github.com/giraud/reasonml-idea-plugin/issues/176) Functions missing in structure panel after "while+match" code
- :bug: [#170](https://github.com/giraud/reasonml-idea-plugin/issues/170) Functions in struct in "module : sig ... end = struct ... end" not shown in Structure panel
- :rocket: Add line marker for inner module
- :nail_care: Don't annotate interface file
- :house: Improve module resolution when it's only found in implementation file
- :house: Better dot completion for inner module in impl file
- :house: Remove the perf warning for LineMarker
## 0.78.4 - 2019/08/17
- :bug: [#177](https://github.com/giraud/reasonml-idea-plugin/issues/177) Exception: "Access is allowed from event dispatch thread only."
- :bug: [#172](https://github.com/giraud/reasonml-idea-plugin/issues/172) 2019.2 error
- :house: Try to look up bsb and refmt in node_modules/.bin dir to improve support of monorepo. Thanks to [@Coobaha](https://github.com/Coobaha)
## 0.78.2 - 2019/07/02
- :bug: [#173](https://github.com/giraud/reasonml-idea-plugin/issues/173) Fixed exception in Webstorm: gutter icons are only available in java-based IDE
- :bug: [#172](https://github.com/giraud/reasonml-idea-plugin/issues/172) Fixed exceptions in 2019.2 EAP
- :house: Jetbrains recommendation: moving project components to service components. Expected faster startup
## 0.78.1 - 2019/06/24
- :nail_care: Quick doc improvement on resolved elements for ReasonML (ctrl+hover)
- :house: Some type conversion work started (partial implementation)
- :house: Resolving variants with locally open path
- :house: Index and resolve record fields
- :house: Rincewind no more downloaded if already present
## 0.77 - 2019/06/05
- :bug: [#166](https://github.com/giraud/reasonml-idea-plugin/issues/166) Indexing of Js.t
- :house: ![r] Some quick doc improvement on resolved elements for ReasonML (ctrl+hover)
## 0.76 - 2019/04/24
- :rocket: Support for ocaml 4.0.6 (Bs 6+)
- :bug: [#165](https://github.com/giraud/reasonml-idea-plugin/issues/165) Autocompletion inside comments
- :bug: [#161](https://github.com/giraud/reasonml-idea-plugin/issues/161) Indexing exception
- :bug: [#160](https://github.com/giraud/reasonml-idea-plugin/issues/160) Autocompletion is not using module interface
## 0.75.1 - 2019/04/16
- :bug: [#154](https://github.com/giraud/reasonml-idea-plugin/issues/154) Remove unwanted end of line after reformat
- :bug: [#153](https://github.com/giraud/reasonml-idea-plugin/issues/153) Split tuple items in structure view for let expressions
- :bug: [#152](https://github.com/giraud/reasonml-idea-plugin/issues/152) Add a check to prevent exception
- :house: Fix alpha sort on open/include in structure view
- :house: Improved OCaml parser
- :house: refmt is set to 80 cols by default
- :house: add missing file
## 0.74 - 2019/03/25
- :rocket: ODoc formatting when displaying special comments (ctrl+q), with the following limitation: element must be resolved, and only a subset of syntax is supported
- :bug: [#153](https://github.com/giraud/reasonml-idea-plugin/issues/153) Structure panel for let fn and let (..)
- :bug: [#151](https://github.com/giraud/reasonml-idea-plugin/issues/151) Fix parameters hints (is empty)
- :bug: [#150](https://github.com/giraud/reasonml-idea-plugin/issues/150) Include expressions from include keyword
- :bug: [#148](https://github.com/giraud/reasonml-idea-plugin/issues/148) Don't auto-reformat ml/mli files
- :house: Redesign completion provider
- :house: Upgraded minimal supported version of intellij product to 173
## 0.73 - 2019/03/12
- :rocket: Implement a (basic) related line marker
- :rocket: Introduce a new OCaml module
- :nail_care: Display a message at the end of the compilation
- :bug: [#149](https://github.com/giraud/reasonml-idea-plugin/issues/149) ![o] ReasonML confused by .mly (yacc) files; structure panel shows most of the grammar on one very long line
- :house: A new file based index
- :house: Remove basic OCaml types detection in lexer
## 0.72 - 2019/02/01
- :rocket: Highlight of dune file
- :rocket: Add a checkbox in Reason settings to disable bucklescript
- :nail_care: Display module path in 'go to class' popup
- :bug: [#126](https://github.com/giraud/reasonml-idea-plugin/issues/126) ![r] Function parameter info attempts to show return type
- :bug: [#122](https://github.com/giraud/reasonml-idea-plugin/issues/122) Make error locations in bucklescript tool window clickable
- :house: Use rincewind 0.4
## 0.71 - 2019/01/23
- :bug: [#136](https://github.com/giraud/reasonml-idea-plugin/issues/121) ![r] ![o] Unicode characters inside strings turn into question marks
- :bug: [#135](https://github.com/giraud/reasonml-idea-plugin/issues/135) ![o] Top-level declaration following "let f = function ... and" doesn't appear in the structure panel
- :bug: [#109](https://github.com/giraud/reasonml-idea-plugin/issues/109) ![r] ![o] Reformat interface
- :house: 2017.2 is the minimal idea version supported
## 0.70 - 2019/01/18
- :rocket: Handle single line comments in Reason files
- :rocket: Completion on open/include
- :rocket: Live templates for reason-react
- :rocket: Naive navigation between code/test modules (must end by _test or _spec)
- :nail_care: Add functor icon
- :nail_care: Reworked files icons
## 0.69.1 - 2018/12/17
- :rocket: Automatically adds parenthesis for 'Some'
- :rocket: add basic highlighting for .mll and .mly
- :bug: Fix record field parsing when multiple annotations are used
- :house: Better completion (variants, signatures)
- :bug: [#121](https://github.com/giraud/reasonml-idea-plugin/issues/121) ![r] ![o] Show Functor structure
- :bug: [#120](https://github.com/giraud/reasonml-idea-plugin/issues/120) ![r] Incorrect highlighting of JSX being a function parameter
## 0.67.2 - 2018/11/16
- :house: ![r] Improve JSX parsing
- :bug: [#116](https://github.com/giraud/reasonml-idea-plugin/issues/116) ![o] Structure panel: show items defined in modules
- :bug: [#105](https://github.com/giraud/reasonml-idea-plugin/issues/105) ![o] Missing/incorrect structure info for function named "string"
## 0.67.1 - 2018/11/10
- :bug: [#115](https://github.com/giraud/reasonml-idea-plugin/issues/115) ![o] "end" highlighted the same way as an unmatched parenthesis
- :bug: [#113](https://github.com/giraud/reasonml-idea-plugin/issues/113) ![r] Function parsing is not correct
## 0.67 - 2018/10/27
- :rocket: [#112](https://github.com/giraud/reasonml-idea-plugin/issues/112) Build hotkeys
- :bug: [#111](https://github.com/giraud/reasonml-idea-plugin/issues/111) Bsb window actions are not working outside of reason file
- :bug: [#108](https://github.com/giraud/reasonml-idea-plugin/issues/108) Reason language id in markdown preview
- :bug: [#106](https://github.com/giraud/reasonml-idea-plugin/issues/106) Inconsistent highlighting of matching (), [] and {}
## 0.66.2 - 2018/10/23
- :house: Deleted virtual file listener because they are shared between projects. Now using editor listeners.
- :house: Reworked the compilers code
## 0.65.1 - 2018/10/18
- :bug: Dune file were no more editable because of a change in the parser
- :rocket: ![r] Parameter info (when possible) using ctrl-p
- :rocket: [#97](https://github.com/giraud/reasonml-idea-plugin/issues/97) ![r] ![o] Support for rtop / RPEL as tool window
- :house: ![r] JSX completion can find inner component modules
- :house: improve parser (function parameters, variant constructor, signature)
- :bug: Transform compiler and refmt to project component, to fix incorrectly shared confs
## 0.64 - 2018/10/08
- :rocket: ![r] Js language injection in [%raw] blocks
- :nail_care: ![r] Better annotation parsing
- :nail_care: ![r] ![o] Add missing keywords in highlighter
- :bug: [#67](https://github.com/giraud/reasonml-idea-plugin/issues/67) Curly braces intentions are broken
## 0.63 - 2018/09/20
- :nail_care: [#98](https://github.com/giraud/reasonml-idea-plugin/issues/98) Add dates to changelog
- :bug: Renaming inner module should work
- :bug: [#99](https://github.com/giraud/reasonml-idea-plugin/issues/99) ![r] ![o] Incorrect syntax highlighting when a comment contains "*)" (including the quotes)
- :bug: [#95](https://github.com/giraud/reasonml-idea-plugin/issues/95) ![r] ![o] Class names don't appear in Structure panel
- :bug: Fix a bug that prevent plugin to work with 2018.3-EAP
## 0.62.1 - 2018/09/06
- :rocket: Add a 'make' button to the bs console
- :bug: [#62](https://github.com/giraud/reasonml-idea-plugin/issues/62) ![o] Awkward behavior when typing comments
- :bug: [#27](https://github.com/giraud/reasonml-idea-plugin/issues/27) Uncommenting nested comments is incorrect
## 0.61 - 2018/08/29
- :nail_care: [#92](https://github.com/giraud/reasonml-idea-plugin/issues/92) Changing icons
- :bug: Fixed a bug that prevented 'find usages' to work on lower symbols
- :bug: [#89](https://github.com/giraud/reasonml-idea-plugin/issues/89) Renaming variables doesn't work
- :bug: [#94](https://github.com/giraud/reasonml-idea-plugin/issues/94) NPE in findBaseRootFromFile
## 0.60.2 - 2018/07/31
- :nail_care: [#59](https://github.com/giraud/reasonml-idea-plugin/issues/59) Colored output in Bucklescript tab
- :bug: [#90](https://github.com/giraud/reasonml-idea-plugin/issues/90) IllegalArgumentException when clicking on an entry in "Structures" to go to a symbol
- :house: Parsers updated
## 0.59.1 - 2018/07/25
- :rocket: You can use 'Go to class' to find OCaml/ReasonMl modules
- :bug: [#78](https://github.com/giraud/reasonml-idea-plugin/issues/78) ![o] Let symbol missing in structure panel
- :bug: [#82](https://github.com/giraud/reasonml-idea-plugin/issues/82) Exception for GoTo/Declaration of a function parameter
- :bug: [#87](https://github.com/giraud/reasonml-idea-plugin/issues/87) NullPointerException at jpsplugin.com.reason.Platform.findBaseRootFromFile
## 0.59 - 2018/07/19
- :rocket: [#71](https://github.com/giraud/reasonml-idea-plugin/issues/71) Monorepo with multiple bs projects
- :nail_care: ![o] 'let _' is not shown in the structure panel
- :bug: Fix (again) property completion in JSX after rework on references has been done
## 0.58.1 - 2018/07/18
- :bug: [#79](https://github.com/giraud/reasonml-idea-plugin/issues/79) IDE crash
- :bug: [#77](https://github.com/giraud/reasonml-idea-plugin/issues/77) Show non-alphanumeric function names such as ">>=" in the structure panel
## 0.58 - 2018/07/12
This release contains a big rewrite of how modules are referenced, it may break things that were working before (ex: find usages).
- :bug: [#72](https://github.com/giraud/reasonml-idea-plugin/issues/72) Autocomplete not working in uncurried function
## 0.57.1 - 2018/07/10
- :rocket: Some record field completion
- :bug: [#66](https://github.com/giraud/reasonml-idea-plugin/issues/66) Go To + module alias
- :house: ![o] Better module path resolution
- :house: Improved parsers
## 0.56
- :rocket: ![r] Go to symbol is working for external/let mainly
- :rocket: ![r] ctrl-hover on a lower symbol display its type (still wip, not working for all symbols)
- :bug: ![r] JSX attribute completion with reason-react 0.4.2 (from external to type)
## 0.55.1
* :house: fix editor freeze when too many cmt/i files are updated
* :house: ![o] better completion
## 0.54
* :rocket: add "exposing" code lens to opens
* :house: completion uses opens and local opens
* :house: better path resolution for "go to" action
* :house: rincewind-0.2
* :house: improve parsers
## 0.53
* :rocket: ![r] ![o] improve parsers
* :rocket: ![r] improve braces intention
* :bug: [#65](https://github.com/giraud/reasonml-idea-plugin/issues/65) refmt not working in .rei
## 0.52
* :rocket: ![o] Pair match in OCaml: struct/end and sig/end
* :rocket: [#53](https://github.com/giraud/reasonml-idea-plugin/issues/53) ![r] Implemented intentions
* :nail_care: Add bool/char/int/float/string as keywords
* :nail_care: [#64](https://github.com/giraud/reasonml-idea-plugin/issues/53) Handle warning message from bsb
* :house: Protect against concurrent run of bsb compilation process
## 0.51.1
* :bug: Fix [#61](https://github.com/giraud/reasonml-idea-plugin/issues/61)
* :house: Slightly better bootstrap for type inference
## 0.51
* :bug: [#52](https://github.com/giraud/reasonml-idea-plugin/issues/52) Fix problem when parsing JSX tag names
* :house: Type annotation is now using a native cmt extractor (Windows, Linux, OSX)
## 0.50
* :nail_care: [#55](https://github.com/giraud/reasonml-idea-plugin/issues/55) Sorry, no more facets: they can't be used outside Idea. Settings can be found in Project settings and they are per project
## 0.49
* :rocket: [#47](https://github.com/giraud/reasonml-idea-plugin/issues/47) No more JVM properties 'reasonBsb' and 'reasonRefmt', configuration is done via facet
## 0.48.1
* :bug: [#51](https://github.com/giraud/reasonml-idea-plugin/issues/51) Fix a NPE in OCaml
## 0.48
* :house: Fix folding code
* :house: Better locate js.ml, belt.ml
* :house: Add Pervasives to completion
## 0.47.1
* :bug: Fixed 2 bugs (stack and 'editor not disposed' exceptions)
* :house: Fixed recursive type parsing problem with variants
## 0.47
* :rocket: Reason settings to change reformat column width
* :bug: [#45](https://github.com/giraud/reasonml-idea-plugin/issues/45) (classes have been deleted)
* :house: Better error extraction
* :house: Reformat on save can be activated (see doc)
## 0.46
* :bug: Fix version 0.45
* :rocket: Better error annotation (includes warnings)
## 0.45
* :nail_care: Bucklescript window has an icon
* :nail_care: File icons updated
* :bug: Goto action use the same path resolution than completion
* :rocket: Display signature for 'val' in completion popup
* :house: Parsers improvement
* :house: Reworked how to get the types from cmi files
## 0.44
* :bug: [#40](https://github.com/giraud/reasonml-idea-plugin/issues/40)
* :house: Improve completion on expressions
## 0.43
* :bug: [#35](https://github.com/giraud/reasonml-idea-plugin/issues/35) Type annotations not working with bs namespace
* :house: Improve completion on expressions
## 0.42
* :rocket: Add |. operator
* :rocket: goto action on file module is working
* :house: Improve completion on expressions
* :bug: Color settings no more blocked on loading spinner
## 0.41
* :house: Much improved performances for code lens
## 0.40
* :rocket: JSX completion (tag/attribute)
* :rocket: Variant names can be highlighted
* :house: Improved parsers
## 0.39
* :house: Better JSX parsing/highlighting
* :rocket: Code lens style is customisable
* :bug: [#33](https://github.com/giraud/reasonml-idea-plugin/issues/33)
* :rocket: Completion contributor for OCaml files (wip)
## 0.38
* :house: Better JSX parsing/highlighting
* :house: Fix inferred type annotations
* :house: Improved reason parser
## 0.37
* :bug: [#30](https://github.com/giraud/reasonml-idea-plugin/issues/30)
* :rocket: add completion when starting typing
* :house: Display types for val/external (completion popup)
* :house: Use mli file when present (Pervasives)
## 0.36
* :bug: [#29](https://github.com/giraud/reasonml-idea-plugin/issues/29)
* :house: Improve parsers
* :rocket: add keyword completion (start expression)
* :rocket: add module completion for open expression
## 0.35
* :bug: Fix an infinite loop in PsiModule
* :house: Improve parsers
## 0.34
* :bug: Fix a NPE in the folder code when comments are too small
* :bug: [#28](https://github.com/giraud/reasonml-idea-plugin/issues/28) IntelliJ error "Assertion failed: Too many element types registered. Out of (short) range." **maybe**
* :rocket: [#25](https://github.com/giraud/reasonml-idea-plugin/issues/25) Support .ml4 files
## 0.33
* :bug: [#22](https://github.com/giraud/reasonml-idea-plugin/issues/22) Mishandling of "Comment with Block Comment" action (CTL-SHIFT-/)
* :bug: [#21](https://github.com/giraud/reasonml-idea-plugin/issues/21) Error message: "startNotify called already"
## 0.32
* :nail_care: [#20](https://github.com/giraud/reasonml-idea-plugin/issues/20) Improved notification, add plugin name and link to github
* :rocket: 'go to' for Open expression (ctrl+click)
* :bug: [#19](https://github.com/giraud/reasonml-idea-plugin/issues/19) Character constant with an octal character not highlighted correctly
## 0.31
* :nail_care: val expressions (OCaml) are displayed in the structure view
* :nail_care: Exceptions are displayed in the structure view
* :bug: [#18](https://github.com/giraud/reasonml-idea-plugin/issues/18) Incorrect handling of characters in parser
* :house: Improve OCaml parser
## 0.30
* :house: Fix Idea 15 compatibility
* :house: Work done on indexing and referencing (module)
## 0.29
* :house: Redesigned the reason parser
## 0.28
* :rocket: Reformat action is working on ocaml source
* :house: Working on stub indexing and first implementation of completion using static analysis
## 0.27
* :bug: Fixed an IllegalArgumentException in KillableColoredProcessHandler
* :rocket: Structure view enabled for OCaml files
* :rocket: Inferring types using bsc if no merlin found (wip)
* :house: Using gradle for build
* :house: Improving reason parser
## 0.26
* :house: Improving parsers
## 0.25
* :rocket: [#14](https://github.com/giraud/reasonml-idea-plugin/issues/14) Add a very lightweight support of OCaml, to have more syntax coloring and no incorrect parser errors
## 0.24
* :nail_care: [#13](https://github.com/giraud/reasonml-idea-plugin/issues/13) Add Number and Type argument in color settings
## 0.23
* :house: New default values for bsb and refmt. bsb=> node_modules/bs-platform/bin/bsb.exe, refmt=> node_modules/bs-platform/bin/refmt3.exe
## 0.22
* :rocket: Parse Bsb super errors and use them to annotate source code
[r]: website/static/img/reason-file.png
[o]: website/static/img/ocaml-file.png
[n]: website/static/img/rescript-file.png
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
Contributions are welcome and encouraged.
Please see the [How to Contribute](https://giraud.github.io/reasonml-idea-plugin/docs/contributing/) page to get started.
================================================
FILE: ISSUE_TEMPLATE.md
================================================
plugin version:
### Description
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2017 Giraud
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# Reason IDEA Plugin
**!!! THIS PROJECT IS IN MAINTENANCE MODE !!!**
[**giraud.github.io/reasonml-idea-plugin**](https://giraud.github.io/reasonml-idea-plugin/)
ReasonML language plugin for IDEA. Supports Reason, ReScript and OCaml.

[](https://plugins.jetbrains.com/plugin/9440-reasonml)
[](https://discord.gg/65fz5jb)
[](https://opensource.org/licenses/MIT)
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[](#contributors)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

## 🏁 Quick Start
Download and install the [plugin from the JetBrains Plugin Marketplace](https://plugins.jetbrains.com/plugin/9440-reasonml).
> Make sure `"namespace": false` is set in `bsconfig.json` to enable inferred types hints in the editor.
## 📔 Documentation
Please see our [website](https://giraud.github.io/reasonml-idea-plugin/)
for the latest documentation and more information on how to get started.
## 💬 Language Features
| **Feature** | **OCaml (.ml)** | **Reason (.re, .rei)** | **ReScript (.res, .resi)** |
|-----------------------|:---------------:|:----------------------:|:--------------------------:|
| Syntax Support | ✅ | ✅ | ✅ |
| Reformat Code | ✅ | ✅ | |
| Structured View | ✅ | ✅ | ✅ |
| Code Folding | ✅ | ✅ | ✅ |
| JSX Support | ✅ | ✅ | ✅ |
| JS Language Injection | ✅ | ✅ | ✅ |
| Line & Block Comments | ✅ | ✅ | ✅ |
| Type Annotations | | ✅ | ✅ |
| Code Intentions | ✅ | ✅ | ✅ |
| Pair Braces Matching | ✅ | ✅ | ✅ |
## 🛠 Build Tool Support
| **Feature** | **BuckleScript** | **Dune** | **Esy** |
|----------------------|:----------------:|:--------:|:-------:|
| Install Dependencies | ✅ | ✅ | ✅ |
| Build Project | ✅ | ✅ | ✅ |
| Error Reporting | ✅ | ✅ | ✅ |
## 📝 Questions & Feedback
Please see the [FAQ](https://giraud.github.io/reasonml-idea-plugin/docs/get-started/faq)
page or [report](https://github.com/giraud/reasonml-idea-plugin/issues/new)
an issue.
Post any questions or feedback in [Discord](https://discord.gg/65fz5jb).
## 💁 How to Help
- Be patient.
- Give this project some love, star it or star the plugin page in the [JetBrains Plugin Marketplace](https://plugins.jetbrains.com/plugin/9440-reasonml-language-plugin).
- Report any issues [here](https://github.com/giraud/reasonml-idea-plugin/issues/new).
### Donate
<a href="https://www.paypal.me/rvgiraud"><img alt="Donate using PayPal" src="https://img.shields.io/badge/paypal-me-blue.svg"></a>
Support my work with paypal-me.
## 🍻 Thanks
To all the people who have donated, you are awesome !! Really, this is pure anonymous donation, and it blows my mind... I'm very grateful, and it's kinda stupid, but it keeps me motivated. So big thanks.
Many thanks also to the [JetBrains Team](https://www.jetbrains.com/?from=reasonml-idea-plugin) who provide me an OSS licence for their product.
## 📄 License
This project is [MIT licensed](https://github.com/giraud/reasonml-idea-plugin/blob/pooch/documentation/LICENSE).
================================================
FILE: build.gradle
================================================
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
plugins {
id('java')
id('org.jetbrains.intellij.platform') version('2.7.1') // IntelliJ Platform Gradle Plugin
}
// Configure project's dependencies
repositories {
mavenCentral()
// IntelliJ Platform Gradle Plugin Repositories Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-repositories-extension.html
intellijPlatform {
defaultRepositories()
}
}
java.sourceCompatibility = 21.0
// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog
dependencies {
testRuntimeOnly('org.opentest4j:opentest4j:1.3.0')
testImplementation('junit:junit:4.13.2')
// IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
intellijPlatform {
create(platformType, platformVersion)
// Plugin Dependencies. Uses `platformBundledPlugins` property from the gradle.properties file for bundled IntelliJ Platform plugins.
bundledPlugins(platformBundledPlugins.split(',').collect { it.trim() })
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace.
plugins(platformPlugins.split(',').collect { it.trim() })
instrumentationTools()
pluginVerifier()
testFramework(TestFrameworkType.Platform.INSTANCE)
testFramework(TestFrameworkType.Plugin.Java.INSTANCE)
}
}
group = pluginGroup
version = pluginVersion + '-' + platformVersion
intellijPlatform {
pluginConfiguration {
version = pluginVersion + '-' + platformVersion
ideaVersion {
sinceBuild = pluginSinceBuild
untilBuild = pluginUntilBuild
}
}
patchPluginXml {
sinceBuild = pluginSinceBuild
untilBuild = pluginUntilBuild
changeNotes = """
<ul>
<li>Fix infinite indexing (parameters)</li>
</ul>
<p><a href="https://github.com/giraud/reasonml-idea-plugin/blob/master/CHANGELOG.md">Full change log...</a></p>
<p/>
<p>To see how to integrate tools, go to the website.</p>
""".stripIndent()
}
pluginVerification {
ides {
recommended()
}
}
}
runIde {
systemProperty 'idea.is.internal', true
jvmArgs '-Xmx2G'
// MAVEN_CACHE C:\Users\hgiraud\scoop\persist\maven\.m2
// MAVEN_HOME C:\Users\hgiraud\scoop\apps\maven\current
// MAVEN_REPOSITORY C:\Users\hgiraud\scoop\persist\maven\.m2\repository
}
================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: gradle.properties
================================================
org.gradle.jvmargs=-XX:MaxHeapSize=512m -Xms512m -Xmx1g
pluginGroup = com.reason
pluginName = reasonml-plugin-idea
pluginVersion = 0.131
# http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html
pluginSinceBuild = 242.0
pluginUntilBuild = 242.*
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
# https://www.jetbrains.com/intellij-repository/releases
# https://www.jetbrains.com/intellij-repository/snapshots
platformType = IU
platformVersion = 2024.2
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
# https://plugins.jetbrains.com/plugin/13029-indices-viewer/versions
# https://plugins.jetbrains.com/plugin/227-psiviewer/versions
platformPlugins = com.jetbrains.hackathon.indices.viewer:1.28, PsiViewer:242.4697
platformBundledPlugins=com.intellij.java, JavaScript
# Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html
org.gradle.configuration-cache = true
# Enable Gradle Build Cache -> https://docs.gradle.org/current/userguide/build_cache.html
org.gradle.caching = true
org.gradle.configuration-cache.parallel=true
================================================
FILE: gradlew
================================================
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: settings.gradle
================================================
rootProject.name = 'reasonml-idea-plugin'
================================================
FILE: src/main/java/com/reason/FileHelper.java
================================================
package com.reason;
import com.intellij.json.*;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.intellij.psi.*;
import com.reason.ide.files.*;
import com.reason.ide.search.*;
import com.reason.lang.core.psi.*;
import jpsplugin.com.reason.Platform;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.nio.file.*;
import static com.reason.comp.ORConstants.BS_CONFIG_FILENAME;
import static com.reason.comp.ORConstants.RESCRIPT_CONFIG_FILENAME;
public class FileHelper {
private FileHelper() {
}
public static boolean isCompilable(@Nullable FileType fileType) {
return isReason(fileType)
|| isRescript(fileType)
|| isOCaml(fileType)
|| isOCamlLexer(fileType)
|| isOCamlParser(fileType);
}
public static boolean isBsConfigJson(@Nullable VirtualFile file) {
return file != null && BS_CONFIG_FILENAME.equals(file.getName());
}
public static boolean isRescriptConfigJson(@Nullable VirtualFile file) {
return file != null && RESCRIPT_CONFIG_FILENAME.equals(file.getName());
}
public static boolean isCompilerConfigJson(@Nullable VirtualFile file) {
if (file != null && file.getFileType() instanceof JsonFileType) {
String fileName = file.getName();
return RESCRIPT_CONFIG_FILENAME.equals(fileName) || BS_CONFIG_FILENAME.equals(fileName);
}
return false;
}
public static boolean isReason(@Nullable FileType fileType) {
return fileType instanceof RmlFileType || fileType instanceof RmlInterfaceFileType;
}
public static boolean isRescript(@Nullable FileType fileType) {
return fileType instanceof ResFileType || fileType instanceof ResInterfaceFileType;
}
private static boolean isOCamlLexer(@Nullable FileType fileType) {
return fileType instanceof MllFileType;
}
private static boolean isOCamlParser(@Nullable FileType fileType) {
return fileType instanceof MlyFileType;
}
public static boolean isOCaml(@Nullable FileType fileType) {
return fileType instanceof OclFileType || fileType instanceof OclInterfaceFileType;
}
public static boolean isNinja(@Nullable VirtualFile file) {
return file != null && "build.ninja".equals(file.getName());
}
public static boolean isInterface(@Nullable FileType fileType) {
return fileType instanceof RmlInterfaceFileType
|| fileType instanceof ResInterfaceFileType
|| fileType instanceof OclInterfaceFileType;
}
@NotNull
public static String shortLocation(@NotNull String path, @NotNull Project project) {
String newPath = Platform.getRelativePathToModule(path, project);
int nodeIndex = newPath.indexOf("node_modules");
if (0 <= nodeIndex) {
newPath = newPath.substring(nodeIndex);
}
int pos = newPath.lastIndexOf("/");
return 0 < pos ? newPath.substring(0, pos) : newPath;
}
public static @Nullable RPsiModule getPsiModule(@Nullable FileModuleData data, @NotNull Project project) { // not working with unit tests
VirtualFile vFile = data == null ? null : VirtualFileManager.getInstance().findFileByNioPath(Path.of(data.getPath()));
PsiFile file = vFile == null ? null : PsiManager.getInstance(project).findFile(vFile);
return file instanceof RPsiModule ? (RPsiModule) file : null;
}
}
================================================
FILE: src/main/java/com/reason/comp/CliType.java
================================================
package com.reason.comp;
import com.reason.comp.ORCompiler.*;
import org.jetbrains.annotations.*;
public interface CliType {
@NotNull CompilerType getCompilerType();
enum Bs implements CliType {
MAKE,
CLEAN_MAKE;
@Override
public @NotNull CompilerType getCompilerType() {
return CompilerType.BS;
}
}
enum Rescript implements CliType {
MAKE,
CLEAN;
@Override
public @NotNull CompilerType getCompilerType() {
return CompilerType.RESCRIPT;
}
}
enum Dune implements CliType {
BUILD,
CLEAN,
INSTALL,
VERSION;
@Override
public @NotNull CompilerType getCompilerType() {
return CompilerType.DUNE;
}
}
enum Esy implements CliType {
INSTALL,
BUILD,
SHELL;
@Override
public @NotNull CompilerType getCompilerType() {
return CompilerType.ESY;
}
}
}
================================================
FILE: src/main/java/com/reason/comp/CompilerOutputAnalyzer.java
================================================
package com.reason.comp;
import com.reason.ide.annotations.*;
import org.jetbrains.annotations.*;
import java.util.*;
import java.util.regex.*;
public interface CompilerOutputAnalyzer {
Pattern FILE_LOCATION = Pattern.compile("\\s*File \"(.+)\", lines? (\\d+)(?:-(\\d+))?, characters (\\d+)-(\\d+):");
Pattern SYNTAX_LOCATION = Pattern.compile("\\s*(.+):(\\d+):(\\d+)(?:-(\\d+)(?::(\\d+))?)?");
@NotNull List<OutputInfo> getOutputInfo();
void onTextAvailable(@NotNull String line);
}
================================================
FILE: src/main/java/com/reason/comp/CompilerOutputListener.java
================================================
package com.reason.comp;
import com.intellij.execution.process.*;
import com.intellij.openapi.application.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.util.*;
import com.intellij.psi.*;
import com.reason.ide.annotations.*;
import com.reason.ide.hints.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
public class CompilerOutputListener implements ProcessListener {
private static final Log LOG = Log.create("output");
private final Project myProject;
private final CompilerOutputAnalyzer myOutputAnalyzer;
public CompilerOutputListener(@NotNull Project project, @NotNull CompilerOutputAnalyzer outputAnalyzer) {
myProject = project;
myOutputAnalyzer = outputAnalyzer;
}
@Override
public void startNotified(@NotNull ProcessEvent event) {
myProject.getService(ErrorsManager.class).clearErrors();
}
@Override
public void processTerminated(@NotNull ProcessEvent event) {
List<OutputInfo> outputInfo = myOutputAnalyzer.getOutputInfo();
if (!outputInfo.isEmpty() && !myProject.isDisposed()) {
LOG.debug("Update errors manager with output results");
myProject.getService(ErrorsManager.class).addAllInfo(outputInfo);
}
ApplicationManager.getApplication()
.invokeLater(
() -> {
// When build is done, we need to refresh editors to be notified of the latest
// modifications
if (!myProject.isDisposed()) {
LOG.debug("Compilation done: read new types");
PsiFile selectedFile = InferredTypesService.getPsiFile(myProject);
if (selectedFile != null) {
selectedFile.putUserData(SignatureProvider.SIGNATURES_CONTEXT, null); // reset
InferredTypesService.queryTypes(myProject, selectedFile);
}
}
},
ModalityState.nonModal());
}
@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull Key outputType) {
String text = event.getText();
myOutputAnalyzer.onTextAvailable(text);
}
}
================================================
FILE: src/main/java/com/reason/comp/ORCompiler.java
================================================
package com.reason.comp;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
public interface ORCompiler {
enum CompilerType {
BS("BuckleScript"),
RESCRIPT("Rescript"),
DUNE("Dune"),
ESY("Esy");
private final String myDisplayName;
CompilerType(String displayName) {
myDisplayName = displayName;
}
public @NotNull String displayName() {
return myDisplayName;
}
}
@NotNull CompilerType getType();
boolean isConfigured(@NotNull Project project);
boolean isAvailable(@NotNull Project project);
@NotNull String getFullVersion(@Nullable VirtualFile file);
void runDefault(@NotNull VirtualFile file, @Nullable ORProcessTerminated<Void> onProcessTerminated);
void run(@Nullable VirtualFile file, @NotNull CliType cliType, @Nullable ORProcessTerminated<Void> onProcessTerminated);
boolean isAvailable();
}
================================================
FILE: src/main/java/com/reason/comp/ORCompilerConfigManager.java
================================================
package com.reason.comp;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.intellij.psi.*;
import com.reason.*;
import com.reason.comp.bs.*;
import com.reason.comp.rescript.*;
import com.reason.ide.*;
import org.jetbrains.annotations.*;
import java.util.*;
import static com.reason.comp.ORConstants.*;
/**
* Caches BsConfig available for project.
*/
@Service(Service.Level.PROJECT)
public final class ORCompilerConfigManager {
private final Project myProject;
private final Map<String, BsConfig> myConfigs = new HashMap<>();
public ORCompilerConfigManager(@NotNull Project project) {
myProject = project;
}
public void refresh(@NotNull VirtualFile configFile) {
BsConfig config = FileHelper.isBsConfigJson(configFile) ? BsConfigReader.read(configFile) : ResConfigReader.read(configFile);
myConfigs.put(configFile.getCanonicalPath(), config);
}
public @Nullable BsConfig getConfig(@Nullable VirtualFile configFile) {
BsConfig config = null;
String canonicalPath = configFile == null ? null : configFile.getCanonicalPath();
if (canonicalPath != null) {
config = myConfigs.get(canonicalPath);
if (config == null) {
config = FileHelper.isBsConfigJson(configFile) ? BsConfigReader.read(configFile) : ResConfigReader.read(configFile);
myConfigs.put(canonicalPath, config);
}
}
return config;
}
/**
* Finds the "nearest" bsconfig.json/rescript.json to a given file.
* Searches up the file-system until one file is found or the project root is reached.
*
* @param sourceFile starting point for search
* @return configuration file, if found
*/
public @Nullable VirtualFile findNearestConfigFile(@NotNull VirtualFile sourceFile) {
return ORFileUtils.findOneOfAncestor(myProject, sourceFile, RESCRIPT_CONFIG_FILENAME, BS_CONFIG_FILENAME);
}
public @Nullable BsConfig getNearestConfig(@Nullable VirtualFile sourceFile) {
VirtualFile configFile = sourceFile == null ? null : findNearestConfigFile(sourceFile);
return getConfig(configFile);
}
public @Nullable BsConfig getNearestConfig(@Nullable PsiFile psiFile) {
VirtualFile virtualFile = psiFile == null ? null : ORFileUtils.getVirtualFile(psiFile);
return getNearestConfig(virtualFile);
}
}
================================================
FILE: src/main/java/com/reason/comp/ORCompilerManager.java
================================================
package com.reason.comp;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.reason.*;
import com.reason.comp.ORCompiler.*;
import com.reason.comp.bs.*;
import com.reason.comp.dune.*;
import com.reason.comp.esy.*;
import com.reason.comp.rescript.*;
import com.reason.ide.files.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
@Service(Service.Level.PROJECT)
public final class ORCompilerManager {
private static final Log LOG = Log.create("compiler.manager");
private final @NotNull Project myProject;
public ORCompilerManager(@NotNull Project project) {
myProject = project;
}
public @Nullable ORCompiler getCompiler(@NotNull CliType cliType) {
return getCompiler(cliType.getCompilerType());
}
public @Nullable ORCompiler getCompiler(@NotNull CompilerType compilerType) {
ORCompiler compiler = myProject.getService(getCompilerClass(compilerType));
return compiler != null && compiler.isConfigured(myProject) ? compiler : null;
}
public @Nullable <T extends ORCompiler> T getCompiler(@NotNull Class<T> clazz) {
T compiler = myProject.getService(clazz);
return compiler != null && compiler.isConfigured(myProject) ? compiler : null;
}
public @Nullable ORResolvedCompiler<? extends ORCompiler> getCompiler(@Nullable VirtualFile editorFile) {
boolean shouldTraverse = editorFile != null && (editorFile.isDirectory() || FileHelper.isCompilable(editorFile.getFileType()));
return shouldTraverse ? traverseAncestorsForCompiler(editorFile.getParent(), new HashMap<>()) : null;
}
private @Nullable ORResolvedCompiler<? extends ORCompiler> traverseAncestorsForCompiler(@Nullable VirtualFile currentDir, @NotNull Map<String, VirtualFile> visited) {
// hit filesystem root, give up
if (currentDir == null) {
return null;
}
// we've already visited this directory, must have hit a symlink
if (visited.get(currentDir.getPath()) != null) {
return null;
}
visited.put(currentDir.getPath(), currentDir);
// look for a compiler configuration file in the current directory
CompilerVisitor compilerVisitor = new CompilerVisitor();
VfsUtil.visitChildrenRecursively(currentDir, compilerVisitor);
if (compilerVisitor.myCompiler != null) {
return compilerVisitor.myCompiler;
}
// we just checked the project root, we're done
if (currentDir.getPath().equals(myProject.getBasePath())) {
return null;
}
// move up a directory and try again
return traverseAncestorsForCompiler(currentDir.getParent(), visited);
}
private static @NotNull Class<? extends ORCompiler> getCompilerClass(@NotNull CompilerType compilerType) {
return switch (compilerType) {
case BS -> BsCompiler.class;
case RESCRIPT -> ResCompiler.class;
case DUNE -> DuneCompiler.class;
case ESY -> EsyCompiler.class;
};
}
private class CompilerVisitor extends VirtualFileVisitor<VirtualFile> {
ORResolvedCompiler<? extends ORCompiler> myCompiler = null;
CompilerVisitor() {
super(SKIP_ROOT, NO_FOLLOW_SYMLINKS, ONE_LEVEL_DEEP);
}
@Override
public boolean visitFile(@NotNull VirtualFile file) {
if (myCompiler != null || file.isDirectory()) {
return false;
}
if (EsyPackageJson.isEsyPackageJson(file)) {
EsyCompiler compiler = getCompiler(EsyCompiler.class);
myCompiler = compiler != null ? new ORResolvedCompiler<>(compiler, file, null) : null;
} else if (DuneFileType.isDuneFile(file)) {
// Will be empty if dune isn't configured, might be an esy project
DuneCompiler compiler = getCompiler(DuneCompiler.class);
myCompiler = compiler != null ? new ORResolvedCompiler<>(compiler, file, null) : null;
} else if (FileHelper.isRescriptConfigJson(file)) {
LOG.debug("Detected rescript(only) config", file);
ResCompiler rescript = getCompiler(ResCompiler.class);
if (rescript != null) {
VirtualFile binFile = ResPlatform.findBscExecutable(myProject, file);
myCompiler = binFile != null ? new ResResolvedCompiler(rescript, file, binFile) : null;
}
} else if (FileHelper.isBsConfigJson(file)) {
// Could be either a Rescript or a Bucklescript installation
ResCompiler rescript = getCompiler(ResCompiler.class);
VirtualFile binFile = ResPlatform.findBscExecutable(myProject, file);
if (rescript != null && binFile != null) {
myCompiler = new ResResolvedCompiler(rescript, file, binFile);
} else {
BsCompiler bucklescript = getCompiler(BsCompiler.class);
binFile = BsPlatform.findBscExecutable(myProject, file);
if (bucklescript != null && binFile != null) {
myCompiler = new BsResolvedCompiler(bucklescript, file, binFile);
}
}
}
return true;
}
}
}
================================================
FILE: src/main/java/com/reason/comp/ORCompilerOutputAnalyzer.java
================================================
package com.reason.comp;
import com.reason.ide.annotations.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
import java.util.regex.*;
import static java.lang.Integer.*;
public abstract class ORCompilerOutputAnalyzer implements CompilerOutputAnalyzer {
private final List<OutputInfo> myOutputInfo = new ArrayList<>();
protected @Nullable OutputInfo myCurrentInfo = null;
@Override
public @NotNull List<OutputInfo> getOutputInfo() {
return myOutputInfo;
}
@Override
public abstract void onTextAvailable(@NotNull String line);
protected @Nullable OutputInfo extractExtendedFilePositions(@NotNull Log LOG, @NotNull String line) {
Matcher matcher = FILE_LOCATION.matcher(line);
if (matcher.matches()) {
String path = matcher.group(1);
String lineStart = matcher.group(2);
String lineEnd = matcher.group(3);
String colStart = matcher.group(4);
String colEnd = matcher.group(5);
OutputInfo info = addInfo(path, lineStart, lineEnd, colStart, colEnd);
if (info.colStart < 0 || info.colEnd < 0) {
LOG.error("Can't decode columns for [" + line.replace("\n", "") + "]");
return null;
}
return info;
}
return null;
}
// C:\bla\bla\src\InputTest.res:1:11(-12(:22)?)?
protected @Nullable OutputInfo extractSyntaxErrorFilePosition(@NotNull Log LOG, @NotNull String line) {
Matcher matcher = SYNTAX_LOCATION.matcher(line);
if (matcher.matches()) {
String path = matcher.group(1);
String lineStart = matcher.group(2);
String colStart = matcher.group(3);
String lineEnd = null;
String colEnd = null;
String end1 = matcher.group(4);
String end2 = matcher.group(5);
if (end2 == null && end1 != null) {
colEnd = end1;
} else if (end2 != null) {
lineEnd = end1;
colEnd = end2;
}
OutputInfo info = addInfo(path, lineStart, lineEnd, colStart, colEnd);
if (info.colStart < 0 || info.colEnd < 0) {
LOG.error("Can't decode columns for [" + line.replace("\n", "") + "]");
return null;
}
return info;
}
return null;
}
protected @NotNull OutputInfo addInfo(@NotNull String path, @NotNull String lineStart, @Nullable String lineEnd, @NotNull String colStart, @Nullable String colEnd) {
OutputInfo info = new OutputInfo();
info.path = path;
info.lineStart = parseInt(lineStart);
info.colStart = parseInt(colStart);
info.lineEnd = lineEnd == null ? info.lineStart : parseInt(lineEnd);
info.colEnd = colEnd == null ? info.colStart : parseInt(colEnd);
if (info.colEnd == info.colStart) {
info.colEnd += 1;
}
myOutputInfo.add(info);
return info;
}
}
================================================
FILE: src/main/java/com/reason/comp/ORConstants.java
================================================
package com.reason.comp;
public class ORConstants {
public static final String RESCRIPT_EXE_NAME = "rescript";
public static final String RESCRIPT_CONFIG_FILENAME = "rescript.json";
public static final String RESCRIPT_DIR = "rescript";
public static final String BSB_EXE_NAME = "bsb";
public static final String BSC_EXE_NAME = "bsc";
public static final String REFMT_EXE_NAME = "refmt";
public static final String BS_CONFIG_FILENAME = "bsconfig.json";
public static final String BS_DIR = "bs-platform";
public static final String BS_JS_FILE_EXTENSION = "bs.js";
public static final String NODE_MODULES = "node_modules";
private ORConstants() {
}
}
================================================
FILE: src/main/java/com/reason/comp/ORPlatform.java
================================================
package com.reason.comp;
import com.intellij.openapi.project.*;
import com.intellij.openapi.util.*;
import com.intellij.openapi.vfs.*;
import com.reason.ide.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import static com.reason.comp.ORConstants.*;
import static jpsplugin.com.reason.Platform.*;
public class ORPlatform {
private static final Log LOG = Log.create("platform");
private ORPlatform() {
}
public static @Nullable VirtualFile findCompilerPathInNodeModules(@NotNull Project project, @Nullable VirtualFile configFile, @NotNull String dirName, @NotNull String binName) {
if (configFile == null) {
return null;
}
VirtualFile parentDir = configFile.getParent();
VirtualFile nodeModules = parentDir == null ? null : parentDir.findFileByRelativePath(NODE_MODULES);
if (parentDir != null && nodeModules == null) {
// In yarn workspaces, node_modules can be in a parent directory
nodeModules = ORFileUtils.findAncestor(project, parentDir, NODE_MODULES);
}
VirtualFile binRootDir = nodeModules == null ? null : nodeModules.findFileByRelativePath(dirName);
if (nodeModules != null && binRootDir == null) {
VirtualFile binary = nodeModules.findFileByRelativePath(".bin/" + binName);
if (binary != null) {
// This must be a mono-repo, only the .bin is found
VirtualFile canonicalFile = binary.getCanonicalFile();
if (canonicalFile != null) {
if (binary.is(VFileProperty.SYMLINK)) {
// Mac/Linux: .bin contains symlinks to real exe, must follow
VirtualFile canonicalDirectory = canonicalFile.getParent();
while (canonicalDirectory != null && !dirName.equals(canonicalDirectory.getName())) {
canonicalDirectory = canonicalDirectory.getParent();
}
return canonicalDirectory;
} else {
// Windows: no symlinks, only bat files
VirtualFile nodModules = ORFileUtils.findAncestor(project, nodeModules.getParent(), NODE_MODULES);
return nodModules == null ? null : nodeModules.findFileByRelativePath(dirName);
}
}
}
}
return binRootDir != null && binRootDir.isDirectory() ? binRootDir : null;
}
public static @Nullable VirtualFile findBinary(@NotNull VirtualFile binDir, @NotNull String exeName) {
String os = getOsPrefix();
if (os == null) {
LOG.warn("Unable to determine OS prefix");
return null;
}
VirtualFile executable;
// first, try to find platform-specific binary
executable = binDir.findFileByRelativePath(os + "/" + exeName + WINDOWS_EXECUTABLE_SUFFIX);
if (executable == null) {
// next, try to find platform-agnostic wrappers
executable = binDir.findFileByRelativePath(exeName + getOsBinaryWrapperExtension());
if (executable == null) {
// last, try old locations of binary
executable = binDir.findFileByRelativePath("bin/" + exeName + WINDOWS_EXECUTABLE_SUFFIX);
if (executable == null) {
executable = binDir.findFileByRelativePath("lib/" + exeName + WINDOWS_EXECUTABLE_SUFFIX);
}
}
}
return executable;
}
@VisibleForTesting
static @NotNull String getOsBinaryWrapperExtension() {
return SystemInfo.isWindows ? ".cmd" : "";
}
@VisibleForTesting
static @Nullable String getOsPrefix() {
if (SystemInfo.isWindows) {
return "win32";
}
if (SystemInfo.isLinux) {
return "linux";
}
if (SystemInfo.isMac) {
return "darwin";
}
return null;
}
}
================================================
FILE: src/main/java/com/reason/comp/ORResolvedCompiler.java
================================================
package com.reason.comp;
import com.intellij.openapi.vfs.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
/**
* When a content root file has been found, we can associate it to its corresponding compiler.
* Use ORCompilerManager to instantiate this class.
*/
public class ORResolvedCompiler<C extends ORCompiler> {
protected final C myCompiler;
protected final VirtualFile myConfigFile; // Compiler configuration file, like bsconfig.json or dune-project
protected final VirtualFile myBinFile;
public ORResolvedCompiler(@NotNull C compiler, @NotNull VirtualFile configFile, @Nullable VirtualFile binFile) {
myCompiler = compiler;
myConfigFile = configFile;
myBinFile = binFile;
}
public @NotNull ORCompiler.CompilerType getType() {
return myCompiler.getType();
}
public void runDefault(@NotNull VirtualFile file, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
myCompiler.runDefault(file, onProcessTerminated);
}
public @NotNull String getFullVersion() {
return myCompiler.getFullVersion(myConfigFile);
}
public @NotNull VirtualFile getConfigFile() {
return myConfigFile;
}
public @Nullable VirtualFile getContentRoot() {
return myConfigFile.getParent();
}
public @NotNull String getPath() {
return myBinFile == null ? "" : myBinFile.getPath();
}
}
================================================
FILE: src/main/java/com/reason/comp/ProcessFinishedListener.java
================================================
package com.reason.comp;
import com.intellij.execution.process.*;
import org.jetbrains.annotations.*;
public class ProcessFinishedListener extends ProcessAdapter {
private final long m_start;
public ProcessFinishedListener() {
this(System.currentTimeMillis());
}
public ProcessFinishedListener(long start) {
m_start = start;
}
@Override
public void processTerminated(@NotNull ProcessEvent event) {
long end = System.currentTimeMillis();
Object source = event.getSource();
if (source instanceof ProcessHandler) {
((ProcessHandler) source).notifyTextAvailable("Process finished in " + formatBuildTime(end - m_start) + "\n\n", ProcessOutputTypes.SYSTEM);
}
}
private static @NotNull String formatBuildTime(long milliSeconds) {
if (milliSeconds < 1000) {
return milliSeconds + "ms";
}
long seconds = milliSeconds / 1000;
final StringBuilder sb = new StringBuilder();
if (seconds >= 3600) {
sb.append(seconds / 3600).append("h ");
seconds %= 3600;
}
if (seconds >= 60 || !sb.isEmpty()) {
sb.append(seconds / 60).append("m ");
seconds %= 60;
}
if (seconds > 0 || !sb.isEmpty()) {
sb.append(seconds).append("s");
}
return sb.toString();
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsColoredProcessHandler.java
================================================
package com.reason.comp.bs;
import com.intellij.execution.*;
import com.intellij.execution.configurations.*;
import com.intellij.execution.process.*;
import com.intellij.openapi.util.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
class BsColoredProcessHandler extends KillableProcessHandler implements AnsiEscapeDecoder.ColoredTextAcceptor {
private final @NotNull AnsiEscapeDecoder m_ansiEscapeDecoder = new AnsiEscapeDecoder();
private final @Nullable ORProcessTerminated<Void> m_onProcessTerminated;
BsColoredProcessHandler(@NotNull GeneralCommandLine commandLine, @Nullable ORProcessTerminated<Void> onProcessTerminated) throws ExecutionException {
super(commandLine);
m_onProcessTerminated = onProcessTerminated;
}
@Override
protected void onOSProcessTerminated(int exitCode) {
super.onOSProcessTerminated(exitCode);
if (m_onProcessTerminated != null) {
m_onProcessTerminated.run(null);
}
}
@Override
public final void notifyTextAvailable(@NotNull final String text, @NotNull final Key outputType) {
m_ansiEscapeDecoder.escapeText(text, outputType, super::notifyTextAvailable);
}
@Override
public void coloredTextAvailable(@NotNull String text, @NotNull Key attributes) {
super.notifyTextAvailable(text, attributes);
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsCompiler.java
================================================
package com.reason.comp.bs;
import com.intellij.codeInsight.daemon.*;
import com.intellij.execution.process.*;
import com.intellij.execution.ui.*;
import com.intellij.notification.*;
import com.intellij.openapi.components.*;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.reason.comp.*;
import com.reason.hints.*;
import com.reason.ide.console.*;
import com.reason.ide.console.bs.*;
import com.reason.ide.settings.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.concurrent.atomic.*;
@Service(Service.Level.PROJECT)
public final class BsCompiler implements ORCompiler {
private static final Log LOG = Log.create("bs.compiler");
private final Project myProject;
private final AtomicBoolean myRefreshNinjaIsNeeded = new AtomicBoolean(true);
private final AtomicBoolean myProcessStarted = new AtomicBoolean(false);
private Boolean myDisabled = null; // Never call directly, use isDisabled()
private Ninja myNinja = new Ninja(null);
private BsCompiler(@NotNull Project project) {
myProject = project;
}
@Override
public @NotNull CompilerType getType() {
return CompilerType.BS;
}
public void refreshNinjaBuild() {
myRefreshNinjaIsNeeded.compareAndSet(false, true);
}
@Override
public @NotNull String getFullVersion(@Nullable VirtualFile file) {
return new BsProcess(myProject).getFullVersion(file);
}
public @NotNull String getNamespace(@NotNull VirtualFile sourceFile) {
BsConfig bsConfig = myProject.getService(ORCompilerConfigManager.class).getNearestConfig(sourceFile);
return bsConfig == null ? "" : bsConfig.getNamespace();
}
@Override
public void runDefault(@NotNull VirtualFile file, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
run(file, CliType.Bs.MAKE, onProcessTerminated);
}
@Override
public void run(@Nullable VirtualFile file, @NotNull CliType cliType, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
if (!isDisabled() && myProject.getService(ORSettings.class).isBsEnabled()) {
VirtualFile configFile = BsPlatform.findConfigFile(myProject, file);
BsConfig bsConfig = myProject.getService(ORCompilerConfigManager.class).getConfig(configFile);
if (configFile == null || bsConfig == null) {
return;
}
if (myProcessStarted.compareAndSet(false, true)) {
ProcessHandler bscHandler = new BsProcess(myProject).create(configFile, cliType, onProcessTerminated);
ConsoleView console = myProject.getService(ORToolWindowManager.class).getConsoleView(BsToolWindowFactory.ID);
if (bscHandler != null && console != null) {
long start = System.currentTimeMillis();
bscHandler.addProcessListener(new ProcessFinishedListener(start));
bscHandler.addProcessListener(new ProcessAdapter() {
@Override
public void processTerminated(@NotNull ProcessEvent event) {
myProcessStarted.compareAndSet(true, false);
LOG.debug("Compilation process terminated, restart daemon code analyzer for all edited files");
DaemonCodeAnalyzer.getInstance(myProject).restart();
}
});
console.attachToProcess(bscHandler);
bscHandler.startNotify();
myProject.getService(InsightManager.class).downloadRincewindIfNeeded(configFile);
}
} else {
myProcessStarted.compareAndSet(true, false);
}
}
}
@Override
public boolean isConfigured(@NotNull Project project) {
// BuckleScript doesn't require any project-level configuration
return true;
}
@Override
public boolean isAvailable(@NotNull Project project) {
return !BsPlatform.findConfigFiles(project).isEmpty();
}
public @Nullable String convert(@Nullable VirtualFile virtualFile, boolean isInterface, @NotNull String fromFormat, @NotNull String toFormat, @NotNull Document document) {
String result = null;
if (virtualFile != null) {
BsFormatProcess refmt = myProject.getService(BsFormatProcess.class);
String oldText = document.getText();
String newText = refmt.convert(virtualFile, isInterface, fromFormat, toFormat, oldText);
// additional protection
result = oldText.isEmpty() || newText.isEmpty() ? null : newText;
}
return result;
}
public @NotNull Ninja readNinjaBuild(@Nullable VirtualFile contentRoot) {
if (myRefreshNinjaIsNeeded.get() && contentRoot != null) {
VirtualFile ninjaFile = contentRoot.findFileByRelativePath("lib/bs/build.ninja");
if (ninjaFile != null) {
myNinja = new Ninja(FileUtil.readFileContent(ninjaFile));
}
}
return myNinja;
}
// endregion
private boolean isDisabled() {
if (myDisabled == null) {
myDisabled = Boolean.getBoolean("reasonBsbDisabled");
if (myDisabled) {
// Possible but you should NEVER do that
Notifications.Bus.notify(new ORNotification("Bsb", "Bucklescript is disabled", NotificationType.WARNING));
}
}
return myDisabled;
}
@Override
public boolean isAvailable() {
return !myProcessStarted.get();
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsConfig.java
================================================
package com.reason.comp.bs;
import org.jetbrains.annotations.*;
import java.util.*;
public class BsConfig {
private final String myName;
private final String myNamespace;
private final String myJsxVersion;
private final String myJsxMode;
private final boolean myUncurried;
private final Set<String> myExternals = new HashSet<>();
private final Set<String> mySources = new HashSet<>();
private final Set<String> myDevSources = new HashSet<>();
private final Set<String> myDeps = new HashSet<>();
private final Set<String> myBscFlags = new HashSet<>();
private final Set<String> myOpenedDeps = new HashSet<>();
private final String[] myPpx;
private boolean myUseExternalAsSource = false;
BsConfig(@NotNull String name, @Nullable String namespace, @Nullable Set<String> sources,
@Nullable Set<String> devSources, @Nullable Set<String> externals, @Nullable Set<String> deps,
@NotNull Set<String> bscFlags, @Nullable List<String> ppx,
@Nullable String jsxVersion, @Nullable String jsxMode, boolean uncurried) {
myName = name;
myNamespace = namespace == null ? "" : namespace;
myJsxVersion = jsxVersion;
myJsxMode = jsxMode;
myUncurried = uncurried;
myPpx = ppx == null ? new String[0] : ppx.toArray(new String[0]);
if (sources != null) {
mySources.addAll(sources);
}
if (devSources != null) {
myDevSources.addAll(devSources);
}
if (externals != null) {
myExternals.addAll(externals);
}
if (deps != null) {
myDeps.addAll(deps);
}
myBscFlags.addAll(bscFlags);
for (String flag : myBscFlags) {
if (flag.startsWith("-open ")) {
String dependency = flag.substring(6).trim();
if (!dependency.isEmpty()) {
myOpenedDeps.add(dependency);
}
}
}
}
public @NotNull String getNamespace() {
return myNamespace;
}
public boolean hasNamespace() {
return !myNamespace.isEmpty();
}
public @NotNull Set<String> getSources() {
return myUseExternalAsSource ? myExternals : mySources;
}
public @NotNull Set<String> getDevSources() {
return myDevSources;
}
public @NotNull String getName() {
return myName;
}
public @NotNull Set<String> getDependencies() {
return myDeps;
}
public @NotNull Set<String> getBscFlags() {
return myBscFlags;
}
public @NotNull Set<String> getOpenedDeps() {
return myOpenedDeps;
}
public @Nullable String getJsxVersion() {
return myJsxVersion;
}
public @Nullable String getJsxMode() {
return myJsxMode;
}
public boolean isUncurried() {
return myUncurried;
}
public @NotNull String[] getPpx() {
return myPpx;
}
public void setUseExternalAsSource(boolean useExternalAsSource) {
myUseExternalAsSource = useExternalAsSource;
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsConfigReader.java
================================================
package com.reason.comp.bs;
import static jpsplugin.com.reason.StringUtil.toFirstUpper;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
import com.intellij.openapi.vfs.VirtualFile;
import jpsplugin.com.reason.FileUtil;
import java.util.*;
import java.util.regex.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class BsConfigReader {
private static final Pattern NORMALIZE = Pattern.compile(",$");
private BsConfigReader() {
}
@NotNull
public static BsConfig read(@NotNull VirtualFile bsConfigFile) {
return read(bsConfigFile, false);
}
@NotNull
public static BsConfig read(@NotNull VirtualFile bsConfigFile, boolean useExternalAsSource) {
BsConfig config = parse(FileUtil.readFileContent(bsConfigFile));
config.setUseExternalAsSource(useExternalAsSource);
return config;
}
@NotNull
static BsConfig parse(@NotNull String content) {
String normalizedContent =
NORMALIZE
.matcher(content)
.replaceAll("")
.replaceAll(",[\\s\\n]*]", "]")
.replaceAll(",[\\s\\n]*}", "}");
JsonElement topElement = JsonParser.parseString(normalizedContent);
if (topElement.isJsonObject()) {
JsonObject top = topElement.getAsJsonObject();
String name = "";
JsonPrimitive nameProp = top.getAsJsonPrimitive("name");
if (nameProp != null && nameProp.isString()) {
name = nameProp.getAsString();
}
String namespace = null;
JsonPrimitive namespaceProp = top.getAsJsonPrimitive("namespace");
if (namespaceProp != null) {
if (namespaceProp.isBoolean()) {
boolean hasNamespace = namespaceProp.getAsBoolean();
namespace = hasNamespace ? toNamespace(name) : null;
} else if (namespaceProp.isString()) {
namespace = namespaceProp.getAsString();
}
}
// JSX
String jsxVersion = null;
String jsxMode = null;
// BS config: {reason: {react-jsx: 3}}
JsonElement reason = top.get("reason");
JsonObject reasonProp =
reason != null && reason.isJsonObject() ? top.getAsJsonObject("reason") : null;
if (reasonProp != null) {
JsonPrimitive jsxProp = reasonProp.getAsJsonPrimitive("react-jsx");
if (jsxProp != null && jsxProp.isNumber()) {
jsxVersion = Integer.toString(jsxProp.getAsInt());
}
} else {
JsonObject jsxProp = top.getAsJsonObject("jsx");
if (jsxProp != null) {
JsonPrimitive jsxVersionProp = jsxProp.getAsJsonPrimitive("version");
if (jsxVersionProp != null && jsxVersionProp.isNumber()) {
jsxVersion = Integer.toString(jsxVersionProp.getAsInt());
}
JsonPrimitive jsxModeProp = jsxProp.getAsJsonPrimitive("mode");
if (jsxModeProp != null && jsxModeProp.isString()) {
jsxMode = jsxModeProp.getAsString();
}
}
}
// Uncurried
boolean uncurried = true; // by default
JsonPrimitive uncurriedProp = top.getAsJsonPrimitive("uncurried");
if (uncurriedProp != null && uncurriedProp.isBoolean()) {
uncurried = uncurriedProp.getAsBoolean();
}
// PPX
List<String> ppx = new ArrayList<>();
JsonArray ppxProp = top.getAsJsonArray("ppx-flags");
if (ppxProp != null) {
for (JsonElement item : ppxProp) {
if (item.isJsonPrimitive() && ((JsonPrimitive) item).isString()) {
String itemValue = item.getAsString();
if (!itemValue.isEmpty()) {
ppx.add(itemValue);
}
}
}
}
// bs-platform/bsconfig.json
Set<String> externals = new HashSet<>();
JsonArray extIncludes = top.getAsJsonArray("bs-external-includes");
if (extIncludes != null) {
for (JsonElement item : extIncludes) {
if (item.isJsonPrimitive() && ((JsonPrimitive) item).isString()) {
externals.add(item.getAsString());
}
}
}
externals.add("lib/ocaml"); // Because of Belt !
Set<String> sources = new HashSet<>();
Set<String> devSources = new HashSet<>();
JsonElement srcProp = top.get("sources");
if (srcProp != null) {
readSources(srcProp, "", sources);
readSources(srcProp, "dev", devSources);
}
Set<String> deps = new HashSet<>();
JsonArray depsProp = top.getAsJsonArray("bs-dependencies");
if (depsProp != null) {
for (JsonElement item : depsProp) {
if (item.isJsonPrimitive() && ((JsonPrimitive) item).isString()) {
String itemValue = item.getAsString();
if (!itemValue.isEmpty()) {
deps.add(itemValue);
}
}
}
}
Set<String> flags = new HashSet<>();
JsonElement bscProp = top.get("bsc-flags");
if (bscProp != null && bscProp.isJsonArray()) {
for (JsonElement bscFlag : bscProp.getAsJsonArray()) {
if (bscFlag.isJsonPrimitive() && ((JsonPrimitive) bscFlag).isString()) {
String value = bscFlag.getAsString();
if (!value.isEmpty()) {
flags.add(value);
}
}
}
}
return new BsConfig(name, namespace, sources, devSources, externals, deps, flags, ppx, jsxVersion, jsxMode, uncurried);
}
throw new RuntimeException("Not a Bucklescript config");
}
@NotNull
private static String toNamespace(@NotNull String name) {
StringBuilder result = new StringBuilder(name.replaceAll("_", ""));
String[] tokens = result.toString().split("[-@/]");
result = new StringBuilder(toFirstUpper(tokens[0]));
if (1 < tokens.length) {
for (int i = 1; i < tokens.length; i++) {
result.append(toFirstUpper(tokens[i]));
}
}
return result.toString();
}
private static void readSources(
@NotNull JsonElement value, @NotNull String type, @NotNull Set<String> sources) {
if (value.isJsonPrimitive() && ((JsonPrimitive) value).isString()) {
if (type.isEmpty()) {
sources.add(value.getAsString());
}
} else if (value.isJsonObject()) {
assert value instanceof JsonObject;
String src = parseSourceItem((JsonObject) value, type);
if (src != null) {
sources.add(src);
}
} else if (value.isJsonArray()) {
for (JsonElement item : value.getAsJsonArray()) {
if (item.isJsonPrimitive()) {
if (((JsonPrimitive) item).isString() && type.isEmpty()) {
sources.add(item.getAsString());
}
} else if (item.isJsonObject()) {
String src = parseSourceItem((JsonObject) item, type);
if (src != null) {
sources.add(src);
}
}
}
}
}
@Nullable
private static String parseSourceItem(@NotNull JsonObject obj, @NotNull String type) {
JsonPrimitive srcProp = obj.getAsJsonPrimitive("dir");
if (srcProp != null) {
JsonPrimitive typeProp = obj.getAsJsonPrimitive("type");
String typeValue = typeProp != null && typeProp.isString() ? typeProp.getAsString() : "";
if (type.equals(typeValue)) {
if (srcProp.isString()) {
return srcProp.getAsString();
}
}
}
return null;
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsFormatProcess.java
================================================
package com.reason.comp.bs;
import com.intellij.openapi.components.*;
import com.intellij.openapi.editor.ex.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.reason.comp.rescript.*;
import com.reason.ide.settings.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.io.*;
import static jpsplugin.com.reason.Platform.*;
@Service(Service.Level.PROJECT)
public final class BsFormatProcess {
private static final Log LOG = Log.create("format.refmt");
private final Project m_project;
public BsFormatProcess(@NotNull Project project) {
m_project = project;
}
@NotNull
public String convert(@NotNull VirtualFile sourceFile, boolean isInterface, @NotNull String fromFormat, @NotNull String toFormat, @NotNull String code) {
VirtualFile refmtDir = BsPlatform.findRefmtExecutable(m_project, sourceFile);
if (refmtDir == null) {
refmtDir = ResPlatform.findRefmtExecutable(m_project, sourceFile);
if (refmtDir == null) {
LOG.debug("No refmt binary found, reformat cancelled");
return code;
}
}
String columnsWidth = m_project.getService(ORSettings.class).getFormatColumnWidth();
ProcessBuilder processBuilder =
new ProcessBuilder(refmtDir.getPath(), "-i", Boolean.toString(isInterface), "--parse=" + fromFormat, "-p", toFormat, "-w", columnsWidth);
if (LOG.isDebugEnabled()) {
LOG.debug("Reformatting " + sourceFile.getPath() + " (" + fromFormat + " -> " + toFormat + ") using " + columnsWidth + " cols for project [" + m_project + "]");
}
Process refmt = null;
try {
refmt = processBuilder.start();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(refmt.getOutputStream(), UTF8));
BufferedReader reader = new BufferedReader(new InputStreamReader(refmt.getInputStream(), UTF8));
BufferedReader errReader = new BufferedReader(new InputStreamReader(refmt.getErrorStream(), UTF8));
writer.write(code);
writer.flush();
writer.close();
Streams.waitUntilReady(reader, errReader);
StringBuilder msgBuffer = new StringBuilder();
if (!errReader.ready()) {
final boolean[] empty = {true};
reader
.lines()
.forEach(
line -> {
if (empty[0]) {
empty[0] = false;
} else {
msgBuffer.append('\n');
}
msgBuffer.append(line);
});
String newText = msgBuffer.toString();
if (!code.isEmpty() && !newText.isEmpty()) { // additional protection
boolean ensureNewLineAtEOF = EditorSettingsExternalizable.getInstance().isEnsureNewLineAtEOF();
boolean addNewLine = ensureNewLineAtEOF && newText.charAt(newText.length() - 1) != '\n';
return addNewLine ? newText + '\n' : newText;
}
}
} catch (IOException | RuntimeException e) {
LOG.warn(e);
} finally {
if (refmt != null) {
refmt.destroyForcibly();
}
}
// Something bad happened, do nothing
return code;
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsLineProcessor.java
================================================
package com.reason.comp.bs;
import com.reason.comp.*;
import com.reason.ide.annotations.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
import java.util.regex.*;
import static com.reason.comp.bs.BsLineProcessor.BuildStatus.*;
import static java.lang.Integer.*;
/**
* Line processor is a state machine.
*/
public class BsLineProcessor implements CompilerOutputAnalyzer {
private static final Pattern FILE_LOCATION = Pattern.compile("File \"(.+)\", line (\\d+), characters (\\d+)-(\\d+):\n?");
private static final Pattern POSITIONS = Pattern.compile("[\\s:]\\d+:\\d+(-\\d+(:\\d+)?)?$");
private final Log m_log;
private final List<OutputInfo> m_bsbInfo = new ArrayList<>();
@Override
public @NotNull List<OutputInfo> getOutputInfo() {
return m_bsbInfo;
}
private @Nullable OutputInfo m_latestInfo = new OutputInfo();
private @NotNull BuildStatus m_status = BuildStatus.unknown;
enum BuildStatus {
unknown, //
// warning steps
warningDetected,
warningLinePos,
warningSourceExtract,
warningMessage, //
// error steps
errorDetected,
errorLinePos,
errorSourceExtract,
errorMessage, //
// syntax error
syntaxError
}
public BsLineProcessor(Log log) {
m_log = log;
}
@Override
public void onTextAvailable(@NotNull String text) {
String trimmedText = text.trim();
if (m_log.isTraceEnabled()) {
m_log.trace(trimmedText);
}
switch (m_status) {
/*
Warning
*/
case warningDetected:
// Must contain warning location (file/position)
// ...path\src\File.re 61:10
m_latestInfo = extractFilePositions(text);
if (m_latestInfo != null) {
m_latestInfo.isError = false;
}
m_status = warningLinePos;
break;
case warningLinePos:
case errorLinePos:
if (m_latestInfo != null && !trimmedText.isEmpty()) {
m_status = m_latestInfo.isError ? errorSourceExtract : warningSourceExtract;
}
break;
case warningSourceExtract:
case errorSourceExtract:
if (m_latestInfo != null && trimmedText.isEmpty()) {
m_status = m_latestInfo.isError ? errorMessage : warningMessage;
}
break;
case warningMessage:
case errorMessage:
if (trimmedText.isEmpty() || text.charAt(0) != ' ') {
// create bsb info
if (m_latestInfo != null) {
m_latestInfo.message = m_latestInfo.message.trim();
}
m_status = unknown;
} else if (m_latestInfo != null) {
m_latestInfo.message += text;
}
break;
/*
Error
*/
case errorDetected:
// Must contain error location (file/position)
// ...path\src\File.re 61:10-23
m_latestInfo = extractFilePositions(text);
if (m_latestInfo != null) {
m_latestInfo.isError = true;
}
m_status = errorLinePos;
break;
default:
if (trimmedText.startsWith("Warning number")) {
reset();
m_status = warningDetected;
} else if (text.startsWith("Error:")) {
// It's a one line message
m_status = syntaxError;
if (m_latestInfo != null) {
m_latestInfo.message = text.substring(6).trim();
}
} else if (trimmedText.startsWith("We've found a bug for you")) {
if (m_status != syntaxError) {
reset();
m_status = errorDetected;
}
} else if (m_latestInfo != null && trimmedText.startsWith("Hint:")) {
m_latestInfo.message += ". " + text.trim();
} else if (trimmedText.startsWith("File")) {
m_latestInfo = extractExtendedFilePositions(trimmedText);
}
}
}
public void reset() {
m_status = unknown;
m_latestInfo = null;
}
// File "...path/src/Source.re", line 111, characters 0-3:
private @Nullable OutputInfo extractExtendedFilePositions(@Nullable String text) {
if (text != null) {
Matcher matcher = FILE_LOCATION.matcher(text);
if (matcher.matches()) {
String path = matcher.group(1);
String line = matcher.group(2);
String colStart = matcher.group(3);
String colEnd = matcher.group(4);
OutputInfo info = addInfo(path, line, colStart, colEnd);
if (info.colStart < 0 || info.colEnd < 0) {
m_log.error("Can't decode columns for [" + text + "]");
return null;
}
return info;
}
}
return null;
}
// "...path/src/Source.re 111:21-112:22" or " ...path/src/Source.re:111:21-112:22"
// "...path/src/Source.re 111:21-22" or "...path/src/Source.re:111:21-22"
// "...path/src/Source.re 111:21" or "...path/src/Source.re:111:21"
private @Nullable OutputInfo extractFilePositions(@Nullable String text) {
if (text == null) {
return null;
}
String trimmed = text.trim();
Matcher matcher = POSITIONS.matcher(trimmed);
// extract path and positions
if (matcher.find()) {
String positions = matcher.group();
// remove positions from text to get path
String path = text.replace(positions, "");
// remove leading space or colon from positions
positions = positions.substring(1);
// split "111:21-112:22" into ["111:21", "112:22"]
String[] startAndEndPositions = positions.split("-");
// only start positions found, ["111:21"]
String[] startLineAndCol = startAndEndPositions[0].split(":");
if (startAndEndPositions.length == 1) {
return addInfo(path, startLineAndCol[0], startLineAndCol[1], null, null);
}
// both start and end positions present
if (startAndEndPositions.length == 2) {
String[] endLineAndCol = startAndEndPositions[1].split(":");
// "111:21-22" --> "111:21-111:22"
if (endLineAndCol.length == 1) {
return addInfo(
path, startLineAndCol[0], startLineAndCol[1], startLineAndCol[0], endLineAndCol[0]);
}
// "111:21-112:22"
if (endLineAndCol.length == 2) {
return addInfo(
path, startLineAndCol[0], startLineAndCol[1], endLineAndCol[0], endLineAndCol[1]);
}
}
m_log.error("Can't decode columns for [" + text + "]");
}
return null;
}
private @NotNull OutputInfo addInfo(@NotNull String path, @NotNull String lineStart, @NotNull String colStart, @Nullable String lineEnd, @Nullable String colEnd) {
OutputInfo info = new OutputInfo();
info.path = path;
info.isError = true;
info.lineStart = parseInt(lineStart);
info.colStart = parseInt(colStart);
info.lineEnd = lineEnd == null ? info.lineStart : parseInt(lineEnd);
info.colEnd = colEnd == null ? info.colStart + 1 : parseInt(colEnd) + 1;
m_bsbInfo.add(info);
return info;
}
private @NotNull OutputInfo addInfo(@NotNull String path, @NotNull String line, @NotNull String colStart, @NotNull String colEnd) {
OutputInfo info = new OutputInfo();
info.path = path;
info.isError = true;
info.lineStart = parseInt(line);
info.colStart = parseInt(colStart);
info.lineEnd = info.lineStart;
info.colEnd = parseInt(colEnd);
if (info.colEnd == info.colStart) {
info.colEnd += 1;
}
m_bsbInfo.add(info);
return info;
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsNotification.java
================================================
package com.reason.comp.bs;
import com.intellij.ide.browsers.*;
import com.intellij.notification.*;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.project.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.net.*;
import static com.intellij.notification.NotificationType.*;
public class BsNotification {
private BsNotification() {
}
@Nls
public static void showBsbNotFound(String workingDirectory) {
ORNotification notification = new ORNotification(
"Bsb",
"<html>"
+ "Can't find bsb.\n"
+ "The working directory is '"
+ workingDirectory
+ "'.\n"
+ "Be sure that bsb is installed and reachable from that directory."
+ "</html>",
ERROR);
notification.addAction(new DumbAwareAction("Open documentation") {
@Override
public void actionPerformed(@NotNull AnActionEvent e) {
URI docURL = URI.create("https://giraud.github.io/reasonml-idea-plugin/docs/build-tools/bucklescript");
BrowserLauncher.getInstance().browse(docURL);
}
});
Notifications.Bus.notify(notification);
}
@Nls
public static void showWorkingDirectoryNotFound() {
Notifications.Bus.notify(
new ORNotification(
"BuckleScript",
"<html>Can't determine working directory.\nEnsure your project contains a <b>bsconfig.json</b> file.</html>",
ERROR));
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsPlatform.java
================================================
package com.reason.comp.bs;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.intellij.psi.search.*;
import com.reason.comp.*;
import com.reason.ide.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
import static com.reason.comp.ORConstants.*;
public class BsPlatform {
private static final Log LOG = Log.create("bs.platform");
private BsPlatform() {
}
public static @NotNull List<VirtualFile> findConfigFiles(@NotNull Project project) {
GlobalSearchScope scope = GlobalSearchScope.projectScope(project);
List<VirtualFile> validConfigs = FilenameIndex.getVirtualFilesByName(BS_CONFIG_FILENAME, scope).stream()
.filter(bsConfigFile -> {
VirtualFile bsbBin = ORPlatform.findCompilerPathInNodeModules(project, bsConfigFile, BS_DIR, BSC_EXE_NAME);
VirtualFile resBin = ORPlatform.findCompilerPathInNodeModules(project, bsConfigFile, RESCRIPT_DIR, BSC_EXE_NAME);
return bsbBin != null && resBin == null;
})
.sorted(ORFileUtils.FILE_DEPTH_COMPARATOR)
.toList();
if (LOG.isDebugEnabled()) {
LOG.debug("Valid configs for project=\"" + project.getName() + "\": [" + Joiner.join(",", validConfigs) + "]");
}
return validConfigs;
}
public static @Nullable VirtualFile findConfigFile(@NotNull Project project, @Nullable VirtualFile sourceFile) {
return sourceFile != null
? ORFileUtils.findAncestor(project, sourceFile, BS_CONFIG_FILENAME)
: findConfigFiles(project).stream().findFirst().orElse(null);
}
public static @Nullable VirtualFile findBsbExecutable(@NotNull Project project, @Nullable VirtualFile sourceFile) {
VirtualFile configFile = findConfigFile(project, sourceFile);
VirtualFile binDir = ORPlatform.findCompilerPathInNodeModules(project, configFile, BS_DIR, BSB_EXE_NAME);
return binDir != null ? ORPlatform.findBinary(binDir, BSB_EXE_NAME) : null;
}
public static @Nullable VirtualFile findBscExecutable(@NotNull Project project, @Nullable VirtualFile sourceFile) {
VirtualFile configFile = findConfigFile(project, sourceFile);
VirtualFile binDir = ORPlatform.findCompilerPathInNodeModules(project, configFile, BS_DIR, BSC_EXE_NAME);
return binDir != null ? ORPlatform.findBinary(binDir, BSC_EXE_NAME) : null;
}
public static @Nullable VirtualFile findRefmtExecutable(@NotNull Project project, @NotNull VirtualFile sourceFile) {
VirtualFile bsConfigFile = ORFileUtils.findAncestor(project, sourceFile, BS_CONFIG_FILENAME);
VirtualFile bsDir = ORPlatform.findCompilerPathInNodeModules(project, bsConfigFile, BS_DIR, BSC_EXE_NAME);
if (bsDir == null) {
return null;
}
VirtualFile binaryInBsPlatform;
// first, try standard name
binaryInBsPlatform = ORPlatform.findBinary(bsDir, REFMT_EXE_NAME);
if (binaryInBsPlatform == null) {
// next, try alternative names
binaryInBsPlatform = ORPlatform.findBinary(bsDir, "refmt3");
if (binaryInBsPlatform == null) {
binaryInBsPlatform = ORPlatform.findBinary(bsDir, "bsrefmt");
}
}
return binaryInBsPlatform;
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsProcess.java
================================================
package com.reason.comp.bs;
import com.intellij.codeInsight.daemon.*;
import com.intellij.execution.*;
import com.intellij.execution.configurations.*;
import com.intellij.execution.process.*;
import com.intellij.notification.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.reason.comp.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.io.*;
import static com.intellij.notification.NotificationType.*;
public final class BsProcess {
private final @NotNull Project myProject;
private @Nullable KillableProcessHandler myBsb;
public BsProcess(@NotNull Project project) {
myProject = project;
}
@Nullable ProcessHandler create(@NotNull VirtualFile source, @NotNull CliType cliType, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
try {
if (cliType instanceof CliType.Bs) {
return createProcessHandler(source, (CliType.Bs) cliType, onProcessTerminated);
} else {
Notifications.Bus.notify(new ORNotification("Bsb", "Invalid commandline type (" + cliType.getCompilerType() + ")", WARNING));
}
} catch (ExecutionException e) {
ORNotification.notifyError("Bsb", "Execution exception", e.getMessage());
}
return null;
}
@Nullable
private ProcessHandler createProcessHandler(@NotNull VirtualFile sourceFile, @NotNull CliType.Bs cliType, @Nullable ORProcessTerminated<Void> onProcessTerminated) throws ExecutionException {
killIt();
GeneralCommandLine cli = getGeneralCommandLine(sourceFile, cliType);
if (cli != null) {
myBsb = new BsColoredProcessHandler(cli, (_none) -> {
if (onProcessTerminated != null) {
onProcessTerminated.run(null);
}
// When build is done, we need to refresh editors to be notified of the latest modifications
DaemonCodeAnalyzer.getInstance(myProject).restart();
});
}
return myBsb;
}
private void killIt() {
if (myBsb != null) {
myBsb.killProcess();
myBsb = null;
}
}
@Nullable
private GeneralCommandLine getGeneralCommandLine(@NotNull VirtualFile sourceFile, @NotNull CliType.Bs cliType) {
VirtualFile bsConfigFile = BsPlatform.findConfigFile(myProject, sourceFile);
VirtualFile bsConfigDir = bsConfigFile != null ? bsConfigFile.getParent() : null;
if (bsConfigDir == null) {
BsNotification.showWorkingDirectoryNotFound();
return null;
}
String bsConfigRootPath = bsConfigDir.getPath();
VirtualFile bsbExecutable = BsPlatform.findBsbExecutable(myProject, sourceFile);
if (bsbExecutable == null) {
BsNotification.showBsbNotFound(bsConfigRootPath);
return null;
}
String bsbPath = bsbExecutable.getPath();
GeneralCommandLine cli = switch (cliType) {
case MAKE -> new GeneralCommandLine(bsbPath, "-make-world");
case CLEAN_MAKE -> new GeneralCommandLine(bsbPath, "-clean-world", "-make-world");
};
cli.withWorkDirectory(bsConfigRootPath);
cli.withEnvironment("NINJA_ANSI_FORCED", "1");
return cli;
}
public @NotNull String getFullVersion(@Nullable VirtualFile sourceFile) {
VirtualFile bsc = BsPlatform.findBscExecutable(myProject, sourceFile);
if (bsc != null) {
String[] command = new String[]{bsc.getPath(), "-version"};
try (InputStream inputStream = Runtime.getRuntime().exec(command).getInputStream()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
return reader.readLine();
} catch (IOException e) {
return "error: " + e.getMessage();
}
}
return "unknown (bsc not found)";
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/BsResolvedCompiler.java
================================================
package com.reason.comp.bs;
import com.intellij.openapi.vfs.*;
import com.reason.comp.*;
import org.jetbrains.annotations.*;
public class BsResolvedCompiler extends ORResolvedCompiler<BsCompiler> {
public BsResolvedCompiler(@NotNull BsCompiler compiler, @NotNull VirtualFile contentRootFile, @Nullable VirtualFile binFile) {
super(compiler, contentRootFile, binFile);
}
public @Nullable Ninja readNinja() {
return myCompiler.readNinjaBuild(getContentRoot());
}
}
================================================
FILE: src/main/java/com/reason/comp/bs/Ninja.java
================================================
package com.reason.comp.bs;
import org.jetbrains.annotations.*;
import java.util.*;
import java.util.stream.*;
import static java.util.Collections.*;
/**
* REASON format (8.2.0):
* ----------------------
* <p>
* g_pkg_flg = -bs-package-name bs-basic
* src_root_dir = U:\reason\projects\bs-basic
* bsc = "U:\reason\projects\bs-basic\node_modules\bs-platform\win32\bsc.exe"
* bsdep = "U:\reason\projects\bs-basic\node_modules\bs-platform\win32\bsb_helper.exe"
* warnings =
* bsc_flags =
* ppx_flags =
* g_dpkg_incls =
* g_ns =
* g_lib_incls = -I src -I "U:\reason\projects\bs-basic\node_modules\reason-react\lib\ocaml"
* rule build_ast_from_re
* command = $bsc $warnings -bs-jsx 3 $bsc_flags -o $out -bs-syntax-only -bs-binary-ast $in
* description = [34mBuilding[39m [2m${out}[22m
* build src\Foo.reast : build_ast_from_re $src_root_dir\src\Foo.re
* rule mk_deps
* command = $bsdep -hash 20de222cbd4694f33717b5139235334c $g_ns $in
* restat = 1
* description = [34mBuilding[39m [2m${out}[22m
* build src\Foo.d : mk_deps src\Foo.reast
* rule ml_cmj_cmi
* command = $bsc $g_pkg_flg $g_lib_incls $warnings $bsc_flags -o $out $in
* dyndep = $in_e.d
* restat = 1
* description = [34mBuilding[39m [2m${out}[22m
* build src\Foo.cmj | src\Foo.cmi $src_root_dir\lib\js\src\Foo.js : ml_cmj_cmi src\Foo.reast || src\Foo.d
* g_pkg_flg = $g_pkg_flg -bs-package-output commonjs:lib\js\src
* <p>
* <p>
* RESCRIPT format (8.4.0):
* ----------------
* <p>
* rescript = 1
* g_finger := U:\reason\projects\bs-basic\node_modules\reason-react\lib\ocaml\install.stamp
* rule astj
* command = "U:\reason\projects\bs-basic\node_modules\bs-platform\win32\bsc.exe" -bs-v 8.4.2 -bs-jsx 3 -absname -bs-ast -o $out $i
* o src\Foo.ast : astj ..\..\src\Foo.re
* rule deps
* command = "U:\reason\projects\bs-basic\node_modules\bs-platform\win32\bsb_helper.exe" -hash 20de222cbd4694f33717b5139235334c $in
* restat = 1
* o src\Foo.d : deps src\Foo.ast
* rule mij
* command = "U:\reason\projects\bs-basic\node_modules\bs-platform\win32\bsc.exe" -I src -I "U:\reason\projects\bs-basic\node_modules\reason-react\lib\ocaml" -bs-package-name bs-basic -bs-package-output commonjs:lib\js\$in_d:.js -bs-v $g_finger $i
* dyndep = 1
* restat = 1
* o src\Foo.cmj src\Foo.cmi ..\js\src\Foo.js : mij src\Foo.ast
*/
public final class Ninja {
private final @NotNull List<String> m_includes;
private final @NotNull List<String> m_ppxIncludes;
private final @NotNull List<String> m_pkgFlags;
private final @NotNull List<String> m_bscFlags;
private final @NotNull List<String> m_args = new ArrayList<>();
private final @NotNull List<String> m_argsDev = new ArrayList<>();
private final boolean m_isRescriptFormat;
public Ninja(@Nullable String contents) {
m_isRescriptFormat = contents != null && contents.startsWith("rescript");
m_includes = readIncludes(contents);
m_ppxIncludes = readPpxIncludes(contents);
m_pkgFlags = readPkgFlags(contents);
m_bscFlags = readBscFlags(contents);
if (m_isRescriptFormat) {
List<String> astj = extractRuleAstj(contents);
m_args.addAll(astj);
m_args.addAll(extractRuleMij(contents));
m_argsDev.addAll(astj);
m_argsDev.addAll(extractRuleMijDev(contents));
}
}
private @NotNull List<String> extractRuleAstj(@NotNull String contents) {
List<String> filteredTokens = new ArrayList<>();
int ruleMijPos = contents.indexOf("rule astj");
if (0 < ruleMijPos) {
int commandPos = contents.indexOf("command", ruleMijPos);
if (0 < commandPos) {
int commandEolPos = contents.indexOf("\n", commandPos);
String command = contents.substring(commandPos + 9, commandEolPos).trim();
String[] tokens = command.split(" ");
for (int i = 0; i < tokens.length; i++) {
String token = tokens[i];
if ("-ppx".equals(token)) {
filteredTokens.add(token);
filteredTokens.add(tokens[i + 1]);
}
}
}
}
return filteredTokens;
}
private @NotNull List<String> extractMijCommand(int rulePos, @NotNull String contents) {
int commandPos = contents.indexOf("command", rulePos);
if (0 < commandPos) {
int commandEolPos = contents.indexOf("\n", commandPos);
String command = contents.substring(commandPos + 9, commandEolPos).trim();
String[] tokens = command.split(" ");
List<String> filteredTokens = Arrays.stream(tokens).filter(s -> !s.isEmpty() && !"$g_finger".equals(s) && !"$i".equals(s) && !"-bs-v".equals(s) && !"-bs-package-output".equals(s) && !s.contains("$in_d:")).collect(Collectors.toList());
filteredTokens.remove(0);
return filteredTokens;
}
return emptyList();
}
private @NotNull List<String> extractRuleMij(@NotNull String contents) {
int ruleMijPos = contents.indexOf("rule mij");
if (0 < ruleMijPos) {
String ruleValue = contents.substring(ruleMijPos, ruleMijPos + 12);
if ("rule mij_dev".equals(ruleValue)) {
// search again
ruleMijPos = contents.indexOf("rule mij", ruleMijPos + 12);
if (0 < ruleMijPos) {
return extractMijCommand(ruleMijPos, contents);
}
} else {
return extractMijCommand(ruleMijPos, contents);
}
}
return emptyList();
}
private @NotNull List<String> extractRuleMijDev(@NotNull String contents) {
int ruleMijPos = contents.indexOf("rule mij_dev");
if (0 < ruleMijPos) {
return extractMijCommand(ruleMijPos, contents);
}
return emptyList();
}
public @NotNull List<String> getArgs() {
return m_args;
}
public @NotNull List<String> getArgsDev() {
return m_argsDev;
}
private @NotNull List<String> readIncludes(@Nullable String contents) {
List<String> result = new ArrayList<>();
if (contents == null) {
return result;
}
int g_lib_incls = contents.indexOf("g_lib_incls");
if (g_lib_incls >= 0) {
int end_of_g_lib_incls = contents.indexOf("\n", g_lib_incls);
String lineContents = contents.substring(g_lib_incls + 13, end_of_g_lib_incls).trim();
for (String token : lineContents.split("-I\\s")) {
String trimmedToken = token.trim();
if (!trimmedToken.isEmpty()) {
if (trimmedToken.startsWith("\"")) {
result.add(trimmedToken.substring(1, trimmedToken.length() - 1));
} else {
result.add(trimmedToken);
}
}
}
}
int g_dpkg_incls = contents.indexOf("g_dpkg_incls");
if (g_dpkg_incls >= 0) {
int end_of_g_dpkg_incls = contents.indexOf("\n", g_dpkg_incls);
String lineContents = contents.substring(g_dpkg_incls + 14, end_of_g_dpkg_incls).trim();
for (String token : lineContents.split("-I\\s")) {
String trimmedToken = token.trim();
if (!trimmedToken.isEmpty()) {
if (trimmedToken.startsWith("\"")) {
result.add(trimmedToken.substring(1, trimmedToken.length() - 1));
} else {
result.add(trimmedToken);
}
}
}
}
return result;
}
public @NotNull List<String> readPpxIncludes(@Nullable String contents) {
List<String> result = new ArrayList<>();
if (contents == null) {
return result;
}
int ppx_flags = contents.indexOf("ppx_flags");
if (ppx_flags >= 0) {
int end_of_ppx_flags = contents.indexOf("\n", ppx_flags);
String ppxLine = contents.substring(ppx_flags + 11, end_of_ppx_flags).trim();
String[] split = ppxLine.split("-ppx\\s");
for (String include : split) {
String trimmedInclude = include.trim();
if (!trimmedInclude.isEmpty()) {
if (trimmedInclude.startsWith("\"")) {
result.add(trimmedInclude.substring(1, trimmedInclude.length() - 1));
} else {
result.add(trimmedInclude);
}
}
}
}
return result;
}
private @NotNull List<String> readPkgFlags(@Nullable String contents) {
List<String> result = new ArrayList<>();
if (contents == null) {
return result;
}
int property = contents.indexOf("g_pkg_flg");
if (property >= 0) {
int end_of_property = contents.indexOf("\n", property);
String lineContents = contents.substring(property + 11, end_of_property).trim();
for (String tokens : lineContents.split("\\s")) {
String trimmedToken = tokens.trim();
if (!trimmedToken.isEmpty()) {
result.add(trimmedToken);
}
}
}
return result;
}
private @NotNull List<String> readBscFlags(@Nullable String contents) {
List<String> result = new ArrayList<>();
if (contents == null) {
return result;
}
int property = contents.indexOf("bsc_flags");
if (property >= 0) {
int end_of_property = contents.indexOf("\n", property);
String lineContents = contents.substring(property + 11, end_of_property).trim();
for (String token : lineContents.split("\\s")) {
String trimmedToken = token.trim();
if (!trimmedToken.isEmpty()) {
result.add(trimmedToken);
}
}
}
return result;
}
public void addInclude(@NotNull String source) {
m_includes.add(source);
}
public @NotNull List<String> getPkgFlags() {
return m_pkgFlags;
}
public @NotNull List<String> getBscFlags() {
return m_bscFlags;
}
public @NotNull List<String> getPpxIncludes() {
return m_ppxIncludes;
}
public @NotNull List<String> getIncludes() {
return m_includes;
}
public boolean isRescriptFormat() {
return m_isRescriptFormat;
}
}
================================================
FILE: src/main/java/com/reason/comp/dune/DuneCompiler.java
================================================
package com.reason.comp.dune;
import com.intellij.execution.process.*;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.reason.comp.*;
import com.reason.comp.esy.*;
import com.reason.hints.*;
import com.reason.ide.console.*;
import com.reason.ide.console.dune.*;
import com.reason.ide.settings.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.concurrent.atomic.*;
@Service(Service.Level.PROJECT)
public final class DuneCompiler implements ORCompiler {
private static final Log LOG = Log.create("dune.compiler");
private final @NotNull Project myProject;
private final AtomicBoolean myProcessStarted = new AtomicBoolean(false);
DuneCompiler(@NotNull Project project) {
myProject = project;
}
@Override
public @NotNull CompilerType getType() {
return CompilerType.DUNE;
}
@Override
public @NotNull String getFullVersion(@Nullable VirtualFile file) {
/* Dune version, but we don't care in fact. We are interested in OCaml version. *
GeneralCommandLine cli = new DuneProcess.DuneCommandLine(myProject, "dune")
.addParameters(CliType.Dune.VERSION)
.create(file);
try (InputStream inputStream = Runtime.getRuntime().exec(cli.getCommandLineString(), new String[]{}, cli.getWorkDirectory()).getInputStream()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
return reader.readLine();
} catch (IOException e) {
return "error: " + e.getMessage();
}
/*
String version = "unknown ";
version += " - not implemented yet";
//DuneFacet duneFacet = DunePlatform.getFacet(myProject, file);
//if (duneFacet == null) {
// return version + "(dune facet not found)";
//} else {
// Sdk odk = duneFacet.getODK();
// SdkTypeId sdkType = odk == null ? null : odk.getSdkType();
// if (sdkType == null) {
// return version + "(SDK not found)";
// }
// version = sdkType.getVersionString(odk);
//}
return "Dune ( OCaml:" + version + " )";
*/
ORSettings settings = myProject.getService(ORSettings.class);
return "Dune (OCaml:" + settings.getSwitchName() + ")";
}
@Override
public boolean isConfigured(@NotNull Project project) {
ORSettings settings = project.getService(ORSettings.class);
return !settings.getOpamLocation().isEmpty() && settings.getSwitchName() != null;
}
@Override
public boolean isAvailable(@NotNull Project project) {
return !EsyPlatform.isEsyProject(project) && !DunePlatform.findConfigFiles(project).isEmpty();
}
@Override
public void runDefault(@NotNull VirtualFile file, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
run(file, CliType.Dune.BUILD, onProcessTerminated);
}
@Override
public void run(@Nullable VirtualFile file, @NotNull CliType cliType, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
if (!(cliType instanceof CliType.Dune)) {
LOG.error("Invalid cliType for dune compiler. cliType = " + cliType);
return;
}
if (myProject.isDisposed()) {
return;
}
if (myProcessStarted.compareAndSet(false, true)) {
VirtualFile sourceFile = DunePlatform.findConfigFiles(myProject).stream().findFirst().orElse(null);
DuneConsoleView console = (DuneConsoleView) myProject.getService(ORToolWindowManager.class).getConsoleView(DuneToolWindowFactory.ID);
DuneProcess process = new DuneProcess(myProject);
ProcessHandler processHandler = sourceFile == null ? null : process.create(sourceFile, cliType, onProcessTerminated);
if (processHandler != null && console != null) {
processHandler.addProcessListener(new CompilerOutputListener(myProject, new DuneOutputAnalyzer()));
processHandler.addProcessListener(new ProcessFinishedListener());
processHandler.addProcessListener(new ProcessAdapter() {
@Override public void processTerminated(@NotNull ProcessEvent event) {
myProcessStarted.compareAndSet(true, false);
}
});
console.attachToProcess(processHandler);
process.startNotify();
myProject.getService(InsightManager.class).downloadRincewindIfNeeded(sourceFile);
} else {
myProcessStarted.compareAndSet(true, false);
}
}
}
@Override
public boolean isAvailable() {
return !myProcessStarted.get();
}
}
================================================
FILE: src/main/java/com/reason/comp/dune/DuneOutputAnalyzer.java
================================================
package com.reason.comp.dune;
import com.reason.comp.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
// See tests for error messages patterns
// Need some version aware analyzer ? see https://github.com/giraud/reasonml-idea-plugin/issues/174
public class DuneOutputAnalyzer extends ORCompilerOutputAnalyzer {
private static final Log LOG = Log.create("dune.output");
/*
unknown -> fileLocation
fileLocation -> message
-> sourceCode
sourceCode -> message
*/
enum OutputState {
unknown,
fileLocation,
sourceCode,
message,
}
private @NotNull OutputState myState = OutputState.unknown;
@Override
public void onTextAvailable(@NotNull String line) {
// State transition: unknown -> fileLocation
if (line.startsWith("File") && myState == OutputState.unknown) {
myCurrentInfo = extractExtendedFilePositions(LOG, line);
myState = OutputState.fileLocation;
}
// State transition: fileLocation|sourceCode -> message [ERROR]
else if (line.startsWith("Error:") && (myState == OutputState.fileLocation || myState == OutputState.sourceCode)) {
myState = OutputState.message;
if (myCurrentInfo != null) {
myCurrentInfo.isError = true;
myCurrentInfo.message = line.substring(6).trim();
}
}
// Error message might be on multiple lines
else if (myState == OutputState.message && myCurrentInfo != null && myCurrentInfo.isError && line.startsWith(" ")) {
boolean endMessage = true;
String trimmedLine = line.trim();
if (!trimmedLine.isEmpty() && !trimmedLine.startsWith("File")) {
myCurrentInfo.message += " " + trimmedLine;
endMessage = trimmedLine.endsWith(".");
}
if (endMessage) {
myState = OutputState.unknown;
myCurrentInfo = null;
}
}
// State transition: fileLocation|sourceCode -> message [WARNING]
else if (line.startsWith("Warning") && (myState == OutputState.fileLocation || myState == OutputState.sourceCode)) {
myState = OutputState.message;
if (myCurrentInfo != null) {
myCurrentInfo.isError = false;
int pos = line.indexOf(":");
myCurrentInfo.message = line.substring(pos + 1).trim();
}
}
// State transition: fileLocation -> sourceCode
else if (myState == OutputState.fileLocation) {
myState = OutputState.sourceCode;
}
// Fallback
else if (myState != OutputState.sourceCode && myState != OutputState.unknown) {
myState = OutputState.unknown;
myCurrentInfo = null;
}
}
}
================================================
FILE: src/main/java/com/reason/comp/dune/DunePlatform.java
================================================
package com.reason.comp.dune;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.*;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.vfs.*;
import com.intellij.psi.search.*;
import com.reason.ide.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
public class DunePlatform {
public static final String DUNE_EXECUTABLE_NAME = "dune";
public static final String DUNE_PROJECT_FILENAME = "dune-project";
public static final String DUNE_FILENAME = "dune";
public static final String LEGACY_JBUILDER_FILENAME = "jbuild";
private DunePlatform() {
}
public static @NotNull List<VirtualFile> findConfigFiles(@NotNull Project project) {
GlobalSearchScope scope = GlobalSearchScope.projectScope(project);
return FilenameIndex.getVirtualFilesByName(DUNE_PROJECT_FILENAME, scope).stream()
.sorted(ORFileUtils.FILE_DEPTH_COMPARATOR)
.toList();
}
public static @Nullable VirtualFile findContentRoot(@NotNull Project project, @NotNull VirtualFile sourceFile) {
Module module = Platform.getModule(project, sourceFile);
ModuleRootManager rootManager = module != null ? ModuleRootManager.getInstance(module) : null;
VirtualFile[] contentRoots = rootManager != null ? rootManager.getContentRoots() : null;
return contentRoots != null ? contentRoots[0] : null;
}
}
================================================
FILE: src/main/java/com/reason/comp/dune/DuneProcess.java
================================================
package com.reason.comp.dune;
import com.intellij.execution.*;
import com.intellij.execution.configurations.*;
import com.intellij.execution.process.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.reason.comp.*;
import com.reason.comp.ocaml.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
public final class DuneProcess {
private final @NotNull Project myProject;
private @Nullable KillableColoredProcessHandler myProcessHandler;
DuneProcess(@NotNull Project project) {
myProject = project;
}
// Wait for the tool window to be ready before starting the process
public void startNotify() {
if (myProcessHandler != null && !myProcessHandler.isStartNotified()) {
try {
myProcessHandler.startNotify();
} catch (Throwable e) {
// already done ?
}
}
}
public @Nullable ProcessHandler create(@NotNull VirtualFile source, @NotNull CliType cliType, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
try {
killIt();
GeneralCommandLine cli = new DuneCommandLine(myProject, DunePlatform.DUNE_EXECUTABLE_NAME)
.addParameters((CliType.Dune) cliType)
.create(source);
if (cli != null) {
myProcessHandler = new KillableColoredProcessHandler(cli);
if (onProcessTerminated != null) {
myProcessHandler.addProcessListener(new ProcessAdapter() {
@Override
public void processTerminated(@NotNull ProcessEvent event) {
onProcessTerminated.run(null);
}
});
}
}
return myProcessHandler;
} catch (ExecutionException e) {
ORNotification.notifyError("Dune", "Execution exception", e.getMessage());
return null;
}
}
private void killIt() {
if (myProcessHandler != null) {
myProcessHandler.killProcess();
myProcessHandler = null;
}
}
static class DuneCommandLine extends OpamCommandLine {
private final List<String> m_parameters = new ArrayList<>();
DuneCommandLine(@NotNull Project project, @NotNull String binary) {
super(project, binary);
}
@Override
protected @NotNull List<String> getParameters() {
return m_parameters;
}
@NotNull DuneCommandLine addParameters(@NotNull CliType.Dune cliType) {
switch (cliType) {
case VERSION:
m_parameters.add("--version");
case CLEAN:
m_parameters.add("clean");
break;
case BUILD:
default:
m_parameters.add("build");
}
m_parameters.add("--root=.");
return this;
}
}
}
================================================
FILE: src/main/java/com/reason/comp/esy/Esy.java
================================================
package com.reason.comp.esy;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import jpsplugin.com.reason.Platform;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
import org.jetbrains.annotations.NotNull;
public class Esy {
private Esy() {}
public static Optional<VirtualFile> findEsyExecutable() {
Optional<Path> esyExecutablePath = findEsyExecutableInPath();
if (esyExecutablePath.isPresent()) {
LocalFileSystem fileSystem = LocalFileSystem.getInstance();
return Optional.ofNullable(fileSystem.findFileByPath(esyExecutablePath.get().toString()));
}
return findEsyExecutableInstalledWithN();
}
private static Optional<VirtualFile> findEsyExecutableInstalledWithN() {
String homeDirectory = System.getProperty("user.home");
LocalFileSystem fileSystem = LocalFileSystem.getInstance();
Path executablePath = Paths.get(homeDirectory, ".n", "bin", EsyConstants.ESY_EXECUTABLE_NAME);
return Optional.ofNullable(fileSystem.findFileByPath(executablePath.toString()));
}
private static @NotNull Optional<Path> findEsyExecutableInPath() {
String systemPath = System.getenv("PATH");
return Platform.findExecutableInPath(EsyConstants.ESY_EXECUTABLE_NAME, systemPath);
}
}
================================================
FILE: src/main/java/com/reason/comp/esy/EsyCompiler.java
================================================
package com.reason.comp.esy;
import com.intellij.execution.process.*;
import com.intellij.execution.ui.*;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.reason.comp.*;
import com.reason.comp.dune.*;
import com.reason.hints.*;
import com.reason.ide.console.*;
import com.reason.ide.console.esy.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.concurrent.atomic.*;
@Service(Service.Level.PROJECT)
public final class EsyCompiler implements ORCompiler {
private static final Log LOG = Log.create("compiler.esy");
private final @NotNull Project myProject;
private final @NotNull AtomicBoolean myProcessStarted = new AtomicBoolean(false);
EsyCompiler(@NotNull Project project) {
myProject = project;
}
@Override
public @NotNull CompilerType getType() {
return CompilerType.ESY;
}
@Override
public @NotNull String getFullVersion(@Nullable VirtualFile file) {
return "unknown";
}
@Override
public void runDefault(@NotNull VirtualFile file, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
run(file, CliType.Esy.BUILD, onProcessTerminated);
}
@Override
public void run(@Nullable VirtualFile file, @NotNull CliType cliType, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
if (!(cliType instanceof CliType.Esy)) {
LOG.error("Invalid cliType for esy compiler. cliType = " + cliType);
return;
}
if (myProject.isDisposed()) {
return;
}
if (myProcessStarted.compareAndSet(false, true)) {
VirtualFile sourceFile = file != null ? file : EsyPlatform.findConfigFiles(myProject).stream().findFirst().orElse(null);
ConsoleView console = myProject.getService(ORToolWindowManager.class).getConsoleView(EsyToolWindowFactory.ID);
if (sourceFile != null && console != null) {
EsyProcess process = new EsyProcess(myProject);
ProcessHandler processHandler = process.create(sourceFile, cliType, onProcessTerminated);
if (processHandler != null) {
processHandler.addProcessListener(new CompilerOutputListener(myProject, new DuneOutputAnalyzer()));
processHandler.addProcessListener(new ProcessFinishedListener());
processHandler.addProcessListener(new ProcessAdapter() {
@Override public void processTerminated(@NotNull ProcessEvent event) {
myProcessStarted.compareAndSet(true, false);
}
});
console.attachToProcess(processHandler);
process.startNotify();
myProject.getService(InsightManager.class).downloadRincewindIfNeeded(sourceFile);
} else {
myProcessStarted.compareAndSet(true, false);
}
}
}
}
@Override
public boolean isConfigured(@NotNull Project project) {
// Esy compiler doesn't require any project-level configuration
return true;
}
@Override
public boolean isAvailable(@NotNull Project project) {
return EsyPlatform.isEsyProject(myProject);
}
@Override
public boolean isAvailable() {
return !myProcessStarted.get();
}
}
================================================
FILE: src/main/java/com/reason/comp/esy/EsyConstants.java
================================================
package com.reason.comp.esy;
public class EsyConstants {
public static final String ESY_CONFIG_FILENAME = "package.json";
public static final String ESY_EXECUTABLE_NAME = "esy";
private EsyConstants() {}
}
================================================
FILE: src/main/java/com/reason/comp/esy/EsyNotification.java
================================================
package com.reason.comp.esy;
import static com.intellij.notification.NotificationType.ERROR;
import com.intellij.notification.Notifications;
import jpsplugin.com.reason.ORNotification;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
public class EsyNotification {
private EsyNotification() {
}
@Nls
public static void showEsyProjectNotFound() {
Notifications.Bus.notify(
new ORNotification("Esy Project Not Found", "Unable to find esy project. Have you run esy yet?", ERROR));
}
@Nls
public static void showExecutionException(@NotNull Exception e) {
Notifications.Bus.notify(
new ORNotification("Esy Exception", "Failed to execute esy command.\n" + e.getMessage(), ERROR));
}
}
================================================
FILE: src/main/java/com/reason/comp/esy/EsyPackageJson.java
================================================
package com.reason.comp.esy;
import com.google.gson.*;
import com.intellij.framework.detection.*;
import com.intellij.openapi.vfs.*;
import com.intellij.patterns.*;
import com.intellij.util.*;
import com.intellij.util.indexing.*;
import org.jetbrains.annotations.*;
import java.io.*;
import static com.reason.comp.esy.EsyConstants.*;
import static java.nio.charset.StandardCharsets.*;
public class EsyPackageJson {
private EsyPackageJson() {
}
/* detects any "package.json" with a top-level "esy" property */
public static boolean isEsyPackageJson(@Nullable VirtualFile file) {
if (file != null && "json".equals(file.getExtension())) {
try {
return FileContentPattern.fileContent()
.withName(ESY_CONFIG_FILENAME)
.with(new FileContentPatternCondition())
.accepts(FileContentImpl.createByFile(file));
} catch (IOException e) {
return false;
}
}
return false;
}
private static class FileContentPatternCondition extends PatternCondition<FileContent> {
public FileContentPatternCondition() {
super("esyPackageJsonPattern");
}
// No PSI here, not allowed
@Override
public boolean accepts(@NotNull FileContent fileContent, ProcessingContext context) {
try {
JsonElement jsonContent = JsonParser.parseString(new String(fileContent.getContent(), UTF_8));
if (jsonContent.isJsonObject()) {
JsonObject top = jsonContent.getAsJsonObject();
return top.has("esy");
}
} catch (JsonSyntaxException e) {
return false;
}
return false;
}
}
}
================================================
FILE: src/main/java/com/reason/comp/esy/EsyPlatform.java
================================================
package com.reason.comp.esy;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.intellij.psi.search.*;
import com.reason.comp.bs.*;
import com.reason.ide.*;
import com.reason.ide.settings.*;
import org.jetbrains.annotations.*;
import java.util.*;
import static com.reason.comp.esy.EsyConstants.*;
public class EsyPlatform {
private EsyPlatform() {
}
public static @NotNull List<VirtualFile> findConfigFiles(@NotNull Project project) {
return BsPlatform.findConfigFiles(project);
}
public static boolean isEsyProject(@NotNull Project project) {
return !findEsyConfigurationFiles(project).isEmpty();
}
public static List<VirtualFile> findEsyConfigurationFiles(@NotNull Project project) {
return FilenameIndex.getVirtualFilesByName(ESY_CONFIG_FILENAME, GlobalSearchScope.projectScope(project))
.stream()
.filter(EsyPackageJson::isEsyPackageJson)
.sorted(ORFileUtils.FILE_DEPTH_COMPARATOR)
.toList();
}
public static List<VirtualFile> findEsyContentRoots(@NotNull Project project) {
return findEsyConfigurationFiles(project)
.stream()
.map(VirtualFile::getParent)
.toList();
}
public static Optional<VirtualFile> findEsyExecutable(@NotNull Project project) {
String esyExecutable = project.getService(ORSettings.class).getEsyExecutable();
if (esyExecutable.isEmpty()) {
return Esy.findEsyExecutable();
}
return Optional.ofNullable(LocalFileSystem.getInstance().findFileByPath(esyExecutable));
}
}
================================================
FILE: src/main/java/com/reason/comp/esy/EsyProcess.java
================================================
package com.reason.comp.esy;
import com.intellij.execution.*;
import com.intellij.execution.configurations.*;
import com.intellij.execution.process.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import com.reason.comp.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
import java.util.function.*;
public class EsyProcess {
private static final Log LOG = Log.create("process.esy");
private final @NotNull Project myProject;
@Nullable
private KillableColoredProcessHandler processHandler;
EsyProcess(@NotNull Project project) {
myProject = project;
}
public void startNotify() {
if (processHandler != null && !processHandler.isStartNotified()) {
try {
processHandler.startNotify();
} catch (Exception e) {
LOG.error("Exception when calling 'startNotify'.", e);
}
}
}
@Nullable
public ProcessHandler create(@NotNull VirtualFile source, @NotNull CliType cliType, @Nullable ORProcessTerminated<Void> onProcessTerminated) {
killIt();
VirtualFile workingDir = findWorkingDirectory(myProject);
if (workingDir == null) {
return null;
}
Optional<VirtualFile> esyExecutableOptional = EsyPlatform.findEsyExecutable(myProject);
if (esyExecutableOptional.isEmpty()) {
return null;
}
VirtualFile esyExecutable = esyExecutableOptional.get();
GeneralCommandLine cli = newCommandLine(esyExecutable, workingDir, (CliType.Esy) cliType);
try {
processHandler = new KillableColoredProcessHandler(cli);
} catch (ExecutionException e) {
EsyNotification.showExecutionException(e);
return null;
}
if (onProcessTerminated != null) {
processHandler.addProcessListener(processTerminatedListener.apply(onProcessTerminated));
}
return processHandler;
}
private void killIt() {
if (processHandler == null || processHandler.isProcessTerminating() || processHandler.isProcessTerminated()) {
return;
}
processHandler.killProcess();
processHandler = null;
}
private static GeneralCommandLine newCommandLine(@NotNull VirtualFile esyExecutable, @NotNull VirtualFile workingDir, @NotNull CliType.Esy cliType) {
GeneralCommandLine commandLine;
commandLine = new GeneralCommandLine(esyExecutable.getPath());
commandLine.setWorkDirectory(workingDir.getPath());
commandLine.setRedirectErrorStream(true);
commandLine.addParameter(getCommand(cliType)); // 'esy + command' must be a single parameter
return commandLine;
}
private static @NotNull String getCommand(@NotNull CliType.Esy cliType) {
return switch (cliType) {
case INSTALL -> "install";
case BUILD -> "build";
case SHELL -> "shell";
};
}
private static @Nullable VirtualFile findWorkingDirectory(@NotNull Project project) {
VirtualFile contentRoot = EsyPlatform.findEsyContentRoots(project).stream().findFirst().orElse(null);
if (contentRoot == null) {
EsyNotification.showEsyProjectNotFound();
}
return contentRoot;
}
private static final Function<ORProcessTerminated<Void>, ProcessListener> processTerminatedListener = (onProcessTerminated) ->
new ProcessAdapter() {
@Override
public void processTerminated(@NotNull ProcessEvent event) {
onProcessTerminated.run(null);
}
};
}
================================================
FILE: src/main/java/com/reason/comp/ocaml/OcamlFormatProcess.java
================================================
package com.reason.comp.ocaml;
import com.intellij.execution.*;
import com.intellij.execution.configurations.*;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.*;
import com.intellij.openapi.vfs.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.io.*;
import java.util.*;
import static jpsplugin.com.reason.Platform.*;
@Service(Service.Level.PROJECT)
public final class OcamlFormatProcess {
private static final Log LOG = Log.create("format.ocaml.process");
private final Project myProject;
public OcamlFormatProcess(Project project) {
myProject = project;
}
public @NotNull String format(@NotNull VirtualFile file, @NotNull String textToFormat) {
GeneralCommandLine commandLine = new OCamlFormatCommandLine(myProject, "ocamlformat").addParameters(file).create(file);
if (commandLine != null && !textToFormat.isEmpty()) {
Process fmt = null;
try {
fmt = commandLine.createProcess();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fmt.getOutputStream(), UTF8));
BufferedReader reader = new BufferedReader(new InputStreamReader(fmt.getInputStream(), UTF8));
BufferedReader errReader = new BufferedReader(new InputStreamReader(fmt.getErrorStream(), UTF8));
writer.write(textToFormat);
writer.flush();
writer.close();
Streams.waitUntilReady(reader, errReader);
StringBuilder msgBuffer = new StringBuilder();
if (!errReader.ready()) {
final boolean[] empty = {true};
reader
.lines()
.forEach(line -> {
if (empty[0]) {
empty[0] = false;
} else {
msgBuffer.append('\n');
}
msgBuffer.append(line);
});
String newText = msgBuffer.toString();
if (!newText.isEmpty()) { // additional protection
return newText;
}
} else {
errReader.lines().forEach(line -> msgBuffer.append(line).append('\n'));
LOG.warn(StringUtil.trimLastCR(msgBuffer.toString()));
}
} catch (IOException | RuntimeException | ExecutionException e) {
LOG.warn(e);
} finally {
if (fmt != null) {
fmt.destroyForcibly();
}
}
}
return textToFormat;
}
static class OCamlFormatCommandLine extends OpamCommandLine {
private final List<String> m_parameters = new ArrayList<>();
OCamlFormatCommandLine(@NotNull Project project, @NotNull String binary) {
super(project, binary, false);
}
@NotNull OCamlFormatCommandLine addParameters(@NotNull VirtualFile file) {
m_parameters.add("-"); // use stdin
m_parameters.add("--name");
m_parameters.add(file.getName());
return this;
}
@Override
protected @NotNull List<String> getParameters() {
return m_parameters;
}
}
}
================================================
FILE: src/main/java/com/reason/comp/ocaml/OpamCommandLine.java
================================================
package com.reason.comp.ocaml;
import com.intellij.execution.configurations.*;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.*;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.vfs.*;
import com.intellij.util.containers.*;
import com.reason.ide.settings.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
import static com.intellij.openapi.application.ApplicationManager.*;
public abstract class OpamCommandLine {
private static final Log LOG = Log.create("ocaml.opam");
public static final VirtualFile[] EMPTY_VFILES = new VirtualFile[0];
private final Project myProject;
private final String myBinary;
private final boolean myRedirectErrorStream;
OpamCommandLine(@NotNull Project project, @NotNull String binary, boolean redirectErrorStream) {
myProject = project;
myBinary = binary;
myRedirectErrorStream = redirectErrorStream;
}
protected OpamCommandLine(@NotNull Project project, @NotNull String binary) {
this(project, binary, true);
}
protected abstract @NotNull List<String> getParameters();
public @Nullable GeneralCommandLine create(@NotNull VirtualFile source) {
ORSettings settings = myProject.getService(ORSettings.class);
String opamLocation = settings.getOpamLocation();
if (!opamLocation.isEmpty()) {
String switchLocation = opamLocation + "/" + settings.getSwitchName();
String binPath = switchLocation + "/bin";
Module module = Platform.getModule(myProject, source);
VirtualFile[] contentRoots = module == null ? EMPTY_VFILES : ModuleRootManager.getInstance(module).getContentRoots();
if (contentRoots.length > 0) {
GeneralCommandLine cli = new GeneralCommandLine(ContainerUtil.prepend(getParameters(), myBinary));
cli.withParentEnvironmentType(GeneralCommandLine.ParentEnvironmentType.CONSOLE);
cli.setWorkDirectory(contentRoots[0].getPath());
cli.setRedirectErrorStream(myRedirectErrorStream);
Map<String, String> env = getApplication().getService(OpamEnv.class).getEnv(settings.getSwitchName());
if (env != null) {
for (Map.Entry<String, String> entry : env.entrySet()) {
cli.withEnvironment(entry.getKey(), entry.getValue());
}
}
OCamlExecutable executable = OCamlExecutable.getExecutable(opamLocation, settings.getCygwinBash());
return executable.patchCommandLine(cli, null, false);
} else {
LOG.debug("Content roots", contentRoots);
LOG.debug("Binary directory", binPath);
}
}
return null;
}
}
================================================
FILE: src/main/java/com/reason/comp/ocaml/OpamEnv.java
================================================
package com.reason.comp.ocaml;
import com.intellij.openapi.application.*;
import com.intellij.openapi.components.*;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.util.*;
@Service(Service.Level.APP)
public final class OpamEnv {
private final Map<String, Map<String, String>> myEnvs = new HashMap<>();
public @Nullable Map<String, String> getEnv(@Nullable String switchName) {
return switchName == null ? null : myEnvs.get(switchName);
}
public void computeEnv(@Nullable String opamLocation, @Nullable String switchName, @Nullable String cygwinBash,
@Nullable ORProcessTerminated<Map<String, String>> onEnvTerminated) {
if (opamLocation != null && switchName != null) {
ApplicationManager.getApplication()
.getService(OpamProcess.class)
.env(opamLocation, switchName, cygwinBash, data -> {
myEnvs.put(switchName, data);
if (onEnvTerminated != null) {
onEnvTerminated.run(data);
}
});
}
}
}
================================================
FILE: src/main/java/com/reason/comp/ocaml/OpamProcess.java
================================================
package com.reason.comp.ocaml;
import com.intellij.execution.*;
import com.intellij.execution.configurations.*;
import com.intellij.execution.process.*;
import com.intellij.openapi.components.*;
import com.intellij.openapi.util.*;
import com.intellij.openapi.util.text.StringUtil;
import jpsplugin.com.reason.*;
import org.jetbrains.annotations.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
@Service(Service.Level.APP)
public final class OpamProcess {
private static final Pattern SEXP = Pattern.compile("\\(\"([^\"]+)\" \"([^\"]+)\"\\)");
public static final ProcessHandler NULL_HANDLER = new ProcessHandler() {
@Override protected void destroyProcessImpl() {
}
@Override protected void detachProcessImpl() {
}
@Override public boolean detachIsDefault() {
return false;
}
@Nullable @Override public OutputStream getProcessInput() {
return null;
}
};
public void list(@NotNull String opamLocation, @NotNull String version, @Nullable String cygwinBash, @NotNull ORProcessTerminated<List<String[]>> onProcessTerminated) {
ArrayList<String[]> installedLibs = new ArrayList<>();
if (StringUtil.isEmpty(opamLocation) || StringUtil.isEmpty(version)) {
onProcessTerminated.run(installedLibs);
return;
}
GeneralCommandLine cli = new GeneralCommandLine("opam", "list", "--installed", "--safe", "--color=never", "--switch=" + version);
cli.setRedirectErrorStream(true);
OCamlExecutable executable = OCamlExecutable.getExecutable(opamLocation, cygwinBash);
executable.patchCommandLine(cli, null, true);
KillableProcessHandler processHandler;
try {
processHandler = new KillableProcessHandler(cli);
processHandler.addProcessListener(new ProcessListener() {
@Override
public void processTerminated(@NotNull ProcessEvent event) {
onProcessTerminated.run(installedLibs);
}
@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull Key outputType) {
if (ProcessOutputType.isStdout(outputType)) {
String text = event.getText().trim();
if (text.charAt(0) != '#') {
String[] split = text.split("\\s+", 3);
installedLibs.add(new String[]{split[0].trim(), split.length >= 2 ? split[1].trim() : "unknown", split.length >= 3 ? split[2].trim() : ""});
}
}
}
});
processHandler.startNotify();
} catch (ExecutionException e) {
ORNotification.notifyError("Opam", "Can't list libraries", e.getMessage());
installedLibs.add(new String[]{"Error", e.getMessage()});
onProcessTerminated.run(installedLibs);
}
}
public void env(@Nullable String opamLocation, @Nullable String version, @Nullable String cygwinBash, @NotNull ORProcessTerminated<Map<String, String>> onProcessTerminated) {
Map<String, String> result = new HashMap<>();
if (StringUtil.isEmpty(opamLocation) || StringUtil.isEmpty(version)) {
result.put("Incorrect setting", "Setup SDK in project settings");
onProcessTerminated.run(result);
return;
}
GeneralCommandLine cli = new GeneralCommandLine("opam", "config", "env", "--sexp", "--switch=" + version);
cli.setRedirectErrorStream(true);
OCamlExecutable executable = OCamlExecutable.getExecutable(opamLocation, cygwinBash);
executable.patchCommandLine(cli, null, true);
KillableProcessHandler processHandler;
try {
processHandler = new KillableProcessHandler(cli);
processHandler.addProcessListener(new ProcessListener() {
@Override
public void processTerminated(@NotNull ProcessEvent event) {
onProcessTerminated.run(result);
}
@Override
public void onTextAvailable(@NotNull ProcessEvent event, @NotNull Key outputType) {
if (ProcessOutputType.isStdout(outputType)) {
String text = event.getText().trim();
Matcher matcher = SEXP.matcher(text);
if (matcher.matches()) {
String key = matcher.group(1);
String value = matcher.group(2);
result.put(key, value);
}
}
}
});
processHandler.startNotify();
} catch (ExecutionException e) {
ORNotification.notifyError("Opam", "Can't read opam env", e.getMessage());
onProcessTerminated.run(result);
}
}
public void listSwitch(@NotNull String opamRootPath, @Nullable String cygwinBash, @NotNull ORProcessTerminated<List<OpamSwitch>> onProcessTerminated) {
ProcessListener processListener = new ListProcessListener(onProcessTerminated);
OCamlExecutable executable = OCamlExecutable.getExecutable(opamRootPath, cygwinBash);
GeneralCommandLine cli = new GeneralCommandLine("opam", "switch", "list", "--color=never");
executable.patchCommandLine(cli, null, true);
KillableProcessHandler processHandler;
try {
processHandler = new KillableProcessHandler(cli);
processHandler.addProcessListener(processListener);
processHandler.startNotify();
} catch (ExecutionException e) {
ORNotification.notifyError("Dune", "Can't run opam", e.getMessage());
processListener.processTerminated(new ProcessEvent(NULL_HANDLER));
}
}
public record OpamSwitch(boolean isSelected, String name) {
@Override public String toString() {
return (isSelected ? ">" : "") + name;
}
}
static class ListProcessListener implements ProcessListener {
private final ORProcessTerminated<List<OpamSwitch>> myOnProcessTerminated;
private final List<OpamSwitch> myResult = new ArrayList<>();
private boolean myIsHeader = true;
private boolean myIsFooter = false;
public ListProcessListener(@NotNull ORProcessTerminated<List<OpamSwitch>> onProcessTerminated) {
myOnProcessTerminated = onProcessTerminated;
}
@Override
public void processTerminated(@NotNull ProcessEvent event) {
myOnProcessTerminated.run(myResult);
}
@Override
gitextract_px5e5xvk/
├── .github/
│ ├── FUNDING.md
│ ├── FUNDING.yml
│ └── workflows/
│ ├── gradle.yml
│ └── website-deploy.yml
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── ISSUE_TEMPLATE.md
├── LICENSE
├── README.md
├── build.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ └── reason/
│ │ │ │ ├── FileHelper.java
│ │ │ │ ├── comp/
│ │ │ │ │ ├── CliType.java
│ │ │ │ │ ├── CompilerOutputAnalyzer.java
│ │ │ │ │ ├── CompilerOutputListener.java
│ │ │ │ │ ├── ORCompiler.java
│ │ │ │ │ ├── ORCompilerConfigManager.java
│ │ │ │ │ ├── ORCompilerManager.java
│ │ │ │ │ ├── ORCompilerOutputAnalyzer.java
│ │ │ │ │ ├── ORConstants.java
│ │ │ │ │ ├── ORPlatform.java
│ │ │ │ │ ├── ORResolvedCompiler.java
│ │ │ │ │ ├── ProcessFinishedListener.java
│ │ │ │ │ ├── bs/
│ │ │ │ │ │ ├── BsColoredProcessHandler.java
│ │ │ │ │ │ ├── BsCompiler.java
│ │ │ │ │ │ ├── BsConfig.java
│ │ │ │ │ │ ├── BsConfigReader.java
│ │ │ │ │ │ ├── BsFormatProcess.java
│ │ │ │ │ │ ├── BsLineProcessor.java
│ │ │ │ │ │ ├── BsNotification.java
│ │ │ │ │ │ ├── BsPlatform.java
│ │ │ │ │ │ ├── BsProcess.java
│ │ │ │ │ │ ├── BsResolvedCompiler.java
│ │ │ │ │ │ └── Ninja.java
│ │ │ │ │ ├── dune/
│ │ │ │ │ │ ├── DuneCompiler.java
│ │ │ │ │ │ ├── DuneOutputAnalyzer.java
│ │ │ │ │ │ ├── DunePlatform.java
│ │ │ │ │ │ └── DuneProcess.java
│ │ │ │ │ ├── esy/
│ │ │ │ │ │ ├── Esy.java
│ │ │ │ │ │ ├── EsyCompiler.java
│ │ │ │ │ │ ├── EsyConstants.java
│ │ │ │ │ │ ├── EsyNotification.java
│ │ │ │ │ │ ├── EsyPackageJson.java
│ │ │ │ │ │ ├── EsyPlatform.java
│ │ │ │ │ │ └── EsyProcess.java
│ │ │ │ │ ├── ocaml/
│ │ │ │ │ │ ├── OcamlFormatProcess.java
│ │ │ │ │ │ ├── OpamCommandLine.java
│ │ │ │ │ │ ├── OpamEnv.java
│ │ │ │ │ │ └── OpamProcess.java
│ │ │ │ │ └── rescript/
│ │ │ │ │ ├── ResCompiler.java
│ │ │ │ │ ├── ResConfigReader.java
│ │ │ │ │ ├── ResFormatProcess.java
│ │ │ │ │ ├── ResPlatform.java
│ │ │ │ │ ├── ResProcessHandler.java
│ │ │ │ │ ├── ResResolvedCompiler.java
│ │ │ │ │ └── RescriptOutputAnalyzer.java
│ │ │ │ ├── hints/
│ │ │ │ │ ├── InsightManager.java
│ │ │ │ │ ├── Rincewind.java
│ │ │ │ │ ├── RincewindDownloader.java
│ │ │ │ │ └── RincewindProcess.java
│ │ │ │ ├── ide/
│ │ │ │ │ ├── CompileOnSave.java
│ │ │ │ │ ├── EditorPosition.java
│ │ │ │ │ ├── IconProvider.java
│ │ │ │ │ ├── OREditorFactoryListener.java
│ │ │ │ │ ├── OREditorTracker.java
│ │ │ │ │ ├── ORFileDocumentListener.java
│ │ │ │ │ ├── ORFileUtils.java
│ │ │ │ │ ├── ORIcons.java
│ │ │ │ │ ├── ORPostStartupActivity.java
│ │ │ │ │ ├── ORVirtualFileListener.java
│ │ │ │ │ ├── actions/
│ │ │ │ │ │ ├── ConvertAction.java
│ │ │ │ │ │ └── TransformAction.java
│ │ │ │ │ ├── annotations/
│ │ │ │ │ │ ├── BsErrorAnnotator.java
│ │ │ │ │ │ ├── ErrorFileHighlighter.java
│ │ │ │ │ │ ├── ErrorsManager.java
│ │ │ │ │ │ ├── ORErrorAnnotator.java
│ │ │ │ │ │ ├── OutputInfo.java
│ │ │ │ │ │ └── ResErrorAnnotator.java
│ │ │ │ │ ├── comment/
│ │ │ │ │ │ ├── DuneCommenter.java
│ │ │ │ │ │ ├── MlyCommenter.java
│ │ │ │ │ │ ├── OclCommenter.java
│ │ │ │ │ │ └── RmlCommenter.java
│ │ │ │ │ ├── console/
│ │ │ │ │ │ ├── ClearLogAction.java
│ │ │ │ │ │ ├── CompilerAction.java
│ │ │ │ │ │ ├── ORConsoleFilter.java
│ │ │ │ │ │ ├── ORConsoleFilterProvider.java
│ │ │ │ │ │ ├── ORToolWindowFactory.java
│ │ │ │ │ │ ├── ORToolWindowManager.java
│ │ │ │ │ │ ├── bs/
│ │ │ │ │ │ │ ├── BsConsoleView.java
│ │ │ │ │ │ │ ├── BsMakeAction.java
│ │ │ │ │ │ │ ├── BsMakeWorldAction.java
│ │ │ │ │ │ │ └── BsToolWindowFactory.java
│ │ │ │ │ │ ├── dune/
│ │ │ │ │ │ │ ├── DuneBuildAction.java
│ │ │ │ │ │ │ ├── DuneCleanAction.java
│ │ │ │ │ │ │ ├── DuneConsoleView.java
│ │ │ │ │ │ │ ├── DuneToolWindowFactory.java
│ │ │ │ │ │ │ └── OCamlConsoleFilter.java
│ │ │ │ │ │ ├── esy/
│ │ │ │ │ │ │ ├── EsyBuildAction.java
│ │ │ │ │ │ │ ├── EsyConsoleView.java
│ │ │ │ │ │ │ └── EsyToolWindowFactory.java
│ │ │ │ │ │ └── rescript/
│ │ │ │ │ │ ├── RescriptBuildAction.java
│ │ │ │ │ │ ├── RescriptConsoleFilter.java
│ │ │ │ │ │ ├── RescriptConsoleView.java
│ │ │ │ │ │ ├── RescriptResetAction.java
│ │ │ │ │ │ └── RescriptToolWindowFactory.java
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ ├── OCamlApplicationConfiguration.java
│ │ │ │ │ │ ├── OCamlApplicationRunningState.java
│ │ │ │ │ │ ├── OCamlDebugRunner.java
│ │ │ │ │ │ ├── OCamlModuleBasedConfiguration.java
│ │ │ │ │ │ ├── ORLineBreakpointProperties.java
│ │ │ │ │ │ ├── ORLineBreakpointType.java
│ │ │ │ │ │ └── OclDebuggerRunnerSettings.java
│ │ │ │ │ ├── docs/
│ │ │ │ │ │ ├── DocFormatter.java
│ │ │ │ │ │ └── ORDocumentationProvider.java
│ │ │ │ │ ├── editors/
│ │ │ │ │ │ ├── CmtFileEditor.java
│ │ │ │ │ │ ├── CmtFileEditorProvider.java
│ │ │ │ │ │ └── CmtXmlComponent.java
│ │ │ │ │ ├── files/
│ │ │ │ │ │ ├── CmtFileType.java
│ │ │ │ │ │ ├── DuneFile.java
│ │ │ │ │ │ ├── DuneFileType.java
│ │ │ │ │ │ ├── FileBase.java
│ │ │ │ │ │ ├── Ml4File.java
│ │ │ │ │ │ ├── Ml4FileType.java
│ │ │ │ │ │ ├── MlgFile.java
│ │ │ │ │ │ ├── MlgFileType.java
│ │ │ │ │ │ ├── MlgFileViewProvider.java
│ │ │ │ │ │ ├── MlgFileViewProviderFactory.java
│ │ │ │ │ │ ├── MllFile.java
│ │ │ │ │ │ ├── MllFileType.java
│ │ │ │ │ │ ├── MllFileViewProvider.java
│ │ │ │ │ │ ├── MllFileViewProviderFactory.java
│ │ │ │ │ │ ├── MlyFile.java
│ │ │ │ │ │ ├── MlyFileType.java
│ │ │ │ │ │ ├── MlyFileViewProvider.java
│ │ │ │ │ │ ├── MlyFileViewProviderFactory.java
│ │ │ │ │ │ ├── ORConfigJsonFileType.java
│ │ │ │ │ │ ├── ORTargetElementEvaluator.java
│ │ │ │ │ │ ├── OclFile.java
│ │ │ │ │ │ ├── OclFileType.java
│ │ │ │ │ │ ├── OclInterfaceFile.java
│ │ │ │ │ │ ├── OclInterfaceFileType.java
│ │ │ │ │ │ ├── ResFile.java
│ │ │ │ │ │ ├── ResFileType.java
│ │ │ │ │ │ ├── ResInterfaceFile.java
│ │ │ │ │ │ ├── ResInterfaceFileType.java
│ │ │ │ │ │ ├── RmlFile.java
│ │ │ │ │ │ ├── RmlFileType.java
│ │ │ │ │ │ ├── RmlInterfaceFile.java
│ │ │ │ │ │ └── RmlInterfaceFileType.java
│ │ │ │ │ ├── folding/
│ │ │ │ │ │ ├── DuneFoldingBuilder.java
│ │ │ │ │ │ └── ORFoldingBuilder.java
│ │ │ │ │ ├── format/
│ │ │ │ │ │ ├── FormatterProcessor.java
│ │ │ │ │ │ ├── ORPostFormatProcessor.java
│ │ │ │ │ │ └── ReformatOnSave.java
│ │ │ │ │ ├── go/
│ │ │ │ │ │ ├── FileModuleDataModuleRendererFactory.java
│ │ │ │ │ │ ├── ORLineMarkerProvider.java
│ │ │ │ │ │ └── ORModuleContributor.java
│ │ │ │ │ ├── handlers/
│ │ │ │ │ │ ├── ORTypedHandler.java
│ │ │ │ │ │ ├── OclQuoteHandler.java
│ │ │ │ │ │ ├── ResQuoteHandler.java
│ │ │ │ │ │ └── RmlQuoteHandler.java
│ │ │ │ │ ├── highlight/
│ │ │ │ │ │ ├── DuneSyntaxAnnotator.java
│ │ │ │ │ │ ├── DuneSyntaxHighlighter.java
│ │ │ │ │ │ ├── DuneSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── ORSyntaxAnnotator.java
│ │ │ │ │ │ ├── ORSyntaxHighlighter.java
│ │ │ │ │ │ ├── OclGrammarEditorHighlighter.java
│ │ │ │ │ │ ├── OclGrammarSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── OclLexEditorHighlighter.java
│ │ │ │ │ │ ├── OclLexSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── OclSyntaxAnnotator.java
│ │ │ │ │ │ ├── OclSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── OclYaccEditorHighlighter.java
│ │ │ │ │ │ ├── OclYaccSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── ResSyntaxAnnotator.java
│ │ │ │ │ │ ├── ResSyntaxHighlighterFactory.java
│ │ │ │ │ │ ├── RmlSyntaxAnnotator.java
│ │ │ │ │ │ └── RmlSyntaxHighlighterFactory.java
│ │ │ │ │ ├── hints/
│ │ │ │ │ │ ├── CodeLens.java
│ │ │ │ │ │ ├── InferredTypes.java
│ │ │ │ │ │ ├── InferredTypesImplementation.java
│ │ │ │ │ │ ├── InferredTypesService.java
│ │ │ │ │ │ ├── OREditorLinePainter.java
│ │ │ │ │ │ ├── ORParameterInfoHandler.java
│ │ │ │ │ │ ├── OclParameterInfoHandler.java
│ │ │ │ │ │ ├── ResParameterInfoHandler.java
│ │ │ │ │ │ ├── RmlParameterInfoHandler.java
│ │ │ │ │ │ ├── RmlTypeProvider.java
│ │ │ │ │ │ └── SignatureProvider.java
│ │ │ │ │ ├── importWizard/
│ │ │ │ │ │ ├── DuneExternalConstants.java
│ │ │ │ │ │ ├── DuneProjectImportBuilder.java
│ │ │ │ │ │ ├── DuneProjectImportProvider.java
│ │ │ │ │ │ ├── DuneProjectOpenProcessor.java
│ │ │ │ │ │ ├── DuneProjectRootStep.form
│ │ │ │ │ │ ├── DuneProjectRootStep.java
│ │ │ │ │ │ └── ImportedDuneBuild.java
│ │ │ │ │ ├── insight/
│ │ │ │ │ │ ├── CompletionUtils.java
│ │ │ │ │ │ ├── KeywordCompletionContributor.java
│ │ │ │ │ │ ├── ORCompletionContributor.java
│ │ │ │ │ │ ├── OclCompletionContributor.java
│ │ │ │ │ │ ├── OclKeywordCompletionContributor.java
│ │ │ │ │ │ ├── ResCompletionContributor.java
│ │ │ │ │ │ ├── ResKeywordCompletionContributor.java
│ │ │ │ │ │ ├── RmlCompletionContributor.java
│ │ │ │ │ │ ├── RmlKeywordCompletionContributor.java
│ │ │ │ │ │ ├── pattern/
│ │ │ │ │ │ │ └── ORElementPatternMatcher.java
│ │ │ │ │ │ └── provider/
│ │ │ │ │ │ ├── DotExpressionCompletionProvider.java
│ │ │ │ │ │ ├── FreeExpressionCompletionProvider.java
│ │ │ │ │ │ ├── JsxAttributeCompletionProvider.java
│ │ │ │ │ │ ├── JsxNameCompletionProvider.java
│ │ │ │ │ │ ├── ModuleCompletionProvider.java
│ │ │ │ │ │ └── ObjectCompletionProvider.java
│ │ │ │ │ ├── intentions/
│ │ │ │ │ │ ├── ExpandLocalOpenIntention.java
│ │ │ │ │ │ └── FunctionBracesIntention.java
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── JsIconProvider.java
│ │ │ │ │ │ ├── JsInjector.java
│ │ │ │ │ │ ├── ORIndexableFileNamesProvider.java
│ │ │ │ │ │ └── ORJsLibraryManager.java
│ │ │ │ │ ├── library/
│ │ │ │ │ │ ├── OclLibraryKind.java
│ │ │ │ │ │ ├── OclLibraryRootProvider.java
│ │ │ │ │ │ ├── OclLibraryRootsComponentDescriptor.java
│ │ │ │ │ │ ├── OclLibraryType.java
│ │ │ │ │ │ └── OclSdkSetupValidator.java
│ │ │ │ │ ├── match/
│ │ │ │ │ │ ├── DunePairedBraceMatcher.java
│ │ │ │ │ │ ├── OclPairedBraceMatcher.java
│ │ │ │ │ │ ├── ResPairedBraceMatcher.java
│ │ │ │ │ │ └── RmlPairedBraceMatcher.java
│ │ │ │ │ ├── module/
│ │ │ │ │ │ ├── DuneModuleEditor.form
│ │ │ │ │ │ ├── DuneModuleEditor.java
│ │ │ │ │ │ └── DuneModuleEditorProvider.java
│ │ │ │ │ ├── refactor/
│ │ │ │ │ │ └── ORRefactoringSupportProvider.java
│ │ │ │ │ ├── repl/
│ │ │ │ │ │ ├── PromptConsole.java
│ │ │ │ │ │ ├── PromptConsoleView.java
│ │ │ │ │ │ ├── PromptHistory.java
│ │ │ │ │ │ ├── ReplConfigurationFactory.java
│ │ │ │ │ │ ├── ReplGenericState.java
│ │ │ │ │ │ ├── ReplRunConfiguration.java
│ │ │ │ │ │ ├── ReplRunConfigurationType.java
│ │ │ │ │ │ ├── ReplRunSettingsEditor.form
│ │ │ │ │ │ └── ReplRunSettingsEditor.java
│ │ │ │ │ ├── search/
│ │ │ │ │ │ ├── FileModuleData.java
│ │ │ │ │ │ ├── IndexedFileModule.java
│ │ │ │ │ │ ├── ModuleIndexService.java
│ │ │ │ │ │ ├── ORFindUsagesProvider.java
│ │ │ │ │ │ ├── ORImplementationSearch.java
│ │ │ │ │ │ ├── OclFindUsagesProvider.java
│ │ │ │ │ │ ├── PsiTypeElementProvider.java
│ │ │ │ │ │ ├── ResFindUsagesProvider.java
│ │ │ │ │ │ ├── RmlFindUsagesProvider.java
│ │ │ │ │ │ ├── index/
│ │ │ │ │ │ │ ├── ClassFqnIndex.java
│ │ │ │ │ │ │ ├── ClassMethodFqnIndex.java
│ │ │ │ │ │ │ ├── ExceptionFqnIndex.java
│ │ │ │ │ │ │ ├── ExceptionIndex.java
│ │ │ │ │ │ │ ├── ExternalFqnIndex.java
│ │ │ │ │ │ │ ├── ExternalIndex.java
│ │ │ │ │ │ │ ├── FileModuleIndex.java
│ │ │ │ │ │ │ ├── FileModuleIndexService.java
│ │ │ │ │ │ │ ├── IncludeIndex.java
│ │ │ │ │ │ │ ├── IndexKeys.java
│ │ │ │ │ │ │ ├── LetComponentFqnIndex.java
│ │ │ │ │ │ │ ├── LetFqnIndex.java
│ │ │ │ │ │ │ ├── ModuleFqnIndex.java
│ │ │ │ │ │ │ ├── ModuleIndex.java
│ │ │ │ │ │ │ ├── ModuleSignatureIndex.java
│ │ │ │ │ │ │ ├── NamespaceIndex.java
│ │ │ │ │ │ │ ├── ObjectFieldIndex.java
│ │ │ │ │ │ │ ├── OpenIndex.java
│ │ │ │ │ │ │ ├── ParameterFqnIndex.java
│ │ │ │ │ │ │ ├── ParameterIndex.java
│ │ │ │ │ │ │ ├── RecordFieldIndex.java
│ │ │ │ │ │ │ ├── TypeFqnIndex.java
│ │ │ │ │ │ │ ├── TypeIndex.java
│ │ │ │ │ │ │ ├── ValFqnIndex.java
│ │ │ │ │ │ │ └── VariantFqnIndex.java
│ │ │ │ │ │ └── reference/
│ │ │ │ │ │ ├── ORFakeResolvedElement.java
│ │ │ │ │ │ ├── ORModuleResolutionPsiGist.java
│ │ │ │ │ │ ├── ORMultiSymbolReference.java
│ │ │ │ │ │ ├── ORPsiLiteralStringReference.java
│ │ │ │ │ │ ├── ORPsiLowerSymbolReference.java
│ │ │ │ │ │ ├── ORPsiPropertyNameReference.java
│ │ │ │ │ │ ├── ORPsiUpperSymbolReference.java
│ │ │ │ │ │ └── ORReferenceAnalyzer.java
│ │ │ │ │ ├── settings/
│ │ │ │ │ │ ├── DuneColorSettingsPage.java
│ │ │ │ │ │ ├── ORColorSettingsPage.java
│ │ │ │ │ │ ├── ORSettings.java
│ │ │ │ │ │ ├── ORSettingsConfigurable.form
│ │ │ │ │ │ ├── ORSettingsConfigurable.java
│ │ │ │ │ │ ├── OpamConfigurationTab.form
│ │ │ │ │ │ └── OpamConfigurationTab.java
│ │ │ │ │ ├── spellcheckers/
│ │ │ │ │ │ ├── ORSpellCheckerStrategy.java
│ │ │ │ │ │ ├── OclSpellCheckerStrategy.java
│ │ │ │ │ │ ├── ResSpellCheckerStrategy.java
│ │ │ │ │ │ └── RmlSpellCheckerStrategy.java
│ │ │ │ │ ├── structure/
│ │ │ │ │ │ ├── NestedFunctionsFilter.java
│ │ │ │ │ │ ├── ORStructureViewModel.java
│ │ │ │ │ │ ├── ShowVariableFilter.java
│ │ │ │ │ │ ├── StructureViewElement.java
│ │ │ │ │ │ └── StructureViewFactory.java
│ │ │ │ │ ├── template/
│ │ │ │ │ │ ├── OCamlBaseLiveTemplateContextType.java
│ │ │ │ │ │ ├── OCamlCodeLiveTemplateContextType.java
│ │ │ │ │ │ ├── OCamlCommentLiveTemplateContextType.java
│ │ │ │ │ │ ├── ResBaseLiveTemplateContextType.java
│ │ │ │ │ │ └── RmlBaseLiveTemplateContextType.java
│ │ │ │ │ └── testAssistant/
│ │ │ │ │ ├── GotoTestDataAction.java
│ │ │ │ │ └── TestDataNavigationHandler.java
│ │ │ │ └── lang/
│ │ │ │ ├── CommonPsiParser.java
│ │ │ │ ├── Marker.java
│ │ │ │ ├── ModuleHelper.java
│ │ │ │ ├── ORLanguageParser.java
│ │ │ │ ├── ORLanguageProperties.java
│ │ │ │ ├── ORParser.java
│ │ │ │ ├── core/
│ │ │ │ │ ├── LiteralStringManipulator.java
│ │ │ │ │ ├── ORCodeFactory.java
│ │ │ │ │ ├── ORUtil.java
│ │ │ │ │ ├── psi/
│ │ │ │ │ │ ├── RPsiClass.java
│ │ │ │ │ │ ├── RPsiClassMethod.java
│ │ │ │ │ │ ├── RPsiConditional.java
│ │ │ │ │ │ ├── RPsiException.java
│ │ │ │ │ │ ├── RPsiExternal.java
│ │ │ │ │ │ ├── RPsiField.java
│ │ │ │ │ │ ├── RPsiFunctor.java
│ │ │ │ │ │ ├── RPsiInclude.java
│ │ │ │ │ │ ├── RPsiInferredType.java
│ │ │ │ │ │ ├── RPsiInnerModule.java
│ │ │ │ │ │ ├── RPsiLanguageConverter.java
│ │ │ │ │ │ ├── RPsiLet.java
│ │ │ │ │ │ ├── RPsiModule.java
│ │ │ │ │ │ ├── RPsiOCamlInjection.java
│ │ │ │ │ │ ├── RPsiOpen.java
│ │ │ │ │ │ ├── RPsiParameterDeclaration.java
│ │ │ │ │ │ ├── RPsiQualifiedPathElement.java
│ │ │ │ │ │ ├── RPsiRecordField.java
│ │ │ │ │ │ ├── RPsiSignature.java
│ │ │ │ │ │ ├── RPsiSignatureElement.java
│ │ │ │ │ │ ├── RPsiSignatureItem.java
│ │ │ │ │ │ ├── RPsiSignatureUtil.java
│ │ │ │ │ │ ├── RPsiStructuredElement.java
│ │ │ │ │ │ ├── RPsiType.java
│ │ │ │ │ │ ├── RPsiVal.java
│ │ │ │ │ │ ├── RPsiVar.java
│ │ │ │ │ │ ├── impl/
│ │ │ │ │ │ │ ├── ORASTFactory.java
│ │ │ │ │ │ │ ├── RPsiAnnotation.java
│ │ │ │ │ │ │ ├── RPsiArray.java
│ │ │ │ │ │ │ ├── RPsiAssert.java
│ │ │ │ │ │ │ ├── RPsiBinaryCondition.java
│ │ │ │ │ │ │ ├── RPsiClassConstructor.java
│ │ │ │ │ │ │ ├── RPsiClassField.java
│ │ │ │ │ │ │ ├── RPsiClassImpl.java
│ │ │ │ │ │ │ ├── RPsiClassInitializer.java
│ │ │ │ │ │ │ ├── RPsiClassMethodImpl.java
│ │ │ │ │ │ │ ├── RPsiConstraints.java
│ │ │ │ │ │ │ ├── RPsiDeconstruction.java
│ │ │ │ │ │ │ ├── RPsiDefaultValue.java
│ │ │ │ │ │ │ ├── RPsiDirective.java
│ │ │ │ │ │ │ ├── RPsiDuneField.java
│ │ │ │ │ │ │ ├── RPsiDuneFields.java
│ │ │ │ │ │ │ ├── RPsiDuneSExpr.java
│ │ │ │ │ │ │ ├── RPsiDuneStanza.java
│ │ │ │ │ │ │ ├── RPsiDuneVar.java
│ │ │ │ │ │ │ ├── RPsiExceptionImpl.java
│ │ │ │ │ │ │ ├── RPsiExternalImpl.java
│ │ │ │ │ │ │ ├── RPsiFieldValue.java
│ │ │ │ │ │ │ ├── RPsiFirstClass.java
│ │ │ │ │ │ │ ├── RPsiForLoop.java
│ │ │ │ │ │ │ ├── RPsiFunSwitch.java
│ │ │ │ │ │ │ ├── RPsiFunction.java
│ │ │ │ │ │ │ ├── RPsiFunctionBody.java
│ │ │ │ │ │ │ ├── RPsiFunctionCall.java
│ │ │ │ │ │ │ ├── RPsiFunctorBinding.java
│ │ │ │ │ │ │ ├── RPsiFunctorCall.java
│ │ │ │ │ │ │ ├── RPsiFunctorImpl.java
│ │ │ │ │ │ │ ├── RPsiFunctorResult.java
│ │ │ │ │ │ │ ├── RPsiGuard.java
│ │ │ │ │ │ │ ├── RPsiIfStatement.java
│ │ │ │ │ │ │ ├── RPsiIncludeImpl.java
│ │ │ │ │ │ │ ├── RPsiInherit.java
│ │ │ │ │ │ │ ├── RPsiInnerModuleImpl.java
│ │ │ │ │ │ │ ├── RPsiInterpolation.java
│ │ │ │ │ │ │ ├── RPsiInterpolationReference.java
│ │ │ │ │ │ │ ├── RPsiJsObject.java
│ │ │ │ │ │ │ ├── RPsiLeafPropertyName.java
│ │ │ │ │ │ │ ├── RPsiLetAttribute.java
│ │ │ │ │ │ │ ├── RPsiLetBinding.java
│ │ │ │ │ │ │ ├── RPsiLetImpl.java
│ │ │ │ │ │ │ ├── RPsiLiteralString.java
│ │ │ │ │ │ │ ├── RPsiLocalOpen.java
│ │ │ │ │ │ │ ├── RPsiLowerName.java
│ │ │ │ │ │ │ ├── RPsiLowerSymbol.java
│ │ │ │ │ │ │ ├── RPsiMacro.java
│ │ │ │ │ │ │ ├── RPsiMacroBody.java
│ │ │ │ │ │ │ ├── RPsiMacroName.java
│ │ │ │ │ │ │ ├── RPsiMethodCall.java
│ │ │ │ │ │ │ ├── RPsiMixinField.java
│ │ │ │ │ │ │ ├── RPsiModuleBinding.java
│ │ │ │ │ │ │ ├── RPsiModuleSignature.java
│ │ │ │ │ │ │ ├── RPsiMultiLineInterpolator.java
│ │ │ │ │ │ │ ├── RPsiObject.java
│ │ │ │ │ │ │ ├── RPsiObjectField.java
│ │ │ │ │ │ │ ├── RPsiOpenImpl.java
│ │ │ │ │ │ │ ├── RPsiOption.java
│ │ │ │ │ │ │ ├── RPsiOptionValue.java
│ │ │ │ │ │ │ ├── RPsiParameterDeclarationImpl.java
│ │ │ │ │ │ │ ├── RPsiParameterReference.java
│ │ │ │ │ │ │ ├── RPsiParameters.java
│ │ │ │ │ │ │ ├── RPsiPatternMatch.java
│ │ │ │ │ │ │ ├── RPsiPatternMatchBody.java
│ │ │ │ │ │ │ ├── RPsiPolyVariantConstraint.java
│ │ │ │ │ │ │ ├── RPsiRecord.java
│ │ │ │ │ │ │ ├── RPsiRecordFieldImpl.java
│ │ │ │ │ │ │ ├── RPsiScopedExpr.java
│ │ │ │ │ │ │ ├── RPsiSignatureImpl.java
│ │ │ │ │ │ │ ├── RPsiSignatureItemImpl.java
│ │ │ │ │ │ │ ├── RPsiStruct.java
│ │ │ │ │ │ │ ├── RPsiSwitch.java
│ │ │ │ │ │ │ ├── RPsiSwitchBody.java
│ │ │ │ │ │ │ ├── RPsiTag.java
│ │ │ │ │ │ │ ├── RPsiTagBody.java
│ │ │ │ │ │ │ ├── RPsiTagClose.java
│ │ │ │ │ │ │ ├── RPsiTagProperty.java
│ │ │ │ │ │ │ ├── RPsiTagPropertyValue.java
│ │ │ │ │ │ │ ├── RPsiTagStart.java
│ │ │ │ │ │ │ ├── RPsiTernary.java
│ │ │ │ │ │ │ ├── RPsiTokenStub.java
│ │ │ │ │ │ │ ├── RPsiTry.java
│ │ │ │ │ │ │ ├── RPsiTryBody.java
│ │ │ │ │ │ │ ├── RPsiTryHandler.java
│ │ │ │ │ │ │ ├── RPsiTryHandlerBody.java
│ │ │ │ │ │ │ ├── RPsiTuple.java
│ │ │ │ │ │ │ ├── RPsiTypeBinding.java
│ │ │ │ │ │ │ ├── RPsiTypeConstraint.java
│ │ │ │ │ │ │ ├── RPsiTypeImpl.java
│ │ │ │ │ │ │ ├── RPsiUnit.java
│ │ │ │ │ │ │ ├── RPsiUnpack.java
│ │ │ │ │ │ │ ├── RPsiUpperSymbol.java
│ │ │ │ │ │ │ ├── RPsiUpperTagName.java
│ │ │ │ │ │ │ ├── RPsiValImpl.java
│ │ │ │ │ │ │ ├── RPsiVariantDeclaration.java
│ │ │ │ │ │ │ └── RPsiWhile.java
│ │ │ │ │ │ ├── ocamlgrammar/
│ │ │ │ │ │ │ ├── RPsiGrammarArgument.java
│ │ │ │ │ │ │ ├── RPsiGrammarGrammar.java
│ │ │ │ │ │ │ ├── RPsiGrammarTactic.java
│ │ │ │ │ │ │ └── RPsiGrammarVernac.java
│ │ │ │ │ │ ├── ocamllex/
│ │ │ │ │ │ │ ├── RPsiLexLet.java
│ │ │ │ │ │ │ ├── RPsiLexPattern.java
│ │ │ │ │ │ │ └── RPsiLexRule.java
│ │ │ │ │ │ └── ocamlyacc/
│ │ │ │ │ │ ├── RPsiYaccDeclaration.java
│ │ │ │ │ │ ├── RPsiYaccHeader.java
│ │ │ │ │ │ ├── RPsiYaccRule.java
│ │ │ │ │ │ └── RPsiYaccRuleBody.java
│ │ │ │ │ ├── stub/
│ │ │ │ │ │ ├── OclFileStub.java
│ │ │ │ │ │ ├── OclStubBasedElementTypes.java
│ │ │ │ │ │ ├── PsiExceptionStub.java
│ │ │ │ │ │ ├── PsiExternalStub.java
│ │ │ │ │ │ ├── PsiIncludeStub.java
│ │ │ │ │ │ ├── PsiLetStub.java
│ │ │ │ │ │ ├── PsiModuleStub.java
│ │ │ │ │ │ ├── PsiObjectFieldStub.java
│ │ │ │ │ │ ├── PsiOpenStub.java
│ │ │ │ │ │ ├── PsiParameterDeclarationStub.java
│ │ │ │ │ │ ├── PsiQualifiedNameStub.java
│ │ │ │ │ │ ├── PsiTypeStub.java
│ │ │ │ │ │ ├── PsiValStub.java
│ │ │ │ │ │ ├── PsiVariantDeclarationStub.java
│ │ │ │ │ │ ├── ResFileStub.java
│ │ │ │ │ │ ├── ResStubBasedElementTypes.java
│ │ │ │ │ │ ├── RmlFileStub.java
│ │ │ │ │ │ ├── RmlStubBasedElementTypes.java
│ │ │ │ │ │ ├── RsiClassMethodStub.java
│ │ │ │ │ │ ├── RsiClassStub.java
│ │ │ │ │ │ ├── RsiRecordFieldStub.java
│ │ │ │ │ │ └── type/
│ │ │ │ │ │ ├── ORStubElementType.java
│ │ │ │ │ │ ├── ORStubVersions.java
│ │ │ │ │ │ ├── OclFileStubElementType.java
│ │ │ │ │ │ ├── PsiExceptionStubElementType.java
│ │ │ │ │ │ ├── PsiExternalStubElementType.java
│ │ │ │ │ │ ├── PsiFunctorModuleStubElementType.java
│ │ │ │ │ │ ├── PsiIncludeStubElementType.java
│ │ │ │ │ │ ├── PsiInnerModuleStubElementType.java
│ │ │ │ │ │ ├── PsiLetStubElementType.java
│ │ │ │ │ │ ├── PsiModuleStubElementType.java
│ │ │ │ │ │ ├── PsiObjectFieldStubElementType.java
│ │ │ │ │ │ ├── PsiOpenStubElementType.java
│ │ │ │ │ │ ├── PsiParameterDeclarationStubElementType.java
│ │ │ │ │ │ ├── PsiTypeStubElementType.java
│ │ │ │ │ │ ├── PsiValStubElementType.java
│ │ │ │ │ │ ├── PsiVariantStubElementType.java
│ │ │ │ │ │ ├── RPsiClassMethodStubElementType.java
│ │ │ │ │ │ ├── RPsiClassStubElementType.java
│ │ │ │ │ │ ├── RPsiRecordFieldStubElementType.java
│ │ │ │ │ │ ├── ResFileStubElementType.java
│ │ │ │ │ │ ├── RmlFileStubElementType.java
│ │ │ │ │ │ └── SerializerUtil.java
│ │ │ │ │ └── type/
│ │ │ │ │ ├── ORCompositeElementType.java
│ │ │ │ │ ├── ORCompositePsiElement.java
│ │ │ │ │ ├── ORCompositeType.java
│ │ │ │ │ ├── ORLangTypes.java
│ │ │ │ │ ├── ORTokenElementType.java
│ │ │ │ │ ├── ORTypes.java
│ │ │ │ │ └── ORTypesUtil.java
│ │ │ │ ├── doc/
│ │ │ │ │ ├── ORDocConverter.java
│ │ │ │ │ ├── ocaml/
│ │ │ │ │ │ ├── ODocLexer.java
│ │ │ │ │ │ ├── OclDocConverter.java
│ │ │ │ │ │ ├── OclDocLanguage.java
│ │ │ │ │ │ ├── OclDocTypes.java
│ │ │ │ │ │ └── odoc.flex
│ │ │ │ │ └── reason/
│ │ │ │ │ ├── RDocLexer.java
│ │ │ │ │ ├── RmlDocConverter.java
│ │ │ │ │ ├── RmlDocLanguage.java
│ │ │ │ │ ├── RmlDocTypes.java
│ │ │ │ │ └── rdoc.flex
│ │ │ │ ├── dune/
│ │ │ │ │ ├── Dune.flex
│ │ │ │ │ ├── DuneASTFactory.java
│ │ │ │ │ ├── DuneLanguage.java
│ │ │ │ │ ├── DuneLexer.java
│ │ │ │ │ ├── DuneParser.java
│ │ │ │ │ ├── DuneParserDefinition.java
│ │ │ │ │ └── DuneTypes.java
│ │ │ │ ├── extra/
│ │ │ │ │ ├── OclP4Language.java
│ │ │ │ │ └── OclP4ParserDefinition.java
│ │ │ │ ├── ocaml/
│ │ │ │ │ ├── OCaml.flex
│ │ │ │ │ ├── OCamlLexer.java
│ │ │ │ │ ├── OclASTFactory.java
│ │ │ │ │ ├── OclLanguage.java
│ │ │ │ │ ├── OclLexer.java
│ │ │ │ │ ├── OclParser.java
│ │ │ │ │ ├── OclParserDefinition.java
│ │ │ │ │ ├── OclSafeParserDefinition.java
│ │ │ │ │ └── OclTypes.java
│ │ │ │ ├── ocamlgrammar/
│ │ │ │ │ ├── OclGrammarAstFactory.java
│ │ │ │ │ ├── OclGrammarElementType.java
│ │ │ │ │ ├── OclGrammarLanguage.java
│ │ │ │ │ ├── OclGrammarLexer.java
│ │ │ │ │ ├── OclGrammarParser.java
│ │ │ │ │ ├── OclGrammarParserDefinition.java
│ │ │ │ │ ├── OclGrammarTypes.java
│ │ │ │ │ └── mlg.flex
│ │ │ │ ├── ocamllex/
│ │ │ │ │ ├── OclLexAstFactory.java
│ │ │ │ │ ├── OclLexElementType.java
│ │ │ │ │ ├── OclLexLanguage.java
│ │ │ │ │ ├── OclLexLexer.java
│ │ │ │ │ ├── OclLexParser.java
│ │ │ │ │ ├── OclLexParserDefinition.java
│ │ │ │ │ ├── OclLexTypes.java
│ │ │ │ │ └── mll.flex
│ │ │ │ ├── ocamlyacc/
│ │ │ │ │ ├── OclYaccAstFactory.java
│ │ │ │ │ ├── OclYaccElementType.java
│ │ │ │ │ ├── OclYaccLanguage.java
│ │ │ │ │ ├── OclYaccLexer.java
│ │ │ │ │ ├── OclYaccParser.java
│ │ │ │ │ ├── OclYaccParserDefinition.java
│ │ │ │ │ ├── OclYaccTypes.java
│ │ │ │ │ └── mly.flex
│ │ │ │ ├── reason/
│ │ │ │ │ ├── ReasonML.flex
│ │ │ │ │ ├── ReasonMLLexer.java
│ │ │ │ │ ├── RmlASTFactory.java
│ │ │ │ │ ├── RmlLanguage.java
│ │ │ │ │ ├── RmlLexer.java
│ │ │ │ │ ├── RmlParser.java
│ │ │ │ │ ├── RmlParserDefinition.java
│ │ │ │ │ ├── RmlSafeParserDefinition.java
│ │ │ │ │ └── RmlTypes.java
│ │ │ │ └── rescript/
│ │ │ │ ├── ResASTFactory.java
│ │ │ │ ├── ResFlexLexer.java
│ │ │ │ ├── ResLanguage.java
│ │ │ │ ├── ResLexer.java
│ │ │ │ ├── ResParser.java
│ │ │ │ ├── ResParserDefinition.java
│ │ │ │ ├── ResSafeParserDefinition.java
│ │ │ │ ├── ResTypes.java
│ │ │ │ └── Rescript.flex
│ │ │ └── jpsplugin/
│ │ │ └── com/
│ │ │ └── reason/
│ │ │ ├── AutoDeletingTempFile.java
│ │ │ ├── FileUtil.java
│ │ │ ├── Interrupted.java
│ │ │ ├── Joiner.java
│ │ │ ├── Log.java
│ │ │ ├── OCamlExecutable.java
│ │ │ ├── OClSourcesOrderRootTypeUIFactory.java
│ │ │ ├── ORNotification.java
│ │ │ ├── ORProcessTerminated.java
│ │ │ ├── OclSourcesOrderRootType.java
│ │ │ ├── Platform.java
│ │ │ ├── Streams.java
│ │ │ ├── StringUtil.java
│ │ │ ├── WGet.java
│ │ │ ├── sdk/
│ │ │ │ └── SdkDownloader.java
│ │ │ └── wizard/
│ │ │ ├── OCamlModuleWizardStep.java
│ │ │ └── WizardStepForm.form
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ ├── java-deps.xml
│ │ │ ├── js-deps.xml
│ │ │ └── plugin.xml
│ │ ├── fileTemplates/
│ │ │ ├── OCaml Interface.mli.ft
│ │ │ ├── OCaml Module.ml.ft
│ │ │ ├── Reason Interface.rei.ft
│ │ │ ├── Reason Module.re.ft
│ │ │ ├── Rescript Interface.resi.ft
│ │ │ └── Rescript Module.res.ft
│ │ ├── icons/
│ │ │ ├── reasonml-icon-file.xcf
│ │ │ └── reasonml-icon.xcf
│ │ ├── intentionDescriptions/
│ │ │ ├── ExpandLocalOpenIntention/
│ │ │ │ ├── after.re.template
│ │ │ │ ├── before.re.template
│ │ │ │ └── description.html
│ │ │ └── FunctionBracesIntention/
│ │ │ ├── after.re.template
│ │ │ ├── before.re.template
│ │ │ └── description.html
│ │ └── liveTemplates/
│ │ ├── OCaml.xml
│ │ ├── Reason.xml
│ │ └── Rescript.xml
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── reason/
│ │ ├── FileHelperTest.java
│ │ ├── comp/
│ │ │ ├── bs/
│ │ │ │ ├── BsConfigReaderTest.java
│ │ │ │ ├── BsLineProcessorTest.java
│ │ │ │ ├── NinjaTest.java
│ │ │ │ └── ResConfigReaderTest.java
│ │ │ ├── dune/
│ │ │ │ └── DuneOutputAnalyzerTest.java
│ │ │ ├── esy/
│ │ │ │ └── EsyPackageJsonTest.java
│ │ │ ├── ocaml/
│ │ │ │ └── OpamProcessTest.java
│ │ │ └── rescript/
│ │ │ ├── RescriptOutputAnalyzerTest.java
│ │ │ └── error-syntax.txt
│ │ ├── hints/
│ │ │ └── RincewindTest.java
│ │ ├── ide/
│ │ │ ├── ORBasePlatformTestCase.java
│ │ │ ├── ORFileUtilsTest.java
│ │ │ ├── RenameLowerTest.java
│ │ │ ├── RenameUpper_OCL_Test.java
│ │ │ ├── RenameUpper_RES_Test.java
│ │ │ ├── RenameUpper_RML_Test.java
│ │ │ ├── TypeConversionOclTest.java
│ │ │ ├── comment/
│ │ │ │ └── OclCommenterTest.java
│ │ │ ├── completion/
│ │ │ │ ├── CommentCompletion_OCL_Test.java
│ │ │ │ ├── CommentCompletion_RES_Test.java
│ │ │ │ ├── CommentCompletion_RML_Test.java
│ │ │ │ ├── DotCompletion_OCL_Test.java
│ │ │ │ ├── DotCompletion_RES_Test.java
│ │ │ │ ├── DotCompletion_RML_Test.java
│ │ │ │ ├── FreeCompletion_OCL_Test.java
│ │ │ │ ├── FreeCompletion_RES_Test.java
│ │ │ │ ├── FreeCompletion_RML_Test.java
│ │ │ │ ├── JsObjectCompletion_RES_Test.java
│ │ │ │ ├── JsObjectCompletion_RML_Test.java
│ │ │ │ ├── Jsx3NameCompletion_RES_Test.java
│ │ │ │ ├── Jsx3NameCompletion_RML_Test.java
│ │ │ │ ├── Jsx3PropertyCompletion_RES_Test.java
│ │ │ │ ├── Jsx3PropertyCompletion_RML_Test.java
│ │ │ │ ├── Jsx4PropertyCompletion_RES_Test.java
│ │ │ │ ├── KeywordCompletion_OCL_Test.java
│ │ │ │ ├── KeywordCompletion_RES_Test.java
│ │ │ │ ├── KeywordCompletion_RML_Test.java
│ │ │ │ ├── ModuleCompletion_OCL_Test.java
│ │ │ │ ├── ModuleCompletion_RES_Test.java
│ │ │ │ ├── ModuleCompletion_RML_Test.java
│ │ │ │ ├── RecordCompletion_OCL_Test.java
│ │ │ │ ├── RecordCompletion_RES_Test.java
│ │ │ │ └── RecordCompletion_RML_Test.java
│ │ │ ├── console/
│ │ │ │ ├── OCamlMessages.java
│ │ │ │ ├── ocaml/
│ │ │ │ │ └── OCamlConsoleFilterTest.java
│ │ │ │ └── rescript/
│ │ │ │ └── RescriptConsoleFilterTest.java
│ │ │ ├── docs/
│ │ │ │ ├── ORDocumentationProviderTest.java
│ │ │ │ ├── QuickDocRESTest.java
│ │ │ │ ├── QuickDocRMLTest.java
│ │ │ │ ├── ShowDocOCLTest.java
│ │ │ │ ├── ShowDocRESTest.java
│ │ │ │ └── ShowDocRMLTest.java
│ │ │ ├── go/
│ │ │ │ ├── GotoImplementationOCLTest.java
│ │ │ │ ├── GotoImplementationRESTest.java
│ │ │ │ ├── GotoImplementationRMLTest.java
│ │ │ │ ├── LineMarkerProviderOCLTest.java
│ │ │ │ ├── LineMarkerProviderRESTest.java
│ │ │ │ └── LineMarkerProviderRMLTest.java
│ │ │ ├── hints/
│ │ │ │ ├── OclParameterInfoHandlerTest.java
│ │ │ │ ├── ResParameterInfoHandlerTest.java
│ │ │ │ └── RmlParameterInfoHandlerTest.java
│ │ │ ├── intention/
│ │ │ │ ├── ExpandLocalOpenIntentionRMLTest.java
│ │ │ │ ├── FunctionBracesIntentionRESTest.java
│ │ │ │ └── FunctionBracesIntentionRMLTest.java
│ │ │ ├── search/
│ │ │ │ └── reference/
│ │ │ │ ├── FindLIdentUsagesOCLTest.java
│ │ │ │ ├── FindLIdentUsagesRESTest.java
│ │ │ │ ├── FindLIdentUsagesRMLTest.java
│ │ │ │ ├── FindUIdentUsagesOCLTest.java
│ │ │ │ ├── FindUIdentUsagesRESTest.java
│ │ │ │ ├── FindUIdentUsagesRMLTest.java
│ │ │ │ ├── ORModuleResolutionPsiGist_OCL_Test.java
│ │ │ │ ├── ORModuleResolutionPsiGist_RES_Test.java
│ │ │ │ ├── ORModuleResolutionPsiGist_RML_Test.java
│ │ │ │ ├── ResolveJsxPropertyElementRESTest.java
│ │ │ │ ├── ResolveJsxPropertyElementRMLTest.java
│ │ │ │ ├── ResolveJsxTagElementRESTest.java
│ │ │ │ ├── ResolveJsxTagElementRMLTest.java
│ │ │ │ ├── ResolveLowerElement_OCL_Test.java
│ │ │ │ ├── ResolveLowerElement_RES_Test.java
│ │ │ │ ├── ResolveLowerElement_RML_Test.java
│ │ │ │ ├── ResolveUpperElement_OCL_Test.java
│ │ │ │ ├── ResolveUpperElement_RES_Test.java
│ │ │ │ └── ResolveUpperElement_RML_Test.java
│ │ │ └── structure/
│ │ │ ├── ProjectStructure_DUNE_Test.java
│ │ │ ├── ProjectStructure_OCL_Test.java
│ │ │ └── ValPresentation_OCL_Test.java
│ │ └── lang/
│ │ ├── BaseParsingTestCase.java
│ │ ├── core/
│ │ │ ├── FileBaseTest.java
│ │ │ ├── ORSignatureTest.java
│ │ │ └── ORUtilTest.java
│ │ ├── doc/
│ │ │ ├── ocaml/
│ │ │ │ └── OclDocConverterTest.java
│ │ │ └── reason/
│ │ │ └── RmlDocConverterTest.java
│ │ ├── dune/
│ │ │ ├── CommentParsingTest.java
│ │ │ ├── DuneParsingTestCase.java
│ │ │ ├── DuneStanzaParsingTest.java
│ │ │ ├── DuneVarParsingTest.java
│ │ │ └── SExprParsingTest.java
│ │ ├── ocaml/
│ │ │ ├── AndParsingTest.java
│ │ │ ├── AnnotationParsingTest.java
│ │ │ ├── AssertParsingTest.java
│ │ │ ├── BeginParsingTest.java
│ │ │ ├── ChainingParsingTest.java
│ │ │ ├── ClassParsingTest.java
│ │ │ ├── CommentParsingTest.java
│ │ │ ├── DirectiveParsingTest.java
│ │ │ ├── ExceptionParsingTest.java
│ │ │ ├── ExpressionsParsingTest.java
│ │ │ ├── ExternalParsingTest.java
│ │ │ ├── FirstClassModuleParsingTest.java
│ │ │ ├── FunctionCallParsingTest.java
│ │ │ ├── FunctionParsingTest.java
│ │ │ ├── FunctorCallParsingTest.java
│ │ │ ├── FunctorParsingTest.java
│ │ │ ├── IfParsingTest.java
│ │ │ ├── ImmediateObjectParsingTest.java
│ │ │ ├── IncludeParsingTest.java
│ │ │ ├── LetParsingTest.java
│ │ │ ├── LocalOpenParsingTest.java
│ │ │ ├── LoopParsingTest.java
│ │ │ ├── MatchParsingTest.java
│ │ │ ├── ModuleParsingTest.java
│ │ │ ├── OclParsingTestCase.java
│ │ │ ├── OpenParsingTest.java
│ │ │ ├── OperatorParsingTest.java
│ │ │ ├── PolyVariantParsingTest.java
│ │ │ ├── RecordParsingTest.java
│ │ │ ├── SamplesParsingTest.java
│ │ │ ├── SignatureParsingTest.java
│ │ │ ├── TryWithParsingTest.java
│ │ │ ├── TypeParsingTest.java
│ │ │ ├── ValParsingTest.java
│ │ │ ├── VariantCallParsingTest.java
│ │ │ └── VariantDeclarationParsingTest.java
│ │ ├── reason/
│ │ │ ├── AndParsingTest.java
│ │ │ ├── AnnotationParsingTest.java
│ │ │ ├── AssertParsingTest.java
│ │ │ ├── ClassParsingTest.java
│ │ │ ├── CommentTest.java
│ │ │ ├── ComponentJsx3ParsingTest.java
│ │ │ ├── ExceptionParsingTest.java
│ │ │ ├── ExternalParsingTest.java
│ │ │ ├── FirstClassModuleParsingTest.java
│ │ │ ├── FunParsingTest.java
│ │ │ ├── FunctionCallParsingTest.java
│ │ │ ├── FunctionParsingTest.java
│ │ │ ├── FunctorCallParsingTest.java
│ │ │ ├── FunctorParsingTest.java
│ │ │ ├── IfParsingTest.java
│ │ │ ├── IncludeParsingTest.java
│ │ │ ├── JsObjectParsingTest.java
│ │ │ ├── JsxParsingTest.java
│ │ │ ├── LetParsingTest.java
│ │ │ ├── LocalOpenParsingTest.java
│ │ │ ├── MacroParsingTest.java
│ │ │ ├── ModuleParsingTest.java
│ │ │ ├── OpenParsingTest.java
│ │ │ ├── PolyVariantParsingTest.java
│ │ │ ├── PolyVariantTest.java
│ │ │ ├── RecordParsingTest.java
│ │ │ ├── RmlParsingTestCase.java
│ │ │ ├── SamplesParsingTest.java
│ │ │ ├── SignatureParsingTest.java
│ │ │ ├── StringTemplateParsingTest.java
│ │ │ ├── SwitchParsingTest.java
│ │ │ ├── TryParsingTest.java
│ │ │ ├── TypeParsingTest.java
│ │ │ ├── VariantCallParsingTest.java
│ │ │ └── VariantDeclarationParsingTest.java
│ │ └── rescript/
│ │ ├── AndParsingTest.java
│ │ ├── AnnotationParsingTest.java
│ │ ├── AssertParsingTest.java
│ │ ├── ChainingParsingTest.java
│ │ ├── CommentTest.java
│ │ ├── ComponentJsx3ParsingTest.java
│ │ ├── ExceptionParsingTest.java
│ │ ├── ExpressionChainingParsingTest.java
│ │ ├── ExternalParsingTest.java
│ │ ├── FileFromJarTest.java
│ │ ├── FirstClassModuleParsingTest.java
│ │ ├── FunctionCallParsingTest.java
│ │ ├── FunctionParsingTest.java
│ │ ├── FunctorCallParsingTest.java
│ │ ├── FunctorParsingTest.java
│ │ ├── IfParsingTest.java
│ │ ├── IncludeParsingTest.java
│ │ ├── JsObjectParsingTest.java
│ │ ├── JsxParsingTest.java
│ │ ├── LetParsingTest.java
│ │ ├── LocalOpenParsingTest.java
│ │ ├── MacroParsingTest.java
│ │ ├── ModuleParsingTest.java
│ │ ├── OpenParsingTest.java
│ │ ├── PolyVariantParsingTest.java
│ │ ├── RecordParsingTest.java
│ │ ├── ResParsingTestCase.java
│ │ ├── SignatureParsingTest.java
│ │ ├── StringTemplateParsingTest.java
│ │ ├── SwitchParsingTest.java
│ │ ├── TryParsingTest.java
│ │ ├── TypeParsingTest.java
│ │ ├── VariantCallParsingTest.java
│ │ └── VariantDeclarationParsingTest.java
│ └── testData/
│ ├── com/
│ │ └── reason/
│ │ ├── bs/
│ │ │ ├── bsplatform.json
│ │ │ ├── comments.json
│ │ │ ├── deps.json
│ │ │ ├── issue_214.json
│ │ │ ├── ninja-rescript.build
│ │ │ ├── src_array.json
│ │ │ ├── src_object.json
│ │ │ └── src_string.json
│ │ ├── esy/
│ │ │ └── package.json
│ │ └── lang/
│ │ ├── ReactDOM.res
│ │ ├── component/
│ │ │ ├── AnotherComp.re
│ │ │ ├── CompMessage.res
│ │ │ ├── Component.re
│ │ │ ├── Inner.re
│ │ │ └── Inner.res
│ │ ├── jsxDOMU.res
│ │ ├── pervasives.ml
│ │ └── samples/
│ │ ├── belt_Map.ml
│ │ ├── stream.ml
│ │ └── toto.re
│ ├── icu4j/
│ │ └── mt.res
│ └── ns/
│ └── bsconfig.json
└── website/
├── .gitignore
├── README.md
├── babel.config.js
├── docs/
│ ├── Other/
│ │ ├── faq.md
│ │ └── live-templates.md
│ ├── build-tools/
│ │ ├── _category_.json
│ │ ├── bucklescript.md
│ │ ├── dune.md
│ │ └── esy.md
│ ├── contributing/
│ │ ├── _category_.json
│ │ ├── how-to-contribute.md
│ │ ├── plugin-architecture.md
│ │ ├── plugin-development.md
│ │ └── resources.md
│ ├── intro.md
│ ├── language-support/
│ │ ├── _category_.json
│ │ ├── ocaml.md
│ │ ├── reason.md
│ │ └── rescript.md
│ └── project-types.md
├── docusaurus.config.js
├── package.json
├── sidebars.js
├── src/
│ ├── components/
│ │ └── HomepageFeatures/
│ │ ├── index.js
│ │ └── styles.module.css
│ ├── css/
│ │ └── custom.css
│ └── pages/
│ ├── index.js
│ └── index.module.css
└── static/
├── .nojekyll
└── img/
└── arch/
├── fake_module.excalidraw
├── parser.excalidraw
├── psihier.excalidraw
├── stub_keys.excalidraw
├── tokens.xcf
└── types.excalidraw
Showing preview only (446K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5705 symbols across 765 files)
FILE: src/main/java/com/reason/FileHelper.java
class FileHelper (line 20) | public class FileHelper {
method FileHelper (line 21) | private FileHelper() {
method isCompilable (line 24) | public static boolean isCompilable(@Nullable FileType fileType) {
method isBsConfigJson (line 32) | public static boolean isBsConfigJson(@Nullable VirtualFile file) {
method isRescriptConfigJson (line 36) | public static boolean isRescriptConfigJson(@Nullable VirtualFile file) {
method isCompilerConfigJson (line 40) | public static boolean isCompilerConfigJson(@Nullable VirtualFile file) {
method isReason (line 48) | public static boolean isReason(@Nullable FileType fileType) {
method isRescript (line 52) | public static boolean isRescript(@Nullable FileType fileType) {
method isOCamlLexer (line 56) | private static boolean isOCamlLexer(@Nullable FileType fileType) {
method isOCamlParser (line 60) | private static boolean isOCamlParser(@Nullable FileType fileType) {
method isOCaml (line 64) | public static boolean isOCaml(@Nullable FileType fileType) {
method isNinja (line 68) | public static boolean isNinja(@Nullable VirtualFile file) {
method isInterface (line 72) | public static boolean isInterface(@Nullable FileType fileType) {
method shortLocation (line 78) | @NotNull
method getPsiModule (line 89) | public static @Nullable RPsiModule getPsiModule(@Nullable FileModuleDa...
FILE: src/main/java/com/reason/comp/CliType.java
type CliType (line 6) | public interface CliType {
method getCompilerType (line 7) | @NotNull CompilerType getCompilerType();
type Bs (line 9) | enum Bs implements CliType {
method getCompilerType (line 13) | @Override
type Rescript (line 19) | enum Rescript implements CliType {
method getCompilerType (line 23) | @Override
type Dune (line 29) | enum Dune implements CliType {
method getCompilerType (line 35) | @Override
type Esy (line 41) | enum Esy implements CliType {
method getCompilerType (line 46) | @Override
FILE: src/main/java/com/reason/comp/CompilerOutputAnalyzer.java
type CompilerOutputAnalyzer (line 9) | public interface CompilerOutputAnalyzer {
method getOutputInfo (line 13) | @NotNull List<OutputInfo> getOutputInfo();
method onTextAvailable (line 15) | void onTextAvailable(@NotNull String line);
FILE: src/main/java/com/reason/comp/CompilerOutputListener.java
class CompilerOutputListener (line 15) | public class CompilerOutputListener implements ProcessListener {
method CompilerOutputListener (line 21) | public CompilerOutputListener(@NotNull Project project, @NotNull Compi...
method startNotified (line 26) | @Override
method processTerminated (line 31) | @Override
method onTextAvailable (line 56) | @Override
FILE: src/main/java/com/reason/comp/ORCompiler.java
type ORCompiler (line 8) | public interface ORCompiler {
type CompilerType (line 9) | enum CompilerType {
method CompilerType (line 17) | CompilerType(String displayName) {
method displayName (line 21) | public @NotNull String displayName() {
method getType (line 26) | @NotNull CompilerType getType();
method isConfigured (line 28) | boolean isConfigured(@NotNull Project project);
method isAvailable (line 30) | boolean isAvailable(@NotNull Project project);
method getFullVersion (line 32) | @NotNull String getFullVersion(@Nullable VirtualFile file);
method runDefault (line 34) | void runDefault(@NotNull VirtualFile file, @Nullable ORProcessTerminat...
method run (line 36) | void run(@Nullable VirtualFile file, @NotNull CliType cliType, @Nullab...
method isAvailable (line 38) | boolean isAvailable();
FILE: src/main/java/com/reason/comp/ORCompilerConfigManager.java
class ORCompilerConfigManager (line 20) | @Service(Service.Level.PROJECT)
method ORCompilerConfigManager (line 25) | public ORCompilerConfigManager(@NotNull Project project) {
method refresh (line 29) | public void refresh(@NotNull VirtualFile configFile) {
method getConfig (line 34) | public @Nullable BsConfig getConfig(@Nullable VirtualFile configFile) {
method findNearestConfigFile (line 56) | public @Nullable VirtualFile findNearestConfigFile(@NotNull VirtualFil...
method getNearestConfig (line 60) | public @Nullable BsConfig getNearestConfig(@Nullable VirtualFile sourc...
method getNearestConfig (line 65) | public @Nullable BsConfig getNearestConfig(@Nullable PsiFile psiFile) {
FILE: src/main/java/com/reason/comp/ORCompilerManager.java
class ORCompilerManager (line 18) | @Service(Service.Level.PROJECT)
method ORCompilerManager (line 23) | public ORCompilerManager(@NotNull Project project) {
method getCompiler (line 27) | public @Nullable ORCompiler getCompiler(@NotNull CliType cliType) {
method getCompiler (line 31) | public @Nullable ORCompiler getCompiler(@NotNull CompilerType compiler...
method getCompiler (line 36) | public @Nullable <T extends ORCompiler> T getCompiler(@NotNull Class<T...
method getCompiler (line 41) | public @Nullable ORResolvedCompiler<? extends ORCompiler> getCompiler(...
method traverseAncestorsForCompiler (line 46) | private @Nullable ORResolvedCompiler<? extends ORCompiler> traverseAnc...
method getCompilerClass (line 74) | private static @NotNull Class<? extends ORCompiler> getCompilerClass(@...
class CompilerVisitor (line 83) | private class CompilerVisitor extends VirtualFileVisitor<VirtualFile> {
method CompilerVisitor (line 86) | CompilerVisitor() {
method visitFile (line 90) | @Override
FILE: src/main/java/com/reason/comp/ORCompilerOutputAnalyzer.java
class ORCompilerOutputAnalyzer (line 12) | public abstract class ORCompilerOutputAnalyzer implements CompilerOutput...
method getOutputInfo (line 16) | @Override
method onTextAvailable (line 21) | @Override
method extractExtendedFilePositions (line 24) | protected @Nullable OutputInfo extractExtendedFilePositions(@NotNull L...
method extractSyntaxErrorFilePosition (line 44) | protected @Nullable OutputInfo extractSyntaxErrorFilePosition(@NotNull...
method addInfo (line 74) | protected @NotNull OutputInfo addInfo(@NotNull String path, @NotNull S...
FILE: src/main/java/com/reason/comp/ORConstants.java
class ORConstants (line 3) | public class ORConstants {
method ORConstants (line 19) | private ORConstants() {
FILE: src/main/java/com/reason/comp/ORPlatform.java
class ORPlatform (line 13) | public class ORPlatform {
method ORPlatform (line 16) | private ORPlatform() {
method findCompilerPathInNodeModules (line 19) | public static @Nullable VirtualFile findCompilerPathInNodeModules(@Not...
method findBinary (line 58) | public static @Nullable VirtualFile findBinary(@NotNull VirtualFile bi...
method getOsBinaryWrapperExtension (line 84) | @VisibleForTesting
method getOsPrefix (line 89) | @VisibleForTesting
FILE: src/main/java/com/reason/comp/ORResolvedCompiler.java
class ORResolvedCompiler (line 11) | public class ORResolvedCompiler<C extends ORCompiler> {
method ORResolvedCompiler (line 16) | public ORResolvedCompiler(@NotNull C compiler, @NotNull VirtualFile co...
method getType (line 22) | public @NotNull ORCompiler.CompilerType getType() {
method runDefault (line 26) | public void runDefault(@NotNull VirtualFile file, @Nullable ORProcessT...
method getFullVersion (line 30) | public @NotNull String getFullVersion() {
method getConfigFile (line 34) | public @NotNull VirtualFile getConfigFile() {
method getContentRoot (line 38) | public @Nullable VirtualFile getContentRoot() {
method getPath (line 42) | public @NotNull String getPath() {
FILE: src/main/java/com/reason/comp/ProcessFinishedListener.java
class ProcessFinishedListener (line 6) | public class ProcessFinishedListener extends ProcessAdapter {
method ProcessFinishedListener (line 9) | public ProcessFinishedListener() {
method ProcessFinishedListener (line 13) | public ProcessFinishedListener(long start) {
method processTerminated (line 17) | @Override
method formatBuildTime (line 26) | private static @NotNull String formatBuildTime(long milliSeconds) {
FILE: src/main/java/com/reason/comp/bs/BsColoredProcessHandler.java
class BsColoredProcessHandler (line 10) | class BsColoredProcessHandler extends KillableProcessHandler implements ...
method BsColoredProcessHandler (line 15) | BsColoredProcessHandler(@NotNull GeneralCommandLine commandLine, @Null...
method onOSProcessTerminated (line 20) | @Override
method notifyTextAvailable (line 28) | @Override
method coloredTextAvailable (line 33) | @Override
FILE: src/main/java/com/reason/comp/bs/BsCompiler.java
class BsCompiler (line 21) | @Service(Service.Level.PROJECT)
method BsCompiler (line 33) | private BsCompiler(@NotNull Project project) {
method getType (line 37) | @Override
method refreshNinjaBuild (line 42) | public void refreshNinjaBuild() {
method getFullVersion (line 46) | @Override
method getNamespace (line 51) | public @NotNull String getNamespace(@NotNull VirtualFile sourceFile) {
method runDefault (line 56) | @Override
method run (line 61) | @Override
method isConfigured (line 95) | @Override
method isAvailable (line 101) | @Override
method convert (line 106) | public @Nullable String convert(@Nullable VirtualFile virtualFile, boo...
method readNinjaBuild (line 118) | public @NotNull Ninja readNinjaBuild(@Nullable VirtualFile contentRoot) {
method isDisabled (line 130) | private boolean isDisabled() {
method isAvailable (line 142) | @Override
FILE: src/main/java/com/reason/comp/bs/BsConfig.java
class BsConfig (line 7) | public class BsConfig {
method BsConfig (line 22) | BsConfig(@NotNull String name, @Nullable String namespace, @Nullable S...
method getNamespace (line 56) | public @NotNull String getNamespace() {
method hasNamespace (line 60) | public boolean hasNamespace() {
method getSources (line 64) | public @NotNull Set<String> getSources() {
method getDevSources (line 68) | public @NotNull Set<String> getDevSources() {
method getName (line 72) | public @NotNull String getName() {
method getDependencies (line 76) | public @NotNull Set<String> getDependencies() {
method getBscFlags (line 80) | public @NotNull Set<String> getBscFlags() {
method getOpenedDeps (line 84) | public @NotNull Set<String> getOpenedDeps() {
method getJsxVersion (line 88) | public @Nullable String getJsxVersion() {
method getJsxMode (line 92) | public @Nullable String getJsxMode() {
method isUncurried (line 96) | public boolean isUncurried() {
method getPpx (line 100) | public @NotNull String[] getPpx() {
method setUseExternalAsSource (line 104) | public void setUseExternalAsSource(boolean useExternalAsSource) {
FILE: src/main/java/com/reason/comp/bs/BsConfigReader.java
class BsConfigReader (line 19) | public class BsConfigReader {
method BsConfigReader (line 22) | private BsConfigReader() {
method read (line 25) | @NotNull
method read (line 30) | @NotNull
method parse (line 37) | @NotNull
method toNamespace (line 173) | @NotNull
method readSources (line 188) | private static void readSources(
method parseSourceItem (line 216) | @Nullable
FILE: src/main/java/com/reason/comp/bs/BsFormatProcess.java
class BsFormatProcess (line 16) | @Service(Service.Level.PROJECT)
method BsFormatProcess (line 22) | public BsFormatProcess(@NotNull Project project) {
method convert (line 26) | @NotNull
FILE: src/main/java/com/reason/comp/bs/BsLineProcessor.java
class BsLineProcessor (line 17) | public class BsLineProcessor implements CompilerOutputAnalyzer {
method getOutputInfo (line 24) | @Override
type BuildStatus (line 32) | enum BuildStatus {
method BsLineProcessor (line 48) | public BsLineProcessor(Log log) {
method onTextAvailable (line 52) | @Override
method reset (line 132) | public void reset() {
method extractExtendedFilePositions (line 138) | private @Nullable OutputInfo extractExtendedFilePositions(@Nullable St...
method extractFilePositions (line 161) | private @Nullable OutputInfo extractFilePositions(@Nullable String tex...
method addInfo (line 203) | private @NotNull OutputInfo addInfo(@NotNull String path, @NotNull Str...
method addInfo (line 215) | private @NotNull OutputInfo addInfo(@NotNull String path, @NotNull Str...
FILE: src/main/java/com/reason/comp/bs/BsNotification.java
class BsNotification (line 14) | public class BsNotification {
method BsNotification (line 16) | private BsNotification() {
method showBsbNotFound (line 19) | @Nls
method showWorkingDirectoryNotFound (line 41) | @Nls
FILE: src/main/java/com/reason/comp/bs/BsPlatform.java
class BsPlatform (line 15) | public class BsPlatform {
method BsPlatform (line 18) | private BsPlatform() {
method findConfigFiles (line 21) | public static @NotNull List<VirtualFile> findConfigFiles(@NotNull Proj...
method findConfigFile (line 40) | public static @Nullable VirtualFile findConfigFile(@NotNull Project pr...
method findBsbExecutable (line 46) | public static @Nullable VirtualFile findBsbExecutable(@NotNull Project...
method findBscExecutable (line 52) | public static @Nullable VirtualFile findBscExecutable(@NotNull Project...
method findRefmtExecutable (line 58) | public static @Nullable VirtualFile findRefmtExecutable(@NotNull Proje...
FILE: src/main/java/com/reason/comp/bs/BsProcess.java
class BsProcess (line 18) | public final class BsProcess {
method BsProcess (line 22) | public BsProcess(@NotNull Project project) {
method create (line 26) | @Nullable ProcessHandler create(@NotNull VirtualFile source, @NotNull ...
method createProcessHandler (line 40) | @Nullable
method killIt (line 57) | private void killIt() {
method getGeneralCommandLine (line 64) | @Nullable
method getFullVersion (line 88) | public @NotNull String getFullVersion(@Nullable VirtualFile sourceFile) {
FILE: src/main/java/com/reason/comp/bs/BsResolvedCompiler.java
class BsResolvedCompiler (line 7) | public class BsResolvedCompiler extends ORResolvedCompiler<BsCompiler> {
method BsResolvedCompiler (line 8) | public BsResolvedCompiler(@NotNull BsCompiler compiler, @NotNull Virtu...
method readNinja (line 12) | public @Nullable Ninja readNinja() {
FILE: src/main/java/com/reason/comp/bs/Ninja.java
class Ninja (line 60) | public final class Ninja {
method Ninja (line 70) | public Ninja(@Nullable String contents) {
method extractRuleAstj (line 86) | private @NotNull List<String> extractRuleAstj(@NotNull String contents) {
method extractMijCommand (line 109) | private @NotNull List<String> extractMijCommand(int rulePos, @NotNull ...
method extractRuleMij (line 122) | private @NotNull List<String> extractRuleMij(@NotNull String contents) {
method extractRuleMijDev (line 139) | private @NotNull List<String> extractRuleMijDev(@NotNull String conten...
method getArgs (line 147) | public @NotNull List<String> getArgs() {
method getArgsDev (line 151) | public @NotNull List<String> getArgsDev() {
method readIncludes (line 155) | private @NotNull List<String> readIncludes(@Nullable String contents) {
method readPpxIncludes (line 196) | public @NotNull List<String> readPpxIncludes(@Nullable String contents) {
method readPkgFlags (line 222) | private @NotNull List<String> readPkgFlags(@Nullable String contents) {
method readBscFlags (line 243) | private @NotNull List<String> readBscFlags(@Nullable String contents) {
method addInclude (line 264) | public void addInclude(@NotNull String source) {
method getPkgFlags (line 268) | public @NotNull List<String> getPkgFlags() {
method getBscFlags (line 272) | public @NotNull List<String> getBscFlags() {
method getPpxIncludes (line 276) | public @NotNull List<String> getPpxIncludes() {
method getIncludes (line 280) | public @NotNull List<String> getIncludes() {
method isRescriptFormat (line 284) | public boolean isRescriptFormat() {
FILE: src/main/java/com/reason/comp/dune/DuneCompiler.java
class DuneCompiler (line 18) | @Service(Service.Level.PROJECT)
method DuneCompiler (line 25) | DuneCompiler(@NotNull Project project) {
method getType (line 29) | @Override
method getFullVersion (line 34) | @Override
method isConfigured (line 69) | @Override
method isAvailable (line 75) | @Override
method runDefault (line 80) | @Override
method run (line 85) | @Override
method isAvailable (line 119) | @Override
FILE: src/main/java/com/reason/comp/dune/DuneOutputAnalyzer.java
class DuneOutputAnalyzer (line 9) | public class DuneOutputAnalyzer extends ORCompilerOutputAnalyzer {
type OutputState (line 20) | enum OutputState {
method onTextAvailable (line 29) | @Override
FILE: src/main/java/com/reason/comp/dune/DunePlatform.java
class DunePlatform (line 14) | public class DunePlatform {
method DunePlatform (line 20) | private DunePlatform() {
method findConfigFiles (line 23) | public static @NotNull List<VirtualFile> findConfigFiles(@NotNull Proj...
method findContentRoot (line 31) | public static @Nullable VirtualFile findContentRoot(@NotNull Project p...
FILE: src/main/java/com/reason/comp/dune/DuneProcess.java
class DuneProcess (line 15) | public final class DuneProcess {
method DuneProcess (line 19) | DuneProcess(@NotNull Project project) {
method startNotify (line 24) | public void startNotify() {
method create (line 34) | public @Nullable ProcessHandler create(@NotNull VirtualFile source, @N...
method killIt (line 60) | private void killIt() {
class DuneCommandLine (line 67) | static class DuneCommandLine extends OpamCommandLine {
method DuneCommandLine (line 70) | DuneCommandLine(@NotNull Project project, @NotNull String binary) {
method getParameters (line 74) | @Override
method addParameters (line 79) | @NotNull DuneCommandLine addParameters(@NotNull CliType.Dune cliType) {
FILE: src/main/java/com/reason/comp/esy/Esy.java
class Esy (line 11) | public class Esy {
method Esy (line 13) | private Esy() {}
method findEsyExecutable (line 15) | public static Optional<VirtualFile> findEsyExecutable() {
method findEsyExecutableInstalledWithN (line 24) | private static Optional<VirtualFile> findEsyExecutableInstalledWithN() {
method findEsyExecutableInPath (line 31) | private static @NotNull Optional<Path> findEsyExecutableInPath() {
FILE: src/main/java/com/reason/comp/esy/EsyCompiler.java
class EsyCompiler (line 18) | @Service(Service.Level.PROJECT)
method EsyCompiler (line 25) | EsyCompiler(@NotNull Project project) {
method getType (line 29) | @Override
method getFullVersion (line 34) | @Override
method runDefault (line 39) | @Override
method run (line 44) | @Override
method isConfigured (line 81) | @Override
method isAvailable (line 87) | @Override
method isAvailable (line 92) | @Override
FILE: src/main/java/com/reason/comp/esy/EsyConstants.java
class EsyConstants (line 3) | public class EsyConstants {
method EsyConstants (line 9) | private EsyConstants() {}
FILE: src/main/java/com/reason/comp/esy/EsyNotification.java
class EsyNotification (line 10) | public class EsyNotification {
method EsyNotification (line 11) | private EsyNotification() {
method showEsyProjectNotFound (line 14) | @Nls
method showExecutionException (line 20) | @Nls
FILE: src/main/java/com/reason/comp/esy/EsyPackageJson.java
class EsyPackageJson (line 16) | public class EsyPackageJson {
method EsyPackageJson (line 17) | private EsyPackageJson() {
method isEsyPackageJson (line 21) | public static boolean isEsyPackageJson(@Nullable VirtualFile file) {
class FileContentPatternCondition (line 35) | private static class FileContentPatternCondition extends PatternCondit...
method FileContentPatternCondition (line 36) | public FileContentPatternCondition() {
method accepts (line 41) | @Override
FILE: src/main/java/com/reason/comp/esy/EsyPlatform.java
class EsyPlatform (line 15) | public class EsyPlatform {
method EsyPlatform (line 16) | private EsyPlatform() {
method findConfigFiles (line 19) | public static @NotNull List<VirtualFile> findConfigFiles(@NotNull Proj...
method isEsyProject (line 23) | public static boolean isEsyProject(@NotNull Project project) {
method findEsyConfigurationFiles (line 27) | public static List<VirtualFile> findEsyConfigurationFiles(@NotNull Pro...
method findEsyContentRoots (line 35) | public static List<VirtualFile> findEsyContentRoots(@NotNull Project p...
method findEsyExecutable (line 42) | public static Optional<VirtualFile> findEsyExecutable(@NotNull Project...
FILE: src/main/java/com/reason/comp/esy/EsyProcess.java
class EsyProcess (line 15) | public class EsyProcess {
method EsyProcess (line 23) | EsyProcess(@NotNull Project project) {
method startNotify (line 27) | public void startNotify() {
method create (line 37) | @Nullable
method killIt (line 68) | private void killIt() {
method newCommandLine (line 76) | private static GeneralCommandLine newCommandLine(@NotNull VirtualFile ...
method getCommand (line 85) | private static @NotNull String getCommand(@NotNull CliType.Esy cliType) {
method findWorkingDirectory (line 93) | private static @Nullable VirtualFile findWorkingDirectory(@NotNull Pro...
method processTerminated (line 103) | @Override
FILE: src/main/java/com/reason/comp/ocaml/OcamlFormatProcess.java
class OcamlFormatProcess (line 16) | @Service(Service.Level.PROJECT)
method OcamlFormatProcess (line 22) | public OcamlFormatProcess(Project project) {
method format (line 26) | public @NotNull String format(@NotNull VirtualFile file, @NotNull Stri...
class OCamlFormatCommandLine (line 75) | static class OCamlFormatCommandLine extends OpamCommandLine {
method OCamlFormatCommandLine (line 78) | OCamlFormatCommandLine(@NotNull Project project, @NotNull String bin...
method addParameters (line 82) | @NotNull OCamlFormatCommandLine addParameters(@NotNull VirtualFile f...
method getParameters (line 89) | @Override
FILE: src/main/java/com/reason/comp/ocaml/OpamCommandLine.java
class OpamCommandLine (line 17) | public abstract class OpamCommandLine {
method OpamCommandLine (line 25) | OpamCommandLine(@NotNull Project project, @NotNull String binary, bool...
method OpamCommandLine (line 31) | protected OpamCommandLine(@NotNull Project project, @NotNull String bi...
method getParameters (line 35) | protected abstract @NotNull List<String> getParameters();
method create (line 37) | public @Nullable GeneralCommandLine create(@NotNull VirtualFile source) {
FILE: src/main/java/com/reason/comp/ocaml/OpamEnv.java
class OpamEnv (line 10) | @Service(Service.Level.APP)
method getEnv (line 14) | public @Nullable Map<String, String> getEnv(@Nullable String switchNam...
method computeEnv (line 18) | public void computeEnv(@Nullable String opamLocation, @Nullable String...
FILE: src/main/java/com/reason/comp/ocaml/OpamProcess.java
class OpamProcess (line 16) | @Service(Service.Level.APP)
method destroyProcessImpl (line 20) | @Override protected void destroyProcessImpl() {
method detachProcessImpl (line 23) | @Override protected void detachProcessImpl() {
method detachIsDefault (line 26) | @Override public boolean detachIsDefault() {
method getProcessInput (line 30) | @Nullable @Override public OutputStream getProcessInput() {
method list (line 35) | public void list(@NotNull String opamLocation, @NotNull String version...
method env (line 77) | public void env(@Nullable String opamLocation, @Nullable String versio...
method listSwitch (line 121) | public void listSwitch(@NotNull String opamRootPath, @Nullable String ...
method toString (line 140) | @Override public String toString() {
class ListProcessListener (line 145) | static class ListProcessListener implements ProcessListener {
method ListProcessListener (line 152) | public ListProcessListener(@NotNull ORProcessTerminated<List<OpamSwi...
method processTerminated (line 156) | @Override
method onTextAvailable (line 161) | @Override
FILE: src/main/java/com/reason/comp/rescript/ResCompiler.java
class ResCompiler (line 25) | @Service(Service.Level.PROJECT)
method ResCompiler (line 32) | private ResCompiler(@NotNull Project project) {
method getType (line 36) | @Override
method getFullVersion (line 41) | @Override
method runDefault (line 57) | @Override
method run (line 62) | @Override
method getCommandLine (line 118) | private @NotNull GeneralCommandLine getCommandLine(@NotNull String bin...
method readNinjaBuild (line 125) | public @NotNull Ninja readNinjaBuild(@Nullable VirtualFile contentRoot) {
method isConfigured (line 138) | @Override
method isAvailable (line 143) | @Override
method isAvailable (line 149) | @Override
FILE: src/main/java/com/reason/comp/rescript/ResConfigReader.java
class ResConfigReader (line 7) | public class ResConfigReader {
method ResConfigReader (line 8) | private ResConfigReader() {
method read (line 11) | public static @NotNull BsConfig read(@NotNull VirtualFile bsConfigFile) {
method read (line 15) | public static @NotNull BsConfig read(@NotNull VirtualFile configFile, ...
FILE: src/main/java/com/reason/comp/rescript/ResFormatProcess.java
class ResFormatProcess (line 14) | @Service(Service.Level.PROJECT)
method ResFormatProcess (line 20) | public ResFormatProcess(@NotNull Project project) {
method format (line 24) | @NotNull
FILE: src/main/java/com/reason/comp/rescript/ResPlatform.java
class ResPlatform (line 17) | public class ResPlatform {
method ResPlatform (line 20) | private ResPlatform() {
method findConfigFiles (line 23) | public static @NotNull List<VirtualFile> findConfigFiles(@NotNull Proj...
method findConfigFile (line 41) | static @Nullable VirtualFile findConfigFile(@NotNull Project project, ...
method findBscExecutable (line 47) | public static @Nullable VirtualFile findBscExecutable(@NotNull Project...
method findRescriptExecutable (line 53) | public static @Nullable VirtualFile findRescriptExecutable(@NotNull Pr...
method findRefmtExecutable (line 59) | public static @Nullable VirtualFile findRefmtExecutable(@NotNull Proje...
method isDevSource (line 65) | public static boolean isDevSource(@NotNull VirtualFile sourceFile, @No...
FILE: src/main/java/com/reason/comp/rescript/ResProcessHandler.java
class ResProcessHandler (line 9) | public class ResProcessHandler extends KillableProcessHandler implements...
method ResProcessHandler (line 12) | public ResProcessHandler(@NotNull GeneralCommandLine commandLine) thro...
method notifyTextAvailable (line 16) | @Override
method coloredTextAvailable (line 21) | @Override
FILE: src/main/java/com/reason/comp/rescript/ResResolvedCompiler.java
class ResResolvedCompiler (line 8) | public class ResResolvedCompiler extends ORResolvedCompiler<ResCompiler> {
method ResResolvedCompiler (line 9) | public ResResolvedCompiler(@NotNull ResCompiler compiler, @NotNull Vir...
method readNinjaBuild (line 13) | public @Nullable Ninja readNinjaBuild() {
FILE: src/main/java/com/reason/comp/rescript/RescriptOutputAnalyzer.java
class RescriptOutputAnalyzer (line 8) | public class RescriptOutputAnalyzer extends ORCompilerOutputAnalyzer {
type OutputState (line 11) | enum OutputState {
method onTextAvailable (line 26) | @Override
FILE: src/main/java/com/reason/hints/InsightManager.java
class InsightManager (line 20) | @Service(Service.Level.PROJECT)
method InsightManager (line 27) | InsightManager(@NotNull Project project) {
method downloadRincewindIfNeeded (line 31) | public void downloadRincewindIfNeeded(@NotNull VirtualFile sourceFile) {
method queryTypes (line 50) | public void queryTypes(@Nullable VirtualFile sourceFile, @NotNull Path...
method dumpMeta (line 59) | public @NotNull List<String> dumpMeta(@NotNull VirtualFile cmtFile) {
method dumpTree (line 67) | public @NotNull String dumpTree(@NotNull VirtualFile cmtFile) {
method dumpInferredTypes (line 75) | public @NotNull List<String> dumpInferredTypes(@NotNull VirtualFile cm...
method getRincewindTarget (line 83) | @Nullable File getRincewindTarget(@Nullable String filename) {
method getRincewindFilename (line 92) | @Nullable String getRincewindFilename(@Nullable VirtualFile sourceFile...
FILE: src/main/java/com/reason/hints/Rincewind.java
class Rincewind (line 7) | public class Rincewind {
method Rincewind (line 10) | private Rincewind() {
method extractOcamlVersion (line 13) | static @Nullable String extractOcamlVersion(@Nullable String fullVersi...
method getLatestVersion (line 27) | static @NotNull String getLatestVersion(@Nullable String ocamlVersion) {
FILE: src/main/java/com/reason/hints/RincewindDownloader.java
class RincewindDownloader (line 19) | public class RincewindDownloader extends Task.Backgroundable {
method RincewindDownloader (line 27) | RincewindDownloader(@Nullable Project project, @NotNull File rincewind...
method run (line 35) | @Override
FILE: src/main/java/com/reason/hints/RincewindProcess.java
class RincewindProcess (line 19) | @Service(Service.Level.PROJECT)
method RincewindProcess (line 24) | RincewindProcess(@NotNull Project project) {
method types (line 28) | public void types(@NotNull VirtualFile sourceFile, @NotNull String rin...
method dumpTree (line 99) | public @NotNull String dumpTree(@NotNull VirtualFile cmtFile, @NotNull...
method dumpMeta (line 109) | public @NotNull List<String> dumpMeta(@NotNull String rincewindBinary,...
method dumpTypes (line 118) | public @NotNull List<String> dumpTypes(@NotNull String rincewindBinary...
type DumpVisitor (line 128) | public interface DumpVisitor {
method visitLine (line 129) | void visitLine(String line);
method dumper (line 132) | public void dumper(@NotNull String rincewindBinary, @NotNull VirtualFi...
method decodePosition (line 180) | private @NotNull LogicalPosition decodePosition(@NotNull String locati...
FILE: src/main/java/com/reason/ide/CompileOnSave.java
class CompileOnSave (line 12) | public class CompileOnSave implements PropertyChangeListener {
method CompileOnSave (line 18) | public CompileOnSave(@NotNull Project project, @NotNull VirtualFile fi...
method propertyChange (line 25) | @Override
FILE: src/main/java/com/reason/ide/EditorPosition.java
class EditorPosition (line 9) | public class EditorPosition {
method EditorPosition (line 15) | public EditorPosition(@NotNull String[] lines) {
method getPositionFromOffset (line 27) | @Nullable
FILE: src/main/java/com/reason/ide/IconProvider.java
class IconProvider (line 14) | public class IconProvider extends com.intellij.ide.IconProvider {
method getIcon (line 15) | @Nullable
method getDataModuleIcon (line 62) | public static @NotNull Icon getDataModuleIcon(@NotNull FileModuleData ...
method getDataModuleFileIcon (line 73) | public static @NotNull Icon getDataModuleFileIcon(@NotNull FileModuleD...
method isEsyPackageJson (line 84) | private boolean isEsyPackageJson(@Nullable PsiFile element) {
FILE: src/main/java/com/reason/ide/OREditorFactoryListener.java
class OREditorFactoryListener (line 7) | public class OREditorFactoryListener implements EditorFactoryListener {
method editorCreated (line 8) | @Override
FILE: src/main/java/com/reason/ide/OREditorTracker.java
class OREditorTracker (line 21) | @Service(Service.Level.PROJECT)
method OREditorTracker (line 25) | public OREditorTracker(@NotNull Project project) {
method dispose (line 67) | @Override
class ORDocumentEventListener (line 72) | static class ORDocumentEventListener implements DocumentListener {
method ORDocumentEventListener (line 76) | public ORDocumentEventListener(TextEditor textEditor) {
method beforeDocumentChange (line 80) | @Override
method documentChanged (line 87) | @Override
FILE: src/main/java/com/reason/ide/ORFileDocumentListener.java
class ORFileDocumentListener (line 12) | @Service(Service.Level.PROJECT)
method ensureSubscribed (line 16) | public static void ensureSubscribed(@NotNull Project project) {
method ORFileDocumentListener (line 20) | private ORFileDocumentListener(@NotNull Project project) {
method dispose (line 33) | @Override
FILE: src/main/java/com/reason/ide/ORFileUtils.java
class ORFileUtils (line 15) | public class ORFileUtils {
method ORFileUtils (line 20) | private ORFileUtils() {
method findCmtFileFromSource (line 23) | public static VirtualFile findCmtFileFromSource(@NotNull Project proje...
method toRelativeSourceName (line 47) | public static @NotNull String toRelativeSourceName(@NotNull Project pr...
method findAncestor (line 66) | public static @Nullable VirtualFile findAncestor(@NotNull Project proj...
method findOneOfAncestor (line 100) | public static @Nullable VirtualFile findOneOfAncestor(@NotNull Project...
method oneOfAncestor (line 118) | public static @Nullable VirtualFile oneOfAncestor(@Nullable String bas...
method getVirtualFile (line 147) | public static @Nullable VirtualFile getVirtualFile(@Nullable PsiFile p...
method getVirtualFile (line 156) | public static @Nullable VirtualFile getVirtualFile(@Nullable PsiElemen...
method getParentPath (line 160) | public static @NotNull String getParentPath(@Nullable VirtualFile virt...
method getParentPath (line 165) | public static String getParentPath(@Nullable PsiFile file) {
FILE: src/main/java/com/reason/ide/ORIcons.java
class ORIcons (line 19) | public class ORIcons {
method ORIcons (line 93) | private ORIcons() {
FILE: src/main/java/com/reason/ide/ORPostStartupActivity.java
class ORPostStartupActivity (line 18) | public class ORPostStartupActivity implements ProjectActivity, DumbAware {
method execute (line 21) | @Override
FILE: src/main/java/com/reason/ide/ORVirtualFileListener.java
class ORVirtualFileListener (line 26) | class ORVirtualFileListener implements AsyncFileListener {
method prepareChange (line 29) | @Override
class ORChangeApplier (line 34) | private static class ORChangeApplier implements ChangeApplier {
method ORChangeApplier (line 37) | private ORChangeApplier(@NotNull List<? extends VFileEvent> events) {
method apply (line 41) | public static @NotNull ChangeApplier apply(@NotNull List<? extends V...
method afterVfsChange (line 45) | @Override
method handleEvent (line 50) | private static <E extends VFileEvent> void handleEvent(@NotNull E ev...
method showHideToolWindowsForConfigurationFiles (line 61) | private static <E extends VFileEvent> void showHideToolWindowsForCon...
method handleFileContentChangeEvent (line 80) | private static void handleFileContentChangeEvent(@NotNull VFileConte...
method handleCompilerConfigContentChange (line 93) | private static void handleCompilerConfigContentChange(@NotNull Virtu...
FILE: src/main/java/com/reason/ide/actions/ConvertAction.java
class ConvertAction (line 24) | public class ConvertAction extends AnAction {
method actionPerformed (line 25) | @Override
method apply (line 35) | protected void apply(@NotNull Project project, @NotNull PsiFile file, ...
FILE: src/main/java/com/reason/ide/actions/TransformAction.java
class TransformAction (line 10) | public class TransformAction extends ConvertAction {
method actionPerformed (line 11) | @Override
FILE: src/main/java/com/reason/ide/annotations/BsErrorAnnotator.java
class BsErrorAnnotator (line 22) | public class BsErrorAnnotator {
method BsErrorAnnotator (line 25) | private BsErrorAnnotator() {
method collectInformation (line 28) | public static @Nullable ORErrorAnnotator.InitialInfo<BsResolvedCompile...
method doAnnotate (line 114) | public static @Nullable AnnotationResult doAnnotate(@NotNull InitialIn...
method compile (line 201) | public static @NotNull List<OutputInfo> compile(@NotNull BsResolvedCom...
FILE: src/main/java/com/reason/ide/annotations/ErrorFileHighlighter.java
class ErrorFileHighlighter (line 9) | public class ErrorFileHighlighter implements Condition<VirtualFile> {
method value (line 10) | @Override
FILE: src/main/java/com/reason/ide/annotations/ErrorsManager.java
class ErrorsManager (line 12) | @Service(Service.Level.PROJECT)
method addAllInfo (line 19) | public void addAllInfo(@NotNull Collection<OutputInfo> bsbInfo) {
method clearErrors (line 54) | public void clearErrors() {
FILE: src/main/java/com/reason/ide/annotations/ORErrorAnnotator.java
class ORErrorAnnotator (line 30) | public class ORErrorAnnotator extends ExternalAnnotator<InitialInfo<? ex...
method collectInformation (line 33) | @Override
method doAnnotate (line 54) | @Override
method apply (line 71) | @Override
method updateCodeLens (line 123) | private void updateCodeLens(@NotNull Project project, @Nullable ORLang...
method makeAnnotation (line 135) | private static @Nullable Annotation makeAnnotation(@NotNull OutputInfo...
method getOrCreateTempDirectory (line 165) | static @NotNull File getOrCreateTempDirectory(@NotNull Project project) {
method cleanTempDirectory (line 187) | static void cleanTempDirectory(@NotNull File directory, @NotNull Strin...
method copyToTempFile (line 194) | static @Nullable File copyToTempFile(@NotNull File tempCompilationDire...
class CompilerProcessListener (line 220) | static class CompilerProcessListener {
method CompilerProcessListener (line 224) | CompilerProcessListener(CompilerOutputAnalyzer lineProcessor) {
method onTextAvailable (line 228) | public void onTextAvailable(@NotNull String line, @NotNull Key<?> ou...
method getOutputInfo (line 234) | public @NotNull List<OutputInfo> getOutputInfo() {
class InitialInfo (line 239) | static public class InitialInfo<R extends ORResolvedCompiler<? extends...
method InitialInfo (line 251) | InitialInfo(R compiler, @NotNull PsiFile sourcePsiFile, @NotNull Vir...
method AnnotationResult (line 266) | public AnnotationResult(@NotNull List<OutputInfo> outputInfo, @NotNull...
method Annotation (line 274) | Annotation(boolean isError, @NotNull String message, @NotNull TextRang...
FILE: src/main/java/com/reason/ide/annotations/OutputInfo.java
class OutputInfo (line 5) | public class OutputInfo {
method toString (line 15) | @Override
FILE: src/main/java/com/reason/ide/annotations/ResErrorAnnotator.java
class ResErrorAnnotator (line 22) | public class ResErrorAnnotator {
method ResErrorAnnotator (line 25) | private ResErrorAnnotator() {
method collectInformation (line 28) | public static @Nullable ORErrorAnnotator.InitialInfo<ResResolvedCompil...
method doAnnotate (line 45) | public static @Nullable ORErrorAnnotator.AnnotationResult doAnnotate(@...
method compile (line 116) | static @NotNull List<OutputInfo> compile(@NotNull ResResolvedCompiler ...
FILE: src/main/java/com/reason/ide/comment/DuneCommenter.java
class DuneCommenter (line 6) | public class DuneCommenter implements Commenter {
method getLineCommentPrefix (line 7) | @Nullable
method getBlockCommentPrefix (line 13) | @Nullable
method getBlockCommentSuffix (line 19) | @Nullable
method getCommentedBlockCommentPrefix (line 25) | @Nullable
method getCommentedBlockCommentSuffix (line 31) | @Nullable
FILE: src/main/java/com/reason/ide/comment/MlyCommenter.java
class MlyCommenter (line 6) | public class MlyCommenter implements Commenter {
method getLineCommentPrefix (line 7) | @Nullable
method getBlockCommentPrefix (line 13) | @Nullable
method getBlockCommentSuffix (line 19) | @Nullable
method getCommentedBlockCommentPrefix (line 25) | @Nullable
method getCommentedBlockCommentSuffix (line 31) | @Nullable
FILE: src/main/java/com/reason/ide/comment/OclCommenter.java
class OclCommenter (line 14) | public class OclCommenter implements SelfManagingCommenter<OclCommenter....
method getLineCommentPrefix (line 15) | @Override
method getLineCommentSuffix (line 20) | @Override
method getBlockCommentPrefix (line 25) | @Override
method getBlockCommentSuffix (line 30) | @Override
method getCommentedBlockCommentPrefix (line 35) | @Override
method getCommentedBlockCommentSuffix (line 40) | @Override
method createLineCommentingState (line 45) | @Override
method createBlockCommentingState (line 50) | @Override
method commentLine (line 57) | @Override
method uncommentLine (line 68) | @Override
method isLineCommented (line 78) | @Override
method getCommentPrefix (line 84) | @Override
method getBlockCommentRange (line 89) | @Override
method getBlockCommentPrefix (line 94) | @Override
method getBlockCommentSuffix (line 99) | @Override
method uncommentBlockComment (line 104) | @Override
method insertBlockComment (line 120) | @Override
method findMaximumCommentedRange (line 133) | @Override
method getCommentRangesToDelete (line 177) | @Override
method expandRange (line 193) | private @NotNull TextRange expandRange(@NotNull CharSequence chars, in...
method getNearest (line 214) | private static int getNearest(@NotNull String text) {
class CommenterData (line 219) | public static class CommenterData extends CommenterDataHolder {
method CommenterData (line 223) | public CommenterData(int startLine, int endLine) {
method getStartLine (line 228) | public int getStartLine() {
method getEndLine (line 232) | public int getEndLine() {
FILE: src/main/java/com/reason/ide/comment/RmlCommenter.java
class RmlCommenter (line 6) | public class RmlCommenter implements Commenter {
method getLineCommentPrefix (line 7) | @Nullable
method getBlockCommentPrefix (line 13) | @Nullable
method getBlockCommentSuffix (line 19) | @Nullable
method getCommentedBlockCommentPrefix (line 25) | @Nullable
method getCommentedBlockCommentSuffix (line 31) | @Nullable
FILE: src/main/java/com/reason/ide/console/ClearLogAction.java
class ClearLogAction (line 10) | public class ClearLogAction extends DumbAwareAction {
method ClearLogAction (line 13) | public ClearLogAction(ConsoleView consoleView) {
method update (line 18) | @Override
method actionPerformed (line 24) | @Override
method getActionUpdateThread (line 29) | @Override
FILE: src/main/java/com/reason/ide/console/CompilerAction.java
class CompilerAction (line 14) | public abstract class CompilerAction extends DumbAwareAction {
method CompilerAction (line 15) | protected CompilerAction(@NotNull String text, @NotNull String descrip...
method doAction (line 19) | protected void doAction(@NotNull Project project, @NotNull CliType cli...
method compileDirectory (line 28) | private static void compileDirectory(@NotNull Project project, @NotNul...
method compileFile (line 35) | private static void compileFile(@NotNull Project project, @NotNull Edi...
method getActiveFile (line 45) | private static @Nullable PsiFile getActiveFile(@NotNull Project projec...
method getActiveEditor (line 50) | private static @Nullable Editor getActiveEditor(@NotNull Project proje...
FILE: src/main/java/com/reason/ide/console/ORConsoleFilter.java
class ORConsoleFilter (line 8) | public abstract class ORConsoleFilter implements Filter {
method ORConsoleFilter (line 13) | protected ORConsoleFilter(@NotNull Project project) {
method getHyperlinkInfo (line 17) | protected abstract @Nullable OpenFileHyperlinkInfo getHyperlinkInfo(St...
FILE: src/main/java/com/reason/ide/console/ORConsoleFilterProvider.java
class ORConsoleFilterProvider (line 16) | public class ORConsoleFilterProvider extends ConsoleDependentFilterProvi...
method getDefaultFilters (line 17) | @Override
FILE: src/main/java/com/reason/ide/console/ORToolWindowFactory.java
class ORToolWindowFactory (line 7) | public abstract class ORToolWindowFactory implements ToolWindowFactory, ...
method getId (line 9) | public abstract @NotNull String getId();
method getStripeTitle (line 11) | public abstract @NotNull String getStripeTitle();
method shouldBeAvailable (line 16) | @Override
method createToolWindowContent (line 21) | @Override
method init (line 24) | @Override
FILE: src/main/java/com/reason/ide/console/ORToolWindowManager.java
class ORToolWindowManager (line 22) | @Service(Service.Level.PROJECT)
method ORToolWindowManager (line 26) | private ORToolWindowManager(@NotNull Project project) {
method getConsoleView (line 30) | public @Nullable ConsoleView getConsoleView(@NotNull String id) {
method shouldShowToolWindows (line 39) | public void shouldShowToolWindows() {
method setToolWindowAvailable (line 61) | private void setToolWindowAvailable(@NotNull String id, @Nullable ORCo...
method getAvailableCompiler (line 77) | private @Nullable ORCompiler getAvailableCompiler(@NotNull CompilerTyp...
FILE: src/main/java/com/reason/ide/console/bs/BsConsoleView.java
class BsConsoleView (line 7) | public class BsConsoleView extends ConsoleViewImpl {
method BsConsoleView (line 8) | public BsConsoleView(@NotNull Project project) {
FILE: src/main/java/com/reason/ide/console/bs/BsMakeAction.java
class BsMakeAction (line 11) | public class BsMakeAction extends CompilerAction {
method BsMakeAction (line 12) | public BsMakeAction() {
method update (line 16) | @Override
method actionPerformed (line 25) | @Override
method getActionUpdateThread (line 34) | @Override
FILE: src/main/java/com/reason/ide/console/bs/BsMakeWorldAction.java
class BsMakeWorldAction (line 11) | public class BsMakeWorldAction extends CompilerAction {
method BsMakeWorldAction (line 12) | public BsMakeWorldAction() {
method update (line 16) | @Override
method actionPerformed (line 25) | @Override
method getActionUpdateThread (line 34) | @Override
FILE: src/main/java/com/reason/ide/console/bs/BsToolWindowFactory.java
class BsToolWindowFactory (line 13) | public class BsToolWindowFactory extends ORToolWindowFactory {
method getId (line 16) | @Override
method getStripeTitle (line 21) | @Override
method createToolWindowContent (line 26) | @Override
method createToolbar (line 43) | private @NotNull ActionToolbar createToolbar(@NotNull BsConsoleView co...
FILE: src/main/java/com/reason/ide/console/dune/DuneBuildAction.java
class DuneBuildAction (line 11) | public class DuneBuildAction extends CompilerAction {
method DuneBuildAction (line 12) | public DuneBuildAction() {
method update (line 16) | @Override
method actionPerformed (line 25) | @Override
method getActionUpdateThread (line 34) | @Override
FILE: src/main/java/com/reason/ide/console/dune/DuneCleanAction.java
class DuneCleanAction (line 11) | public class DuneCleanAction extends CompilerAction {
method DuneCleanAction (line 12) | public DuneCleanAction() {
method update (line 16) | @Override
method actionPerformed (line 25) | @Override
method getActionUpdateThread (line 34) | @Override
FILE: src/main/java/com/reason/ide/console/dune/DuneConsoleView.java
class DuneConsoleView (line 8) | public class DuneConsoleView extends ConsoleViewImpl {
method DuneConsoleView (line 9) | public DuneConsoleView(@NotNull Project project) {
method getFilters (line 13) | public @NotNull Filter[] getFilters() {
FILE: src/main/java/com/reason/ide/console/dune/DuneToolWindowFactory.java
class DuneToolWindowFactory (line 13) | public class DuneToolWindowFactory extends ORToolWindowFactory {
method getId (line 16) | @Override
method getStripeTitle (line 21) | @Override
method createToolWindowContent (line 26) | @Override
method createToolbar (line 43) | @NotNull
FILE: src/main/java/com/reason/ide/console/dune/OCamlConsoleFilter.java
class OCamlConsoleFilter (line 20) | public class OCamlConsoleFilter extends ORConsoleFilter {
method OCamlConsoleFilter (line 23) | public OCamlConsoleFilter(@NotNull Project project) {
method applyFilter (line 27) | @Override
method getHyperlinkInfo (line 50) | @Override
FILE: src/main/java/com/reason/ide/console/esy/EsyBuildAction.java
class EsyBuildAction (line 11) | public class EsyBuildAction extends CompilerAction {
method EsyBuildAction (line 12) | public EsyBuildAction() {
method update (line 16) | @Override
method actionPerformed (line 25) | @Override
method getActionUpdateThread (line 34) | @Override
FILE: src/main/java/com/reason/ide/console/esy/EsyConsoleView.java
class EsyConsoleView (line 14) | public class EsyConsoleView extends ConsoleViewImpl {
method EsyConsoleView (line 17) | public EsyConsoleView(@NotNull Project project) {
method getFilters (line 21) | public @NotNull Filter[] getFilters() {
class DuneConsoleFilter (line 32) | class DuneConsoleFilter implements Filter {
method applyFilter (line 33) | @Override
FILE: src/main/java/com/reason/ide/console/esy/EsyToolWindowFactory.java
class EsyToolWindowFactory (line 13) | public class EsyToolWindowFactory extends ORToolWindowFactory {
method getId (line 16) | @Override
method getStripeTitle (line 21) | @Override
method createToolWindowContent (line 26) | @Override
method createToolbar (line 43) | @NotNull
FILE: src/main/java/com/reason/ide/console/rescript/RescriptBuildAction.java
class RescriptBuildAction (line 11) | public class RescriptBuildAction extends CompilerAction {
method RescriptBuildAction (line 12) | public RescriptBuildAction() {
method update (line 16) | @Override
method actionPerformed (line 25) | @Override
method getActionUpdateThread (line 34) | @Override
FILE: src/main/java/com/reason/ide/console/rescript/RescriptConsoleFilter.java
class RescriptConsoleFilter (line 21) | public class RescriptConsoleFilter extends ORConsoleFilter {
method RescriptConsoleFilter (line 23) | public RescriptConsoleFilter(@NotNull Project project) {
method applyFilter (line 27) | @Override
method getHyperlinkInfo (line 49) | @Override
FILE: src/main/java/com/reason/ide/console/rescript/RescriptConsoleView.java
class RescriptConsoleView (line 8) | public class RescriptConsoleView extends ConsoleViewImpl {
method RescriptConsoleView (line 9) | public RescriptConsoleView(@NotNull Project project) {
method getFilters (line 13) | public @NotNull Filter[] getFilters() {
FILE: src/main/java/com/reason/ide/console/rescript/RescriptResetAction.java
class RescriptResetAction (line 11) | public class RescriptResetAction extends CompilerAction {
method RescriptResetAction (line 12) | public RescriptResetAction() {
method update (line 16) | @Override
method actionPerformed (line 25) | @Override
method getActionUpdateThread (line 34) | @Override
FILE: src/main/java/com/reason/ide/console/rescript/RescriptToolWindowFactory.java
class RescriptToolWindowFactory (line 13) | public class RescriptToolWindowFactory extends ORToolWindowFactory {
method getId (line 17) | @Override
method getStripeTitle (line 22) | @Override
method createToolWindowContent (line 27) | @Override
method createToolbar (line 44) | private @NotNull ActionToolbar createToolbar(@NotNull RescriptConsoleV...
FILE: src/main/java/com/reason/ide/debug/OCamlApplicationConfiguration.java
class OCamlApplicationConfiguration (line 14) | public class OCamlApplicationConfiguration extends ModuleBasedConfigurat...
method OCamlApplicationConfiguration (line 15) | public OCamlApplicationConfiguration(String name, @NotNull OCamlModule...
method getValidModules (line 19) | @Override
method getConfigurationEditor (line 24) | @Override
method getState (line 42) | @Override
FILE: src/main/java/com/reason/ide/debug/OCamlApplicationRunningState.java
class OCamlApplicationRunningState (line 14) | public class OCamlApplicationRunningState extends CommandLineState {
method OCamlApplicationRunningState (line 17) | protected OCamlApplicationRunningState(ExecutionEnvironment environmen...
method startProcess (line 22) | @NotNull
method getCommand (line 29) | @NotNull
FILE: src/main/java/com/reason/ide/debug/OCamlDebugRunner.java
class OCamlDebugRunner (line 8) | public class OCamlDebugRunner extends GenericProgramRunner<OclDebuggerRu...
method getRunnerId (line 11) | @Override
method canRun (line 16) | @Override
FILE: src/main/java/com/reason/ide/debug/OCamlModuleBasedConfiguration.java
class OCamlModuleBasedConfiguration (line 7) | public class OCamlModuleBasedConfiguration extends RunConfigurationModule {
method OCamlModuleBasedConfiguration (line 8) | public OCamlModuleBasedConfiguration(@NotNull Project project) {
FILE: src/main/java/com/reason/ide/debug/ORLineBreakpointProperties.java
class ORLineBreakpointProperties (line 7) | public class ORLineBreakpointProperties extends XBreakpointProperties<OR...
method getState (line 8) | @Nullable
method loadState (line 14) | @Override
FILE: src/main/java/com/reason/ide/debug/ORLineBreakpointType.java
class ORLineBreakpointType (line 20) | public class ORLineBreakpointType extends XLineBreakpointType<ORLineBrea...
method ORLineBreakpointType (line 24) | protected ORLineBreakpointType() {
method createBreakpointProperties (line 28) | @Nullable
method canPutAt (line 35) | @Override
class LineBreakpointAvailabilityProcessor (line 52) | private static final class LineBreakpointAvailabilityProcessor impleme...
method LineBreakpointAvailabilityProcessor (line 56) | LineBreakpointAvailabilityProcessor(ORLangTypes types) {
method process (line 60) | @Override
method isLineBreakpointAvailable (line 78) | boolean isLineBreakpointAvailable() {
FILE: src/main/java/com/reason/ide/debug/OclDebuggerRunnerSettings.java
class OclDebuggerRunnerSettings (line 7) | public class OclDebuggerRunnerSettings implements RunnerSettings {
method readExternal (line 8) | @Override public void readExternal(Element element) throws InvalidData...
method writeExternal (line 11) | @Override public void writeExternal(Element element) throws WriteExter...
FILE: src/main/java/com/reason/ide/docs/DocFormatter.java
class DocFormatter (line 20) | class DocFormatter {
method DocFormatter (line 23) | private DocFormatter() {
method format (line 26) | static @NotNull String format(@NotNull PsiFile file, @NotNull PsiEleme...
method escapeCodeForHtml (line 79) | static @NotNull String escapeCodeForHtml(@Nullable PsiElement code) {
method escapeCodeForHtml (line 87) | @Nullable
FILE: src/main/java/com/reason/ide/docs/ORDocumentationProvider.java
class ORDocumentationProvider (line 28) | public class ORDocumentationProvider extends AbstractDocumentationProvid...
method generateDoc (line 33) | @Override
method getQuickNavigateInfo (line 117) | @Override
method getCustomDocumentationElement (line 187) | @Override
method findComment (line 221) | private @Nullable PsiElement findComment(@Nullable PsiElement resolved...
method findAboveComment (line 234) | private @Nullable PsiElement findAboveComment(@Nullable PsiElement ele...
method findBelowComment (line 265) | private @Nullable PsiElement findBelowComment(@Nullable PsiElement ele...
method getInferredSignature (line 279) | private @Nullable String getInferredSignature(@NotNull PsiElement elem...
method createQuickDocTemplate (line 290) | private @NotNull String createQuickDocTemplate(@Nullable String[] path...
method isSpecialComment (line 298) | public static boolean isSpecialComment(@Nullable PsiElement element) {
FILE: src/main/java/com/reason/ide/editors/CmtFileEditor.java
class CmtFileEditor (line 20) | public class CmtFileEditor extends UserDataHolderBase implements FileEdi...
method CmtFileEditor (line 25) | public CmtFileEditor(@NotNull Project project, @NotNull VirtualFile fi...
method getFile (line 30) | @Override
method getComponent (line 35) | @Override
method getPreferredFocusedComponent (line 55) | @Override
method getName (line 60) | @Override
method isModified (line 65) | @Override
method isValid (line 70) | @Override
method dispose (line 75) | @Override
method setState (line 80) | @Override
method addPropertyChangeListener (line 84) | @Override
method removePropertyChangeListener (line 88) | @Override
class Table (line 92) | static class Table extends JBTable {
method Table (line 93) | private Table(TableModel model) {
method create (line 97) | public static @NotNull Table create(TableModel model) {
class MetaTableModel (line 105) | static class MetaTableModel extends AbstractTableModel {
method MetaTableModel (line 108) | public MetaTableModel(@NotNull List<String> entries) {
method getRowCount (line 114) | @Override
method getColumnCount (line 119) | @Override
method getColumnName (line 124) | @Override
method getColumnClass (line 129) | @Override
method getValueAt (line 134) | @Override
class InferredTableModel (line 144) | static class InferredTableModel extends AbstractTableModel {
method InferredTableModel (line 147) | public InferredTableModel(@NotNull List<String> types) {
method getRowCount (line 153) | @Override
method getColumnCount (line 158) | @Override
method getColumnName (line 163) | @Override
method getColumnClass (line 175) | @Override
method getValueAt (line 180) | @Override
FILE: src/main/java/com/reason/ide/editors/CmtFileEditorProvider.java
class CmtFileEditorProvider (line 9) | public class CmtFileEditorProvider implements com.intellij.openapi.fileE...
method accept (line 10) | @Override
method createEditor (line 15) | @Override
method getEditorTypeId (line 20) | @Override
method getPolicy (line 25) | @Override
FILE: src/main/java/com/reason/ide/editors/CmtXmlComponent.java
class CmtXmlComponent (line 14) | public class CmtXmlComponent extends BorderLayoutPanel implements Change...
method CmtXmlComponent (line 19) | public CmtXmlComponent(@NotNull Project project, @NotNull TabbedPaneWr...
method stateChanged (line 25) | @Override
method addChildren (line 33) | private void addChildren() {
FILE: src/main/java/com/reason/ide/files/CmtFileType.java
class CmtFileType (line 9) | public class CmtFileType implements FileType {
method getName (line 12) | @NotNull
method getDescription (line 18) | @NotNull
method getDefaultExtension (line 24) | @NotNull
method getIcon (line 30) | @Nullable
method isBinary (line 36) | @Override
method isReadOnly (line 41) | @Override
method getCharset (line 46) | @Override
FILE: src/main/java/com/reason/ide/files/DuneFile.java
class DuneFile (line 11) | public class DuneFile extends PsiFileBase {
method DuneFile (line 12) | public DuneFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 16) | @Override
method getStanza (line 21) | public @Nullable RPsiDuneStanza getStanza(@NotNull String name) {
FILE: src/main/java/com/reason/ide/files/DuneFileType.java
class DuneFileType (line 15) | public class DuneFileType extends LanguageFileType {
method getDefaultFilenames (line 19) | public static Set<String> getDefaultFilenames() {
method isDuneFile (line 23) | public static boolean isDuneFile(@NotNull VirtualFile file) {
method DuneFileType (line 27) | private DuneFileType() {
method getName (line 31) | @NotNull
method getDescription (line 37) | @NotNull
method getDefaultExtension (line 43) | @NotNull
method getIcon (line 49) | @Nullable
FILE: src/main/java/com/reason/ide/files/FileBase.java
class FileBase (line 16) | public abstract class FileBase extends PsiFileBase implements RPsiModule...
method FileBase (line 19) | FileBase(@NotNull FileViewProvider viewProvider, @NotNull Language lan...
method getModuleName (line 24) | public @NotNull String getModuleName() {
method getPath (line 29) | @Override
method getQualifiedName (line 34) | @Override
method getBody (line 41) | @Override
method isComponent (line 46) | public boolean isComponent() {
method getMakeFunction (line 54) | @Override
method getQualifiedExpressions (line 64) | @SafeVarargs
method isInterface (line 80) | public boolean isInterface() {
method equals (line 84) | @Override
method hashCode (line 96) | @Override
FILE: src/main/java/com/reason/ide/files/Ml4File.java
class Ml4File (line 9) | public class Ml4File extends PsiFileBase {
method Ml4File (line 10) | public Ml4File(@NotNull FileViewProvider viewProvider) {
method getFileType (line 14) | @NotNull
method toString (line 20) | @NotNull
FILE: src/main/java/com/reason/ide/files/Ml4FileType.java
class Ml4FileType (line 10) | public class Ml4FileType extends LanguageFileType {
method Ml4FileType (line 13) | private Ml4FileType() {
method getName (line 17) | @NotNull
method getDescription (line 23) | @NotNull
method getDefaultExtension (line 29) | @NotNull
method getIcon (line 35) | @Nullable
FILE: src/main/java/com/reason/ide/files/MlgFile.java
class MlgFile (line 9) | public class MlgFile extends PsiFileBase {
method MlgFile (line 10) | public MlgFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 14) | @Override
method toString (line 19) | @Override
FILE: src/main/java/com/reason/ide/files/MlgFileType.java
class MlgFileType (line 13) | public class MlgFileType extends LanguageFileType {
method MlgFileType (line 16) | private MlgFileType() {
method getName (line 21) | @Override
method getDescription (line 26) | @Override
method getDefaultExtension (line 31) | @Override
method getIcon (line 36) | @Override
FILE: src/main/java/com/reason/ide/files/MlgFileViewProvider.java
class MlgFileViewProvider (line 15) | public class MlgFileViewProvider extends MultiplePsiFilesPerDocumentFile...
method MlgFileViewProvider (line 19) | public MlgFileViewProvider(@NotNull PsiManager manager, @NotNull Virtu...
method getBaseLanguage (line 23) | @Override
method getTemplateDataLanguage (line 28) | @Override
method getLanguages (line 33) | @Override
method cloneInner (line 38) | @Override
method createFile (line 43) | @Nullable
FILE: src/main/java/com/reason/ide/files/MlgFileViewProviderFactory.java
class MlgFileViewProviderFactory (line 8) | public class MlgFileViewProviderFactory implements FileViewProviderFacto...
method createFileViewProvider (line 9) | @Override
FILE: src/main/java/com/reason/ide/files/MllFile.java
class MllFile (line 9) | public class MllFile extends PsiFileBase {
method MllFile (line 10) | public MllFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 14) | @Override
method toString (line 19) | @Override
FILE: src/main/java/com/reason/ide/files/MllFileType.java
class MllFileType (line 11) | public class MllFileType extends LanguageFileType {
method MllFileType (line 14) | private MllFileType() {
method getName (line 19) | @Override
method getDescription (line 24) | @Override
method getDefaultExtension (line 29) | @Override
method getIcon (line 34) | @Override
FILE: src/main/java/com/reason/ide/files/MllFileViewProvider.java
class MllFileViewProvider (line 15) | public class MllFileViewProvider extends MultiplePsiFilesPerDocumentFile...
method MllFileViewProvider (line 19) | public MllFileViewProvider(@NotNull PsiManager manager, @NotNull Virtu...
method getBaseLanguage (line 23) | @Override
method getTemplateDataLanguage (line 28) | @Override
method getLanguages (line 33) | @Override
method cloneInner (line 38) | @Override
method createFile (line 43) | @Override
FILE: src/main/java/com/reason/ide/files/MllFileViewProviderFactory.java
class MllFileViewProviderFactory (line 8) | public class MllFileViewProviderFactory implements FileViewProviderFacto...
method createFileViewProvider (line 9) | @Override
FILE: src/main/java/com/reason/ide/files/MlyFile.java
class MlyFile (line 9) | public class MlyFile extends PsiFileBase {
method MlyFile (line 10) | public MlyFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 14) | @Override
method toString (line 19) | @Override
FILE: src/main/java/com/reason/ide/files/MlyFileType.java
class MlyFileType (line 11) | public class MlyFileType extends LanguageFileType {
method MlyFileType (line 14) | private MlyFileType() {
method getName (line 19) | @Override
method getDescription (line 24) | @Override
method getDefaultExtension (line 29) | @Override
method getIcon (line 34) | @Override
FILE: src/main/java/com/reason/ide/files/MlyFileViewProvider.java
class MlyFileViewProvider (line 15) | public class MlyFileViewProvider extends MultiplePsiFilesPerDocumentFile...
method MlyFileViewProvider (line 19) | public MlyFileViewProvider(@NotNull PsiManager manager, @NotNull Virtu...
method getBaseLanguage (line 23) | @Override
method getTemplateDataLanguage (line 28) | @Override
method getLanguages (line 33) | @Override
method cloneInner (line 38) | @Override
method createFile (line 43) | @Override
FILE: src/main/java/com/reason/ide/files/MlyFileViewProviderFactory.java
class MlyFileViewProviderFactory (line 8) | public class MlyFileViewProviderFactory implements FileViewProviderFacto...
method createFileViewProvider (line 9) | @Override
FILE: src/main/java/com/reason/ide/files/ORConfigJsonFileType.java
class ORConfigJsonFileType (line 9) | public class ORConfigJsonFileType extends JsonFileType {
method getName (line 12) | @Override
method getDescription (line 17) | @Override
method getIcon (line 22) | @Override
FILE: src/main/java/com/reason/ide/files/ORTargetElementEvaluator.java
class ORTargetElementEvaluator (line 12) | public class ORTargetElementEvaluator extends TargetElementEvaluatorEx2 {
method includeSelfInGotoImplementation (line 13) | @Override
method getGotoDeclarationTarget (line 18) | @Override
FILE: src/main/java/com/reason/ide/files/OclFile.java
class OclFile (line 8) | public class OclFile extends FileBase {
method OclFile (line 9) | public OclFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 13) | @Override
method toString (line 18) | @Override
FILE: src/main/java/com/reason/ide/files/OclFileType.java
class OclFileType (line 12) | public class OclFileType extends LanguageFileType {
method OclFileType (line 15) | private OclFileType() {
method getName (line 19) | @Override
method getDescription (line 24) | @Override
method getDefaultExtension (line 29) | @Override
method getIcon (line 34) | @Override
method toString (line 39) | @Override
FILE: src/main/java/com/reason/ide/files/OclInterfaceFile.java
class OclInterfaceFile (line 8) | public class OclInterfaceFile extends FileBase {
method OclInterfaceFile (line 9) | public OclInterfaceFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 13) | @NotNull
method toString (line 19) | @NotNull
FILE: src/main/java/com/reason/ide/files/OclInterfaceFileType.java
class OclInterfaceFileType (line 10) | public class OclInterfaceFileType extends LanguageFileType {
method OclInterfaceFileType (line 13) | private OclInterfaceFileType() {
method getName (line 17) | @Override
method getDisplayName (line 22) | @Override public @NotNull @Nls String getDisplayName() {
method getDescription (line 26) | @Override
method getDefaultExtension (line 31) | @Override
method getIcon (line 36) | @Override
method toString (line 41) | @Override
FILE: src/main/java/com/reason/ide/files/ResFile.java
class ResFile (line 8) | public class ResFile extends FileBase {
method ResFile (line 9) | public ResFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 13) | @Override
method toString (line 18) | @Override
FILE: src/main/java/com/reason/ide/files/ResFileType.java
class ResFileType (line 14) | public class ResFileType extends LanguageFileType implements FileTypeIde...
method ResFileType (line 18) | private ResFileType() {
method isMyFileType (line 22) | @Override
method getName (line 36) | @Override
method getDescription (line 41) | @Override
method getDefaultExtension (line 46) | @Override
method getIcon (line 51) | @Override
method toString (line 56) | @Override
FILE: src/main/java/com/reason/ide/files/ResInterfaceFile.java
class ResInterfaceFile (line 8) | public class ResInterfaceFile extends FileBase {
method ResInterfaceFile (line 9) | public ResInterfaceFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 13) | @Override
method toString (line 18) | @Override
FILE: src/main/java/com/reason/ide/files/ResInterfaceFileType.java
class ResInterfaceFileType (line 11) | public class ResInterfaceFileType extends LanguageFileType {
method ResInterfaceFileType (line 14) | private ResInterfaceFileType() {
method getName (line 18) | @Override
method getDisplayName (line 23) | @Override
method getDescription (line 28) | @Override
method getDefaultExtension (line 33) | @Override
method getIcon (line 38) | @Override
method toString (line 43) | @Override
FILE: src/main/java/com/reason/ide/files/RmlFile.java
class RmlFile (line 8) | public class RmlFile extends FileBase {
method RmlFile (line 9) | public RmlFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 13) | @NotNull
method toString (line 19) | @NotNull
FILE: src/main/java/com/reason/ide/files/RmlFileType.java
class RmlFileType (line 10) | public class RmlFileType extends LanguageFileType {
method RmlFileType (line 13) | private RmlFileType() {
method getName (line 17) | @NotNull
method getDescription (line 23) | @NotNull
method getDefaultExtension (line 29) | @NotNull
method getIcon (line 35) | @Nullable
method toString (line 41) | @NotNull
FILE: src/main/java/com/reason/ide/files/RmlInterfaceFile.java
class RmlInterfaceFile (line 8) | public class RmlInterfaceFile extends FileBase {
method RmlInterfaceFile (line 9) | public RmlInterfaceFile(@NotNull FileViewProvider viewProvider) {
method getFileType (line 13) | @NotNull
method toString (line 19) | @NotNull
FILE: src/main/java/com/reason/ide/files/RmlInterfaceFileType.java
class RmlInterfaceFileType (line 10) | public class RmlInterfaceFileType extends LanguageFileType {
method RmlInterfaceFileType (line 13) | private RmlInterfaceFileType() {
method getName (line 17) | @Override
method getDisplayName (line 22) | @Override
method getDescription (line 27) | @Override
method getDefaultExtension (line 32) | @Override
method getIcon (line 37) | @Override
method toString (line 42) | @Override
FILE: src/main/java/com/reason/ide/folding/DuneFoldingBuilder.java
class DuneFoldingBuilder (line 16) | public class DuneFoldingBuilder extends FoldingBuilderEx {
method buildFoldRegions (line 17) | @Override
method isMultiline (line 40) | private static boolean isMultiline(@NotNull TextRange range, @NotNull ...
method foldStanza (line 45) | private @Nullable FoldingDescriptor foldStanza(@NotNull RPsiDuneStanza...
method fold (line 50) | private @Nullable FoldingDescriptor fold(@Nullable PsiElement root) {
method getPlaceholderText (line 70) | @Override
method isCollapsedByDefault (line 75) | @Override
FILE: src/main/java/com/reason/ide/folding/ORFoldingBuilder.java
class ORFoldingBuilder (line 24) | public class ORFoldingBuilder extends FoldingBuilderEx {
method buildFoldRegions (line 25) | @Override
method foldLet (line 86) | private void foldLet(@NotNull List<FoldingDescriptor> descriptors, @No...
method foldType (line 93) | private void foldType(@NotNull List<FoldingDescriptor> descriptors, @N...
method foldModule (line 103) | private void foldModule(@NotNull List<FoldingDescriptor> descriptors, ...
method foldFunction (line 115) | private void foldFunction(@NotNull List<FoldingDescriptor> descriptors...
method foldFunctor (line 122) | private void foldFunctor(@NotNull List<FoldingDescriptor> descriptors,...
method foldFunctorResult (line 129) | private void foldFunctorResult(@NotNull List<FoldingDescriptor> descri...
method foldTag (line 136) | private void foldTag(@NotNull List<FoldingDescriptor> descriptors, @No...
method foldSwitch (line 147) | private void foldSwitch(@NotNull List<FoldingDescriptor> descriptors, ...
method foldTry (line 159) | private void foldTry(@NotNull List<FoldingDescriptor> descriptors, @No...
method foldPatternMatch (line 166) | private void foldPatternMatch(@NotNull List<FoldingDescriptor> descrip...
method getPlaceholderText (line 173) | @Override
method isCollapsedByDefault (line 197) | @Override
method fold (line 202) | @Nullable
FILE: src/main/java/com/reason/ide/format/FormatterProcessor.java
type FormatterProcessor (line 5) | public interface FormatterProcessor {
method apply (line 6) | @Nullable String apply(@NotNull String textToFormat);
FILE: src/main/java/com/reason/ide/format/ORPostFormatProcessor.java
class ORPostFormatProcessor (line 34) | public class ORPostFormatProcessor implements PostFormatProcessor {
method processElement (line 37) | @Override
method processText (line 50) | @Override
method getFormatterProcessor (line 85) | public static @Nullable FormatterProcessor getFormatterProcessor(@NotN...
class RmlFormatProcessor (line 99) | static class RmlFormatProcessor implements FormatterProcessor {
method RmlFormatProcessor (line 104) | RmlFormatProcessor(@NotNull PsiFile file) {
method apply (line 110) | @Override
class ResFormatProcessor (line 121) | static class ResFormatProcessor implements FormatterProcessor {
method ResFormatProcessor (line 126) | ResFormatProcessor(@NotNull PsiFile file) {
method apply (line 132) | @Override
class OclFormatProcessor (line 143) | private static class OclFormatProcessor implements FormatterProcessor {
method OclFormatProcessor (line 147) | public OclFormatProcessor(@NotNull PsiFile file) {
method apply (line 152) | @Override
FILE: src/main/java/com/reason/ide/format/ReformatOnSave.java
class ReformatOnSave (line 26) | public class ReformatOnSave {
method ReformatOnSave (line 30) | private ReformatOnSave() {
method apply (line 33) | public static void apply(@NotNull Project project, @NotNull Document d...
FILE: src/main/java/com/reason/ide/go/FileModuleDataModuleRendererFactory.java
class FileModuleDataModuleRendererFactory (line 7) | public class FileModuleDataModuleRendererFactory extends ModuleRendererF...
method handles (line 8) | @Override protected boolean handles(Object element) {
method getModuleTextWithIcon (line 12) | @Override public @Nullable TextWithIcon getModuleTextWithIcon(Object e...
FILE: src/main/java/com/reason/ide/go/ORLineMarkerProvider.java
class ORLineMarkerProvider (line 30) | public class ORLineMarkerProvider extends RelatedItemLineMarkerProvider {
method collectNavigationMarkers (line 33) | @Override
method collectLetNavigationMarkers (line 68) | private void collectLetNavigationMarkers(@NotNull RPsiLet element, @No...
method collectValNavigationMarkers (line 186) | private void collectValNavigationMarkers(@NotNull RPsiVal element, @No...
method collectTypeNavigationMarkers (line 269) | private void collectTypeNavigationMarkers(@NotNull RPsiType element, @...
method collectExternalNavigationMarkers (line 296) | private void collectExternalNavigationMarkers(@NotNull RPsiExternal el...
method collectClassNavigationMarkers (line 323) | private void collectClassNavigationMarkers(@NotNull RPsiClass element,...
method collectClassMethodNavigationMarkers (line 349) | private void collectClassMethodNavigationMarkers(@NotNull RPsiClassMet...
method collectExceptionNavigationMarkers (line 376) | private void collectExceptionNavigationMarkers(@NotNull RPsiException ...
method collectInnerModuleNavigationMarkers (line 403) | private void collectInnerModuleNavigationMarkers(@NotNull RPsiInnerMod...
method findModulesUsingSignatureName (line 450) | private static @NotNull List<RPsiInnerModule> findModulesUsingSignatur...
method resolveTargetFromIndex (line 475) | private static @NotNull <T extends RPsiQualifiedPathElement> List<T> r...
method findTargetFromImplementationModule (line 490) | private @NotNull <T extends RPsiQualifiedPathElement> List<T> findTarg...
method findTargetFromInterfaceModule (line 516) | private @NotNull <T extends RPsiQualifiedPathElement> List<T> findTarg...
method createMarkerInfo (line 555) | private <T extends PsiElement> void createMarkerInfo(@NotNull Collecti...
class PresentationRenderer (line 587) | static class PresentationRenderer extends PsiTargetPresentationRendere...
method PresentationRenderer (line 590) | public PresentationRenderer(PsiNameIdentifierOwner psiSource) {
method getPresentation (line 594) | @Override
FILE: src/main/java/com/reason/ide/go/ORModuleContributor.java
class ORModuleContributor (line 24) | public class ORModuleContributor implements GotoClassContributor, Choose...
method processNames (line 25) | @Override
method processElementsWithName (line 40) | @Override
method getQualifiedName (line 60) | @Override
method getQualifiedNameSeparator (line 70) | @Override
class FileModuleDataPresentation (line 75) | private static class FileModuleDataPresentation implements ItemPresent...
method FileModuleDataPresentation (line 78) | public FileModuleDataPresentation(@NotNull FileModuleData moduleDatu...
method getPresentableText (line 82) | @Override
method getLocationString (line 87) | @Override
method getIcon (line 92) | @Override
class FileModuleDataNavigationItem (line 98) | public static class FileModuleDataNavigationItem implements Navigation...
method FileModuleDataNavigationItem (line 102) | public FileModuleDataNavigationItem(FileModuleData moduleDatum, Proj...
method getName (line 107) | @Override
method getPresentation (line 112) | @Override
method navigate (line 117) | @Override
method canNavigate (line 125) | @Override
method canNavigateToSource (line 130) | @Override
method getLocation (line 135) | public String getLocation() {
method getLocationIcon (line 139) | public Icon getLocationIcon() {
FILE: src/main/java/com/reason/ide/handlers/ORTypedHandler.java
class ORTypedHandler (line 17) | public class ORTypedHandler extends TypedHandlerDelegate {
method beforeCharTyped (line 18) | @NotNull
FILE: src/main/java/com/reason/ide/handlers/OclQuoteHandler.java
class OclQuoteHandler (line 7) | public class OclQuoteHandler extends SimpleTokenSetQuoteHandler {
method OclQuoteHandler (line 9) | public OclQuoteHandler() {
FILE: src/main/java/com/reason/ide/handlers/ResQuoteHandler.java
class ResQuoteHandler (line 7) | public class ResQuoteHandler extends SimpleTokenSetQuoteHandler {
method ResQuoteHandler (line 8) | public ResQuoteHandler() {
FILE: src/main/java/com/reason/ide/handlers/RmlQuoteHandler.java
class RmlQuoteHandler (line 7) | public class RmlQuoteHandler extends SimpleTokenSetQuoteHandler {
method RmlQuoteHandler (line 9) | public RmlQuoteHandler() {
FILE: src/main/java/com/reason/ide/highlight/DuneSyntaxAnnotator.java
class DuneSyntaxAnnotator (line 15) | public class DuneSyntaxAnnotator implements Annotator {
method annotate (line 17) | @Override
method color (line 37) | private void color(
FILE: src/main/java/com/reason/ide/highlight/DuneSyntaxHighlighter.java
class DuneSyntaxHighlighter (line 14) | public class DuneSyntaxHighlighter extends SyntaxHighlighterBase {
method getHighlightingLexer (line 46) | @Override
method getTokenHighlights (line 51) | @Override
FILE: src/main/java/com/reason/ide/highlight/DuneSyntaxHighlighterFactory.java
class DuneSyntaxHighlighterFactory (line 8) | public class DuneSyntaxHighlighterFactory extends SyntaxHighlighterFacto...
method getSyntaxHighlighter (line 9) | @NotNull
FILE: src/main/java/com/reason/ide/highlight/ORSyntaxAnnotator.java
class ORSyntaxAnnotator (line 18) | public abstract class ORSyntaxAnnotator implements Annotator {
method ORSyntaxAnnotator (line 21) | ORSyntaxAnnotator(@NotNull ORLangTypes types) {
method annotate (line 25) | public void annotate(@NotNull PsiElement element, @NotNull AnnotationH...
method eraseColor (line 78) | private static void eraseColor(@NotNull PsiElement element, @NotNull A...
method enforceColor (line 82) | @SuppressWarnings("SameParameterValue")
method enforceColor (line 88) | private void enforceColor(@NotNull AnnotationHolder holder, @Nullable ...
FILE: src/main/java/com/reason/ide/highlight/ORSyntaxHighlighter.java
class ORSyntaxHighlighter (line 19) | public class ORSyntaxHighlighter extends SyntaxHighlighterBase {
method ORSyntaxHighlighter (line 71) | public ORSyntaxHighlighter(ORLangTypes types, Set<IElementType> keywor...
method getHighlightingLexer (line 79) | @Override
method getTokenHighlights (line 86) | @Override
method of (line 134) | @NotNull
FILE: src/main/java/com/reason/ide/highlight/OclGrammarEditorHighlighter.java
class OclGrammarEditorHighlighter (line 14) | public final class OclGrammarEditorHighlighter extends LayeredLexerEdito...
method OclGrammarEditorHighlighter (line 15) | public OclGrammarEditorHighlighter(@Nullable Project project, @Nullabl...
FILE: src/main/java/com/reason/ide/highlight/OclGrammarSyntaxHighlighterFactory.java
class OclGrammarSyntaxHighlighterFactory (line 17) | public class OclGrammarSyntaxHighlighterFactory extends SyntaxHighlighte...
method getSyntaxHighlighter (line 28) | @Override
FILE: src/main/java/com/reason/ide/highlight/OclLexEditorHighlighter.java
class OclLexEditorHighlighter (line 14) | public final class OclLexEditorHighlighter extends LayeredLexerEditorHig...
method OclLexEditorHighlighter (line 15) | public OclLexEditorHighlighter(@Nullable Project project, @Nullable Vi...
FILE: src/main/java/com/reason/ide/highlight/OclLexSyntaxHighlighterFactory.java
class OclLexSyntaxHighlighterFactory (line 17) | public class OclLexSyntaxHighlighterFactory extends SyntaxHighlighterFac...
method getSyntaxHighlighter (line 25) | @Override
FILE: src/main/java/com/reason/ide/highlight/OclSyntaxAnnotator.java
class OclSyntaxAnnotator (line 5) | public class OclSyntaxAnnotator extends ORSyntaxAnnotator {
method OclSyntaxAnnotator (line 6) | public OclSyntaxAnnotator() {
FILE: src/main/java/com/reason/ide/highlight/OclSyntaxHighlighterFactory.java
class OclSyntaxHighlighterFactory (line 14) | public class OclSyntaxHighlighterFactory extends SyntaxHighlighterFactory {
method getSyntaxHighlighter (line 57) | @Override
FILE: src/main/java/com/reason/ide/highlight/OclYaccEditorHighlighter.java
class OclYaccEditorHighlighter (line 14) | public final class OclYaccEditorHighlighter extends LayeredLexerEditorHi...
method OclYaccEditorHighlighter (line 15) | public OclYaccEditorHighlighter(@Nullable Project project, @Nullable V...
FILE: src/main/java/com/reason/ide/highlight/OclYaccSyntaxHighlighterFactory.java
class OclYaccSyntaxHighlighterFactory (line 17) | public class OclYaccSyntaxHighlighterFactory extends SyntaxHighlighterFa...
method getSyntaxHighlighter (line 29) | @Override
FILE: src/main/java/com/reason/ide/highlight/ResSyntaxAnnotator.java
class ResSyntaxAnnotator (line 5) | public class ResSyntaxAnnotator extends ORSyntaxAnnotator {
method ResSyntaxAnnotator (line 6) | public ResSyntaxAnnotator() {
FILE: src/main/java/com/reason/ide/highlight/ResSyntaxHighlighterFactory.java
class ResSyntaxHighlighterFactory (line 14) | public class ResSyntaxHighlighterFactory extends SyntaxHighlighterFactory {
method getSyntaxHighlighter (line 56) | @Override
FILE: src/main/java/com/reason/ide/highlight/RmlSyntaxAnnotator.java
class RmlSyntaxAnnotator (line 5) | public class RmlSyntaxAnnotator extends ORSyntaxAnnotator {
method RmlSyntaxAnnotator (line 7) | public RmlSyntaxAnnotator() {
FILE: src/main/java/com/reason/ide/highlight/RmlSyntaxHighlighterFactory.java
class RmlSyntaxHighlighterFactory (line 14) | public class RmlSyntaxHighlighterFactory extends SyntaxHighlighterFactory {
method getSyntaxHighlighter (line 52) | @Override
FILE: src/main/java/com/reason/ide/hints/CodeLens.java
class CodeLens (line 9) | public class CodeLens {
method get (line 15) | public synchronized @Nullable String get(int line) {
method putAll (line 20) | public synchronized void putAll(@NotNull Map<Integer, InferredTypes.Lo...
method move (line 25) | public synchronized void move(@NotNull LogicalPosition cursorPosition,...
method remove (line 49) | public void remove(int line) {
FILE: src/main/java/com/reason/ide/hints/InferredTypes.java
type InferredTypes (line 10) | public interface InferredTypes {
class LogicalPositionSignature (line 11) | class LogicalPositionSignature {
method signaturesByLines (line 17) | @NotNull
method getSignatureByPosition (line 20) | @Nullable
FILE: src/main/java/com/reason/ide/hints/InferredTypesImplementation.java
class InferredTypesImplementation (line 16) | public class InferredTypesImplementation implements InferredTypes {
method signaturesByLines (line 28) | public @NotNull Map<Integer, LogicalPositionSignature> signaturesByLin...
method makeLogicalPositionSignature (line 47) | private @NotNull LogicalPositionSignature makeLogicalPositionSignature...
method makeLogicalPositionSignature (line 51) | private @NotNull LogicalPositionSignature makeLogicalPositionSignature...
method getSignatureByPosition (line 59) | @Override
method add (line 64) | public void add(@NotNull Project project, @NotNull String entry, @NotN...
method addVisibleSignature (line 139) | private void addVisibleSignature(@NotNull LogicalPosition lStart, @Not...
class OpenModule (line 146) | static class OpenModule {
method OpenModule (line 151) | OpenModule(@NotNull LogicalPosition start) {
method getLine (line 155) | Integer getLine() {
method getExposing (line 159) | @Nullable
method addId (line 164) | void addId(String id) {
class LogicalORSignature (line 169) | static class LogicalORSignature {
method LogicalORSignature (line 177) | LogicalORSignature(@NotNull LogicalPosition lStart, @NotNull Logical...
method getLogicalStart (line 183) | @NotNull
method getLogicalEnd (line 188) | @NotNull
method getSignature (line 193) | @NotNull
FILE: src/main/java/com/reason/ide/hints/InferredTypesService.java
class InferredTypesService (line 27) | public class InferredTypesService {
method InferredTypesService (line 30) | private InferredTypesService() {
method getPsiFile (line 33) | public static @Nullable PsiFile getPsiFile(@NotNull Project project) {
method queryTypes (line 47) | public static void queryTypes(@NotNull Project project, @NotNull PsiFi...
method annotatePsiFile (line 102) | public static void annotatePsiFile(@NotNull Project project, @Nullable...
method getSignatures (line 121) | public static @NotNull CodeLens getSignatures(@NotNull VirtualFile fil...
FILE: src/main/java/com/reason/ide/hints/OREditorLinePainter.java
class OREditorLinePainter (line 15) | public class OREditorLinePainter extends EditorLinePainter {
method getLineExtensions (line 16) | @Override
FILE: src/main/java/com/reason/ide/hints/ORParameterInfoHandler.java
class ORParameterInfoHandler (line 12) | public abstract class ORParameterInfoHandler implements ParameterInfoHan...
method findFunctionParams (line 15) | @Nullable abstract RPsiParameters findFunctionParams(@NotNull PsiFile ...
method computeParameterIndex (line 17) | abstract int computeParameterIndex(@NotNull RPsiParameters paramsOwner...
method findElementForParameterInfo (line 19) | @Override
method findElementForUpdatingParameterInfo (line 31) | @Override
method showParameterInfo (line 44) | @Override
method updateParameterInfo (line 49) | @Override
method updateUI (line 60) | @Override
method calculateParameterInfo (line 80) | @Nullable ArgumentsDescription[] calculateParameterInfo(@NotNull RPsiP...
class ArgumentsDescription (line 106) | public static class ArgumentsDescription {
method ArgumentsDescription (line 111) | public ArgumentsDescription(PsiQualifiedNamedElement resolvedElement...
method getText (line 117) | String getText() {
method getRange (line 121) | @NotNull TextRange getRange(int index) {
FILE: src/main/java/com/reason/ide/hints/OclParameterInfoHandler.java
class OclParameterInfoHandler (line 11) | public class OclParameterInfoHandler extends ORParameterInfoHandler {
method isWhitespaceSensitive (line 12) | @Override public boolean isWhitespaceSensitive() {
method computeParameterIndex (line 16) | @Override
method findFunctionParams (line 21) | @Override
FILE: src/main/java/com/reason/ide/hints/ResParameterInfoHandler.java
class ResParameterInfoHandler (line 10) | public class ResParameterInfoHandler extends ORParameterInfoHandler {
method computeParameterIndex (line 11) | @Override
method findFunctionParams (line 16) | @Override
FILE: src/main/java/com/reason/ide/hints/RmlParameterInfoHandler.java
class RmlParameterInfoHandler (line 10) | public class RmlParameterInfoHandler extends ORParameterInfoHandler {
method computeParameterIndex (line 11) | @Override
method findFunctionParams (line 16) | @Override
FILE: src/main/java/com/reason/ide/hints/RmlTypeProvider.java
class RmlTypeProvider (line 9) | public class RmlTypeProvider extends ExpressionTypeProvider<PsiElement> {
method getInformationHint (line 10) | @Override
method getErrorHint (line 15) | @Override
method getExpressionsAt (line 20) | @Override
FILE: src/main/java/com/reason/ide/hints/SignatureProvider.java
class SignatureProvider (line 10) | public class SignatureProvider /*implements InlayParameterHintsProvider*/ {
method SignatureProvider (line 11) | private SignatureProvider() {
class InferredTypesWithLines (line 14) | public static class InferredTypesWithLines {
method InferredTypesWithLines (line 18) | InferredTypesWithLines(@NotNull InferredTypes types, @NotNull String...
method getSignatureByOffset (line 23) | public @Nullable RPsiSignature getSignatureByOffset(int textOffset) {
method getTypes (line 28) | public @NotNull InferredTypes getTypes() {
FILE: src/main/java/com/reason/ide/importWizard/DuneExternalConstants.java
class DuneExternalConstants (line 3) | public class DuneExternalConstants {
method DuneExternalConstants (line 7) | private DuneExternalConstants() {
FILE: src/main/java/com/reason/ide/importWizard/DuneProjectImportBuilder.java
class DuneProjectImportBuilder (line 28) | public class DuneProjectImportBuilder extends ProjectImportBuilder<Impor...
method getName (line 33) | @NonNls
method getIcon (line 39) | @Override
method setList (line 44) | @Override
method isMarked (line 51) | @Override
method setOpenProjectSettingsAfter (line 56) | @Override
method cleanup (line 60) | @Override
method setOpamSettings (line 67) | public void setOpamSettings(OpamSettings settings) {
method setProjectRoot (line 71) | public void setProjectRoot(@NotNull final VirtualFile projectRoot) {
method commit (line 102) | @Override
type OpamSettings (line 149) | public interface OpamSettings {
method getOpamLocation (line 150) | String getOpamLocation();
method getOpamSwitch (line 152) | String getOpamSwitch();
method isWsl (line 154) | boolean isWsl();
method getCygwinBash (line 156) | String getCygwinBash();
FILE: src/main/java/com/reason/ide/importWizard/DuneProjectImportProvider.java
class DuneProjectImportProvider (line 11) | public class DuneProjectImportProvider extends ProjectImportProvider {
method doGetBuilder (line 12) | @Override
method createSteps (line 17) | @Override
method canImport (line 24) | public static boolean canImport(@NotNull VirtualFile entry) {
method canImportFromFile (line 32) | @Override
method getPathToBeImported (line 37) | @Override
method getFileSample (line 42) | @Override
FILE: src/main/java/com/reason/ide/importWizard/DuneProjectOpenProcessor.java
class DuneProjectOpenProcessor (line 8) | public class DuneProjectOpenProcessor extends ProjectOpenProcessorBase<D...
method getSupportedExtensions (line 9) | @Override
method doQuickImport (line 14) | @Override
method doGetBuilder (line 24) | @Override
FILE: src/main/java/com/reason/ide/importWizard/DuneProjectRootStep.java
class DuneProjectRootStep (line 14) | public class DuneProjectRootStep extends ProjectImportWizardStep {
method DuneProjectRootStep (line 19) | public DuneProjectRootStep(WizardContext context) {
method getComponent (line 34) | @Override
method validate (line 39) | @Override
method updateDataModel (line 78) | @Override
FILE: src/main/java/com/reason/ide/importWizard/ImportedDuneBuild.java
class ImportedDuneBuild (line 6) | public class ImportedDuneBuild {
method ImportedDuneBuild (line 9) | public ImportedDuneBuild(@NotNull VirtualFile build) {
method getBuild (line 13) | @NotNull
method getRoot (line 18) | @NotNull
FILE: src/main/java/com/reason/ide/insight/CompletionUtils.java
class CompletionUtils (line 9) | public class CompletionUtils {
method CompletionUtils (line 12) | private CompletionUtils() {
method getPrevNodeType (line 15) | @Nullable
FILE: src/main/java/com/reason/ide/insight/KeywordCompletionContributor.java
class KeywordCompletionContributor (line 17) | abstract class KeywordCompletionContributor extends com.intellij.codeIns...
method KeywordCompletionContributor (line 22) | KeywordCompletionContributor(@NotNull ORLangTypes types) {
method addFileKeywords (line 53) | protected abstract void addFileKeywords(@NotNull CompletionResultSet r...
FILE: src/main/java/com/reason/ide/insight/ORCompletionContributor.java
class ORCompletionContributor (line 18) | abstract class ORCompletionContributor extends com.intellij.codeInsight....
method ORCompletionContributor (line 21) | ORCompletionContributor(@NotNull ORLangTypes types) {
FILE: src/main/java/com/reason/ide/insight/OclCompletionContributor.java
class OclCompletionContributor (line 5) | public class OclCompletionContributor extends ORCompletionContributor {
method OclCompletionContributor (line 6) | OclCompletionContributor() {
FILE: src/main/java/com/reason/ide/insight/OclKeywordCompletionContributor.java
class OclKeywordCompletionContributor (line 11) | public class OclKeywordCompletionContributor extends KeywordCompletionCo...
method OclKeywordCompletionContributor (line 15) | OclKeywordCompletionContributor() {
method addFileKeywords (line 19) | @Override
FILE: src/main/java/com/reason/ide/insight/ResCompletionContributor.java
class ResCompletionContributor (line 5) | public class ResCompletionContributor extends ORCompletionContributor {
method ResCompletionContributor (line 6) | ResCompletionContributor() {
FILE: src/main/java/com/reason/ide/insight/ResKeywordCompletionContributor.java
class ResKeywordCompletionContributor (line 11) | public class ResKeywordCompletionContributor extends KeywordCompletionCo...
method ResKeywordCompletionContributor (line 14) | ResKeywordCompletionContributor() {
method addFileKeywords (line 18) | @Override
FILE: src/main/java/com/reason/ide/insight/RmlCompletionContributor.java
class RmlCompletionContributor (line 5) | public class RmlCompletionContributor extends ORCompletionContributor {
method RmlCompletionContributor (line 6) | RmlCompletionContributor() {
FILE: src/main/java/com/reason/ide/insight/RmlKeywordCompletionContributor.java
class RmlKeywordCompletionContributor (line 11) | public class RmlKeywordCompletionContributor extends KeywordCompletionCo...
method RmlKeywordCompletionContributor (line 15) | RmlKeywordCompletionContributor() {
method addFileKeywords (line 19) | @Override
FILE: src/main/java/com/reason/ide/insight/pattern/ORElementPatternMatcher.java
type ORElementPatternMatcher (line 8) | @FunctionalInterface
method accepts (line 10) | boolean accepts(@NotNull PsiElement element, @Nullable ProcessingConte...
FILE: src/main/java/com/reason/ide/insight/provider/DotExpressionCompletionProvider.java
class DotExpressionCompletionProvider (line 25) | public class DotExpressionCompletionProvider {
method DotExpressionCompletionProvider (line 28) | private DotExpressionCompletionProvider() {
method addCompletions (line 31) | public static void addCompletions(@NotNull PsiElement element, @NotNul...
method addRecordFields (line 97) | private static void addRecordFields(@Nullable Collection<RPsiRecordFie...
method addModuleExpressions (line 108) | private static void addModuleExpressions(@Nullable PsiElement resolved...
method addInnerModuleExpressions (line 127) | private static void addInnerModuleExpressions(@NotNull RPsiInnerModule...
method addFileExpressions (line 150) | private static void addFileExpressions(@NotNull FileBase file, @NotNul...
method addFunctorExpressions (line 179) | private static void addFunctorExpressions(@NotNull RPsiFunctor functor...
method addExpressions (line 195) | private static void addExpressions(@NotNull CompletionResultSet result...
method addChildren (line 224) | private static void addChildren(@Nullable PsiElement body, @NotNull Co...
FILE: src/main/java/com/reason/ide/insight/provider/FreeExpressionCompletionProvider.java
class FreeExpressionCompletionProvider (line 32) | public class FreeExpressionCompletionProvider {
method FreeExpressionCompletionProvider (line 35) | private FreeExpressionCompletionProvider() {
method addCompletions (line 38) | public static void addCompletions(@NotNull PsiElement element, @Nullab...
method completeRecord (line 165) | private static void completeRecord(@NotNull PsiElement element, RPsiRe...
method expandType (line 187) | private static void expandType(@NotNull RPsiType type, @NotNull Comple...
method addModuleExpressions (line 203) | private static void addModuleExpressions(@NotNull RPsiModule rootModul...
method insertExpression (line 246) | private static void insertExpression(@NotNull InsertionContext inserti...
FILE: src/main/java/com/reason/ide/insight/provider/JsxAttributeCompletionProvider.java
class JsxAttributeCompletionProvider (line 31) | public class JsxAttributeCompletionProvider {
method JsxAttributeCompletionProvider (line 34) | private JsxAttributeCompletionProvider() {
method addCompletions (line 37) | public static void addCompletions(@NotNull PsiElement element, @NotNul...
method getParameterSignature (line 148) | private static @NotNull String getParameterSignature(RPsiParameterDecl...
method addProperty (line 157) | private static void addProperty(@Nullable PsiElement element, @Nullabl...
method insertTagAttributeHandler (line 171) | private static void insertTagAttributeHandler(@NotNull InsertionContex...
FILE: src/main/java/com/reason/ide/insight/provider/JsxNameCompletionProvider.java
class JsxNameCompletionProvider (line 27) | public class JsxNameCompletionProvider {
method JsxNameCompletionProvider (line 30) | private JsxNameCompletionProvider() {
method addCompletions (line 33) | public static void addCompletions(@NotNull PsiElement element, @NotNul...
method insertTagNameHandler (line 94) | private static void insertTagNameHandler(@NotNull Project project, @No...
FILE: src/main/java/com/reason/ide/insight/provider/ModuleCompletionProvider.java
class ModuleCompletionProvider (line 21) | public class ModuleCompletionProvider {
method ModuleCompletionProvider (line 24) | private ModuleCompletionProvider() {
method addCompletions (line 27) | public static void addCompletions(@NotNull PsiElement element, @NotNul...
method addModule (line 85) | private static void addModule(@NotNull RPsiModule module, @NotNull Com...
FILE: src/main/java/com/reason/ide/insight/provider/ObjectCompletionProvider.java
class ObjectCompletionProvider (line 19) | public class ObjectCompletionProvider {
method ObjectCompletionProvider (line 22) | private ObjectCompletionProvider() {
method addCompletions (line 25) | public static boolean addCompletions(@NotNull PsiElement element, @Nul...
method getFields (line 71) | static @Nullable Collection<RPsiObjectField> getFields(@Nullable PsiEl...
FILE: src/main/java/com/reason/ide/intentions/ExpandLocalOpenIntention.java
class ExpandLocalOpenIntention (line 17) | public class ExpandLocalOpenIntention implements IntentionAction {
method getText (line 18) | @Override
method getFamilyName (line 23) | @Override
method isAvailable (line 28) | @Override
method invoke (line 38) | @Override
method startInWriteAction (line 69) | @Override
FILE: src/main/java/com/reason/ide/intentions/FunctionBracesIntention.java
class FunctionBracesIntention (line 20) | public class FunctionBracesIntention implements IntentionAction {
method getText (line 21) | @Override
method getFamilyName (line 26) | @Override
method isAvailable (line 31) | @Override
method invoke (line 49) | @Override
method startInWriteAction (line 71) | @Override
method getTarget (line 76) | @Nullable
FILE: src/main/java/com/reason/ide/js/JsIconProvider.java
class JsIconProvider (line 11) | public class JsIconProvider extends com.intellij.ide.IconProvider {
method getIcon (line 12) | @Override
method isBsJsFile (line 22) | private static boolean isBsJsFile(PsiFile psiFile) {
FILE: src/main/java/com/reason/ide/js/JsInjector.java
class JsInjector (line 10) | public class JsInjector implements LanguageInjector {
method getLanguagesToInject (line 11) | public void getLanguagesToInject(@NotNull PsiLanguageInjectionHost hos...
FILE: src/main/java/com/reason/ide/js/ORIndexableFileNamesProvider.java
class ORIndexableFileNamesProvider (line 9) | public class ORIndexableFileNamesProvider extends NodeModulesIndexableFi...
method getIndexableFileNames (line 24) | @Override
method getIndexableExtensions (line 29) | @Override
FILE: src/main/java/com/reason/ide/js/ORJsLibraryManager.java
class ORJsLibraryManager (line 26) | public class ORJsLibraryManager implements ProjectActivity, DumbAware {
method execute (line 30) | @Override
method runActivityLater (line 36) | private void runActivityLater(@NotNull Project project) {
method readBsConfigDependencies (line 77) | private @NotNull List<VirtualFile> readBsConfigDependencies(@NotNull P...
FILE: src/main/java/com/reason/ide/library/OclLibraryKind.java
class OclLibraryKind (line 6) | public class OclLibraryKind extends PersistentLibraryKind<DummyLibraryPr...
method OclLibraryKind (line 9) | public OclLibraryKind() {
method createDefaultProperties (line 13) | @Override
FILE: src/main/java/com/reason/ide/library/OclLibraryRootProvider.java
class OclLibraryRootProvider (line 20) | public class OclLibraryRootProvider extends AdditionalLibraryRootsProvid...
method getAdditionalProjectLibraries (line 23) | @Override
method getRootsToWatch (line 38) | @Override
class OpamLibrary (line 48) | static final class OpamLibrary extends SyntheticLibrary implements Ite...
method getOpamSwitchLocation (line 53) | private @Nullable VirtualFile getOpamSwitchLocation() {
method OpamLibrary (line 61) | public OpamLibrary(@NotNull String opamRoot, @NotNull String opamSwi...
method getSourceRoots (line 93) | @Override
method getPresentableText (line 98) | @Override
method getLocationString (line 103) | @Override
method getIcon (line 112) | @Override
method equals (line 117) | @Override
method hashCode (line 122) | @Override
FILE: src/main/java/com/reason/ide/library/OclLibraryRootsComponentDescriptor.java
class OclLibraryRootsComponentDescriptor (line 15) | public class OclLibraryRootsComponentDescriptor extends LibraryRootsComp...
method getRootTypePresentation (line 16) | @Override
method getRootDetectors (line 21) | @Override
method createAttachButtons (line 26) | @Override
class OclSourceRootDetector (line 31) | static class OclSourceRootDetector extends RootDetector {
method OclSourceRootDetector (line 32) | protected OclSourceRootDetector() {
method detectRoots (line 36) | @Override public @NotNull Collection<VirtualFile> detectRoots(@NotNu...
FILE: src/main/java/com/reason/ide/library/OclLibraryType.java
class OclLibraryType (line 13) | public class OclLibraryType extends LibraryType<DummyLibraryProperties> {
method OclLibraryType (line 14) | public OclLibraryType() {
method getCreateActionName (line 18) | @Override
method getIcon (line 23) | @Override
method createNewLibrary (line 28) | @Override
method createLibraryRootsComponentDescriptor (line 34) | @Override
method createPropertiesEditor (line 39) | @Override
FILE: src/main/java/com/reason/ide/library/OclSdkSetupValidator.java
class OclSdkSetupValidator (line 24) | public class OclSdkSetupValidator implements ProjectSdkSetupValidator {
method isApplicableFor (line 27) | @Override
method getErrorMessage (line 32) | @Override
method getFixHandler (line 47) | @Override
FILE: src/main/java/com/reason/ide/match/DunePairedBraceMatcher.java
class DunePairedBraceMatcher (line 9) | public class DunePairedBraceMatcher implements PairedBraceMatcher {
method getPairs (line 15) | @Override
method isPairedBracesAllowedBeforeType (line 20) | @Override
method getCodeConstructStart (line 25) | @Override
FILE: src/main/java/com/reason/ide/match/OclPairedBraceMatcher.java
class OclPairedBraceMatcher (line 11) | public class OclPairedBraceMatcher implements PairedBraceMatcher {
method getPairs (line 26) | @Override
method isPairedBracesAllowedBeforeType (line 31) | @Override
method getCodeConstructStart (line 36) | @Override
FILE: src/main/java/com/reason/ide/match/ResPairedBraceMatcher.java
class ResPairedBraceMatcher (line 9) | public class ResPairedBraceMatcher implements PairedBraceMatcher {
method getPairs (line 19) | @Override
method isPairedBracesAllowedBeforeType (line 24) | @Override
method getCodeConstructStart (line 29) | @Override
FILE: src/main/java/com/reason/ide/match/RmlPairedBraceMatcher.java
class RmlPairedBraceMatcher (line 11) | public class RmlPairedBraceMatcher implements PairedBraceMatcher {
method getPairs (line 22) | @Override
method isPairedBracesAllowedBeforeType (line 27) | @Override
method getCodeConstructStart (line 32) | @Override
FILE: src/main/java/com/reason/ide/module/DuneModuleEditor.java
class DuneModuleEditor (line 8) | public class DuneModuleEditor extends ModuleElementsEditor {
method DuneModuleEditor (line 11) | protected DuneModuleEditor(@NotNull ModuleConfigurationState state) {
method createComponentImpl (line 15) | @Override
method getDisplayName (line 20) | @NonNls
FILE: src/main/java/com/reason/ide/module/DuneModuleEditorProvider.java
class DuneModuleEditorProvider (line 6) | public class DuneModuleEditorProvider implements ModuleConfigurationEdit...
method DuneModuleEditorProvider (line 7) | public DuneModuleEditorProvider() {
method isCompleteEditorSet (line 10) | public boolean isCompleteEditorSet() {
method createEditors (line 14) | public ModuleConfigurationEditor[] createEditors(ModuleConfigurationSt...
FILE: src/main/java/com/reason/ide/refactor/ORRefactoringSupportProvider.java
class ORRefactoringSupportProvider (line 8) | public class ORRefactoringSupportProvider extends RefactoringSupportProv...
method isInplaceRenameAvailable (line 9) | @Override
FILE: src/main/java/com/reason/ide/repl/PromptConsole.java
class PromptConsole (line 32) | final class PromptConsole implements Disposable {
method PromptConsole (line 42) | PromptConsole(@NotNull Project project, ConsoleViewImpl consoleView) {
method dispose (line 69) | @Override
method getCenterComponent (line 76) | @NotNull
method getOutputEditor (line 81) | @NotNull
method getInputComponent (line 86) | @NotNull
method disablePrompt (line 91) | void disablePrompt() {
method setupOutputEditor (line 98) | private void setupOutputEditor() {
method setupPromptEditor (line 124) | private void setupPromptEditor() {
method normalizeCommand (line 161) | @NotNull
method setPromptCommand (line 175) | private void setPromptCommand(@NotNull String text) {
FILE: src/main/java/com/reason/ide/repl/PromptConsoleView.java
class PromptConsoleView (line 18) | public class PromptConsoleView extends ConsoleViewImpl {
method PromptConsoleView (line 21) | PromptConsoleView(@NotNull Project project, boolean viewer, final bool...
method createCenterComponent (line 39) | @NotNull
method doCreateConsoleEditor (line 45) | @NotNull
method getPreferredFocusableComponent (line 51) | @NotNull
method print (line 57) | @Override
method attachToProcess (line 62) | @Override
FILE: src/main/java/com/reason/ide/repl/PromptHistory.java
class PromptHistory (line 12) | final class PromptHistory {
method addInHistory (line 16) | void addInHistory(@NotNull String command) {
method getFromHistory (line 27) | @Nullable
FILE: src/main/java/com/reason/ide/repl/ReplConfigurationFactory.java
class ReplConfigurationFactory (line 10) | public class ReplConfigurationFactory extends ConfigurationFactory {
method ReplConfigurationFactory (line 11) | ReplConfigurationFactory(@NotNull ConfigurationType type) {
method createTemplateConfiguration (line 15) | @Override
method getId (line 20) | @Override
method getIcon (line 25) | @Override
method getName (line 30) | @Override
FILE: src/main/java/com/reason/ide/repl/ReplGenericState.java
class ReplGenericState (line 19) | public class ReplGenericState implements RunProfileState {
method ReplGenericState (line 22) | ReplGenericState(ExecutionEnvironment environment) {
method execute (line 26) | @Override
method startProcess (line 39) | private @Nullable ProcessHandler startProcess() throws ExecutionExcept...
FILE: src/main/java/com/reason/ide/repl/ReplRunConfiguration.java
class ReplRunConfiguration (line 10) | public class ReplRunConfiguration extends RunConfigurationBase<ReplRunCo...
method ReplRunConfiguration (line 11) | ReplRunConfiguration(@NotNull Project project, @NotNull ConfigurationF...
method getConfigurationEditor (line 15) | @Override
method getState (line 20) | @Override
FILE: src/main/java/com/reason/ide/repl/ReplRunConfigurationType.java
class ReplRunConfigurationType (line 9) | public class ReplRunConfigurationType implements ConfigurationType {
method getDisplayName (line 10) | @Override
method getConfigurationTypeDescription (line 15) | @Override
method getIcon (line 20) | @Override
method getId (line 25) | @Override
method getConfigurationFactories (line 30) | @Override
FILE: src/main/java/com/reason/ide/repl/ReplRunSettingsEditor.java
class ReplRunSettingsEditor (line 10) | public class ReplRunSettingsEditor extends SettingsEditor<ReplRunConfigu...
method ReplRunSettingsEditor (line 15) | ReplRunSettingsEditor(@NotNull Project project) {
method createEditor (line 19) | @Override
method createUIComponents (line 24) | private void createUIComponents() {
method resetEditorFrom (line 28) | @Override
method applyEditorTo (line 33) | @Override
method init (line 37) | private void init() {
FILE: src/main/java/com/reason/ide/search/FileModuleData.java
class FileModuleData (line 9) | public class FileModuleData implements Comparable<FileModuleData>, Index...
method FileModuleData (line 20) | public FileModuleData(@NotNull VirtualFile file, @NotNull String names...
method FileModuleData (line 34) | public FileModuleData(String path, String fullName, String namespace, ...
method getNamespace (line 46) | @Override
method hasNamespace (line 51) | public boolean hasNamespace() {
method getModuleName (line 55) | @Override
method getPath (line 60) | @NotNull
method getFullName (line 66) | @NotNull
method isOCaml (line 72) | @Override
method isRescript (line 77) | @Override
method isInterface (line 82) | @Override
method isComponent (line 87) | @Override
method hasComponents (line 92) | public boolean hasComponents() {
method compareTo (line 96) | @Override
method equals (line 108) | @Override
method hashCode (line 123) | @Override
method toString (line 128) | @NotNull
FILE: src/main/java/com/reason/ide/search/IndexedFileModule.java
type IndexedFileModule (line 5) | public interface IndexedFileModule {
method getNamespace (line 6) | @NotNull
method getModuleName (line 9) | @NotNull
method getPath (line 12) | @NotNull
method getFullName (line 15) | @NotNull
method isOCaml (line 18) | boolean isOCaml();
method isRescript (line 20) | boolean isRescript();
method isInterface (line 22) | boolean isInterface();
method isComponent (line 24) | boolean isComponent();
FILE: src/main/java/com/reason/ide/search/ModuleIndexService.java
class ModuleIndexService (line 15) | @Service(Service.Level.APP)
method getModules (line 17) | public Collection<RPsiModule> getModules(@Nullable String name, @NotNu...
FILE: src/main/java/com/reason/ide/search/ORFindUsagesProvider.java
class ORFindUsagesProvider (line 10) | public abstract class ORFindUsagesProvider implements FindUsagesProvider {
method canFindUsagesFor (line 11) | @Override
method getHelpId (line 21) | @Override
method getType (line 26) | @Override
method getDescriptiveName (line 32) | @Override
method getNodeText (line 44) | @Override
FILE: src/main/java/com/reason/ide/search/ORImplementationSearch.java
class ORImplementationSearch (line 17) | public class ORImplementationSearch extends QueryExecutorBase<PsiElement...
method processQuery (line 20) | @Override
FILE: src/main/java/com/reason/ide/search/OclFindUsagesProvider.java
class OclFindUsagesProvider (line 11) | public class OclFindUsagesProvider extends ORFindUsagesProvider {
method getWordsScanner (line 12) | @Override
FILE: src/main/java/com/reason/ide/search/PsiTypeElementProvider.java
class PsiTypeElementProvider (line 9) | public class PsiTypeElementProvider {
method PsiTypeElementProvider (line 10) | private PsiTypeElementProvider() {
method getType (line 13) | @Nullable
FILE: src/main/java/com/reason/ide/search/ResFindUsagesProvider.java
class ResFindUsagesProvider (line 11) | public class ResFindUsagesProvider extends ORFindUsagesProvider {
method getWordsScanner (line 12) | @Override
FILE: src/main/java/com/reason/ide/search/RmlFindUsagesProvider.java
class RmlFindUsagesProvider (line 11) | public class RmlFindUsagesProvider extends ORFindUsagesProvider {
method getWordsScanner (line 12) | @Override
FILE: src/main/java/com/reason/ide/search/index/ClassFqnIndex.java
class ClassFqnIndex (line 12) | public class ClassFqnIndex extends IntStubIndexExtension<RPsiClass> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiClass> getElements(@NotNull Stri...
FILE: src/main/java/com/reason/ide/search/index/ClassMethodFqnIndex.java
class ClassMethodFqnIndex (line 12) | public class ClassMethodFqnIndex extends IntStubIndexExtension<RPsiClass...
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiClassMethod> getElements(String ...
FILE: src/main/java/com/reason/ide/search/index/ExceptionFqnIndex.java
class ExceptionFqnIndex (line 12) | public class ExceptionFqnIndex extends IntStubIndexExtension<RPsiExcepti...
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiException> getElements(@NotNull ...
FILE: src/main/java/com/reason/ide/search/index/ExceptionIndex.java
class ExceptionIndex (line 12) | public class ExceptionIndex extends StringStubIndexExtension<RPsiExcepti...
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiException> getElements(@NotNull ...
FILE: src/main/java/com/reason/ide/search/index/ExternalFqnIndex.java
class ExternalFqnIndex (line 12) | public class ExternalFqnIndex extends IntStubIndexExtension<RPsiExternal> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiExternal> getElements(String qNa...
FILE: src/main/java/com/reason/ide/search/index/ExternalIndex.java
class ExternalIndex (line 12) | public class ExternalIndex extends StringStubIndexExtension<RPsiExternal> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiExternal> getElements(@NotNull S...
FILE: src/main/java/com/reason/ide/search/index/FileModuleIndex.java
class FileModuleIndex (line 21) | public class FileModuleIndex extends FileBasedIndexExtension<String, Fil...
method getAllKeys (line 27) | public static @NotNull Collection<String> getAllKeys(@NotNull Project ...
method getValues (line 31) | public static @NotNull List<FileModuleData> getValues(@NotNull String ...
method getContainingFiles (line 35) | public static @NotNull Collection<VirtualFile> getContainingFiles(@Not...
method getName (line 39) | @Override
method getKeyDescriptor (line 44) | @Override
method getIndexer (line 49) | @Override
method getValueExternalizer (line 91) | @Override
method getVersion (line 96) | @Override
method getInputFilter (line 101) | @Override
method dependsOnFileContent (line 109) | @Override
class FileModuleDataExternalizer (line 114) | static final class FileModuleDataExternalizer implements DataExternali...
method save (line 115) | @Override
method read (line 128) | @Override
FILE: src/main/java/com/reason/ide/search/index/FileModuleIndexService.java
class FileModuleIndexService (line 17) | @Service(Service.Level.APP)
method getInstance (line 24) | public static @NotNull FileModuleIndexService getInstance() {
method getTopModules (line 31) | @NotNull
method getTopModule (line 42) | public @Nullable RPsiModule getTopModule(@NotNull String name, @NotNul...
method getTopModuleData (line 51) | public @NotNull List<FileModuleData> getTopModuleData(@NotNull String ...
method getNamespaces (line 55) | @NotNull
method getAllKeys (line 70) | public @NotNull Collection<String> getAllKeys(@NotNull Project project) {
FILE: src/main/java/com/reason/ide/search/index/IncludeIndex.java
class IncludeIndex (line 12) | public class IncludeIndex extends StringStubIndexExtension<RPsiInclude> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiInclude> getElements(@NotNull St...
FILE: src/main/java/com/reason/ide/search/index/IndexKeys.java
class IndexKeys (line 8) | public class IndexKeys {
type ProcessElement (line 9) | @FunctionalInterface
method process (line 12) | void process(@NotNull T element);
method IndexKeys (line 37) | private IndexKeys() {
FILE: src/main/java/com/reason/ide/search/index/LetComponentFqnIndex.java
class LetComponentFqnIndex (line 12) | public class LetComponentFqnIndex extends IntStubIndexExtension<RPsiLet> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiLet> getElements(String qName, @...
FILE: src/main/java/com/reason/ide/search/index/LetFqnIndex.java
class LetFqnIndex (line 12) | public class LetFqnIndex extends IntStubIndexExtension<RPsiLet> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiLet> getElements(String qName, @...
FILE: src/main/java/com/reason/ide/search/index/ModuleFqnIndex.java
class ModuleFqnIndex (line 12) | public class ModuleFqnIndex extends IntStubIndexExtension<RPsiModule> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiModule> getElements(@NotNull Str...
FILE: src/main/java/com/reason/ide/search/index/ModuleIndex.java
class ModuleIndex (line 12) | public class ModuleIndex extends StringStubIndexExtension<RPsiModule> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiModule> getElements(@NotNull Str...
FILE: src/main/java/com/reason/ide/search/index/ModuleSignatureIndex.java
class ModuleSignatureIndex (line 15) | public class ModuleSignatureIndex extends StringStubIndexExtension<RPsiM...
method getVersion (line 16) | @Override
method getKey (line 21) | @Override
method getElements (line 26) | public static @NotNull Collection<RPsiModule> getElements(@NotNull Str...
FILE: src/main/java/com/reason/ide/search/index/NamespaceIndex.java
class NamespaceIndex (line 16) | public class NamespaceIndex extends ScalarIndexExtension<String> {
method getName (line 21) | @Override
method dependsOnFileContent (line 26) | @Override
method getVersion (line 31) | @Override
method getIndexer (line 36) | @Override
method getKeyDescriptor (line 71) | @Override
method getInputFilter (line 76) | @Override
FILE: src/main/java/com/reason/ide/search/index/ObjectFieldIndex.java
class ObjectFieldIndex (line 12) | public class ObjectFieldIndex extends StringStubIndexExtension<RPsiObjec...
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiObjectField> getElements(@NotNul...
FILE: src/main/java/com/reason/ide/search/index/OpenIndex.java
class OpenIndex (line 12) | public class OpenIndex extends StringStubIndexExtension<RPsiOpen> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiOpen> getElements(@NotNull Strin...
FILE: src/main/java/com/reason/ide/search/index/ParameterFqnIndex.java
class ParameterFqnIndex (line 12) | public class ParameterFqnIndex extends IntStubIndexExtension<RPsiParamet...
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiParameterDeclaration> getElement...
FILE: src/main/java/com/reason/ide/search/index/ParameterIndex.java
class ParameterIndex (line 12) | public class ParameterIndex extends StringStubIndexExtension<RPsiParamet...
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiParameterDeclaration> getElement...
FILE: src/main/java/com/reason/ide/search/index/RecordFieldIndex.java
class RecordFieldIndex (line 12) | public class RecordFieldIndex extends StringStubIndexExtension<RPsiRecor...
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiRecordField> getElements(@NotNul...
FILE: src/main/java/com/reason/ide/search/index/TypeFqnIndex.java
class TypeFqnIndex (line 12) | public class TypeFqnIndex extends IntStubIndexExtension<RPsiType> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiType> getElements(String qName, ...
FILE: src/main/java/com/reason/ide/search/index/TypeIndex.java
class TypeIndex (line 12) | public class TypeIndex extends StringStubIndexExtension<RPsiType> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiType> getElements(@NotNull Strin...
FILE: src/main/java/com/reason/ide/search/index/ValFqnIndex.java
class ValFqnIndex (line 12) | public class ValFqnIndex extends IntStubIndexExtension<RPsiVal> {
method getVersion (line 13) | @Override
method getKey (line 18) | @Override
method getElements (line 23) | public static @NotNull Collection<RPsiVal> getElements(String qName, @...
FILE: src/main/java/com/reason/ide/search/index/VariantFqnIndex.java
class VariantFqnIndex (line 14) | public class VariantFqnIndex extends IntStubIndexExtension<RPsiVariantDe...
method getVersion (line 15) | @Override
method getKey (line 20) | @Override
method getElements (line 25) | public static @NotNull Collection<RPsiVariantDeclaration> getElements(...
method getElement (line 29) | public static @Nullable RPsiVariantDeclaration getElement(@Nullable St...
FILE: src/main/java/com/reason/ide/search/reference/ORFakeResolvedElement.java
class ORFakeResolvedElement (line 8) | public class ORFakeResolvedElement extends FakePsiElement {
method ORFakeResolvedElement (line 11) | public ORFakeResolvedElement(@NotNull PsiElement element) {
method getOriginalElement (line 15) | @Override
method getParent (line 20) | @Override
method getText (line 25) | @Override
method getTextRangeInParent (line 30) | @Override
FILE: src/main/java/com/reason/ide/search/reference/ORModuleResolutionPsiGist.java
class ORModuleResolutionPsiGist (line 40) | public class ORModuleResolutionPsiGist {
method ORModuleResolutionPsiGist (line 49) | private ORModuleResolutionPsiGist() {
method getData (line 52) | public static @NotNull Data getData(@Nullable PsiFile psiFile) {
method getFileData (line 58) | private static Data getFileData(@NotNull PsiFile file) {
method walkFile (line 81) | private static @NotNull Data walkFile(@NotNull Context context, @NotNu...
method visitedTag (line 160) | private static void visitedTag(@NotNull Context context, @NotNull Walk...
method visitFunctor (line 215) | private static void visitFunctor(@NotNull Context context, @NotNull Wa...
method closeVisitedElement (line 277) | private static void closeVisitedElement(@NotNull WalkInfo walkInfo, @N...
method visitFirstClassModule (line 306) | private static void visitFirstClassModule(@NotNull Context context, @N...
method visitInnerModule (line 375) | private static void visitInnerModule(@NotNull Context context, @NotNul...
method visitModuleResultType (line 506) | private static void visitModuleResultType(@NotNull Context context, @N...
method visitIncludeOpen (line 572) | private static void visitIncludeOpen(@NotNull Context context, @NotNul...
method follow (line 714) | private static @Nullable RPsiQualifiedPathElement follow(@Nullable Psi...
method fullResolution (line 750) | private static @NotNull RPsiQualifiedPathElement fullResolution(@NotNu...
method resolveQName (line 756) | private static @NotNull ResolvedQName resolveQName(@NotNull String qNa...
method findGlobalModule (line 861) | private static @Nullable RPsiQualifiedPathElement findGlobalModule(@No...
method getIndex (line 886) | public static @NotNull String getIndex(@NotNull PsiElement element) {
class Data (line 919) | public static class Data {
method getValues (line 922) | public @NotNull Collection<String> getValues(@Nullable PsiElement el...
method addValue (line 930) | public void addValue(@NotNull String key, @Nullable String value) {
method addValues (line 937) | public void addValues(@NotNull String key, @NotNull Collection<Strin...
method size (line 942) | public int size() {
class Externalizer (line 947) | public static class Externalizer implements DataExternalizer<Data> {
method save (line 948) | @Override
method read (line 957) | @Override
class RPsiFirstClassModule (line 970) | static class RPsiFirstClassModule extends FakePsiElement {
method RPsiFirstClassModule (line 973) | public RPsiFirstClassModule(RPsiQualifiedPathElement element) {
method getElement (line 977) | public RPsiQualifiedPathElement getElement() {
method getParent (line 981) | @Override
method getText (line 986) | @Override
method getTextRangeInParent (line 991) | @Override
method WalkInfo (line 1006) | public WalkInfo(FileBase file) {
class ModuleExComparator (line 1019) | static class ModuleExComparator implements Comparator<ModuleEx> {
method ModuleExComparator (line 1022) | ModuleExComparator(String path) {
method compare (line 1026) | @Override public int compare(ModuleEx m1, ModuleEx m2) {
method equals (line 1053) | @Override public boolean equals(Object obj) {
FILE: src/main/java/com/reason/ide/search/reference/ORMultiSymbolReference.java
class ORMultiSymbolReference (line 12) | public abstract class ORMultiSymbolReference<T extends PsiElement> exten...
method ORMultiSymbolReference (line 16) | protected ORMultiSymbolReference(@NotNull T element, @NotNull ORLangTy...
method resolve (line 22) | @Override
method resolveInterface (line 28) | public @Nullable PsiElement resolveInterface() {
FILE: src/main/java/com/reason/ide/search/reference/ORPsiLiteralStringReference.java
class ORPsiLiteralStringReference (line 18) | public class ORPsiLiteralStringReference extends ORMultiSymbolReference<...
method ORPsiLiteralStringReference (line 22) | public ORPsiLiteralStringReference(@NotNull RPsiLiteralString element,...
method multiResolve (line 26) | @Override
FILE: src/main/java/com/reason/ide/search/reference/ORPsiLowerSymbolReference.java
class ORPsiLowerSymbolReference (line 19) | public class ORPsiLowerSymbolReference extends ORMultiSymbolReference<RP...
method ORPsiLowerSymbolReference (line 23) | public ORPsiLowerSymbolReference(@NotNull RPsiLowerSymbol element, @No...
method multiResolve (line 27) | @Override
method handleElementRename (line 109) | @Override
class LowerResolveResult (line 115) | public static class LowerResolveResult implements ResolveResult {
method LowerResolveResult (line 118) | public LowerResolveResult(@NotNull PsiElement referencedElement, Str...
method getElement (line 133) | @Override
method isValidResult (line 138) | @Override
method inInterface (line 143) | public boolean inInterface() {
FILE: src/main/java/com/reason/ide/search/reference/ORPsiPropertyNameReference.java
class ORPsiPropertyNameReference (line 18) | public class ORPsiPropertyNameReference extends PsiPolyVariantReferenceB...
method ORPsiPropertyNameReference (line 25) | public ORPsiPropertyNameReference(@NotNull RPsiLeafPropertyName elemen...
method multiResolve (line 31) | @Override
method resolve (line 103) | @Override
class JsxTagResolveResult (line 109) | public static class JsxTagResolveResult implements ResolveResult {
method JsxTagResolveResult (line 112) | public JsxTagResolveResult(@NotNull PsiElement referencedElement, @N...
method getElement (line 129) | @Override
method isValidResult (line 134) | @Override
FILE: src/main/java/com/reason/ide/search/reference/ORPsiUpperSymbolReference.java
class ORPsiUpperSymbolReference (line 21) | public class ORPsiUpperSymbolReference extends ORMultiSymbolReference<RP...
method ORPsiUpperSymbolReference (line 25) | public ORPsiUpperSymbolReference(@NotNull RPsiUpperSymbol element, @No...
method multiResolve (line 29) | @Override
method handleElementRename (line 119) | @Override
class UpperResolveResult (line 125) | private static class UpperResolveResult implements ResolveResult {
method UpperResolveResult (line 128) | public UpperResolveResult(@NotNull PsiElement referencedElement) {
method getElement (line 132) | @Override
method isValidResult (line 137) | @Override
FILE: src/main/java/com/reason/ide/search/reference/ORReferenceAnalyzer.java
class ORReferenceAnalyzer (line 26) | public class ORReferenceAnalyzer {
method ORReferenceAnalyzer (line 39) | private ORReferenceAnalyzer() {
method createInstructionsBackward (line 43) | static @NotNull Deque<PsiElement> createInstructionsBackward(@NotNull ...
method createInstructionsForward (line 223) | static @NotNull Deque<PsiElement> createInstructionsForward(@NotNull P...
method isInPath (line 248) | public static boolean isInPath(@NotNull PsiElement sourceElement, @Not...
method resolveInstructions (line 254) | static @NotNull List<RPsiQualifiedPathElement> resolveInstructions(@No...
method processInstructions (line 294) | static @NotNull List<RPsiQualifiedPathElement> processInstructions(@No...
method isInterface (line 784) | private static boolean isInterface(PsiElement element) {
method resolvePath (line 791) | public static List<PsiElement> resolvePath(@NotNull String path, @NotN...
method getTopModules (line 845) | private static @NotNull List<RPsiModule> getTopModules(@NotNull String...
class FirstInPath (line 853) | static class FirstInPath extends ORFakeResolvedElement {
method FirstInPath (line 854) | public FirstInPath(@NotNull PsiElement element) {
method toString (line 858) | @Override
class SymbolField (line 864) | static class SymbolField extends ORFakeResolvedElement {
method SymbolField (line 867) | public SymbolField(@NotNull PsiElement element, boolean isRecord) {
method getValue (line 872) | public @NotNull String getValue() {
method toString (line 881) | @Override
class ResolutionElement (line 887) | static class ResolutionElement extends ORFakeResolvedElement {
method ResolutionElement (line 890) | public ResolutionElement(@NotNull PsiElement element) {
method ResolutionElement (line 894) | public ResolutionElement(PsiElement element, boolean inContext) {
method isComponent (line 899) | public boolean isComponent() {
method getQualifiedName (line 907) | public String getQualifiedName() {
method toString (line 912) | @Override public String toString() {
FILE: src/main/java/com/reason/ide/settings/DuneColorSettingsPage.java
class DuneColorSettingsPage (line 17) | public class DuneColorSettingsPage implements ColorSettingsPage {
method getIcon (line 29) | @Override
method getHighlighter (line 34) | @Override
method getDemoText (line 39) | @Override
method getAdditionalHighlightingTagToDescriptorMap (line 71) | @Override
method getAttributeDescriptors (line 76) | @Override
method getColorDescriptors (line 81) | @Override
method getDisplayName (line 86) | @Override
FILE: src/main/java/com/reason/ide/settings/ORColorSettingsPage.java
class ORColorSettingsPage (line 14) | public class ORColorSettingsPage implements ColorSettingsPage {
method getIcon (line 41) | @Override
method getHighlighter (line 46) | @Override
method getDemoText (line 51) | @Override
method getAdditionalHighlightingTagToDescriptorMap (line 98) | @Override
method getAttributeDescriptors (line 103) | @Override
method getColorDescriptors (line 108) | @Override
method getDisplayName (line 113) | @Override
FILE: src/main/java/com/reason/ide/settings/ORSettings.java
class ORSettings (line 7) | @State(name = "ReasonSettings", storages = {@Storage("reason.xml")})
method ORSettings (line 33) | public ORSettings(@NotNull Project project) {
method getState (line 37) | @Override
method loadState (line 53) | @Override
method getProject (line 67) | public @NotNull Project getProject() {
method isFormatOnSaveEnabled (line 71) | public boolean isFormatOnSaveEnabled() {
method setFormatOnSaveEnabled (line 75) | public void setFormatOnSaveEnabled(boolean isFormatOnSaveEnabled) {
method getFormatColumnWidth (line 79) | @NotNull
method setFormatColumnWidth (line 89) | public void setFormatColumnWidth(@Nullable String formatColumnWidth) {
method isUseSuperErrors (line 94) | public boolean isUseSuperErrors() {
method setUseSuperErrors (line 98) | public void setUseSuperErrors(boolean useSuperErrors) {
method isBsEnabled (line 102) | public boolean isBsEnabled() {
method setBsEnabled (line 106) | public void setBsEnabled(boolean isBsEnabled) {
method getBsPlatformLocation (line 110) | public @NotNull String getBsPlatformLocation() {
method setBsPlatformLocation (line 114) | public void setBsPlatformLocation(String bsPlatformLocation) {
method getOpamLocation (line 118) | public @NotNull String getOpamLocation() {
method setOpamLocation (line 122) | public void setOpamLocation(@Nullable String location) {
method getCygwinBash (line 126) | public String getCygwinBash() {
method setCygwinBash (line 130) | public void setCygwinBash(@Nullable String cygwinBash) {
method isWsl (line 134) | public boolean isWsl() {
method setIsWsl (line 138) | public void setIsWsl(boolean isWsl) {
method getSwitchName (line 142) | public String getSwitchName() {
method setSwitchName (line 146) | public void setSwitchName(@Nullable String name) {
method getEsyExecutable (line 150) | public @NotNull String getEsyExecutable() {
method setEsyExecutable (line 154) | public void setEsyExecutable(String esyExecutable) {
class ReasonSettingsState (line 158) | @SuppressWarnings("WeakerAccess")
FILE: src/main/java/com/reason/ide/settings/ORSettingsConfigurable.java
class ORSettingsConfigurable (line 28) | public class ORSettingsConfigurable implements SearchableConfigurable, C...
method ORSettingsConfigurable (line 56) | public ORSettingsConfigurable(@NotNull Project project) {
method getId (line 60) | @NotNull
method getDisplayName (line 66) | @Nls
method getHelpTopic (line 72) | @NotNull
method createComponent (line 78) | @Nullable
method apply (line 91) | @Override
method createExternalLibraryDependency (line 117) | private void createExternalLibraryDependency(@NotNull Project project,...
method isModified (line 171) | @Override
method reset (line 195) | @Override
method createGeneralTab (line 214) | private void createGeneralTab() {
method createBsTab (line 217) | private void createBsTab() {
method createEsyTab (line 223) | private void createEsyTab() {
method sanitizeInput (line 229) | private static @NotNull String sanitizeInput(@NotNull TextFieldWithBro...
method sanitizeInput (line 233) | private static @NotNull String sanitizeInput(@NotNull String input) {
FILE: src/main/java/com/reason/ide/settings/OpamConfigurationTab.java
class OpamConfigurationTab (line 20) | public class OpamConfigurationTab {
method createComponent (line 32) | public void createComponent(@Nullable Project project, @NotNull String...
method getFocusListener (line 63) | private @NotNull FocusListener getFocusListener(@NotNull String switch...
method detectSwitchSystem (line 90) | private void detectSwitchSystem(@NotNull VirtualFile dir) {
method setDetectionText (line 104) | void setDetectionText() {
method createSwitch (line 114) | void createSwitch(@NotNull String opamLocation, @NotNull String switch...
method listLibraries (line 139) | private void listLibraries(@NotNull String version) {
method clearEnv (line 150) | void clearEnv() {
method createDataModel (line 155) | @NotNull
method findBinary (line 176) | private VirtualFile findBinary(@Nullable VirtualFile dir) {
method getOpamLocation (line 189) | public TextFieldWithBrowseButton getOpamLocation() {
method setOpamLocation (line 193) | public void setOpamLocation(@NotNull String opamLocation) {
method getSelectedSwitch (line 197) | public @Nullable String getSelectedSwitch() {
method isWsl (line 201) | public boolean isWsl() {
method getCygwinBash (line 205) | public @Nullable String getCygwinBash() {
method isOpamLocationModified (line 209) | public boolean isOpamLocationModified(String opamLocation) {
method isOpamSwitchModified (line 213) | public boolean isOpamSwitchModified(@NotNull String switchName) {
FILE: src/main/java/com/reason/ide/spellcheckers/ORSpellCheckerStrategy.java
class ORSpellCheckerStrategy (line 15) | public class ORSpellCheckerStrategy extends SpellcheckingStrategy {
method getTokenizer (line 16) | @Override
FILE: src/main/java/com/reason/ide/spellcheckers/OclSpellCheckerStrategy.java
class OclSpellCheckerStrategy (line 7) | public class OclSpellCheckerStrategy extends ORSpellCheckerStrategy {
method getTokenizer (line 8) | @Override
FILE: src/main/java/com/reason/ide/spellcheckers/ResSpellCheckerStrategy.java
class ResSpellCheckerStrategy (line 7) | public class ResSpellCheckerStrategy extends ORSpellCheckerStrategy {
method getTokenizer (line 8) | @Override
FILE: src/main/java/com/reason/ide/spellcheckers/RmlSpellCheckerStrategy.java
class RmlSpellCheckerStrategy (line 7) | public class RmlSpellCheckerStrategy extends ORSpellCheckerStrategy {
method getTokenizer (line 8) | @Override
FILE: src/main/java/com/reason/ide/structure/NestedFunctionsFilter.java
class NestedFunctionsFilter (line 9) | public class NestedFunctionsFilter implements Filter {
method isVisible (line 10) | @Override
method isReverted (line 18) | @Override
method getPresentation (line 23) | @Override
method getName (line 43) | @Override public @NotNull String getName() {
FILE: src/main/java/com/reason/ide/structure/ORStructureViewModel.java
class ORStructureViewModel (line 9) | public class ORStructureViewModel extends StructureViewModelBase impleme...
method ORStructureViewModel (line 10) | ORStructureViewModel(@NotNull PsiFile psiFile) {
method getSorters (line 14) | public @NotNull Sorter[] getSorters() {
method getFilters (line 18) | @Override
method isAlwaysShowsPlus (line 23) | @Override
method isAlwaysLeaf (line 28) | @Override
FILE: src/main/java/com/reason/ide/structure/ShowVariableFilter.java
class ShowVariableFilter (line 10) | public class ShowVariableFilter implements Filter {
method isVisible (line 11) | @Override
method isReverted (line 19) | @Override
method getPresentation (line 24) | @Override
method getName (line 44) | @Override public @NotNull String getName() {
FILE: src/main/java/com/reason/ide/structure/StructureViewElement.java
class StructureViewElement (line 18) | public class StructureViewElement implements StructureViewTreeElement, S...
method StructureViewElement (line 24) | StructureViewElement(@NotNull PsiElement element, int level) {
method StructureViewElement (line 28) | private StructureViewElement(@Nullable PsiElement viewElement, @NotNul...
method getValue (line 35) | @Override
method getElement (line 40) | public PsiElement getElement() {
method getLevel (line 44) | int getLevel() {
method navigate (line 48) | @Override
method canNavigate (line 57) | @Override
method canNavigateToSource (line 62) | @Override
method getAlphaSortKey (line 68) | @Override
method getPresentation (line 84) | @Override
method getChildren (line 141) | @Override
method buildModuleStructure (line 178) | private @NotNull List<TreeElement> buildModuleStructure(@NotNull RPsiI...
method buildFunctorStructure (line 211) | private @NotNull List<TreeElement> buildFunctorStructure(@NotNull RPsi...
method buildTypeStructure (line 222) | private @NotNull List<TreeElement> buildTypeStructure(@NotNull RPsiTyp...
method buildClassStructure (line 236) | private @NotNull List<TreeElement> buildClassStructure(@NotNull RPsiCl...
method buildStanzaStructure (line 247) | private @NotNull List<TreeElement> buildStanzaStructure(@NotNull RPsiD...
method buildLetStructure (line 258) | private @Nullable List<TreeElement> buildLetStructure(@NotNull RPsiLet...
class ElementVisitor (line 274) | static class ElementVisitor extends PsiElementVisitor {
method ElementVisitor (line 278) | ElementVisitor(List<TreeElement> elements, int elementLevel) {
method visitElement (line 283) | @Override
class CustomStructureView (line 331) | static abstract class CustomStructureView implements StructureViewTree...
method CustomStructureView (line 334) | CustomStructureView(PsiElement rootElement) {
method getChildren (line 338) | @Override
method getValue (line 345) | @Override
method navigate (line 350) | @Override
class StructureObjectView (line 355) | static class StructureObjectView extends CustomStructureView {
method StructureObjectView (line 358) | StructureObjectView(PsiElement rootElement, String name) {
method getPresentation (line 363) | @Override
method getAlphaSortKey (line 378) | @Override
class StructureModuleImplView (line 384) | static class StructureModuleImplView extends CustomStructureView {
method StructureModuleImplView (line 385) | StructureModuleImplView(PsiElement rootElement) {
method getPresentation (line 389) | @Override
method getAlphaSortKey (line 411) | @NotNull
FILE: src/main/java/com/reason/ide/structure/StructureViewFactory.java
class StructureViewFactory (line 11) | public class StructureViewFactory implements PsiStructureViewFactory {
method getStructureViewBuilder (line 12) | @Override
FILE: src/main/java/com/reason/ide/template/OCamlBaseLiveTemplateContextType.java
class OCamlBaseLiveTemplateContextType (line 11) | public class OCamlBaseLiveTemplateContextType extends TemplateContextType {
method OCamlBaseLiveTemplateContextType (line 12) | protected OCamlBaseLiveTemplateContextType() {
method OCamlBaseLiveTemplateContextType (line 16) | public OCamlBaseLiveTemplateContextType(String presentableName) {
method isInContext (line 20) | @Override
method evaluateContext (line 26) | protected boolean evaluateContext(@NotNull TemplateActionContext templ...
FILE: src/main/java/com/reason/ide/template/OCamlCodeLiveTemplateContextType.java
class OCamlCodeLiveTemplateContextType (line 6) | public class OCamlCodeLiveTemplateContextType extends OCamlBaseLiveTempl...
method OCamlCodeLiveTemplateContextType (line 7) | public OCamlCodeLiveTemplateContextType() {
method isInContext (line 11) | @Override
FILE: src/main/java/com/reason/ide/template/OCamlCommentLiveTemplateContextType.java
class OCamlCommentLiveTemplateContextType (line 6) | public class OCamlCommentLiveTemplateContextType extends OCamlBaseLiveTe...
method OCamlCommentLiveTemplateContextType (line 7) | public OCamlCommentLiveTemplateContextType() {
method isInContext (line 11) | @Override
FILE: src/main/java/com/reason/ide/template/ResBaseLiveTemplateContextType.java
class ResBaseLiveTemplateContextType (line 8) | public class ResBaseLiveTemplateContextType extends TemplateContextType {
method ResBaseLiveTemplateContextType (line 9) | public ResBaseLiveTemplateContextType() {
method isInContext (line 13) | @Override
FILE: src/main/java/com/reason/ide/template/RmlBaseLiveTemplateContextType.java
class RmlBaseLiveTemplateContextType (line 8) | public class RmlBaseLiveTemplateContextType extends TemplateContextType {
method RmlBaseLiveTemplateContextType (line 9) | public RmlBaseLiveTemplateContextType() {
method isInContext (line 13) | @Override
FILE: src/main/java/com/reason/ide/testAssistant/GotoTestDataAction.java
class GotoTestDataAction (line 22) | public class GotoTestDataAction extends AnAction {
method actionPerformed (line 24) | @Override
method findRelatedFiles (line 48) | private @NotNull List<String> findRelatedFiles(@NotNull Project projec...
method splitModuleName (line 76) | private @NotNull String[] splitModuleName(@NotNull String moduleName) {
FILE: src/main/java/com/reason/ide/testAssistant/TestDataNavigationHandler.java
class TestDataNavigationHandler (line 14) | public class TestDataNavigationHandler implements GutterIconNavigationHa...
method navigate (line 15) | static void navigate(@NotNull RelativePoint point, @NotNull List<Strin...
method navigate (line 24) | @Override
FILE: src/main/java/com/reason/lang/CommonPsiParser.java
class CommonPsiParser (line 7) | public abstract class CommonPsiParser implements PsiParser {
method CommonPsiParser (line 12) | protected CommonPsiParser(boolean isSafe) {
method parse (line 16) | @Override
method getORParser (line 42) | protected abstract ORParser<?> getORParser(@NotNull PsiBuilder builder);
FILE: src/main/java/com/reason/lang/Marker.java
class Marker (line 9) | public class Marker {
type Status (line 10) | enum Status {
method Marker (line 23) | private Marker(@NotNull PsiBuilder builder, @NotNull PsiBuilder.Marker...
method mark (line 31) | public static @NotNull Marker mark(@NotNull PsiBuilder builder, @NotNu...
method atom (line 35) | public static @NotNull Marker atom(@NotNull PsiBuilder builder, @NotNu...
method precede (line 42) | public static @NotNull Marker precede(@NotNull Marker mark, @NotNull O...
method duplicate (line 47) | public static Marker duplicate(Marker marker) {
method getLength (line 60) | public int getLength() {
method isEmpty (line 64) | public boolean isEmpty() {
method end (line 68) | public void end() {
method done (line 73) | private void done() {
method drop (line 95) | public void drop() {
method hold (line 102) | public void hold() {
method updateCompositeType (line 108) | public void updateCompositeType(@NotNull ORCompositeType compositeType) {
method isCompositeIn (line 112) | boolean isCompositeIn(@NotNull ORCompositeType... compositeType) {
method setScopeType (line 121) | void setScopeType(@NotNull IElementType scopeType) {
method updateScope (line 125) | public void updateScope(@Nullable IElementType scopeToken) {
method isScopeToken (line 129) | public boolean isScopeToken(ORTokenElementType scopeType) {
method getScopeType (line 133) | public @Nullable IElementType getScopeType() {
method hasScope (line 137) | public boolean hasScope() {
method rollbackTo (line 141) | public void rollbackTo() {
method isCompositeType (line 147) | public boolean isCompositeType(@Nullable ORCompositeType elementType) {
method getCompositeType (line 151) | public @NotNull ORCompositeType getCompositeType() {
method isUnset (line 155) | public boolean isUnset() {
method isDone (line 159) | public boolean isDone() {
method isDropped (line 163) | public boolean isDropped() {
method isHold (line 167) | public boolean isHold() {
method resetStatus (line 171) | public void resetStatus() {
FILE: src/main/java/com/reason/lang/ModuleHelper.java
class ModuleHelper (line 11) | public class ModuleHelper {
method ModuleHelper (line 13) | private ModuleHelper() {
method isComponent (line 16) | public static boolean isComponent(@Nullable PsiElement element) {
FILE: src/main/java/com/reason/lang/ORLanguageParser.java
class ORLanguageParser (line 7) | public abstract class ORLanguageParser<T extends ORLangTypes> extends OR...
method ORLanguageParser (line 8) | protected ORLanguageParser(@NotNull T types, @NotNull PsiBuilder build...
method markParenthesisScope (line 12) | public @NotNull ORLanguageParser<T> markParenthesisScope(boolean isDum...
method endJsxPropertyIfWhitespace (line 24) | protected @Nullable WhitespaceSkippedCallback endJsxPropertyIfWhitespa...
FILE: src/main/java/com/reason/lang/ORLanguageProperties.java
type ORLanguageProperties (line 6) | public interface ORLanguageProperties {
method cast (line 7) | static @Nullable ORLanguageProperties cast(@Nullable Language language) {
method getParameterSeparator (line 11) | @NotNull String getParameterSeparator();
method getFunctionSeparator (line 13) | @NotNull String getFunctionSeparator();
method getTemplateStart (line 15) | @NotNull String getTemplateStart();
method getTemplateEnd (line 17) | @NotNull String getTemplateEnd();
FILE: src/main/java/com/reason/lang/ORParser.java
class ORParser (line 12) | public abstract class ORParser<T extends ORTypes> {
method ORParser (line 27) | protected ORParser(@NotNull T types, @NotNull PsiBuilder builder, bool...
method parse (line 34) | public abstract void parse();
method previousElementType (line 36) | public @Nullable IElementType previousElementType(int step) {
method popEndUntilScope (line 56) | public @Nullable Marker popEndUntilScope() {
method popEndUntilScopeToken (line 75) | public @Nullable Marker popEndUntilScopeToken(@NotNull IElementType sc...
method getLatestMarker (line 89) | public @Nullable Marker getLatestMarker() {
method getCurrentMarker (line 93) | public @Nullable Marker getCurrentMarker() {
method getActiveMarker (line 102) | public @Nullable Marker getActiveMarker() { // latest unset, not hold ...
method is (line 111) | public boolean is(@Nullable ORCompositeType composite) {
method isCurrent (line 115) | public boolean isCurrent(@Nullable ORCompositeType composite) {
method isDone (line 125) | public boolean isDone(@Nullable ORCompositeType composite) {
method isRawParent (line 130) | public boolean isRawParent(ORCompositeType composite) {
method isParent (line 140) | public boolean isParent(ORCompositeType expectedType) {
method isGrandParent (line 170) | public boolean isGrandParent(ORCompositeType expectedType) {
method isPrevious (line 213) | public boolean isPrevious(ORCompositeType expectedComposite, int index) {
method isRawGrandParent (line 221) | public boolean isRawGrandParent(@Nullable ORCompositeType composite) {
method in (line 228) | public boolean in(ORCompositeType composite) {
method in (line 232) | public boolean in(ORCompositeType composite, @Nullable ORCompositeType...
method in (line 236) | public boolean in(ORCompositeType composite, @Nullable ORCompositeType...
method strictlyIn (line 256) | public boolean strictlyIn(ORCompositeType composite) {
method strictlyInAny (line 274) | public boolean strictlyInAny(@NotNull ORCompositeType... composite) {
method find (line 292) | public @Nullable Marker find(int index) {
method latestIndexOfCompositeAtMost (line 296) | public int latestIndexOfCompositeAtMost(int maxIndex, @NotNull ORCompo...
method inAny (line 307) | public boolean inAny(ORCompositeType... composite) {
method inScopeOrAny (line 320) | public boolean inScopeOrAny(ORCompositeType... composite) {
method isScope (line 333) | public boolean isScope(@Nullable ORTokenElementType scopeType) {
method isCurrentScope (line 338) | public boolean isCurrentScope(@Nullable ORTokenElementType scopeType) {
method isScopeAtIndex (line 343) | public boolean isScopeAtIndex(int pos, @Nullable ORTokenElementType sc...
method isFoundScope (line 348) | protected boolean isFoundScope(@Nullable ORTokenElementType expectedSc...
method mark (line 353) | public @NotNull ORParser<T> mark(@NotNull ORCompositeType composite) {
method markScope (line 359) | public @NotNull ORParser<T> markScope(@NotNull ORCompositeType composi...
method markDummyScope (line 364) | public @NotNull ORParser<T> markDummyScope(@NotNull ORCompositeType co...
method markHolder (line 373) | public ORParser<T> markHolder(@NotNull ORCompositeType compositeType) {
method markHolderBefore (line 380) | protected ORParser<T> markHolderBefore(int pos, @NotNull ORCompositeTy...
method empty (line 388) | boolean empty() {
method pop (line 392) | public @Nullable Marker pop() {
method clear (line 396) | void clear() {
method popIfHold (line 404) | public ORParser<T> popIfHold() {
method popEnd (line 411) | public @NotNull ORParser<T> popEnd() {
method popEndUntilOneOf (line 420) | public void popEndUntilOneOf(@NotNull ORCompositeType... composites) {
method popEndUntilOneOfElementType (line 430) | @Nullable
method popEndUntil (line 445) | @NotNull
method popEndUntilIndex (line 456) | public ORParser<T> popEndUntilIndex(int index) {
method popEndUntilFoundIndex (line 465) | public ORParser<T> popEndUntilFoundIndex() {
method rawHasScope (line 471) | public boolean rawHasScope() {
method currentHasScope (line 476) | protected boolean currentHasScope() {
method updateLatestComposite (line 481) | public @NotNull ORParser<T> updateLatestComposite(@NotNull ORComposite...
method updateComposite (line 490) | public @NotNull ORParser<T> updateComposite(@NotNull ORCompositeType c...
method updateToHolder (line 499) | public @NotNull ORParser<T> updateToHolder() {
method advance (line 507) | public @NotNull ORParser<T> advance() {
method updateScopeToken (line 513) | public @NotNull ORParser<T> updateScopeToken(@Nullable IElementType to...
method wrapWith (line 523) | @SuppressWarnings("UnusedReturnValue")
method wrapAtom (line 530) | public @NotNull ORParser<T> wrapAtom(@NotNull ORCompositeType atomComp...
method error (line 538) | @SuppressWarnings("unused")
method remapCurrentToken (line 543) | public @NotNull ORParser<T> remapCurrentToken(ORTokenElementType eleme...
method setWhitespaceSkippedCallback (line 548) | public @NotNull ORParser<T> setWhitespaceSkippedCallback(@Nullable Whi...
method getTokenText (line 553) | public @Nullable String getTokenText() {
method rawLookup (line 557) | public @Nullable IElementType rawLookup(int steps) {
method lookAhead (line 561) | public @Nullable IElementType lookAhead(int steps) {
method getTokenType (line 565) | public @Nullable IElementType getTokenType() {
method isRoot (line 569) | public boolean isRoot() {
method isHold (line 573) | public boolean isHold() {
method duplicateAtIndex (line 578) | public ORParser<T> duplicateAtIndex(int pos) {
method markBefore (line 588) | public ORParser<T> markBefore(int pos, ORCompositeType compositeType) {
method getPrevious (line 597) | public @Nullable Marker getPrevious() {
method rollbackToIndexAndDrop (line 605) | public @NotNull ORParser<T> rollbackToIndexAndDrop(int pos) {
method rollbackToIndex (line 619) | public @NotNull ORParser<T> rollbackToIndex(int index) {
method rollbackToFoundIndex (line 656) | public @NotNull ORParser<T> rollbackToFoundIndex() {
method getIndex (line 662) | public int getIndex() {
method isFound (line 666) | public boolean isFound(@Nullable ORCompositeType expectedType) {
method updateScopeToken (line 671) | public ORParser<T> updateScopeToken(@Nullable Marker scope, @Nullable ...
method isAtIndex (line 678) | public boolean isAtIndex(int index, @NotNull ORCompositeType expectedC...
method end (line 683) | public @NotNull ORParser<T> end() {
method updateCompositeAt (line 692) | public ORParser<T> updateCompositeAt(int pos, @NotNull ORCompositeType...
method dropLatest (line 704) | public ORParser<T> dropLatest() {
FILE: src/main/java/com/reason/lang/core/LiteralStringManipulator.java
class LiteralStringManipulator (line 11) | public class LiteralStringManipulator extends AbstractElementManipulator...
method handleContentChange (line 12) | @Override
method getRangeInElement (line 28) | @Override
method getValueRange (line 33) | @NotNull
FILE: src/main/java/com/reason/lang/core/ORCodeFactory.java
class ORCodeFactory (line 12) | public class ORCodeFactory {
method ORCodeFactory (line 13) | private ORCodeFactory() {
method createModuleName (line 16) | @Nullable
method createLetName (line 23) | @Nullable
method createTypeName (line 30) | @Nullable
method createExpression (line 37) | @Nullable
method createFileFromText (line 43) | @NotNull
FILE: src/main/java/com/reason/lang/core/ORUtil.java
class ORUtil (line 21) | public class ORUtil {
method ORUtil (line 24) | private ORUtil() {
method moduleNameToFileName (line 27) | @NotNull
method fileNameToModuleName (line 35) | @NotNull
method prevSibling (line 45) | @Nullable
method prevPrevSibling (line 59) | @Nullable
method prevAnnotations (line 65) | @NotNull
method nextSiblingWithTokenType (line 78) | public static @Nullable PsiElement nextSiblingWithTokenType(@NotNull P...
method getTextUntilTokenType (line 94) | public static @NotNull String getTextUntilTokenType(@NotNull PsiElemen...
method getTextUntilClass (line 110) | public static @NotNull String getTextUntilClass(@NotNull PsiElement ro...
method getLongIdent (line 130) | public static @NotNull String getLongIdent(@Nullable PsiElement root) {
method nextSiblingNode (line 149) | @NotNull
method nextSibling (line 158) | public static @Nullable PsiElement nextSibling(@Nullable PsiElement el...
method findImmediateChildrenOfClass (line 171) | public static @NotNull <T extends PsiElement> List<T> findImmediateChi...
method findImmediateChildrenOfType (line 179) | @NotNull
method findImmediateChildrenOfType (line 198) | @NotNull
method findImmediateFirstChildOfType (line 203) | @Nullable
method findImmediateLastChildOfType (line 210) | public static @Nullable PsiElement findImmediateLastChildOfType(@Nulla...
method findImmediateFirstChildOfType (line 222) | @Nullable
method findImmediateLastChildOfType (line 227) | @Nullable
method findImmediateFirstChildOfClass (line 232) | @Nullable
method findImmediateLastChildOfClass (line 246) | @Nullable
method findImmediateFirstChildOfAnyClass (line 262) | public static @Nullable PsiElement findImmediateFirstChildOfAnyClass(@...
method getQualifiedPath (line 279) | public static @NotNull String[] getQualifiedPath(@NotNull PsiElement e...
method getQualifiedName (line 322) | @NotNull
method getTypes (line 333) | @NotNull
method computeAlias (line 340) | @Nullable
method findPreviousSiblingsOrParentOfClass (line 368) | public static <T> @NotNull List<T> findPreviousSiblingsOrParentOfClass...
method findImmediateNamedChildOfClass (line 385) | public static @Nullable <T extends PsiNamedElement> T findImmediateNam...
method isPrevType (line 389) | public static boolean isPrevType(PsiElement root, ORTokenElementType e...
method isInterfaceFile (line 395) | public static boolean isInterfaceFile(@Nullable PsiElement element) {
method inInterface (line 400) | public static boolean inInterface(@Nullable PsiElement element) {
method getNodeType (line 420) | public static @Nullable IElementType getNodeType(@Nullable PsiElement ...
FILE: src/main/java/com/reason/lang/core/psi/RPsiClass.java
type RPsiClass (line 10) | public interface RPsiClass extends RPsiQualifiedPathElement, Navigatable...
method getClassBody (line 11) | @Nullable
method getFields (line 14) | @NotNull
method getMethods (line 17) | @NotNull
method getParameters (line 20) | @NotNull
method getConstructor (line 23) | @Nullable
method getInitializer (line 26) | @Nullable
FILE: src/main/java/com/reason/lang/core/psi/RPsiClassMethod.java
type RPsiClassMethod (line 7) | public interface RPsiClassMethod extends RPsiQualifiedPathElement, Navig...
method getSignature (line 8) | @Nullable RPsiSignature getSignature();
FILE: src/main/java/com/reason/lang/core/psi/RPsiConditional.java
type RPsiConditional (line 7) | public interface RPsiConditional {
method getCondition (line 8) | @Nullable
method getThenExpression (line 11) | @Nullable
method getElseExpression (line 14) | @Nullable
FILE: src/main/java/com/reason/lang/core/psi/RPsiException.java
type RPsiException (line 7) | public interface RPsiException extends NavigatablePsiElement, RPsiStruct...
method getAlias (line 8) | @Nullable
FILE: src/main/java/com/reason/lang/core/psi/RPsiExternal.java
type RPsiExternal (line 7) | public interface RPsiExternal extends RPsiQualifiedPathElement, RPsiSign...
method isFunction (line 8) | boolean isFunction();
method getExternalName (line 10) | @NotNull
FILE: src/main/java/com/reason/lang/core/psi/RPsiField.java
type RPsiField (line 6) | public interface RPsiField extends RPsiQualifiedPathElement {
method getValue (line 7) | @Nullable RPsiFieldValue getValue();
FILE: src/main/java/com/reason/lang/core/psi/RPsiFunctor.java
type RPsiFunctor (line 10) | public interface RPsiFunctor extends PsiNameIdentifierOwner, RPsiModule,...
method getParameters (line 11) | @NotNull
method getReturnType (line 14) | @Nullable
method getConstraints (line 17) | @NotNull
FILE: src/main/java/com/reason/lang/core/psi/RPsiInclude.java
type RPsiInclude (line 7) | public interface RPsiInclude extends RPsiStructuredElement, StubBasedPsi...
method getQualifiedPath (line 8) | String[] getQualifiedPath();
method getIncludePath (line 10) | @NotNull String getIncludePath();
method useFunctor (line 12) | boolean useFunctor();
FILE: src/main/java/com/reason/lang/core/psi/RPsiInferredType.java
type RPsiInferredType (line 6) | public interface RPsiInferredType extends PsiElement {
method setInferredType (line 7) | void setInferredType(@NotNull RPsiSignature inferredType);
method getInferredType (line 9) | @Nullable
method hasInferredType (line 12) | boolean hasInferredType();
FILE: src/main/java/com/reason/lang/core/psi/RPsiInnerModule.java
type RPsiInnerModule (line 10) | public interface RPsiInnerModule extends RPsiModule, StubBasedPsiElement...
method getAlias (line 11) | @Nullable
method getUnpack (line 14) | @Nullable
method getAliasSymbol (line 17) | @Nullable
method isComponent (line 20) | boolean isComponent();
method isFunctorCall (line 22) | boolean isFunctorCall();
method getFunctorCall (line 24) | @Nullable
method isModuleType (line 27) | boolean isModuleType();
method getModuleSignature (line 29) | @Nullable
method getBody (line 32) | @Nullable
method getConstraints (line 35) | @NotNull
FILE: src/main/java/com/reason/lang/core/psi/RPsiLanguageConverter.java
type RPsiLanguageConverter (line 6) | public interface RPsiLanguageConverter {
method asText (line 7) | @NotNull
FILE: src/main/java/com/reason/lang/core/psi/RPsiLet.java
type RPsiLet (line 10) | public interface RPsiLet extends RPsiVar, RPsiSignatureElement, RPsiInfe...
method getBinding (line 11) | @Nullable
method getFunction (line 14) | @Nullable
method isComponent (line 17) | boolean isComponent();
method isRecord (line 19) | boolean isRecord();
method isJsObject (line 21) | boolean isJsObject();
method isScopeIdentifier (line 23) | boolean isScopeIdentifier();
method getAlias (line 25) | @Nullable
method getScopeChildren (line 28) | @NotNull
method isDeconstruction (line 31) | boolean isDeconstruction();
method getDeconstructedElements (line 33) | @NotNull
method isPrivate (line 36) | boolean isPrivate();
method getFirstClassModule (line 38) | @Nullable
FILE: src/main/java/com/reason/lang/core/psi/RPsiModule.java
type RPsiModule (line 9) | public interface RPsiModule extends RPsiQualifiedPathElement, RPsiStruct...
method getModuleName (line 10) | @Nullable
method getBody (line 13) | @Nullable
method isComponent (line 16) | boolean isComponent();
method getMakeFunction (line 18) | @Nullable
FILE: src/main/java/com/reason/lang/core/psi/RPsiOCamlInjection.java
class RPsiOCamlInjection (line 12) | public class RPsiOCamlInjection extends ASTWrapperPsiElement implements ...
method RPsiOCamlInjection (line 13) | public RPsiOCamlInjection(@NotNull ASTNode node) {
method getPresentation (line 18) | @Override
FILE: src/main/java/com/reason/lang/core/psi/RPsiOpen.java
type RPsiOpen (line 7) | public interface RPsiOpen extends RPsiStructuredElement, StubBasedPsiEle...
method getPath (line 8) | @NotNull String getPath();
method useFunctor (line 10) | boolean useFunctor();
FILE: src/main/java/com/reason/lang/core/psi/RPsiParameterDeclaration.java
type RPsiParameterDeclaration (line 8) | public interface RPsiParameterDeclaration extends PsiNameIdentifierOwner...
method getDefaultValue (line 9) | @Nullable
method isOptional (line 12) | boolean isOptional();
method isNamed (line 14) | boolean isNamed();
FILE: src/main/java/com/reason/lang/core/psi/RPsiQualifiedPathElement.java
type RPsiQualifiedPathElement (line 9) | public interface RPsiQualifiedPathElement extends PsiQualifiedNamedEleme...
method getPath (line 10) | @Nullable String[] getPath();
FILE: src/main/java/com/reason/lang/core/psi/RPsiRecordField.java
type RPsiRecordField (line 6) | public interface RPsiRecordField extends RPsiField, PsiNameIdentifierOwn...
FILE: src/main/java/com/reason/lang/core/psi/RPsiSignature.java
type RPsiSignature (line 8) | public interface RPsiSignature extends PsiElement, RPsiLanguageConverter {
method isFunction (line 9) | boolean isFunction();
method getItems (line 11) | @NotNull List<RPsiSignatureItem> getItems();
FILE: src/main/java/com/reason/lang/core/psi/RPsiSignatureElement.java
type RPsiSignatureElement (line 6) | public interface RPsiSignatureElement extends PsiElement {
method getSignature (line 7) | @Nullable
FILE: src/main/java/com/reason/lang/core/psi/RPsiSignatureItem.java
type RPsiSignatureItem (line 6) | public interface RPsiSignatureItem extends PsiNamedElement, RPsiLanguage...
method isNamedItem (line 7) | boolean isNamedItem();
method getName (line 9) | @Nullable String getName();
method isOptional (line 11) | boolean isOptional();
method getSignature (line 13) | @Nullable PsiElement getSignature();
method getDefaultValue (line 15) | @Nullable PsiElement getDefaultValue();
FILE: src/main/java/com/reason/lang/core/psi/RPsiSignatureUtil.java
class RPsiSignatureUtil (line 7) | public final class RPsiSignatureUtil {
method RPsiSignatureUtil (line 8) | private RPsiSignatureUtil() {
method getSignature (line 11) | public static @NotNull String getSignature(@Nullable PsiElement elemen...
FILE: src/main/java/com/reason/lang/core/psi/RPsiStructuredElement.java
type RPsiStructuredElement (line 6) | public interface RPsiStructuredElement extends PsiElement {
method canBeDisplayed (line 7) | default boolean canBeDisplayed() {
FILE: src/main/java/com/reason/lang/core/psi/RPsiType.java
type RPsiType (line 10) | public interface RPsiType extends PsiNameIdentifierOwner, RPsiQualifiedP...
method getBinding (line 11) | @Nullable
method getVariants (line 14) | @NotNull
method isJsObject (line 17) | boolean isJsObject();
method isRecord (line 19) | boolean isRecord();
method getParameters (line 21) | @Nullable
method getJsObjectFields (line 24) | @NotNull
method getRecordFields (line 27) | @NotNull
method isAbstract (line 30) | boolean isAbstract();
FILE: src/main/java/com/reason/lang/core/psi/RPsiVal.java
type RPsiVal (line 6) | public interface RPsiVal extends RPsiVar, RPsiQualifiedPathElement, RPsi...
FILE: src/main/java/com/reason/lang/core/psi/RPsiVar.java
type RPsiVar (line 12) | public interface RPsiVar extends RPsiQualifiedPathElement, PsiNameIdenti...
method isFunction (line 14) | boolean isFunction();
method getJsObjectFields (line 16) | @NotNull
method getRecordFields (line 19) | @NotNull
method isAnonymous (line 25) | boolean isAnonymous();
FILE: src/main/java/com/reason/lang/core/psi/impl/ORASTFactory.java
class ORASTFactory (line 12) | public class ORASTFactory<T extends ORLangTypes> extends ASTFactory {
method ORASTFactory (line 15) | public ORASTFactory(T types) {
method createComposite (line 19) | @Override
method createLeaf (line 250) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiAnnotation.java
class RPsiAnnotation (line 10) | public class RPsiAnnotation extends ORCompositePsiElement<ORLangTypes> i...
method RPsiAnnotation (line 11) | protected RPsiAnnotation(@NotNull ORLangTypes types, @NotNull IElement...
method getNameIdentifier (line 15) | @Override
method getName (line 20) | @Override
method setName (line 26) | @Override
method getValue (line 31) | public @Nullable PsiElement getValue() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiArray.java
class RPsiArray (line 7) | public class RPsiArray extends ORCompositePsiElement<ORLangTypes> {
method RPsiArray (line 8) | protected RPsiArray(@NotNull ORLangTypes types, @NotNull IElementType ...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiAssert.java
class RPsiAssert (line 9) | public class RPsiAssert extends ORCompositePsiElement<ORLangTypes> {
method RPsiAssert (line 11) | protected RPsiAssert(@NotNull ORLangTypes types, @NotNull IElementType...
method getAssertion (line 15) | public @Nullable PsiElement getAssertion() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiBinaryCondition.java
class RPsiBinaryCondition (line 7) | public class RPsiBinaryCondition extends ORCompositePsiElement<ORLangTyp...
method RPsiBinaryCondition (line 9) | protected RPsiBinaryCondition(@NotNull ORLangTypes types, @NotNull IEl...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiClassConstructor.java
class RPsiClassConstructor (line 7) | public class RPsiClassConstructor extends ORCompositePsiElement<ORLangTy...
method RPsiClassConstructor (line 8) | protected RPsiClassConstructor(@NotNull ORLangTypes types, @NotNull IE...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiClassField.java
class RPsiClassField (line 15) | public class RPsiClassField extends ORCompositePsiElement<ORLangTypes> i...
method RPsiClassField (line 16) | protected RPsiClassField(@NotNull ORLangTypes types, @NotNull IElement...
method getNameIdentifier (line 20) | @Override
method getName (line 25) | @Override
method setName (line 31) | @Override
method getPresentation (line 36) | public ItemPresentation getPresentation() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiClassImpl.java
class RPsiClassImpl (line 19) | public class RPsiClassImpl extends RPsiTokenStub<ORLangTypes, RPsiClass,...
method RPsiClassImpl (line 21) | public RPsiClassImpl(@NotNull ORLangTypes types, @NotNull ASTNode node) {
method RPsiClassImpl (line 25) | public RPsiClassImpl(@NotNull ORLangTypes types, @NotNull RsiClassStub...
method getNameIdentifier (line 31) | public @Nullable PsiElement getNameIdentifier() {
method getName (line 35) | @Override
method setName (line 41) | @Override
method getPath (line 48) | @Override
method getQualifiedName (line 58) | @Override
method getClassBody (line 69) | @Override
method getFields (line 74) | @Override
method getMethods (line 79) | @Override
method getParameters (line 84) | @Override
method getConstructor (line 89) | @Override
method getInitializer (line 94) | @Override
method getPresentation (line 100) | public ItemPresentation getPresentation() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiClassInitializer.java
class RPsiClassInitializer (line 7) | public class RPsiClassInitializer extends ORCompositePsiElement<ORLangTy...
method RPsiClassInitializer (line 8) | protected RPsiClassInitializer(@NotNull ORLangTypes types, @NotNull IE...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiClassMethodImpl.java
class RPsiClassMethodImpl (line 17) | public class RPsiClassMethodImpl extends RPsiTokenStub<ORLangTypes, RPsi...
method RPsiClassMethodImpl (line 19) | public RPsiClassMethodImpl(@NotNull ORLangTypes types, @NotNull ASTNod...
method RPsiClassMethodImpl (line 23) | public RPsiClassMethodImpl(@NotNull ORLangTypes types, @NotNull RsiCla...
method getNameIdentifier (line 28) | @Override
method getQualifiedName (line 34) | @Override
method getPath (line 44) | @Override
method getName (line 55) | @Override
method setName (line 61) | @Override
method getSignature (line 66) | public @Nullable RPsiSignature getSignature() {
method getPresentation (line 70) | public ItemPresentation getPresentation() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiConstraints.java
class RPsiConstraints (line 7) | public class RPsiConstraints extends ORCompositePsiElement<ORLangTypes> {
method RPsiConstraints (line 8) | protected RPsiConstraints(@NotNull ORLangTypes types, @NotNull IElemen...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiDeconstruction.java
class RPsiDeconstruction (line 10) | public class RPsiDeconstruction extends ORCompositePsiElement<ORLangType...
method RPsiDeconstruction (line 12) | protected RPsiDeconstruction(@NotNull ORLangTypes types, @NotNull IEle...
method getDeconstructedElements (line 16) | public @NotNull List<PsiElement> getDeconstructedElements() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiDefaultValue.java
class RPsiDefaultValue (line 7) | public class RPsiDefaultValue extends ORCompositePsiElement<ORLangTypes> {
method RPsiDefaultValue (line 8) | public RPsiDefaultValue(@NotNull ORLangTypes types, @NotNull IElementT...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiDirective.java
class RPsiDirective (line 7) | public class RPsiDirective extends ORCompositePsiElement<ORLangTypes> {
method RPsiDirective (line 8) | protected RPsiDirective(@NotNull ORLangTypes types, @NotNull IElementT...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiDuneField.java
class RPsiDuneField (line 17) | public class RPsiDuneField extends ORCompositePsiElement<DuneTypes> impl...
method RPsiDuneField (line 18) | public RPsiDuneField(@NotNull DuneTypes types, @NotNull IElementType e...
method getNameIdentifier (line 22) | @Override
method getName (line 29) | @Override
method setName (line 35) | @Override
method getValue (line 40) | public @NotNull String getValue() {
method getPresentation (line 46) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiDuneFields.java
class RPsiDuneFields (line 8) | public class RPsiDuneFields extends ORCompositePsiElement<DuneTypes> {
method RPsiDuneFields (line 9) | public RPsiDuneFields(@NotNull DuneTypes types, @NotNull IElementType ...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiDuneSExpr.java
class RPsiDuneSExpr (line 8) | public class RPsiDuneSExpr extends ORCompositePsiElement<DuneTypes> {
method RPsiDuneSExpr (line 9) | public RPsiDuneSExpr(@NotNull DuneTypes types, @NotNull IElementType e...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiDuneStanza.java
class RPsiDuneStanza (line 17) | public class RPsiDuneStanza extends ORCompositePsiElement<DuneTypes> imp...
method RPsiDuneStanza (line 18) | public RPsiDuneStanza(@NotNull DuneTypes types, @NotNull IElementType ...
method getNameIdentifier (line 22) | @Override
method getName (line 31) | @Override
method setName (line 37) | @Override
method getFields (line 42) | public @NotNull Collection<RPsiDuneField> getFields() {
method getField (line 47) | public @Nullable RPsiDuneField getField(@NotNull String name) {
method getPresentation (line 56) | @Nullable
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiDuneVar.java
class RPsiDuneVar (line 8) | public class RPsiDuneVar extends ORCompositePsiElement<DuneTypes> {
method RPsiDuneVar (line 9) | public RPsiDuneVar(@NotNull DuneTypes types, @NotNull IElementType ele...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiExceptionImpl.java
class RPsiExceptionImpl (line 17) | public class RPsiExceptionImpl extends RPsiTokenStub<ORLangTypes, RPsiEx...
method RPsiExceptionImpl (line 19) | public RPsiExceptionImpl(@NotNull ORLangTypes types, @NotNull ASTNode ...
method RPsiExceptionImpl (line 23) | public RPsiExceptionImpl(@NotNull ORLangTypes types, @NotNull PsiExcep...
method getNameIdentifier (line 29) | @Override
method getName (line 34) | @Override
method setName (line 45) | @Override
method getPath (line 52) | @Override
method getQualifiedName (line 62) | @Override
method getTextOffset (line 73) | @Override
method getAlias (line 79) | @Override
method getPresentation (line 90) | @Override
method toString (line 110) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiExternalImpl.java
class RPsiExternalImpl (line 22) | public class RPsiExternalImpl extends RPsiTokenStub<ORLangTypes, RPsiExt...
method RPsiExternalImpl (line 24) | public RPsiExternalImpl(@NotNull ORLangTypes types, @NotNull ASTNode n...
method RPsiExternalImpl (line 28) | public RPsiExternalImpl(@NotNull ORLangTypes types, @NotNull PsiExtern...
method getNameIdentifier (line 34) | @Override
method getName (line 44) | @Override
method setName (line 70) | @Override
method getPath (line 77) | @Override
method getQualifiedName (line 87) | @Override
method getTextOffset (line 98) | @Override
method getSignature (line 104) | @Override
method getRealName (line 109) | private @NotNull String getRealName() {
method isFunction (line 114) | @Override
method getExternalName (line 125) | @Override
method getPresentation (line 138) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFieldValue.java
class RPsiFieldValue (line 7) | public class RPsiFieldValue extends ORCompositePsiElement<ORLangTypes> {
method RPsiFieldValue (line 8) | protected RPsiFieldValue(@NotNull ORLangTypes types, @NotNull IElement...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFirstClass.java
class RPsiFirstClass (line 9) | public class RPsiFirstClass extends ORCompositePsiElement<ORLangTypes> {
method RPsiFirstClass (line 10) | protected RPsiFirstClass(@NotNull ORLangTypes types, @NotNull IElement...
method getFirstClassModuleSymbol (line 14) | public @Nullable RPsiUpperSymbol getFirstClassModuleSymbol() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiForLoop.java
class RPsiForLoop (line 7) | public class RPsiForLoop extends ORCompositePsiElement<ORLangTypes> {
method RPsiForLoop (line 8) | protected RPsiForLoop(@NotNull ORLangTypes types, @NotNull IElementTyp...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFunSwitch.java
class RPsiFunSwitch (line 10) | public class RPsiFunSwitch extends ORCompositePsiElement<ORLangTypes> {
method RPsiFunSwitch (line 11) | protected RPsiFunSwitch(@NotNull ORLangTypes types, @NotNull IElementT...
method getPatterns (line 15) | public @NotNull List<RPsiPatternMatch> getPatterns() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFunction.java
class RPsiFunction (line 11) | public class RPsiFunction extends ORCompositePsiElement<ORLangTypes> {
method RPsiFunction (line 12) | protected RPsiFunction(@NotNull ORLangTypes types, @NotNull IElementTy...
method getParameters (line 16) | public @NotNull List<RPsiParameterDeclaration> getParameters() {
method getBody (line 21) | public @Nullable RPsiFunctionBody getBody() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFunctionBody.java
class RPsiFunctionBody (line 7) | public class RPsiFunctionBody extends ORCompositePsiElement<ORLangTypes> {
method RPsiFunctionBody (line 8) | protected RPsiFunctionBody(@NotNull ORLangTypes types, @NotNull IEleme...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFunctionCall.java
class RPsiFunctionCall (line 10) | public class RPsiFunctionCall extends ORCompositePsiElement<ORLangTypes> {
method RPsiFunctionCall (line 11) | protected RPsiFunctionCall(@NotNull ORLangTypes types, @NotNull IEleme...
method getName (line 15) | @Override
method getParameters (line 21) | public @NotNull List<RPsiParameterReference> getParameters() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFunctorBinding.java
class RPsiFunctorBinding (line 7) | public class RPsiFunctorBinding extends ORCompositePsiElement<ORLangType...
method RPsiFunctorBinding (line 8) | protected RPsiFunctorBinding(@NotNull ORLangTypes types, @NotNull IEle...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFunctorCall.java
class RPsiFunctorCall (line 13) | public class RPsiFunctorCall extends ORCompositePsiElement<ORLangTypes> {
method RPsiFunctorCall (line 14) | protected RPsiFunctorCall(@NotNull ORLangTypes types, @NotNull IElemen...
method getReferenceIdentifier (line 18) | public @Nullable RPsiUpperSymbol getReferenceIdentifier() {
method getTextOffset (line 22) | @Override
method getName (line 28) | @Override
method getParameters (line 34) | public @NotNull List<RPsiParameterReference> getParameters() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFunctorImpl.java
class RPsiFunctorImpl (line 18) | public class RPsiFunctorImpl extends RPsiTokenStub<ORLangTypes, RPsiModu...
method RPsiFunctorImpl (line 20) | public RPsiFunctorImpl(@NotNull ORLangTypes types, @NotNull ASTNode no...
method RPsiFunctorImpl (line 24) | public RPsiFunctorImpl(@NotNull ORLangTypes types, @NotNull PsiModuleS...
method getNameIdentifier (line 30) | @Override
method getTextOffset (line 35) | @Override
method getName (line 41) | @Override
method setName (line 52) | @Override
method getPath (line 65) | @Override
method getQualifiedName (line 75) | @Override
method isComponent (line 86) | @Override
method getMakeFunction (line 91) | @Override
method getBody (line 96) | @Override
method getModuleName (line 101) | @Override
method getParameters (line 107) | @Override
method getReturnType (line 113) | @Override
method getConstraints (line 124) | @Override
method getPresentation (line 136) | public ItemPresentation getPresentation() {
method toString (line 155) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiFunctorResult.java
class RPsiFunctorResult (line 8) | public class RPsiFunctorResult extends ORCompositePsiElement<ORLangTypes> {
method RPsiFunctorResult (line 9) | protected RPsiFunctorResult(@NotNull ORLangTypes types, @NotNull IElem...
method getModuleType (line 13) | public @Nullable RPsiUpperSymbol getModuleType() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiGuard.java
class RPsiGuard (line 8) | public class RPsiGuard extends ORCompositePsiElement<ORLangTypes> {
method RPsiGuard (line 9) | protected RPsiGuard(@NotNull ORLangTypes types, @NotNull IElementType ...
method getCondition (line 13) | @Nullable
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiIfStatement.java
class RPsiIfStatement (line 10) | public class RPsiIfStatement extends ORCompositePsiElement<ORLangTypes> ...
method RPsiIfStatement (line 11) | protected RPsiIfStatement(@NotNull ORLangTypes types, @NotNull IElemen...
method getCondition (line 15) | @Nullable
method getThenExpression (line 20) | @Override
method getElseExpression (line 25) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiIncludeImpl.java
class RPsiIncludeImpl (line 20) | public class RPsiIncludeImpl extends RPsiTokenStub<ORLangTypes, RPsiIncl...
method RPsiIncludeImpl (line 22) | public RPsiIncludeImpl(@NotNull ORLangTypes types, @NotNull ASTNode no...
method RPsiIncludeImpl (line 26) | public RPsiIncludeImpl(@NotNull ORLangTypes types, @NotNull PsiInclude...
method getQualifiedPath (line 31) | @Override public String[] getQualifiedPath() {
method getIncludePath (line 40) | @Override
method useFunctor (line 62) | @Override
method getPresentation (line 68) | @Override
method canBeDisplayed (line 73) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiInherit.java
class RPsiInherit (line 13) | public class RPsiInherit extends ORCompositePsiElement<ORLangTypes> {
method RPsiInherit (line 14) | protected RPsiInherit(@NotNull ORLangTypes types, @NotNull IElementTyp...
method getClassTypeIdentifier (line 18) | public @Nullable PsiElement getClassTypeIdentifier() {
method getParameters (line 22) | public @NotNull List<PsiElement> getParameters() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiInnerModuleImpl.java
class RPsiInnerModuleImpl (line 20) | public class RPsiInnerModuleImpl extends RPsiTokenStub<ORLangTypes, RPsi...
method RPsiInnerModuleImpl (line 22) | public RPsiInnerModuleImpl(@NotNull ORLangTypes types, @NotNull ASTNod...
method RPsiInnerModuleImpl (line 26) | public RPsiInnerModuleImpl(@NotNull ORLangTypes types, @NotNull PsiMod...
method getNameIdentifier (line 32) | public @Nullable PsiElement getNameIdentifier() {
method getTextOffset (line 36) | @Override
method getName (line 42) | @Override
method setName (line 53) | @Override
method getPath (line 66) | @Override
method getQualifiedName (line 76) | @Override
method getModuleName (line 87) | @Override
method getFunctorCall (line 93) | @Override
method getBody (line 98) | @Override
method getConstraints (line 103) | @Override
method getModuleSignature (line 109) | @Override
method isModuleType (line 119) | @Override
method isComponent (line 130) | @Override
method getMakeFunction (line 140) | @Override
method isFunctorCall (line 149) | @Override
method getAliasSymbol (line 159) | public @Nullable RPsiUpperSymbol getAliasSymbol() {
method getAlias (line 164) | @Override
method getUnpack (line 179) | @Override
method getPresentation (line 184) | public ItemPresentation getPresentation() {
method toString (line 207) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiInterpolation.java
class RPsiInterpolation (line 7) | public class RPsiInterpolation extends ORCompositePsiElement<ORLangTypes> {
method RPsiInterpolation (line 8) | protected RPsiInterpolation(@NotNull ORLangTypes types, @NotNull IElem...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiInterpolationReference.java
class RPsiInterpolationReference (line 7) | public class RPsiInterpolationReference extends ORCompositePsiElement<OR...
method RPsiInterpolationReference (line 8) | protected RPsiInterpolationReference(@NotNull ORLangTypes types, @NotN...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiJsObject.java
class RPsiJsObject (line 15) | public class RPsiJsObject extends ORCompositePsiElement<ORLangTypes> imp...
method RPsiJsObject (line 16) | protected RPsiJsObject(@NotNull ORLangTypes types, @NotNull IElementTy...
method getFields (line 20) | public @NotNull List<RPsiObjectField> getFields() {
method asText (line 24) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiLeafPropertyName.java
class RPsiLeafPropertyName (line 10) | public class RPsiLeafPropertyName extends LeafPsiElement {
method RPsiLeafPropertyName (line 11) | public RPsiLeafPropertyName(@NotNull IElementType type, CharSequence t...
method getReference (line 15) | @Override
method toString (line 20) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiLetAttribute.java
class RPsiLetAttribute (line 8) | public class RPsiLetAttribute extends ORCompositePsiElement<ORLangTypes> {
method RPsiLetAttribute (line 9) | protected RPsiLetAttribute(@NotNull ORLangTypes types, @NotNull IEleme...
method getValue (line 13) | @Nullable String getValue() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiLetBinding.java
class RPsiLetBinding (line 7) | public class RPsiLetBinding extends ORCompositePsiElement<ORLangTypes> {
method RPsiLetBinding (line 8) | public RPsiLetBinding(@NotNull ORLangTypes types, @NotNull IElementTyp...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiLetImpl.java
class RPsiLetImpl (line 24) | public class RPsiLetImpl extends RPsiTokenStub<ORLangTypes, RPsiLet, Psi...
method RPsiLetImpl (line 28) | public RPsiLetImpl(@NotNull ORLangTypes types, @NotNull ASTNode node) {
method RPsiLetImpl (line 32) | public RPsiLetImpl(@NotNull ORLangTypes types, @NotNull PsiLetStub stu...
method getNameIdentifier (line 38) | public @Nullable PsiElement getNameIdentifier() {
method getName (line 42) | @Override
method setName (line 56) | @Override
method getTextOffset (line 69) | @Override
method getPath (line 76) | @Override
method getQualifiedName (line 86) | @Override
method getBinding (line 97) | @Override
method isScopeIdentifier (line 102) | @Override
method getScopeChildren (line 107) | @Override
method getAlias (line 123) | @Override
method getSignature (line 138) | @Override
method isFunction (line 149) | @Override
method getFunction (line 170) | public @Nullable RPsiFunction getFunction() {
method isComponent (line 181) | @Override
method isRecord (line 199) | @Override
method isJsObject (line 204) | @Override
method getJsObjectFields (line 210) | @Override
method getRecordFields (line 218) | @Override
method isRecursive (line 226) | private boolean isRecursive() {
method getInferredType (line 238) | @Override
method setInferredType (line 243) | @Override
method hasInferredType (line 248) | @Override
method isPrivate (line 254) | @Override
method getFirstClassModule (line 261) | @Override
method isAnonymous (line 266) | @Override
method isDeconstruction (line 272) | @Override
method getDeconstructedElements (line 277) | @Override
method canBeDisplayed (line 284) | @Override
method getPresentation (line 308) | @Nullable
method toString (line 345) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiLiteralString.java
class RPsiLiteralString (line 11) | public class RPsiLiteralString extends LeafPsiElement {
method RPsiLiteralString (line 14) | public RPsiLiteralString(@NotNull ORLangTypes types, @NotNull IElement...
method getReference (line 19) | @Override
method toString (line 24) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiLocalOpen.java
class RPsiLocalOpen (line 7) | public class RPsiLocalOpen extends ORCompositePsiElement<ORLangTypes> {
method RPsiLocalOpen (line 8) | protected RPsiLocalOpen(@NotNull ORLangTypes types, @NotNull IElementT...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiLowerName.java
class RPsiLowerName (line 11) | public class RPsiLowerName extends ORCompositePsiElement<ORLangTypes> im...
method RPsiLowerName (line 13) | protected RPsiLowerName(@NotNull ORLangTypes types, @NotNull IElementT...
method getNameIdentifier (line 19) | @Override
method getName (line 24) | @Override
method setName (line 31) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiLowerSymbol.java
class RPsiLowerSymbol (line 9) | public class RPsiLowerSymbol extends LeafPsiElement {
method RPsiLowerSymbol (line 13) | public RPsiLowerSymbol(@NotNull ORLangTypes types, @NotNull IElementTy...
method getReference (line 19) | @Override
method toString (line 24) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiMacro.java
class RPsiMacro (line 11) | public class RPsiMacro extends ORCompositePsiElement<ORLangTypes> {
method RPsiMacro (line 13) | protected RPsiMacro(@NotNull ORLangTypes types, @NotNull IElementType ...
method getName (line 17) | @Override
method getContent (line 23) | public @Nullable RPsiMacroBody getContent() {
method isRoot (line 27) | public boolean isRoot() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiMacroBody.java
class RPsiMacroBody (line 12) | public class RPsiMacroBody extends ORCompositePsiElement<ORLangTypes> im...
method RPsiMacroBody (line 13) | protected RPsiMacroBody(@NotNull ORLangTypes types, @NotNull IElementT...
method isValidHost (line 17) | @Override
method updateText (line 22) | @Override
method createLiteralTextEscaper (line 31) | @Override
method getMacroTextRange (line 41) | public @Nullable TextRange getMacroTextRange() {
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiMacroName.java
class RPsiMacroName (line 7) | public class RPsiMacroName extends ORCompositePsiElement<ORLangTypes> {
method RPsiMacroName (line 8) | protected RPsiMacroName(@NotNull ORLangTypes types, @NotNull IElementT...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiMethodCall.java
class RPsiMethodCall (line 7) | public class RPsiMethodCall extends ORCompositePsiElement<ORLangTypes> {
method RPsiMethodCall (line 8) | protected RPsiMethodCall(@NotNull ORLangTypes types, @NotNull IElement...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiMixinField.java
class RPsiMixinField (line 7) | public class RPsiMixinField extends ORCompositePsiElement<ORLangTypes> {
method RPsiMixinField (line 8) | protected RPsiMixinField(@NotNull ORLangTypes types, @NotNull IElement...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiModuleBinding.java
class RPsiModuleBinding (line 7) | public class RPsiModuleBinding extends ORCompositePsiElement<ORLangTypes> {
method RPsiModuleBinding (line 8) | public RPsiModuleBinding(@NotNull ORLangTypes types, @NotNull IElement...
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiModuleSignature.java
class RPsiModuleSignature (line 23) | public class RPsiModuleSignature extends ORCompositePsiElement<ORLangTyp...
method RPsiModuleSignature (line 26) | protected RPsiModuleSignature(@NotNull ORLangTypes types, @NotNull IEl...
method getNameIdentifier (line 30) | public @Nullable RPsiUpperSymbol getNameIdentifier() {
method getName (line 39) | @Override
method getQName (line 45) | public @NotNull String getQName() { // used when first class module si...
method getPresentation (line 57) | @Override
method asText (line 78) | @Override
method isFunction (line 83) | @Override
method getItems (line 88) | @Override
FILE: src/main/java/com/reason/lang/core/psi/impl/RPsiMultiLineInterpolator.java
class RPsiMultiLineInterpolator (line 7) | public class RPsiMultiLi
Condensed preview — 873 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,329K chars).
[
{
"path": ".github/FUNDING.md",
"chars": 66,
"preview": "github: giraud\ncustom: \"https://www.paypal.com/paypalme/rvgiraud\"\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 66,
"preview": "github: giraud\ncustom: \"https://www.paypal.com/paypalme/rvgiraud\"\n"
},
{
"path": ".github/workflows/gradle.yml",
"chars": 686,
"preview": "# This workflow will build a Java project with Gradle\n# For more information see: https://help.github.com/actions/langua"
},
{
"path": ".github/workflows/website-deploy.yml",
"chars": 1696,
"preview": "name: Deploy Website\n\non:\n pull_request:\n branches: [master]\n push:\n branches: [master]\n\njobs:\n checks:\n if:"
},
{
"path": ".gitignore",
"chars": 176,
"preview": ".gradle/\n!.idea/\n.idea/*\n.intellijPlatform/*\n!.idea/codeStyles/\n!.idea/google-java-format.xml\nout/\nbuild/\n*.iml\nidea-fle"
},
{
"path": "CHANGELOG.md",
"chars": 49535,
"preview": "# Changelog\n\n> **Tags:**\n> - :boom: [Breaking Change]\n> - :rocket: [New Feature]\n> - :bug: [Bug Fix]\n> "
},
{
"path": "CONTRIBUTING.md",
"chars": 182,
"preview": "# Contributing\n\nContributions are welcome and encouraged.\n\nPlease see the [How to Contribute](https://giraud.github.io/r"
},
{
"path": "ISSUE_TEMPLATE.md",
"chars": 35,
"preview": "plugin version: \n\n### Description\n\n"
},
{
"path": "LICENSE",
"chars": 1063,
"preview": "MIT License\n\nCopyright (c) 2017 Giraud\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof "
},
{
"path": "README.md",
"chars": 4157,
"preview": "# Reason IDEA Plugin\n\n**!!! THIS PROJECT IS IN MAINTENANCE MODE !!!**\n\n[**giraud.github.io/reasonml-idea-plugin**](https"
},
{
"path": "build.gradle",
"chars": 2805,
"preview": "import org.jetbrains.intellij.platform.gradle.TestFrameworkType\n\nplugins {\n id('java')\n id('org.jetbrains.intellij"
},
{
"path": "gradle/wrapper/gradle-wrapper.properties",
"chars": 253,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "gradle.properties",
"chars": 1261,
"preview": "org.gradle.jvmargs=-XX:MaxHeapSize=512m -Xms512m -Xmx1g\n\npluginGroup = com.reason\npluginName = reasonml-plugin-idea"
},
{
"path": "gradlew",
"chars": 8739,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "gradlew.bat",
"chars": 2966,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "settings.gradle",
"chars": 42,
"preview": "rootProject.name = 'reasonml-idea-plugin'\n"
},
{
"path": "src/main/java/com/reason/FileHelper.java",
"chars": 3585,
"preview": "package com.reason;\n\nimport com.intellij.json.*;\nimport com.intellij.openapi.fileTypes.FileType;\nimport com.intellij.ope"
},
{
"path": "src/main/java/com/reason/comp/CliType.java",
"chars": 1014,
"preview": "package com.reason.comp;\n\nimport com.reason.comp.ORCompiler.*;\nimport org.jetbrains.annotations.*;\n\npublic interface Cli"
},
{
"path": "src/main/java/com/reason/comp/CompilerOutputAnalyzer.java",
"chars": 505,
"preview": "package com.reason.comp;\n\nimport com.reason.ide.annotations.*;\nimport org.jetbrains.annotations.*;\n\nimport java.util.*;\n"
},
{
"path": "src/main/java/com/reason/comp/CompilerOutputListener.java",
"chars": 2407,
"preview": "package com.reason.comp;\n\nimport com.intellij.execution.process.*;\nimport com.intellij.openapi.application.*;\nimport com"
},
{
"path": "src/main/java/com/reason/comp/ORCompiler.java",
"chars": 1030,
"preview": "package com.reason.comp;\n\nimport com.intellij.openapi.project.*;\nimport com.intellij.openapi.vfs.*;\nimport jpsplugin.com"
},
{
"path": "src/main/java/com/reason/comp/ORCompilerConfigManager.java",
"chars": 2484,
"preview": "package com.reason.comp;\n\nimport com.intellij.openapi.components.*;\nimport com.intellij.openapi.project.*;\nimport com.in"
},
{
"path": "src/main/java/com/reason/comp/ORCompilerManager.java",
"chars": 5472,
"preview": "package com.reason.comp;\n\nimport com.intellij.openapi.components.*;\nimport com.intellij.openapi.project.*;\nimport com.in"
},
{
"path": "src/main/java/com/reason/comp/ORCompilerOutputAnalyzer.java",
"chars": 3079,
"preview": "package com.reason.comp;\n\nimport com.reason.ide.annotations.*;\nimport jpsplugin.com.reason.*;\nimport org.jetbrains.annot"
},
{
"path": "src/main/java/com/reason/comp/ORConstants.java",
"chars": 702,
"preview": "package com.reason.comp;\n\npublic class ORConstants {\n public static final String RESCRIPT_EXE_NAME = \"rescript\";\n "
},
{
"path": "src/main/java/com/reason/comp/ORPlatform.java",
"chars": 4050,
"preview": "package com.reason.comp;\n\nimport com.intellij.openapi.project.*;\nimport com.intellij.openapi.util.*;\nimport com.intellij"
},
{
"path": "src/main/java/com/reason/comp/ORResolvedCompiler.java",
"chars": 1431,
"preview": "package com.reason.comp;\n\nimport com.intellij.openapi.vfs.*;\nimport jpsplugin.com.reason.*;\nimport org.jetbrains.annotat"
},
{
"path": "src/main/java/com/reason/comp/ProcessFinishedListener.java",
"chars": 1403,
"preview": "package com.reason.comp;\n\nimport com.intellij.execution.process.*;\nimport org.jetbrains.annotations.*;\n\npublic class Pro"
},
{
"path": "src/main/java/com/reason/comp/bs/BsColoredProcessHandler.java",
"chars": 1376,
"preview": "package com.reason.comp.bs;\n\nimport com.intellij.execution.*;\nimport com.intellij.execution.configurations.*;\nimport com"
},
{
"path": "src/main/java/com/reason/comp/bs/BsCompiler.java",
"chars": 5724,
"preview": "package com.reason.comp.bs;\n\nimport com.intellij.codeInsight.daemon.*;\nimport com.intellij.execution.process.*;\nimport c"
},
{
"path": "src/main/java/com/reason/comp/bs/BsConfig.java",
"chars": 3125,
"preview": "package com.reason.comp.bs;\n\nimport org.jetbrains.annotations.*;\n\nimport java.util.*;\n\npublic class BsConfig {\n priva"
},
{
"path": "src/main/java/com/reason/comp/bs/BsConfigReader.java",
"chars": 8733,
"preview": "package com.reason.comp.bs;\n\nimport static jpsplugin.com.reason.StringUtil.toFirstUpper;\n\nimport com.google.gson.JsonArr"
},
{
"path": "src/main/java/com/reason/comp/bs/BsFormatProcess.java",
"chars": 3621,
"preview": "package com.reason.comp.bs;\n\nimport com.intellij.openapi.components.*;\nimport com.intellij.openapi.editor.ex.*;\nimport c"
},
{
"path": "src/main/java/com/reason/comp/bs/BsLineProcessor.java",
"chars": 8558,
"preview": "package com.reason.comp.bs;\n\nimport com.reason.comp.*;\nimport com.reason.ide.annotations.*;\nimport jpsplugin.com.reason."
},
{
"path": "src/main/java/com/reason/comp/bs/BsNotification.java",
"chars": 1692,
"preview": "package com.reason.comp.bs;\n\nimport com.intellij.ide.browsers.*;\nimport com.intellij.notification.*;\nimport com.intellij"
},
{
"path": "src/main/java/com/reason/comp/bs/BsPlatform.java",
"chars": 3417,
"preview": "package com.reason.comp.bs;\n\nimport com.intellij.openapi.project.*;\nimport com.intellij.openapi.vfs.*;\nimport com.intell"
},
{
"path": "src/main/java/com/reason/comp/bs/BsProcess.java",
"chars": 4011,
"preview": "package com.reason.comp.bs;\n\nimport com.intellij.codeInsight.daemon.*;\nimport com.intellij.execution.*;\nimport com.intel"
},
{
"path": "src/main/java/com/reason/comp/bs/BsResolvedCompiler.java",
"chars": 498,
"preview": "package com.reason.comp.bs;\n\nimport com.intellij.openapi.vfs.*;\nimport com.reason.comp.*;\nimport org.jetbrains.annotatio"
},
{
"path": "src/main/java/com/reason/comp/bs/Ninja.java",
"chars": 10728,
"preview": "package com.reason.comp.bs;\n\nimport org.jetbrains.annotations.*;\n\nimport java.util.*;\nimport java.util.stream.*;\n\nimport"
},
{
"path": "src/main/java/com/reason/comp/dune/DuneCompiler.java",
"chars": 4873,
"preview": "package com.reason.comp.dune;\n\nimport com.intellij.execution.process.*;\nimport com.intellij.openapi.components.*;\nimport"
},
{
"path": "src/main/java/com/reason/comp/dune/DuneOutputAnalyzer.java",
"chars": 2892,
"preview": "package com.reason.comp.dune;\n\nimport com.reason.comp.*;\nimport jpsplugin.com.reason.*;\nimport org.jetbrains.annotations"
},
{
"path": "src/main/java/com/reason/comp/dune/DunePlatform.java",
"chars": 1454,
"preview": "package com.reason.comp.dune;\n\nimport com.intellij.openapi.module.Module;\nimport com.intellij.openapi.project.*;\nimport "
},
{
"path": "src/main/java/com/reason/comp/dune/DuneProcess.java",
"chars": 3082,
"preview": "package com.reason.comp.dune;\n\nimport com.intellij.execution.*;\nimport com.intellij.execution.configurations.*;\nimport c"
},
{
"path": "src/main/java/com/reason/comp/esy/Esy.java",
"chars": 1313,
"preview": "package com.reason.comp.esy;\n\nimport com.intellij.openapi.vfs.LocalFileSystem;\nimport com.intellij.openapi.vfs.VirtualFi"
},
{
"path": "src/main/java/com/reason/comp/esy/EsyCompiler.java",
"chars": 3475,
"preview": "package com.reason.comp.esy;\n\nimport com.intellij.execution.process.*;\nimport com.intellij.execution.ui.*;\nimport com.in"
},
{
"path": "src/main/java/com/reason/comp/esy/EsyConstants.java",
"chars": 216,
"preview": "package com.reason.comp.esy;\n\npublic class EsyConstants {\n\n public static final String ESY_CONFIG_FILENAME = \"package.j"
},
{
"path": "src/main/java/com/reason/comp/esy/EsyNotification.java",
"chars": 795,
"preview": "package com.reason.comp.esy;\n\nimport static com.intellij.notification.NotificationType.ERROR;\n\nimport com.intellij.notif"
},
{
"path": "src/main/java/com/reason/comp/esy/EsyPackageJson.java",
"chars": 1837,
"preview": "package com.reason.comp.esy;\n\nimport com.google.gson.*;\nimport com.intellij.framework.detection.*;\nimport com.intellij.o"
},
{
"path": "src/main/java/com/reason/comp/esy/EsyPlatform.java",
"chars": 1672,
"preview": "package com.reason.comp.esy;\n\nimport com.intellij.openapi.project.*;\nimport com.intellij.openapi.vfs.*;\nimport com.intel"
},
{
"path": "src/main/java/com/reason/comp/esy/EsyProcess.java",
"chars": 3727,
"preview": "package com.reason.comp.esy;\n\nimport com.intellij.execution.*;\nimport com.intellij.execution.configurations.*;\nimport co"
},
{
"path": "src/main/java/com/reason/comp/ocaml/OcamlFormatProcess.java",
"chars": 3479,
"preview": "package com.reason.comp.ocaml;\n\nimport com.intellij.execution.*;\nimport com.intellij.execution.configurations.*;\nimport "
},
{
"path": "src/main/java/com/reason/comp/ocaml/OpamCommandLine.java",
"chars": 2863,
"preview": "package com.reason.comp.ocaml;\n\nimport com.intellij.execution.configurations.*;\nimport com.intellij.openapi.module.Modul"
},
{
"path": "src/main/java/com/reason/comp/ocaml/OpamEnv.java",
"chars": 1169,
"preview": "package com.reason.comp.ocaml;\n\nimport com.intellij.openapi.application.*;\nimport com.intellij.openapi.components.*;\nimp"
},
{
"path": "src/main/java/com/reason/comp/ocaml/OpamProcess.java",
"chars": 7450,
"preview": "package com.reason.comp.ocaml;\n\nimport com.intellij.execution.*;\nimport com.intellij.execution.configurations.*;\nimport "
},
{
"path": "src/main/java/com/reason/comp/rescript/ResCompiler.java",
"chars": 6160,
"preview": "package com.reason.comp.rescript;\n\nimport com.intellij.codeInsight.daemon.*;\nimport com.intellij.execution.*;\nimport com"
},
{
"path": "src/main/java/com/reason/comp/rescript/ResConfigReader.java",
"chars": 556,
"preview": "package com.reason.comp.rescript;\n\nimport com.intellij.openapi.vfs.*;\nimport com.reason.comp.bs.*;\nimport org.jetbrains."
},
{
"path": "src/main/java/com/reason/comp/rescript/ResFormatProcess.java",
"chars": 3284,
"preview": "package com.reason.comp.rescript;\n\nimport com.intellij.openapi.components.*;\nimport com.intellij.openapi.editor.ex.*;\nim"
},
{
"path": "src/main/java/com/reason/comp/rescript/ResPlatform.java",
"chars": 3476,
"preview": "package com.reason.comp.rescript;\n\nimport com.intellij.openapi.project.*;\nimport com.intellij.openapi.util.io.FileUtil;\n"
},
{
"path": "src/main/java/com/reason/comp/rescript/ResProcessHandler.java",
"chars": 940,
"preview": "package com.reason.comp.rescript;\n\nimport com.intellij.execution.*;\nimport com.intellij.execution.configurations.*;\nimpo"
},
{
"path": "src/main/java/com/reason/comp/rescript/ResResolvedCompiler.java",
"chars": 542,
"preview": "package com.reason.comp.rescript;\n\nimport com.intellij.openapi.vfs.*;\nimport com.reason.comp.*;\nimport com.reason.comp.b"
},
{
"path": "src/main/java/com/reason/comp/rescript/RescriptOutputAnalyzer.java",
"chars": 3767,
"preview": "package com.reason.comp.rescript;\n\nimport com.reason.comp.*;\nimport jpsplugin.com.reason.*;\nimport org.jetbrains.annotat"
},
{
"path": "src/main/java/com/reason/hints/InsightManager.java",
"chars": 4986,
"preview": "package com.reason.hints;\n\nimport com.intellij.openapi.application.*;\nimport com.intellij.openapi.components.*;\nimport c"
},
{
"path": "src/main/java/com/reason/hints/Rincewind.java",
"chars": 866,
"preview": "package com.reason.hints;\n\nimport org.jetbrains.annotations.*;\n\nimport java.util.regex.*;\n\npublic class Rincewind {\n "
},
{
"path": "src/main/java/com/reason/hints/RincewindDownloader.java",
"chars": 4554,
"preview": "package com.reason.hints;\n\nimport com.intellij.openapi.application.*;\nimport com.intellij.openapi.fileEditor.*;\nimport c"
},
{
"path": "src/main/java/com/reason/hints/RincewindProcess.java",
"chars": 7428,
"preview": "package com.reason.hints;\n\nimport com.intellij.notification.*;\nimport com.intellij.openapi.components.*;\nimport com.inte"
},
{
"path": "src/main/java/com/reason/ide/CompileOnSave.java",
"chars": 1725,
"preview": "package com.reason.ide;\n\nimport com.intellij.openapi.application.ex.*;\nimport com.intellij.openapi.project.*;\nimport com"
},
{
"path": "src/main/java/com/reason/ide/EditorPosition.java",
"chars": 1274,
"preview": "package com.reason.ide;\n\nimport com.intellij.openapi.editor.*;\nimport org.jetbrains.annotations.*;\n\n/**\n * Offset <-> Po"
},
{
"path": "src/main/java/com/reason/ide/IconProvider.java",
"chars": 3543,
"preview": "package com.reason.ide;\n\nimport com.intellij.json.psi.*;\nimport com.intellij.psi.*;\nimport com.reason.comp.esy.*;\nimport"
},
{
"path": "src/main/java/com/reason/ide/OREditorFactoryListener.java",
"chars": 520,
"preview": "package com.reason.ide;\n\nimport com.intellij.openapi.editor.event.*;\nimport com.intellij.openapi.project.*;\nimport org.j"
},
{
"path": "src/main/java/com/reason/ide/OREditorTracker.java",
"chars": 4432,
"preview": "package com.reason.ide;\n\nimport com.intellij.openapi.*;\nimport com.intellij.openapi.components.*;\nimport com.intellij.op"
},
{
"path": "src/main/java/com/reason/ide/ORFileDocumentListener.java",
"chars": 1230,
"preview": "package com.reason.ide;\n\nimport com.intellij.openapi.*;\nimport com.intellij.openapi.components.*;\nimport com.intellij.op"
},
{
"path": "src/main/java/com/reason/ide/ORFileUtils.java",
"chars": 6164,
"preview": "package com.reason.ide;\n\nimport com.intellij.openapi.project.*;\nimport com.intellij.openapi.vfs.*;\nimport com.intellij.p"
},
{
"path": "src/main/java/com/reason/ide/ORIcons.java",
"chars": 5031,
"preview": "package com.reason.ide;\n\nimport com.intellij.icons.*;\n\nimport javax.swing.*;\n\nimport static com.intellij.openapi.util.Ic"
},
{
"path": "src/main/java/com/reason/ide/ORPostStartupActivity.java",
"chars": 1386,
"preview": "package com.reason.ide;\n\nimport com.intellij.openapi.project.*;\nimport com.intellij.openapi.startup.*;\nimport com.reason"
},
{
"path": "src/main/java/com/reason/ide/ORVirtualFileListener.java",
"chars": 4406,
"preview": "package com.reason.ide;\n\nimport com.intellij.openapi.application.*;\nimport com.intellij.openapi.module.Module;\nimport co"
},
{
"path": "src/main/java/com/reason/ide/actions/ConvertAction.java",
"chars": 5689,
"preview": "package com.reason.ide.actions;\n\nimport com.intellij.notification.*;\nimport com.intellij.openapi.actionSystem.*;\nimport "
},
{
"path": "src/main/java/com/reason/ide/actions/TransformAction.java",
"chars": 575,
"preview": "package com.reason.ide.actions;\n\nimport static com.intellij.openapi.actionSystem.CommonDataKeys.PSI_FILE;\n\nimport com.in"
},
{
"path": "src/main/java/com/reason/ide/annotations/BsErrorAnnotator.java",
"chars": 10101,
"preview": "package com.reason.ide.annotations;\n\nimport com.intellij.execution.process.*;\nimport com.intellij.openapi.editor.*;\nimpo"
},
{
"path": "src/main/java/com/reason/ide/annotations/ErrorFileHighlighter.java",
"chars": 540,
"preview": "package com.reason.ide.annotations;\n\nimport com.intellij.openapi.fileTypes.FileType;\nimport com.intellij.openapi.util.Co"
},
{
"path": "src/main/java/com/reason/ide/annotations/ErrorsManager.java",
"chars": 2195,
"preview": "package com.reason.ide.annotations;\n\nimport com.intellij.openapi.components.*;\nimport com.intellij.util.containers.*;\nim"
},
{
"path": "src/main/java/com/reason/ide/annotations/ORErrorAnnotator.java",
"chars": 12184,
"preview": "package com.reason.ide.annotations;\n\nimport com.intellij.execution.process.*;\nimport com.intellij.lang.annotation.*;\nimp"
},
{
"path": "src/main/java/com/reason/ide/annotations/OutputInfo.java",
"chars": 651,
"preview": "package com.reason.ide.annotations;\n\nimport org.jetbrains.annotations.*;\n\npublic class OutputInfo {\n public boolean i"
},
{
"path": "src/main/java/com/reason/ide/annotations/ResErrorAnnotator.java",
"chars": 6339,
"preview": "package com.reason.ide.annotations;\n\nimport com.intellij.execution.process.*;\nimport com.intellij.openapi.editor.*;\nimpo"
},
{
"path": "src/main/java/com/reason/ide/comment/DuneCommenter.java",
"chars": 620,
"preview": "package com.reason.ide.comment;\n\nimport com.intellij.lang.Commenter;\nimport org.jetbrains.annotations.Nullable;\n\npublic "
},
{
"path": "src/main/java/com/reason/ide/comment/MlyCommenter.java",
"chars": 680,
"preview": "package com.reason.ide.comment;\n\nimport com.intellij.lang.Commenter;\nimport org.jetbrains.annotations.Nullable;\n\npublic "
},
{
"path": "src/main/java/com/reason/ide/comment/OclCommenter.java",
"chars": 8971,
"preview": "package com.reason.ide.comment;\n\nimport com.intellij.codeInsight.generation.*;\nimport com.intellij.lang.*;\nimport com.in"
},
{
"path": "src/main/java/com/reason/ide/comment/RmlCommenter.java",
"chars": 620,
"preview": "package com.reason.ide.comment;\n\nimport com.intellij.lang.Commenter;\nimport org.jetbrains.annotations.Nullable;\n\npublic "
},
{
"path": "src/main/java/com/reason/ide/console/ClearLogAction.java",
"chars": 1004,
"preview": "package com.reason.ide.console;\n\nimport com.intellij.execution.ui.*;\nimport com.intellij.icons.*;\nimport com.intellij.op"
},
{
"path": "src/main/java/com/reason/ide/console/CompilerAction.java",
"chars": 2398,
"preview": "package com.reason.ide.console;\n\nimport com.intellij.openapi.editor.*;\nimport com.intellij.openapi.fileEditor.*;\nimport "
},
{
"path": "src/main/java/com/reason/ide/console/ORConsoleFilter.java",
"chars": 564,
"preview": "package com.reason.ide.console;\n\nimport com.intellij.execution.filters.*;\nimport com.intellij.openapi.project.*;\nimport "
},
{
"path": "src/main/java/com/reason/ide/console/ORConsoleFilterProvider.java",
"chars": 1223,
"preview": "package com.reason.ide.console;\n\nimport com.intellij.execution.filters.*;\nimport com.intellij.execution.ui.*;\nimport com"
},
{
"path": "src/main/java/com/reason/ide/console/ORToolWindowFactory.java",
"chars": 918,
"preview": "package com.reason.ide.console;\n\nimport com.intellij.openapi.project.*;\nimport com.intellij.openapi.wm.*;\nimport org.jet"
},
{
"path": "src/main/java/com/reason/ide/console/ORToolWindowManager.java",
"chars": 3955,
"preview": "package com.reason.ide.console;\n\nimport com.intellij.execution.ui.*;\nimport com.intellij.openapi.application.*;\nimport c"
},
{
"path": "src/main/java/com/reason/ide/console/bs/BsConsoleView.java",
"chars": 294,
"preview": "package com.reason.ide.console.bs;\n\nimport com.intellij.execution.impl.*;\nimport com.intellij.openapi.project.*;\nimport "
},
{
"path": "src/main/java/com/reason/ide/console/bs/BsMakeAction.java",
"chars": 1240,
"preview": "package com.reason.ide.console.bs;\n\nimport com.intellij.icons.*;\nimport com.intellij.openapi.actionSystem.*;\nimport com."
},
{
"path": "src/main/java/com/reason/ide/console/bs/BsMakeWorldAction.java",
"chars": 1284,
"preview": "package com.reason.ide.console.bs;\n\nimport com.intellij.icons.*;\nimport com.intellij.openapi.actionSystem.*;\nimport com."
},
{
"path": "src/main/java/com/reason/ide/console/bs/BsToolWindowFactory.java",
"chars": 1835,
"preview": "package com.reason.ide.console.bs;\n\nimport com.intellij.openapi.actionSystem.*;\nimport com.intellij.openapi.editor.actio"
},
{
"path": "src/main/java/com/reason/ide/console/dune/DuneBuildAction.java",
"chars": 1261,
"preview": "package com.reason.ide.console.dune;\n\nimport com.intellij.icons.*;\nimport com.intellij.openapi.actionSystem.*;\nimport co"
},
{
"path": "src/main/java/com/reason/ide/console/dune/DuneCleanAction.java",
"chars": 1250,
"preview": "package com.reason.ide.console.dune;\n\nimport com.intellij.openapi.actionSystem.*;\nimport com.intellij.openapi.project.*;"
},
{
"path": "src/main/java/com/reason/ide/console/dune/DuneConsoleView.java",
"chars": 459,
"preview": "package com.reason.ide.console.dune;\n\nimport com.intellij.execution.filters.*;\nimport com.intellij.execution.impl.*;\nimp"
},
{
"path": "src/main/java/com/reason/ide/console/dune/DuneToolWindowFactory.java",
"chars": 1834,
"preview": "package com.reason.ide.console.dune;\n\nimport com.intellij.openapi.actionSystem.*;\nimport com.intellij.openapi.editor.act"
},
{
"path": "src/main/java/com/reason/ide/console/dune/OCamlConsoleFilter.java",
"chars": 2382,
"preview": "package com.reason.ide.console.dune;\n\nimport com.intellij.execution.filters.*;\nimport com.intellij.openapi.project.*;\nim"
},
{
"path": "src/main/java/com/reason/ide/console/esy/EsyBuildAction.java",
"chars": 1252,
"preview": "package com.reason.ide.console.esy;\n\nimport com.intellij.icons.*;\nimport com.intellij.openapi.actionSystem.*;\nimport com"
},
{
"path": "src/main/java/com/reason/ide/console/esy/EsyConsoleView.java",
"chars": 2252,
"preview": "package com.reason.ide.console.esy;\n\nimport com.intellij.execution.filters.*;\nimport com.intellij.execution.impl.*;\nimpo"
},
{
"path": "src/main/java/com/reason/ide/console/esy/EsyToolWindowFactory.java",
"chars": 1800,
"preview": "package com.reason.ide.console.esy;\n\nimport com.intellij.openapi.actionSystem.*;\nimport com.intellij.openapi.editor.acti"
},
{
"path": "src/main/java/com/reason/ide/console/rescript/RescriptBuildAction.java",
"chars": 1268,
"preview": "package com.reason.ide.console.rescript;\n\nimport com.intellij.icons.*;\nimport com.intellij.openapi.actionSystem.*;\nimpor"
},
{
"path": "src/main/java/com/reason/ide/console/rescript/RescriptConsoleFilter.java",
"chars": 2333,
"preview": "package com.reason.ide.console.rescript;\n\nimport com.intellij.execution.filters.*;\nimport com.intellij.openapi.project.*"
},
{
"path": "src/main/java/com/reason/ide/console/rescript/RescriptConsoleView.java",
"chars": 474,
"preview": "package com.reason.ide.console.rescript;\n\nimport com.intellij.execution.filters.*;\nimport com.intellij.execution.impl.*;"
},
{
"path": "src/main/java/com/reason/ide/console/rescript/RescriptResetAction.java",
"chars": 1256,
"preview": "package com.reason.ide.console.rescript;\n\nimport com.intellij.openapi.actionSystem.*;\nimport com.intellij.openapi.projec"
},
{
"path": "src/main/java/com/reason/ide/console/rescript/RescriptToolWindowFactory.java",
"chars": 1913,
"preview": "package com.reason.ide.console.rescript;\n\nimport com.intellij.openapi.actionSystem.*;\nimport com.intellij.openapi.editor"
},
{
"path": "src/main/java/com/reason/ide/debug/OCamlApplicationConfiguration.java",
"chars": 1652,
"preview": "package com.reason.ide.debug;\n\nimport com.intellij.execution.*;\nimport com.intellij.execution.configurations.*;\nimport c"
},
{
"path": "src/main/java/com/reason/ide/debug/OCamlApplicationRunningState.java",
"chars": 1426,
"preview": "package com.reason.ide.debug;\n\nimport com.intellij.execution.ExecutionException;\nimport com.intellij.execution.configura"
},
{
"path": "src/main/java/com/reason/ide/debug/OCamlDebugRunner.java",
"chars": 712,
"preview": "package com.reason.ide.debug;\n\nimport com.intellij.execution.configurations.*;\nimport com.intellij.execution.executors.*"
},
{
"path": "src/main/java/com/reason/ide/debug/OCamlModuleBasedConfiguration.java",
"chars": 357,
"preview": "package com.reason.ide.debug;\n\nimport com.intellij.execution.configurations.RunConfigurationModule;\nimport com.intellij."
},
{
"path": "src/main/java/com/reason/ide/debug/ORLineBreakpointProperties.java",
"chars": 461,
"preview": "package com.reason.ide.debug;\n\nimport com.intellij.xdebugger.breakpoints.XBreakpointProperties;\nimport org.jetbrains.ann"
},
{
"path": "src/main/java/com/reason/ide/debug/ORLineBreakpointType.java",
"chars": 3023,
"preview": "package com.reason.ide.debug;\n\nimport com.intellij.openapi.editor.Document;\nimport com.intellij.openapi.fileEditor.FileD"
},
{
"path": "src/main/java/com/reason/ide/debug/OclDebuggerRunnerSettings.java",
"chars": 392,
"preview": "package com.reason.ide.debug;\n\nimport com.intellij.execution.configurations.*;\nimport com.intellij.openapi.util.*;\nimpor"
},
{
"path": "src/main/java/com/reason/ide/docs/DocFormatter.java",
"chars": 3488,
"preview": "package com.reason.ide.docs;\n\nimport com.intellij.lang.documentation.*;\nimport com.intellij.openapi.fileTypes.*;\nimport "
},
{
"path": "src/main/java/com/reason/ide/docs/ORDocumentationProvider.java",
"chars": 13771,
"preview": "package com.reason.ide.docs;\n\nimport com.intellij.lang.*;\nimport com.intellij.lang.documentation.*;\nimport com.intellij."
},
{
"path": "src/main/java/com/reason/ide/editors/CmtFileEditor.java",
"chars": 5665,
"preview": "package com.reason.ide.editors;\n\nimport com.intellij.icons.*;\nimport com.intellij.openapi.actionSystem.*;\nimport com.int"
},
{
"path": "src/main/java/com/reason/ide/editors/CmtFileEditorProvider.java",
"chars": 869,
"preview": "package com.reason.ide.editors;\n\nimport com.intellij.openapi.fileEditor.*;\nimport com.intellij.openapi.project.*;\nimport"
},
{
"path": "src/main/java/com/reason/ide/editors/CmtXmlComponent.java",
"chars": 1435,
"preview": "package com.reason.ide.editors;\n\nimport com.intellij.ide.highlighter.*;\nimport com.intellij.lang.xhtml.*;\nimport com.int"
},
{
"path": "src/main/java/com/reason/ide/files/CmtFileType.java",
"chars": 949,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.intellij.openapi.vfs.*;\nimport org.je"
},
{
"path": "src/main/java/com/reason/ide/files/DuneFile.java",
"chars": 848,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.extapi.psi.*;\nimport com.intellij.openapi.fileTypes.*;\nimport com.int"
},
{
"path": "src/main/java/com/reason/ide/files/DuneFileType.java",
"chars": 1248,
"preview": "package com.reason.ide.files;\n\nimport com.google.common.collect.*;\nimport com.intellij.openapi.fileTypes.*;\nimport com.i"
},
{
"path": "src/main/java/com/reason/ide/files/FileBase.java",
"chars": 2685,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.extapi.psi.*;\nimport com.intellij.lang.*;\nimport com.intellij.pom.*;\n"
},
{
"path": "src/main/java/com/reason/ide/files/Ml4File.java",
"chars": 601,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.extapi.psi.*;\nimport com.intellij.openapi.fileTypes.FileType;\nimport "
},
{
"path": "src/main/java/com/reason/ide/files/Ml4FileType.java",
"chars": 814,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.LanguageFileType;\nimport com.reason.lang.extra.OclP"
},
{
"path": "src/main/java/com/reason/ide/files/MlgFile.java",
"chars": 625,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.extapi.psi.*;\nimport com.intellij.openapi.fileTypes.FileType;\nimport "
},
{
"path": "src/main/java/com/reason/ide/files/MlgFileType.java",
"chars": 1056,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.reason.ide.highlight.*;\nimport com.re"
},
{
"path": "src/main/java/com/reason/ide/files/MlgFileViewProvider.java",
"chars": 2089,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.lang.*;\nimport com.intellij.openapi.vfs.*;\nimport com.intellij.psi.*;"
},
{
"path": "src/main/java/com/reason/ide/files/MlgFileViewProviderFactory.java",
"chars": 497,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.lang.*;\nimport com.intellij.openapi.vfs.*;\nimport com.intellij.psi.*;"
},
{
"path": "src/main/java/com/reason/ide/files/MllFile.java",
"chars": 630,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.extapi.psi.*;\nimport com.intellij.openapi.fileTypes.FileType;\nimport "
},
{
"path": "src/main/java/com/reason/ide/files/MllFileType.java",
"chars": 981,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.reason.ide.*;\nimport com.reason.ide.h"
},
{
"path": "src/main/java/com/reason/ide/files/MllFileViewProvider.java",
"chars": 2075,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.lang.*;\nimport com.intellij.openapi.vfs.*;\nimport com.intellij.psi.*;"
},
{
"path": "src/main/java/com/reason/ide/files/MllFileViewProviderFactory.java",
"chars": 497,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.lang.*;\nimport com.intellij.openapi.vfs.*;\nimport com.intellij.psi.*;"
},
{
"path": "src/main/java/com/reason/ide/files/MlyFile.java",
"chars": 591,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.extapi.psi.*;\nimport com.intellij.openapi.fileTypes.*;\nimport com.int"
},
{
"path": "src/main/java/com/reason/ide/files/MlyFileType.java",
"chars": 990,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.reason.ide.*;\nimport com.reason.ide.h"
},
{
"path": "src/main/java/com/reason/ide/files/MlyFileViewProvider.java",
"chars": 2081,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.lang.*;\nimport com.intellij.openapi.vfs.*;\nimport com.intellij.psi.*;"
},
{
"path": "src/main/java/com/reason/ide/files/MlyFileViewProviderFactory.java",
"chars": 497,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.lang.*;\nimport com.intellij.openapi.vfs.*;\nimport com.intellij.psi.*;"
},
{
"path": "src/main/java/com/reason/ide/files/ORConfigJsonFileType.java",
"chars": 624,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.json.*;\nimport com.reason.ide.*;\nimport org.jetbrains.annotations.*;\n"
},
{
"path": "src/main/java/com/reason/ide/files/ORTargetElementEvaluator.java",
"chars": 1042,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.codeInsight.*;\nimport com.intellij.psi.*;\nimport com.reason.lang.core"
},
{
"path": "src/main/java/com/reason/ide/files/OclFile.java",
"chars": 518,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.intellij.psi.*;\nimport com.reason.lan"
},
{
"path": "src/main/java/com/reason/ide/files/OclFileType.java",
"chars": 923,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.LanguageFileType;\nimport com.reason.lang.ocaml.OclL"
},
{
"path": "src/main/java/com/reason/ide/files/OclInterfaceFile.java",
"chars": 553,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.intellij.psi.*;\nimport com.reason.lan"
},
{
"path": "src/main/java/com/reason/ide/files/OclInterfaceFileType.java",
"chars": 1006,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.reason.ide.*;\nimport com.reason.lang."
},
{
"path": "src/main/java/com/reason/ide/files/ResFile.java",
"chars": 559,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.FileType;\nimport com.intellij.psi.FileViewProvider;"
},
{
"path": "src/main/java/com/reason/ide/files/ResFileType.java",
"chars": 1801,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.intellij.openapi.fileTypes.ex.*;\nimpo"
},
{
"path": "src/main/java/com/reason/ide/files/ResInterfaceFile.java",
"chars": 586,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.FileType;\nimport com.intellij.psi.FileViewProvider;"
},
{
"path": "src/main/java/com/reason/ide/files/ResInterfaceFileType.java",
"chars": 1054,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.LanguageFileType;\nimport com.reason.lang.rescript.R"
},
{
"path": "src/main/java/com/reason/ide/files/RmlFile.java",
"chars": 533,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.FileType;\nimport com.intellij.psi.FileViewProvider;"
},
{
"path": "src/main/java/com/reason/ide/files/RmlFileType.java",
"chars": 874,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.LanguageFileType;\nimport com.reason.lang.reason.Rml"
},
{
"path": "src/main/java/com/reason/ide/files/RmlInterfaceFile.java",
"chars": 560,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.FileType;\nimport com.intellij.psi.FileViewProvider;"
},
{
"path": "src/main/java/com/reason/ide/files/RmlInterfaceFileType.java",
"chars": 1014,
"preview": "package com.reason.ide.files;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.reason.ide.*;\nimport com.reason.lang."
},
{
"path": "src/main/java/com/reason/ide/folding/DuneFoldingBuilder.java",
"chars": 2814,
"preview": "package com.reason.ide.folding;\n\nimport com.intellij.lang.*;\nimport com.intellij.lang.folding.*;\nimport com.intellij.ope"
},
{
"path": "src/main/java/com/reason/ide/folding/ORFoldingBuilder.java",
"chars": 8753,
"preview": "package com.reason.ide.folding;\n\nimport com.intellij.lang.*;\nimport com.intellij.lang.folding.*;\nimport com.intellij.ope"
},
{
"path": "src/main/java/com/reason/ide/format/FormatterProcessor.java",
"chars": 167,
"preview": "package com.reason.ide.format;\n\nimport org.jetbrains.annotations.*;\n\npublic interface FormatterProcessor {\n @Nullable"
},
{
"path": "src/main/java/com/reason/ide/format/ORPostFormatProcessor.java",
"chars": 6858,
"preview": "package com.reason.ide.format;\n\nimport com.intellij.lang.*;\nimport com.intellij.openapi.editor.*;\nimport com.intellij.op"
},
{
"path": "src/main/java/com/reason/ide/format/ReformatOnSave.java",
"chars": 4693,
"preview": "package com.reason.ide.format;\n\nimport com.intellij.openapi.application.*;\nimport com.intellij.openapi.application.ex.*;"
},
{
"path": "src/main/java/com/reason/ide/go/FileModuleDataModuleRendererFactory.java",
"chars": 679,
"preview": "package com.reason.ide.go;\n\nimport com.intellij.ide.util.*;\nimport com.intellij.util.*;\nimport org.jetbrains.annotations"
},
{
"path": "src/main/java/com/reason/ide/go/ORLineMarkerProvider.java",
"chars": 37505,
"preview": "package com.reason.ide.go;\n\nimport com.intellij.codeInsight.daemon.*;\nimport com.intellij.codeInsight.navigation.*;\nimpo"
},
{
"path": "src/main/java/com/reason/ide/go/ORModuleContributor.java",
"chars": 4565,
"preview": "package com.reason.ide.go;\n\nimport com.intellij.navigation.*;\nimport com.intellij.openapi.project.*;\nimport com.intellij"
},
{
"path": "src/main/java/com/reason/ide/handlers/ORTypedHandler.java",
"chars": 1891,
"preview": "package com.reason.ide.handlers;\n\nimport com.intellij.codeInsight.editorActions.TypedHandlerDelegate;\nimport com.intelli"
},
{
"path": "src/main/java/com/reason/ide/handlers/OclQuoteHandler.java",
"chars": 385,
"preview": "package com.reason.ide.handlers;\n\nimport com.intellij.codeInsight.editorActions.SimpleTokenSetQuoteHandler;\nimport com.i"
},
{
"path": "src/main/java/com/reason/ide/handlers/ResQuoteHandler.java",
"chars": 395,
"preview": "package com.reason.ide.handlers;\n\nimport com.intellij.codeInsight.editorActions.SimpleTokenSetQuoteHandler;\nimport com.i"
},
{
"path": "src/main/java/com/reason/ide/handlers/RmlQuoteHandler.java",
"chars": 386,
"preview": "package com.reason.ide.handlers;\n\nimport com.intellij.codeInsight.editorActions.SimpleTokenSetQuoteHandler;\nimport com.i"
},
{
"path": "src/main/java/com/reason/ide/highlight/DuneSyntaxAnnotator.java",
"chars": 1585,
"preview": "package com.reason.ide.highlight;\n\nimport static com.intellij.lang.annotation.HighlightSeverity.INFORMATION;\n\nimport com"
},
{
"path": "src/main/java/com/reason/ide/highlight/DuneSyntaxHighlighter.java",
"chars": 3599,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.lexer.*;\nimport com.intellij.openapi.editor.*;\nimport com.intelli"
},
{
"path": "src/main/java/com/reason/ide/highlight/DuneSyntaxHighlighterFactory.java",
"chars": 508,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.openapi.fileTypes.SyntaxHighlighterFactory;\nimport com.intellij.o"
},
{
"path": "src/main/java/com/reason/ide/highlight/ORSyntaxAnnotator.java",
"chars": 4812,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.lang.*;\nimport com.intellij.lang.annotation.*;\nimport com.intelli"
},
{
"path": "src/main/java/com/reason/ide/highlight/ORSyntaxHighlighter.java",
"chars": 9265,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.lexer.*;\nimport com.intellij.openapi.editor.*;\nimport com.intelli"
},
{
"path": "src/main/java/com/reason/ide/highlight/OclGrammarEditorHighlighter.java",
"chars": 1464,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.lexer.*;\nimport com.intellij.openapi.editor.colors.*;\nimport com."
},
{
"path": "src/main/java/com/reason/ide/highlight/OclGrammarSyntaxHighlighterFactory.java",
"chars": 2763,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.lexer.*;\nimport com.intellij.openapi.editor.colors.*;\nimport com."
},
{
"path": "src/main/java/com/reason/ide/highlight/OclLexEditorHighlighter.java",
"chars": 1444,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.lexer.*;\nimport com.intellij.openapi.editor.colors.*;\nimport com."
},
{
"path": "src/main/java/com/reason/ide/highlight/OclLexSyntaxHighlighterFactory.java",
"chars": 2544,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.lexer.*;\nimport com.intellij.openapi.editor.colors.*;\nimport com."
},
{
"path": "src/main/java/com/reason/ide/highlight/OclSyntaxAnnotator.java",
"chars": 211,
"preview": "package com.reason.ide.highlight;\n\nimport com.reason.lang.ocaml.OclTypes;\n\npublic class OclSyntaxAnnotator extends ORSyn"
},
{
"path": "src/main/java/com/reason/ide/highlight/OclSyntaxHighlighterFactory.java",
"chars": 4589,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.intellij.openapi.project.*;\nimpor"
},
{
"path": "src/main/java/com/reason/ide/highlight/OclYaccEditorHighlighter.java",
"chars": 1449,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.lexer.*;\nimport com.intellij.openapi.editor.colors.*;\nimport com."
},
{
"path": "src/main/java/com/reason/ide/highlight/OclYaccSyntaxHighlighterFactory.java",
"chars": 2485,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.lexer.*;\nimport com.intellij.openapi.editor.colors.*;\nimport com."
},
{
"path": "src/main/java/com/reason/ide/highlight/ResSyntaxAnnotator.java",
"chars": 214,
"preview": "package com.reason.ide.highlight;\n\nimport com.reason.lang.rescript.ResTypes;\n\npublic class ResSyntaxAnnotator extends OR"
},
{
"path": "src/main/java/com/reason/ide/highlight/ResSyntaxHighlighterFactory.java",
"chars": 4400,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.intellij.openapi.project.*;\nimpor"
},
{
"path": "src/main/java/com/reason/ide/highlight/RmlSyntaxAnnotator.java",
"chars": 205,
"preview": "package com.reason.ide.highlight;\n\nimport com.reason.lang.reason.RmlTypes;\n\npublic class RmlSyntaxAnnotator extends ORSy"
},
{
"path": "src/main/java/com/reason/ide/highlight/RmlSyntaxHighlighterFactory.java",
"chars": 4163,
"preview": "package com.reason.ide.highlight;\n\nimport com.intellij.openapi.fileTypes.*;\nimport com.intellij.openapi.project.*;\nimpor"
},
{
"path": "src/main/java/com/reason/ide/hints/CodeLens.java",
"chars": 1716,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.openapi.editor.*;\nimport com.intellij.openapi.util.*;\nimport org.jetb"
},
{
"path": "src/main/java/com/reason/ide/hints/InferredTypes.java",
"chars": 546,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.openapi.editor.*;\nimport com.reason.lang.*;\nimport com.reason.lang.co"
},
{
"path": "src/main/java/com/reason/ide/hints/InferredTypesImplementation.java",
"chars": 8055,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.openapi.editor.*;\nimport com.intellij.openapi.project.*;\nimport com.i"
},
{
"path": "src/main/java/com/reason/ide/hints/InferredTypesService.java",
"chars": 6321,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.openapi.application.*;\nimport com.intellij.openapi.editor.*;\nimport c"
},
{
"path": "src/main/java/com/reason/ide/hints/OREditorLinePainter.java",
"chars": 1229,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.openapi.editor.*;\nimport com.intellij.openapi.editor.colors.*;\nimport"
},
{
"path": "src/main/java/com/reason/ide/hints/ORParameterInfoHandler.java",
"chars": 5261,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.lang.parameterInfo.*;\nimport com.intellij.openapi.util.*;\nimport com."
},
{
"path": "src/main/java/com/reason/ide/hints/OclParameterInfoHandler.java",
"chars": 1616,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.lang.parameterInfo.*;\nimport com.intellij.psi.*;\nimport com.intellij."
},
{
"path": "src/main/java/com/reason/ide/hints/ResParameterInfoHandler.java",
"chars": 848,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.lang.parameterInfo.*;\nimport com.intellij.psi.*;\nimport com.intellij."
},
{
"path": "src/main/java/com/reason/ide/hints/RmlParameterInfoHandler.java",
"chars": 846,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.lang.parameterInfo.*;\nimport com.intellij.psi.*;\nimport com.intellij."
},
{
"path": "src/main/java/com/reason/ide/hints/RmlTypeProvider.java",
"chars": 595,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.lang.*;\nimport com.intellij.psi.*;\nimport org.jetbrains.annotations.*"
},
{
"path": "src/main/java/com/reason/ide/hints/SignatureProvider.java",
"chars": 1198,
"preview": "package com.reason.ide.hints;\n\nimport com.intellij.openapi.editor.*;\nimport com.intellij.openapi.util.*;\nimport com.reas"
},
{
"path": "src/main/java/com/reason/ide/importWizard/DuneExternalConstants.java",
"chars": 242,
"preview": "package com.reason.ide.importWizard;\n\npublic class DuneExternalConstants {\n public static final String PROJECT_BUILD_"
},
{
"path": "src/main/java/com/reason/ide/importWizard/DuneProjectImportBuilder.java",
"chars": 5528,
"preview": "package com.reason.ide.importWizard;\n\nimport com.intellij.openapi.application.*;\nimport com.intellij.openapi.module.Modu"
},
{
"path": "src/main/java/com/reason/ide/importWizard/DuneProjectImportProvider.java",
"chars": 1511,
"preview": "package com.reason.ide.importWizard;\n\nimport com.intellij.ide.util.projectWizard.*;\nimport com.intellij.openapi.vfs.*;\ni"
},
{
"path": "src/main/java/com/reason/ide/importWizard/DuneProjectOpenProcessor.java",
"chars": 957,
"preview": "package com.reason.ide.importWizard;\n\nimport com.intellij.ide.util.projectWizard.*;\nimport com.intellij.openapi.vfs.*;\ni"
},
{
"path": "src/main/java/com/reason/ide/importWizard/DuneProjectRootStep.form",
"chars": 1899,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<form xmlns=\"http://www.intellij.com/uidesigner/form/\" version=\"1\" bind-to-class="
},
{
"path": "src/main/java/com/reason/ide/importWizard/DuneProjectRootStep.java",
"chars": 2824,
"preview": "package com.reason.ide.importWizard;\n\nimport com.intellij.ide.util.projectWizard.*;\nimport com.intellij.openapi.fileChoo"
}
]
// ... and 673 more files (download for full content)
About this extraction
This page contains the full source code of the reasonml-editor/reasonml-idea-plugin GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 873 files (3.0 MB), approximately 830.1k tokens, and a symbol index with 5705 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.