Abstract-IDE/penvim

github github
indent
star 25
stars
alert-circle 1
open issues
users 2
subscribers
git-branch 0
forks
CREATED

2022-04-05

UPDATED

25 days ago


Docs Request-Feature/Issues Contributors Issues License Forks Stargazers

Table Of Contents

About The Project

This plugin (Penvim) has 4 purposes:

  1. change current working directory to project's root directory.
  2. detect indentation of Document (Source Code) and set indentation related config according to detected indentation
  3. load config defined in project's root directory
  4. set options according to Language's Standard Style Guide (not implemented yet...)

Getting Started

Install PenVim using your favorite package manager.

Prerequisites

  • neovim >= 0.7

Installation

using vim-plug

Plug 'Abstract-IDE/penvim'

or using packer.nvim

use {'Abstract-IDE/penvim'}

Setup

require("penvim").setup() -- use defaults

Full Configuration

require("penvim").setup({
    rooter = {
        enable = true, -- enable/disable rooter
        patterns = {'.__nvim__.lua', '.git', 'node_modules'}
    },
    indentor = {
        enable = true, -- enable/disable indentor
        indent_length = 4, -- tab indent width
        accuracy = 5, -- positive integer. higher the number, the more accurate result (but affects the startup time)
        disable_types = {
            'help','dashboard','dashpreview','NvimTree','vista','sagahover', 'terminal',
        },
    },
    project_env = {
        enable = true, -- enable/disable project_env
        config_name = '.__nvim__.lua' -- config file name
    },
})

Examples :

-- .__nvim__.lua
return {
    -- for all file types
    all = {
        tabstop = 4, -- spaces per tab
        cursorline = true, -- highlight current line
        relativenumber = true, -- show relative line number
        number = true, -- show line numbers
    },

    -- for filetype lua
    lua = {    
        smarttab = true, -- <tab>/<BS> indent/dedent in leading whitespace
        softtabstop = 4,
        shiftwidth = 4, -- spaces per tab (when shifting), when using the >> or << commands, shift lines by 4 spaces
    },
    
    -- for filetype python and javascript
    py_js = {
        tabstop = 4, -- spaces per tab
        wrap = false, -- don't automatically wrap on load
    }
}

To-Do

  • testing
  • implement to set option according to Language's Standard Style Guide
  • optimize code

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements