дзеркало
https://github.com/l0ng-ai/openidea.git
синхронізовано 2026-11-08 19:02:17 +02:00
Project & files - Project view modes (Project Files / Open Files / All Changed Files / Scratches); External Libraries for Python, JDK (src.zip), Node, Cargo, Go, Maven/Gradle jars; read-only jar/zip browsing - ⌘N New popup with type search and more file kinds; New Project, Rename Project, Reload All from Disk, Export/Import Settings, Power Save Mode - File type associations, extra content roots and exclude patterns (indexed and watched without reopening the project) Editor & navigation - Find bar: search scope (comments/strings), Preserve Case, Exclude, multiline, history; Find in Files: Module scope, custom pattern scopes, multiline - Search Everywhere filters, Assign Shortcut, settings results; named bookmark lists, file/folder bookmarks; Structure filters and Show Inherited; Recent Locations timestamps and breadcrumbs; Code Vision author - Completion options, editor tab placement/layout, inline completion (LSP 3.18) - Spell checking (Typo inspection, ide-spell) and Inspections settings with custom profiles; Code Style schemes, formatter markers, Do not format Run, VCS, services, database - Typed run configurations (Shell, Program, npm, Gradle, Maven, Docker, Compound), Modify options, Before launch, env dialog, Current File, Emulate terminal (PTY) - Git log graph/view options, Go to Hash/Branch/Tag, date filter keeps the graph; Pull/Merge/Rebase dialogs, Manage Remotes, Worktrees - Generic Services host (Docker connections/registries, run sessions); TODO scope/changes tabs with changelists; Coverage report import - Data sources: wire-compatible vendors, URL import, SSL certs, Options, Schemas and Advanced tabs, color and comment Workbench - Run Anything, Customize Main Toolbar, named tool window layouts, menu completeness, Code Cleanup, macros, "Don't Show Again", editor banners - Chinese translations for the new UI Claude-Session: https://claude.ai/code/session_01SaPPsVPuk6ZTNsoUCNCbMv
115 рядки
4.0 KiB
TypeScript
115 рядки
4.0 KiB
TypeScript
/**
|
|
* Feature activation. Each feature exports `activate(): void | (() => void)`
|
|
* that registers actions, tool windows, status items and services, returning
|
|
* a disposer. The editor goes first because it provides the editor service.
|
|
*/
|
|
import { activate as editor } from "@/editor/core";
|
|
import { activate as editorLsp } from "@/editor/lsp";
|
|
import { activate as welcome } from "./welcome";
|
|
import { activate as projectTree } from "./project-tree";
|
|
import { activate as search } from "./search";
|
|
import { activate as codeInsight } from "./code-insight";
|
|
import { activate as vcs } from "./vcs";
|
|
import { activate as terminal } from "./terminal";
|
|
import { activate as run } from "./run";
|
|
import { activate as runAnything } from "./run-anything";
|
|
import { activate as macros } from "./macros";
|
|
import { activate as debuggerFeature } from "./debugger";
|
|
import { activate as coverage } from "./coverage";
|
|
import { activate as profiler } from "./profiler";
|
|
import { activate as buildTools } from "./build-tools";
|
|
import { activate as build } from "./build";
|
|
import { activate as templates, activateSettingsPages as templatesPages } from "./templates";
|
|
import { activate as todo, activateSettingsPages as todoPages } from "./todo";
|
|
import { activate as settings, activateSettingsWindow } from "./settings";
|
|
import { activate as app, activateLocale as appLocale } from "./app";
|
|
import { activate as perf } from "./perf";
|
|
import { activate as plugins, activateSettingsPages as pluginsPages } from "./plugins";
|
|
import { activate as tools, activateSettingsPages as toolsPages } from "./tools";
|
|
import { activate as scratch } from "./scratch";
|
|
import { activate as libraries } from "./libraries";
|
|
import { activate as viewers } from "./viewers";
|
|
import { activate as web } from "./web";
|
|
import { activate as analysis } from "./analysis";
|
|
import { activate as services } from "./services";
|
|
import { activate as github } from "./github";
|
|
import { activate as httpClient } from "./http-client";
|
|
import { activate as database } from "./database";
|
|
|
|
type Activate = () => void | (() => void);
|
|
|
|
const features: Array<[string, Activate]> = [
|
|
["editor", editor],
|
|
["editor-lsp", editorLsp],
|
|
["welcome", welcome],
|
|
["project-tree", projectTree],
|
|
["search", search],
|
|
["code-insight", codeInsight],
|
|
["vcs", vcs],
|
|
["terminal", terminal],
|
|
["run", run],
|
|
["run-anything", runAnything],
|
|
["macros", macros],
|
|
["debugger", debuggerFeature],
|
|
["coverage", coverage],
|
|
["profiler", profiler],
|
|
["build-tools", buildTools],
|
|
["build", build],
|
|
["templates", templates],
|
|
["todo", todo],
|
|
["settings", settings],
|
|
["app", app],
|
|
["perf", perf],
|
|
["plugins", plugins],
|
|
["tools", tools],
|
|
["scratch", scratch],
|
|
["libraries", libraries],
|
|
["viewers", viewers],
|
|
["web", web],
|
|
["analysis", analysis],
|
|
["services", services],
|
|
["github", github],
|
|
["http-client", httpClient],
|
|
["database", database],
|
|
];
|
|
|
|
export function activateFeatures(): () => void {
|
|
const disposers: Array<() => void> = [];
|
|
for (const [name, activate] of features) {
|
|
try {
|
|
const d = activate();
|
|
if (d) disposers.push(d);
|
|
} catch (e) {
|
|
console.error(`feature ${name} failed to activate`, e);
|
|
}
|
|
}
|
|
return () => disposers.reverse().forEach((d) => d());
|
|
}
|
|
|
|
export { SettingsWindow, settingsWindowParent } from "./settings";
|
|
|
|
/**
|
|
* The native Settings window of project window `parent`: only the settings
|
|
* pages (no workbench, project, editors or background services).
|
|
*/
|
|
export function activateSettingsWindowFeatures(parent: string): () => void {
|
|
const pages: Array<[string, Activate]> = [
|
|
["locale", appLocale],
|
|
["settings", () => activateSettingsWindow(parent)],
|
|
["templates", templatesPages],
|
|
["todo", todoPages],
|
|
["plugins", pluginsPages],
|
|
["tools", toolsPages],
|
|
];
|
|
const disposers: Array<() => void> = [];
|
|
for (const [name, activate] of pages) {
|
|
try {
|
|
const d = activate();
|
|
if (d) disposers.push(d);
|
|
} catch (e) {
|
|
console.error(`settings pages of ${name} failed to activate`, e);
|
|
}
|
|
}
|
|
return () => disposers.reverse().forEach((d) => d());
|
|
}
|