diff --git a/.travis.yml b/.travis.yml
index 6144ff7..d4504af 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,6 +18,8 @@ install:
 script:
   - flake8 click_aliases examples tests setup.py -v --show-source
   - py.test tests --cov click_aliases --cov-report term-missing
+  - pip install 'click>6,<7'
+  - py.test tests --cov click_aliases --cov-report term-missing --cov-append
 
 after_success:
   - coveralls
diff --git a/click_aliases/__init__.py b/click_aliases/__init__.py
index 32e1f08..b49b0c8 100644
--- a/click_aliases/__init__.py
+++ b/click_aliases/__init__.py
@@ -5,6 +5,8 @@
 
 import click
 
+_click7 = click.__version__[0] >= '7'
+
 
 class ClickAliasedGroup(click.Group):
     def __init__(self, *args, **kwargs):
@@ -53,7 +55,13 @@ class ClickAliasedGroup(click.Group):
 
     def format_commands(self, ctx, formatter):
         rows = []
-        for sub_command in self.list_commands(ctx):
+
+        sub_commands = self.list_commands(ctx)
+
+        max_len = max(len(cmd) for cmd in sub_commands)
+        limit = formatter.width - 6 - max_len
+
+        for sub_command in sub_commands:
             cmd = self.get_command(ctx, sub_command)
             if cmd is None:
                 continue
@@ -62,8 +70,12 @@ class ClickAliasedGroup(click.Group):
             if sub_command in self._commands:
                 aliases = ','.join(sorted(self._commands[sub_command]))
                 sub_command = '{0} ({1})'.format(sub_command, aliases)
-            cmd_help = cmd.short_help or ''
+            if _click7:
+                cmd_help = cmd.get_short_help_str(limit)
+            else:
+                cmd_help = cmd.short_help or ''
             rows.append((sub_command, cmd_help))
+
         if rows:
             with formatter.section('Commands'):
                 formatter.write_dl(rows)
diff --git a/examples/foobar.py b/examples/foobar.py
index bd70402..3de5fa2 100644
--- a/examples/foobar.py
+++ b/examples/foobar.py
@@ -1,4 +1,5 @@
 import click
+
 from click_aliases import ClickAliasedGroup
 
 
diff --git a/examples/naval.py b/examples/naval.py
index 66c22f0..ba82e50 100644
--- a/examples/naval.py
+++ b/examples/naval.py
@@ -1,4 +1,5 @@
 import click
+
 from click_aliases import ClickAliasedGroup
 
 
diff --git a/tox.ini b/tox.ini
index 1011ba9..52f509b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,4 +1,10 @@
+[tox]
+toxenv = py{27,34,35,36,36}-click{6,7}
+
 [testenv]
 passenv = LANG
-deps = pytest
+deps =
+  click6: click>6,<7
+  click7: click>=7,<8
+  pytest
 commands = py.test

Broken with click 7
https://travis-ci.org/jayvdb/click-aliases/jobs/568251511
```
runner = <click.testing.CliRunner object at 0x7fb65f97a550>
    def test_cli(runner):
        result = runner.invoke(cli)
>       assert result.output == TEST_CLI
E       AssertionError: assert 'Usage: cli [... ship (boat)\n' == 'Usage: cli [O...ages ships.\n'
E         Skipping 116 identical leading characters in diff, use -v to show
E         - ine (bomb)
E         -   ship (boat)
E         + ine (bomb)  Manages mines.
E         +   ship (boat)  Manages ships.
tests/test_naval.py:88: AssertionError

________________________________ test_ship_help ________________________________
runner = <click.testing.CliRunner object at 0x7fb65f97b110>

    def test_ship_help(runner):
        for cmd in ['ship', 'boat']:
            result = runner.invoke(cli, [cmd])
>           assert result.output == TEST_SHIP_HELP.format(cmd=cmd)
E           AssertionError: assert 'Usage: cli s...shoot (fire)\n' == 'Usage: cli sh...ire to X,Y.\n'
E             Skipping 134 identical leading characters in diff, use -v to show
E             - ,navigate)
E             -   new (add,build,create)
E             -   shoot (fire)
E             + ,navigate)   Moves SHIP to the new location X,Y.
E             +   new (add,build,create)  Creates a new ship.
E             +   shoot (fire)            Makes SHIP fire to X,Y.
```
diff --git a/tests/test_basic.py b/tests/test_basic.py
index efbcbeb..077e6c0 100644
--- a/tests/test_basic.py
+++ b/tests/test_basic.py
@@ -1,6 +1,8 @@
 import click
 from click.testing import CliRunner
