blob: 66fd3818b13cf5770784bfc21fec44373b400552 [file] [log] [blame] [view]
# golangconfig Design
The `golangconfig` Sublime Text dependency was designed based on the following
ideas:
- Settings should be supported coming from the following sources, in order:
- Sublime Text project files under the `golang` key
- Any `golang.sublime-settings` files
- The user's shell environment, as defined by invoking their login shell
- 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:
- "osx"
- "windows"
- "linux"
- 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 `GOPATH`, `GOROOT`,
`PATH`, etc.
- 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.