Open FH-Inway opened 1 month ago
Seeing same issue with PowerShell cells.
The state of the current PowerShell instance is not valid for this operation.
I downgraded to a few versions back to 1.0.4403* and saw similar results, though in the current version the save file retains the notebook level metadata, in those older versions even that would go away.
Since this keeps bugging me, a few more observations:
"languageId": "polyglot-notebook"
in the metadataI could keep going with all kinds of weird results, some reproducible, some not (at one time, I had a markdown cell with csharp language in the metadata). It seems every variation of sequence when a notebook is saved, when and where a new cell is added, when the cell is executed, ... results in a different outcome. Though none of the outcomes so far result in the expected behavior, that a new code cell is created as a fsharp cell. This makes it an inconsistent and frustrating user experience.
I'm now on the following version of .NET Interactive: Version: 1.0.526301+dd3fefb929d456fa10b0b9f7e0b2c65f6cfbee93 Library version: 1.0.0-beta.24263.1+dd3fefb929d456fa10b0b9f7e0b2c65f6cfbee93 Build date: 2024-06-22T11:52:32.3437483Z
Still Windows 11, Edge and VSCode.
This bug is because when you click "+ code" to create a cell, the "metadata" field inside the json is not populated, so the cell is parsed as C# by default.
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"ename": "Error",
"evalue": "(1,10): error CS1002: ; expected",
"output_type": "error",
"traceback": [
"(1,10): error CS1002: ; expected"
]
}
],
"source": [
"let y = 5"
]
}
If I manually re-select the "fsharp" language in the bottom right of the code sell, the metadata gets set and I can run the code using the F# kernel.
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"dotnet_interactive": {
"language": "fsharp"
},
"polyglot_notebook": {
"kernelName": "fsharp"
}
},
"outputs": [],
"source": [
"let y = 15"
]
}
Thanks, that is the workaround I currently use. I hope we agree that this should not be the normal workflow for a user.
Describe the bug
I mainly write notebooks for F# and PowerShell, with the occasional C# cell in the mix. The default notebook language setting is set to fsharp.
The last few times I worked with the notebooks, I noticed that new code cells show in the top bottom corner my default language setting "fsharp - F# Script Code". However, if valid F# code is entered in the cell, it gets a lot of red squiggles (screenshot 1). When executing the cell, there are a lot of CS errors, indicating that the code is treated as C# (screenshot 2).
When I open the notebook in a text editor, I see that the metadata node of the cell is empty. Other working cells have metadata indicating F# in there (screenshot 3). See also a gist of the file in that state: https://gist.github.com/FH-Inway/34984cfacc39b27e206873048a16fb3e?short_path=51a4666
When I explicitely set the code cell via the language selector in the bottom right corner to F#, all is well again.
When I close a notebook with such an "invalid" cell, it is opened again right away, showing unsaved changes. The cell can now be executed successfully and after saving the file, the cell shows F# metadata.
Please complete the following:
Which version of .NET Interactive are you using? (In a notebook, run the
#!about
magic command. ): Version: 1.0.522904+cdfa48b2ea1a27dfe0f545c42a34fd3ec7119074 Library version: 1.0.0-beta.24229.4+cdfa48b2ea1a27dfe0f545c42a34fd3ec7119074 Build date: 2024-05-05T09:37:02.5479468ZScreenshots
Related issues
3263 Polyglot Notebook: [DevExE2E][Regression] The kernelName and language show as csharp in the created Untitled-1.ipynb contents.
3480 Default language not applied after open an python ipynb file