-from click_aliases import ClickAliasedGroup
+
+from click_aliases import ClickAliasedGroup, _click7
+
 import pytest
 
 
@@ -40,9 +42,9 @@ def test_foobar(runner):
 
 
 TEST_INVALID = """Usage: cli [OPTIONS] COMMAND [ARGS]...
-
+{}
 Error: No such command "bar".
-"""
+""".format('Try "cli --help" for help.\n' if _click7 else '')
 
 
 def test_invalid(runner):
diff --git a/tests/test_foobar.py b/tests/test_foobar.py
index c549561..fd6c4e6 100644
--- a/tests/test_foobar.py
+++ b/tests/test_foobar.py
@@ -1,6 +1,8 @@
 import click
 from click.testing import CliRunner
-from click_aliases import ClickAliasedGroup
+
+from click_aliases import ClickAliasedGroup, _click7
+
 import pytest
 
 
@@ -41,9 +43,9 @@ def test_foobar(runner):
 
 
 TEST_INVALID = """Usage: cli [OPTIONS] COMMAND [ARGS]...
-
+{}
 Error: No such command "baz".
-"""
+""".format('Try "cli --help" for help.\n' if _click7 else '')
 
 
 def test_invalid(runner):
diff --git a/tests/test_naval.py b/tests/test_naval.py
index f4d41e7..35c23ff 100644
--- a/tests/test_naval.py
+++ b/tests/test_naval.py
@@ -1,6 +1,8 @@
 import click
 from click.testing import CliRunner
+
 from click_aliases import ClickAliasedGroup
+
 import pytest
 
 

pip install -e .[dev]
parse_log_pytest
pytest
pytest
apt-get update apt-get install -y gcc
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi==2025.1.31
charset-normalizer==3.4.1
click==8.1.8
-e git+https://github.com/click-contrib/click-aliases.git@6fdb266540eab2e295363b6459e18cf110117fb3#egg=click_aliases
coverage==7.8.0
coveralls==4.0.1
distlib==0.3.9
docopt==0.6.2
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
filelock==3.18.0
flake8==7.2.0
flake8-import-order==0.18.2
idna==3.10
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
mccabe==0.7.0
packaging @ file:///croot/packaging_1734472117206/work
platformdirs==4.3.7
pluggy @ file:///croot/pluggy_1733169602837/work
py==1.11.0
pycodestyle==2.13.0
pyflakes==3.3.1
pytest @ file:///croot/pytest_1738938843180/work
pytest-cov==6.0.0
requests==2.32.3
six==1.17.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
tox==3.28.0
tox-travis==0.13
urllib3==2.3.0
virtualenv==20.29.3

name: click-aliases
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - click==8.1.8
      - coverage==7.8.0
      - coveralls==4.0.1
      - distlib==0.3.9
      - docopt==0.6.2
      - filelock==3.18.0
      - flake8==7.2.0
      - flake8-import-order==0.18.2
      - idna==3.10
      - mccabe==0.7.0
      - platformdirs==4.3.7
      - py==1.11.0
      - pycodestyle==2.13.0
      - pyflakes==3.3.1
      - pytest-cov==6.0.0
      - requests==2.32.3
      - six==1.17.0
      - tox==3.28.0
      - tox-travis==0.13
      - urllib3==2.3.0
      - virtualenv==20.29.3
prefix: /opt/conda/envs/click-aliases

tests/test_basic.py::test_help tests/test_basic.py::test_foobar tests/test_foobar.py::test_help tests/test_foobar.py::test_foobar tests/test_naval.py::test_cli tests/test_naval.py::test_ship_help tests/test_naval.py::test_ship_move
tests/test_basic.py::test_invalid tests/test_foobar.py::test_invalid
click_aliases/__init__.py examples/naval.py .travis.yml tox.ini examples/foobar.py
click_aliases/__init__.py examples/naval.py .travis.yml tox.ini examples/foobar.py