diff --git a/README.md b/README.md new file mode 100644 index 0000000..acc7fc4 --- /dev/null +++ b/README.md @@ -0,0 +1,233 @@ +
+ +# Easytables + +##### Make Markdown tables great again! + +
+ +[![Video preview of easytables]](readme_content/preview.webm) + +** Please note that this is a work in progress. ** + +## Features + +- Preview tables in real time +- Add and remove rows and columns +- Move rows and columns +- Move cells + +## Usage + +### Installation + +Using [packer](https://github.com/wbthomason/packer.nvim): + +```lua +use "Myzel394/easytables.nvim" +``` + +### Setup + +**Make sure to call the `setup` function!** + +`after/plugins/easytables.lua` + +```lua +require("easytables").setup { + -- Your configuration comes here +} +``` + +#### Default configuration + +By default, easytables configures default characters for the table and registers the following keymaps: + +- ``: Move cell left (in normal mode, applies to all other directions) +- ``: Swaps cell with cell to the left (in normal mode, applies to all other directions) +- ``: Swaps column with column to the left (in normal mode, applies to all other directions) +- `: Move cell to the next cell (in normal mode, either to the right or to the beginning of the next line) +- ``: Move cell to the previous cell (in normal mode, either to the left or to the end of the previous line) + +This is the default configuration: + +```lua +{ + table = { + -- Whether to enable the header by default + header_enabled_by_default = true, + window = { + preview_title = "Table Preview", + prompt_title = "Cell content", + -- Either "auto" to automatically size the window, or a string + -- in the format of "x" (e.g. "20x10") + size = "auto" + }, + cell = { + -- Min width of a cell (excluding padding) + min_width = 3, + -- Filler character for empty cells + filler = " ", + align = "left", + }, + -- Characters used to draw the table + -- Do not worry about multibyte characters, they are handled correctly + border = { + top_left = "┌", + top_right = "┐", + bottom_left = "└", + bottom_right = "┘", + horizontal = "─", + vertical = "│", + left_t = "├", + right_t = "┤", + top_t = "┬", + bottom_t = "┴", + cross = "┼", + header_left_t = "╞", + header_right_t = "╡", + header_bottom_t = "╧", + header_cross = "╪", + header_horizontal = "═", + } + }, + export = { + markdown = { + -- Padding around the cell content, applied BOTH left AND right + -- E.g: padding = 1, content = "foo" -> " foo " + padding = 1, + -- What markdown characters are used for the export, you probably + -- don't want to change these + characters = { + horizontal = "-", + vertical = "|", + -- Filler for padding + filler = " " + } + } + }, + set_mappings = function(buf) + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":JumpLeft", + {} + ) + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":SwapWithLeftCell", + {} + ) + + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":JumpRight", + {} + ) + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":SwapWithRightCell", + {} + ) + + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":JumpUp", + {} + ) + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":SwapWithUpperCell", + {} + ) + + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":JumpDown", + {} + ) + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":SwapWithLowerCell", + {} + ) + + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":JumpToNextCell", + {} + ) + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":JumpToPreviousCell", + {} + ) + + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":SwapWithLeftColumn", + {} + ) + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":SwapWithRightColumn", + {} + ) + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":SwapWithUpperRow", + {} + ) + vim.api.nvim_buf_set_keymap( + buf, + "n", + "", + ":SwapWithLowerRow", + {} + ) + end + +} +``` + +## This project is stupid, the code is awful, go away + +I know that the code is probably not the best, it's my first ever written neovim plugin. +You are more than welcome to contribute to this project, I will gladly accept any help. + +## Donate + +It might sound crazy, but if you would just donate 1$, it would totally mean to world to me, since +it's a really small amount and if everyone did that, I can totally focus on easytables and my other open +source projects. :) + +You can donate via: + +- [GitHub Sponsors](https://github.com/sponsors/Myzel394) +- Bitcoin: `bc1qw054829yj8e2u8glxnfcg3w22dkek577mjt5x6` +- Monero: `83dm5wyuckG4aPbuMREHCEgLNwVn5i7963SKBhECaA7Ueb7DKBTy639R3QfMtb3DsFHMp8u6WGiCFgbdRDBBcz5sLduUtm8` diff --git a/readme_content/preview.webm b/readme_content/preview.webm new file mode 100644 index 0000000..7fad8fb Binary files /dev/null and b/readme_content/preview.webm differ