An LSL Script Editor/compiler for Second Life's Scripting Language.
LSLForge is a fork of the popular LSLPlus editing environment, to provide Linden Scripting Language (LSL) support in Eclipse.
LSLForge is a plugin for the Eclipse platform. The plugin allows editing, "compiling" (gathering code included in modules), executing, and unit testing your Second Life® Linden Scripting Language (LSL) code.
Because it is an Eclipse plugin, when you use LSLForge you can take advantage of many of the useful features of Eclipse. Integrated support of a source code control system such as Git, CVS and Subversion comes for "free", and there are many other features — task list management, integration with bug tracking tools, etc. You will of course need to make sure you get the appropriate plugins to use these features.
raysilent
: This is a fork where the most activity is happening, which is maintaining the latest LSL definitions for functions and constants of LSL
according to the recent Release Notes, also bug fixes, and keeping the Eclipse Plugin Update Site up-to-date.elnewfie
: After all the tests are accomplished, the repo is merged into the elnewfie
's original repo, to avoid confusion.0.1.9.8
ghc-8.6.5
(Thanks @PellSmit)llOrd
llChar
llHash
llGetEnv()
constants: "whisper_range"
, "chat_range"
& "shout_range"
(in comments)llGetInventoryAcquireTime
llOpenFloater
CLICK_ACTION_DISABLED
TARGETED_EMAIL_ROOT_CREATOR
is eliminated (exists in the viewer for backward compatibility most likely). It should be safer to remove it completely from the IntelliSense for early error discovery rather than keep it here.llXorBase64StringsCorrect
as deprecated in comments.0.1.9.7
llGetDayLength
llGetDayOffset
llGetMoonDirection
llGetMoonRotation
llGetRegionDayLength
llGetRegionDayOffset
llGetRegionMoonDirection
llGetRegionMoonRotation
llGetRegionSunDirection
llGetRegionSunRotation
llGetSunRotation
llReplaceAgentEnvironment
llSetAgentEnvironment
llTargetedEmail
and its constants:
TARGETED_EMAIL_ROOT_CREATOR
TARGETED_EMAIL_OBJECT_OWNER
ENV_NOT_EXPERIENCE
ENV_NO_EXPERIENCE_PERMISSION
ENV_NO_ENVIRONMENT
ENV_INVALID_AGENT
ENV_NO_EXPERIENCE_LAND
ENV_VALIDATION_FAIL
ENV_NO_EXPERIENCE_LAND
ENV_THROTTLE
ENVIRONMENT_DAYINFO
INVENTORY_SETTING
SKY_CLOUD_TEXTURE
SKY_MOON_TEXTURE
SKY_SUN_TEXTURE
WATER_NORMAL_TEXTURE
IMG_USE_BAKED_HEAD
IMG_USE_BAKED_UPPER
IMG_USE_BAKED_LOWER
IMG_USE_BAKED_EYES
IMG_USE_BAKED_SKIRT
IMG_USE_BAKED_HAIR
IMG_USE_BAKED_LEFTARM
IMG_USE_BAKED_LEFTLEG
IMG_USE_BAKED_AUX1
IMG_USE_BAKED_AUX2
IMG_USE_BAKED_AUX3
2018-09-16 LSLForge 0.1.9.6 (Windows, Linux (Thanks @Trapez), macOS (Thanks @PellSmit))
llStartObjectAnimation(string anim)
llStopObjectAnimation(string anim)
list llGetObjectAnimationNames()
integer OBJECT_CREATION_TIME = 36
integer OBJECT_SELECT_COUNT = 37
integer OBJECT_SIT_COUNT = 38
2018-09-14 LSLForge 0.1.9.5 (Windows, Linux (Thanks @Trapez), macOS (Thanks @PellSmit))
*.lsl
file (easier to check what was copy-pasted) (Windows only)2018-09-10 LSLForge 0.1.9.4 (Windows, macOS Only)
Tuple*.java
disappearance (Thanks @PellSmit)HTTP_USER_AGENT
OBJECT_RENDER_WEIGHT
key llName2Key(string name)
key llRequestUserKey(string name)
2017-02-10 LSLForge 0.1.9.3 (Windows, Linux (Thanks @Trapez), macOS (Thanks @PellSmit))
ATTACH_FACE_TONGUE
misspelled2017-01-07 LSLForge 0.1.9.2 (Windows, Linux (Thanks @Trapez), macOS (Thanks @PellSmit))
OBJECT_ATTACHED_SLOTS_AVAILABLE
llGetEnv("region_object_bonus")
(in comments)2016-11-13 LSLForge 0.1.9.1 (Windows, Linux (Thanks @Trapez), macOS (Thanks @PellSmit))
2016-11-08 LSLForge 0.1.9 (Windows, Linux, macOS)
JSON_APPEND
, CLICK_ACTION_ZOOM
(seems to be absent in the SL viewer, use 7
instead) added2016-10-22 LSLForge 0.1.8 (Windows only)
XP_ERROR_REQUEST_PERM_TIMEOUT
missing added2016-10-20 LSLForge 0.1.7 (Windows only)
The official group for LSLForge Editor tool is LSLForge Users. General announcements, questions and answers.
2021-09
R (4.21.0
)The following Eclipse Distributions were found working:
2020-12
(4.18.0
)2019-12
(4.14.0
)2019‑06
(4.12.0
)4.8.0
)NOTE: Oomph seems to restore LSLForge native setting despite attempts to overwrite the field. The only workaround for now is to check
[X] Skip automatic task execution at startup time
under Oomph > Setup Tasks in Preferences.
Platforms that used to work but not tested recently:
To install a plugin into Eclipse, choose Help
> Install New Software
. Click Add...
and enter the link for location:
For the tested and reported to be working releases use elnewfie
's master repo:
https://raw.githubusercontent.com/elnewfie/lslforge/master/eclipse/
For releases that are currently being tested use raysilent
's master repo:
https://raw.githubusercontent.com/raysilent/lslforge/master/eclipse/
(In case of bugs please report right to the https://github.com/raysilent/lslforge/ repo.)
Alternatively you may switch to a development fork and try a specific version since 0.1.8
(including work in progress branches):
https://raw.githubusercontent.com/raysilent/lslforge/0.1.9.8/eclipse/
https://raw.githubusercontent.com/raysilent/lslforge/0.1.9.7/eclipse/
(Reinstall if you already have the version)https://raw.githubusercontent.com/raysilent/lslforge/0.1.9.6/eclipse/
https://raw.githubusercontent.com/raysilent/lslforge/0.1.9.5/eclipse/
https://raw.githubusercontent.com/raysilent/lslforge/0.1.9.4/eclipse/
https://raw.githubusercontent.com/raysilent/lslforge/0.1.9.3/eclipse/
https://raw.githubusercontent.com/raysilent/lslforge/0.1.9.2/eclipse/
https://raw.githubusercontent.com/raysilent/lslforge/0.1.9.1/eclipse/
https://raw.githubusercontent.com/raysilent/lslforge/0.1.9/eclipse/
https://raw.githubusercontent.com/raysilent/lslforge/0.1.8/eclipse/
For even older version, clone the whole repo and link your Eclipse to a particular folder under eclipse\archive
.
If you don't see any items for installing, try to uncheck "Group items by category"
Run
eclipse -clean
to force it to forget cached downloads
Checkbox 2 items:
Install, accept and restart Eclipse
Switch to LSLForge Perspective and create a new LSLForge Project
*.lslp
files compilation issues although everything is correct. It may happen when a lot of $import
keywords are used and at some point the compiler gets stuck. What may help is:
*.lslm
module along the project, it could be called Fake.lslm
. Opening it and adding a space, then removing it and hitting Save will force the project to be recompiled*.lslp
file by opening it, doing some fake change, and hitting SaveThis demonstrates:
Modules/Debug.lslm
:
$module (integer DEBUG)
// pragma inline
bug(string place, string message) {
if (DEBUG) llOwnerSay("["+llGetScriptName()+"."+place+"]: "+message);
}
Script.lslp
:
integer DEBUG=TRUE; // has to be a variable
$import Modules.Debug.lslm(DEBUG=DEBUG) de;
do() {
debug("do()", "This is a call of 'bug' function from 'de' module");
}
Imagine you move Modules
folder to a separate project called ModulesProject
to use it from different other projects.
In the main project that uses ModulesProject
, place a checkbox along its name under Project settings > Project References
.
ModulesProject
directory tree becomes part of the project's tree. It will still be imported as $import Modules.Debug.lslm
without any additions.
If LSLForge is behind from the newest LSL
definitions of functions and constants, you may compile an executable for yourself, by git cloning the source and digging into lslforge\haskell\src\Language\Lsl\Internal\FuncSigs.hs
and/or lslforge\haskell\src\Language\Lsl\Internal\Constants.hs
and following the already existing examples. You will need to compile the code now with Haskell compiler and specify newly built file in Eclipse LSLForge Preferences. This should be enough for a while. Continue reading for details.
To compile the native LSLForge binary, you must have the cross-platform Haskell Stack
tool installed.
0.1.9.7
Stack >= 1.11
is required.Stack can then ensure that the correct compiler and dependencies for the project will be automatically downloaded and installed for you.
To install Stack, please visit the Stack Homepage and follow the instructions. It is likely that you can find a package available at many package managers e.g. chocolatey
, homebrew
and pacman
, but check before installing that their stack version is up-to-date.
STACK_ROOT
environment variable if you do not want stack files appear under C:\sr
(Windows).Stack
's root config.yaml
and add a line local-programs-path: <path>
with the path desired, after that commands like stack ghci
will download files right into that folderstack install
will place the files, add the following line to config.yaml
: local-bin-path: <path>
with the path desired. This folder may be added to the PATH
environment variable. (The reminder will be given after stack install
copies the file there).In a terminal, change directory to the project's lslforge/haskell
subdirectory.
Run stack upgrade
to upgrade to the latest version.
You will need to enter stack setup
if you have a freshly installed Stack, or don't have the relevant compiler already set up. (Stack will tell you if you need to run this additional step.)
Now run with admin terminal stack install
in lslforge/haskell
folder to build and install the LSLForge binary in one step. (Weird access denied errors are due to Antivirus.)
If your stack install
is successful, an executable will appear at %APPDATA%\local\bin
folder for Windows, or $HOME/.local/bin
for other platforms (look at the message after install) - unless you changed the local-bin-path
parameter in config.yaml
to override default location.
To test the newly built file, you can specify it in the existing LSLForge Eclipse installation under Preferences
> LSLForge
settings. This will not make any new definitions show immediately, but they will after restarting Eclipse.
If you enable Eclipse Error Log View, it will print out current version of the executable in use, as well as its actual location.
cd
to lslforge/haskell
set LSLFORGE_TEST_DATA=../testing/data
- enough to be set just for the terminal session.stack test
LSLFORGE_TEST_DATA=../testing/data; stack test
TODO: Automate this task
lslforge\haskell\LSLForge.cabal
lslforge\eclipse\lslforge-feature\feature.xml
(all instances)
lslforge\eclipse\update-site\site.xml
(all instances)
All instances in every feature.xml
and MANIFEST.MF
files under lslforge/eclipse
.
Switch to lslforge
subfolder.
all_compile_haskell_win32_as_admin.bat
eclipse\update-site\clean.bat
stack install --executable-stripping
codegen.sh
copy_linux.sh
eclipse/update-site/clean.sh
stack install --executable-stripping
codegen_mac.sh
copy_mac.sh
eclipse/update-site/clean.sh
Move existing plugin files from eclipse\
to eclipse\archive\x.x.x\
(keep index.html
).
Eclipse for RCP and RAP Developers - Using Luna SR2
lslforge\eclipse\
(without copying)update-site
's project folder (features
, plugins
, artifacts.jar
, content.jar
), run clean.bat
or clean.sh
to delete them.Double-click update-site\site.xml
and select Build All
Generated files are:
features
plugins
artifacts.jar
content.jar
Move generated files to eclipse\
Copy index.html
(static file) to eclipse\
if it is missing.
Test generated update site with a fresh installation of Eclipse using Local path for plugin:
Run
eclipse -clean
to force it to forget cached downloads.
eclipse
folder as a source.*.lslp
files and see Error Log View.