<p><b>@b4n</b> requested changes on this pull request.</p>

<p>Otherwise it looks good.<br>
I didn't review the Scintilla lexer properly, but it matches upstream's so I'm gonna be happy about it.</p><hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207703925">data/filedefs/filetypes.autoit</a>:</p>
<pre style='color:#555'>> @@ -0,0 +1,72 @@
+# For complete documentation of this file, please see Geany's main documentation
+# AutoIt 3.3.14.2
+[styling]
+# Edit these in the colorscheme .conf file instead
+default=default
+comment=comment
+commentblock=comment
+number=number
+function=function
+keyword=type
</pre>
<p>shouldn't this be <code>keyword=keyword</code>?</p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207703945">data/filedefs/filetypes.autoit</a>:</p>
<pre style='color:#555'>> @@ -0,0 +1,72 @@
+# For complete documentation of this file, please see Geany's main documentation
+# AutoIt 3.3.14.2
+[styling]
+# Edit these in the colorscheme .conf file instead
+default=default
+comment=comment
</pre>
<p>this should likely be <code>comment=comment_line</code>, shouldn't it?</p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207703993">data/filedefs/filetypes.autoit</a>:</p>
<pre style='color:#555'>> @@ -0,0 +1,72 @@
+# For complete documentation of this file, please see Geany's main documentation
+# AutoIt 3.3.14.2
+[styling]
+# Edit these in the colorscheme .conf file instead
+default=default
+comment=comment
+commentblock=comment
+number=number
+function=function
+keyword=type
+macro=preprocessor
+string=string
+operator=operator
+variable=keyword_2
</pre>
<p>This is also questionable, but there's not a so obvious expected value, I would guess <code>variable=identifier</code></p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207704036">data/filedefs/filetypes.autoit</a>:</p>
<pre style='color:#555'>> +function=function
+keyword=type
+macro=preprocessor
+string=string
+operator=operator
+variable=keyword_2
+sent=other
+preprocessor=preprocessor
+special=type
+expand=default
+comobj=keyword_1
+udf=class
+
+[keywords]
+keywords=and byref case const continuecase continueloop default dim do else elseif endfunc endif endselect endswitch endwith enum exit exitloop false for func global if in local next not null or redim return select static step switch then to true until volatile wend while with
+functions=abs acos adlibregister adlibunregister asc ascw asin assign atan autoitsetoption autoitwingettitle autoitwinsettitle beep binary binarylen binarymid binarytostring bitand bitnot bitor bitrotate bitshift bitxor blockinput break call cdtray ceiling chr chrw clipget clipput consoleread consolewrite consolewriteerror controlclick controlcommand controldisable controlenable controlfocus controlgetfocus controlgethandle controlgetpos controlgettext controlhide controllistview controlmove controlsend controlsettext controlshow controltreeview cos dec dircopy dircreate dirgetsize dirmove dirremove dllcall dllcalladdress dllcallbackfree dllcallbackgetptr dllcallbackregister dllclose dllopen dllstructcreate dllstructgetdata dllstructgetptr dllstructgetsize dllstructsetdata drivegetdrive drivegetfilesystem drivegetlabel drivegetserial drivegettype drivemapadd drivemapdel drivemapget drivesetlabel drivespacefree drivespacetotal drivestatus envget envset envupdate eval execute exp filechangedir fileclose filecopy filecreatentfslink filecreateshortcut filedelete fileexists filefindfirstfile filefindnextfile fileflush filegetattrib filegetencoding filegetlongname filegetpos filegetshortcut filegetshortname filegetsize filegettime filegetversion fileinstall filemove fileopen fileopendialog fileread filereadline filereadtoarray filerecycle filerecycleempty filesavedialog fileselectfolder filesetattrib filesetend filesetpos filesettime filewrite filewriteline floor ftpsetproxy funcname guicreate guictrlcreateavi guictrlcreatebutton guictrlcreatecheckbox guictrlcreatecombo guictrlcreatecontextmenu guictrlcreatedate guictrlcreatedummy guictrlcreateedit guictrlcreategraphic guictrlcreategroup guictrlcreateicon guictrlcreateinput guictrlcreatelabel guictrlcreatelist guictrlcreatelistview guictrlcreatelistviewitem guictrlcreatemenu guictrlcreatemenuitem guictrlcreatemonthcal guictrlcreateobj guictrlcreatepic guictrlcreateprogress guictrlcreateradio guictrlcreateslider guictrlcreatetab guictrlcreatetabitem guictrlcreatetreeview guictrlcreatetreeviewitem guictrlcreateupdown guictrldelete guictrlgethandle guictrlgetstate guictrlread guictrlrecvmsg guictrlregisterlistviewsort guictrlsendmsg guictrlsendtodummy guictrlsetbkcolor guictrlsetcolor guictrlsetcursor guictrlsetdata guictrlsetdefbkcolor guictrlsetdefcolor guictrlsetfont guictrlsetgraphic guictrlsetimage guictrlsetlimit guictrlsetonevent guictrlsetpos guictrlsetresizing guictrlsetstate guictrlsetstyle guictrlsettip guidelete guigetcursorinfo guigetmsg guigetstyle guiregistermsg guisetaccelerators guisetbkcolor guisetcoord guisetcursor guisetfont guisethelp guiseticon guisetonevent guisetstate guisetstyle guistartgroup guiswitch hex hotkeyset httpsetproxy httpsetuseragent hwnd inetclose inetget inetgetinfo inetgetsize inetread inidelete iniread inireadsection inireadsectionnames inirenamesection iniwrite iniwritesection inputbox int isadmin isarray isbinary isbool isdeclared isdllstruct isfloat isfunc ishwnd isint iskeyword isnumber isobj isptr isstring log memgetstats mod mouseclick mouseclickdrag mousedown mousegetcursor mousegetpos mousemove mouseup mousewheel msgbox number objcreate objcreateinterface objevent objevent objget objname onautoitexitregister onautoitexitunregister opt ping pixelchecksum pixelgetcolor pixelsearch processclose processexists processgetstats processlist processsetpriority processwait processwaitclose progressoff progresson progressset ptr random regdelete regenumkey regenumval regread regwrite round run runas runaswait runwait send sendkeepactive seterror setextended shellexecute shellexecutewait shutdown sin sleep soundplay soundsetwavevolume splashimageon splashoff splashtexton sqrt srandom statusbargettext stderrread stdinwrite stdioclose stdoutread string stringaddcr stringcompare stringformat stringfromasciiarray stringinstr stringisalnum stringisalpha stringisascii stringisdigit stringisfloat stringisint stringislower stringisspace stringisupper stringisxdigit stringleft stringlen stringlower stringmid stringregexp stringregexpreplace stringreplace stringreverse stringright stringsplit stringstripcr stringstripws stringtoasciiarray stringtobinary stringtrimleft stringtrimright stringupper tan tcpaccept tcpclosesocket tcpconnect tcplisten tcpnametoip tcprecv tcpsend tcpshutdown tcpstartup timerdiff timerinit tooltip traycreateitem traycreatemenu traygetmsg trayitemdelete trayitemgethandle trayitemgetstate trayitemgettext trayitemsetonevent trayitemsetstate trayitemsettext traysetclick trayseticon traysetonevent traysetpauseicon traysetstate traysettooltip traytip ubound udpbind udpclosesocket udpopen udprecv udpsend udpshutdown udpstartup vargettype winactivate winactive winclose winexists winflash wingetcaretpos wingetclasslist wingetclientsize wingethandle wingetpos wingetprocess wingetstate wingettext wingettitle winkill winlist winmenuselectitem winminimizeall winminimizeallundo winmove winsetontop winsetstate winsettitle winsettrans winwait winwaitactive winwaitclose winwaitnotactive
</pre>
<p>do we need this?  I don't think any other language has that, and better fit for a tag file, doesn't it?<br>
If we want different highlighting for known function names, we probably should rather play with Scintilla's rainbow identifiers or simply set this dynamically from a tags file (which is indeed not currently possible and has performance questions, but well).</p>
<p>Not a blocker, but it looks a bit odd.</p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207704111">data/filedefs/filetypes.autoit</a>:</p>
<pre style='color:#555'>> +
+[keywords]
+keywords=and byref case const continuecase continueloop default dim do else elseif endfunc endif endselect endswitch endwith enum exit exitloop false for func global if in local next not null or redim return select static step switch then to true until volatile wend while with
+functions=abs acos adlibregister adlibunregister asc ascw asin assign atan autoitsetoption autoitwingettitle autoitwinsettitle beep binary binarylen binarymid binarytostring bitand bitnot bitor bitrotate bitshift bitxor blockinput break call cdtray ceiling chr chrw clipget clipput consoleread consolewrite consolewriteerror controlclick controlcommand controldisable controlenable controlfocus controlgetfocus controlgethandle controlgetpos controlgettext controlhide controllistview controlmove controlsend controlsettext controlshow controltreeview cos dec dircopy dircreate dirgetsize dirmove dirremove dllcall dllcalladdress dllcallbackfree dllcallbackgetptr dllcallbackregister dllclose dllopen dllstructcreate dllstructgetdata dllstructgetptr dllstructgetsize dllstructsetdata drivegetdrive drivegetfilesystem drivegetlabel drivegetserial drivegettype drivemapadd drivemapdel drivemapget drivesetlabel drivespacefree drivespacetotal drivestatus envget envset envupdate eval execute exp filechangedir fileclose filecopy filecreatentfslink filecreateshortcut filedelete fileexists filefindfirstfile filefindnextfile fileflush filegetattrib filegetencoding filegetlongname filegetpos filegetshortcut filegetshortname filegetsize filegettime filegetversion fileinstall filemove fileopen fileopendialog fileread filereadline filereadtoarray filerecycle filerecycleempty filesavedialog fileselectfolder filesetattrib filesetend filesetpos filesettime filewrite filewriteline floor ftpsetproxy funcname guicreate guictrlcreateavi guictrlcreatebutton guictrlcreatecheckbox guictrlcreatecombo guictrlcreatecontextmenu guictrlcreatedate guictrlcreatedummy guictrlcreateedit guictrlcreategraphic guictrlcreategroup guictrlcreateicon guictrlcreateinput guictrlcreatelabel guictrlcreatelist guictrlcreatelistview guictrlcreatelistviewitem guictrlcreatemenu guictrlcreatemenuitem guictrlcreatemonthcal guictrlcreateobj guictrlcreatepic guictrlcreateprogress guictrlcreateradio guictrlcreateslider guictrlcreatetab guictrlcreatetabitem guictrlcreatetreeview guictrlcreatetreeviewitem guictrlcreateupdown guictrldelete guictrlgethandle guictrlgetstate guictrlread guictrlrecvmsg guictrlregisterlistviewsort guictrlsendmsg guictrlsendtodummy guictrlsetbkcolor guictrlsetcolor guictrlsetcursor guictrlsetdata guictrlsetdefbkcolor guictrlsetdefcolor guictrlsetfont guictrlsetgraphic guictrlsetimage guictrlsetlimit guictrlsetonevent guictrlsetpos guictrlsetresizing guictrlsetstate guictrlsetstyle guictrlsettip guidelete guigetcursorinfo guigetmsg guigetstyle guiregistermsg guisetaccelerators guisetbkcolor guisetcoord guisetcursor guisetfont guisethelp guiseticon guisetonevent guisetstate guisetstyle guistartgroup guiswitch hex hotkeyset httpsetproxy httpsetuseragent hwnd inetclose inetget inetgetinfo inetgetsize inetread inidelete iniread inireadsection inireadsectionnames inirenamesection iniwrite iniwritesection inputbox int isadmin isarray isbinary isbool isdeclared isdllstruct isfloat isfunc ishwnd isint iskeyword isnumber isobj isptr isstring log memgetstats mod mouseclick mouseclickdrag mousedown mousegetcursor mousegetpos mousemove mouseup mousewheel msgbox number objcreate objcreateinterface objevent objevent objget objname onautoitexitregister onautoitexitunregister opt ping pixelchecksum pixelgetcolor pixelsearch processclose processexists processgetstats processlist processsetpriority processwait processwaitclose progressoff progresson progressset ptr random regdelete regenumkey regenumval regread regwrite round run runas runaswait runwait send sendkeepactive seterror setextended shellexecute shellexecutewait shutdown sin sleep soundplay soundsetwavevolume splashimageon splashoff splashtexton sqrt srandom statusbargettext stderrread stdinwrite stdioclose stdoutread string stringaddcr stringcompare stringformat stringfromasciiarray stringinstr stringisalnum stringisalpha stringisascii stringisdigit stringisfloat stringisint stringislower stringisspace stringisupper stringisxdigit stringleft stringlen stringlower stringmid stringregexp stringregexpreplace stringreplace stringreverse stringright stringsplit stringstripcr stringstripws stringtoasciiarray stringtobinary stringtrimleft stringtrimright stringupper tan tcpaccept tcpclosesocket tcpconnect tcplisten tcpnametoip tcprecv tcpsend tcpshutdown tcpstartup timerdiff timerinit tooltip traycreateitem traycreatemenu traygetmsg trayitemdelete trayitemgethandle trayitemgetstate trayitemgettext trayitemsetonevent trayitemsetstate trayitemsettext traysetclick trayseticon traysetonevent traysetpauseicon traysetstate traysettooltip traytip ubound udpbind udpclosesocket udpopen udprecv udpsend udpshutdown udpstartup vargettype winactivate winactive winclose winexists winflash wingetcaretpos wingetclasslist wingetclientsize wingethandle wingetpos wingetprocess wingetstate wingettext wingettitle winkill winlist winmenuselectitem winminimizeall winminimizeallundo winmove winsetontop winsetstate winsettitle winsettrans winwait winwaitactive winwaitclose winwaitnotactive
+macros=@appdatacommondir @appdatadir @autoitexe @autoitpid @autoitversion @autoitx64 @com_eventobj @commonfilesdir @compiled @computername @comspec @cpuarch @cr @crlf @desktopcommondir @desktopdepth @desktopdir @desktopheight @desktoprefresh @desktopwidth @documentscommondir @error @exitcode @exitmethod @extended @favoritescommondir @favoritesdir @gui_ctrlhandle @gui_ctrlid @gui_dragfile @gui_dragid @gui_dropid @gui_winhandle @homedrive @homepath @homeshare @hotkeypressed @hour @ipaddress1 @ipaddress2 @ipaddress3 @ipaddress4 @kblayout @lf @localappdatadir @logondnsdomain @logondomain @logonserver @mday @min @mon @msec @muilang @mydocumentsdir @numparams @osarch @osbuild @oslang @osservicepack @ostype @osversion @programfilesdir @programscommondir @programsdir @scriptdir @scriptfullpath @scriptlinenumber @scriptname @sec @startmenucommondir @startmenudir @startupcommondir @startupdir @sw_disable @sw_enable @sw_hide @sw_lock @sw_maximize @sw_minimize @sw_restore @sw_show @sw_showdefault @sw_showmaximized @sw_showminimized @sw_showminnoactive @sw_showna @sw_shownoactivate @sw_shownormal @sw_unlock @systemdir @tab @tempdir @tray_id @trayiconflashing @trayiconvisible @username @userprofiledir @wday @windowsdir @workingdir @yday @year
+sent={!} {#} {^} {{} {}} {+} {alt} {altdown} {altup} {appskey} {asc} {backspace} {break} {browser_back} {browser_favorites} {browser_forward} {browser_home} {browser_refresh} {browser_search} {browser_stop} {bs} {capslock} {ctrldown} {ctrlup} {del} {delete} {down} {end} {enter} {esc} {escape} {f1} {f10} {f11} {f12} {f2} {f3} {f4} {f5} {f6} {f7} {f8} {f9} {home} {ins} {insert} {lalt} {launch_app1} {launch_app2} {launch_mail} {launch_media} {lctrl} {left} {lshift} {lwin} {lwindown} {lwinup} {media_next} {media_play_pause} {media_prev} {media_stop} {numlock} {numpad0} {numpad1} {numpad2} {numpad3} {numpad4} {numpad5} {numpad6} {numpad7} {numpad8} {numpad9} {numpadadd} {numpaddiv} {numpaddot} {numpadenter} {numpadmult} {numpadsub} {oem_102} {pause} {pgdn} {pgup} {printscreen} {ralt} {rctrl} {right} {rshift} {rwin} {rwindown} {rwinup} {scrolllock} {shiftdown} {shiftup} {sleep} {space} {tab} {up} {volume_down} {volume_mute} {volume_up}
+preprocessor=#ce #comments-end #comments-start #cs #include #include-once #notrayicon #onautoitstartregister #requireadmin
+special=#endregion #forcedef #forceref #ignorefunc #pragma #region
+expand=
+udf=
+
+[lexer_properties]
+#settings for folding comment blocks and preprocessor lines
+fold.comment=1
+fold.compact=0
+fold.preprocessor=1
</pre>
<p>You shouldn't be setting those here, they are not lexer-specific and we set them unconditionally (to the same values, even).<br>
If there is <em>really</em> a compelling reason to set them for this filetype, comment them out for them to be easy to find, but don't set them in case we wanna change Geany's default one day.</p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207705251">ctags/parsers/autoit.c</a>:</p>
<pre style='color:#555'>> @@ -0,0 +1,121 @@
+/*
</pre>
<p>All comments on this file are optional, as it's UCTags' upstream. I just take this opportunity to make comment on this, but anything here should be changed upstream first -- or at the same time.</p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207705283">ctags/parsers/autoit.c</a>:</p>
<pre style='color:#555'>> +/*
+*   FUNCTION DEFINITIONS
+*/
+static void findAutoItTags (void)
+{
+       vString *name = vStringNew ();
+       const unsigned char *line;
+
+       while ((line = readLineFromInputFile ()) != NULL)
+       {
+               const unsigned char* p = line;
+               if (p [0] == '#')
+               {
+                       /* min. string "#region" > 7 */
+                       if ((p [1] == 'R' || p [1] == 'r') &&
+                               strlen ((const char *) p) > 8 &&
</pre>
<p>Why <code>strlen()</code> here?  It'll highly likely be slower than manually checking the characters, and as a C string always ends with a <code>NUL</code> byte, it's safe to drop it, the character checks would catch a premature end.</p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207705308">ctags/parsers/autoit.c</a>:</p>
<pre style='color:#555'>> +    vString *name = vStringNew ();
+       const unsigned char *line;
+
+       while ((line = readLineFromInputFile ()) != NULL)
+       {
+               const unsigned char* p = line;
+               if (p [0] == '#')
+               {
+                       /* min. string "#region" > 7 */
+                       if ((p [1] == 'R' || p [1] == 'r') &&
+                               strlen ((const char *) p) > 8 &&
+                               (p [2] == 'E' || p [2] == 'e') &&
+                               (p [3] == 'G' || p [3] == 'g') &&
+                               (p [4] == 'I' || p [4] == 'i') &&
+                               (p [5] == 'O' || p [5] == 'o') &&
+                               (p [6] == 'N' || p [6] == 'n'))
</pre>
<p>Doesn't the syntax require a whitespace after the <code>#region</code>? This would catch <code>#regionfoobar something</code> as a region named <code>foobar something</code></p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207705327">ctags/parsers/autoit.c</a>:</p>
<pre style='color:#555'>> +    vString *name = vStringNew ();
+       const unsigned char *line;
+
+       while ((line = readLineFromInputFile ()) != NULL)
+       {
+               const unsigned char* p = line;
+               if (p [0] == '#')
+               {
+                       /* min. string "#region" > 7 */
+                       if ((p [1] == 'R' || p [1] == 'r') &&
+                               strlen ((const char *) p) > 8 &&
+                               (p [2] == 'E' || p [2] == 'e') &&
+                               (p [3] == 'G' || p [3] == 'g') &&
+                               (p [4] == 'I' || p [4] == 'i') &&
+                               (p [5] == 'O' || p [5] == 'o') &&
+                               (p [6] == 'N' || p [6] == 'n'))
</pre>
<p>Depending on the syntax limitation, you could also want to restrict the set of characters allowed for the region's name, but that might be less of a problem.</p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207705346">ctags/parsers/autoit.c</a>:</p>
<pre style='color:#555'>> +
+                               if (vStringLength(name) > 0)
+                               {
+                                       makeSimpleTag (name, AutoItKinds, K_REGION);
+                                       vStringClear (name);
+                               }
+                       }
+               }
+               else
+               {
+                       /* skip white space */
+                       while (isspace ((int) *p))
+                               ++p;
+                       /* min. string "func a()" == 8 */
+                       if ((p [0] == 'F' || p [0] == 'f') &&
+                               strlen ((const char *) p) >= 8 &&
</pre>
<p>again, the <code>strlen()</code> check doesn't seem very useful.</p>

<hr>

<p>In <a href="https://github.com/geany/geany/pull/1752#discussion_r207706506">scintilla/scintilla_changes.patch</a>:</p>
<pre style='color:#555'>> @@ -74,7 +74,7 @@ index ed47aa8..e58f1ab 100644
        LINK_LEXER(lmAsm);
 -      LINK_LEXER(lmAsn1);
 -      LINK_LEXER(lmASY);
--      LINK_LEXER(lmAU3);
+       LINK_LEXER(lmAU3);
</pre>
<p>You also need to change the diff section header to match (<code>-77,123 +77,51</code>) as you're changing the final line count.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/pull/1752#pullrequestreview-143377776">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJ8hO2VvqKfjByakg3AiUfqA13J0xks5uNYjwgaJpZM4RveNf">mute the thread</a>.<img src="https://github.com/notifications/beacon/ABDrJ0dbFcUelRqE-dtGdkNyQIfhydTmks5uNYjwgaJpZM4RveNf.gif" height="1" width="1" alt="" /></p>
<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/geany/geany","title":"geany/geany","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/email/message_cards/header.png","avatar_image_url":"https://assets-cdn.github.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/geany/geany"}},"updates":{"snippets":[{"icon":"PERSON","message":"@b4n requested changes on #1752"}],"action":{"name":"View Pull Request","url":"https://github.com/geany/geany/pull/1752#pullrequestreview-143377776"}}}</script>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/geany/geany/pull/1752#pullrequestreview-143377776",
"url": "https://github.com/geany/geany/pull/1752#pullrequestreview-143377776",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
},
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"hideOriginalBody": "false",
"originator": "AF6C5A86-E920-430C-9C59-A73278B5EFEB",
"title": "@b4n requested changes on 1752",
"sections": [
{
"text": "Otherwise it looks good.\r\nI didn't review the Scintilla lexer properly, but it matches upstream's so I'm gonna be happy about it.",
"activityTitle": "**Colomban Wendling**",
"activityImage": "https://assets-cdn.github.com/images/email/message_cards/avatar.png",
"activitySubtitle": "@b4n",
"facts": [

]
}
],
"potentialAction": [
{
"targets": [
{
"os": "default",
"uri": "https://github.com/geany/geany/pull/1752#pullrequestreview-143377776"
}
],
"@type": "OpenUri",
"name": "View on GitHub"
},
{
"name": "Unsubscribe",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"MuteNotification\",\n\"threadId\": 297657183\n}"
}
],
"themeColor": "26292E"
}
]</script>