mIRC Syntax Highlighter for Notepad++

By Serpentsounds on Jun 12, 2010

Well, this is technically XML, but I didn't see an entry for XML in the snippet list (rightfully so, as it would be a bit out of place). The next most directly applicable label would be mIRC then.

If you use Notepad++ to edit code (if you don't, you may want to look into it), you may know it gives you the ability to define your own languages, to an extent. When I first saw the interface, I was a bit confused, and it took me a while to sort everything out, but now I'm wishing it was even more in-depth. Because it's not, there are a few things left to be desired with this, but I think it beats standard black on white in any case.

Anyways, so you don't have to go through the trouble, here is the file for a language entry for mIRC. You should save this as userDefineLang.xml in the C:\Users\Yourname\Appdata\Roaming\Notepad++\ folder.

<NotepadPlus>
    <UserLang name="mIRC" ext="mrc">
        <Settings>
            <Global caseIgnored="yes" />
            <TreatAsSymbol comment="no" commentLine="no" />
            <Prefix words1="no" words2="no" words3="no" words4="yes" />
        </Settings>
        <KeywordLists>
            <Keywords name="Delimiters">000000</Keywords>
            <Keywords name="Folder+">{</Keywords>
            <Keywords name="Folder-">}</Keywords>
            <Keywords name="Operators">! ( ) , . /</Keywords>
            <Keywords name="Comment">1/* 1 2*/ 2 0;</Keywords>
            <Keywords name="Words1">$abook $abs $active $activecid $activewid $address $addtok $agent $agentname $agentstat $agentver $alias $and $anick $ansi2mirc $aop $appactive $ appstate $asc $asctime $asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind $bit off $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes $chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color $com $comcall $comchan $comerr $compact $compress $comval $cos $count $cr $crc $crew $crlf $ctime $ctimer $ctrlenter $date $day $daylight $dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress $deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll $dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error $eval $event $exists $feof $ferr $fgetc $file $filename $filtered $finddir $finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve $fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt $group $halted $hash $height $hfind $hget $highlight $hnick $host $hotline $hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil $inellipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect $insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile $isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive $lactivecid $left $len $level $lf $line $lines $link $lock $locked $log $logdir $logstamp $logstampfmt $longfn $longip $lower $ltimer $maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext $menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode $modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile $nopath $noqt $not $notags $notify $null $numeric $numtok $online $onpoly $opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree $pos $prefix $prop $protect $puttok $qt $query $rand $rawmsg $read $readini $readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex $reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline $sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin $site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname $sorttok $sound $sqrt $sreg $ssl $sslready $status $str $strip $stripped $style $submenu $switchbar $tan $target $ticks $time $timer $timestamp $timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel $ulist $upper $uptime $Url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver $version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $1- $2- $3- $4- $5- $6- $7- $8- $9- $10- $true $false</Keywords>
            <Keywords name="Words2">/ // abook ajinvite alias aline ame amsg anick aop auser autojoin avoice away background ban bcopy beep break break breplace bset btrunc bunset bwrite channel clear clearall cline clipboard close cnick color comclose comopen comreg continue copy crew ctcpreply ctcps dcc dccserver dde ddeserver debug dec describe dialog did didtok disable disconnect dlevel dline dll dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable events exit fclose filter findtext finger firewall flash flist flood flush flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload guser hadd halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear ialmark identd if ignore iline inc invite iuser join kick linesep links list load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice omsg onotice part partall pdcc perform play playctrl pop protect pvoice qme qmsg query queryrn quit raw reload remini remote remove rename renwin reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini say scid scon server set showmirc signal sline sockaccept sockclose socklist socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho var vcadd vcmd vcrem vol while whois window winhelp write writeini else elseif</Keywords>
            <Keywords name="Words3">== === != &lt; &gt; &gt;= &lt;= // \\ &amp; &amp;&amp; || isin isincs iswm iswmcs isnum isletter isalnum isalpha islower isupper ison isop ishop isvoice isreg ischan isban isaop isavoice isignore isprotect isnotify</Keywords>
            <Keywords name="Words4">%</Keywords>
            </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" styleID="11" fgColor="000000" bgColor="FFFFFF" fontName="Courier New" fontStyle="0" fontSize="11" />
            <WordsStyle name="FOLDEROPEN" styleID="12" fgColor="800080" bgColor="FFFFFF" fontName="Book Antiqua" fontStyle="1" />
            <WordsStyle name="FOLDERCLOSE" styleID="13" fgColor="800080" bgColor="FFFFFF" fontName="Book Antiqua" fontStyle="1" />
            <WordsStyle name="KEYWORD1" styleID="5" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="KEYWORD2" styleID="6" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="KEYWORD3" styleID="7" fgColor="D82727" bgColor="FFFFFF" fontName="" fontStyle="3" />
            <WordsStyle name="KEYWORD4" styleID="8" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="2" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="2" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="2" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF0080" bgColor="FFFFFF" fontName="" fontStyle="1" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="400080" bgColor="FFFFFF" fontName="Courier New" fontStyle="0" fontSize="11" />
            <WordsStyle name="DELIMINER1" styleID="14" fgColor="800000" bgColor="FFFFFF" fontName="Arial" fontStyle="1" />
            <WordsStyle name="DELIMINER2" styleID="15" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="DELIMINER3" styleID="16" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
        </Styles>
    </UserLang>
</NotepadPlus>

Comments

Sign in to comment.
Reconix   -  Apr 24, 2015

Great stuff thanks, works like a charm.

 Respond  
KindOne   -  Nov 19, 2012

This breaks in Notepad++ 6.2

alias cake { 
  ; some IRCd's allow "/" in the vhost/spoof.
  if ($wildsite == *!*@KindOne/*) { 
    echo -ag This is now a comment because of the "/*"
  } 
}
 Respond  
Savage_CL   -  Nov 05, 2012

By far my favorite program for mSL scripting is mSLdev, written by Wiz126. It's a complete mSL IDE, and does very well. You can find it here:

http://msldev.zigwap.com/

 Respond  
h3X   -  Apr 30, 2012

It seems to not work fine for me. Installed in the %appdata%\Notepad++ and restarted N++, named the codefile with the mrc extension and even tried manually selecting language. There is no entry for it in the menu, and nothing happens when selecting User-Defined. Still black and white.

*: 5.9.6.2 (UNICODE) version.

 Respond  
sunslayer   -  Jan 15, 2011

it seems to work fine for me

 Respond  
sean   -  Jan 15, 2011

It (mEdit) was severely unstable when I tested it quite some time ago.
Innovative: yes; stable: no.

 Respond  
k3rb3r05   -  Jan 09, 2011

Just make sure you save your code often...

Mirc crashed on me a couple of times. Not very stable... :S

falarcompaulo  -  Aug 27, 2017

I am using mEdit.dll along with NoInstaCrash.dll and it's been working fine - no crashes until now.

Sign in to comment

sunslayer   -  Jan 08, 2011

@k3rb3r05 very worthy bump...
i didn't even realize anything like that was even possible

 Respond  
k3rb3r05   -  Jan 07, 2011

Or, you can try this: http://kthx.net/medit/

gives you syntax highlighting right on mirc editor

tried it on 7.17 and it works just fine

PS: sorry for bumping an old thread, but i figured it was worth it

 Respond  
Gummo   -  Jun 13, 2010

You can try looking into lexers.. I think that's the way to make better syntax highlighters.

 Respond  
Serpentsounds   -  Jun 12, 2010

Ah, thanks sean, that was pretty careless of me. I'll update it.

jaytea, unless I made my own program from the ground up, there probably won't be a ton of improvement. Notepad++ is a bit limited in things you can define in a custom language. It definitely has some useful options, but you can't make things as perfectly as you would like. Hopefully support is extended in future releases of Notepad++.

 Respond  
sean   -  Jun 12, 2010

very nice; wish the mIRC client had internal syntax highlighting. only thing i noticed, you need to change to otherwise upon opening a .mrc file you'd have to manually select the mIRC from the lang list.

 Respond  
jaytea   -  Jun 12, 2010

very nice! i don't use notepad++ anymore and never messed with syntax highlighting, but i was wondering if it accepted regular expressions? it would be a fun exercise in regex to try and describe mirc syntax as precisely as possible; this seems to be lacking just a bit with regards to custom identifiers/aliases, escaped identifiers, distinguishing between plaintext and syntax, and so on

just something to consider for a possible update/extension :p

 Respond  
Jethro   -  Jun 12, 2010

Nice. You can give Hawkee a shout, either in his PM or profile, to have XML added as a choice of scripting language entry.

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.