配置Brackets Beautify扩展以在花括号之前添加新行

时间:2017-08-16 07:58:34

标签: code-formatting adobe-brackets curly-braces

我使用Brackets Beautify扩展程序,并在美化我的代码时遇到问题。

我们说我有这段代码:

function test(arg1, arg2)
{
    var a = arg1 + arg2;
    return a;
}

var object = 
{
    "some" : 123,
    "some2" : 13123
}

当我点击Ctrl + Alt + B以美化我的代码时,上面的函数将如下所示:

function test(arg1, arg2) {
    var a = arg1 + arg2;
    return a;
}

var object = {
    "some": 123,
    "some2": 13123
}

但我希望它看起来像第一个(花括号在新行中),因为它对我来说更具可读性。

我尝试寻找解决方案,但没有成功。

BTW,我正在谈论JavaScript。 PHP代码没问题。

有什么想法吗?

对于任何英语错误,我很抱歉,我不是母语人士。

编辑:找到了部分解决方案。我改变了#strong; brace_style "到" 展开" in" default.jsbeautifyrc "文件(在" .jsbeautifyrc "文件中执行此操作时,它无法正常工作。)

无论如何,它仍然不适用于数组和对象。

编辑2:注意到它也发生在CSS代码中。

4 个答案:

答案 0 :(得分:1)

我一直在遇到同样的情况。

我在本地调整了我的css美化代码以解决它。

它位于扩展程序安装目录的第三方文件夹中的 beautify-css.js 文件。

在我的小学操作系统上,它在这里:

~/.config/Brackets/extensions/user/brackets-beautify-2.4.0/thirdparty/beautify-css.js

更改代码行,重新加载Brackets,并完成。

以下是我的调整(基于括号 - 美化-2.4.0):

前两个是印刷[" {"]方法。该功能变为:

 print["{"] = function(ch) {
        print.newLine(); //instead of print.singleSpace(); 
        indent();//since indent removed at 383
        output.push(ch);
        print.newLine();
    };

此更改包括:

  • l 255 print.singleSpace();变为print.newLine();

  • l 256成为新行并包含indent();

然后转到第383行并对其进行评论。

  • l 383 indent();已删除

为CSS添加一个真正的大括号样式选项将是一个更优雅的解决方案。

这旨在帮助任何寻求快速解决方案的人使其在本地运作。

答案 1 :(得分:0)

使用具有以下内容的.jsbeautifyrc可以获得JS所需的大括号位置:

{
    "js": {
        "brace_style": "expand"
    }
}

对于CSS,底层库(尚未)支持此选项。

配置文件应位于项目的根文件夹中(在Brackets中打开的文件夹)。这样你就可以将它检查到版本控制中,这样每个贡献者都有相同的格式设置。

如果您想全局使用相同的设置,可以更改扩展程序文件夹中的default.jsbeautifyrc文件,但会在更新时恢复。

答案 2 :(得分:0)

在阅读@redpanda的答案后,我尝试自己更改代码。

我更改了beautify-css.js文件中的一些行,该文件位于C:\Users\userName\AppData\Roaming\Brackets\extensions\user\brackets-beautify\thirdparty目录中的窗口中。

这是我的解决方案:

转到463文件中的第beautify-css.js行,然后将其更改为:

 indent();
 output.space_before_token = true;
 print_string(ch);

 if (!eatWhitespace(true)) {
      output.add_new_line();
 }

对此:

  //indent(); // removed, we will indent later
  output.space_before_token = true;
  output.add_new_line(); // added, in order to add new line before '{'
  print_string(ch);

  if (!eatWhitespace(true)) 
  {
      output.add_new_line();
  }
  indent(); //added, in order to indent, since we removed it before

当然这是一个临时解决方案,我希望能添加真正的大括号选项。

答案 3 :(得分:0)

找到了CSS的解决方案(美化版本2.10.0)

文件beautify-css.js(路径:〜\ AppData \ Roaming \ Brackets \ extensions \ user \ brackets-beautify \ thirdparty)

第〜1411行

找到“否则,如果(this._ch ==='#'&& this._input.peek()==='{')”

示例代码

} else if (this._ch === '#' && this._input.peek() === '{') {
  this.preserveSingleSpace(isAfterSpace);
  this.print_string(this._ch + this.eatString('}'));
} else if (this._ch === '{') {
  if (insidePropertyValue) {
//this._output.add_new_line();
    insidePropertyValue = false;
    this.outdent();
  }
  this.indent();
  this.__add_space_before_token();
  //this._output.space_before_token = true;
  this.print_string(this._ch);

更改为

} else if (this._ch === '#' && this._input.peek() === '{') {
  this.preserveSingleSpace(isAfterSpace);
  this.print_string(this._ch + this.eatString('}'));
} else if (this._ch === '{') {
  if (insidePropertyValue) {
    insidePropertyValue = false;
    this.outdent();
  }
  this.print_string('\n');  // this line has been changed
  this.outdent();           // this line has been changed
  this.print_string(this._ch);
  this.indent();            // this line has been changed