mirror of
https://github.com/atom/atom.git
synced 2026-01-25 14:59:03 -05:00
Add TreeSitterLanguageMode.tokenForPosition
This commit is contained in:
@@ -1360,6 +1360,14 @@ describe('TreeSitterLanguageMode', () => {
|
||||
'source.js',
|
||||
'property.name'
|
||||
])
|
||||
|
||||
// Drive-by test for .tokenForPosition()
|
||||
const token = editor.tokenForBufferPosition([0, 'foo({b'.length])
|
||||
expect(token.value).toBe('bar')
|
||||
expect(token.scopes).toEqual([
|
||||
'source.js',
|
||||
'property.name'
|
||||
])
|
||||
})
|
||||
|
||||
it('includes nodes in injected syntax trees', async () => {
|
||||
|
||||
@@ -3,6 +3,7 @@ const {Point, Range, spliceArray} = require('text-buffer')
|
||||
const {Patch} = require('superstring')
|
||||
const {Emitter} = require('event-kit')
|
||||
const ScopeDescriptor = require('./scope-descriptor')
|
||||
const Token = require('./token')
|
||||
const TokenizedLine = require('./tokenized-line')
|
||||
const TextMateLanguageMode = require('./text-mate-language-mode')
|
||||
const {matcherForSelector} = require('./selectors')
|
||||
@@ -435,6 +436,12 @@ class TreeSitterLanguageMode {
|
||||
return new ScopeDescriptor({scopes})
|
||||
}
|
||||
|
||||
tokenForPosition (point) {
|
||||
const node = this.getSyntaxNodeAtPosition(point)
|
||||
const scopes = this.scopeDescriptorForPosition(point).getScopesArray()
|
||||
return new Token({value: node.text, scopes})
|
||||
}
|
||||
|
||||
getGrammar () {
|
||||
return this.grammar
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user