{"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.githubusercontent.com/u/3576549?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1714344152.0","currentOid":""},"activityList":{"items":[{"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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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.githubusercontent.com/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"}},{"before":null,"after":"0be84b7e48ae84ef7e8e0513d9f4147828c57962","ref":"refs/heads/shfmt-filename-editorconfig","pushedAt":"2024-02-13T22:16:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/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"}},{"before":"65756a2e1ce77329cc33fa98983fe81a473ec4ec","after":"84baa08f139fb171b86ff7f25b834d4a3ef19c6f","ref":"refs/heads/master","pushedAt":"2024-02-11T12:42:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"CHANGELOG: prepare for v3.8.0","shortMessageHtmlLink":"CHANGELOG: prepare for v3.8.0"}},{"before":"9c56ff39f61132b3bbd41bd299a73c68b233a41c","after":"65756a2e1ce77329cc33fa98983fe81a473ec4ec","ref":"refs/heads/master","pushedAt":"2024-02-10T11:13:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"all: start using Go 1.21 std APIs\n\nA lot of simplifications this time around.","shortMessageHtmlLink":"all: start using Go 1.21 std APIs"}},{"before":"502949dcffb493557270d652a05ea9ace380cc18","after":null,"ref":"refs/heads/bumps","pushedAt":"2024-02-10T10:57:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":"63fac7bfbf848ede02886dc8d3968f737c09d062","after":"9c56ff39f61132b3bbd41bd299a73c68b233a41c","ref":"refs/heads/master","pushedAt":"2024-02-10T10:57:43.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"CI: bump bash image version\n\nWe've been testing with Bash 5.2 for some time.","shortMessageHtmlLink":"CI: bump bash image version"}},{"before":"2540aaedf07ecb157a276fe50b8ea6da3825597a","after":"502949dcffb493557270d652a05ea9ace380cc18","ref":"refs/heads/bumps","pushedAt":"2024-02-10T10:52:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"CI: bump bash image version\n\nWe've been testing with Bash 5.2 for some time.","shortMessageHtmlLink":"CI: bump bash image version"}},{"before":null,"after":"2540aaedf07ecb157a276fe50b8ea6da3825597a","ref":"refs/heads/bumps","pushedAt":"2024-02-10T10:50:08.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"bump actions","shortMessageHtmlLink":"bump actions"}},{"before":null,"after":"63fac7bfbf848ede02886dc8d3968f737c09d062","ref":"refs/heads/ci-test","pushedAt":"2024-02-10T10:47:37.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"cmd/shfmt: add --apply-ignore flag for tools and editors\n\nThe EditorConfig ignore=true property is currently only obeyed\nwhen walking directories, which is fine for command line users\nrunning shfmt like\n\n shfmt -l -w .\n\nHowever, many tools and editor integrations use shfmt via stdin\nor by passing a single file argument, and in those cases,\nthe ignore=true logic does not kick in at all.\n\nThere should be a way for a user to force running shfmt on a file,\nand that has always been passing a file as a direct argument, like:\n\n shfmt -w file.sh\n\nWe can't break that, but tools do need a way to obey ignore rules.\nFor that reason, add an --apply-ignore flag which does just that.\n\nFixes #1037.","shortMessageHtmlLink":"cmd/shfmt: add --apply-ignore flag for tools and editors"}},{"before":"59cf354e6a00db1983ab80de6b9357f9a9e9aef9","after":null,"ref":"refs/heads/apply-ignore","pushedAt":"2024-02-10T10:36:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":"7f96e7d84a265f4d1005b96493422cde800bf9d1","after":"63fac7bfbf848ede02886dc8d3968f737c09d062","ref":"refs/heads/master","pushedAt":"2024-02-10T10:36:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"cmd/shfmt: add --apply-ignore flag for tools and editors\n\nThe EditorConfig ignore=true property is currently only obeyed\nwhen walking directories, which is fine for command line users\nrunning shfmt like\n\n shfmt -l -w .\n\nHowever, many tools and editor integrations use shfmt via stdin\nor by passing a single file argument, and in those cases,\nthe ignore=true logic does not kick in at all.\n\nThere should be a way for a user to force running shfmt on a file,\nand that has always been passing a file as a direct argument, like:\n\n shfmt -w file.sh\n\nWe can't break that, but tools do need a way to obey ignore rules.\nFor that reason, add an --apply-ignore flag which does just that.\n\nFixes #1037.","shortMessageHtmlLink":"cmd/shfmt: add --apply-ignore flag for tools and editors"}},{"before":null,"after":"59cf354e6a00db1983ab80de6b9357f9a9e9aef9","ref":"refs/heads/apply-ignore","pushedAt":"2024-01-14T18:23:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"cmd/shfmt: add --apply-ignore flag for tools and editors\n\nThe EditorConfig ignore=true property is currently only obeyed\nwhen walking directories, which is fine for command line users\nrunning shfmt like\n\n shfmt -l -w .\n\nHowever, many tools and editor integrations use shfmt via stdin\nor by passing a single file argument, and in those cases,\nthe ignore=true logic does not kick in at all.\n\nThere should be a way for a user to force running shfmt on a file,\nand that has always been passing a file as a direct argument, like:\n\n shfmt -w file.sh\n\nWe can't break that, but tools do need a way to obey ignore rules.\nFor that reason, add an --apply-ignore flag which does just that.\n\nFixes #1037.","shortMessageHtmlLink":"cmd/shfmt: add --apply-ignore flag for tools and editors"}},{"before":"3384f3d8e63a56a5fbf2955bb00a4458ea6f68e9","after":"7f96e7d84a265f4d1005b96493422cde800bf9d1","ref":"refs/heads/master","pushedAt":"2023-12-28T22:05:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"cmd/shfmt: support editorconfig language sections\n\nThat is, support `[[shell]]` EditorConfig sections when formatting\nany shell file, and `[[bash]]` when formatting Bash files.\n\nThis is mainly helpful when formatting files with a shebang\nbut no extension, as then the formatter does use the right language\nwhen parsing and formatting the code, but EditorConfig doesn't kick in\nas it only knows how to match by filename per the spec.\n\nThis feature is out of the EditorConfig spec,\nand upstream is tracking a feature like this at\nhttps://github.com/editorconfig/editorconfig/issues/404 since 2019.\nDue to the lack of progress upstream, and how useful this feature\nis for shfmt, go ahead and add it ourselves,\nwith a note that we may change or remove it at any time.\n\nFixes #664.","shortMessageHtmlLink":"cmd/shfmt: support editorconfig language sections"}},{"before":"28117dbcb766e00aee458eb6346b44b93516df1b","after":"3384f3d8e63a56a5fbf2955bb00a4458ea6f68e9","ref":"refs/heads/master","pushedAt":"2023-12-26T10:44:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"syntax: backquotes affect backslashes in single quotes too\n\nI incorrectly understood that backquote command substitutions\ndid not affect backslashes in single quotes. For example,\n\n $ echo `echo \"1.2\" | sed -e 's/\\./\\\\\\\\./g'`\n 1\\.2\n\nwould be formatted by shfmt as the following, with different output:\n\n $ echo $(echo \"1.2\" | sed -e 's/\\./\\\\\\\\./g')\n 1\\\\.2\n\nwhen in fact we do want to deduplicate the backslashes:\n\n $ echo $(echo \"1.2\" | sed -e 's/\\./\\\\./g')\n 1\\.2\n\nTweak the existing test which expected the wrong result.\nThankfully, we simplify the code now with the fix.\n\nFixes #1041.","shortMessageHtmlLink":"syntax: backquotes affect backslashes in single quotes too"}},{"before":"bcbe8ac4db9074ca4b1012a3e6cb243aa6071f26","after":"28117dbcb766e00aee458eb6346b44b93516df1b","ref":"refs/heads/master","pushedAt":"2023-12-26T10:31:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"},"commit":{"message":"syntax: better column numbers for escapes inside backquotes\n\nBackslashes inside backquote command substitutions are deduplicated,\nso they are not included in any literal values,\nbut they still need to be counted for the sake of column numbers.\n\nWith the input\n\n last=`echo \\\\$demo`\n\nwe used to think that the literal with Go string value \"\\\\$demo\",\ndeduplicated from the input \"\\\\\\\\$demo\", went from column 12 to 18.\nThis can't be, since the input literal was seven bytes and not six,\neven if we end up parsing the literal as six bytes after deduplicating.\nWe now correctly parse the column positions as 12 and 19.\n\nFixes #1028.","shortMessageHtmlLink":"syntax: better column numbers for escapes inside backquotes"}},{"before":"26e0e1ea92891c9b8a52ebc6af9d75daa5a7503f","after":null,"ref":"refs/heads/docker-push-test","pushedAt":"2023-12-26T09:17:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}},{"before":"7779139b50cbd8b917aa33bf5203baa77678e807","after":null,"ref":"refs/heads/man-page-ignore","pushedAt":"2023-12-26T09:15:47.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvdan","name":"Daniel Martí","path":"/mvdan","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3576549?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEPHdbPgA","startCursor":null,"endCursor":null}},"title":"Activity · mvdan/sh"}