diff --git a/pkg/heartbeat/language.go b/pkg/heartbeat/language.go index 1e5f5f03..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. @@ -1888,6 +1890,7 @@ const ( languageHybrisStr = "Hybris" languageHyPhyStr = "HyPhy" languageIconStr = "Icon" + languageIDAStr = "IDA" languageIDLStr = "IDL" languageIdrisStr = "Idris" languageIgnoreListStr = "Ignore List" @@ -3047,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): @@ -4725,6 +4730,8 @@ func (l Language) String() string { return languageHyPhyStr case LanguageIcon: return languageIconStr + case LanguageIDA: + return languageIDAStr case LanguageIDL: return languageIDLStr case LanguageIdris: diff --git a/pkg/heartbeat/language_test.go b/pkg/heartbeat/language_test.go index 18872da3..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, 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 d886ad7e..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{},