| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | /*Language: AutoHotkeyAuthor: Seongwon Lee <dlimpid@gmail.com>Description: AutoHotkey language definitionCategory: 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;
 |