键绑定的原子数据 - 语法语法

时间:2017-03-24 20:39:00

标签: atom-editor

有人可以完整解释Atom的数据语法属性(用于键绑定选择器)的语法吗?

例如,

之间有什么区别
[data-grammar='source example']

[data-grammar~='source example']

另外,如何指定多个语法?例如,您如何指定键绑定应限制为html或xml格式?

如果已经存在关于此的文档,我还没有找到它,但会很感激被指向它。

2 个答案:

答案 0 :(得分:5)

快速示例:

<强> keymap.cson

"atom-text-editor[data-grammar='text tex latex']":
  'f5':'latex:build'

语法信息&amp;文档

我从查看file-types包开始。 sourcetext对语言进行分类 - source处理开发语言,而text处理文档/日志格式。 您可以通过阅读航班手册来添加和自定义语言识别。我已将以下某些特定部分与之相关联。

  

飞行手册|基本定制:

     
    

Language Recognition

         

Language Specific Settings

  

使用[data-grammar]

给出的小文档列在Keymaps in Depth部分下。

  

飞行手册|深度中的键盘映射

     
    

Selectors and Custom Packages

  

这也描述了下面使用的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都共享,否则我认为这是不可能的“源”(但在这种情况下,许多其他语法共享“源”)。唯一的其他方法是为每个语法分别指定一个键映射,即使它是相同的键组合。