Files
openidea/src/features/debugger/editor/editor.module.css
T
l0ng-ai 4dcf0acc07 feat(debugger): Show a Run to Cursor button when hovering a line while paused (#168)
While the debugger is suspended, hovering the start of a line shows a small
button left of its text: Run to Cursor runs to that line, and on the execution
line it resumes the program. Settings › Debugger › Show inlay Run to Cursor popup
turns it off.
2026-10-29 04:09:28 +08:00

210 lines
5.2 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 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-weight: var(--fw-code);
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);
}
/* Smart Step Into: calls on the paused line framed, the selected one filled. */
.stepTarget {
border-radius: 2px;
box-shadow: inset 0 0 0 1px var(--border-strong);
cursor: pointer;
}
.stepTargetSelected {
background: var(--accent-soft);
box-shadow: inset 0 0 0 1px var(--accent);
}
/* Inlay Run to Cursor button, left of a hovered line's text. */
.runToCursor {
position: absolute;
z-index: 5;
display: flex;
align-items: center;
justify-content: center;
width: 20px;
height: 20px;
padding: 0;
border: 1px solid var(--border-popup);
border-radius: var(--radius-small);
background: var(--bg-popup);
box-shadow: var(--shadow-tooltip);
color: var(--fg);
cursor: pointer;
}
.runToCursor:hover {
background: var(--bg-hover);
}