diff options
author | mathieui <mathieui@mathieui.net> | 2014-04-11 00:55:42 +0200 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2014-04-11 00:55:42 +0200 |
commit | 0847643b548d1f5014c1af56a86c0e6c2d7ce92f (patch) | |
tree | fc6d4e22462bc70bd04680e8409369529b98a28e | |
parent | d18fe6c477332afd2a81a4723c2951c8328d0cf1 (diff) | |
download | poezio-0847643b548d1f5014c1af56a86c0e6c2d7ce92f.tar.gz poezio-0847643b548d1f5014c1af56a86c0e6c2d7ce92f.tar.bz2 poezio-0847643b548d1f5014c1af56a86c0e6c2d7ce92f.tar.xz poezio-0847643b548d1f5014c1af56a86c0e6c2d7ce92f.zip |
Fix #2421 (load and unload several plugins)
-rw-r--r-- | doc/source/commands.rst | 8 | ||||
-rw-r--r-- | src/core/commands.py | 18 | ||||
-rw-r--r-- | src/core/core.py | 10 | ||||
-rw-r--r-- | 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 <plugin name>`` + **Usage:** ``/load <plugin name> [<other plugin> …]`` - Load or reload a plugin. + Load or reload one or several plugins. /unload - **Usage:** ``/unload <plugin name>`` + **Usage:** ``/unload <plugin name> [<other plugin> …]`` - 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 <plugin> + /load <plugin> [<otherplugin> …] """ 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 <plugin> + /unload <plugin> [<otherplugin> …] """ 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=_(' <key> <equ>'), + usage=_('<key> <equ>'), 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=_('<plugin>'), - shortdesc=_('Load the specified plugin'), + usage=_('<plugin> [<otherplugin> …]'), + shortdesc=_('Load the specified plugin(s)'), completion=self.plugin_manager.completion_load) self.register_command('unload', self.command_unload, - usage=_('<plugin>'), - shortdesc=_('Unload the specified plugin'), + usage=_('<plugin> [<otherplugin> …]'), + 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 |