diff --git a/.python-version b/.python-version index eb39e53..cc1923a 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.3 +3.8 diff --git a/README.md b/README.md index efb8b58..64b5660 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -Helium package for Sublime Text 3 +Helium package for Sublime Text === -Helium is a package for Sublime Text 3, which provides in-editor code execution and autocomplete in interaction with Jupyter kernels. -The concept of an editor extension communicating Jupyter kernels is inspired by @nteract's splendid Atom package [Hydrogen](https://github.com/nteract/Hydrogen). I want something like it in Sublime Text 3, too. +Helium is a package for Sublime Text, which provides in-editor code execution and autocomplete in interaction with Jupyter kernels. +The concept of an editor extension communicating Jupyter kernels is inspired by @nteract's splendid Atom package [Hydrogen](https://github.com/nteract/Hydrogen). I want something like it in Sublime Text, too. Any feedback is highly welcome. I hope this package will help your life with ST3! diff --git a/dependencies.json b/dependencies.json index 642507d..da2ac48 100644 --- a/dependencies.json +++ b/dependencies.json @@ -1,30 +1,52 @@ { "windows": { - "*": [ + "<4000": [ "dateutil", "enum", "python-six", "pyzmq" + ], + ">=4000": [ + "dateutil", + "python-six", + "pyzmq", + "tornado" ] }, "osx": { - "*": [ + "<4000": [ "dateutil", "enum", "pexpect", "ptyprocess", "python-six", "pyzmq" + ], + ">=4000": [ + "dateutil", + "pexpect", + "ptyprocess", + "python-six", + "pyzmq", + "tornado" ] }, "linux": { - "*": [ + "<4000": [ "dateutil", "enum", "pexpect", "ptyprocess", "python-six", "pyzmq" + ], + ">=4000": [ + "dateutil", + "pexpect", + "ptyprocess", + "python-six", + "pyzmq", + "tornado" ] } } \ No newline at end of file diff --git a/helium.py b/helium.py index 1c6ee39..676e5b4 100644 --- a/helium.py +++ b/helium.py @@ -842,15 +842,14 @@ def cb(): sublime.set_timeout_async(cb, 0) def _get_parent_view(self) -> sublime.View: - for window in sublime.windows(): - for view in window.views(): - try: - kernel = ViewManager.get_kernel_for_view(view.buffer_id()) - except KeyError: - continue - - if kernel.get_view() == self.view: - return view + for view in sublime.active_window().views(): + try: + kernel = ViewManager.get_kernel_for_view(view.buffer_id()) + except KeyError: + continue + + if kernel.get_view() == self.view: + return view return None diff --git a/lib/client/jupyter_client/manager.py b/lib/client/jupyter_client/manager.py index 3df36fd..f3888f0 100644 --- a/lib/client/jupyter_client/manager.py +++ b/lib/client/jupyter_client/manager.py @@ -78,7 +78,7 @@ def _kernel_name_changed(self, name, old, new): @property def kernel_spec(self): - if self._kernel_spec is None and self.kernel_name is not '': + if self._kernel_spec is None and self.kernel_name != '': self._kernel_spec = self.kernel_spec_manager.get_kernel_spec(self.kernel_name) return self._kernel_spec diff --git a/lib/client/traitlets/config/loader.py b/lib/client/traitlets/config/loader.py index 803b362..c9ef77e 100644 --- a/lib/client/traitlets/config/loader.py +++ b/lib/client/traitlets/config/loader.py @@ -542,7 +542,7 @@ def _load_flag(self, cfg): # rejects: --anything=anything # --two.word -flag_pattern = re.compile(r'\-\-?\w+[\-\w]*$') +flag_pattern = re.compile(r'\-\-?\w[\-\w]*$') class KeyValueConfigLoader(CommandLineConfigLoader): """A config loader that loads key value pairs from the command line. @@ -669,7 +669,7 @@ def load_config(self, argv=None, aliases=None, flags=None): elif flag_pattern.match(raw): if item in flags: - cfg,help = flags[item] + cfg,_ = flags[item] self._load_flag(cfg) else: raise ArgumentError("Unrecognized flag: '%s'"%raw) @@ -792,7 +792,7 @@ def _add_arguments(self, aliases=None, flags=None): nargs = '?' else: nargs = None - if len(key) is 1: + if len(key) == 1: paa('-'+key, '--'+key, type=text_type, dest=value, nargs=nargs) else: paa('--'+key, type=text_type, dest=value, nargs=nargs) @@ -801,7 +801,7 @@ def _add_arguments(self, aliases=None, flags=None): # self.alias_flags[self.aliases[key]] = value continue - if len(key) is 1: + if len(key) == 1: paa('-'+key, '--'+key, action='append_const', dest='_flags', const=value) else: paa('--'+key, action='append_const', dest='_flags', const=value) diff --git a/lib/kernel.py b/lib/kernel.py index d44b394..1d8e3cb 100644 --- a/lib/kernel.py +++ b/lib/kernel.py @@ -320,20 +320,21 @@ def del_connection_name(self): @property def view_name(self): """Return name of output view.""" - return "*Helium Output* {repr}".format(repr=self.repr) + return "Helium: {repr}".format(repr=self.repr) @property def repr(self): """Return string representation of the connection.""" + shortened_kernel_id = str(self.kernel_id)[:6] if self.connection_name: return "{connection_name} ([{lang}] {kernel_id})".format( connection_name=self.connection_name, lang=self.lang, - kernel_id=self.kernel_id, + kernel_id=shortened_kernel_id, ) else: return "[{lang}] {kernel_id}".format( - lang=self.lang, kernel_id=self.kernel_id + lang=self.lang, kernel_id=shortened_kernel_id ) @property @@ -350,7 +351,8 @@ def activate_view(self): current_view = sublime.active_window().active_view() sublime.active_window().focus_view(view) view.set_scratch(True) # avoids prompting to save - view.settings().set("word_wrap", "false") + view.settings().set("gutter", False) + view.settings().set("line_numbers", False) sublime.active_window().focus_view(current_view) def _output_input_code(self, code, execution_count): @@ -578,6 +580,8 @@ def get_view(self): view = window.new_file() view.set_name(view_name) view.settings().set("syntax", "Packages/Helium/Helium.sublime-syntax") + view.settings().set("gutter", False) + view.settings().set("line_numbers", False) num_group = window.num_groups() if num_group != 1: if active_group + 1 < num_group: