Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basic refactoring features #4999

Closed
2 tasks done
silverqx opened this issue May 30, 2024 · 8 comments
Closed
2 tasks done

Basic refactoring features #4999

silverqx opened this issue May 30, 2024 · 8 comments
Labels
Issue-Enhancement A feature request (enhancement). Needs: Triage Maintainer attention needed!

Comments

@silverqx
Copy link

silverqx commented May 30, 2024

Prerequisites

  • I have written a descriptive issue title.
  • I have searched all issues to ensure it has not already been reported.

Summary

I would like to see basic refactoring features like renaming local variables and if possible renaming global variables and function names using Language Server Protocol and integrated with refactor features provided by vscode.

Would be awesome to have at least these.

Proposed Design

No response

@silverqx silverqx added Issue-Enhancement A feature request (enhancement). Needs: Triage Maintainer attention needed! labels May 30, 2024
@JustinGrote
Copy link
Collaborator

Dupe of #261

In short, this is very difficult because PowerShell is not a statically typed or scoped language. We hope to explore a limited scope of rename but it would need to be known it will be opt-in with shortcomings with a warning. See more detail on that issue.

@silverqx
Copy link
Author

silverqx commented May 30, 2024

I saw #261, at least renaming a local variable inside functions or inside the closest scope shouldn't be a problem, vscode API provides registerRenameProvider a little described here (this page also contains other info about renaming, search: "rename") and in deep described here and here.

Have you tried these APIs? They are supposed exactly for this purpose. You can use these APIs since this extension uses LSP.

@silverqx
Copy link
Author

Practically, you don't have to do anything, everything is done inside LSP, it looks like all you need to do is consume and implement these APIs and interfaces to provide rename functionality for this extension. What means you don't have to code the renaming feature from the ground up.

@JustinGrote
Copy link
Collaborator

"Practically, you don't have to do anything, everything is done inside LSP"

And who do you think writes the LSP? 😁
https://github.com/PowerShell/PowerShellEditorServices

There is no rename functionality implemented in the LSP (PSES) as of yet. That's the primary first task that must occur before it can be wired up in the frontend extension. Issues for PSES are usually first tracked here as it's where most people first look, but the two are developed mostly in tandem (VSCode being the "primary" consumer of PSES, but there's other editors too (neovim, atom, etc.)

@silverqx
Copy link
Author

silverqx commented May 31, 2024

What means you don't have to code the renaming feature from the ground up.

It looks like that is the exact opposite of what I wrote. 😎🙃 You will have to code everything yourself. I have found PowerShell/PowerShellEditorServices#2152 and also #4950, it looks like one year of hard work, what is the state of this PR, will be merged soon or it's still in the early stages?

@silverqx
Copy link
Author

Code quality looks good with a lot of tests.

@JustinGrote
Copy link
Collaborator

As I recall there are several edge cases this doesn't handle, so we were going to need to surface an opt-in to warn users about the potential perils of using this feature. @andyleejordan can elaborate, but I recommend continued discussion happen on the PR or issue and not on this dupe.

@silverqx
Copy link
Author

Ok, I'm going to sleep because I'm in half suspend mode already, writing with one eye already closed, thx for replies, I will dream about renaming in pwsh 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Issue-Enhancement A feature request (enhancement). Needs: Triage Maintainer attention needed!
Projects
None yet
Development

No branches or pull requests

2 participants