From e90193cf04e76f26925f0aaef0cef5cf90f3eb20 Mon Sep 17 00:00:00 2001 From: cinnamon-msft Date: Wed, 1 Apr 2020 11:22:30 -0700 Subject: [PATCH 01/11] spec for html copy --- doc/specs/#4191 - Formatted Copy/spec.md | 80 ++++++++++++++++++ .../#4191 - Formatted Copy/twitter-poll.png | Bin 0 -> 61465 bytes 2 files changed, 80 insertions(+) create mode 100644 doc/specs/#4191 - Formatted Copy/spec.md create mode 100644 doc/specs/#4191 - Formatted Copy/twitter-poll.png diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md new file mode 100644 index 00000000000..d42669b8d77 --- /dev/null +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -0,0 +1,80 @@ +--- +author: Kayla Cinnamon @cinnamon-msft +created on: <2020-04-01> +last updated: <2020-04-01> +issue id: <#4191> +--- + +# Formatted Copy + +## Abstract + +When copying text, the Terminal should provide the option of including formatting. Not all apps that receive text allow for picking which format you want when pasting. The default should be to only copy plain text, based on the response from this poll on Twitter. + +![Twitter poll](twitter-poll.png) + +## Solution Design + +Solutions for the right click behavior and user settings are described below. + +### Right click behavior + +Be default, right clicking to copy would only copy the plain text. If the user would like to copy the formatting, they can hold `alt` and right click (this behavior is the same in conhost). + +### Settings option 1 - global setting + +We could have a global setting that adds the formatting when the user copies. When set, this would change the right click behavior. + +### Settings option 2 - key binding argument + +We could add an argument to the `copy` key binding to allow for formatted copying when the user chooses to do so. + +## UI/UX Design + +### Settings option 1 - global setting + +a. The user could list which kinds of formats they want included when they copy. When right clicking, they would copy with these formats. If this is set to something other than `plain`, holding `alt` and right clicking would copy plain text. + +`"copyFormats": "html,rtf,plain"` + +b. We could also just combine html and rtf into a single boolean. Users would either get plain text only (`false`) or all formatting (`true`) onto their clipboard. If this is set to `true`, the default right click behavior is reversed: right clicking copies the formatting and holding `alt` copies only the plain text. + +`"copyFormatting": true` + +### Settings option 2 - key binding argument + +a. Just like the the `trimWhitespace` argument you can add to the `copy` key binding, we could add one for text formatting. + +`{"command": {"action": "copy", "keepFormatting": true}, "keys": "ctrl+a"}` + +b. We could also split out the html and rtf formats. + +`{"command": {"action": "copy", "formats": "rtf,html,plain"}, "keys": "ctrl+a"}` + +## Capabilities + +### Accessibility + +This shouldn't affect accessibility. + +### Security + +This does not affect security. + +### Reliability + +This does not affect reliability. + +### Compatibility + +This breaks the existing behavior of always copying the formatting. The justification for breaking this default behavior is in the response from the community saying the default should be plain text only. + +### Performance, Power, and Efficiency + +## Potential Issues + +One possible issue is that discovering how to copy the formatting might be difficult to find. We could mitigate this by adding it into the settings.json file and commenting it out. + +## Future considerations + +## Resources diff --git a/doc/specs/#4191 - Formatted Copy/twitter-poll.png b/doc/specs/#4191 - Formatted Copy/twitter-poll.png new file mode 100644 index 0000000000000000000000000000000000000000..8d9e50dd80dd7dc6ffd9366b4f6a77c0e0e1febf GIT binary patch literal 61465 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 b%H0xd#|SKt2Gj9806t1@)a1%!OoILw+K^WI literal 0 HcmV?d00001 From b6916665871d925f943dd344cf2d7dcaad312557 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon <48369326+cinnamon-msft@users.noreply.github.com> Date: Wed, 1 Apr 2020 14:23:20 -0700 Subject: [PATCH 02/11] Update doc/specs/#4191 - Formatted Copy/spec.md Co-Authored-By: Carlos Zamora --- doc/specs/#4191 - Formatted Copy/spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index d42669b8d77..b8446f34f2a 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -27,7 +27,7 @@ We could have a global setting that adds the formatting when the user copies. Wh ### Settings option 2 - key binding argument -We could add an argument to the `copy` key binding to allow for formatted copying when the user chooses to do so. +We could add an argument to the `copy` key binding argument to allow for formatted copying when the user chooses to do so. ## UI/UX Design From fa1e65b690338b7c27327e9788fb395e75ccf8ff Mon Sep 17 00:00:00 2001 From: cinnamon-msft Date: Wed, 1 Apr 2020 16:19:40 -0700 Subject: [PATCH 03/11] addressed feedback --- doc/specs/#4191 - Formatted Copy/spec.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index d42669b8d77..482fdb12a6f 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -35,7 +35,7 @@ We could add an argument to the `copy` key binding to allow for formatted copyin a. The user could list which kinds of formats they want included when they copy. When right clicking, they would copy with these formats. If this is set to something other than `plain`, holding `alt` and right clicking would copy plain text. -`"copyFormats": "html,rtf,plain"` +`"copyFormats": ["html","rtf","plain"]` b. We could also just combine html and rtf into a single boolean. Users would either get plain text only (`false`) or all formatting (`true`) onto their clipboard. If this is set to `true`, the default right click behavior is reversed: right clicking copies the formatting and holding `alt` copies only the plain text. @@ -43,13 +43,13 @@ b. We could also just combine html and rtf into a single boolean. Users would ei ### Settings option 2 - key binding argument -a. Just like the the `trimWhitespace` argument you can add to the `copy` key binding, we could add one for text formatting. +a. Just like the the `trimWhitespace` argument you can add to the `copy` key binding, we could add one for text formatting. This would not change the right click behavior. `{"command": {"action": "copy", "keepFormatting": true}, "keys": "ctrl+a"}` -b. We could also split out the html and rtf formats. +b. We could also split out the html and rtf formats. The right click behavior would still stay as default. -`{"command": {"action": "copy", "formats": "rtf,html,plain"}, "keys": "ctrl+a"}` +`{"command": {"action": "copy", "formats": ["html","rtf","plain"]}, "keys": "ctrl+a"}` ## Capabilities @@ -77,4 +77,6 @@ One possible issue is that discovering how to copy the formatting might be diffi ## Future considerations +We could add the option we don't include later if people want it. For example, if we ship a global setting now, we could ship a key binding later that lets you choose how you want to copy, and vice versa. + ## Resources From 43a052246548bbe1f6362ad577972addb94d8011 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon <48369326+cinnamon-msft@users.noreply.github.com> Date: Mon, 6 Apr 2020 10:44:38 -0700 Subject: [PATCH 04/11] Update doc/specs/#4191 - Formatted Copy/spec.md Co-Authored-By: Josh Soref --- doc/specs/#4191 - Formatted Copy/spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index 0e726dff9b6..1c0c4ce1d4a 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -19,7 +19,7 @@ Solutions for the right click behavior and user settings are described below. ### Right click behavior -Be default, right clicking to copy would only copy the plain text. If the user would like to copy the formatting, they can hold `alt` and right click (this behavior is the same in conhost). +By default, right clicking to copy would only copy the plain text. If the user would like to copy the formatting, they can hold `alt` and right click (this behavior is the same in conhost). ### Settings option 1 - global setting From fce8895a37f8b3ac5c4c4a44c2af00940876aa06 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon <48369326+cinnamon-msft@users.noreply.github.com> Date: Mon, 6 Apr 2020 10:44:50 -0700 Subject: [PATCH 05/11] Update doc/specs/#4191 - Formatted Copy/spec.md Co-Authored-By: Josh Soref --- doc/specs/#4191 - Formatted Copy/spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index 1c0c4ce1d4a..98201c0fa90 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -43,7 +43,7 @@ b. We could also just combine html and rtf into a single boolean. Users would ei ### Settings option 2 - key binding argument -a. Just like the the `trimWhitespace` argument you can add to the `copy` key binding, we could add one for text formatting. This would not change the right click behavior. +a. Just like the `trimWhitespace` argument you can add to the `copy` key binding, we could add one for text formatting. This would not change the right click behavior. `{"command": {"action": "copy", "keepFormatting": true}, "keys": "ctrl+a"}` From 7f62273e91b929cf0149b814d506177981479dfd Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon <48369326+cinnamon-msft@users.noreply.github.com> Date: Mon, 6 Apr 2020 10:45:03 -0700 Subject: [PATCH 06/11] Update doc/specs/#4191 - Formatted Copy/spec.md Co-Authored-By: Josh Soref --- doc/specs/#4191 - Formatted Copy/spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index 98201c0fa90..d5ffa49dd2c 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -67,7 +67,7 @@ This does not affect reliability. ### Compatibility -This breaks the existing behavior of always copying the formatting. The justification for breaking this default behavior is in the response from the community saying the default should be plain text only. +This breaks the existing behavior of always copying the formatting. The justification for breaking this default behavior is in response to the community saying the default should be plain text only. ### Performance, Power, and Efficiency From fb5ddc26e949b27f832914f218e169761594590a Mon Sep 17 00:00:00 2001 From: cinnamon-msft Date: Tue, 7 Apr 2020 10:45:21 -0700 Subject: [PATCH 07/11] minor fixes --- doc/specs/#4191 - Formatted Copy/spec.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index d5ffa49dd2c..1e2678c7bcb 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -1,7 +1,7 @@ --- author: Kayla Cinnamon @cinnamon-msft created on: <2020-04-01> -last updated: <2020-04-01> +last updated: <2020-04-07> issue id: <#4191> --- @@ -77,6 +77,6 @@ One possible issue is that discovering how to copy the formatting might be diffi ## Future considerations -We could add the option we don't include later if people want it. For example, if we ship a global setting now, we could ship a key binding later that lets you choose how you want to copy, and vice versa. +We could always add an additional option if people want more flexibility. For example, if we ship a global setting now, we could ship a key binding later that lets you choose how you want to copy, and vice versa. ## Resources From 16f23a23e51fc8f754296cfb0762455ebd83245b Mon Sep 17 00:00:00 2001 From: cinnamon-msft Date: Tue, 7 Apr 2020 12:20:27 -0700 Subject: [PATCH 08/11] added conclusion --- doc/specs/#4191 - Formatted Copy/spec.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index 1e2678c7bcb..15ef7db76d3 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -1,8 +1,8 @@ --- author: Kayla Cinnamon @cinnamon-msft -created on: <2020-04-01> -last updated: <2020-04-07> -issue id: <#4191> +created on: 2020-04-01 +last updated: 2020-04-07 +issue id: #4191 --- # Formatted Copy @@ -13,9 +13,13 @@ When copying text, the Terminal should provide the option of including formattin ![Twitter poll](twitter-poll.png) -## Solution Design +## Solution Proposals -Solutions for the right click behavior and user settings are described below. +A proposal for the right click behavior as well as two user settings proposals are described below: + +1. [Right click behavior](#right-click-behavior) +2. [Settings option 1 - global setting](#settings-option-1---global-setting) +3. [Settings option 2 - key binding argument](#settings-option-2---key-binding-argument) ### Right click behavior @@ -79,4 +83,8 @@ One possible issue is that discovering how to copy the formatting might be diffi We could always add an additional option if people want more flexibility. For example, if we ship a global setting now, we could ship a key binding later that lets you choose how you want to copy, and vice versa. +## Conclusions + +The team has decided to have plain text as the default copy behavior and to enable formatted copying with a global setting that accepts a boolean value (settings option 1 - global setting, option b). In the future, we can modify this setting to also accept an array, so the user can specify which formats they would like to copy. Additionally, a key binding can be added to allow for greater flexibility. + ## Resources From a9e0147ed000c477ebdeb2a5b169b948c255e594 Mon Sep 17 00:00:00 2001 From: Kayla Cinnamon <48369326+cinnamon-msft@users.noreply.github.com> Date: Thu, 9 Apr 2020 09:59:09 -0700 Subject: [PATCH 09/11] Update doc/specs/#4191 - Formatted Copy/spec.md Co-Authored-By: Leon Liang <57155886+leonMSFT@users.noreply.github.com> --- doc/specs/#4191 - Formatted Copy/spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index 15ef7db76d3..789209a9026 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -27,7 +27,7 @@ By default, right clicking to copy would only copy the plain text. If the user w ### Settings option 1 - global setting -We could have a global setting that adds the formatting when the user copies. When set, this would change the right click behavior. +We could have a global setting that when enabled, would copy formatting to the clipboard on all copy operations. ### Settings option 2 - key binding argument From ac5562024c201f9b33de9f01248906245f035099 Mon Sep 17 00:00:00 2001 From: cinnamon-msft Date: Thu, 9 Apr 2020 10:03:47 -0700 Subject: [PATCH 10/11] removed alt functionality on mouse --- doc/specs/#4191 - Formatted Copy/spec.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index 15ef7db76d3..cccb60fe188 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -23,7 +23,7 @@ A proposal for the right click behavior as well as two user settings proposals a ### Right click behavior -By default, right clicking to copy would only copy the plain text. If the user would like to copy the formatting, they can hold `alt` and right click (this behavior is the same in conhost). +By default, right clicking to copy would only copy the plain text. ### Settings option 1 - global setting @@ -37,11 +37,11 @@ We could add an argument to the `copy` key binding argument to allow for formatt ### Settings option 1 - global setting -a. The user could list which kinds of formats they want included when they copy. When right clicking, they would copy with these formats. If this is set to something other than `plain`, holding `alt` and right clicking would copy plain text. +a. The user could list which kinds of formats they want included when they copy. When right clicking, they would copy with these formats. `"copyFormats": ["html","rtf","plain"]` -b. We could also just combine html and rtf into a single boolean. Users would either get plain text only (`false`) or all formatting (`true`) onto their clipboard. If this is set to `true`, the default right click behavior is reversed: right clicking copies the formatting and holding `alt` copies only the plain text. +b. We could also just combine html and rtf into a single boolean. Users would either get plain text only (`false`) or all formatting (`true`) onto their clipboard. If this is set to `true`, the default right click behavior is reversed: right clicking copies the formatting. `"copyFormatting": true` From 4953f54d7b5c190f6283a58f935af70561855181 Mon Sep 17 00:00:00 2001 From: cinnamon-msft Date: Thu, 9 Apr 2020 13:31:29 -0700 Subject: [PATCH 11/11] addressed nits --- doc/specs/#4191 - Formatted Copy/spec.md | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/doc/specs/#4191 - Formatted Copy/spec.md b/doc/specs/#4191 - Formatted Copy/spec.md index 7dce9191aa9..4dd7441c036 100644 --- a/doc/specs/#4191 - Formatted Copy/spec.md +++ b/doc/specs/#4191 - Formatted Copy/spec.md @@ -15,15 +15,11 @@ When copying text, the Terminal should provide the option of including formattin ## Solution Proposals -A proposal for the right click behavior as well as two user settings proposals are described below: +A proposal for the right click behavior as well as two user settings proposals are described below. The conclusion the team arrived at is at the bottom under the [Conclusions section](#conclusions). -1. [Right click behavior](#right-click-behavior) -2. [Settings option 1 - global setting](#settings-option-1---global-setting) -3. [Settings option 2 - key binding argument](#settings-option-2---key-binding-argument) - -### Right click behavior - -By default, right clicking to copy would only copy the plain text. +1. [Settings option 1 - global setting](#settings-option-1---global-setting) +2. [Settings option 2 - key binding argument](#settings-option-2---key-binding-argument) +3. [Right click behavior](#right-click-behavior) ### Settings option 1 - global setting @@ -33,6 +29,10 @@ We could have a global setting that when enabled, would copy formatting to the c We could add an argument to the `copy` key binding argument to allow for formatted copying when the user chooses to do so. +### Right click behavior + +By default, right clicking to copy would only copy the plain text. + ## UI/UX Design ### Settings option 1 - global setting @@ -79,12 +79,10 @@ This breaks the existing behavior of always copying the formatting. The justific One possible issue is that discovering how to copy the formatting might be difficult to find. We could mitigate this by adding it into the settings.json file and commenting it out. -## Future considerations - -We could always add an additional option if people want more flexibility. For example, if we ship a global setting now, we could ship a key binding later that lets you choose how you want to copy, and vice versa. - ## Conclusions The team has decided to have plain text as the default copy behavior and to enable formatted copying with a global setting that accepts a boolean value (settings option 1 - global setting, option b). In the future, we can modify this setting to also accept an array, so the user can specify which formats they would like to copy. Additionally, a key binding can be added to allow for greater flexibility. -## Resources +## Future considerations + +We could always add an additional option if people want more flexibility. For example, if we ship a global setting now, we could ship a key binding later that lets you choose how you want to copy, and vice versa. Additionally, we can add functionality to the global setting that allows for specific formats or styles to be copied.