Compare commits

...

10 Commits

Author SHA1 Message Date
chylex c9b3a33797
Release 6.26-chylex-2 2023-10-04 07:23:04 +02:00
chylex 31a40b63cb
Update CLion and Rider dependencies 2023-10-04 07:23:04 +02:00
chylex aa7b057910
Release 6.26-chylex-1 2023-10-04 06:57:46 +02:00
chylex dd63c37354
Remove post-update notification 2023-10-04 06:57:45 +02:00
chylex 4cab3548c3
Fix missing @Test annotations 2023-10-04 06:57:45 +02:00
chylex 882c5d0eae
Change plugin ID 2023-10-04 06:57:45 +02:00
chylex a4a83d9ab3
Update IDEA to 2023.2.2 2023-10-04 06:57:45 +02:00
chylex 91eb77cd2c
Update Gradle to 8.3 2023-10-04 06:29:51 +02:00
chylex db76359837
Update .gitignore 2023-10-04 06:29:51 +02:00
chylex 983350f63c
Remove unnecessary files for the fork 2023-10-04 05:39:35 +02:00
51 changed files with 409 additions and 1004 deletions

View File

@ -1,57 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug?
assignees: ''
---
Your issue may already be reported!
Please search on the [issues](https://github.com/izhangzhihao/intellij-rainbow-brackets/issues) and the [document](https://github.com/izhangzhihao/intellij-rainbow-brackets/blob/2020.3/README.md) before creating one.
## Please check
- [ ] I already support this project.
- [ ] If you are submitting a feature request, please do consider donating us on [Open Collective](https://opencollective.com/intellij-rainbow-brackets) Or by AliPay/WeChatPay.
- [ ] This issue/feature request is not reported before.
## Your programming languages
## Expected Behavior
* If you're describing a bug, tell us what should happen
* If you're suggesting a change/improvement, tell us how it should work
## Current Behavior
* If describing a bug, tell us what happens instead of the expected behavior
* If suggesting a change/improvement, explain the difference from current behavior
## Possible Solution
Not obligatory, but suggest a fix/reason for the bug, or ideas how to implement the addition or change.
Or what have you tried to resolve this issue.
## Code snippet for reproduce (for bugs)
Please provide code snippet for reproduce bugs.
## Your Environment
* Plugin version:
* IDE & Operating System version, comment your env as below(go to "About IntelliJ IDEA" -> click the "copy" icon):
* NOTE: If you are going to report a bug but WITHOUT your env information, your issue might be closed directly.
```
IntelliJ IDEA 2021.2 (Ultimate Edition)
Build #IU-212.4746.92, built on July 27, 2021
Licensed to IntelliJ Rainbow Brackets / Zhang Zhihao
Subscription is active until February 3, 2022.
For non-commercial open source development only.
Runtime version: 11.0.11+9-b1504.13 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 11.4
GC: G1 Young Generation, G1 Old Generation
Memory: 4096M
Cores: 16
Registry: ide.tooltip.initialDelay=900, ide.balloon.shadow.size=0, scala.erase.compiler.process.jdk.once=false
Non-Bundled Plugins: com.intellij.properties.bundle.editor (212.4746.57), com.markskelton.one-dark-theme (5.3.0), lermitage.intellij.extra.icons (1.59.0.203), org.nik.presentation-assistant (1.0.9), kotest-plugin-intellij (1.1.36-IC-2021.1), Pythonid (212.4746.96), org.intellij.scala (2021.2.15), izhangzhihao.rainbow.brackets (6.19), com.intellij.bigdatatools (212.4037.55)
Kotlin: 212-1.5.10-release-IJ4746.92
```

View File

@ -1,24 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: feature request
assignees: ''
---
**Please [support us](https://github.com/izhangzhihao/intellij-rainbow-brackets#support-us) before creating a feature request, thanks for your support 😁**
## Please check
- [ ] I already support this project.
- [ ] If you are submitting a feature request, please do consider donating us on [Open Collective](https://opencollective.com/intellij-rainbow-brackets) Or by AliPay/WeChatPay.
- [ ] This issue/feature request is not reported before.
## Your programming languages
## Expected Behavior
* tell us how it will works
## Current Behavior
* explain the difference from current behavior

View File

@ -1,13 +0,0 @@
collective: intellij-rainbow-brackets
tiers:
- tiers: "*"
labels: ["backer"]
message: "Hey <author> , thanks for supporting us on Open Collective :heart::heart::heart: We'll give a special attention to this issue!"
invitation: |
Hey <author> :wave:,
Thank you for opening an issue/feature request. We will get back to you as soon as we can.
Also, check out our <link> and consider backing us - every little helps!
PS.: We offer `priority` support for all backers. Don't forget to
add `priority` label when you start backing us :smile:

View File

@ -1,75 +0,0 @@
name: Build
on:
push:
branches:
- '2020.3'
pull_request:
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
# Setup Java 11 environment for the next steps
- name: Setup Java
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: 11
# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v2.3.4
# Cache Gradle dependencies
- name: Setup Gradle Dependencies Cache
uses: actions/cache@v2.1.6
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
# Cache Gradle Wrapper
- name: Setup Gradle Wrapper Cache
uses: actions/cache@v2.1.6
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
# Run detekt, ktlint and tests
- name: Run Linters and Test
run: ./gradlew check
# Run verifyPlugin Gradle task
- name: Verify Plugin
run: ./gradlew verifyPlugin
# Set environment variables
- name: Export Properties
id: properties
shell: bash
run: |
PROPERTIES="$(./gradlew properties --console=plain -q)"
IDE_VERSIONS="$(echo "$PROPERTIES" | grep "^pluginVerifierIdeVersions:" | base64)"
VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
NAME="intellij-rainbow-brackets"
ARTIFACT="${NAME}-${VERSION}.zip"
echo "::set-output name=ideVersions::$IDE_VERSIONS"
echo "::set-output name=pluginVerifierHomeDir::~/.pluginVerifier"
echo "::set-output name=artifact::$ARTIFACT"
# Cache Plugin Verifier IDEs
- name: Setup Plugin Verifier IDEs Cache
uses: actions/cache@v2.1.6
with:
path: ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides
key: ${{ runner.os }}-plugin-verifier-${{ steps.properties.outputs.ideVersions }}
# Run IntelliJ Plugin Verifier action using GitHub Action
- name: Verify Plugin
run: ./gradlew runPluginVerifier -Pplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }}
- name: Upload artifact
uses: actions/upload-artifact@v2.2.3
with:
name: UnZipMe
path: ./build/distributions/${{ steps.properties.outputs.artifact }}

View File

@ -1,27 +0,0 @@
name: "Label and close wontfix issues"
on:
issues:
types: [opened]
jobs:
Label:
runs-on: ubuntu-latest
steps:
- uses: Naturalclar/issue-action@v2.0.2
with:
title-or-body: "both"
parameters: '[ {"keywords": ["RainbowHighlightVisitor.kt:35", "RainbowHighlightVisitor.kt:68", "RainbowHighlightVisitor.analyze"], "labels": ["invalid"]} ]'
github-token: "${{ secrets.GITHUB_TOKEN }}"
Close:
needs: [Label]
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3.0.14
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 0
days-before-close: 0
stale-issue-message: "This auto generated issue has been automatically marked as wontfix because nothing it's wrong here. If you think there are something really wrong, please reply this issue. Thanks for your cooperation."
stale-issue-label: "wontfix"
only-labels: "invalid"

View File

@ -1,46 +0,0 @@
# GitHub Actions Workflow created for handling the release process based on the draft release prepared
# with the Build workflow. Running the publishPlugin task requires the PUBLISH_TOKEN secret provided.
name: Release
on:
release:
types: [prereleased, released]
jobs:
# Prepare and publish the plugin to the Marketplace repository
release:
name: Publish Plugin
runs-on: ubuntu-latest
steps:
# Setup Java 11 environment for the next steps
- name: Setup Java
uses: actions/setup-java@v2
with:
distribution: "adopt"
java-version: 11
# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v2.3.4
with:
ref: ${{ github.event.release.tag_name }}
# Cache Gradle dependencies
- name: Setup Gradle Dependencies Cache
uses: actions/cache@v2.1.6
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
# Cache Gradle Wrapper
- name: Setup Gradle Wrapper Cache
uses: actions/cache@v2.1.6
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
# Publish the plugin to the Marketplace
- name: Publish Plugin
env:
token: ${{ secrets.PUBLISH_TOKEN }}
run: ./gradlew publishPlugin

View File

@ -1,19 +0,0 @@
name: 'Stale handler'
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@main
id: stale
with:
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days'
days-before-stale: 30
days-before-close: 5
only-labels: 'PR welcome'
- name: Print outputs
run: echo ${{ join(steps.stale.outputs.*, ',') }}

15
.gitignore vendored
View File

@ -1,10 +1,7 @@
/.idea/*
!/.idea/icon.png
!/.idea/icon_dark.png
!/.idea/vcs.xml
.sandbox/
.gradle/
build/
*.iml
.DS_Store
out
!/.idea/icon*.png
!/.idea/runConfigurations
/.gradle/
/build/
/libs/

5
.gitpod.Dockerfile vendored
View File

@ -1,5 +0,0 @@
FROM gitpod/workspace-full
USER gitpod
RUN brew install kotlin

View File

@ -1,4 +0,0 @@
image:
file: .gitpod.Dockerfile
tasks:
- init: gradle compileKotlin

View File

@ -1 +0,0 @@
11

View File

@ -1,15 +0,0 @@
pull_request_rules:
- name: Automatic merge on approval
conditions:
- "#approved-reviews-by>=1"
- status-success=Test
actions:
merge:
method: merge
- name: automatically merge dependabot's PRs
conditions:
- author~=^dependabot(|-preview)\[bot\]$
- status-success=Test
actions:
merge:
method: merge

View File

@ -1,103 +1,110 @@
import org.jetbrains.intellij.tasks.RunPluginVerifierTask.FailureLevel.*
@file:Suppress("SpellCheckingInspection")
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
val name: String by project
val ideaVersion: String by project
val kotlinVersion: String by project
val javaVersion: String by project
val kotlinLanguageVersion: String by project
val kotlinTargetVersion: String by project
val pluginVerifierIdeVersions: String by project
val publishChannels: String by project
plugins {
id("org.jetbrains.intellij") version "1.9.0"
id("com.adarshr.test-logger") version "3.2.0"
id("org.jetbrains.kotlin.jvm") version "1.7.20"
id("idea")
kotlin("jvm") version "1.8.0"
id("org.jetbrains.intellij") version "1.15.0"
}
group = "com.chylex.intellij.rainbowbrackets"
version = "6.26-chylex-2"
val ideVersion = "2023.2.2"
idea {
module {
excludeDirs.add(file("gradle"))
excludeDirs.add(file("libs"))
}
}
repositories {
mavenLocal()
mavenCentral()
maven(url = "https://maven-central.storage-download.googleapis.com/repos/central/data/")
maven(url = "https://maven.aliyun.com/nexus/content/groups/public/")
maven(url = "https://www.jetbrains.com/intellij-repository/releases")
maven(url = "https://www.jetbrains.com/intellij-repository/snapshots")
mavenCentral()
maven(url = "https://www.jetbrains.com/intellij-repository/releases")
maven(url = "https://www.jetbrains.com/intellij-repository/snapshots")
}
val clion: Configuration by configurations.creating
val rider: Configuration by configurations.creating
dependencies {
clion("com.jetbrains.intellij.clion:clion:$ideVersion")
rider("com.jetbrains.intellij.rider:riderRD:$ideVersion")
compileOnly(fileTree("libs"))
testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
testImplementation("io.kotest:kotest-assertions-core:5.5.5")
}
kotlin {
jvmToolchain(17)
}
intellij {
pluginName.set(name)
version.set(ideaVersion)
//localPath = '/Users/izhangzhihao/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/201.6668.121/IntelliJ IDEA 2020.1 EAP.app/Contents'
//localPath = '/Users/izhangzhihao/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/201.6668.126/CLion.app/Contents'
updateSinceUntilBuild.set(false)
plugins.set(
listOf(
"java",
"java-i18n",
"JavaScriptLanguage",
"DatabaseTools",
"CSS",
"platform-images",
"Groovy",
"properties",
"yaml",
"org.jetbrains.kotlin:203-$kotlinVersion-release-IJ5981.133-1",
"org.intellij.scala:2020.3.21",
"Dart:203.5981.155",
"org.jetbrains.plugins.ruby:203.5981.155",
"com.jetbrains.php:203.5981.155",
"com.jetbrains.sh:203.5981.37",
"com.jetbrains.plugins.jade:203.5981.155",
"org.jetbrains.plugins.go-template:203.5981.155",
"Pythonid:203.5981.155",
)
)
type.set("IU")
version.set(ideVersion)
updateSinceUntilBuild.set(false)
plugins.set(
listOf(
// Built-in
"Groovy",
"JavaScript",
"com.intellij.css",
"com.intellij.database",
"com.intellij.java",
"org.intellij.plugins.markdown",
"org.jetbrains.kotlin",
"org.jetbrains.plugins.yaml",
// Downloaded
"Dart:232.8660.129", // https://plugins.jetbrains.com/plugin/6351-dart/versions/stable
"Pythonid:232.9921.47", // https://plugins.jetbrains.com/plugin/631-python/versions
"com.jetbrains.php:232.9921.55", // https://plugins.jetbrains.com/plugin/6610-php/versions
"com.jetbrains.sh:232.8660.88", // https://plugins.jetbrains.com/plugin/13122-shell-script/versions
"org.intellij.scala:2023.2.23", // https://plugins.jetbrains.com/plugin/1347-scala/versions
"org.jetbrains.plugins.go-template:232.9921.89", // https://plugins.jetbrains.com/plugin/10581-go-template/versions
"org.jetbrains.plugins.ruby:232.9921.47", // https://plugins.jetbrains.com/plugin/1293-ruby/versions
)
)
}
tasks {
runIde {
systemProperties["idea.auto.reload.plugins"] = false
jvmArgs = listOf(
"-Xms512m",
"-Xmx2048m",
)
}
publishPlugin {
token.set(System.getenv("token"))
channels.set(publishChannels.split(",").map { it.trim() }.toList())
}
runPluginVerifier {
ideVersions.set(pluginVerifierIdeVersions.split(",").map { it.trim() }.toList())
failureLevel.set(listOf(COMPATIBILITY_PROBLEMS))
}
testlogger {
theme = com.adarshr.gradle.testlogger.theme.ThemeType.MOCHA
}
tasks.patchPluginXml {
sinceBuild.set("232")
}
dependencies {
//implementation("org.eclipse.mylyn.github:org.eclipse.egit.github.core:5.11.0.202103091610-r") {
// exclude("gson")
//}
compileOnly(fileTree("libs"))
testImplementation("io.kotest:kotest-assertions-core:5.5.0")
}
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
tasks.test {
useJUnitPlatform()
}
tasks.withType<KotlinCompile> {
kotlinOptions.languageVersion = kotlinLanguageVersion
kotlinOptions.apiVersion = kotlinTargetVersion
kotlinOptions.jvmTarget = javaVersion
kotlinOptions.freeCompilerArgs = listOf("-Xskip-runtime-version-check", "-Xjsr305=strict")
kotlinOptions.freeCompilerArgs = listOf(
"-Xjvm-default=all"
)
}
fun createDownloadIdeTask(name: String, dependency: Configuration, configuration: CopySpec.() -> Unit): Sync {
return tasks.create<Sync>(name) {
group = "ides"
outputs.upToDateWhen { false }
from(dependency.map(::zipTree), configuration)
into(file("libs/${dependency.name}"))
}
}
val downloadIdeClion = createDownloadIdeTask("downloadIdeClion", clion) {
include("plugins/cidr-base-plugin/**")
}
val downloadIdeRider = createDownloadIdeTask("downloadIdeRider", rider) {
include("lib/app.jar")
}
tasks.create<Sync>("downloadExtraIdes") {
group = "ides"
dependsOn(downloadIdeClion)
dependsOn(downloadIdeRider)
}

View File

@ -1,12 +1,2 @@
group="com.github.izhangzhihao"
name="Rainbow Brackets"
org.gradle.parallel=true
ideaVersion=IU-203.5981.155
javaVersion=11
kotlinVersion=1.4.21
kotlinLanguageVersion=1.4
kotlinTargetVersion=1.4
version=6.26
publishChannels=Stable
kotlin.stdlib.default.dependency=false
pluginVerifierIdeVersions=WS-2020.3, IIC-2021.1, IIU-2021.2

Binary file not shown.

View File

@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

294
gradlew vendored
View File

@ -1,7 +1,7 @@
#!/usr/bin/env sh
#!/bin/sh
#
# Copyright 2015 the original author or authors.
# 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.
@ -17,67 +17,99 @@
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# 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/subprojects/plugins/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
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
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
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# 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"'
# 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 "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
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
;;
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
@ -87,9 +119,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
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"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@ -98,88 +130,120 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
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" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
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=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=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# 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.
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# 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, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
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" "$@"

15
gradlew.bat vendored
View File

@ -14,7 +14,7 @@
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@ -25,7 +25,8 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
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!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
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

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,8 @@
rootProject.name = "RainbowBrackets"
pluginManagement {
repositories {
maven(url = "https://oss.sonatype.org/content/repositories/snapshots/")
gradlePluginPortal()
}
}
repositories {
maven(url = "https://oss.sonatype.org/content/repositories/snapshots/")
gradlePluginPortal()
}
}

View File

@ -3,12 +3,17 @@ package com.github.izhangzhihao.rainbow.brackets
import com.github.izhangzhihao.rainbow.brackets.provider.BracePairProvider
import com.github.izhangzhihao.rainbow.brackets.util.memoize
import com.intellij.codeInsight.highlighting.BraceMatchingUtil
import com.intellij.lang.*
import com.intellij.lang.BracePair
import com.intellij.lang.CompositeLanguage
import com.intellij.lang.Language
import com.intellij.lang.LanguageBraceMatching
import com.intellij.lang.LanguageExtension
import com.intellij.lang.PairedBraceMatcher
import com.intellij.psi.tree.IElementType
object BracePairs {
private val providers = LanguageExtension<BracePairProvider>("izhangzhihao.rainbow.brackets.bracePairProvider")
private val providers = LanguageExtension<BracePairProvider>("com.chylex.intellij.rainbowbrackets.bracePairProvider")
private val bracePairs =
Language.getRegisteredLanguages()
@ -74,4 +79,4 @@ inline val Language.bracePairs: MutableMap<String, MutableList<BracePair>>?
get() = BracePairs.getBracePairs(this)
inline val Language.braceTypeSet: Set<IElementType>
get() = BracePairs.braceTypeSet(this)
get() = BracePairs.braceTypeSet(this)

View File

@ -1,48 +0,0 @@
package com.github.izhangzhihao.rainbow.brackets
import com.intellij.notification.*
import com.intellij.notification.impl.NotificationsManagerImpl
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.popup.Balloon
import com.intellij.openapi.wm.WindowManager
import com.intellij.ui.BalloonLayoutData
import com.intellij.ui.awt.RelativePoint
import java.awt.Point
class ApplicationServicePlaceholder : Disposable {
override fun dispose() = Unit
companion object {
val INSTANCE: ApplicationServicePlaceholder = ApplicationManager.getApplication().getService(ApplicationServicePlaceholder::class.java)
}
}
fun createNotification(title: String, content: String, type: NotificationType,
listener: NotificationListener): Notification {
return NotificationGroupManager.getInstance().getNotificationGroup("Rainbow Brackets Notification Group")
.createNotification(title, content, type).setListener(listener)
}
fun showFullNotification(project: Project, notification: Notification) {
val frame = WindowManager.getInstance().getIdeFrame(project)
if (frame == null) {
notification.notify(project)
return
}
val bounds = frame.component.bounds
val target = RelativePoint(frame.component, Point(bounds.x + bounds.width, 20))
try {
val balloon = NotificationsManagerImpl.createBalloon(frame,
notification,
true, // showCallout
true, // hideOnClickOutside
BalloonLayoutData.fullContent(),
ApplicationServicePlaceholder.INSTANCE)
balloon.show(target, Balloon.Position.atLeft)
} catch (e: Exception) {
notification.notify(project)
}
}

View File

@ -1,97 +0,0 @@
package com.github.izhangzhihao.rainbow.brackets
import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
import com.intellij.ide.plugins.IdeaPluginDescriptor
import com.intellij.ide.plugins.PluginManagerCore
import com.intellij.ide.plugins.PluginManagerCore.isPluginInstalled
import com.intellij.ide.startup.StartupActionScriptManager
import com.intellij.ide.startup.StartupActionScriptManager.DeleteCommand
import com.intellij.notification.NotificationListener.UrlOpeningListener
import com.intellij.notification.NotificationType
import com.intellij.openapi.extensions.PluginId
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.StartupActivity
class RainbowUpdateNotifyActivity : StartupActivity {
override fun runActivity(project: Project) {
removeIfInstalled()
val settings = RainbowSettings.instance
if (getPlugin()?.version != settings.version) {
settings.version = getPlugin()!!.version
if (settings.showNotificationOnUpdate) {
showUpdate(project)
}
}
}
private fun removeIfInstalled() {
val pluginId = PluginId.getId("com.github.jadepeng.rainbowfart")
val isInstalled = isPluginInstalled(pluginId)
if (isInstalled) {
val pluginDescriptor = PluginManagerCore.getPlugin(pluginId)
if (pluginDescriptor != null) {
//disablePlugin(pluginId)
StartupActionScriptManager.addActionCommand(DeleteCommand(pluginDescriptor.pluginPath))
}
}
}
companion object {
const val pluginId = "izhangzhihao.rainbow.brackets"
private val updateContent: String by lazy {
//language=HTML
"""
<br/>
🌈Thank you for downloading <b><a href="https://github.com/izhangzhihao/intellij-rainbow-brackets">Rainbow Brackets</a></b>!<br>
🎉Sponsored by <a href="https://codestream.com/?utm_source=jbmarket&utm_medium=banner&utm_campaign=jbrainbowbrackets">CodeStream</a>.<br>
👍If you find this plugin helpful, <b><a href="https://github.com/izhangzhihao/intellij-rainbow-brackets#support-us">please support us!</a>.</b><br>
<b><a href="https://github.com/izhangzhihao/intellij-rainbow-brackets#support-us">Donate</a></b> by <b><a href="https://opencollective.com/intellij-rainbow-brackets">OpenCollective</a></b> Or AliPay/WeChatPay to <b><a href="https://github.com/izhangzhihao/intellij-rainbow-brackets#sponsors">become a sponsor</a>!.</b><br>
📝Check out <b><a href="https://izhangzhihao.github.io/rainbow-brackets-document/">the document</a></b> for all features of this plugin.<br>
🐛If you run into any problem, <b><a href="https://github.com/izhangzhihao/intellij-rainbow-brackets/issues">feel free to raise an issue</a>.</b><br>
🆕See <b><a href="${changelog()}">changelog</a></b> for more details about this update.<br>
👉Want to customize your own color scheme of Rainbow Brackets? Edit it under
<b>Settings > Editor > Color Scheme > Rainbow Brackets</b><br>
👉Tired of the bundled colors? Try out the new color generator!
<b>Settings > Other Settings > Rainbow Brackets > Use color generator</b><br>
👉Other additional features under
<b>Settings > Other Settings > Rainbow Brackets</b><br/>
Enjoy your colorful code🌈.
"""
}
private fun changelog(): String {
val plugin = getPlugin()
return if (plugin == null) {
"""https://github.com/izhangzhihao/intellij-rainbow-brackets/releases"""
} else {
"""https://github.com/izhangzhihao/intellij-rainbow-brackets/releases/tag/${plugin.version}"""
}
}
fun getPlugin(): IdeaPluginDescriptor? = PluginManagerCore.getPlugin(PluginId.getId(pluginId))
private fun updateMsg(): String {
val plugin = getPlugin()
return if (plugin == null) {
"Rainbow Brackets installed."
} else {
"Rainbow Brackets updated to ${plugin.version}"
}
}
private fun showUpdate(project: Project) {
val notification = createNotification(
updateMsg(),
updateContent,
NotificationType.INFORMATION,
UrlOpeningListener(false)
)
showFullNotification(project, notification)
}
}
}

View File

@ -1,21 +1,13 @@
package com.github.izhangzhihao.rainbow.brackets.provider
import com.intellij.lang.BracePair
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.GT
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.LBRACE
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.LBRACKET
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.LPARENTH
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.LT
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.RBRACE
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.RBRACKET
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.RPARENTH
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.kotoparser.lexer.CSharpTokenType
class CSharpBracePairProvider : BracePairProvider {
override fun pairs(): List<BracePair> = listOf(
//BracePair(LPARENTH, RPARENTH, false),
BracePair(LBRACE, RBRACE, false),
BracePair(LBRACKET, RBRACKET, false),
BracePair(LT, GT, false),
BracePair(CSharpTokenType.LPARENTH, CSharpTokenType.RPARENTH, false),
BracePair(CSharpTokenType.LBRACE, CSharpTokenType.RBRACE, false),
BracePair(CSharpTokenType.LBRACKET, CSharpTokenType.RBRACKET, false),
BracePair(CSharpTokenType.LT, CSharpTokenType.GT, false),
)
}
}

View File

@ -1,8 +1,8 @@
package com.github.izhangzhihao.rainbow.brackets.provider
import com.intellij.lang.BracePair
import com.jetbrains.cidr.lang.parser.OCTokenTypes
import com.jetbrains.cidr.lang.parser.OCLexerTokenTypes
class OCBracePairProvider : BracePairProvider {
override fun pairs(): List<BracePair> = listOf(BracePair(OCTokenTypes.LT, OCTokenTypes.GT, false))
}
override fun pairs(): List<BracePair> = listOf(BracePair(OCLexerTokenTypes.LT, OCLexerTokenTypes.GT, false))
}

View File

@ -21,7 +21,6 @@ class RainbowSettings : PersistentStateComponent<RainbowSettings> {
var isShowRainbowIndentGuides = true
var isDoNOTRainbowifyBracketsWithoutContent = false
var isDoNOTRainbowifyTheFirstLevel = false
var version = "Unknown"
var isRainbowifyHTMLInsideJS = true
var isRainbowifyKotlinLabel = true
var isRainbowifyKotlinFunctionLiteralBracesAndArrow = true
@ -36,7 +35,6 @@ class RainbowSettings : PersistentStateComponent<RainbowSettings> {
var disableRainbowIndentsInZenMode = true
var useColorGenerator = false
var customColorGeneratorOption: String? = null
var showNotificationOnUpdate = true
var rainbowifyTagNameInXML = false
var doNOTRainbowifyTemplateString = false
var doNOTRainbowifyBigFiles = true
@ -60,4 +58,4 @@ class RainbowSettings : PersistentStateComponent<RainbowSettings> {
val instance: RainbowSettings
get() = ApplicationManager.getApplication().getService(RainbowSettings::class.java)
}
}
}

View File

@ -1,246 +0,0 @@
/*
* Copyright (c) 2017 Patrick Scheibe
* 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.
*/
package com.github.izhangzhihao.rainbow.brackets.util
import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
import com.github.izhangzhihao.rainbow.brackets.util.ErrorContext.Companion.fromThrowable
import com.intellij.AbstractBundle
import com.intellij.diagnostic.*
import com.intellij.ide.DataManager
import com.intellij.ide.plugins.PluginManagerCore
import com.intellij.ide.plugins.PluginUtil
import com.intellij.idea.IdeaLogger
import com.intellij.notification.NotificationGroupManager
import com.intellij.notification.NotificationListener
import com.intellij.notification.NotificationType
import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.application.ApplicationNamesInfo
import com.intellij.openapi.application.ex.ApplicationInfoEx
import com.intellij.openapi.application.impl.ApplicationInfoImpl
import com.intellij.openapi.diagnostic.ErrorReportSubmitter
import com.intellij.openapi.diagnostic.IdeaLoggingEvent
import com.intellij.openapi.diagnostic.SubmittedReportInfo
import com.intellij.openapi.diagnostic.SubmittedReportInfo.SubmissionStatus
import com.intellij.openapi.progress.EmptyProgressIndicator
import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.progress.Task
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.SystemInfo
import com.intellij.util.Consumer
import org.eclipse.egit.github.core.Issue
import org.eclipse.egit.github.core.Label
import org.eclipse.egit.github.core.RepositoryId
import org.eclipse.egit.github.core.client.GitHubClient
import org.eclipse.egit.github.core.service.IssueService
import org.jetbrains.annotations.NonNls
import org.jetbrains.annotations.NotNull
import org.jetbrains.annotations.Nullable
import org.jetbrains.annotations.PropertyKey
import java.awt.Component
import java.util.*
private object AnonymousFeedback {
private const val gitRepoUser = "izhangzhihao"
//private const val gitRepoUser = "intellij-rainbow-brackets"
private const val gitRepo = "intellij-rainbow-brackets"
//private const val gitRepo = "bug"
private const val issueLabel = "Auto generated"
/**
* Makes a connection to GitHub. Checks if there is an issue that is a duplicate and based on this, creates either a
* new issue or comments on the duplicate (if the user provided additional information).
*
* @param environmentDetails Information collected by [getKeyValuePairs]
* @return The report info that is then used in [GitHubErrorReporter] to show the user a balloon with the link
* of the created issue.
*/
internal fun sendFeedback(environmentDetails: MutableMap<String, String>): SubmittedReportInfo {
try {
val gitAccessToken = something
val client = GitHubClient()
client.setOAuth2Token(gitAccessToken)
val repoID = RepositoryId(gitRepoUser, gitRepo)
val issueService = IssueService(client)
var newGibHubIssue = createNewGibHubIssue(environmentDetails)
val duplicate = findFirstDuplicate(newGibHubIssue.title, issueService, repoID)
var isNewIssue = true
if (duplicate != null) {
issueService.createComment(repoID, duplicate.number, newGibHubIssue.body)
newGibHubIssue = duplicate
isNewIssue = false
} else newGibHubIssue = issueService.createIssue(repoID, newGibHubIssue)
return SubmittedReportInfo(newGibHubIssue.htmlUrl, ErrorReportBundle.message(
if (isNewIssue) "git.issue.text" else "git.issue.duplicate.text", newGibHubIssue.htmlUrl, newGibHubIssue.number.toLong()),
if (isNewIssue) SubmissionStatus.NEW_ISSUE else SubmissionStatus.DUPLICATE)
} catch (e: Exception) {
e.printStackTrace()
return SubmittedReportInfo(null,
ErrorReportBundle.message("report.error.connection.failure"),
SubmissionStatus.FAILED)
}
}
private fun findFirstDuplicate(title: String, service: IssueService, repo: RepositoryId): Issue? {
val openIssue = hashMapOf(IssueService.FILTER_STATE to IssueService.STATE_OPEN)
val closedIssue = hashMapOf(IssueService.FILTER_STATE to IssueService.STATE_CLOSED)
return service.pageIssues(repo, openIssue).flatten().firstOrNull { it.title == title }
?: service.pageIssues(repo, closedIssue).flatten().firstOrNull { it.title == title }
}
private fun createNewGibHubIssue(details: MutableMap<String, String>) = Issue().apply {
val errorMessage = details.remove("error.message")?.takeIf(String::isNotBlank) ?: "Unspecified error"
title = ErrorReportBundle.message("git.issue.title", errorMessage)
body = generateGitHubIssueBody(details)
labels = listOf(Label().apply { name = issueLabel })
}
private fun generateGitHubIssueBody(details: MutableMap<String, String>): String {
val errorDescription = details.remove("error.description").orEmpty()
val stackTrace = details.remove("error.stacktrace")?.takeIf(String::isNotBlank) ?: "invalid stacktrace"
val result = StringBuilder()
if (errorDescription.isNotEmpty()) {
result.append(errorDescription)
result.append("\n\n----------------------\n\n")
}
for ((key, value) in details) {
result.append("- ")
result.append(key)
result.append(": ")
result.append(value)
result.append("\n")
}
result.append("- StackTrace:\n")
result.append(stackTrace)
return result.toString()
}
}
//String(Base64.getEncoder().encode("".toByteArray()))
private const val st = "YjgwZGRiY2U2YTNlYTAzM2UyZGU" + "yNDcyNWEyZjE3MGQ2YThmMjc0MQ=="
private val something: String by lazy { String(Base64.getDecoder().decode(st)) }
class GitHubErrorReporter : ErrorReportSubmitter() {
override fun getReportActionText() = ErrorReportBundle.message("report.error.to.plugin.vendor")
override fun submit(events: Array<out IdeaLoggingEvent>?, info: @Nullable String?, parent: @NotNull Component, consumer: @NotNull Consumer<in SubmittedReportInfo>): Boolean {
return doSubmit(events!![0], parent, consumer, fromThrowable(events[0].throwable), info)
}
private fun doSubmit(
event: IdeaLoggingEvent,
parent: Component,
callback: Consumer<in SubmittedReportInfo>,
errorContext: ErrorContext,
description: String?): Boolean {
val dataContext = DataManager.getInstance().getDataContext(parent)
description?.let { errorContext.description = description }
errorContext.message = event.message
event.throwable?.let { throwable ->
PluginUtil.getInstance().findPluginId(throwable)?.let { pluginId ->
PluginManagerCore.getPlugin(pluginId)?.let { ideaPluginDescriptor ->
if (!ideaPluginDescriptor.isBundled) {
errorContext.pluginName = ideaPluginDescriptor.name
errorContext.pluginVersion = ideaPluginDescriptor.version
}
}
}
}
(event.data as? LogMessage)?.let { errorContext.attachments = it.includedAttachments }
val project = CommonDataKeys.PROJECT.getData(dataContext)
val reportValues = getKeyValuePairs(
errorContext,
ApplicationInfoImpl.getShadowInstance() as ApplicationInfoImpl,
ApplicationNamesInfo.getInstance())
val notifyingCallback = CallbackWithNotification(callback, project)
val task = AnonymousFeedbackTask(project, ErrorReportBundle.message(
"report.error.progress.dialog.text"), true, reportValues, notifyingCallback)
if (project == null) task.run(EmptyProgressIndicator()) else ProgressManager.getInstance().run(task)
return true
}
internal class CallbackWithNotification(
private val consumer: Consumer<in SubmittedReportInfo>,
private val project: Project?) : Consumer<SubmittedReportInfo> {
override fun consume(reportInfo: SubmittedReportInfo) {
consumer.consume(reportInfo)
val GROUP = NotificationGroupManager.getInstance().getNotificationGroup("Error Report")
if (reportInfo.status == SubmissionStatus.FAILED) GROUP.createNotification(DiagnosticBundle.message("error.report.title"),
reportInfo.linkText, NotificationType.ERROR).setImportant(false).notify(project)
else GROUP.createNotification(DiagnosticBundle.message("error.report.title"), reportInfo.linkText,
NotificationType.INFORMATION).setListener(NotificationListener.URL_OPENING_LISTENER).setImportant(false).notify(project)
}
}
}
/**
* Messages and strings used by the error reporter
*/
private object ErrorReportBundle {
@NonNls
private const val BUNDLE = "error-reporting.report-bundle"
private val bundle: ResourceBundle by lazy { ResourceBundle.getBundle(BUNDLE) }
@JvmStatic
internal fun message(@PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any) =
AbstractBundle.message(bundle, key, *params)
}
private class AnonymousFeedbackTask(
project: Project?, title: String, canBeCancelled: Boolean,
private val params: MutableMap<String, String>,
private val callback: Consumer<SubmittedReportInfo>) : Task.Backgroundable(project, title, canBeCancelled, DEAF) {
override fun run(indicator: ProgressIndicator) {
callback.consume(AnonymousFeedback.sendFeedback(params))
}
}
/**
* Collects information about the running IDEA and the error
*/
private fun getKeyValuePairs(
errorContext: ErrorContext,
appInfo: ApplicationInfoEx,
namesInfo: ApplicationNamesInfo): MutableMap<String, String> {
val params = mutableMapOf(
"error.description" to errorContext.description,
"Plugin Name" to errorContext.pluginName,
"Plugin Version" to RainbowSettings.instance.version,
"OS Name" to SystemInfo.OS_NAME,
"OS Version" to SystemInfo.OS_VERSION,
"Java Version" to SystemInfo.JAVA_VERSION,
"App Name" to namesInfo.productName,
"App Full Name" to namesInfo.fullProductName,
"Is Snapshot" to java.lang.Boolean.toString(appInfo.build.isSnapshot),
"App Build" to appInfo.build.asString(),
"error.message" to errorContext.errorClass,
"error.stacktrace" to "\n```\n" + errorContext.stackTrace + "\n```\n")
for (attachment in errorContext.attachments) {
params["attachment.${attachment.name}"] = attachment.path
params["attachment.${attachment.name}.value"] = "\n```\n" + attachment.displayText + "\n```\n"
}
return params
}

View File

@ -7,10 +7,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.psi.impl.source.tree.LeafPsiElement
import com.intellij.psi.tree.IElementType
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.GT
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.LPARENTH
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.LT
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.lexer.CSharpTokenType.RPARENTH
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.kotoparser.lexer.CSharpTokenType
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.psi.CSharpDummyNode
@ -50,8 +47,8 @@ class CSharpRainbowVisitor : RainbowHighlightVisitor() {
companion object {
val map = mapOf(
LPARENTH to BracePair(LPARENTH, RPARENTH, true),
RPARENTH to BracePair(LPARENTH, RPARENTH, true),
CSharpTokenType.LPARENTH to BracePair(CSharpTokenType.LPARENTH, CSharpTokenType.RPARENTH, true),
CSharpTokenType.RPARENTH to BracePair(CSharpTokenType.LPARENTH, CSharpTokenType.RPARENTH, true),
//LT to BracePair(LT, GT, true),
//GT to BracePair(LT, GT, true),
)
@ -123,4 +120,4 @@ class CSharpRainbowVisitor : RainbowHighlightVisitor() {
}
}
}
}
}

