diff --git a/go.mod b/go.mod index 6ff11ba1..03b93a1d 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22.5 require ( github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 github.com/alecthomas/assert v1.0.0 - github.com/alecthomas/chroma/v2 v2.10.0 + github.com/alecthomas/chroma/v2 v2.12.0 github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 github.com/dlclark/regexp2 v1.10.0 github.com/gandarez/go-olson-timezone v0.1.0 @@ -55,7 +55,4 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -// replace github.com/alecthomas/chroma/v2 => github.com/gandarez/chroma/v2 v2.9.1-wakatime.1 -// replace github.com/alecthomas/chroma/v2 => /Users/gandarez/development/git/gandarez/chroma - replace github.com/matishsiao/goInfo => github.com/wakatime/goInfo v0.1.0-wakatime.9 diff --git a/go.sum b/go.sum index aa425f6b..ae3cd63e 100644 --- a/go.sum +++ b/go.sum @@ -44,8 +44,8 @@ github.com/alecthomas/assert v1.0.0 h1:3XmGh/PSuLzDbK3W2gUbRXwgW5lqPkuqvRgeQ30FI github.com/alecthomas/assert v1.0.0/go.mod h1:va/d2JC+M7F6s+80kl/R3G7FUiW6JzUO+hPhLyJ36ZY= github.com/alecthomas/assert/v2 v2.2.1 h1:XivOgYcduV98QCahG8T5XTezV5bylXe+lBxLG2K2ink= github.com/alecthomas/assert/v2 v2.2.1/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= -github.com/alecthomas/chroma/v2 v2.10.0 h1:T2iQOCCt4pRmRMfL55gTodMtc7cU0y7lc1Jb8/mK/64= -github.com/alecthomas/chroma/v2 v2.10.0/go.mod h1:4TQu7gdfuPjSh76j78ietmqh9LiurGF0EpseFXdKMBw= +github.com/alecthomas/chroma/v2 v2.12.0 h1:Wh8qLEgMMsN7mgyG8/qIpegky2Hvzr4By6gEF7cmWgw= +github.com/alecthomas/chroma/v2 v2.12.0/go.mod h1:4TQu7gdfuPjSh76j78ietmqh9LiurGF0EpseFXdKMBw= github.com/alecthomas/colour v0.1.0 h1:nOE9rJm6dsZ66RGWYSFrXw461ZIt9A6+nHgL7FRrDUk= github.com/alecthomas/colour v0.1.0/go.mod h1:QO9JBoKquHd+jz9nshCh40fOfO+JzsoXy8qTHF68zU0= github.com/alecthomas/repr v0.3.0 h1:NeYzUPfjjlqHY4KtzgKJiWd6sVq2eNUPTi34PiFGjY8= @@ -268,8 +268,6 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/wakatime/goInfo v0.1.0-wakatime.8 h1:MgyeRnCkynEmUxLKXnYUAP5Dd+vhKxhqg6Nx1PdAZy4= -github.com/wakatime/goInfo v0.1.0-wakatime.8/go.mod h1:aEt7p9Rvh67BYApmZwNDPpgircTO2kgdmDUoF/1QmwA= github.com/wakatime/goInfo v0.1.0-wakatime.9 h1:QkFBcdCcUwFb2CxacFdt4I4aVPcJRY7nXh0sq1gqu3o= github.com/wakatime/goInfo v0.1.0-wakatime.9/go.mod h1:aEt7p9Rvh67BYApmZwNDPpgircTO2kgdmDUoF/1QmwA= github.com/yookoala/realpath v1.0.0 h1:7OA9pj4FZd+oZDsyvXWQvjn5oBdcHRTV44PpdMSuImQ= diff --git a/pkg/heartbeat/language.go b/pkg/heartbeat/language.go index 04487846..48c8051e 100644 --- a/pkg/heartbeat/language.go +++ b/pkg/heartbeat/language.go @@ -345,6 +345,8 @@ const ( LanguageDataWeave // LanguageDASM16 represents the DASM16 programming language. LanguageDASM16 + // LanguageDax represents the Dax programming language. + LanguageDax // LanguageDCL represents the DCL programming language. LanguageDCL // LanguageDCPU16Asm represents the DCPU16Asm programming language. @@ -617,6 +619,8 @@ const ( LanguageHAProxy // LanguageHarbour represents the Harbour programming language. LanguageHarbour + // LanguageHare represents the Hare programming language. + LanguageHare // LanguageHaskell represents the Haskell programming language. LanguageHaskell // LanguageHaxe represents the Haxe programming language. @@ -979,6 +983,8 @@ const ( LanguageNuSMV // LanguageObjdump represents the Objdump programming language. LanguageObjdump + // LanguageObjectPascal represents the ObjectPascal programming language. + LanguageObjectPascal // LanguageObjectiveC represents the ObjectiveC programming language. LanguageObjectiveC // LanguageObjectiveCPP represents the ObjectiveC++ programming language. @@ -1745,6 +1751,7 @@ const ( languageDartStr = "Dart" languageDataWeaveStr = "DataWeave" languageDASM16Str = "DASM16" + languageDaxStr = "Dax" languageDCLStr = "DCL" languageDCPU16AsmStr = "DCPU-16 ASM" languageDebianControlFileStr = "Debian Control file" @@ -1880,6 +1887,7 @@ const ( languageHandlebarsStr = "Handlebars" languageHAProxyStr = "HAProxy" languageHarbourStr = "Harbour" + languageHareStr = "Hare" languageHaskellStr = "Haskell" languageHaxeStr = "Haxe" languageHCLStr = "HCL" @@ -2061,6 +2069,7 @@ const ( languageNushellStr = "Nushell" languageNuSMVStr = "NuSMV" languageObjdumpStr = "objdump" + languageObjectPascalStr = "ObjectPascal" languageObjectiveCStr = "Objective-C" languageObjectiveCPPStr = "Objective-C++" languageObjectiveJStr = "Objective-J" @@ -2755,6 +2764,8 @@ func ParseLanguage(s string) (Language, bool) { return LanguageDataWeave, true case normalizeString(languageDASM16Str): return LanguageDASM16, true + case normalizeString(languageDaxStr): + return LanguageDax, true case normalizeString(languageDCLStr): return LanguageDCL, true case normalizeString(languageDCPU16AsmStr): @@ -3025,6 +3036,8 @@ func ParseLanguage(s string) (Language, bool) { return LanguageHAProxy, true case normalizeString(languageHarbourStr): return LanguageHarbour, true + case normalizeString(languageHareStr): + return LanguageHare, true case normalizeString(languageHaskellStr): return LanguageHaskell, true case normalizeString(languageHaxeStr): @@ -3387,6 +3400,8 @@ func ParseLanguage(s string) (Language, bool) { return LanguageNASMObjdump, true case normalizeString(languageObjdumpStr): return LanguageObjdump, true + case normalizeString(languageObjectPascalStr): + return LanguageObjectPascal, true case normalizeString(languageObjectiveCStr): return LanguageObjectiveC, true case normalizeString(languageObjectiveCPPStr): @@ -4447,6 +4462,8 @@ func (l Language) String() string { return languageDataWeaveStr case LanguageDASM16: return languageDASM16Str + case LanguageDax: + return languageDaxStr case LanguageDCL: return languageDCLStr case LanguageDCPU16Asm: @@ -4713,6 +4730,8 @@ func (l Language) String() string { return languageHAProxyStr case LanguageHarbour: return languageHarbourStr + case LanguageHare: + return languageHareStr case LanguageHaskell: return languageHaskellStr case LanguageHaxe: @@ -5075,6 +5094,8 @@ func (l Language) String() string { return languageNASMObjdumpStr case LanguageObjdump: return languageObjdumpStr + case LanguageObjectPascal: + return languageObjectPascalStr case LanguageObjectiveC: return languageObjectiveCStr case LanguageObjectiveCPP: diff --git a/pkg/heartbeat/language_test.go b/pkg/heartbeat/language_test.go index bba94067..fa670e34 100644 --- a/pkg/heartbeat/language_test.go +++ b/pkg/heartbeat/language_test.go @@ -182,6 +182,7 @@ func languageTests() map[string]heartbeat.Language { "Dart": heartbeat.LanguageDart, "DataWeave": heartbeat.LanguageDataWeave, "DASM16": heartbeat.LanguageDASM16, + "Dax": heartbeat.LanguageDax, "DCL": heartbeat.LanguageDCL, "DCPU-16 ASM": heartbeat.LanguageDCPU16Asm, "Debian Control file": heartbeat.LanguageDebianControlFile, @@ -314,6 +315,7 @@ func languageTests() map[string]heartbeat.Language { "Handlebars": heartbeat.LanguageHandlebars, "HAProxy": heartbeat.LanguageHAProxy, "Harbour": heartbeat.LanguageHarbour, + "Hare": heartbeat.LanguageHare, "Haskell": heartbeat.LanguageHaskell, "Haxe": heartbeat.LanguageHaxe, "HCL": heartbeat.LanguageHCL, @@ -495,6 +497,7 @@ func languageTests() map[string]heartbeat.Language { "NuSMV": heartbeat.LanguageNuSMV, "objdump": heartbeat.LanguageObjdump, "objdump-nasm": heartbeat.LanguageNASMObjdump, + "ObjectPascal": heartbeat.LanguageObjectPascal, "Objective-C": heartbeat.LanguageObjectiveC, "Objective-C++": heartbeat.LanguageObjectiveCPP, "Objective-J": heartbeat.LanguageObjectiveJ, diff --git a/pkg/language/chroma.go b/pkg/language/chroma.go index 088def93..223fec95 100644 --- a/pkg/language/chroma.go +++ b/pkg/language/chroma.go @@ -21,6 +21,7 @@ const maxFileSize = 512000 // detectChromaCustomized returns the best by filename matching lexer. Best lexer is determined // by customized priority. +// If guessLanguage is true, the file content will be used to detect the language. // This is a modified implementation of chroma.lexers.internal.api:Match(). func detectChromaCustomized(filepath string, guessLanguage bool) (heartbeat.Language, float32, bool) { _, file := fp.Split(filepath) diff --git a/pkg/language/language_test.go b/pkg/language/language_test.go index 36466ff3..7fa02f59 100644 --- a/pkg/language/language_test.go +++ b/pkg/language/language_test.go @@ -380,13 +380,6 @@ func TestDetect_ChromaTopLanguagesRetrofit(t *testing.T) { Filepaths: []string{"path/to/file.dart"}, Expected: heartbeat.LanguageDart, }, - "delphi": { - Filepaths: []string{ - "path/to/file.pas", - "path/to/file.dpr", - }, - Expected: heartbeat.LanguageDelphi, - }, "docker": { Filepaths: []string{ "path/to/Dockerfile", @@ -579,6 +572,13 @@ func TestDetect_ChromaTopLanguagesRetrofit(t *testing.T) { Filepaths: []string{"path/to/file.nix"}, Expected: heartbeat.LanguageNix, }, + "object pascal": { + Filepaths: []string{ + "path/to/file.pas", + "path/to/file.dpr", + }, + Expected: heartbeat.LanguageObjectPascal, + }, "objective j": { Filepaths: []string{"path/to/file.j"}, Expected: heartbeat.LanguageObjectiveJ, diff --git a/pkg/lexer/delphi.go b/pkg/lexer/delphi.go index 60f2b72f..5d4998ca 100644 --- a/pkg/lexer/delphi.go +++ b/pkg/lexer/delphi.go @@ -14,8 +14,8 @@ func (l Delphi) Lexer() chroma.Lexer { return chroma.MustNewLexer( &chroma.Config{ Name: l.Name(), - Aliases: []string{"delphi", "pas", "pascal", "objectpascal"}, - Filenames: []string{"*.pas", "*.dpr", "*.fmx", "*.dfm"}, + Aliases: []string{"delphi"}, + Filenames: []string{"*.fmx", "*.dfm"}, MimeTypes: []string{"text/x-pascal"}, }, func() chroma.Rules {