draivin / hsnips

HyperSnips: a powerful snippet engine for VS Code, inspired by vim's UltiSnips
MIT License
148 stars 23 forks source link

Cannot read property 'text' of undefined #112

Closed mydream03 closed 2 years ago

mydream03 commented 2 years ago

in vscode,I find that the running status of HyperSnips for Math is "Cannot read property 'text' of undefined",and this will appear once I write code in markdown.I'm troubled by this several days. 2022-03-18

OrangeX4 commented 2 years ago

Can you provide your snippets file?

mydream03 commented 2 years ago

global // JavaScript code function gen_matrix(nrow, ncol) { let results = ""; let order = 1; for (var i=0; i < nrow; i++){ results += ' '; for(var j = 0; j < ncol - 1; j++){ results += "$" + (order).toString() + " & "; order ++; } results += "$" + (order).toString() + " \\" + "\"; order ++; } return results; }

// 输出一个表格 function createTable(rows, cols) { let ret = ""; let order = 1; for (let i = 0; i < parseInt(rows) + 2; i++) { for (let j = 0; j < parseInt(cols); j++) { if (i === 1) { ret += "|---"; } else { ret += "| $" + (order).toString() + " "; order++; } } ret += "|\n" } return ret; }

endglobal

== Fraction Match ==

snippet // "Fraction" iAm \frac{$1}{$2}$0 endsnippet #TODO:分数 静

snippet ((\d+)|(\d*)(\\)?([A-Za-z!]+)((\^|_)(\{\d+\}|\d))*)/ "Fraction no ()" iAm \frac{rv = m[1]}{$1}$0 endsnippet #TODO:分数 动

priority 200 snippet (\\mu|\\alpha|\\sigma|\\rho|\\beta|\\gamma|\\delta|\\zeta|\\eta|\\varepsilon|\\theta|\\iota|\\kappa|\\vartheta|\\lambda|\\nu|\\pi|\\rho|\\tau|\\upsilon|\\phi|\\chi|\\psi|\\omega|\\Gamma|\\Delta|\\Theta|\\Lambda|\\Xi|\\Pi|\\Sigma|\\Upsilon|\\Phi|\\Psi|\\Omega|[A-Za-z]{1,2})?(_[A-Za-z0-9]|_\{[^}]+\})?(\^[A-Za-z0-9]|\^\{[^}]+\})?(_[A-Za-z0-9]|_\{[^}]+\})?(\([^)]+\))(_[A-Za-z0-9]|_\{[^}]+\})?(\^[A-Za-z0-9]|\^\{[^}]+\})?(_[A-Za-z0-9]|_\{[^}]+\})?\/ "Fraction with ()" iAm rv = "\\frac{" + m.slice(1, m.length).join('') + "}{$1}$2" endsnippet #TODO:分数 动

== Hat Operation ==

==== Auto Capture Hat Operation ====

snippet (\(?)(\\?[a-zA-Z]\w*)(\)?)(bar|BAR) "Bar" iAm \overline{rv = m[1] + m[2] + m[3]} endsnippet #TODO:上横线 动

snippet (\\?[a-zA-Z]\w*)(htd|TD) "tilde" iAm \widetilde{rv = m[1]} endsnippet #TODO:宽上波浪 动

snippet (\\?[a-zA-Z]\w*)(hat|HAT) "hat" iAm \hat{rv = m[1]} endsnippet #TODO:尖帽 动

snippet (\\?[a-zA-Z]\w*)(vec) "Vector postfix" iAm \vec{rv = m[1]} endsnippet #TODO:向量 动

snippet (\\?[a-zA-Z]\w*)(ora) "Vector postfix" iAm \overrightarrow{rv = m[1]} endsnippet #TODO:长上箭头 动

snippet (\\?[a-zA-Z]\w*)(hdot) "dot" iAm \dot{rv = m[1]} endsnippet #TODO:上一点 动

snippet (\\?[a-zA-Z]\w*)(hddot) "ddot" iAm \ddot{rv = m[1]} endsnippet #TODO:上两点 动

===== Static Hat Operation ====

snippet hbar "bar" iAm \overline{$1}$0 endsnippet #TODO:上横线 静

snippet hat "hat" iAm \hat{$1}$0 endsnippet #TODO:尖帽 静

snippet hsq "\sqrt{}" iAm \sqrt{${1}}$0 endsnippet #TODO:根号 静

snippet vec "\vec{}" iAm \vec{${1}}$0 endsnippet #TODO:向量 静

