Skip to content

Conversation

nnethercote
Copy link
Contributor

show_md_content_with_pager is complex and has a couple of bugs. This PR improves it.

r? @tgross35

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Nov 20, 2024
@bors
Copy link
Collaborator

bors commented Nov 20, 2024

☔ The latest upstream changes (presumably #133234) made this pull request unmergeable. Please resolve the merge conflicts.

@tgross35
Copy link
Contributor

I remember not liking this function very much when writing it, thanks for cleaning it up!

r=me with the above fixed, or if I'm just wrong there

`bat` is known as `batcat` on Ubuntu and Debian, not `catbat`.
It's not necessary because `show_md_content_with_pager` is only ever
called if `is_terminal` is true.
I think the control flow in this function is complicated and confusing,
largely due to the use of two booleans `print_formatted` and
`fallback_to_println` that are set in multiple places and then used to
guide proceedings.

As well as hurting readability, this leads to at least one bug: if the
`write_termcolor_buf` call fails and the pager also fails, the function
will try to print color output to stdout, but that output will be empty
because `write_termcolor_buf` failed. I.e. the `if fallback_to_println`
body fails to check `print_formatted`.

This commit rewrites the function to be neater and more Rust-y, e.g. by
putting the result of `write_termcolor_buf` into an `Option` so it can
only be used on success, and by using `?` more. It also changes
terminology a little, using "pretty" to mean "formatted and colorized".
The result is a little shorter, more readable, and less buggy.
@nnethercote nnethercote force-pushed the rewrite-show_md_content_with_pager branch from a863662 to 525e191 Compare November 20, 2024 21:49
@nnethercote
Copy link
Contributor Author

I fixed the try block.

@bors r=tgross35 rollup

@bors
Copy link
Collaborator

bors commented Nov 20, 2024

📌 Commit 525e191 has been approved by tgross35

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Nov 20, 2024
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Nov 21, 2024
…t_with_pager, r=tgross35

Rewrite `show_md_content_with_pager`

`show_md_content_with_pager` is complex and has a couple of bugs. This PR improves it.

r? `@tgross35`
bors added a commit to rust-lang-ci/rust that referenced this pull request Nov 21, 2024
…iaskrgr

Rollup of 6 pull requests

Successful merges:

 - rust-lang#131736 (Emscripten: link with -sWASM_BIGINT)
 - rust-lang#132207 (Store resolution for self and crate root module segments)
 - rust-lang#133153 (Add visits to nodes that already have flat_maps in ast::MutVisitor)
 - rust-lang#133218 (Implement `~const` item bounds in RPIT)
 - rust-lang#133228 (Rewrite `show_md_content_with_pager`)
 - rust-lang#133247 (Reduce integer `Display` implementation size)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Nov 21, 2024
…iaskrgr

Rollup of 5 pull requests

Successful merges:

 - rust-lang#131736 (Emscripten: link with -sWASM_BIGINT)
 - rust-lang#132207 (Store resolution for self and crate root module segments)
 - rust-lang#133153 (Add visits to nodes that already have flat_maps in ast::MutVisitor)
 - rust-lang#133218 (Implement `~const` item bounds in RPIT)
 - rust-lang#133228 (Rewrite `show_md_content_with_pager`)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit c83b6a3 into rust-lang:master Nov 21, 2024
6 checks passed
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Nov 21, 2024
Rollup merge of rust-lang#133228 - nnethercote:rewrite-show_md_content_with_pager, r=tgross35

Rewrite `show_md_content_with_pager`

`show_md_content_with_pager` is complex and has a couple of bugs. This PR improves it.

r? ``@tgross35``
@rustbot rustbot added this to the 1.84.0 milestone Nov 21, 2024
@nnethercote nnethercote deleted the rewrite-show_md_content_with_pager branch May 22, 2025 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants