在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C++/ 作用域設(shè)置、作用域和作用域描述符
調(diào)試
初始文件
作用域設(shè)置、作用域和作用域描述符
在Atom中移動(dòng)
在Atom背后
Atom中的包
為什么選擇Atom?
從Textmate中轉(zhuǎn)換
小結(jié)
新手入門(mén)
折疊
代碼段
Hacking Atom
基本的自定義
Atom中的序列化
文本處理包
字?jǐn)?shù)統(tǒng)計(jì)包
所需工具
維護(hù)你的包
Atom基礎(chǔ)
深入鍵表(keymap)
配置API
使用Atom
自動(dòng)補(bǔ)全
面板
在Atom中寫(xiě)作
文本選擇
創(chuàng)建主題
圖標(biāo)
小結(jié)
開(kāi)發(fā)Node模塊
編輯和刪除文本
安裝Atom
通過(guò)服務(wù)和其它包交互
小結(jié)
編寫(xiě) spec
語(yǔ)法
Atom中的版本控制
查找和替換

作用域設(shè)置、作用域和作用域描述符

Atom支持語(yǔ)言特定的設(shè)置。你可以在Markdown文件中軟換行,或者在Python中把tab的寬度設(shè)置為4。

語(yǔ)言特定的設(shè)置只是一些東西的子集,我們把它叫做“作用域設(shè)置”。作用域設(shè)置可以只作用于一類(lèi)特定的語(yǔ)法符號(hào)。比如你可以?xún)H僅對(duì)Ruby的注釋?zhuān)琈arkdown中的代碼段,或者JavaScript函數(shù)名稱(chēng)進(jìn)行設(shè)置。

語(yǔ)法符號(hào)中的作用域名稱(chēng)

編輯器的每個(gè)符號(hào)都有一系列的作用域名稱(chēng)。例如,前面提到的JavaScript函數(shù)可能擁有作用域functionname。一個(gè)左括號(hào)可能擁有punctuationparametersbegin作用域。

作用域的名稱(chēng)就像CSS中的class一樣工作。事實(shí)上,編輯器中的作用域名稱(chēng)作為CSS的class附加到符號(hào)的DOM節(jié)點(diǎn)。

比如這段JavaScript代碼:

function functionName() {
  console.log('Log it out');
}

在開(kāi)發(fā)工具中,第一行的標(biāo)記就像這樣:

http://wiki.jikexueyuan.com/project/atom-flight-manual-zh-cn/images/markup.png" alt="" />

span標(biāo)簽上的所有class名稱(chēng)都是作用域名稱(chēng)。任何作用域名稱(chēng)都用于指向一個(gè)設(shè)置的值。

作用域選擇器

作用域選擇器允許你指向特性符號(hào),就像CSS選擇器指向DOM中特定的節(jié)點(diǎn)。這里是一些例子:

'.source.js' # selects all javascript tokens
'.source.js .function.name' # selects all javascript function names
'.function.name' # selects all function names in any language

Config::set接受一個(gè)scopeSelector。如果你想要對(duì)JavaScript 函數(shù)名稱(chēng)進(jìn)行設(shè)置,你可以向它提供一個(gè)js函數(shù)名稱(chēng)的scopeSelector

atom.config.set('.source.js .function.name', 'my-package.my-setting', 'special value')

作用域描述符

作用域描述符是一個(gè)對(duì)象,它封裝了一個(gè)字符串?dāng)?shù)組。數(shù)組描述了從語(yǔ)法樹(shù)根節(jié)點(diǎn)到符號(hào)的路徑,包含整個(gè)路徑的所有作用域名稱(chēng)。

在上面的JavaScript例子中,函數(shù)名稱(chēng)符號(hào)的作用域描述符應(yīng)該為:

['source.js', 'meta.function.js', 'entity.name.function.js']

Config::get接受一個(gè)scopeDescriptor,你可以從作用在JavaScript函數(shù)名稱(chēng)的設(shè)置中獲取值,通過(guò):

scopeDescriptor = ['source.js', 'meta.function.js', 'entity.name.function.js']
value = atom.config.get(scopeDescriptor, 'my-package.my-setting')

但是你并不需要手動(dòng)生成作用域描述符。有一些可用的方法來(lái)從編輯器獲取作用域描述符:

  • Editor::getRootScopeDescriptor獲取語(yǔ)言的描述符,例如[".source.js"]。
  • Editor::scopeDescriptorForBufferPosition獲取緩沖區(qū)中特定位置的描述符。
  • Cursor::getScopeDescriptor獲取光標(biāo)處的描述符。例如,如果光標(biāo)在例子中的方法名稱(chēng)上面,會(huì)返回["source.js", "meta.function.js", "entity.name.function.js"]。

讓我們使用這些方法來(lái)回顧我們的例子:

editor = atom.workspace.getActiveTextEditor()
cursor = editor.getLastCursor()
valueAtCursor = atom.config.get(cursor.getScopeDescriptor(), 'my-package.my-setting')
valueForLanguage = atom.config.get(editor.getRootScopeDescriptor(), 'my-package.my-setting')