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

Copy/Cut then Paste doesn't preserve or fix indentation #6392

Closed
alx-so opened this issue May 16, 2016 · 30 comments
Closed

Copy/Cut then Paste doesn't preserve or fix indentation #6392

alx-so opened this issue May 16, 2016 · 30 comments
Assignees
Labels
editor-autoindent Editor auto indentation issues feature-request Request for new features or functionality on-testplan
Milestone

Comments

@alx-so
Copy link

alx-so commented May 16, 2016

  • VSCode Version: 1.1.0
  • OS Version: Windows 10 Enterprise

Steps to Reproduce:

  1. Copy some divs code in html (with any method "Ctrl + C || Right Click")
  2. Then paste inside other divs

Always have to fix intentation after pasting some code.

Experiencing the same behaviour for css and js.

@wxkin
Copy link

wxkin commented May 16, 2016

Have you tried to copy/paste it from/at the start of the line?
div_html

@alx-so
Copy link
Author

alx-so commented May 17, 2016

@wxkin I think it would be inconvenient to always target beggining of the line as you add new, hitting the "enter".

@alexdima alexdima added the feature-request Request for new features or functionality label May 23, 2016
@alexdima
Copy link
Member

This sounds like you would want some sort of format on paste.

@Instagit
Copy link

Instagit commented Sep 15, 2016

Having to fix the indentation characters after copy/pasting is really annoying. When you forget it, you end up with a file with mixed indentation. Other editors don't have this problem.

This sounds like you would want some sort of format on paste.

Applying the file's current indentation format to pasted contents would be great.

@alanwei0
Copy link

i need this feature too, just like the "paste and indent" function in sublime with ctrl + cmd + v

@rubymaniac
Copy link

This is a very basic feature to have. Is there any specific reason this hasn't been implemented yet?

@alexdima
Copy link
Member

@rubymaniac The indentation rules we have at our disposal are fuzzy and there are a plethora of languages where they're incorrectly defined. e.g.

if (true)
    return 5; // <-- you probably would like this line to be indented

switch (a) {
    case 5:
        return 5; // <- same here
     default:
        return 6; // <- same here
}

You will find that these cases do not work correctly in vscode today when pressing Enter and there are probably many languages besides js that have this problem.

Now imagine pasting in proper indented code and the editor indenting it in a wrong way. You would be much more upset than the lack of the auto-indent. That's why I try to take the discussion towards format on paste, as formatting is something that can be provided by a language server, and is not language agnostic (like the indentation rules).

@rubymaniac
Copy link

@alexandrudima yes I completely agree with what you say about the fuzziness of the indentation rules. However I usually find myself to copy correctly indented code from one place to another with a different offset and VSCode is not adjusting the indentation to the new offset and I always have to do this manually.

For that reason I made a little extension that tries to adjust the offset of the indentation to where the cursor is when you are pasting code.

@alexdima
Copy link
Member

Aha, so you would expect that the pasted code is treated as one blob and indented/unindented as a single blob (all lines the same amount). Makes sense to me.

That would reduce the risk of messing it up, although we'd still need to do per-line adjustments (i.e. detect that the pasted code is indented with spaces@2 meanwhile the file is indented with tabs, etc.).

@rubymaniac
Copy link

@alexandrudima Exactly what I am saying. The per-line adjustments are crucial in order to do it properly. For what it's worth in the extension I wrote I am making per-line adjustments.

Although the problem is solved (at most cases) through the extension, I feel that this should be native functionality (or at least configurable through preferences).

@MacKentoch
Copy link

No news?

It is a core functionality to be able to copy/paste without indentation surprises.

VSCode is awesome but I may go back Atom just because of that.
I loose time fixing indentation after a copy/paste...

@alexdima
Copy link
Member

@rebornix Has just implemented editor.formatOnPaste, so if you are in a language that supports format, the format will be invoked on the pasted content.

@alexdima alexdima added this to the Backlog milestone Jan 21, 2017
@alexdima alexdima removed their assignment Jan 21, 2017
@martin-sweeny
Copy link

@alexandrudima To be honest, editor.formatOnPaste is not a good replacement for the requested functionality. I'll try to provide some examples as I see them, but I had to turn it off because it was ruining much of my code.

@adrientetar
Copy link

adrientetar commented Apr 22, 2017

