diff --git a/.gitmodules b/.gitmodules index d951888..91af43d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,9 +28,6 @@ [submodule ".vim/bundle/nerdcommenter"] path = .vim/bundle/nerdcommenter url = git://github.com/scrooloose/nerdcommenter.git -[submodule ".vim/bundle/command-t"] - path = .vim/bundle/command-t - url = git://git.wincent.com/command-t.git [submodule ".vim/bundle/EasyGrep"] path = .vim/bundle/EasyGrep url = https://github.com/vim-scripts/EasyGrep.git @@ -67,3 +64,12 @@ [submodule ".vim/bundle/vim-sparkup"] path = .vim/bundle/vim-sparkup url = git://github.com/tristen/vim-sparkup.git +[submodule ".vim/bundle/vim-gocode"] + path = .vim/bundle/vim-gocode + url = https://github.com/Blackrush/vim-gocode.git +[submodule ".vim/bundle/vim-airline"] + path = .vim/bundle/vim-airline + url = https://github.com/bling/vim-airline +[submodule ".vim/bundle/ctrlp"] + path = .vim/bundle/ctrlp + url = https://github.com/kien/ctrlp.vim.git diff --git a/.gvimrc b/.gvimrc index 692c5af..ce225a2 100644 --- a/.gvimrc +++ b/.gvimrc @@ -1,7 +1,7 @@ winsize 115 45 "set expandtab "set guifont=DejaVu\ Sans\ Mono:h15.00 -set guifont=Inconsolata\ 13 +set guifont=Inconsolata\ 14 set guioptions-=L set guioptions-=r set guioptions-=m diff --git a/.vim/bundle/NrrwRgn b/.vim/bundle/NrrwRgn index 680f60f..02449dd 160000 --- a/.vim/bundle/NrrwRgn +++ b/.vim/bundle/NrrwRgn @@ -1 +1 @@ -Subproject commit 680f60fb237370d6eda2bfb28cd660916991733e +Subproject commit 02449ddaafdc0bc1cdd8df44c198fd96193083f3 diff --git a/.vim/bundle/YouCompleteMe b/.vim/bundle/YouCompleteMe index 972b0a9..527d980 160000 --- a/.vim/bundle/YouCompleteMe +++ b/.vim/bundle/YouCompleteMe @@ -1 +1 @@ -Subproject commit 972b0a92cbc9a56dd5deac2c7f2b57094374e3ff +Subproject commit 527d98028bb00167acf9acd89f7129c229c26025 diff --git a/.vim/bundle/calendar-vim b/.vim/bundle/calendar-vim index c6c607a..0284450 160000 --- a/.vim/bundle/calendar-vim +++ b/.vim/bundle/calendar-vim @@ -1 +1 @@ -Subproject commit c6c607a43e1b4a328cec10ef8d139fdd243af60f +Subproject commit 0284450ee16dfab2300f6b68c68b9e718f4f98bd diff --git a/.vim/bundle/command-t b/.vim/bundle/command-t deleted file mode 160000 index 8866bbc..0000000 --- a/.vim/bundle/command-t +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8866bbc0e18a981889b3431790caf47432f38cf4 diff --git a/.vim/bundle/ctrlp b/.vim/bundle/ctrlp new file mode 160000 index 0000000..b5d3fe6 --- /dev/null +++ b/.vim/bundle/ctrlp @@ -0,0 +1 @@ +Subproject commit b5d3fe66a58a13d2ff8b6391f4387608496a030f diff --git a/.vim/bundle/gocode/autoload/gocomplete.vim b/.vim/bundle/gocode/autoload/gocomplete.vim deleted file mode 100644 index 997b53a..0000000 --- a/.vim/bundle/gocode/autoload/gocomplete.vim +++ /dev/null @@ -1,73 +0,0 @@ -if exists('g:loaded_gocode') - finish -endif -let g:loaded_gocode = 1 - -fu! s:gocodeCurrentBuffer() - let buf = getline(1, '$') - if &l:fileformat == 'dos' - " XXX: line2byte() depend on 'fileformat' option. - " so if fileformat is 'dos', 'buf' must include '\r'. - let buf = map(buf, 'v:val."\r"') - endif - let file = tempname() - call writefile(buf, file) - return file -endf - -fu! s:system(str, ...) - return (a:0 == 0 ? system(a:str) : system(a:str, join(a:000))) -endf - -fu! s:gocodeShellescape(arg) - try - let ssl_save = &shellslash - set noshellslash - return shellescape(a:arg) - finally - let &shellslash = ssl_save - endtry -endf - -fu! s:gocodeCommand(cmd, preargs, args) - for i in range(0, len(a:args) - 1) - let a:args[i] = s:gocodeShellescape(a:args[i]) - endfor - for i in range(0, len(a:preargs) - 1) - let a:preargs[i] = s:gocodeShellescape(a:preargs[i]) - endfor - let result = s:system(printf('gocode %s %s %s', join(a:preargs), a:cmd, join(a:args))) - if v:shell_error != 0 - return "[\"0\", []]" - else - return result - endif -endf - -fu! s:gocodeCurrentBufferOpt(filename) - return '-in=' . a:filename -endf - -fu! s:gocodeCursor() - return printf('%d', line2byte(line('.')) + (col('.')-2)) -endf - -fu! s:gocodeAutocomplete() - let filename = s:gocodeCurrentBuffer() - let result = s:gocodeCommand('autocomplete', - \ [s:gocodeCurrentBufferOpt(filename), '-f=vim'], - \ [expand('%:p'), s:gocodeCursor()]) - call delete(filename) - return result -endf - -fu! gocomplete#Complete(findstart, base) - "findstart = 1 when we need to get the text length - if a:findstart == 1 - execute "silent let g:gocomplete_completions = " . s:gocodeAutocomplete() - return col('.') - g:gocomplete_completions[0] - 1 - "findstart = 0 when we need to return the list of completions - else - return g:gocomplete_completions[1] - endif -endf diff --git a/.vim/bundle/gocode/ftplugin/go.vim b/.vim/bundle/gocode/ftplugin/go.vim deleted file mode 100644 index ffe2b48..0000000 --- a/.vim/bundle/gocode/ftplugin/go.vim +++ /dev/null @@ -1 +0,0 @@ -setlocal omnifunc=gocomplete#Complete diff --git a/.vim/bundle/syntastic b/.vim/bundle/syntastic index 6239284..3a03fee 160000 --- a/.vim/bundle/syntastic +++ b/.vim/bundle/syntastic @@ -1 +1 @@ -Subproject commit 6239284d168931c40ac8681e9a950e962016ba51 +Subproject commit 3a03fee48c24d0116c529769664750a43a206ee7 diff --git a/.vim/bundle/vim-airline b/.vim/bundle/vim-airline new file mode 160000 index 0000000..c985499 --- /dev/null +++ b/.vim/bundle/vim-airline @@ -0,0 +1 @@ +Subproject commit c98549913c19b9db632bc214bc4266a17fa103ae diff --git a/.vim/bundle/vim-coffee-script b/.vim/bundle/vim-coffee-script index 089506e..0e38ef9 160000 --- a/.vim/bundle/vim-coffee-script +++ b/.vim/bundle/vim-coffee-script @@ -1 +1 @@ -Subproject commit 089506ed89da1849485fdfcca002a42111759fab +Subproject commit 0e38ef90446a0f1f2294b6225c9c97dbc2810b45 diff --git a/.vim/bundle/vim-fugitive b/.vim/bundle/vim-fugitive index 00b0916..124550c 160000 --- a/.vim/bundle/vim-fugitive +++ b/.vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit 00b0916ae2fc4e329f519686348de13d7477d770 +Subproject commit 124550cfee33a1bb9a227e78ccc709317a89dae9 diff --git a/.vim/bundle/vim-gitgutter b/.vim/bundle/vim-gitgutter index ff031d0..878c342 160000 --- a/.vim/bundle/vim-gitgutter +++ b/.vim/bundle/vim-gitgutter @@ -1 +1 @@ -Subproject commit ff031d022f2123353bc93a3aa97290287c10a287 +Subproject commit 878c3422c9ad9edc7b907948515b3118d91a67d1 diff --git a/.vim/bundle/vim-gocode b/.vim/bundle/vim-gocode new file mode 160000 index 0000000..7b07ccd --- /dev/null +++ b/.vim/bundle/vim-gocode @@ -0,0 +1 @@ +Subproject commit 7b07ccdc64afb8a4eced064901b63dbfca1e4a64 diff --git a/.vim/bundle/vim-multiple-cursors b/.vim/bundle/vim-multiple-cursors index 8c9bced..35028be 160000 --- a/.vim/bundle/vim-multiple-cursors +++ b/.vim/bundle/vim-multiple-cursors @@ -1 +1 @@ -Subproject commit 8c9bcedc6c534d3f308fa3ade6a459977ee4a58a +Subproject commit 35028be1f71953da9f2c28509bf6c5ebd1d31c28 diff --git a/.vim/bundle/vim-puppet b/.vim/bundle/vim-puppet index 6162f50..4e78429 160000 --- a/.vim/bundle/vim-puppet +++ b/.vim/bundle/vim-puppet @@ -1 +1 @@ -Subproject commit 6162f501f41477e9f0d75e32cc4159863f4222a2 +Subproject commit 4e784293f6e36494d6c4578634abc6aca3d2028d diff --git a/.vim/bundle/vim-sparkup b/.vim/bundle/vim-sparkup index b5e9269..71cdd2d 160000 --- a/.vim/bundle/vim-sparkup +++ b/.vim/bundle/vim-sparkup @@ -1 +1 @@ -Subproject commit b5e9269136ae8dc7d6fbd5ed8777cbcd8cc22fbf +Subproject commit 71cdd2d9a212be6367d8f716a19bf5caf11bd0ec diff --git a/.vim/bundle/vim-unimpaired b/.vim/bundle/vim-unimpaired index 48d1cb6..a029dc2 160000 --- a/.vim/bundle/vim-unimpaired +++ b/.vim/bundle/vim-unimpaired @@ -1 +1 @@ -Subproject commit 48d1cb6bf0000159291014226d8d8d3330ad875e +Subproject commit a029dc28ebc1ba5953cd5b0ef9a50bd0ffba3aa4 diff --git a/.vim/filetype.vim b/.vim/filetype.vim index c50ce9b..f60b5ab 100644 --- a/.vim/filetype.vim +++ b/.vim/filetype.vim @@ -45,17 +45,17 @@ au BufRead,BufNewFile *.go set filetype=go "Settings per filetype -"augroup python +augroup python ""autocmd FileType python set omnifunc=pythoncomplete#Complete ""autocmd FileType python call SuperTabSetCompletionType("") ""autocmd FileType python set completeopt-=preview - "autocmd FileType python set ts=4 - "autocmd FileType python set softtabstop=4 - "autocmd FileType python set shiftwidth=4 - "autocmd FileType python set expandtab - "autocmd FileType python set nosmartindent + autocmd FileType python set ts=4 + autocmd FileType python set softtabstop=4 + autocmd FileType python set shiftwidth=4 + autocmd FileType python set expandtab + autocmd FileType python set nosmartindent "autocmd FileType python let b:auto_trim_whitespace=1 -"augroup END +augroup END "augroup javascript "autocmd FileType javascript set ts=4 "autocmd FileType javascript set softtabstop=4 diff --git a/.vim/markdown_cheatsheet.md b/.vim/markdown_cheatsheet.md new file mode 100644 index 0000000..d767f50 --- /dev/null +++ b/.vim/markdown_cheatsheet.md @@ -0,0 +1,376 @@ +vim: set syntax=markdown: + +This is intended as a quick reference and showcase. For more complete info, see [John Gruber's original spec](http://daringfireball.net/projects/markdown/) and the [Github-flavored Markdown info page](http://github.github.com/github-flavored-markdown/). + +Note that there is also a [Cheatsheet specific to Markdown Here](./Markdown-Here-Cheatsheet) if that's what you're looking for. + +You can play around with Markdown on our [live demo page](http://www.markdown-here.com/livedemo.html). + +##### Table of Contents +[Headers](#headers) +[Emphasis](#emphasis) +[Lists](#lists) +[Links](#links) +[Images](#images) +[Code and Syntax Highlighting](#code) +[Tables](#tables) +[Blockquotes](#blockquotes) +[Inline HTML](#html) +[Horizontal Rule](#hr) +[Line Breaks](#lines) +[Youtube videos](#videos) + + +## Headers + +```no-highlight +# H1 +## H2 +### H3 +#### H4 +##### H5 +###### H6 + +Alternatively, for H1 and H2, an underline-ish style: + +Alt-H1 +====== + +Alt-H2 +------ +``` + +# H1 +## H2 +### H3 +#### H4 +##### H5 +###### H6 + +Alternatively, for H1 and H2, an underline-ish style: + +Alt-H1 +====== + +Alt-H2 +------ + + +## Emphasis + +```no-highlight +Emphasis, aka italics, with *asterisks* or _underscores_. + +Strong emphasis, aka bold, with **asterisks** or __underscores__. + +Combined emphasis with **asterisks and _underscores_**. + +Strikethrough uses two tildes. ~~Scratch this.~~ +``` + +Emphasis, aka italics, with *asterisks* or _underscores_. + +Strong emphasis, aka bold, with **asterisks** or __underscores__. + +Combined emphasis with **asterisks and _underscores_**. + +Strikethrough uses two tildes. ~~Scratch this.~~ + + + +## Lists + +```no-highlight +1. First ordered list item +2. Another item + * Unordered sub-list. +1. Actual numbers don't matter, just that it's a number + 1. Ordered sub-list +4. And another item. + + Some text that should be aligned with the above item. + +* Unordered list can use asterisks +- Or minuses ++ Or pluses +``` + +1. First ordered list item +2. Another item + * Unordered sub-list. +1. Actual numbers don't matter, just that it's a number + 1. Ordered sub-list +4. And another item. + + Some text that should be aligned with the above item. + +* Unordered list can use asterisks +- Or minuses ++ Or pluses + + +## Links + +There are two ways to create links. + +```no-highlight +[I'm an inline-style link](https://www.google.com) + +[I'm a reference-style link][Arbitrary case-insensitive reference text] + +[I'm a relative reference to a repository file](../blob/master/LICENSE) + +[You can use numbers for reference-style link definitions][1] + +Or leave it empty and use the [link text itself][] + +Some text to show that the reference links can follow later. + +[arbitrary case-insensitive reference text]: https://www.mozilla.org +[1]: http://slashdot.org +[link text itself]: http://www.reddit.com +``` + +[I'm an inline-style link](https://www.google.com) + +[I'm a reference-style link][Arbitrary case-insensitive reference text] + +[I'm a relative reference to a repository file](../blob/master/LICENSE) + +[You can use numbers for reference-style link definitions][1] + +Or leave it empty and use the [link text itself][] + +Some text to show that the reference links can follow later. + +[arbitrary case-insensitive reference text]: https://www.mozilla.org +[1]: http://slashdot.org +[link text itself]: http://www.reddit.com + + +## Images + +```no-highlight +Here's our logo (hover to see the title text): + +Inline-style: +![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 1") + +Reference-style: +![alt text][logo] + +[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 2" +``` + +Here's our logo (hover to see the title text): + +Inline-style: +![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 1") + +Reference-style: +![alt text][logo] + +[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 2" + + +## Code and Syntax Highlighting + +Code blocks are part of the Markdown spec, but syntax highlighting isn't. However, many renderers -- like Github's and *Markdown Here* -- support syntax highlighting. *Markdown Here* supports highlighting for dozens of languages (and not-really-languages, like diffs and HTTP headers); to see the complete list, and how to write the language names, see the [highlight.js demo page](http://softwaremaniacs.org/media/soft/highlight/test.html). + +```no-highlight +Inline `code` has `back-ticks around` it. +``` + +Inline `code` has `back-ticks around` it. + +Blocks of code are either fenced by lines with three back-ticks ```, or are indented with four spaces. I recommend only using the fenced code blocks -- they're easier and only they support syntax highlighting. + +```no-highlight + ```javascript + var s = "JavaScript syntax highlighting"; + alert(s); + ``` + + ```python + s = "Python syntax highlighting" + print s + ``` + + ``` + No language indicated, so no syntax highlighting. + But let's throw in a tag. + ``` +``` + +```javascript +var s = "JavaScript syntax highlighting"; +alert(s); +``` + +```python +s = "Python syntax highlighting" +print s +``` + +``` +No language indicated, so no syntax highlighting in Markdown Here (varies on Github). +But let's throw in a tag. +``` + +(Github Wiki pages don't seem to support syntax highlighting, so the above won't be colourful (the strings are not red, for example). Try it out in a *Markdown Here* email or a Github Markdown README or Github Issue -- you can preview a new Issue without submitting it.) + +Again, to see what languages are available for highlighting, and how to write those language names, see the [highlight.js demo page](http://softwaremaniacs.org/media/soft/highlight/test.html). + + +## Tables + +Tables aren't part of the core Markdown spec, but they are part of GFM and *Markdown Here* supports them. They are an easy way of adding tables to your email -- a task that would otherwise require copy-pasting from another application. + +```no-highlight +Colons can be used to align columns. + +| Tables | Are | Cool | +| ------------- |:-------------:| -----:| +| col 3 is | right-aligned | $1600 | +| col 2 is | centered | $12 | +| zebra stripes | are neat | $1 | + +The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown. + +Markdown | Less | Pretty +--- | --- | --- +*Still* | `renders` | **nicely** +1 | 2 | 3 +``` + +Colons can be used to align columns. + +| Tables | Are | Cool | +| ------------- |:-------------:| -----:| +| col 3 is | right-aligned | $1600 | +| col 2 is | centered | $12 | +| zebra stripes | are neat | $1 | + +The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown. + +Markdown | Less | Pretty +--- | --- | --- +*Still* | `renders` | **nicely** +1 | 2 | 3 + + +## Blockquotes + +```no-highlight +> Blockquotes are very handy in email to emulate reply text. +> This line is part of the same quote. + +Quote break. + +> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote. +``` + +> Blockquotes are very handy in email to emulate reply text. +> This line is part of the same quote. + +Quote break. + +> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote. + + +## Inline HTML + +You can also use raw HTML in your Markdown, and it'll mostly work pretty well. + +```no-highlight +
+
Definition list
+
Is something people use sometimes.
+ +
Markdown in HTML
+
Does *not* work **very** well. Use HTML tags.
+
+``` + +
+
Definition list
+
Is something people use sometimes.
+ +
Markdown in HTML
+
Does *not* work **very** well. Use HTML tags.
+
+ +
+## Horizontal Rule + +``` +Three or more... + +--- + +Hyphens + +*** + +Asterisks + +___ + +Underscores +``` + +Three or more... + +--- + +Hyphens + +*** + +Asterisks + +___ + +Underscores + + +## Line Breaks + +My basic recommendation for learning how line breaks work is to experiment and discover -- hit <Enter> once (i.e., insert one newline), then hit it twice (i.e., insert two newlines), see what happens. You'll soon learn to get what you want. "Markdown Toggle" is your friend. + +Here are some things to try out: + +``` +Here's a line for us to start with. + +This line is separated from the one above by two newlines, so it will be a *separate paragraph*. + +This line is also a separate paragraph, but... +This line is only separated by a single newline, so it's a separate line in the *same paragraph*. +``` + +Here's a line for us to start with. + +This line is separated from the one above by two newlines, so it will be a *separate paragraph*. + +This line is also begins a separate paragraph, but... +This line is only separated by a single newline, so it's a separate line in the *same paragraph*. + +(Technical note: *Markdown Here* uses GFM line breaks, so there's no need to use MD's two-space line breaks.) + + +## Youtube videos + +They can't be added directly but you can add an image with a link to the video like this: + +```no-highlight + +``` + +Or, in pure Markdown, but losing the image sizing and border: + +```no-highlight +[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/YOUTUBE_VIDEO_ID_HERE/0.jpg)](http://www.youtube.com/watch?v=YOUTUBE_VIDEO_ID_HERE) +``` diff --git a/.vim/syntax/nvpscript.vim b/.vim/syntax/nvpscript.vim index 990886d..a19e65d 100644 --- a/.vim/syntax/nvpscript.vim +++ b/.vim/syntax/nvpscript.vim @@ -1,6 +1,6 @@ " Vim syn file " Language: NVISION Script -" Maintainer: John Cook +" Maintainer: Barak Michener " Last Change: 2006 Jun 29 " For version 5.x: Clear all syntax items diff --git a/.vimrc b/.vimrc index 3cd47ca..2a28b44 100644 --- a/.vimrc +++ b/.vimrc @@ -123,6 +123,7 @@ setlocal cursorline let python_highlight_all = 1 let g:Tb_MaxSize=0 let g:Tb_MapCTabSwitchBufs = 1 +let g:UseGooglePythonSettings = 0 " * Configure browser for haskell_doc.vim let g:haddock_browser = "open" @@ -188,6 +189,18 @@ let g:CommandTMaxDepth = 7 au! BufRead,BufWrite,BufWritePost,BufNewFile *.org au BufEnter *.org call org#SetOrgFileType() +" * Airline +set noshowmode +let g:airline_enable_branch = 1 +let g:airline_enable_syntastic = 1 +let g:airline_enable_tagbar = 1 +let g:airline_theme="ubaryd" + +" * CtrlP +let g:ctrlp_map = ',t' +let g:ctrlp_cmd = 'CtrlP' +let g:ctrlp_working_path_mode = 'ra' + " ** STATUSLINE ** " @@ -225,6 +238,10 @@ command ScratchOpen :e scp://barak@barakmich.com//home/barak/notes/scratch " Sudo-make-me-a-sandwich write. For when I forget to be root. command Wdammit :w !sudo tee > /dev/null % +" I can never remember markdown fully. Open me a cheatsheet +command MarkdownCheatsheet :rightb vsplit ~/.vim/markdown_cheatsheet.md + + " Doesn't quite work right but can be a real savior if needed. " Oh-shit-what-was-this-like-before-I-changed-it? function! s:DiffWithSaved() diff --git a/.zshrc b/.zshrc index a165395..2d7adb0 100644 --- a/.zshrc +++ b/.zshrc @@ -83,6 +83,10 @@ if [ -f ~/.bash_aliases ]; then source ~/.bash_aliases fi +if [ -f /usr/local/bin/virtualenvwrapper_lazy.sh ]; then + source /usr/local/bin/virtualenvwrapper_lazy.sh +fi + fasd_cache="$HOME/.fasd-init-zsh" if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcompinstall >| "$fasd_cache" diff --git a/bin/git-remove-submodule b/bin/git-remove-submodule new file mode 100755 index 0000000..d099727 --- /dev/null +++ b/bin/git-remove-submodule @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Adam Sharp +# Aug 21, 2013 +# +# Usage: Add it to your PATH and `git remove-submodule path/to/submodule`. +# +# Does the inverse of `git submodule add`: +# 1) `deinit` the submodule +# 2) Remove the submodule from the index and working directory +# 3) Clean up the .gitmodules file +# + +submodule_name=$1; shift + +exit_err() { + [ $# -gt 0 ] && echo "fatal: $*" 1>&2 + exit 1 +} + +if git submodule status "$submodule_name" >/dev/null 2>&1; then + git submodule deinit -f "$submodule_name" + git rm -f "$submodule_name" + + git config -f .gitmodules --remove-section "submodule.$submodule_name" + if [ -z "$(cat .gitmodules)" ]; then + git rm -f .gitmodules + else + git add .gitmodules + fi +else + exit_err "Submodule '$submodule_name' not found" +fi