Skip to content

Latest commit

 

History

History
63 lines (42 loc) · 1.91 KB

ARCHITECTURE.adoc

File metadata and controls

63 lines (42 loc) · 1.91 KB

Overview

Launch a server (Elin Server) that work with hosts(Vim/Neovim in this case). Elin Server connects to nREPL server and returns the processed result to hosts from Elin Server.

Components Sequences

Basic Policy

  • Implement UI-related processing on host editor side.

    • Vim/Neovim in Vim script.

  • Handle interactions with the nREPL server and processing of data received from Vim/Neovim in Clojure (Babashka).

  • Implement the Clojure side based on stuartsierra/component.

  • Define all settings related to each component explicitly in resources/config.edn.

Directories

components

Various components

constants

Various constants

handler

Implementation of handlers called by the Handler component

interceptor

Implementation of interceptors called by the Interceptor component

protocol

Various protocols

schema

Various schemas

function

Provides concrete functionality using various components. The first argument always receives elin passed to the handler. Essentially, everything is synchronous.

Role of elin core

  • Connection management with nREPL

  • Management of interactions with the editor (Handler)

  • Allow behavior of various operations to be modified (Interceptor)

The core will guarantee only these, and additional functionality will be provided through Handlers and Interceptors.

Plugin

  • Purpose

    • Custom interceptors (expansion of existing features)

    • Custom handlers (addition of new features)

Interceptor

  • includes, excludes

    • includes take priority

      • Even if something is in excludes, if it is also in includes at the same time, it is enabled.