mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-05-16 10:49:24 +00:00
[commands] Fix ext.commands help page full-width indentation
add _string_width function to util. Changed string width calculate function from len() to util function _string_width().
This commit is contained in:
parent
e53c85110f
commit
d107f485a5
discord
@ -26,6 +26,7 @@ DEALINGS IN THE SOFTWARE.
|
||||
|
||||
import itertools
|
||||
import inspect
|
||||
import discord.utils
|
||||
|
||||
from .core import GroupMixin, Command
|
||||
from .errors import CommandError
|
||||
@ -172,7 +173,7 @@ class HelpFormatter:
|
||||
try:
|
||||
commands = self.command.all_commands if not self.is_cog() else self.context.bot.all_commands
|
||||
if commands:
|
||||
return max(map(lambda c: len(c.name) if self.show_hidden or not c.hidden else 0, commands.values()))
|
||||
return max(map(lambda c: discord.utils._string_width(c.name) if self.show_hidden or not c.hidden else 0, commands.values()))
|
||||
return 0
|
||||
except AttributeError:
|
||||
return len(self.command.name)
|
||||
@ -250,8 +251,8 @@ class HelpFormatter:
|
||||
if name in command.aliases:
|
||||
# skip aliases
|
||||
continue
|
||||
|
||||
entry = ' {0:<{width}} {1}'.format(name, command.short_doc, width=max_width)
|
||||
width_gap = discord.utils._string_width(name) - len(name)
|
||||
entry = ' {0:<{width}} {1}'.format(name, command.short_doc, width=max_width-width_gap)
|
||||
shortened = self.shorten(entry)
|
||||
self._paginator.add_line(shortened)
|
||||
|
||||
|
@ -26,6 +26,7 @@ DEALINGS IN THE SOFTWARE.
|
||||
|
||||
import array
|
||||
import asyncio
|
||||
import unicodedata
|
||||
from base64 import b64encode
|
||||
from bisect import bisect_left
|
||||
import datetime
|
||||
@ -39,6 +40,7 @@ import warnings
|
||||
from .errors import InvalidArgument
|
||||
|
||||
DISCORD_EPOCH = 1420070400000
|
||||
UNICODE_WIDE_CHAR_TYPE = u"WFA"
|
||||
|
||||
class cached_property:
|
||||
def __init__(self, function):
|
||||
@ -324,3 +326,10 @@ class SnowflakeList(array.array):
|
||||
def has(self, element):
|
||||
i = bisect_left(self, element)
|
||||
return i != len(self) and self[i] == element
|
||||
|
||||
def _string_width(string):
|
||||
"""Returns string's width."""
|
||||
width = 0
|
||||
for char in string:
|
||||
width += 2 if unicodedata.east_asian_width(char) in UNICODE_WIDE_CHAR_TYPE else 1
|
||||
return width
|
||||
|
Loading…
x
Reference in New Issue
Block a user