я пытаюсь сделать то же самое, что было сделано здесь Пользовательские средства форматирования Monaco Editor , но с html
вместо css
.
Моя проблема что пользовательский форматтер, который я предоставляю, не используется Монако. Согласно документации / репо это как-то связано с the last one registered wins
. (https://github.com/microsoft/monaco-editor/issues/968)
Так что, если я зарегистрирую свой форматер, как показано в документах
export const documentFormatProviderHTML: languages.DocumentFormattingEditProvider = {
provideDocumentFormattingEdits(
model: editor.ITextModel,
options: languages.FormattingOptions,
token: CancellationToken,
) {
return [
{
text: html_beautify(model.getValue(), htmlOptions),
range: model.getFullModelRange(),
},
];
},
};
monaco.languages.registerDocumentFormattingEditProvider('html',
documentFormatProviderHTML,
);
, то форматер по умолчанию, включенный в монако get, будет вызываться вместо моего пользовательского .
Можно ли как-то переопределить / отключить встроенный форматтер? Я могу заставить его работать, если я откладываю регистрацию моего пользовательского форматера с setTimeout(...)
, чтобы сделать его "последним, кто победит", но я бы не стал полагаться на этот уродливый хак: /
С уважением