PowerShellEditorServices icon indicating copy to clipboard operation
PowerShellEditorServices copied to clipboard

Feature Request: Add ability to change the language through $psEditor

Open corbob opened this issue 4 years ago • 2 comments

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-IntuneDetectionScript and output it into a new editor window. I found that I could do this with Out-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:

  1. Add a Out-NewFile function that does what Out-CurrentFile -AsNewFile currently does, only it doesn't do the herestring.
  2. Assuming it's not too much work: add a -Language parameter to Out-NewFile that 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 markdown

I'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)

corbob avatar Aug 07 '21 23:08 corbob

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.

andyleejordan avatar Sep 09 '21 23:09 andyleejordan

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. 2021-09-28_18-27-37 (1)

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 😁

corbob avatar Sep 29 '21 01:09 corbob