View File

@ -2,8 +2,8 @@
<extensions defaultExtensionNs="com.intellij">
<highlightVisitor implementation="com.github.izhangzhihao.rainbow.brackets.visitor.ReactJSXRainbowVisitor"/>
</extensions>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="JavaScript"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.TSBracePairProvider"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,5 +1,5 @@
<idea-plugin>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="C#"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.CSharpBracePairProvider"/>
</extensions>
@ -7,4 +7,4 @@
<extensions defaultExtensionNs="com.intellij">
<highlightVisitor implementation="com.github.izhangzhihao.rainbow.brackets.visitor.CSharpRainbowVisitor"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,6 +1,6 @@
<idea-plugin>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="Dart"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.DartBracePairProvider"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,6 +1,6 @@
<idea-plugin>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="GoTemplate"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.GoTemplateProvider"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,6 +1,6 @@
<idea-plugin>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="Groovy"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.GroovyBracePairProvider"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,5 +1,5 @@
<idea-plugin>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="kotlin"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.KotlinBracePairProvider"/>
</extensions>
@ -9,4 +9,4 @@
<annotator language="kotlin"
implementationClass="com.github.izhangzhihao.rainbow.brackets.annotator.KotlinLabelAnnotator"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,6 +1,6 @@
<idea-plugin>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="ObjectiveC"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.OCBracePairProvider"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,6 +1,6 @@
<idea-plugin>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="PHP"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.PHPBracePairProvider"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,5 +1,5 @@
<idea-plugin require-restart="true">
<id>izhangzhihao.rainbow.brackets</id>
<id>com.chylex.intellij.rainbowbrackets</id>
<name>Rainbow Brackets</name>
<vendor email="izhangzhihao@hotmail.com" url="https://github.com/izhangzhihao">izhangzhihao</vendor>
@ -50,6 +50,18 @@
]]></description>
<change-notes><![CDATA[
<p>6.26-chylex-2</p>
<ul>
<li>Fixed Rider support.</li>
</ul>
<br/>
<p>6.26-chylex-1</p>
<ul>
<li>Removed post-update notification.</li>
</ul>
<br/>
<p>6.26</p>
<ul>
<li>Bump dependencies.</li>
@ -730,9 +742,6 @@
]]>
</change-notes>
<!-- please see http://confluence.jetbrains.com/display/IDEADEV/Build+Number+Ranges for description -->
<idea-version since-build="203" until-build="222.*"/>
<!-- please see https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html
on how to target different products -->
<depends>com.intellij.modules.lang</depends>
@ -775,10 +784,8 @@
<additionalTextAttributes scheme="Default" file="colorSchemes/rainbow-color-default.xml"/>
<additionalTextAttributes scheme="Darcula" file="colorSchemes/rainbow-color-default-darcula.xml"/>
<postStartupActivity implementation="com.github.izhangzhihao.rainbow.brackets.RainbowUpdateNotifyActivity"/>
<!--<errorHandler implementation="com.github.izhangzhihao.rainbow.brackets.util.GitHubErrorReporter"/>-->
<highlightingPassFactory implementation="com.github.izhangzhihao.rainbow.brackets.indents.RainbowIndentsPassFactory"/>
<applicationService serviceImplementation="com.github.izhangzhihao.rainbow.brackets.ApplicationServicePlaceholder" id="ApplicationServicePlaceholder"/>
<editorNotificationProvider implementation="com.github.izhangzhihao.rainbow.brackets.RainbowifyBanner"/>
<notificationGroup id="Rainbow Brackets Notification Group" displayType="STICKY_BALLOON"/>
</extensions>

