--- a/eric6.py Sun Apr 22 14:01:39 2018 +0200 +++ b/eric6.py Sun Apr 22 19:21:44 2018 +0200 @@ -17,7 +17,8 @@ # generate list of arguments to be remembered for a restart restartArgsList = ["--no-splash", "--plugin", "--debug", "--config", - "--pyqt4", "--settings", "--disable-crash"] + "--pyqt4", "--settings", "--disable-crash", + "--disable-plugin"] restartArgs = [arg for arg in sys.argv[1:] if arg.split("=", 1)[0] in restartArgsList] @@ -114,20 +115,38 @@ if res > 0: if "--no-splash" in sys.argv and \ sys.argv.index("--no-splash") < ddindex: - del sys.argv[sys.argv.index("--no-splash")] + sys.argv.remove("--no-splash") + ddindex -= 1 if "--no-open" in sys.argv and sys.argv.index("--no-open") < ddindex: - del sys.argv[sys.argv.index("--no-open")] + sys.argv.remove("--no-open") + ddindex -= 1 if "--no-crash" in sys.argv and sys.argv.index("--no-crash") < ddindex: - del sys.argv[sys.argv.index("--no-crash")] + sys.argv.remove("--no-crash") if "--disable-crash" in sys.argv and \ sys.argv.index("--disable-crash") < ddindex: - del sys.argv[sys.argv.index("--disable-crash")] + sys.argv.remove("--disable-crash") + ddindex -= 1 if "--debug" in sys.argv and sys.argv.index("--debug") < ddindex: - del sys.argv[sys.argv.index("--debug")] + sys.argv.remove("--debug") + ddindex -= 1 + for arg in sys.argv: + if arg.startswith("--config=") and \ + sys.argv.index(arg) < ddindex: + sys.argv.remove(arg) + ddindex -= 1 + break for arg in sys.argv: - if arg.startswith("--config="): + if arg.startswith("--plugin=") and \ + sys.argv.index(arg) < ddindex: sys.argv.remove(arg) + ddindex -= 1 break + for arg in sys.argv[:]: + if arg.startswith("--disable-plugin=") and \ + sys.argv.index(arg) < ddindex: + sys.argv.remove(arg) + ddindex -= 1 + if len(sys.argv) > 1: client.processArgs(sys.argv[1:]) sys.exit(0) @@ -247,6 +266,8 @@ "don't open anything at startup except that given in command"), ("--no-crash", "don't check for a crash session file on startup"), ("--disable-crash", "disable the support for crash sessions"), + ("--disable-plugin=<plug-in name>", + "disable the given plug-in (may be repeated)"), ("--plugin=plugin-file", "load the given plugin file (plugin development)"), ("--pyqt4", @@ -286,11 +307,12 @@ # set the search path for icons Startup.initializeResourceSearchPath() - + # generate and show a splash window, if not suppressed from UI.SplashScreen import SplashScreen, NoneSplashScreen if "--no-splash" in sys.argv and sys.argv.index("--no-splash") < ddindex: - del sys.argv[sys.argv.index("--no-splash")] + sys.argv.remove("--no-splash") + ddindex -= 1 splash = NoneSplashScreen() elif not Preferences.getUI("ShowSplash"): splash = NoneSplashScreen() @@ -313,22 +335,35 @@ noopen = False nocrash = False disablecrash = False + disabledPlugins = [] if "--no-open" in sys.argv and sys.argv.index("--no-open") < ddindex: - del sys.argv[sys.argv.index("--no-open")] + sys.argv.remove("--no-open") + ddindex -= 1 noopen = True if "--no-crash" in sys.argv and sys.argv.index("--no-crash") < ddindex: - del sys.argv[sys.argv.index("--no-crash")] + sys.argv.remove("--no-crash") + ddindex -= 1 nocrash = True if "--disable-crash" in sys.argv and \ sys.argv.index("--disable-crash") < ddindex: - del sys.argv[sys.argv.index("--disable-crash")] + sys.argv.remove("--disable-crash") + ddindex -= 1 disablecrash = True + for arg in sys.argv[:]: + if arg.startswith("--disable-plugin=") and \ + sys.argv.index(arg) < ddindex: + # extract the plug-in name + pluginName = arg.replace("--disable-plugin=", "") + sys.argv.remove(arg) + ddindex -= 1 + disabledPlugins.append(pluginName) for arg in sys.argv: if arg.startswith("--plugin=") and sys.argv.index(arg) < ddindex: import Utilities # extract the plugin development option pluginFile = arg.replace("--plugin=", "").replace('"', "") sys.argv.remove(arg) + ddindex -= 1 pluginFile = os.path.expanduser(pluginFile) pluginFile = Utilities.normabspath(pluginFile) break @@ -357,8 +392,8 @@ splash.showMessage( QCoreApplication.translate("eric6", "Generating Main Window...")) - mainWindow = UserInterface(app, loc, splash, pluginFile, noopen, nocrash, - disablecrash, restartArgs) + mainWindow = UserInterface(app, loc, splash, pluginFile, disabledPlugins, + noopen, nocrash, disablecrash, restartArgs) app.lastWindowClosed.connect(app.quit) mainWindow.show()