Skip to content

Nvim-plugin for doing the opposite of join-line (J) of arguments written in lua.

Notifications You must be signed in to change notification settings

AckslD/nvim-revJ.lua

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nvim-revJ.lua

⚠️ I've decided to completely re-write this plugin and use treesitter instead of textobjects etc and completely move away from the current implementation. Feel free to checkout trevJ instead:

https://github.com/AckslD/nvim-trevJ.lua

Nvim-plugin for doing the opposite of join-line (J) of arguments written in lua. Requires some textobject that selects a argument such as vim-textobj-parameter or targets.vim. Note: vim-textobj-parameter in turn requires vim-textobj-user. Note: targets.vim should in principle work I think but I haven't managed to get it to select arguments as I would want. Note: whitespace needs to be included in the textobject so nvim-treesitter-textobjects won't work yet, because of this.

Installation

Use your favourite plugin manager, for example using packer.nvim

use {
    'AckslD/nvim-revJ.lua',
    requires = {'kana/vim-textobj-user', 'sgur/vim-textobj-parameter'},
    -- or
    -- requires = {'wellle/targets.vim'},
    -- or ...
}

or vim-plug:

Plug 'kana/vim-textobj-user'
Plug 'sgur/vim-textobj-parameter'
" or
" Plug 'wellle/targets.vim'
" or ...
Plug 'AckslD/nvim-revJ.lua'

Usage

The plugin needs to be enabled by calling it's setup function.

require("revj").setup{}

By default no keybindings are enabled, see below for configuration.

Configuration

These are the default values

require("revj").setup{
    brackets = {first = '([{<', last = ')]}>'}, -- brackets to consider surrounding arguments
    new_line_before_last_bracket = true, -- add new line between last argument and last bracket (only if no last seperator)
    add_seperator_for_last_parameter = true, -- if a seperator should be added if not present after last parameter
    enable_default_keymaps = false, -- enables default keymaps without having to set them below
    keymaps = {
        operator = '<Leader>J', -- for operator (+motion)
        line = '<Leader>j', -- for formatting current line
        visual = '<Leader>j', -- for formatting visual selection
    },
    parameter_mapping = ',', -- specifies what text object selects an arguments (ie a, and i, by default)
        -- if you're using `vim-textobj-parameter` you can also set this to `vim.g.vim_textobj_parameter_mapping`
}

Keybindings

Three keybindings can be enabled:

  • operator for splitting arguments to new lines within a motion.
  • visual for splitting arguments to new lines within a visual selection.
  • line for splitting arguments to new lines from the first occurrence of an enabled bracket until its partner. Default keybindings can be enabled in the setup (see above), which is equivalent to doing:
require("revj").setup{
    keymaps = {
        operator = '<Leader>J', -- for operator (+motion)
        line = '<Leader>j', -- for formatting current line
        visual = '<Leader>j', -- for formatting visual selection
    },
}

Development

Testing

To run the tests locally (TODO update)

make test

About

Nvim-plugin for doing the opposite of join-line (J) of arguments written in lua.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages