implement own code to avoid conflicts

pull/2915/head
filip mertens 2 years ago
parent c2f26a18f0
commit 7e380e68ca
  1. 14
      apps/remix-ide/src/app/plugins/code-format.ts
  2. 61
      apps/remix-ide/src/app/plugins/code-format/index.ts

@ -2,8 +2,7 @@
import { Plugin } from '@remixproject/engine'
import prettier from 'prettier/standalone'
import { Options } from 'prettier';
import * as sol from 'prettier-plugin-solidity'
import { parse } from './code-format/parser'
import sol from './code-format/index'
import * as ts from 'prettier/parser-typescript'
import * as babel from 'prettier/parser-babel'
import * as espree from 'prettier/parser-espree'
@ -21,15 +20,6 @@ export class CodeFormat extends Plugin {
constructor() {
super(profile)
// need to change the parser in the npm package because it conflicts with the parser already in the app
const loc = {
locEnd: (node) => getRange(1, node),
locStart: (node) => getRange(0, node)
}
const parser = { astFormat: 'solidity-ast', parse, ...loc };
sol.parsers = {
'solidity-parse': parser
}
}
async format() {
@ -67,7 +57,7 @@ export class CodeFormat extends Plugin {
break
}
const result = prettier.format(content, {
plugins: [sol, ts, babel, espree],
plugins: [sol as any, ts, babel, espree],
parser: parserName,
...options
})

@ -0,0 +1,61 @@
import { handleComments, printComment } from 'prettier-plugin-solidity/src/comments';
import massageAstNode from 'prettier-plugin-solidity/src/clean.js';
import options from 'prettier-plugin-solidity/src/options.js';
import print from 'prettier-plugin-solidity/src/printer.js';
import loc from 'prettier-plugin-solidity/src/loc.js';
import { parse } from './parser'
// https://prettier.io/docs/en/plugins.html#languages
// https://github.com/ikatyang/linguist-languages/blob/master/data/Solidity.json
const languages = [
{
linguistLanguageId: 237469032,
name: 'Solidity',
type: 'programming',
color: '#AA6746',
aceMode: 'text',
tmScope: 'source.solidity',
extensions: ['.sol'],
parsers: ['solidity-parse'],
vscodeLanguageIds: ['solidity']
}
];
// https://prettier.io/docs/en/plugins.html#parsers
const parser = { astFormat: 'solidity-ast', parse, ...loc };
const parsers = {
'solidity-parse': parser
};
const canAttachComment = (node) =>
node.type && node.type !== 'BlockComment' && node.type !== 'LineComment';
// https://prettier.io/docs/en/plugins.html#printers
const printers = {
'solidity-ast': {
canAttachComment,
handleComments: {
ownLine: handleComments.handleOwnLineComment,
endOfLine: handleComments.handleEndOfLineComment,
remaining: handleComments.handleRemainingComment
},
isBlockComment: handleComments.isBlockComment,
massageAstNode,
print,
printComment
}
};
// https://prettier.io/docs/en/plugins.html#defaultoptions
const defaultOptions = {
bracketSpacing: false,
tabWidth: 4
};
export default {
languages,
parsers,
printers,
options,
defaultOptions
};
Loading…
Cancel
Save