diff --git a/sphinxlint/checkers.py b/sphinxlint/checkers.py index 05afe352d..f0998d329 100644 --- a/sphinxlint/checkers.py +++ b/sphinxlint/checkers.py @@ -421,6 +421,7 @@ def check_missing_final_newline(file, lines, options=None): _starts_with_directive_or_hyperlink = re.compile(r"^\s*\.\. ").match _starts_with_anonymous_hyperlink = re.compile(r"^\s*__ ").match _is_very_long_string_literal = re.compile(r"^\s*``[^`]+``$").match +_is_very_long_inline_link = re.compile(r"^\s*<.*(>`_).?$").match @checker(".rst", ".po", enabled=False, rst_only=True) @@ -439,6 +440,8 @@ def check_line_too_long(file, lines, options=None): continue # ignore anonymous hyperlink targets if _is_very_long_string_literal(line): continue # ignore a very long literal string + if _is_very_long_inline_link(line): + continue # ignore a very long URL on its own line yield lno + 1, f"Line too long ({len(line) - 1}/{options.max_line_length})" diff --git a/tests/fixtures/xpass/long-inline-link.rst b/tests/fixtures/xpass/long-inline-link.rst new file mode 100644 index 000000000..e34197d73 --- /dev/null +++ b/tests/fixtures/xpass/long-inline-link.rst @@ -0,0 +1,15 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent rhoncus +volutpat felis, eu egestas sapien tristique a. Vivamus scelerisque nunc nec arcu +pharetra, sit amet feugiat lorem consequat. See this extremely long link here: +`A Very Long Inline Link Example +`_. + +Donec ultrices, nisi sit amet cursus pharetra, arcu lacus tincidunt ligula, eget +fringilla ex turpis vel odio. Curabitur feugiat pretium lorem a fringilla. +Suspendisse eget orci eu sem tincidunt auctor. + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent rhoncus + volutpat felis, eu egestas sapien tristique a. Vivamus scelerisque nunc nec + arcu pharetra, sit amet feugiat lorem consequat. See this extremely long + link here: `A Very Long Inline Link Example + `_.