golangconfig Sublime Text dependency was designed based on the following ideas:
Settings should be supported coming from the following sources, in order:
The project and global Sublime Text settings will also allow for placing settings in a platform-specific sub-dictionary to allow users to easily work across different operating systems. The keys for these are used by other ST packages to allow for platform-specific functionality:
Platform-specific settings are always higher priority than non-platform-specific, no matter what source they are pulled from
Setting names that are core to Go configuration preserve the uppercase style of environment variables. Thus the settings are named
When returning results, the value requested is returned along with a user-friendly source description that can be used when displaying configuration details to the user
The API eschews duck-typing in an attempt to prevent various edge-case bugs. This is largely due to the weak-typing issues of strings in Python 2 where byte strings and unicode strings are often mixed, only to cause exceptions at runtime on user machines where errors are harder to capture.