mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-08 08:52:12 +00:00
Keymap - Let AltGr characters through instead of firing Ctrl+Alt shortcuts (Windows/Linux) - Double Shift: strict press/release timing, ignored while typing or after Shift+click - Chords wait 2s and swallow an unmatched second stroke - Drop CodeMirror defaults that clash with IDEA keys; ⌘Enter is Split Line, add Scroll to Center and Code Block Start/End - Add missing IDEA defaults (⌃J, ⌘Y, ⇧⌘C, ⌥⌘Y, ⇧⌘M, F9 Resume, ⌘R Rerun, …) Editor - Tab inserts at the caret; smart Backspace to the proper indent; Enter continues a `//` comment; per-language line comment placement - Back/Forward records navigations only; ⌘F searches the selected text - In-place rename; ⌃Space inserts a sole candidate; commit characters only for a focused lookup; usage highlighting survives edits; ⌥Enter offers fixes from the caret line; ⌘-hover shows declaration info only for navigable targets Workbench - Tool windows: primary and split area per side, six Move To anchors, layout migration - ⌘W closes tool window content; Shift+Esc from the editor; closing a tab activates the left neighbour; preview tab and tab limit follow IDEA defaults - Switcher lists open editors and tool windows; Recent Files Delete removes items - Search Everywhere tab/scope behaviour; popups close when the window deactivates - Project view: Copy/Move dialogs on paste, skippable usage search on delete, new-file input cancels on blur; Settings search Esc clears the filter - Status bar breadcrumbs open a children popup; notification timeouts Run / Debug / Build / Terminal - Run asks to stop a running single-instance config; Rerun restarts silently; "Allow multiple instances" option - Run chooser: Enter runs, Shift debugs, F4/Delete/digits - Type into the console for stdin; Stop covers debug sessions - Log (Shift+click) and temporary (Alt+click) breakpoints; independent suspend/log options; Evaluate prefill and history; changed-value highlighting; expandable hints - Build window opens on failure and jumps to the first error - Terminal confirms closing a busy tab and lets IDE shortcuts through VCS - Correct ours/theirs labels during rebase, cherry-pick and revert - Smart/Force Checkout; remote branch checkout updates the local branch - Partial commit by changed block; inline before-commit check results - F7 continues into the next file; Rollback Lines; Commit and Push; Amend message swap - Branch delete with Restore; force push confirmation; editable push target; update summary with the incoming commits
175 lines
4.4 KiB
CSS
175 lines
4.4 KiB
CSS
/*
|
||
* Line-number gutter element class; the marker is a pseudo-element that, like
|
||
* IDEA, replaces the number (centred on the element's content box).
|
||
*/
|
||
.bp {
|
||
position: relative;
|
||
color: transparent !important;
|
||
}
|
||
|
||
.bp::before {
|
||
content: "";
|
||
position: absolute;
|
||
left: calc(50% + 1px);
|
||
top: 50%;
|
||
width: 1em;
|
||
height: 1em;
|
||
transform: translate(-50%, -50%);
|
||
border-radius: 50%;
|
||
background: var(--danger);
|
||
box-sizing: border-box;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.normal::before {
|
||
background: var(--danger);
|
||
}
|
||
|
||
/* Disabled / muted: hollow circle. */
|
||
.disabled::before {
|
||
background: transparent;
|
||
border: 1.5px solid var(--danger);
|
||
}
|
||
|
||
/* Not bound by the adapter. */
|
||
.unverified::before {
|
||
background: var(--fg-gutter);
|
||
}
|
||
|
||
/* Condition / hit count: dot with a small notch. */
|
||
.conditional::before {
|
||
background: radial-gradient(circle at 50% 50%, var(--bg-app) 0 0.16em, var(--danger) 0.18em);
|
||
}
|
||
|
||
/* Logpoint: diamond. */
|
||
.log::before {
|
||
border-radius: 1.5px;
|
||
width: 0.8em;
|
||
height: 0.8em;
|
||
transform: translate(-50%, -50%) rotate(45deg);
|
||
}
|
||
|
||
/* Bound by the debugger in a running session (expui breakpointValid). */
|
||
.verified::before {
|
||
border-radius: 0;
|
||
background: url("../../../ui/expui/breakpoints/breakpointValid.svg") center / contain no-repeat;
|
||
}
|
||
|
||
:global(:root[data-theme^="dark"]) .verified::before {
|
||
background-image: url("../../../ui/expui/breakpoints/breakpointValid_dark.svg");
|
||
}
|
||
|
||
/* Method breakpoints / field watchpoints (expui icons). */
|
||
.method::before {
|
||
border-radius: 0;
|
||
background: url("../../../ui/expui/breakpoints/breakpointMethod.svg") center / contain no-repeat;
|
||
}
|
||
|
||
:global(:root[data-theme^="dark"]) .method::before {
|
||
background-image: url("../../../ui/expui/breakpoints/breakpointMethod_dark.svg");
|
||
}
|
||
|
||
.methodDisabled::before {
|
||
border-radius: 0;
|
||
background: url("../../../ui/expui/breakpoints/breakpointMethodDisabled.svg") center / contain no-repeat;
|
||
}
|
||
|
||
:global(:root[data-theme^="dark"]) .methodDisabled::before {
|
||
background-image: url("../../../ui/expui/breakpoints/breakpointMethodDisabled_dark.svg");
|
||
}
|
||
|
||
.methodVerified::before {
|
||
border-radius: 0;
|
||
background: url("../../../ui/expui/breakpoints/breakpointMethodValid.svg") center / contain no-repeat;
|
||
}
|
||
|
||
:global(:root[data-theme^="dark"]) .methodVerified::before {
|
||
background-image: url("../../../ui/expui/breakpoints/breakpointMethodValid_dark.svg");
|
||
}
|
||
|
||
.field::before {
|
||
border-radius: 0;
|
||
background: url("../../../ui/expui/breakpoints/breakpointField.svg") center / contain no-repeat;
|
||
}
|
||
|
||
:global(:root[data-theme^="dark"]) .field::before {
|
||
background-image: url("../../../ui/expui/breakpoints/breakpointField_dark.svg");
|
||
}
|
||
|
||
.fieldDisabled::before {
|
||
border-radius: 0;
|
||
background: url("../../../ui/expui/breakpoints/breakpointFieldDisabled.svg") center / contain no-repeat;
|
||
}
|
||
|
||
:global(:root[data-theme^="dark"]) .fieldDisabled::before {
|
||
background-image: url("../../../ui/expui/breakpoints/breakpointFieldDisabled_dark.svg");
|
||
}
|
||
|
||
.fieldVerified::before {
|
||
border-radius: 0;
|
||
background: url("../../../ui/expui/breakpoints/breakpointFieldValid.svg") center / contain no-repeat;
|
||
}
|
||
|
||
:global(:root[data-theme^="dark"]) .fieldVerified::before {
|
||
background-image: url("../../../ui/expui/breakpoints/breakpointFieldValid_dark.svg");
|
||
}
|
||
|
||
/* Beat the caret row (`.cm-activeLine`), as IDEA does; the suspended line wins over a breakpoint. */
|
||
:global(.cm-editor) :global(.cm-line).bpLine {
|
||
background: var(--bg-breakpoint-line);
|
||
}
|
||
|
||
:global(.cm-editor) :global(.cm-line).execLine {
|
||
background: var(--bg-debug-line);
|
||
}
|
||
|
||
.inlineValue {
|
||
margin-left: 24px;
|
||
color: var(--syn-inline-value);
|
||
font-size: var(--fs-ui);
|
||
font-family: var(--font-mono);
|
||
white-space: pre;
|
||
pointer-events: none;
|
||
-webkit-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
/* Data Views › Show value tooltip on mouse hover. */
|
||
.valueTooltip {
|
||
max-width: 520px;
|
||
padding: 4px 8px;
|
||
font-family: var(--font-mono);
|
||
font-size: var(--fs-code);
|
||
white-space: pre-wrap;
|
||
word-break: break-word;
|
||
}
|
||
.valueTooltipTree {
|
||
padding: 2px 0;
|
||
white-space: normal;
|
||
}
|
||
.valueExpand {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 16px;
|
||
height: 16px;
|
||
margin-right: 4px;
|
||
padding: 0;
|
||
border: 0;
|
||
border-radius: var(--radius-small);
|
||
background: transparent;
|
||
color: var(--fg-muted);
|
||
vertical-align: -3px;
|
||
cursor: pointer;
|
||
}
|
||
.valueExpand:hover {
|
||
background: var(--bg-hover, transparent);
|
||
color: var(--fg-strong);
|
||
}
|
||
.valueName {
|
||
color: var(--fg-strong);
|
||
}
|
||
.valueType {
|
||
color: var(--fg-subtle);
|
||
}
|