diff --git a/.gitignore b/.gitignore index d36933db..d57723d6 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,5 @@ Main.sublime-menu # mypy cache .mypy_cache/ +/Context.sublime-menu +/Context.sublime-menu-hidden diff --git a/Context.sublime-menu b/Base Context.sublime-menu similarity index 100% rename from Context.sublime-menu rename to Base Context.sublime-menu diff --git a/anaconda.py b/anaconda.py index 2d2ec90e..1d10cfbb 100644 --- a/anaconda.py +++ b/anaconda.py @@ -9,6 +9,7 @@ import os import sys +import shutil import logging from string import Template @@ -31,6 +32,8 @@ logger.addHandler(logging.StreamHandler(sys.stdout)) logger.setLevel(logging.DEBUG) +CURRENT_PATH = os.path.dirname( os.path.realpath( __file__ ) ) + def plugin_loaded() -> None: """Called directly from sublime on plugin load @@ -56,6 +59,42 @@ def plugin_loaded() -> None: if not LOOP_RUNNING: ioloop.loop() + install_context_menu() + disable_linter_context_menu() + +def install_context_menu(): + origin = os.path.join( CURRENT_PATH, 'Base Context.sublime-menu' ) + destine = os.path.join( CURRENT_PATH, 'Context.sublime-menu' ) + + shutil.copy( origin, destine ) + +class HideMenuOnActivation(sublime_plugin.EventListener): + + def on_activated_async(self, view): + disable_linter_context_menu() + +def disable_linter_context_menu(): + """ + Disable the linter Context Menu, if not on a linter view. + + Allow to hide .sublime-menu folders + https://github.com/SublimeTextIssues/Core/issues/1859 + """ + origin = os.path.join( CURRENT_PATH, 'Context.sublime-menu' ) + destine = os.path.join( CURRENT_PATH, 'Context.sublime-menu-hidden' ) + + try: + if is_current_view_linted( sublime.active_window().active_view() ): + shutil.move( destine, origin ) + + else: + shutil.move( origin, destine ) + + except IOError: + pass + +def is_current_view_linted(view): + return view.match_selector( view.sel()[0].begin(), 'source.python') def plugin_unloaded() -> None: """Called directly from sublime on plugin unload