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

Use simple JSON editor for editing settings as JSON #64932

Closed
roblourens opened this issue Dec 13, 2018 · 31 comments
Closed

Use simple JSON editor for editing settings as JSON #64932

roblourens opened this issue Dec 13, 2018 · 31 comments
Assignees
Labels
feature-request Request for new features or functionality settings-editor VS Code settings editor issues verification-needed Verification of issue is requested verified Verification succeeded

Comments

@roblourens
Copy link
Member

roblourens commented Dec 13, 2018

This is a reboot of #62964

My proposed future for editing settings as JSON is this:

  • By default, when opening settings via the menu item, or keyboard shortcut, or command palette, the UI will be opened (as currently)
  • And if the user prefers to edit with JSON by default, they can set "workbench.settings.editor": "json" (as currently)
  • If they do this, then when invoking the command, it will open the settings.json file directly in a simple editor, instead of the special editor we have now with search box, default settings groups, pencil button, etc.

Also, we currently already have a setting workbench.settings.openDefaultSettings which allows exactly the behavior described above. That setting will now be false by default, and if the user sets it to true, then vscode will open two editor groups showing the default settings list and the settings.json to the side. This matches what we do already for editing keyboard shortcuts as json and allows users to browse and use editor find in the default settings list, if that's what they prefer.

dec-12-2018 17-06-31

Important note: Editing settings as JSON is a core part of vscode and it will never go away. But this change lets us streamline the user experience and focus on maintaining two settings UX's instead of three. 🎉 🌈 ⚙️

@roblourens roblourens added feature-request Request for new features or functionality settings-editor VS Code settings editor issues labels Dec 13, 2018
@roblourens roblourens added this to the December 2018 milestone Dec 13, 2018
@roblourens roblourens self-assigned this Dec 13, 2018
@roblourens roblourens reopened this Dec 13, 2018
@ghost
Copy link

ghost commented Dec 13, 2018

I would like for the search and pencil elements to stay. I understand this is probably not going to happen, but if this is up to any sort of a vote, I am voting stay.

@TuxVinyards
Copy link

I always liked the two panel JSON editor.

But while I am here: I would like the ability to toggle between the GUI & JSON placed back at the top of the GUI menu. We are coders. The new dumbed down GUI is utterly confusing to me, most of the time.

I shouldn't haver to wade through a morass of GUI tick boxes to find the JSON UI setting, just because I flipped to the GUI for a moment. && Why are the comments more dominant than the settings in the GUI? Or perhaps that's another issue?

@TuxVinyards
Copy link

Okay. I have just seen this:
Suggestion: Move "Open Settings (JSON)" button to lower gutter #63806

@roblourens : It seems that you have closed the above issue. Comments were made that people might find that moving the JSON toggle to the { } icon might be confusing. Yes, it was confusing.

Can I suggest that maybe the GUI help line that reads "Determines which settings editor to use by default." should have something added like:

( JSON may also be toggled at the top right using the { } icon )

Bests.

@carlocardella
Copy link
Member

Has the search bar already been removed in today's Insiders release?
This is a simple text search operation, it no longer uses natural search language even though workbench.settings.enableNaturalLanguageSearch is true (default).

If this is a bug then no problem, I understand it can happen with the Insiders build, if it is a conscious choice then I think it really worsen this view's usability. I search for settings with generic terms when I am not sure what I am looking for and natural language was very good at that, the basic text search can be really frustrating instead.

Version: 1.31.0-insider (user setup)
Commit: 7ab53e6d1c7998006bc70f18230178a702598222
Date: 2018-12-13T06:20:30.449Z
Electron: 3.0.10
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
OS: Windows_NT x64 10.0.17763

Insiders

image

Stable

image

@roblourens
Copy link
Member Author

Why are the comments more dominant than the settings in the GUI? Or perhaps that's another issue?

Not sure what you are referring to here.

Re: moving the button to open settings. I know there will be a bit of pain at first but I think it's better in the long run. Sorry for disturbing everyone's workflow. I also have separate keybindings for the settings UI vs settings JSON which makes it very easy to switch back and forth.

Has the search bar already been removed in today's Insiders release?

Yes. The natural language search still exists in the UI.

@carlocardella
Copy link
Member

carlocardella commented Dec 13, 2018