View File

@ -1,6 +1,6 @@
<idea-plugin>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="Shell Script"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.SHBracePairProvider"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,6 +1,6 @@
<idea-plugin>
<extensions defaultExtensionNs="izhangzhihao.rainbow.brackets">
<extensions defaultExtensionNs="com.chylex.intellij.rainbowbrackets">
<bracePairProvider language="SQL"
implementationClass="com.github.izhangzhihao.rainbow.brackets.provider.SqlBracePairProvider"/>
</extensions>
</idea-plugin>
</idea-plugin>

View File

@ -1,30 +0,0 @@
# suppress inspection "UnusedProperty" for whole file
#
# Copyright (c) 2017 Patrick Scheibe
# 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.
#
report.error.to.plugin.vendor=Report error on GitHub
report.error.progress.dialog.text=Submitting error report...
report.error.connection.failure=Could not communicate with GitHub
git.issue.title=[Auto Generated Report]{0}
git.issue.label=auto-generated
git.issue.text=<a href="{0}">Created issue {1}</a>. Thanks for your feedback!
git.issue.duplicate.text=<a href="{0}">A similar issues was already reported (#{1})</a>. Thanks for your feedback!

View File

@ -4,8 +4,11 @@ import com.intellij.psi.PsiDocumentManager
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import com.jetbrains.lang.dart.DartFileType
import io.kotest.matchers.shouldBe
import org.junit.Test
class RainbowDartTest : LightJavaCodeInsightFixtureTestCase() {
@Test
fun testRainbowForDart() {
val code =
"""
@ -50,4 +53,4 @@ void main() {
)
)
}
}
}

View File

@ -5,9 +5,11 @@ import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import io.kotest.matchers.shouldBe
import org.intellij.lang.annotations.Language
import org.jetbrains.plugins.groovy.GroovyFileType
import org.junit.Test
class RainbowGroovyTest : LightJavaCodeInsightFixtureTestCase() {
@Test
fun testRainbowForGroovy() {
@Language("Groovy") val code =
"""
@ -57,4 +59,4 @@ Map<String, Map<String, String>> convertObjectsToMapProperties(Map<String, Objec
)
)
}
}
}

