Compare commits
12 Commits
fff3c1cc31
...
lsp
| 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)
|
||||
|
||||
// Add plugin dependencies for compilation here:
|
||||
|
||||
bundledPlugin("org.jetbrains.plugins.textmate")
|
||||
|
||||
}
|
||||
}
|
||||
@@ -77,30 +77,24 @@ tasks {
|
||||
onlyIfModified(true)
|
||||
}
|
||||
}
|
||||
val processLspResources by registering {
|
||||
val processLspResources by registering(Copy::class) {
|
||||
|
||||
dependsOn(downloadTasks)
|
||||
inputs.dir(downloadDir)
|
||||
outputs.dir(extractedDir)
|
||||
|
||||
doLast {
|
||||
slintViewerFilenames.forEach { (filename, renamed) ->
|
||||
val fileTarget = downloadDir.get().file(filename)
|
||||
copy {
|
||||
val fileTree = if (filename.endsWith("zip")) zipTree(fileTarget) else tarTree(fileTarget)
|
||||
from(fileTree) {
|
||||
// 匹配压缩包内的 slint-lsp 文件夹及其内容
|
||||
include("**/slint-lsp*")
|
||||
// 展平目录并重命名
|
||||
eachFile {
|
||||
path = renamed
|
||||
}
|
||||
includeEmptyDirs = false
|
||||
}
|
||||
into(extractedDir)
|
||||
slintViewerFilenames.forEach { (filename, renamed) ->
|
||||
val fileTarget = downloadDir.get().file(filename)
|
||||
val fileTree = if (filename.endsWith("zip")) zipTree(fileTarget) else tarTree(fileTarget)
|
||||
from(fileTree) {
|
||||
// 匹配压缩包内的 slint-lsp 文件夹及其内容
|
||||
include("**/slint-lsp*")
|
||||
// 展平目录并重命名
|
||||
eachFile {
|
||||
path = renamed
|
||||
}
|
||||
includeEmptyDirs = false
|
||||
}
|
||||
}
|
||||
into(extractedDir)
|
||||
}
|
||||
prepareSandbox {
|
||||
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
|
||||
|
||||
import com.intellij.ui.IconManager
|
||||
import com.intellij.openapi.util.IconLoader
|
||||
import javax.swing.Icon
|
||||
|
||||
|
||||
object SlintIcons {
|
||||
private fun load(path: String, cacheKey: Int, flags: Int): Icon {
|
||||
return IconManager.getInstance()
|
||||
.loadRasterizedIcon(path, SlintIcons::class.java.classLoader, cacheKey, flags)
|
||||
}
|
||||
|
||||
val Primary: Icon = load("icons/slint-logo-small-light.png", 199921742, 2)
|
||||
|
||||
|
||||
/**
|
||||
* Primary icon - used in various UI contexts
|
||||
* Alias for FileType for backward compatibility
|
||||
*/
|
||||
@JvmField
|
||||
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 me.zhouxi.slint.SlintRuntime
|
||||
import me.zhouxi.slint.icons.SlintIcons
|
||||
import me.zhouxi.slint.lang.SlintFileType
|
||||
|
||||
class SlintLspServerSupportProvider : LspServerSupportProvider {
|
||||
override fun fileOpened(
|
||||
@@ -16,8 +17,8 @@ class SlintLspServerSupportProvider : LspServerSupportProvider {
|
||||
file: VirtualFile,
|
||||
serverStarter: LspServerSupportProvider.LspServerStarter
|
||||
) {
|
||||
if (file.extension == "slint") {
|
||||
serverStarter.ensureServerStarted(FooLspServerDescriptor(project))
|
||||
if (file.fileType == SlintFileType) {
|
||||
serverStarter.ensureServerStarted(SlintLspServerDescriptor(project))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,8 +32,8 @@ class SlintLspServerSupportProvider : LspServerSupportProvider {
|
||||
SlintIcons.Primary,
|
||||
)
|
||||
|
||||
private class FooLspServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "Slint") {
|
||||
override fun isSupportedFile(file: VirtualFile) = file.extension == "slint"
|
||||
private class SlintLspServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "Slint") {
|
||||
override fun isSupportedFile(file: VirtualFile) = file.fileType == SlintFileType
|
||||
override fun createCommandLine(): GeneralCommandLine {
|
||||
val line = GeneralCommandLine(SlintRuntime.LspExecutable.toAbsolutePath().toString())
|
||||
|
||||
|
||||
@@ -14,6 +14,13 @@
|
||||
<!-- Extensions defined by the plugin.
|
||||
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
|
||||
<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>
|
||||
</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