зеркало из https://github.com/microsoft/ai.ed.git
Minor formatting fixes
This commit is contained in:
Родитель
5a2d1ef2d5
Коммит
0d95fa3081
|
@ -1,7 +1,7 @@
|
|||
src/pytutor/out
|
||||
src/pytutor/dist
|
||||
src/pytutor/package-lock.json
|
||||
node_modules
|
||||
src/pytutor/node_modules
|
||||
.vscode-test/
|
||||
*.vsix
|
||||
src/pytutor/tmp
|
||||
|
|
|
@ -11,5 +11,5 @@ export async function activate(context: vscode.ExtensionContext) {
|
|||
"python",
|
||||
tutorAction,
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import { compiles, EXTENSION_NAME, getModeIcon } from './util';
|
|||
|
||||
const PYMACER_REQUEST_TIMEOUT = 10000;
|
||||
const PYMACER_SERVER_URL = "http://127.0.0.1:5000/getfixes";
|
||||
const PYTHON_PATH = "C://venv//pymacer//Scripts//python"
|
||||
const PYTHON_PATH = "C://venv//pymacer//Scripts//python";
|
||||
|
||||
interface PyMacerEditSuggestion {
|
||||
type: string; // type of edit operation - insert/ delete/ replace
|
||||
|
@ -43,7 +43,7 @@ export class PyMacerRepairEngine implements RepairEngine {
|
|||
context: vscode.ExtensionContext;
|
||||
responses: PyMacerResponse[] = [];
|
||||
diagnosticToCodeActionMap: Map<vscode.Diagnostic, vscode.CodeAction> = new Map();
|
||||
constructor(context: vscode.ExtensionContext){
|
||||
constructor(context: vscode.ExtensionContext) {
|
||||
this.context = context;
|
||||
}
|
||||
async process(): Promise<boolean> {
|
||||
|
@ -51,7 +51,7 @@ export class PyMacerRepairEngine implements RepairEngine {
|
|||
this.diagnosticToCodeActionMap.clear();
|
||||
let didCompile = await compiles(PYTHON_PATH);
|
||||
if (didCompile === false) {
|
||||
console.log('Syntax Error... Consulting PyMacer')
|
||||
console.log('Syntax Error... Consulting PyMacer');
|
||||
let data = {
|
||||
source: vscode.window.activeTextEditor?.document.getText(),
|
||||
lastEditLine: vscode.window.activeTextEditor?.selection.active.line
|
||||
|
@ -75,22 +75,21 @@ export class PyMacerRepairEngine implements RepairEngine {
|
|||
return true;
|
||||
}
|
||||
|
||||
populateDiagnosticsAndCodeActions(){
|
||||
populateDiagnosticsAndCodeActions() {
|
||||
for (let i = 0; i < this.responses.length; i++) {
|
||||
let response = this.responses[i];
|
||||
let code = vscode.window.activeTextEditor?.document.getText();
|
||||
if (code === undefined){
|
||||
if (code === undefined) {
|
||||
code = "";
|
||||
}
|
||||
let range = undefined;
|
||||
let range = undefined;
|
||||
try {
|
||||
range = new vscode.Range(
|
||||
new vscode.Position(response.lineNo, response.editDiffs[0].start),
|
||||
new vscode.Position(response.lineNo, response.editDiffs[0].end + 1)
|
||||
)
|
||||
new vscode.Position(response.lineNo, response.editDiffs[0].start),
|
||||
new vscode.Position(response.lineNo, response.editDiffs[0].end + 1)
|
||||
);
|
||||
}
|
||||
catch(exception)
|
||||
{
|
||||
catch (exception) {
|
||||
range = new vscode.Range(
|
||||
new vscode.Position(response.lineNo, 0),
|
||||
new vscode.Position(response.lineNo, code[response.lineNo].length)
|
||||
|
@ -99,11 +98,11 @@ export class PyMacerRepairEngine implements RepairEngine {
|
|||
|
||||
let diagnosticMessage = "";
|
||||
let actionMessage = "";
|
||||
try{
|
||||
try {
|
||||
diagnosticMessage = response.feedback[0].msg1 + response.feedback[0].msg2;
|
||||
actionMessage = response.feedback[0].fullText.split(response.feedback[0].msg2)[1].trim();
|
||||
actionMessage = response.feedback[0].fullText.split(response.feedback[0].msg2)[1].trim();
|
||||
}
|
||||
catch{
|
||||
catch {
|
||||
diagnosticMessage = "";
|
||||
actionMessage = "";
|
||||
}
|
||||
|
@ -111,8 +110,8 @@ export class PyMacerRepairEngine implements RepairEngine {
|
|||
range: range,
|
||||
message: diagnosticMessage,
|
||||
severity: vscode.DiagnosticSeverity.Warning,
|
||||
source: EXTENSION_NAME + getModeIcon(this.context)
|
||||
}
|
||||
source: EXTENSION_NAME + getModeIcon(this.context)
|
||||
};
|
||||
let action = new vscode.CodeAction(
|
||||
actionMessage,
|
||||
vscode.CodeActionKind.QuickFix
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
export const PYMACER = 1;
|
||||
|
||||
export enum RepairEngineTypes {
|
||||
PyMacer = PYMACER,
|
||||
PyMacer = PYMACER,
|
||||
}
|
||||
|
||||
export interface RepairEngine{
|
||||
diagnosticToCodeActionMap: Map<import("vscode").Diagnostic, import("vscode").CodeAction>;
|
||||
process():Promise<boolean>;
|
||||
export interface RepairEngine {
|
||||
diagnosticToCodeActionMap: Map<import("vscode").Diagnostic, import("vscode").CodeAction>;
|
||||
process(): Promise<boolean>;
|
||||
}
|
|
@ -12,13 +12,13 @@ export class TutorCodeActionProvider implements vscode.CodeActionProvider {
|
|||
"PythonTutor"
|
||||
);
|
||||
|
||||
public constructor(context: vscode.ExtensionContext, repairEngineType: RepairEngineTypes) {
|
||||
if (repairEngineType === RepairEngineTypes.PyMacer){
|
||||
this.repairEngine = new PyMacerRepairEngine(context);
|
||||
public constructor(context: vscode.ExtensionContext, repairEngineType: RepairEngineTypes) {
|
||||
if (repairEngineType === RepairEngineTypes.PyMacer) {
|
||||
this.repairEngine = new PyMacerRepairEngine(context);
|
||||
}
|
||||
else{
|
||||
else {
|
||||
this.repairEngine = undefined!;
|
||||
}
|
||||
}
|
||||
if (vscode.window.activeTextEditor) {
|
||||
this.update(vscode.window.activeTextEditor.document);
|
||||
}
|
||||
|
@ -33,15 +33,15 @@ export class TutorCodeActionProvider implements vscode.CodeActionProvider {
|
|||
|
||||
public async update(document: vscode.TextDocument) {
|
||||
let status = await this.repairEngine.process();
|
||||
if (!status){
|
||||
console.error('Consultation with repair engine failed.')
|
||||
if (!status) {
|
||||
console.error('Consultation with repair engine failed.');
|
||||
}
|
||||
let diagnostics = [];
|
||||
for(let diagnostic of this.repairEngine.diagnosticToCodeActionMap.keys()){
|
||||
for (let diagnostic of this.repairEngine.diagnosticToCodeActionMap.keys()) {
|
||||
diagnostics.push(diagnostic);
|
||||
}
|
||||
this.diagnosticCollection.set(document.uri, diagnostics);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public provideCodeActions(
|
||||
|
|
|
@ -10,7 +10,7 @@ export const MODE_MEMENTO_NAME = "Python_Tutor_Mode";
|
|||
export const EXTENSION_NAME = "Python Tutor";
|
||||
export const BEGINNER_ICON = '👩🎓';
|
||||
export const EXPERT_ICON = '🚀';
|
||||
export const TEMP_FILE_NAME = 'temp.py'
|
||||
export const TEMP_FILE_NAME = 'temp.py';
|
||||
|
||||
const fs = require('fs').promises;
|
||||
const COMPILE_TIMEOUT = 100000;
|
||||
|
@ -27,14 +27,14 @@ export function getModeIcon(context: vscode.ExtensionContext) {
|
|||
return BEGINNER_ICON;
|
||||
}
|
||||
else {
|
||||
return EXPERT_ICON
|
||||
return EXPERT_ICON;
|
||||
}
|
||||
}
|
||||
|
||||
export async function compiles(pythonPath: string): Promise<boolean> {
|
||||
let currentCodeSnapshot = vscode.window.activeTextEditor?.document.getText();
|
||||
let tempFilePath = join(tmpdir(), TEMP_FILE_NAME);
|
||||
|
||||
|
||||
await fs.writeFile(tempFilePath, currentCodeSnapshot);
|
||||
try {
|
||||
const execute = promisify(exec);
|
||||
|
@ -45,10 +45,11 @@ export async function compiles(pythonPath: string): Promise<boolean> {
|
|||
timeout: COMPILE_TIMEOUT,
|
||||
}
|
||||
);
|
||||
} catch (exception) {
|
||||
}
|
||||
catch (exception) {
|
||||
console.debug("Compilation failed: " + exception['message']);
|
||||
return false;
|
||||
}
|
||||
console.debug("Compiled successfully.")
|
||||
console.debug("Compiled successfully.");
|
||||
return true;
|
||||
}
|
Загрузка…
Ссылка в новой задаче