initial commit

This commit is contained in:
Thomas Ruoff
2009-08-31 09:35:47 +02:00
commit 7886c38f33
13 changed files with 6522 additions and 0 deletions

86
create_symlinks.py Executable file
View File

@@ -0,0 +1,86 @@
#!/usr/bin/env python
import os
import logging
logging.basicConfig(level=logging.WARN)
home = os.path.abspath(os.environ['HOME'])
path = os.path.join(home, '.dotfiles')
excludes = ['create_symlinks.py', 'delete_symlinks.py']
"""
Recursivly create symbolic links for all files found beneath src_path to
dst_path. The directory structure will be created as needed.
"""
def symlink_rec(src_path, dst_path):
logging.debug("symlink_rec called with %s and %s" %
(src_path, dst_path))
if not os.path.isdir(src_path):
raise Exception
for f in os.listdir(src_path):
if f.startswith('.'):
continue
if f not in excludes:
n_src_path = os.path.join(src_path, f)
if os.path.isdir(n_src_path):
logging.debug("Go down into %s" % (n_src_path))
n_dst_path = os.path.join(dst_path, f)
if not os.path.exists(n_dst_path):
try:
logging.warn("Make directory %s" % (n_dst_path))
os.mkdir(n_dst_path)
except Exception, msg:
logging.error("Failed creating directory %s" %
(n_dst_path))
logging.error(msg)
return # abort or lower levels might fail too
symlink_rec(n_src_path, n_dst_path)
logging.debug("Finished directory %s" % (n_src_path))
elif os.path.isfile(n_src_path):
n_dst_path = os.path.join(dst_path, f)
try:
logging.warn("Symlinking %s to %s" %
(n_src_path, n_dst_path))
os.symlink(n_src_path, n_dst_path)
except Exception, msg:
logging.error("Failed to symlink %s to %s " %
(n_src_path, n_dst_path))
logging.error(msg)
"""
Create symbolic links from files in <path> to <home> with '.'-prefixed.
For directories in <path> will be '.'-prefixed created in <home> if
needed and symlink_rec is called on them.
"""
for f in os.listdir(path):
print f
if f.startswith('.'):
continue
if f not in excludes:
src_path = os.path.join(path, f)
if os.path.isdir(src_path):
logging.debug("Go down into %s" % (src_path))
dst_path = os.path.join(home, '.' + f)
if not os.path.exists(dst_path):
try:
logging.warn("Make directory %s" % (dst_path))
os.mkdir(dst_path)
except Exception, msg:
logging.error("Failed creating directory %s" %
(dst_path))
logging.error(msg)
symlink_rec(src_path, dst_path)
logging.debug("Finished directory %s" % (src_path))
elif os.path.isfile(src_path):
dst_path = os.path.join(home, '.' + f)
try:
logging.warn("Symlinking %s to %s" % (src_path, dst_path))
os.symlink(src_path, dst_path)
except Exception, msg:
logging.error("Failed to symlink %s to %s " %
(src_path, dst_path))
logging.error(msg)

85
delete_symlinks.py Executable file
View File

@@ -0,0 +1,85 @@
#!/usr/bin/env python
import os
import logging
logging.basicConfig(level=logging.WARN)
home = os.path.abspath(os.environ['HOME'])
path = os.path.join(home, '.dotfiles')
excludes = ['create_symlinks.py', 'delete_symlinks.py']
"""
Recursivly delte symbolic links for all files found beneath src_path to
dst_path.
"""
def symlink_rec(src_path, dst_path):
logging.debug("symlink_rec called with %s and %s" %
(src_path, dst_path))
if not os.path.isdir(src_path):
raise Exception
for f in os.listdir(src_path):
if f.startswith('.'):
continue
if f not in excludes:
n_src_path = os.path.join(src_path, f)
if os.path.isdir(n_src_path):
n_dst_path = os.path.join(dst_path, f)
if not os.path.exists(n_dst_path):
#nothing to do here
continue
logging.debug("Go down into %s" % (n_src_path))
symlink_rec(n_src_path, n_dst_path)
logging.debug("Finished directory %s" % (n_src_path))
elif os.path.isfile(n_src_path):
n_dst_path = os.path.join(dst_path, f)
try:
if not os.path.islink(n_dst_path):
loggin.warn("Won't delete %s, not a symbolic link"
% n_dst_path)
continue
logging.warn("Removing symbolic link %s" %
(n_dst_path))
os.remove(n_dst_path)
except Exception, msg:
logging.error("Failed to delete symlink %s" %
(n_dst_path))
logging.error(msg)
"""
Remove symbolic links from files in <path> to <home> with '.'-prefixed.
For directories in <path> the '.'-prefixed name will be searched in
<home> for further symbolic links to delete.
"""
print "Do you really want to delete all symbolic links in %s to the files in %s ? (YES,No)" % (home, path)
for f in os.listdir(path):
print f
if f.startswith('.'):
continue
if f not in excludes:
src_path = os.path.join(path, f)
if os.path.isdir(src_path):
logging.debug("Go down into %s" % (src_path))
dst_path = os.path.join(home, '.' + f)
if not os.path.exists(dst_path):
#nothing to delete in here
continue
symlink_rec(src_path, dst_path)
logging.debug("Finished directory %s" % (src_path))
elif os.path.isfile(src_path):
dst_path = os.path.join(home, '.' + f)
if not os.path.islink(dst_path):
logging.warn("Won't remove %s. Is not a symbolic link")
continue
try:
logging.warn("Remove %s" % (dst_path))
os.remove(dst_path)
except Exception, msg:
logging.error("Failed to remove %s to %s " %
(src_path, dst_path))
logging.error(msg)

8
gitconfig Normal file
View File

@@ -0,0 +1,8 @@
[user]
name = Thomas Ruoff
email = ThomasRuoff@gmail.com
[color]
branch = auto
diff = auto
interactive = auto
status = auto

1227
vim/doc/NERD_tree.txt Normal file

File diff suppressed because it is too large Load Diff

160
vim/doc/tags Normal file
View File

