-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Wrap long lines in comments in Config.md #4951
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
f2b1319 to
e1b4d86
Compare
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesFootnotes
|
|
@rayluo FYI |
schema/config.json
Outdated
| "replace": { | ||
| "type": "string", | ||
| "description": "Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use \"[$1] \"", | ||
| "description": "Replace directive. E.g. for 'feature/AB-123' to start the commit message\nwith 'AB-123 ' use \"[$1] \"", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought the changes would include only splitting long lines, like you did for Config.md and user_config.go in the current PR.
Where will the content inside this config.json be used? Normally, we would not hardcode \n inside raw data. How to wrap those raw data is a job for the component who consumes the raw data; if it can't render the data with proper wrapping, so be it. Just my 2 cents.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess you are right.
Neither Config.md nor config.json are manually edited; they are both auto-generated from user_config.go. The process is that we generate the schema (config.json) first, and the comments in user_config.go are converted to schema descriptions automatically. Then we generate Config.md from the schema. If we want the schema descriptions to not contain linefeeds, but the lines in Config.md to be wrapped, then this means we need to automatically wrap the lines.
Initially I didn't want to do that, because I thought that in some cases this automatic wrapping would look bad, and we'd have to retain manual control over the wrapping; for example in bullet point lists (here's one example). But actually, having them wrapped to the beginning of the line isn't so bad.
So I reverted the first commit, and implemented auto-wrapping of Config.md. I do agree it's better; please have another look.
Where will the content inside this
config.jsonbe used?
It is used by YML language servers to provide auto-completion and documentation on hover. The YML extension in VS Code does this, and it's extremely useful. And it does show that schema descriptions should be paragraphs, not wrapped lines. For example:

In this hover window, lines will be wrapped automatically when the window is too narrow, like so:

There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the new change looks much better.
Since you described the relationship among these files is "user_config.go -> config.json -> Config.md", I have one more optional suggestion. I believe in a version control system (VCS) tenet that "(1) Everything could be stored in VCS; (2) Artifacts that can be derived from #1 shall NOT be stored in VCS". (And I even build a little tool to do that for github pages - but I digress.) Anyway, I mean if you can somehow generate config.json and then config.md dynamically, then you won't need to store them in the code base, and this entire conversation won't need to happen in the first place.
Again, this is an optional suggestion. You don't have to do it, either in this PR or a new PR. Feel free to merge this PR as-is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Artifacts that can be derived from #1 shall NOT be stored in VCS
I would normally agree with that, but in this case the artefacts need to be hosted on github: Config.md is used as a poor man's manual substitute (it's linked to from lazygit's Status view), and the schema is referenced by the json schema store so that it can be found automatically by language servers.
Sure, you could argue that it would be better to host them somewhere else, and deploy them to that place as part of making a release, but it's extra work to set this up, and we are lazy. 😄
ae4c55c to
d5e0982
Compare
| startOfLine := 0 | ||
| lastSpaceIdx := -1 | ||
| for i, r := range line { | ||
| // Don't break on "See https://..." lines |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
I would say in general all https://... lines shall not be wrapped, regardless of whether it has the "See" or "Please refer to" prefix, though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I disagree; if a URL occurs in the middle of a line, I see no reason why we shouldn't break right before it, e.g. here. It's really only the "See https://..." lines that are a problem.
Note that this is not a general-purpose formatter; it is very much tailored to our specific needs, and I expect that we might extend the set of special cases in the future when we run into scenarios that are wrapped badly. We don't currently have "Please refer to" in our documentation, so we don't need a rule for it.
Oh, and btw: this is another reason why it's good to include the generated artefacts in the same commit as the source they are generated from. This allows us to see those badly wrapped cases immediately, rather than only much later when the next release is deployed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I disagree; if a URL occurs in the middle of a line, I see no reason why we shouldn't break right before it, e.g. here. It's really only the "See https://..." lines that are a problem.
To clarify, my statement of "https://... lines shall not be wrapped" means do not split one url into two (or more) lines.
If a url occurs in the middle of the line, it is of course OK - and often preferable - to put the url into the next line (such as what your example above shows)
Note that this is not a general-purpose formatter
Fair enough.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do not split one url into two (or more) lines.
Ah, right. Yes, I agree, and no, we don't do that. We only ever break lines at spaces.
We want to switch to have paragraphs consistently on one line, and auto-wrap them automatically when generating Config.md. The changes to Config.md in this commit are temporary.
d5e0982 to
db9fb21
Compare
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [jesseduffield/lazygit](https://github.com/jesseduffield/lazygit) | minor | `v0.55.1` -> `v0.56.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>jesseduffield/lazygit (jesseduffield/lazygit)</summary> ### [`v0.56.0`](https://github.com/jesseduffield/lazygit/releases/tag/v0.56.0) [Compare Source](jesseduffield/lazygit@v0.55.1...v0.56.0) <!-- Release notes generated using configuration in .github/release.yml at v0.56.0 --> #### What's Changed ##### Enhancements 🔥 - Don't break line after footnote symbol in commit messages by [@​stefanhaller](https://github.com/stefanhaller) in [#​4912](jesseduffield/lazygit#4912) - Give better visual feedback when checking out the previous branch by [@​stefanhaller](https://github.com/stefanhaller) in [#​4929](jesseduffield/lazygit#4929) - Add merge menu with conflict resolver by [@​lmnek](https://github.com/lmnek) in [#​4889](jesseduffield/lazygit#4889) - When entering a commit in path filtering mode, select the filtered path by [@​stefanhaller](https://github.com/stefanhaller) in [#​4942](jesseduffield/lazygit#4942) - Document a workaround for using custom pagers on Windows by [@​stefanhaller](https://github.com/stefanhaller) in [#​4941](jesseduffield/lazygit#4941) - Show "Log (x of y)" in the title bar when there is more than one branch log command by [@​stefanhaller](https://github.com/stefanhaller) in [#​4943](jesseduffield/lazygit#4943) - Support multiple pagers by [@​stefanhaller](https://github.com/stefanhaller) in [#​4953](jesseduffield/lazygit#4953) - Add config option gui.skipSwitchWorktreeOnCheckoutWarning by [@​stefanhaller](https://github.com/stefanhaller) in [#​4964](jesseduffield/lazygit#4964) - Add no-ff merge option by [@​stefanhaller](https://github.com/stefanhaller) in [#​4966](jesseduffield/lazygit#4966) ##### Fixes 🔧 - Don't log the git rev-list command that we use for IsBranchMerged by [@​stefanhaller](https://github.com/stefanhaller) in [#​4896](jesseduffield/lazygit#4896) - Hide the cursor when the password prompt is showing by [@​stefanhaller](https://github.com/stefanhaller) in [#​4878](jesseduffield/lazygit#4878) - Update Merge conflicts menu keybinding to use p instead of k by [@​zingazzi](https://github.com/zingazzi) in [#​4934](jesseduffield/lazygit#4934) - Update diff of conflicted file in the main view after conflicts have been resolved by [@​stefanhaller](https://github.com/stefanhaller) in [#​4945](jesseduffield/lazygit#4945) - Don't depend on en\_US locale to be installed by [@​stefanhaller](https://github.com/stefanhaller) in [#​4949](jesseduffield/lazygit#4949) - Fix dropping submodule changes from a commit by [@​stefanhaller](https://github.com/stefanhaller) in [#​4937](jesseduffield/lazygit#4937) - Fix support for Git copy status when status.renames=copies by [@​kapral18](https://github.com/kapral18) in [#​4892](jesseduffield/lazygit#4892) - When pasting multi-line text into a prompt, don't treat the line feeds as "confirm" by [@​stefanhaller](https://github.com/stefanhaller) in [#​4955](jesseduffield/lazygit#4955) - Offer to force-delete a worktree if it contains submodules by [@​stefanhaller](https://github.com/stefanhaller) in [#​4959](jesseduffield/lazygit#4959) - Fix window arrangement when a popup or the search prompt is open by [@​stefanhaller](https://github.com/stefanhaller) in [#​4961](jesseduffield/lazygit#4961) - Fix lazygit getting unresponsive when pasting commits that become empty by [@​stefanhaller](https://github.com/stefanhaller) in [#​4958](jesseduffield/lazygit#4958) - Show a better error message if the temp directory is not writeable by [@​stefanhaller](https://github.com/stefanhaller) in [#​4968](jesseduffield/lazygit#4968) - Avoid auto-stashing when only submodules are out of date by [@​stefanhaller](https://github.com/stefanhaller) in [#​4969](jesseduffield/lazygit#4969) - Use a PTY when using external diff command from git config by [@​brandondong](https://github.com/brandondong) in [#​4983](jesseduffield/lazygit#4983) - Fix fixup's false filename detection in hunks containing dashed lines by [@​abobov](https://github.com/abobov) in [#​5004](jesseduffield/lazygit#5004) ##### Maintenance ⚙️ - Make running with --debug and running integration tests work when built with go 1.25 by [@​stefanhaller](https://github.com/stefanhaller) in [#​4910](jesseduffield/lazygit#4910) - Update go to 1.25 by [@​kyu08](https://github.com/kyu08) in [#​4844](jesseduffield/lazygit#4844) - feat(nix): add comprehensive Nix flake by [@​doprz](https://github.com/doprz) in [#​4826](jesseduffield/lazygit#4826) - Fix normalisedSelectedNodes function by [@​stefanhaller](https://github.com/stefanhaller) in [#​4920](jesseduffield/lazygit#4920) - Add `synchronize` event to the hooks of "Check Required Labels" by [@​kyu08](https://github.com/kyu08) in [#​4974](jesseduffield/lazygit#4974) - Use ignore directive to ignore test files not to be passes to gofumpt by [@​kyu08](https://github.com/kyu08) in [#​4936](jesseduffield/lazygit#4936) ##### Docs 📖 - Fix MoveCommitsToNewBranch description typo by [@​deventon](https://github.com/deventon) in [#​4867](jesseduffield/lazygit#4867) - Wrap long lines in comments in Config.md by [@​stefanhaller](https://github.com/stefanhaller) in [#​4951](jesseduffield/lazygit#4951) - Fix keybinding cheatsheets with regard to pipe characters in key or description by [@​stefanhaller](https://github.com/stefanhaller) in [#​5007](jesseduffield/lazygit#5007) ##### I18n 🌎 - Update translations from Crowdin by [@​stefanhaller](https://github.com/stefanhaller) in [#​5005](jesseduffield/lazygit#5005) #### New Contributors - [@​deventon](https://github.com/deventon) made their first contribution in [#​4867](jesseduffield/lazygit#4867) - [@​zingazzi](https://github.com/zingazzi) made their first contribution in [#​4934](jesseduffield/lazygit#4934) - [@​doprz](https://github.com/doprz) made their first contribution in [#​4826](jesseduffield/lazygit#4826) - [@​lmnek](https://github.com/lmnek) made their first contribution in [#​4889](jesseduffield/lazygit#4889) - [@​kapral18](https://github.com/kapral18) made their first contribution in [#​4892](jesseduffield/lazygit#4892) - [@​abobov](https://github.com/abobov) made their first contribution in [#​5004](jesseduffield/lazygit#5004) **Full Changelog**: <jesseduffield/lazygit@v0.55.1...v0.56.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNjkuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE2OS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Since these are displayed in a fenced code block on github, they aren't auto-wrapped on display, so users have to scroll horizontally to read longer paragraphs.
Addresses #800 (comment).