Add documentation

This commit is contained in:
MarcHamamji 2023-02-16 14:12:15 +02:00
parent efb4a77c15
commit 52e8e16fd9
2 changed files with 139 additions and 0 deletions

139
README.md
View File

@ -1,2 +1,141 @@
# runner.nvim
A Neovim plugin to run code inside the editor
## Demo
![](./demo/demo.gif)
## Table of Contents
- [Installation](#installation)
- [Usage](#usage)
- [Configuration](#configuration)
- [Helpers](#helpers)
- [Advanced handlers configurations](#advanced-handlers-configurations)
- [Contribution](#contribution)
## Installation
Using [packer.nvim](https://github.com/wbthomason/packer.nvim):
```lua
return require('packer').startup(function(use)
use {
'MarcHamamji/runner.nvim',
requires = {
'nvim-telescope/telescope.nvim',
requires = { 'nvim-lua/plenary.nvim' }
}
}
end)
```
Using [lazy.nvim](https://github.com/folke/lazy.nvim):
```lua
require("lazy").setup({
{
'MarcHamamji/runner.nvim',
dependencies = {
'nvim-telescope/telescope.nvim',
dependencies = { 'nvim-lua/plenary.nvim' }
}
}
})
```
## Usage
```lua
require('runner').run()
```
## Configuration
This plugin doesn't have a `setup()` method, but you can set your filetype handlers using the `set_handler()` method.
Default handlers can be found [here](./lua/runner/handlers/init.lua).
#### `set_handler(filetype, handler)`
| Argument name | Description | Type |
|---------------- | --------------- | --------------- |
| `filetype` | The filetype on which to run the given handler | `string` |
| `handler` | The handler to run when the current file matches the filetype | `function(code_buffer_number)` |
```lua
require('runner').set_handler('lua', function(code_buffer_number)
vim.print('Running lua file in buffer ' .. code_buffer_number)
end)
```
**Note:** This method overwrites the default handlers set for the specified filetype.
## Helpers
This plugin exposes some helpers to make creating handlers easier. They're all available by importing them as follows:
```lua
local handler_name = require('runner.handlers.helpers').handler_name
```
Here is a description of each one:
- #### `shell_handler(command, editable)`
Runs a command in a shell by opening it in a new vertical split window, with a terminal buffer.
| Argument name | Description | Type |
|---------------- | --------------- | --------------- |
| `command` | The shell command to run when the handler is called | `string` |
| `editable`| Whether the user should be prompted to edit the command using `vim.input()` before running it. Useful when giving command line arguments to a script | `boolean` *(optional, defaults to false)* |
Example:
```lua
local shell_handler = require('runner.handlers.helpers').shell_handler
require('runner').set_handler('rust', shell_handler('cargo run', true))
```
- #### `command_handler(command)`
Runs a command in the Vim command mode.
| Argument name | Description | Type |
|---------------- | --------------- | --------------- |
| `command` | The Vim command to run when the handler is called | `string` |
Example:
```lua
local command_handler = require('runner.handlers.helpers').command_handler
require('runner').set_handler('lua', command_handler('luafile %'))
```
- #### `choice(handlers)`
Opens a `Telescope` finder to allow the user to choose which handler to run.
| Argument name | Description | Type |
|---------------- | --------------- | --------------- |
| `handlers` | The list of handlers to choose from | `table` where the keys are the name of the handlers in the `telescope` finder, and where the values are the actual handlers |
Example:
```lua
local choice = require('runner.handlers.helpers').choice
require('runner').set_handler('rust', choice({
['Run'] = helpers.shell_handler('cargo run'),
['Test'] = helpers.shell_handler('cargo test'),
['Custom'] = helpers.shell_handler('cargo ', true),
}))
```
## Advanced handlers configurations
For creating dynamic handlers like one for each `npm` or `cargo` script, you can write your own handler function that generates the other handlers, gives them to the choice handler, and runs it itself.
See [Node.js example](./lua/runner/handlers/languages/nodejs/init.lua).
## Contribution
If you find that some handlers for a specific language are missing, feel free to open a pull request by adding them in the [./lua/runner/handlers/init.lua]() file.
Licensed under the [MIT license](./LICENSE).

BIN
demo/demo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1012 KiB