@@ -0,0 +1,160 @@
'Tlist_Auto_Highlight_Tag' taglist.txt /*'Tlist_Auto_Highlight_Tag'*
'Tlist_Auto_Open' taglist.txt /*'Tlist_Auto_Open'*
'Tlist_Auto_Update' taglist.txt /*'Tlist_Auto_Update'*
'Tlist_Close_On_Select' taglist.txt /*'Tlist_Close_On_Select'*
'Tlist_Compact_Format' taglist.txt /*'Tlist_Compact_Format'*
'Tlist_Ctags_Cmd' taglist.txt /*'Tlist_Ctags_Cmd'*
'Tlist_Display_Prototype' taglist.txt /*'Tlist_Display_Prototype'*
'Tlist_Display_Tag_Scope' taglist.txt /*'Tlist_Display_Tag_Scope'*
'Tlist_Enable_Fold_Column' taglist.txt /*'Tlist_Enable_Fold_Column'*
'Tlist_Exit_OnlyWindow' taglist.txt /*'Tlist_Exit_OnlyWindow'*
'Tlist_File_Fold_Auto_Close' taglist.txt /*'Tlist_File_Fold_Auto_Close'*
'Tlist_GainFocus_On_ToggleOpen' taglist.txt /*'Tlist_GainFocus_On_ToggleOpen'*
'Tlist_Highlight_Tag_On_BufEnter' taglist.txt /*'Tlist_Highlight_Tag_On_BufEnter'*
'Tlist_Inc_Winwidth' taglist.txt /*'Tlist_Inc_Winwidth'*
'Tlist_Max_Submenu_Items' taglist.txt /*'Tlist_Max_Submenu_Items'*
'Tlist_Max_Tag_Length' taglist.txt /*'Tlist_Max_Tag_Length'*
'Tlist_Process_File_Always' taglist.txt /*'Tlist_Process_File_Always'*
'Tlist_Show_Menu' taglist.txt /*'Tlist_Show_Menu'*
'Tlist_Show_One_File' taglist.txt /*'Tlist_Show_One_File'*
'Tlist_Sort_Type' taglist.txt /*'Tlist_Sort_Type'*
'Tlist_Use_Horiz_Window' taglist.txt /*'Tlist_Use_Horiz_Window'*
'Tlist_Use_Right_Window' taglist.txt /*'Tlist_Use_Right_Window'*
'Tlist_Use_SingleClick' taglist.txt /*'Tlist_Use_SingleClick'*
'Tlist_WinHeight' taglist.txt /*'Tlist_WinHeight'*
'Tlist_WinWidth' taglist.txt /*'Tlist_WinWidth'*
:NERDTree NERD_tree.txt /*:NERDTree*
:NERDTreeFromBookmark NERD_tree.txt /*:NERDTreeFromBookmark*
:NERDTreeToggle NERD_tree.txt /*:NERDTreeToggle*
:Snippet snippets_emu.txt /*:Snippet*
:TlistAddFiles taglist.txt /*:TlistAddFiles*
:TlistAddFilesRecursive taglist.txt /*:TlistAddFilesRecursive*
:TlistClose taglist.txt /*:TlistClose*
:TlistDebug taglist.txt /*:TlistDebug*
:TlistHighlightTag taglist.txt /*:TlistHighlightTag*
:TlistLock taglist.txt /*:TlistLock*
:TlistMessages taglist.txt /*:TlistMessages*
:TlistOpen taglist.txt /*:TlistOpen*
:TlistSessionLoad taglist.txt /*:TlistSessionLoad*
:TlistSessionSave taglist.txt /*:TlistSessionSave*
:TlistShowPrototype taglist.txt /*:TlistShowPrototype*
:TlistShowTag taglist.txt /*:TlistShowTag*
:TlistToggle taglist.txt /*:TlistToggle*
:TlistUndebug taglist.txt /*:TlistUndebug*
:TlistUnlock taglist.txt /*:TlistUnlock*
:TlistUpdate taglist.txt /*:TlistUpdate*
CreateBundleSnippet snippets_emu.txt /*CreateBundleSnippet*
CreateSnippet snippets_emu.txt /*CreateSnippet*
NERDChristmasTree NERD_tree.txt /*NERDChristmasTree*
NERDTree NERD_tree.txt /*NERDTree*
NERDTree-! NERD_tree.txt /*NERDTree-!*
NERDTree-? NERD_tree.txt /*NERDTree-?*
NERDTree-B NERD_tree.txt /*NERDTree-B*
NERDTree-C NERD_tree.txt /*NERDTree-C*
NERDTree-D NERD_tree.txt /*NERDTree-D*
NERDTree-F NERD_tree.txt /*NERDTree-F*
NERDTree-H NERD_tree.txt /*NERDTree-H*
NERDTree-J NERD_tree.txt /*NERDTree-J*
NERDTree-K NERD_tree.txt /*NERDTree-K*
NERDTree-O NERD_tree.txt /*NERDTree-O*
NERDTree-P NERD_tree.txt /*NERDTree-P*
NERDTree-R NERD_tree.txt /*NERDTree-R*
NERDTree-T NERD_tree.txt /*NERDTree-T*
NERDTree-U NERD_tree.txt /*NERDTree-U*
NERDTree-X NERD_tree.txt /*NERDTree-X*
NERDTree-c-j NERD_tree.txt /*NERDTree-c-j*
NERDTree-c-k NERD_tree.txt /*NERDTree-c-k*
NERDTree-contents NERD_tree.txt /*NERDTree-contents*
NERDTree-e NERD_tree.txt /*NERDTree-e*
NERDTree-f NERD_tree.txt /*NERDTree-f*
NERDTree-go NERD_tree.txt /*NERDTree-go*
NERDTree-gtab NERD_tree.txt /*NERDTree-gtab*
NERDTree-m NERD_tree.txt /*NERDTree-m*
NERDTree-o NERD_tree.txt /*NERDTree-o*
NERDTree-p NERD_tree.txt /*NERDTree-p*
NERDTree-q NERD_tree.txt /*NERDTree-q*
NERDTree-r NERD_tree.txt /*NERDTree-r*
NERDTree-t NERD_tree.txt /*NERDTree-t*
NERDTree-tab NERD_tree.txt /*NERDTree-tab*
NERDTree-u NERD_tree.txt /*NERDTree-u*
NERDTree-x NERD_tree.txt /*NERDTree-x*
NERDTreeAuthor NERD_tree.txt /*NERDTreeAuthor*
NERDTreeAutoCenter NERD_tree.txt /*NERDTreeAutoCenter*
NERDTreeAutoCenterThreshold NERD_tree.txt /*NERDTreeAutoCenterThreshold*
NERDTreeBookmarkCommands NERD_tree.txt /*NERDTreeBookmarkCommands*
NERDTreeBookmarkTable NERD_tree.txt /*NERDTreeBookmarkTable*
NERDTreeBookmarks NERD_tree.txt /*NERDTreeBookmarks*
NERDTreeBookmarksFile NERD_tree.txt /*NERDTreeBookmarksFile*
NERDTreeCaseSensitiveSort NERD_tree.txt /*NERDTreeCaseSensitiveSort*
NERDTreeChDirMode NERD_tree.txt /*NERDTreeChDirMode*
NERDTreeChangelog NERD_tree.txt /*NERDTreeChangelog*
NERDTreeCredits NERD_tree.txt /*NERDTreeCredits*
NERDTreeFilesysMenu NERD_tree.txt /*NERDTreeFilesysMenu*
NERDTreeFunctionality NERD_tree.txt /*NERDTreeFunctionality*
NERDTreeGlobalCommands NERD_tree.txt /*NERDTreeGlobalCommands*
NERDTreeHighlightCursorline NERD_tree.txt /*NERDTreeHighlightCursorline*
NERDTreeIgnore NERD_tree.txt /*NERDTreeIgnore*
NERDTreeInvalidBookmarks NERD_tree.txt /*NERDTreeInvalidBookmarks*
NERDTreeLicense NERD_tree.txt /*NERDTreeLicense*
NERDTreeMappings NERD_tree.txt /*NERDTreeMappings*
NERDTreeMouseMode NERD_tree.txt /*NERDTreeMouseMode*
NERDTreeOptionDetails NERD_tree.txt /*NERDTreeOptionDetails*
NERDTreeOptionSummary NERD_tree.txt /*NERDTreeOptionSummary*
NERDTreeOptions NERD_tree.txt /*NERDTreeOptions*
NERDTreePublicFunctions NERD_tree.txt /*NERDTreePublicFunctions*
NERDTreeQuitOnOpen NERD_tree.txt /*NERDTreeQuitOnOpen*
NERDTreeShowBookmarks NERD_tree.txt /*NERDTreeShowBookmarks*
NERDTreeShowFiles NERD_tree.txt /*NERDTreeShowFiles*
NERDTreeShowHidden NERD_tree.txt /*NERDTreeShowHidden*
NERDTreeShowLineNumbers NERD_tree.txt /*NERDTreeShowLineNumbers*
NERDTreeSortOrder NERD_tree.txt /*NERDTreeSortOrder*
NERDTreeTodo NERD_tree.txt /*NERDTreeTodo*
NERDTreeWinPos NERD_tree.txt /*NERDTreeWinPos*
NERDTreeWinSize NERD_tree.txt /*NERDTreeWinSize*
NERD_tree.txt NERD_tree.txt /*NERD_tree.txt*
Tlist_Get_Tag_Prototype_By_Line() taglist.txt /*Tlist_Get_Tag_Prototype_By_Line()*
Tlist_Get_Tagname_By_Line() taglist.txt /*Tlist_Get_Tagname_By_Line()*
Tlist_Set_App() taglist.txt /*Tlist_Set_App()*
Tlist_Update_File_Tags() taglist.txt /*Tlist_Update_File_Tags()*
basic-snippet snippets_emu.txt /*basic-snippet*
creating-snippets snippets_emu.txt /*creating-snippets*
loaded_nerd_tree NERD_tree.txt /*loaded_nerd_tree*
named-tags snippets_emu.txt /*named-tags*
snip-advanced-tag-commands snippets_emu.txt /*snip-advanced-tag-commands*
snip-buffer-specific snippets_emu.txt /*snip-buffer-specific*
snip-bundles snippets_emu.txt /*snip-bundles*
snip-contact-details snippets_emu.txt /*snip-contact-details*
snip-contributors snippets_emu.txt /*snip-contributors*
snip-detailed-explanations snippets_emu.txt /*snip-detailed-explanations*
snip-elem-delimiter snippets_emu.txt /*snip-elem-delimiter*
snip-ftplugin snippets_emu.txt /*snip-ftplugin*
snip-limitations snippets_emu.txt /*snip-limitations*
snip-menu snippets_emu.txt /*snip-menu*
snip-remap-key snippets_emu.txt /*snip-remap-key*
snip-snippet-commands snippets_emu.txt /*snip-snippet-commands*
snip-special-vars snippets_emu.txt /*snip-special-vars*
snip-start-end-tags snippets_emu.txt /*snip-start-end-tags*
snip-tag-name-syntax snippets_emu.txt /*snip-tag-name-syntax*
snippet-commands snippets_emu.txt /*snippet-commands*
snippets_emu-bugs snippets_emu.txt /*snippets_emu-bugs*
snippets_emu-features snippets_emu.txt /*snippets_emu-features*
snippets_emu-options snippets_emu.txt /*snippets_emu-options*
snippets_emu-troubleshooting snippets_emu.txt /*snippets_emu-troubleshooting*
snippets_emu.txt snippets_emu.txt /*snippets_emu.txt*
taglist-commands taglist.txt /*taglist-commands*
taglist-debug taglist.txt /*taglist-debug*
taglist-extend taglist.txt /*taglist-extend*
taglist-faq taglist.txt /*taglist-faq*
taglist-functions taglist.txt /*taglist-functions*
taglist-install taglist.txt /*taglist-install*
taglist-internet taglist.txt /*taglist-internet*
taglist-intro taglist.txt /*taglist-intro*
taglist-keys taglist.txt /*taglist-keys*
taglist-license taglist.txt /*taglist-license*
taglist-menu taglist.txt /*taglist-menu*
taglist-options taglist.txt /*taglist-options*
taglist-requirements taglist.txt /*taglist-requirements*
taglist-session taglist.txt /*taglist-session*
taglist-todo taglist.txt /*taglist-todo*
taglist-using taglist.txt /*taglist-using*
taglist.txt taglist.txt /*taglist.txt*

58
vim/ftplugin/python.vim Normal file
View File

@@ -0,0 +1,58 @@
python << EOF
def SetBreakpoint():
import re
nLine = int( vim.eval( 'line(".")'))
strLine = vim.current.line
strWhite = re.search( '^(\s*)', strLine).group(1)
vim.current.buffer.append(
"%(space)spdb.set_trace() %(mark)s Breakpoint %(mark)s" %
{'space':strWhite, 'mark': '#' * 30}, nLine - 1)
for strLine in vim.current.buffer:
if strLine == "import pdb":
break
else:
vim.current.buffer.append( 'import pdb', 0)
vim.command( 'normal j1')
vim.command( 'map <f7> :py SetBreakpoint()<cr>')
def RemoveBreakpoints():
import re
nCurrentLine = int( vim.eval( 'line(".")'))
nLines = []
nLine = 1
for strLine in vim.current.buffer:
if strLine == 'import pdb' or strLine.lstrip()[:15] == 'pdb.set_trace()':
nLines.append( nLine)
nLine += 1
nLines.reverse()
for nLine in nLines:
vim.command( 'normal %dG' % nLine)
vim.command( 'normal dd')
if nLine < nCurrentLine:
nCurrentLine -= 1
vim.command( 'normal %dG' % nCurrentLine)
vim.command( 'map <s-f7> :py RemoveBreakpoints()<cr>')
EOF
set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\"
set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
"PEP 8 Friendly
setlocal tabstop=4
setlocal softtabstop=4
setlocal shiftwidth=4
setlocal textwidth=80
setlocal smarttab
setlocal expandtab
setlocal smartindent

3530
vim/plugin/NERD_tree.vim Normal file

File diff suppressed because it is too large Load Diff

357
vim/syntax/python.vim Normal file
View File

@@ -0,0 +1,357 @@
" Vim syntax file
" Language: Python
" Maintainer: Dmitry Vasiliev <dima@hlabs.spb.ru>
" URL: http://www.hlabs.spb.ru/vim/python3.0.vim
" Last Change: 2008-12-07
" Filenames: *.py
" Version: 3.0.0
"
" Based on python.vim (from Vim 6.1 distribution)
" by Neil Schemenauer <nas@python.ca>
"
" Thanks:
"
" Jeroen Ruigrok van der Werven
" for the idea to highlight erroneous operators
" Pedro Algarvio
" for the patch to enable spell checking only for the right spots
" (strings and comments)
" John Eikenberry
" for the patch fixing small typo
"
" Options:
"
" For set option do: let OPTION_NAME = 1
" For clear option do: let OPTION_NAME = 0
"
" Option names:
"
" For highlight builtin functions:
" python_highlight_builtins
"
" For highlight standard exceptions:
" python_highlight_exceptions
"
" For highlight string formatting:
" python_highlight_string_formatting
"
" For highlight str.format syntax:
" python_highlight_string_format
"
" For highlight string.Template syntax:
" python_highlight_string_templates
"
" For highlight indentation errors:
" python_highlight_indent_errors
"
" For highlight trailing spaces:
" python_highlight_space_errors
"
" For highlight doc-tests:
" python_highlight_doctests
"
" If you want all Python highlightings above:
" python_highlight_all
" (This option not override previously set options)
"
" For fast machines:
" python_slow_sync
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
if exists("python_highlight_all") && python_highlight_all != 0
" Not override previously set options
if !exists("python_highlight_builtins")
let python_highlight_builtins = 1
endif
if !exists("python_highlight_exceptions")
let python_highlight_exceptions = 1
endif
if !exists("python_highlight_string_formatting")
let python_highlight_string_formatting = 1
endif
if !exists("python_highlight_string_format")
let python_highlight_string_format = 1
endif
if !exists("python_highlight_string_templates")
let python_highlight_string_templates = 1
endif
if !exists("python_highlight_indent_errors")
let python_highlight_indent_errors = 1
endif
if !exists("python_highlight_space_errors")
let python_highlight_space_errors = 1
endif
if !exists("python_highlight_doctests")
let python_highlight_doctests = 1
endif
endif
" Keywords
syn keyword pythonStatement break continue del
syn keyword pythonStatement exec return as
syn keyword pythonStatement pass raise
syn keyword pythonStatement global assert
syn keyword pythonStatement lambda yield
syn keyword pythonStatement with nonlocal
syn keyword pythonStatement False None True
syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite
syn match pythonFunction "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
syn keyword pythonRepeat for while
syn keyword pythonConditional if elif else
syn keyword pythonImport import from
syn keyword pythonException try except finally
syn keyword pythonOperator and in is not or
" Decorators (new in Python 2.4)
syn match pythonDecorator "@" display nextgroup=pythonFunction skipwhite
" Comments
syn match pythonComment "#.*$" display contains=pythonTodo,@Spell
syn match pythonRun "\%^#!.*$"
syn match pythonCoding "\%^.*\%(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$"
syn keyword pythonTodo TODO FIXME XXX contained
" Errors
" syn match pythonError "\<\d\+\D\+\>" display
syn match pythonError "[$?]" display
syn match pythonError "[&|]\{2,}" display
syn match pythonError "[=]\{3,}" display
syn match pythonError "^\s*def\s\+\w\+(.*)\s*$" display
syn match pythonError "^\s*class\s\+\w\+(.*)\s*$" display
syn match pythonError "^\s*for\s.*[^:]$" display
syn match pythonError "^\s*except\s*$" display
syn match pythonError "^\s*finally\s*$" display
syn match pythonError "^\s*try\s*$" display
syn match pythonError "^\s*else\s*$" display
syn match pythonError "^\s*else\s*[^:].*" display
syn match pythonError "^\s*if\s.*[^\:]$" display
syn match pythonError "^\s*except\s.*[^\:]$" display
syn match pythonError "[;]$" display
syn keyword pythonError do
" TODO: Mixing spaces and tabs also may be used for pretty formatting multiline
" statements. For now I don't know how to work around this.
if exists("python_highlight_indent_errors") && python_highlight_indent_errors != 0
syn match pythonIndentError "^\s*\%( \t\|\t \)\s*\S"me=e-1 display
endif
" Trailing space errors
if exists("python_highlight_space_errors") && python_highlight_space_errors != 0
syn match pythonSpaceError "\s\+$" display
endif
" Strings
syn region pythonString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell
syn region pythonString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell
syn region pythonString start=+"""+ end=+"""+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest2,pythonSpaceError,@Spell
syn region pythonString start=+'''+ end=+'''+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest,pythonSpaceError,@Spell
syn match pythonEscape +\\[abfnrtv'"\\]+ display contained
syn match pythonEscape "\\\o\o\=\o\=" display contained
syn match pythonEscapeError "\\\o\{,2}[89]" display contained
syn match pythonEscape "\\x\x\{2}" display contained
syn match pythonEscapeError "\\x\x\=\X" display contained
syn match pythonEscape "\\$"
syn match pythonEscape "\\u\x\{4}" display contained
syn match pythonEscapeError "\\u\x\{,3}\X" display contained
syn match pythonEscape "\\U\x\{8}" display contained
syn match pythonEscapeError "\\U\x\{,7}\X" display contained
syn match pythonEscape "\\N{[A-Z ]\+}" display contained
syn match pythonEscapeError "\\N{[^A-Z ]\+}" display contained
" Raw strings
syn region pythonRawString start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell
syn region pythonRawString start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell
syn region pythonRawString start=+[rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell
syn region pythonRawString start=+[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell
syn match pythonRawEscape +\\['"]+ display transparent contained
" Bytes
syn region pythonBytes start=+[bB]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesContent,pythonBytesError,pythonBytesEscape,pythonBytesEscapeError,@Spell
syn region pythonBytes start=+[bB]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesContent,pythonBytesError,pythonBytesEscape,pythonBytesEscapeError,@Spell
syn region pythonBytes start=+[bB]"""+ end=+"""+ keepend contains=pythonBytesContent,pythonBytesError,pythonBytesEscape,pythonBytesEscapeError,pythonDocTest2,pythonSpaceError,@Spell
syn region pythonBytes start=+[bB]'''+ end=+'''+ keepend contains=pythonBytesContent,pythonBytesError,pythonBytesEscape,pythonBytesEscapeError,pythonDocTest,pythonSpaceError,@Spell
syn match pythonBytesContent "[\u0001-\u007f]\+" display contained
syn match pythonBytesError "[^\u0001-\u007f]\+" display contained
syn match pythonBytesEscape +\\[abfnrtv'"\\]+ display contained
syn match pythonBytesEscape "\\\o\o\=\o\=" display contained
syn match pythonBytesEscapeError "\\\o\{,2}[89]" display contained
syn match pythonBytesEscape "\\x\x\{2}" display contained
syn match pythonBytesEscapeError "\\x\x\=\X" display contained
syn match pythonBytesEscape "\\$"
if exists("python_highlight_string_formatting") && python_highlight_string_formatting != 0
" String formatting
syn match pythonStrFormatting "%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonRawString
syn match pythonStrFormatting "%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonRawString
endif
if exists("python_highlight_string_format") && python_highlight_string_format != 0
" str.format syntax
syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonRawString
syn match pythonStrFormat "{\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_*\)\|\[\%(\d\+\|[^!:\}]\+\)\]\)*\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*\%(\.\d\+\)\=[bcdeEfFgGnoxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonRawString
endif
if exists("python_highlight_string_templates") && python_highlight_string_templates != 0
" String templates
syn match pythonStrTemplate "\$\$" contained containedin=pythonString,pythonRawString
syn match pythonStrTemplate "\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonRawString
syn match pythonStrTemplate "\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonRawString
endif
if exists("python_highlight_doctests") && python_highlight_doctests != 0
" DocTests
syn region pythonDocTest start="^\s*>>>" end=+'''+he=s-1 end="^\s*$" contained
syn region pythonDocTest2 start="^\s*>>>" end=+"""+he=s-1 end="^\s*$" contained
endif
" Numbers (ints, longs, floats, complex)
syn match pythonHexError "\<0[xX]\x*[g-zG-Z]\x*\>" display
syn match pythonHexNumber "\<0[xX]\x\+\>" display
syn match pythonOctNumber "\<0[oO]\o\+\>" display
syn match pythonBinNumber "\<0[bB][01]\+\>" display
syn match pythonNumber "\<\d\>" display
syn match pythonNumber "\<[1-9]\d\+\>" display
syn match pythonNumber "\<\d\+[jJ]\>" display
syn match pythonNumberError "\<0\d\+\>" display
syn match pythonFloat "\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" display
syn match pythonFloat "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display
syn match pythonFloat "\<\d\+\.\d*\%([eE][+-]\=\d\+\)\=[jJ]\=" display
syn match pythonOctError "\<0[oO]\=\o*[8-9]\d*\>" display
syn match pythonBinError "\<0[bB][01]*[2-9]\d*\>" display
if exists("python_highlight_builtins") && python_highlight_builtins != 0
" Builtin functions, types and objects
syn keyword pythonBuiltinObj Ellipsis NotImplemented
syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__
syn keyword pythonBuiltinFunc __import__ abs all any ascii
syn keyword pythonBuiltinFunc bin bool bytearray bytes
syn keyword pythonBuiltinFunc chr classmethod cmp compile complex
syn keyword pythonBuiltinFunc delattr dict dir divmod enumerate eval
syn keyword pythonBuiltinFunc exec filter float format frozenset getattr
syn keyword pythonBuiltinFunc globals hasattr hash hex id
syn keyword pythonBuiltinFunc input int isinstance
syn keyword pythonBuiltinFunc issubclass iter len list locals map max
syn keyword pythonBuiltinFunc memoryview min next object oct open ord
syn keyword pythonBuiltinFunc pow print property range
syn keyword pythonBuiltinFunc repr reversed round set setattr
syn keyword pythonBuiltinFunc slice sorted staticmethod str sum super tuple
syn keyword pythonBuiltinFunc type vars zip
endif
if exists("python_highlight_exceptions") && python_highlight_exceptions != 0
" Builtin exceptions and warnings
syn keyword pythonExClass BaseException
syn keyword pythonExClass Exception ArithmeticError
syn keyword pythonExClass LookupError EnvironmentError
syn keyword pythonExClass AssertionError AttributeError BufferError EOFError
syn keyword pythonExClass FloatingPointError GeneratorExit IOError
syn keyword pythonExClass ImportError IndexError KeyError
syn keyword pythonExClass KeyboardInterrupt MemoryError NameError
syn keyword pythonExClass NotImplementedError OSError OverflowError
syn keyword pythonExClass ReferenceError RuntimeError StopIteration
syn keyword pythonExClass SyntaxError IndentationError TabError
syn keyword pythonExClass SystemError SystemExit TypeError
syn keyword pythonExClass UnboundLocalError UnicodeError
syn keyword pythonExClass UnicodeEncodeError UnicodeDecodeError
syn keyword pythonExClass UnicodeTranslateError ValueError VMSError
syn keyword pythonExClass WindowsError ZeroDivisionError
syn keyword pythonExClass Warning UserWarning BytesWarning DeprecationWarning
syn keyword pythonExClass PendingDepricationWarning SyntaxWarning
syn keyword pythonExClass RuntimeWarning FutureWarning
syn keyword pythonExClass ImportWarning UnicodeWarning
endif
if exists("python_slow_sync") && python_slow_sync != 0
syn sync minlines=2000
else
" This is fast but code inside triple quoted strings screws it up. It
" is impossible to fix because the only way to know if you are inside a
" triple quoted string is to start from the beginning of the file.
syn sync match pythonSync grouphere NONE "):$"
syn sync maxlines=200
endif
if version >= 508 || !exists("did_python_syn_inits")
if version <= 508
let did_python_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink pythonStatement Statement
HiLink pythonImport Statement
HiLink pythonFunction Function
HiLink pythonConditional Conditional
HiLink pythonRepeat Repeat
HiLink pythonException Exception
HiLink pythonOperator Operator
HiLink pythonDecorator Define
HiLink pythonComment Comment
HiLink pythonCoding Special
HiLink pythonRun Special
HiLink pythonTodo Todo
HiLink pythonError Error
HiLink pythonIndentError Error
HiLink pythonSpaceError Error
HiLink pythonString String
HiLink pythonRawString String
HiLink pythonEscape Special
HiLink pythonEscapeError Error
HiLink pythonBytes String
HiLink pythonBytesContent String
HiLink pythonBytesError Error
HiLink pythonBytesEscape Special
HiLink pythonBytesEscapeError Error
HiLink pythonStrFormatting Special
HiLink pythonStrFormat Special
HiLink pythonStrTemplate Special
HiLink pythonDocTest Special
HiLink pythonDocTest2 Special
HiLink pythonNumber Number
HiLink pythonHexNumber Number
HiLink pythonOctNumber Number
HiLink pythonBinNumber Number
HiLink pythonFloat Float
HiLink pythonNumberError Error
HiLink pythonOctError Error
HiLink pythonHexError Error
HiLink pythonBinError Error
HiLink pythonBuiltinObj Structure
HiLink pythonBuiltinFunc Function
HiLink pythonExClass Structure
delcommand HiLink
endif
let b:current_syntax = "python"

216
vimrc Normal file
View File

@@ -0,0 +1,216 @@
" .vimrc
" Use Vim not vi settings
set nocompatible
" gui appearence
if has("gui_running")
colorscheme slate
set guifont=Terminus\ 8
endif
" term appearence
set background=dark
" always show ruler
set ruler
" search related settings
" show parial pattern matches in real time
set incsearch
" I like highlighted search pattern
set hlsearch
" search for upper and lowercase
set ignorecase
" but if user type uppercase - search exaclty
set smartcase
" no backup, we got scm :)
set nobackup
"use a scrollable menu for filename completions
set wildmenu
"ignore class and object files
set wildignore=*.class,*.o,*.bak,*.swp,*.pyc
"of course
syntax on
" I work with buffers, when I open a buffer that is recently open in a window,
" don't open this buffer twice: switch to the already open one! Nice for :make, :cn, ... ;-)
set switchbuf=useopen
" title
set titlestring=%<%F\ %M%=%l/%L\ -\ %p%% titlelen=70
" display linenumber
set number
if version >= 700
" spelling files:
" http://ftp.vim.org/pub/vim/runtime/spell/
" move de.latin1.spl and de.latin1.sug to RUNTIME/spell
set spelllang=de
set sps=best,10
set omnifunc=ccomplete#Complete
map <S-h> gT
map <S-l> gt
else
" spell check for the folloging files
let spell_auto_type = "tex,mail,text,human"
let spell_markup_ft = ",tex,mail,text,human"
let spell_guess_language_ft = ""
endif
"maximum mumber of undos
set undolevels=1000
" indent stuff, tab stuff
set autoindent
set smartindent
set tabstop=4
set softtabstop=4
set shiftwidth=4
" no swp file cluttering in workdir
set directory=~/.vimswp
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" TEXT FORMATING
if has("autocmd")
filetype on
augroup filetype
filetype plugin indent on
autocmd BufNewFile,BufRead *.txt set filetype=human
augroup END
"vim jumps always to the last edited line, if possible
"autocmd BufRead *,.* :normal '"
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
"in human-language files, automatically format everything at 78 chars:
autocmd FileType mail,human
\ set spelllang=de formatoptions+=t textwidth=78 nocindent dictionary=/usr/share/dict/words
"LaTeX to the fullest! ...dislike overlong lines:
autocmd FileType tex set formatoptions+=t textwidth=80 nocindent
autocmd FileType tex set makeprg=pdflatex\ %
"for C-like programming, have automatic indentation:
autocmd FileType slang set cindent tabstop=4 shiftwidth=4 tw=78
"for actual C programming where comments have explicit end
"characters, if starting a new line in the middle of a comment automatically
"insert the comment leader characters:
"for a more _weighty_ comments use: comments=sl:/*,mb:**,elx:*/
autocmd FileType c,cpp set formatoptions+=ro dictionary=$HOME/.vim/c_dictionary
\ tw=78 tabstop=4 shiftwidth=4 noexpandtab cindent
" indent xml code
augroup xml
map ,mf !xmllint --format --recover - 2>/dev/null<CR>
" au!
" autocmd BufWrite *xml exe ":silent 1,$!xmllint --format --recover - 2>/dev/null"
augroup END
"for both CSS and HTML, use genuine tab characters for indentation, to make
"files a few bytes smaller:
autocmd FileType html,css set noexpandtab tabstop=2
"in makefiles, don't expand tabs to spaces, since actual tab characters are
"needed, and have indentation at 8 chars to be sure that all indents are tabs
"(despite the mappings later):
autocmd FileType make set noexpandtab shiftwidth=8
autocmd FileType automake set noexpandtab shiftwidth=8
endif " has("autocmd")
"I need more information
set statusline=%<%F%=\ [%1*%M%*%n%R%H%Y]\ \ %-25(%3l,%c%03V\ \ %P\ (%L)%)%12o'%03b''%03B'
"always show statusline
set laststatus=2
"modus (insert,visual ...)
highlight modeMsg cterm=bold ctermfg=white ctermbg=blue
"active statusLine
highlight statusLine cterm=bold ctermfg=yellow ctermbg=red
"inactive statusLine
highlight statusLineNC cterm=bold ctermfg=black ctermbg=white
"visual mode
highlight visual cterm=bold ctermfg=yellow ctermbg=red
"cursor colors
highlight cursor cterm=bold
"vertical line on split screen
highlight VertSplit cterm=bold ctermfg=yellow ctermbg=yellow
" highlight spell errors
highlight SpellErrors ctermfg=Red cterm=underline term=reverse
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" MAPPINGS
"" Function Keys Sector
"write a changelog entry upon pressing F1
"nnoremap <silent> <F1> :r !date<CR>Thomas Ruoff <ThomasRuoff@gmail.com><CR><CR>
"F2 -> F4 == misc
"search the current word under cursor in all files in working directory
nnoremap <silent> <F2> vawy:! grep -n -H <C-R>" .* *<CR>
nnoremap <silent> <F3> :NERDTreeToggle<CR>
"compile, translate, ...
map <F5> :make<CR>
" F9 F11 Shift-F11 and F12 are used in python mode
set pastetoggle=<F10>
"F11 -> F12 == resize window
"map <F11> <ESC>:resize -5 <CR>
"map <F12> <ESC>:resize +5 <CR>
python << EOF
import os
import sys
import vim
for p in sys.path:
if os.path.isdir(p):
vim.command(r"set path+=%s" % (p.replace(" ", r"\ ")))
EOF
"use ctags
set tags+=$HOME/.vim/tags/python.ctags
"remap tag jumping
map <silent><C-Left> <C-T>
map <silent><C-Right> <C-]>
"Code Completion for python
autocmd FileType python set omnifunc=pythoncomplete#Complete
"remap code complete to ctrl space
inoremap <Nul> <C-x><C-o>
"tab nav with alt left or right
map <silent><A-Right> :tabnext<CR>
map <silent><A-Left> :tabprevious<CR>
filetype plugin indent on
python << EOL
import vim
def EvaluateCurrentRange():
eval(compile('\n'.join(vim.current.range),'','exec'),globals())
EOL
map <C-h> :py EvaluateCurrentRange()
" vim:set ts=2 tw=80:

