File tree Expand file tree Collapse file tree
kotlin/com/github/xepozz/php_opcodes_language/language Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package com.github.xepozz.php_opcodes_language.language
2+
3+ import com.github.xepozz.php_opcodes_language.language.psi.PHPOpBlockComment
4+ import com.intellij.lang.ASTNode
5+ import com.intellij.lang.folding.FoldingBuilderEx
6+ import com.intellij.lang.folding.FoldingDescriptor
7+ import com.intellij.openapi.editor.Document
8+ import com.intellij.openapi.project.DumbAware
9+ import com.intellij.psi.PsiElement
10+ import com.intellij.psi.util.PsiTreeUtil
11+
12+ class PHPOpCommentFoldingBuilder : FoldingBuilderEx (), DumbAware {
13+ override fun buildFoldRegions (root : PsiElement , document : Document , quick : Boolean ) =
14+ collectFoldingBlocks(root).toTypedArray()
15+
16+ private fun collectFoldingBlocks (element : PsiElement ) =
17+ PsiTreeUtil
18+ .findChildrenOfType(element, PHPOpBlockComment ::class .java)
19+ .mapNotNull {
20+ FoldingDescriptor (
21+ it.node,
22+ it.textRange
23+ )
24+ }
25+
26+ override fun getPlaceholderText (node : ASTNode ) = node.text.take(15 )
27+
28+ override fun isCollapsedByDefault (node : ASTNode ) = true
29+ }
Original file line number Diff line number Diff line change 3939
4040phpOpFile ::= item_*
4141
42- private item_ ::= block | COMMENT | EOL
42+ private item_ ::= block | block_comment | EOL
4343
44- block ::= block_name COLON (statement | live_range | exception_table | COMMENT | EOL)+
44+ block_comment ::= COMMENT (EOL COMMENT)+
45+
46+ block ::= block_name COLON (statement | live_range | exception_table | block_comment | EOL)+
4547{
4648 pin=2
4749}
@@ -197,9 +199,7 @@ line_number ::= INTEGER
197199exception_table ::= 'EXCEPTION TABLE:' exception_table_statements
198200{
199201 pin=1
200- // recoverWhile=exception_table_recover
201202}
202- //private exception_table_recover ::= !(EOL)
203203
204204exception_table_statements ::= exception_table_statement+
205205
Original file line number Diff line number Diff line change @@ -5,6 +5,8 @@ import com.intellij.psi.tree.TokenSet
55object PHPOpTokenSets {
66 val EMPTY_SET = TokenSet .EMPTY
77
8- val COMMENTS = TokenSet .create(PHPOpTypes .COMMENT )
8+ val COMMENTS = TokenSet .EMPTY
9+
10+ // val COMMENTS = TokenSet.create(PHPOpTypes.COMMENT)
911 val WHITESPACES = TokenSet .WHITE_SPACE
1012}
Original file line number Diff line number Diff line change 4646 language =" PHP Opcodes"
4747 implementationClass =" com.github.xepozz.php_opcodes_language.language.PHPOpFoldingBuilder" />
4848
49+ <lang .foldingBuilder
50+ language =" PHP Opcodes"
51+ implementationClass =" com.github.xepozz.php_opcodes_language.language.PHPOpCommentFoldingBuilder" />
52+
4953 <psi .referenceContributor
5054 language =" PHP Opcodes"
5155 implementation =" com.github.xepozz.php_opcodes_language.reference.PHPOpReferenceContributor" />
You can’t perform that action at this time.
0 commit comments