Submodules have been updated. FKey toggles were tweaked a bit along with general improvements to keyboard mappings. Fixed some issues with the update script, including incorrect log placement as well as allowing it to fail after a timeout when vim hangs (happens when vim displays an error on startup, for example), added better and more consistant error output/logging and fixed some errors along with dozens of tweaks.

This commit is contained in:
Kevin MacMartin 2014-06-17 08:19:40 -04:00
parent f808cd9759
commit f6a20e0219
7 changed files with 172 additions and 135 deletions

View file

@ -8,16 +8,16 @@ A theme, config and collection of plugins for Vim.
* **Bash**: Required by the _update_ and _gentags_ scripts.
* **Git**: Required by the _update_ script and git-related plugins.
* **Grep and Find**: Required by the _grep_ plugin.
* **CTags**: Required by the _tagbar_ and _neocomplcache_ plugins as well as the _gentags_ script ([ctags website](http://ctags.sourceforge.net)).
## Optional Requirements ##
* **Powerline Fonts**: Required to enable the fancier looking status line ([powerline-fonts repo](https://github.com/Lokaltog/powerline-fonts)).
* **Artistic Style**: Required by the _autoformat_ plugin to format C, C++, C++/CLI, C#, and Java source ([astyle website](http://astyle.sourceforge.net)).
* **autopep8**: Required by the _autoformat_ plugin to format Python using the PEP 8 style guide ([autopep8 repo](https://github.com/hhatto/autopep8)).
* **JS Beautifier**: Required by the _autoformat_ plugin to format Javascript source and HTML ([js-beautify repo](https://github.com/Chiel92/vim-autoformat)).
* **Tidy**: Required by the _autoformat_ plugin to format XHTML and XML ([tidy website](http://tidy.sourceforge.net)).
* **Compilers and Runtimes**: The syntastic plugin can use the compiler or runtime for most languages to provide real-time syntax checking.
* **CTags**: Required by the _tagbar_ and _neocomplcache_ plugins as well as the _gentags_ script ([ctags website](http://ctags.sourceforge.net)).
* **JS Beautifier**: Required by the _autoformat_ plugin to format Javascript source and HTML ([js-beautify repo](https://github.com/Chiel92/vim-autoformat)).
* **Powerline Fonts**: Required to enable the fancier looking status line ([powerline-fonts repo](https://github.com/Lokaltog/powerline-fonts)).
* **Tidy**: Required by the _autoformat_ plugin to format XHTML and XML ([tidy website](http://tidy.sourceforge.net)).
## Distribution Features ##
@ -94,13 +94,14 @@ A theme, config and collection of plugins for Vim.
| \` | NORM | Toggle the gutter (line #s, folds, git diffs) |
| | | |
| \<F1\> | ALL | Toggle the **gundo** undo history sidebar |
| \<F2\> | ALL | Toggle the **spellcheck** bottom bar of mistakes |
| \<F3\> | ALL | Toggle the **tagbar** source code tag sidebar |
| \<F12\> | ALL | Toggle the **extradite** git history window |
| \<F2\> | ALL | Toggle the **tagbar** source code tag sidebar |
| \<F3\> | ALL | Toggle the **spellcheck** bottom bar of mistakes |
| \<F4\> | ALL | Toggle the **extradite** git history window |
| | | |
| \<Ctrl-F1\> | ALL | Toggle line wrapping |
| \<Ctrl-F2\> | ALL | Toggle highlighting of spelling mistakes |
| \<Ctrl-F3\> | ALL | Toggle source code syntax checking |
| \<Ctrl-F4\> | ALL | Toggle external-paste mode |
##### GVim #####

213
update
View file

@ -11,16 +11,19 @@
# #
##############################################################
# change to the the directory containing this script
cd "${0%/*}"
### BEGIN: VARIABLES ###
# user variables (these can be edited)
ERRORLOG="update-errors.log" # set the error log filename
# set the name of this script without including the path
SCRIPT_NAME=`echo "$0" | grep -o -e "[^\/]*$"`
# set the version based on the number and date of the current commit
# script variables (these should not be touched)
VERSION=$(printf "%s.r%s" "$(git show -s --format=%ci master | sed 's/\ .*//g;s/-//g')" "$(git rev-list --count HEAD)")
SCRIPT_NAME=`echo "$0" | grep -o -e "[^\/]*$"`
SCRIPT_HOME="${0%/*}"
### END: VARIABLES ###
# this function configures the env using arguments its passed
### BEGIN: FUNCTIONS ###
# command_parse "$@": configures environment using arguments
function command_parse {
for param in $@; do
case "$param" in
@ -40,47 +43,47 @@ function command_parse {
done
}
# this function both outputs error messages as well as writing them to a log when they occur
# error "file/command" "error output" "note": output and log error
function error() {
echo -e "${HEADINGCOLOUR} ${RESETCOLOUR}${ERRORCOLOUR} ! ERROR: ${RESETCOLOUR}${FAILCOLOUR} ${2} "
echo -e "${HEADINGCOLOUR} ${RESETCOLOUR}${ERRORCOLOUR} ! ${RESETCOLOUR} ${NOACTIONCOLOUR}=> ${1}${RESETCOLOUR}"
[[ -n "$3" ]] && echo -e "${HEADINGCOLOUR} ${RESETCOLOUR}${ERRORCOLOUR} ! ${RESETCOLOUR}${NOACTIONCOLOUR} ${3}"
echo -e "${HEADINGCOLOUR} ${RESETCOLOUR}${ERRORCOLOUR} ! COMMAND: ${RESETCOLOUR} ${NOACTIONCOLOUR}=> ${1}${RESETCOLOUR}"
[[ -n "$3" ]] && echo -e "${HEADINGCOLOUR} ${RESETCOLOUR}${ERRORCOLOUR} ! OUTPUT: ${RESETCOLOUR}${NOACTIONCOLOUR} ${3}"
echo "${1} @ $(date)" >> "$ERRORLOG"
echo " ! Error: ${2}" >> "$ERRORLOG"
[[ -n "$3" ]] && echo " ! ${3}" >> "$ERRORLOG"
echo >> "$ERRORLOG"
echo "DATE: @ $(date)" >> "${SCRIPT_HOME}/${ERRORLOG}"
echo "ERROR: ${2}" >> "${SCRIPT_HOME}/${ERRORLOG}"
echo "COMMAND: ${1}" >> "${SCRIPT_HOME}/${ERRORLOG}"
[[ -n "$3" ]] && echo "OUTPUT: ${3}" >> "${SCRIPT_HOME}/${ERRORLOG}"
echo >> "${SCRIPT_HOME}/${ERRORLOG}"
}
# this function displays version information
# show_version: displays version information
function show_version() {
echo -e "Update tool for darkcloud-vimconfig (${SCRIPT_NAME}) v${VERSION}\n"
}
# this function displays help output
# show_help: this function displays help output
function show_help() {
echo -e "Usage: ${SCRIPT_NAME} [OPTION]\n"
echo " Options:"
echo -e "\t-n, --no-colour (or --no-color)"
echo -e "\t\tdisable colour output\n"
echo -e "\t-v, --version"
echo -e "\t\toutput version information and exit\n"
echo -e "\t-h, --help"
echo -e "\t\tdisplay this help and exit\n"
echo -e "\t-n, --no-colour (or --no-color)\n\t\tdisable colour output\n"
echo -e "\t-v, --version\n\t\toutput version information and exit\n"
echo -e "\t-h, --help\n\t\tdisplay this help and exit\n"
echo -e "\tRun with no arguments to update darkcloud-vimconfig\n"
}
### END: FUNCTIONS ###
# initialize the error log
ERRORLOG="update-errors.log"
[[ -f "$ERRORLOG" ]] && rm "$ERRORLOG"
# parse for commandline arguments and respond accordingly
### BEGIN: SETUP ###
# change to the base darkcloud-vimconfig folder
cd "$SCRIPT_HOME"
# delete old error log if it exists
[[ -f "$ERRORLOG" ]] && rm "${SCRIPT_HOME}/${ERRORLOG}"
# parse for arguments (then handle them below)
[[ ! -z "$@" ]] && command_parse "$@"
# set colours unless user specifies otherwise
# set colour for output unless an argument was given to disable it
if [ ! "$NO_COLOUR" = "true" ]; then
TITLECOLOUR="\e[40m"
HEADINGCOLOUR="\e[44m"
@ -93,19 +96,33 @@ if [ ! "$NO_COLOUR" = "true" ]; then
else
HEADINGCOLOUR="#"
fi
# display an error for an invalid argument, then the help and exit
# display an error, help then exit when invalid argument(s) are given
[[ -n "$ERROR" ]] && error "$ERROR" "Invalid option supplied at runtime" && echo && show_help && exit 1
# show the help and exit
# show the help and exit when an argument has been given to do so
[[ "$SHOW_HELP" = "true" ]] && show_version && show_help && exit 0
# show version information and exit
# show version information and exit when an argument has been given to do so
[[ "$SHOW_VERSION" = "true" ]] && show_version && exit 0
# create vim/vimrc.user and vim/bundle.user if they don't already exist
[[ ! -d vim/bundle.user ]] && install -d vim/bundle.user
echo -e "\n${TITLECOLOUR} ~~~ DarkCloud Vimconfig Update Tool ~~~ ${RESETCOLOUR}"
# create vim/bundle.user and vim/vimrc.user if either don't exist
if [ ! -d vim/bundle.user ]; then
echo -n -e "\n${HEADINGCOLOUR} >> Creating User Plugin Directory:${RESETCOLOUR}"
PROCESS_STATUS=$(install -d vim/bundle.user 2>&1)
if [ $? = 0 ]; then
echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}"
else
echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"
error "install -d vim/bundle.user" "User plugin directory couldn't be created" "$PROCESS_STATUS"
fi
fi
if [ ! -e vim/vimrc.user ]; then
echo -e "\n${TITLECOLOUR} ~~~ DarkCloud Vimconfig Setup ~~~ ${RESETCOLOUR}"
echo -n -e "\n${HEADINGCOLOUR} >> Creating User Config 'vim/vimrc.user': ${RESETCOLOUR}"
if [ -w vim ]; then
echo -n -e "\n${HEADINGCOLOUR} >> Creating User Config File:${RESETCOLOUR}"
PROCESS_STATUS=$(touch vim/vimrc.user 2>&1)
if [ $? = 0 ]; then
echo -e '"Disable Linebreaks: (*1:force disabled globally | 0: disabled by default)\n"let g:disablelinebreaks=0\n' >> vim/vimrc.user
echo -e '"Autostart Filer: (*1:filer loads in new empty buffers | 0: filer must be triggered)\n"let g:autostartfiler=0\n' >> vim/vimrc.user
echo -e '"Syntax Autostart: (1:start toggled on | *0: start toggled off)\n"let g:autostartchecker=1\n' >> vim/vimrc.user
@ -115,61 +132,66 @@ if [ ! -e vim/vimrc.user ]; then
echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}"
else
echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"
error "vim/vimrc.user" "User config couldn't be created" "The 'vim' folder is read-only and must be set read/write"
error "touch vim/vimrc.user" "User config couldn't be created" "$PROCESS_STATUS"
fi
else
echo -e "\n${TITLECOLOUR} ~~~ DarkCloud Vimconfig Update Tool ~~~ ${RESETCOLOUR}"
fi
### END: SETUP ###
# update darkcloud-vimconfig
echo -n -e "\n${HEADINGCOLOUR} >> Updating Repository: ${RESETCOLOUR}"
GIT_STATUS=$(git pull origin master 2>&1)
### BEGIN: REPO UPDATE ###
echo -n -e "\n${HEADINGCOLOUR} >> Updating Repository:${RESETCOLOUR}"
PROCESS_STATUS=$(git pull origin master 2>&1)
if [ $? = 0 ]; then
echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}"
else
echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"
error "git pull origin master" "Git failed to sync the repo" "Git output: ${GIT_STATUS}"
error "git pull origin master" "Git failed to sync the repo" "$PROCESS_STATUS"
exit 1
fi
### END: REPO UPDATE ###
# setup and sync the submodules
### BEGIN: SUBMODULE UPDATE ###
# synchronize the repo urls for each submodule using the ones in .gitmodules
echo -e "\n${HEADINGCOLOUR} >> Updating Plugin Submodules >> ${RESETCOLOUR}"
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Updating Plugin URLs: ${RESETCOLOUR}"
GIT_STATUS=$(git submodule sync 2>&1)
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Updating Plugin URLs:${RESETCOLOUR}"
PROCESS_STATUS=$(git submodule sync 2>&1)
if [ $? = 0 ]; then
echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}"
else
echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"
error "git submodule sync" "Git failed to sync the submodules" "Git output: ${GIT_STATUS}"
error "git submodule sync" "Git failed to sync the submodules" "$PROCESS_STATUS"
fi
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Fetching Updates: ${RESETCOLOUR}"
GIT_STATUS=$(git submodule foreach git fetch --all 2>&1)
# update each submodule to the new head and run 'git fetch --all'
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Fetching Updates:${RESETCOLOUR}"
PROCESS_STATUS=$(git submodule foreach git fetch --all 2>&1)
if [ $? = 0 ]; then
GIT_STATUS=$(git submodule update --init --recursive 2>&1)
PROCESS_STATUS=$(git submodule update --init --recursive 2>&1)
if [ $? = 0 ]; then
echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}"
else
echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"
error "git submodule update --init --recursive" "Git failed to update the submodules" "Git output: ${GIT_STATUS}"
error "git submodule update --init --recursive" "Git failed to update the submodules" "$PROCESS_STATUS"
fi
else
echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"
error "git submodule foreach git fetch --all" "Git failed to fetch the submodules from their respective remotes" "Git output: ${GIT_STATUS}"
error "git submodule foreach git fetch --all" "Git failed to fetch the submodules from their respective remotes" "$PROCESS_STATUS"
fi
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Checkout Origin/Master: ${RESETCOLOUR}"
GIT_STATUS=$(git submodule foreach git checkout -f origin/master 2>&1)
# run 'git checkout origin/master' on each submodule
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Checking Out Updates:${RESETCOLOUR}"
PROCESS_STATUS=$(git submodule foreach git checkout -f origin/master 2>&1)
if [ $? = 0 ]; then
echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}"
else
echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"
error "git submodule foreach git checkout -f origin/master" "Git failed to checkout the submodules into origin/master" "Git output: ${GIT_STATUS}"
error "git submodule foreach git checkout -f origin/master" "Git failed to checkout the submodules into origin/master" "$PROCESS_STATUS"
fi
# clean plugin directories and remove plugins no longer in the repo
echo -e "\n${HEADINGCOLOUR} >> Cleaning Plugin Directories >> ${RESETCOLOUR}"
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Removing Untracked Files: ${RESETCOLOUR}"
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Removing Untracked Files:${RESETCOLOUR}"
git submodule foreach git clean -dxf > /dev/null 2>&1 && echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}" || echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"
[[ -f .gitmodules ]] && for each in vim/bundle/*; do
if [ -d "$each" ]; then
@ -177,49 +199,64 @@ git submodule foreach git clean -dxf > /dev/null 2>&1 && echo -e "${SUCCESSCOLOU
FILE=$(echo $each | grep -o -e "[^\/]*$")
if [ $(cat .gitmodules | grep "path = " | grep -o -e "[^\/]*$" | grep -c -e "${FILE}$") = 0 ]; then
[[ -z "$FIRST_OLD" ]] && export FIRST_OLD=1 && echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Removing Old Plugins: ${RESETCOLOUR}\n"
rm -rf "$each"
PROCESS_STATUS=$(rm -rf "$each")
if [ $? = 0 ]; then
echo -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} = ${RESETCOLOUR}$(echo ${each}\ | sed -re 's|^(.*)/([^/]*)$|\\e\[1;37m\1/\\e\[1;31m\2\\e\[0m|')"
else
error "$each" "The folder could not be deleted" "Try deleting manually to resolve"
error "rm -rf ${each}" "Folder couldn't be deleted" "$PROCESS_STATUS"
exit 1
fi
fi
fi
fi
done && unset FIRST_OLD && echo
done && echo
### END: SUBMODULE UPDATE ###
# update git-based plugins in vim/bundle.user if any exist
if [ ! $(find vim/bundle.user | grep ".git/config" | wc -l) = 0 ]; then
echo -e "${HEADINGCOLOUR} >> Updating User Plugins >> ${RESETCOLOUR}"
pushd vim/bundle.user > /dev/null 2>&1
for each in *; do
if [ -d "$each" ]; then
pushd "$each" > /dev/null 2>&1
if [ -d .git ]; then
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Updating 'vim/bundle.user/${each}' ${RESETCOLOUR}"
GIT_STATUS=$(git pull origin master 2>&1)
if [ $? = 0 ]; then
if [ $(echo $GIT_STATUS | grep -c "Already up-to-date") = 0 ]; then
echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}"
### BEGIN: USER PLUGIN UPDATE ###
if [ -d vim/bundle.user ]; then
if [ ! $(find vim/bundle.user | grep ".git/config" | wc -l) = 0 ]; then
echo -e "${HEADINGCOLOUR} >> Updating User Plugins >> ${RESETCOLOUR}"
pushd vim/bundle.user > /dev/null 2>&1
for each in *; do
if [ -d "$each" ]; then
pushd "$each" > /dev/null 2>&1
if [ -d .git ]; then
echo -n -e "${HEADINGCOLOUR} ${RESETCOLOUR}${SUBHEADINGCOLOUR} + Updating 'vim/bundle.user/${each}':${RESETCOLOUR}"
PROCESS_STATUS=$(git pull origin master 2>&1)
if [ $? = 0 ]; then
if [ $(echo $PROCESS_STATUS | grep -c "Already up-to-date") = 0 ]; then
echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}"
else
echo -e "${NOACTIONCOLOUR} UP TO DATE ${RESETCOLOUR}"
fi
else
echo -e "${NOACTIONCOLOUR} UP TO DATE ${RESETCOLOUR}"
error "git pull origin master" "Failed pulling changes for ${each}" "$PROCESS_STATUS"
fi
else
error "vim/bundle.user/${each}" "Git failed to pull the latest changes" "Git output: ${GIT_STATUS}"
fi
fi
popd > /dev/null 2>&1
fi
done
popd > /dev/null 2>&1
echo
popd > /dev/null 2>&1
fi
done
popd > /dev/null 2>&1
echo
fi
fi
### END: USER PLUGIN UPDATE ###
echo -n -e "${HEADINGCOLOUR} >> Generating Plugin Helpdocs: ${RESETCOLOUR}"
[[ $(type -P vim) ]] && vim -c "Helptags|qa!" &> /dev/null 2>&1 \
&& echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}" \
|| (echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"; error "$vim -c \"Helptags|qa!\"" "Generating helpdocs for the submodules failed")
### BEGIN: GENERATE PLUGIN HELPTAGS ###
if [ $(type -P vim) ]; then
echo -n -e "${HEADINGCOLOUR} >> Generating Plugin Help:${RESETCOLOUR}"
timeout --foreground 2m vim -c "Helptags|qa!" &> /dev/null
if [ $? = 0 ]; then
echo -e "${SUCCESSCOLOUR} SUCCESS! ${RESETCOLOUR}"
else
reset -I
echo -e "${FAILCOLOUR} FAIL! ${RESETCOLOUR}"
error "vim -c \"Helptags|qa!\"" "Generating helpdocs for the submodules failed"
fi
fi
### END: GENERATE PLUGIN HELPTAGS ###
echo -e "\n${TITLECOLOUR} ~~~ Update Complete ~~~ ${RESETCOLOUR}\n"
exit 0

@ -1 +1 @@
Subproject commit 97ac8be9c313092f25e15e10d932403f6eab0ed4
Subproject commit 7afa72e7fb048fa0b0d938cac7a509c4f20023c8

@ -1 +1 @@
Subproject commit bd7e34757d73f6ed95f41f178fd9e2b4a5e49eeb
Subproject commit 3ebdeabf63eb2f093ccd79c1c9f4d8e198488d5b

@ -1 +1 @@
Subproject commit ec749ddeb6a6ebbf2a5f56eadcc48abe5bfc4f81
Subproject commit 201f4b779a48a7296c93e5b359fcd992eb22a031

@ -1 +1 @@
Subproject commit cf348a47ecb326e33e676326836df3dd74ad4c07
Subproject commit cd59caa85efa4be1688588383d7126ab3d44a1a8

View file

@ -83,13 +83,14 @@
" <Leader>0 | (N) -> reset all folds using default fold level
"
" <F1> | (N) -> toggle the gundo sidebar
" <F2> | (A) -> toggle spellcheck error list
" <F3> | (A) -> toggle the tagbar sidebar
" <12> | (A) -> toggle extradite git commit history
" <F2> | (A) -> toggle the tagbar sidebar
" <F3> | (A) -> toggle spellcheck error list
" <F4> | (A) -> toggle extradite git commit history
"
" <Ctrl-F1> | (A) -> toggle line wrapping
" <Ctrl-F2> | (A) -> toggle spell check
" <Ctrl-F3> | (A) -> toggle syntax checking
" <Ctrl-F4> | (A) -> toggle external-paste mode
"
" (gvim toggles)
" <Ctrl-F10> | (A) -> toggle the menubar
@ -165,7 +166,6 @@
" <Shift-Left> | (V) -> select a few lines left
"
" (copy/paste and undo/redo)
" <Alt-p> | (N) -> toggle paste mode
" <Leader>p | (N) -> view the paste buffers and register contents
" y | (N) -> copies the character at the cursor
" P | (V) -> save selection to the buffer and paste over
@ -183,7 +183,7 @@
" <Leader>dd | (N) -> delete lines under and after the one below
" <Leader>d | (V) -> delete the currently selected text
"
" (typical copy and paste shortcuts)
" (improved copy and paste shortcuts)
" <Ctrl-v> | (N) -> paste from buffer
" <Ctrl-v> | (V) -> paste buffer in place of selection
" <Ctrl-v> | (I) -> paste from buffer then return to input
@ -207,7 +207,7 @@
" <Leader><Backspace> | (N) -> move to the parent tag
"
" (extradite)
" <C-F7> | (A) -> close the dialog
" <F4> | (A) -> close the dialog
" <Right> | (A) -> same as down
" l | (A) -> same as j
" <Left> | (A) -> same as Up
@ -390,38 +390,41 @@
"bindings to trigger the gundo undo history
nnoremap <silent><expr> <F1> ':GundoToggle<CR>:echo "undo history sidebar toggled"<CR>'
xnoremap <silent><expr> <F1> '<Esc>:GundoToggle<CR>v'
inoremap <silent><expr> <F1> '<C-O>:GundoToggle<CR>'
"bindings to trigger spellcheck
nnoremap <silent><expr> <F2> ':UpdateAndSpellCheck<CR>:call ToggleQuickfixList()<CR>:wincmd j<CR>'
xnoremap <silent><expr> <F2> '<Esc>:UpdateAndSpellCheck<CR>:call ToggleQuickfixList()<CR>:wincmd j<CR>'
inoremap <silent><expr> <F2> '<Esc>:UpdateAndSpellCheck<CR>:call ToggleQuickfixList()<CR>:wincmd j<CR>'
xnoremap <silent><expr> <F1> '<Esc>:GundoToggle<CR>'
inoremap <silent><expr> <F1> '<Esc>:GundoToggle<CR>'
"bindings to trigger the tagbar list of tags
nnoremap <silent><expr> <F3> ':TagbarToggle<CR>:echo "tagbar toggled"<CR>'
xnoremap <silent><expr> <F3> '<Esc>:TagbarToggle<CR>gv'
inoremap <silent><expr> <F3> '<C-O>:TagbarToggle<CR>'
nnoremap <silent><expr> <F2> ':TagbarToggle<CR>:echo "tagbar toggled"<CR>'
xnoremap <silent><expr> <F2> '<Esc>:TagbarToggle<CR>gv'
inoremap <silent><expr> <F2> '<C-O>:TagbarToggle<CR>'
"bindings to trigger spellcheck
nnoremap <silent><expr> <F3> ':UpdateAndSpellCheck<CR>:call ToggleQuickfixList()<CR>:wincmd j<CR>'
xnoremap <silent><expr> <F3> '<Esc>:UpdateAndSpellCheck<CR>:call ToggleQuickfixList()<CR>:wincmd j<CR>'
inoremap <silent><expr> <F3> '<Esc>:UpdateAndSpellCheck<CR>:call ToggleQuickfixList()<CR>:wincmd j<CR>'
"view commit history and diffs
nnoremap <expr><silent> <F12> ':Extradite<CR>:wincmd x<CR>:wincmd j<CR>:resize 10<CR>'
xnoremap <expr><silent> <F12> '<Esc>:Extradite<CR>:wincmd x<CR>:wincmd j<CR>:resize 10<CR>v'
inoremap <expr><silent> <F12> '<Esc>:Extradite<CR>:wincmd x<CR>:wincmd j<CR>:resize 10<CR>'
nnoremap <expr><silent> <F4> ':Extradite!<CR>:resize 10<CR>:wincmd x<CR>:wincmd b<CR>:wincmd H<CR>:wincmd b<CR>'
xnoremap <expr><silent> <F4> '<Esc>:Extradite!<CR>:resize 10<CR>:wincmd x<CR>:wincmd b<CR>:wincmd H<CR>:wincmd b<CR>'
inoremap <expr><silent> <F4> '<Esc>:Extradite!<CR>:resize 10<CR>:wincmd x<CR>:wincmd b<CR>:wincmd H<CR>:wincmd b<CR>'
"toggle line wrapping (and bottom bar if using the gui)
nnoremap <silent><expr> <C-F1> ':set wrap!<CR>:echo "line wrapping toggled"<CR>'
xnoremap <silent><expr> <C-F1> '<Esc>:set wrap!<CR>gv'
inoremap <silent><expr> <C-F1> '<C-O>:set wrap!<CR>'
"toggle spellcheck
nnoremap <silent><expr> <C-F2> ':set spell!<CR>:echo "spell checking toggled"<CR>'
xnoremap <silent><expr> <C-F2> '<Esc>:set spell!<CR>gv'
inoremap <silent><expr> <C-F2> '<C-O>:set spell!<CR>'
"toggle syntax checking
nnoremap <silent><expr> <C-F3> ':SyntasticToggleMode<CR>'
xnoremap <silent><expr> <C-F3> '<Esc>:SyntasticToggleMode<CR>gv'
inoremap <silent><expr> <C-F3> '<C-O>:SyntasticToggleMode<CR>'
nnoremap <silent><expr> <C-F2> ':SyntasticToggleMode<CR>'
xnoremap <silent><expr> <C-F2> '<Esc>:SyntasticToggleMode<CR>gv'
inoremap <silent><expr> <C-F2> '<C-O>:SyntasticToggleMode<CR>'
"toggle spellcheck
nnoremap <silent><expr> <C-F3> ':set spell!<CR>:echo "spell checking toggled"<CR>'
xnoremap <silent><expr> <C-F3> '<Esc>:set spell!<CR>gv'
inoremap <silent><expr> <C-F3> '<C-O>:set spell!<CR>'
"toggle external-paste mode
set pastetoggle=<C-F4>
"}
"GVIM TOGGLES:{
@ -539,9 +542,6 @@
"}
"COPY PASTE AND UNDO REDO:{
"toggle paste mode
nnoremap <silent><expr> <A-p> ':set paste!<CR>'
"display contents of paste buffers
nnoremap <silent><expr> <Leader>p ':reg<CR>'
@ -593,7 +593,7 @@
autocmd FileType extradite map <buffer> l j
autocmd FileType extradite map <buffer> <Left> <Up>
autocmd FileType extradite map <buffer> h k
autocmd FileType diff,extradite map <buffer> <silent><expr> <F12> ':Extradite<CR>'
autocmd FileType diff,extradite map <buffer> <silent><expr> <F4> ':Extradite<CR>'
"gundo
autocmd FileType gundo map <buffer> <LeftMouse> <LeftMouse>0l
@ -611,7 +611,7 @@
endif
"markdown: launch table of contents instead of the tagbar
autocmd FileType mkd map <buffer> <silent><expr> <F3> ':Toch<CR>'
autocmd FileType mkd map <buffer> <silent><expr> <F2> ':Toch<CR>'
"markdown table of contents
autocmd FileType qf map <buffer> <LeftMouse> <LeftMouse>0
@ -624,14 +624,13 @@
autocmd FileType qf map <buffer> h j
autocmd FileType qf map <buffer> l k
autocmd FileType qf map <buffer> <silent><expr> q ':hide<CR>'
autocmd FileType qf map <buffer> <silent><expr> <F2> ':hide<CR>'
autocmd FileType qf map <buffer> <silent><expr> <F3> ':hide<CR>'
"vimdiff
autocmd FilterWritePre * if &diff|nnoremap <buffer> <silent><expr> <Leader><> ':diffu<CR>'|endif
autocmd FilterWritePre * if &diff|nnoremap <buffer> <silent><expr> <Leader>>< ':diffu<CR>'|endif
autocmd FilterWritePre * if &diff|nnoremap <buffer> <Leader>> dp|endif
autocmd FilterWritePre * if &diff|nnoremap <buffer> <Leader>< do|endif
autocmd FilterWritePre * if &diff|cabbrev q qall|endif
autocmd FilterWritePre * if &diff|cabbrev q! qall!|endif
"vimfiler
@ -648,8 +647,8 @@
"DISABLED MAPPINGS FOR FILETYPES: {{{
"remove incompatible toggles from specific file types
autocmd Filetype qf,vimfiler,extradite,help noremap <buffer> <F1> <Nop>
autocmd Filetype ggundo,vimfiler,extradite,tagbar,help noremap <buffer> <F2> <Nop>
autocmd Filetype qf,ggundo,vimfiler,extradite,help noremap <buffer> <F3> <Nop>
autocmd Filetype qf,ggundo,vimfiler,extradite,help noremap <buffer> <F2> <Nop>
autocmd Filetype ggundo,vimfiler,extradite,tagbar,help noremap <buffer> <F3> <Nop>
autocmd Filetype qf,ggundo,vimfiler,tagbar,help noremap <buffer> <12> <Nop>
"disable modifier keys with directions that would interfere with logic