# Easytables ##### Make Markdown tables great again!
[Video preview of easytables](https://github.com/Myzel394/easytables.nvim/assets/50424412/66298556-be6d-4bc8-ba42-ec14c6379f90) ** 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`