{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":49766020,"defaultBranch":"master","name":"sh","ownerLogin":"mvdan","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-01-16T08:39:09.000Z","ownerAvatar":"https://avatars-ghuser.fzsz.win/u/3576549?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1723847079.0","currentOid":""},"activityList":{"items":[{"before":"4f24a8ed199a619f7cb0ee46e16e3aca743695f7","after":"57b7613429b5ac2918c3218f321107f567ba2165","ref":"refs/heads/master","pushedAt":"2024-09-16T21:35:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"go.mod: update dependencies","shortMessageHtmlLink":"go.mod: update dependencies"}},{"before":"2a7c3bcb922ade49041abe6211384692b16ed429","after":"4f24a8ed199a619f7cb0ee46e16e3aca743695f7","ref":"refs/heads/master","pushedAt":"2024-09-06T13:29:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"syntax: fix a fmt.Sprintf issue spotted by the latest go vet","shortMessageHtmlLink":"syntax: fix a fmt.Sprintf issue spotted by the latest go vet"}},{"before":"7bd422f92937020ddf4519e47f8ea1bbf815a6d5","after":"2a7c3bcb922ade49041abe6211384692b16ed429","ref":"refs/heads/master","pushedAt":"2024-09-03T19:47:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"all: swap bytes.Buffer for strings.Builder\n\nAnd remove a redundant godoc, repeated from Format.","shortMessageHtmlLink":"all: swap bytes.Buffer for strings.Builder"}},{"before":"ccc828fc563fc884e664f11a62427025f74106af","after":"7bd422f92937020ddf4519e47f8ea1bbf815a6d5","ref":"refs/heads/master","pushedAt":"2024-08-16T22:10:27.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"CHANGELOG: prepare for v3.9.0","shortMessageHtmlLink":"CHANGELOG: prepare for v3.9.0"}},{"before":"b701811cd94bd389d1f01cb947e2891e46dd0e95","after":"ccc828fc563fc884e664f11a62427025f74106af","ref":"refs/heads/master","pushedAt":"2024-08-08T14:57:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"interp: add -s (silent) support to the read builtin","shortMessageHtmlLink":"interp: add -s (silent) support to the read builtin"}},{"before":"bced20042527a0c4f2ecc9512148b39e39facede","after":"b701811cd94bd389d1f01cb947e2891e46dd0e95","ref":"refs/heads/master","pushedAt":"2024-08-08T11:28:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"cmd/gosh: use an os.Pipe in another interactive test\n\nThe writer didn't close the pipe, so the runner would sometimes hang\nwaiting for the writer to be finished. Switch to os.Pipe while here too.","shortMessageHtmlLink":"cmd/gosh: use an os.Pipe in another interactive test"}},{"before":"63f3119ecdbe87cf562c786df8ce237247474274","after":"bced20042527a0c4f2ecc9512148b39e39facede","ref":"refs/heads/master","pushedAt":"2024-08-08T10:44:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"interp: fix data race regression with stdin pipe changes\n\nI was a bit too aggressive with what could be run concurrently.\nMethod calls to Runner.document must be run on the same goroutine.","shortMessageHtmlLink":"interp: fix data race regression with stdin pipe changes"}},{"before":"e81efe570ffb03dbe59ade0b39de30019a0e8930","after":"63f3119ecdbe87cf562c786df8ce237247474274","ref":"refs/heads/master","pushedAt":"2024-08-08T10:33:46.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"interp: use os.Pipe when StdIO or OpenHandler produce non-file stdins\n\nA recent commit resolved the stdin draining issue with os/exec processes\nwhen stdin was created via a here-document, as those used buffers.\n\nFix the same issue when stdin was provided via StdIO or Openandler,\nwhich are not guaranteed to provide an os.File.\nMuch like the os/exec.Cmd.Stdin, we create a pipe and copy the contents\nfrom the original reader via a goroutine when not a file.\n\nThis makes sense from an API standpoint: much like os/exec,\nthe sh/interp API allows any io.Reader as stdin, but using an os.File\nwill save a pipe and a goroutine as it can be used directly.\n\nNote that this requires cmd/gosh's tests for runInteractive\nto swap io.Pipe for os.Pipe, as otherwise we buffer stdin reads\nwhich cause the tests to hang.","shortMessageHtmlLink":"interp: use os.Pipe when StdIO or OpenHandler produce non-file stdins"}},{"before":"ea8c67dac9807b558b743951f9d85071a42b76ac","after":"b324edaf54583d563b6dda91f42fd6625f0badc1","ref":"refs/heads/recover-errors","pushedAt":"2024-08-06T13:50:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"more","shortMessageHtmlLink":"more"}},{"before":"4ccfb3024c8493aebc5569cd64e2b525fc6914b8","after":"ea8c67dac9807b558b743951f9d85071a42b76ac","ref":"refs/heads/recover-errors","pushedAt":"2024-07-31T22:11:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"more","shortMessageHtmlLink":"more"}},{"before":"3697a783e31de826dad42c40b0b1914852eaf8d5","after":"e81efe570ffb03dbe59ade0b39de30019a0e8930","ref":"refs/heads/master","pushedAt":"2024-07-31T22:11:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"syntax: use Parser.matched consistently\n\nIt's the same behavior, but the code becomes more consistent.\n\nWhile here, make DebugPrint always finish the output with a newline.","shortMessageHtmlLink":"syntax: use Parser.matched consistently"}},{"before":"b65355b7ead1501ab3f98f4f2a001f3c07ebfd43","after":"4ccfb3024c8493aebc5569cd64e2b525fc6914b8","ref":"refs/heads/recover-errors","pushedAt":"2024-07-31T21:51:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"recover parser errors squashed","shortMessageHtmlLink":"recover parser errors squashed"}},{"before":"322115962618afd0875664c555ae15e1a9b0ee9e","after":"3697a783e31de826dad42c40b0b1914852eaf8d5","ref":"refs/heads/master","pushedAt":"2024-07-19T11:33:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"update editorconfig and golang.org/x deps\n\nSo that we no longer require a commit from the editorconfig module.","shortMessageHtmlLink":"update editorconfig and golang.org/x deps"}},{"before":"793d36450a0a5a466199b04c458fb4a1202cf641","after":"322115962618afd0875664c555ae15e1a9b0ee9e","ref":"refs/heads/master","pushedAt":"2024-07-13T18:37:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"interp: implement -O and -G tests\n\nImplement -O (syntax.TsUsrOwn, \"file exists and is owned by the\r\neffective user id\") and -G (syntax.TsGrpOwn, \"file exists and is owned\r\nby the effective group id\") tests, for non-Windows only.\r\n\r\nUnder Windows, still panics, as before.\r\n\r\n-O and -G are hard/not applicable for Windows, since it doesn't really\r\nhave the concept of \"file owners\", only ACLs, and it's not clear how to\r\ntranslate one to the other.","shortMessageHtmlLink":"interp: implement -O and -G tests"}},{"before":"def0e87227f8620c84e995d96ee3b65c69e9733e","after":"793d36450a0a5a466199b04c458fb4a1202cf641","ref":"refs/heads/master","pushedAt":"2024-05-26T15:05:38.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"expand: allocate fewer objects in Fields\n\n │ old │ new │\n │ sec/op │ sec/op vs base │\n Run-8 1.494m ± 6% 1.487m ± 2% ~ (p=0.645 n=8)\n\n │ old │ new │\n │ B/op │ B/op vs base │\n Run-8 71.03Ki ± 0% 70.83Ki ± 0% -0.28% (p=0.016 n=8)\n\n │ old │ new │\n │ allocs/op │ allocs/op vs base │\n Run-8 856.0 ± 0% 826.0 ± 0% -3.50% (p=0.000 n=8)","shortMessageHtmlLink":"expand: allocate fewer objects in Fields"}},{"before":"23633a432f903599a4ce46c30c4337e413a26ef1","after":"def0e87227f8620c84e995d96ee3b65c69e9733e","ref":"refs/heads/master","pushedAt":"2024-05-25T13:25:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"syntax: add support for the Bash 5.2 @k expansion operator\n\nUpdates #921.","shortMessageHtmlLink":"syntax: add support for the Bash 5.2 @k expansion operator"}},{"before":"68768e579186644e9bdd5f13750d490ae1c75300","after":"23633a432f903599a4ce46c30c4337e413a26ef1","ref":"refs/heads/master","pushedAt":"2024-04-28T22:55:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"expand: avoid a panic when ParamExp.Repl.Orig is nil\n\nPattern expected the word to never be nil, unlike other APIs\nsuch as Literal or Document. Fix that to avoid other similar panics.\n\nAnd when encountering a nil or empty ParamExp.Repl.Orig,\ndo not perform a search and replace, as it would result in every match.\n\nFixes #1076.","shortMessageHtmlLink":"expand: avoid a panic when ParamExp.Repl.Orig is nil"}},{"before":"747507a87443fe982c60b102de701e8a9834b849","after":null,"ref":"refs/heads/v3.5","pushedAt":"2024-04-28T22:42:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"}},{"before":"95901a8adbfe03005fb8baa13cfcfd6721e66637","after":"68768e579186644e9bdd5f13750d490ae1c75300","ref":"refs/heads/master","pushedAt":"2024-04-27T21:57:35.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"syntax: avoid a slice bounds check on every input byte\n\nWhen our lexer peeks one byte or consumes one rune,\nwe do a check like `p.bsp < len(p.bs)` followed by `p.bs[p.bsp]`.\nIn practice this made a bounds check unnecessary, as we knew we had\nenough input bytes in p.bs to grab the byte at p.bsp,\nbut since p.bsp was a signed integer, the compiler knew that in theory\np.bsp could have overflowed to a negative value and caused a panic.\n\nIn the past I tried swapping p.bsp from an int to an uint to solve\nthis issue, but the compiler wasn't yet clever enough to take note.\nIt seems like it now is:\n\n │ old │ new │\n │ sec/op │ sec/op vs base │\n Parse-8 14.86µ ± 1% 14.46µ ± 1% -2.74% (p=0.000 n=10)","shortMessageHtmlLink":"syntax: avoid a slice bounds check on every input byte"}},{"before":"03b8c0e4c16572bb417364f1a659e3f8a3897016","after":"95901a8adbfe03005fb8baa13cfcfd6721e66637","ref":"refs/heads/master","pushedAt":"2024-04-27T20:32:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"cmd/shfmt: swap out pkg/diff for internal/diff\n\nThis means one less module dependency, which is a small win.\ninternal/diff does not handle colors, but it is twenty lines to do,\nso it's not worth adding or keeping a dependency just for that.","shortMessageHtmlLink":"cmd/shfmt: swap out pkg/diff for internal/diff"}},{"before":"a76dc6c72806ab047d4143eeb558ffdd60bac9d1","after":"03b8c0e4c16572bb417364f1a659e3f8a3897016","ref":"refs/heads/master","pushedAt":"2024-04-27T19:55:32.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"all: update dependencies","shortMessageHtmlLink":"all: update dependencies"}},{"before":"9b91d697dc6e383a6b25a2b7d50b001460974678","after":"a76dc6c72806ab047d4143eeb558ffdd60bac9d1","ref":"refs/heads/master","pushedAt":"2024-04-27T19:37:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"DebugPrint: Print the string value of tokens\n\nIn DebugPrint, if a value implements fmt.Stringer, and isn't a zero\nvalue, display its string value in addition to the default %#v format.\n\nFor the most part, this prints the string value of \"tokens\", e.g. for a\nsyntax.Redirect.Op, instead of \"Op: 0x3b\", you get \"Op: 0x3b (>&)\".","shortMessageHtmlLink":"DebugPrint: Print the string value of tokens"}},{"before":"a89b0be5ed0a8a3f367a5dc21326d7a39ab5c26f","after":"9b91d697dc6e383a6b25a2b7d50b001460974678","ref":"refs/heads/master","pushedAt":"2024-04-27T19:37:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"Allow case-insensitive filename globbing; add nocaseglob\n\n- Add a FoldCase flag to the expand.Config struct, which is used to\n configure how expand.Fields behaves.\n- Similarly, add a FoldCase Mode to pattern.Regexp. Setting the flag\n adds (?i) to the front of the generated regular expression.\n- Use the former to set the latter when calling expand.Fields.\n- Use all of the above to implement the \"nocaseglob\" shopt.\n\nRationale: I use expand.Fields to do filename expansion, for which I'd\nlike to do case-insensitive matching. E.g. I'd like \"c*\" to match both\n\"cmd\" and \"CHANGELOG.md\"","shortMessageHtmlLink":"Allow case-insensitive filename globbing; add nocaseglob"}},{"before":"0763f7d0dc782bb17251e11d341369406faa5b0b","after":"a89b0be5ed0a8a3f367a5dc21326d7a39ab5c26f","ref":"refs/heads/master","pushedAt":"2024-04-07T12:58:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"interp: cancellable reads; EOF on \"read\" sets var to \"\"\n\n- Make reading cancellable. Not all input from stdin, just that done\r\n directly by the shell (i.e. the \"read\" builtin). Exec'ed programs\r\n still read directly from stdin's os.File and are not cancellable.\r\n- If you press ^D (EOF) when reading into a shell variable, set the\r\n variable to \"\". This is consistent with bash & zsh.","shortMessageHtmlLink":"interp: cancellable reads; EOF on \"read\" sets var to \"\""}},{"before":"68b762e4af816741b64f27ba5a989007cb584365","after":"0763f7d0dc782bb17251e11d341369406faa5b0b","ref":"refs/heads/master","pushedAt":"2024-02-25T23:09:25.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"syntax: swap frankban/quicktest for go-quicktest/qt","shortMessageHtmlLink":"syntax: swap frankban/quicktest for go-quicktest/qt"}},{"before":"6562761468109f6ce5695cee7eaa4d9213c8d39e","after":null,"ref":"refs/heads/shfmt-filename-editorconfig","pushedAt":"2024-02-18T10:26:36.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"}},{"before":"df8fd143b62a7d1ab9e7c51ad71730ad5375f661","after":"68b762e4af816741b64f27ba5a989007cb584365","ref":"refs/heads/master","pushedAt":"2024-02-16T14:03:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"cmd/shfmt: fix typo in shfmt.1.scd\n\noverriden -> overridden","shortMessageHtmlLink":"cmd/shfmt: fix typo in shfmt.1.scd"}},{"before":"84baa08f139fb171b86ff7f25b834d4a3ef19c6f","after":"df8fd143b62a7d1ab9e7c51ad71730ad5375f661","ref":"refs/heads/master","pushedAt":"2024-02-13T22:46:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"cmd/shfmt: document when --filename is needed for EditorConfig support\n\nEditorConfig files are found based on a script's absolute path,\nand the EditorConfig patterns are usually filename-based as well.\n\nWhen formatting standard input, there is no known filename or path.\nSometimes there's a need to format a stream of bytes in memory\nwithout having to place them on a file, which is why we support stdin.\n\nWe added the --filename flag for this purpose a long time ago,\nand the tests already verified this fact - we just hadn't documented it.\n\nWhile here, also add a test case for absolute paths,\nand make the man page flags consistently use double dashes.\n\nFixes #1055.","shortMessageHtmlLink":"cmd/shfmt: document when --filename is needed for EditorConfig support"}},{"before":"db0b4baf4f9fcc5103cab543e7e6965ae6f46c39","after":"6562761468109f6ce5695cee7eaa4d9213c8d39e","ref":"refs/heads/shfmt-filename-editorconfig","pushedAt":"2024-02-13T22:26:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"cmd/shfmt: document when --filename is needed for EditorConfig support\n\nEditorConfig files are found based on a script's absolute path,\nand the EditorConfig patterns are usually filename-based as well.\n\nWhen formatting standard input, there is no known filename or path.\nSometimes there's a need to format a stream of bytes in memory\nwithout having to place them on a file, which is why we support stdin.\n\nWe added the --filename flag for this purpose a long time ago,\nand the tests already verified this fact - we just hadn't documented it.\n\nWhile here, also add a test case for absolute paths,\nand make the man page flags consistently use double dashes.\n\nFixes #1055.","shortMessageHtmlLink":"cmd/shfmt: document when --filename is needed for EditorConfig support"}},{"before":"0be84b7e48ae84ef7e8e0513d9f4147828c57962","after":"db0b4baf4f9fcc5103cab543e7e6965ae6f46c39","ref":"refs/heads/shfmt-filename-editorconfig","pushedAt":"2024-02-13T22:22:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars-ghuser.fzsz.win/u/3576549?s=80&v=4"},"commit":{"message":"cmd/shfmt: document when --filename is needed for EditorConfig support\n\nEditorConfig files are found based on a script's absolute path,\nand the EditorConfig patterns are usually filename-based as well.\n\nWhen formatting standard input, there is no known filename or path.\nSometimes there's a need to format a stream of bytes in memory\nwithout having to place them on a file, which is why we support stdin.\n\nWe added the --filename flag for this purpose a long time ago,\nand the tests already verified this fact - we just hadn't documented it.\n\nWhile here, also add a test case for absolute paths.\n\nFixes #1055.","shortMessageHtmlLink":"cmd/shfmt: document when --filename is needed for EditorConfig support"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEt-Y24QA","startCursor":null,"endCursor":null}},"title":"Activity · mvdan/sh"}