Giter VIP home page Giter VIP logo

atom-language-livecode's Introduction

LiveCode Community Edition

LiveCode Community Logo

Copyright © 2003-2019 LiveCode Ltd., Edinburgh, UK

Introduction

The LiveCode Community open source platform provides a way to build applications for mobile, desktop and server platforms.

The visual workflow allows the user to develop apps "live", using a powerful and uniquely-accessible language syntax.

LiveCode Ltd., based in Edinburgh, UK, coordinates development of LiveCode and has run the open source project since LiveCode Community was first released in April 2013.

You can download pre-compiled versions of the LiveCode Community development environment from the LiveCode download centre.

Overview

Subproject directories

This repository contains a number of subprojects, each of which has its own subdirectory. They can be divided into three main categories.

  1. Main system:
  • engine/ — The main LiveCode engine. This directory produces the IDE, "standalone", "installer" and "server" engines
  1. Non-third-party libraries:
  • libcore/ — A static library that provides various basic functions and types, and is used by many of the other subprojects

  • libexternal/ and libexternalv1 — Static libraries that support the LiveCode "external" interface, which allows the engine to load plugins

  1. Externals (libraries that can be dynamically loaded into the engine at runtime):
  • revdb/ — Database access external, and drivers for various backend database systems

  • revmobile/ — The iOS support external (which can only be built on Mac) and the Android support external (available on all desktop platforms)

  • revpdfprinter/ — Print-to-PDF functionality

  • revspeech/ — Text-to-speech support

  • revvideograbber/ — Video capture (Windows only)

  • revxml/ — XML parsing and generation

  • revzip/ - Zip archive management

Engine flavours

The engine — which loads, saves, manages and runs LiveCode stack files — can be built in several different specialized modes, which are adapted for various specific purposes. They are exposed as separate targets in the build system.

  1. IDE engine (development target)— Used to run the IDE. It contains extra support for things like syntax handling and building LiveCode "standalone" programs.

  2. Installer engine (installer target) — Used to create the LiveCode installer. It contains extra support for things like handling zip archives and comparing binary files.

  3. Server engine (server target) — This is the engine used in a server context, when no graphical user interface is needed. It contains server-specific functions such as CGI support. It also has a much fewer system library dependencies (and requires only non-desktop APIs where possible).

  4. Standalone engine (standalone target) — The engine that is embedded in "standalone apps" created with LiveCode.

Compiling LiveCode

LiveCode uses the gyp (Generate Your Projects) tool to generate platform-specific project files. It can generate xcodeproj files for Xcode on Mac, vcproj files for Microsoft Visual Studio, and makefiles for compiling on Linux.

Quick start

Note: You can only compile LiveCode from a clone of the LiveCode git repository on GitHub. See also the GitHub documentation on cloning a repository.

On Linux or Mac, you can quickly build LiveCode by installing basic development tools, and then running make all.

Detailed instructions

Please see the following table, which shows which target platforms are supported by which host platforms. The documentation for compiling for each target platform is linked.

Target platform Host platforms
mac, ios mac
win win, linux (Wine)
linux linux
android mac, linux
emscripten (html5) linux

Getting help

There are several ways to get help with installing and using LiveCode:

Contributing to LiveCode

For information on modifying LiveCode and submitting contributions to the LiveCode Community project, please see the CONTRIBUTING file.

License

LiveCode Community is freely distributable under the GNU Public License (GPL), with some special exceptions. For more information, please see the LICENSE file in this repository.

The LiveCode Community engine, libraries, and associated files are, unless otherwise noted:

Copyright © 2003-2019 LiveCode Ltd.

atom-language-livecode's People

Contributors

berndn avatar bwmilby avatar macmikey avatar peter-b avatar revig avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

atom-language-livecode's Issues

Ping LC ala sublimeText

Trevor has a clever little hack for Sublime Text that pings LC every time a file in a project is modified. In the Levure framework he then has a listener that handles the ping to unload and reload the .livecodescript file, giving us live editing from the external editor.

The documentation should be structured better

The top-level README file (which is also shown on the package page) needs to be more helpful. Specifically:

  • Installation instructions need to be more prominent, and need to link to the Atom documentation for "how to install packages". Optional dependency packages need to be listed with links to the appropriate packages' pages.
  • Add links to the package pages and/or documentation for Atom features that the package integrates with, including indentation, auto-completion, snippets, and linting.
  • Provide very basic instructions for downloading/extracting LiveCode Server for LCS linting support.

Add grammar for livecode "scripts" themselves

Although there's no common extension, the scripts of LiveCode objects have similar but distinct grammars from the two you provide. Could you add their grammar as well? For now, it would probably be the job of the user to specify a custom file extension for this grammar, or else to manually select it, but it would be a huge improvement over just using the "AppleScript" grammar for editing LiveCode scripts that have been saved outside of stacks.

Colorize keywords by value not class

For example, when defining a handler, it can be "public" or "private". Perhaps the private keyword could have a hilite color, or be a different shade so it stands out when I'm staring at code.

// Doesn't seem recognized as a comment in LCB scripts by Atom editor

The BBEdit language files recognize // as an LCB comment, but the Atom lcb.cson file does not.
I tried to modify the lcb.cson file to add this feature - hoping to make a useful contribution. But I haven't been successful - maybe I need to add some escaping?

