Load mathjax-node async

This commit is contained in:
James-Yu 2018-10-17 07:50:26 +08:00
parent 13b4639b24
commit 676cd4bbee
2 changed files with 37 additions and 27 deletions

View File

@ -1,7 +1,6 @@
import * as vscode from 'vscode'
import * as path from 'path'
import * as fs from 'fs'
import * as mj from 'mathjax-node'
import {Commander} from './commander'
import {LaTeXCommander} from './components/commander'
@ -272,21 +271,6 @@ export async function activate(context: vscode.ExtensionContext) {
})
}
})
mj.config({ MathJax: {
jax: ['input/TeX', 'output/SVG'],
extensions: ['tex2jax.js', 'MathMenu.js', 'MathZoom.js'],
showMathMenu: false,
showProcessingMessages: false,
messageStyle: 'none',
SVG: {
useGlobalCache: false
},
TeX: {
extensions: ['AMSmath.js', 'AMSsymbols.js', 'noUndefined.js', 'autoload-all.js']
}
} })
mj.start()
}
export class Extension {

View File

@ -1,11 +1,12 @@
import * as vscode from 'vscode'
import * as envpair from '../components/envpair'
import * as mj from 'mathjax-node'
import {Extension} from '../main'
import {tokenizer} from './tokenizer'
export class HoverProvider implements vscode.HoverProvider {
extension: Extension
jaxInitialized = false
mj
constructor(extension: Extension) {
this.extension = extension
@ -19,9 +20,33 @@ export class HoverProvider implements vscode.HoverProvider {
if (hov) {
const tr = this.findHoverOnTex(document, position)
if (tr) {
let promise
if (!this.jaxInitialized) {
promise = import('mathjax-node').then(mj => {
this.mj = mj
mj.config({ MathJax: {
jax: ['input/TeX', 'output/SVG'],
extensions: ['tex2jax.js', 'MathZoom.js'],
showMathMenu: false,
showProcessingMessages: false,
messageStyle: 'none',
SVG: {
useGlobalCache: false
},
TeX: {
extensions: ['AMSmath.js', 'AMSsymbols.js', 'noUndefined.js', 'autoload-all.js']
}
} })
mj.start()
this.jaxInitialized = true
})
} else {
promise = Promise.resolve()
}
promise.then(() => {
const scale = configuration.get('hoverPreview.scale') as number
const [tex, range] = tr
mj.typeset({
this.mj.typeset({
math: tex,
format: 'TeX',
svg: true,
@ -29,6 +54,7 @@ export class HoverProvider implements vscode.HoverProvider {
.then(xml => this.fillBackground(xml))
.then(xml => this.svgToDataUrl(xml))
.then(md => resolve( new vscode.Hover(new vscode.MarkdownString( `![equation](${md})`), range ) ))
})
return
}
}