You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+27-51Lines changed: 27 additions & 51 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,14 +10,6 @@
10
10
11
11
A [Prettier plugin](https://prettier.io/docs/en/plugins.html) for automatically formatting your [Solidity](https://github.com/ethereum/solidity) code.
12
12
13
-
## Nomic Foundation's Slang
14
-
15
-
Nomic Foundation has put a lot of effort in providing a set of compiler APIs that helped us rethink our approach to parsing and rely on their flexibility, detail oriented solution and continuos support of new and old Solidity syntaxes.
16
-
17
-
Since v2.0.0 this package will ship with the Slang parser and this change must be implemented in existing configurations by replacing `parser: 'antlr'` with `parser: 'slang'`.
18
-
19
-
The `antlr4` parser (`antlr`) is still supported for the time being and will trigger a deprecation warning, since Slang gives us a much more powerful tool, is faster, allowed us to fully transition into typescript (minimizing the introduction of mismatching type bugs), and allows prettier to format the code in a much more decoupled way and position comments with a greater precision.
20
-
21
13
## Installation and usage
22
14
23
15
### Using in NodeJS
@@ -28,7 +20,7 @@ Install both `prettier` and `prettier-plugin-solidity`:
> :package:**Make sure `prettier`'s version is at least `3.0.0`**
23
+
> :package:**Make sure `prettier`'s version is at least `3.0.0`**
32
24
33
25
Run prettier in your contracts:
34
26
@@ -52,13 +44,11 @@ Or you can use it as part of your linting to check that all your code is prettif
52
44
53
45
### Using in the Browser
54
46
55
-
_Added in v1.1.0_
56
-
57
47
To use this package in the browser, you need to load Prettier's standalone bundle before loading the build provided in this package.
58
48
59
49
Prettier's unpkg field points to `https://unpkg.com/prettier/standalone.js`, in a similar way this plugin points to `https://unpkg.com/prettier-plugin-solidity/dist/standalone.js`.
60
50
61
-
Once the scripts are loaded you will have access the globals `prettier` and `prettierPlugins`.
51
+
Once the scripts are loaded you will have access to the globals `prettier` and `prettierPlugins`.
62
52
63
53
We follow Prettier's strategy for populating their plugins in the object `prettierPlugins`, you can load other plugins like `https://unpkg.com/[email protected]/parser-markdown.js` and Prettier will have access to multiple parsers.
64
54
@@ -73,22 +63,20 @@ We follow Prettier's strategy for populating their plugins in the object `pretti
73
63
74
64
asyncfunctionformat(code) {
75
65
returnawaitprettier.format(code, {
76
-
parser:'slang',
66
+
parser:"slang",
77
67
plugins: [solidityPlugin]
78
68
});
79
69
}
80
70
81
-
constoriginalCode='contract Foo {}';
71
+
constoriginalCode="contract Foo {}";
82
72
constformattedCode=format(originalCode);
83
73
</script>
84
74
```
85
75
86
-
For more details and please have a look at [Prettier's documentation](https://prettier.io/docs/en/browser.html).
76
+
For more details, have a look at [Prettier's documentation](https://prettier.io/docs/en/browser.html).
87
77
88
78
### Creating a package for the Browser
89
79
90
-
_Added in v1.2.0_
91
-
92
80
If you are creating your own package to be run in a browser, you might want to import the standalone files directly.
93
81
94
82
```Javascript
@@ -102,7 +90,7 @@ async function format(code) {
102
90
});
103
91
}
104
92
105
-
constoriginalCode='contract Foo {}';
93
+
constoriginalCode="contract Foo {}";
106
94
constformattedCode=format(originalCode);
107
95
```
108
96
@@ -138,7 +126,7 @@ Most options are described in Prettier's [documentation](https://prettier.io/doc
138
126
139
127
### Compiler
140
128
141
-
Many versions of the Solidity compiler have changes that affect how the code should be formatted. This plugin, by default, tries to format the code in the most compatible way that it's possible, but you can use the `compiler` option to nudge it in the right direction.
129
+
Many versions of the Solidity compiler have changes that affect how the code should be formatted. This plugin, by default, tries to format the code in the most compatible way that is possible, but you can use the `compiler` option to nudge it in the right direction.
142
130
143
131
One example of this is import directives. Before `0.7.4`, the compiler didn't accept multi-line import statements, so we always format them in a single line. But if you use the `compiler` option to indicate that you are using a version greater or equal than `0.7.4`, the plugin will use multi-line imports when it makes sense.
144
132
@@ -218,9 +206,18 @@ You might have a multi-version project, where different files are compiled with
You can configure the parser used by Prettier Solidity. Two Solidity parsers are supported:
212
+
213
+
-[Slang](https://nomicfoundation.github.io/slang) (the default), a more powerful and correct parser that results in better formatting for some edge cases, especially when comments are involved.
214
+
-[Solidity Parser for JavaScript](https://github.com/solidity-parser/parser/), an [ANTLR](https://www.antlr.org/)-based parser. This is the version that Prettier Solidity v1 used by default. This parser is still supported in v2, but it's deprecated and will be removed in the next major version. You can use this parser by setting `parser: "antlr"` in your Prettier configuration.
We modified the `do` instruction to also install this plugin. Then you'll have to configure the plugin to always use the
266
-
version installed in the vim plugin's directory. The vim-plug directory depends on value you use in `call plug#begin('~/.vim/<dir>')`:
262
+
We modified the `do` instruction to also install this plugin. Then you'll have to configure the plugin to always use the version installed in the vim plugin's directory. The vim-plug directory depends on the value you use in `call plug#begin('~/.vim/<dir>')`:
267
263
268
264
```vim
269
265
let g:prettier#exec_cmd_path = '~/.vim/plugged/vim-prettier/node_modules/.bin/prettier'
@@ -282,24 +278,20 @@ Now Prettier will be run every time the file is saved.
282
278
283
279
### VSCode
284
280
285
-
VSCode is not familiar with the Solidity language.
286
-
There are 2 extensions that you can install to provide support for Solidity:
281
+
VSCode is not familiar with the Solidity language. There are two extensions that you can install to provide support for Solidity:
> :warning:**These 2 extensions offer similar functionality and will clash with each other**: Please choose which one matches your projects better.
298
-
299
292
These extensions provide basic integration with Prettier; in most cases, no further action is needed.
300
293
301
-
Make sure your editor has format on save set to true.
302
-
When you save VSCode will ask you what formatter would you like to use for the Solidity language, you can choose `JuanBlanco.solidity` or `NomicFoundation.hardhat-solidity`.
294
+
Make sure your editor has format-on-save set to true. When you save, VSCode will ask you what formatter would you like to use for the Solidity language. We recommend choosing `NomicFoundation.hardhat-solidity`.
303
295
304
296
At this point VSCode's `settings.json` should have a configuration similar to this:
305
297
@@ -308,8 +300,7 @@ At this point VSCode's `settings.json` should have a configuration similar to th
308
300
"editor.formatOnSave": true,
309
301
"solidity.formatter": "prettier", // This is the default so it might be missing.
This will allow you to specify the version of the plugin in case you want to use the latest version of the plugin or need to freeze the formatting since new versions of this plugin will implement tweaks on the possible formats.
330
321
331
-
You'll have to let VSCode what formatter you prefer.
322
+
You'll have to let VSCode know what formatter you prefer.
332
323
This can be done by opening the command palette and executing:
333
324
334
325
```
@@ -351,7 +342,7 @@ Now VSCode's `settings.json` should have this:
351
342
352
343
Note: By design, Prettier prioritizes a local over a global configuration. If you have a `.prettierrc` file in your project, your VSCode's default settings or rules in `settings.json` are ignored ([prettier/prettier-vscode#1079](https://github.com/prettier/prettier-vscode/issues/1079)).
353
344
354
-
### Pnpm
345
+
### pnpm
355
346
356
347
To make Prettier Solidity work in your project, you have to add a `.prettierrc` file as shown [here](#configuration-file).
357
348
@@ -400,21 +391,6 @@ Notice that the unnecessary parentheses in `modifier2` were removed in the funct
400
391
5. Push to the branch (`git push origin feature/fooBar`)
401
392
6. Create a new Pull Request
402
393
403
-
## Who's using it?
404
-
405
-
These are some of the projects using Prettier Solidity:
0 commit comments