package.json 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915
  1. {
  2. "name": "godot-tools",
  3. "displayName": "godot-tools",
  4. "icon": "icon.png",
  5. "version": "2.4.0",
  6. "description": "Tools for game development with Godot Engine and GDScript",
  7. "repository": {
  8. "type": "git",
  9. "url": "https://github.com/godotengine/godot-vscode-plugin"
  10. },
  11. "bugs": {
  12. "url": "https://github.com/godotengine/godot-vscode-plugin/issues"
  13. },
  14. "license": "MIT",
  15. "author": "The Godot Engine community",
  16. "publisher": "geequlim",
  17. "engines": {
  18. "vscode": "^1.96.0"
  19. },
  20. "categories": [
  21. "Programming Languages",
  22. "Linters",
  23. "Snippets",
  24. "Debuggers",
  25. "Formatters",
  26. "Other"
  27. ],
  28. "activationEvents": [
  29. "workspaceContains:project.godot",
  30. "onDebugResolve:godot"
  31. ],
  32. "main": "./out/extension.js",
  33. "scripts": {
  34. "compile": "tsc -p ./",
  35. "lint": "eslint ./src --quiet",
  36. "watch": "tsc -watch -p ./",
  37. "package": "vsce package",
  38. "vscode:prepublish": "npm run esbuild-base -- --minify",
  39. "esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node",
  40. "esbuild": "npm run esbuild-base -- --sourcemap",
  41. "esbuild-watch": "npm run esbuild-base -- --sourcemap --watch",
  42. "generate-icons": "ts-node tools/generate_icons.ts",
  43. "test": "vscode-test"
  44. },
  45. "contributes": {
  46. "customEditors": [
  47. {
  48. "viewType": "gddoc",
  49. "displayName": "Godot Documentation",
  50. "selector": [
  51. {
  52. "filenamePattern": "*.gddoc"
  53. }
  54. ]
  55. }
  56. ],
  57. "commands": [
  58. {
  59. "category": "Godot Tools",
  60. "command": "godotTools.openEditor",
  61. "title": "Open workspace with Godot editor"
  62. },
  63. {
  64. "category": "Godot Tools",
  65. "command": "godotTools.startLanguageServer",
  66. "title": "Start the GDScript Language Server for this workspace"
  67. },
  68. {
  69. "category": "Godot Tools",
  70. "command": "godotTools.stopLanguageServer",
  71. "title": "Stop the GDScript Language Server for this workspace"
  72. },
  73. {
  74. "category": "Godot Tools",
  75. "command": "godotTools.listGodotClasses",
  76. "title": "List Godot classes"
  77. },
  78. {
  79. "category": "Godot Tools",
  80. "command": "godotTools.debugger.inspectNode",
  81. "title": "Inspect Remote Node",
  82. "icon": {
  83. "light": "resources/godot_icons/light/GuiVisibilityVisible.svg",
  84. "dark": "resources/godot_icons/dark/GuiVisibilityVisible.svg"
  85. }
  86. },
  87. {
  88. "category": "Godot Tools",
  89. "command": "godotTools.debugger.refreshSceneTree",
  90. "title": "Refresh",
  91. "icon": {
  92. "light": "resources/godot_icons/light/Reload.svg",
  93. "dark": "resources/godot_icons/dark/Reload.svg"
  94. }
  95. },
  96. {
  97. "category": "Godot Tools",
  98. "command": "godotTools.debugger.refreshInspector",
  99. "title": "Refresh",
  100. "icon": {
  101. "light": "resources/godot_icons/light/Reload.svg",
  102. "dark": "resources/godot_icons/dark/Reload.svg"
  103. }
  104. },
  105. {
  106. "category": "Godot Tools",
  107. "command": "godotTools.debugger.editValue",
  108. "title": "Edit value",
  109. "icon": {
  110. "light": "resources/godot_icons/light/Edit.svg",
  111. "dark": "resources/godot_icons/dark/Edit.svg"
  112. }
  113. },
  114. {
  115. "category": "Godot Tools",
  116. "command": "godotTools.debugger.debugCurrentFile",
  117. "title": "Debug Current File",
  118. "icon": {
  119. "light": "resources/godot_icons/light/PlayScene.svg",
  120. "dark": "resources/godot_icons/dark/PlayScene.svg"
  121. }
  122. },
  123. {
  124. "category": "Godot Tools",
  125. "command": "godotTools.debugger.debugPinnedFile",
  126. "title": "Debug Pinned File",
  127. "icon": {
  128. "light": "resources/godot_icons/light/Play.svg",
  129. "dark": "resources/godot_icons/dark/Play.svg"
  130. }
  131. },
  132. {
  133. "category": "Godot Tools",
  134. "command": "godotTools.debugger.pinFile",
  135. "title": "Pin Scene File",
  136. "icon": "resources/pin_off.svg"
  137. },
  138. {
  139. "category": "Godot Tools",
  140. "command": "godotTools.debugger.unpinFile",
  141. "title": "Unpin Scene File",
  142. "icon": "resources/pin_on.svg"
  143. },
  144. {
  145. "category": "Godot Tools",
  146. "command": "godotTools.debugger.openPinnedFile",
  147. "title": "Open the currently pinned scene"
  148. },
  149. {
  150. "category": "Godot Tools",
  151. "command": "godotTools.scenePreview.refresh",
  152. "title": "Refresh Scene Preview",
  153. "icon": {
  154. "light": "resources/godot_icons/light/Reload.svg",
  155. "dark": "resources/godot_icons/dark/Reload.svg"
  156. }
  157. },
  158. {
  159. "category": "Godot Tools",
  160. "command": "godotTools.scenePreview.openCurrentScene",
  161. "title": "Open the Scene Preview's current scene",
  162. "icon": {
  163. "light": "resources/godot_icons/light/PackedScene.svg",
  164. "dark": "resources/godot_icons/dark/PackedScene.svg"
  165. }
  166. },
  167. {
  168. "category": "Godot Tools",
  169. "command": "godotTools.scenePreview.openMainScript",
  170. "title": "Open the main script of the Scene Preview's current scene",
  171. "icon": {
  172. "light": "resources/godot_icons/light/Script.svg",
  173. "dark": "resources/godot_icons/dark/Script.svg"
  174. }
  175. },
  176. {
  177. "category": "Godot Tools",
  178. "command": "godotTools.scenePreview.lock",
  179. "title": "Lock Scene Preview",
  180. "icon": {
  181. "light": "resources/godot_icons/light/Unlock.svg",
  182. "dark": "resources/godot_icons/dark/Unlock.svg"
  183. }
  184. },
  185. {
  186. "category": "Godot Tools",
  187. "command": "godotTools.scenePreview.unlock",
  188. "title": "Unlock Scene Preview",
  189. "icon": {
  190. "light": "resources/godot_icons/light/Lock.svg",
  191. "dark": "resources/godot_icons/dark/Lock.svg"
  192. }
  193. },
  194. {
  195. "category": "Godot Tools",
  196. "command": "godotTools.scenePreview.goToDefinition",
  197. "title": "Go to Definition"
  198. },
  199. {
  200. "category": "Godot Tools",
  201. "command": "godotTools.scenePreview.openDocumentation",
  202. "title": "Open Documentation"
  203. },
  204. {
  205. "category": "Godot Tools",
  206. "command": "godotTools.scenePreview.copyNodePath",
  207. "title": "Copy Node Path"
  208. },
  209. {
  210. "category": "Godot Tools",
  211. "command": "godotTools.scenePreview.copyResourcePath",
  212. "title": "Copy Resource Path"
  213. },
  214. {
  215. "category": "Godot Tools",
  216. "command": "godotTools.scenePreview.openScene",
  217. "title": "Open Scene",
  218. "icon": {
  219. "light": "resources/InstanceOptions.svg",
  220. "dark": "resources/InstanceOptions.svg"
  221. }
  222. },
  223. {
  224. "category": "Godot Tools",
  225. "command": "godotTools.scenePreview.openScript",
  226. "title": "Open Script",
  227. "icon": {
  228. "light": "resources/godot_icons/light/Script.svg",
  229. "dark": "resources/godot_icons/dark/Script.svg"
  230. }
  231. },
  232. {
  233. "category": "Godot Tools",
  234. "command": "godotTools.switchSceneScript",
  235. "title": "Switch Scene/Script"
  236. },
  237. {
  238. "category": "Godot Tools",
  239. "command": "godotTools.copyResourcePath",
  240. "title": "Copy Resource Path"
  241. }
  242. ],
  243. "keybindings": [
  244. {
  245. "command": "godotTools.switchSceneScript",
  246. "key": "alt+o",
  247. "when": "editorLangId in godotTools.context.godotFiles && editorTextFocus"
  248. }
  249. ],
  250. "configuration": {
  251. "type": "object",
  252. "title": "Godot Tools",
  253. "properties": {
  254. "godotTools.documentation.pageScale": {
  255. "type": "integer",
  256. "default": 100,
  257. "minimum": 50,
  258. "maximum": 200,
  259. "description": "Scale factor (%) to apply to the Godot documentation viewer."
  260. },
  261. "godotTools.documentation.displayMinimap":{
  262. "type": "boolean",
  263. "default": true,
  264. "description": "Whether to display the minimap for the Godot documentation viewer."
  265. },
  266. "godotTools.editorPath.godot3": {
  267. "type": "string",
  268. "default": "godot3",
  269. "description": "Path to the Godot 3 editor executable"
  270. },
  271. "godotTools.editorPath.godot4": {
  272. "type": "string",
  273. "default": "godot",
  274. "description": "Path to the Godot 4 editor executable"
  275. },
  276. "godotTools.editor.verbose": {
  277. "type": "boolean",
  278. "default": false,
  279. "description": "Whether to launch the Godot Editor with the --verbose flag"
  280. },
  281. "godotTools.editor.revealTerminal": {
  282. "type": "boolean",
  283. "default": true,
  284. "description": "Whether to reveal the terminal when launching the Godot Editor"
  285. },
  286. "godotTools.formatter.maxEmptyLines": {
  287. "type": "string",
  288. "enum": [
  289. "1",
  290. "2"
  291. ],
  292. "enumDescriptions": [
  293. "1 empty line. A more compact style.",
  294. "2 empty lines. Conforms to the official GDScript style guide."
  295. ],
  296. "default": "2",
  297. "description": "Number of empty lines allowed anywhere in the file"
  298. },
  299. "godotTools.formatter.denseFunctionParameters": {
  300. "type": "boolean",
  301. "default": false,
  302. "description": "Whether extra space should be removed from function parameter lists"
  303. },
  304. "godotTools.lsp.serverHost": {
  305. "type": "string",
  306. "default": "127.0.0.1",
  307. "description": "The server host of the GDScript language server"
  308. },
  309. "godotTools.lsp.serverPort": {
  310. "type": "number",
  311. "default": 6008,
  312. "minimum": 0,
  313. "maximum": 65535,
  314. "description": "The server port of the GDScript language server"
  315. },
  316. "godotTools.lsp.headless": {
  317. "type": "boolean",
  318. "default": false,
  319. "description": "Whether to launch the LSP as a headless child process"
  320. },
  321. "godotTools.lsp.autoReconnect.enabled": {
  322. "type": "boolean",
  323. "default": true,
  324. "description": "Whether the plugin should attempt to reconnect to the GDScript language server"
  325. },
  326. "godotTools.lsp.autoReconnect.cooldown": {
  327. "type": "number",
  328. "default": 3000,
  329. "description": "The number of milliseconds to wait before attempting to reconnect"
  330. },
  331. "godotTools.lsp.autoReconnect.attempts": {
  332. "type": "number",
  333. "default": 10,
  334. "description": "How many times the client will attempt to reconnect"
  335. },
  336. "godotTools.scenePreview.previewRelatedScenes": {
  337. "enum": [
  338. "anyFolder",
  339. "sameFolder",
  340. "off"
  341. ],
  342. "enumDescriptions": [
  343. "Attempt to preview a related scene from anywhere in the workspace.",
  344. "Attempt to preview a related scene from the same folder.",
  345. "Do not attempt to preview a related scene."
  346. ],
  347. "default": "sameFolder",
  348. "description": "Controls where the Scene Preview will search for related scenes when viewing a script file."
  349. },
  350. "godotTools.inlayHints.gdscript": {
  351. "type": "boolean",
  352. "default": false,
  353. "description": "Whether to enable inlay hints in GDScript files (experimental)"
  354. },
  355. "godotTools.inlayHints.gdresource": {
  356. "type": "boolean",
  357. "default": true,
  358. "description": "Whether to enable inlay hints in GDResource (.tscn, .tres, etc) files"
  359. }
  360. }
  361. },
  362. "languages": [
  363. {
  364. "id": "gdscript",
  365. "aliases": [
  366. "GDScript",
  367. "gdscript"
  368. ],
  369. "extensions": [
  370. ".gd"
  371. ],
  372. "configuration": "./configurations/gdscript.language-configuration.json"
  373. },
  374. {
  375. "id": "gdscene",
  376. "aliases": [
  377. "GDScene",
  378. "gdscene"
  379. ],
  380. "extensions": [
  381. ".tscn"
  382. ],
  383. "configuration": "./configurations/gdresource.language-configuration.json"
  384. },
  385. {
  386. "id": "gdresource",
  387. "aliases": [
  388. "GDResource",
  389. "gdresource"
  390. ],
  391. "extensions": [
  392. ".godot",
  393. ".tres",
  394. ".import",
  395. ".gdns",
  396. ".gdnlib"
  397. ],
  398. "configuration": "./configurations/gdresource.language-configuration.json"
  399. },
  400. {
  401. "id": "gdshader",
  402. "aliases": [
  403. "gdshader"
  404. ],
  405. "extensions": [
  406. ".gdshader",
  407. ".gdshaderinc"
  408. ],
  409. "configuration": "./configurations/gdshader.language-configuration.json"
  410. }
  411. ],
  412. "grammars": [
  413. {
  414. "language": "gdscript",
  415. "scopeName": "source.gdscript",
  416. "path": "./syntaxes/GDScript.tmLanguage.json"
  417. },
  418. {
  419. "language": "gdresource",
  420. "scopeName": "source.gdresource",
  421. "path": "./syntaxes/GDResource.tmLanguage.json"
  422. },
  423. {
  424. "language": "gdscene",
  425. "scopeName": "source.gdresource",
  426. "path": "./syntaxes/GDResource.tmLanguage.json"
  427. },
  428. {
  429. "language": "gdshader",
  430. "scopeName": "source.gdshader",
  431. "path": "./syntaxes/GDShader.tmLanguage.json"
  432. }
  433. ],
  434. "semanticTokenScopes": [
  435. {
  436. "scopes": {
  437. "nodePath": [
  438. "constant.character.escape"
  439. ]
  440. }
  441. }
  442. ],
  443. "snippets": [
  444. {
  445. "language": "gdscript",
  446. "path": "./configurations/snippets.json"
  447. }
  448. ],
  449. "debuggers": [
  450. {
  451. "type": "godot",
  452. "label": "GDScript Godot Debug",
  453. "runtime": "node",
  454. "configurationAttributes": {
  455. "launch": {
  456. "required": [],
  457. "properties": {
  458. "project": {
  459. "type": "string",
  460. "description": "Absolute path to a directory with a project.godot file.",
  461. "default": "${workspaceFolder}"
  462. },
  463. "address": {
  464. "type": "string",
  465. "description": "The IP address for the Godot remote debugger to use.",
  466. "default": "127.0.0.1"
  467. },
  468. "port": {
  469. "type": "number",
  470. "description": "The port number for the Godot remote debugger to use.",
  471. "default": 6007
  472. },
  473. "scene": {
  474. "type": "string",
  475. "enum": [
  476. "main",
  477. "current",
  478. "pinned"
  479. ],
  480. "enumDescriptions": [
  481. "Launch the 'main_scene' specified in project.godot",
  482. "Launch the scene (or related scene) in the current editor",
  483. "Launch the pinned scene"
  484. ],
  485. "description": "Scene file to run when debugging. Choices are 'main', 'current', 'pinned', or providing a custom path to a scene.",
  486. "default": ""
  487. },
  488. "editor_path": {
  489. "type": "string",
  490. "description": "Absolute path to the Godot executable to be used for this debug profile.",
  491. "default": false
  492. },
  493. "profiling": {
  494. "type": "boolean",
  495. "description": "Enable profiling in the script debugger.",
  496. "default": false
  497. },
  498. "single_threaded_scene": {
  499. "type": "boolean",
  500. "description": "Scene tree runs in single-threaded mode. Sub-thread groups are disabled and run on the main thread. (Godot 4 only)",
  501. "default": false
  502. },
  503. "debug_collisions": {
  504. "type": "boolean",
  505. "description": "Show collision shapes when running the scene.",
  506. "default": false
  507. },
  508. "debug_paths": {
  509. "type": "boolean",
  510. "description": "Show navigation polygons when running the scene. (Godot 4 only)",
  511. "default": false
  512. },
  513. "debug_navigation": {
  514. "type": "boolean",
  515. "description": "Show navigation polygons when running the scene.",
  516. "default": false
  517. },
  518. "debug_avoidance": {
  519. "type": "boolean",
  520. "description": "Show navigation avoidance debug visuals when running the scene. (Godot 4 only)",
  521. "default": false
  522. },
  523. "debug_stringnames": {
  524. "type": "boolean",
  525. "description": "Print all StringName allocations to stdout when the engine quits. (Godot 4 only)",
  526. "default": false
  527. },
  528. "frame_delay": {
  529. "type": "number",
  530. "description": "Simulate high CPU load (delay each frame by <ms> milliseconds)."
  531. },
  532. "time_scale": {
  533. "type": "number",
  534. "description": "Force time scale (higher values are faster, 1.0 is normal speed)."
  535. },
  536. "disable_vsync": {
  537. "type": "boolean",
  538. "description": "Forces disabling of vertical synchronization, even if enabled in the project settings. Does not override driver-level V-Sync enforcement. (Godot 4 only)",
  539. "default": false
  540. },
  541. "fixed_fps": {
  542. "type": "number",
  543. "description": "Force a fixed number of frames per second. This setting disables real-time synchronization."
  544. },
  545. "additional_options": {
  546. "type": "string",
  547. "description": "Additional command line arguments.",
  548. "default": ""
  549. }
  550. }
  551. },
  552. "attach": {
  553. "required": [],
  554. "properties": {
  555. "address": {
  556. "type": "string",
  557. "description": "The IP address for the Godot remote debugger to use.",
  558. "default": "127.0.0.1"
  559. },
  560. "port": {
  561. "type": "number",
  562. "description": "The port number for the Godot remote debugger to use.",
  563. "default": 6007
  564. }
  565. }
  566. }
  567. },
  568. "initialConfigurations": [
  569. {
  570. "name": "GDScript: Launch Project",
  571. "type": "godot",
  572. "request": "launch",
  573. "project": "${workspaceFolder}",
  574. "debug_collisions": false,
  575. "debug_paths": false,
  576. "debug_navigation": false,
  577. "additional_options": ""
  578. }
  579. ],
  580. "configurationSnippets": [
  581. {
  582. "label": "GDScript: Launch Project",
  583. "description": "A config to launch the current project.",
  584. "body": {
  585. "name": "GDScript: Launch Project",
  586. "type": "godot",
  587. "request": "launch",
  588. "project": "${workspaceFolder}",
  589. "debug_collisions": false,
  590. "debug_paths": false,
  591. "debug_navigation": false,
  592. "additional_options": ""
  593. }
  594. },
  595. {
  596. "label": "GDScript: Launch Current File",
  597. "description": "A config to launch the currently open scene.",
  598. "body": {
  599. "name": "GDScript: Launch Current File",
  600. "type": "godot",
  601. "request": "launch",
  602. "scene": "current",
  603. "project": "${workspaceFolder}",
  604. "additional_options": ""
  605. }
  606. },
  607. {
  608. "label": "GDScript: Launch Pinned File",
  609. "description": "A config to launch the currently pinned scene.",
  610. "body": {
  611. "name": "GDScript: Launch Pinned File",
  612. "type": "godot",
  613. "request": "launch",
  614. "scene": "pinned",
  615. "project": "${workspaceFolder}",
  616. "additional_options": ""
  617. }
  618. }
  619. ]
  620. }
  621. ],
  622. "breakpoints": [
  623. {
  624. "language": "gdscript"
  625. }
  626. ],
  627. "viewsContainers": {
  628. "activitybar": [
  629. {
  630. "id": "godotTools",
  631. "title": "Godot Tools",
  632. "icon": "resources/godot_icon.svg"
  633. }
  634. ]
  635. },
  636. "views": {
  637. "debug": [
  638. {
  639. "id": "activeSceneTree",
  640. "name": "Active Scene Tree"
  641. },
  642. {
  643. "id": "inspectNode",
  644. "name": "Inspector"
  645. }
  646. ],
  647. "godotTools": [
  648. {
  649. "id": "scenePreview",
  650. "name": "Scene Preview"
  651. }
  652. ]
  653. },
  654. "viewsWelcome": [
  655. {
  656. "view": "activeSceneTree",
  657. "contents": "Scene Tree data has not been requested"
  658. },
  659. {
  660. "view": "inspectNode",
  661. "contents": "Node has not been inspected"
  662. },
  663. {
  664. "view": "scenePreview",
  665. "contents": "Open a Scene to see a preview of its structure"
  666. }
  667. ],
  668. "menus": {
  669. "commandPalette": [
  670. {
  671. "command": "godotTools.listGodotClasses",
  672. "when": "godotTools.context.connectedToLSP"
  673. },
  674. {
  675. "command": "godotTools.scenePreview.goToDefinition",
  676. "when": "false"
  677. },
  678. {
  679. "command": "godotTools.scenePreview.openDocumentation",
  680. "when": "false"
  681. },
  682. {
  683. "command": "godotTools.scenePreview.copyNodePath",
  684. "when": "false"
  685. },
  686. {
  687. "command": "godotTools.scenePreview.copyResourcePath",
  688. "when": "false"
  689. },
  690. {
  691. "command": "godotTools.scenePreview.openScript",
  692. "when": "false"
  693. },
  694. {
  695. "command": "godotTools.scenePreview.openScene",
  696. "when": "false"
  697. },
  698. {
  699. "command": "godotTools.debugger.editValue",
  700. "when": "false"
  701. },
  702. {
  703. "command": "godotTools.debugger.inspectNode",
  704. "when": "false"
  705. },
  706. {
  707. "command": "godotTools.debugger.refreshSceneTree",
  708. "when": "false"
  709. },
  710. {
  711. "command": "godotTools.debugger.refreshInspector",
  712. "when": "false"
  713. }
  714. ],
  715. "view/title": [
  716. {
  717. "command": "godotTools.debugger.refreshSceneTree",
  718. "when": "view == activeSceneTree",
  719. "group": "navigation"
  720. },
  721. {
  722. "command": "godotTools.debugger.refreshInspector",
  723. "when": "view == inspectNode",
  724. "group": "navigation"
  725. },
  726. {
  727. "command": "godotTools.scenePreview.lock",
  728. "when": "view == scenePreview && !godotTools.context.scenePreview.locked",
  729. "group": "navigation@1"
  730. },
  731. {
  732. "command": "godotTools.scenePreview.unlock",
  733. "when": "view == scenePreview && godotTools.context.scenePreview.locked",
  734. "group": "navigation@1"
  735. },
  736. {
  737. "command": "godotTools.scenePreview.refresh",
  738. "when": "view == scenePreview",
  739. "group": "navigation@2"
  740. },
  741. {
  742. "command": "godotTools.scenePreview.openMainScript",
  743. "when": "view == scenePreview",
  744. "group": "navigation@3"
  745. },
  746. {
  747. "command": "godotTools.scenePreview.openCurrentScene",
  748. "when": "view == scenePreview",
  749. "group": "navigation@4"
  750. }
  751. ],
  752. "view/item/context": [
  753. {
  754. "command": "godotTools.debugger.inspectNode",
  755. "when": "view == activeSceneTree",
  756. "group": "inline"
  757. },
  758. {
  759. "command": "godotTools.debugger.inspectNode",
  760. "when": "view == inspectNode && viewItem == remote_object",
  761. "group": "inline"
  762. },
  763. {
  764. "command": "godotTools.debugger.editValue",
  765. "when": "view == inspectNode && viewItem == editable_value",
  766. "group": "inline"
  767. },
  768. {
  769. "command": "godotTools.scenePreview.goToDefinition",
  770. "when": "view == scenePreview",
  771. "group": "1@1"
  772. },
  773. {
  774. "command": "godotTools.scenePreview.openDocumentation",
  775. "when": "view == scenePreview",
  776. "group": "1@1"
  777. },
  778. {
  779. "command": "godotTools.scenePreview.copyNodePath",
  780. "when": "view == scenePreview"
  781. },
  782. {
  783. "command": "godotTools.scenePreview.copyResourcePath",
  784. "when": "view == scenePreview && viewItem =~ /hasResourcePath/"
  785. },
  786. {
  787. "command": "godotTools.scenePreview.openScene",
  788. "when": "view == scenePreview && viewItem =~ /openable/",
  789. "group": "1@2"
  790. },
  791. {
  792. "command": "godotTools.scenePreview.openScript",
  793. "when": "view == scenePreview && viewItem =~ /hasScript/",
  794. "group": "1@2"
  795. },
  796. {
  797. "command": "godotTools.scenePreview.openScene",
  798. "when": "view == scenePreview && viewItem =~ /openable/",
  799. "group": "inline"
  800. },
  801. {
  802. "command": "godotTools.scenePreview.openScript",
  803. "when": "view == scenePreview && viewItem =~ /hasScript/",
  804. "group": "inline"
  805. }
  806. ],
  807. "explorer/context": [
  808. {
  809. "command": "godotTools.debugger.pinFile",
  810. "group": "2_workspace",
  811. "when": "resourceLangId in godotTools.context.sceneLikeFiles && !(resourcePath in godotTools.context.pinnedScene)"
  812. },
  813. {
  814. "command": "godotTools.debugger.unpinFile",
  815. "group": "2_workspace",
  816. "when": "resourceLangId in godotTools.context.sceneLikeFiles && (resourcePath in godotTools.context.pinnedScene)"
  817. },
  818. {
  819. "command": "godotTools.copyResourcePath",
  820. "group": "6_copypath"
  821. }
  822. ],
  823. "editor/title/run": [
  824. {
  825. "command": "godotTools.debugger.debugCurrentFile",
  826. "group": "navigation@10",
  827. "when": "editorLangId in godotTools.context.sceneLikeFiles && !isInDiffEditor && !virtualWorkspace"
  828. },
  829. {
  830. "command": "godotTools.debugger.debugPinnedFile",
  831. "group": "navigation@10",
  832. "when": "editorLangId in godotTools.context.sceneLikeFiles && !isInDiffEditor && !virtualWorkspace"
  833. }
  834. ],
  835. "editor/title": [
  836. {
  837. "command": "godotTools.debugger.pinFile",
  838. "group": "navigation@11",
  839. "when": "editorLangId in godotTools.context.sceneLikeFiles && !isInDiffEditor && !virtualWorkspace && !(resourcePath in godotTools.context.pinnedScene)"
  840. },
  841. {
  842. "command": "godotTools.debugger.unpinFile",
  843. "group": "navigation@11",
  844. "when": "editorLangId in godotTools.context.sceneLikeFiles && !isInDiffEditor && !virtualWorkspace && (resourcePath in godotTools.context.pinnedScene)"
  845. }
  846. ],
  847. "editor/title/context": [
  848. {
  849. "command": "godotTools.copyResourcePath",
  850. "group": "1_godot"
  851. },
  852. {
  853. "command": "godotTools.debugger.pinFile",
  854. "group": "1_godot",
  855. "when": "resourceLangId in godotTools.context.sceneLikeFiles && !(resourcePath in godotTools.context.pinnedScene)"
  856. },
  857. {
  858. "command": "godotTools.debugger.unpinFile",
  859. "group": "1_godot",
  860. "when": "resourceLangId in godotTools.context.sceneLikeFiles && (resourcePath in godotTools.context.pinnedScene)"
  861. }
  862. ],
  863. "editor/context": [
  864. {
  865. "command": "godotTools.switchSceneScript",
  866. "when": "editorLangId in godotTools.context.godotFiles",
  867. "group": "custom1@1"
  868. }
  869. ]
  870. }
  871. },
  872. "devDependencies": {
  873. "@types/chai": "^4.3.11",
  874. "@types/chai-as-promised": "^8.0.1",
  875. "@types/chai-subset": "^1.3.5",
  876. "@types/marked": "^4.0.8",
  877. "@types/mocha": "^10.0.6",
  878. "@types/node": "^18.19.75",
  879. "@types/prismjs": "^1.16.8",
  880. "@types/vscode": "^1.96.0",
  881. "@types/ws": "^8.5.4",
  882. "@typescript-eslint/eslint-plugin": "^5.57.1",
  883. "@typescript-eslint/eslint-plugin-tslint": "^5.57.1",
  884. "@typescript-eslint/parser": "^5.57.1",
  885. "@vscode/test-cli": "^0.0.10",
  886. "@vscode/test-electron": "^2.3.8",
  887. "@vscode/vsce": "^2.29.0",
  888. "chai": "^4.5.0",
  889. "chai-as-promised": "^8.0.1",
  890. "chai-subset": "^1.6.0",
  891. "esbuild": "^0.17.15",
  892. "eslint": "^8.37.0",
  893. "mocha": "^10.8.2",
  894. "sinon": "^19.0.2",
  895. "ts-node": "^10.9.1",
  896. "tsconfig-paths": "^4.2.0",
  897. "tslint": "^5.20.1",
  898. "typescript": "^5.2.2"
  899. },
  900. "dependencies": {
  901. "@vscode/debugadapter": "^1.68.0",
  902. "@vscode/debugprotocol": "^1.68.0",
  903. "await-notify": "^1.0.1",
  904. "global": "^4.4.0",
  905. "marked": "^4.0.11",
  906. "net": "^1.0.2",
  907. "prismjs": "^1.17.1",
  908. "terminate": "^2.5.0",
  909. "vscode-languageclient": "^7.0.0",
  910. "vscode-oniguruma": "^2.0.1",
  911. "vscode-textmate": "^9.0.0",
  912. "ws": "^8.17.1",
  913. "ya-bbcode": "^4.0.0"
  914. }
  915. }