Compare commits
12 Commits
fff3c1cc31
...
d3d99fa223
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3d99fa223 | ||
|
|
de68ced39e | ||
|
|
17da3f6f0e | ||
|
|
5203c1791c | ||
|
|
2a4ad9c7f2 | ||
|
|
7ec9a01c78 | ||
|
|
6c43bad220 | ||
|
|
69b6cfe8a3 | ||
|
|
198af79707 | ||
|
|
2d8f817cd2 | ||
|
|
ec88840dc8 | ||
|
|
6ee9681ea5 |
127
CLAUDE.md
Normal file
127
CLAUDE.md
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
This is an IntelliJ IDEA plugin that provides Slint language support through LSP (Language Server Protocol) integration. The plugin downloads platform-specific Slint LSP binaries from GitHub releases and integrates them with IntelliJ's LSP infrastructure.
|
||||||
|
|
||||||
|
## Build System
|
||||||
|
|
||||||
|
This project uses Gradle with the Kotlin DSL and the IntelliJ Platform Gradle Plugin.
|
||||||
|
|
||||||
|
### Common Commands
|
||||||
|
|
||||||
|
**Build the plugin:**
|
||||||
|
```bash
|
||||||
|
./gradlew build
|
||||||
|
```
|
||||||
|
|
||||||
|
**Run the plugin in a sandbox IDE:**
|
||||||
|
```bash
|
||||||
|
./gradlew runIde
|
||||||
|
```
|
||||||
|
|
||||||
|
**Run tests:**
|
||||||
|
```bash
|
||||||
|
./gradlew test
|
||||||
|
```
|
||||||
|
|
||||||
|
**Verify plugin compatibility:**
|
||||||
|
```bash
|
||||||
|
./gradlew verifyPlugin
|
||||||
|
```
|
||||||
|
|
||||||
|
**Build plugin distribution ZIP:**
|
||||||
|
```bash
|
||||||
|
./gradlew buildPlugin
|
||||||
|
```
|
||||||
|
|
||||||
|
**Clean build artifacts:**
|
||||||
|
```bash
|
||||||
|
./gradlew clean
|
||||||
|
```
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### LSP Integration
|
||||||
|
|
||||||
|
The plugin uses IntelliJ's LSP support (`com.intellij.modules.lsp`) to provide language features for `.slint` files.
|
||||||
|
|
||||||
|
**Key components:**
|
||||||
|
|
||||||
|
- `SlintLspServerSupportProvider` (src/main/kotlin/me/zhouxi/slint/lsp/SlintLspServerSupportProvider.kt:13): Main LSP integration point. Implements `LspServerSupportProvider` to start the Slint LSP server when `.slint` files are opened.
|
||||||
|
|
||||||
|
- `SlintRuntime` (src/main/kotlin/me/zhouxi/slint/SlintRuntime.kt:8): Manages plugin paths and locates the platform-specific LSP binary. Detects OS (Windows/Linux/macOS) and resolves the correct executable path.
|
||||||
|
|
||||||
|
- `FooLspServerDescriptor` (src/main/kotlin/me/zhouxi/slint/lsp/SlintLspServerSupportProvider.kt:34): Internal descriptor that creates the command line for launching the LSP server.
|
||||||
|
|
||||||
|
### Binary Distribution
|
||||||
|
|
||||||
|
The build process downloads platform-specific Slint LSP binaries from GitHub releases:
|
||||||
|
|
||||||
|
- **Download task** (build.gradle.kts:72-79): Downloads LSP binaries for Linux, macOS, and Windows from `https://github.com/slint-ui/slint/releases/download/v{version}/`
|
||||||
|
|
||||||
|
- **Extract task** (build.gradle.kts:80-104): Extracts and renames binaries to standardized names (`slint-lsp-linux`, `slint-lsp-macos`, `slint-lsp-windows.exe`)
|
||||||
|
|
||||||
|
- **Sandbox preparation** (build.gradle.kts:105-111): Copies extracted binaries to `slint/lsp/` directory in the plugin sandbox
|
||||||
|
|
||||||
|
The Slint version is configured in `gradle.properties` via the `slintVersion` property.
|
||||||
|
|
||||||
|
### Plugin Configuration
|
||||||
|
|
||||||
|
- **plugin.xml** (src/main/resources/META-INF/plugin.xml): Declares the plugin metadata, dependencies, and extension points. Registers `SlintLspServerSupportProvider` as the LSP server support provider.
|
||||||
|
|
||||||
|
- **Target IDE version**: IntelliJ IDEA 2025.2.4 with minimum build 252.25557 (configured in build.gradle.kts:43,56)
|
||||||
|
|
||||||
|
- **Java/Kotlin version**: JVM 21 (build.gradle.kts:68-70,114-118)
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
src/main/kotlin/me/zhouxi/slint/
|
||||||
|
├── SlintRuntime.kt # Plugin runtime and binary path resolution
|
||||||
|
├── icons/SlintIcons.kt # Icon resources for UI
|
||||||
|
└── lsp/
|
||||||
|
└── SlintLspServerSupportProvider.kt # LSP integration
|
||||||
|
```
|
||||||
|
|
||||||
|
## Testing the Plugin
|
||||||
|
|
||||||
|
### Manual Testing
|
||||||
|
|
||||||
|
1. **Build and run in sandbox:**
|
||||||
|
```bash
|
||||||
|
./gradlew runIde
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Test with sample file:**
|
||||||
|
- Open `test-files/hello.slint`
|
||||||
|
- Verify file icon, syntax highlighting, and LSP features
|
||||||
|
|
||||||
|
3. **Test LSP features:**
|
||||||
|
- Code completion: Type and press Ctrl+Space
|
||||||
|
- Goto definition: Ctrl+Click on symbols
|
||||||
|
- Hover: Mouse over symbols
|
||||||
|
- Diagnostics: Introduce syntax errors
|
||||||
|
- Formatting: Ctrl+Alt+L
|
||||||
|
|
||||||
|
### Verify LSP Server
|
||||||
|
|
||||||
|
Check LSP server status in the status bar (bottom right). Should show "Slint" when a .slint file is open.
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
- **LSP server not starting**: Check that LSP binary exists in sandbox at `sandbox/plugins/slint/lsp/slint-lsp-{platform}`
|
||||||
|
- **No syntax highlighting**: Verify TextMate grammar file is in resources
|
||||||
|
- **No completion**: Check LSP server logs in `idea.log`
|
||||||
|
|
||||||
|
## Development Notes
|
||||||
|
|
||||||
|
- The plugin uses IntelliJ's built-in LSP client infrastructure, so language features (completion, diagnostics, etc.) are provided by the Slint LSP server itself.
|
||||||
|
|
||||||
|
- The sandbox directory is configured to `sandbox/` in the project root (build.gradle.kts:53).
|
||||||
|
|
||||||
|
- When modifying LSP integration, test by running `./gradlew runIde` which launches a sandbox IDE with the plugin installed.
|
||||||
|
|
||||||
|
- To update the Slint LSP version, change `slintVersion` in `gradle.properties` and rebuild. The build will download new binaries automatically.
|
||||||
@@ -44,7 +44,7 @@ dependencies {
|
|||||||
testFramework(TestFrameworkType.Platform)
|
testFramework(TestFrameworkType.Platform)
|
||||||
|
|
||||||
// Add plugin dependencies for compilation here:
|
// Add plugin dependencies for compilation here:
|
||||||
|
bundledPlugin("org.jetbrains.plugins.textmate")
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -77,16 +77,12 @@ tasks {
|
|||||||
onlyIfModified(true)
|
onlyIfModified(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val processLspResources by registering {
|
val processLspResources by registering(Copy::class) {
|
||||||
|
|
||||||
dependsOn(downloadTasks)
|
dependsOn(downloadTasks)
|
||||||
inputs.dir(downloadDir)
|
|
||||||
outputs.dir(extractedDir)
|
|
||||||
|
|
||||||
doLast {
|
|
||||||
slintViewerFilenames.forEach { (filename, renamed) ->
|
slintViewerFilenames.forEach { (filename, renamed) ->
|
||||||
val fileTarget = downloadDir.get().file(filename)
|
val fileTarget = downloadDir.get().file(filename)
|
||||||
copy {
|
|
||||||
val fileTree = if (filename.endsWith("zip")) zipTree(fileTarget) else tarTree(fileTarget)
|
val fileTree = if (filename.endsWith("zip")) zipTree(fileTarget) else tarTree(fileTarget)
|
||||||
from(fileTree) {
|
from(fileTree) {
|
||||||
// 匹配压缩包内的 slint-lsp 文件夹及其内容
|
// 匹配压缩包内的 slint-lsp 文件夹及其内容
|
||||||
@@ -97,11 +93,9 @@ tasks {
|
|||||||
}
|
}
|
||||||
includeEmptyDirs = false
|
includeEmptyDirs = false
|
||||||
}
|
}
|
||||||
|
}
|
||||||
into(extractedDir)
|
into(extractedDir)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
prepareSandbox {
|
prepareSandbox {
|
||||||
dependsOn(processLspResources)
|
dependsOn(processLspResources)
|
||||||
|
|
||||||
|
|||||||
108
docs/plans/2026-01-29-slint-lsp-integration-design.md
Normal file
108
docs/plans/2026-01-29-slint-lsp-integration-design.md
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
# Slint LSP Integration Design
|
||||||
|
|
||||||
|
**Date:** 2026-01-29
|
||||||
|
**Status:** Approved
|
||||||
|
**Phase:** Phase 1 - Core LSP Features
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Implement complete Slint LSP integration into IntelliJ IDEA, enabling standard LSP features (diagnostics, completion, goto definition, hover, formatting, etc.) through IntelliJ's built-in LSP framework.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Component Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
IntelliJ IDEA (LSP Client)
|
||||||
|
↓
|
||||||
|
SlintLspServerSupportProvider (Entry point)
|
||||||
|
↓
|
||||||
|
SlintLspServerDescriptor (Server configuration)
|
||||||
|
↓
|
||||||
|
Slint LSP Server (External process)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Core Components
|
||||||
|
|
||||||
|
1. **File Type System**
|
||||||
|
- `SlintLanguage`: Language definition
|
||||||
|
- `SlintFileType`: File type definition with .slint extension
|
||||||
|
- File icon and description
|
||||||
|
|
||||||
|
2. **LSP Server Integration**
|
||||||
|
- `SlintLspServerSupportProvider`: LSP entry point (exists, needs refinement)
|
||||||
|
- `SlintLspServerDescriptor`: Server configuration (rename from FooLspServerDescriptor)
|
||||||
|
- Automatic capability negotiation via LSP initialize handshake
|
||||||
|
|
||||||
|
3. **Syntax Highlighting**
|
||||||
|
- Use TextMate grammar from official Slint VSCode extension
|
||||||
|
- `SlintTextMateProvider`: TextMate bundle provider
|
||||||
|
|
||||||
|
4. **LSP Feature Mapping** (automatic via IntelliJ)
|
||||||
|
- Diagnostics → Error/warning annotations
|
||||||
|
- Completion → Code completion UI
|
||||||
|
- Goto Definition → Ctrl+Click navigation
|
||||||
|
- Hover → Quick documentation
|
||||||
|
- Formatting → Code formatting actions
|
||||||
|
- References → Find usages
|
||||||
|
- Rename → Refactor rename
|
||||||
|
|
||||||
|
## Implementation Plan
|
||||||
|
|
||||||
|
### 1. File Type System
|
||||||
|
|
||||||
|
**Files to create:**
|
||||||
|
- `src/main/kotlin/me/zhouxi/slint/lang/SlintLanguage.kt`
|
||||||
|
- `src/main/kotlin/me/zhouxi/slint/lang/SlintFileType.kt`
|
||||||
|
|
||||||
|
**Changes to plugin.xml:**
|
||||||
|
- Register `<fileType>` extension
|
||||||
|
|
||||||
|
### 2. LSP Server Configuration
|
||||||
|
|
||||||
|
**Files to modify:**
|
||||||
|
- `src/main/kotlin/me/zhouxi/slint/lsp/SlintLspServerSupportProvider.kt`
|
||||||
|
- Rename `FooLspServerDescriptor` → `SlintLspServerDescriptor`
|
||||||
|
- Use `file.fileType == SlintFileType` instead of string comparison
|
||||||
|
|
||||||
|
### 3. Syntax Highlighting
|
||||||
|
|
||||||
|
**Resources to add:**
|
||||||
|
- Download `slint.tmLanguage.json` from Slint GitHub
|
||||||
|
- Place in `src/main/resources/textmate/`
|
||||||
|
|
||||||
|
**Files to create:**
|
||||||
|
- `src/main/kotlin/me/zhouxi/slint/lang/syntax/SlintTextMateProvider.kt`
|
||||||
|
|
||||||
|
**Changes to plugin.xml:**
|
||||||
|
- Register `<textMate.bundleProvider>` extension
|
||||||
|
|
||||||
|
### 4. Testing
|
||||||
|
|
||||||
|
**Test files to create:**
|
||||||
|
- Sample .slint files for manual testing
|
||||||
|
- Verify: diagnostics, completion, goto definition, hover, formatting
|
||||||
|
|
||||||
|
## Design Decisions
|
||||||
|
|
||||||
|
- **Use IntelliJ LSP Framework**: Leverage built-in LSP client, no manual protocol implementation
|
||||||
|
- **TextMate for Syntax**: Use official grammar, zero maintenance
|
||||||
|
- **Minimal Custom Code**: Only implement required extension points
|
||||||
|
- **Type-Safe File Detection**: Use FileType comparison instead of string extension checks
|
||||||
|
|
||||||
|
## Out of Scope (Phase 2)
|
||||||
|
|
||||||
|
- Live Preview integration (Slint-specific feature)
|
||||||
|
- Custom UI components
|
||||||
|
- Advanced project configuration
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
|
||||||
|
- .slint files recognized by IntelliJ
|
||||||
|
- LSP server starts automatically when .slint file opened
|
||||||
|
- Syntax highlighting works
|
||||||
|
- Code completion provides suggestions
|
||||||
|
- Diagnostics show errors/warnings
|
||||||
|
- Goto definition navigates correctly
|
||||||
|
- Hover shows documentation
|
||||||
|
- Code formatting works
|
||||||
547
docs/plans/2026-01-29-slint-lsp-integration.md
Normal file
547
docs/plans/2026-01-29-slint-lsp-integration.md
Normal file
@@ -0,0 +1,547 @@
|
|||||||
|
# Slint LSP Integration Implementation Plan
|
||||||
|
|
||||||
|
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
||||||
|
|
||||||
|
**Goal:** Implement complete Slint LSP integration into IntelliJ IDEA with file type system, LSP server configuration, and syntax highlighting.
|
||||||
|
|
||||||
|
**Architecture:** Use IntelliJ's built-in LSP framework to connect to Slint LSP server. Register .slint file type, configure LSP server descriptor, and add TextMate-based syntax highlighting.
|
||||||
|
|
||||||
|
**Tech Stack:** Kotlin, IntelliJ Platform SDK, LSP API, TextMate grammar
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 1: Create Slint Language Definition
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Create: `src/main/kotlin/me/zhouxi/slint/lang/SlintLanguage.kt`
|
||||||
|
|
||||||
|
**Step 1: Create SlintLanguage object**
|
||||||
|
|
||||||
|
Create the file with this content:
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
package me.zhouxi.slint.lang
|
||||||
|
|
||||||
|
import com.intellij.lang.Language
|
||||||
|
|
||||||
|
object SlintLanguage : Language("Slint") {
|
||||||
|
override fun getDisplayName(): String = "Slint"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Verify compilation**
|
||||||
|
|
||||||
|
Run: `./gradlew compileKotlin`
|
||||||
|
Expected: BUILD SUCCESSFUL
|
||||||
|
|
||||||
|
**Step 3: Commit**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add src/main/kotlin/me/zhouxi/slint/lang/SlintLanguage.kt
|
||||||
|
git commit -m "feat: add Slint language definition"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 2: Create Slint File Type
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Create: `src/main/kotlin/me/zhouxi/slint/lang/SlintFileType.kt`
|
||||||
|
|
||||||
|
**Step 1: Create SlintFileType object**
|
||||||
|
|
||||||
|
Create the file with this content:
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
package me.zhouxi.slint.lang
|
||||||
|
|
||||||
|
import com.intellij.openapi.fileTypes.LanguageFileType
|
||||||
|
import me.zhouxi.slint.icons.SlintIcons
|
||||||
|
import javax.swing.Icon
|
||||||
|
|
||||||
|
object SlintFileType : LanguageFileType(SlintLanguage) {
|
||||||
|
override fun getName(): String = "Slint"
|
||||||
|
|
||||||
|
override fun getDescription(): String = "Slint UI file"
|
||||||
|
|
||||||
|
override fun getDefaultExtension(): String = "slint"
|
||||||
|
|
||||||
|
override fun getIcon(): Icon = SlintIcons.Primary
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Verify compilation**
|
||||||
|
|
||||||
|
Run: `./gradlew compileKotlin`
|
||||||
|
Expected: BUILD SUCCESSFUL
|
||||||
|
|
||||||
|
**Step 3: Commit**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add src/main/kotlin/me/zhouxi/slint/lang/SlintFileType.kt
|
||||||
|
git commit -m "feat: add Slint file type definition"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 3: Register File Type in plugin.xml
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Modify: `src/main/resources/META-INF/plugin.xml`
|
||||||
|
|
||||||
|
**Step 1: Add fileType extension**
|
||||||
|
|
||||||
|
Add this inside the `<extensions defaultExtensionNs="com.intellij">` block:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<fileType
|
||||||
|
name="Slint"
|
||||||
|
implementationClass="me.zhouxi.slint.lang.SlintFileType"
|
||||||
|
fieldName="INSTANCE"
|
||||||
|
language="Slint"
|
||||||
|
extensions="slint"/>
|
||||||
|
```
|
||||||
|
|
||||||
|
The complete extensions block should look like:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
|
<fileType
|
||||||
|
name="Slint"
|
||||||
|
implementationClass="me.zhouxi.slint.lang.SlintFileType"
|
||||||
|
fieldName="INSTANCE"
|
||||||
|
language="Slint"
|
||||||
|
extensions="slint"/>
|
||||||
|
<platform.lsp.serverSupportProvider implementation="me.zhouxi.slint.lsp.SlintLspServerSupportProvider"/>
|
||||||
|
</extensions>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Verify plugin configuration**
|
||||||
|
|
||||||
|
Run: `./gradlew verifyPluginProjectConfiguration`
|
||||||
|
Expected: BUILD SUCCESSFUL
|
||||||
|
|
||||||
|
**Step 3: Commit**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add src/main/resources/META-INF/plugin.xml
|
||||||
|
git commit -m "feat: register Slint file type in plugin.xml"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 4: Update LSP Server Descriptor
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Modify: `src/main/kotlin/me/zhouxi/slint/lsp/SlintLspServerSupportProvider.kt`
|
||||||
|
|
||||||
|
**Step 1: Add import for SlintFileType**
|
||||||
|
|
||||||
|
Add this import at the top:
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
import me.zhouxi.slint.lang.SlintFileType
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Rename FooLspServerDescriptor to SlintLspServerDescriptor**
|
||||||
|
|
||||||
|
Change line 20 from:
|
||||||
|
```kotlin
|
||||||
|
serverStarter.ensureServerStarted(FooLspServerDescriptor(project))
|
||||||
|
```
|
||||||
|
|
||||||
|
To:
|
||||||
|
```kotlin
|
||||||
|
serverStarter.ensureServerStarted(SlintLspServerDescriptor(project))
|
||||||
|
```
|
||||||
|
|
||||||
|
Change line 34 from:
|
||||||
|
```kotlin
|
||||||
|
private class FooLspServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "Slint") {
|
||||||
|
```
|
||||||
|
|
||||||
|
To:
|
||||||
|
```kotlin
|
||||||
|
private class SlintLspServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "Slint") {
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 3: Update file type checking to use SlintFileType**
|
||||||
|
|
||||||
|
Change line 19 from:
|
||||||
|
```kotlin
|
||||||
|
if (file.extension == "slint") {
|
||||||
|
```
|
||||||
|
|
||||||
|
To:
|
||||||
|
```kotlin
|
||||||
|
if (file.fileType == SlintFileType) {
|
||||||
|
```
|
||||||
|
|
||||||
|
Change line 35 from:
|
||||||
|
```kotlin
|
||||||
|
override fun isSupportedFile(file: VirtualFile) = file.extension == "slint"
|
||||||
|
```
|
||||||
|
|
||||||
|
To:
|
||||||
|
```kotlin
|
||||||
|
override fun isSupportedFile(file: VirtualFile) = file.fileType == SlintFileType
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 4: Verify compilation**
|
||||||
|
|
||||||
|
Run: `./gradlew compileKotlin`
|
||||||
|
Expected: BUILD SUCCESSFUL
|
||||||
|
|
||||||
|
**Step 5: Commit**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add src/main/kotlin/me/zhouxi/slint/lsp/SlintLspServerSupportProvider.kt
|
||||||
|
git commit -m "refactor: use SlintFileType for type-safe file detection"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 5: Download TextMate Grammar File
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Create: `src/main/resources/textmate/slint.tmLanguage.json`
|
||||||
|
|
||||||
|
**Step 1: Create textmate directory**
|
||||||
|
|
||||||
|
Run: `mkdir -p src/main/resources/textmate`
|
||||||
|
|
||||||
|
**Step 2: Download Slint TextMate grammar**
|
||||||
|
|
||||||
|
Run:
|
||||||
|
```bash
|
||||||
|
curl -o src/main/resources/textmate/slint.tmLanguage.json \
|
||||||
|
https://raw.githubusercontent.com/slint-ui/slint/master/editors/vscode/syntaxes/slint.tmLanguage.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Expected: File downloaded successfully
|
||||||
|
|
||||||
|
**Step 3: Verify file exists and is valid JSON**
|
||||||
|
|
||||||
|
Run: `cat src/main/resources/textmate/slint.tmLanguage.json | head -20`
|
||||||
|
Expected: Should see JSON content starting with `{` and containing `"scopeName": "source.slint"`
|
||||||
|
|
||||||
|
**Step 4: Commit**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add src/main/resources/textmate/slint.tmLanguage.json
|
||||||
|
git commit -m "feat: add Slint TextMate grammar for syntax highlighting"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 6: Create TextMate Bundle Provider
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Create: `src/main/kotlin/me/zhouxi/slint/lang/syntax/SlintTextMateProvider.kt`
|
||||||
|
|
||||||
|
**Step 1: Create syntax directory**
|
||||||
|
|
||||||
|
Run: `mkdir -p src/main/kotlin/me/zhouxi/slint/lang/syntax`
|
||||||
|
|
||||||
|
**Step 2: Create SlintTextMateProvider class**
|
||||||
|
|
||||||
|
Create the file with this content:
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
package me.zhouxi.slint.lang.syntax
|
||||||
|
|
||||||
|
import org.jetbrains.plugins.textmate.api.TextMateBundle
|
||||||
|
import org.jetbrains.plugins.textmate.api.TextMateBundleProvider
|
||||||
|
|
||||||
|
class SlintTextMateProvider : TextMateBundleProvider {
|
||||||
|
override fun getBundles(): List<TextMateBundle> {
|
||||||
|
return listOf(
|
||||||
|
TextMateBundle(
|
||||||
|
"Slint",
|
||||||
|
"textmate/slint.tmLanguage.json",
|
||||||
|
SlintTextMateProvider::class.java.classLoader
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 3: Verify compilation**
|
||||||
|
|
||||||
|
Run: `./gradlew compileKotlin`
|
||||||
|
Expected: BUILD SUCCESSFUL
|
||||||
|
|
||||||
|
**Step 4: Commit**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add src/main/kotlin/me/zhouxi/slint/lang/syntax/SlintTextMateProvider.kt
|
||||||
|
git commit -m "feat: add TextMate bundle provider for Slint syntax highlighting"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 7: Register TextMate Bundle Provider
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Modify: `src/main/resources/META-INF/plugin.xml`
|
||||||
|
|
||||||
|
**Step 1: Add textMate.bundleProvider extension**
|
||||||
|
|
||||||
|
Add this inside the `<extensions defaultExtensionNs="com.intellij">` block:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<textMate.bundleProvider implementation="me.zhouxi.slint.lang.syntax.SlintTextMateProvider"/>
|
||||||
|
```
|
||||||
|
|
||||||
|
The complete extensions block should now look like:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
|
<fileType
|
||||||
|
name="Slint"
|
||||||
|
implementationClass="me.zhouxi.slint.lang.SlintFileType"
|
||||||
|
fieldName="INSTANCE"
|
||||||
|
language="Slint"
|
||||||
|
extensions="slint"/>
|
||||||
|
<platform.lsp.serverSupportProvider implementation="me.zhouxi.slint.lsp.SlintLspServerSupportProvider"/>
|
||||||
|
<textMate.bundleProvider implementation="me.zhouxi.slint.lang.syntax.SlintTextMateProvider"/>
|
||||||
|
</extensions>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Verify plugin configuration**
|
||||||
|
|
||||||
|
Run: `./gradlew verifyPluginProjectConfiguration`
|
||||||
|
Expected: BUILD SUCCESSFUL
|
||||||
|
|
||||||
|
**Step 3: Commit**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add src/main/resources/META-INF/plugin.xml
|
||||||
|
git commit -m "feat: register TextMate bundle provider in plugin.xml"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 8: Build and Test Plugin
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Create: `test-files/hello.slint` (for manual testing)
|
||||||
|
|
||||||
|
**Step 1: Create test directory and sample Slint file**
|
||||||
|
|
||||||
|
Run:
|
||||||
|
```bash
|
||||||
|
mkdir -p test-files
|
||||||
|
cat > test-files/hello.slint << 'EOF'
|
||||||
|
import { Button, VerticalBox } from "std-widgets.slint";
|
||||||
|
|
||||||
|
export component HelloWorld inherits Window {
|
||||||
|
width: 400px;
|
||||||
|
height: 300px;
|
||||||
|
|
||||||
|
VerticalBox {
|
||||||
|
alignment: center;
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: "Hello, World!";
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
text: "Click me";
|
||||||
|
clicked => {
|
||||||
|
debug("Button clicked!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Build the plugin**
|
||||||
|
|
||||||
|
Run: `./gradlew buildPlugin`
|
||||||
|
Expected: BUILD SUCCESSFUL, plugin ZIP created in `build/distributions/`
|
||||||
|
|
||||||
|
**Step 3: Run plugin in sandbox IDE**
|
||||||
|
|
||||||
|
Run: `./gradlew runIde`
|
||||||
|
Expected: IntelliJ IDEA opens with plugin installed
|
||||||
|
|
||||||
|
**Step 4: Manual testing checklist**
|
||||||
|
|
||||||
|
In the sandbox IDE:
|
||||||
|
1. Open `test-files/hello.slint`
|
||||||
|
2. Verify: File icon shows Slint logo
|
||||||
|
3. Verify: Syntax highlighting is applied (keywords, strings, comments colored)
|
||||||
|
4. Verify: LSP server starts (check status bar widget)
|
||||||
|
5. Verify: Type `Butt` and trigger completion (Ctrl+Space) - should suggest `Button`
|
||||||
|
6. Verify: Hover over `Button` - should show documentation
|
||||||
|
7. Verify: Ctrl+Click on `Button` - should jump to definition
|
||||||
|
8. Verify: Introduce syntax error (e.g., remove semicolon) - should show red underline
|
||||||
|
9. Verify: Format code (Ctrl+Alt+L) - should format the file
|
||||||
|
|
||||||
|
**Step 5: Document test results**
|
||||||
|
|
||||||
|
Create a file documenting what works:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat > test-files/TEST_RESULTS.md << 'EOF'
|
||||||
|
# Slint LSP Integration Test Results
|
||||||
|
|
||||||
|
Date: 2026-01-29
|
||||||
|
|
||||||
|
## Test Environment
|
||||||
|
- IntelliJ IDEA: 2025.2.4
|
||||||
|
- Slint LSP Version: 1.14.1
|
||||||
|
- Plugin Version: 1.0-SNAPSHOT
|
||||||
|
|
||||||
|
## Test Results
|
||||||
|
|
||||||
|
### File Type Recognition
|
||||||
|
- [ ] .slint files show Slint icon
|
||||||
|
- [ ] File type is recognized as "Slint"
|
||||||
|
|
||||||
|
### Syntax Highlighting
|
||||||
|
- [ ] Keywords highlighted (import, export, component, inherits)
|
||||||
|
- [ ] Strings highlighted
|
||||||
|
- [ ] Comments highlighted
|
||||||
|
- [ ] Properties highlighted
|
||||||
|
|
||||||
|
### LSP Features
|
||||||
|
- [ ] LSP server starts automatically
|
||||||
|
- [ ] Code completion works
|
||||||
|
- [ ] Hover documentation works
|
||||||
|
- [ ] Goto definition works
|
||||||
|
- [ ] Diagnostics show errors/warnings
|
||||||
|
- [ ] Code formatting works
|
||||||
|
- [ ] Find references works
|
||||||
|
- [ ] Rename refactoring works
|
||||||
|
|
||||||
|
## Issues Found
|
||||||
|
(Document any issues here)
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
(Any additional observations)
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 6: Commit test files**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add test-files/
|
||||||
|
git commit -m "test: add sample Slint file and test results template"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 9: Update CLAUDE.md Documentation
|
||||||
|
|
||||||
|
**Files:**
|
||||||
|
- Modify: `CLAUDE.md`
|
||||||
|
|
||||||
|
**Step 1: Add testing section to CLAUDE.md**
|
||||||
|
|
||||||
|
Add this section before "## Development Notes":
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Testing the Plugin
|
||||||
|
|
||||||
|
### Manual Testing
|
||||||
|
|
||||||
|
1. **Build and run in sandbox:**
|
||||||
|
```bash
|
||||||
|
./gradlew runIde
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Test with sample file:**
|
||||||
|
- Open `test-files/hello.slint`
|
||||||
|
- Verify file icon, syntax highlighting, and LSP features
|
||||||
|
|
||||||
|
3. **Test LSP features:**
|
||||||
|
- Code completion: Type and press Ctrl+Space
|
||||||
|
- Goto definition: Ctrl+Click on symbols
|
||||||
|
- Hover: Mouse over symbols
|
||||||
|
- Diagnostics: Introduce syntax errors
|
||||||
|
- Formatting: Ctrl+Alt+L
|
||||||
|
|
||||||
|
### Verify LSP Server
|
||||||
|
|
||||||
|
Check LSP server status in the status bar (bottom right). Should show "Slint" when a .slint file is open.
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
- **LSP server not starting**: Check that LSP binary exists in sandbox at `sandbox/plugins/slint/lsp/slint-lsp-{platform}`
|
||||||
|
- **No syntax highlighting**: Verify TextMate grammar file is in resources
|
||||||
|
- **No completion**: Check LSP server logs in `idea.log`
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2: Commit documentation update**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add CLAUDE.md
|
||||||
|
git commit -m "docs: add testing instructions to CLAUDE.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task 10: Final Verification and Cleanup
|
||||||
|
|
||||||
|
**Step 1: Run all verification tasks**
|
||||||
|
|
||||||
|
Run:
|
||||||
|
```bash
|
||||||
|
./gradlew clean build verifyPlugin
|
||||||
|
```
|
||||||
|
|
||||||
|
Expected: All tasks complete successfully
|
||||||
|
|
||||||
|
**Step 2: Check plugin structure**
|
||||||
|
|
||||||
|
Run: `./gradlew buildPlugin && unzip -l build/distributions/slint-1.0-SNAPSHOT.zip | grep -E "(slint-lsp|\.slint\.tmLanguage)"`
|
||||||
|
|
||||||
|
Expected: Should see LSP binaries and TextMate grammar in the plugin ZIP
|
||||||
|
|
||||||
|
**Step 3: Review all changes**
|
||||||
|
|
||||||
|
Run: `git log --oneline --graph`
|
||||||
|
|
||||||
|
Expected: Should see all commits from this implementation
|
||||||
|
|
||||||
|
**Step 4: Create final summary commit**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add -A
|
||||||
|
git commit -m "feat: complete Slint LSP integration with file type, syntax highlighting, and LSP features
|
||||||
|
|
||||||
|
- Added SlintLanguage and SlintFileType definitions
|
||||||
|
- Registered .slint file type with IntelliJ
|
||||||
|
- Integrated Slint LSP server with type-safe file detection
|
||||||
|
- Added TextMate-based syntax highlighting
|
||||||
|
- Included test files and documentation
|
||||||
|
- All standard LSP features now available: completion, diagnostics, goto definition, hover, formatting, references, rename"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
|
||||||
|
✅ .slint files recognized by IntelliJ with proper icon
|
||||||
|
✅ Syntax highlighting works using TextMate grammar
|
||||||
|
✅ LSP server starts automatically when .slint file opened
|
||||||
|
✅ Code completion provides suggestions
|
||||||
|
✅ Diagnostics show errors and warnings
|
||||||
|
✅ Goto definition navigates correctly
|
||||||
|
✅ Hover shows documentation
|
||||||
|
✅ Code formatting works
|
||||||
|
✅ Find references works
|
||||||
|
✅ Rename refactoring works
|
||||||
|
✅ Plugin builds and runs in sandbox IDE
|
||||||
|
✅ All changes committed with clear messages
|
||||||
|
|
||||||
|
## Next Steps (Phase 2)
|
||||||
|
|
||||||
|
- Implement live preview integration (Slint-specific feature)
|
||||||
|
- Add project configuration UI
|
||||||
|
- Optimize LSP server startup time
|
||||||
|
- Add more comprehensive tests
|
||||||
5
idea-sandbox/config-test/options/updates.xml
Normal file
5
idea-sandbox/config-test/options/updates.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="UpdatesConfigurable">
|
||||||
|
<option name="CHECK_NEEDED" value="false" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
BIN
idea-sandbox/config/app-internal-state.db
Normal file
BIN
idea-sandbox/config/app-internal-state.db
Normal file
Binary file not shown.
248
idea-sandbox/config/bundled_plugins.txt
Normal file
248
idea-sandbox/config/bundled_plugins.txt
Normal file
@@ -0,0 +1,248 @@
|
|||||||
|
ByteCodeViewer|Other Tools
|
||||||
|
|
||||||
|
JBoss|Deployment
|
||||||
|
|
||||||
|
JSIntentionPowerPack|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
JUnit|Test Tools
|
||||||
|
|
||||||
|
JavaScriptDebugger|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
JavaScript|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
Karma|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
Lombook Plugin|JVM Frameworks
|
||||||
|
|
||||||
|
NodeJS|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
Refactor-X|HTML and XML
|
||||||
|
|
||||||
|
Remote Development Server|null
|
||||||
|
|
||||||
|
TestNG-J|Test Tools
|
||||||
|
|
||||||
|
Tomcat|Deployment
|
||||||
|
|
||||||
|
com.deadlock.scsyntax|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
com.intellij.LineProfiler|null
|
||||||
|
|
||||||
|
com.intellij.analysis.pwa.java|null
|
||||||
|
|
||||||
|
com.intellij.analysis.pwa|null
|
||||||
|
|
||||||
|
com.intellij.aop|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.beanValidation|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.cdi|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.completion.ml.ranking|Local AI/ML Tools
|
||||||
|
|
||||||
|
com.intellij.configurationScript|null
|
||||||
|
|
||||||
|
com.intellij.copyright|Other Tools
|
||||||
|
|
||||||
|
com.intellij.css|Style Sheets
|
||||||
|
|
||||||
|
com.intellij.database|Database
|
||||||
|
|
||||||
|
com.intellij.dev|null
|
||||||
|
|
||||||
|
com.intellij.diagram|Other Tools
|
||||||
|
|
||||||
|
com.intellij.dsm|Other Tools
|
||||||
|
|
||||||
|
com.intellij.freemarker|Template Languages
|
||||||
|
|
||||||
|
com.intellij.grpc|Microservices
|
||||||
|
|
||||||
|
com.intellij.hibernate|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.java-i18n|Other Tools
|
||||||
|
|
||||||
|
com.intellij.java.ide|null
|
||||||
|
|
||||||
|
com.intellij.javaee.app.servers.integration|Deployment
|
||||||
|
|
||||||
|
com.intellij.javaee.el|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.javaee.extensions|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.javaee.jpa|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.javaee.web|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.javaee|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.java|null
|
||||||
|
|
||||||
|
com.intellij.jsonpath|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
com.intellij.jsp|Template Languages
|
||||||
|
|
||||||
|
com.intellij.llmInstaller|Other Tools
|
||||||
|
|
||||||
|
com.intellij.micronaut|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.microservices.jvm|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.microservices.ui|Microservices
|
||||||
|
|
||||||
|
com.intellij.openRewrite|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.persistence|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.platform.ide.provisioner|null
|
||||||
|
|
||||||
|
com.intellij.platform.images|null
|
||||||
|
|
||||||
|
com.intellij.plugins.webcomponents|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
com.intellij.properties|Languages
|
||||||
|
|
||||||
|
com.intellij.quarkus|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.reactivestreams|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.react|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
com.intellij.searcheverywhere.ml|Local AI/ML Tools
|
||||||
|
|
||||||
|
com.intellij.spring.boot.initializr|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.spring.boot|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.spring.cloud|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.spring.data|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.spring.integration|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.spring.messaging|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.spring.mvc|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.spring.security|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.spring|JVM Frameworks
|
||||||
|
|
||||||
|
com.intellij.stylelint|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
com.intellij.swagger|Microservices
|
||||||
|
|
||||||
|
com.intellij.tailwindcss|Style Sheets
|
||||||
|
|
||||||
|
com.intellij.tasks.timeTracking|Other Tools
|
||||||
|
|
||||||
|
com.intellij.tasks|Other Tools
|
||||||
|
|
||||||
|
com.intellij.thymeleaf|Template Languages
|
||||||
|
|
||||||
|
com.intellij.tracing.ide|null
|
||||||
|
|
||||||
|
com.intellij.turboComplete|Local AI/ML Tools
|
||||||
|
|
||||||
|
com.intellij.velocity|Template Languages
|
||||||
|
|
||||||
|
com.intellij|null
|
||||||
|
|
||||||
|
com.jetbrains.performancePlugin.async|Other Tools
|
||||||
|
|
||||||
|
com.jetbrains.performancePlugin.dynamicPlugins|null
|
||||||
|
|
||||||
|
com.jetbrains.performancePlugin|Other Tools
|
||||||
|
|
||||||
|
com.jetbrains.plugins.webDeployment|Deployment
|
||||||
|
|
||||||
|
com.jetbrains.restClient|Microservices
|
||||||
|
|
||||||
|
com.jetbrains.restWebServices|JVM Frameworks
|
||||||
|
|
||||||
|
com.jetbrains.sh|Languages
|
||||||
|
|
||||||
|
com.jetbrains.warmup.performanceTesting|null
|
||||||
|
|
||||||
|
idea.plugin.protoeditor|Microservices
|
||||||
|
|
||||||
|
intellij.caches.shared|null
|
||||||
|
|
||||||
|
intellij.charts|null
|
||||||
|
|
||||||
|
intellij.grid.core.impl|null
|
||||||
|
|
||||||
|
intellij.grid.impl|null
|
||||||
|
|
||||||
|
intellij.indexing.shared.core|null
|
||||||
|
|
||||||
|
intellij.indexing.shared|null
|
||||||
|
|
||||||
|
intellij.nextjs|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
intellij.platform.ijent.impl|Deployment
|
||||||
|
|
||||||
|
intellij.prettierJS|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
intellij.vitejs|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
intellij.webpack|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
intellij.webp|null
|
||||||
|
|
||||||
|
org.editorconfig.editorconfigjetbrains|Other Tools
|
||||||
|
|
||||||
|
org.intellij.groovy|Languages
|
||||||
|
|
||||||
|
org.intellij.intelliLang|Other Tools
|
||||||
|
|
||||||
|
org.intellij.plugins.markdown|Languages
|
||||||
|
|
||||||
|
org.intellij.plugins.postcss|Style Sheets
|
||||||
|
|
||||||
|
org.jetbrains.completion.full.line|Local AI/ML Tools
|
||||||
|
|
||||||
|
org.jetbrains.debugger.streams|Other Tools
|
||||||
|
|
||||||
|
org.jetbrains.idea.eclipse|Other Tools
|
||||||
|
|
||||||
|
org.jetbrains.idea.maven.ext|Build Tools
|
||||||
|
|
||||||
|
org.jetbrains.idea.maven.model|null
|
||||||
|
|
||||||
|
org.jetbrains.idea.maven.server.api|null
|
||||||
|
|
||||||
|
org.jetbrains.idea.maven|Build Tools
|
||||||
|
|
||||||
|
org.jetbrains.idea.reposearch|null
|
||||||
|
|
||||||
|
org.jetbrains.java.decompiler|Other Tools
|
||||||
|
|
||||||
|
org.jetbrains.kotlin|Languages
|
||||||
|
|
||||||
|
org.jetbrains.plugins.less|Style Sheets
|
||||||
|
|
||||||
|
org.jetbrains.plugins.node-remote-interpreter|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
org.jetbrains.plugins.remote-run|null
|
||||||
|
|
||||||
|
org.jetbrains.plugins.sass|Style Sheets
|
||||||
|
|
||||||
|
org.jetbrains.plugins.terminal|Other Tools
|
||||||
|
|
||||||
|
org.jetbrains.plugins.textmate|Other Tools
|
||||||
|
|
||||||
|
org.jetbrains.plugins.vue|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
|
org.jetbrains.plugins.wsl.remoteSdk|null
|
||||||
|
|
||||||
|
org.jetbrains.plugins.yaml|Languages
|
||||||
|
|
||||||
|
org.jetbrains.security.package-checker|null
|
||||||
|
|
||||||
|
org.toml.lang|Languages
|
||||||
|
|
||||||
|
tanvd.grazi|null
|
||||||
|
|
||||||
|
tslint|JavaScript Frameworks and Tools
|
||||||
|
|
||||||
1
idea-sandbox/config/codestyles/Default.xml
Normal file
1
idea-sandbox/config/codestyles/Default.xml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<code_scheme name="Default" version="173" />
|
||||||
33
idea-sandbox/config/disabled_plugins.txt
Normal file
33
idea-sandbox/config/disabled_plugins.txt
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
AngularJS
|
||||||
|
AntSupport
|
||||||
|
Coverage
|
||||||
|
Docker
|
||||||
|
Git4Idea
|
||||||
|
HtmlTools
|
||||||
|
PerforceDirectPlugin
|
||||||
|
Subversion
|
||||||
|
XPathView
|
||||||
|
com.android.tools.design
|
||||||
|
com.intellij.flyway
|
||||||
|
com.intellij.gradle
|
||||||
|
com.intellij.javaee.reverseEngineering
|
||||||
|
com.intellij.kubernetes
|
||||||
|
com.intellij.liquibase
|
||||||
|
com.intellij.plugins.eclipsekeymap
|
||||||
|
com.intellij.plugins.netbeanskeymap
|
||||||
|
com.intellij.plugins.visualstudiokeymap
|
||||||
|
com.intellij.settingsSync
|
||||||
|
com.intellij.uiDesigner
|
||||||
|
com.jetbrains.codeWithMe
|
||||||
|
com.jetbrains.gateway
|
||||||
|
com.jetbrains.space
|
||||||
|
hg4idea
|
||||||
|
intellij.ktor
|
||||||
|
org.intellij.qodana
|
||||||
|
org.jetbrains.android
|
||||||
|
org.jetbrains.idea.gradle.ext
|
||||||
|
org.jetbrains.plugins.docker.gateway
|
||||||
|
org.jetbrains.plugins.github
|
||||||
|
org.jetbrains.plugins.gitlab
|
||||||
|
org.jetbrains.plugins.javaFX
|
||||||
|
training
|
||||||
4
idea-sandbox/config/early-access-registry.txt
Normal file
4
idea-sandbox/config/early-access-registry.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
ide.experimental.ui
|
||||||
|
true
|
||||||
|
idea.plugins.compatible.build
|
||||||
|
|
||||||
12036
idea-sandbox/config/event-log-metadata/fus/events-scheme.json
Normal file
12036
idea-sandbox/config/event-log-metadata/fus/events-scheme.json
Normal file
File diff suppressed because one or more lines are too long
348
idea-sandbox/config/event-log-metadata/mlse/events-scheme.json
Normal file
348
idea-sandbox/config/event-log-metadata/mlse/events-scheme.json
Normal file
@@ -0,0 +1,348 @@
|
|||||||
|
{
|
||||||
|
"groups" : [ {
|
||||||
|
"id" : "mlse.event.log",
|
||||||
|
"builds" : [ ],
|
||||||
|
"versions" : [ {
|
||||||
|
"from" : "1"
|
||||||
|
} ],
|
||||||
|
"rules" : {
|
||||||
|
"event_id" : [ "{enum#__event_id}" ],
|
||||||
|
"event_data" : {
|
||||||
|
"code" : [ "{regexp#integer}" ],
|
||||||
|
"error" : [ "{util#class_name}", "{enum:EMPTY_CONTENT|INVALID_JSON|UNKNOWN}", "{enum:EMPTY_SERVICE_URL|UNREACHABLE_SERVICE|EMPTY_RESPONSE_BODY|ERROR_ON_LOAD}" ],
|
||||||
|
"error_ts" : [ "{regexp#integer}" ],
|
||||||
|
"errors" : [ "{regexp#integer}" ],
|
||||||
|
"external" : [ "{enum#boolean}" ],
|
||||||
|
"failed" : [ "{regexp#integer}" ],
|
||||||
|
"paths" : [ "{regexp#hash}" ],
|
||||||
|
"send" : [ "{regexp#integer}" ],
|
||||||
|
"stage" : [ "{enum:LOADING|PARSING}" ],
|
||||||
|
"succeed" : [ "{regexp#integer}" ],
|
||||||
|
"total" : [ "{regexp#integer}" ],
|
||||||
|
"version" : [ "{regexp#version}" ]
|
||||||
|
},
|
||||||
|
"enums" : {
|
||||||
|
"__event_id" : [ "logs.send", "loading.config.failed", "metadata.loaded", "metadata.updated", "metadata.update.failed", "metadata.load.failed" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"anonymized_fields" : [ {
|
||||||
|
"event" : "logs.send",
|
||||||
|
"fields" : [ "paths" ]
|
||||||
|
} ]
|
||||||
|
}, {
|
||||||
|
"id" : "mlse.log",
|
||||||
|
"builds" : [ ],
|
||||||
|
"versions" : [ {
|
||||||
|
"from" : "2"
|
||||||
|
} ],
|
||||||
|
"rules" : {
|
||||||
|
"event_id" : [ "{enum:sessionFinished|searchRestarted|key.not.computed}" ],
|
||||||
|
"event_data" : {
|
||||||
|
"closePopup" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.absentFeatures" : [ "{util#mlse_element_feature}" ],
|
||||||
|
"collectedItems.actionId" : [ "{util#action}", "{enum#action}" ],
|
||||||
|
"collectedItems.contributor.contributorId" : [ "{enum:SearchEverywhereContributor.All|ClassSearchEverywhereContributor|FileSearchEverywhereContributor|RecentFilesSEContributor|SymbolSearchEverywhereContributor|ActionSearchEverywhereContributor|RunConfigurationsSEContributor|CommandsContributor|TopHitSEContributor|com.intellij.ide.actions.searcheverywhere.CalculatorSEContributor|TmsSearchEverywhereContributor|YAMLKeysSearchEverywhereContributor|UrlSearchEverywhereContributor|Vcs.Git|AutocompletionContributor|TextSearchContributor|DbSETablesContributor|third.party}", "{enum:SearchEverywhereSpellingCorrectorContributor}", "{enum:SemanticActionSearchEverywhereContributor}" ],
|
||||||
|
"collectedItems.contributor.contributorIsMostPopular" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.contributor.contributorPopularityIndex" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.contributor.contributorPriority" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.contributor.contributorWeight" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.contributorId" : [ "{enum#se_tab}" ],
|
||||||
|
"collectedItems.features.actionSimilarityScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.allInitialLettersMatch" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.asActionPureSemantic" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.authoritiesSize" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.directoryDepth" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.fileGroup" : [ "{enum:MAIN|BUILD|CHANGELOG|CONFIG|README}" ],
|
||||||
|
"collectedItems.features.fileStatus" : [ "{enum#vcs_file_status}" ],
|
||||||
|
"collectedItems.features.fileType" : [ "{util#file_type}" ],
|
||||||
|
"collectedItems.features.fileTypeMatchesQuery" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.fileTypeUsageRatio" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.fileTypeUsageRatioToMax" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.fileTypeUsageRatioToMin" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.fileTypeUsedInLastDay" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.fileTypeUsedInLastHour" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.fileTypeUsedInLastMinute" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.fileTypeUsedInLastMonth" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.fromConfigurable" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.globalUsage" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.globalUsageToMax" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.globalUsageToMaxV1" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.globalUsageToMaxV2" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.globalUsageToMaxV3" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.globalUsageToMaxV4" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.globalUsageV1" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.globalUsageV2" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.globalUsageV3" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.globalUsageV4" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.groupLength" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.heuristicPriority" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.isAbbreviation" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isAccessibleFromModule" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isAction" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isActionPureSemantic" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isBookmark" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isBooleanOption" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isChanged" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isDeprecated" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isDirectory" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isEditorAction" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isEnabled" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isExactMatch" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isExactRelativePath" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isFavorite" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isFromLibrary" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isGroup" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isHighPriority" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isIgnored" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isInComment" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isInExcluded" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isInSource" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isInTestSources" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isInvalid" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isNotDefault" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isOpened" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isOption" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isPureSemantic" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isRegistryOption" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isSameFileTypeAsOpenedFile" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isSameModule" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isSearchAction" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isSemanticOnly" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isShared" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isTemporary" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isToggleAction" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.isTopLevel" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaIsAbstract" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaIsInner" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaIsInstantiatable" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaIsInterface" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaIsLocalOrAnonymous" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaIsPrivate" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaIsProtected" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaIsPublic" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaIsStatic" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.javaNumberOfAllFields" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.javaNumberOfAllMethods" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.javaNumberOfAnnotations" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.javaNumberOfDeprecatedFields" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.javaNumberOfDeprecatedMethods" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.javaNumberOfFields" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.javaNumberOfMethods" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.javaNumberOfSupers" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.keyIsInTop5RecentlyUsed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.keyIsMostPopular" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.keyIsMostRecentlyUsed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.keyNeverUsed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsAbstract" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsData" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsDocumented" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsEnum" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsInline" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsInner" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsInterface" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsInternal" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsLocalOrAnon" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsObject" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsOpen" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsPrivate" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsProtected" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsPublic" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsSAM" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsSealed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinIsValue" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.kotlinNumberOfDeclarations" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.kotlinNumberOfDocs" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.kotlinNumberOfMethods" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.kotlinNumberOfOverridden" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.kotlinNumberOfProperties" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.kotlinNumberOfReceivers" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.kotlinNumberOfSupers" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.langIsInTop3MostUsed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.langIsMostUsed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.langNeverUsed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.langSameAsOpenedFile" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.langUseCount" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.langUsedInLastDay" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.langUsedInLastMonth" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.langUsedInLastWeek" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.language" : [ "{util#lang}" ],
|
||||||
|
"collectedItems.features.matchMode" : [ "{enum:NONE|INTENTION|NAME|DESCRIPTION|GROUP|NON_MENU|SYNONYM}" ],
|
||||||
|
"collectedItems.features.mlScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.nameLength" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.packageDistance" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.packageDistanceNorm" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.parentStatIsMostPopular" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.parentStatIsMostRecent" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.parentStatRecency" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.parentStatUseCount" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.pluginId" : [ "{util#plugin}" ],
|
||||||
|
"collectedItems.features.pluginType" : [ "{enum#plugin_type}" ],
|
||||||
|
"collectedItems.features.predictionScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.prefixExact" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.prefixGreedyScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.prefixGreedyWithCaseScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.prefixMatchedLastWord" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.prefixMatchedWordsRelative" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.prefixMatchedWordsScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.prefixMatchedWordsWithCaseRelative" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.prefixMatchedWordsWithCaseScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.prefixMatchingType" : [ "{enum#query_matching_type}" ],
|
||||||
|
"collectedItems.features.prefixSameStartCount" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.prefixSkippedWords" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.priority" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.recentFilesIndex" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.relPathPrefixGreedyScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.relPathPrefixMatchedWordsRelative" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.relPathPrefixMatchedWordsScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.relPathPrefixSameStartCount" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.runConfigType" : [ "{util#run_config_type}" ],
|
||||||
|
"collectedItems.features.schemes" : [ "{enum:http|https|ws|wss}" ],
|
||||||
|
"collectedItems.features.segmentsTotal" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.similarityScore" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.statIsMostPopular" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.statIsMostRecent" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.statRecency" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.statUseCount" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.suggestionConfidence" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.textLength" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.timeSinceLastFileTypeUsage" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.timeSinceLastModification" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.timeSinceLastUsage" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.timeSinceLastUsageSe" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.totalSymbolsAmount" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.type" : [ "{enum:ABBREVIATION|INTENTION|TOP_HIT|OPTION|ACTION}", "{enum:SEMANTIC}" ],
|
||||||
|
"collectedItems.features.typeWeight" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.usage" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.usageSe" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.usageToMax" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usageToMaxSe" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usagesPerUserRatio" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usagesPerUserRatioV1" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usagesPerUserRatioV2" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usagesPerUserRatioV3" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usagesPerUserRatioV4" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usersRatio" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usersRatioV1" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usersRatioV2" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usersRatioV3" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.usersRatioV4" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.variablesTotal" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.wasModifiedInLastDay" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasModifiedInLastHour" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasModifiedInLastMinute" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasModifiedInLastMonth" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasUsedInLastDay" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasUsedInLastDaySe" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasUsedInLastHour" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasUsedInLastHourSe" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasUsedInLastMinute" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasUsedInLastMinuteSe" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasUsedInLastMonth" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.wasUsedInLastMonthSe" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.weight" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.features.withIcon" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.yamlFileModifiedInLastDay" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.yamlFileModifiedInLastHour" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.yamlFileModifiedInLastMonth" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.yamlFileModifiedInLastWeek" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.yamlFileRecencyIndex" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.features.yamlKeyIsInTop5RecentlyUsed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.yamlKeyIsMostPopular" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.yamlKeyIsMostRecentlyUsed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.yamlKeyNeverUsed" : [ "{enum#boolean}" ],
|
||||||
|
"collectedItems.features.yamlTimeSinceLastModification" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.id" : [ "{regexp#integer}" ],
|
||||||
|
"collectedItems.mlWeight" : [ "{regexp#float}" ],
|
||||||
|
"collectedItems.priority" : [ "{regexp#integer}" ],
|
||||||
|
"contributors.id" : [ "{enum:SearchEverywhereContributor.All|ClassSearchEverywhereContributor|FileSearchEverywhereContributor|RecentFilesSEContributor|SymbolSearchEverywhereContributor|ActionSearchEverywhereContributor|RunConfigurationsSEContributor|CommandsContributor|TopHitSEContributor|com.intellij.ide.actions.searcheverywhere.CalculatorSEContributor|TmsSearchEverywhereContributor|YAMLKeysSearchEverywhereContributor|UrlSearchEverywhereContributor|Vcs.Git|AutocompletionContributor|TextSearchContributor|DbSETablesContributor|third.party}" ],
|
||||||
|
"contributors.isMostPopular" : [ "{enum#boolean}" ],
|
||||||
|
"contributors.popularityIndex" : [ "{regexp#integer}" ],
|
||||||
|
"contributors.priority" : [ "{regexp#integer}" ],
|
||||||
|
"contributors.weight" : [ "{regexp#integer}" ],
|
||||||
|
"experimentGroup" : [ "{regexp#integer}" ],
|
||||||
|
"experimentVersion" : [ "{regexp#integer}" ],
|
||||||
|
"globalMaxUsage" : [ "{regexp#integer}" ],
|
||||||
|
"globalMaxUsageV1" : [ "{regexp#integer}" ],
|
||||||
|
"globalMaxUsageV2" : [ "{regexp#integer}" ],
|
||||||
|
"globalMaxUsageV3" : [ "{regexp#integer}" ],
|
||||||
|
"globalMaxUsageV4" : [ "{regexp#integer}" ],
|
||||||
|
"globalMinUsage" : [ "{regexp#integer}" ],
|
||||||
|
"globalMinUsageV1" : [ "{regexp#integer}" ],
|
||||||
|
"globalMinUsageV2" : [ "{regexp#integer}" ],
|
||||||
|
"globalMinUsageV3" : [ "{regexp#integer}" ],
|
||||||
|
"globalMinUsageV4" : [ "{regexp#integer}" ],
|
||||||
|
"isConsistent" : [ "{enum#boolean}" ],
|
||||||
|
"isForceExperiment" : [ "{enum#boolean}" ],
|
||||||
|
"isInternal" : [ "{enum#boolean}" ],
|
||||||
|
"isMixedList" : [ "{enum#boolean}" ],
|
||||||
|
"isSingleModuleProject" : [ "{enum#boolean}" ],
|
||||||
|
"lastOpenToolWindow" : [ "{util#toolwindow}" ],
|
||||||
|
"logFeatures" : [ "{enum#boolean}" ],
|
||||||
|
"maxUsage" : [ "{regexp#integer}" ],
|
||||||
|
"maxUsageSE" : [ "{regexp#integer}" ],
|
||||||
|
"minUsage" : [ "{regexp#integer}" ],
|
||||||
|
"minUsageSE" : [ "{regexp#integer}" ],
|
||||||
|
"numberOfOpenEditors" : [ "{regexp#integer}" ],
|
||||||
|
"openFileTypes" : [ "{util#file_type}" ],
|
||||||
|
"orderByMl" : [ "{enum#boolean}" ],
|
||||||
|
"plugin" : [ "{util#plugin}" ],
|
||||||
|
"plugin_type" : [ "{util#plugin_type}" ],
|
||||||
|
"plugin_version" : [ "{util#plugin_version}" ],
|
||||||
|
"projectDisposed" : [ "{enum#boolean}" ],
|
||||||
|
"projectOpened" : [ "{enum#boolean}" ],
|
||||||
|
"rebuildReason" : [ "{enum#restart_reasons}" ],
|
||||||
|
"seTabId" : [ "{enum#se_tab}", "{enum:SearchEverywhereSpellingCorrectorContributor}", "{enum:Git}" ],
|
||||||
|
"searchIndex" : [ "{regexp#integer}" ],
|
||||||
|
"searchStateFeatures.isCaseSensitive" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.isDumbMode" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.isEmptyQuery" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.isRegularExpressions" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.isSearchEverywhere" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.isWholeWordsOnly" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.queryContainsAbbreviations" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.queryContainsCommandChar" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.queryContainsPath" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.queryContainsSpaces" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.queryIsAllUppercase" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.queryIsCamelCase" : [ "{enum#boolean}" ],
|
||||||
|
"searchStateFeatures.queryLength" : [ "{regexp#integer}" ],
|
||||||
|
"searchStateFeatures.searchScope" : [ "{util#scopeRule}" ],
|
||||||
|
"selectedIds" : [ "{regexp#integer}" ],
|
||||||
|
"selectedIndexes" : [ "{regexp#integer}" ],
|
||||||
|
"semanticExperimentGroup" : [ "{regexp#integer}" ],
|
||||||
|
"semanticSearchEnabled" : [ "{enum#boolean}" ],
|
||||||
|
"sessionId" : [ "{regexp#integer}" ],
|
||||||
|
"startTime" : [ "{regexp#integer}" ],
|
||||||
|
"timeToFirstResult" : [ "{regexp#integer}" ],
|
||||||
|
"totalItems" : [ "{regexp#integer}" ],
|
||||||
|
"typedBackspaces" : [ "{regexp#integer}" ],
|
||||||
|
"typedSymbolKeys" : [ "{regexp#integer}" ],
|
||||||
|
"unsupported_classes" : [ "{util#class_name}" ]
|
||||||
|
},
|
||||||
|
"enums" : {
|
||||||
|
"query_matching_type" : [ "START_WITH", "WORDS_FIRST_CHAR", "GREEDY_WITH_CASE", "GREEDY", "UNKNOWN" ],
|
||||||
|
"restart_reasons" : [ "SEARCH_STARTED", "TEXT_CHANGED", "TAB_CHANGED", "SCOPE_CHANGED", "EXIT_DUMB_MODE", "TEXT_SEARCH_OPTION_CHANGED" ],
|
||||||
|
"se_tab" : [ "SearchEverywhereContributor.All", "ClassSearchEverywhereContributor", "FileSearchEverywhereContributor", "RecentFilesSEContributor", "SymbolSearchEverywhereContributor", "ActionSearchEverywhereContributor", "RunConfigurationsSEContributor", "CommandsContributor", "TopHitSEContributor", "com.intellij.ide.actions.searcheverywhere.CalculatorSEContributor", "TmsSearchEverywhereContributor", "YAMLKeysSearchEverywhereContributor", "UrlSearchEverywhereContributor", "Vcs.Git", "AutocompletionContributor", "TextSearchContributor", "DbSETablesContributor", "third.party" ],
|
||||||
|
"vcs_file_status" : [ "NOT_CHANGED", "NOT_CHANGED_IMMEDIATE", "NOT_CHANGED_RECURSIVE", "DELETED", "MODIFIED", "ADDED", "MERGED", "UNKNOWN", "IDEA_FILESTATUS_IGNORED", "HIJACKED", "IDEA_FILESTATUS_MERGED_WITH_CONFLICTS", "IDEA_FILESTATUS_MERGED_WITH_BOTH_CONFLICTS", "IDEA_FILESTATUS_MERGED_WITH_PROPERTY_CONFLICTS", "IDEA_FILESTATUS_DELETED_FROM_FILE_SYSTEM", "SWITCHED", "OBSOLETE", "SUPPRESSED" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ],
|
||||||
|
"rules" : {
|
||||||
|
"enums" : {
|
||||||
|
"action" : [ "git4idea.rebase.retry", "git4idea.rebase.continue", "git4idea.rebase.abort", "git4idea.rebase.resolve" ],
|
||||||
|
"boolean" : [ "true", "false", "TRUE", "FALSE", "True", "False" ],
|
||||||
|
"plugin_type" : [ "JVM_CORE", "PLATFORM", "JB_BUNDLED", "JB_NOT_BUNDLED", "LISTED", "NOT_LISTED", "JB_UPDATED_BUNDLED", "UNKNOWN", "FROM_SOURCES" ]
|
||||||
|
},
|
||||||
|
"regexps" : {
|
||||||
|
"count" : "\\d+K?M?\\+?",
|
||||||
|
"date_YYYY-MM-DD_HH" : "^[12][0-9]{3}-(0[0-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])( ([0-1][0-9]|2[0-3]))?$",
|
||||||
|
"date_short_hash" : "[0-9]{2}[01][0-9][0123][0-9]-(([0-9A-Fa-f]{12})|undefined)",
|
||||||
|
"float" : "-?\\d+(\\.\\d+(E\\-?\\d+)?)?",
|
||||||
|
"hash" : "([0-9A-Fa-f]{40,64})|undefined",
|
||||||
|
"integer" : "-?\\d+(\\+)?",
|
||||||
|
"short_hash" : "([0-9A-Fa-f]{12})|undefined",
|
||||||
|
"version" : "Unknown|unknown.format|unknown|UNKNOWN|((\\d+\\.?)*\\d+)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version" : "4244"
|
||||||
|
}
|
||||||
84
idea-sandbox/config/event-log-metadata/mp/events-scheme.json
Normal file
84
idea-sandbox/config/event-log-metadata/mp/events-scheme.json
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
{
|
||||||
|
"groups" : [ {
|
||||||
|
"id" : "mp.plugin.manager",
|
||||||
|
"builds" : [ ],
|
||||||
|
"versions" : [ {
|
||||||
|
"from" : "8"
|
||||||
|
} ],
|
||||||
|
"rules" : {
|
||||||
|
"event_id" : [ "{enum#__event_id}" ],
|
||||||
|
"event_data" : {
|
||||||
|
"acceptance_result" : [ "{enum:ACCEPTED|DECLINED|AUTO_ACCEPTED}" ],
|
||||||
|
"enabled_state" : [ "{enum:ENABLED|DISABLED}" ],
|
||||||
|
"group" : [ "{enum:BUNDLED_UPDATE|UPDATE|INSTALLING|INSTALLED|SEARCH_INSTALLED|SEARCH|STAFF_PICKS|NEW_AND_UPDATED|TOP_DOWNLOADS|TOP_RATED|CUSTOM_REPOSITORY|INTERNAL|SUGGESTED}" ],
|
||||||
|
"index" : [ "{regexp#integer}" ],
|
||||||
|
"localSearchFeatures.isBundled" : [ "{enum#boolean}" ],
|
||||||
|
"localSearchFeatures.isDisabled" : [ "{enum#boolean}" ],
|
||||||
|
"localSearchFeatures.isDownloaded" : [ "{enum#boolean}" ],
|
||||||
|
"localSearchFeatures.isEnabled" : [ "{enum#boolean}" ],
|
||||||
|
"localSearchFeatures.isInvalid" : [ "{enum#boolean}" ],
|
||||||
|
"localSearchFeatures.isUpdateNeeded" : [ "{enum#boolean}" ],
|
||||||
|
"localSearchFeatures.tagFiltersCount" : [ "{regexp#integer}" ],
|
||||||
|
"localSearchFeatures.vendorFiltersCount" : [ "{regexp#integer}" ],
|
||||||
|
"localSearchFeatures.withAttributes" : [ "{enum#boolean}" ],
|
||||||
|
"marketplaceSearchFeatures.customRepositoryCount" : [ "{regexp#integer}" ],
|
||||||
|
"marketplaceSearchFeatures.isStaffPicks" : [ "{enum#boolean}" ],
|
||||||
|
"marketplaceSearchFeatures.isSuggested" : [ "{enum#boolean}" ],
|
||||||
|
"marketplaceSearchFeatures.marketplaceCustomRepositoryCount" : [ "{regexp#integer}" ],
|
||||||
|
"marketplaceSearchFeatures.sortBy" : [ "{enum:UPDATE_DATE|DOWNLOADS|RATING|NAME|RELEVANCE}" ],
|
||||||
|
"marketplaceSearchFeatures.tagsListFilter" : [ "{util#mp_tags_list}" ],
|
||||||
|
"marketplaceSearchFeatures.vendorsListFilter" : [ "{util#mp_vendors_list}" ],
|
||||||
|
"plugin" : [ "{util#plugin}" ],
|
||||||
|
"plugin_type" : [ "{util#plugin_type}" ],
|
||||||
|
"plugin_version" : [ "{util#plugin_version}" ],
|
||||||
|
"previous_version" : [ "{util#plugin_version}" ],
|
||||||
|
"resultsFeatures.isEmpty" : [ "{enum#boolean}" ],
|
||||||
|
"resultsFeatures.reportLimit" : [ "{regexp#integer}" ],
|
||||||
|
"resultsFeatures.results.byJetBrains" : [ "{enum#boolean}" ],
|
||||||
|
"resultsFeatures.results.marketplaceInfo.date" : [ "{regexp#integer}" ],
|
||||||
|
"resultsFeatures.results.marketplaceInfo.downloads" : [ "{regexp#integer}" ],
|
||||||
|
"resultsFeatures.results.marketplaceInfo.isPaid" : [ "{enum#boolean}" ],
|
||||||
|
"resultsFeatures.results.marketplaceInfo.marketplaceId" : [ "{regexp#integer}" ],
|
||||||
|
"resultsFeatures.results.marketplaceInfo.marketplaceRating" : [ "{regexp#float}" ],
|
||||||
|
"resultsFeatures.results.nameLength" : [ "{regexp#integer}" ],
|
||||||
|
"resultsFeatures.results.plugin" : [ "{util#plugin}" ],
|
||||||
|
"resultsFeatures.results.plugin_type" : [ "{util#plugin_type}" ],
|
||||||
|
"resultsFeatures.results.plugin_version" : [ "{util#plugin_version}" ],
|
||||||
|
"resultsFeatures.total" : [ "{regexp#integer}" ],
|
||||||
|
"signature_check_result" : [ "{enum:INVALID_SIGNATURE|MISSING_SIGNATURE|WRONG_SIGNATURE|SUCCESSFUL}" ],
|
||||||
|
"source" : [ "{enum:MARKETPLACE|CUSTOM_REPOSITORY|FROM_DISK}" ],
|
||||||
|
"userQueryFeatures.isEmptyQuery" : [ "{enum#boolean}" ],
|
||||||
|
"userQueryFeatures.queryContainsAbbreviations" : [ "{enum#boolean}" ],
|
||||||
|
"userQueryFeatures.queryContainsPath" : [ "{enum#boolean}" ],
|
||||||
|
"userQueryFeatures.queryContainsSpaces" : [ "{enum#boolean}" ],
|
||||||
|
"userQueryFeatures.queryIsAllLowercase" : [ "{enum#boolean}" ],
|
||||||
|
"userQueryFeatures.queryIsAllUppercase" : [ "{enum#boolean}" ],
|
||||||
|
"userQueryFeatures.queryIsCamelCase" : [ "{enum#boolean}" ],
|
||||||
|
"userQueryFeatures.queryLength" : [ "{regexp#integer}" ],
|
||||||
|
"userQueryFeatures.withHANSymbols" : [ "{enum#boolean}" ],
|
||||||
|
"userQueryFeatures.wordCharsAndDelimitersOnly" : [ "{enum#boolean}" ],
|
||||||
|
"userQueryFeatures.wordsNumber" : [ "{regexp#integer}" ]
|
||||||
|
},
|
||||||
|
"enums" : {
|
||||||
|
"__event_id" : [ "plugin.install.third.party.check", "plugin.search.card.opened", "plugin.signature.warning.shown", "plugin.state.changed", "search.reset", "plugin.installation.finished", "plugin.signature.check.result", "marketplace.tab.search", "plugin.installation.started", "installed.tab.search", "plugin.was.removed" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ],
|
||||||
|
"rules" : {
|
||||||
|
"enums" : {
|
||||||
|
"boolean" : [ "true", "false", "TRUE", "FALSE", "True", "False" ],
|
||||||
|
"plugin_type" : [ "JVM_CORE", "PLATFORM", "JB_BUNDLED", "JB_NOT_BUNDLED", "LISTED", "NOT_LISTED", "JB_UPDATED_BUNDLED", "UNKNOWN", "FROM_SOURCES" ]
|
||||||
|
},
|
||||||
|
"regexps" : {
|
||||||
|
"count" : "\\d+K?M?\\+?",
|
||||||
|
"date_YYYY-MM-DD_HH" : "^[12][0-9]{3}-(0[0-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])( ([0-1][0-9]|2[0-3]))?$",
|
||||||
|
"date_short_hash" : "[0-9]{2}[01][0-9][0123][0-9]-(([0-9A-Fa-f]{12})|undefined)",
|
||||||
|
"float" : "-?\\d+(\\.\\d+(E\\-?\\d+)?)?",
|
||||||
|
"hash" : "([0-9A-Fa-f]{40,64})|undefined",
|
||||||
|
"integer" : "-?\\d+(\\+)?",
|
||||||
|
"short_hash" : "([0-9A-Fa-f]{12})|undefined",
|
||||||
|
"version" : "Unknown|unknown.format|unknown|UNKNOWN|((\\d+\\.?)*\\d+)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version" : "4244"
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
import static java.math.MathContext.DECIMAL128
|
||||||
|
|
||||||
|
BigDecimal RES = 0
|
||||||
|
int i = 0
|
||||||
|
ROWS.each { row ->
|
||||||
|
COLUMNS.each { column ->
|
||||||
|
def value = row.value(column)
|
||||||
|
if (value instanceof Number) {
|
||||||
|
RES = RES.add(value, DECIMAL128)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
else if (value.toString().isBigDecimal()) {
|
||||||
|
RES = RES.add(value.toString().toBigDecimal(), DECIMAL128)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (i > 0) {
|
||||||
|
RES = RES.divide(i, DECIMAL128)
|
||||||
|
OUT.append(RES.toString())
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
OUT.append("Not enough values")
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
import static java.math.MathContext.DECIMAL128
|
||||||
|
|
||||||
|
def toBigDecimal = { value ->
|
||||||
|
value instanceof Number ? value as BigDecimal :
|
||||||
|
value.toString().isBigDecimal() ? value.toString() as BigDecimal :
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
|
def values = []
|
||||||
|
|
||||||
|
ROWS.each { row ->
|
||||||
|
COLUMNS.each { column ->
|
||||||
|
def bigDecimal = toBigDecimal(row.value(column))
|
||||||
|
if (bigDecimal != null) {
|
||||||
|
values.add(bigDecimal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (values.isEmpty()) {
|
||||||
|
OUT.append("Not enough values")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
def sum = BigDecimal.ZERO
|
||||||
|
values.forEach { value ->
|
||||||
|
sum = sum.add(value, DECIMAL128)
|
||||||
|
}
|
||||||
|
def avg = sum.divide(values.size(), DECIMAL128)
|
||||||
|
def sumSquaredDiff = BigDecimal.ZERO
|
||||||
|
values.each { value ->
|
||||||
|
BigDecimal diff = value.subtract(avg, DECIMAL128)
|
||||||
|
sumSquaredDiff = sumSquaredDiff.add(diff.multiply(diff, DECIMAL128), DECIMAL128)
|
||||||
|
}
|
||||||
|
|
||||||
|
def variance = sumSquaredDiff.divide(values.size(), DECIMAL128)
|
||||||
|
def standardDeviation = variance.sqrt(DECIMAL128)
|
||||||
|
def cv = standardDeviation.divide(avg, DECIMAL128)
|
||||||
|
OUT.append((cv * 100).round(2) + "%")
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
OUT.append(COLUMNS.size().toString())
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
def RES = 0G
|
||||||
|
ROWS.each { row ->
|
||||||
|
COLUMNS.each { column ->
|
||||||
|
RES += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OUT.append(RES.toString())
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
def RES = 0G
|
||||||
|
ROWS.each { row ->
|
||||||
|
COLUMNS.each { column ->
|
||||||
|
def value = row.value(column)
|
||||||
|
if (value instanceof Number) {
|
||||||
|
RES += 1
|
||||||
|
}
|
||||||
|
else if (value.toString().isBigDecimal()) {
|
||||||
|
RES += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OUT.append(RES.toString())
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
values = new ArrayList<BigDecimal>()
|
||||||
|
ROWS.each { row ->
|
||||||
|
COLUMNS.each { column ->
|
||||||
|
def value = row.value(column)
|
||||||
|
if (value instanceof Number) {
|
||||||
|
values.add(value as BigDecimal)
|
||||||
|
}
|
||||||
|
else if (value.toString().isBigDecimal()) {
|
||||||
|
values.add(value.toString() as BigDecimal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (values.size() == 0) {
|
||||||
|
OUT.append("Not enough values")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
OUT.append(Collections.max(values).toString())
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
import static java.math.MathContext.DECIMAL128
|
||||||
|
|
||||||
|
def toBigDecimal = { value ->
|
||||||
|
value instanceof Number ? value as BigDecimal :
|
||||||
|
value.toString().isBigDecimal() ? value.toString() as BigDecimal :
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
|
def values = []
|
||||||
|
|
||||||
|
ROWS.each { row ->
|
||||||
|
COLUMNS.each { column ->
|
||||||
|
def bigDecimal = toBigDecimal(row.value(column))
|
||||||
|
if (bigDecimal != null) {
|
||||||
|
values.add(bigDecimal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (values.isEmpty()) {
|
||||||
|
OUT.append("Not enough values")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
elementsNumber = values.size()
|
||||||
|
Collections.sort(values)
|
||||||
|
mid = (int)elementsNumber / 2
|
||||||
|
RES = elementsNumber % 2 != 0 ? values[mid] : values[mid].add(values[mid - 1], DECIMAL128).divide(2, DECIMAL128)
|
||||||
|
OUT.append(RES.toString())
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
values = new ArrayList<BigDecimal>()
|
||||||
|
ROWS.each { row ->
|
||||||
|
COLUMNS.each { column ->
|
||||||
|
def value = row.value(column)
|
||||||
|
if (value instanceof Number) {
|
||||||
|
values.add(value as BigDecimal)
|
||||||
|
}
|
||||||
|
else if (value.toString().isBigDecimal()) {
|
||||||
|
values.add(value.toString() as BigDecimal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (values.size() == 0) {
|
||||||
|
OUT.append("Not enough values")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
OUT.append(Collections.min(values).toString())
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
OUT.append(ROWS.size().toString())
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
import static java.math.MathContext.DECIMAL128
|
||||||
|
|
||||||
|
BigDecimal RES = 0
|
||||||
|
ROWS.each { row ->
|
||||||
|
COLUMNS.each { column ->
|
||||||
|
def value = row.value(column)
|
||||||
|
if (value instanceof Number) {
|
||||||
|
RES = RES.add(value, DECIMAL128)
|
||||||
|
}
|
||||||
|
else if (value.toString().isBigDecimal()) {
|
||||||
|
RES = RES.add(value.toString().toBigDecimal(), DECIMAL128)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OUT.append(RES.toString())
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
SEPARATOR = ","
|
||||||
|
QUOTE = "\""
|
||||||
|
NEWLINE = System.getProperty("line.separator")
|
||||||
|
|
||||||
|
def printRow = { values, valueToString ->
|
||||||
|
values.eachWithIndex { value, idx ->
|
||||||
|
def str = valueToString(value)
|
||||||
|
def q = str.contains(SEPARATOR) || str.contains(QUOTE) || str.contains(NEWLINE)
|
||||||
|
OUT.append(q ? QUOTE : "")
|
||||||
|
.append(str.replace(QUOTE, QUOTE + QUOTE))
|
||||||
|
.append(q ? QUOTE : "")
|
||||||
|
.append(idx != values.size() - 1 ? SEPARATOR : NEWLINE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TRANSPOSED) {
|
||||||
|
ROWS.each { row -> printRow(COLUMNS, { FORMATTER.format(row, it) }) }
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
def values = COLUMNS.collect { new ArrayList<String>() }
|
||||||
|
ROWS.each { row -> COLUMNS.eachWithIndex { col, i -> values[i].add(FORMATTER.format(row, col)) } }
|
||||||
|
values.each { printRow(it, { it }) }
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
import static com.intellij.openapi.util.text.StringUtil.escapeXmlEntities
|
||||||
|
|
||||||
|
NEWLINE = System.getProperty("line.separator")
|
||||||
|
|
||||||
|
def HTML_PATTERN = ~"<.+>"
|
||||||
|
|
||||||
|
def printRow = { values, tag, valueToString ->
|
||||||
|
OUT.append("$NEWLINE<tr>$NEWLINE")
|
||||||
|
values.each {
|
||||||
|
def str = valueToString(it)
|
||||||
|
def escaped = str ==~ HTML_PATTERN
|
||||||
|
? str
|
||||||
|
: escapeXmlEntities((str as String).replaceAll("\\t|\\b|\\f", "")).replaceAll("\\r|\\n|\\r\\n", "<br/>")
|
||||||
|
OUT.append(" <$tag>$escaped</$tag>$NEWLINE")
|
||||||
|
}
|
||||||
|
OUT.append("</tr>")
|
||||||
|
}
|
||||||
|
|
||||||
|
OUT.append(
|
||||||
|
"""<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table border="1" style="border-collapse:collapse">""")
|
||||||
|
|
||||||
|
if (!TRANSPOSED) {
|
||||||
|
printRow(COLUMNS, "th") { it.name() }
|
||||||
|
ROWS.each { row -> printRow(COLUMNS, "td") { FORMATTER.format(row, it) } }
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
def values = COLUMNS.collect { new ArrayList<String>( [it.name()] ) }
|
||||||
|
ROWS.each { row -> COLUMNS.eachWithIndex { col, i -> values[i].add(FORMATTER.format(row, col)) } }
|
||||||
|
values.each { printRow(it, "td", { it }) }
|
||||||
|
}
|
||||||
|
|
||||||
|
OUT.append("""
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
""")
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
function eachWithIdx(iterable, f) { var i = iterable.iterator(); var idx = 0; while (i.hasNext()) f(i.next(), idx++); }
|
||||||
|
function mapEach(iterable, f) { var vs = []; eachWithIdx(iterable, function (i) { vs.push(f(i));}); return vs; }
|
||||||
|
function escape(str) {
|
||||||
|
str = str.replace(/\t|\b|\f/g, "");
|
||||||
|
str = com.intellij.openapi.util.text.StringUtil.escapeXml(str);
|
||||||
|
str = str.replace(/\r|\n|\r\n/g, "<br/>");
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
var isHTML = RegExp.prototype.test.bind(/^<.+>$/);
|
||||||
|
|
||||||
|
var NEWLINE = "\n";
|
||||||
|
|
||||||
|
function output() { for (var i = 0; i < arguments.length; i++) { OUT.append(arguments[i]); } }
|
||||||
|
function outputRow(items, tag) {
|
||||||
|
output("<tr>");
|
||||||
|
for (var i = 0; i < items.length; i++)
|
||||||
|
output("<", tag, ">", isHTML(items[i]) ? items[i] : escape(items[i]), "</", tag, ">");
|
||||||
|
output("</tr>", NEWLINE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
output("<!DOCTYPE html>", NEWLINE,
|
||||||
|
"<html>", NEWLINE,
|
||||||
|
"<head>", NEWLINE,
|
||||||
|
"<title></title>", NEWLINE,
|
||||||
|
"<meta charset=\"UTF-8\">", NEWLINE,
|
||||||
|
"</head>", NEWLINE,
|
||||||
|
"<body>", NEWLINE,
|
||||||
|
"<table border=\"1\" style=\"border-collapse:collapse\">", NEWLINE);
|
||||||
|
|
||||||
|
if (TRANSPOSED) {
|
||||||
|
var values = mapEach(COLUMNS, function(col) { return [col.name()]; });
|
||||||
|
eachWithIdx(ROWS, function (row) {
|
||||||
|
eachWithIdx(COLUMNS, function (col, i) {
|
||||||
|
values[i].push(FORMATTER.format(row, col));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
eachWithIdx(COLUMNS, function (_, i) { outputRow(values[i], "td"); });
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
outputRow(mapEach(COLUMNS, function (col) { return col.name(); }), "th");
|
||||||
|
eachWithIdx(ROWS, function (row) {
|
||||||
|
outputRow(mapEach(COLUMNS, function (col) { return FORMATTER.format(row, col); }), "td")
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
output("</table>", NEWLINE,
|
||||||
|
"</body>", NEWLINE,
|
||||||
|
"</html>", NEWLINE);
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import static com.intellij.openapi.util.text.StringUtil.escapeStringCharacters as escapeStr
|
||||||
|
|
||||||
|
NEWLINE = System.getProperty("line.separator")
|
||||||
|
INDENT = " "
|
||||||
|
|
||||||
|
def printJSON(level, col, o) {
|
||||||
|
switch (o) {
|
||||||
|
case null: OUT.append("null"); break
|
||||||
|
case Tuple: printJSON(level, o[0], o[1]); break
|
||||||
|
case Map:
|
||||||
|
OUT.append("{")
|
||||||
|
o.entrySet().eachWithIndex { entry, i ->
|
||||||
|
OUT.append("${i > 0 ? "," : ""}$NEWLINE${INDENT * (level + 1)}")
|
||||||
|
OUT.append("\"${escapeStr(entry.getKey().toString())}\"")
|
||||||
|
OUT.append(": ")
|
||||||
|
printJSON(level + 1, col, entry.getValue())
|
||||||
|
}
|
||||||
|
OUT.append("$NEWLINE${INDENT * level}}")
|
||||||
|
break
|
||||||
|
case Object[]:
|
||||||
|
case Iterable:
|
||||||
|
OUT.append("[")
|
||||||
|
def plain = true
|
||||||
|
o.eachWithIndex { item, i ->
|
||||||
|
plain = item == null || item instanceof Number || item instanceof Boolean || item instanceof String
|
||||||
|
if (plain) {
|
||||||
|
OUT.append(i > 0 ? ", " : "")
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
OUT.append("${i > 0 ? "," : ""}$NEWLINE${INDENT * (level + 1)}")
|
||||||
|
}
|
||||||
|
printJSON(level + 1, col, item)
|
||||||
|
}
|
||||||
|
if (plain) OUT.append("]") else OUT.append("$NEWLINE${INDENT * level}]")
|
||||||
|
break
|
||||||
|
case Boolean: OUT.append("$o"); break
|
||||||
|
default:
|
||||||
|
def str = FORMATTER.formatValue(o, col)
|
||||||
|
def typeName = FORMATTER.getTypeName(o, col)
|
||||||
|
def shouldQuote = FORMATTER.isStringLiteral(o, col) && !(typeName.equalsIgnoreCase("json") || typeName.equalsIgnoreCase("jsonb"))
|
||||||
|
OUT.append(shouldQuote ? "\"${escapeStr(str)}\"" : str);
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printJSON(0, null, ROWS.transform { row ->
|
||||||
|
def map = new LinkedHashMap<String, Object>()
|
||||||
|
COLUMNS.each { col ->
|
||||||
|
if (row.hasValue(col)) {
|
||||||
|
def val = row.value(col)
|
||||||
|
map.put(col.name(), new Tuple(col, val))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
map
|
||||||
|
})
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package extensions.data.extractors
|
||||||
|
|
||||||
|
NEWLINE = System.getProperty("line.separator")
|
||||||
|
SEPARATOR = "|"
|
||||||
|
BACKSLASH = "\\"
|
||||||
|
BACKQUOTE = "`"
|
||||||
|
LTAG = "<"
|
||||||
|
RTAG = ">"
|
||||||
|
ASTERISK = "*"
|
||||||
|
UNDERSCORE = "_"
|
||||||
|
LPARENTH = "("
|
||||||
|
RPARENTH = ")"
|
||||||
|
LBRACKET = "["
|
||||||
|
RBRACKET = "]"
|
||||||
|
TILDE = "~"
|
||||||
|
|
||||||
|
def printRow = { values, firstBold = false, valueToString ->
|
||||||
|
values.eachWithIndex { value, idx ->
|
||||||
|
def str = valueToString(value)
|
||||||
|
.replace(BACKSLASH, BACKSLASH + BACKSLASH)
|
||||||
|
.replace(SEPARATOR, BACKSLASH + SEPARATOR)
|
||||||
|
.replace(BACKQUOTE, BACKSLASH + BACKQUOTE)
|
||||||
|
.replace(ASTERISK, BACKSLASH + ASTERISK)
|
||||||
|
.replace(UNDERSCORE, BACKSLASH + UNDERSCORE)
|
||||||
|
.replace(LPARENTH, BACKSLASH + LPARENTH)
|
||||||
|
.replace(RPARENTH, BACKSLASH + RPARENTH)
|
||||||
|
.replace(LBRACKET, BACKSLASH + LBRACKET)
|
||||||
|
.replace(RBRACKET, BACKSLASH + RBRACKET)
|
||||||
|
.replace(TILDE, BACKSLASH + TILDE)
|
||||||
|
.replace(LTAG, "<")
|
||||||
|
.replace(RTAG, ">")
|
||||||
|
.replaceAll("\r\n|\r|\n", "<br/>")
|
||||||
|
.replaceAll("\t|\b|\f", "")
|
||||||
|
|
||||||
|
OUT.append("| ")
|
||||||
|
.append(firstBold && idx == 0 ? "**" : "")
|
||||||
|
.append(str)
|
||||||
|
.append(firstBold && idx == 0 ? "**" : "")
|
||||||
|
.append(idx != values.size() - 1 ? " " : " |" + NEWLINE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TRANSPOSED) {
|
||||||
|
def values = COLUMNS.collect { new ArrayList<String>([it.name()]) }
|
||||||
|
def rowCount = 0
|
||||||
|
ROWS.forEach { row ->
|
||||||
|
COLUMNS.eachWithIndex { col, i -> values[i].add(FORMATTER.format(row, col)) }
|
||||||
|
rowCount++
|
||||||
|
}
|
||||||
|
for (int i = 0; i <= rowCount; i++) {
|
||||||
|
OUT.append("| ")
|
||||||
|
}
|
||||||
|
OUT.append("|" + NEWLINE)
|
||||||
|
for (int i = 0; i <= rowCount; i++) {
|
||||||
|
OUT.append("| :- ")
|
||||||
|
}
|
||||||
|
OUT.append("|" + NEWLINE)
|
||||||
|
values.each { printRow(it, true) { it } }
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printRow(COLUMNS) { it.name() }
|
||||||
|
COLUMNS.each { OUT.append("| :--- ") }
|
||||||
|
OUT.append("|" + NEWLINE)
|
||||||
|
ROWS.each { row -> printRow(COLUMNS) { FORMATTER.format(row, it) } }
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
SEPARATOR = ", "
|
||||||
|
QUOTE = "'"
|
||||||
|
STRING_PREFIX = DIALECT.getDbms().isMicrosoft() ? "N" : ""
|
||||||
|
KEYWORDS_LOWERCASE = com.intellij.database.util.DbSqlUtil.areKeywordsLowerCase(PROJECT)
|
||||||
|
KW_NULL = KEYWORDS_LOWERCASE ? "null" : "NULL"
|
||||||
|
|
||||||
|
first = true
|
||||||
|
ROWS.each { row ->
|
||||||
|
COLUMNS.each { column ->
|
||||||
|
def value = row.value(column)
|
||||||
|
def stringValue = value == null ? KW_NULL : FORMATTER.formatValue(value, column)
|
||||||
|
def isStringLiteral = value != null && FORMATTER.isStringLiteral(value, column)
|
||||||
|
if (isStringLiteral && DIALECT.getDbms().isMysql()) stringValue = stringValue.replace("\\", "\\\\")
|
||||||
|
OUT.append(first ? "" : SEPARATOR)
|
||||||
|
.append(isStringLiteral ? (STRING_PREFIX + QUOTE) : "")
|
||||||
|
.append(stringValue ? stringValue.replace(QUOTE, QUOTE + QUOTE) : stringValue)
|
||||||
|
.append(isStringLiteral ? QUOTE : "")
|
||||||
|
first = false
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,144 @@
|
|||||||
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
WIDTH_BASED_ON_CONTENT = -1
|
||||||
|
|
||||||
|
PIPE = "|"
|
||||||
|
SPACE = " "
|
||||||
|
CROSS = "+"
|
||||||
|
MINUS = "-"
|
||||||
|
ROW_SEPARATORS = false
|
||||||
|
COLUMN_WIDTH = WIDTH_BASED_ON_CONTENT
|
||||||
|
NEWLINE = System.getProperty("line.separator")
|
||||||
|
|
||||||
|
static def splitByLines(values, size) {
|
||||||
|
def splitValues = new ArrayList<>()
|
||||||
|
def maxLines = 0
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
def splitValue = StringUtil.splitByLines(values(i))
|
||||||
|
splitValues.add(splitValue)
|
||||||
|
maxLines = Math.max(maxLines, splitValue.size())
|
||||||
|
}
|
||||||
|
|
||||||
|
def byLines = new ArrayList<>(maxLines)
|
||||||
|
for (int i = 0; i < maxLines; i++) {
|
||||||
|
def lineValues = new ArrayList<>()
|
||||||
|
byLines.add(lineValues)
|
||||||
|
for (int j = 0; j < splitValues.size(); j++) {
|
||||||
|
def splitValue = splitValues[j]
|
||||||
|
lineValues.add(splitValue.size() <= i ? null : splitValue[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return byLines
|
||||||
|
}
|
||||||
|
|
||||||
|
def printRow(values, size, width = { COLUMN_WIDTH }, padding = SPACE, separator = { PIPE }) {
|
||||||
|
def byLines = splitByLines(values, size)
|
||||||
|
byLines.each { line ->
|
||||||
|
def lineSize = line.size()
|
||||||
|
if (lineSize > 0) OUT.append(separator(-1))
|
||||||
|
for (int i = 0; i < lineSize; i++) {
|
||||||
|
def value = line[i] == null ? "" : line.get(i)
|
||||||
|
def curWidth = width(i)
|
||||||
|
OUT.append(value.padRight(curWidth, padding))
|
||||||
|
OUT.append(separator(i))
|
||||||
|
}
|
||||||
|
OUT.append(NEWLINE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def printRows() {
|
||||||
|
def colNames = COLUMNS.collect { it.name() }
|
||||||
|
def calcWidth = COLUMN_WIDTH == WIDTH_BASED_ON_CONTENT
|
||||||
|
def rows
|
||||||
|
def width
|
||||||
|
def rowFormatter
|
||||||
|
if (calcWidth) {
|
||||||
|
rows = new ArrayList<>()
|
||||||
|
def widths = new int[COLUMNS.size()]
|
||||||
|
COLUMNS.eachWithIndex { column, idx -> widths[idx] = column.name().length() }
|
||||||
|
ROWS.each { row ->
|
||||||
|
def rowValues = COLUMNS.withIndex().collect { col, idx ->
|
||||||
|
def value = FORMATTER.format(row, col)
|
||||||
|
widths[idx] = Math.max(widths[idx], value.length())
|
||||||
|
value
|
||||||
|
}
|
||||||
|
rows.add(rowValues)
|
||||||
|
}
|
||||||
|
width = { widths[it] }
|
||||||
|
rowFormatter = { it }
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rows = ROWS
|
||||||
|
width = { COLUMN_WIDTH }
|
||||||
|
rowFormatter = { COLUMNS.collect { col -> FORMATTER.format(it, col) } }
|
||||||
|
}
|
||||||
|
|
||||||
|
printRow({""}, COLUMNS.size(), { width(it) }, MINUS) { CROSS }
|
||||||
|
printRow( { colNames[it] }, COLUMNS.size()) { width(it) }
|
||||||
|
|
||||||
|
def first = true
|
||||||
|
rows.each { row ->
|
||||||
|
def rowValues = rowFormatter(row)
|
||||||
|
if (first || ROW_SEPARATORS) printRow({""}, COLUMNS.size(), { width(it) }, MINUS) { first ? CROSS : MINUS }
|
||||||
|
printRow({ rowValues[it] }, rowValues.size()) { width(it) }
|
||||||
|
first = false
|
||||||
|
}
|
||||||
|
printRow({""}, COLUMNS.size(), { width(it) }, MINUS) { CROSS }
|
||||||
|
}
|
||||||
|
|
||||||
|
def printRowsTransposed() {
|
||||||
|
def calcWidth = COLUMN_WIDTH == WIDTH_BASED_ON_CONTENT
|
||||||
|
if (calcWidth) {
|
||||||
|
COLUMN_WIDTHS = new ArrayList<Integer>()
|
||||||
|
COLUMN_WIDTHS.add(0)
|
||||||
|
}
|
||||||
|
def valuesByRow = COLUMNS.collect { col ->
|
||||||
|
if (calcWidth) COLUMN_WIDTHS.set(0, Math.max(COLUMN_WIDTHS[0], col.name().length()))
|
||||||
|
new ArrayList<String>([col.name()])
|
||||||
|
}
|
||||||
|
def rowCount = 1
|
||||||
|
ROWS.each { row ->
|
||||||
|
rowCount++
|
||||||
|
COLUMNS.eachWithIndex { col, i ->
|
||||||
|
def formattedValue = FORMATTER.format(row, col)
|
||||||
|
valuesByRow[i].add(formattedValue)
|
||||||
|
def widthIdx = rowCount - 1
|
||||||
|
def length = formattedValue.length()
|
||||||
|
if (calcWidth) {
|
||||||
|
if (COLUMN_WIDTHS.size() == widthIdx) COLUMN_WIDTHS.add(length)
|
||||||
|
COLUMN_WIDTHS.set(widthIdx, Math.max(COLUMN_WIDTHS[widthIdx], length))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
valuesByRow.each { row ->
|
||||||
|
printRow({ "" }, rowCount, { calcWidth ? COLUMN_WIDTHS[it] : COLUMN_WIDTH }, MINUS) {
|
||||||
|
it <= 0 ? CROSS : it == rowCount - 1 ? CROSS : MINUS
|
||||||
|
}
|
||||||
|
printRow({ row[it] }, row.size()) { calcWidth ? COLUMN_WIDTHS[it] : COLUMN_WIDTH }
|
||||||
|
}
|
||||||
|
printRow({ "" }, rowCount, { calcWidth ? COLUMN_WIDTHS[it] : COLUMN_WIDTH }, MINUS) {
|
||||||
|
it <= 0 ? CROSS : it == rowCount - 1 ? CROSS : MINUS
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TRANSPOSED) {
|
||||||
|
printRowsTransposed()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printRows()
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
SEP = ", "
|
||||||
|
QUOTE = "\'"
|
||||||
|
STRING_PREFIX = DIALECT.getDbms().isMicrosoft() ? "N" : ""
|
||||||
|
NEWLINE = System.getProperty("line.separator")
|
||||||
|
|
||||||
|
KEYWORDS_LOWERCASE = com.intellij.database.util.DbSqlUtil.areKeywordsLowerCase(PROJECT)
|
||||||
|
KW_INSERT_INTO = KEYWORDS_LOWERCASE ? "insert into " : "INSERT INTO "
|
||||||
|
KW_VALUES = KEYWORDS_LOWERCASE ? "values" : "VALUES"
|
||||||
|
KW_NULL = KEYWORDS_LOWERCASE ? "null" : "NULL"
|
||||||
|
|
||||||
|
begin = true
|
||||||
|
|
||||||
|
def record(columns, dataRow) {
|
||||||
|
|
||||||
|
if (begin) {
|
||||||
|
OUT.append(KW_INSERT_INTO)
|
||||||
|
if (TABLE == null) OUT.append("MY_TABLE")
|
||||||
|
else OUT.append(TABLE.getParent().getName()).append(".").append(TABLE.getName())
|
||||||
|
OUT.append(" (")
|
||||||
|
|
||||||
|
columns.eachWithIndex { column, idx ->
|
||||||
|
OUT.append(column.name()).append(idx != columns.size() - 1 ? SEP : "")
|
||||||
|
}
|
||||||
|
|
||||||
|
OUT.append(")").append(NEWLINE)
|
||||||
|
OUT.append(KW_VALUES).append(" (")
|
||||||
|
begin = false
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
OUT.append(",").append(NEWLINE)
|
||||||
|
OUT.append(" (")
|
||||||
|
}
|
||||||
|
|
||||||
|
columns.eachWithIndex { column, idx ->
|
||||||
|
def value = dataRow.value(column)
|
||||||
|
def stringValue = value == null ? KW_NULL : FORMATTER.formatValue(value, column)
|
||||||
|
def isStringLiteral = value != null && FORMATTER.isStringLiteral(value, column)
|
||||||
|
if (isStringLiteral && DIALECT.getDbms().isMysql()) stringValue = stringValue.replace("\\", "\\\\")
|
||||||
|
OUT.append(isStringLiteral ? (STRING_PREFIX + QUOTE) : "")
|
||||||
|
.append(stringValue ? stringValue.replace(QUOTE, QUOTE + QUOTE) : stringValue)
|
||||||
|
.append(isStringLiteral ? QUOTE : "")
|
||||||
|
.append(idx != columns.size() - 1 ? SEP : "")
|
||||||
|
}
|
||||||
|
OUT.append(")")
|
||||||
|
}
|
||||||
|
|
||||||
|
ROWS.each { row -> record(COLUMNS, row) }
|
||||||
|
OUT.append(";")
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
SEP = ", "
|
||||||
|
QUOTE = "\'"
|
||||||
|
STRING_PREFIX = DIALECT.getDbms().isMicrosoft() ? "N" : ""
|
||||||
|
NEWLINE = System.getProperty("line.separator")
|
||||||
|
|
||||||
|
KEYWORDS_LOWERCASE = com.intellij.database.util.DbSqlUtil.areKeywordsLowerCase(PROJECT)
|
||||||
|
KW_INSERT_INTO = KEYWORDS_LOWERCASE ? "insert into " : "INSERT INTO "
|
||||||
|
KW_VALUES = KEYWORDS_LOWERCASE ? ") values (" : ") VALUES ("
|
||||||
|
KW_NULL = KEYWORDS_LOWERCASE ? "null" : "NULL"
|
||||||
|
|
||||||
|
def record(columns, dataRow) {
|
||||||
|
OUT.append(KW_INSERT_INTO)
|
||||||
|
if (TABLE == null) OUT.append("MY_TABLE")
|
||||||
|
else OUT.append(TABLE.getParent().getName()).append(".").append(TABLE.getName())
|
||||||
|
OUT.append(" (")
|
||||||
|
|
||||||
|
columns.eachWithIndex { column, idx ->
|
||||||
|
OUT.append(column.name()).append(idx != columns.size() - 1 ? SEP : "")
|
||||||
|
}
|
||||||
|
|
||||||
|
OUT.append(KW_VALUES)
|
||||||
|
columns.eachWithIndex { column, idx ->
|
||||||
|
def value = dataRow.value(column)
|
||||||
|
def stringValue = value == null ? KW_NULL : FORMATTER.formatValue(value, column)
|
||||||
|
def isStringLiteral = value != null && FORMATTER.isStringLiteral(value, column)
|
||||||
|
if (isStringLiteral && DIALECT.getDbms().isMysql()) stringValue = stringValue.replace("\\", "\\\\")
|
||||||
|
OUT.append(isStringLiteral ? (STRING_PREFIX + QUOTE) : "")
|
||||||
|
.append(isStringLiteral ? stringValue.replace(QUOTE, QUOTE + QUOTE) : stringValue)
|
||||||
|
.append(isStringLiteral ? QUOTE : "")
|
||||||
|
.append(idx != columns.size() - 1 ? SEP : "")
|
||||||
|
}
|
||||||
|
OUT.append(");").append(NEWLINE)
|
||||||
|
}
|
||||||
|
|
||||||
|
ROWS.each { row -> record(COLUMNS, row) }
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* COLUMNS List<DataColumn>
|
||||||
|
* ROWS Iterable<DataRow>
|
||||||
|
* OUT { append() }
|
||||||
|
* FORMATTER { format(row, col); formatValue(Object, col); getTypeName(Object, col); isStringLiteral(Object, col); }
|
||||||
|
* TRANSPOSED Boolean
|
||||||
|
* plus ALL_COLUMNS, TABLE, DIALECT
|
||||||
|
*
|
||||||
|
* where:
|
||||||
|
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
|
||||||
|
* DataColumn { columnNumber(), name() }
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
|
|
||||||
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
|
NEWLINE = System.getProperty("line.separator")
|
||||||
|
|
||||||
|
pattern = Pattern.compile("[^\\w\\d]")
|
||||||
|
def escapeTag(name) {
|
||||||
|
name = pattern.matcher(name).replaceAll("_")
|
||||||
|
return name.isEmpty() || !Character.isLetter(name.charAt(0)) ? "_$name" : name
|
||||||
|
}
|
||||||
|
def printRow(level, rowTag, values) {
|
||||||
|
def prefix = "$NEWLINE${StringUtil.repeat(" ", level)}"
|
||||||
|
OUT.append("$prefix<$rowTag>")
|
||||||
|
values.each { name, col, valuesName, value ->
|
||||||
|
switch (value) {
|
||||||
|
case Map:
|
||||||
|
def mapValues = new ArrayList<Tuple>()
|
||||||
|
value.each { key, v -> mapValues.add(new Tuple(escapeTag(key.toString()), col, key.toString(), v)) }
|
||||||
|
printRow(level + 1, name, mapValues)
|
||||||
|
break
|
||||||
|
case Object[]:
|
||||||
|
case Iterable:
|
||||||
|
def listItems = new ArrayList<Tuple>()
|
||||||
|
def itemName = valuesName != null ? escapeTag(StringUtil.unpluralize(valuesName) ?: "item") : "item"
|
||||||
|
value.collect { v -> listItems.add(new Tuple(itemName, col, null, v)) }
|
||||||
|
printRow(level + 1, name, listItems)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
OUT.append("$prefix <$name>")
|
||||||
|
if (value == null) OUT.append("null")
|
||||||
|
else {
|
||||||
|
def formattedValue = FORMATTER.formatValue(value, col)
|
||||||
|
if (isXmlString(formattedValue)) OUT.append(formattedValue)
|
||||||
|
else OUT.append(StringUtil.escapeXmlEntities(formattedValue))
|
||||||
|
}
|
||||||
|
OUT.append("</$name>")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OUT.append("$prefix</$rowTag>")
|
||||||
|
}
|
||||||
|
|
||||||
|
def isXmlString(string) {
|
||||||
|
return string.startsWith("<") && string.endsWith(">") && (string.contains("</") || string.contains("/>"))
|
||||||
|
}
|
||||||
|
|
||||||
|
OUT.append(
|
||||||
|
"""<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<data>""")
|
||||||
|
|
||||||
|
if (!TRANSPOSED) {
|
||||||
|
ROWS.each { row ->
|
||||||
|
def values = COLUMNS
|
||||||
|
.findAll { col -> row.hasValue(col) }
|
||||||
|
.collect { col ->
|
||||||
|
new Tuple(escapeTag(col.name()), col, col.name(), row.value(col))
|
||||||
|
}
|
||||||
|
printRow(0, "row", values)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
def values = COLUMNS.collect { new ArrayList<Tuple>() }
|
||||||
|
ROWS.eachWithIndex { row, rowIdx ->
|
||||||
|
COLUMNS.eachWithIndex { col, colIdx ->
|
||||||
|
if (row.hasValue(col)) {
|
||||||
|
def value = row.value(col)
|
||||||
|
values[colIdx].add(new Tuple("row${rowIdx + 1}", col, col.name(), value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
values.eachWithIndex { it, index ->
|
||||||
|
printRow(0, escapeTag(COLUMNS[index].name()), it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OUT.append("""
|
||||||
|
</data>
|
||||||
|
""")
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
// IJ: extensions = xls;xlsx displayName = XLS
|
||||||
|
package extensions.data.loaders
|
||||||
|
|
||||||
|
@Grab('org.apache.poi:poi:5.2.5')
|
||||||
|
@Grab('org.apache.poi:poi-ooxml:5.2.5')
|
||||||
|
import org.apache.poi.ss.usermodel.CellType
|
||||||
|
import org.apache.poi.ss.usermodel.WorkbookFactory
|
||||||
|
|
||||||
|
LOADER.load { ctx ->
|
||||||
|
loadXls(ctx.getParameters()["FILE"], ctx.getDataConsumer())
|
||||||
|
}
|
||||||
|
|
||||||
|
def loadXls(path, dataConsumer) {
|
||||||
|
def wb = WorkbookFactory.create(new File(path))
|
||||||
|
def evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
|
|
||||||
|
def sheet = wb.getSheetAt(0)
|
||||||
|
|
||||||
|
produceSheet(sheet, evaluator, dataConsumer)
|
||||||
|
}
|
||||||
|
|
||||||
|
private void produceSheet(sheet, evaluator, dataConsumer) {
|
||||||
|
def idx = 0
|
||||||
|
sheet.forEach { row ->
|
||||||
|
def res = extractRow(row, evaluator)
|
||||||
|
if (!res.isEmpty()) {
|
||||||
|
def cur = row.getRowNum()
|
||||||
|
while (idx < cur - 1) {
|
||||||
|
dataConsumer.consume(new Object[0])
|
||||||
|
++idx
|
||||||
|
}
|
||||||
|
idx = cur
|
||||||
|
dataConsumer.consume(res.toArray())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Object> extractRow(row, evaluator) {
|
||||||
|
def res = new ArrayList<Object>()
|
||||||
|
row.forEach { cell ->
|
||||||
|
def cur = cell.getColumnIndex()
|
||||||
|
while (res.size() < cur) {
|
||||||
|
res.add(null)
|
||||||
|
}
|
||||||
|
def v = evaluator.evaluate(cell)
|
||||||
|
def rv = cellVal(v)
|
||||||
|
res.add(rv)
|
||||||
|
}
|
||||||
|
res
|
||||||
|
}
|
||||||
|
|
||||||
|
def cellVal(cell) {
|
||||||
|
if (cell == null) return null
|
||||||
|
switch (cell.getCellType()) {
|
||||||
|
case CellType.BOOLEAN:
|
||||||
|
return cell.getBooleanCellValue()
|
||||||
|
case CellType.STRING:
|
||||||
|
return cell.getStringValue()
|
||||||
|
case CellType.NUMERIC:
|
||||||
|
return cell.getNumberValue()
|
||||||
|
case CellType.BLANK:
|
||||||
|
return null
|
||||||
|
default:
|
||||||
|
return cell.formatAsString()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
import com.intellij.database.model.DasObjectWithSource
|
||||||
|
import com.intellij.database.model.DasSchemaChild
|
||||||
|
import com.intellij.database.model.ObjectKind
|
||||||
|
import com.intellij.database.util.DasUtil
|
||||||
|
import com.intellij.database.util.ObjectPath
|
||||||
|
|
||||||
|
LAYOUT.ignoreDependencies = true
|
||||||
|
LAYOUT.baseName { ctx -> baseName(ctx.object) }
|
||||||
|
LAYOUT.fileScope { path -> fileScope(path) }
|
||||||
|
|
||||||
|
|
||||||
|
def baseName(obj) {
|
||||||
|
def db = DasUtil.getCatalog(obj)
|
||||||
|
def schema = DasUtil.getSchema(obj)
|
||||||
|
def file = fileName(obj)
|
||||||
|
if (db.isEmpty()) {
|
||||||
|
if (!schema.isEmpty()) return "anonymous/" + sanitize(schema) + "/" + file
|
||||||
|
return file
|
||||||
|
}
|
||||||
|
else if (schema.isEmpty()) {
|
||||||
|
return sanitize(db) + "/" + file
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return sanitize(db) + "/" + sanitize(schema) + "/" + file
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def fileName(obj) {
|
||||||
|
for (def cur = obj; cur != null; cur = cur.dasParent) {
|
||||||
|
if (storeSeparately(cur)) return sanitize(cur.name)
|
||||||
|
}
|
||||||
|
return sanitize(obj.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
def fileScope(path) {
|
||||||
|
def root = path.getName(0).toString()
|
||||||
|
if (root.endsWith(".sql")) return null
|
||||||
|
def next = path.getName(1).toString()
|
||||||
|
if (next.endsWith(".sql")) {
|
||||||
|
if (root == "anonymous") return null
|
||||||
|
return ObjectPath.create(root, ObjectKind.DATABASE)
|
||||||
|
}
|
||||||
|
if (root == "anonymous") return ObjectPath.create(next, ObjectKind.SCHEMA)
|
||||||
|
return ObjectPath.create(root, ObjectKind.DATABASE).append(next, ObjectKind.SCHEMA)
|
||||||
|
}
|
||||||
|
|
||||||
|
def storeSeparately(obj) {
|
||||||
|
return obj instanceof DasObjectWithSource || obj instanceof DasSchemaChild
|
||||||
|
}
|
||||||
|
|
||||||
|
def sanitize(name) {
|
||||||
|
return name.replace('/', 'slash')
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
import com.intellij.database.model.DasObjectWithSource
|
||||||
|
import com.intellij.database.model.DasSchemaChild
|
||||||
|
import com.intellij.database.model.ObjectKind
|
||||||
|
import com.intellij.database.util.DasUtil
|
||||||
|
import com.intellij.database.util.ObjectPath
|
||||||
|
|
||||||
|
LAYOUT.ignoreDependencies = true
|
||||||
|
LAYOUT.baseName { ctx -> baseName(ctx.object) }
|
||||||
|
LAYOUT.fileScope { path -> fileScope(path) }
|
||||||
|
|
||||||
|
|
||||||
|
def baseName(obj) {
|
||||||
|
def schema = DasUtil.getSchema(obj)
|
||||||
|
def file = fileName(obj)
|
||||||
|
if (schema.isEmpty()) {
|
||||||
|
return file
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return sanitize(schema) + "/" + obj.kind.code() + "/" + file
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def fileName(obj) {
|
||||||
|
for (def cur = obj; cur != null; cur = cur.dasParent) {
|
||||||
|
if (storeSeparately(cur)) return sanitize(cur.name)
|
||||||
|
}
|
||||||
|
return sanitize(obj.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
def fileScope(path) {
|
||||||
|
def root = path.getName(0).toString()
|
||||||
|
if (root.endsWith(".sql")) return null
|
||||||
|
return ObjectPath.create(root, ObjectKind.SCHEMA)
|
||||||
|
}
|
||||||
|
|
||||||
|
def storeSeparately(obj) {
|
||||||
|
return obj instanceof DasObjectWithSource || obj instanceof DasSchemaChild
|
||||||
|
}
|
||||||
|
|
||||||
|
def sanitize(name) {
|
||||||
|
return name.replace('/', 'slash')
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
import com.intellij.database.model.DasObjectWithSource
|
||||||
|
import com.intellij.database.model.DasSchemaChild
|
||||||
|
import com.intellij.database.model.ObjectKind
|
||||||
|
import com.intellij.database.util.DasUtil
|
||||||
|
import com.intellij.database.util.ObjectPath
|
||||||
|
|
||||||
|
LAYOUT.ignoreDependencies = true
|
||||||
|
LAYOUT.baseName { ctx -> baseName(ctx.object) }
|
||||||
|
LAYOUT.fileScope { path -> fileScope(path) }
|
||||||
|
|
||||||
|
|
||||||
|
def baseName(obj) {
|
||||||
|
def schema = DasUtil.getSchema(obj)
|
||||||
|
def file = fileName(obj)
|
||||||
|
if (schema.isEmpty()) {
|
||||||
|
return file
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return sanitize(schema) + "/" + file
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def fileName(obj) {
|
||||||
|
for (def cur = obj; cur != null; cur = cur.dasParent) {
|
||||||
|
if (storeSeparately(cur)) return sanitize(cur.name)
|
||||||
|
}
|
||||||
|
return sanitize(obj.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
def fileScope(path) {
|
||||||
|
def root = path.getName(0).toString()
|
||||||
|
if (root.endsWith(".sql")) return null
|
||||||
|
return ObjectPath.create(root, ObjectKind.SCHEMA)
|
||||||
|
}
|
||||||
|
|
||||||
|
def storeSeparately(obj) {
|
||||||
|
return obj instanceof DasObjectWithSource || obj instanceof DasSchemaChild
|
||||||
|
}
|
||||||
|
|
||||||
|
def sanitize(name) {
|
||||||
|
return name.replace('/', 'slash')
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import com.intellij.database.model.DasObjectWithSource
|
||||||
|
import com.intellij.database.model.DasSchemaChild
|
||||||
|
|
||||||
|
LAYOUT.baseName { ctx -> baseName(ctx.object) }
|
||||||
|
LAYOUT.fileName { ctx -> String.format("%03d-%s.sql", ctx.count, ctx.baseName) }
|
||||||
|
|
||||||
|
|
||||||
|
def baseName(obj) {
|
||||||
|
for (def cur = obj; cur != null; cur = cur.dasParent) {
|
||||||
|
if (storeSeparately(cur)) return sanitize(cur.name)
|
||||||
|
}
|
||||||
|
return sanitize(obj.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
def storeSeparately(obj) {
|
||||||
|
return obj instanceof DasObjectWithSource || obj instanceof DasSchemaChild
|
||||||
|
}
|
||||||
|
|
||||||
|
def sanitize(name) {
|
||||||
|
return name.replace('/', 'slash')
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import com.intellij.database.model.DasObjectWithSource
|
||||||
|
import com.intellij.database.model.DasSchemaChild
|
||||||
|
|
||||||
|
LAYOUT.ignoreDependencies = true
|
||||||
|
LAYOUT.baseName { ctx -> baseName(ctx.object) }
|
||||||
|
|
||||||
|
|
||||||
|
def baseName(obj) {
|
||||||
|
for (def cur = obj; cur != null; cur = cur.dasParent) {
|
||||||
|
if (storeSeparately(cur)) return sanitize(cur.name)
|
||||||
|
}
|
||||||
|
return sanitize(obj.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
def storeSeparately(obj) {
|
||||||
|
return obj instanceof DasObjectWithSource || obj instanceof DasSchemaChild
|
||||||
|
}
|
||||||
|
|
||||||
|
def sanitize(name) {
|
||||||
|
return name.replace('/', 'slash')
|
||||||
|
}
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
import com.intellij.database.model.DasTable
|
||||||
|
import com.intellij.database.util.Case
|
||||||
|
import com.intellij.database.util.DasUtil
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Available context bindings:
|
||||||
|
* SELECTION Iterable<DasObject>
|
||||||
|
* PROJECT project
|
||||||
|
* FILES files helper
|
||||||
|
*/
|
||||||
|
|
||||||
|
packageName = "com.sample;"
|
||||||
|
typeMapping = [
|
||||||
|
(~/(?i)int/) : "long",
|
||||||
|
(~/(?i)float|double|decimal|real/): "double",
|
||||||
|
(~/(?i)datetime|timestamp/) : "java.sql.Timestamp",
|
||||||
|
(~/(?i)date/) : "java.sql.Date",
|
||||||
|
(~/(?i)time/) : "java.sql.Time",
|
||||||
|
(~/(?i)/) : "String"
|
||||||
|
]
|
||||||
|
|
||||||
|
FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->
|
||||||
|
SELECTION.filter { it instanceof DasTable }.each { generate(it, dir) }
|
||||||
|
}
|
||||||
|
|
||||||
|
def generate(table, dir) {
|
||||||
|
def className = javaName(table.getName(), true)
|
||||||
|
def fields = calcFields(table)
|
||||||
|
new File(dir, className + ".java").withPrintWriter { out -> generate(out, className, fields) }
|
||||||
|
}
|
||||||
|
|
||||||
|
def generate(out, className, fields) {
|
||||||
|
out.println "package $packageName"
|
||||||
|
out.println ""
|
||||||
|
out.println ""
|
||||||
|
out.println "public class $className {"
|
||||||
|
out.println ""
|
||||||
|
fields.each() {
|
||||||
|
if (it.annos != "") out.println " ${it.annos}"
|
||||||
|
out.println " private ${it.type} ${it.name};"
|
||||||
|
}
|
||||||
|
out.println ""
|
||||||
|
fields.each() {
|
||||||
|
out.println ""
|
||||||
|
out.println " public ${it.type} get${it.name.capitalize()}() {"
|
||||||
|
out.println " return ${it.name};"
|
||||||
|
out.println " }"
|
||||||
|
out.println ""
|
||||||
|
out.println " public void set${it.name.capitalize()}(${it.type} ${it.name}) {"
|
||||||
|
out.println " this.${it.name} = ${it.name};"
|
||||||
|
out.println " }"
|
||||||
|
out.println ""
|
||||||
|
}
|
||||||
|
out.println "}"
|
||||||
|
}
|
||||||
|
|
||||||
|
def calcFields(table) {
|
||||||
|
DasUtil.getColumns(table).reduce([]) { fields, col ->
|
||||||
|
def spec = Case.LOWER.apply(col.getDasType().getSpecification())
|
||||||
|
def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value
|
||||||
|
fields += [[
|
||||||
|
name : javaName(col.getName(), false),
|
||||||
|
type : typeStr,
|
||||||
|
annos: ""]]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def javaName(str, capitalize) {
|
||||||
|
def s = com.intellij.psi.codeStyle.NameUtil.splitNameIntoWords(str)
|
||||||
|
.collect { Case.LOWER.apply(it).capitalize() }
|
||||||
|
.join("")
|
||||||
|
.replaceAll(/[^\p{javaJavaIdentifierPart}[_]]/, "_")
|
||||||
|
capitalize || s.length() == 1? s : Case.LOWER.apply(s[0]) + s[1..-1]
|
||||||
|
}
|
||||||
BIN
idea-sandbox/config/idea.key
Normal file
BIN
idea-sandbox/config/idea.key
Normal file
Binary file not shown.
1147
idea-sandbox/config/jdbc-drivers/jdbc-drivers.xml
Normal file
1147
idea-sandbox/config/jdbc-drivers/jdbc-drivers.xml
Normal file
File diff suppressed because it is too large
Load Diff
14
idea-sandbox/config/migration/JUnit4__5.xml
Normal file
14
idea-sandbox/config/migration/JUnit4__5.xml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<migrationMap>
|
||||||
|
<name value="JUnit (4.x -> 5.0)" />
|
||||||
|
<description value="For transferring the JUnit 4 test annotations to the new jupiter ones, may result in red code! Assertions won't be migrated.
|
||||||
|
Please see the 'Java | JUnit issues | JUnit 4 test can be JUnit 5' inspection to migrate only tests which can be converted fully automatically." />
|
||||||
|
<entry oldName="org.junit.Before" newName="org.junit.jupiter.api.BeforeEach" type="class"/>
|
||||||
|
<entry oldName="org.junit.BeforeClass" newName="org.junit.jupiter.api.BeforeAll" type="class"/>
|
||||||
|
<entry oldName="org.junit.After" newName="org.junit.jupiter.api.AfterEach" type="class"/>
|
||||||
|
<entry oldName="org.junit.AfterClass" newName="org.junit.jupiter.api.AfterAll" type="class"/>
|
||||||
|
<entry oldName="org.junit.Test" newName="org.junit.jupiter.api.Test" type="class"/>
|
||||||
|
<entry oldName="org.junit.Ignore" newName="org.junit.jupiter.api.Disabled" type="class"/>
|
||||||
|
</migrationMap>
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="AquaNewUserFeedbackInfoState"><![CDATA[{
|
||||||
|
"userTypedInEditor": true
|
||||||
|
}]]></component>
|
||||||
|
</application>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<application>
|
||||||
|
<component name="AquaOldUserFeedbackInfoState"><![CDATA[{
|
||||||
|
"userTypedInEditor": true,
|
||||||
|
"firstUsageTime": "2024-05-13T16:19:21.627506"
|
||||||
|
}]]></component>
|
||||||
|
</application>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<application>
|
||||||
|
<component name="CommonFeedbackSurveyService"><![CDATA[{}]]></component>
|
||||||
|
</application>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<application>
|
||||||
|
<component name="DontShowAgainFeedbackService"><![CDATA[{}]]></component>
|
||||||
|
</application>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<application>
|
||||||
|
<component name="KafkaConsumerProducerInfoState"><![CDATA[{}]]></component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/NewUIInfoService.xml
Normal file
5
idea-sandbox/config/options/NewUIInfoService.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="NewUIInfoState"><![CDATA[{
|
||||||
|
"enableNewUIDate": "2024-05-13T18:52:55.125134"
|
||||||
|
}]]></component>
|
||||||
|
</application>
|
||||||
3
idea-sandbox/config/options/PyCharmCEFeedbackService.xml
Normal file
3
idea-sandbox/config/options/PyCharmCEFeedbackService.xml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<application>
|
||||||
|
<component name="PyCharmCEFeedbackState"><![CDATA[{}]]></component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/PyCharmUIInfoState.xml
Normal file
5
idea-sandbox/config/options/PyCharmUIInfoState.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="PyCharmUIInfoState"><![CDATA[{
|
||||||
|
"newUserFirstRunDate": "2024-05-13T16:17:29.814255"
|
||||||
|
}]]></component>
|
||||||
|
</application>
|
||||||
175
idea-sandbox/config/options/actionSummary.xml
Normal file
175
idea-sandbox/config/options/actionSummary.xml
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
<application>
|
||||||
|
<component name="ActionsLocalSummary">
|
||||||
|
<e n="$SelectAll">
|
||||||
|
<i c="363" l="1717671166927" />
|
||||||
|
</e>
|
||||||
|
<e n="$Undo">
|
||||||
|
<i c="152" l="1717669152300" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorBackSpace">
|
||||||
|
<i c="954" l="1724138760223" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorChooseLookupItem">
|
||||||
|
<i c="144" l="1717669304916" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorCopy">
|
||||||
|
<i c="23" l="1724138534223" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorCut">
|
||||||
|
<i c="12" l="1724138649421" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorDown">
|
||||||
|
<i c="189" l="1724138650560" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorDuplicate">
|
||||||
|
<i c="1" l="1715845001776" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorEnter">
|
||||||
|
<i c="307" l="1724138762140" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorEscape">
|
||||||
|
<i c="338" l="1717669085666" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorLeft">
|
||||||
|
<i c="160" l="1724138761876" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorLeftWithSelection">
|
||||||
|
<i c="7" l="1717414253892" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorLineEnd">
|
||||||
|
<i c="20" l="1717664908701" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorLineStart">
|
||||||
|
<i c="11" l="1724138635627" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorNextWord">
|
||||||
|
<i c="1" l="1716886114968" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorPaste">
|
||||||
|
<i c="19" l="1724138651338" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorPreviousWord">
|
||||||
|
<i c="5" l="1717126187648" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorRight">
|
||||||
|
<i c="190" l="1717664408909" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorRightWithSelection">
|
||||||
|
<i c="1" l="1716895022454" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorStartNewLine">
|
||||||
|
<i c="1" l="1716965190178" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorTab">
|
||||||
|
<i c="23" l="1724138596529" />
|
||||||
|
</e>
|
||||||
|
<e n="EditorUp">
|
||||||
|
<i c="197" l="1724138651101" />
|
||||||
|
</e>
|
||||||
|
<e n="Find">
|
||||||
|
<i c="3" l="1717658357202" />
|
||||||
|
</e>
|
||||||
|
<e n="GotoDeclaration">
|
||||||
|
<i c="280" l="1717668194936" />
|
||||||
|
</e>
|
||||||
|
<e n="GotoLine">
|
||||||
|
<i c="3" l="1717402779921" />
|
||||||
|
</e>
|
||||||
|
<e n="HippieCompletion">
|
||||||
|
<i c="3" l="1717395097460" />
|
||||||
|
</e>
|
||||||
|
<e n="Kotlin.NewFile">
|
||||||
|
<i c="2" l="1716864639359" />
|
||||||
|
</e>
|
||||||
|
<e n="NewFile">
|
||||||
|
<i c="2" l="1716526653063" />
|
||||||
|
</e>
|
||||||
|
<e n="NewTypeScriptFile">
|
||||||
|
<i c="1" l="1716531088417" />
|
||||||
|
</e>
|
||||||
|
<e n="NextTemplateVariable">
|
||||||
|
<i c="11" l="1717667201250" />
|
||||||
|
</e>
|
||||||
|
<e n="PsiViewer">
|
||||||
|
<i c="5" l="1724138560134" />
|
||||||
|
</e>
|
||||||
|
<e n="PsiViewerForContext">
|
||||||
|
<i c="119" l="1717669183815" />
|
||||||
|
</e>
|
||||||
|
<e n="RedesignedRunConfigurationSelector">
|
||||||
|
<i c="17" l="1715931525531" />
|
||||||
|
</e>
|
||||||
|
<e n="ReformatCode">
|
||||||
|
<i c="403" l="1717664943428" />
|
||||||
|
</e>
|
||||||
|
<e n="RenameElement">
|
||||||
|
<i c="7" l="1716531107003" />
|
||||||
|
</e>
|
||||||
|
<e n="ReplaceInPath">
|
||||||
|
<i c="1" l="1715750491757" />
|
||||||
|
</e>
|
||||||
|
<e n="Run">
|
||||||
|
<i c="3" l="1715858915740" />
|
||||||
|
</e>
|
||||||
|
<e n="RunClass">
|
||||||
|
<i c="6" l="1715931523440" />
|
||||||
|
</e>
|
||||||
|
<e n="SelectInProjectView">
|
||||||
|
<i c="1" l="1715593582035" />
|
||||||
|
</e>
|
||||||
|
<e n="SettingsEntryPoint">
|
||||||
|
<i c="3" l="1717144723281" />
|
||||||
|
</e>
|
||||||
|
<e n="Stop">
|
||||||
|
<i c="1" l="1715931533927" />
|
||||||
|
</e>
|
||||||
|
<e n="WelcomeScreen.CreateNewProject">
|
||||||
|
<i c="1" l="1724138505008" />
|
||||||
|
</e>
|
||||||
|
<e n="WelcomeScreen.OpenProject">
|
||||||
|
<i c="1" l="1715588344107" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.codeInsight.daemon.NavigateAction">
|
||||||
|
<i c="16" l="1715854404250" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.dev.psiViewer.stubs.StubDetailsViewer$1">
|
||||||
|
<i c="1" l="1716531427973" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.execution.lineMarker.LineMarkerActionWrapper">
|
||||||
|
<i c="7" l="1717664194640" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.find.SearchReplaceComponent$CloseAction">
|
||||||
|
<i c="3" l="1717658365924" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.ide.plugins.newui.PluginsTab$3$1">
|
||||||
|
<i c="1" l="1716526709254" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.notification.NotificationAction$Simple">
|
||||||
|
<i c="28" l="1717396848995" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.openapi.fileEditor.impl.tabActions.CloseTab">
|
||||||
|
<i c="32" l="1717658371894" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$AnCancelAction">
|
||||||
|
<i c="42" l="1717406812948" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.openapi.wm.impl.SquareAnActionButton">
|
||||||
|
<i c="4" l="1717396850425" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.platform.lsp.api.lsWidget.RestartLspServerAction">
|
||||||
|
<i c="1" l="1717661339218" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.toolWindow.ToolWindowHeader$HideAction">
|
||||||
|
<i c="1" l="1717394781740" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.ui.CommonActionsPanel$AddButton">
|
||||||
|
<i c="1" l="1715836652419" />
|
||||||
|
</e>
|
||||||
|
<e n="com.intellij.ui.CommonActionsPanel$RemoveButton">
|
||||||
|
<i c="11" l="1715931520232" />
|
||||||
|
</e>
|
||||||
|
<e n="editRunConfigurations">
|
||||||
|
<i c="13" l="1715931526161" />
|
||||||
|
</e>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/colors.scheme.xml
Normal file
5
idea-sandbox/config/options/colors.scheme.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="EditorColorsManagerImpl">
|
||||||
|
<global_color_scheme name="Dark" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/console-font.xml
Normal file
5
idea-sandbox/config/options/console-font.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="ConsoleFont">
|
||||||
|
<option name="VERSION" value="1" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
3
idea-sandbox/config/options/databaseDrivers.xml
Normal file
3
idea-sandbox/config/options/databaseDrivers.xml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<application>
|
||||||
|
<component name="LocalDatabaseDriverManager" version="201" />
|
||||||
|
</application>
|
||||||
103
idea-sandbox/config/options/debugger.xml
Normal file
103
idea-sandbox/config/options/debugger.xml
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
<application>
|
||||||
|
<component name="DebuggerSettings">
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="com.sun.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="java.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="javax.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="org.omg.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="sun.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="jdk.internal.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="junit.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="org.junit.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="com.intellij.rt.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="com.yourkit.runtime.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="com.springsource.loaded.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="org.springsource.loaded.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="javassist.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="org.apache.webbeans.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="com.ibm.ws.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="org.mockito.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="kotlin.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="androidx.compose.runtime.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
<filter>
|
||||||
|
<option name="PATTERN" value="kotlinx.*" />
|
||||||
|
<option name="ENABLED" value="true" />
|
||||||
|
<option name="INCLUDE" value="true" />
|
||||||
|
</filter>
|
||||||
|
</component>
|
||||||
|
<component name="XDebuggerSettings">
|
||||||
|
<data-views />
|
||||||
|
<general />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/editor-font.xml
Normal file
5
idea-sandbox/config/options/editor-font.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="DefaultFont">
|
||||||
|
<option name="VERSION" value="1" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
8
idea-sandbox/config/options/editor.xml
Normal file
8
idea-sandbox/config/options/editor.xml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<application>
|
||||||
|
<component name="CodeInsightSettings">
|
||||||
|
<option name="AUTO_POPUP_JAVADOC_INFO" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="CodeVisionSettings">
|
||||||
|
<option name="defaultPosition" value="Right" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
152
idea-sandbox/config/options/features.usage.statistics.xml
Normal file
152
idea-sandbox/config/options/features.usage.statistics.xml
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
<application>
|
||||||
|
<component name="FeatureUsageStatistics" first-run="1715588381754" have-been-shown="false" show-in-other="true" show-in-compilation="true">
|
||||||
|
<feature id="editing.completion.camelHumps" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.smarttype.afternew" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.second.smarttype.aslist" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.surroundwith.statement" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.goto.file.line" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.finishBySmartEnter" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.popup.symbol" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="switcher" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.replace" count="0" last-shown="1717669304444" last-used="0" shown-count="527" />
|
||||||
|
<feature id="codeassists.complete.statement" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="vcs.show.quick.list" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="spring.endpoints.tool.window" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.smarttype.casting" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="spring.inject.entities" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.convert.line.separators" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.console.execute" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.recent.files" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="scratch" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="refactoring.move.moveInner" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="vcs.pull.requests" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="vcs.annotate" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ui.open.last.tool.window" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.reformat.code" count="403" last-shown="0" last-used="1717664943430" shown-count="0" />
|
||||||
|
<feature id="editing.completion.show.liveTemplates" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.copy.line" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.find.in.files" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.finishByExclamation" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.copy.table" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ui.hide.tool.window" count="1" last-shown="0" last-used="1717394781747" shown-count="0" />
|
||||||
|
<feature id="navigation.find.replace.in.files.toggle" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="move.element.left.right" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="jar.diff" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="intentions.check.regexp" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="profiler.open.snapshot" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.comment.line" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.second.smarttype.chain" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.second.smarttype.toar" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="SearchEverywhere" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editor.delete.line" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.inheritance.hierarchy" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.duplicate" count="1" last-shown="0" last-used="1715845001813" shown-count="0" />
|
||||||
|
<feature id="editing.copy.reference" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.highlight.throws" count="3" last-shown="0" last-used="1716888368650" shown-count="0" />
|
||||||
|
<feature id="navigation.find" count="3" last-shown="0" last-used="1717658357261" shown-count="0" />
|
||||||
|
<feature id="codeassists.quickdefinition" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.basic" count="144" last-shown="0" last-used="1717669304926" shown-count="0" />
|
||||||
|
<feature id="editing.completion.postfix" count="1" last-shown="0" last-used="1716864722813" shown-count="0" />
|
||||||
|
<feature id="dir.diff" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.recent.locations" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="diagram.show.diff" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.select.word" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ui.close.other.editors" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="debugger.evaluate.expression" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.highlight.usages" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.highlight.implements" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="debugger.breakpoint.edit" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.smarttype.general" count="0" last-shown="1716866236054" last-used="0" shown-count="4" />
|
||||||
|
<feature id="codeassist.inspect.batch" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.table.editor" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.liveTemplates" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.goto.usages" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.comment.block" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="intentions.edit.regexp" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.quickdefinition.lookup" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.find.usages" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="spring.endpoint.actions" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.clipboard.history" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.compare.editor.with.clipboard" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="refactoring.rename" count="7" last-shown="0" last-used="1716531107123" shown-count="0" />
|
||||||
|
<feature id="navigation.popup.action" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="refactoring.show.quick.list" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.forget.cached.schemas" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.cancelByControlArrows" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="find.recent.search" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.goto.inspection" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="vcs.show.local.history" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.variable.name" count="2" last-shown="0" last-used="1716866234490" shown-count="0" />
|
||||||
|
<feature id="vcs.use.integration" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.popup.file" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.overrideimplement" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.console.run.intention" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.diff" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ui.close.all.editors" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.popup.wildcards" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="refactoring.introduceVariable" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="refactoring.extractMethod" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.javadoc.external" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.surroundwith.expression" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.generate.code" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.goto.declaration" count="281" last-shown="0" last-used="1717668194942" shown-count="0" />
|
||||||
|
<feature id="editing.completion.finishByDotEtc" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ui.open.project.tool.window" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.join.lines" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.goto.implementation" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="debugger.breakpoint.non.suspending" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.finishByCtrlDot" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.context.actions" count="1" last-shown="0" last-used="1716952942937" shown-count="0" />
|
||||||
|
<feature id="navigation.select.in" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.global.member.name" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="intentions.fix.javadoc" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ui.tree.speedsearch" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ui.horizontal.scrolling" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.replace" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="refactoring.copyClass" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="spring.find.endpoint" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.highlight.return" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ant.quickfix.CreateProperty" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.popup.camelprefix" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.popup.class" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.parameterInfo" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.table.editor.wrapper" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="find.completion" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="tag.name.completion" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.second.smarttype.array.member" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="diagram.show.popup" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="refactoring.introduceVariable.incompleteStatement" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.readonly.datasource" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="vcs.compare.file.versions" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.find.replace.toggle" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.add.carets.using.double.ctrl" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.console" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.quickjavadoc.lookup" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ui.scheme.quickswitch" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="navigation.replace.in.files" count="1" last-shown="0" last-used="1715750492074" shown-count="0" />
|
||||||
|
<feature id="navigation.popup.file.structure" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ant.quickfix.CreateTarget" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.quickjavadoc.ctrln" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="codeassists.quickjavadoc" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="ui.recentchanges" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="diagram.show" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.move.statement.up.down" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.second.basic" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="editing.completion.changeSorting" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="db.assign.color" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<feature id="spring.select.in" count="0" last-shown="0" last-used="0" shown-count="0" />
|
||||||
|
<completionStatsTag>
|
||||||
|
<option name="sparedCharacters" value="687" />
|
||||||
|
<option name="invocations" value="89" />
|
||||||
|
<option name="startDate" value="1715529600000" />
|
||||||
|
<option name="dayCount" value="11" />
|
||||||
|
<option name="lastDate" value="1717603200000" />
|
||||||
|
</completionStatsTag>
|
||||||
|
<fixesStatsTag>
|
||||||
|
<option name="invocations" value="1" />
|
||||||
|
<option name="startDate" value="1717344000000" />
|
||||||
|
<option name="dayCount" value="1" />
|
||||||
|
<option name="lastDate" value="1717344000000" />
|
||||||
|
</fixesStatsTag>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
8
idea-sandbox/config/options/filetypes.xml
Normal file
8
idea-sandbox/config/options/filetypes.xml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<application>
|
||||||
|
<component name="FileTypeManager" version="18">
|
||||||
|
<extensionMap>
|
||||||
|
<removed_mapping ext="apk" approved="true" type="ARCHIVE" />
|
||||||
|
<removed_mapping ext="psd" approved="true" type="Image" />
|
||||||
|
</extensionMap>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
10
idea-sandbox/config/options/find.xml
Normal file
10
idea-sandbox/config/options/find.xml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<application>
|
||||||
|
<component name="FindSettings">
|
||||||
|
<mask>*.css</mask>
|
||||||
|
<mask>*.html</mask>
|
||||||
|
<mask>*.xml</mask>
|
||||||
|
<mask>*.jsp</mask>
|
||||||
|
<mask>*.properties</mask>
|
||||||
|
<mask>*.java</mask>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
9
idea-sandbox/config/options/ide-features-trainer.xml
Normal file
9
idea-sandbox/config/options/ide-features-trainer.xml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<application>
|
||||||
|
<component name="LessonStateBase">
|
||||||
|
<option name="map">
|
||||||
|
<map>
|
||||||
|
<entry key="java.onboarding" value="NOT_PASSED" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/ide.general.local.xml
Normal file
5
idea-sandbox/config/options/ide.general.local.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="GeneralLocalSettings">
|
||||||
|
<option name="defaultProjectDirectory" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
8
idea-sandbox/config/options/ide.general.xml
Normal file
8
idea-sandbox/config/options/ide.general.xml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<application>
|
||||||
|
<component name="GeneralSettings">
|
||||||
|
<option name="showTipsOnStartup" value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="Registry">
|
||||||
|
<entry key="ide.experimental.ui" value="true" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<application>
|
||||||
|
<component name="IgnoredPluginSuggestions">
|
||||||
|
<option name="pluginIds">
|
||||||
|
<list>
|
||||||
|
<option value="Docker" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
187
idea-sandbox/config/options/jdk.table.xml
Normal file
187
idea-sandbox/config/options/jdk.table.xml
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
<application>
|
||||||
|
<component name="ProjectJdkTable">
|
||||||
|
<jdk version="2">
|
||||||
|
<name value="22" />
|
||||||
|
<type value="JavaSDK" />
|
||||||
|
<version value="java version "22.0.1"" />
|
||||||
|
<homePath value="/Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home" />
|
||||||
|
<roots>
|
||||||
|
<annotationsPath>
|
||||||
|
<root type="composite">
|
||||||
|
<root url="jar://$APPLICATION_HOME_DIR$/plugins/java/lib/resources/jdkAnnotations.jar!/" type="simple" />
|
||||||
|
</root>
|
||||||
|
</annotationsPath>
|
||||||
|
<classPath>
|
||||||
|
<root type="composite">
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/com.oracle.graal.graal_enterprise" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/com.oracle.svm.enterprise.truffle" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/com.oracle.svm.extraimage_enterprise" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.base" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.compiler" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.datatransfer" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.desktop" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.instrument" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.logging" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.management" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.management.rmi" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.naming" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.net.http" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.prefs" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.rmi" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.scripting" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.se" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.security.jgss" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.security.sasl" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.smartcardio" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.sql" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.sql.rowset" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.transaction.xa" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.xml" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/java.xml.crypto" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.accessibility" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.attach" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.charsets" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.compiler" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.crypto.cryptoki" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.crypto.ec" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.dynalink" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.editpad" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.graal.compiler" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.graal.compiler.management" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.hotspot.agent" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.httpserver" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.incubator.vector" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.internal.ed" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.internal.jvmstat" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.internal.le" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.internal.opt" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.internal.vm.ci" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jartool" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.javadoc" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jcmd" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jconsole" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jdeps" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jdi" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jdwp.agent" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jfr" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jlink" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jpackage" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jshell" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jsobject" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.jstatd" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.localedata" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.management" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.management.agent" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.management.jfr" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.naming.dns" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.naming.rmi" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.net" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.nio.mapmode" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.random" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.sctp" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.security.auth" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.security.jgss" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.unsupported" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.unsupported.desktop" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.xml.dom" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/jdk.zipfs" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/org.graalvm.collections" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/org.graalvm.extraimage.builder" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/org.graalvm.extraimage.librarysupport" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/org.graalvm.nativeimage" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/org.graalvm.nativeimage.llvm" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/org.graalvm.truffle.compiler" type="simple" />
|
||||||
|
<root url="jrt:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home!/org.graalvm.word" type="simple" />
|
||||||
|
</root>
|
||||||
|
</classPath>
|
||||||
|
<javadocPath>
|
||||||
|
<root type="composite" />
|
||||||
|
</javadocPath>
|
||||||
|
<sourcePath>
|
||||||
|
<root type="composite">
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.se" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jdi" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jfr" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.net" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.rmi" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.sql" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.xml" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jcmd" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.sctp" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.base" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jdeps" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jlink" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.zipfs" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.prefs" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.attach" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jshell" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jstatd" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.random" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.naming" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.editpad" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jartool" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.javadoc" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.xml.dom" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.desktop" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.logging" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.charsets" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.compiler" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.dynalink" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jconsole" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jpackage" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jsobject" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.compiler" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.net.http" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.crypto.ec" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.scripting" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.httpserver" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.jdwp.agent" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.localedata" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.management" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.naming.dns" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.naming.rmi" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.instrument" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.management" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.sql.rowset" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.xml.crypto" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.internal.ed" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.internal.le" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.nio.mapmode" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.unsupported" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.smartcardio" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.internal.opt" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/org.graalvm.word" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.datatransfer" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.accessibility" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.hotspot.agent" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.security.auth" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.security.jgss" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.security.jgss" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.security.sasl" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.graal.compiler" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.internal.vm.ci" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.management.jfr" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.management.rmi" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.transaction.xa" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.crypto.cryptoki" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.incubator.vector" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.internal.jvmstat" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.management.agent" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.unsupported.desktop" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/org.graalvm.collections" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/org.graalvm.nativeimage" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/org.graalvm.nativeimage.llvm" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/org.graalvm.truffle.compiler" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/jdk.graal.compiler.management" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/org.graalvm.extraimage.builder" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/com.oracle.graal.graal_enterprise" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/com.oracle.svm.enterprise.truffle" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/com.oracle.svm.extraimage_enterprise" type="simple" />
|
||||||
|
<root url="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/org.graalvm.extraimage.librarysupport" type="simple" />
|
||||||
|
</root>
|
||||||
|
</sourcePath>
|
||||||
|
</roots>
|
||||||
|
<additional />
|
||||||
|
</jdk>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/k2-feedback.xml
Normal file
5
idea-sandbox/config/options/k2-feedback.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="K2NewUserTracker">
|
||||||
|
<option name="lastSavedPluginMode" value="K1" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
3
idea-sandbox/config/options/log-categories.xml
Normal file
3
idea-sandbox/config/options/log-categories.xml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<application>
|
||||||
|
<component name="Logs.Categories"><![CDATA[{}]]></component>
|
||||||
|
</application>
|
||||||
66
idea-sandbox/config/options/other.xml
Normal file
66
idea-sandbox/config/options/other.xml
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<application>
|
||||||
|
<component name="FileEditorProviderManager">{}</component>
|
||||||
|
<component name="NotRoamableUiSettings">
|
||||||
|
<option name="fontSize" value="13.0" />
|
||||||
|
<option name="presentationModeIdeScale" value="1.75" />
|
||||||
|
<option name="overrideLafFontsWasMigrated" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PropertyService"><![CDATA[{
|
||||||
|
"keyToString": {
|
||||||
|
"CWM_LOGGING_VERSION": "1",
|
||||||
|
"InstalledPluginsSearchHistory": "remote\nre\ntypescr\ntypesc\ntypes",
|
||||||
|
"LANGUAGE_DETECTOR_ASKED_BEFORE": "true",
|
||||||
|
"LAST_CALCULATED_COLOR_INDEX_KEY": "2",
|
||||||
|
"MarketplacePluginsSearchHistory": "typesc\ntype",
|
||||||
|
"NextRunPlatformUpdateBuild": "IC-232.10300.40",
|
||||||
|
"NextRunPlatformUpdateVersion": "2023.2.6",
|
||||||
|
"NonModalCommitCustomization.IsApplied": "true",
|
||||||
|
"PluginConfigurable.selectionTab": "1",
|
||||||
|
"RunOnceActivity.ide.auto-popup.quick-doc.initialized": "true",
|
||||||
|
"RunOnceActivity.java.code.vision.default.position.was.set": "true",
|
||||||
|
"SettingsSearchHistory": "code st",
|
||||||
|
"StubDetailsViewer.showPreviewDetails": "true",
|
||||||
|
"ask.about.ctrl.y.shortcut.v2": "true",
|
||||||
|
"bundled.plugins.list.saved.version": "IC-232.10227.8",
|
||||||
|
"com.intellij.ide.projectWizard.generators.JavaNewProjectWizard$Step.selectedStep": "IntelliJ",
|
||||||
|
"enter_selection_count": "5",
|
||||||
|
"evlsprt3.232": "5",
|
||||||
|
"evlsprt3.241": "3",
|
||||||
|
"experimental.ui.on.first.startup": "true",
|
||||||
|
"experimental.ui.used.version": "241.19072.14",
|
||||||
|
"file.gist.reindex.count": "4",
|
||||||
|
"fileTypeChangedCounter": "6",
|
||||||
|
"fontSizeToResetConsole": "13.0",
|
||||||
|
"fontSizeToResetEditor": "13.0",
|
||||||
|
"got.it.tooltip.empty.project.create.file": "1",
|
||||||
|
"got.it.tooltip.reader.mode.got.it": "1",
|
||||||
|
"gotit.previous.run": "IC-232.10227.8",
|
||||||
|
"ide.memory.adjusted": "true",
|
||||||
|
"ift.hide.welcome.screen.promo": "true",
|
||||||
|
"installed.kotlin.plugin.version": "241.19072.14-IJ",
|
||||||
|
"jdk.selected.JAVA_MODULE": "22",
|
||||||
|
"llm.installer.last.toolwindow.state": "LLM_INSTALLER",
|
||||||
|
"migrated.non.roamable.values.from.general.settings": "true",
|
||||||
|
"previousColorScheme": "_@user_Dark",
|
||||||
|
"project.wizard.group": "NPW.empty-project",
|
||||||
|
"registry.to.advanced.settings.migration.build": "IU-241.19072.14",
|
||||||
|
"tasks.pass.word.conversion.enforced": "true",
|
||||||
|
"ts.lib.d.ts.version": "5.4.3"
|
||||||
|
},
|
||||||
|
"keyToStringList": {
|
||||||
|
"fileTypeDetectors": [
|
||||||
|
"com.intellij.ide.scratch.ScratchFileServiceImpl$Detector",
|
||||||
|
"com.intellij.profiler.ultimate.hprof.impl.HprofFileTypeDetector",
|
||||||
|
"com.intellij.javascript.debugger.sourcemap.SourceMapFileType$MyFileTypeDetector",
|
||||||
|
"com.intellij.database.vfs.DbStorageFileType$Detector",
|
||||||
|
"com.jetbrains.nodejs.util.NodeFileTypeDetector$JavaScriptFileTypeDetector",
|
||||||
|
"com.jetbrains.nodejs.util.NodeFileTypeDetector$TypeScriptFileTypeDetector",
|
||||||
|
"org.jetbrains.plugins.textmate.TextMateFileType$TextMateFileDetector"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}]]></component>
|
||||||
|
<component name="PsiViewerSettings">
|
||||||
|
<option name="type" value="Slint File file" />
|
||||||
|
<option name="lastSelectedTabIndex" value="2" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/path.macros.xml
Normal file
5
idea-sandbox/config/options/path.macros.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="PathMacrosImpl">
|
||||||
|
<macro name="MAVEN_REPOSITORY" value="/Users/me/.m2/repository" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
19
idea-sandbox/config/options/profilerRunConfigurations.xml
Normal file
19
idea-sandbox/config/options/profilerRunConfigurations.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<application>
|
||||||
|
<component name="ProfilerRunConfigurations">
|
||||||
|
<profilerRunConfigurations>
|
||||||
|
<item configurationTypeId="IntellijProfilerConfiguration">
|
||||||
|
<IntellijProfilerConfigurationState name="IntelliJ Profiler" />
|
||||||
|
</item>
|
||||||
|
</profilerRunConfigurations>
|
||||||
|
<knownConfigurationTypes>
|
||||||
|
<id>IntellijProfilerConfiguration</id>
|
||||||
|
<id>AsyncProfilerCPUConfiguration</id>
|
||||||
|
<id>AsyncProfilerMemoryConfiguration</id>
|
||||||
|
<id>AsyncProfilerConfiguration</id>
|
||||||
|
<id>JFRSimpleConfiguration</id>
|
||||||
|
</knownConfigurationTypes>
|
||||||
|
<migrationStatus>
|
||||||
|
<status languageGroup="Java Profiler Configuration Type" lastMigrationIndex="3" />
|
||||||
|
</migrationStatus>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
26
idea-sandbox/config/options/recentProjects.xml
Normal file
26
idea-sandbox/config/options/recentProjects.xml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<application>
|
||||||
|
<component name="RecentProjectsManager">
|
||||||
|
<option name="additionalInfo">
|
||||||
|
<map>
|
||||||
|
<entry key="$USER_HOME$/Desktop/Dev/垃圾桶/intellij-test/intellij-test">
|
||||||
|
<value>
|
||||||
|
<RecentProjectMetaInfo frameTitle="intellij-test" projectWorkspaceId="2kuflqIPMJwd5b2B6quHLOGo2oW">
|
||||||
|
<option name="activationTimestamp" value="1724142610913" />
|
||||||
|
<option name="binFolder" value="$APPLICATION_HOME_DIR$/bin" />
|
||||||
|
<option name="build" value="IU-241.19072.14" />
|
||||||
|
<option name="buildTimestamp" value="1723129440000" />
|
||||||
|
<option name="colorInfo">
|
||||||
|
<RecentProjectColorInfo associatedIndex="2" />
|
||||||
|
</option>
|
||||||
|
<frame x="260" y="45" width="1400" height="962" />
|
||||||
|
<option name="productionCode" value="IU" />
|
||||||
|
<option name="projectOpenTimestamp" value="1724138536626" />
|
||||||
|
</RecentProjectMetaInfo>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
<option name="lastOpenedProject" value="$USER_HOME$/Desktop/Dev/垃圾桶/intellij-test/intellij-test" />
|
||||||
|
<option name="lastProjectLocation" value="$USER_HOME$/Desktop/Dev/垃圾桶/intellij-test" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
13
idea-sandbox/config/options/runner.layout.xml
Normal file
13
idea-sandbox/config/options/runner.layout.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<application>
|
||||||
|
<component name="RunnerLayoutSettings">
|
||||||
|
<runner id="JavaRunner">
|
||||||
|
<ViewImpl>
|
||||||
|
<option name="ID" value="ConsoleContent" />
|
||||||
|
<option name="placeInGrid" value="bottom" />
|
||||||
|
</ViewImpl>
|
||||||
|
<TabImpl>
|
||||||
|
<option name="bottomProportion" value="0.0" />
|
||||||
|
</TabImpl>
|
||||||
|
</runner>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/settingsSync.xml
Normal file
5
idea-sandbox/config/options/settingsSync.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="SettingsSyncSettings">
|
||||||
|
<option name="migrationFromOldStorageChecked" value="true" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
10
idea-sandbox/config/options/trusted-paths.xml
Normal file
10
idea-sandbox/config/options/trusted-paths.xml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<application>
|
||||||
|
<component name="Trusted.Paths">
|
||||||
|
<option name="TRUSTED_PROJECT_PATHS">
|
||||||
|
<map>
|
||||||
|
<entry key="$USER_HOME$/Desktop/Dev/垃圾桶/intellij-test/intellij-test" value="true" />
|
||||||
|
<entry key="$USER_HOME$/IdeaProjects/untitled" value="true" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/ui.lnf.xml
Normal file
5
idea-sandbox/config/options/ui.lnf.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="UISettings">
|
||||||
|
<option name="UI_DENSITY" value="COMPACT" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
9
idea-sandbox/config/options/updates.xml
Normal file
9
idea-sandbox/config/options/updates.xml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<application>
|
||||||
|
<component name="UpdatesConfigurable">
|
||||||
|
<option name="CHECK_NEEDED" value="false" />
|
||||||
|
<option name="LAST_BUILD_CHECKED" value="IU-241.19072.14" />
|
||||||
|
<option name="LAST_TIME_CHECKED" value="1724138771909" />
|
||||||
|
<option name="OBSOLETE_CUSTOM_REPOSITORIES_CLEAN_NEEDED" value="false" />
|
||||||
|
<option name="WHATS_NEW_SHOWN_FOR" value="241" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
3
idea-sandbox/config/options/usage.statistics.xml
Normal file
3
idea-sandbox/config/options/usage.statistics.xml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<application>
|
||||||
|
<component name="UsagesStatistic" show-notification="false" />
|
||||||
|
</application>
|
||||||
5
idea-sandbox/config/options/vcs.xml
Normal file
5
idea-sandbox/config/options/vcs.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<application>
|
||||||
|
<component name="VcsApplicationSettings">
|
||||||
|
<option name="COMMIT_FROM_LOCAL_CHANGES" value="true" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
28
idea-sandbox/config/options/window.state.xml
Normal file
28
idea-sandbox/config/options/window.state.xml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<application>
|
||||||
|
<component name="DimensionService">
|
||||||
|
<size key="#com.intellij.internal.psiView.PsiViewerDialog.0.0.3840.2160@192dpi" width="1600" height="1200" />
|
||||||
|
<size key="GridCell.Tab.0.left.0.0.3840.2160@192dpi" width="2668" height="584" />
|
||||||
|
<size key="GridCell.Tab.0.center.0.0.3840.2160@192dpi" width="2668" height="584" />
|
||||||
|
<size key="GridCell.Tab.0.right.0.0.3840.2160@192dpi" width="2668" height="584" />
|
||||||
|
<size key="GridCell.Tab.0.bottom.0.0.3840.2160@192dpi" width="2668" height="584" />
|
||||||
|
</component>
|
||||||
|
<component name="WindowManager">
|
||||||
|
<frame x="260" y="45" width="1400" height="962" />
|
||||||
|
</component>
|
||||||
|
<component name="WindowStateApplicationService">
|
||||||
|
<state x="548" y="251" key="IDE.errors.dialog" timestamp="1717037495400">
|
||||||
|
<screen x="0" y="25" width="1920" height="982" />
|
||||||
|
</state>
|
||||||
|
<state x="548" y="251" key="IDE.errors.dialog/0.25.1920.982/1920.25.1920.1055" timestamp="1717037495400" />
|
||||||
|
<state x="960" y="469" width="800" height="664" key="WELCOME_SCREEN" timestamp="1724145075550">
|
||||||
|
<screen x="0" y="25" width="1920" height="1002" />
|
||||||
|
</state>
|
||||||
|
<state x="960" y="469" width="800" height="664" key="WELCOME_SCREEN/0.25.1920.1002/1920.25.1920.1055" timestamp="1724145075550" />
|
||||||
|
<state x="960" y="492" width="800" height="699" key="WELCOME_SCREEN/0.25.1920.1055/1920.25.1920.982" timestamp="1717406858910" />
|
||||||
|
<state x="960" y="460" width="800" height="650" key="WELCOME_SCREEN/0.25.1920.982/1920.25.1920.1055" timestamp="1717671613288" />
|
||||||
|
<state x="560" y="132" width="800" height="674" key="new project wizard" timestamp="1724138535837">
|
||||||
|
<screen x="0" y="25" width="1920" height="1002" />
|
||||||
|
</state>
|
||||||
|
<state x="560" y="132" width="800" height="674" key="new project wizard/0.25.1920.1002/1920.25.1920.1055" timestamp="1724138535837" />
|
||||||
|
</component>
|
||||||
|
</application>
|
||||||
BIN
idea-sandbox/config/plugin_PCWMP.license
Normal file
BIN
idea-sandbox/config/plugin_PCWMP.license
Normal file
Binary file not shown.
BIN
idea-sandbox/config/tasks/intellij_test.contexts.zip
Normal file
BIN
idea-sandbox/config/tasks/intellij_test.contexts.zip
Normal file
Binary file not shown.
BIN
idea-sandbox/config/tasks/intellij_test.tasks.zip
Normal file
BIN
idea-sandbox/config/tasks/intellij_test.tasks.zip
Normal file
Binary file not shown.
BIN
idea-sandbox/config/tasks/untitled.contexts.zip
Normal file
BIN
idea-sandbox/config/tasks/untitled.contexts.zip
Normal file
Binary file not shown.
BIN
idea-sandbox/config/tasks/untitled.tasks.zip
Normal file
BIN
idea-sandbox/config/tasks/untitled.tasks.zip
Normal file
Binary file not shown.
BIN
idea-sandbox/config/updatedBrokenPlugins.db
Normal file
BIN
idea-sandbox/config/updatedBrokenPlugins.db
Normal file
Binary file not shown.
251
idea-sandbox/config/workspace/2fj8Is9vXjwmwogROXyZwmcuxTX.xml
Normal file
251
idea-sandbox/config/workspace/2fj8Is9vXjwmwogROXyZwmcuxTX.xml
Normal file
@@ -0,0 +1,251 @@
|
|||||||
|
<project version="4">
|
||||||
|
<component name="BookmarksManager">
|
||||||
|
<option name="groups">
|
||||||
|
<GroupState>
|
||||||
|
<option name="name" value="untitled" />
|
||||||
|
</GroupState>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="FileEditorManager">
|
||||||
|
<leaf ideFingerprint="2vb9ntiinehzr" SIDE_TABS_SIZE_LIMIT_KEY="-1">
|
||||||
|
<file>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/Button.slint">
|
||||||
|
<provider editor-type-id="text-editor" selected="true">
|
||||||
|
<state relative-caret-position="66">
|
||||||
|
<caret line="3" column="36" selection-end-line="18" selection-end-column="35" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/builtins.slint">
|
||||||
|
<provider editor-type-id="text-editor" selected="true">
|
||||||
|
<state relative-caret-position="298">
|
||||||
|
<caret line="161" column="17" selection-start-line="161" selection-start-column="17" selection-end-line="161" selection-end-column="17" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
</leaf>
|
||||||
|
</component>
|
||||||
|
<component name="FileTypeUsageLocalSummary"><![CDATA[{
|
||||||
|
"data": {
|
||||||
|
"JAVA": {
|
||||||
|
"usageCount": 13,
|
||||||
|
"lastUsed": 1717655844299
|
||||||
|
},
|
||||||
|
"Slint File": {
|
||||||
|
"usageCount": 63,
|
||||||
|
"lastUsed": 1717667161683
|
||||||
|
},
|
||||||
|
"WebPreview": {
|
||||||
|
"usageCount": 1,
|
||||||
|
"lastUsed": 1717388498830
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]]></component>
|
||||||
|
<component name="FindInProjectRecents">
|
||||||
|
<findStrings>
|
||||||
|
<find>StandardListViewItem</find>
|
||||||
|
</findStrings>
|
||||||
|
<replaceStrings>
|
||||||
|
<replace />
|
||||||
|
</replaceStrings>
|
||||||
|
</component>
|
||||||
|
<component name="IdeDocumentHistory">
|
||||||
|
<changedPaths>
|
||||||
|
<option value="$PROJECT_DIR$/src/Abc.kt" />
|
||||||
|
<option value="$PROJECT_DIR$/src/name.js" />
|
||||||
|
<option value="$PROJECT_DIR$/src/name1.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/name.ts" />
|
||||||
|
<option value="$PROJECT_DIR$/src/Main.kt" />
|
||||||
|
<option value="$PROJECT_DIR$/src/Main.java" />
|
||||||
|
<option value="$PROJECT_DIR$/src/main.slint" />
|
||||||
|
<option value="$PROJECT_DIR$/src/builtins.slint" />
|
||||||
|
<option value="$PROJECT_DIR$/src/Button.slint" />
|
||||||
|
</changedPaths>
|
||||||
|
</component>
|
||||||
|
<component name="LanguageUsageStatistics">
|
||||||
|
<language id="JAVA">
|
||||||
|
<summary usageCount="97" lastUsage="1717655844299" />
|
||||||
|
</language>
|
||||||
|
<language id="JavaScript">
|
||||||
|
<summary usageCount="1" lastUsage="1716530622897" />
|
||||||
|
</language>
|
||||||
|
<language id="Slint">
|
||||||
|
<summary usageCount="262" lastUsage="1717667161683" />
|
||||||
|
</language>
|
||||||
|
<language id="TypeScript">
|
||||||
|
<summary usageCount="3" lastUsage="1716546261002" />
|
||||||
|
</language>
|
||||||
|
<language id="kotlin">
|
||||||
|
<summary usageCount="2" lastUsage="1716864647147" />
|
||||||
|
</language>
|
||||||
|
<language id="textmate">
|
||||||
|
<summary usageCount="64" lastUsage="1717126069813" />
|
||||||
|
</language>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectView">
|
||||||
|
<navigator currentView="ProjectPane" proportions="" version="1" />
|
||||||
|
<panes>
|
||||||
|
<pane id="PackagesPane" />
|
||||||
|
<pane id="ProjectPane">
|
||||||
|
<subPane>
|
||||||
|
<expand>
|
||||||
|
<path>
|
||||||
|
<item name="untitled" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="dir{file:///Users/me/IdeaProjects/untitled}" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="untitled" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="dir{file:///Users/me/IdeaProjects/untitled}" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="dir{file:///Users/me/IdeaProjects/untitled/src}" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
</expand>
|
||||||
|
<select />
|
||||||
|
</subPane>
|
||||||
|
</pane>
|
||||||
|
<pane id="Scope" />
|
||||||
|
</panes>
|
||||||
|
</component>
|
||||||
|
<component name="RunConfigurationStartHistory">
|
||||||
|
<history>
|
||||||
|
<element setting="Slint viewer.Button.slint" />
|
||||||
|
<element setting="Slint viewer.main.slint" />
|
||||||
|
<element setting="Slint viewer.Unnamed (1)" />
|
||||||
|
<element setting="Slint viewer.Unnamed" />
|
||||||
|
</history>
|
||||||
|
</component>
|
||||||
|
<component name="TimeTrackingManager">
|
||||||
|
<option name="totallyTimeSpent" value="27456000" />
|
||||||
|
</component>
|
||||||
|
<component name="ToolWindowManager">
|
||||||
|
<layoutV2>
|
||||||
|
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.22749999" />
|
||||||
|
<window_info id="Commit" order="1" weight="0.25" />
|
||||||
|
<window_info id="Structure" order="2" side_tool="true" weight="0.25" />
|
||||||
|
<window_info anchor="bottom" id="Version Control" order="0" />
|
||||||
|
<window_info anchor="bottom" id="Problems" order="1" />
|
||||||
|
<window_info anchor="bottom" id="Problems View" order="2" />
|
||||||
|
<window_info anchor="bottom" id="Terminal" order="3" />
|
||||||
|
<window_info anchor="bottom" id="Run" order="4" weight="0.33044806" />
|
||||||
|
<window_info anchor="bottom" id="Services" order="5" />
|
||||||
|
<window_info anchor="right" id="Notifications" order="0" weight="0.33035713" />
|
||||||
|
<window_info anchor="right" id="AIAssistant" order="1" weight="0.33035713" />
|
||||||
|
<window_info anchor="right" id="Database" order="2" weight="0.25" />
|
||||||
|
<window_info anchor="right" id="Gradle" order="3" weight="0.25" />
|
||||||
|
<window_info anchor="right" id="Maven" order="4" weight="0.25" />
|
||||||
|
<unified_weights bottom="0.33044806" left="0.22749999" right="0.33035713" />
|
||||||
|
</layoutV2>
|
||||||
|
<recentWindows>
|
||||||
|
<value>Project</value>
|
||||||
|
<value>Notifications</value>
|
||||||
|
<value>Run</value>
|
||||||
|
<value>AIAssistant</value>
|
||||||
|
</recentWindows>
|
||||||
|
</component>
|
||||||
|
<component name="WindowStateProjectService">
|
||||||
|
<state x="560" y="201" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1715931531348">
|
||||||
|
<screen x="0" y="25" width="1920" height="982" />
|
||||||
|
</state>
|
||||||
|
<state x="560" y="214" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.25.1920.1055/1920.25.1920.982@0.25.1920.1055" timestamp="1715848676881" />
|
||||||
|
<state x="560" y="201" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.25.1920.982/1920.25.1920.1055@0.25.1920.982" timestamp="1715931531348" />
|
||||||
|
<state x="588" y="313" width="1332" height="605" key="#com.intellij.internal.psiView.PsiViewerDialog" timestamp="1717671610308">
|
||||||
|
<screen x="0" y="25" width="1920" height="982" />
|
||||||
|
</state>
|
||||||
|
<state x="531" y="25" key="#com.intellij.internal.psiView.PsiViewerDialog/0.25.1920.1055/1920.25.1920.982@0.25.1920.1055" timestamp="1717406812993" />
|
||||||
|
<state x="588" y="313" width="1332" height="605" key="#com.intellij.internal.psiView.PsiViewerDialog/0.25.1920.982/1920.25.1920.1055@0.25.1920.982" timestamp="1717671610308" />
|
||||||
|
<state width="1334" height="292" key="GridCell.Tab.0.bottom" timestamp="1717394781743">
|
||||||
|
<screen x="0" y="25" width="1920" height="982" />
|
||||||
|
</state>
|
||||||
|
<state width="1334" height="298" key="GridCell.Tab.0.bottom/0.25.1920.1055/1920.25.1920.982@0.25.1920.1055" timestamp="1715845500395" />
|
||||||
|
<state width="1334" height="292" key="GridCell.Tab.0.bottom/0.25.1920.982/1920.25.1920.1055@0.25.1920.982" timestamp="1717394781743" />
|
||||||
|
<state width="1334" height="292" key="GridCell.Tab.0.center" timestamp="1717394781743">
|
||||||
|
<screen x="0" y="25" width="1920" height="982" />
|
||||||
|
</state>
|
||||||
|
<state width="1334" height="298" key="GridCell.Tab.0.center/0.25.1920.1055/1920.25.1920.982@0.25.1920.1055" timestamp="1715845500395" />
|
||||||
|
<state width="1334" height="292" key="GridCell.Tab.0.center/0.25.1920.982/1920.25.1920.1055@0.25.1920.982" timestamp="1717394781743" />
|
||||||
|
<state width="1334" height="292" key="GridCell.Tab.0.left" timestamp="1717394781743">
|
||||||
|
<screen x="0" y="25" width="1920" height="982" />
|
||||||
|
</state>
|
||||||
|
<state width="1334" height="298" key="GridCell.Tab.0.left/0.25.1920.1055/1920.25.1920.982@0.25.1920.1055" timestamp="1715845500395" />
|
||||||
|
<state width="1334" height="292" key="GridCell.Tab.0.left/0.25.1920.982/1920.25.1920.1055@0.25.1920.982" timestamp="1717394781743" />
|
||||||
|
<state width="1334" height="292" key="GridCell.Tab.0.right" timestamp="1717394781743">
|
||||||
|
<screen x="0" y="25" width="1920" height="982" />
|
||||||
|
</state>
|
||||||
|
<state width="1334" height="298" key="GridCell.Tab.0.right/0.25.1920.1055/1920.25.1920.982@0.25.1920.1055" timestamp="1715845500395" />
|
||||||
|
<state width="1334" height="292" key="GridCell.Tab.0.right/0.25.1920.982/1920.25.1920.1055@0.25.1920.982" timestamp="1717394781743" />
|
||||||
|
<state x="548" y="251" width="824" height="534" key="IDE.errors.dialog" timestamp="1717661016042">
|
||||||
|
<screen x="0" y="25" width="1920" height="982" />
|
||||||
|
</state>
|
||||||
|
<state x="548" y="268" width="824" height="533" key="IDE.errors.dialog/0.25.1920.1055/1920.25.1920.982@0.25.1920.1055" timestamp="1717405855676" />
|
||||||
|
<state x="548" y="251" width="824" height="534" key="IDE.errors.dialog/0.25.1920.982/1920.25.1920.1055@0.25.1920.982" timestamp="1717661016042" />
|
||||||
|
<state x="1350" y="913" width="350" height="133" key="ProcessPopupWindow" timestamp="1715935852294">
|
||||||
|
<screen x="0" y="25" width="1920" height="1055" />
|
||||||
|
</state>
|
||||||
|
<state x="1350" y="913" width="350" height="133" key="ProcessPopupWindow/0.25.1920.1055/1920.25.1920.982@0.25.1920.1055" timestamp="1715935852294" />
|
||||||
|
<state x="469" y="158" key="SettingsEditor" timestamp="1717396831306">
|
||||||
|
<screen x="0" y="25" width="1920" height="982" />
|
||||||
|
</state>
|
||||||
|
<state x="469" y="158" key="SettingsEditor/0.25.1920.982/1920.25.1920.1055@0.25.1920.982" timestamp="1717396831306" />
|
||||||
|
</component>
|
||||||
|
<component name="editorHistoryManager">
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/Abc.kt" />
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/Main.kt">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="66">
|
||||||
|
<caret line="3" column="18" selection-start-line="3" selection-start-column="18" selection-end-line="3" selection-end-column="18" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/name1.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="66">
|
||||||
|
<caret line="3" column="5" selection-start-line="3" selection-start-column="5" selection-end-line="3" selection-end-column="5" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/name.ts">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="88">
|
||||||
|
<caret line="4" column="24" selection-start-line="4" selection-start-column="24" selection-end-line="4" selection-end-column="24" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="jar:///Library/Java/JavaVirtualMachines/graalvm-22.jdk/Contents/Home/lib/src.zip!/java.base/java/lang/Throwable.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="318">
|
||||||
|
<caret line="124" column="34" selection-start-line="124" selection-start-column="34" selection-end-line="124" selection-end-column="34" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/Main.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state>
|
||||||
|
<caret column="34" selection-start-column="34" selection-end-column="34" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/main.slint">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state>
|
||||||
|
<caret line="2" column="21" selection-start-line="2" selection-start-column="21" selection-end-line="2" selection-end-column="21" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/builtins.slint">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="298">
|
||||||
|
<caret line="161" column="17" selection-start-line="161" selection-start-column="17" selection-end-line="161" selection-end-column="17" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/src/Button.slint">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="66">
|
||||||
|
<caret line="3" column="36" selection-end-line="18" selection-end-column="35" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
<project version="4">
|
||||||
|
<component name="BookmarksManager">
|
||||||
|
<option name="groups">
|
||||||
|
<GroupState>
|
||||||
|
<option name="name" value="intellij-test" />
|
||||||
|
</GroupState>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectView">
|
||||||
|
<navigator currentView="ProjectPane" proportions="" version="1" />
|
||||||
|
<panes>
|
||||||
|
<pane id="PackagesPane" />
|
||||||
|
<pane id="ProjectPane">
|
||||||
|
<subPane>
|
||||||
|
<expand>
|
||||||
|
<path>
|
||||||
|
<item name="intellij-test" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="dir{file:///Users/me/Desktop/Dev/垃圾桶/intellij-test/intellij-test}" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="intellij-test" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="dir{file:///Users/me/Desktop/Dev/垃圾桶/intellij-test/intellij-test}" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="dir{file:///Users/me/Desktop/Dev/垃圾桶/intellij-test/intellij-test/.idea}" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
</expand>
|
||||||
|
<select />
|
||||||
|
</subPane>
|
||||||
|
</pane>
|
||||||
|
<pane id="Scope" />
|
||||||
|
</panes>
|
||||||
|
</component>
|
||||||
|
<component name="TimeTrackingManager">
|
||||||
|
<option name="totallyTimeSpent" value="1082000" />
|
||||||
|
</component>
|
||||||
|
<component name="ToolWindowManager">
|
||||||
|
<layoutV2>
|
||||||
|
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.33035713" />
|
||||||
|
<window_info id="Commit" order="1" weight="0.25" />
|
||||||
|
<window_info id="Structure" order="2" side_tool="true" weight="0.25" />
|
||||||
|
<window_info anchor="bottom" id="Version Control" order="0" />
|
||||||
|
<window_info anchor="bottom" id="Problems" order="1" />
|
||||||
|
<window_info anchor="bottom" id="Problems View" order="2" />
|
||||||
|
<window_info anchor="bottom" id="Terminal" order="3" />
|
||||||
|
<window_info anchor="bottom" id="Services" order="4" />
|
||||||
|
<window_info anchor="right" content_ui="combo" id="Notifications" order="0" weight="0.25" />
|
||||||
|
<window_info anchor="right" id="AIAssistant" order="1" weight="0.25" />
|
||||||
|
<window_info anchor="right" id="Database" order="2" weight="0.25" />
|
||||||
|
<window_info anchor="right" id="Gradle" order="3" weight="0.25" />
|
||||||
|
<window_info anchor="right" id="Maven" order="4" weight="0.25" />
|
||||||
|
<unified_weights left="0.33035713" />
|
||||||
|
</layoutV2>
|
||||||
|
<recentWindows>
|
||||||
|
<value>Project</value>
|
||||||
|
</recentWindows>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Binary file not shown.
Binary file not shown.
7
idea-sandbox/system-test/log/idea.log
Normal file
7
idea-sandbox/system-test/log/idea.log
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
2024-06-03 17:44:03,869 [ 121] INFO - #c.i.p.d.t.TelemetryManager - Loaded telemetry tracer service com.intellij.platform.diagnostic.telemetry.impl.TelemetryManagerImpl
|
||||||
|
2024-06-03 17:44:35,087 [ 129] INFO - #c.i.p.d.t.TelemetryManager - Loaded telemetry tracer service com.intellij.platform.diagnostic.telemetry.impl.TelemetryManagerImpl
|
||||||
|
2024-06-03 17:45:37,074 [ 99] INFO - #c.i.p.d.t.TelemetryManager - Loaded telemetry tracer service com.intellij.platform.diagnostic.telemetry.impl.TelemetryManagerImpl
|
||||||
|
2024-06-03 18:20:08,328 [ 159] INFO - #c.i.p.d.t.TelemetryManager - Loaded telemetry tracer service com.intellij.platform.diagnostic.telemetry.impl.TelemetryManagerImpl
|
||||||
|
2024-06-03 18:21:25,456 [ 96] INFO - #c.i.p.d.t.TelemetryManager - Loaded telemetry tracer service com.intellij.platform.diagnostic.telemetry.impl.TelemetryManagerImpl
|
||||||
|
2024-08-20 14:26:47,297 [ 141] INFO - #c.i.p.d.t.TelemetryManager - Loaded telemetry tracer service com.intellij.platform.diagnostic.telemetry.impl.TelemetryManagerImpl
|
||||||
|
2024-08-20 14:27:15,693 [ 92] INFO - #c.i.p.d.t.TelemetryManager - Loaded telemetry tracer service com.intellij.platform.diagnostic.telemetry.impl.TelemetryManagerImpl
|
||||||
@@ -1,16 +1,13 @@
|
|||||||
package me.zhouxi.slint.icons
|
package me.zhouxi.slint.icons
|
||||||
|
|
||||||
import com.intellij.ui.IconManager
|
import com.intellij.openapi.util.IconLoader
|
||||||
import javax.swing.Icon
|
import javax.swing.Icon
|
||||||
|
|
||||||
|
|
||||||
object SlintIcons {
|
object SlintIcons {
|
||||||
private fun load(path: String, cacheKey: Int, flags: Int): Icon {
|
/**
|
||||||
return IconManager.getInstance()
|
* Primary icon - used in various UI contexts
|
||||||
.loadRasterizedIcon(path, SlintIcons::class.java.classLoader, cacheKey, flags)
|
* Alias for FileType for backward compatibility
|
||||||
}
|
*/
|
||||||
|
@JvmField
|
||||||
val Primary: Icon = load("icons/slint-logo-small-light.png", 199921742, 2)
|
val Primary: Icon = IconLoader.getIcon("/icons/slint.svg", SlintIcons::class.java)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
15
src/main/kotlin/me/zhouxi/slint/lang/SlintFileType.kt
Normal file
15
src/main/kotlin/me/zhouxi/slint/lang/SlintFileType.kt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package me.zhouxi.slint.lang
|
||||||
|
|
||||||
|
import com.intellij.openapi.fileTypes.LanguageFileType
|
||||||
|
import me.zhouxi.slint.icons.SlintIcons
|
||||||
|
import javax.swing.Icon
|
||||||
|
|
||||||
|
object SlintFileType : LanguageFileType(SlintLanguage) {
|
||||||
|
override fun getName(): String = "Slint"
|
||||||
|
|
||||||
|
override fun getDescription(): String = "Slint UI file"
|
||||||
|
|
||||||
|
override fun getDefaultExtension(): String = "slint"
|
||||||
|
|
||||||
|
override fun getIcon(): Icon = SlintIcons.Primary
|
||||||
|
}
|
||||||
7
src/main/kotlin/me/zhouxi/slint/lang/SlintLanguage.kt
Normal file
7
src/main/kotlin/me/zhouxi/slint/lang/SlintLanguage.kt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package me.zhouxi.slint.lang
|
||||||
|
|
||||||
|
import com.intellij.lang.Language
|
||||||
|
|
||||||
|
object SlintLanguage : Language("Slint") {
|
||||||
|
override fun getDisplayName(): String = "Slint"
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package me.zhouxi.slint.lang.syntax
|
||||||
|
|
||||||
|
import org.jetbrains.plugins.textmate.api.TextMateBundleProvider
|
||||||
|
import java.nio.file.Path
|
||||||
|
|
||||||
|
class SlintTextMateProvider : TextMateBundleProvider {
|
||||||
|
override fun getBundles(): List<TextMateBundleProvider.PluginBundle> {
|
||||||
|
val resource = SlintTextMateProvider::class.java.classLoader.getResource("textmate/slint.tmLanguage.json")
|
||||||
|
?: throw IllegalStateException("Could not find Slint TextMate grammar file")
|
||||||
|
|
||||||
|
return listOf(
|
||||||
|
TextMateBundleProvider.PluginBundle(
|
||||||
|
"Slint",
|
||||||
|
Path.of(resource.toURI())
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import com.intellij.platform.lsp.api.ProjectWideLspServerDescriptor
|
|||||||
import com.intellij.platform.lsp.api.lsWidget.LspServerWidgetItem
|
import com.intellij.platform.lsp.api.lsWidget.LspServerWidgetItem
|
||||||
import me.zhouxi.slint.SlintRuntime
|
import me.zhouxi.slint.SlintRuntime
|
||||||
import me.zhouxi.slint.icons.SlintIcons
|
import me.zhouxi.slint.icons.SlintIcons
|
||||||
|
import me.zhouxi.slint.lang.SlintFileType
|
||||||
|
|
||||||
class SlintLspServerSupportProvider : LspServerSupportProvider {
|
class SlintLspServerSupportProvider : LspServerSupportProvider {
|
||||||
override fun fileOpened(
|
override fun fileOpened(
|
||||||
@@ -16,8 +17,8 @@ class SlintLspServerSupportProvider : LspServerSupportProvider {
|
|||||||
file: VirtualFile,
|
file: VirtualFile,
|
||||||
serverStarter: LspServerSupportProvider.LspServerStarter
|
serverStarter: LspServerSupportProvider.LspServerStarter
|
||||||
) {
|
) {
|
||||||
if (file.extension == "slint") {
|
if (file.fileType == SlintFileType) {
|
||||||
serverStarter.ensureServerStarted(FooLspServerDescriptor(project))
|
serverStarter.ensureServerStarted(SlintLspServerDescriptor(project))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,8 +32,8 @@ class SlintLspServerSupportProvider : LspServerSupportProvider {
|
|||||||
SlintIcons.Primary,
|
SlintIcons.Primary,
|
||||||
)
|
)
|
||||||
|
|
||||||
private class FooLspServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "Slint") {
|
private class SlintLspServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "Slint") {
|
||||||
override fun isSupportedFile(file: VirtualFile) = file.extension == "slint"
|
override fun isSupportedFile(file: VirtualFile) = file.fileType == SlintFileType
|
||||||
override fun createCommandLine(): GeneralCommandLine {
|
override fun createCommandLine(): GeneralCommandLine {
|
||||||
val line = GeneralCommandLine(SlintRuntime.LspExecutable.toAbsolutePath().toString())
|
val line = GeneralCommandLine(SlintRuntime.LspExecutable.toAbsolutePath().toString())
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,13 @@
|
|||||||
<!-- Extensions defined by the plugin.
|
<!-- Extensions defined by the plugin.
|
||||||
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
|
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
|
<fileType
|
||||||
|
name="Slint"
|
||||||
|
implementationClass="me.zhouxi.slint.lang.SlintFileType"
|
||||||
|
fieldName="INSTANCE"
|
||||||
|
language="Slint"
|
||||||
|
extensions="slint"/>
|
||||||
<platform.lsp.serverSupportProvider implementation="me.zhouxi.slint.lsp.SlintLspServerSupportProvider"/>
|
<platform.lsp.serverSupportProvider implementation="me.zhouxi.slint.lsp.SlintLspServerSupportProvider"/>
|
||||||
|
<!-- <textMate.bundleProvider implementation="me.zhouxi.slint.lang.syntax.SlintTextMateProvider"/>-->
|
||||||
</extensions>
|
</extensions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
11
src/main/resources/icons/slint-logo-full-dark.svg
Normal file
11
src/main/resources/icons/slint-logo-full-dark.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 12 KiB |
11
src/main/resources/icons/slint-logo-full-light.svg
Normal file
11
src/main/resources/icons/slint-logo-full-light.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 12 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user