diff --git a/pkg/heartbeat/language.go b/pkg/heartbeat/language.go index 93304c94..c7c7bf06 100644 --- a/pkg/heartbeat/language.go +++ b/pkg/heartbeat/language.go @@ -655,6 +655,8 @@ const ( LanguageHyPhy // LanguageIcon represents the Icon programming language. LanguageIcon + // LanguageIDA represents the IDA programming language. + LanguageIDA // LanguageIDL represents the IDL programming language. LanguageIDL // LanguageIdris represents the Idris programming language. @@ -891,6 +893,8 @@ const ( LanguageModula2 // LanguageMoinWiki represents the MoinWiki programming language. LanguageMoinWiki + // LanguageMojo represents the Mojo programming language. + LanguageMojo // LanguageMonkey represents the Monkey programming language. LanguageMonkey // LanguageMonkeyC represents the MonkeyC programming language. @@ -1886,6 +1890,7 @@ const ( languageHybrisStr = "Hybris" languageHyPhyStr = "HyPhy" languageIconStr = "Icon" + languageIDAStr = "IDA" languageIDLStr = "IDL" languageIdrisStr = "Idris" languageIgnoreListStr = "Ignore List" @@ -2004,6 +2009,7 @@ const ( languageModelicaStr = "Modelica" languageModula2Str = "Modula-2" languageMoinWikiStr = "MoinMoin/Trac Wiki markup" + languageMojoStr = "Mojo" languageMonkeyStr = "Monkey" languageMonkeyCStr = "MonkeyC" languageMonteStr = "Monte" @@ -3044,6 +3050,8 @@ func ParseLanguage(s string) (Language, bool) { return LanguageHyPhy, true case normalizeString(languageIconStr): return LanguageIcon, true + case normalizeString(languageIDAStr): + return LanguageIDA, true case normalizeString(languageIDLStr): return LanguageIDL, true case normalizeString(languageIdrisStr): @@ -3280,6 +3288,8 @@ func ParseLanguage(s string) (Language, bool) { return LanguageModula2, true case normalizeString(languageMoinWikiStr): return LanguageMoinWiki, true + case normalizeString(languageMojoStr): + return LanguageMojo, true case normalizeString(languageMonkeyStr): return LanguageMonkey, true case normalizeString(languageMonkeyCStr): @@ -4720,6 +4730,8 @@ func (l Language) String() string { return languageHyPhyStr case LanguageIcon: return languageIconStr + case LanguageIDA: + return languageIDAStr case LanguageIDL: return languageIDLStr case LanguageIdris: @@ -4956,6 +4968,8 @@ func (l Language) String() string { return languageModula2Str case LanguageMoinWiki: return languageMoinWikiStr + case LanguageMojo: + return languageMojoStr case LanguageMonkey: return languageMonkeyStr case LanguageMonkeyC: diff --git a/pkg/heartbeat/language_test.go b/pkg/heartbeat/language_test.go index 853dc14b..23fa924a 100644 --- a/pkg/heartbeat/language_test.go +++ b/pkg/heartbeat/language_test.go @@ -335,6 +335,7 @@ func languageTests() map[string]heartbeat.Language { "Hybris": heartbeat.LanguageHybris, "HyPhy": heartbeat.LanguageHyPhy, "Icon": heartbeat.LanguageIcon, + "IDA": heartbeat.LanguageIDA, "IDL": heartbeat.LanguageIDL, "Idris": heartbeat.LanguageIdris, "Ignore List": heartbeat.LanguageIgnoreList, @@ -453,6 +454,7 @@ func languageTests() map[string]heartbeat.Language { "Modelica": heartbeat.LanguageModelica, "Modula-2": heartbeat.LanguageModula2, "MoinMoin/Trac Wiki markup": heartbeat.LanguageMoinWiki, + "Mojo": heartbeat.LanguageMojo, "Monkey": heartbeat.LanguageMonkey, "MonkeyC": heartbeat.LanguageMonkeyC, "Monte": heartbeat.LanguageMonte, diff --git a/pkg/lexer/ida.go b/pkg/lexer/ida.go new file mode 100644 index 00000000..4de585ae --- /dev/null +++ b/pkg/lexer/ida.go @@ -0,0 +1,32 @@ +package lexer + +import ( + "github.com/wakatime/wakatime-cli/pkg/heartbeat" + + "github.com/alecthomas/chroma/v2" +) + +// IDA lexer. +type IDA struct{} + +// Lexer returns the lexer. +func (l IDA) Lexer() chroma.Lexer { + return chroma.MustNewLexer( + &chroma.Config{ + Name: l.Name(), + Aliases: []string{"IDA Pro", "IDA Free"}, + Filenames: []string{"*.i64", "*.idb"}, + MimeTypes: []string{"text/x-ida"}, + }, + func() chroma.Rules { + return chroma.Rules{ + "root": {}, + } + }, + ) +} + +// Name returns the name of the lexer. +func (IDA) Name() string { + return heartbeat.LanguageIDA.StringChroma() +} diff --git a/pkg/lexer/lexer.go b/pkg/lexer/lexer.go index 68accfd6..42a4086e 100644 --- a/pkg/lexer/lexer.go +++ b/pkg/lexer/lexer.go @@ -122,6 +122,7 @@ func RegisterAll() error { INI{}, IRCLogs{}, Icon{}, + IDA{}, Inform6{}, Inform6Template{}, Inform7{}, @@ -169,6 +170,7 @@ func RegisterAll() error { MiniScript{}, Modelica{}, Modula2{}, + Mojo{}, Monkey{}, Monte{}, MoonScript{}, diff --git a/pkg/lexer/mojo.go b/pkg/lexer/mojo.go new file mode 100644 index 00000000..27f9d344 --- /dev/null +++ b/pkg/lexer/mojo.go @@ -0,0 +1,32 @@ +package lexer + +import ( + "github.com/wakatime/wakatime-cli/pkg/heartbeat" + + "github.com/alecthomas/chroma/v2" +) + +// Mojo lexer. +type Mojo struct{} + +// Lexer returns the lexer. +func (l Mojo) Lexer() chroma.Lexer { + return chroma.MustNewLexer( + &chroma.Config{ + Name: l.Name(), + Aliases: []string{"mojo"}, + Filenames: []string{"*.🔥", "*.mojo"}, + MimeTypes: []string{"text/x-mojo"}, + }, + func() chroma.Rules { + return chroma.Rules{ + "root": {}, + } + }, + ) +} + +// Name returns the name of the lexer. +func (Mojo) Name() string { + return heartbeat.LanguageMojo.StringChroma() +}