vim-project-config/README.md

69 lines
1.6 KiB
Markdown

# Project Config
Drop the plugin into `~/.vim/pack/{foo}/start/projectconfig`.
In your ~/.vimrc you need to set up the project directories and the
configuration file to map to:
```
let g:projectconfig_projects = {
\ '~/dev/my-project' : '~/.config/my-project.vim',
\ '~/wiki' : '~/wiki/.vimrc',
\ }
```
And to load the configuration for the file that you opened:
E.g.
```
au BufNewFile,BufRead ~/dev/* call projectconfig#load()
```
# Buffer scope for project configuration
Prefer `setlocal`, `localleader` and `<buffer>` for project
configuration, so that the changes are scoped to a specific buffer and
doesn't override your default, or other project config when you open
various files.
E.g. to override my default from 4 spaces to 2 spaces in a project I
would use:
`~/.vimrc`:
```
# default configuration
set tabstop=4
set shiftwidth=4
```
and in e.g. `~/.config/my-project.vim`
```
# my-project configuration
setlocal tabstop=2
setlocal shiftwidth=2
```
# Caveats
## `('._.)`
- Only tested with VIM 8.2.
## `(;._.)`
- **BE MINDFUL OF WHERE THE CONFIG LIVES**. If you have `vimrc` file
stored in the project repo, changes to it will happily be sourced the
next time you pull. This plugin does not do verification.
## `(╯._.)╯︵ ┻━┻`
- If a project config sets a setting that the base, or next project
config doesn't, then the project config will still be active when
changing to a file in another project. Work around this by customising the `autocmd` and use `setlocal`,
`localleader`, and `<buffer>` in [project configuration](#buffer-scope-for-project-configuration).