From 34f71a2623d8f1954fcb18edcf8c0dd2e55946be Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 6 Dec 2013 09:18:16 -0800 Subject: [PATCH] Observe editor.tabLength config in TokenizedBuffer Closes #1224 --- spec/tokenized-buffer-spec.coffee | 10 ++++++++++ src/config.coffee | 4 ++-- src/tokenized-buffer.coffee | 3 +++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/spec/tokenized-buffer-spec.coffee b/spec/tokenized-buffer-spec.coffee index 1fd9b98de..0ffd4181d 100644 --- a/spec/tokenized-buffer-spec.coffee +++ b/spec/tokenized-buffer-spec.coffee @@ -434,3 +434,13 @@ describe "TokenizedBuffer", -> describe "when the selector matches a run of multiple tokens at the position", -> it "returns the range covered by all contigous tokens (within a single line)", -> expect(tokenizedBuffer.bufferRangeForScopeAtPosition('.function', [1, 18])).toEqual [[1, 6], [1, 28]] + + describe "when the editor.tabLength config value changes", -> + it "updates the tab length of the tokenized lines", -> + buffer = atom.project.bufferForPathSync('sample.js') + buffer.setText('\ttest') + tokenizedBuffer = new TokenizedBuffer({buffer}) + fullyTokenize(tokenizedBuffer) + expect(tokenizedBuffer.tokenForPosition([0,0]).value).toBe ' ' + atom.config.set('editor.tabLength', 6) + expect(tokenizedBuffer.tokenForPosition([0,0]).value).toBe ' ' diff --git a/src/config.coffee b/src/config.coffee index 044bd3382..24990ab51 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -125,11 +125,11 @@ class Config # # keyPath - The {String} name of the key to retrieve # defaultValue - The integer {Number} to fall back to if the value isn't - # positive + # positive, defaults to 0. # # Returns the value from Atom's default settings, the user's configuration file, # or `defaultValue` if the key value isn't greater than zero. - getPositiveInt: (keyPath, defaultValue) -> + getPositiveInt: (keyPath, defaultValue=0) -> Math.max(@getInt(keyPath), 0) or defaultValue # Public: Sets the value for a configuration setting. diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index 0b6ba31dd..5a30c7de0 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -50,6 +50,9 @@ class TokenizedBuffer @subscribe @buffer, "changed", (e) => @handleBufferChange(e) @subscribe @buffer, "path-changed", => @state.set('bufferPath', @buffer.getPath()) + @subscribe atom.config.observe 'editor.tabLength', callNow: false, => + @setTabLength(atom.config.getPositiveInt('editor.tabLength')) + @reloadGrammar() serialize: -> @state.clone()