ProductPromotion
Logo

Elixir

made by https://0x3d.site

GitHub - tonini/alchemist-server: Editor/IDE independent background server to inform about Elixir mix projects
Editor/IDE independent background server to inform about Elixir mix projects - tonini/alchemist-server
Visit Site

GitHub - tonini/alchemist-server: Editor/IDE independent background server to inform about Elixir mix projects

GitHub - tonini/alchemist-server: Editor/IDE independent background server to inform about Elixir mix projects

License GPL 3 Build Status

INFO: The Alchemist-Server is in Beta status and the API will most likey change until the first release. Feedback and critic are highly appreciated though.

Alchemist Server

The Alchemist-Server operates as an informant for a specific desired Elixir Mix project and serves with informations as the following:

  • Completion for Modules and functions.
  • Documentation lookup for Modules and functions.
  • Code evaluation and quoted representation of code.
  • Definition lookup of code.
  • Listing of all available Mix tasks.
  • Listing of all available Modules with documentation.

Usage

The server needs to be started inside an Elixir mix project, it can be started in two ways:

Read/Write through STDIN/STDOUT

$ cd elixir_project
$ elixir path/to/alchemist-server/run.exs --env=dev

In this mode, when input sent to a running server process it responds by sending information back to the STDOUT.

A request consisting of two parts, the request type and the request arguments.

Example for a completion request:

[type]   [arguments]

COMP { "def", [ context: Elixir, imports: [Enum], aliases: [{MyList, List}] ] }

Read/Write through unix domain socket

$ cd elixir_project
$ elixir path/to/alchemist-server/run.exs --env=dev --listen
ok|localhost:/tmp/alchemist-server-1500797742260403000.sock

In this mode, when a client connects to the port, it responds by sending information back to the opened connection

Example for a completion request:

$ nc -U /tmp/alchemist-server-1500797742260403000.sock
COMP { "def", [ context: Elixir, imports: [Enum], aliases: [{MyList, List}] ] }

Unix domain socket is introduced since OTP 19.

API

Completion

Return a completion list of all the available candidates.

COMP
COMP { "def", [ context: Elixir, imports: [], aliases: [] ] }
COMP { "List.fla", [ context: Elixir, imports: [], aliases: [] ] }

Documentation lookup

Return the documentation.

DOCL { "defmodule", [ context: Elixir, imports: [], aliases: [] ] }
DOCL { "List.flatten/1", [ context: Elixir, imports: [], aliases: [] ] }

Evaluation, Quoted & Macro expand

Evaluation

Return the evaluation result of the code from the file.

EVAL { :eval, 'path/to/file/which/holds/content/to/eval.tmp' }

Quoted

Return the code from the file quoted.

EVAL { :quote, 'path/to/file/which/holds/content/to/quote.tmp' }

Macro expand

Return the code from the file expanded.

EVAL { :expand, 'path/to/file/which/holds/content/to/expand.tmp' }

Return the code from the file expanded once.

EVAL { :expand_once, 'path/to/file/which/holds/content/to/expand_once.tmp' }

Definition lookup

Return the path to the source file which holds the definition.

DEFL  { "List,flatten", [ context: Elixir, imports: [], aliases: [] ] }
DEFL  { "nil,defmacro", [ context: Elixir, imports: [], aliases: [] ] }
DEFL  { "nil,create_file", [ context: Elixir, imports: [Mix.Generator], aliases: [] ] }
DEFL  { "MyList,nil", [ context: Elixir, imports: [], aliases: [{MyList, List}] ] }

Informations

Mix tasks

Return a list of all available mix tasks.

INFO { :type, :mixtasks }

Modules

Return a list of all available modules which has documentation.

INFO { :type, :modules }

Datatype Information

Return information about any datatype.

INFO { :type, :info, List }

Module Or Function/Arity Types Information

Return types for a module or function/arity pair.

INFO { :type, :types, 'List' }
INFO { :type, :types, 'Enum.t' }
INFO { :type, :types, 'Agent.on_start/0' }

Debugging

Return PONG as response, it can be used for purpose of debugging and checking server's availability.

PING

End Markers

Each request type ends with a specific end marker tag to notify that the request is done.

An end tag looks like the following:

END-OF-<REQUEST TYPE>

For example, after the following request an end tag would look like this:

INFO { :type, :modules }
List
String
Enum
.
...
....
END-OF-INFO

Articles
to learn more about the elixir concepts.

Resources
which are currently available to browse on.

mail [email protected] to add your project or resources here 🔥.

FAQ's
to know more about the topic.

mail [email protected] to add your project or resources here 🔥.

Queries
or most google FAQ's about Elixir.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory