diff options
50 files changed, 209 insertions, 116 deletions
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdBlock.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdBlock.java deleted file mode 100644 index d32baf86d7a..00000000000 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdBlock.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.intellij.sdk.language; - -import com.intellij.formatting.Alignment; -import com.intellij.formatting.Block; -import com.intellij.formatting.Indent; -import com.intellij.formatting.Spacing; -import com.intellij.formatting.SpacingBuilder; -import com.intellij.formatting.Wrap; -import com.intellij.formatting.WrapType; -import com.intellij.lang.ASTNode; -import com.intellij.psi.TokenType; -import com.intellij.psi.formatter.common.AbstractBlock; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.List; - -public class SdBlock extends AbstractBlock { - - private final SpacingBuilder spacingBuilder; - - protected SdBlock(@NotNull ASTNode node, @Nullable Wrap wrap, @Nullable Alignment alignment, - SpacingBuilder spacingBuilder) { - super(node, wrap, alignment); - this.spacingBuilder = spacingBuilder; - } - - @Override - protected List<Block> buildChildren() { - List<Block> blocks = new ArrayList<>(); - ASTNode child = myNode.getFirstChildNode(); - while (child != null) { - if (child.getElementType() != TokenType.WHITE_SPACE) { - Block block = new SdBlock(child, Wrap.createWrap(WrapType.NONE, false), Alignment.createAlignment(), - spacingBuilder); - blocks.add(block); - } - child = child.getTreeNext(); - } - return blocks; - } - - @Override - public Indent getIndent() { - return Indent.getNoneIndent(); - } - - @Nullable - @Override - public Spacing getSpacing(@Nullable Block child1, @NotNull Block child2) { - return spacingBuilder.getSpacing(this, child1, child2); - } - - @Override - public boolean isLeaf() { - return myNode.getFirstChildNode() == null; - } - -} diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdChooseByNameContributor.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdChooseByNameContributor.java index 45e26f401d4..cfcb06614d7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdChooseByNameContributor.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdChooseByNameContributor.java @@ -16,6 +16,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +/** + * This class is used for the extension (in plugin.xml) to enable "Go To Symbol" feature. + * @author shahariel + */ public class SdChooseByNameContributor implements ChooseByNameContributor { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettings.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettings.java index 0719ac7f426..e4c441e1877 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettings.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettings.java @@ -3,6 +3,10 @@ package org.intellij.sdk.language; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CustomCodeStyleSettings; +/** + * This class represent a code style settings, and creates an option page in settings/preferences. + * @author shahariel + */ public class SdCodeStyleSettings extends CustomCodeStyleSettings { public SdCodeStyleSettings(CodeStyleSettings settings) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettingsProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettingsProvider.java index 6ea68655c70..095426262fd 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettingsProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettingsProvider.java @@ -10,6 +10,10 @@ import com.intellij.psi.codeStyle.CustomCodeStyleSettings; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdCodeStyleSettings. + * @author shahariel + */ public class SdCodeStyleSettingsProvider extends CodeStyleSettingsProvider { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCommenter.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCommenter.java index e0fc30df22b..1a91e16b494 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCommenter.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCommenter.java @@ -4,7 +4,9 @@ import com.intellij.lang.Commenter; import org.jetbrains.annotations.Nullable; /** - * This class enables turning a line into a comment with "Code -> Comment with line comment" + * This class is used for the extension (in plugin.xml), to enable turning a line into a comment with + * "Code -> Comment with line comment". + * @author shahariel */ public class SdCommenter implements Commenter { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCompletionContributor.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCompletionContributor.java index 5dd67e5b6e6..b73e49bd430 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCompletionContributor.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCompletionContributor.java @@ -11,6 +11,10 @@ import com.intellij.util.ProcessingContext; import org.intellij.sdk.language.psi.SdTypes; import org.jetbrains.annotations.NotNull; +/** + * This class is used for the extension (in plugin.xml) to enables Auto-Complete. Partially works for now. + * @author shahariel + */ public class SdCompletionContributor extends CompletionContributor { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdFileType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdFileType.java index eeed80ad9f1..0ca8eb332a3 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdFileType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdFileType.java @@ -6,6 +6,10 @@ import org.jetbrains.annotations.Nullable; import javax.swing.Icon; +/** + * This class is used for the extension (in plugin.xml), to define SD as a file's type. + * @author shahariel + */ public class SdFileType extends LanguageFileType { public static final SdFileType INSTANCE = new SdFileType(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java deleted file mode 100644 index 35f57f65c26..00000000000 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.intellij.sdk.language; - -import com.intellij.formatting.Alignment; -import com.intellij.formatting.FormattingContext; -import com.intellij.formatting.FormattingModel; -import com.intellij.formatting.FormattingModelBuilder; -import com.intellij.formatting.FormattingModelProvider; -import com.intellij.formatting.SpacingBuilder; -import com.intellij.formatting.Wrap; -import com.intellij.formatting.WrapType; -import com.intellij.psi.codeStyle.CodeStyleSettings; -import org.intellij.sdk.language.psi.SdTypes; -import org.jetbrains.annotations.NotNull; - -public class SdFormattingModelBuilder implements FormattingModelBuilder { - - private static SpacingBuilder createSpaceBuilder(CodeStyleSettings settings) { - return new SpacingBuilder(settings, SdLanguage.INSTANCE) - .around(SdTypes.SYMBOL) - .spaceIf(settings.getCommonSettings(SdLanguage.INSTANCE.getID()).SPACE_AFTER_COLON) - .before(SdTypes.DOCUMENT_FIELD_DEFINITION) - .none(); - } - - @Override - public @NotNull FormattingModel createModel(@NotNull FormattingContext formattingContext) { - final CodeStyleSettings codeStyleSettings = formattingContext.getCodeStyleSettings(); - return FormattingModelProvider - .createFormattingModelForPsiFile(formattingContext.getContainingFile(), - new SdBlock(formattingContext.getNode(), - Wrap.createWrap(WrapType.NONE, false), - Alignment.createAlignment(), - createSpaceBuilder(codeStyleSettings)), - codeStyleSettings); - } - -} diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdIcons.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdIcons.java index 8dadda25774..31c25b2181d 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdIcons.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdIcons.java @@ -4,6 +4,10 @@ import com.intellij.openapi.util.IconLoader; import javax.swing.Icon; +/** + * This class is used for defining Icons for the IDE. + * @author shahariel + */ public class SdIcons { public static final Icon FILE = IconLoader.getIcon("icons/sd_icon.png", SdIcons.class); public static final Icon STRUCT_FIELD = IconLoader.getIcon("icons/struct_field_icon.png", SdIcons.class); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguage.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguage.java index 7dbf10b68ac..389b4915543 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguage.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguage.java @@ -2,6 +2,10 @@ package org.intellij.sdk.language; import com.intellij.lang.Language; +/** + * This class defines SD as a language. + * @author shahariel + */ public class SdLanguage extends Language { public static final SdLanguage INSTANCE = new SdLanguage(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguageCodeStyleSettingsProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguageCodeStyleSettingsProvider.java index b51ae286201..ed944dfb3d1 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguageCodeStyleSettingsProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguageCodeStyleSettingsProvider.java @@ -5,6 +5,10 @@ import com.intellij.psi.codeStyle.CodeStyleSettingsCustomizable; import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider; import org.jetbrains.annotations.NotNull; +/** + * This class is used for the extension (in plugin.xml), to make the IDE use our plugin's code for coding style. + * @author shahariel + */ public class SdLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSettingsProvider { @NotNull diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLexerAdapter.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLexerAdapter.java index 3363ce730b8..377b4f44c68 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLexerAdapter.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLexerAdapter.java @@ -3,6 +3,10 @@ package org.intellij.sdk.language; import com.intellij.lexer.FlexAdapter; import org.intellij.sdk.language.lexer.SdLexer; +/** + * This class adapts the JFlex lexer to the IntelliJ Platform Lexer API. + * @author shahariel + */ public class SdLexerAdapter extends FlexAdapter { public SdLexerAdapter() { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdRefactoringSupportProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdRefactoringSupportProvider.java index 5867729d54d..62f67c303b9 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdRefactoringSupportProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdRefactoringSupportProvider.java @@ -6,6 +6,10 @@ import org.intellij.sdk.language.psi.SdIdentifierVal; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml), to enable refactoring. + * @author shahariel + */ public class SdRefactoringSupportProvider extends RefactoringSupportProvider { @Override public boolean isMemberInplaceRenameAvailable(@NotNull PsiElement elementToRename, @Nullable PsiElement context) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdReference.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdReference.java index 891d94e15cb..2aac3f29e4a 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdReference.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdReference.java @@ -17,6 +17,10 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; +/** + * This class represent a reference to a Psi Element. + * @author shahariel + */ public class SdReference extends PsiReferenceBase<PsiElement> implements PsiPolyVariantReference { private final String elementName; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighter.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighter.java index ea2e6331c38..2f21400f14a 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighter.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighter.java @@ -14,6 +14,10 @@ import org.jetbrains.annotations.NotNull; import java.util.HashSet; +/** + * This class defines the syntax highlighting of an SD file. + * @author shahariel + */ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { private static final HashSet<IElementType> keyWordsSet = initKeyWordsSet(); @@ -52,9 +56,8 @@ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { return new SdLexerAdapter(); } - @NotNull @Override - public TextAttributesKey[] getTokenHighlights(IElementType tokenType) { + public TextAttributesKey @NotNull [] getTokenHighlights(IElementType tokenType) { if (tokenType.equals(SdTypes.IDENTIFIER_VAL)) { return IDENTIFIER_KEYS; // } else if (tokenType.equals(SdTypes.KEY)) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighterFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighterFactory.java index c4bc4491bf1..292224741bd 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighterFactory.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighterFactory.java @@ -6,6 +6,10 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; +/** + * This class is used for the extension (in plugin.xml) to the class SdSyntaxHighlighter. + * @author shahariel + */ public class SdSyntaxHighlighterFactory extends SyntaxHighlighterFactory { @NotNull diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java index 50eef106b90..0b0c75087d6 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java @@ -36,6 +36,10 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; +/** + * This is the util class for the plugin's code. + * @author shahariel + */ public class SdUtil { public static @NotNull HashMap<String, List<PsiElement>> createMacrosMap(SdFile file) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRule.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRule.java index d4d38c8c38a..4833027948b 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRule.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRule.java @@ -12,6 +12,10 @@ import org.intellij.sdk.language.psi.SdDocumentSummaryDefinition; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class represent a Document Summary that groups elements in the "Find Usages" window. + * @author shahariel + */ public class SdDocumentSummaryGroupingRule extends SingleParentUsageGroupingRule implements DumbAware { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRuleProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRuleProvider.java index ffd620c822e..9ec6b2cc220 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRuleProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRuleProvider.java @@ -6,6 +6,10 @@ import com.intellij.usages.rules.UsageGroupingRule; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdDocumentSummaryGroupingRule. + * @author shahariel + */ public class SdDocumentSummaryGroupingRuleProvider implements FileStructureGroupRuleProvider { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandler.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandler.java index f00ea940613..f3a41ae2dd7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandler.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandler.java @@ -20,6 +20,10 @@ import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.List; +/** + * This class handles creating the "Find Usages" window. + * @author shahariel + */ public class SdFindUsagesHandler extends FindUsagesHandler { protected HashMap<String, List<PsiElement>> macrosMap; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandlerFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandlerFactory.java index e5a6580c8c2..dbf6e4c32e7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandlerFactory.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandlerFactory.java @@ -7,6 +7,10 @@ import com.intellij.psi.PsiNamedElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdFindUsagesHandler. + * @author shahariel + */ public class SdFindUsagesHandlerFactory extends FindUsagesHandlerFactory { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java index eaa5b43641d..d252c8ae0d2 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java @@ -15,6 +15,10 @@ import org.intellij.sdk.language.psi.SdTypes; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml), to enable "find Usages" window using the plugin code. + * @author shahariel + */ public class SdFindUsagesProvider implements FindUsagesProvider { @Nullable @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRule.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRule.java index 379f70903df..294469f457d 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRule.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRule.java @@ -12,6 +12,10 @@ import org.intellij.sdk.language.psi.SdRankProfileDefinition; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class represent a Rank Profile that groups elements in the "Find Usages" window. + * @author shahariel + */ public class SdRankProfileGroupingRule extends SingleParentUsageGroupingRule implements DumbAware { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRuleProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRuleProvider.java index 9ed8628dc44..8413a335c7c 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRuleProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRuleProvider.java @@ -6,6 +6,10 @@ import com.intellij.usages.rules.UsageGroupingRule; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdRankProfileGroupingRule. + * @author shahariel + */ public class SdRankProfileGroupingRuleProvider implements FileStructureGroupRuleProvider { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdUsageGroup.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdUsageGroup.java index 21f54f86472..e2a2bd895cc 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdUsageGroup.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdUsageGroup.java @@ -15,6 +15,10 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; +/** + * This class represent a group of elements in the "Find Usages" window. + * @author shahariel + */ public class SdUsageGroup implements UsageGroup { private final VirtualFile myFile; private final SmartPsiElementPointer<SdDeclaration> myElementPointer; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyBrowser.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyBrowser.java index 5960f1241c3..621d939ce1a 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyBrowser.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyBrowser.java @@ -21,6 +21,10 @@ import java.util.Map; import javax.swing.JTree; +/** + * This class is a browser for the "Call Hierarchy" window. + * @author shahariel + */ public class SdCallHierarchyBrowser extends CallHierarchyBrowserBase { public SdCallHierarchyBrowser(@NotNull Project project, diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyNodeDescriptor.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyNodeDescriptor.java index 0cf612b0058..297056dc524 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyNodeDescriptor.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyNodeDescriptor.java @@ -18,6 +18,10 @@ import org.jetbrains.annotations.NotNull; import javax.swing.Icon; +/** + * This class represents a node descriptor to a node in a tree in the "Call Hierarchy" window. + * @author shahariel + */ public class SdCallHierarchyNodeDescriptor extends HierarchyNodeDescriptor { public SdCallHierarchyNodeDescriptor(final NodeDescriptor parentDescriptor, @NotNull final PsiElement element, final boolean isBase) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyProvider.java index 44bfdca134f..09f4d2a603d 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyProvider.java @@ -23,7 +23,10 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.util.PsiTreeUtil; - +/** + * This class is used for the extension (in plugin.xml), to enable "Call Hierarchy" window using the plugin code. + * @author shahariel + */ public class SdCallHierarchyProvider implements HierarchyProvider { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallTreeStructure.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallTreeStructure.java index fb612ed851a..636871fc719 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallTreeStructure.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallTreeStructure.java @@ -20,6 +20,10 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; +/** + * This abstract class represents a general tree in the "Call Hierarchy" window. + * @author shahariel + */ public abstract class SdCallTreeStructure extends HierarchyTreeStructure { protected final String myScopeType; protected final SdFile myFile; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCalleeTreeStructure.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCalleeTreeStructure.java index 977d1948b81..a8f8622a8d5 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCalleeTreeStructure.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCalleeTreeStructure.java @@ -15,6 +15,10 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; +/** + * This class represents a Callee tree in the "Call Hierarchy" window. + * @author shahariel + */ public class SdCalleeTreeStructure extends SdCallTreeStructure { public SdCalleeTreeStructure(Project project, PsiElement element, String currentScopeType) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallerTreeStructure.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallerTreeStructure.java index f6b21fc9ead..28bd39b5c00 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallerTreeStructure.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallerTreeStructure.java @@ -17,6 +17,10 @@ import java.util.HashSet; import java.util.List; import java.util.function.Consumer; +/** + * This class represents a Caller tree in the "Call Hierarchy" window. + * @author shahariel + */ public class SdCallerTreeStructure extends SdCallTreeStructure { private HashMap<String, HashSet<PsiElement>> macroTreeChildren; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdHierarchyUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdHierarchyUtil.java index b3376a85524..186327178d3 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdHierarchyUtil.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdHierarchyUtil.java @@ -15,7 +15,10 @@ import org.intellij.sdk.language.psi.SdRankProfileDefinition; import java.util.Comparator; import java.util.HashSet; - +/** + * This class is util class to the Call Hierarchy feature. + * @author shahariel + */ public class SdHierarchyUtil { private static final Comparator<NodeDescriptor<?>> NODE_DESCRIPTOR_COMPARATOR = Comparator.comparingInt(NodeDescriptor::getIndex); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java index 9d888a89cbf..aeb1a718de7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java @@ -18,6 +18,10 @@ import org.intellij.sdk.language.psi.SdFile; import org.intellij.sdk.language.psi.SdTypes; import org.jetbrains.annotations.NotNull; +/** + * This class is used for the extension (in plugin.xml), to make the parsing process use the plugin code. + * @author shahariel + */ public class SdParserDefinition implements ParserDefinition { public static final TokenSet WHITE_SPACES = TokenSet.create(TokenType.WHITE_SPACE); public static final TokenSet COMMENTS = TokenSet.create(SdTypes.COMMENT); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf index 64cb06f48db..245975f301c 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf @@ -1,3 +1,9 @@ +/** +This file is the SD grammar. +NOTE: This grammar does not enforce zero-or-one occurrences of elements (treats it like zero-to-many) +@author: shahariel + */ + { parserClass="org.intellij.sdk.language.parser.SdParser" // Name and the location of the parser which will be generated. @@ -34,8 +40,6 @@ ] } -// NOTE: This grammar does not enforce zero-or-one occurrences of elements (treats it like zero-to-many) - SdFile ::= SchemaDefinition SchemaDefinition ::= (search | schema) IdentifierVal? '{' SchemaBody '}' SchemaBody ::= SchemaBodyOptions* DocumentDefinition SchemaBodyOptions* // Does not support zero-or-one occurrences @@ -322,13 +326,13 @@ KeywordOrIdentifier ::= schema | search | document | struct | field | type | ind function | macro | inline | text | exact | word | prefix | cased | uncased | substring | suffix | gram | paged | mutable | alias | sorting | strength | locale | uca | lowercase | primary | secondary | tertiary | quaternary | identical | rank | filter | normal | none | full | dynamic | - source | to | strict | loose | //execute | + source | to | strict | loose | bolding | on | off | true | false | id | normalizing | stemming | arity | hnsw | dictionary | hash | btree | fieldset | fields | constant | annotation - // KeywordNotIdentifier ::= (not enforced in this version) | attribute | body | header | index | reference | summary +// Note- in this form, those keywords can't be use as identifier-with-dash! KeywordNotIdentifier ::= struct-field | document-summary | omit-summary-features | from-disk | rank-profile | rank-type | num-threads-per-search | termwise-limit | ignore-default-rank-features | min-hits-per-thread | num-search-partition | match-phase | max-hits | second-phase | rerank-count | min-groups | diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java index c46466ddb84..cae9dc1a52d 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java @@ -4,6 +4,10 @@ import com.intellij.navigation.NavigationItem; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiNamedElement; +/** + * This interface represents a declaration in the SD language. + * @author shahariel + */ public interface SdDeclaration extends PsiElement, PsiNamedElement, NavigationItem { String getName(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java index 05b38d981c3..76760396ad7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java @@ -1,5 +1,9 @@ package org.intellij.sdk.language.psi; +/** + * This Enum describes the different declarations' types and their names. + * @author shahariel + */ public enum SdDeclarationType { DOCUMENT("Document"), STRUCT("Struct"), diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java index ea588f965e5..ed278e9eefb 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java @@ -8,13 +8,16 @@ import org.intellij.sdk.language.psi.SdDeclaration; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - +/** + * This class is used for the extension (in plugin.xml), to enable "find Usages" window take the element description from + * here. Used only for the "target" element. + * @author shahariel + */ public class SdElementDescriptionProvider implements ElementDescriptionProvider { /** * Controls the headline of the element in the "Find Usages" window * @param psiElement the element to describe - * @param elementDescriptionLocation * @return a string with the description to write in the headline */ @Nullable diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java index 0961704443c..3a2402490cd 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java @@ -6,6 +6,10 @@ import com.intellij.psi.PsiFileFactory; import com.intellij.psi.util.PsiTreeUtil; import org.intellij.sdk.language.SdFileType; +/** + * This class is a factory of psi elements in the SD PSI tree. + * @author shahariel + */ public class SdElementFactory { private static final String GENERAL_FILE_TEXT = "search {document %s {} rank-profile %s {}}"; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java index a17ae3c1c07..a14dfa11a5c 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java @@ -5,6 +5,10 @@ import org.intellij.sdk.language.SdLanguage; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +/** + * This class represent a SdElementType. + * @author shahariel + */ public class SdElementType extends IElementType { public SdElementType(@NotNull @NonNls String debugName) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java index 0e0a8b0661c..b9b8270a595 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java @@ -7,6 +7,10 @@ import org.intellij.sdk.language.SdFileType; import org.intellij.sdk.language.SdLanguage; import org.jetbrains.annotations.NotNull; +/** + * This class represent an SD file. + * @author shahariel + */ public class SdFile extends PsiFileBase { public SdFile(@NotNull FileViewProvider viewProvider) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java index 27009e9369c..25a843e8629 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java @@ -4,6 +4,10 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import org.jetbrains.annotations.NotNull; +/** + * This interface represents an identifier in the SD language (regular identifiers and identifiers with dash). + * @author shahariel + */ public interface SdIdentifier extends PsiElement { String getName(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java index 7f4133246a0..1e019d8d20e 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java @@ -2,6 +2,11 @@ package org.intellij.sdk.language.psi; import com.intellij.psi.PsiNameIdentifierOwner; +/** + * This interface is used to wrap a Psi Element with SdNamedElement interface, which enables the element to be a + * "name owner" (like an identifier). It allows the element to take a part in references, find usages and more. + * @author shahariel + */ public interface SdNamedElement extends PsiNameIdentifierOwner { } diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java index ec587ceeb86..050793ee01a 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java @@ -5,6 +5,10 @@ import org.intellij.sdk.language.SdLanguage; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +/** + * This class represent a SdTokenType. + * @author shahariel + */ public class SdTokenType extends IElementType { public SdTokenType(@NotNull @NonNls String debugName) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java index 999fc4bd290..2d0ee78dd40 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java @@ -5,6 +5,11 @@ import com.intellij.lang.ASTNode; import org.intellij.sdk.language.psi.SdNamedElement; import org.jetbrains.annotations.NotNull; +/** + * This abstract class is used to wrap a Psi Element with SdNamedElement interface, which enables the element to be a + * "name owner" (like an identifier). It allows the element to take a part in references, find usages and more. + * @author shahariel + */ public abstract class SdNamedElementImpl extends ASTWrapperPsiElement implements SdNamedElement { public SdNamedElementImpl(@NotNull ASTNode node) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java index 0645bd3c51f..e667fd3aea9 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java @@ -42,8 +42,9 @@ import org.jetbrains.annotations.Nullable; import javax.swing.Icon; /** - * In this class there are implementations of methods from rules in the .bnf file. While generating the psi files + * In this class there are implementations of methods of rules in the .bnf file. While generating the psi files * (classes and interfaces) the implementations would be taken from here. + * @author shahariel */ public class SdPsiImplUtil { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex b/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex index 5150250665e..02c14a53358 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex @@ -1,12 +1,19 @@ package org.intellij.sdk.language.lexer; import com.intellij.lexer.FlexLexer; -import com.intellij.psi.tree.IElementType;import com.intellij.ui.components.MultiColumnList;import org.intellij.sdk.language.psi.SdTokenType; +import com.intellij.psi.tree.IElementType; +import com.intellij.ui.components.MultiColumnList; +import org.intellij.sdk.language.psi.SdTokenType; -import static com.intellij.psi.TokenType.BAD_CHARACTER; // Pre-defined bad character token. -import static com.intellij.psi.TokenType.WHITE_SPACE; // Pre-defined whitespace character token. import static org.intellij.sdk.language.psi.SdTypes.*; // That is the class which is specified as `elementTypeHolderClass` in bnf // grammar file. This will contain all other tokens which we will use. +import static com.intellij.psi.TokenType.BAD_CHARACTER; // Pre-defined bad character token. +import static com.intellij.psi.TokenType.WHITE_SPACE; // Pre-defined whitespace character token. + +/* +* This file is used for the generation of the lexer of the SD language. +* @author shahariel +*/ %% @@ -37,9 +44,16 @@ WORD = \w+ %% <YYINITIAL> { - // In here, we match keywords. So if a keyword is found, this returns a token which corresponds to that keyword. - // These tokens are generated using the 'sd.bnf' file and located in the SdTypes class. - // These tokens are Parsed uses these return values to match token squence to a parser rule. + /** + In here, we match keywords. So if a keyword is found, this returns a token which corresponds to that keyword. + These tokens are generated using the 'sd.bnf' file and located in the SdTypes class. + These tokens are Parsed uses these return values to match token squence to a parser rule. + */ + + /** + This list of keywords has to be synchronized with sd.bnf file. If you add a keyword here, you should add it to the + sd.bnf file as well (to the rule KeywordOrIdentifier / KeywordNotIdentifier). + */ "search" { return SEARCH; } "schema" { return SCHEMA; } diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java index ac7b79c8dd3..a8df43fbece 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java @@ -20,6 +20,10 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +/** + * This class is used for the presentation of an element in the "Structure View" window. + * @author shahariel + */ public class SdStructureViewElement implements StructureViewTreeElement, SortableTreeElement { private final NavigatablePsiElement myElement; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewFactory.java index 05590362fcf..ca2b964ade4 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewFactory.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewFactory.java @@ -9,6 +9,11 @@ import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdStructureViewModel. It make the IDE use our + * plugin's code when creating the "Structure View" window. + * @author shahariel + */ public class SdStructureViewFactory implements PsiStructureViewFactory { @Nullable diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewModel.java b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewModel.java index 549bd811dcf..216b2b09096 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewModel.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewModel.java @@ -7,6 +7,9 @@ import com.intellij.ide.util.treeView.smartTree.Sorter; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; +/** + * This class represents the "Structure View" window. + */ public class SdStructureViewModel extends StructureViewModelBase implements StructureViewModel.ElementInfoProvider { public SdStructureViewModel(PsiFile psiFile) { super(psiFile, new SdStructureViewElement(psiFile)); diff --git a/sd-plugin/src/main/resources/META-INF/plugin.xml b/sd-plugin/src/main/resources/META-INF/plugin.xml index 1fdc1a3857b..4ffe86ce3a2 100644 --- a/sd-plugin/src/main/resources/META-INF/plugin.xml +++ b/sd-plugin/src/main/resources/META-INF/plugin.xml @@ -33,7 +33,6 @@ <elementDescriptionProvider implementation="org.intellij.sdk.language.psi.SdElementDescriptionProvider"/> <lang.psiStructureViewFactory language="Sd" implementationClass="org.intellij.sdk.language.structure.SdStructureViewFactory"/> - <lang.formatter language="Sd" implementationClass="org.intellij.sdk.language.SdFormattingModelBuilder"/> <codeStyleSettingsProvider implementation="org.intellij.sdk.language.SdCodeStyleSettingsProvider"/> <langCodeStyleSettingsProvider implementation="org.intellij.sdk.language.SdLanguageCodeStyleSettingsProvider"/> <lang.commenter language="Sd" implementationClass="org.intellij.sdk.language.SdCommenter"/> |