
2 changed files with 147 additions and 0 deletions
@ -0,0 +1,146 @@ |
|||
# lite |
|||
|
|||
 |
|||
|
|||
## Overview |
|||
lite is a lightweight text editor written mostly in Lua — it aims to provide |
|||
something practical, pretty, *small* and fast, implemented as simply as |
|||
possible; easy to modify and extend, or to use without doing either. |
|||
|
|||
|
|||
## Getting Started |
|||
When lite is started it's typically opened with a *project directory* — this |
|||
is the directory where your project's code and other data resides. The project |
|||
directory is set once when lite is started and, for the duration of the |
|||
session, cannot be changed. |
|||
|
|||
To open lite with a specific project directory the directory name can be passed |
|||
as a command-line argument *(`.` can be passed to use the current directory)* or |
|||
the directory can be dragged onto either the lite executable or a running |
|||
instance of lite. |
|||
|
|||
The main way of opening files in lite is through the `core:find-file` command |
|||
— this provides a fuzzy finder over all of the project's files and can be |
|||
opened using the **`ctrl+p`** shortcut by default. |
|||
|
|||
Commands can be run using keyboard shortcuts, or by using the `core:find-command` |
|||
command bound to **`ctrl+shift+p`** by default. For example, pressing |
|||
`ctrl+shift+p` and typing `newdoc` then pressing `return` would open a new |
|||
document. The current keyboard shortcut for a command can be seen to the right |
|||
of the command name on the command finder, thus to find the shortcut for a command |
|||
`ctrl+shift+p` can be pressed and the command name typed. |
|||
|
|||
|
|||
## User Module |
|||
lite can be configured through use of the user module. The user module can be |
|||
used for changing options in the config module, adding additional key bindings, |
|||
loading custom color themes, modifying the style or changing any other part of |
|||
lite to your personal preference. |
|||
|
|||
The user module is loaded by lite when the application starts, after the plugins |
|||
have been loaded. |
|||
|
|||
The user module can be modified by running the `core:open-user-module` command |
|||
or otherwise directly opening the `data/user/init.lua` file. |
|||
|
|||
|
|||
## Project Module |
|||
The project module is an optional module which is loaded from the current |
|||
project's directory when lite is started. Project modules can be useful for |
|||
things like adding custom commands for project-specific build systems, or |
|||
loading project-specific plugins. |
|||
|
|||
The project module is loaded by lite when the application starts, after both the |
|||
plugins and user module have been loaded. |
|||
|
|||
The project module can be edited by running the `core:open-project-module` |
|||
command — if the module does not exist for the current project when the |
|||
command is run it will be created. |
|||
|
|||
|
|||
## Commands |
|||
Commands in lite are used both through the command finder (`ctrl+shift+p`) and |
|||
by lite's keyboard shortcut system. Commands consist of 3 components: |
|||
* **Name** — The command name in the form of `namespace:action-name`, for |
|||
example: `doc:select-all` |
|||
* **Predicate** — A function that returns true if the command can be ran, for |
|||
example, for any document commands the predicate checks whether the active |
|||
view is a document |
|||
* **Function** — The function which performs the command itself |
|||
|
|||
Commands can be added using the `command.add` function provided by the |
|||
`core.command` module: |
|||
```lua |
|||
local core = require "core" |
|||
local command = require "core.command" |
|||
|
|||
command.add("core.docview", { |
|||
["doc:save"] = function() |
|||
core.active_view.doc:save() |
|||
core.log("Saved '%s', core.active_view.doc.filename) |
|||
end |
|||
}) |
|||
``` |
|||
|
|||
Commands can be performed programatically (eg. from another command or by your |
|||
user module) by calling the `command.perform` function after requiring the |
|||
`command` module: |
|||
```lua |
|||
local command = require "core.command" |
|||
command.perform "core:quit" |
|||
``` |
|||
|
|||
|
|||
## Keymap |
|||
All keyboard shortcuts in lite are handled by the `core.keymap` module. A key |
|||
binding in lite maps a "stroke" (eg. `ctrl+q`) to one or more commands (eg. |
|||
`core:quit`). When the shortcut is pressed lite will iterate each command |
|||
assigned to that key and run the *predicate function* for that command — if the |
|||
predicate passes it stops iterating and runs the command. |
|||
|
|||
An example of where this used is the default binding of the `tab` key: |
|||
``` lua |
|||
["tab"] = { "command:complete", "doc:indent" }, |
|||
``` |
|||
When tab is pressed the `command:complete` command is attempted which will only |
|||
succeed if the command-input at the bottom of the window is active. Otherwise |
|||
the `doc:indent` command is attempted which will only succeed if we have a |
|||
document as our active view. |
|||
|
|||
A new mapping can be added by your user module as follows: |
|||
```lua |
|||
local keymap = require "core.keymap" |
|||
keymap.add { ["ctrl+q"] = "core:quit" } |
|||
``` |
|||
|
|||
|
|||
## Plugins |
|||
Plugins in lite are normal lua modules and are treated as such — no |
|||
complicated plugin manager is provided, and, once a plugin is loaded, it is never |
|||
expected be to have to unload itself. |
|||
|
|||
To install a plugin simply drop it in the `data/plugins` directory — installed |
|||
plugins will be automatically loaded when lite starts. To uninstall a plugin the |
|||
plugin file can be deleted — any plugin (including those included with lite's |
|||
default installation) can be deleted to remove its functionality. |
|||
|
|||
If you want to load a plugin only under a certain circumstance (for example, |
|||
only on a given project) the plugin can be placed somewhere other than the |
|||
`data/plugins` directory so that it is not automatically loaded. The plugin can |
|||
then be loaded manually as needed by using the `require` function. |
|||
|
|||
Plugins can be downloaded from the [plugins repository](https://github.com/rxi/lite-plugins). |
|||
|
|||
|
|||
## Color Themes |
|||
Colors themes in lite are lua modules which overwrite the color fields of lite's |
|||
`core.style` module. Color themes should be placed in the `data/user/colors` |
|||
directory. |
|||
|
|||
A color theme can be set by requiring it in your user module: |
|||
```lua |
|||
require "user.colors.winter" |
|||
``` |
|||
|
|||
Color themes can be downloaded from the [color themes repository](https://github.com/rxi/lite-colors). |
|||
|
Loading…
Reference in new issue