mirror of
https://github.com/chylex/IntelliJ-Rainbow-Brackets.git
synced 2024-11-25 14:42:45 +01:00
Compare commits
10 Commits
01c37cde63
...
c9b3a33797
Author | SHA1 | Date | |
---|---|---|---|
c9b3a33797 | |||
31a40b63cb | |||
aa7b057910 | |||
dd63c37354 | |||
4cab3548c3 | |||
882c5d0eae | |||
a4a83d9ab3 | |||
91eb77cd2c | |||
db76359837 | |||
983350f63c |
57
.github/ISSUE_TEMPLATE/bug_report.md
vendored
57
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -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
|
||||
```
|
24
.github/ISSUE_TEMPLATE/feature_request.md
vendored
24
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -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
|
13
.github/opencollective.yml
vendored
13
.github/opencollective.yml
vendored
@ -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:
|
75
.github/workflows/build.yml
vendored
75
.github/workflows/build.yml
vendored
@ -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 }}
|
27
.github/workflows/label-and-close-issue.yml
vendored
27
.github/workflows/label-and-close-issue.yml
vendored
@ -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"
|
46
.github/workflows/release.yml
vendored
46
.github/workflows/release.yml
vendored
@ -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
|
19
.github/workflows/stale.yml
vendored
19
.github/workflows/stale.yml
vendored
@ -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
15
.gitignore
vendored
@ -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
5
.gitpod.Dockerfile
vendored
@ -1,5 +0,0 @@
|
||||
FROM gitpod/workspace-full
|
||||
|
||||
USER gitpod
|
||||
|
||||
RUN brew install kotlin
|
@ -1,4 +0,0 @@
|
||||
image:
|
||||
file: .gitpod.Dockerfile
|
||||
tasks:
|
||||
- init: gradle compileKotlin
|
@ -1 +0,0 @@
|
||||
11
|
15
.mergify.yml
15
.mergify.yml
@ -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
|
159
build.gradle.kts
159
build.gradle.kts
@ -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")
|
||||
}
|
||||
|
||||
intellij {
|
||||
pluginName.set(name)
|
||||
val clion: Configuration by configurations.creating
|
||||
val rider: Configuration by configurations.creating
|
||||
|
||||
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'
|
||||
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 {
|
||||
type.set("IU")
|
||||
version.set(ideVersion)
|
||||
updateSinceUntilBuild.set(false)
|
||||
|
||||
plugins.set(
|
||||
listOf(
|
||||
"java",
|
||||
"java-i18n",
|
||||
"JavaScriptLanguage",
|
||||
"DatabaseTools",
|
||||
"CSS",
|
||||
"platform-images",
|
||||
// Built-in
|
||||
"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",
|
||||
"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)
|
||||
}
|
||||
|
@ -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
|
||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@ -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
294
gradlew
vendored
@ -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
15
gradlew.bat
vendored
@ -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
|
||||
|
BIN
libs/clion.jar
BIN
libs/clion.jar
Binary file not shown.
BIN
libs/rider.jar
BIN
libs/rider.jar
Binary file not shown.
@ -1,3 +1,5 @@
|
||||
rootProject.name = "RainbowBrackets"
|
||||
|
||||
pluginManagement {
|
||||
repositories {
|
||||
maven(url = "https://oss.sonatype.org/content/repositories/snapshots/")
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@ -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),
|
||||
)
|
||||
}
|
@ -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))
|
||||
}
|
@ -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
|
||||
|
@ -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
|
||||
}
|
@ -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),
|
||||
)
|
||||
|
@ -2,7 +2,7 @@
|
||||
<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>
|
||||
|
@ -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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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>
|
||||
|
@ -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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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>
|
||||
|
@ -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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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>
|
||||
|
@ -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!
|
@ -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 =
|
||||
"""
|
||||
|
@ -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 =
|
||||
"""
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 =
|
||||
"""
|
||||
|
@ -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 =
|
||||
"""
|
||||
|
@ -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 =
|
||||
"""
|
||||
|
@ -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
|
||||
|
@ -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 =
|
||||
"""
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user