pas2jsdemoextension.lpr 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. program pas2jsdemoextension;
  2. {$mode objfpc}
  3. uses
  4. JS, Types, Classes, SysUtils, libvscode, vscodeapp;
  5. Type
  6. { TMyVSCodeExtension }
  7. TMyVSCodeExtension = Class(TVSCodeApplication)
  8. Private
  9. function DoHello(args:TJSValueDynArray) : JSValue;
  10. Protected
  11. procedure DoActivate; override;
  12. procedure DoDeactivate; override;
  13. Public
  14. // Add function handlers here
  15. end;
  16. // Do not change the name of this procedure, the Javascript glue code depends on it.
  17. // If you do want to change it, change the glue code as well.
  18. Procedure InitVSCode(aVSCode : TVSCodeEnvironment; aCallBacks : TVSCodeExtensionCallBacks);
  19. begin
  20. If Application=Nil then
  21. Application:=TMyVSCodeExtension.Create(Nil);
  22. Application.SaveVSCodeEnvironment(aVSCode,aCallBacks);
  23. end;
  24. { TMyVSCodeExtension }
  25. procedure TMyVSCodeExtension.DoActivate;
  26. Var
  27. disp : TVSDisposable;
  28. begin
  29. inherited DoActivate;
  30. disp:=vscode.commands.registerCommand('pas2jsdemoextension.helloWorld',@doHello);
  31. TJSArray(ExtensionContext.subscriptions).push(disp);
  32. end;
  33. function TMyVSCodeExtension.DoHello(args:TJSValueDynArray) : JSValue;
  34. begin
  35. vscode.window.showInformationMessage('Hello World from Pas2js!');
  36. end;
  37. procedure TMyVSCodeExtension.DoDeactivate();
  38. begin
  39. inherited DoDeactivate();
  40. end;
  41. // This code is needed to prevent the pas2js compiler from removing the InitAtom call.
  42. var
  43. dummy : JSValue;
  44. begin
  45. Application:=TMyVSCodeExtension.Create(Nil);
  46. dummy:=@InitVSCode;
  47. end.