initial commit

This commit is contained in:
Barrett Ruth 2023-01-07 20:39:42 -06:00
commit 894692f380
5 changed files with 181 additions and 0 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
doc/tags
vim.toml
selene.toml

4
.stylua.toml Normal file
View file

@ -0,0 +1,4 @@
quote_style = "AutoPreferSingle"
call_parentheses = "None"
indent_type = "Spaces"
column_width = 80

44
doc/live-server.txt Normal file
View file

@ -0,0 +1,44 @@
*live-server* *live-server.txt*
Author: Barrett Ruth <https://barrett-ruth.github.io>
Homepage: <https://github.com/barrett-ruth/live-server.nvim>
===============================================================================
INTRODUCTION *live-server.nvim*
live-server.nvim automatically reloads HTML, CSS, and JavaScript files in the
browser via a local development server.
Author: Barrett Ruth <https://barrett-ruth.github.io>
===============================================================================
SETUP *live-server.setup()*
>lua
require('live-server').setup(config)
<
Parameters: ~
{config} `(table | nil)`: (Optional) table containing configuration for
live-server. Defaults shown below.
Usage: ~
>lua
require('live-server').setup {
-- Arguments passed to live-server via `vim.fn.jobstart()`
-- Run `live-server --help` to see list of available options
-- For example, to use port 7000 and browser firefox:
-- args = { '--port=7000', '--browser=firefox' }
args = {}
}
<
===============================================================================
COMMANDS *live-server.commands*
*LiveServerStart*
:LiveServerStart Start the live server.
*LiveServerStop*
:LiveServerStop Stop the live server.
-------------------------------------------------------------------------------
vim:tw=80:ft=help:

82
lua/live-server.lua Normal file
View file

@ -0,0 +1,82 @@
local M = {}
local function log(message, level)
vim.notify_once(
string.format('import-cost.nvim: %s', message),
vim.log.levels[level]
)
end
M.config = {
-- let live-server handle the defaults
args = {},
}
M.setup = function(user_config)
M.config = vim.tbl_deep_extend('force', M.config, user_config or {})
if not vim.fn.executable 'live-server' then
log(
'live-server is not executable. Ensure the npm module is properly installed',
vim.log.levels.ERROR
)
return
end
vim.api.nvim_create_user_command('LiveServerStart', M.start, {})
vim.api.nvim_create_user_command('LiveServerStop', M.stop, {})
end
local job_cache = {}
M.start = function()
local bufnr = vim.api.nvim_get_current_buf()
local cmd = { 'live-server' }
vim.list_extend(cmd, M.config.args)
if job_cache[bufnr] then
log('live-server instance already running', 'INFO')
return
end
local job_id = vim.fn.jobstart(cmd, {
on_stderr = function(_, data)
if data[1] == '' then
return
end
log(data[1]:match '.-m(.-)\27', 'ERROR')
end,
on_exit = function(_, exit_code)
job_cache[bufnr] = nil
if exit_code == 0 then
return
end
log(
string.format(
'live-server stopped unexpectedly with exit code %s',
exit_code
),
'ERROR'
)
end,
})
job_cache[bufnr] = job_id
end
M.stop = function()
local bufnr = vim.api.nvim_get_current_buf()
if job_cache[bufnr] then
vim.fn.jobstop(job_cache[bufnr])
job_cache[bufnr] = nil
else
log('no live-server instance running', 'INFO')
end
end
return M

48
readme.md Normal file
View file

@ -0,0 +1,48 @@
# live-server.nvim
Live reload HTML, CSS, and JavaScript files inside neovim with the power of
[live-server](https://www.npmjs.com/package/live-server).
## Installation
1. Install [live-server](https://www.npmjs.com/package/live-server) globally
with your node.js package manager of choice.
2. Install regularly with your neovim package manager
For example, a config with [yarn](https://yarnpkg.com) and
[lazy.nvim](https://github.com/folke/lazy.nvim) may look like the following:
```lua
require('lazy').setup {
{
'barrett-ruth/live-server.nvim',
build = 'yarn global add live-server'
config = true
}
}
```
## Configuration
Configure via the setup function (or use the defaults with no arguments):
```lua
require('live-server').setup(opts)
```
See `:h live-server` for more information
## Usage
`:LiveServerStart`: start the live server
`:LiveServerStop`: stop the live-server
## Acknowledgements
1. [mazeloth/live-server](https://github.com/manzeloth/live-server/blob/main/plugin/live-server.vim):
the first ever live-server port to vim
2. [aurum77/live-server.nvim](https://github.com/aurum77/live-server.nvim): the
first live-server port to neovim (however, it unecessarily depends on `npm`
and didn't quite cut it for me)