Fork me on GitHub

How do I get the updated document after running a command in vscode?

const activeTextEditor = vscode.window.activeTextEditor;
const document = activeTextEditor.document;
console.log("before: ", document.lineAt(line).text.length);
await executeCommand("calva-fmt.formatCurrentForm");
console.log("after: ", document.lineAt(line).text.length);
Before and after are the same all the time. I don't get the new stuff. PS: not sure where's a good place to ask this. is silent.


This is a fine place to ask (even if I get a lot of help in that slack team, in the #vscode-extension-dev channel). I’m not sure what’s going on in your code there, but maybe you get the new document with the promise resolution? So what happens if instead of await you slap a .then(doc => … on the executeCommand call?


I don’t know if you know, but anyway, an extension can expose an API to other extensions. So if there are functions/methods/info you want access to we can consider exposing them. It will of course need to be with great care we expose such an API, but the option is there. You can experiment with it at least by building your own Calva VSIX (I’m not sure how you would do it from the dev extension host when there are two extensions involved, or even if it’s possible).


.then same story; something immutable involved with that document be nice having paredit functions exposed by extension, yes; I'll do dev thing see what gives thank you!


Probably the promise resolves earlier than what you need.

🎯 3

I probably missed the async; seems it works now.

clyfe15:01:48 killSpaceBackward aka "the new backspace", takes your sexps to the finish-line directly, no more delete space by space (but we need to expose fmt fns in the extension api first - pr incoming; also: some refactoring required there)


Just to manage expectations. We will have to think very carefully before exposing any API from Calva. PR welcome, but it will take some serious pondering on our side.

👍 3

Hi all, is there a way to interrupt an evaluation?


That's a Calva command for it you can find in the command palette


Search "interrupt"


I tried it, but it doesn't seem to stop the deluge of stuff being written onto the output buffer 😆


Hmm, I think that command may not solve all situations like that. Feel free to create an issue for your situation with repro steps


Can't guarantee we can fix, but worth a look


Thanks! I'll see first if I can find a workaround other than quitting vscode 😆


If it's not completely frozen you can try killing the repl at the terminal. If that doesn't work you can try the "Developer: Reload Window" command to make restarting it easier at least


Got it, thanks!


So, the output window queues up prints and because reasons prints them quite slowly. So it can keep printing for quite long after you have interrupted a command… Maybe there is something we could do about it….


I imagine the printing is throttled so that it doesn't interfere with the responsiveness of the rest of the app. If this were implemented with core async (it probably isn't 😆 ) simply closing the channel should cancel the rest of the queue.


This is TypeScript and promises. 😃 Would be nice to just close a channel. Maybe we can achieve that somehow…


The printing isn't intentionally throttled, it's just that the applyEdit function of the vs code api is async and a bit slow, and if we don't ensure one prints before the previous, we get issues.


But anyway, I think we can clear the queue pretty easily, it's just an array


It seems you've put in quite a bit of hammock time on this! Would I be correct in my understanding that repro steps are no longer necessary?


If you wouldn't mind creating an issue about the printing after interruption, that would be great so we can track it for later, and remember who brought it up, in case we can't repro or would like some info/help. simple_smile


Can't say I'll get to it soon though


No problem! I'm in no hurry. I'll make the issue, and try to summarize what you've said here.


Here it is! Please correct me if I made a mistake anywhere


not sure what I broke but I can't send anything to the calva repl; tried all the tricks, downgrade, delete caches, restart...


Is there a log of sorts somewhere to look at?


What do you mean by “send to the calva repl”?


See if the vscode dev console has any clues. (I think you access it from the Help menu).


> console.ts:137 [Extension Host] Unhandled error: e.trim is not a function That pops when I type enter in the repl after a form


> [Extension Host]% [] and that when I type a character in the repl


> console.ts:137 [Extension Host] (node:11997) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead. Can't tell if it's calva where this originates


That Buffer warning is a vscode thing, I think.


The other ones I do not think stem from Calva. I don’t get them, at least.


Buffer stuff is from Calva, by elimination. Disable calva -> no Buffer err Enable calva -> Buffer err


It has been there since forever anyway. 😃 I probably have some other extension that causes it, because disabling Calva does not get rid of it for me. In any case it is probably not what is causing you problems.


Works now, dunno why, it's the ~27th time I try...


Super weird. And worrying….


Calva works when I disable ego-digital.vscode-powertools extension. These 2 don't get along - they were this morning.


We did release a new Calva today, see if that changed anything?


same on 2.0.151; very strange; I'll try to replace powertools with something; most likely make my own extension calva-extras instead these scripts.


Often called Calvados Extra, so just dropping the trailing s would fit the metafor.


Calva version 2.0.152 is released with the following changes 🎉 calva • Fix: