golangconfig: Fix operation when no project file is open in ST3
Previously settings loading functionality assumed that a project
was opened when being run in Sublime Text 3. This fixes the mocks
to properly replicate the behavior of ST3, and adds a check to
_get_most_specific_setting() before trying to use project data.
Change-Id: Ia646345701092f454fd762af2bb527a51d530ef2
Reviewed-on: https://go-review.googlesource.com/16250
Reviewed-by: Jason Buberel <jbuberel@google.com>
diff --git a/all/golangconfig.py b/all/golangconfig.py
index a59386d..d73d72c 100644
--- a/all/golangconfig.py
+++ b/all/golangconfig.py
@@ -465,7 +465,7 @@
window_settings = {}
if window:
- if sys.version_info >= (3,):
+ if sys.version_info >= (3,) and window.project_data():
window_settings = window.project_data().get('settings', {}).get('golang', {})
elif not view and window.active_view():
window_settings = window.active_view().settings().get('golang', {})
diff --git a/dev/mocks.py b/dev/mocks.py
index 3085c70..daac24c 100644
--- a/dev/mocks.py
+++ b/dev/mocks.py
@@ -30,7 +30,10 @@
if self.window():
# In Sublime Text, View objects inherit settings from the window/project
# unless they are explicitly set on the view, so we replicate that here
- merged_golang_settings = self.window().project_data().get('settings', {}).get('golang', {}).copy()
+ merged_golang_settings = {}
+ project_data = self.window().project_data()
+ if project_data:
+ merged_golang_settings.update(project_data.get('settings', {}).get('golang', {}).copy())
merged_golang_settings.update(self._settings)
elif self._settings:
merged_golang_settings = self._settings.copy()
@@ -52,6 +55,8 @@
self._context = context
def project_data(self):
+ if self._settings is None:
+ return None
return {'settings': {'golang': self._settings}}
def active_view(self):
@@ -214,8 +219,6 @@
@property
def window(self):
- if self._window_settings is None:
- return None
return SublimeWindowMock(self._window_settings, self)
@property