IDEs/Editors for Linux

BlitzMax Forums/BlitzMax Programming/IDEs/Editors for Linux

The Forum Archive is locked. These are the original blitzbasic.com forums, kept so their posts can still be read and searched. No new topics, replies or edits can be made here. To join the conversation, head over to the Blitz3D+ forums.

Got tired of trying to find existing solutions, so I wrote a highlighter for KATE.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="BlitzMax" version="1.0" kateversion="2.3" section="Sources" extensions="*.bmx" mimetype="" author="Noel Cower" license="LGPL">
  <highlighting>
    <list name="keywords">
      <item>Matrix</item>
      <item>Plane</item>
      <item>Quaternion</item>
      <item>Rectangle</item>
      <item>Vector2</item>
      <item>Vector3</item>
      <item>TBankStream</item>
      <item>TBank</item>
      <item>Abs</item>
      <item>Abstract</item>
      <item>And</item>
      <item>Asc</item>
      <item>Assert</item>
      <item>Byte</item>
      <item>Case</item>
      <item>Catch</item>
      <item>Chr</item>
      <item>Const</item>
      <item>Continue</item>
      <item>Default</item>
      <item>DefData</item>
      <item>Delete</item>
      <item>Double</item>
      <item>EachIn</item>
      <item>Else</item>
      <item>ElseIf</item>
      <item>End</item>
      <item>EndExtern</item>
      <item>EndFunction</item>
      <item>EndIf</item>
      <item>EndMethod</item>
      <item>EndRem</item>
      <item>EndSelect</item>
      <item>EndTry</item>
      <item>EndType</item>
      <item>EndWhile</item>
      <item>Exit</item>
      <item>Extends</item>
      <item>Extern</item>
      <item>False</item>
      <item>Field</item>
      <item>Final</item>
      <item>Float</item>
      <item>For</item>
      <item>Forever</item>
      <item>Framework</item>
      <item>Function</item>
      <item>Global</item>
      <item>Goto</item>
      <item>If</item>
      <item>Import</item>
      <item>Incbin</item>
      <item>IncbinLen</item>
      <item>IncbinPtr</item>
      <item>Include</item>
      <item>Int</item>
      <item>Len</item>
      <item>Local</item>
      <item>Long</item>
      <item>Max</item>
      <item>Method</item>
      <item>Min</item>
      <item>Mod</item>
      <item>Module</item>
      <item>ModuleInfo</item>
      <item>New</item>
      <item>Next</item>
      <item>Not</item>
      <item>Null</item>
      <item>Object</item>
      <item>Or</item>
      <item>Pi</item>
      <item>Private</item>
      <item>Ptr</item>
      <item>Public</item>
      <item>ReadData</item>
      <item>Release</item>
      <item>Rem</item>
      <item>Repeat</item>
      <item>RestoreData</item>
      <item>Return</item>
      <item>Sar</item>
      <item>Select</item>
      <item>Self</item>
      <item>Sgn</item>
      <item>Shl</item>
      <item>Short</item>
      <item>Shr</item>
      <item>SizeOf</item>
      <item>Step</item>
      <item>Strict</item>
      <item>String</item>
      <item>Super</item>
      <item>SuperStrict</item>
      <item>Then</item>
      <item>Throw</item>
      <item>To</item>
      <item>True</item>
      <item>Try</item>
      <item>Type</item>
      <item>Until</item>
      <item>Var</item>
      <item>Varptr</item>
      <item>Wend</item>
      <item>While</item>
      <item>EmitEventHook</item>
      <item>TEvent</item>
      <item>FlipHook</item>
      <item>TLink</item>
      <item>TList</item>
      <item>TListEnum</item>
      <item>BaseLuaInterface</item>
      <item>TPixmap</item>
      <item>TPixmapLoader</item>
      <item>TCStream</item>
      <item>TIO</item>
      <item>TStream</item>
      <item>TStreamException</item>
      <item>TStreamFactory</item>
      <item>TStreamReadException</item>
      <item>TStreamWrapper</item>
      <item>TStreamWriteException</item>
      <item>XmlAttr</item>
      <item>XmlDocument</item>
      <item>XmlNode</item>
    </list>
    <list name="functions">
      <item>Cotangent</item>
      <item>DegreeToRad</item>
      <item>NearestPower</item>
      <item>RadToDegree</item>
      <item>ReturnedY</item>
      <item>Slope</item>
      <item>YIntercept</item>
      <item>AllocChannel</item>
      <item>ChannelPlaying</item>
      <item>CueSound</item>
      <item>LoadSound</item>
      <item>PauseChannel</item>
      <item>PlaySound</item>
      <item>ResumeChannel</item>
      <item>SetChannelDepth</item>
      <item>SetChannelPan</item>
      <item>SetChannelRate</item>
      <item>SetChannelVolume</item>
      <item>StopChannel</item>
      <item>CreateAudioSample</item>
      <item>CreateStaticAudioSample</item>
      <item>LoadAudioSample</item>
      <item>CreateBankStream</item>
      <item>BankBuf</item>
      <item>BankCapacity</item>
      <item>BankSize</item>
      <item>CopyBank</item>
      <item>CreateBank</item>
      <item>CreateStaticBank</item>
      <item>LoadBank</item>
      <item>PeekByte</item>
      <item>PeekDouble</item>
      <item>PeekFloat</item>
      <item>PeekInt</item>
      <item>PeekLong</item>
      <item>PeekShort</item>
      <item>PokeByte</item>
      <item>PokeDouble</item>
      <item>PokeFloat</item>
      <item>PokeInt</item>
      <item>PokeLong</item>
      <item>PokeShort</item>
      <item>ReadBank</item>
      <item>ResizeBank</item>
      <item>SaveBank</item>
      <item>WriteBank</item>
      <item>Bin</item>
      <item>Hex</item>
      <item>Instr</item>
      <item>Left</item>
      <item>LongBin</item>
      <item>LongHex</item>
      <item>Lower</item>
      <item>LSet</item>
      <item>Mid</item>
      <item>Replace</item>
      <item>Right</item>
      <item>RSet</item>
      <item>Trim</item>
      <item>Upper</item>
      <item>AppArgs</item>
      <item>AppDir</item>
      <item>AppFile</item>
      <item>AppTitle</item>
      <item>LaunchDir</item>
      <item>DebugLog</item>
      <item>DebugStop</item>
      <item>GCCollect</item>
      <item>GCMemAlloced</item>
      <item>GCSetMode</item>
      <item>HandleFromObject</item>
      <item>HandleToObject</item>
      <item>MemAlloc</item>
      <item>MemClear</item>
      <item>MemCopy</item>
      <item>MemExtend</item>
      <item>MemFree</item>
      <item>MemMove</item>
      <item>OnEnd</item>
      <item>ReadStdin</item>
      <item>RuntimeError</item>
      <item>WriteStderr</item>
      <item>WriteStdout</item>
      <item>bglAdjustTexSize</item>
      <item>bglCreateContext</item>
      <item>bglDeleteContext</item>
      <item>bglDisplayModes</item>
      <item>bglDrawText</item>
      <item>bglFixedFontBitmaps</item>
      <item>bglSetMouseVisible</item>
      <item>bglSetSwapInterval</item>
      <item>bglSwapBuffers</item>
      <item>bglTexFromPixmap</item>
      <item>BufferedD3D7Max2DDriver</item>
      <item>D3D7Max2DDriver</item>
      <item>BigEndianStream</item>
      <item>LittleEndianStream</item>
      <item>CreateEvent</item>
      <item>EmitEvent</item>
      <item>CurrentEvent</item>
      <item>EventData</item>
      <item>EventExtra</item>
      <item>EventID</item>
      <item>EventMods</item>
      <item>EventSource</item>
      <item>EventSourceHandle</item>
      <item>EventText</item>
      <item>EventX</item>
      <item>EventY</item>
      <item>PeekEvent</item>
      <item>PollEvent</item>
      <item>PostEvent</item>
      <item>WaitEvent</item>
      <item>ChangeDir</item>
      <item>CloseDir</item>
      <item>CloseFile</item>
      <item>CreateDir</item>
      <item>CreateFile</item>
      <item>CurrentDir</item>
      <item>DeleteDir</item>
      <item>DeleteFile</item>
      <item>ExtractDir</item>
      <item>ExtractExt</item>
      <item>FileMode</item>
      <item>FileSize</item>
      <item>FileTime</item>
      <item>FileType</item>
      <item>LoadDir</item>
      <item>NextFile</item>
      <item>OpenFile</item>
      <item>ReadDir</item>
      <item>ReadFile</item>
      <item>RealPath</item>
      <item>RenameFile</item>
      <item>SetFileMode</item>
      <item>StripAll</item>
      <item>StripDir</item>
      <item>StripExt</item>
      <item>StripSlash</item>
      <item>WriteFile</item>
      <item>CloseGNetHost</item>
      <item>CloseGNetObject</item>
      <item>CloseGNetPeer</item>
      <item>CreateGNetHost</item>
      <item>CreateGNetMessage</item>
      <item>CreateGNetObject</item>
      <item>GetGNetFloat</item>
      <item>GetGNetInt</item>
      <item>GetGNetString</item>
      <item>GetGNetTarget</item>
      <item>GNetAccept</item>
      <item>GNetConnect</item>
      <item>GNetListen</item>
      <item>GNetMessageObject</item>
      <item>GNetMessages</item>
      <item>GNetObjectLocal</item>
      <item>GNetObjectRemote</item>
      <item>GNetObjects</item>
      <item>GNetObjectState</item>
      <item>GNetPeers</item>
      <item>GNetPeerTCPSocket</item>
      <item>GNetPeerUDPSocket</item>
      <item>GNetSync</item>
      <item>GNetTotalBytesIn</item>
      <item>GNetTotalBytesOut</item>
      <item>SendGNetMessage</item>
      <item>SetGNetFloat</item>
      <item>SetGNetInt</item>
      <item>SetGNetString</item>
      <item>SetGNetTarget</item>
      <item>CloseGraphics</item>
      <item>CountGraphicsModes</item>
      <item>CreateGraphics</item>
      <item>EndGraphics</item>
      <item>Flip</item>
      <item>GetGraphicsMode</item>
      <item>Graphics</item>
      <item>GraphicsDepth</item>
      <item>GraphicsFlags</item>
      <item>GraphicsHeight</item>
      <item>GraphicsHertz</item>
      <item>GraphicsModeExists</item>
      <item>GraphicsModes</item>
      <item>GraphicsWidth</item>
      <item>SetGraphics</item>
      <item>SetGraphicsDriver</item>
      <item>AddHook</item>
      <item>AllocHookId</item>
      <item>RemoveHook</item>
      <item>RunHooks</item>
      <item>JoyAxisCaps</item>
      <item>JoyButtonCaps</item>
      <item>JoyCount</item>
      <item>JoyDown</item>
      <item>JoyHat</item>
      <item>JoyName</item>
      <item>JoyPitch</item>
      <item>JoyR</item>
      <item>JoyRoll</item>
      <item>JoyU</item>
      <item>JoyV</item>
      <item>JoyWheel</item>
      <item>JoyX</item>
      <item>JoyY</item>
      <item>JoyYaw</item>
      <item>JoyZ</item>
      <item>ClearList</item>
      <item>CountList</item>
      <item>CreateList</item>
      <item>ListAddFirst</item>
      <item>ListAddLast</item>
      <item>ListContains</item>
      <item>ListFindLink</item>
      <item>ListFromArray</item>
      <item>ListIsEmpty</item>
      <item>ListRemove</item>
      <item>ListToArray</item>
      <item>RemoveLink</item>
      <item>ReverseList</item>
      <item>SortList</item>
      <item>SwapLists</item>
      <item>ACos</item>
      <item>ASin</item>
      <item>ATan</item>
      <item>ATan2</item>
      <item>Ceil</item>
      <item>Cos</item>
      <item>Cosh</item>
      <item>Exp</item>
      <item>Floor</item>
      <item>Log</item>
      <item>Log10</item>
      <item>Sin</item>
      <item>Sinh</item>
      <item>Sqr</item>
      <item>Tan</item>
      <item>Tanh</item>
      <item>AutoImageFlags</item>
      <item>AutoMidHandle</item>
      <item>Cls</item>
      <item>CollideImage</item>
      <item>CollideRect</item>
      <item>CreateImage</item>
      <item>DrawImage</item>
      <item>DrawImageRect</item>
      <item>DrawLine</item>
      <item>DrawOval</item>
      <item>DrawPixmap</item>
      <item>DrawPoly</item>
      <item>DrawRect</item>
      <item>DrawText</item>
      <item>GetAlpha</item>
      <item>GetBlend</item>
      <item>GetClsColor</item>
      <item>GetColor</item>
      <item>GetHandle</item>
      <item>GetImageFont</item>
      <item>GetLineWidth</item>
      <item>GetMaskColor</item>
      <item>GetOrigin</item>
      <item>GetRotation</item>
      <item>GetScale</item>
      <item>GetViewport</item>
      <item>GrabImage</item>
      <item>GrabPixmap</item>
      <item>ImageHeight</item>
      <item>ImagesCollide</item>
      <item>ImagesCollide2</item>
      <item>ImageWidth</item>
      <item>LoadAnimImage</item>
      <item>LoadImage</item>
      <item>LoadImageFont</item>
      <item>LockImage</item>
      <item>MidHandleImage</item>
      <item>Plot</item>
      <item>ResetCollisions</item>
      <item>SetAlpha</item>
      <item>SetBlend</item>
      <item>SetClsColor</item>
      <item>SetColor</item>
      <item>SetHandle</item>
      <item>SetImageFont</item>
      <item>SetImageHandle</item>
      <item>SetLineWidth</item>
      <item>SetMaskColor</item>
      <item>SetOrigin</item>
      <item>SetRotation</item>
      <item>SetScale</item>
      <item>SetTransform</item>
      <item>SetViewport</item>
      <item>TextHeight</item>
      <item>TextWidth</item>
      <item>TileImage</item>
      <item>UnlockImage</item>
      <item>GLAdjustTexSize</item>
      <item>GLDrawText</item>
      <item>GLGraphics</item>
      <item>GLGraphicsDriver</item>
      <item>GLTexFromPixmap</item>
      <item>GLMax2DDriver</item>
      <item>ConvertPixmap</item>
      <item>CopyPixmap</item>
      <item>CreatePixmap</item>
      <item>CreateStaticPixmap</item>
      <item>LoadPixmap</item>
      <item>MaskPixmap</item>
      <item>PixmapFormat</item>
      <item>PixmapHeight</item>
      <item>PixmapPitch</item>
      <item>PixmapPixelPtr</item>
      <item>PixmapWidth</item>
      <item>PixmapWindow</item>
      <item>ReadPixel</item>
      <item>ResizePixmap</item>
      <item>WritePixel</item>
      <item>XFlipPixmap</item>
      <item>YFlipPixmap</item>
      <item>LoadPixmapPNG</item>
      <item>SavePixmapPNG</item>
      <item>AppSuspended</item>
      <item>AppTerminate</item>
      <item>FlushKeys</item>
      <item>FlushMouse</item>
      <item>GetChar</item>
      <item>KeyDown</item>
      <item>KeyHit</item>
      <item>MouseDown</item>
      <item>MouseHit</item>
      <item>MouseX</item>
      <item>MouseY</item>
      <item>MouseZ</item>
      <item>WaitChar</item>
      <item>WaitKey</item>
      <item>WaitMouse</item>
      <item>CreateRamStream</item>
      <item>Rand</item>
      <item>Rnd</item>
      <item>RndDouble</item>
      <item>RndFloat</item>
      <item>RndSeed</item>
      <item>SeedRnd</item>
      <item>CreateSocketStream</item>
      <item>SocketStreamSocket</item>
      <item>BindSocket</item>
      <item>CloseSocket</item>
      <item>ConnectSocket</item>
      <item>CreateTCPSocket</item>
      <item>CreateUDPSocket</item>
      <item>DottedIP</item>
      <item>HostIp</item>
      <item>HostIps</item>
      <item>HostName</item>
      <item>SocketAccept</item>
      <item>SocketConnected</item>
      <item>SocketListen</item>
      <item>SocketLocalIP</item>
      <item>SocketLocalPort</item>
      <item>SocketReadAvail</item>
      <item>SocketRemoteIP</item>
      <item>SocketRemotePort</item>
      <item>SQL_Close</item>
      <item>SQL_Error</item>
      <item>SQL_Exec</item>
      <item>SQL_Open</item>
      <item>StandardIOStream</item>
      <item>Input</item>
      <item>Print</item>
      <item>CasedFileName</item>
      <item>CloseStream</item>
      <item>CopyBytes</item>
      <item>CopyStream</item>
      <item>Eof</item>
      <item>FlushStream</item>
      <item>LoadByteArray</item>
      <item>LoadString</item>
      <item>OpenStream</item>
      <item>ReadByte</item>
      <item>ReadDouble</item>
      <item>ReadFloat</item>
      <item>ReadInt</item>
      <item>ReadLine</item>
      <item>ReadLong</item>
      <item>ReadShort</item>
      <item>ReadStream</item>
      <item>ReadString</item>
      <item>SaveByteArray</item>
      <item>SaveString</item>
      <item>SeekStream</item>
      <item>StreamPos</item>
      <item>StreamSize</item>
      <item>WriteByte</item>
      <item>WriteDouble</item>
      <item>WriteFloat</item>
      <item>WriteInt</item>
      <item>WriteLine</item>
      <item>WriteLong</item>
      <item>WriteShort</item>
      <item>WriteStream</item>
      <item>WriteString</item>
      <item>Confirm</item>
      <item>CurrentDate</item>
      <item>CurrentTime</item>
      <item>Delay</item>
      <item>HideMouse</item>
      <item>MilliSecs</item>
      <item>MoveMouse</item>
      <item>Notify</item>
      <item>OpenURL</item>
      <item>PollSystem</item>
      <item>Proceed</item>
      <item>RequestDir</item>
      <item>RequestFile</item>
      <item>ShowMouse</item>
      <item>WaitSystem</item>
      <item>CreateTimer</item>
      <item>StopTimer</item>
      <item>TimerTicks</item>
      <item>WaitTimer</item>
      <item>compress</item>
      <item>compress2</item>