Has the search bar already been removed in today's Insiders release?

Yes. The natural language search still exists in the UI.

Uhm... then the json settings for power users is not so powerful anymore... I well remember how cumbersome it was to search for settings without Natural Language support in the json file, it's been a great relief when it was introduced at the beginning of the year (https://code.visualstudio.com/updates/v1_20#_settings-search), now this looks like is going backwards...
So if we need Natural Language we are supposed to flip back and forth between the UI and the json settings? That seems to defeat the purposed of setting json as the default setting editor if one wants to...

@usernamehw
Copy link
Contributor

The pain. Switching to Stable 🚀. Hoping that common sense and downvotes will save the day.

@thernstig
Copy link
Contributor

@roblourens

Why are you regressing the JSON settings view?

You specifically mentioned yourself that you need a better understanding of who is using the JSON editor. It feels like we are not being heard with our many outcries to not change the JSON editor. The answers we have gotten is that we can still use the JSON editor. This issue is not about that, it is that you are aiming to make it worse.

The only reason for the change seems to be that it would mean less code to maintain. Usability for every power user out there should far trump that reason. You are building VS Code for the users and the users seems displeased with the direction this is taking.

It feels like any critique thrown at this is just side-stepped. We feel unheard. Look at the previous issues and the up/down votes on comments and it becomes obvious what the right decision is here.

@roblourens
Copy link
Member Author

@usernamehw can you expand on your pain points? I don't see you in this or the last thread, sorry if I missed it.

@thernstig I hear you, and I'm taking this seriously.

The JSON UI features were developed mainly with new users in mind. Now that the settings UI exists, they feel largely redundant. We are a small team and maintaining a complex settings JSON editor is not free. In my mind, a "power user" is someone who prefers to operate without the "hand holding" features that we've added to the settings editor, and most (but not all) people I've talked to using the JSON editor are only using it as a JSON file and aren't using the extra features.

That said, the JSON editor has been around for quite awhile and for better or worse, some number of people have adopted it as a core part of their workflow, and I understand that removing a very visible feature will certainly cause some amount of pain. In any case, I consider this issue still open.

@carlocardella
Copy link
Member

Power users still need to easily search and find for settings though, that is my main complaint.
I am ok with changing my default to the json editor rather than the UI, I am also ok not having the pencil tool but even power users need two things: good search (you have to find what you are looking for in a huge json file, especially if you do not know in advance the setting name) and autocompletion.
Intellisense still works but missing the improved search is a real pain: it is already gone from the Insiders build, meaning at some point is will be gone from Stable as well.

@TuxVinyards
Copy link

  1. Never did quite get the need for the 'pencil tool'. It nearly always seemed to get in the way, to me.

Why are the comments more dominant than the settings in the GUI? Or perhaps that's another issue?
Not sure what you are referring to here

TL; DR ... The GUI needs compacting. Far too much scrolling up and down to find what you need.

The options should be grouped tightly and labelled only. The paragraphs of explanation should be in mouse-overs or pop-ups.

The code editor theming, for the JSON interface, greys out or dulls down comments. The GUI theming uses the comments as key elements. It's the wrong way round. Far too long winded.

  1. Can we clarify 'UI' please. The text based UI (user interface) is a UI. The graphical UI, with the tick boxes is a GUI.

  2. One of the problems Microsoft always had, and one of the reasons they lost so many developers, including me, was that you could never easily 'pop the hood' and fix things. Everything was so hidden behind layers and layers of dumbing down and corporate gloss.

I hope VS Code isn't going to go this way. I was just been starting to feel a bit more optimistic about Redmond during the last year or so. I even coded some 'power shell' a few months ago. But then the 18.09 update fiasco and now this ....

@thernstig
Copy link
Contributor

@roblourens please do not remove the search. The search is great even for power users. It's very good! Being able to search for e.g. an extensions settings, let's say gitlens I can search and quickly get all settings I've set + the ones I can set, filtering out the rest. This is amazing! Please let us keep that 😞

@octref
Copy link
Contributor

octref commented Dec 14, 2018

The old search is very good for exploring what settings are available. I type font as a new user, I see a bunch of font related settings, each one having a highlight on why it matches my query.

