This repository was archived by the owner on Dec 15, 2022. It is now read-only.
Make tab scrolling settings work #553
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Requirements
Description of the Change
Where to even start? The tabScrolling setting uses a mixed enum of booleans and strings, and declares its type as any. This should be fine...except that since settings-view determines the value of a setting by looking at the HTML value, all booleans are coerced to strings. Then
atom.config.setdecides that the new stringified value is not valid as it isn't in the valid list of values for tabScrolling and ignores it. The "fix" is to explicitly declare the enum as having types boolean and string, so thatatom.config.setwill coerce the stringified boolean back to an actual boolean before checking it against the schema...Oh, and I also fixed being unable to disable tab scrolling after you enabled it without restarting the tabs package, as the event listener wasn't being removed (function equality). The event listener is now always active but only does anything if the tabScrolling setting is enabled.
Alternate Designs
Fix settings-view, because there's nothing technically wrong with how tabs decided to implement this setting.
Benefits
Changing the tab scrolling setting through settings-view will work again, and tab scrolling can be disabled on the fly.
Possible Drawbacks
None.
Applicable Issues
Fixes #311