From 9a82f4c13744b8a82f825cf934f6297fb5542c7b Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 13 Jan 2023 19:35:47 +0100 Subject: [PATCH] feat(plugins): add rust --- main.ts | 107 ++++++++++++++++++++++++---------------------- package-lock.json | 55 +++++++++++++++++++----- package.json | 5 +-- 3 files changed, 103 insertions(+), 64 deletions(-) diff --git a/main.ts b/main.ts index 3f18351..8873e6b 100644 --- a/main.ts +++ b/main.ts @@ -1,62 +1,69 @@ import {Editor, MarkdownView, Notice, Plugin} from 'obsidian'; const prettier = require("prettier"); +import * as rustPlugin from "prettier-plugin-rust"; + const plugins = [ - require("prettier/parser-babel"), - require("prettier/parser-html"), - require("prettier/parser-yaml"), - require("prettier/parser-graphql"), - require("prettier/parser-typescript") + require("prettier/parser-babel"), + require("prettier/parser-html"), + require("prettier/parser-yaml"), + require("prettier/parser-graphql"), + require("prettier/parser-typescript"), + rustPlugin, ]; interface Formatter { - name: string; - parser: string; + name: string; + parser: string; } export default class FormatCodePlugin extends Plugin { - async onload() { - let supportedFormats: Formatter[] = [ - { - name: "JSON", - parser: "json" - }, - { - name: "YAML", - parser: "yaml" - }, - { - name: "HTML", - parser: "html" - }, - { - name: "GraphQL", - parser: "graphql" - }, - { - name: "TypeScript", - parser: "typescript" - } - ]; + async onload() { + let supportedFormats: Formatter[] = [ + { + name: "JSON", + parser: "json" + }, + { + name: "YAML", + parser: "yaml" + }, + { + name: "HTML", + parser: "html" + }, + { + name: "GraphQL", + parser: "graphql" + }, + { + name: "TypeScript", + parser: "typescript" + }, + { + name: "Rust", + parser: "jinx-rust" + } + ]; - supportedFormats.forEach(x => { - this.addCommand({ - id: 'format-prettier-' + x.name, - name: x.name, - editorCallback: (editor: Editor, view: MarkdownView) => { - try { - const formatted = prettier.format(editor.getSelection(), { - semi: false, - parser: x.parser, - plugins: plugins - }); - editor.replaceSelection(formatted); - } catch (e) { - console.log(e); - new Notice("Format: " + e); - } - } - }); - }); - } + supportedFormats.forEach(x => { + this.addCommand({ + id: 'format-prettier-' + x.name, + name: x.name, + editorCallback: (editor: Editor, view: MarkdownView) => { + try { + const formatted = prettier.format(editor.getSelection(), { + semi: false, + parser: x.parser, + plugins: plugins + }); + editor.replaceSelection(formatted); + } catch (e) { + console.log(e); + new Notice("Format: " + e); + } + } + }); + }); + } } diff --git a/package-lock.json b/package-lock.json index f54a9ca..7fccf5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "obsidian-sample-plugin", - "version": "1.0.1", + "name": "obsidian-format-code", + "version": "0.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "obsidian-sample-plugin", - "version": "1.0.1", + "name": "obsidian-format-code", + "version": "0.0.1", "license": "MIT", "devDependencies": { "@types/node": "^16.11.6", @@ -15,7 +15,8 @@ "builtin-modules": "^3.2.0", "esbuild": "0.13.12", "obsidian": "latest", - "prettier": "2.6.0", + "prettier": "^2.8.2", + "prettier-plugin-rust": "^0.1.8", "tslib": "2.3.1", "typescript": "4.4.4" } @@ -1352,6 +1353,12 @@ "dev": true, "peer": true }, + "node_modules/jinx-rust": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/jinx-rust/-/jinx-rust-0.1.6.tgz", + "integrity": "sha512-qP+wtQL1PrDDFwtPKhNGtjWOmijCrKdfUHWTV2G/ikxfjrh+cjdvkQTmny9RAsVF0jiui9m+F0INWu4cuRcZeQ==", + "dev": true + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1574,9 +1581,9 @@ } }, "node_modules/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.2.tgz", + "integrity": "sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -1588,6 +1595,16 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prettier-plugin-rust": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/prettier-plugin-rust/-/prettier-plugin-rust-0.1.8.tgz", + "integrity": "sha512-ID5PXx6CQ1FUPBzowfpvTvilZtFdCEs5+VoOQezVBSVNq+LkpIl9yVQGVALDwWLkQ6P0HR36boIm8PPKFq47TQ==", + "dev": true, + "dependencies": { + "jinx-rust": "0.1.6", + "prettier": "^2.7.1" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -2880,6 +2897,12 @@ "dev": true, "peer": true }, + "jinx-rust": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/jinx-rust/-/jinx-rust-0.1.6.tgz", + "integrity": "sha512-qP+wtQL1PrDDFwtPKhNGtjWOmijCrKdfUHWTV2G/ikxfjrh+cjdvkQTmny9RAsVF0jiui9m+F0INWu4cuRcZeQ==", + "dev": true + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3057,11 +3080,21 @@ "peer": true }, "prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.2.tgz", + "integrity": "sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==", "dev": true }, + "prettier-plugin-rust": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/prettier-plugin-rust/-/prettier-plugin-rust-0.1.8.tgz", + "integrity": "sha512-ID5PXx6CQ1FUPBzowfpvTvilZtFdCEs5+VoOQezVBSVNq+LkpIl9yVQGVALDwWLkQ6P0HR36boIm8PPKFq47TQ==", + "dev": true, + "requires": { + "jinx-rust": "0.1.6", + "prettier": "^2.7.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", diff --git a/package.json b/package.json index 31d005f..0c2d57d 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,6 @@ "keywords": [], "author": "Vladimir Savenkov", "license": "MIT", - "dependencies": { - "prettier": "2.6.0" - }, "devDependencies": { "@types/node": "^16.11.6", "@typescript-eslint/eslint-plugin": "^5.2.0", @@ -21,6 +18,8 @@ "builtin-modules": "^3.2.0", "esbuild": "0.13.12", "obsidian": "latest", + "prettier": "^2.8.2", + "prettier-plugin-rust": "^0.1.8", "tslib": "2.3.1", "typescript": "4.4.4" }