diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/locale/en-US/repeat.xml | 5 | ||||
-rw-r--r-- | common/modules/contexts.jsm | 15 |
2 files changed, 16 insertions, 4 deletions
diff --git a/common/locale/en-US/repeat.xml b/common/locale/en-US/repeat.xml index 41db7e4b..cc44e4d6 100644 --- a/common/locale/en-US/repeat.xml +++ b/common/locale/en-US/repeat.xml @@ -189,10 +189,13 @@ </item> <item> + <tags>:delgr :delgroup</tags> <spec>:delgr<oa>oup</oa> <a>group</a></spec> + <spec>:delgr<oa>oup</oa>!</spec> <description> <p> - Delete the specified <a>group</a>. + Delete the specified <a>group</a>. With <oa>!</oa> delete all + user groups. </p> </description> </item> diff --git a/common/modules/contexts.jsm b/common/modules/contexts.jsm index febafca4..d4df4a8f 100644 --- a/common/modules/contexts.jsm +++ b/common/modules/contexts.jsm @@ -570,12 +570,21 @@ var Contexts = Module("contexts", { commands.add(["delg[roup]"], "Delete a group", function (args) { - util.assert(contexts.getGroup(args[0]), _("group.noSuch", args[0])); - contexts.removeGroup(args[0]); + util.assert(args.bang ^ !!args[0], _("error.argumentOrBang")); + + if (args.bang) + contexts.groupList = contexts.groupList.filter(function (g) g.builtin); + else { + util.assert(contexts.getGroup(args[0]), _("group.noSuch", args[0])); + contexts.removeGroup(args[0]); + } }, { - argCount: "1", + argCount: "?", + bang: true, completer: function (context, args) { + if (args.bang) + return; modules.completion.group(context); context.filters.push(function ({ item }) !item.builtin); } |