diff --git a/evennia/commands/default/help.py b/evennia/commands/default/help.py index e62024ee03..a66d198f40 100644 --- a/evennia/commands/default/help.py +++ b/evennia/commands/default/help.py @@ -49,6 +49,12 @@ class CmdHelp(Command): # 'help_more' flag to False. help_more = True + # suggestion cutoff, between 0 and 1 (1 => perfect match) + suggestion_cutoff = 0.6 + + # number of suggestions (set to 0 to remove suggestions from help) + suggestion_maxnum = 5 + def msg_help(self, text): """ messages text to the caller, adding an extra oob argument to indicate @@ -178,8 +184,8 @@ class CmdHelp(Command): query, cmdset = self.args, self.cmdset caller = self.caller - suggestion_cutoff = 0.6 - suggestion_maxnum = 5 + suggestion_cutoff = self.suggestion_cutoff + suggestion_maxnum = self.suggestion_maxnum if not query: query = "all" @@ -211,12 +217,14 @@ class CmdHelp(Command): # Try to access a particular command # build vocabulary of suggestions and rate them by string similarity. - vocabulary = [cmd.key for cmd in all_cmds if cmd] + [topic.key for topic in all_topics] + all_categories - [vocabulary.extend(cmd.aliases) for cmd in all_cmds] - suggestions = [sugg for sugg in string_suggestions(query, set(vocabulary), cutoff=suggestion_cutoff, maxnum=suggestion_maxnum) - if sugg != query] - if not suggestions: - suggestions = [sugg for sugg in vocabulary if sugg != query and sugg.startswith(query)] + suggestions = None + if suggestion_maxnum > 0: + vocabulary = [cmd.key for cmd in all_cmds if cmd] + [topic.key for topic in all_topics] + all_categories + [vocabulary.extend(cmd.aliases) for cmd in all_cmds] + suggestions = [sugg for sugg in string_suggestions(query, set(vocabulary), cutoff=suggestion_cutoff, maxnum=suggestion_maxnum) + if sugg != query] + if not suggestions: + suggestions = [sugg for sugg in vocabulary if sugg != query and sugg.startswith(query)] # try an exact command auto-help match match = [cmd for cmd in all_cmds if cmd == query] diff --git a/evennia/comms/channelhandler.py b/evennia/comms/channelhandler.py index ff4166e132..b5f79515b1 100644 --- a/evennia/comms/channelhandler.py +++ b/evennia/comms/channelhandler.py @@ -66,6 +66,7 @@ class ChannelCommand(command.Command): key = "general" help_category = "Channel Names" obj = None + arg_regex = r"\s.*?|/history.*?" def parse(self): """ @@ -212,7 +213,6 @@ class ChannelHandler(object): locks="cmd:all();%s" % channel.locks, help_category="Channel names", obj=channel, - arg_regex=r"\s.*?|/history.*?", is_channel=True) # format the help entry key = channel.key diff --git a/evennia/contrib/rpsystem.py b/evennia/contrib/rpsystem.py index e3d349a05f..93ecb3cf6d 100644 --- a/evennia/contrib/rpsystem.py +++ b/evennia/contrib/rpsystem.py @@ -627,7 +627,7 @@ class SdescHandler(object): def get(self): """ Simple getter. The sdesc should never be allowed to - be empty, but it is we must fall back to the key. + be empty, but if it is we must fall back to the key. """ return self.sdesc or self.obj.key