The UI might be easier for beginners. Maybe some people will like it. But I don't like the buttons, boxes, various typefaces, my query not highlighted, inefficiency in changing complex settings such as files.associations, etc. I like the magical search and I like working with text files. Finding/editing settings was a direct, simple, straightforward experience in the Split JSON editor.

The plain editor search does not suffice as a replacement.

  • It's not using natural language search. Not handling fuzzy search, typo, plurals.
  • I don't like typing one keyword such as font and having to press Enter multiple times to go to the next/prev match (description contains the keyword too).

Imagine that you are good at writing HTML and someday your boss forces you to use some shiny GUI website builder. That's how it feels to me.

Of course after you kill the search bar, people will be less likely to use the old Split JSON editor. One day the user count would be low enough to kill it. I have been using Code since 1.10 and this is the first time I feel I don't want to upgrade.

@eamodio
Copy link
Contributor

eamodio commented Dec 14, 2018

While I don't feel super strongly about the search (mainly since while it is useful I use it very infrequently), I do find it useful (and will miss it to some extent). As for the pencils -- I won't miss them at all.

Is there another tack that can be taken here? I'm guessing that the search accounts for more of the complexity than the pencils, and search is only available in this narrow use-case which I can fully understand that its usefulness doesn't outweigh its cost. But is there a way to expand its usefulness more broadly? Like could there be a feature that provides a fuzzy search/filtering for any json file? Because I have found myself wishing at times that the ability existed.

Also I don't know if the complexity of a split view is part of the cost or not, but I really would like to see that become an option extensions could use. As it avoid issues with tab management (maybe even provide synchronized scrolling -- think markdown preview), etc.

Thoughts?

@octref
Copy link
Contributor

octref commented Dec 14, 2018

But is there a way to expand its usefulness more broadly? Like could there be a feature that provides a fuzzy search/filtering for any json file?

That's something I suggested too. @jrieken Did the filtering for Outline tree, and I very much want that it also filter down the real text in the 8k lines vscode.d.ts.

image

@Astrantia
Copy link

Serious questions, why dont you invest time into something that people want to be featured in vscode instead of removing something that is fine by everyone?
Semantic syntax highlighting? Sort issues by upvotes when looking for things to add/fix, not by downvotes.

@cnshenj
Copy link

cnshenj commented Dec 17, 2018

Serious questions, why dont you invest time into something that people want to be featured in vscode instead of removing something that is fine by everyone?
Semantic syntax highlighting? Sort issues by upvotes when looking for things to add/fix, not by downvotes.

I agree. The new settings UI looks nice, but not necessary. You edit settings probably a few times when you first install VSCode, then you save a copy of settings.json and be done with it - until you discover a new extension that may require some initial configuration. Investing so much time in the settings editor doesn't seem to have high ROI.

@octref
Copy link
Contributor

octref commented Dec 18, 2018

One more downside:

  • Previously when I found something wrong, I run Cmd + ,, and I can see if the settings come from a folder setting or user setting
  • Now I have to manually open the .vscode/settings.json again
  • It's worse when I have multi-root workspace. How do I locate the 4 JSON files?

image

@roblourens
Copy link
Member Author

roblourens commented Dec 18, 2018

Not sure whether this would work well or not but it would be interesting to see whether it's possible to make an extension that could provide a "line filtering" type search experience. Like get a search query from a quick input, then open a new editor with a filtered view on the JSON file.

@octref For switching between settings files you can use the commands, find them in quick open, in the explorer, etc.

Thanks for everyone who has weighed in. I won't remove the split JSON editor in the near future. It will be behind a setting for now because I still believe that most users may not even notice the difference. But if you prefer it, you'll still be able to use it. There it is... Now don't say that I never listen to users 😆

@thernstig
Copy link
Contributor

@roblourens Does this mean the natural search bar will still be there? 😄

@roblourens
Copy link
Member Author

It does! I've called the setting workbench.settings.useSplitJSON. If you set that to true, then this should work the same as it did before.

@carlocardella
Copy link
Member

carlocardella commented Dec 18, 2018

Excellent, thanks a lot! 👍
Defaulting to the GUI makes sense, if I want more power/flexibility is my choice so I can change my default behavior (as long as all the power and flexibility are still there 😊)

@roblourens
Copy link
Member Author

My main takeaway is that you all generally really like the way the search bar works in the JSON split editor. Also the scope switching but I don't think it came up before @octref mentioned it.