snippet cir "\circ{}" iAm \circ{${1}}$0 endsnippet #TODO:复合 静

== Superscript Operation ==

priority 10000 snippet Tv "inverse" iAm ^{\mathsf{T}} endsnippet #TODO:转置 静

snippet hin "superscript" iAm ^{${1}}$0 endsnippet #TODO:上标 静

== Subscript Operation ==

snippet lin "subscript" iAm _{${1}}$0 endsnippet #TODO:下标 静

snippet ([A-Za-z])(\d) "auto subscript" iAm rv = m[1] + "_" + m[2] endsnippet #TODO:下标 动

priority 100 snippet ([A-Za-z])_(\d{2}) "auto subscript" iAm rv = m[1] + "_{" + m[2] + "}$0" endsnippet #TODO:下标 动

== Font Operation ==

==== Static Operation ====

snippet txt "text" iAm \text{$1}$0 endsnippet #TODO:文本普通体 静

snippet tit "text it" iAm \textit{$1}$0 endsnippet #TODO:文本意大利斜体 静

snippet mrm "mathrm" iAm \mathrm{$1}$0 endsnippet #TODO:正体(罗马体) 静

snippet mbb "mathbb" iAm \mathbb{$1}$0 endsnippet #TODO:空心体 静

snippet mbf "mathbf" iAm \mathbf{$1}$0 endsnippet #TODO:正粗体 静

snippet bs "boldsymbol" iAm \boldsymbol{$1}$0 endsnippet #TODO:斜粗体 静

snippet RR "R" iAm \mathbb{R} endsnippet

snippet ZZ "Z" iAm \mathbb{Z} endsnippet

snippet QQ "Q" iAm \mathbb{Q} endsnippet

snippet CC "C" iAm \mathbb{C} endsnippet

snippet NN "N" iAm \mathbb{N} endsnippet

snippet N+ "N+" iAm \mathbb{N}_+ endsnippet

snippet R+ "R+" iAm \mathbb{R}_+ endsnippet

snippet R- "R-" iAm \mathbb{R}_- endsnippet

==== Dynamic Operation ====

priority 100 snippet (\\?[a-zA-Z]\w*)mcal "mathcal" iAm \mathcal{rv = m[1].toUpperCase()}$0 endsnippet #TODO:手写体 动

priority 100 snippet (\\?[a-zA-Z]\w*)mscr "mathscr" iAm \mathscr{rv = m[1].toUpperCase()}$0 endsnippet #TODO:花体 动

== Auto Symbol ==

snippet oo "\infty" iAm \infty $0 endsnippet #TODO:无穷 静

snippet ... "cdots" iAm \cdots $0 endsnippet #TODO:中三点 静

snippet <> "hokje" iAm \diamond $0 endsnippet #TODO:菱形标记 静

snippet tec "textcircled" iAm \textcircled $0 endsnippet #TODO:圆序号 静

+... -> , \cdots

- ... -> , \cdots

add a space if there already is one.

priority 101 snippet (?<=[-+])\s*\.\.\. "smart cdots" iAm \cdots endsnippet #TODO:中三点 动

It seems that \ldots is only used when , ...,

,... -> , \ldots

, ... -> , \ldots

priority 101 snippet (?<=,)(\s*)\.\.\.\. "smart ldots" iAm \ldots endsnippet #TODO:下三点 动

snippet ** "dot multiply" iAm \cdot endsnippet #TODO:点乘 静

snippet xx "cross" iAm \times endsnippet #TODO:叉乘 静

snippet veps "epsilon" iAm \varepsilon endsnippet #TODO:epsilon 静

snippet vphi "phi" iAm \varphi endsnippet #TODO:phi 静

snippet (?<!\\)(sin|cos|arccot|cot|csc|ln|log|exp|star|perp|arcsin|arccos|arctan|arccot|arccsc|arcsec|pi|zeta|oint|iiint|iint|int|ell|nabla|not) "function" iAm \rv = m[1] $0 endsnippet #TODO:函数自动补齐 动

snippet (?<!\\)(mu|alpha|sigma|rho|beta|gamma|delta|zeta|eta|varepsilon|theta|iota|kappa|vartheta|lambda|nu|pi|rho|tau|upsilon|varphi|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega) "greek" iAm \rv = m[1] endsnippet #TODO:希腊字母自动补齐 动

==== Space Symbol ====

snippet (?<!\\)(quad) "ln" iAm \rv = m[1] endsnippet #TODO:空格 动

