From 43a997529328c0ebbe50b79ccb6ad830abbcd983 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 31 Aug 2021 19:54:25 -0600 Subject: Fix that failing test --- cmd_comment.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'cmd_comment.go') diff --git a/cmd_comment.go b/cmd_comment.go index 684c92b..3e50b9a 100644 --- a/cmd_comment.go +++ b/cmd_comment.go @@ -33,7 +33,7 @@ type CmdComment struct { Comment string } -func (c CmdComment) fiCmdClass() cmdClass { return cmdClassComment } +func (c CmdComment) fiCmdClass(_ fiReaderState) cmdClass { return cmdClassComment } func (c CmdComment) fiCmdWrite(fiw fiWriter) error { return fiw.WriteLine("#" + c.Comment) } @@ -55,12 +55,15 @@ type CmdGetMark struct { Mark int } -func (c CmdGetMark) fiCmdClass() cmdClass { +func (c CmdGetMark) fiCmdClass(fir fiReaderState) cmdClass { // Prior to git v2.22.0 this was 'cmdClassComment', but in // v2.22.0 it was changed to a stricter // 'cmdClassCommand|cmdClassInCommit'. I want to have better // backward compatibility, so I'm keeping it as // 'cmdClassComment'. + if c.Mark == fir.GetCommandMark() { + return cmdClassCommand + } return cmdClassComment } func (c CmdGetMark) fiCmdWrite(fiw fiWriter) error { @@ -90,13 +93,19 @@ type CmdCatBlob struct { DataRef string } -func (c CmdCatBlob) fiCmdClass() cmdClass { +func (c CmdCatBlob) fiCmdClass(fir fiReaderState) cmdClass { // Prior to git v2.22.0 this was 'cmdClassComment', but in // v2.22.0 it was changed to a stricter // 'cmdClassCommand|cmdClassInCommit|cmdClassInFileModify'. I // don't want to implement cmdClassInFileModify for just this // one command, and also I want to have better backward // compatibility; so I'm keeping it as 'cmdClassComment'. + if strings.HasPrefix(c.DataRef, ":") && fir.GetCommandMark() > 0 { + mark, _ := strconv.Atoi(c.DataRef[1:]) + if mark == fir.GetCommandMark() { + return cmdClassCommand + } + } return cmdClassComment } func (c CmdCatBlob) fiCmdWrite(fiw fiWriter) error { @@ -124,7 +133,7 @@ type CmdLs struct { Path Path } -func (c CmdLs) fiCmdClass() cmdClass { +func (c CmdLs) fiCmdClass(fir fiReaderState) cmdClass { // Prior to git v2.22.0 the docs said 'ls' was allowed // anywhere a comment was allowed, but that was never really // true, and in v2.22.0 the docs were updated to match the @@ -136,6 +145,12 @@ func (c CmdLs) fiCmdClass() cmdClass { // cmdClassInCommand bit. return cmdClassInCommit } + if strings.HasPrefix(c.DataRef, ":") && fir.GetCommandMark() > 0 { + mark, _ := strconv.Atoi(c.DataRef[1:]) + if mark == fir.GetCommandMark() { + return cmdClassCommand + } + } return cmdClassCommand | cmdClassInCommit } func (c CmdLs) fiCmdWrite(fiw fiWriter) error { -- cgit v1.2.3-2-g168b