有人可以完整解释Atom的数据语法属性(用于键绑定选择器)的语法吗?
例如,
之间有什么区别[data-grammar='source example']
和
[data-grammar~='source example']
另外,如何指定多个语法?例如,您如何指定键绑定应限制为html或xml格式?
如果已经存在关于此的文档,我还没有找到它,但会很感激被指向它。
答案 0 :(得分:5)
<强> keymap.cson 强>:
"atom-text-editor[data-grammar='text tex latex']":
'f5':'latex:build'
我从查看file-types
包开始。 source
和text
对语言进行分类 - source
处理开发语言,而text
处理文档/日志格式。
您可以通过阅读航班手册来添加和自定义语言识别。我已将以下某些特定部分与之相关联。
飞行手册|基本定制:
[data-grammar]
:给出的小文档列在Keymaps in Depth部分下。
飞行手册|深度中的键盘映射
这也描述了下面使用的not([...])
功能以及如何操作各种规则。
虽然在上面,语法以点格式列出,即source.c
,但要在[data-grammar='<name>']
格式空格中使用它们是必需的。
我在keymap.cson配置中如何使用数据语法选项的示例就是这样的(这里我使用了latex包):
"atom-text-editor[data-grammar='text tex latex']":
'f5':'latex:build'
~
不是数据语法所需功能的正确语法。相反,请使用"atom-text-editor:not([data-grammar='<name>'])":
请注意,您不会在data-grammar
之类的内容中使用config.cson
。语言细节的语法看起来像这样:
# **config.cson**
".latex.tex.text":
editor:
softWrap: true
通过开发者控制台转储Object.keys(atom.grammars.grammarsByScopeName).sort().join('\n')
的输出(查看&gt;开发人员&gt;切换开发人员选项&gt;控制台)
source.c
source.cake
source.clojure
source.coffee
source.cpp
source.cs
source.css
source.css.less
source.css.scss
source.csx
source.diff
source.gfm
source.git-config
source.go
source.gotemplate
source.java
source.java-properties
source.js
source.js.rails source.js.jquery
source.js.regexp
source.js.regexp.replacement
source.json
source.litcoffee
source.makefile
source.nant-build
source.objc
source.objcpp
source.perl
source.perl6
source.plist
source.python
source.python.django
source.regexp.python
source.ruby
source.ruby.gemfile
source.ruby.rails
source.ruby.rails.rjs
source.sass
source.shell
source.sql
source.sql.mustache
source.sql.ruby
source.strings
source.toml
source.verilog
source.yaml
text.bibtex
text.git-commit
text.git-rebase
text.html.basic
text.html.erb
text.html.gohtml
text.html.jsp
text.html.mustache
text.html.php
text.html.ruby
text.hyperlink
text.junit-test-report
text.log.latex
text.plain
text.plain.null-grammar
text.python.console
text.python.traceback
text.shell-session
text.tex
text.tex.latex
text.tex.latex.beamer
text.tex.latex.memoir
text.todo
text.xml
text.xml.plist
text.xml.xsl
答案 1 :(得分:2)
要用atom-text-editor[data-grammar~='html']
来补充Mr G's answer,~=
意味着将一个<atom-text-editor>
HTML元素与一个data-grammar
属性匹配,该属性包含“ html”空格分隔的单词。
例如,如果文件的当前语言是PHP,则文本编辑器HTML元素将如下所示:
<atom-text-editor data-grammar="text html php">
然后atom-text-editor[data-grammar~='html']
会与此匹配。
有关属性选择器的更多信息:https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
对于尝试选择多个语法,除非它们在data-grammar
属性中共享一个共同的词,例如HTML和PHP都共享“ html”,或者C和JavaScript都共享,否则我认为这是不可能的“源”(但在这种情况下,许多其他语法共享“源”)。唯一的其他方法是为每个语法分别指定一个键映射,即使它是相同的键组合。