Question, is there any improvement that we can make to the way intellisense works, so that it would work just as well for you?

I think the gaps are

  • It doesn't list settings that are already configured
  • It isn't as fuzzy as the search bar, and doesn't include Bing search
  • It only looks at the last word (ie you can't type a query with spaces) but this is harder to fix

Or is the main benefit of search the ability to read all the results and descriptions in an editor with minimal scrolling?

I guess what I'm asking is,

To be clear, I'm talking about this:
dec-20-2018 12-00-26

@eamodio
Copy link
Contributor

eamodio commented Dec 20, 2018

Not sure how I forgot about the scope switching -- as I definitely do use that and would not want to lose it.

As for search I'm not sure intellisense alone can really fill the gaps -- since in addition to your gaps, the search is both persistent and glance/scan-able. So if I want to see the settings for gitlens, I can search and then read through the results (with all the comments visible) and add overrides to 1 or more settings without having to re-search.

@usernamehw
Copy link
Contributor

I'm not sure what you are trying to solve... Is there any numbers how much this split takes space? 2Kb? More? I haven't seen any new features to it in about ~5 months, so it shouldn't take that much time either...

If you desperately want to nuke some code from the core - delete Interactive Playground.

But, yes. Having fuzzy matching on any document is a very desired feature.

@carlocardella
Copy link
Member

It doesn't list settings that are already configured

This is probably a matter of personal preference but I like the current behavior: if the setting does not show up in the list is because is already added and I can't (or shouldn't) add it to my personal setting a second time (you would get the green squiggly with an error message anyway).

It isn't as fuzzy as the search bar, and doesn't include Bing search

Fuzzy search would be useful, even in a broader context if possible (fuzzy search everywhere?).
What would be the benefit of having a Bing search in this context?

Or is the main benefit of search the ability to read all the results and descriptions in an editor with minimal scrolling?

This is probably my main reason to use the search in Settings, the ability to zoom in and out on the setting you are looking for but also getting context on other settings available in the area I am customizing. Very useful.

@octref
Copy link
Contributor

octref commented Dec 20, 2018

Or is the main benefit of search the ability to read all the results and descriptions in an editor with minimal scrolling?

Also that I can see what each setting value does without having to commit to writing that setting to my config yet.

image

Also the search bar makes the Split JSON editor very usable to even new users. I think staying with plain file configs and enhancing it with the intelligent search makes the setting experience very welcoming to Vim/Emacs users.

@thernstig
Copy link
Contributor

My main benefit is what others also said I think. The ability for the search to filter out all undesirable results. Search for gitlens and see all gitlens related code you can set. And what I have already set gets highlighted. I can also easily read all descriptions for the settings without any more keystrokes.

IntelliSense does not provide this functionality in the same way. It is somewhat the same argument you said yourself before that changing the location of where you switch from GUI -> JSON to a one-click instead of a two-click was desirable. Doing on search by a few keystrokes gives you a great overview over all settings. IntelliSense does not do that in the same way.

@TuxVinyards
Copy link

Just like to say I am feeling a lot happier about things today.

Maybe I am just getting used to the changes or maybe it's something to do with the
// Fetches experiments to run from a Microsoft online service.
"workbench.enableExperiments": true,
which I didn't know was enabled till I noticed it in the GUI today.

Is it me, or is the UI changing while I am not looking? Who knows. I am sure that when 1.30.1 arrived as an update that I had to do a full IDE restart to switch the settings view. This morning I noticed that I could do a toggle at the top right and that it will go in either direction.

@federicobarera
Copy link

Yay, an hour lost trying to get rid of the UI.

"workbench.settings.useSplitJSON": true,
"workbench.settings.editor": "json",

@ratgr
Copy link

ratgr commented Feb 21, 2019

Yay, an hour lost trying to get rid of the UI.

"workbench.settings.useSplitJSON": true,
"workbench.settings.editor": "json",

Same here, the splitJson is the best settings UI ever and part of my reasons to move to vscode, now it is really hard to find it, and will be probably harder to find how to in the future until it disapears.

@vscodebot vscodebot bot locked and limited conversation to collaborators Mar 16, 2019
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 settings-editor VS Code settings editor issues verification-needed Verification of issue is requested verified Verification succeeded
Projects
None yet
Development

No branches or pull requests