mirror of
https://github.com/pybricks/pybricks-code.git
synced 2026-09-14 18:46:17 +00:00
This adds basic intellisense for code completion and function signatures using the Python `jedi` package running in a Pyodide environment.
102 lines
2.7 KiB
TypeScript
102 lines
2.7 KiB
TypeScript
// SPDX-License-Identifier: MIT
|
|
// Copyright (c) 2022 The Pybricks Authors
|
|
|
|
import { createAction } from '../actions';
|
|
|
|
// NB: although we are using the same action creator as we do for redux, these
|
|
// actions are not used by redux but rather are to sent between workers.
|
|
|
|
/**
|
|
* Message sent from main to work to request initialization of Pyodide.
|
|
*/
|
|
export const pythonMessageInit = createAction(() => ({
|
|
type: 'python.message.init',
|
|
}));
|
|
|
|
/**
|
|
* Message sent from worker to main that indicates {@link pythonMessageInit}
|
|
* succeeded.
|
|
*/
|
|
export const pythonMessageDidInit = createAction(() => ({
|
|
type: 'python.message.didInit',
|
|
}));
|
|
|
|
/**
|
|
* Message sent from worker to main that indicates {@link pythonMessageInit}
|
|
* failed.
|
|
*/
|
|
export const pythonMessageDidFailToInit = createAction((error: Error) => ({
|
|
type: 'python.message.didFailToInit',
|
|
error,
|
|
}));
|
|
|
|
/**
|
|
* Message sent from main to worker to set the shared interrupt buffer.
|
|
*/
|
|
export const pythonMessageSetInterruptBuffer = createAction((buffer: Uint8Array) => ({
|
|
type: 'python.message.setInterruptBuffer',
|
|
buffer,
|
|
}));
|
|
|
|
/**
|
|
* Message sent from main to worker to request code completion.
|
|
*/
|
|
export const pythonMessageComplete = createAction(
|
|
(code: string, lineNumber: number, column: number) => ({
|
|
type: 'python.message.complete',
|
|
code,
|
|
lineNumber,
|
|
column,
|
|
}),
|
|
);
|
|
|
|
/**
|
|
* Message sent from worker to main that indicates {@link pythonMessageComplete}
|
|
* succeeded.
|
|
*/
|
|
export const pythonMessageDidComplete = createAction((completionListJson: string) => ({
|
|
type: 'python.message.didComplete',
|
|
completionListJson,
|
|
}));
|
|
|
|
/**
|
|
* Message sent from worker to main that indicates {@link pythonMessageComplete}
|
|
* failed.
|
|
*/
|
|
export const pythonMessageDidFailToComplete = createAction((error: Error) => ({
|
|
type: 'python.message.didFailToComplete',
|
|
error,
|
|
}));
|
|
|
|
/**
|
|
* Message sent from main to worker to request function signature.
|
|
*/
|
|
export const pythonMessageGetSignature = createAction(
|
|
(code: string, lineNumber: number, column: number) => ({
|
|
type: 'python.message.getSignature',
|
|
code,
|
|
lineNumber,
|
|
column,
|
|
}),
|
|
);
|
|
|
|
/**
|
|
* Message sent from worker to main that indicates {@link pythonMessageGetSignature}
|
|
* succeeded.
|
|
*/
|
|
export const pythonMessageDidGetSignature = createAction(
|
|
(signatureHelpJson: string) => ({
|
|
type: 'python.message.didGetSignature',
|
|
signatureHelpJson,
|
|
}),
|
|
);
|
|
|
|
/**
|
|
* Message sent from worker to main that indicates {@link pythonMessageGetSignature}
|
|
* failed.
|
|
*/
|
|
export const pythonMessageDidFailToGetSignature = createAction((error: Error) => ({
|
|
type: 'python.message.didFailToGetSignature',
|
|
error,
|
|
}));
|