diff --git a/README.md b/README.md
index d5349c1..b12aa4b 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@ Show doc comment at the Project view Tree, line End, json, other
English Note
-- support Java Kotlin JS/TS Python Go Rust SQL
+
- support Java Kotlin JS/TS PHP Python Go Rust SQL
- tree doc from lang or README.md pom .gradle etc. by settings
- input `doc` `docc` -> /** */
- json doc from xxx.json.tsv
@@ -33,7 +33,7 @@ Show doc comment at the Project view Tree, line End, json, other
- In path, "doc" can replace any, and can use % like in SQL, effect at previous layer when folder named -1
- The lines in key.tsv will be concatenated with `|` to regexp; longer str should in front; startWith `?` to exclude
- Chang tsv file in find pop window would not reload!
-
- The tsv conf file must could be search in "Go to File"(Ctrl + Shift + N)
+
- The tsv conf file must could be search in "Go to File" (Ctrl + Shift + N)
My Project
@@ -41,6 +41,9 @@ Show doc comment at the Project view Tree, line End, json, other
Show doc comment at the Project view Tree, line End, json etc.:
Show Comment
+show line count for file / method, show children count for dir in project view (tree on the left):
+Line Num
+
Method call usage graph and maven dependency graph:
Draw Graph
@@ -53,7 +56,7 @@ Show doc comment at the Project view Tree, line End, json, other
中文说明
-- 在行末尾显示 引用对象的文档注释,支持 Java Kotlin JS/TS Python Go Rust SQL
+
- 在行末尾显示 引用对象的文档注释,支持 Java Kotlin JS/TS PHP Python Go Rust SQL
- 在结构树显示 文件注释 或 项目说明 (README.md pom.xml 等,可设置)
- 输入 doc / docc 等生成 /** */
- json 字段注释从 xxx.json.tsv 读取
@@ -82,6 +85,9 @@ Show doc comment at the Project view Tree, line End, json, other
- 在文件树、行末、JSON 显示注释:
Show Comment
+- 在文件树显示行数、文件数:
+Line Num
+
- 生成 方法调用图 和 Maven 依赖图:
Draw Graph
@@ -114,7 +120,7 @@ Show doc comment at the Project view Tree, line End, json, other
English Change Notes:
-- 2.16 Add line-end-comment support Rust
+
- 2.16 Add line-end-comment support Rust, PHP
- 2.15 Add line-end-comment java anno doc
- 2.14 Add line-end-comment java enum doc for Yes(1, "Yes")
- 2.13 ★ Cache for 2023.3
@@ -159,7 +165,7 @@ Show doc comment at the Project view Tree, line End, json, other
中文更新说明:
-- 2.16 增加 行末注释 支持 Rust
+
- 2.16 增加 行末注释 支持 Rust, PHP
- 2.15 增加 行末注释 java 注解注释
- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
- 2.13 ★ 缓存用于支持 2023.3
diff --git a/build.gradle b/build.gradle
index addbad8..bc59ef4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -29,9 +29,11 @@ intellij {
}
// see https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#intellij-extension-plugins
plugins = [
+ 'PsiViewer:201.6251.22-EAP-SNAPSHOT.3', // only for runIde when dev
'Pythonid:201.6668.121',
'org.rust.lang:0.3.131.3366-201',
'org.toml.lang:0.2.131.3366-201',
+ 'com.jetbrains.php:201.6668.153',
// 'com.jetbrains.rust:232.9921.46',
// 'Pythonid:212.5284.44',
]
@@ -91,7 +93,7 @@ patchPluginXml {
changeNotes = """
English Change Notes:
-- 2.16 Add line-end-comment support Rust
+
- 2.16 Add line-end-comment support Rust, PHP
- 2.15 Add line-end-comment java anno doc
- 2.14 Add line-end-comment java enum doc for Yes(1, "Yes")
- 2.13 ★ Cache for 2023.3
@@ -136,7 +138,7 @@ patchPluginXml {
中文更新说明:
-- 2.16 增加 行末注释 支持 Rust
+
- 2.16 增加 行末注释 支持 Rust, PHP
- 2.15 增加 行末注释 java 注解注释
- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
- 2.13 ★ 缓存用于支持 2023.3
diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java
new file mode 100644
index 0000000..66f6228
--- /dev/null
+++ b/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java
@@ -0,0 +1,71 @@
+package io.github.linwancen.plugin.show.lang;
+
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.util.PsiTreeUtil;
+import com.jetbrains.php.lang.PhpLanguage;
+import com.jetbrains.php.lang.documentation.phpdoc.psi.PhpDocComment;
+import com.jetbrains.php.lang.documentation.phpdoc.psi.PhpDocRef;
+import com.jetbrains.php.lang.documentation.phpdoc.psi.tags.PhpDocTag;
+import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
+import com.jetbrains.php.lang.psi.elements.PhpReference;
+import io.github.linwancen.plugin.show.bean.LineInfo;
+import io.github.linwancen.plugin.show.bean.SettingsInfo;
+import io.github.linwancen.plugin.show.lang.base.BaseTagLangDoc;
+import io.github.linwancen.plugin.show.lang.base.DocFilter;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public class PhpLangDoc extends BaseTagLangDoc {
+
+ static {
+ LANG_DOC_MAP.put(PhpLanguage.INSTANCE.getID(), new PhpLangDoc());
+ }
+
+ @Override
+ public @NotNull List> getRefClass() {
+ return List.of(PhpReference.class, PhpDocRef.class);
+ }
+
+ @Override
+ public boolean show(@NotNull LineInfo info) {
+ return info.appSettings.showLineEndCommentPhp;
+ }
+
+ @Override
+ protected boolean parseBaseComment(@NotNull T info) {
+ return info.appSettings.showLineEndCommentPhpBase;
+ }
+
+ @Nullable
+ @Override
+ protected PhpDocComment toDocElement(@NotNull T info, @NotNull PsiElement resolve) {
+ if (resolve instanceof PhpNamedElement) {
+ @NotNull PhpNamedElement phpNamedElement = (PhpNamedElement) resolve;
+ return phpNamedElement.getDocComment();
+ }
+ return null;
+ }
+
+ @NotNull
+ @Override
+ protected String descDoc(@NotNull T info, @NotNull PhpDocComment phpDocComment) {
+ String text = phpDocComment.getText();
+ return DocFilter.cutDoc(text, info, true);
+ }
+
+ @Override
+ protected void appendTag(@NotNull T info, @NotNull StringBuilder tagStrBuilder,
+ @NotNull PhpDocComment phpDocComment, @NotNull String name) {
+ @Nullable PhpDocTag[] tags = PsiTreeUtil.getChildrenOfType(phpDocComment, PhpDocTag.class);
+ if (tags == null) {
+ return;
+ }
+ for (@NotNull PhpDocTag tag : tags) {
+ if (("@" + name).equals(tag.getName())) {
+ tagStrBuilder.append(tag.getTagValue());
+ }
+ }
+ }
+}
diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/base/Prev.java b/src/main/java/io/github/linwancen/plugin/show/lang/base/Prev.java
index 4a5a0f9..11f0506 100644
--- a/src/main/java/io/github/linwancen/plugin/show/lang/base/Prev.java
+++ b/src/main/java/io/github/linwancen/plugin/show/lang/base/Prev.java
@@ -90,6 +90,10 @@ public class Prev {
public static @Nullable PsiElement prevCompactElement(
@SuppressWarnings("unused") @NotNull T info, @NotNull PsiElement resolve, @NotNull Document document) {
@Nullable PsiElement element = PsiTreeUtil.prevVisibleLeaf(resolve);
+ @Nullable PsiComment psiComment = PsiTreeUtil.getParentOfType(element, PsiComment.class);
+ if (psiComment != null) {
+ return psiComment;
+ }
if (element == null) {
return null;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/base/ResolveDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/base/ResolveDoc.java
index 4318928..0a6b592 100644
--- a/src/main/java/io/github/linwancen/plugin/show/lang/base/ResolveDoc.java
+++ b/src/main/java/io/github/linwancen/plugin/show/lang/base/ResolveDoc.java
@@ -67,7 +67,7 @@ public class ResolveDoc {
if (document == null) {
return null;
}
- @Nullable PsiElement psiElement = PsiTreeUtil.getChildOfType(resolve, PsiComment.class);
+ @Nullable PsiElement psiElement = PsiTreeUtil.findChildOfType(resolve, PsiComment.class);
if (psiElement == null) {
psiElement = Prev.prevCompactElement(info, resolve, document);
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
index de1c0e5..bfae6ed 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
@@ -27,6 +27,8 @@ public class AppSettingsComponent {
private final JBCheckBox showLineEndCommentKotlinBase = new JBCheckBox("// Kotlin ");
private final JBCheckBox showLineEndCommentJs = new JBCheckBox(" js ");
private final JBCheckBox showLineEndCommentJsBase = new JBCheckBox("// js ");
+ private final JBCheckBox showLineEndCommentPhp = new JBCheckBox(" php ");
+ private final JBCheckBox showLineEndCommentPhpBase = new JBCheckBox("// php ");
private final JBCheckBox showLineEndCommentPy = new JBCheckBox(" Python ");
private final JBCheckBox showLineEndCommentPyBase = new JBCheckBox("# Python ");
private final JBCheckBox showLineEndCommentGo = new JBCheckBox(" Go ");
@@ -66,6 +68,7 @@ public class AppSettingsComponent {
showLineEndCommentJava,
showLineEndCommentKotlin,
showLineEndCommentJs,
+ showLineEndCommentPhp,
showLineEndCommentPy,
showLineEndCommentGo,
showLineEndCommentSql,
@@ -75,6 +78,7 @@ public class AppSettingsComponent {
showLineEndCommentJavaBase,
showLineEndCommentKotlinBase,
showLineEndCommentJsBase,
+ showLineEndCommentPhpBase,
showLineEndCommentPyBase,
showLineEndCommentRustBase
), 1)
@@ -184,6 +188,14 @@ public class AppSettingsComponent {
showLineEndCommentJs.setSelected(newStatus);
}
+ public boolean getShowLineEndCommentPhp() {
+ return showLineEndCommentPhp.isSelected();
+ }
+
+ public void setShowLineEndCommentPhp(boolean newStatus) {
+ showLineEndCommentPhp.setSelected(newStatus);
+ }
+
public boolean getShowLineEndCommentPy() {
return showLineEndCommentPy.isSelected();
}
@@ -224,6 +236,14 @@ public class AppSettingsComponent {
showLineEndCommentJsBase.setSelected(newStatus);
}
+ public boolean getShowLineEndCommentPhpBase() {
+ return showLineEndCommentPhpBase.isSelected();
+ }
+
+ public void setShowLineEndCommentPhpBase(boolean newStatus) {
+ showLineEndCommentPhpBase.setSelected(newStatus);
+ }
+
public boolean getShowLineEndCommentPyBase() {
return showLineEndCommentPyBase.isSelected();
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
index d9b592c..897c0dd 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
@@ -44,11 +44,13 @@ public class AppSettingsConfigurable implements Configurable {
modified |= mySettingsComponent.getShowLineEndCommentJava() != settings.showLineEndCommentJava;
modified |= mySettingsComponent.getShowLineEndCommentKotlin() != settings.showLineEndCommentKotlin;
modified |= mySettingsComponent.getShowLineEndCommentJs() != settings.showLineEndCommentJs;
+ modified |= mySettingsComponent.getShowLineEndCommentPhp() != settings.showLineEndCommentPhp;
modified |= mySettingsComponent.getShowLineEndCommentPy() != settings.showLineEndCommentPy;
modified |= mySettingsComponent.getShowLineEndCommentGo() != settings.showLineEndCommentGo;
modified |= mySettingsComponent.getShowLineEndCommentJavaBase() != settings.showLineEndCommentJavaBase;
modified |= mySettingsComponent.getShowLineEndCommentKotlinBase() != settings.showLineEndCommentKotlinBase;
modified |= mySettingsComponent.getShowLineEndCommentJsBase() != settings.showLineEndCommentJsBase;
+ modified |= mySettingsComponent.getShowLineEndCommentPhpBase() != settings.showLineEndCommentPhpBase;
modified |= mySettingsComponent.getShowLineEndCommentPyBase() != settings.showLineEndCommentPyBase;
modified |= mySettingsComponent.getShowLineEndCommentGoBase() != settings.showLineEndCommentGoBase;
modified |= mySettingsComponent.getShowLineEndCommentRustBase() != settings.showLineEndCommentRustBase;
@@ -84,11 +86,13 @@ public class AppSettingsConfigurable implements Configurable {
settings.showLineEndCommentJava = mySettingsComponent.getShowLineEndCommentJava();
settings.showLineEndCommentKotlin = mySettingsComponent.getShowLineEndCommentKotlin();
settings.showLineEndCommentJs = mySettingsComponent.getShowLineEndCommentJs();
+ settings.showLineEndCommentPhp = mySettingsComponent.getShowLineEndCommentPhp();
settings.showLineEndCommentPy = mySettingsComponent.getShowLineEndCommentPy();
settings.showLineEndCommentGo = mySettingsComponent.getShowLineEndCommentGo();
settings.showLineEndCommentJavaBase = mySettingsComponent.getShowLineEndCommentJavaBase();
settings.showLineEndCommentKotlinBase = mySettingsComponent.getShowLineEndCommentKotlinBase();
settings.showLineEndCommentJsBase = mySettingsComponent.getShowLineEndCommentJsBase();
+ settings.showLineEndCommentPhpBase = mySettingsComponent.getShowLineEndCommentPhpBase();
settings.showLineEndCommentPyBase = mySettingsComponent.getShowLineEndCommentPyBase();
settings.showLineEndCommentGoBase = mySettingsComponent.getShowLineEndCommentGoBase();
settings.showLineEndCommentRustBase = mySettingsComponent.getShowLineEndCommentRustBase();
@@ -127,11 +131,13 @@ public class AppSettingsConfigurable implements Configurable {
mySettingsComponent.setShowLineEndCommentJava(settings.showLineEndCommentJava);
mySettingsComponent.setShowLineEndCommentKotlin(settings.showLineEndCommentKotlin);
mySettingsComponent.setShowLineEndCommentJs(settings.showLineEndCommentJs);
+ mySettingsComponent.setShowLineEndCommentPhp(settings.showLineEndCommentPhp);
mySettingsComponent.setShowLineEndCommentPy(settings.showLineEndCommentPy);
mySettingsComponent.setShowLineEndCommentGo(settings.showLineEndCommentGo);
mySettingsComponent.setShowLineEndCommentJavaBase(settings.showLineEndCommentJavaBase);
mySettingsComponent.setShowLineEndCommentKotlinBase(settings.showLineEndCommentKotlinBase);
mySettingsComponent.setShowLineEndCommentJsBase(settings.showLineEndCommentJsBase);
+ mySettingsComponent.setShowLineEndCommentPhpBase(settings.showLineEndCommentPhpBase);
mySettingsComponent.setShowLineEndCommentPyBase(settings.showLineEndCommentPyBase);
mySettingsComponent.setShowLineEndCommentGoBase(settings.showLineEndCommentGoBase);
mySettingsComponent.setShowLineEndCommentRustBase(settings.showLineEndCommentRustBase);
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
index ae12bd2..0d0c5ab 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
@@ -35,6 +35,8 @@ public class AppSettingsState implements PersistentStateComponent
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index ad49a61..ce337e9 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -11,7 +11,7 @@ Show doc comment at the Project view Tree, line End, json, other
English Note
-- support Java Kotlin JS/TS Python Go Rust SQL
+
- support Java Kotlin JS/TS PHP Python Go Rust SQL
- tree doc from lang or README.md pom .gradle etc. by settings
- input `doc` `docc` -> /** */
- json doc from xxx.json.tsv
@@ -31,7 +31,7 @@ Show doc comment at the Project view Tree, line End, json, other
- In path, "doc" can replace any, and can use % like in SQL, effect at previous layer when folder named -1
- The lines in key.tsv will be concatenated with `|` to regexp; longer str should in front; startWith `?` to exclude
- Chang tsv file in find pop window would not reload!
-
- The tsv conf file must could be search in "Go to File"(Ctrl + Shift + N)
+
- The tsv conf file must could be search in "Go to File" (Ctrl + Shift + N)
My Project
@@ -39,6 +39,9 @@ Show doc comment at the Project view Tree, line End, json, other
- Show doc comment at the Project view Tree, line End, json etc.:
Show Comment
+- show line count for file / method, show children count for dir in project view (tree on left):
+Line Num
+
- Method call usage graph and maven dependency graph:
Draw Graph
@@ -51,7 +54,7 @@ Show doc comment at the Project view Tree, line End, json, other
中文说明
-- 在行末尾显示 引用对象的文档注释,支持 Java Kotlin JS/TS Python Go Rust SQL
+
- 在行末尾显示 引用对象的文档注释,支持 Java Kotlin JS/TS PHP Python Go Rust SQL
- 在结构树显示 文件注释 或 项目说明 (README.md pom.xml 等,可设置)
- 输入 doc / docc 等生成 /** */
- json 字段注释从 xxx.json.tsv 读取
@@ -80,6 +83,9 @@ Show doc comment at the Project view Tree, line End, json, other
- 在文件树、行末、JSON 显示注释:
Show Comment
+- 在文件树显示行数、文件数:
+Line Num
+
- 生成 方法调用图 和 Maven 依赖图:
Draw Graph
@@ -118,8 +124,9 @@ Show doc comment at the Project view Tree, line End, json, other
com.intellij.modules.python
org.jetbrains.plugins.go
- org.rust.lang
+ org.rust.lang
com.jetbrains.rust
+ com.jetbrains.php
diff --git a/src/main/resources/META-INF/rust_old.xml b/src/main/resources/META-INF/rust_old.xml
new file mode 100644
index 0000000..91c7697
--- /dev/null
+++ b/src/main/resources/META-INF/rust_old.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/php.php b/src/test/java/io/github/linwancen/plugin/show/demo/php.php
new file mode 100644
index 0000000..a34f49b
--- /dev/null
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/php.php
@@ -0,0 +1,15 @@
+