【问题标题】:How can I prevent Atom from making superficial changes to config.cson?如何防止 Atom 对 config.cson 进行表面更改?
【发布时间】:2017-03-14 01:39:54
【问题描述】:

CSON README 和我在 Internet 上找到的其他 CSON 用法中可以看出,对于字符串文字,通常使用单引号而不是双引号。正因为如此(并且因为我同意我通常在此约定背后看到的基本原理),我将它用于我的 Atom 配置文件,例如 keymap.cson

'body':
  'ctrl-tab': 'pane:show-next-item'
  'ctrl-tab ^ctrl': 'unset!'
  'ctrl-shift-tab': 'pane:show-previous-item'
  'ctrl-shift-tab ^ctrl': 'unset!'

到目前为止,这对我来说效果很好。但是,当我尝试对我的 config.cson 文件也使用相同的约定时,我遇到了一个问题。例如,我试图将其内容设置为以下内容:

'*':
  core:
    disabledPackages: [
      'exception-reporting'
    ]
    restorePreviousWindowsOnStart: false
    telemetryConsent: 'no'
  welcome:
    showOnStartup: false
  whitespace:
    ignoreWhitespaceOnCurrentLine: false

但是,如果我打开 Atom 并点击 Ctrl+= Ctrl+- (以调整字体大小)或进行其他类似的更改,然后将 Atom 恢复到以前的状态状态,Atom 将我的 config.cson 文件更改为如下所示:

"*":
  core:
    disabledPackages: [
      "exception-reporting"
    ]
    restorePreviousWindowsOnStart: false
    telemetryConsent: "no"
  editor: {}
  welcome:
    showOnStartup: false
  whitespace:
    ignoreWhitespaceOnCurrentLine: false

如您所见,它将所有单引号更改为双引号,并添加了一个不必要的editor 部分。

有没有办法阻止 Atom 对我的 config.cson 文件进行这些表面上的更改? 这对我来说很重要的原因是我将 Atom 配置文件保存在版本控制中,因此,为了防止非常嘈杂的差异,我需要禁用此行为或对我的引号使用不一致或次优的样式,如果可能的话,我会发现前一个选项更可取。

【问题讨论】:

    标签: config atom-editor double-quotes single-quotes cson


    【解决方案1】:

    如果可以选择切换文件格式,请考虑改用config.json。由于 JSON 按照惯例使用双引号,因此在更改 Atom 配置时应该没有冲突。

    Atom 已经过渡到远离 CoffeeScript(和 CSON),您可以在整个应用程序中交替使用 JavaScript/CoffeeScript 和 JSON/CSON。

    【讨论】:

    • 感谢您告诉我有关过渡的信息!但是,这并不能回答我的问题。正如我上面所说,我知道我可以在我的配置文件中使用双引号,以便与 Atom 的样式保持一致,以减少它所做的表面更改的数量;使用 JSON 而不是 CSON 只会迫使我选择该选项。这并没有改变 Atom 对我的配置文件进行表面更改的事实,当我执行诸如调整字体大小之类的操作时,Atom 仍然添加了 "editor": {}, 行。
    • 我认为没有实用的方法可以做到这一点。 Atom 使用season 来解析/字符串化CSON,而不是cson。没有允许覆盖其默认值的选项。您可能有机会创建一个包来监视 config.cson 的更改,然后使用 cson 解析和字符串化其内容并保存它。如果 Atom 不干扰,那应该可以工作。
    • 顺便说一句,我建议将答案作为一种解决方法,因为 JSON 的约定似乎是普遍有效的。使用 JSON 可以很容易地遵循约定,因为您似乎很关心这一点。
    • 好的,有道理,谢谢;不幸的是,这是不可配置的。
    • 实际上,事实证明,使用cson 代替season 并没有帮助,因为csonseason 都使用了较低级别的cson-parser 库,它使用JSON.stringify here 作为对象键,使用here 作为其他字符串。
    【解决方案2】:

    截至v2.0.0cson-parser 库在对 CSON 进行字符串化时使用常规默认引用类型,因此您可以使用该库编写一个简单的 shell script 并在提交到 Git 之前在 config.cson 上运行它。在调用 stringify 之前删除此类脚本中的空 editor 部分也相对简单。

    您可以将其写入 Atom 包中,正如 @idleberg 在 comment 中提到的那样,但我自己没有尝试过。

    如果 season upgradescson-parser 依赖于 v2.0.0,这将解决引用类型问题,但空的 editor 部分仍需要被其他东西删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多