penvim
penvim copied to clipboard
Project's root directory and documents Indentation detector with project based config loader
PenVim
project's root directory and documents indentation detector with project based config loader
Table Of Contents
- About the Project
- Examples
- Getting Started
- Prerequisites
- Installation
- Setup
- License
- Acknowledgements
About The Project
This plugin (Penvim) has 4 purposes:
- change current working directory to project's root directory.
- detect indentation of Document (Source Code) and set indentation related config according to detected indentation
- load config defined in project's root directory
- 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 :
sample, config defined in project's root directory
-- .__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
- for README