I'm using Python and I turned on formatOnPaste but that runs autopep8 and I don't want my code wrapped, just indented to fit the paste location. [That's a thing I miss since switching over from Atom.]

@rebornix rebornix added the editor-autoindent Editor auto indentation issues label May 2, 2017
@rebornix rebornix self-assigned this May 2, 2017
@alexdima alexdima self-assigned this Jun 1, 2017
@ZeroVa
Copy link

ZeroVa commented Jun 4, 2017

last night i dreamt that this worked

@hustcer
Copy link

hustcer commented Jun 4, 2017

@ZeroVa You really have a sweet dream. 😆

@MatrixV01
Copy link

This is another really seemingly minor thing that should just work in VS Code. May also revert to Atom. Death by a 1000 paper cuts with VS Code as much as I want to like it.

@rebornix rebornix modified the milestones: June 2017, Backlog Jun 19, 2017
@rebornix
Copy link
Member

Already added this feature in Insider.

@Skura23
Copy link

Skura23 commented Jul 31, 2017

I find a extension might do this trick:
pase-and-indent extension
I changed ctrl+shift+v of its example configure binds into alt+z, and alt+z works.

@neerolyte
Copy link

Should pasting without horrible indentation be working in 1.16.0 ?

@ejochens
Copy link

I found that hitting CTRL-Z (undo) after CTRL-V (paste) fixes the indentation. Faster to fix, but what extra step is taking place that the CTRL-Z has to undo it? The auto-indent?

@neerolyte
Copy link

neerolyte commented Sep 21, 2017

@ejochens Nice, that does work.

I logged #34424 as I'm guessing this issue won't be responded to (despite being broken) because it's closed.

@zigang93
Copy link

need cmd + Z to fix the indentation too.. any update for this bug?

@zaclem01
Copy link

Just to drop in my experience, the indention will very occasionally work correctly on paste, but for the most part, I have to use CTRL + Z to get it to the correct level. It seems like it is doing some kind of two step process. I've disabled all my formatting and beautify extensions as well, so it appears to be native.

@Arnique
Copy link

Arnique commented Oct 13, 2017

CTRL + Z works like magic! This particular bug, although minor, can drive you mad if you work with lots of Html code. In fact I've been fighting with this bug for 2 months and couldn't take it any longer! TBH I don't know how other front end devs cope with this vcode peculiarity. Anyway, I'm just glad I landed here coz I've finally found a temporary fix.

Loving the progress of vscode in 2017 though, so even if minor issues like this still exist, I say to you, "Keep up the good work!"

@ganchuhang
Copy link

ganchuhang commented Oct 23, 2017

@rebornix THANKS! Yes, it is now added it in insider.

Instruction:
Ctrl + , then "editor.formatOnPaste": true property in settings.

@taalas
Copy link

taalas commented Oct 27, 2017

Still not sure what is happening tbh.

When pasting HTML code indentation is almost always incorrect. CTRL-Z fixes this. What is doing the additional step when pasting?

In regards to the new parameter "editor.formatOnPaste": Should it be true (because it needs a third formatting step) or should it be false (because the mysterious second step will be skipped)?

@jlock64
Copy link

jlock64 commented Oct 27, 2017

What worked for me was downloading the extension "Paste and Indent" and once enabled going to my "user settings" ( shortcut CTRL + , ) and pasting in "pasteAndIndent.selectAfter": true into your custom settings.

FYI, "editor.formatOnPaste": true, was not working so I pasted the new PasteAndIndent rule after this

Hope that helps. This was driving me nuts

vscode custom settings

@ericis
Copy link

ericis commented Oct 31, 2017

I get this in Typescript, which I thought VSCode focused on as a primary language. An issue since May 16, 2016? Yikes... (people still commenting with this as an issue and it's closed?)

Steps to reproduce:

  1. Copy-Paste a block of callbacks
  2. VSCode automatically indents the pasted code past the start of the copied block

Expected
VSCode pastes the code at exactly the same indentation as the copied block

Versions
VSCode v1.17.2
Windows 10 Pro

.editorconfig

root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

./.vscode/settings.json

{
    "files.eol": "\n"
}

@yveslange
Copy link

yveslange commented Nov 15, 2017

Installing pasteAndIndent and adding "pasteAndIndent.selectAfter": true to the config works

@vscodebot vscodebot bot locked and limited conversation to collaborators Nov 17, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
editor-autoindent Editor auto indentation issues feature-request Request for new features or functionality on-testplan
Projects
None yet
Development

No branches or pull requests