diff options
| author | William Boman <william@redwill.se> | 2021-08-14 23:17:18 +0200 |
|---|---|---|
| committer | William Boman <william@redwill.se> | 2021-08-15 00:47:15 +0200 |
| commit | df597595d6c3e35f1a394e3362e77629c5ce2247 (patch) | |
| tree | 449c720913c0dc0c1eea6151daf65244071ea67a /lua/nvim-lsp-installer/installers/shell.lua | |
| parent | update README (diff) | |
| download | mason-df597595d6c3e35f1a394e3362e77629c5ce2247.tar mason-df597595d6c3e35f1a394e3362e77629c5ce2247.tar.gz mason-df597595d6c3e35f1a394e3362e77629c5ce2247.tar.bz2 mason-df597595d6c3e35f1a394e3362e77629c5ce2247.tar.lz mason-df597595d6c3e35f1a394e3362e77629c5ce2247.tar.xz mason-df597595d6c3e35f1a394e3362e77629c5ce2247.tar.zst mason-df597595d6c3e35f1a394e3362e77629c5ce2247.zip | |
add `env` option to shell.raw, and other cosmetic improvements
Diffstat (limited to 'lua/nvim-lsp-installer/installers/shell.lua')
| -rw-r--r-- | lua/nvim-lsp-installer/installers/shell.lua | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/lua/nvim-lsp-installer/installers/shell.lua b/lua/nvim-lsp-installer/installers/shell.lua index 54a88b02..e21d33c3 100644 --- a/lua/nvim-lsp-installer/installers/shell.lua +++ b/lua/nvim-lsp-installer/installers/shell.lua @@ -1,30 +1,34 @@ local M = {} local default_opts = { - prefix = "set -euo pipefail;" + prefix = "set -euo pipefail;", } function M.raw(raw_script, opts) opts = opts or {} - return function (server, callback) + return function(server, callback) + local jobstart_opts = { + cwd = server._root_dir, + on_exit = function(_, exit_code) + if exit_code ~= 0 then + callback(false, ("Exit code %d"):format(exit_code)) + else + callback(true, nil) + end + end, + } + + if type(opts.env) == "table" and vim.tbl_count(opts.env) then + -- passing an empty Lua table causes E475, for whatever reason + jobstart_opts.env = opts.env + end + local shell = vim.o.shell vim.o.shell = "/bin/bash" vim.cmd [[new]] - vim.fn.termopen( - (opts.prefix or default_opts.prefix) .. raw_script, - { - cwd = server._root_dir, - on_exit = function (_, exit_code) - if exit_code ~= 0 then - callback(false, ("Exit code %d"):format(exit_code)) - else - callback(true, nil) - end - end - } - ) + vim.fn.termopen((opts.prefix or default_opts.prefix) .. raw_script, jobstart_opts) vim.o.shell = shell - vim.cmd([[startinsert]]) -- so that the buffer tails the term log nicely + vim.cmd [[startinsert]] end end |
