Coder Social home page Coder Social logo

lls-addons's Introduction

Lua Language Server Addons

Addons count Contributors Enforces StyLua

Welcome to the repository of addons for the Lua Language Server by sumneko!

This repository is a highly collaborative project, with the community contributing addons through pull requests. The goal is to provide a central location where the community can collaborate on creating addons. Addons are added to this repository as a git submodule, allowing each project to have its own issues, pull requests, and fork-able repo - they can even live on GitLab. The addons in this repository can be fetched by the addon manager in the VS Code extension that communicates with the Lua Language Server in VS Code.

What is an Addon?

An addon, simply put, is something that extends the functionality of the Lua Language Server. An addon could, for example, include definitions for an API, and apply settings. Definition files are written in Lua using the Lua Language Server's LuaCATS annotation system.

What should be an Addon?

  • An addon for a popular library/framework.
  • Definitions for an API

What should NOT be an Addon?

  • Definitions for a personal project (use workspace.library).
  • Definitions for proprietary software.

Anatomy of an Addon

Here is an example of what an addon could look like:

πŸ“‚ MySnazzyAddon/
    β”œβ”€β”€πŸ“œ info.json
    └── πŸ“ module/
        β”œβ”€β”€ πŸ“ library/
        └── πŸ“œ config.lua

info.json

The info.json file contains some details about the addon such as the name and description. It also contains some additional metadata such as size and hasPlugin, but these values are generated automatically by the LLS-Addons-Action. This file is used by the addon manager to retrieve some data about each addon without having to install them all first.

module

The module folder is the submodule that contains the addon's definition files and config.json.

Get Involved

As already said, this is a very collaborative project, so anyone is welcome to help out! To get started, please review the contribution guidelines. Your contributions are greatly appreciated and will help to make this project a valuable resource for the Lua community ❀️.

lls-addons's People

Contributors

b0mbie avatar bavalpey avatar bilal2453 avatar carsakiller avatar cassolette avatar checkraisefold avatar cloudwindy avatar demiurgequantified avatar fesily avatar fgaz avatar flrgh avatar frityet avatar goldenstein64 avatar govnocodedbychapo avatar ierdna100 avatar jonasgeiler avatar josef-friedrich avatar leafx-code avatar lelouchhe avatar lukasbestle avatar luttje avatar martonlederer avatar maticzpl avatar misohoza avatar serg3295 avatar sparebola avatar sylviettee avatar tozydev avatar wolf-64 avatar youwereeatenbyalid avatar

Stargazers

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

Watchers

 avatar  avatar

lls-addons's Issues

Add LuaLogging definitions

What is the Addon for?

Adds definitions for LuaLogging, a library used for logging stuff.

LuaLogging provides a simple API to use logging features in Lua. Its design was based on log4j. LuaLogging currently supports, through the use of appenders, console, file, rolling file, email, socket and sql outputs.

Additional Notes

The definitions are at goldenstein64/lualogging-definitions.

Unbound API definitions

What is the Addon for?

Adds definitions for the Lua API of Unbound, a game engine currently in development and in a (very) early-access phase.

Additional Notes

The engine and it’s API are closed source. Having these definitions in an easy to access space (via the addon manager in VS Code) would provide a quick setup for current testers, and later on any developer using Unbound for developing their games.

Add Garry's Mod definitions

What is the Addon for?

Add definitions for the game Garry's Mod. The definitions are automatically generated and based on the official wiki

Additional Notes

The repository for the addon is located here. A GitHub workflow runs every month and updates the definitions based on the Garry's Mod wiki content.

The LLS addon is published to this lua-language-server-addon branch.

I'm in the process of finishing up refactoring and testing today. When I'm done I'll make a PR here and add that branch as a sub repository.

How about plugin

I've noticed that there doesn't seem to be an example that provides how to handle plugin files in the codebase

Add definitions for Tabletop Simulator

What is the Addon for?

Add definitions for Tabletop Simulator's Lua API.

This gives first-class linting support and up-to-date documentation for all of the methods supported by Tabletop Simulator's Lua api.

I painstakingly went through the entire documentation, and used tools like rawget and moonsharp's inspect to exhaustively get all functions that can be called.

I added the documentation from the official API, but included grammar fixes, and rewrote confusing parts in many places.

Additional Notes

One thing to note is that the actual runtime used for Tabletop Simulator is MoonSharp version 2.0.0.0.
While I have put the appropriate settings in [config.json] to override the default libraries (and copied the definitions of the libraries inside), there is one custom syntax provided by moonsharp that I have not been able to figure out how to support: Closures.

Not sure if the best way of doing this is with a plugin for custom syntax or maybe even trying to add moonsharp as a lua runtime supported by Lua LS itself. Some feedback on this would be appreciated.

Final disclaimer, I did not know the best way of exposing the event api, as these are functions the programmer writes themselves. I took a look at what @emmericp did for his plugin but couldn't wrap my head around it.

adding Luvit addon

What is the Addon for?

This addon adds definitions for the Luvit framework, a Lua framework that mimics the Node.js API making use of the Libuv backend bindings, Luv.

Additional Notes

The meta definitions for this are at https://github.com/Bilal2453/luvit-meta, is it fine for the root directory to contain more than just the library and config.json? like the README.md, or should I create a branch that contains just those two library/config.json?

Add Penlight Definitions

What is the Addon for?

Adds definitions for lunarmodules/Penlight, a general-purpose library.

Penlight brings together a set of generally useful pure Lua modules, focusing on input data handling (such as reading configuration files), functional programming (such as map, reduce, placeholder expressions, etc), and OS path management. Much of the functionality is inspired by the Python standard libraries.

Additional Notes

The definitions are at goldenstein64/pl-definitions. I'm open to making a branch to remove the LICENSE and other config files.

Add stylua check action

StyLua formatting should be enforced before fetching the data for addons or merging pull requests

Add FiveM API definitions

What is the Addon for?

Add definitions for the FiveM API.

These definitions are used to develop FiveM scripts using Lua.

Additional Notes

This addon is generate by fivem-lls-addon

The distribution of the addon is located at dist branch of this repo.

Add Stormworks Addon editor Lua support

What is the Addon for?

Add definitions for the Stormworks addon editor for usage with external editors, as the in-game one has not much besides basic interpretation error checks.

Additional Notes

No response

Add Xmake Definitions

What is the Addon for?

xmake is a cross-platform build utility based on Lua. Its major configuration (xmake.lua) is written in Lua. And it would be great if it can rely on Lua-LS for type checks, intellisense, etc.

The initial version of xmak definitions is in this repo/branch: https://github.com/LelouchHe/xmake-luals-addon/tree/publish, which covers the most important part of xmake.lua

Additional Notes

The definitions are not complete yet, but it should cover majority of daily uses for now. I'm planning to keep working on this.

Is it ok to publish an addon in such status? I think it's better for xmake users to access this early, even though it's not 100% complete.

Add definitions for the Local Lua Debugger

What is the Addon for?

Add definitions for Local Lua Debugger's Lua interface library, lldebugger.
Local Lua Debugger is a VSCode extension that provides debugging support for Lua.

Additional Notes

The lldebugger library isn't fully formally documented, from what I could find, maybe apart from lldebugger.start() and lldebugger.requestBreak().
I have inspected the source code for the library and found out the definitions for the functions that I could find in the lldebugger table.

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.