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

Add command for Quarto: Set Editor Default #596

Open
DavisVaughan opened this issue Nov 1, 2024 · 3 comments
Open

Add command for Quarto: Set Editor Default #596

DavisVaughan opened this issue Nov 1, 2024 · 3 comments

Comments

@DavisVaughan
Copy link
Collaborator

Right now you can globally tell VS Code / Positron to use the visual editor by default for ALL qmd documents with this setting:

    "workbench.editorAssociations": {
        "*.qmd": "quarto.visualEditor"
    }

This is officially supported as the way for a user to set their global preference. It's the reason we set priority: "option" for our custom editor in package.json

    "customEditors": [
      {
        "viewType": "quarto.visualEditor",
        "displayName": "Quarto Visual Editor",
        "selector": [
          {
            "filenamePattern": "*.{md,qmd}"
          }
        ],
        "priority": "option"
      }
    ],

https://code.visualstudio.com/api/references/contribution-points#contributes.customEditors

Image

i.e. we don't forcibly take over qmds and make them open in visual mode, but a user can use this editor association option to opt in to this global override if they always want visual mode.


This is a super cool feature, but it's super hard to find!

I vote we make an ephemeral command that the user can call as something like Quarto: Set Editor Default who's sole job would be to follow up with a quick pick where the user can select either Source or Visual, and then based on their answer we set this editorAssociation option for them. It's possible we should also ask them if they want it set at a User or Workspace level.


Note that I do not think we should make this a quarto level option. That leaves the door open for the quarto option to get out of sync with the editor association option, like with manual editing of settings you can confusingly end up with this if we did an option:

    "quarto.editorDefault = "source",
    "workbench.editorAssociations": {
        "*.qmd": "quarto.visualEditor"
    }

and that seems bad. So having it as a command that just sets editorAssociations seems like a better way to do this.

@juliasilge
Copy link
Collaborator

This sort of already exists, since the Quarto extension provides the visual editor editor with "priority": "option":

Image

This quick pick pops up if you ever right click on a .qmd to open it and choose "Open With...". I looked a little bit at whether we can hook a command up to get to this spot but don't see it quite yet.

@juliasilge
Copy link
Collaborator

This quick pick comes from doPickEditor() with showDefaultPicker set to true:

https://github.com/posit-dev/positron/blob/8d0c666584e6a17ade85e6e97e7b9cb6df1eba30/src/vs/workbench/services/editor/browser/editorResolverService.ts#L782-L783

It doesn't look to me like any of that is exposed to extensions, for extensions to prompt this.

@DavisVaughan
Copy link
Collaborator Author

DavisVaughan commented Nov 26, 2024

Oh nice yea if you hit "configure default" after Open with... then if you set it to visual editor then i do see this in my settings.json now

    "workbench.editorAssociations": {
        "*.qmd": "quarto.visualEditor"
    }

That's basically what I'm asking for, just as a slightly simplified version that would only show Source and Visual as options, and is more easily discovered through being a quarto command under > Quarto: Set Editor Default in the command palette

It wouldn't have to use exactly the same UI, so we would not need to access that existing quick picker directly. We'd just make our own simple quick picker that only shows Source and Visual as options.

Or we can decide the current approach is good enough, if a bit hidden

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants