From 319d1df24eaae2330b1795b68920866fe9fcde54 Mon Sep 17 00:00:00 2001 From: CismonX Date: Tue, 27 Oct 2020 01:28:11 +0800 Subject: [PATCH] Update --- package-lock.json | 6 +++--- package.json | 10 +++++----- src/contexts/document_symbol.ts | 8 ++------ src/contexts/folding_range.ts | 10 ++++------ src/extension.ts | 2 +- src/utils/dom.ts | 3 ++- src/utils/types.ts | 20 ++++---------------- 7 files changed, 21 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index b9b978e..cf31c2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -74,9 +74,9 @@ "dev": true }, "@types/node": { - "version": "14.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.2.tgz", - "integrity": "sha512-jeYJU2kl7hL9U5xuI/BhKPZ4vqGM/OmK6whiFAXVhlstzZhVamWhDSmHyGLIp+RVyuF9/d0dqr2P85aFj4BvJg==", + "version": "14.14.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.3.tgz", + "integrity": "sha512-33/L34xS7HVUx23e0wOT2V1qPF1IrHgQccdJVm9uXGTB9vFBrrzBtkQymT8VskeKOxjz55MSqMv0xuLq+u98WQ==", "dev": true }, "@types/vscode": { diff --git a/package.json b/package.json index 09a72a6..05bfd11 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ }, "icon": "assets/texinfo.png", "devDependencies": { - "@types/node": "^14.14.2", + "@types/node": "^14.14.3", "@types/vscode": "^1.50.0", "@typescript-eslint/eslint-plugin": "^3.8.0", "@typescript-eslint/parser": "^3.8.0", @@ -75,7 +75,7 @@ "contributes": { "commands": [ { - "command": "texinfo.showPreview", + "command": "texinfo.preview.show", "title": "Show preview", "icon": "$(open-preview)" } @@ -83,14 +83,14 @@ "menus": { "commandPalette": [ { - "command": "texinfo.showPreview", + "command": "texinfo.preview.show", "when": "editorLangId == texinfo", "group": "navigation" } ], "editor/title": [ { - "command": "texinfo.showPreview", + "command": "texinfo.preview.show", "when": "editorLangId == texinfo", "group": "navigation" } @@ -98,7 +98,7 @@ }, "keybindings": [ { - "command": "texinfo.showPreview", + "command": "texinfo.preview.show", "key": "ctrl+k v", "mac": "cmd+k v", "when": "editorLangId == texinfo" diff --git a/src/contexts/document_symbol.ts b/src/contexts/document_symbol.ts index 1cf99b3..27a3346 100644 --- a/src/contexts/document_symbol.ts +++ b/src/contexts/document_symbol.ts @@ -19,14 +19,11 @@ export default class DocumentSymbolContext { private documentSymbols?: vscode.DocumentSymbol[]; - private foldingRanges?: readonly FoldingRange[]; - get values() { return this.documentSymbols ??= this.calculcateDocumentSymbols(); } clear() { - this.foldingRanges = undefined; this.documentSymbols = undefined; } @@ -37,9 +34,8 @@ export default class DocumentSymbolContext { */ private calculcateDocumentSymbols() { const ranges = Array(this.document.lineCount); - (this.foldingRanges ??= this.documentContext.foldingRange.values) - .forEach(range => range.kind ?? (ranges[range.start] = range)); - return this.documentSymbols = foldingRangeToSymbols(ranges, 0, ranges.length); + this.documentContext.foldingRange.values.forEach(range => range.kind ?? (ranges[range.start] = range)); + return foldingRangeToSymbols(ranges, 0, ranges.length); } } diff --git a/src/contexts/folding_range.ts b/src/contexts/folding_range.ts index 61ceba5..a8407f8 100644 --- a/src/contexts/folding_range.ts +++ b/src/contexts/folding_range.ts @@ -6,7 +6,7 @@ */ import * as vscode from 'vscode'; -import { FoldingRange, Range } from '../utils/types'; +import { FoldingRange, Range, NamedLine } from '../utils/types'; /** * Stores information about folding ranges for a document. @@ -23,7 +23,7 @@ export default class FoldingRangeContext { * Get VSCode folding ranges from the context. */ get values() { - return this.foldingRanges ??= this.calculateFoldingRanges(); + return this.foldingRanges ?? this.calculateFoldingRanges(); } private foldingRanges?: FoldingRange[]; @@ -65,7 +65,7 @@ export default class FoldingRangeContext { private calculateFoldingRanges() { this.foldingRanges = []; this.clearTemporaries(); - let closingBlocks = []; + let closingBlocks = []; let lastLine = this.document.lineCount - 1; let verbatim = false; for (let idx = lastLine; idx >= 0; --idx) { @@ -172,7 +172,7 @@ export default class FoldingRangeContext { kind?: vscode.FoldingRangeKind }) { (this.foldingRanges ??= []) - .push(new FoldingRange(extraArgs.name ?? '', extraArgs.detail ?? '', start, end, extraArgs.kind)); + .push({ name: extraArgs.name ?? '', detail: extraArgs.detail ?? '', start, end, kind: extraArgs.kind }); } private clearTemporaries() { @@ -181,5 +181,3 @@ export default class FoldingRangeContext { this.closingSubsection = this.closingSection = this.closingChapter = undefined; } } - -type ClosingBlock = { name: string, line: number }; diff --git a/src/extension.ts b/src/extension.ts index 19aca6c..344b254 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -22,7 +22,7 @@ export function activate(context: vscode.ExtensionContext) { vscode.workspace.onDidSaveTextDocument(ContextMapping.onDocumentSave), vscode.workspace.onDidCloseTextDocument(ContextMapping.onDocumentClose), vscode.workspace.onDidChangeConfiguration(Options.clear), - vscode.commands.registerTextEditorCommand('texinfo.showPreview', PreviewContext.showPreview), + vscode.commands.registerTextEditorCommand('texinfo.preview.show', PreviewContext.showPreview), vscode.languages.registerCompletionItemProvider('texinfo', new CompletionItemProvider(), '@'), vscode.languages.registerDocumentSymbolProvider('texinfo', new DocumentSymbolProvider()), vscode.languages.registerFoldingRangeProvider('texinfo', new FoldingRangeProvider()), diff --git a/src/utils/dom.ts b/src/utils/dom.ts index 060de7d..a1130d7 100644 --- a/src/utils/dom.ts +++ b/src/utils/dom.ts @@ -6,6 +6,7 @@ */ import * as htmlparser from 'node-html-parser'; +import { Operator } from './types'; /** * DOM manipulation utilities. @@ -33,7 +34,7 @@ export default class DOM { * * @param transformer */ - transformImageUri(transformer: (src: string) => string) { + transformImageUri(transformer: Operator) { const elements = this.value.querySelectorAll('img'); if (elements.length === 0) return; elements.forEach(element => { diff --git a/src/utils/types.ts b/src/utils/types.ts index f89404e..3bbac5f 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -13,24 +13,12 @@ export type Operator = (arg: T) => T; export type Range = { start: number, end: number }; +export type NamedLine = { name: string, line: number }; + export type ExecResult = { data?: string, error: string }; +export type FoldingRange = vscode.FoldingRange & { name: string, detail: string }; + export function isDefined(value: Optional): value is T { return value !== undefined; } - -/** - * VSCode folding range with name and description. - */ -export class FoldingRange extends vscode.FoldingRange { - - constructor( - readonly name: string, - readonly detail: string, - start: number, - end: number, - kind?: vscode.FoldingRangeKind, - ) { - super(start, end, kind); - } -}