From c15795c8c8c43e22f5d1729ef5447737fca564c8 Mon Sep 17 00:00:00 2001 From: Edoardo Luppi Date: Wed, 22 Mar 2023 13:49:23 +0100 Subject: [PATCH] refactor: handle structural tabbing for the breaking change symbol --- .../github/lppedd/cc/editor/CommitTabAction.kt | 3 ++- .../parser/ConventionalCommitASTFactory.kt | 2 ++ .../ConventionalCommitBreakingChangePsiElement.kt | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/com/github/lppedd/cc/language/psi/ConventionalCommitBreakingChangePsiElement.kt diff --git a/src/main/kotlin/com/github/lppedd/cc/editor/CommitTabAction.kt b/src/main/kotlin/com/github/lppedd/cc/editor/CommitTabAction.kt index cb6c5ee..cdd3bfd 100644 --- a/src/main/kotlin/com/github/lppedd/cc/editor/CommitTabAction.kt +++ b/src/main/kotlin/com/github/lppedd/cc/editor/CommitTabAction.kt @@ -56,7 +56,8 @@ internal class CommitTabAction : TabAction() { val elementAtCaret = psiFile?.findElementAt(editor.getCaretOffset()) if (elementAtCaret is ConventionalCommitScopeOpenParenPsiElement || - elementAtCaret is ConventionalCommitScopeCloseParenPsiElement) { + elementAtCaret is ConventionalCommitScopeCloseParenPsiElement || + elementAtCaret is ConventionalCommitBreakingChangePsiElement) { editor.putUserData(moveCaretKey, 1) return true } else if (elementAtCaret is ConventionalCommitSeparatorPsiElement) { diff --git a/src/main/kotlin/com/github/lppedd/cc/language/parser/ConventionalCommitASTFactory.kt b/src/main/kotlin/com/github/lppedd/cc/language/parser/ConventionalCommitASTFactory.kt index 529cb14..631fba8 100644 --- a/src/main/kotlin/com/github/lppedd/cc/language/parser/ConventionalCommitASTFactory.kt +++ b/src/main/kotlin/com/github/lppedd/cc/language/parser/ConventionalCommitASTFactory.kt @@ -1,6 +1,7 @@ package com.github.lppedd.cc.language.parser import com.github.lppedd.cc.language.lexer.ConventionalCommitTokenType.Companion.BODY +import com.github.lppedd.cc.language.lexer.ConventionalCommitTokenType.Companion.BREAKING_CHANGE import com.github.lppedd.cc.language.lexer.ConventionalCommitTokenType.Companion.FOOTER_TYPE import com.github.lppedd.cc.language.lexer.ConventionalCommitTokenType.Companion.FOOTER_TYPE_BREAKING_CHANGE import com.github.lppedd.cc.language.lexer.ConventionalCommitTokenType.Companion.FOOTER_VALUE @@ -27,6 +28,7 @@ internal class ConventionalCommitASTFactory : ASTFactory() { tokensMap[SCOPE_OPEN_PAREN] = ::ConventionalCommitScopeOpenParenPsiElement tokensMap[SCOPE] = ::ConventionalCommitScopeValuePsiElement tokensMap[SCOPE_CLOSE_PAREN] = ::ConventionalCommitScopeCloseParenPsiElement + tokensMap[BREAKING_CHANGE] = ::ConventionalCommitBreakingChangePsiElement tokensMap[SEPARATOR] = ::ConventionalCommitSeparatorPsiElement tokensMap[SUBJECT] = ::ConventionalCommitSubjectPsiElement tokensMap[BODY] = ::ConventionalCommitBodyPsiElement diff --git a/src/main/kotlin/com/github/lppedd/cc/language/psi/ConventionalCommitBreakingChangePsiElement.kt b/src/main/kotlin/com/github/lppedd/cc/language/psi/ConventionalCommitBreakingChangePsiElement.kt new file mode 100644 index 0000000..0268a7a --- /dev/null +++ b/src/main/kotlin/com/github/lppedd/cc/language/psi/ConventionalCommitBreakingChangePsiElement.kt @@ -0,0 +1,15 @@ +package com.github.lppedd.cc.language.psi + +import com.intellij.psi.impl.source.tree.LeafPsiElement +import com.intellij.psi.tree.IElementType + +/** + * @author Edoardo Luppi + */ +class ConventionalCommitBreakingChangePsiElement( + type: IElementType, + text: CharSequence, +) : LeafPsiElement(type, text) { + override fun toString(): String = + "ConventionalCommitBreakingChangePsiElement" +}