Comments (7)
This is a case where the command did exactly what it said it would do, but not what the user wanted. The selection did not contain a newline after }
or a newline before for
, so when the code was duplicated it put those two tokens on the same line.
from roslyn.
I expected behavior similar to VS Code. After all, your file may not contain a newline at the top or bottom.
from roslyn.
I think it's reasonable to assume that if the last selected line of a multi-line selection is a non-empty line that is fully selected except for the trailing newline, the duplicated code should be placed on the line after it.
- If the selection does not span multiple lines, the additional end-of-line should not be added, even if the selection is a complete line.
- If the last line of the selection is fully-selected but empty, it means the preceding end-of-line is already selected and there is no need to add a new one.
from roslyn.
@sharwell is this us? or editor?
from roslyn.
@sharwell
After some thought, I agree with this statement:
This is a case where the command did exactly what it said it would do
The command works according to its name. Therefore, I believe that I have not defined the problem quite correctly.
I use the Edit.Duplicate
command as an analog to the editor.action.copyLinesDownAction
from VS Code. It's not exactly the same thing. Perhaps it would be better to suggest implementing another command with the required functionality. I don't know.
from roslyn.
This is implemented by vs-platform in their DuplicateSelectionCommandHandler and the corresponding implementation in EditorOperations.DuplicateSelection. It does feel like there is some room for improvement here. @olegtk -- Do you know if this is a known issue or whether we should create a bug?
from roslyn.
It's actually by design and VS Code behaves the same way (although I don't remember why).
You are supposed to select the lines including line ending like this, then it would be duplicated as you expect.
I'll reactivate the original ticket and move it to the Editor to continue the discussion, you can close this issue now.
from roslyn.
Related Issues (20)
- Precompile compile-time declared Lambda Expression. HOT 2
- Code Analysis rule CA1860 gives a biased message
- CodeGen for defaulted collection expression elements (Span via InlineArray) HOT 5
- CS7038: Failed to emit module if new collection syntax is used with an implicit ImmutableArray operator.
- IEventSymbol.DeclaringSyntaxReferences Syntax is VariableDeclaratorSyntax not EventDeclarationSyntax HOT 2
- Create LangVersion 13 HOT 5
- [Automated] PRs inserted in VS build feature.debugger.main-35027.161
- [Automated] PRs inserted in VS build main-35027.32
- Roslyn wrote incorrect timedatestime to PE Coff Header of a .Net 8.0 program file HOT 2
- IDE0304 should preserve the leading comment HOT 5
- Support limiting CS1591 to certain members
- [Automated] PRs inserted in VS build main-35028.101
- IDE0161 - Convert to file-scoped namespace reported on files with global namespace type declarations
- Rename 'class1' to 'Class1' lingers after IDE1006 fixer
- IDE0059 is not raised inside a code block with using keyword.
- Go To Definition on external package only works as expected the very first time HOT 1
- Partial properties needs to enforce that all implementation part accessors have bodies
- Suppress No Longer Showing in Error List HOT 2
- [Automated] PRs inserted in VS build feature.debugger.main-35101.127
- Duplicate item metadata present in generated editorconfig with CompilerVisibleItemMetadata HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from roslyn.