View File

@ -9,13 +9,16 @@ import com.intellij.psi.PsiDocumentManager
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import io.kotest.matchers.shouldBe
import org.intellij.lang.annotations.Language
import org.junit.Test
class RainbowJavaScriptTest : LightJavaCodeInsightFixtureTestCase() {
@Test
fun testJavaScriptPluginEnabled() {
assertTrue(PluginManagerCore.getPlugin(PluginId.getId("JavaScript"))?.isEnabled!!)
}
@Test
fun testIssue11() {
@Language("JavaScript") val code = """
"use strict";
@ -41,6 +44,7 @@ const moment = require('moment')
)
}
@Test
fun testIssue12() {
@Language("JavaScript") val code = """
"use strict";
@ -64,6 +68,7 @@ console.log(a == b)
)
}
@Test
fun testIssue21() {
@Language("JavaScript") val code = "open (\$" + "{f})\n" + "open (\$" + "{f} )"
@ -85,6 +90,7 @@ console.log(a == b)
)
}
@Test
fun testIssue23() {
@Language("JavaScript") val code = """
"use strict";
@ -131,6 +137,7 @@ if ((a.field_detail && a.is) ||
)
}
@Test
fun testIssue38() {
@Language("JavaScript") val code = """
const element = ( <div> <h1>Hello, world!</h1> </div> );
@ -162,6 +169,7 @@ const element = ( <div> <h1>Hello, world!</h1> </div> );
)
}
@Test
fun `for somehow, it just don't work "testIssue39"`() {
@Language("JavaScript") val code = """
const html = '<div><div><div>Hello</div></div></div>'
@ -193,6 +201,7 @@ const element = ( <div> <h1>Hello, world!</h1> </div> );
)
}
@Test
fun testIssue31() {
@Language("JavaScript") val code = """
"use strict";
@ -223,6 +232,7 @@ const element = ( <div> <h1>Hello, world!</h1> </div> );
)
}
@Test
fun testIssue427() {
@Language("TypeScript") val code = """let example: Array<Map<string,string>>;""".trimIndent()
@ -244,4 +254,4 @@ const element = ( <div> <h1>Hello, world!</h1> </div> );
)
}
}
}

