From 4172a79117606ffaf23feba6dc38ced3fa759ea5 Mon Sep 17 00:00:00 2001
From: mathieui <mathieui@mathieui.net>
Date: Sat, 26 Apr 2014 14:27:02 +0200
Subject: Fix #2514 (add a /toggle command)

---
 src/core/commands.py    | 9 +++++++++
 src/core/completions.py | 4 ++++
 src/core/core.py        | 7 +++++++
 3 files changed, 20 insertions(+)

(limited to 'src')

diff --git a/src/core/commands.py b/src/core/commands.py
index 0815a80e..1c728283 100644
--- a/src/core/commands.py
+++ b/src/core/commands.py
@@ -620,6 +620,15 @@ def command_set(self, arg):
     self.call_for_resize()
     self.information(*info)
 
+def command_toggle(self, arg):
+    """
+    /toggle <option>
+    shortcut for /set <option> toggle
+    """
+    arg = arg.split()
+    if arg and arg[0]:
+        self.command_set('%s toggle' % arg[0])
+
 def command_server_cycle(self, arg=''):
     """
     Do a /cycle on each room of the given server.
diff --git a/src/core/completions.py b/src/core/completions.py
index 75122885..5387eefd 100644
--- a/src/core/completions.py
+++ b/src/core/completions.py
@@ -351,6 +351,10 @@ def completion_set(self, the_input):
         return
     return the_input.new_completion(end_list, n, quotify=True)
 
+def completion_toggle(self, the_input):
+    "Completion for /toggle"
+    return the_input.new_completion(config.options('Poezio'), 1, quotify=False)
+
 
 def completion_bookmark_local(self, the_input):
     """Completion for /bookmark_local"""
diff --git a/src/core/core.py b/src/core/core.py
index 5313e89d..4bb0725b 100644
--- a/src/core/core.py
+++ b/src/core/core.py
@@ -1688,6 +1688,11 @@ class Core(object):
                     "used as a special value to toggle a boolean option."),
                 shortdesc=_("Set the value of an option"),
                 completion=self.completion_set)
+        self.register_command('toggle', self.command_toggle,
+                usage=_('<option>'),
+                desc=_('Shortcut for /set <option> toggle'),
+                shortdesc=_('Toggle an option'),
+                completion=self.completion_toggle)
         self.register_command('theme', self.command_theme,
                 usage=_('[theme name]'),
                 desc=_("Reload the theme defined in the config file. If theme"
@@ -1866,6 +1871,7 @@ class Core(object):
     command_destroy_room = commands.command_destroy_room
     command_remove_bookmark = commands.command_remove_bookmark
     command_set = commands.command_set
+    command_toggle = commands.command_toggle
     command_server_cycle = commands.command_server_cycle
     command_last_activity = commands.command_last_activity
     command_mood = commands.command_mood
@@ -1904,6 +1910,7 @@ class Core(object):
     completion_last_activity = completions.completion_last_activity
     completion_server_cycle = completions.completion_server_cycle
     completion_set = completions.completion_set
+    completion_toggle = completions.completion_toggle
     completion_bookmark_local = completions.completion_bookmark_local
 
 
-- 
cgit v1.2.3