从我在CSON README以及我在互联网上找到的其他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配置文件版本控制,所以为了防止非常嘈杂的差异,我需要禁用此行为或为我的引号使用不一致或次优的样式,如果可能的话,我会发现前一个选项更为可取。
答案 0 :(得分:1)
如果是切换文件格式的选项,请考虑使用config.json
。由于JSON按惯例使用双引号,因此在更改Atom配置时应该没有冲突。
Atom已经开始转型,以摆脱CoffeeScript(和CSON),您可以在整个应用程序中交替使用JavaScript / CoffeeScript和JSON / CSON。
答案 1 :(得分:0)
从v2.0.0开始,cson-parser
库在对CSON进行字符串化时使用传统的引用类型默认值,因此您可以使用该库编写一个简单的shell script并在{{1}上运行它在提交给Git之前。在调用config.cson
之前删除此类脚本中的空editor
部分之类的内容也相对简单。
你可以把它写成一个Atom包,就像@idleberg在comment中提到的那样,但我自己没有尝试过。
如果stringify
upgrades其season
依赖于v2.0.0,那将解决报价类型问题,但仍需要删除空的cson-parser
部分别的什么。