summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2014-04-11 00:55:42 +0200
committermathieui <mathieui@mathieui.net>2014-04-11 00:55:42 +0200
commit0847643b548d1f5014c1af56a86c0e6c2d7ce92f (patch)
treefc6d4e22462bc70bd04680e8409369529b98a28e
parentd18fe6c477332afd2a81a4723c2951c8328d0cf1 (diff)
downloadpoezio-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.rst8
-rw-r--r--src/core/commands.py18
-rw-r--r--src/core/core.py10
-rw-r--r--src/plugin_manager.py8
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