PowerShellEditorServices
PowerShellEditorServices copied to clipboard
Feature Request: Add ability to change the language through $psEditor
After some contemplation, I've realized there's no need to make a request to change/add to the PSES module, as I can just do it in my profile. However, what I would like to see is the ability to change the language (likely with a SetLanguage() method on one of the objects somewhere).
Would there be appetite for adding this in at some point? I understand the PowerShell team is busy on other areas of the codebase and I don't want to put forward a suggestion of anything that might set back that work or unnecessarily distract from it.
What I would like to see is the ability to run something like: $psEditor.GetEditorContext().CurrentFile.SetLanguage('markdown') and have the current file's language mode set to markdown.
Original request here for posterity:
I'm not entirely sure the best place for this, I found this when working on some things in vscode, but the underlying behaviour is in the PSES module, but also some of it depends on vscode... So I'll start it over here and it can be moved if needed.
I was doing some stuff in vscode, and I found myself with the need to take the output of my function
Get-IntuneDetectionScriptand output it into a new editor window. I found that I could do this withOut-CurrentFile -AsNewFile, however this output as a herestring. Thinking about this, I believe the reason is that typically when outputting to the current file this behaviour makes sense. However, in my opinion when outputting to a new file this doesn't make sense.Based on my use case, I'd like to make two feature requests:
- Add a
Out-NewFilefunction that does whatOut-CurrentFile -AsNewFilecurrently does, only it doesn't do the herestring.- Assuming it's not too much work: add a
-Languageparameter toOut-NewFilethat takes in the language for the new file and sets it.
- This is the part I'm not sure on complexity-wise. Setting the language in typescript is a minor adjustment
With these suggestions you could do things like:
Get-IntuneDetectionScript "Whatever App" | Out-NewFile -Language powershell Get-IntuneAppDescription "Whatever App" | Out-NewFile -Language markdownI've got a branch that includes the first feature request over here: https://github.com/corbob/PowerShellEditorServices/tree/out-newfile (To see the changes, they're all (currently) encapsulated in a single commit: https://github.com/corbob/PowerShellEditorServices/commit/3c33c968a03348f8678a3d45b1841250710ea055)
I think this would be very cool, and am quite open to updating and improving the psEditor APIs. However, you're right, I don't think we should do this until we've finished the pipeline project and the tests project, as the former is a large churn of the codebase and the latter will help us ensure we don't introduce (yet more) regressions.
Good news... There is a feature in code that mostly does this... https://visualstudiomagazine.com/articles/2021/09/07/vs-code-aug21.aspx
Here's a gif of a fresh install of vscode stable with the stable PowerShell extension opening a new file with the code of the Out-CurrentFile command. If you look closely at the bottom right, you'll see it start as Plain Text when the file opens, then change to PowerShell.

I still think being able to programatically change the current file from PowerShell would be beneficial, but my main use case was in new files which it seems code has added for me 😁