linecraft 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +59 -21
- package/README.md +51 -8
- package/lib/components/code-debug.d.ts +2 -0
- package/lib/components/code-debug.d.ts.map +1 -1
- package/lib/components/code-debug.js +205 -266
- package/lib/components/code-debug.js.map +1 -1
- package/lib/components/code-debug.test.d.ts +2 -0
- package/lib/components/code-debug.test.d.ts.map +1 -0
- package/lib/components/code-debug.test.js +245 -0
- package/lib/components/code-debug.test.js.map +1 -0
- package/lib/components/fill.d.ts +2 -1
- package/lib/components/fill.d.ts.map +1 -1
- package/lib/components/fill.js.map +1 -1
- package/lib/components/progress-bar-grid.d.ts.map +1 -1
- package/lib/components/progress-bar-grid.js +5 -3
- package/lib/components/progress-bar-grid.js.map +1 -1
- package/lib/components/prompt.js +1 -1
- package/lib/components/prompt.js.map +1 -1
- package/lib/components/section.js +1 -1
- package/lib/components/section.js.map +1 -1
- package/lib/components/segments.js +4 -4
- package/lib/components/segments.js.map +1 -1
- package/lib/components/spinner.d.ts +2 -1
- package/lib/components/spinner.d.ts.map +1 -1
- package/lib/components/spinner.js +1 -1
- package/lib/components/spinner.js.map +1 -1
- package/lib/components/styled.d.ts +4 -2
- package/lib/components/styled.d.ts.map +1 -1
- package/lib/components/styled.js +37 -8
- package/lib/components/styled.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/layout/grid.d.ts +3 -2
- package/lib/layout/grid.d.ts.map +1 -1
- package/lib/layout/grid.js +94 -47
- package/lib/layout/grid.js.map +1 -1
- package/lib/layout/grid.test.js +67 -0
- package/lib/layout/grid.test.js.map +1 -1
- package/lib/native/diff.test.js.map +1 -1
- package/lib/native/region-renderer.d.ts +1 -0
- package/lib/native/region-renderer.d.ts.map +1 -1
- package/lib/native/region-renderer.js +31 -1
- package/lib/native/region-renderer.js.map +1 -1
- package/lib/native/region.test.js +1 -1
- package/lib/native/region.test.js.map +1 -1
- package/lib/region-resize.test.js +3 -3
- package/lib/region-resize.test.js.map +1 -1
- package/lib/region.d.ts.map +1 -1
- package/lib/region.js +0 -46
- package/lib/region.js.map +1 -1
- package/lib/types.d.ts +6 -5
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/colors.d.ts.map +1 -1
- package/lib/utils/colors.js +50 -8
- package/lib/utils/colors.js.map +1 -1
- package/lib/utils/colors.test.js.map +1 -1
- package/lib/utils/cursor-position.d.ts.map +1 -1
- package/lib/utils/cursor-position.js +4 -13
- package/lib/utils/cursor-position.js.map +1 -1
- package/lib/utils/debug-log.js +1 -1
- package/lib/utils/debug-log.js.map +1 -1
- package/lib/utils/terminal-theme.d.ts +17 -28
- package/lib/utils/terminal-theme.d.ts.map +1 -1
- package/lib/utils/terminal-theme.js +66 -38
- package/lib/utils/terminal-theme.js.map +1 -1
- package/lib/utils/text.d.ts +64 -2
- package/lib/utils/text.d.ts.map +1 -1
- package/lib/utils/text.js +619 -103
- package/lib/utils/text.js.map +1 -1
- package/lib/utils/text.test.d.ts +2 -0
- package/lib/utils/text.test.d.ts.map +1 -0
- package/lib/utils/text.test.js +237 -0
- package/lib/utils/text.test.js.map +1 -0
- package/lib/utils/wait-for-spacebar.d.ts.map +1 -1
- package/lib/utils/wait-for-spacebar.js +1 -8
- package/lib/utils/wait-for-spacebar.js.map +1 -1
- package/package.json +8 -2
|
@@ -1,116 +1,27 @@
|
|
|
1
1
|
// Code debug component for displaying code errors/warnings with context
|
|
2
2
|
import { callComponent } from '../component.js';
|
|
3
3
|
import { applyStyle } from '../utils/colors.js';
|
|
4
|
-
import {
|
|
4
|
+
import { stripAnsi, truncateToWidth, truncateFocusRange, mapColumnToDisplay, countVisibleChars, splitAtVisiblePos } from '../utils/text.js';
|
|
5
|
+
import { fileLink } from '../utils/file-link.js';
|
|
6
|
+
import { Styled } from './styled.js';
|
|
5
7
|
import { grid as Grid } from '../layout/grid.js';
|
|
6
|
-
import {
|
|
7
|
-
function calculateVisibleRange(code, availableWidth, targetStartCol, targetEndCol, maxColumn) {
|
|
8
|
-
const plainCode = stripAnsi(code);
|
|
9
|
-
const codeLength = plainCode.length;
|
|
10
|
-
// If code fits, show everything
|
|
11
|
-
if (codeLength <= availableWidth) {
|
|
12
|
-
return {
|
|
13
|
-
startCol: 1,
|
|
14
|
-
endCol: codeLength,
|
|
15
|
-
hasEllipsisStart: false,
|
|
16
|
-
hasEllipsisEnd: false,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
// If maxColumn is set, we need to ensure we don't show beyond it
|
|
20
|
-
const effectiveMaxCol = maxColumn ? Math.min(maxColumn, codeLength) : codeLength;
|
|
21
|
-
// Calculate how much space we need for the target columns
|
|
22
|
-
const targetWidth = targetEndCol
|
|
23
|
-
? targetEndCol - targetStartCol + 1
|
|
24
|
-
: 1; // Just the arrow
|
|
25
|
-
// If target doesn't fit, we'll need to truncate
|
|
26
|
-
if (targetWidth > availableWidth - 6) { // -6 for ellipsis on both sides if needed
|
|
27
|
-
// Target is too wide, just show middle with ellipsis
|
|
28
|
-
const midPoint = Math.floor((availableWidth - 6) / 2);
|
|
29
|
-
const startCol = Math.max(1, targetStartCol - midPoint);
|
|
30
|
-
const endCol = Math.min(effectiveMaxCol, startCol + availableWidth - 6);
|
|
31
|
-
return {
|
|
32
|
-
startCol,
|
|
33
|
-
endCol,
|
|
34
|
-
hasEllipsisStart: startCol > 1,
|
|
35
|
-
hasEllipsisEnd: endCol < codeLength,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
// Try to center the target in the available space
|
|
39
|
-
const padding = Math.floor((availableWidth - targetWidth) / 2);
|
|
40
|
-
let startCol = Math.max(1, targetStartCol - padding);
|
|
41
|
-
let endCol = Math.min(effectiveMaxCol, startCol + availableWidth - 1);
|
|
42
|
-
// Adjust if we hit boundaries
|
|
43
|
-
if (endCol - startCol + 1 > availableWidth) {
|
|
44
|
-
endCol = startCol + availableWidth - 1;
|
|
45
|
-
}
|
|
46
|
-
if (endCol > effectiveMaxCol) {
|
|
47
|
-
endCol = effectiveMaxCol;
|
|
48
|
-
startCol = Math.max(1, endCol - availableWidth + 1);
|
|
49
|
-
}
|
|
50
|
-
if (startCol < 1) {
|
|
51
|
-
startCol = 1;
|
|
52
|
-
endCol = Math.min(effectiveMaxCol, availableWidth);
|
|
53
|
-
}
|
|
54
|
-
// Check if we need ellipsis
|
|
55
|
-
const hasEllipsisStart = startCol > 1;
|
|
56
|
-
const hasEllipsisEnd = endCol < codeLength;
|
|
57
|
-
return {
|
|
58
|
-
startCol,
|
|
59
|
-
endCol,
|
|
60
|
-
hasEllipsisStart,
|
|
61
|
-
hasEllipsisEnd,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Truncate code line to show specific column range with ellipsis
|
|
66
|
-
*/
|
|
67
|
-
function truncateCodeLine(code, visibleRange, availableWidth) {
|
|
68
|
-
const { startCol, endCol, hasEllipsisStart, hasEllipsisEnd } = visibleRange;
|
|
69
|
-
const plainCode = stripAnsi(code);
|
|
70
|
-
if (!hasEllipsisStart && !hasEllipsisEnd) {
|
|
71
|
-
// No truncation needed, but ensure it fits
|
|
72
|
-
return truncateToWidth(code, availableWidth);
|
|
73
|
-
}
|
|
74
|
-
// Extract the visible portion (1-based columns in plain text)
|
|
75
|
-
const visiblePlain = plainCode.substring(startCol - 1, endCol);
|
|
76
|
-
// Calculate available width for code (minus ellipsis)
|
|
77
|
-
const ellipsisWidth = (hasEllipsisStart ? 3 : 0) + (hasEllipsisEnd ? 3 : 0);
|
|
78
|
-
const codeWidth = availableWidth - ellipsisWidth;
|
|
79
|
-
// Truncate the visible portion if it's still too wide
|
|
80
|
-
let truncatedPlain = visiblePlain;
|
|
81
|
-
if (stripAnsi(visiblePlain).length > codeWidth) {
|
|
82
|
-
truncatedPlain = truncateToWidth(visiblePlain, codeWidth);
|
|
83
|
-
}
|
|
84
|
-
if (hasEllipsisStart && hasEllipsisEnd) {
|
|
85
|
-
// Truncate both ends - show middle portion
|
|
86
|
-
const midPoint = Math.floor(codeWidth / 2);
|
|
87
|
-
const startPart = truncateToWidth(truncatedPlain, midPoint);
|
|
88
|
-
const endPart = truncateToWidth(truncatedPlain.substring(stripAnsi(truncatedPlain).length - (codeWidth - midPoint)), codeWidth - midPoint);
|
|
89
|
-
return `...${startPart}...${endPart}...`;
|
|
90
|
-
}
|
|
91
|
-
else if (hasEllipsisStart) {
|
|
92
|
-
return `...${truncatedPlain}`;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
return `${truncatedPlain}...`;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
8
|
+
import { autoColor } from '../utils/terminal-theme.js';
|
|
98
9
|
/**
|
|
99
10
|
* CodeDebug component - displays code errors/warnings with context
|
|
100
11
|
*/
|
|
101
12
|
export function CodeDebug(options) {
|
|
102
13
|
return (ctx) => {
|
|
103
|
-
const { startLine, startColumn,
|
|
104
|
-
|
|
14
|
+
const { startLine, startColumn, endColumn, lineBefore, errorLine, lineAfter, message, errorCode, shortMessage, shortMessagePlacement = 'auto', filePath, fullPath, baseDir, type = 'error', maxColumn, } = options;
|
|
15
|
+
// If availableWidth is Infinity (during Grid measurement), use a reasonable default
|
|
16
|
+
// Otherwise use the actual available width
|
|
17
|
+
const availableWidth = Number.isFinite(ctx.availableWidth) ? ctx.availableWidth : 80;
|
|
105
18
|
// Color scheme based on type
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
info: { primary: 'cyan', secondary: 'brightCyan', message: 'brightCyan' },
|
|
19
|
+
const colorScheme = {
|
|
20
|
+
primary: type,
|
|
21
|
+
message: type,
|
|
110
22
|
};
|
|
111
|
-
const colorScheme = colors[type];
|
|
112
23
|
// Get appropriate line number color based on terminal theme (muted color)
|
|
113
|
-
const
|
|
24
|
+
const lineNumColor = 'muted';
|
|
114
25
|
// Calculate available width for code (reserve space for line numbers, separator, and spaces)
|
|
115
26
|
// Calculate the maximum width needed for any line number that will be displayed
|
|
116
27
|
const lineNumbersToCheck = [startLine];
|
|
@@ -122,230 +33,258 @@ export function CodeDebug(options) {
|
|
|
122
33
|
}
|
|
123
34
|
const lineNumWidth = Math.max(...lineNumbersToCheck.map(n => String(n).length));
|
|
124
35
|
const codeAreaWidth = availableWidth - lineNumWidth - 3; // -3 for " │ " (space, pipe, space)
|
|
125
|
-
//
|
|
36
|
+
// Use truncateFocusRange to show the target range with proper truncation
|
|
126
37
|
const targetEndCol = endColumn ?? startColumn;
|
|
127
|
-
const
|
|
128
|
-
const
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
// Helper to map original column to display position
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
// Visible range is in the middle
|
|
140
|
-
if (originalCol < visibleRange.startCol) {
|
|
141
|
-
return 1; // Before visible, point to start
|
|
142
|
-
}
|
|
143
|
-
else if (originalCol > visibleRange.endCol) {
|
|
144
|
-
return truncatedPlain.length; // After visible, point to end
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
// In visible range: position = 4 (for "...") + (col - startCol + 1)
|
|
148
|
-
return 4 + (originalCol - visibleRange.startCol);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
else if (visibleRange.hasEllipsisStart) {
|
|
152
|
-
// Format: "...code"
|
|
153
|
-
if (originalCol < visibleRange.startCol) {
|
|
154
|
-
return 1;
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
return 4 + (originalCol - visibleRange.startCol);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
else if (visibleRange.hasEllipsisEnd) {
|
|
161
|
-
// Format: "code..."
|
|
162
|
-
if (originalCol > visibleRange.endCol) {
|
|
163
|
-
return truncatedPlain.length;
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
return originalCol;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
// No ellipsis, direct mapping
|
|
171
|
-
return originalCol;
|
|
172
|
-
}
|
|
38
|
+
const defaultCodeColor = autoColor('base');
|
|
39
|
+
const styledErrorLine = applyStyle(errorLine, { color: defaultCodeColor });
|
|
40
|
+
const truncateResult = truncateFocusRange(styledErrorLine, codeAreaWidth, startColumn, targetEndCol, maxColumn);
|
|
41
|
+
const truncatedErrorLine = truncateResult.text;
|
|
42
|
+
const visibleStartCol = truncateResult.visibleStartCol;
|
|
43
|
+
const visibleEndCol = truncateResult.visibleEndCol;
|
|
44
|
+
const rangeStartCol = truncateResult.rangeStartCol;
|
|
45
|
+
const rangeEndCol = truncateResult.rangeEndCol;
|
|
46
|
+
// Helper to map original column to display position using the actual visible range
|
|
47
|
+
const mapColumnToDisplayLocal = (originalCol) => {
|
|
48
|
+
const result = mapColumnToDisplay(errorLine, truncatedErrorLine, visibleStartCol, visibleEndCol, originalCol, rangeStartCol, rangeEndCol);
|
|
49
|
+
return result;
|
|
173
50
|
};
|
|
174
51
|
// Build the code block lines
|
|
175
52
|
const codeLines = [];
|
|
176
53
|
// Icon and message at the top (Oxlint style)
|
|
54
|
+
// Use grid to handle wrapping automatically
|
|
177
55
|
const icon = type === 'error' ? '✖' : type === 'warning' ? '⚠' : 'ℹ';
|
|
178
|
-
const iconStyled = applyStyle(icon, { color: colorScheme.
|
|
179
|
-
// Build the message text
|
|
180
|
-
|
|
56
|
+
const iconStyled = applyStyle(icon, { color: colorScheme.primary });
|
|
57
|
+
// Build the combined message text: errorCode (if present) + message
|
|
58
|
+
// The errorCode should be underlined and bold, followed by ": ", then the message
|
|
59
|
+
// All parts should have the message color
|
|
60
|
+
let messageText;
|
|
181
61
|
if (errorCode) {
|
|
182
|
-
// Error code with underline - only underline the code, not the colon and space
|
|
183
62
|
const errorCodeStyled = applyStyle(errorCode, {
|
|
184
|
-
color: colorScheme.
|
|
63
|
+
color: colorScheme.primary,
|
|
185
64
|
underline: true,
|
|
186
65
|
bold: true
|
|
187
66
|
});
|
|
188
|
-
|
|
67
|
+
// Apply message color to ": " and message parts so they maintain color after errorCode's reset
|
|
68
|
+
const colonAndMessage = applyStyle(': ' + message, { color: colorScheme.message });
|
|
69
|
+
messageText = errorCodeStyled + colonAndMessage;
|
|
189
70
|
}
|
|
190
71
|
else {
|
|
191
|
-
messageText =
|
|
72
|
+
messageText = message;
|
|
192
73
|
}
|
|
193
|
-
// Use
|
|
194
|
-
//
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
const gapWidth = 1; // columnGap is 1
|
|
198
|
-
const messageAvailableWidth = ctx.availableWidth - iconWidth - gapWidth;
|
|
199
|
-
// Wrap the message text to fit in the available width
|
|
200
|
-
// First, get the plain text to calculate wrapping
|
|
201
|
-
const plainMessageText = stripAnsi(messageText);
|
|
202
|
-
const wrappedPlainLines = wrapText(plainMessageText, messageAvailableWidth);
|
|
203
|
-
// Now we need to preserve ANSI codes in the wrapped lines
|
|
204
|
-
// For simplicity, if the message wraps, we'll create a component that returns multiple lines
|
|
205
|
-
const messageComponent = (msgCtx) => {
|
|
206
|
-
// Recalculate available width for this context
|
|
207
|
-
const msgWidth = msgCtx.availableWidth - iconWidth - gapWidth;
|
|
208
|
-
const wrapped = wrapText(plainMessageText, msgWidth);
|
|
209
|
-
// For each wrapped line, we need to preserve the ANSI styling
|
|
210
|
-
// Since the message text has ANSI codes, we need to split it while preserving codes
|
|
211
|
-
if (wrapped.length === 1) {
|
|
212
|
-
// Single line - return as is
|
|
213
|
-
return messageText;
|
|
214
|
-
}
|
|
215
|
-
// Multiple lines - we need to split the styled text
|
|
216
|
-
// This is complex because we need to preserve ANSI codes across splits
|
|
217
|
-
// For now, let's use a simpler approach: wrap the plain text and re-apply styling
|
|
218
|
-
const wrappedStyled = [];
|
|
219
|
-
let currentPos = 0;
|
|
220
|
-
for (const wrappedLine of wrapped) {
|
|
221
|
-
// Find the corresponding portion in the original styled text
|
|
222
|
-
// We'll use a simple approach: measure visible characters
|
|
223
|
-
const lineLength = wrappedLine.length;
|
|
224
|
-
let styledPortion = '';
|
|
225
|
-
let visibleCount = 0;
|
|
226
|
-
let idx = currentPos;
|
|
227
|
-
while (idx < messageText.length && visibleCount < lineLength) {
|
|
228
|
-
if (messageText[idx] === '\x1b') {
|
|
229
|
-
// ANSI code - include it
|
|
230
|
-
let end = idx + 1;
|
|
231
|
-
while (end < messageText.length && messageText[end] !== 'm') {
|
|
232
|
-
end++;
|
|
233
|
-
}
|
|
234
|
-
if (end < messageText.length) {
|
|
235
|
-
end++;
|
|
236
|
-
}
|
|
237
|
-
styledPortion += messageText.substring(idx, end);
|
|
238
|
-
idx = end;
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
styledPortion += messageText[idx];
|
|
242
|
-
idx++;
|
|
243
|
-
visibleCount++;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
wrappedStyled.push(styledPortion);
|
|
247
|
-
currentPos = idx;
|
|
248
|
-
}
|
|
249
|
-
return wrappedStyled;
|
|
250
|
-
};
|
|
74
|
+
// Use Styled component to handle wrapping - it uses wrapText which prevents mid-word breaks
|
|
75
|
+
// Note: messageText may already have ANSI codes, so Styled will preserve them
|
|
76
|
+
const messageComponent = Styled({ color: colorScheme.message, overflow: 'wrap' }, messageText);
|
|
77
|
+
// Use 2-column grid: [icon, message (with optional errorCode)]
|
|
251
78
|
const messageGrid = Grid({ template: [1, '1*'], columnGap: 1 }, iconStyled, messageComponent);
|
|
252
79
|
const messageResult = callComponent(messageGrid, ctx);
|
|
80
|
+
const messageLines = [];
|
|
253
81
|
if (messageResult && typeof messageResult === 'string') {
|
|
254
|
-
|
|
82
|
+
messageLines.push(messageResult);
|
|
255
83
|
}
|
|
256
84
|
else if (Array.isArray(messageResult)) {
|
|
257
|
-
|
|
85
|
+
messageLines.push(...messageResult);
|
|
258
86
|
}
|
|
259
87
|
else {
|
|
260
|
-
|
|
261
|
-
codeLines.push(iconStyled + ' ' + messageText);
|
|
88
|
+
messageLines.push(iconStyled + ' ' + message);
|
|
262
89
|
}
|
|
90
|
+
codeLines.push(...messageLines);
|
|
263
91
|
// Add blank line after message before code block
|
|
264
92
|
codeLines.push('');
|
|
265
93
|
// Filename in brackets with line:column, connected with curved border (Oxlint style)
|
|
266
|
-
// The curve should align with the line number column (accounting for line number width)
|
|
267
94
|
const pathText = baseDir && filePath.startsWith(baseDir)
|
|
268
95
|
? filePath.substring(baseDir.length + 1)
|
|
269
96
|
: filePath;
|
|
270
|
-
//
|
|
271
|
-
const locationText = '[' +
|
|
272
|
-
applyStyle(pathText, { color: 'blue', bold: true }) +
|
|
273
|
-
':' +
|
|
274
|
-
String(startLine) +
|
|
275
|
-
':' +
|
|
276
|
-
String(startColumn) +
|
|
277
|
-
']';
|
|
278
|
-
// Align curve with line numbers: lineNumWidth spaces + 1 space (for the space after line number)
|
|
97
|
+
// Build location line parts
|
|
279
98
|
const curveIndent = ' '.repeat(lineNumWidth + 1);
|
|
280
|
-
const
|
|
281
|
-
|
|
99
|
+
const curve = applyStyle('╭─', { color: 'muted' });
|
|
100
|
+
const bracketOpen = '[';
|
|
101
|
+
const colon1 = ':';
|
|
102
|
+
// Use location color (magenta) for line/column numbers
|
|
103
|
+
const locationNumColor = 'location';
|
|
104
|
+
const lineNum = applyStyle(String(startLine), { color: locationNumColor });
|
|
105
|
+
const colon2 = ':';
|
|
106
|
+
const colNum = applyStyle(String(startColumn), { color: locationNumColor });
|
|
107
|
+
const bracketClose = ']';
|
|
108
|
+
// Calculate max width for path: available width minus fixed parts
|
|
109
|
+
// Fixed parts: curveIndent + ╭─ + [ + : + lineNum + : + colNum + ]
|
|
110
|
+
// Note: lineNum and colNum are now styled, so we need to use plain strings for width calculation
|
|
111
|
+
const lineNumPlain = String(startLine);
|
|
112
|
+
const colNumPlain = String(startColumn);
|
|
113
|
+
const fixedParts = curveIndent + '╭─[' + lineNumPlain + ':' + colNumPlain + ']';
|
|
114
|
+
const fixedPartsWidth = countVisibleChars(fixedParts);
|
|
115
|
+
// Ensure pathMaxWidth is finite and reasonable (cap at 40 to prevent extremely long paths)
|
|
116
|
+
const pathMaxWidth = Math.max(10, Math.min(40, availableWidth - fixedPartsWidth));
|
|
117
|
+
// Create clickable file link with styling and max width constraint
|
|
118
|
+
const pathWithLink = fileLink(fullPath, pathText);
|
|
119
|
+
const pathStyled = Styled({ color: 'accent', overflow: 'ellipsis-start', max: pathMaxWidth }, pathWithLink);
|
|
120
|
+
// Use Grid with auto columns (content-based width, no padding)
|
|
121
|
+
// Template: [curveIndent (auto)][╭─ (auto)][[ (auto)][path (auto)][: (auto)][line (auto)][: (auto)][column (auto)][] (auto)]
|
|
122
|
+
const locationGrid = Grid({
|
|
123
|
+
template: ['auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto'],
|
|
124
|
+
columnGap: 0
|
|
125
|
+
}, curveIndent, curve, bracketOpen, pathStyled, colon1, lineNum, colon2, colNum, bracketClose);
|
|
126
|
+
const locationResult = callComponent(locationGrid, ctx);
|
|
127
|
+
if (locationResult && typeof locationResult === 'string') {
|
|
128
|
+
codeLines.push(locationResult);
|
|
129
|
+
}
|
|
130
|
+
else if (Array.isArray(locationResult)) {
|
|
131
|
+
codeLines.push(...locationResult);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// Fallback
|
|
135
|
+
const locationLine = curveIndent + curve + bracketOpen + pathText + colon1 + lineNum + colon2 + colNum + bracketClose;
|
|
136
|
+
codeLines.push(locationLine);
|
|
137
|
+
}
|
|
282
138
|
// Line before (if exists)
|
|
283
139
|
if (lineBefore !== null && lineBefore !== undefined) {
|
|
284
140
|
const beforeLineNum = String(startLine - 1);
|
|
285
141
|
const beforeLineNumPadded = beforeLineNum.padStart(lineNumWidth);
|
|
286
142
|
const truncatedBefore = truncateToWidth(lineBefore, codeAreaWidth);
|
|
287
|
-
|
|
288
|
-
|
|
143
|
+
// Make non-error lines slightly dimmer
|
|
144
|
+
const dimmedBefore = applyStyle(truncatedBefore, { color: 'muted' });
|
|
145
|
+
codeLines.push(applyStyle(`${beforeLineNumPadded} `, { color: lineNumColor }) +
|
|
146
|
+
applyStyle('│ ', { color: 'muted' }) + dimmedBefore);
|
|
289
147
|
}
|
|
290
148
|
// Error line (with space before code)
|
|
149
|
+
// truncatedErrorLine already has the default color applied
|
|
150
|
+
let highlightedErrorLine = truncatedErrorLine;
|
|
151
|
+
// Highlight the error range if endColumn is specified
|
|
152
|
+
if (endColumn && endColumn > startColumn) {
|
|
153
|
+
// Map columns to display positions in the truncated (and styled) text
|
|
154
|
+
const highlightStart = mapColumnToDisplayLocal(startColumn); // 1-based display position
|
|
155
|
+
const highlightEnd = mapColumnToDisplayLocal(endColumn); // 1-based display position
|
|
156
|
+
// Split at highlight start and end positions (splitAtVisiblePos uses 0-based)
|
|
157
|
+
const { before: beforeHighlight, after: remainingAfterStart } = splitAtVisiblePos(highlightedErrorLine, highlightStart - 1);
|
|
158
|
+
const highlightLength = highlightEnd - highlightStart + 1;
|
|
159
|
+
const { before: highlightRange, after: afterHighlight } = splitAtVisiblePos(remainingAfterStart, highlightLength);
|
|
160
|
+
// Strip existing ANSI codes from highlight range and apply new highlight color
|
|
161
|
+
// This ensures the highlight color properly overrides the default code color
|
|
162
|
+
const highlightPlain = stripAnsi(highlightRange);
|
|
163
|
+
const highlightedRangeStyled = applyStyle(highlightPlain, { color: 'highlight' });
|
|
164
|
+
highlightedErrorLine = beforeHighlight + highlightedRangeStyled + afterHighlight;
|
|
165
|
+
}
|
|
291
166
|
const errorLineNum = String(startLine);
|
|
292
167
|
const errorLineNumPadded = errorLineNum.padStart(lineNumWidth);
|
|
293
|
-
let errorLineDisplay = applyStyle(`${errorLineNumPadded} `, { color:
|
|
294
|
-
applyStyle('│ ', { color: '
|
|
168
|
+
let errorLineDisplay = applyStyle(`${errorLineNumPadded} `, { color: lineNumColor }) +
|
|
169
|
+
applyStyle('│ ', { color: 'muted' }) + highlightedErrorLine;
|
|
295
170
|
codeLines.push(errorLineDisplay);
|
|
296
171
|
// Underline line (Oxlint style)
|
|
297
172
|
// Format: "[lineNumWidth spaces][1 space][│][1 space][dots][underline]"
|
|
298
173
|
// Calculate positions relative to the code (after "│ ")
|
|
299
|
-
const underlineStartInCode =
|
|
300
|
-
const underlineEndInCode = endColumn ?
|
|
174
|
+
const underlineStartInCode = mapColumnToDisplayLocal(startColumn);
|
|
175
|
+
const underlineEndInCode = endColumn ? mapColumnToDisplayLocal(endColumn) : underlineStartInCode;
|
|
301
176
|
const underlineLength = underlineEndInCode - underlineStartInCode + 1;
|
|
302
|
-
// Spaces to align with the start of the underline
|
|
177
|
+
// Spaces to align with the start of the underline
|
|
178
|
+
// underlineStartInCode is position in truncated text (which is what's displayed after │ )
|
|
179
|
+
// The ellipsis is PART of the displayed text, so we use the position directly
|
|
180
|
+
// Position is 1-based, so spacesBefore = underlineStartInCode - 1
|
|
303
181
|
const spacesBefore = Math.max(0, underlineStartInCode - 1);
|
|
304
182
|
// Underline line: line number width + space + │ + space + spaces + underline
|
|
305
|
-
let
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
183
|
+
let indicatorLine = ' '.repeat(lineNumWidth) + ' ' + applyStyle('│', { color: 'muted' }) + ' ' +
|
|
184
|
+
' '.repeat(spacesBefore);
|
|
185
|
+
// Calculate connectCol for short message (if present)
|
|
186
|
+
// This is the position where the T-bar (┬) will be, which is the middle of the underline
|
|
187
|
+
// Use positions in the truncated text (which is what's displayed)
|
|
188
|
+
const connectCol = shortMessage && underlineLength > 1
|
|
189
|
+
? underlineStartInCode + Math.floor(underlineLength / 2)
|
|
190
|
+
: underlineStartInCode;
|
|
191
|
+
// Calculate the position of the T-bar within the indicator line (after │ and space)
|
|
192
|
+
// Prefix length: lineNumWidth + 3
|
|
193
|
+
// spacesBefore: number of spaces after prefix
|
|
194
|
+
// Underline starts at: lineNumWidth + 3 + spacesBefore + 1
|
|
195
|
+
// T-bar is at: (start of underline) + (connectCol - underlineStartInCode)
|
|
196
|
+
const connectPosInIndicator = (lineNumWidth + 3) + spacesBefore + (connectCol - underlineStartInCode) + 1;
|
|
197
|
+
const underlineStartCol = underlineStartInCode;
|
|
198
|
+
const underlineEndCol = underlineEndInCode;
|
|
199
|
+
if (endColumn && underlineEndCol > underlineStartCol) {
|
|
200
|
+
// Underline with curved edges facing up
|
|
201
|
+
// Use underlineLength which was already calculated correctly (end - start + 1)
|
|
202
|
+
const underlineLen = underlineLength;
|
|
203
|
+
if (shortMessage) {
|
|
204
|
+
// With short message: T-bar in the middle
|
|
205
|
+
const connectPosInUnderline = connectCol - underlineStartInCode; // Position within the underline
|
|
206
|
+
if (underlineLen >= 3) {
|
|
207
|
+
// Build underline with T-bar: left curve, dashes, T-bar, dashes, right curve
|
|
208
|
+
// Total length = 1 (┖) + left dashes + 1 (┬) + right dashes + 1 (┚) = underlineLen
|
|
209
|
+
// So: left dashes + right dashes = underlineLen - 3
|
|
210
|
+
// T-bar is at position connectPosInUnderline (0-indexed from start), so:
|
|
211
|
+
// - left dashes = connectPosInUnderline - 1 (before T-bar, after ┖)
|
|
212
|
+
// - right dashes = underlineLen - 3 - (connectPosInUnderline - 1) = underlineLen - connectPosInUnderline - 2
|
|
213
|
+
const leftPart = '─'.repeat(Math.max(0, connectPosInUnderline - 1));
|
|
214
|
+
const rightPart = '─'.repeat(Math.max(0, underlineLen - connectPosInUnderline - 2));
|
|
215
|
+
indicatorLine += applyStyle('┖' + leftPart + '┬' + rightPart + '┚', { color: colorScheme.primary });
|
|
216
|
+
}
|
|
217
|
+
else if (underlineLen === 2) {
|
|
218
|
+
// Exactly 2 characters: just the brackets, no T-bar
|
|
219
|
+
indicatorLine += applyStyle('┖┚', { color: colorScheme.primary });
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
// Single character, just use T
|
|
223
|
+
indicatorLine += applyStyle('╿', { color: colorScheme.primary });
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
// No short message: flat underline with curved ends (no T-bar)
|
|
228
|
+
// For underlineLen=2: ┖┚ (no dashes), for underlineLen=3: ┖─┚ (1 dash), etc.
|
|
229
|
+
const dashes = '─'.repeat(Math.max(0, underlineLen - 2));
|
|
230
|
+
indicatorLine += applyStyle('┖' + dashes + '┚', { color: colorScheme.primary });
|
|
231
|
+
}
|
|
318
232
|
}
|
|
319
233
|
else {
|
|
320
|
-
//
|
|
321
|
-
|
|
322
|
-
underlineLine += ' '.repeat(spacesBefore) +
|
|
323
|
-
applyStyle(underlineChars, { color: colorScheme.primary });
|
|
234
|
+
// Single point - use ┬ (T pointing up) which has horizontal bar pointing to code, vertical line going down
|
|
235
|
+
indicatorLine += applyStyle('╿', { color: colorScheme.primary });
|
|
324
236
|
}
|
|
325
|
-
codeLines.push(
|
|
237
|
+
codeLines.push(indicatorLine);
|
|
326
238
|
// Short message connected to underline (if provided)
|
|
327
239
|
if (shortMessage) {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
240
|
+
// Determine placement: 'auto' means calculate which side has more available space
|
|
241
|
+
let placement = shortMessagePlacement === 'auto'
|
|
242
|
+
? (() => {
|
|
243
|
+
// Available space on left: from start of code area to connectCol
|
|
244
|
+
const availableLeft = connectCol - 1;
|
|
245
|
+
// Available space on right: from connectCol to end of code area
|
|
246
|
+
const availableRight = codeAreaWidth - connectCol;
|
|
247
|
+
// Place on left if left has more space, otherwise right
|
|
248
|
+
return availableLeft >= availableRight ? 'left' : 'right';
|
|
249
|
+
})()
|
|
250
|
+
: shortMessagePlacement;
|
|
251
|
+
if (placement === 'left') {
|
|
252
|
+
// Short message on left: message + connector pointing right (curved up)
|
|
253
|
+
// The ╯ should be at connectPosInIndicator
|
|
254
|
+
const messageWidth = countVisibleChars(shortMessage);
|
|
255
|
+
const linePrefixWidth = lineNumWidth + 3; // lineNumWidth + space + │ + space
|
|
256
|
+
const spacesBeforeMessage = Math.max(0, connectPosInIndicator - linePrefixWidth - messageWidth - 4);
|
|
257
|
+
const shortMessageLine = ' '.repeat(lineNumWidth) + ' ' + applyStyle('│', { color: 'muted' }) + ' ' +
|
|
258
|
+
' '.repeat(spacesBeforeMessage) +
|
|
259
|
+
applyStyle(shortMessage, { color: colorScheme.message }) +
|
|
260
|
+
applyStyle(' ──╯', { color: colorScheme.primary });
|
|
261
|
+
codeLines.push(shortMessageLine);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
// Short message on right: connector pointing left (curved up) + message
|
|
265
|
+
// The ╰ should be at connectPosInIndicator
|
|
266
|
+
const linePrefixWidth = lineNumWidth + 3; // lineNumWidth + space + │ + space
|
|
267
|
+
const spacesBeforeConnector = Math.max(0, connectPosInIndicator - linePrefixWidth - 1);
|
|
268
|
+
const shortMessageLine = ' '.repeat(lineNumWidth) + ' ' + applyStyle('│', { color: 'muted' }) + ' ' +
|
|
269
|
+
' '.repeat(spacesBeforeConnector) +
|
|
270
|
+
applyStyle('╰── ', { color: colorScheme.primary }) +
|
|
271
|
+
applyStyle(shortMessage, { color: colorScheme.message });
|
|
272
|
+
codeLines.push(shortMessageLine);
|
|
273
|
+
}
|
|
337
274
|
}
|
|
338
275
|
// Line after (if exists)
|
|
339
276
|
if (lineAfter !== null && lineAfter !== undefined) {
|
|
340
277
|
const afterLineNum = String(startLine + 1);
|
|
341
278
|
const afterLineNumPadded = afterLineNum.padStart(lineNumWidth);
|
|
342
279
|
const truncatedAfter = truncateToWidth(lineAfter, codeAreaWidth);
|
|
343
|
-
|
|
344
|
-
|
|
280
|
+
// Make non-error lines slightly dimmer
|
|
281
|
+
const dimmedAfter = applyStyle(truncatedAfter, { color: 'muted' });
|
|
282
|
+
codeLines.push(applyStyle(`${afterLineNumPadded} `, { color: lineNumColor }) +
|
|
283
|
+
applyStyle('│ ', { color: 'muted' }) + dimmedAfter);
|
|
345
284
|
}
|
|
346
285
|
// Bottom curve to close the box (Oxlint style)
|
|
347
286
|
const bottomCurveIndent = ' '.repeat(lineNumWidth + 1);
|
|
348
|
-
const bottomCurve = bottomCurveIndent + applyStyle('╰─', { color: '
|
|
287
|
+
const bottomCurve = bottomCurveIndent + applyStyle('╰─', { color: 'muted' });
|
|
349
288
|
codeLines.push(bottomCurve);
|
|
350
289
|
// Return lines directly (no Section wrapper for Oxlint style)
|
|
351
290
|
return codeLines;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-debug.js","sourceRoot":"","sources":["../../src/components/code-debug.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"code-debug.js","sourceRoot":"","sources":["../../src/components/code-debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-debug.test.d.ts","sourceRoot":"","sources":["../../src/components/code-debug.test.ts"],"names":[],"mappings":""}
|