Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@ simply install and go.
[parinfer-rust]: https://github.com/eraserhd/parinfer-rust
[parinfer-lua]: https://github.com/oakmac/parinfer-lua

## Requirements

Neovim 0.7 or later.

[Version 1.2.0][v1.2.0] works for older versions of Neovim.

[v1.2.0]: https://github.com/gpanders/nvim-parinfer/releases/tag/v1.2.0

## Configuration

nvim-parinfer uses sane defaults that should "just work". You can see the
Expand Down
71 changes: 0 additions & 71 deletions autoload/parinfer.vim

This file was deleted.

10 changes: 5 additions & 5 deletions fnl/parinfer/setup.fnl
Original file line number Diff line number Diff line change
Expand Up @@ -244,8 +244,8 @@
n
(/ min 1000000) (/ max 1000000) (/ avg 1000000) (/ std 1000000))))))

(global parinfer {:enter_buffer enter-buffer
:cursor_moved cursor-moved
:text_changed text-changed
: stats
: tab})
{:enter_buffer enter-buffer
:cursor_moved cursor-moved
:text_changed text-changed
: stats
: tab}
3 changes: 1 addition & 2 deletions lua/parinfer/setup.lua

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

158 changes: 158 additions & 0 deletions plugin/parinfer.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
if vim.g.loaded_parinfer then
return
end
vim.g.loaded_parinfer = true

local defaults = {
mode = "smart",
enabled = true,
force_balance = false,
comment_chars = {";"},
filetypes = {
"clojure",
"scheme",
"lisp",
"racket",
"hy",
"fennel",
"janet",
"carp",
"wast",
"yuck",
},
}

for k, v in pairs(defaults) do
if not vim.g["parinfer_" .. k] then
vim.g["parinfer_" .. k] = v
end
end

local function set_enabled(bang, enable)
if bang then
vim.g.parinfer_enabled = enable
vim.api.nvim_echo(
{{string.format("Parinfer %s globally", enable and "enabled" or "disabled")}},
false,
{}
)
else
vim.b.parinfer_enabled = enable
vim.api.nvim_echo(
{{string.format("Parinfer %s in the current buffer", enable and "enabled" or "disabled")}},
false,
{}
)
end
end

vim.api.nvim_create_user_command("ParinferOn", function(args)
set_enabled(args.bang, true)
end, { bang = true, desc = "Enable parinfer" })

vim.api.nvim_create_user_command("ParinferOff", function(args)
set_enabled(args.bang, false)
end, { bang = true, desc = "Disable parinfer" })

vim.api.nvim_create_user_command("ParinferToggle", function(args)
if args.bang then
set_enabled(true, not vim.g.parinfer_enabled)
else
set_enabled(false, not vim.b.parinfer_enabled)
end
end, { bang = true, desc = "Toggle parinfer" })

vim.api.nvim_create_user_command("ParinferLog", function(args)
local logfile = args.args
if logfile then
vim.g.parinfer_logfile = logfile
vim.api.nvim_echo(
{{string.format("Logging parinfer output to %s", logfile)}},
false,
{}
)
else
vim.g.parinfer_logfile = nil
vim.api.nvim_echo(
{{"Disabled parinfer logging"}},
false,
{}
)
end
end, { nargs = "?", desc = "Log parinfer output to a file" })

vim.api.nvim_set_keymap("i", "<Plug>(parinfer-tab)", "", {
noremap = true,
callback = function()
return require("parinfer.setup").tab(true)
end,
desc = "Move forward to the next tab stop",
})

vim.api.nvim_set_keymap("i", "<Plug>(parinfer-backtab)", "", {
noremap = true,
callback = function()
return require("parinfer.setup").tab(false)
end,
desc = "Move backward to the previous tab stop",
})

vim.api.nvim_create_augroup("parinfer", {clear = true})
vim.api.nvim_create_autocmd("FileType", {
group = "parinfer",
pattern = "janet",
callback = function(args)
vim.b[args.buf].parinfer_comment_chars = {"#"}
end,
})
vim.api.nvim_create_autocmd("FileType", {
group = "parinfer",
pattern = "*",
callback = function(args)
if vim.o.previewwindow or vim.bo[args.buf].buftype == "prompt" then
return
end

local ft = vim.bo[args.buf].filetype
local found = false
for _, v in ipairs(vim.g.parinfer_filetypes) do
if v == ft then
found = true
break
end
end

if not found then
return
end

local parinfer = require("parinfer.setup")

parinfer.enter_buffer()

vim.api.nvim_buf_create_user_command(args.buf, "ParinferStats", parinfer.stats, {
desc = "Display parinfer runtime statistics",
})

vim.api.nvim_create_autocmd({"TextChanged", "TextChangedI", "TextChangedP"}, {
buffer = args.buf,
callback = function(a) parinfer.text_changed(a.buf) end,
})

vim.api.nvim_create_autocmd({"CursorMoved", "CursorMovedI"}, {
buffer = args.buf,
callback = function(a) parinfer.cursor_moved(a.buf) end,
})

if vim.F.if_nil(vim.b.parinfer_no_maps, vim.g.parinfer_no_maps) ~= true then
if vim.fn.mapcheck("<Tab>", "i") == "" then
vim.api.nvim_buf_set_keymap(args.buf, "i", "<Tab>", "<Plug>(parinfer-tab)", {})
end

if vim.fn.mapcheck("<S-Tab>", "i") == "" then
vim.api.nvim_buf_set_keymap(args.buf, "i", "<S-Tab>", "<Plug>(parinfer-backtab)", {})
end
end

end,
})
55 changes: 0 additions & 55 deletions plugin/parinfer.vim

This file was deleted.