snippet (s\.t\.) "s.t." iAm rv = m[1]\,$0 endsnippet #TODO:使得 动

==== Logic Symbol ====

snippet inn "in" iAm \in $0 endsnippet #TODO:属于 静

snippet nii "in" iAm \ni $0 endsnippet #TODO:反属于 静

snippet sse "subseteq" iAm \subseteq endsnippet #TODO:被包含于 静

priority 200 snippet (?<=\b|\d+)(?<!\\)(cap|cup|land|lor|neg|oplus|sqcap|sqcup|vdash|models) "logic operator" iAm \rv = m[1] $0 endsnippet #TODO:特殊符号 动

priority 200 snippet (?<=\b|\d+)(?<!\\)(bot|top) "logic symbols" wAm \rv = m[1] $0 endsnippet #TODO:其他符号 动

snippet sim "sim" iAm \sim $0 endsnippet #TODO:波浪线 静

snippet -> "to" iAm \rightarrow $0 endsnippet #TODO:单右箭头 静

snippet ll-> "to" iAm \longrightarrow $0 endsnippet #TODO:长单右箭头 静

snippet sta "stackrel" iAm \stackrel{$2}{$1} $0 endsnippet #TODO:箭头上 静

snippet !> "mapsto" iAm \mapsto $0 endsnippet #TODO:映射符 静

snippet => "implies" iAm \implies $0 endsnippet #TODO:推出 静

snippet =< "implied by" iAm \impliedby $0 endsnippet #TODO:反推出 静

snippet iff "if and only if" iAm \iff $0 endsnippet #TODO:等价 静

snippet EE "exist" iAm \exists $0 endsnippet #TODO:存在 静

snippet AA "forall" iAm \forall $0 endsnippet #TODO:任意 静

snippet bec "because" iAm \because $0 endsnippet #TODO:因为 静

snippet ther "therefore" iAm \therefore $0 endsnippet #TODO:所以 静

==== Compare Symbol ====

snippet -- "backslash" iAm \backslash $0 endsnippet #TODO:减集 静

snippet >= "greater than" iAm \geqslant $0 endsnippet #TODO:大于等于 静

snippet dis "displaystyle" iAm \displaystyle $0 endsnippet #TODO:行间数学格式 静

snippet <= "less than" iAm \leqslant $0 endsnippet #TODO:小于等于 静

snippet != "no equals" iAm \neq $0 endsnippet #TODO:不等于 静

snippet == " constan equals" iAm \equiv $0 endsnippet #TODO:恒等于 静

snippet ~= " Amppro equals" iAm \thickapprox $0 endsnippet #TODO:约等于 静

snippet con " Amppro equals2" iAm \cong $0 endsnippet #TODO:全等于 静

snippet >> ">>" iAm \gg $0 endsnippet #TODO:远大于 静

snippet << "<<" iAm \ll $0 endsnippet #TODO:远小于 静

snippet pro "propto" iAm \propto $0 endsnippet #TODO:正比于 静

== Auto Environment ==

==== Auto Math Mode ====

snippet lm "inline Math" iA $${1}$$0 endsnippet #TODO:插入行内公式 静

snippet dm "display Math" iA $$ ${1} $$$0 endsnippet #TODO:插入行间公式 静

==== Common Environment ====

snippet case "cases" iAm \begin{cases} $1 \\ \end{cases} endsnippet #TODO:方程组 静

snippet alg "aligned" iAm \begin{aligned} $1 \\ \end{aligned} endsnippet #TODO:自动对齐 静

== Auto Adaptive Close ==

snippet ceil "ceil" iAm \left\lceil $1 \right\rceil $0 endsnippet #TODO:向上取整 静

snippet floor "floor" iAm \left\lfloor $1 \right\rfloor$0 endsnippet #TODO:向下取整 静

