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

Settings Need Multiline TextBox #79571

Closed
kenlefeb opened this issue Aug 21, 2019 · 5 comments
Closed

Settings Need Multiline TextBox #79571

kenlefeb opened this issue Aug 21, 2019 · 5 comments
Assignees
Labels
feature-request Request for new features or functionality insiders-released Patch has been released in VS Code Insiders on-testplan settings-editor VS Code settings editor issues
Milestone

Comments

@kenlefeb
Copy link

Issue Type: Bug

This is very similar to #39969, but for the new Settings UI.

I use an extension (vscode-journal) that allows you to define a template (setting journal.tpl-entry) for creating new files, and these require the use of \n characters to specify new lines, however the Settings UI won't let me enter \n (it gets escaped), let alone an actual newline character.

VS Code version: Code 1.37.1 (f06011a, 2019-08-15T16:17:55.855Z)
OS version: Windows_NT x64 10.0.17763

System Info
Item Value
CPUs Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz (8 x 2112)
GPU Status 2d_canvas: enabled
flash_3d: enabled
flash_stage3d: enabled
flash_stage3d_baseline: enabled
gpu_compositing: enabled
multiple_raster_threads: enabled_on
native_gpu_memory_buffers: disabled_software
oop_rasterization: disabled_off
protected_video_decode: enabled
rasterization: enabled
skia_deferred_display_list: disabled_off
skia_renderer: disabled_off
surface_synchronization: enabled_on
video_decode: enabled
viz_display_compositor: disabled_off
webgl: enabled
webgl2: enabled
Load (avg) undefined
Memory (System) 15.81GB (5.67GB free)
Process Argv .
Screen Reader no
VM 0%
Extensions (25)
Extension Author (truncated) Version
whitespace-plus dav 0.0.5
xml Dot 2.5.0
EditorConfig Edi 0.13.0
prettier-vscode esb 1.9.0
markdown-table-formatter fcr 1.4.3
gc-excelviewer Gra 2.1.32
vscode-journal-view Gru 0.0.25
vscode-guid hea 1.4.15
vscode-peacock joh 3.1.2
json-escaper jos 1.1.0
chat kar 0.21.0
vscode-language-babel mgm 0.0.23
vscode-docker ms- 0.7.0
remote-wsl ms- 0.39.2
csharp ms- 1.21.0
powershell ms- 2019.5.0
vsliveshare ms- 1.0.721
vsliveshare-audio ms- 0.1.64
vsliveshare-pack ms- 0.3.3
debugger-for-chrome msj 4.11.7
debugger-for-edge msj 1.0.11
vscode-journal paj 0.9.1
vscode-redis vit 1.2.0
markdown-pdf yza 1.2.0
markdown-all-in-one yzh 2.4.2

(1 theme extensions excluded)

@RMacfarlane RMacfarlane added the settings-editor VS Code settings editor issues label Aug 21, 2019
@roblourens roblourens added the feature-request Request for new features or functionality label Aug 21, 2019
@roblourens roblourens added this to the Backlog milestone Oct 28, 2019
@justarandomgeek
Copy link

I too need some multi-line settings for my Factorio Mod Debug extension, which has templates for two auto-generated commit messages in settings (in the version i'm about to upload...). Same problem with \n - it works fine if you set it directly in settings.json, but the GUI strips them and has no way to enter a newline.

@rzhao271
Copy link
Contributor

I downloaded the top 2.5k extensions and did a search to see how string settings with \n as part of the default value were being used. The settings are being used in one of three ways:

Snippets or actual executable code

"wxapp-helper.component.script": {
	"type": [
	"string",
	"null"
	],
	"default": "Component({\n  data: {},\n  properties: {},\n  methods: {}\n})",
	"description": "%ext.config.component.script%"
}

Another example is jupyter.runStartupCommands, which could take in a block of Python commands.

In this case, we want to render a Monaco editor.

Hover labels and templates

"todo.file.defaultContent": {
	"type": "string",
	"description": "New todo files default content",
	"default": "\nTodo:\n  ☐ Item\n"
}

Other examples include gitlens.hovers.detailsMarkdownFormat and gitstash.explorer.labels.stashTooltipFormat.

In this case, we want to render a multiline textarea.

Line-break settings

"npm-intellisense.importLinebreak": {
	"type": "string",
	"default": ";\r\n",
	"description": "For import command. The linebreak used after the snippet"
}

In this case, we want to render the \r and \n explicitly, rather than display a textarea with a trailing newline.

@roblourens
Copy link
Member

The others I saw which may be beyond the 2.5k top:

  • ctf0.laravel-goto-view: laravelGotoView.viewDefaultValue (default text for a file)
  • flydreame.docblocker: docBlocker.defaultTpl (a template value)
  • kortina.vscode-markdown-notes: vscodeMarkdownNotes.newNoteTemplate
    • vscodeMarkdownNotes.newNoteFromSelectionReplacementTemplate looks similar
  • mikey.vscode-fileheader: fileheader.tpl (file header template)
  • neptune-design.vs-html-to-css: vs-html-to-css.append (text to insert)
  • A few template-type things in seancheung.wxapp-helper
  • skip1.go-swagger: swagger.tpl
  • TaoKlerks.poor-mans-t-sql-formatter-vscode: poor-mans-t-sql-formatter.errorOutputPrefix

And several that are configuring line endings and are just \n

@rzhao271
Copy link
Contributor

rzhao271 commented Jul 8, 2021

Just a note that for the line break settings, I assume most of them can do the following instead:

  • Having a line break setting of type enum so that the user can select CRLF or LF
  • Having a line end setting if the extension is also adding something to the end of the line before the line break

An example setting that can be remodelled to this pattern is npm-intellisense.importLinebreak (from #79571 (comment)).

Edit: Or, the extension author can use a singleline text setting and parse the input like a regex. For example, the user could input \\r\\n to get \r\n newlines.

@rzhao271
Copy link
Contributor

\closedWith be81d88

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
feature-request Request for new features or functionality insiders-released Patch has been released in VS Code Insiders on-testplan settings-editor VS Code settings editor issues
Projects
None yet
Development

No branches or pull requests

7 participants
@roblourens @kenlefeb @RMacfarlane @kieferrm @justarandomgeek @rzhao271 and others