290
zsh/func/prompt_wunjo_setup Normal file
View File

@@ -0,0 +1,290 @@
# wunjo prompt theme
autoload -U zgitinit
zgitinit
prompt_wunjo_help () {
cat <<'EOF'
prompt wunjo
EOF
}
coloratom() {
local off=$1 atom=$2
if [[ $atom[1] == [[:upper:]] ]]; then
off=$(( $off + 60 ))
fi
echo $(( $off + $colorcode[${(L)atom}] ))
}
colorword() {
local fg=$1 bg=$2 att=$3
local -a s
if [ -n "$fg" ]; then
s+=$(coloratom 30 $fg)
fi
if [ -n "$bg" ]; then
s+=$(coloratom 40 $bg)
fi
if [ -n "$att" ]; then
s+=$attcode[$att]
fi
echo "%{"$'\e['${(j:;:)s}m"%}"
}
prompt_wunjo_setup() {
local verbose
if [[ $TERM == screen* ]] && [ -n "$STY" ]; then
verbose=
else
verbose=1
fi
typeset -A colorcode
colorcode[black]=0
colorcode[red]=1
colorcode[green]=2
colorcode[yellow]=3
colorcode[blue]=4
colorcode[magenta]=5
colorcode[cyan]=6
colorcode[white]=7
colorcode[default]=9
colorcode[k]=$colorcode[black]
colorcode[r]=$colorcode[red]
colorcode[g]=$colorcode[green]
colorcode[y]=$colorcode[yellow]
colorcode[b]=$colorcode[blue]
colorcode[m]=$colorcode[magenta]
colorcode[c]=$colorcode[cyan]
colorcode[w]=$colorcode[white]
colorcode[.]=$colorcode[default]
typeset -A attcode
attcode[none]=00
attcode[bold]=01
attcode[faint]=02
attcode[standout]=03
attcode[underline]=04
attcode[blink]=05
attcode[reverse]=07
attcode[conceal]=08
attcode[normal]=22
attcode[no-standout]=23
attcode[no-underline]=24
attcode[no-blink]=25
attcode[no-reverse]=27
attcode[no-conceal]=28
local -A pc
pc[default]='default'
pc[date]='cyan'
pc[time]='Blue'
pc[host]='Green'
pc[user]='cyan'
pc[punc]='yellow'
pc[line]='magenta'
pc[hist]='green'
pc[path]='Cyan'
pc[shortpath]='default'
pc[rc]='red'
pc[scm_branch]='Cyan'
pc[scm_commitid]='Yellow'
pc[scm_status_dirty]='Red'
pc[scm_status_staged]='Green'
pc[#]='Yellow'
for cn in ${(k)pc}; do
pc[${cn}]=$(colorword $pc[$cn])
done
pc[reset]=$(colorword . . 00)
typeset -Ag wunjo_prompt_colors
wunjo_prompt_colors=(${(kv)pc})
local p_date p_line p_rc
p_date="$pc[date]%D{%Y-%m-%d} $pc[time]%D{%T}$pc[reset]"
p_line="$pc[line]%y$pc[reset]"
PROMPT=
if [ $verbose ]; then
PROMPT+="$pc[host]%m$pc[reset] "
fi
PROMPT+="$pc[path]%(2~.%~.%/)$pc[reset]"
PROMPT+="\$(prompt_wunjo_scm_status)"
PROMPT+="%(?.. $pc[rc]exited %1v$pc[reset])"
PROMPT+="
"
PROMPT+="$pc[hist]%h$pc[reset] "
PROMPT+="$pc[shortpath]%1~$pc[reset]"
PROMPT+="\$(prompt_wunjo_scm_branch)"
PROMPT+=" $pc[#]%#$pc[reset] "
RPROMPT=
if [ $verbose ]; then
RPROMPT+="$p_date "
fi
RPROMPT+="$pc[user]%n$pc[reset]"
RPROMPT+=" $p_line"
export PROMPT RPROMPT
precmd_functions+='prompt_wunjo_precmd'
}
prompt_wunjo_precmd() {
local ex=$?
psvar=()
if [[ $ex -ge 128 ]]; then
sig=$signals[$ex-127]
psvar[1]="sig${(L)sig}"
else
psvar[1]="$ex"
fi
}
prompt_wunjo_scm_status() {
zgit_isgit || return
local -A pc
pc=(${(kv)wunjo_prompt_colors})
head=$(zgit_head)
gitcommit=$(git describe --always $head 2>/dev/null)
local -a commits
if zgit_rebaseinfo; then
orig_commit=$(git describe --always $zgit_info[rb_head])
orig_name=$(git name-rev --name-only $zgit_info[rb_head])
orig="$pc[scm_branch]$orig_name$pc[punc]($pc[scm_commitid]$orig_commit$pc[punc])"
onto_commit=$(git describe --always $zgit_info[rb_onto])
onto_name=$(git name-rev --name-only $zgit_info[rb_onto])
onto="$pc[scm_branch]$onto_name$pc[punc]($pc[scm_commitid]$onto_commit$pc[punc])"
if [ -n "$zgit_info[rb_upstream]" ] && [ $zgit_info[rb_upstream] != $zgit_info[rb_onto] ]; then
upstream_commit=$(git describe --always $zgit_info[rb_upstream])
upstream_name=$(git name-rev --name-only $zgit_info[rb_upstream])
upstream="$pc[scm_branch]$upstream_name$pc[punc]($pc[scm_commitid]$upstream_commit$pc[punc])"
commits+="rebasing $upstream$pc[reset]..$orig$pc[reset] onto $onto$pc[reset]"
else
commits+="rebasing $onto$pc[reset]..$orig$pc[reset]"
fi
local -a revs
revs=($(git rev-list $zgit_info[rb_onto]..HEAD))
if [ $#revs -gt 0 ]; then
commits+="\n$#revs commits in"
fi
if [ -f $zgit_info[dotest]/message ]; then
mess=$(head -n1 $zgit_info[dotest]/message)
commits+="on $mess"
fi
elif [ -n "$gitcommit" ]; then
commits+="on $pc[scm_branch]$head$pc[punc]($pc[scm_commitid]$gitcommit$pc[punc])$pc[reset]"
local track_merge=$(zgit_tracking_merge)
if [ -n "$track_merge" ]; then
if git rev-parse --verify -q $track_merge >/dev/null; then
local track_remote=$(zgit_tracking_remote)
local tracked=$(git describe --always $track_merge 2>/dev/null)
local -a revs
revs=($(git rev-list --reverse $track_merge..HEAD))
if [ $#revs -gt 0 ]; then
local base=$(git describe --always $revs[1]~1)
local base_name=$(git name-rev --name-only $base)
local base_short=$(git describe --always $base)
local word_commits
if [ $#revs -gt 1 ]; then
word_commits='commits'
else
word_commits='commit'
fi
local conj="since"
if [[ "$base" == "$tracked" ]]; then
conj+=" tracked"
tracked=
fi
commits+="$#revs $word_commits $conj $pc[scm_branch]$base_name$pc[punc]($pc[scm_commitid]$base_short$pc[punc])$pc[reset]"
fi
if [ -n "$tracked" ]; then
local track_name=$track_merge
if [[ $track_remote == "." ]]; then
track_name=${track_name##*/}
fi
tracked=$(git describe --always $tracked)
commits+="tracking $pc[scm_branch]$track_name$pc[punc]"
if [[ "$tracked" != "$gitcommit" ]]; then
commits[$#commits]+="($pc[scm_commitid]$tracked$pc[punc])"
fi
commits[$#commits]+="$pc[reset]"
fi
fi
fi
fi
gitsvn=$(git rev-parse --verify -q --short git-svn)
if [ $? -eq 0 ]; then
gitsvnrev=$(zgit_svnhead $gitsvn)
gitsvn=$(git describe --always $gitsvn)
if [ -n "$gitsvnrev" ]; then
local svninfo=''
local -a revs
svninfo+="$pc[default]svn$pc[punc]:$pc[scm_branch]r$gitsvnrev"
revs=($(git rev-list git-svn..HEAD))
if [ $#revs -gt 0 ]; then
svninfo+="$pc[punc]@$pc[default]HEAD~$#revs"
svninfo+="$pc[punc]($pc[scm_commitid]$gitsvn$pc[punc])"
fi
commits+=$svninfo
fi
fi
if [ $#commits -gt 0 ]; then
echo -n " ${(j: :)commits}"
fi
}
prompt_wunjo_scm_branch() {
zgit_isgit || return
local -A pc
pc=(${(kv)wunjo_prompt_colors})
echo -n "$pc[punc]:$pc[scm_branch]$(zgit_head)"
if zgit_inworktree; then
if ! zgit_isindexclean; then
echo -n "$pc[scm_status_staged]+"
fi
local -a dirty
if ! zgit_isworktreeclean; then
dirty+='!'
fi
if zgit_hasunmerged; then
dirty+='*'
fi
if zgit_hasuntracked; then
dirty+='?'
fi
if [ $#dirty -gt 0 ]; then
echo -n "$pc[scm_status_dirty]${(j::)dirty}"
fi
fi
echo $pc[reset]
}
prompt_wunjo_setup "$@"
# vim:set ft=zsh:

248
zsh/func/zgitinit Normal file
View File

@@ -0,0 +1,248 @@
##
## Load with `autoload -U zgitinit; zgitinit'
##
typeset -gA zgit_info
zgit_info=()
zgit_chpwd_hook() {
zgit_info_update
}
zgit_preexec_hook() {
if [[ $2 == git\ * ]] || [[ $2 == *\ git\ * ]]; then
zgit_precmd_do_update=1
fi
}
zgit_precmd_hook() {
if [ $zgit_precmd_do_update ]; then
unset zgit_precmd_do_update
zgit_info_update
fi
}
zgit_info_update() {
zgit_info=()
local gitdir=$(git rev-parse --git-dir 2>/dev/null)
if [ $? -ne 0 ] || [ -z "$gitdir" ]; then
return
fi
zgit_info[dir]=$gitdir
zgit_info[bare]=$(git rev-parse --is-bare-repository)
zgit_info[inwork]=$(git rev-parse --is-inside-work-tree)
}
zgit_isgit() {
if [ -z "$zgit_info[dir]" ]; then
return 1
else
return 0
fi
}
zgit_inworktree() {
zgit_isgit || return
if [ "$zgit_info[inwork]" = "true" ]; then
return 0
else
return 1
fi
}
zgit_isbare() {
zgit_isgit || return
if [ "$zgit_info[bare]" = "true" ]; then
return 0
else
return 1
fi
}
zgit_head() {
zgit_isgit || return 1
if [ -z "$zgit_info[head]" ]; then
local name=''
name=$(git symbolic-ref -q HEAD)
if [ $? -eq 0 ]; then
if [[ $name == refs/(heads|tags)/* ]]; then
name=${name#refs/(heads|tags)/}
fi
else
name=$(git name-rev --name-only --no-undefined --always HEAD)
if [ $? -ne 0 ]; then
return 1
elif [[ $name == remotes/* ]]; then
name=${name#remotes/}
fi
fi
zgit_info[head]=$name
fi
echo $zgit_info[head]
}
zgit_branch() {
zgit_isgit || return 1
zgit_isbare && return 1
if [ -z "$zgit_info[branch]" ]; then
local branch=$(git symbolic-ref HEAD 2>/dev/null)
if [ $? -eq 0 ]; then
branch=${branch##*/}
else
branch=$(git name-rev --name-only --always HEAD)
fi
zgit_info[branch]=$branch
fi
echo $zgit_info[branch]
return 0
}
zgit_tracking_remote() {
zgit_isgit || return 1
zgit_isbare && return 1
local branch
if [ -n "$1" ]; then
branch=$1
elif [ -z "$zgit_info[branch]" ]; then
branch=$(zgit_branch)
[ $? -ne 0 ] && return 1
else
branch=$zgit_info[branch]
fi
local k="tracking_$branch"
local remote
if [ -z "$zgit_info[$k]" ]; then
remote=$(git config branch.$branch.remote)
zgit_info[$k]=$remote
fi
echo $zgit_info[$k]
return 0
}
zgit_tracking_merge() {
zgit_isgit || return 1
zgit_isbare && return 1
local branch
if [ -z "$zgit_info[branch]" ]; then
branch=$(zgit_branch)
[ $? -ne 0 ] && return 1
else
branch=$zgit_info[branch]
fi
local remote=$(zgit_tracking_remote $branch)
[ $? -ne 0 ] && return 1
if [ -n "$remote" ]; then # tracking branch
local merge=$(git config branch.$branch.merge)
if [ $remote != "." ]; then
merge=$remote/$(basename $merge)
fi
echo $merge
return 0
else
return 1
fi
}
zgit_isindexclean() {
zgit_isgit || return 1
if git diff --quiet --cached 2>/dev/null; then
return 0
else
return 1
fi
}
zgit_isworktreeclean() {
zgit_isgit || return 1
if git diff --quiet 2>/dev/null; then
return 0
else
return 1
fi
}
zgit_hasuntracked() {
zgit_isgit || return 1
local -a flist
flist=($(git ls-files --others --exclude-standard))
if [ $#flist -gt 0 ]; then
return 0
else
return 1
fi
}
zgit_hasunmerged() {
zgit_isgit || return 1
local -a flist
flist=($(git ls-files -u))
if [ $#flist -gt 0 ]; then
return 0
else
return 1
fi
}
zgit_svnhead() {
zgit_isgit || return 1
local commit=$1
if [ -z "$commit" ]; then
commit='HEAD'
fi
git show --raw $commit | \
grep git-svn-id | \
sed -re 's/^\s*git-svn-id: .*@([0-9]+).*$/\1/'
}
zgit_rebaseinfo() {
zgit_isgit || return 1
if [ -d $zgit_info[dir]/rebase-merge ]; then
dotest=$zgit_info[dir]/rebase-merge
elif [ -d $zgit_info[dir]/.dotest-merge ]; then
dotest=$zgit_info[dir]/.dotest-merge
elif [ -d .dotest ]; then
dotest=.dotest
else
return 1
fi
zgit_info[dotest]=$dotest
zgit_info[rb_onto]=$(cat "$dotest/onto")
zgit_info[rb_upstream]=$(cat "$dotest/upstream")
if [ -f "$dotest/orig-head" ]; then
zgit_info[rb_head]=$(cat "$dotest/orig-head")
elif [ -f "$dotest/head" ]; then
zgit_info[rb_head]=$(cat "$dotest/head")
fi
zgit_info[rb_head_name]=$(cat "$dotest/head-name")
return 0
}
zgitinit() {
typeset -ga chpwd_functions
typeset -ga preexec_functions
typeset -ga precmd_functions
chpwd_functions+='zgit_chpwd_hook'
preexec_functions+='zgit_preexec_hook'
precmd_functions+='zgit_precmd_hook'
}
zgitinit
zgit_info_update
# vim:set ft=zsh:

25
zshenv Normal file
View File

@@ -0,0 +1,25 @@
# ignore globals because of bug
# http://ubuntuforums.org/showthread.php?t=240782
setopt noglobalrcs
# copied from globals
if [[ -z "$PATH" || "$PATH" == "/bin:/usr/bin" ]]
then
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi
# own environment adjustments
export PATH=$PATH:$HOME/bin
export EDITOR="/usr/bin/vim"
export PAGER="/usr/bin/less"
# add texlive path, so no confilicts with install-info
PATH=/usr/local/texlive/2008/bin/i386-linux:$PATH; export PATH
MANPATH=/usr/local/texlive/2008/texmf/doc/man:$MANPATH; export MANPATH
INFOPATH=/usr/local/texlive/2008/texmf/doc/info:$INFOPATH; export INFOPATH
fpath=($fpath $HOME/.zsh/func)
typeset -U fpath

232
zshrc Normal file
View File

@@ -0,0 +1,232 @@
# copied from globals, that will be ignored
if [[ "$TERM" != emacs ]]; then
[[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M emacs "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[kdch1]" ]] || bindkey -M vicmd "$terminfo[kdch1]" vi-delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M vicmd "$terminfo[khome]" vi-beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M vicmd "$terminfo[kend]" vi-end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M vicmd "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[cuu1]" ]] || bindkey -M viins "$terminfo[cuu1]" vi-up-line-or-history
[[ -z "$terminfo[cuf1]" ]] || bindkey -M viins "$terminfo[cuf1]" vi-forward-char
[[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" vi-up-line-or-history
[[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" vi-down-line-or-history
[[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char
[[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char
# ncurses fogyatekos
#[[ "$terminfo[kcuu1]" == "O"* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history
[[ "$terminfo[kcud1]" == "O"* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history
[[ "$terminfo[kcuf1]" == "O"* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char
[[ "$terminfo[kcub1]" == "O"* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char
[[ "$terminfo[khome]" == "O"* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == "O"* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line
[[ "$terminfo[khome]" == "O"* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == "O"* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
fi
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
/usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin
autoload run-help
# If you don't want compinit called here, place the line
# skip_global_compinit=1
# in your $ZDOTDIR/.zshenv or $ZDOTDIR/.zprofice
if [[ -z "$skip_global_compinit" ]]; then
autoload -U compinit
compinit
fi
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
/usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin
unalias run-help
autoload run-help
# If you don't want compinit called here, place the line
# skip_global_compinit=1
# in your $ZDOTDIR/.zshenv or $ZDOTDIR/.zprofice
if [[ -z "$skip_global_compinit" ]]; then
autoload -U compinit
compinit
fi
##################################################################
# my own confs
### check for DIST
if [ -f /etc/redhat-release ]; then
DIST="redhat"
elif [ -f /etc/debian_version ]; then
DIST="debian"
elif [ -f /etc/gentoo-release ] || [ -f /usr/bin/emerge ]; then
DIST="gentoo"
elif [ -f /etc/arch-release ]; then
DIST="arch"
fi
### check for DOMAINNAME
DOMAINNAME=$(dnsdomainname 2>/dev/null || hostname -d)
case "${DOMAINNAME}" in
stratoserver.net*)
;;
*)
;;
esac
### check for HOSTNAME
HOSTNAME=$(hostname 2>/dev/null || hostname -f)
case "${HOSTNAME}" in
h1450889.stratoserver.net*)
;;
igrats.de*)
;;
*)
;;
esac
# vim keyset
bindkey -v
## get keys working
# found at http://maxime.ritter.eu.org/stuff/zshrc
case $TERM in
linux)
bindkey "^[[2~" yank
bindkey "^[[3~" delete-char
bindkey "^[[5~" up-line-or-history ## PageUp
bindkey "^[[6~" down-line-or-history ## PageDown
bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line
bindkey "^[e" expand-cmd-path ## C-e for expanding path of typed command
bindkey "^[[A" up-line-or-search ## up arrow for back-history-search
bindkey "^[[B" down-line-or-search ## down arrow for fwd-history-search
bindkey " " magic-space ## do history expansion on space
;;
*xterm*|rxvt|(dt|k|E)term)
bindkey "^[[2~" yank
bindkey "^[[3~" delete-char
bindkey "^[[5~" up-line-or-history ## PageUp
bindkey "^[[6~" down-line-or-history ## PageDown
bindkey "^[[7~" beginning-of-line
bindkey "^[[8~" end-of-line
bindkey "^[e" expand-cmd-path ## C-e for expanding path of typed command
bindkey "^[[A" up-line-or-search ## up arrow for back-history-search
bindkey "^[[B" down-line-or-search ## down arrow for fwd-history-search
bindkey " " magic-space ## do history expansion on space
;;
esac
# no freakin' beeeep
unsetopt beep
# History
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt EXTENDED_HISTORY
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_NO_FUNCTIONS
setopt HIST_REDUCE_BLANKS
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY
setopt HIST_VERIFY
# Alias
alias ls="ls --color=auto -T 0"
# Completion
zmodload -i zsh/complist
# display colored directory entries
# display current dircolors with dircolors -p
if [ -f ${HOME}/.dir_colors ]
then
eval $(dircolors -b ${HOME}/.dir_colors)
elif [ -f /etc/DIR_COLORS ]
then
eval $(dircolors -b /etc/DIR_COLORS)
fi
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
zstyle ':completion:*:*:kill:*' list-colors '=%*=01;31'
# Load the completion system
autoload -U compinit
compinit
zstyle ':completion:*:*:kill:*:jobs' verbose yes
autoload -U sched
# From the zshwiki. Hide CVS files/directores from being completed.
zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
# insert all expansions for expand completer
zstyle ':completion:*:expand:*' tag-order all-expansions
# formatting and messages
zstyle ':completion:*' verbose yes
zstyle ':completion:*:descriptions' format '%B%d%b'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format 'No matches for: %d'
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
zstyle ':completion:*' group-name ''
# turns off spelling correction for commands
setopt nocorrect
# ORRECTALL option turns on spelling correction for all arguments
setopt nocorrectall
setopt interactivecomments
setopt extendedglob
setopt EXTENDEDGLOB # file globbing is awesome
setopt AUTOMENU # Tab-completion should cycle.
setopt AUTOLIST # ... and list the possibilities.
setopt AUTO_PARAM_SLASH # Make directories pretty.
setopt ALWAYS_TO_END # Push that cursor on completions.
setopt AUTOCD # jump to the directory.
setopt NO_BEEP # self explanatory
setopt AUTO_NAME_DIRS # change directories to variable names
setopt CHASE_LINKS # if you pwd from a symlink, you get the actual path
setopt AUTO_CONTINUE # automatically sent a CONT signal by disown
setopt LONG_LIST_JOBS # List jobs in the long format by default
# prompt
if test -z $SSH_TTY
then
PROMPT=$'%{\e[01;32m%}\%j,%{\e[01;36m%}%m.%l,%{\e[01;34m%}%?,%{\e[01;33m%}\%1~ %{\e[01;32m%}$%{\e[0m%} '
[ $UID = 0 ] && export PROMPT=$'%{\e[0;31m%}[%{\e[0m%}%n%{\e[0;31m%}@%{\e[0m%}%m%{\e[0;31m%}:%{\e[0m%}%~%{\e[0;31m%}]%{\e[0m%}%# '
else
PROMPT=$'%{\e[01;32m%}\%j,%{\e[01;36m%}%m,%{\e[01;34m%}%?,%{\e[01;33m%}\%1~ %{\e[01;32m%}$%{\e[0m%} '
[ $UID = 0 ] && export PROMPT=$'%{\e[0;31m%}[%{\e[0m%}%n%{\e[0;31m%}@%{\e[0m%}%m%{\e[0;31m%}:%{\e[0m%}%~%{\e[0;31m%}]%{\e[0m%}%# '
fi
# zgitinit and prompt_wunjo_setup must be somewhere in your $fpath, see README for more.
setopt promptsubst
# Load the prompt theme system
autoload -U promptinit
promptinit
# Use the wunjo prompt theme
prompt wunjo