add quickfix for visibility

pull/5370/head
aniket-engg 2 years ago committed by Aniket
parent 63f03a74f8
commit 25570c57c9
  1. 69
      libs/remix-ui/editor/src/lib/providers/codeActionProvider.ts
  2. 4
      libs/remix-ui/editor/src/lib/providers/quickfixes.ts

@ -2,6 +2,7 @@ import { Monaco } from "@monaco-editor/react"
import monaco from "../../types/monaco" import monaco from "../../types/monaco"
import { EditorUIProps } from "../remix-ui-editor" import { EditorUIProps } from "../remix-ui-editor"
import { default as fixes } from "./quickfixes" import { default as fixes } from "./quickfixes"
import { monacoTypes } from "@remix-ui/editor"
export class RemixCodeActionProvider implements monaco.languages.CodeActionProvider { export class RemixCodeActionProvider implements monaco.languages.CodeActionProvider {
props: EditorUIProps props: EditorUIProps
@ -12,34 +13,56 @@ export class RemixCodeActionProvider implements monaco.languages.CodeActionProvi
} }
async provideCodeActions ( async provideCodeActions (
model /**ITextModel*/, model: monaco.editor.ITextModel /**ITextModel*/,
range /**Range*/, range: monaco.Range /**Range*/,
context /**CodeActionContext*/, context: monaco.languages.CodeActionContext /**CodeActionContext*/,
token /**CancellationToken*/ token: monaco.CancellationToken /**CancellationToken*/
) { ) {
const actions = []
const actions = context.markers.map(error => { for (const error of context.markers) {
console.log('error----->', error)
const errStrings = Object.keys(fixes) const errStrings = Object.keys(fixes)
const errStr = errStrings.find(es => error.message.includes(es)) const errStr = errStrings.find(es => error.message.includes(es))
const fix = fixes[errStr] if (errStr) {
return { let fix = fixes[errStr]
title: fix.title, const cursorPosition = this.props.editorAPI.getHoverPosition({lineNumber: error.startLineNumber, column: error.startColumn})
diagnostics: [error], const nodeAtPosition = await this.props.plugin.call('codeParser', 'definitionAtPosition', cursorPosition)
kind: "quickfix", if (nodeAtPosition && nodeAtPosition.nodeType === "FunctionDefinition") {
edit: { console.log('nodeAtPosition---->', nodeAtPosition)
edits: [ if (nodeAtPosition.parameters && nodeAtPosition.parameters.length > 0) {
{ const paramNodes = nodeAtPosition.parameters
resource: model.uri, const lastParamNode = paramNodes[paramNodes.length - 1]
edit: { console.log('lastParamNode---->', lastParamNode)
range: fix.range || error, const lastParamEndLoc = lastParamNode.loc.end
text: fix.message console.log('lastParamEndLoc---->', lastParamEndLoc)
} fix.range = {
startLineNumber: lastParamEndLoc.line,
endLineNumber: lastParamEndLoc.line,
startColumn: lastParamEndLoc.column + 11,
endColumn: lastParamEndLoc.column + 19
} }
] }
}, }
isPreferred: true actions.push({
title: fix.title,
diagnostics: [error],
kind: "quickfix",
edit: {
edits: [
{
resource: model.uri,
edit: {
range: fix.range || error,
text: fix.message
}
}
]
},
isPreferred: true
})
} }
}) }
return { return {
actions: actions, actions: actions,
dispose: () => {} dispose: () => {}

@ -12,5 +12,9 @@ export default {
startColumn: 1, startColumn: 1,
endColumn: 1 endColumn: 1
} }
},
"SyntaxError: No visibility specified. Did you intend to add \"public\"": {
"title": "Add public visibility",
"message": "public",
} }
} }
Loading…
Cancel
Save