View File

@ -6,6 +6,7 @@ import com.intellij.psi.PsiDocumentManager
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import io.kotest.matchers.shouldBe
import org.intellij.lang.annotations.Language
import org.junit.Test
class RainbowJavaTest : LightJavaCodeInsightFixtureTestCase() {
override fun tearDown() {
@ -22,6 +23,7 @@ class RainbowJavaTest : LightJavaCodeInsightFixtureTestCase() {
rainbowSettings.languageBlacklist = setOf()
}
@Test
fun testRainbowForJava() {
@Language("Java") val code =
"""
@ -60,6 +62,7 @@ public class Test<T> {
)
}
@Test
fun testDisableRainbowForJava() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.isRainbowEnabled = false
@ -83,6 +86,7 @@ public class Test<T> {
)
}
@Test
fun testDisableRainbowAngleBracketsForJava() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.isEnableRainbowAngleBrackets = false
@ -121,6 +125,7 @@ public class Test<T> {
)
}
@Test
fun testDisableRainbowRoundBracketsForJava() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.isEnableRainbowRoundBrackets = false
@ -151,6 +156,7 @@ public class Test<T> {
)
}
@Test
fun testDisableRainbowSquigglyBracketsForJava() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.isEnableRainbowSquigglyBrackets = false
@ -187,6 +193,7 @@ public class Test<T> {
)
}
@Test
fun testDoNOTRainbowifyBracketsWithoutContentForJava() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.isDoNOTRainbowifyBracketsWithoutContent = true
@ -223,6 +230,7 @@ public class Test<T> {
)
}
@Test
fun testDoNOTRainbowifyBracketsWhenJavaInBlacklist() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.isDoNOTRainbowifyBracketsWithoutContent = true
@ -246,6 +254,7 @@ public class Test<T> {
.shouldBe(0)
}
@Test
fun testIssue391() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.cycleCountOnAllBrackets = true
@ -289,4 +298,4 @@ public class Test {
)
)
}
}
}

View File

@ -5,8 +5,11 @@ import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import io.kotest.matchers.shouldBe
import org.intellij.lang.annotations.Language
import org.jetbrains.kotlin.idea.KotlinFileType
import org.junit.Test
class RainbowKotlinTest : LightJavaCodeInsightFixtureTestCase() {
@Test
fun testRainbowForKotlin() {
@Language("kotlin") val code =
"""
@ -64,6 +67,7 @@ fun <T> filter(l: List<T>, f: (T) -> Boolean): MutableList<T> {
)
}
@Test
fun testRainbowArrowForKotlin() {
@Language("kotlin") val code =
"""
@ -125,6 +129,7 @@ val a: (Int) -> Unit = { aa ->
)
}
@Test
fun `ForSomeHowTheTestNotPassed "testRainbowLabelForKotlin"`() {
@Language("kotlin") val code =
"""
@ -160,6 +165,7 @@ class AA {
)
}
@Test
fun testKotlinFunctionLiteralBracesAndArrow() {
@Language("kotlin") val code =
"""
@ -191,4 +197,4 @@ fun t() {
)
)
}
}
}

View File

@ -4,8 +4,11 @@ import com.intellij.psi.PsiDocumentManager
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import com.jetbrains.php.lang.PhpFileType
import io.kotest.matchers.shouldBe
import org.junit.Test
class RainbowPHPTest : LightJavaCodeInsightFixtureTestCase() {
@Test
fun testRainbowForPHP() {
val code =
"""
@ -52,4 +55,4 @@ function padZero(string data): string
)
)
}
}
}

