You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.2 KiB
84 lines
2.2 KiB
/* |
|
Language: AutoHotkey |
|
Author: Seongwon Lee <dlimpid@gmail.com> |
|
Description: AutoHotkey language definition |
|
Category: scripting |
|
*/ |
|
|
|
/** @type LanguageFn */ |
|
function autohotkey(hljs) { |
|
const BACKTICK_ESCAPE = { |
|
begin: '`[\\s\\S]' |
|
}; |
|
|
|
return { |
|
name: 'AutoHotkey', |
|
case_insensitive: true, |
|
aliases: ['ahk'], |
|
keywords: { |
|
keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group', |
|
literal: 'true false NOT AND OR', |
|
built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel' |
|
}, |
|
contains: [ |
|
BACKTICK_ESCAPE, |
|
hljs.inherit(hljs.QUOTE_STRING_MODE, { |
|
contains: [BACKTICK_ESCAPE] |
|
}), |
|
hljs.COMMENT(';', '$', { |
|
relevance: 0 |
|
}), |
|
hljs.C_BLOCK_COMMENT_MODE, |
|
{ |
|
className: 'number', |
|
begin: hljs.NUMBER_RE, |
|
relevance: 0 |
|
}, |
|
{ |
|
// subst would be the most accurate however fails the point of |
|
// highlighting. variable is comparably the most accurate that actually |
|
// has some effect |
|
className: 'variable', |
|
begin: '%[a-zA-Z0-9#_$@]+%' |
|
}, |
|
{ |
|
className: 'built_in', |
|
begin: '^\\s*\\w+\\s*(,|%)' |
|
// I don't really know if this is totally relevant |
|
}, |
|
{ |
|
// symbol would be most accurate however is highlighted just like |
|
// built_in and that makes up a lot of AutoHotkey code meaning that it |
|
// would fail to highlight anything |
|
className: 'title', |
|
variants: [ |
|
{ |
|
begin: '^[^\\n";]+::(?!=)' |
|
}, |
|
{ |
|
begin: '^[^\\n";]+:(?!=)', |
|
// zero relevance as it catches a lot of things |
|
// followed by a single ':' in many languages |
|
relevance: 0 |
|
} |
|
] |
|
}, |
|
{ |
|
className: 'meta', |
|
begin: '^\\s*#\\w+', |
|
end: '$', |
|
relevance: 0 |
|
}, |
|
{ |
|
className: 'built_in', |
|
begin: 'A_[a-zA-Z0-9]+' |
|
}, |
|
{ |
|
// consecutive commas, not for highlighting but just for relevance |
|
begin: ',\\s*,' |
|
} |
|
] |
|
}; |
|
} |
|
|
|
module.exports = autohotkey;
|
|
|