loganch/AutoIt-VSCode

onDidChangeVisibleTextEditors runtime errors

Danp2 opened this issue · 4 comments

Danp2 commented

The changes made in 2ab9aeb result in a runtime error --

2023-03-29 10:48:31.006 [error] TypeError: Cannot read properties of undefined (reading 'call')
	at f.invoke (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:145)
	at m.deliver (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:2066)
	at d.fire (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:1704)
	at c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:98:153994
	at f.invoke (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:145)
	at m.deliver (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:2066)
	at d.fire (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:1704)
	at m.acceptDocumentsAndEditorsDelta (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:98:13859)
	at m.$acceptDocumentsAndEditorsDelta (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:98:12249)
	at a.N (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:106:11223)
	at a.M (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:106:10941)
	at a.H (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:106:10034)
	at a.G (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:106:9015)
	at c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:106:7803
	at f.invoke (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:145)
	at m.deliver (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:2066)
	at d.fire (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:1704)
	at p.fire (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:72:14907)
	at c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:122:16556
	at f.invoke (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:145)
	at m.deliver (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:2066)
	at d.fire (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:63:1704)
	at p.fire (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:72:14907)
	at MessagePortMain.<anonymous> (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:122:14682)
	at MessagePortMain.emit (node:events:526:28)
	at MessagePortMain._internalPort.emit (node:electron/js2c/utility_init:5:364)

Changing this line

window.onDidChangeVisibleTextEditors(trimOutputLines());
to

window.onDidChangeVisibleTextEditors(() => { trimOutputLines() }); eliminates this error.

Two questions --

  • Can someone explain why the original method causes an error?
  • I've seen examples where this event is being added to the subscriptions array. Is this needed here?

Hmmmm, for window.onDidChangeVisibleTextEditors, the first parameter is a listener, which means that VSCode expects the parameter to return a function for it to call when the event happens. Setting the parameter to be trimOutputLines() directly means that when the event happens, VSCode attempts to call undefined -- the "nothing" that trimOutputLines() is currently built to return.

vanowm commented

Ummm...trimOutputLines should be passed to window.onDidChangeVisibleTextEditors not executed...:

 window.onDidChangeVisibleTextEditors(trimOutputLines); 

No need for an extra wrapper.

Ah, so my inclusion of the parens was the mistake?

vanowm commented

Yes, you basically executed the function one time instead of letting window.onDidChangeVisibleTextEditors execute it each time output console changed.