HookyQR / VSCodeBeautify

Enable js-beautify (https://github.com/beautify-web/js-beautify) in VS Code
MIT License
605 stars 180 forks source link

object in array,the first brace stays in new line #242

Open see311 opened 6 years ago

see311 commented 6 years ago

Provide the settings you use: (VS Code workspace and user settings, .jsbeautifyrc, .editorconfig) eg.: VS Code:

{
    "files.autoSave": "onFocusChange",
    "editor.snippetSuggestions": "top",
    "emmet.showSuggestionsAsSnippets": true,
    "vetur.format.defaultFormatter.html": "js-beautify-html",
    "html.format.wrapAttributes": "force-aligned",
    "vetur.format.defaultFormatterOptions": {
        "js-beautify-html": {
            "defaultHtmlOptions.wrapAttributes": "force-aligned"
        }
    },
    "emmet.includeLanguages": {
        "vue-html": "html",
        "nunjucks": "html"
    },
    "editor.tabSize": 2,
    "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
    "git.enableSmartCommit": true,
    "git.autofetch": true,
    "beautify.language": {
        "js": {
            "type": [
                "javascript",
                "json"
            ],
            "filename": [
                ".jshintrc",
                ".jsbeautify"
            ]
        },
        "css": [
            "css",
            "scss"
        ],
        "html": {
            "type": [
                "htm",
                "html",
                "nunjucks"
            ],
            "ext": [
                "nunjucks"
            ]
        }
    },
    "files.associations": {
        "*.html": "html"
    },
    "[javascript]": {},
    "emmet.showAbbreviationSuggestions": false,
    "workbench.iconTheme": "vscode-great-icons",
    "workbench.activityBar.visible": true,
    "[html]": {},
    "window.zoomLevel": 0,
    "search.location": "panel",
    "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": true,
    "javascript.format.placeOpenBraceOnNewLineForControlBlocks": true,
    "javascript.format.placeOpenBraceOnNewLineForFunctions": true,
    "html.suggest.angular1": false,
    "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true,
}

Action performed

Format javascript file with HookyQR.beautifyFile command provide example code

routes: [{
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld,
    },
    {
      path: '/login',
      component: Login,
    }
]

Expected results

Expected ... to ... provide example (expected) output

routes: [
  {
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld,
  },
  {
    path: '/login',
    component: Login,
  }
]

Actual results

Details of what happened ... provide example (actual) output

HookyQR commented 6 years ago

You can use either "brace_style": "none,preserve-inline" or "brace_style": "expand,preserve-inline" to get that result, but it will obviously affect other parts of your code.

see311 commented 6 years ago

@HookyQR after I use "brace_style": "none,preserve-inline" or "brace_style": "expand,preserve-inline", it change to:

routes: [
{
  path: '/',
  name: 'HelloWorld',
  component: HelloWorld
},
{
  path: '/',
  name: 'HelloWorld',
  component: HelloWorld
}]

there is no indent before the brace and the last brace get together

HookyQR commented 6 years ago

That's because the code itself is invalid. It should have either routes = or the whole thing should be surrounded by a curly brace pair. The parser simply thinks it's still at the top level at that point, cos, it kind of is. ;)

see311 commented 6 years ago

@HookyQR sorry, my fault. the routes is in the object, it's a property of an object. likes:

{
  routes: [
  {
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld
  },
  {
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld
  }]
}
HookyQR commented 6 years ago

I still don't see what the problem is. Can you please provide snippets for before, actual after, and expected after.

Gazzia commented 5 years ago

I think the expected after is :

{
   routes: [
      {
        path: '/',
        name: 'HelloWorld',
        component: HelloWorld
      },
      {
        path: '/',
        name: 'HelloWorld',
        component: HelloWorld
      }
   ]
}

(and I support that too)

gregg-cbs commented 2 years ago

The last curly and square brace keep stacking on one line: }]

The opening brackets are fine but the ending arent following the same.