diff --git a/click/decorators.py b/click/decorators.py
--- a/click/decorators.py
+++ b/click/decorators.py
@@ -150,6 +150,8 @@ def option(*param_decls, **attrs):
     :attr:`Command.params` list.
     """
     def decorator(f):
+        if 'help' in attrs:
+            attrs['help'] = inspect.cleandoc(attrs['help'])
         _param_memo(f, Option(param_decls, **attrs))
         return f
     return decorator

diff --git a/tests/test_options.py b/tests/test_options.py
--- a/tests/test_options.py
+++ b/tests/test_options.py
@@ -169,3 +169,23 @@ def cmd(foo):
     assert result.exit_code == 2
     assert 'Error: Missing option "--foo".  Choose from foo, bar.' \
         in result.output
+
+
+def test_multiline_help(runner):
+    @click.command()
+    @click.option('--foo', help="""
+        hello
+
+        i am
+
+        multiline
+    """)
+    def cmd(foo):
+        click.echo(foo)
+
+    result = runner.invoke(cmd, ['--help'])
+    assert result.exit_code == 0
+    out = result.output.splitlines()
+    assert '  --foo TEXT  hello' in out
+    assert '              i am' in out
+    assert '              multiline' in out

Automatically dedent help text of options?
```
import click

@click.command()
@click.option('--foo', help="""
    heyho

    i am

    multiline
""")
def cli(foo):
    click.echo(foo)

cli()
```

This currently does not remove the leading whitespace from each paragraph in the help text for `--foo`:

```
untitaker@untibox:~/projects/click, branch master
$ python lol.py --help
Usage: lol.py [OPTIONS]

Options:
  --foo TEXT
                  heyho

                  i am

                  multiline
  --help      Show this message and exit.
```

Although i am not sure if help texts for options are even supposed to get that
complex.


From what i can see in `write_dl`, this seems to be a bug.
