mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-20 13:02:15 +00:00
Add line count to paste markers
- Paste markers now show line count: [paste #1 +50 lines] - Update replacement logic to handle both old and new marker formats - Provides better visibility into paste size
This commit is contained in:
parent
9dab1192ad
commit
1caa3cc1a7
2 changed files with 54 additions and 5 deletions
|
|
@ -265,10 +265,11 @@ export class Editor implements Component {
|
||||||
// Get text and substitute paste markers with actual content
|
// Get text and substitute paste markers with actual content
|
||||||
let result = this.state.lines.join("\n").trim();
|
let result = this.state.lines.join("\n").trim();
|
||||||
|
|
||||||
// Replace all [paste #N] markers with actual paste content
|
// Replace all [paste #N +xxx lines] markers with actual paste content
|
||||||
for (const [pasteId, pasteContent] of this.pastes) {
|
for (const [pasteId, pasteContent] of this.pastes) {
|
||||||
const marker = `[paste #${pasteId}]`;
|
// Match both old format [paste #N] and new format [paste #N +xxx lines]
|
||||||
result = result.replace(marker, pasteContent);
|
const markerRegex = new RegExp(`\\[paste #${pasteId}( \\+\\d+ lines)?\\]`, "g");
|
||||||
|
result = result.replace(markerRegex, pasteContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset editor and clear pastes
|
// Reset editor and clear pastes
|
||||||
|
|
@ -472,8 +473,8 @@ export class Editor implements Component {
|
||||||
const pasteId = this.pasteCounter;
|
const pasteId = this.pasteCounter;
|
||||||
this.pastes.set(pasteId, filteredText);
|
this.pastes.set(pasteId, filteredText);
|
||||||
|
|
||||||
// Insert marker like "[paste #1]"
|
// Insert marker like "[paste #1 +123 lines]"
|
||||||
const marker = `[paste #${pasteId}]`;
|
const marker = `[paste #${pasteId} +${pastedLines.length} lines]`;
|
||||||
for (const char of marker) {
|
for (const char of marker) {
|
||||||
this.insertCharacter(char);
|
this.insertCharacter(char);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
48
packages/tui/test/chat-debug.ts
Normal file
48
packages/tui/test/chat-debug.ts
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
/**
|
||||||
|
* Debug version of chat-simple with logging
|
||||||
|
*/
|
||||||
|
|
||||||
|
import fs from "fs";
|
||||||
|
import { ProcessTerminal } from "../src/terminal.js";
|
||||||
|
import { Input, Text, TUI } from "../src/tui-new.js";
|
||||||
|
|
||||||
|
// Clear debug log
|
||||||
|
fs.writeFileSync("debug.log", "");
|
||||||
|
|
||||||
|
function log(msg: string) {
|
||||||
|
fs.appendFileSync("debug.log", msg + "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create terminal
|
||||||
|
const terminal = new ProcessTerminal();
|
||||||
|
|
||||||
|
// Wrap terminal methods to log
|
||||||
|
const originalWrite = terminal.write.bind(terminal);
|
||||||
|
const originalMoveBy = terminal.moveBy.bind(terminal);
|
||||||
|
|
||||||
|
terminal.write = (data: string) => {
|
||||||
|
log(`WRITE: ${JSON.stringify(data)}`);
|
||||||
|
originalWrite(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
terminal.moveBy = (lines: number) => {
|
||||||
|
log(`MOVEBY: ${lines}`);
|
||||||
|
originalMoveBy(lines);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Create TUI
|
||||||
|
const tui = new TUI(terminal);
|
||||||
|
|
||||||
|
// Create chat container with some initial messages
|
||||||
|
tui.addChild(new Text("Welcome to Simple Chat!"));
|
||||||
|
tui.addChild(new Text("Type your messages below. Press Ctrl+C to exit.\n"));
|
||||||
|
|
||||||
|
// Create input field
|
||||||
|
const input = new Input();
|
||||||
|
tui.addChild(input);
|
||||||
|
|
||||||
|
// Focus the input
|
||||||
|
tui.setFocus(input);
|
||||||
|
|
||||||
|
// Start the TUI
|
||||||
|
tui.start();
|
||||||
Loading…
Add table
Add a link
Reference in a new issue