From a15f4dc3760874dfc025a313b7e78b1abcf5ae06 Mon Sep 17 00:00:00 2001 From: James Yu Date: Wed, 11 Sep 2024 11:20:27 +0800 Subject: [PATCH 1/4] Fix curly bracket formatting in macros.json --- data/macros.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/macros.json b/data/macros.json index b65f848d0..2339d4498 100644 --- a/data/macros.json +++ b/data/macros.json @@ -38,7 +38,7 @@ "name": "left", "arg": { "format": "{", - "snippet": "left{\\{${1}\\right\\\\}" + "snippet": "left\\{${1}\\right\\\\}" }, "detail": "\\left\\{ ... \\right\\}, shortcut @{" }, @@ -166,7 +166,7 @@ "name": "{", "arg": { "format": "", - "snippet": "{${1}\\\\}" + "snippet": "\\{${1}\\\\}" }, "detail": "curly brackets \\{ ... \\}" }, From 7b2374b85c034d649a4f84d2c0736f3d808cdc32 Mon Sep 17 00:00:00 2001 From: James Yu Date: Wed, 11 Sep 2024 11:36:02 +0800 Subject: [PATCH 2/4] Remove all \left and \right macros from latex-document.json --- data/packages/latex-document.json | 11 ----------- dev/packages/latex-document.json | 11 ----------- dev/parse-cwl.ts | 2 +- 3 files changed, 1 insertion(+), 23 deletions(-) diff --git a/data/packages/latex-document.json b/data/packages/latex-document.json index 3936eb2a0..e6cc19d2e 100644 --- a/data/packages/latex-document.json +++ b/data/packages/latex-document.json @@ -1395,17 +1395,6 @@ "format": "{}{}{}", "snippet": "renewenvironment*{${1:envname}}{${2:begdef}}{${3:enddef}}" } - }, - { - "name": "left" - }, - { - "name": "left)", - "unusual": true - }, - { - "name": "left]", - "unusual": true } ], "envs": [ diff --git a/dev/packages/latex-document.json b/dev/packages/latex-document.json index 3936eb2a0..e6cc19d2e 100644 --- a/dev/packages/latex-document.json +++ b/dev/packages/latex-document.json @@ -1395,17 +1395,6 @@ "format": "{}{}{}", "snippet": "renewenvironment*{${1:envname}}{${2:begdef}}{${3:enddef}}" } - }, - { - "name": "left" - }, - { - "name": "left)", - "unusual": true - }, - { - "name": "left]", - "unusual": true } ], "envs": [ diff --git a/dev/parse-cwl.ts b/dev/parse-cwl.ts index ddd986bfd..a369654ed 100644 --- a/dev/parse-cwl.ts +++ b/dev/parse-cwl.ts @@ -278,7 +278,7 @@ function parseEnv(pkg: PackageRaw, line: string, ifCond?: string): void { */ function parseMacro(pkg: PackageRaw, line: string, ifCond?: string): void { // Special cases in latex-document - if ((/\\left[^a-zA-Z]/.test(line) && line.includes('\\right')) || /\\right[^a-zA-Z]/.test(line)) { + if (/(?:\\left|\\right)[^a-zA-Z]/.test(line)) { return } // Special cases in latex-document From 842bcaeea6f8912c668f6935c2d86601cf205220 Mon Sep 17 00:00:00 2001 From: James Yu Date: Wed, 11 Sep 2024 11:37:41 +0800 Subject: [PATCH 3/4] Remove duplicated brace from \bigg and friends in latex-document --- data/packages/latex-document.json | 12 ++++++------ dev/packages/latex-document.json | 12 ++++++------ dev/parse-cwl.ts | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/data/packages/latex-document.json b/data/packages/latex-document.json index e6cc19d2e..6bb32cfc1 100644 --- a/data/packages/latex-document.json +++ b/data/packages/latex-document.json @@ -57,21 +57,21 @@ { "name": "Bigg(", "arg": { - "format": "()", + "format": "", "snippet": "Bigg(${1}\\Bigg)" } }, { "name": "Bigg[", "arg": { - "format": "[]", + "format": "", "snippet": "Bigg[${1}\\Bigg]" } }, { "name": "Bigg|", "arg": { - "format": "||", + "format": "", "snippet": "Bigg|${1}\\Bigg|" } }, @@ -81,21 +81,21 @@ { "name": "bigg(", "arg": { - "format": "()", + "format": "", "snippet": "bigg(${1}\\bigg)" } }, { "name": "bigg[", "arg": { - "format": "[]", + "format": "", "snippet": "bigg[${1}\\bigg]" } }, { "name": "bigg|", "arg": { - "format": "||", + "format": "", "snippet": "bigg|${1}\\bigg|" } }, diff --git a/dev/packages/latex-document.json b/dev/packages/latex-document.json index e6cc19d2e..6bb32cfc1 100644 --- a/dev/packages/latex-document.json +++ b/dev/packages/latex-document.json @@ -57,21 +57,21 @@ { "name": "Bigg(", "arg": { - "format": "()", + "format": "", "snippet": "Bigg(${1}\\Bigg)" } }, { "name": "Bigg[", "arg": { - "format": "[]", + "format": "", "snippet": "Bigg[${1}\\Bigg]" } }, { "name": "Bigg|", "arg": { - "format": "||", + "format": "", "snippet": "Bigg|${1}\\Bigg|" } }, @@ -81,21 +81,21 @@ { "name": "bigg(", "arg": { - "format": "()", + "format": "", "snippet": "bigg(${1}\\bigg)" } }, { "name": "bigg[", "arg": { - "format": "[]", + "format": "", "snippet": "bigg[${1}\\bigg]" } }, { "name": "bigg|", "arg": { - "format": "||", + "format": "", "snippet": "bigg|${1}\\bigg|" } }, diff --git a/dev/parse-cwl.ts b/dev/parse-cwl.ts index a369654ed..615a3ba1b 100644 --- a/dev/parse-cwl.ts +++ b/dev/parse-cwl.ts @@ -290,7 +290,7 @@ function parseMacro(pkg: PackageRaw, line: string, ifCond?: string): void { const pairs = { '(': ')', '[': ']', '|': '|' } const macro: MacroRaw = { name: match[1] + (match[2] ?? '') } if (match[2] === '(' || match[2] === '[' || match[2] === '|') { - macro.arg = { format: match[2] + pairs[match[2]], snippet: `${match[1]}${match[2]}$\{1}\\${match[1]}${pairs[match[2]]}` } + macro.arg = { format: '', snippet: `${match[1]}${match[2]}$\{1}\\${match[1]}${pairs[match[2]]}` } } pkg.macros.push(macro) return From 03b7961398bc60ec111f3a47bb199253d017a7c1 Mon Sep 17 00:00:00 2001 From: James Yu Date: Wed, 11 Sep 2024 12:04:59 +0800 Subject: [PATCH 4/4] Add \big and friends macro parsing from tex.cwl --- data/packages/physics2.json | 24 ------- data/packages/tex.json | 122 +++++++++++++++++++++++------------- dev/packages/tex.json | 122 +++++++++++++++++++++++------------- dev/parse-cwl.ts | 33 ++++++---- 4 files changed, 180 insertions(+), 121 deletions(-) diff --git a/data/packages/physics2.json b/data/packages/physics2.json index e2504e344..d25e8b099 100644 --- a/data/packages/physics2.json +++ b/data/packages/physics2.json @@ -30,30 +30,6 @@ "keyPos": 0 } }, - { - "name": "bigg" - }, - { - "name": "Bigg" - }, - { - "name": "bigg" - }, - { - "name": "bigg" - }, - { - "name": "bigg" - }, - { - "name": "Bigg" - }, - { - "name": "Bigg" - }, - { - "name": "Bigg" - }, { "name": "pab", "arg": { diff --git a/data/packages/tex.json b/data/packages/tex.json index 14d1bbf4e..d95045702 100644 --- a/data/packages/tex.json +++ b/data/packages/tex.json @@ -1425,22 +1425,22 @@ "name": "Bigg" }, { - "name": "bigg" + "name": "biggl" }, { - "name": "Bigg" + "name": "Biggl" }, { - "name": "bigg" + "name": "biggm" }, { - "name": "Bigg" + "name": "Biggm" }, { - "name": "bigg" + "name": "biggr" }, { - "name": "Bigg" + "name": "Biggr" }, { "name": "bigl" @@ -2911,92 +2911,130 @@ "doc": "Vertical ellipsis" }, { - "name": "big", + "name": "big(", "arg": { - "format": "()", - "snippet": "big(${1:%<..%>\\big})" + "format": "", + "snippet": "big(${1}\\big)" } }, { - "name": "big", + "name": "big[", "arg": { - "format": "[]", - "snippet": "big[${1:..\\big}]" + "format": "", + "snippet": "big[${1}\\big]" } }, { - "name": "big", + "name": "big|", "arg": { - "format": "||", - "snippet": "big|${1:..\\big}|" + "format": "", + "snippet": "big|${1}\\big|" } }, { - "name": "Big", + "name": "Big(", "arg": { - "format": "()", - "snippet": "Big(${1:%<..%>\\Big})" + "format": "", + "snippet": "Big(${1}\\Big)" } }, { - "name": "Big", + "name": "Big[", "arg": { - "format": "[]", - "snippet": "Big[${1:..\\Big}]" + "format": "", + "snippet": "Big[${1}\\Big]" } }, { - "name": "Big", + "name": "Big|", "arg": { - "format": "||", - "snippet": "Big|${1:..\\Big}|" + "format": "", + "snippet": "Big|${1}\\Big|" } }, { - "name": "bigl", + "name": "bigl(", "arg": { - "format": "()", - "snippet": "bigl(${1:%<..%>\\bigr})" + "format": "", + "snippet": "bigl(${1}\\bigr)" } }, { - "name": "bigl", + "name": "bigl[", "arg": { - "format": "[]", - "snippet": "bigl[${1:..\\bigr}]" + "format": "", + "snippet": "bigl[${1}\\bigr]" } }, { - "name": "Bigl", + "name": "bigl\\{", "arg": { - "format": "()", - "snippet": "Bigl(${1:%<..%>\\Bigr})" + "format": "", + "snippet": "bigl\\{${1}\\bigr\\\\}" } }, { - "name": "Bigl", + "name": "Bigl(", "arg": { - "format": "[]", - "snippet": "Bigl[${1:..\\Bigr}]" + "format": "", + "snippet": "Bigl(${1}\\Bigr)" } }, { - "name": "bigg" + "name": "Bigl[", + "arg": { + "format": "", + "snippet": "Bigl[${1}\\Bigr]" + } }, { - "name": "bigg" + "name": "Bigl\\{", + "arg": { + "format": "", + "snippet": "Bigl\\{${1}\\Bigr\\\\}" + } }, { - "name": "bigg" + "name": "biggl(", + "arg": { + "format": "", + "snippet": "biggl(${1}\\biggr)" + } }, { - "name": "Bigg" + "name": "biggl[", + "arg": { + "format": "", + "snippet": "biggl[${1}\\biggr]" + } }, { - "name": "Bigg" + "name": "biggl\\{", + "arg": { + "format": "", + "snippet": "biggl\\{${1}\\biggr\\\\}" + } }, { - "name": "Bigg" + "name": "Biggl(", + "arg": { + "format": "", + "snippet": "Biggl(${1}\\Biggr)" + } + }, + { + "name": "Biggl[", + "arg": { + "format": "", + "snippet": "Biggl[${1}\\Biggr]" + } + }, + { + "name": "Biggl\\{", + "arg": { + "format": "", + "snippet": "Biggl\\{${1}\\Biggr\\\\}" + } }, { "name": "int_", diff --git a/dev/packages/tex.json b/dev/packages/tex.json index 14d1bbf4e..11232d2b7 100644 --- a/dev/packages/tex.json +++ b/dev/packages/tex.json @@ -1425,22 +1425,22 @@ "name": "Bigg" }, { - "name": "bigg" + "name": "biggl" }, { - "name": "Bigg" + "name": "Biggl" }, { - "name": "bigg" + "name": "biggm" }, { - "name": "Bigg" + "name": "Biggm" }, { - "name": "bigg" + "name": "biggr" }, { - "name": "Bigg" + "name": "Biggr" }, { "name": "bigl" @@ -2911,92 +2911,130 @@ "doc": "Vertical ellipsis" }, { - "name": "big", + "name": "big(", "arg": { - "format": "()", - "snippet": "big(${1:%<..%>\\big})" + "format": "", + "snippet": "big(${1}\\big)" } }, { - "name": "big", + "name": "big[", "arg": { - "format": "[]", - "snippet": "big[${1:..\\big}]" + "format": "", + "snippet": "big[${1}\\big]" } }, { - "name": "big", + "name": "big|", "arg": { - "format": "||", - "snippet": "big|${1:..\\big}|" + "format": "", + "snippet": "big|${1}\\big|" } }, { - "name": "Big", + "name": "Big(", "arg": { - "format": "()", - "snippet": "Big(${1:%<..%>\\Big})" + "format": "", + "snippet": "Big(${1}\\Big)" } }, { - "name": "Big", + "name": "Big[", "arg": { - "format": "[]", - "snippet": "Big[${1:..\\Big}]" + "format": "", + "snippet": "Big[${1}\\Big]" } }, { - "name": "Big", + "name": "Big|", "arg": { - "format": "||", - "snippet": "Big|${1:..\\Big}|" + "format": "", + "snippet": "Big|${1}\\Big|" } }, { - "name": "bigl", + "name": "bigl(", "arg": { - "format": "()", - "snippet": "bigl(${1:%<..%>\\bigr})" + "format": "", + "snippet": "bigl(${1}\\bigr)" } }, { - "name": "bigl", + "name": "bigl[", "arg": { - "format": "[]", - "snippet": "bigl[${1:..\\bigr}]" + "format": "", + "snippet": "bigl[${1}\\bigr]" } }, { - "name": "Bigl", + "name": "bigl\\{", "arg": { - "format": "()", - "snippet": "Bigl(${1:%<..%>\\Bigr})" + "format": "", + "snippet": "bigl\\{${1}\\bigr\\}" } }, { - "name": "Bigl", + "name": "Bigl(", "arg": { - "format": "[]", - "snippet": "Bigl[${1:..\\Bigr}]" + "format": "", + "snippet": "Bigl(${1}\\Bigr)" } }, { - "name": "bigg" + "name": "Bigl[", + "arg": { + "format": "", + "snippet": "Bigl[${1}\\Bigr]" + } }, { - "name": "bigg" + "name": "Bigl\\{", + "arg": { + "format": "", + "snippet": "Bigl\\{${1}\\Bigr\\}" + } }, { - "name": "bigg" + "name": "biggl(", + "arg": { + "format": "", + "snippet": "biggl(${1}\\biggr)" + } }, { - "name": "Bigg" + "name": "biggl[", + "arg": { + "format": "", + "snippet": "biggl[${1}\\biggr]" + } }, { - "name": "Bigg" + "name": "biggl\\{", + "arg": { + "format": "", + "snippet": "biggl\\{${1}\\biggr\\}" + } }, { - "name": "Bigg" + "name": "Biggl(", + "arg": { + "format": "", + "snippet": "Biggl(${1}\\Biggr)" + } + }, + { + "name": "Biggl[", + "arg": { + "format": "", + "snippet": "Biggl[${1}\\Biggr]" + } + }, + { + "name": "Biggl\\{", + "arg": { + "format": "", + "snippet": "Biggl\\{${1}\\Biggr\\}" + } }, { "name": "int_", diff --git a/dev/parse-cwl.ts b/dev/parse-cwl.ts index 615a3ba1b..2564dcbb0 100644 --- a/dev/parse-cwl.ts +++ b/dev/parse-cwl.ts @@ -281,19 +281,9 @@ function parseMacro(pkg: PackageRaw, line: string, ifCond?: string): void { if (/(?:\\left|\\right)[^a-zA-Z]/.test(line)) { return } - // Special cases in latex-document - if (line.toLowerCase().startsWith('\\bigg')) { - const match = /^\\([Bb]igg)([([|])?.*?(?:#(.*))?$/.exec(line) - if (match === null) { - return - } - const pairs = { '(': ')', '[': ']', '|': '|' } - const macro: MacroRaw = { name: match[1] + (match[2] ?? '') } - if (match[2] === '(' || match[2] === '[' || match[2] === '|') { - macro.arg = { format: '', snippet: `${match[1]}${match[2]}$\{1}\\${match[1]}${pairs[match[2]]}` } - } - pkg.macros.push(macro) - return + // Special cases in latex-document and tex, e.g., \Bigg(%|\Bigg)#mM + if (line.toLowerCase().split('\\big').length === 3) { + return handleBigMacros(pkg, line) } // \mint[keys]{language}{verbatimSymbol}#S // \mint{%}|%|#M @@ -322,6 +312,23 @@ function parseMacro(pkg: PackageRaw, line: string, ifCond?: string): void { } } +function handleBigMacros(pkg: PackageRaw, line: string): void { + let snippet = line.slice(1, line.lastIndexOf('#')) // Remove leading backslash and type indicator + snippet = snippet + .replaceAll('%|', '${1}') // Replace %| with cursor position + .replaceAll('%<..%>', '${1}') // Remove %<..%> with cursor position + .replaceAll('\\}', '\\\\}') // Right curly brace needs double escape + const macro: MacroRaw = { + name: line.slice(1, line.indexOf('%')), + arg: { + format: '', + snippet + } + } + pkg.macros.push(macro) + return +} + /** * Constructs a macro environment based on the provided context, match, and * ifCond parameters.