Last active
August 29, 2015 14:04
-
-
Save rscarvalho/2b578fb96d4e6c0d229a to your computer and use it in GitHub Desktop.
OpenProject
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| let g:OpenProject#folder_prefix = $HOME . "/code/" | |
| let g:OpenProject#projects = { | |
| \"lengio": "lengio/lengio-app", | |
| \"parser": "lengio/parser" | |
| \} | |
| " Open a specific project with a command (e.g. :Lengio<CR>) | |
| command! Lengio OpenProject lengio | |
| " Trigger something when a project is "opened" | |
| au User OpenProject_lengio nested :e! Gemfile | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function! OpenProject(project_name) | |
| if exists("g:OpenProject#projects") | |
| let projects = g:OpenProject#projects | |
| else | |
| let projects = {} | |
| endif | |
| if exists("g:OpenProject#folder_prefix") | |
| let project_folder_prefix = g:OpenProject#folder_prefix | |
| else | |
| let project_folder_prefix = $HOME . "/code/" | |
| endif | |
| if has_key(l:projects, a:project_name) | |
| let project_folder = l:project_folder_prefix . l:projects[a:project_name] | |
| elseif strlen(glob(l:project_folder_prefix . a:project_name)) > 0 | |
| let project_folder = l:project_folder_prefix . a:project_name | |
| elseif strlen(glob(a:project_name)) > 0 | |
| let project_folder = a:project_name | |
| endif | |
| if exists("l:project_folder") | |
| exec ":cd " . l:project_folder | |
| exec ":doautocmd User OpenProject_" . a:project_name | |
| else | |
| exec "normal \<Esc>" | |
| echoerr "Invalid project name or folder: " . a:project_name | |
| end | |
| endfunction | |
| function! OpenProjectComplete(ArgLead, CmdLine, CursorPos) | |
| let valid_keys = [] | |
| for project in keys(g:OpenProject#projects) | |
| if l:project =~ a:ArgLead | |
| call add(l:valid_keys, l:project) | |
| endif | |
| endfor | |
| return l:valid_keys | |
| endfunction | |
| command! -nargs=1 -complete=customlist,OpenProjectComplete OpenProject call OpenProject(<f-args>) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment