From 0847643b548d1f5014c1af56a86c0e6c2d7ce92f Mon Sep 17 00:00:00 2001 From: mathieui Date: Fri, 11 Apr 2014 00:55:42 +0200 Subject: Fix #2421 (load and unload several plugins) --- doc/source/commands.rst | 8 ++++---- src/core/commands.py | 18 ++++++------------ src/core/core.py | 10 +++++----- src/plugin_manager.py | 8 +++++--- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/doc/source/commands.rst b/doc/source/commands.rst index 20eeede1..746fbafb 100644 --- a/doc/source/commands.rst +++ b/doc/source/commands.rst @@ -60,14 +60,14 @@ These commands work in *any* tab. Just disconnect from the server and exit poezio. /load - **Usage:** ``/load `` + **Usage:** ``/load [ …]`` - Load or reload a plugin. + Load or reload one or several plugins. /unload - **Usage:** ``/unload `` + **Usage:** ``/unload [ …]`` - Unload a plugin. + Unload one or several plugins. /plugins List the loaded plugins. diff --git a/src/core/commands.py b/src/core/commands.py index 68a6eacf..f2a6d2f4 100644 --- a/src/core/commands.py +++ b/src/core/commands.py @@ -797,25 +797,19 @@ def command_rawxml(self, arg): def command_load(self, arg): """ - /load + /load [ …] """ args = arg.split() - if len(args) != 1: - self.command_help('load') - return - filename = args[0] - self.plugin_manager.load(filename) + for plugin in args: + self.plugin_manager.load(plugin) def command_unload(self, arg): """ - /unload + /unload [ …] """ args = arg.split() - if len(args) != 1: - self.command_help('unload') - return - filename = args[0] - self.plugin_manager.unload(filename) + for plugin in args: + self.plugin_manager.unload(plugin) def command_plugins(self, arg=''): """ diff --git a/src/core/core.py b/src/core/core.py index c3090bf6..39eb31b7 100644 --- a/src/core/core.py +++ b/src/core/core.py @@ -1542,19 +1542,19 @@ class Core(object): shortdesc=_('Cycle a range of rooms'), completion=self.completion_server_cycle) self.register_command('bind', self.command_bind, - usage=_(' '), + usage=_(' '), desc=_("Bind a key to another key or to a “command”. For " "example \"/bind ^H KEY_UP\" makes Control + h do the" " same same as the Up key."), completion=self.completion_bind, shortdesc=_('Bind a key to another key.')) self.register_command('load', self.command_load, - usage=_(''), - shortdesc=_('Load the specified plugin'), + usage=_(' [ …]'), + shortdesc=_('Load the specified plugin(s)'), completion=self.plugin_manager.completion_load) self.register_command('unload', self.command_unload, - usage=_(''), - shortdesc=_('Unload the specified plugin'), + usage=_(' [ …]'), + shortdesc=_('Unload the specified plugin(s)'), completion=self.plugin_manager.completion_unload) self.register_command('plugins', self.command_plugins, shortdesc=_('Show the plugins in use.')) diff --git a/src/plugin_manager.py b/src/plugin_manager.py index 28dde603..dc6199e7 100644 --- a/src/plugin_manager.py +++ b/src/plugin_manager.py @@ -110,7 +110,7 @@ class PluginManager(object): else: # 3.3 & > loader = finder.find_module(name, load_path) if not loader: - self.core.information('Could not find plugin') + self.core.information('Could not find plugin: %s' % name) return module = loader.load_module() @@ -311,13 +311,15 @@ class PluginManager(object): plugins_files = [name[:-3] for name in names if name.endswith('.py') and name != '__init__.py' and not name.startswith('.')] plugins_files.sort() - return the_input.new_completion(plugins_files, 1, '', quotify=False) + position = the_input.get_argument_position(quoted=False) + return the_input.new_completion(plugins_files, position, '', quotify=False) def completion_unload(self, the_input): """ completion function that completes the name of the plugins that are loaded """ - return the_input.new_completion(sorted(self.plugins.keys()), 1, '', quotify=False) + position = the_input.get_argument_position(quoted=False) + return the_input.new_completion(sorted(self.plugins.keys()), position, '', quotify=False) def on_plugins_dir_change(self, new_value): global plugins_dir -- cgit v1.2.3