Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Temporarily disable incomplete markdown patching on list items #179487

Merged
merged 1 commit into from Apr 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
52 changes: 26 additions & 26 deletions src/vs/base/browser/markdownRenderer.ts
Expand Up @@ -583,25 +583,25 @@ function completeSingleLinePattern(token: marked.Tokens.ListItem | marked.Tokens
return undefined;
}

function completeListItemPattern(token: marked.Tokens.List): marked.Tokens.List | undefined {
// Patch up this one list item
const lastItem = token.items[token.items.length - 1];

const newList = completeSingleLinePattern(lastItem);
if (!newList || newList.type !== 'list') {
// Nothing to fix, or not a pattern we were expecting
return;
}

// Re-parse the whole list with the last item replaced
const completeList = marked.lexer(mergeRawTokenText(token.items.slice(0, token.items.length - 1)) + newList.items[0].raw);
if (completeList.length === 1 && completeList[0].type === 'list') {
return completeList[0];
}

// Not a pattern we were expecting
return undefined;
}
// function completeListItemPattern(token: marked.Tokens.List): marked.Tokens.List | undefined {
// // Patch up this one list item
// const lastItem = token.items[token.items.length - 1];

// const newList = completeSingleLinePattern(lastItem);
// if (!newList || newList.type !== 'list') {
// // Nothing to fix, or not a pattern we were expecting
// return;
// }

// // Re-parse the whole list with the last item replaced
// const completeList = marked.lexer(mergeRawTokenText(token.items.slice(0, token.items.length - 1)) + newList.items[0].raw);
// if (completeList.length === 1 && completeList[0].type === 'list') {
// return completeList[0];
// }

// // Not a pattern we were expecting
// return undefined;
// }

export function fillInIncompleteTokens(tokens: marked.TokensList): marked.TokensList {
let i: number;
Expand All @@ -619,13 +619,13 @@ export function fillInIncompleteTokens(tokens: marked.TokensList): marked.Tokens
break;
}

if (i === tokens.length - 1 && token.type === 'list') {
const newListToken = completeListItemPattern(token);
if (newListToken) {
newTokens = [newListToken];
break;
}
}
// if (i === tokens.length - 1 && token.type === 'list') {
// const newListToken = completeListItemPattern(token);
// if (newListToken) {
// newTokens = [newListToken];
// break;
// }
// }

if (i === tokens.length - 1 && token.type === 'paragraph') {
// Only operates on a single token, because any newline that follows this should break these patterns
Expand Down
12 changes: 10 additions & 2 deletions src/vs/base/test/browser/markdownRenderer.test.ts
Expand Up @@ -521,6 +521,14 @@ suite('MarkdownRenderer', () => {
assert.deepStrictEqual(newTokens, completeTokens);
});

test(`complete ${name}`, () => {
const text = `leading text ${delimiter}code${delimiter} trailing text`;
const tokens = marked.lexer(text);
const newTokens = fillInIncompleteTokens(tokens);

assert.deepStrictEqual(newTokens, tokens);
});

test(`${name} with leading text`, () => {
const incomplete = `some text and ${delimiter}some code`;
const tokens = marked.lexer(incomplete);
Expand All @@ -547,7 +555,7 @@ suite('MarkdownRenderer', () => {
assert.deepStrictEqual(newTokens, completeTokens);
});

test(`incomplete ${name} in list`, () => {
test.skip(`incomplete ${name} in list`, () => {
const text = `- list item one\n- list item two and ${delimiter}text`;
const tokens = marked.lexer(text);
const newTokens = fillInIncompleteTokens(tokens);
Expand Down Expand Up @@ -648,7 +656,7 @@ suite('MarkdownRenderer', () => {
assert.deepStrictEqual(newTokens, completeTokens);
});

test('incomplete link in list', () => {
test.skip('incomplete link in list', () => {
const incomplete = '- [text';
const tokens = marked.lexer(incomplete);
const newTokens = fillInIncompleteTokens(tokens);
Expand Down