mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Start work on loading tree-sitter grammars in GrammarRegistry
This commit is contained in:
1
spec/fixtures/packages/package-with-tree-sitter-grammar/grammars/fake-parser.js
vendored
Normal file
1
spec/fixtures/packages/package-with-tree-sitter-grammar/grammars/fake-parser.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
exports.isFakeTreeSitterParser = true
|
||||
14
spec/fixtures/packages/package-with-tree-sitter-grammar/grammars/some-language.cson
vendored
Normal file
14
spec/fixtures/packages/package-with-tree-sitter-grammar/grammars/some-language.cson
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
name: 'Some Language'
|
||||
|
||||
id: 'some-language'
|
||||
|
||||
type: 'tree-sitter'
|
||||
|
||||
parser: './fake-parser'
|
||||
|
||||
fileTypes: [
|
||||
'somelang'
|
||||
]
|
||||
|
||||
scopes:
|
||||
'class > identifier': 'entity.name.type.class'
|
||||
@@ -13,8 +13,8 @@ describe('GrammarRegistry', () => {
|
||||
grammarRegistry = new GrammarRegistry({config: atom.config})
|
||||
})
|
||||
|
||||
describe('.assignLanguageMode(buffer, languageName)', () => {
|
||||
it('assigns to the buffer a language mode with the given language name', async () => {
|
||||
describe('.assignLanguageMode(buffer, languageId)', () => {
|
||||
it('assigns to the buffer a language mode with the given language id', async () => {
|
||||
grammarRegistry.loadGrammarSync(require.resolve('language-javascript/grammars/javascript.cson'))
|
||||
grammarRegistry.loadGrammarSync(require.resolve('language-css/grammars/css.cson'))
|
||||
|
||||
@@ -34,7 +34,7 @@ describe('GrammarRegistry', () => {
|
||||
expect(buffer.getLanguageMode().getLanguageId()).toBe('source.css')
|
||||
})
|
||||
|
||||
describe('when no languageName is passed', () => {
|
||||
describe('when no languageId is passed', () => {
|
||||
it('makes the buffer use the null grammar', () => {
|
||||
grammarRegistry.loadGrammarSync(require.resolve('language-css/grammars/css.cson'))
|
||||
|
||||
|
||||
@@ -1030,6 +1030,13 @@ describe('PackageManager', () => {
|
||||
expect(atom.grammars.selectGrammar('a.alot').name).toBe('Alot')
|
||||
expect(atom.grammars.selectGrammar('a.alittle').name).toBe('Alittle')
|
||||
})
|
||||
|
||||
it('loads any tree-sitter grammars defined in the package', async () => {
|
||||
await atom.packages.activatePackage('package-with-tree-sitter-grammar')
|
||||
const grammar = atom.grammars.selectGrammar('test.somelang')
|
||||
expect(grammar.name).toBe('Some Language')
|
||||
expect(grammar.languageModule.isFakeTreeSitterParser).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
describe('scoped-property loading', () => {
|
||||
|
||||
@@ -111,7 +111,8 @@ beforeEach ->
|
||||
new CompositeDisposable(
|
||||
@emitter.on("did-tokenize", callback),
|
||||
@onDidChangeGrammar =>
|
||||
if @buffer.getLanguageMode().tokenizeInBackground.originalValue
|
||||
languageMode = @buffer.getLanguageMode()
|
||||
if languageMode.tokenizeInBackground?.originalValue
|
||||
callback()
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user