priority 100 snippet @{ "{ }" iAm \{ ${1} \}$0 endsnippet #TODO:花括号 静

priority 100 snippet @< "leftangle rightangle" iAm \left<${1} \right>$0 endsnippet #TODO:尖括号 静

priority 200 snippet norm iAm \left| ${1} \right|_{$2}$3 endsnippet #TODO:双线模 静

== Snippet ==

==== General Snippet ====

====== Lite Snippet ======

snippet tag "tag" iAm \tag{$1} endsnippet #TODO:标签 静

snippet xyb "Auto (x, y)" iAm (x, y) endsnippet #TODO:二维坐标 静

snippet xyzb "Auto (x, y ,z)" iAm (x, y, z) endsnippet #TODO:三维坐标 静

priority 100 snippet \b([a-zA-Z])n(\d) "x[n+1]" iAm rv = m[1]_{${1:n}+rv = m[2]}$0 endsnippet #TODO:数组某一项 动

Unkown

snippet seq "sequence" iAm (${1:x}${2:n}){${3:$2} \in ${4:N}}$0 endsnippet #TODO:数列 静

snippet beg "begin{} / end{}" b \begin{$1} $0 \end{$1} endsnippet #TODO:latex格式 静

snippet () "()" iA ($1)$0 endsnippet #TODO:自动英文括号 动

snippet (,|,) ", " iA , $0 endsnippet #TODO:自动英文逗号 动

snippet (:|:) ", " iA : $0 endsnippet #TODO:自动英文冒号 动

======== N Series ========

======== Common Operator Snippet ========

snippet (?<!\\)prod "prod" iAm \prod\limits_{${1}}^{${2}} ${3} endsnippet #TODO:连乘符 动

snippet (?<!\\)sum "sum" iAm \sum\limits_{${1}}^{${2}} ${3} endsnippet #TODO:求和符 动

snippet (?<!\\)lim "limit" iAm \lim\limits_{${1} \to ${2}} endsnippet #TODO:极限符 动

snippet (?<!\\)part "d/dx" iAm \frac{\partial ${1}}{\partial ${2}}$0 endsnippet #TODO:偏导符 动

priority 100 snippet (?<!\\)diff "d/dx" iAm \frac{\mathrm{d}${1}}{\mathrm{d}${2}}$0 endsnippet #TODO:求导符 动

snippet buu "bigcup" iAm \bigcup\limits_{${1}}^{${2}} ${3} endsnippet #TODO:大并集符 静

snippet bnn "bigcap" iAm \bigcap\limits_{${1}}^{${2}} ${3} endsnippet #TODO:大交集符 静

priority 100 snippet dint "integral" iAm \int_{${1}}^{${2}} ${3} d${4} $0 endsnippet #TODO:定积分符 静

priority 200 snippet bdint "integral" iAm \int ${1} d${2} $0 endsnippet #TODO:不定积分符 静

Custom: Can add more defined operator

priority 100 snippet (?<![\a-zA-Z])(rank|lcm|gcd) "math function" iAm \operatorname{rv = m[1]} endsnippet #TODO:秩 最小公倍数 最大公因数 动

snippet (?<![\a-zA-Z])arg(max|min) "argmin/max" iAm \mathop{\arg\rv = m[1]} endsnippet #TODO:最值点 动

priority 100 snippet (?<![\a-zA-Z])(atan2) "atan2" iAm \operatorname{rv = m[1]} endsnippet #TODO:广义arctan 动

====== Big Snippet ======

snippet def "define equal" iAm \overset{\underset{\mathrm{def}}{}}{=} endsnippet #TODO:定义符 静

== Matrix ==

==== Static Matrix ====

snippet pmat "pmat" iAm \begin{pmatrix} ${1}\ \end{pmatrix}$0 endsnippet #TODO:手写矩阵格式 静

snippet bmat "pmat" iAm \begin{bmatrix} ${1}\ \end{bmatrix} $0 endsnippet #TODO:书面矩阵格式 静

snippet vecC "column vector" iAm \begin{pmatrix} ${1:x}_1 \\ ${1:x}2 \\ \vdots \\ ${1:x}${2:n} \end{pmatrix} endsnippet #TODO:列向量 静

snippet vecR "row vector" iAm \begin{pmatrix} ${1:x}_1, ${1:x}2, \cdots, ${1:x}${2:n} \end{pmatrix}$0 endsnippet #TODO:行向量 静

priority 300 snippet idm "omission" iAm \begin{pmatrix}${1:1}&${2:1}&\cdots&${4:1}\\${5:1}&${6:1}&\cdots&${8:1}\\\vdots&\vdots&\ddots&\vdots\\${13:1}&${14:1}&\cdots&${16:1}\end{pmatrix} endsnippet #TODO:单位矩阵 静

priority 300 snippet commx "omission" iAm \begin{pmatrix} ${1:a}{11} & ${1:a}{12} & \cdots & ${1:a}{1n} \\ ${1:a}{21} & ${1:a}{22} & \cdots & ${1:a}{2n} \\ \vdots & \vdots & \ddots & \vdots \\ ${1:a}{n1} & ${1:a}{n2} & \cdots & ${1:a}_{nn} \end{pmatrix} endsnippet #TODO:一般矩阵 静

snippet jacobi "jacobi" iAm \begin{pmatrix}\frac{\partial ${1:f}_1}{\partial ${2:x}_1}&\frac{\partial ${1:f}_1}{\partial ${2:x}_2}&\cdots&\frac{\partial ${1:f}1}{\partial ${2:x}${3:n}}\\\frac{\partial ${1:f}_2}{\partial ${2:x}_1}&\frac{\partial ${1:f}_2}{\partial ${2:x}_2}&\cdots&\frac{\partial ${1:f}2}{\partial ${2:x}${3:n}}\\\vdots&\vdots&\ddots&\vdots\\\frac{\partial ${1:f}_${3:m}}{\partial ${2:x}1}&\frac{\partial ${1:f}${3:m}}{\partial ${2:x}2}&\cdots&\frac{\partial ${1:f}${3:m}}{\partial ${2:x}_${3:n}}\end{pmatrix} endsnippet #TODO:雅可比行列式 静

==== Dynamic Matrix ====

priority 300 snippet (b|p|v)mx([1-9]) "bmatrix" iwAm \begin{rv = m[1]matrix} rv = gen_matrix(m[2],m[2]); \end{rv = m[1]matrix}$0 endsnippet #TODO:矩阵生成 动

priority 300 snippet vecc([1-9]) "col vector" iwAm \begin{pmatrix} rv = gen_matrix(m[1], 1); \end{pmatrix}$0 endsnippet #TODO:列向量生成 动

priority 300 snippet vecr([1-9]) "row vector" iwAm \begin{pmatrix} rv = gen_matrix(1, m[1]); \end{pmatrix}$0 endsnippet #TODO:行向量生成 动

== General ==

priority 300 snippet table(\d+) (\d+) "create table with rows and columns" wA rv = createTable(m[1], m[2]); endsnippet #TODO:表格生成 动

==later==

snippet \b(?<!\\)([A-Za-z])([a-z])\2 "auto subscript 2" iAm rv = m[1] + "_" + m[2].substring(0, 1) endsnippet #TODO:自动字母下标 动

snippet (\\mu|\\alpha|\\sigma|\\rho|\\beta|\\gamma|\\delta|\\zeta|\\eta|\\varepsilon|\\theta|\\iota|\\kappa|\\vartheta|\\lambda|\\nu|\\pi|\\rho|\\tau|\\upsilon|\\phi|\\chi|\\psi|\\omega|\\Gamma|\\Delta|\\Theta|\\Lambda|\\Xi|\\Pi|\\Sigma|\\Upsilon|\\Phi|\\Psi|\\Omega)([a-z])\2 "auto subscript for greek letter" iAm rv = m[1] + "_" + m[2].substring(0, 1) endsnippet #TODO:自动字母下标

snippet \b([a-z])=n "i=1,2,\cdots,n" iAm rv = m[1]=1,2,\cdots,n 动 endsnippet #TODO:自动序列指标集 动

snippet sr "square" iAm ^{2}$0 endsnippet #TODO:平方 静

snippet vfvx "vfvx" iAm \vec{f}(\vec{x}$1)$0 endsnippet #TODO:向量值函数 静

snippet vfx "vfvx" iAm \vec{f}(x$1)$0 endsnippet #TODO:向量值函数 静

snippet fvx "vfvx" iAm f(\vec{x}$1)$0 endsnippet #TODO:向量值函数 静

OrangeX4 commented 2 years ago

The extensions HyperSnips and HyperSnips for Math both have the problem. I am not sure the cause of the problem.

I used my snippets and also found the same problem, but it is not affect the usage of the extension, all my snippets are usable.

Your snippets is unusable, but it is a syntax problem instead of Cannot read property 'text' of undefined. So you are supposed to check your snippets, or use my snippets instead.

I will try to find the cause of Cannot read property 'text' of undefined.

mydream03 commented 2 years ago

thank you very much!Both my snippets and yours are usable.I just want to know the problem of Cannot read property 'text' of undefined

OrangeX4 commented 2 years ago

I find the problem.

In extension.ts and the function onDidChangeTextDocument, the mainChange is able to be undefined.

I fix it by add statement if (!mainChange) return;

And update() in hsnippetInstance.ts, I add if (!change) continue;.

You can update your extension to 0.3.7.

OrangeX4 commented 2 years ago

I will pull request to the original extension HyperSnips.