diff options
| author | Andrew <saintruler@gmail.com> | 2021-01-08 23:01:43 +0400 |
|---|---|---|
| committer | Andrew <saintruler@gmail.com> | 2021-01-08 23:01:43 +0400 |
| commit | 96790221a89796ceb103662aad5d054c67e88d8f (patch) | |
| tree | b0ecbe5622368905d361be2de37b769b14cd4a91 /.config/nvim/autoload/projector.vim | |
| parent | 13c2a3d1e09e1482fad3ebd2b6d53d95056b48ac (diff) | |
Added projector.vim script
Diffstat (limited to '.config/nvim/autoload/projector.vim')
| -rw-r--r-- | .config/nvim/autoload/projector.vim | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/.config/nvim/autoload/projector.vim b/.config/nvim/autoload/projector.vim new file mode 100644 index 0000000..9c60055 --- /dev/null +++ b/.config/nvim/autoload/projector.vim @@ -0,0 +1,42 @@ +" Allows per-project configuration of keybindings. +" For example, '*.cpp <F5> make' will run make on F5 button push +" if .cpp file was opened +let s:commandFormat="au BufReadPost,BufNewFile %s map %s :!%s<CR>" + +" Files that plugin searches on startup (relative to pwd) +let s:allowedConfigPaths=[".vim/config", ".vim.conf", "vim.conf"] + +function! s:createCommand(line) + let line=split(a:line) + return printf(s:commandFormat, line[0], line[1], join(line[2:])) +endfunction + +function! s:parseFile(filename) + let commands=[] + for line in readfile(a:filename) + let commands=commands + [s:createCommand(line)] + endfor + return commands +endfunction + +function! s:getConfigs() + let commands=[] + for filename in s:allowedConfigPaths + if filereadable(filename) + let commands=commands + s:parseFile(filename) + endif + endfor + return commands +endfunction + +function! s:applyConfig(config) + for line in a:config + execute line + endfor +endfunction + +function! projector#init() + let config=s:getConfigs() + call s:applyConfig(config) +endfunction + |