Skip to content

gwicksted/paste-escaped

Repository files navigation

Paste Escaped

TypeScript Semantic Paste

(escapes pasted text based on where the cursor is positioned)

paste-escaped

Install

Windows / Linux Mac
ctrl+shift+x cmd+shift+x
  • Type Paste
  • Find Paste Escaped
  • Click the Install button
  • Click the Reload button

Usage

Paste with semantic escaping (TypeScript files only)

Windows / Linux Mac
ctrl+shift+v cmd+shift+v

Undo semantic escaping

Windows / Linux Mac
ctrl+z cmd+z
  • Press once to undo the escaping (leaving you with the raw clipboard text).

  • Press a second time to undo the entire paste operation.

Command Pallette

Windows / Linux Mac
ctrl+shift+p cmd+shift+p
  • Type Paste
  • Select the option Paste: Escaped

Features

Escapes clipboard text in the following scenarios with | being the cursor position:

✔️ const test = `|`;

✔️ const test = "|";

✔️ const test = '|';

✔️ const test = /|/g;

✔️ const test = 123; // |

✔️ const test = /* | */ 123;

👌 any.other.code | (no escaping)

How it works

Text in clipboard:

📋

<text property="${donteval}" folder="C:\temp"/>
<name first='John\`s' last="Tools"/>`

Example 1. Pasting into template

const abc = ``;

Result (without extension) 👎

const abc = `<text property="${donteval}" folder="C:\temp"/>
<name first='John`s' last="Tools"/>`;

⚠️ Considers ${donteval} a template variable (may not be intentional)

✖️ Replaces \t in the C:\\temp path with a literal TAB

✖️ Breaks the string immediately following John causing compilation errors

Result (with extension) 👍

const abc = `<text property="\${donteval}" folder="C:\\temp"/>
<name first='John\`s' last="Tools"/>`;

✔️ The ${donteval} exists as verbatim text and will not look for a variable named donteval

✔️ Does not replace part of the path with a TAB

✔️ The string ends where expected 😲

Example 2.

const def = "";

Result (without extension) 👎

const def = "<text property="${donteval}" folder="C:\temp"/>
<name first='John`s' last="Tools"/>"

✖️ Breaks the string immediately following property= (and several other places) causing compilation errors

✖️ Adds a line break causing additional compilation errors

✖️ Replaces \t in the C:\\temp path with a literal TAB

Result (with extension) 👍

const def = "<text property=\"${donteval}\" path=\"C:\\temp\"/>\n<name first='John`s' last=\"Tools\"/>";

✔️ Escapes all quotes and backslashes (\)

✔️ Escapes the line break with \n (or \r\n if that were on the clipboard)

✔️ The string ends where expected

License

MIT

About

VS Code Paste into a string with proper escaping

Resources

License

Stars

Watchers

Forks

Packages

No packages published