Kate LSL Mode

From Second Life Wiki
Revision as of 07:32, 11 March 2007 by Balder Lathrop (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Since I can't figure out how upload ordinary files to the wiki, you'll have to copy-and-paste the text below into a file called "lsl.xml". Place this file in $KDEDIR/share/apps/katepart/syntax/. Just so you know, the mode below isn't perfect, its a quick merge between a syntax file for Code-Genie 3.0 and the Java mode for Kate. If you find bugs feel free to improve it.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="LSL" version="1.0" kateversion="2.4" section="Sources" extensions="*.lsl" mimetype="text/x-lsl" license="LGPL" author="Balder Lathrop">
  <highlighting>
    <list name="functions">
      <item> llAbs </item>
      <item> llAcos </item>
      <item> llAddToLandPassList </item>
      <item> llAdjustSoundVolume </item>
      <item> llAllowInventoryDrop </item>
      <item> llAngleBetween </item>
      <item> llApplyImpulse </item>
      <item> llApplyRotationalImpulse </item>
      <item> llAsin </item>
      <item> llAtan2 </item>
      <item> llAttachToAvatar </item>
      <item> llAvatarOnSitTarget </item>
      <item> llAxes2Rot </item>
      <item> llAxisAngle2Rot </item>
      <item> llBase64ToInteger </item>
      <item> llBase64ToString </item>
      <item> llBreakAllLinks </item>
      <item> llBreakLink </item>
      <item> llCSV2List </item>
      <item> llCeil </item>
      <item> llCloseRemoteDataChannel </item>
      <item> llCloud </item>
      <item> llCollisionFilter </item>
      <item> llCollisionSound </item>
      <item> llCollisionSprite </item>
      <item> llCos </item>
      <item> llCreateLink </item>
      <item> llDeleteSubList </item>
      <item> llDeleteSubString </item>
      <item> llDetachFromAvatar </item>
      <item> llDetectedGrab </item>
      <item> llDetectedGroup </item>
      <item> llDetectedKey </item>
      <item> llDetectedLinkNumber </item>
      <item> llDetectedName </item>
      <item> llDetectedOwner </item>
      <item> llDetectedPos </item>
      <item> llDetectedRot </item>
      <item> llDetectedType </item>
      <item> llDetectedVel </item>
      <item> llDialog </item>
      <item> llDie </item>
      <item> llDumpList2String </item>
      <item> llEdgeOfWorld </item>
      <item> llEjectFromLand </item>
      <item> llEmail </item>
      <item> llEuler2Rot </item>
      <item> llFabs </item>
      <item> llFloor </item>
      <item> llFrand </item>
      <item> llGetAccel </item>
      <item> llGetAgentInfo </item>
      <item> llGetAgentSize </item>
      <item> llGetAlpha </item>
      <item> llGetAndResetTime </item>
      <item> llGetAnimation </item>
      <item> llGetAnimationList </item>
      <item> llGetAttached </item>
      <item> llGetBoundingBox </item>
      <item> llGetCenterOfMass </item>
      <item> llGetCreator </item>
      <item> llGetColor </item>
      <item> llGetDate </item>
      <item> llGetEnergy </item>
      <item> llGetForce </item>
      <item> llGetFreeMemory </item>
      <item> llGetGeometricCenter </item>
      <item> llGetGMTclock </item>
      <item> llGetInventoryKey </item>
      <item> llGetInventoryName </item>
      <item> llGetInventoryNumber </item>
      <item> llGetKey </item>
      <item> llGetLandOwnerAt </item>
      <item> llGetLinkKey </item>
      <item> llGetLinkName </item>
      <item> llGetLinkNumber </item>
      <item> llGetListEntryType </item>
      <item> llGetListLength </item>
      <item> llGetLocalPos </item>
      <item> llGetLocalRot </item>
      <item> llGetMass </item>
      <item> llGetNextEmail </item>
      <item> llGetNotecardLine </item>
      <item> llGetNumberOfNotecardLines </item>
      <item> llGetNumberOfPrims </item>
      <item> llGetNumberOfSides </item>
      <item> llGetObjectDesc </item>
      <item> llGetObjectName </item>
      <item> llGetOmega </item>
      <item> llGetOwner </item>
      <item> llGetOwnerKey </item>
      <item> llGetPermissions </item>
      <item> llGetPermissionsKey </item>
      <item> llGetPos </item>
      <item> llGetPrimitiveParams </item>
      <item> llGetRegionCorner </item>
      <item> llGetRegionFPS </item>
      <item> llGetRegionName </item>
      <item> llGetRegionTimeDilation </item>
      <item> llGetRootPosition </item>
      <item> llGetRootRotation </item>
      <item> llGetRot </item>
      <item> llGetScale </item>
      <item> llGetScriptName </item>
      <item> llGetScriptState </item>
      <item> llGetSimulatorHostname </item>
      <item> llGetStartParameter </item>
      <item> llGetStatus </item>
      <item> llGetSubString </item>
      <item> llGetSunDirection </item>
      <item> llGetTexture </item>
      <item> llGetTextureOffset </item>
      <item> llGetTextureRot </item>
      <item> llGetTextureScale </item>
      <item> llGetTime </item>
      <item> llGetTimeOfDay </item>
      <item> llGetTimestamp </item>
      <item> llGetTorque </item>
      <item> llGetVel </item>
      <item> llGetWallclock </item>
      <item> llGiveInventory </item>
      <item> llGiveInventoryList </item>
      <item> llGiveMoney </item>
      <item> llGodLikeRezObject </item>
      <item> llGround </item>
      <item> llGroundContour </item>
      <item> llGroundNormal </item>
      <item> llGroundRepel </item>
      <item> llGroundSlope </item>
      <item> llInsertString </item>
      <item> llInstantMessage </item>
      <item> llIntegerToBase64 </item>
      <item> llKey2Name </item>
      <item> llList2CSV </item>
      <item> llList2Float </item>
      <item> llList2Integer </item>
      <item> llList2Key </item>
      <item> llList2List </item>
      <item> llList2ListStrided </item>
      <item> llList2Rot </item>
      <item> llList2String </item>
      <item> llList2Vector </item>
      <item> llListFindList </item>
      <item> llListInsertList </item>
      <item> llListRandomize </item>
      <item> llListSort </item>
      <item> llListen </item>
      <item> llListenControl </item>
      <item> llListenRemove </item>
      <item> llLog </item>
      <item> llLog10 </item>
      <item> llLookAt </item>
      <item> llLoopSound </item>
      <item> llLoopSoundMaster </item>
      <item> llLoopSoundSlave </item>
      <item> llMD5String </item>
      <item> llMessageLinked </item>
      <item> llMinEventDelay </item>
      <item> llModifyLand </item>
      <item> llMoveToTarget </item>
      <item> llOffsetTexture </item>
      <item> llOpenRemoteDataChannel </item>
      <item> llOverMyLand </item>
      <item> llOwnerSay </item>
      <item> llParseString2List </item>
      <item> llParseStringKeepNulls </item>
      <item> llParticleSystem </item>
      <item> llPassCollisions </item>
      <item> llPassTouches </item>
      <item> llPlaySound </item>
      <item> llPlaySoundSlave </item>
      <item> llPointAt </item>
      <item> llPow </item>
      <item> llPreloadSound </item>
      <item> llPushObject </item>
      <item> llReleaseCamera </item>
      <item> llReleaseControls </item>
      <item> llRemoteDataReply </item>
      <item> llRemoteDataSetRegion </item>
      <item> llRemoteLoadScript </item>
      <item> llRemoteLoadScriptPin </item>
      <item> llRemoveInventory </item>
      <item> llRemoveVehicleFlags </item>
      <item> llRequestAgentData </item>
      <item> llRequestInventoryData </item>
      <item> llRequestPermissions </item>
      <item> llResetOtherScript </item>
      <item> llResetScript </item>
      <item> llResetTime </item>
      <item> llRezAtRoot </item>
      <item> llRezObject </item>
      <item> llRot2Angle </item>
      <item> llRot2Axis </item>
      <item> llRot2Euler </item>
      <item> llRot2Fwd </item>
      <item> llRot2Left </item>
      <item> llRot2Up </item>
      <item> llRotBetween </item>
      <item> llRotLookAt </item>
      <item> llRotTarget </item>
      <item> llRotTargetRemove </item>
      <item> llRotateTexture </item>
      <item> llRound </item>
      <item> llSameGroup </item>
      <item> llSay </item>
      <item> llScaleTexture </item>
      <item> llScriptDanger </item>
      <item> llSendRemoteData </item>
      <item> llSensor </item>
      <item> llSensorRemove </item>
      <item> llSensorRepeat </item>
      <item> llSetAlpha </item>
      <item> llSetBuoyancy </item>
      <item> llSetCameraAtOffset </item>
      <item> llSetCameraEyeOffset </item>
      <item> llSetColor </item>
      <item> llSetDamage </item>
      <item> llSetForce </item>
      <item> llSetForceAndTorque </item>
      <item> llSetHoverHeight </item>
      <item> llSetInventoryPermMask </item>
      <item> llSetLinkAlpha </item>
      <item> llSetLinkColor </item>
      <item> llSetLocalRot </item>
      <item> llSetObjectDesc </item>
      <item> llSetObjectName </item>
      <item> llSetObjectPermMask </item>
      <item> llSetParcelMusicURL </item>
      <item> llSetPos </item>
      <item> llSetPrimitiveParams </item>
      <item> llSetRemoteScriptAccessPin </item>
      <item> llSetRot </item>
      <item> llSetScale </item>
      <item> llSetScriptState </item>
      <item> llSetSitText </item>
      <item> llSetSoundQueueing </item>
      <item> llSetSoundRadius </item>
      <item> llSetStatus </item>
      <item> llSetText </item>
      <item> llSetTexture </item>
      <item> llSetTextureAnim </item>
      <item> llSetTimerEvent </item>
      <item> llSetTorque </item>
      <item> llSetTouchText </item>
      <item> llSetVehicleFlags </item>
      <item> llSetVehicleFloatParam </item>
      <item> llSetVehicleRotationParam </item>
      <item> llSetVehicleType </item>
      <item> llSetVehicleVectorParam </item>
      <item> llShout </item>
      <item> llSin </item>
      <item> llSitTarget </item>
      <item> llSleep </item>
      <item> llSqrt </item>
      <item> llStartAnimation </item>
      <item> llStopAnimation </item>
      <item> llStopHover </item>
      <item> llStopLookAt </item>
      <item> llStopMoveToTarget </item>
      <item> llStopPointAt </item>
      <item> llStopSound </item>
      <item> llStringLength </item>
      <item> llStringToBase64 </item>
      <item> llSubStringIndex </item>
      <item> llTakeCamera </item>
      <item> llTakeControls </item>
      <item> llTan </item>
      <item> llTarget </item>
      <item> llTargetOmega </item>
      <item> llTargetRemove </item>
      <item> llTeleportAgentHome </item>
      <item> llToLower </item>
      <item> llToUpper </item>
      <item> llTriggerSound </item>
      <item> llTriggerSoundLimited </item>
      <item> llUnSit </item>
      <item> llVecDist </item>
      <item> llVecMag </item>
      <item> llVecNorm </item>
      <item> llVolumeDetect </item>
      <item> llWater </item>
      <item> llWhisper </item>
      <item> llWind </item>
      <item> llXorBase64Strings </item>
    </list>
    <list name="events">
      <item> at_rot_target </item>
      <item> at_target </item>
      <item> attach </item>
      <item> changed </item>
      <item> collision </item>
      <item> collision_end </item>
      <item> collision_start </item>
      <item> control </item>
      <item> dataserver </item>
      <item> email </item>
      <item> land_collision </item>
      <item> land_collision_end </item>
      <item> land_collision_start </item>
      <item> link_message </item>
      <item> listen </item>
      <item> money </item>
      <item> moving_end </item>
      <item> moving_start </item>
      <item> no_sensor </item>
      <item> not_at_rot_target </item>
      <item> not_at_target </item>
      <item> object_rez </item>
      <item> on_rez </item>
      <item> remote_data </item>
      <item> run_time_permissions </item>
      <item> sensor </item>
      <item> state_entry </item>
      <item> state_exit </item>
      <item> timer </item>
      <item> touch </item>
      <item> touch_end </item>
      <item> touch_start </item>
    </list>
    <list name="avoid">
      <item> jump </item>
      <item> llSoundPreload </item>
      <item> llSound </item>
      <item> llMakeExplosion </item>
      <item> llMakeFire </item>
      <item> llMakeFountain </item>
      <item> llMakeSmoke </item>
      <item> llRemoteLoadScript </item>
    </list>
    <list name="constants">
      <item> PI </item>
      <item> TWO_PI </item>
      <item> PI_BY_TWO </item>
      <item> DEG_TO_RAD </item>
      <item> RAD_TO_DEG </item>
      <item> SQRT2 </item>
      <item> TRUE </item>
      <item> FALSE </item>
      <item> NULL_KEY </item>
      <item> EOF </item>
      <item> ZERO_ROTATION </item>
      <item> ZERO_VECTOR </item>
      <item> AGENT </item>
      <item> ACTIVE </item>
      <item> PASSIVE </item>
      <item> SCRIPTED </item>
      <item> PSYS_PART_BOUNCE_MASK </item>
      <item> PSYS_PART_WIND_MASK </item>
      <item> PSYS_PART_INTERP_COLOR_MASK </item>
      <item> PSYS_PART_INTERP_SCALE_MASK </item>
      <item> PSYS_PART_FOLLOW_SRC_MASK </item>
      <item> PSYS_PART_FOLLOW_VELOCITY_MASK </item>
      <item> PSYS_PART_TARGET_POS_MASK </item>
      <item> PSYS_PART_EMISSIVE_MASK </item>
      <item> PSYS_PART_TRAIL_MASK </item>
      <item> PSYS_SRC_PATTERN </item>
      <item> PSYS_SRC_PATTERN_DROP </item>
      <item> PSYS_SRC_PATTERN_EXPLODE </item>
      <item> PSYS_SRC_PATTERN_ANGLE </item>
      <item> PSYS_SRC_PATTERN_ANGLE_CONE </item>
      <item> PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY </item>
      <item> PSYS_PART_START_COLOR </item>
      <item> PSYS_PART_END_COLOR </item>
      <item> PSYS_PART_START_ALPHA </item>
      <item> PSYS_PART_END_ALPHA </item>
      <item> PSYS_PART_START_SCALE </item>
      <item> PSYS_PART_END_SCALE </item>
      <item> PSYS_PART_MAX_AGE </item>
      <item> PSYS_SRC_INNERANGLE </item>
      <item> PSYS_SRC_OUTERANGLE </item>
      <item> PSYS_SRC_ANGLE_BEGIN </item>
      <item> PSYS_SRC_ANGLE_END </item>
      <item> PSYS_SRC_BURST_RATE </item>
      <item> PSYS_SRC_BURST_PART_COUNT </item>
      <item> PSYS_SRC_BURST_RADIUS </item>
      <item> PSYS_SRC_BURST_SPEED_MIN </item>
      <item> PSYS_SRC_BURST_SPEED_MAX </item>
      <item> PSYS_SRC_MAX_AGE </item>
      <item> PSYS_SRC_ACCEL </item>
      <item> PSYS_SRC_TEXTURE </item>
      <item> PSYS_SRC_TARGET_KEY </item>
      <item> PSYS_SRC_OMEGA </item>
      <item> PSYS_PART_FLAGS </item>
    </list>
    <list name="keywords">
      <item> default </item>
      <item> do </item>
      <item> else </item>
      <item> for </item>
      <item> if </item>
      <item> state </item>
      <item> while </item>
    </list>
    <list name="types">
      <item> list </item>
      <item> key </item>
      <item> string </item>
      <item> float </item>
      <item> vector </item>
      <item> rotation </item>
      <item> float </item>
      <item> integer </item>
    </list>
    <contexts>
      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
        <keyword attribute="Keyword" context="#stay" String="keywords"/>
        <keyword attribute="Data Type" context="#stay" String="types"/>
        <keyword attribute="LL Functions" context="#stay" String="functions"/>
        <keyword attribute="LL Constants" context="#stay" String="constants"/>
        <Float attribute="Float" context="#stay"/>
        <HlCOct attribute="Octal" context="#stay"/>
        <HlCHex attribute="Hex" context="#stay"/>
        <HlCChar attribute="Char" context="#stay"/>
        <RegExpr attribute="Decimal" context="#stay" String="//\s*BEGIN.*$" beginRegion="Region1"/>
        <RegExpr attribute="Decimal" context="#stay" String="//\s*END.*$" endRegion="Region1"/>
        <DetectChar attribute="String" context="String" char="""/>
        <RegExpr attribute="Function" context="Printf" String="\.(format|printf)\b"/>
        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
        <RegExpr attribute="Keyword" context="#stay" String="\.{3,3}\s+"/>
        <RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])"/>
        <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}"/>
        <AnyChar attribute="Symbol" context="#stay" String=":!%&()+,-/.*<=>?[]|~^;"/>
      </context>
      <context attribute="String" lineEndContext="#pop" name="String">
        <LineContinue attribute="String" context="#stay"/>
        <HlCStringChar attribute="String Char" context="#stay"/>
        <DetectChar attribute="String" context="#pop" char="""/>
      </context>
      <context attribute="Printf" lineEndContext="#pop" name="Printf">
        <DetectChar attribute="Normal Text" context="#pop" char=";"/>
        <DetectChar attribute="String" context="PrintfString" char="""/>
      </context>
      <context attribute="PrintfString" lineEndContext="#pop" name="PrintfString">
        <LineContinue attribute="String" context="#stay"/>
        <HlCStringChar attribute="String Char" context="#stay"/>
        <DetectChar attribute="String" context="#pop" char="""/>
        <RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(\.\d+)?[a-hosxA-CEGHSX]"/>
        <RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(t|T)(a|A|b|B|c|C|d|D|e|F|h|H|I|j|k|l|L|m|M|N|p|P|Q|r|R|s|S|T|y|Y|z|Z)"/>
        <RegExpr attribute="String Char" context="#stay" String="%(%|n)"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">
        <RegExpr attribute="Function" context="#pop" String="\b[_a-zA-Z]\w*(?=[\s]*)"/>
      </context>
      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>
      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
      </context>
    </contexts>
    <itemDatas>
      <itemData name="Normal Text" defStyleNum="dsNormal"/>
      <itemData name="Keyword" defStyleNum="dsKeyword"/>
      <itemData name="Function" defStyleNum="dsFunction"/>
      <itemData name="LL Functions" defStyleNum="dsFunction" color="#CC0000" selColor="#FFFFFF" bold="0" italic="0"/>
      <itemData name="LL Constants" defStyleNum="dsKeyword" color="#ED00F0" selColor="#FFFFFF" bold="0" italic="0"/>
      <itemData name="Data Type" defStyleNum="dsDataType"/>
      <itemData name="Decimal" defStyleNum="dsDecVal"/>
      <itemData name="Octal" defStyleNum="dsBaseN"/>
      <itemData name="Hex" defStyleNum="dsBaseN"/>
      <itemData name="Float" defStyleNum="dsFloat"/>
      <itemData name="Char" defStyleNum="dsChar"/>
      <itemData name="String" defStyleNum="dsString"/>
      <itemData name="String Char" defStyleNum="dsChar"/>
      <itemData name="PrintfString" defStyleNum="dsString"/>
      <itemData name="Comment" defStyleNum="dsComment"/>
      <itemData name="Symbol" defStyleNum="dsNormal"/>
    </itemDatas>
  </highlighting>
  <general>
    <comments>
      <comment name="singleLine" start="//"/>
      <comment name="multiLine" start="/*" end="*/"/>
    </comments>
    <keywords casesensitive="1"/>
  </general>
</language>