<item>uncompress</item>
    </list>

    <contexts>
      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">

        <RegExpr attribute="Keyword" context="#stay" String="\b(if)([\s]|$)" insensitive="true" beginRegion="IfRegion"/>
        <RegExpr attribute="Keyword" context="#stay" String="\b(end( ?)if)([\s]|$)" insensitive="true" endRegion="IfRegion"/>

        <RegExpr attribute="Keyword" context="#stay" String="\b(while)([\s]|$)" insensitive="true" beginRegion="WhileRegion"/>
        <RegExpr attribute="Keyword" context="#stay" String="\b(wend|(end( ?)while))([\s]|$)" insensitive="true" endRegion="WhileRegion"/>

        <RegExpr attribute="Keyword" context="#stay" String="\b(repeat)([\s]|$)" insensitive="true" beginRegion="RepeatRegion"/>
        <RegExpr attribute="Keyword" context="#stay" String="\b(until|forever)([\s]|$)" insensitive="true" endRegion="RepeatRegion"/>

        <RegExpr attribute="Keyword" context="#stay" String="\b(select)([\s]|$)" insensitive="true" beginRegion="SelectRegion"/>
        <RegExpr attribute="Keyword" context="#stay" String="\b(end( ?)select)([\s]|$)" insensitive="true" endRegion="SelectRegion"/>

        <RegExpr attribute="Keyword" context="#stay" String="\b(for)([\s]|$)" insensitive="true" beginRegion="ForRegion"/>
        <RegExpr attribute="Keyword" context="#stay" String="\b(next)([\s]|$)" insensitive="true" endRegion="ForRegion"/>

        <RegExpr attribute="Keyword" context="#stay" String="\b(function)([.\s]|$)" insensitive="true" beginRegion="FunctionRegion"/>
        <RegExpr attribute="Keyword" context="#stay" String="\b(end( ?)function)([\s]|$)" insensitive="true" endRegion="FunctionRegion"/>
        
        <RegExpr attribute="Keyword" context="#stay" String="\b(method)([.\s]|$)" insensitive="true" beginRegion="MethodRegion"/>
        <RegExpr attribute="Keyword" context="#stay" String="\b(end( ?)method)([\s]|$)" insensitive="true" endRegion="MethodRegion"/>

        <RegExpr attribute="Keyword" context="#stay" String="\b(type)([\s]|$)" insensitive="true" beginRegion="StructureRegion"/>
        <RegExpr attribute="Keyword" context="#stay" String="\b(end( ?)type)([\s]|$)" insensitive="true" endRegion="StructureRegion"/>
        
        <RegExpr attribute="Comment" context="#stay" String="\b(rem)([\s]|$)" insensitive="true" beginRegion="CommentRegion"/>
        <RegExpr attribute="Comment" context="#stay" String="\b(end( ?)rem)([\s]|$)" insensitive="true" endRegion="CommentRegion"/>

        <keyword attribute="Keyword" context="#stay" String="keywords"/>
        <keyword attribute="Functions" context="#stay" String="functions"/>
        <RegExpr attribute="Constant" context="#stay" String="\(const )+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"/>
        <Float attribute="Number" context="#stay"/>
        <Int attribute="Number" context="#stay"/>
        <DetectChar attribute="String" context="String" char="&quot;" />
        <DetectChar attribute="Comment" context="Comment1" char="'"/>
      </context>
      <context attribute="String" lineEndContext="#pop" name="String">
        <DetectChar attribute="String" context="#pop" char="&quot;"/>
      </context>
      <context attribute="Comment" lineEndContext="#pop" name="Comment1">
        <keyword attribute="Number" context="#stay" String="attention" />
      </context>
    </contexts>
    <itemDatas>
      <itemData name="Normal Text" defStyleNum="dsNormal"/>
      <itemData name="Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Functions" defStyleNum="dsFunction"/>
      <itemData name="Constant" defStyleNum="dsDataType"/>
      <itemData name="Number" defStyleNum="dsDecVal"/>
      <itemData name="String" defStyleNum="dsString"/>
      <itemData name="Comment" defStyleNum="dsComment"/>
      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
    </itemDatas>
  </highlighting>
  <general>
    <keywords casesensitive="0" />
    <comments>
      <comment name="singleLine" start="' " />
      <comment name="multiLine" start="Rem " end=" EndRem" region="CommentRegion" />
    </comments>
  </general>
</language>
<!-- // kate: space-indent on; indent-width 2; replace-tabs on; -->


You put this in ~/.kde/share/apps/katepart/syntax/blitzmax.xml