Skip to content

Commit 1e1c052

Browse files
Max Brunsfeldmaxbrunsfeld
authored andcommitted
Merge pull request atom#17218 from atom/mb-live-update-for-tree-sitter-setting
Update existing editors' language modes when toggling tree-sitter feature flag
1 parent 844918a commit 1e1c052

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

spec/grammar-registry-spec.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ describe('GrammarRegistry', () => {
1414

1515
beforeEach(() => {
1616
grammarRegistry = new GrammarRegistry({config: atom.config})
17+
expect(subscriptionCount(grammarRegistry)).toBe(1)
1718
})
1819

1920
describe('.assignLanguageMode(buffer, languageId)', () => {
@@ -207,16 +208,16 @@ describe('GrammarRegistry', () => {
207208

208209
const disposable = grammarRegistry.maintainLanguageMode(buffer)
209210
expect(retainedBufferCount(grammarRegistry)).toBe(1)
210-
expect(subscriptionCount(grammarRegistry)).toBe(2)
211+
expect(subscriptionCount(grammarRegistry)).toBe(3)
211212

212213
buffer.destroy()
213214
expect(retainedBufferCount(grammarRegistry)).toBe(0)
214-
expect(subscriptionCount(grammarRegistry)).toBe(0)
215+
expect(subscriptionCount(grammarRegistry)).toBe(1)
215216
expect(buffer.emitter.getTotalListenerCount()).toBe(0)
216217

217218
disposable.dispose()
218219
expect(retainedBufferCount(grammarRegistry)).toBe(0)
219-
expect(subscriptionCount(grammarRegistry)).toBe(0)
220+
expect(subscriptionCount(grammarRegistry)).toBe(1)
220221
})
221222

222223
it('does not retain the buffer when the grammar registry is destroyed', () => {
@@ -225,12 +226,12 @@ describe('GrammarRegistry', () => {
225226

226227
const disposable = grammarRegistry.maintainLanguageMode(buffer)
227228
expect(retainedBufferCount(grammarRegistry)).toBe(1)
228-
expect(subscriptionCount(grammarRegistry)).toBe(2)
229+
expect(subscriptionCount(grammarRegistry)).toBe(3)
229230

230231
grammarRegistry.clear()
231232

232233
expect(retainedBufferCount(grammarRegistry)).toBe(0)
233-
expect(subscriptionCount(grammarRegistry)).toBe(0)
234+
expect(subscriptionCount(grammarRegistry)).toBe(1)
234235
expect(buffer.emitter.getTotalListenerCount()).toBe(0)
235236
})
236237
})

src/grammar-registry.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ class GrammarRegistry {
3838
const grammarAddedOrUpdated = this.grammarAddedOrUpdated.bind(this)
3939
this.textmateRegistry.onDidAddGrammar(grammarAddedOrUpdated)
4040
this.textmateRegistry.onDidUpdateGrammar(grammarAddedOrUpdated)
41+
42+
this.subscriptions.add(this.config.onDidChange('core.useTreeSitterParsers', () => {
43+
this.grammarScoresByBuffer.forEach((score, buffer) => {
44+
if (!this.languageOverridesByBufferId.has(buffer.id)) {
45+
this.autoAssignLanguageMode(buffer)
46+
}
47+
})
48+
}))
4149
}
4250

4351
serialize () {

src/text-editor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4093,7 +4093,7 @@ class TextEditor {
40934093
// Extended: Unfold all existing folds.
40944094
unfoldAll () {
40954095
const result = this.displayLayer.destroyAllFolds()
4096-
this.scrollToCursorPosition()
4096+
if (result.length > 0) this.scrollToCursorPosition()
40974097
return result
40984098
}
40994099

0 commit comments

Comments
 (0)