Here is the code I tried:
Lines 13-15
{
'include': '#comment.double-slash'
}

Lines 101-107:
'comment-double-slash':
'begin': '//'
'beginCaptures':
'0':
'name': 'punctuation.definition.comment.double-slash.lcb'
'end': '\n'
'name': 'comment.line.lcb'

"Auto Indent" doesn't work for .livecodescript files

For LiveCode Builder source code, the "Edit->Auto Indent" command ("Editor: Auto Indent" via the command palette) properly re-indents source code, including if/repeat/handler etc.

This doesn't seem to work properly for LiveCode Script source code (.livecodescript files).

Linter: Handle missing livecode-server more gracefully

Currently, if there's no livecode-server in the $PATH and the user hasn't configured package, opening a .livecodescript file triggers a scary uncaught exception error.

The exception should be caught and an informational warning should be shown, directing users to the settings.

Probably another one for @montegoulding?

Symbols Not Recognized

Trevor has the linter in Sublime Text working. As part of that, I can look up handler and function names, or symbols. It seems that even though Atom supports symbols, we aren't able to get them. The shortcuts in Atom are command-R or command-shift-R.
from sublimetext

LiveCode Script auto-completion doesn't offer local symbols

In LiveCode Script mode, the autocomplete settings don't result in useful suggestions.


In LiveCode Builder mode:

handler TestHandler()
    variable tTempVar

end handler

Put the cursor on the blank line and type tte. The first suggestion is tTempVar.


In LiveCode Script mode:

on mouseUp
   local tTempVar

end mouseUp

Put the cursor on the blank line and type tte. The first suggestion is templateEPS and tTempVar doesn't appear anywhere in the suggested completions.

Allow linting using the standalone engine

The standalone engine can be run with a script-only stack as its argument. If we could use the standalone engine for linting instead of the server engine, it would make it easier to set up linting without having to download and install the LiveCode server (which most users probably won't be familiar with).

Improved Emacs mode line detection

In a file opened with Emacs, having -*-Makefile-*- in the first line of the file will select Makefile editing mode. There's no need to have a mode: specifier, so it would be nice not to have to include mode: in language-livecode's detection regexp.

Also, we don't currently have any options for how to specify LiveCode Builder vs LiveCode Script mode.

What about case-insensitively using -*-livecode-*- or -*-livecode[script]-*- for LCS mode, -*-livecode[server]-*- for LiveCode Server / revIgniter mode, and -*-livecode[builder]-*- for LCB mode?

Highlight doc comments distinctively

LCB doc comment blocks are distinguished from normal comment blocks by an extra initial star, i.e. /** ... */.

It would be good to highlight doc comment blocks in a distinctive way to show that they're not just normal comments.

Suggested by @macMikey.

Misleading message when opening LCB files

When opening an LCB file without setting a valid path to lc-compile, an error pop-up appears recommending to install and set up LiveCode Server (which won't actually solve the problem!)

Add An Extra Structure That We Can Fold

Since we don't have named blocks in LCS, it would be nice to be able to perhaps use comments to mark a block, and then be able to fold that block.

For example, I've taken to marking blocks with a commented hashtag

#<parse the list>
...
#</parse the list>

Can not get linter working with Livecode server 8.02

Hi,

I can not get the linter to work with Livecode (.lc file). I have installed the LiveCode server 8.02 on MAC OSX 10.11.6 (15G31).
If I type any errors it always displays no issues in the status bar.

Can anyone confirm which version do work?

Regards

Andy

Atom Mac: autocomplete Uncaught TypeError: Cannot read property 'toLowerCase' of undefined

I'm having a autocomplete error after typing 3 letters while using .livecode files. Everything seems to work. I just get a wall of error messages every time I type anything. Other then that, it's pretty great. Is there anything I can do to stop these messages?

Stack Trace for error.

/Users/myName/Applications/Atom.app/Contents/Resources/app/node_modules/autocomplete-plus/lib/symbol-store.js:228
Hide Stack Trace
TypeError: Cannot read property 'toLowerCase' of undefined
at SymbolStore.fuzzyMatchScore (/Users/myName/Applications/Atom.app/Contents/Resources/app/node_modules/autocomplete-plus/lib/symbol-store.js:228:68)
at SymbolStore.scoreSymbol (/Users/myName/Applications/Atom.app/Contents/Resources/app/node_modules/autocomplete-plus/lib/symbol-store.js:214:27)
at SymbolStore.symbolsForConfig (/Users/myName/Applications/Atom.app/Contents/Resources/app/node_modules/autocomplete-plus/lib/symbol-store.js:91:41)
at SymbolProvider.getSuggestions (/Users/myName/Applications/Atom.app/Contents/Resources/app/node_modules/autocomplete-plus/lib/symbol-provider.js:364:47)
at providers.forEach.provider (/Users/myName/Applications/Atom.app/Contents/Resources/app/node_modules/autocomplete-plus/lib/autocomplete-manager.js:286:58)
at Array.forEach (native)
at AutocompleteManager.getSuggestionsFromProviders (/Users/myName/Applications/Atom.app/Contents/Resources/app/node_modules/autocomplete-plus/lib/autocomplete-manager.js:262:21)
at AutocompleteManager.findSuggestions (/Users/myName/Applications/Atom.app/Contents/Resources/app/node_modules/autocomplete-plus/lib/autocomplete-manager.js:254:23)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.