I think it only has a chance of occurring at startup, but I'm not 100% sure. I believe it only applies to accessing a value not currently in
view.settings. It seems like there is a weird case where any setting you attempt to access that does not exist will return None despite what you give as a default. But it is very sporadic as other times we don't get None.
Some of my plugins will write info to the
view.settings to access view specific info later, so I'd expect if they haven't been set yet, that you'd get the manually provided default instead of None.
I'm not usually accessing view specific settings directly in
plugin_loaded. I'm either accessing them in normal sublime commands, Sublime events, things like that. I may access them from a function that is called from a thread, but the thread kicks off this action by calling
sublime.set_timeout_async and usually only once a normal sublime event has communicated that it has processed an event that we need to take action on.