View File

@ -6,14 +6,16 @@ import com.intellij.psi.PsiDocumentManager
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import io.kotest.matchers.shouldBe
import org.jetbrains.plugins.ruby.ruby.lang.RubyFileType
import org.junit.Test
class RainbowRubyTest : LightJavaCodeInsightFixtureTestCase() {
@Test
fun testRubyPluginEnabled() {
assertTrue(PluginManagerCore.getPlugin(PluginId.getId("org.jetbrains.plugins.ruby"))?.isEnabled!!)
}
@Test
fun testRainbowForIssue53Part0() {
val code =
"""
@ -38,6 +40,7 @@ end
)
}
@Test
fun testRainbowForIssue53Part1() {
val code =
"""
@ -58,6 +61,7 @@ foobar(p1: "", p2: false, p3: 1)
)
}
@Test
fun testRainbowForIssue53Part2() {
val code =
"""
@ -93,6 +97,7 @@ end
)
}
@Test
fun testRainbowForIssue53Part3() {
val code =
"""
@ -125,6 +130,7 @@ end
)
}
@Test
fun testRainbowForIssue53Part4() {
val code =
"""
@ -152,4 +158,4 @@ end
)
)
}
}
}

View File

@ -6,6 +6,7 @@ import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import io.kotest.matchers.shouldBe
import org.intellij.lang.annotations.Language
import org.jetbrains.plugins.scala.ScalaFileType
import org.junit.Test
class RainbowScalaTest : LightJavaCodeInsightFixtureTestCase() {
@ -20,6 +21,7 @@ class RainbowScalaTest : LightJavaCodeInsightFixtureTestCase() {
rainbowSettings.isDoNOTRainbowifyBracketsWithoutContent = false
}
@Test
fun testRainbowForScala() {
@Language("Scala") val code =
"""
@ -60,6 +62,7 @@ import scala.annotation.tailrec
)
}
@Test
fun testDisableRainbowSquareBracketsForScala() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.isEnableRainbowSquareBrackets = false
@ -97,4 +100,4 @@ import scala.annotation.tailrec
)
)
}
}
}

View File

@ -6,8 +6,11 @@ import com.intellij.psi.PsiDocumentManager
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import io.kotest.matchers.shouldBe
import org.intellij.lang.annotations.Language
import org.junit.Test
class RainbowXMLTest : LightJavaCodeInsightFixtureTestCase() {
@Test
fun `disabled for non-determinist results of testRainbowTagNameForXML`() {
@Language("XML") val code =
"""
@ -83,6 +86,7 @@ class RainbowXMLTest : LightJavaCodeInsightFixtureTestCase() {
)
}
@Test
fun testRainbowForXML() {
@Language("XML") val code =
"""

View File

@ -5,9 +5,11 @@ import com.intellij.ide.highlighter.JavaFileType
import com.intellij.psi.PsiDocumentManager
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import org.intellij.lang.annotations.Language
import org.junit.Test
class RandomColorGenTest : LightJavaCodeInsightFixtureTestCase() {
@Test
fun testRandomColorGenWorks() {
val rainbowSettings = RainbowSettings.instance
rainbowSettings.isRainbowEnabled = true