linecraft 0.2.3 → 0.2.5

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