File tree Expand file tree Collapse file tree
editor-packages/editor-services-prettier
editor/components/code-editor Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2,6 +2,8 @@ import * as monaco from "monaco-editor";
22import { formatCode as formatDartCode } from "dart-style" ;
33import { createWorkerQueue } from "@code-editor/webworker-services-core" ;
44
5+ export let __dangerous__lastFormattedValue__global : string ;
6+
57export function registerDocumentPrettier ( editor , monaco ) {
68 const disposables : monaco . IDisposable [ ] = [ ] ;
79 let prettierWorker ;
@@ -11,6 +13,7 @@ export function registerDocumentPrettier(editor, monaco) {
1113 const raw = model . getValue ( ) ;
1214 const { code, error } = formatDartCode ( raw ) ;
1315 if ( error ) return [ ] ;
16+ __dangerous__lastFormattedValue__global = code ;
1417 return [
1518 {
1619 range : model . getFullModelRange ( ) ,
@@ -34,7 +37,7 @@ export function registerDocumentPrettier(editor, monaco) {
3437 } ) ;
3538
3639 if ( canceled || error ) return [ ] ;
37-
40+ __dangerous__lastFormattedValue__global = pretty ;
3841 return [
3942 {
4043 range : model . getFullModelRange ( ) ,
Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ import Editor, {
88import * as monaco from "monaco-editor/esm/vs/editor/editor.api" ;
99import { MonacoEmptyMock } from "./monaco-mock-empty" ;
1010import { register } from "./monaco-utils" ;
11+ import { __dangerous__lastFormattedValue__global } from "@code-editor/prettier-services" ;
1112
1213type ICodeEditor = monaco . editor . IStandaloneCodeEditor ;
1314
@@ -66,7 +67,13 @@ export function MonacoEditor(props: MonacoEditorProps) {
6667 loading = { < MonacoEmptyMock l = { 5 } /> }
6768 defaultValue = { props . defaultValue ?? "// no content" }
6869 theme = "vs-dark"
69- onChange = { props . onChange }
70+ onChange = { ( ...v ) => {
71+ if ( v [ 0 ] === __dangerous__lastFormattedValue__global ) {
72+ // if change is caused by formatter, ignore.
73+ return ;
74+ }
75+ props . onChange ( ...v ) ;
76+ } }
7077 options = { {
7178 ...props . options ,
7279 // overrided default options
You can’t perform that action at this time.
0 commit comments