Daniel Sissom
6 years ago
24 changed files with 3272 additions and 0 deletions
Unified View
Diff Options
-
+ 11 - 0vim/.netrwhist
-
+ 3 - 0vim/after/syntax/blah.vim
-
+ 561 - 0vim/autoload/taskpaper.vim
-
+ 811 - 0vim/colors/xterm16.vim
-
+ 10 - 0vim/doc/example.taskpaper
-
+ 9 - 0vim/doc/tags
-
+ 310 - 0vim/doc/taskpaper.txt
-
+ 8 - 0vim/doc/taskpaper_hacking.txt
-
+ 339 - 0vim/doc/taskpaper_licence.txt
-
+ 5 - 0vim/ftdetect/pug.vim
-
+ 9 - 0vim/ftdetect/taskpaper.vim
-
+ 2 - 0vim/ftdetect/tex.vim
-
+ 57 - 0vim/ftplugin/jade.vim
-
+ 57 - 0vim/ftplugin/pug.vim
-
+ 117 - 0vim/ftplugin/taskpaper.vim
-
+ 70 - 0vim/indent/jade.vim
-
+ 70 - 0vim/indent/pug.vim
-
+ 349 - 0vim/rename_this_to_plugin/ctab.vim
-
+ 117 - 0vim/spell/en.utf-8.add
-
BINvim/spell/en.utf-8.add.spl
-
+ 104 - 0vim/syntax/jade.vim
-
+ 110 - 0vim/syntax/pug.vim
-
+ 48 - 0vim/syntax/taskpaper.vim
-
+ 95 - 0vimrc
@ -0,0 +1,11 @@ |
|||||
|
let g:netrw_dirhistmax =10 |
||||
|
let g:netrw_dirhist_cnt =9 |
||||
|
let g:netrw_dirhist_1='/home/djsissom/Projects/Web/openquestion.io/src/blog' |
||||
|
let g:netrw_dirhist_2='/home/djsissom/Projects/Web/openquestion.io/.git' |
||||
|
let g:netrw_dirhist_3='/home/djsissom/Projects/Web/openquestion.io/.gitignores' |
||||
|
let g:netrw_dirhist_4='/home/djsissom/Projects/Web/openquestion.io/src/blog' |
||||
|
let g:netrw_dirhist_5='/home/djsissom/Projects/GitHub/Paper/style' |
||||
|
let g:netrw_dirhist_6='/home/djsissom/Projects/GitHub/MLPredict/analysis' |
||||
|
let g:netrw_dirhist_7='/home/djsissom/Projects/Programs/Analysis/Mesh' |
||||
|
let g:netrw_dirhist_8='/home/djsissom/Projects/Programs/Analysis/Astro/ttow' |
||||
|
let g:netrw_dirhist_9='/home/djsissom/.vim' |
@ -0,0 +1,3 @@ |
|||||
|
syntax spell toplevel |
||||
|
syn sync maxlines=2000 |
||||
|
syn sync minlines=500 |
@ -0,0 +1,561 @@ |
|||||
|
" plugin to handle the TaskPaper to-do list format |
||||
|
" Language: Taskpaper (http://hogbaysoftware.com/projects/taskpaper) |
||||
|
" Maintainer: David O'Callaghan <david.ocallaghan@cs.tcd.ie> |
||||
|
" URL: https://github.com/davidoc/taskpaper.vim |
||||
|
" Last Change: 2012-03-07 |
||||
|
|
||||
|
let s:save_cpo = &cpo |
||||
|
set cpo&vim |
||||
|
|
||||
|
function! s:add_delete_tag(tag, value, add) |
||||
|
let cur_line = getline(".") |
||||
|
|
||||
|
let tag = " @" . a:tag |
||||
|
if a:value != '' |
||||
|
let tag .= "(" . a:value . ")" |
||||
|
endif |
||||
|
|
||||
|
" Add tag |
||||
|
if a:add |
||||
|
let new_line = cur_line . tag |
||||
|
call setline(".", new_line) |
||||
|
return 1 |
||||
|
endif |
||||
|
|
||||
|
" Delete tag |
||||
|
if cur_line =~# '\V' . tag |
||||
|
if a:value != '' |
||||
|
let new_line = substitute(cur_line, '\V' . tag, "", "g") |
||||
|
else |
||||
|
let new_line = substitute(cur_line, '\V' . tag . '\v(\([^)]*\))?', |
||||
|
\ "", "g") |
||||
|
endif |
||||
|
|
||||
|
call setline(".", new_line) |
||||
|
return 1 |
||||
|
endif |
||||
|
return 0 |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#add_tag(tag, ...) |
||||
|
let value = a:0 > 0 ? a:1 : input('Value: ') |
||||
|
return s:add_delete_tag(a:tag, value, 1) |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#delete_tag(tag, ...) |
||||
|
let value = a:0 > 0 ? a:1 : '' |
||||
|
return s:add_delete_tag(a:tag, value, 0) |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#swap_tag(oldtag, newtag) |
||||
|
call taskpaper#delete_tag(a:oldtag) |
||||
|
call taskpaper#add_tag(a:newtag, '') |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#swap_tags(oldtags, newtags) |
||||
|
for oldtag in a:oldtags |
||||
|
call taskpaper#delete_tag(oldtag) |
||||
|
endfor |
||||
|
for newtag in a:newtags |
||||
|
call taskpaper#add_tag(newtag, '') |
||||
|
endfor |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#toggle_tag(tag, ...) |
||||
|
if !taskpaper#delete_tag(a:tag, '') |
||||
|
let args = a:0 > 0 ? [a:tag, a:1] : [a:tag] |
||||
|
call call("taskpaper#add_tag", args) |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#has_tag(tag) |
||||
|
let cur_line = getline(".") |
||||
|
let m = matchstr(cur_line, '@'.a:tag) |
||||
|
if m != '' |
||||
|
return 1 |
||||
|
else |
||||
|
return 0 |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#cycle_tags(...) |
||||
|
let tags_index = 0 |
||||
|
let tag_list = a:000 |
||||
|
let tag_added = 0 |
||||
|
for tag_name in tag_list |
||||
|
let tags_index = tags_index + 1 |
||||
|
if tags_index == len(tag_list) |
||||
|
let tags_index = 0 |
||||
|
endif |
||||
|
let has_tag = taskpaper#has_tag(tag_name) |
||||
|
if has_tag == 1 |
||||
|
let tag_added = 1 |
||||
|
call taskpaper#delete_tag(tag_name) |
||||
|
let new_tag = tag_list[tags_index] |
||||
|
if new_tag != '' |
||||
|
call taskpaper#add_tag(new_tag, '') |
||||
|
endif |
||||
|
break |
||||
|
endif |
||||
|
endfor |
||||
|
if tag_added == 0 |
||||
|
call taskpaper#add_tag(tag_list[0], '') |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#update_tag(tag, ...) |
||||
|
call taskpaper#delete_tag(a:tag, '') |
||||
|
let args = a:0 > 0 ? [a:tag, a:1] : [a:tag] |
||||
|
call call("taskpaper#add_tag", args) |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#date() |
||||
|
return strftime(g:task_paper_date_format, localtime()) |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#complete_project(lead, cmdline, pos) |
||||
|
let lnum = 1 |
||||
|
let list = [] |
||||
|
let stack = [''] |
||||
|
let depth = 0 |
||||
|
|
||||
|
while lnum <= line('$') |
||||
|
let line = getline(lnum) |
||||
|
let ml = matchlist(line, '\v\C^\t*(.+):(\s+\@[^ \t(]+(\([^)]*\))?)*$') |
||||
|
|
||||
|
if !empty(ml) |
||||
|
let d = len(matchstr(line, '^\t*')) |
||||
|
|
||||
|
while d < depth |
||||
|
call remove(stack, -1) |
||||
|
let depth -= 1 |
||||
|
endwhile |
||||
|
|
||||
|
while d > depth |
||||
|
call add(stack, '') |
||||
|
let depth += 1 |
||||
|
endwhile |
||||
|
|
||||
|
let stack[d] = ml[1] |
||||
|
|
||||
|
let candidate = join(stack, ':') |
||||
|
if candidate =~ '^' . a:lead |
||||
|
call add(list, join(stack, ':')) |
||||
|
endif |
||||
|
endif |
||||
|
|
||||
|
let lnum += 1 |
||||
|
endwhile |
||||
|
|
||||
|
return list |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#go_to_project() |
||||
|
let res = input('Project: ', '', 'customlist,taskpaper#complete_project') |
||||
|
|
||||
|
if res != '' |
||||
|
call taskpaper#search_project(split(res, ':')) |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#next_project() |
||||
|
return search('^\t*\zs.\+:\(\s\+@[^\s(]\+\(([^)]*)\)\?\)*$', 'w') |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#previous_project() |
||||
|
return search('^\t*\zs.\+:\(\s\+@[^\s(]\+\(([^)]*)\)\?\)*$', 'bw') |
||||
|
endfunction |
||||
|
|
||||
|
function! s:search_project(project, depth, begin, end) |
||||
|
call cursor(a:begin, 1) |
||||
|
return search('\v^\t{' . a:depth . '}\V' . a:project . ':', 'c', a:end) |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#search_project(projects) |
||||
|
if empty(a:projects) |
||||
|
return 0 |
||||
|
endif |
||||
|
|
||||
|
let save_pos = getpos('.') |
||||
|
|
||||
|
let begin = 1 |
||||
|
let end = line('$') |
||||
|
let depth = 0 |
||||
|
|
||||
|
for project in a:projects |
||||
|
if !s:search_project(project, depth, begin, end) |
||||
|
call setpos('.', save_pos) |
||||
|
return 0 |
||||
|
endif |
||||
|
|
||||
|
let begin = line('.') |
||||
|
let end = taskpaper#search_end_of_item(begin) |
||||
|
let depth += 1 |
||||
|
endfor |
||||
|
|
||||
|
call cursor(begin, 1) |
||||
|
normal! ^ |
||||
|
|
||||
|
return begin |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#search_end_of_item(...) |
||||
|
let lnum = a:0 > 0 ? a:1 : line('.') |
||||
|
let flags = a:0 > 1 ? a:2 : '' |
||||
|
|
||||
|
let depth = len(matchstr(getline(lnum), '^\t*')) |
||||
|
|
||||
|
let end = lnum |
||||
|
let lnum += 1 |
||||
|
while lnum <= line('$') |
||||
|
let line = getline(lnum) |
||||
|
|
||||
|
if line =~ '^\s*$' |
||||
|
" Do nothing |
||||
|
elseif depth < len(matchstr(line, '^\t*')) |
||||
|
let end = lnum |
||||
|
else |
||||
|
break |
||||
|
endif |
||||
|
|
||||
|
let lnum += 1 |
||||
|
endwhile |
||||
|
|
||||
|
if flags !~# 'n' |
||||
|
call cursor(end, 0) |
||||
|
normal! ^ |
||||
|
endif |
||||
|
|
||||
|
return end |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#delete(...) |
||||
|
let start = a:0 > 0 ? a:1 : line('.') |
||||
|
let reg = a:0 > 1 ? a:2 : '"' |
||||
|
let kill_indent = a:0 > 2 ? a:3 : 0 |
||||
|
|
||||
|
let reg_save = '' |
||||
|
if kill_indent && reg =~# '\u' |
||||
|
let reg = tolower(reg) |
||||
|
let reg_save = getreg(reg) |
||||
|
endif |
||||
|
|
||||
|
let save_fen = &l:foldenable |
||||
|
setlocal nofoldenable |
||||
|
|
||||
|
let depth = len(matchstr(getline(start), '^\t*')) |
||||
|
|
||||
|
let end = taskpaper#search_end_of_item(start) |
||||
|
silent execute start . ',' . end . 'delete ' . reg |
||||
|
|
||||
|
let &l:foldenable = save_fen |
||||
|
|
||||
|
if kill_indent |
||||
|
let pat = '\(^\|\n\)\t\{' . depth . '\}' |
||||
|
let content = substitute(getreg(reg), pat, '\1', 'g') |
||||
|
if reg_save != '' |
||||
|
let content = reg_save . content |
||||
|
endif |
||||
|
call setreg(reg, content) |
||||
|
endif |
||||
|
|
||||
|
return end - start + 1 |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#put(...) |
||||
|
let projects = a:0 > 0 ? a:1 : [] |
||||
|
let reg = a:0 > 1 ? a:2 : '"' |
||||
|
let indent = a:0 > 2 ? a:3 : 0 |
||||
|
|
||||
|
let save_fen = &l:foldenable |
||||
|
setlocal nofoldenable |
||||
|
|
||||
|
if !empty(projects) && !taskpaper#search_project(projects) |
||||
|
let &l:foldenable = save_fen |
||||
|
return 0 |
||||
|
endif |
||||
|
|
||||
|
if indent > 0 |
||||
|
let project_depth = len(matchstr(getline('.'), '^\t*')) |
||||
|
let tabs = repeat("\t", project_depth + indent) |
||||
|
else |
||||
|
let tabs = '' |
||||
|
endif |
||||
|
|
||||
|
execute 'put' reg |
||||
|
silent execute "'[,']" . 's/^\ze./' . tabs |
||||
|
|
||||
|
let &l:foldenable = save_fen |
||||
|
|
||||
|
return line("']") - line("'[") + 1 |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#move(projects, ...) |
||||
|
let lnum = a:0 > 0 ? a:1 : line('.') |
||||
|
|
||||
|
let save_fen = &l:foldenable |
||||
|
setlocal nofoldenable |
||||
|
|
||||
|
if !taskpaper#search_project(a:projects) |
||||
|
let &l:foldenable = save_fen |
||||
|
return 0 |
||||
|
endif |
||||
|
|
||||
|
let reg = 'a' |
||||
|
let save_reg = [getreg(reg), getregtype(reg)] |
||||
|
|
||||
|
let nlines = taskpaper#delete(lnum, reg, 1) |
||||
|
call taskpaper#put(a:projects, reg, 1) |
||||
|
|
||||
|
let &l:foldenable = save_fen |
||||
|
call setreg(reg, save_reg[0], save_reg[1]) |
||||
|
if g:task_paper_follow_move == 0 |
||||
|
execute lnum |
||||
|
endif |
||||
|
return nlines |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#move_to_project() |
||||
|
let res = input('Project: ', '', 'customlist,taskpaper#complete_project') |
||||
|
call taskpaper#move(split(res, ':')) |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#update_project() |
||||
|
let indent = matchstr(getline("."), '^\t*') |
||||
|
let depth = len(indent) |
||||
|
|
||||
|
let projects = [] |
||||
|
|
||||
|
for linenr in range(line('.'), 1, -1) |
||||
|
let line = getline(linenr) |
||||
|
let ml = matchlist(line, '\v^\t{0,' . depth . '}([^\t:]+):') |
||||
|
if empty(ml) |
||||
|
continue |
||||
|
endif |
||||
|
|
||||
|
let project = ml[1] |
||||
|
if project != "" |
||||
|
call add(projects, project) |
||||
|
|
||||
|
let indent = matchstr(line, '^\t*') |
||||
|
let depth = len(indent) - 1 |
||||
|
|
||||
|
if depth < 0 |
||||
|
break |
||||
|
endif |
||||
|
endif |
||||
|
endfor |
||||
|
|
||||
|
call taskpaper#update_tag('project', join(reverse(projects), ' / ')) |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#archive_done() |
||||
|
let archive_start = search('^' . g:task_paper_archive_project . ':', 'cw') |
||||
|
if archive_start == 0 |
||||
|
call append('$', g:task_paper_archive_project . ':') |
||||
|
let archive_start = line('$') |
||||
|
let archive_end = 0 |
||||
|
else |
||||
|
let archive_end = search('^\S\+:', 'W') |
||||
|
endif |
||||
|
|
||||
|
let save_fen = &l:foldenable |
||||
|
let save_reg = [getreg('a'), getregtype('a')] |
||||
|
setlocal nofoldenable |
||||
|
call setreg('a', '') |
||||
|
|
||||
|
call cursor(1, 1) |
||||
|
let deleted = 0 |
||||
|
|
||||
|
while 1 |
||||
|
let lnum = search('@done', 'W', archive_start - deleted) |
||||
|
if lnum == 0 |
||||
|
break |
||||
|
endif |
||||
|
|
||||
|
call taskpaper#update_project() |
||||
|
let deleted += taskpaper#delete(lnum, 'A', 1) |
||||
|
endwhile |
||||
|
|
||||
|
if archive_end != 0 |
||||
|
call cursor(archive_end, 1) |
||||
|
|
||||
|
while 1 |
||||
|
let lnum = search('@done', 'W') |
||||
|
if lnum == 0 |
||||
|
break |
||||
|
endif |
||||
|
|
||||
|
call taskpaper#update_project() |
||||
|
let deleted += taskpaper#delete(lnum, 'A', 1) |
||||
|
endwhile |
||||
|
endif |
||||
|
|
||||
|
if deleted != 0 |
||||
|
call taskpaper#put([g:task_paper_archive_project], 'a', 1) |
||||
|
else |
||||
|
echo 'No done items.' |
||||
|
endif |
||||
|
|
||||
|
let &l:foldenable = save_fen |
||||
|
call setreg('a', save_reg[0], save_reg[1]) |
||||
|
|
||||
|
return deleted |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#fold(lnum, pat, ipat) |
||||
|
let line = getline(a:lnum) |
||||
|
let level = foldlevel(a:lnum) |
||||
|
|
||||
|
if line =~? a:pat && (a:ipat == '' || line !~? a:ipat) |
||||
|
return 0 |
||||
|
elseif synIDattr(synID(a:lnum, 1, 1), "name") != 'taskpaperProject' |
||||
|
return 1 |
||||
|
elseif level != -1 |
||||
|
return level |
||||
|
endif |
||||
|
|
||||
|
let depth = len(matchstr(getline(a:lnum), '^\t*')) |
||||
|
|
||||
|
for lnum in range(a:lnum + 1, line('$')) |
||||
|
let line = getline(lnum) |
||||
|
|
||||
|
if depth >= len(matchstr(line, '^\t*')) |
||||
|
break |
||||
|
endif |
||||
|
|
||||
|
if line =~? a:pat && (a:ipat == '' || line !~? a:ipat) |
||||
|
return 0 |
||||
|
endif |
||||
|
endfor |
||||
|
return 1 |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#search(...) |
||||
|
let pat = a:0 > 0 ? a:1 : input('Search: ') |
||||
|
let ipat = a:0 > 1 ? a:2 : '' |
||||
|
if pat == '' |
||||
|
return |
||||
|
endif |
||||
|
|
||||
|
setlocal foldexpr=taskpaper#fold(v:lnum,pat,ipat) |
||||
|
setlocal foldminlines=0 foldtext='' |
||||
|
setlocal foldmethod=expr foldlevel=0 foldenable |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#fold_except_range(lnum, begin, end) |
||||
|
if a:lnum > a:end |
||||
|
return 1 |
||||
|
elseif a:lnum >= a:begin |
||||
|
return 0 |
||||
|
elseif synIDattr(synID(a:lnum, 1, 1), "name") != 'taskpaperProject' |
||||
|
return 1 |
||||
|
elseif level != -1 |
||||
|
return level |
||||
|
endif |
||||
|
|
||||
|
if a:end <= taskpaper#search_end_of_item(a:lnum, 'n') |
||||
|
return 0 |
||||
|
endif |
||||
|
|
||||
|
return 1 |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#focus_project() |
||||
|
let pos = getpos('.') |
||||
|
|
||||
|
normal! $ |
||||
|
let begin = taskpaper#previous_project() |
||||
|
if begin == 0 |
||||
|
call setpos('.', pos) |
||||
|
return |
||||
|
endif |
||||
|
|
||||
|
let end = taskpaper#search_end_of_item(begin, 'n') |
||||
|
|
||||
|
" Go to the top level project |
||||
|
while taskpaper#previous_project() |
||||
|
if getline('.') =~ '^[^\t]' |
||||
|
break |
||||
|
endif |
||||
|
endwhile |
||||
|
|
||||
|
setlocal foldexpr=taskpaper#fold_except_range(v:lnum,begin,end) |
||||
|
setlocal foldminlines=0 foldtext='' |
||||
|
setlocal foldmethod=expr foldlevel=0 foldenable |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#search_tag(...) |
||||
|
if a:0 > 0 |
||||
|
let tag = a:1 |
||||
|
else |
||||
|
let cword = expand('<cword>') |
||||
|
let tag = input('Tag: ', cword =~ '@\k\+' ? cword[1:] : '') |
||||
|
endif |
||||
|
|
||||
|
if tag != '' |
||||
|
let ipat = (g:task_paper_search_hide_done == 1)?'\<@done\>':'' |
||||
|
call taskpaper#search('\<@' . tag . '\>', ipat) |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#_fold_projects(lnum) |
||||
|
if synIDattr(synID(a:lnum, 1, 1), "name") != 'taskpaperProject' |
||||
|
return '=' |
||||
|
endif |
||||
|
|
||||
|
let line = getline(a:lnum) |
||||
|
let depth = len(matchstr(line, '^\t*')) |
||||
|
return '>' . (depth + 1) |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#fold_projects() |
||||
|
setlocal foldexpr=taskpaper#_fold_projects(v:lnum) |
||||
|
setlocal foldminlines=0 foldtext=foldtext() |
||||
|
setlocal foldmethod=expr foldlevel=0 foldenable |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#newline() |
||||
|
let lnum = line('.') |
||||
|
let line = getline('.') |
||||
|
|
||||
|
if lnum == 1 || line !~ '^\s*$' || |
||||
|
\ synIDattr(synID(lnum - 1, 1, 1), "name") != 'taskpaperProject' |
||||
|
return '' |
||||
|
endif |
||||
|
|
||||
|
let pline = getline(lnum - 1) |
||||
|
let depth = len(matchstr(pline, '^\t*')) |
||||
|
call setline(lnum, repeat("\t", depth + 1) . '- ') |
||||
|
|
||||
|
return "\<End>" |
||||
|
endfunction |
||||
|
|
||||
|
|
||||
|
function! taskpaper#tag_style(...) |
||||
|
if a:0 > 0 |
||||
|
let tag_name = a:1 |
||||
|
endif |
||||
|
|
||||
|
if a:0 > 1 |
||||
|
let tag_style = a:2 |
||||
|
let tag_style_name = 'taskpaperAutoStyle_' . tag_name |
||||
|
execute 'syn match' tag_style_name '/\s\zs@'.tag_name.'\(([^)]*)\)\?/' |
||||
|
execute 'hi' tag_style_name tag_style |
||||
|
if version < 508 |
||||
|
execute 'hi link' tag_style_name tag_style_name |
||||
|
else |
||||
|
execute 'hi def link' tag_style_name tag_style_name |
||||
|
endif |
||||
|
else |
||||
|
echo "No style specified." |
||||
|
return '' |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
function! taskpaper#tag_style_dict(tsd) |
||||
|
for tag_name in keys(a:tsd) |
||||
|
call taskpaper#tag_style(tag_name,a:tsd[tag_name]) |
||||
|
endfor |
||||
|
endfunction |
||||
|
|
||||
|
let &cpo = s:save_cpo |
@ -0,0 +1,811 @@ |
|||||
|
" xterm16-v2.43: Vim color scheme file |
||||
|
" Maintainer: Gautam Iyer <gautam@math.uchicago.edu> |
||||
|
" Created: Thu 16 Oct 2003 06:17:47 PM CDT |
||||
|
" Modified: Tue 12 Sep 2006 11:19:35 AM PDT |
||||
|
" |
||||
|
" Adjustable color scheme for GUI/Terminal vim. |
||||
|
|
||||
|
let s:cpo_save = &cpo |
||||
|
set cpo&vim " line continuation is used |
||||
|
|
||||
|
hi clear |
||||
|
|
||||
|
if exists('syntax_on') |
||||
|
syntax reset |
||||
|
endif |
||||
|
let colors_name = 'xterm16' |
||||
|
|
||||
|
" {{{1 Local function definitions |
||||
|
" {{{2 tohex(n): Convert a number to a 2 digit hex |
||||
|
let s:hex = '0123456789abcdef' |
||||
|
function s:tohex( n) |
||||
|
return a:n > 255 ? 'ff' : s:hex[a:n / 16] . s:hex[a:n % 16] |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 extractRGB( string): Extract r,g,b components from string into s:c1,2,3 |
||||
|
function s:extractRGB( string) |
||||
|
if a:string =~ '^#[0-9a-f]\{6\}$' |
||||
|
" Colors in hex values |
||||
|
let s:c1 = '0x' . strpart(a:string, 1, 2) |
||||
|
let s:c2 = '0x' . strpart(a:string, 3, 2) |
||||
|
let s:c3 = '0x' . strpart(a:string, 5, 2) |
||||
|
|
||||
|
elseif a:string =~ '^\d\{3\}$' |
||||
|
" Colors in cterm values |
||||
|
let s:c1 = s:guilevel( a:string[0]) |
||||
|
let s:c2 = s:guilevel( a:string[1]) |
||||
|
let s:c3 = s:guilevel( a:string[2]) |
||||
|
|
||||
|
elseif a:string =~ '^[lmh][0-9]\{6\}' |
||||
|
" Colors in propotions of low / med / high |
||||
|
if exists('s:'.a:string[0]) |
||||
|
let l:level = s:{a:string[0]} |
||||
|
let s:c1 = l:level * strpart(a:string, 1, 2) / 50 |
||||
|
let s:c2 = l:level * strpart(a:string, 3, 2) / 50 |
||||
|
let s:c3 = l:level * strpart(a:string, 5, 2) / 50 |
||||
|
else |
||||
|
throw 'xterm16 Error: Use of propotional intensities before absolute intensities' |
||||
|
endif |
||||
|
else |
||||
|
throw 'xterm16 Error: Brightness / color "'. a:string . '" badly formed.' |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 guilevel(n) : Get the gui intensity of a given cterm intensity |
||||
|
function s:guilevel( n) |
||||
|
return '0x'.s:ccube[2*a:n].s:ccube[2*a:n + 1] |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 ctermlevel(n) : Get the cterm intensity of a given gui intensity |
||||
|
function s:ctermlevel( n) |
||||
|
" Xterm color cube intensities: 00, 5f, 87, af, d7, ff |
||||
|
" Rxvt color cube: 00, 2a, 55, 7f, aa, d4 |
||||
|
|
||||
|
" cinterval should have the terminal intervals. |
||||
|
let l:terml = 0 |
||||
|
while l:terml < 5 |
||||
|
if a:n < '0x'.s:cinterval[2 * l:terml].s:cinterval[2 * l:terml + 1] |
||||
|
return l:terml |
||||
|
endif |
||||
|
|
||||
|
let l:terml = l:terml + 1 |
||||
|
endwhile |
||||
|
return 5 |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 guicolor( r, g, b): Return the gui color with intensities r,g,b |
||||
|
function s:guicolor( r, g, b) |
||||
|
return '#' . s:tohex(a:r) . s:tohex(a:g) . s:tohex(a:b) |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 ctermcolor( r, g, b): Return the xterm-256 color with intensities r, g, b |
||||
|
function s:ctermcolor( r, g, b) |
||||
|
if a:r == a:g && a:r == a:b |
||||
|
" Use the greyscale ramp. The greyscale ramp starts from color 232 |
||||
|
" with grey 8, and procedes in increments of 10 upto grey 238 (0xee) |
||||
|
if a:r <= 4 |
||||
|
return 16 |
||||
|
elseif a:r <= 243 |
||||
|
return (a:r - 4) / 10 + 232 |
||||
|
else |
||||
|
" Let's check if the last color in ccube is large enough. |
||||
|
" return (s:termtype == 'xterm' && a:r > 247) ? 231 : 255 |
||||
|
let l:l5 = s:guilevel(5) |
||||
|
return ( l:l5 > 0xee && a:r > (l:l5 + 0xee)/2 ) ? 231 : 255 |
||||
|
endif |
||||
|
else |
||||
|
" Use the rgb cube. |
||||
|
return s:ctermlevel(a:r) * 36 + s:ctermlevel(a:g) * 6 + s:ctermlevel(a:b) + 16 |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 setcolor( name, r, g, b): Set the script variables gui_name and cterm_name |
||||
|
function s:setcolor( name, r, g, b) |
||||
|
if exists('g:xterm16_'.a:name) |
||||
|
" Use user-defined color settings (from global variable) |
||||
|
call s:extractRGB( g:xterm16_{a:name}) |
||||
|
|
||||
|
let s:gui_{a:name} = s:guicolor( s:c1, s:c2, s:c3) |
||||
|
let s:cterm_{a:name} = s:ctermcolor( s:c1, s:c2, s:c3) |
||||
|
else |
||||
|
" Set the GUI / cterm color from r,g,b |
||||
|
let s:gui_{a:name} = s:guicolor( a:r, a:g, a:b) |
||||
|
let s:cterm_{a:name} = ( &t_Co == 256 || has('gui_running') ) |
||||
|
\ ? s:ctermcolor( a:r, a:g, a:b) : a:name |
||||
|
endif |
||||
|
|
||||
|
" Add the color to palette |
||||
|
let g:xterm16_palette = g:xterm16_palette . "\n" . s:gui_{a:name} . ', cterm ' . s:cterm_{a:name} . ' : ' . a:name |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 getcolor( group, globalvar, colorname): if globvar exists, returns that |
||||
|
" color. if not returns the color in cname |
||||
|
function s:getcolor( globvar, cname) |
||||
|
" hopefully someone set ctype before getting here. ctype should either be |
||||
|
" "gui" or "cterm" |
||||
|
|
||||
|
if exists( a:globvar) |
||||
|
if exists( 's:'.s:ctype.'_'.{a:globvar}) |
||||
|
return s:{s:ctype}_{{a:globvar}} |
||||
|
else |
||||
|
call s:extractRGB( {a:globvar}) |
||||
|
return s:{s:ctype}color( s:c1, s:c2, s:c3) |
||||
|
endif |
||||
|
else |
||||
|
return s:{s:ctype}_{a:cname} |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 use_guiattr( nattrs, n ): Should s:hi use the n'th attr for GUI hl. |
||||
|
function s:use_guiattr( nattrs, n ) |
||||
|
" If guisp is specified in vim6, then don't use any GUI attributes. |
||||
|
" Otherwise use GUI attributes if GUI is running and they are specified. |
||||
|
if !has('gui_running') || |
||||
|
\ a:nattrs < a:n || |
||||
|
\ ( v:version < 700 && a:nattrs >= 4 ) |
||||
|
" Don't use GUI attributes |
||||
|
return 0 |
||||
|
else |
||||
|
" Use GUI attributes |
||||
|
return 1 |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 hi( group, attr, fg, bg): Set the gui/cterm highlighting groups |
||||
|
" |
||||
|
" group - groupname. |
||||
|
" attr - attributes. |
||||
|
" fg/bg color name. |
||||
|
" |
||||
|
" Optionally can call it as |
||||
|
" |
||||
|
" hi( group, attr, fg, bg, guiattr, guifg, guibg, guisp ) |
||||
|
" |
||||
|
" where all the gui options are optional. If provided, they override the term |
||||
|
" colors. |
||||
|
function s:hi( group, attr, fg, bg, ...) |
||||
|
if has('gui_running') || &t_Co == 256 |
||||
|
" For gui's and 256 color terminals |
||||
|
let l:fg = s:getcolor( 'g:xterm16fg_'.a:group, |
||||
|
\ s:use_guiattr( a:0, 2) ? a:2 : a:fg) |
||||
|
let l:bg = s:getcolor( 'g:xterm16bg_'.a:group, |
||||
|
\ s:use_guiattr( a:0, 3) ? a:3 : a:bg) |
||||
|
|
||||
|
if exists('g:xterm16attr_' . a:group) |
||||
|
let l:attr = g:xterm16attr_{a:group} |
||||
|
else |
||||
|
let l:attr = s:use_guiattr( a:0, 1) ? a:1 : a:attr |
||||
|
endif |
||||
|
|
||||
|
exec 'hi' a:group |
||||
|
\ s:ctype.'='.l:attr |
||||
|
\ s:ctype.'fg='.l:fg |
||||
|
\ s:ctype.'bg='.l:bg |
||||
|
|
||||
|
" Define guisp if specified for the gui (Vim7 upwards only). |
||||
|
if v:version >= 700 && has('gui_running') && a:0 >= 4 |
||||
|
let l:sp = s:getcolor( 'g:xterm16sp_'.a:group, a:4 ) |
||||
|
exec 'hi' a:group s:ctype.'sp='.l:sp |
||||
|
endif |
||||
|
else |
||||
|
" for consoles / 16 color junkies |
||||
|
exec 'hi' a:group 'cterm='.a:attr 'ctermfg='.a:fg 'ctermbg='.a:bg |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
" {{{2 set_brightness( default): Set s:brightness based on default |
||||
|
function s:set_brightness( default) |
||||
|
let s:brightness = ( exists('g:xterm16_brightness') |
||||
|
\ && g:xterm16_brightness != 'default') ? |
||||
|
\ g:xterm16_brightness : a:default |
||||
|
if s:colormap == 'allblue' |
||||
|
if s:brightness == 'high' |
||||
|
let s:brightness = '#afafff' " 335 |
||||
|
elseif s:brightness == 'med' |
||||
|
let s:brightness = '#8787d7' " 224 |
||||
|
elseif s:brightness == 'low' |
||||
|
let s:brightness = '#5f5faf' " 113 |
||||
|
endif |
||||
|
elseif s:colormap == 'softlight' |
||||
|
if s:brightness == 'high' |
||||
|
let s:brightness = '#ff87af' " 523 |
||||
|
elseif s:brightness == 'med' |
||||
|
let s:brightness = '#d75f87' " 412 |
||||
|
elseif s:brightness == 'low' |
||||
|
let s:brightness = '#af5f87' " 312 |
||||
|
endif |
||||
|
else |
||||
|
if s:brightness == 'high' |
||||
|
let s:brightness = '#afd7ff' " 345 |
||||
|
elseif s:brightness == 'med' |
||||
|
let s:brightness = '#87afd7' " 234 |
||||
|
elseif s:brightness == 'low' |
||||
|
let s:brightness = '#5f87af' " 123 |
||||
|
endif |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
" {{{1 Global functions and initialisations. |
||||
|
command! -nargs=* Brightness |
||||
|
\ if Brightness(<f-args>) <bar> |
||||
|
\ colo xterm16 <bar> |
||||
|
\ endif |
||||
|
|
||||
|
" {{{2 Brightness( brightness, colormap) |
||||
|
function! Brightness(...) |
||||
|
if a:0 == 0 |
||||
|
echo "Brightness: ".s:brightness.", Colormap: ".s:colormap |
||||
|
return 0 |
||||
|
elseif a:0 > 2 |
||||
|
echoerr 'Too many arguements.' |
||||
|
return 0 |
||||
|
endif |
||||
|
|
||||
|
let g:xterm16_brightness = a:1 |
||||
|
if a:0 == 2 |
||||
|
let g:xterm16_colormap = a:2 |
||||
|
endif |
||||
|
|
||||
|
return 1 |
||||
|
endfunction |
||||
|
" }}}1 |
||||
|
|
||||
|
try |
||||
|
" {{{1 Setup defaults |
||||
|
" {{{2 set ctype (to cterm / gui) to be the color type |
||||
|
let s:ctype = has('gui_running') ? 'gui' : 'cterm' |
||||
|
" {{{2 Obtain intensity levels of the 6 terminal colors in s:ccube |
||||
|
" The 2ith and 2i+1th charecters in ccube are the hex digits of the |
||||
|
" intensity of the ith (0-5) term level. xterm and rxvt set up the default |
||||
|
" color cube differently, so we have to consider them separately. |
||||
|
|
||||
|
" First check for a user specified color cube. |
||||
|
if exists('g:xterm16_ccube') |
||||
|
let s:ccube = g:xterm16_ccube |
||||
|
|
||||
|
" No user specified color cube given. Try and guess from xterm16_termtype |
||||
|
elseif ( exists('g:xterm16_termtype') && g:xterm16_termtype == 'rxvt') || |
||||
|
\ ( !exists('g:xterm16_termtype') |
||||
|
\ && &term =~ '^rxvt' |
||||
|
\ && $MRXVT_TABTITLE == "" ) |
||||
|
" color cube for "rxvt". Make sure we're not running mrxvt (by |
||||
|
" checking that the MRXVT_TABTITLE variable is empty). |
||||
|
let s:ccube = "002a557faad4" |
||||
|
else |
||||
|
" default to xterm if nothing else is specified. |
||||
|
let s:ccube ="005f87afd7ff" |
||||
|
endif |
||||
|
|
||||
|
" s:cinterval will be the intervals of intensities which get mapped to |
||||
|
" term color i. i.e. colors between 0 -- cinterval(0) have level 0. |
||||
|
" between cinterval(0) -- cinterval(1) have level 1, etc. max level is 5, |
||||
|
" so anything higher than cinterval(4) has level 5. |
||||
|
let s:cinterval = "" |
||||
|
let s:lower = "00" |
||||
|
let s:i = 1 |
||||
|
while s:i < 6 |
||||
|
let s:upper = s:ccube[2*s:i] . s:ccube[2*s:i + 1] |
||||
|
let s:cinterval = s:cinterval . s:tohex( (('0x'.s:lower) + ('0x'.s:upper))/2 ) |
||||
|
let s:lower = s:upper |
||||
|
let s:i = s:i + 1 |
||||
|
endwhile |
||||
|
|
||||
|
" {{{2 Get colormap defaults in "s:colormap" |
||||
|
" On a terminal (without 256 colors), use "standard" colormap. Otherwise |
||||
|
" use value from "g:xterm16_colormap" if exists, or "soft" as default. |
||||
|
if !has('gui_running') && &t_Co != 256 |
||||
|
let s:colormap = 'standard' |
||||
|
elseif exists('g:xterm16_colormap') |
||||
|
let s:colormap = g:xterm16_colormap |
||||
|
else |
||||
|
" "soft" used to be the default, but "allblue" is much better. |
||||
|
let s:colormap = 'allblue' |
||||
|
endif |
||||
|
|
||||
|
" {{{2 Redefine a few colors for CRT monitors and set brightness |
||||
|
if s:colormap == 'allblue' |
||||
|
call s:set_brightness( '#8787d7' ) " 224 |
||||
|
elseif s:colormap == 'softlight' |
||||
|
call s:set_brightness( '#d75f87' ) " 412 |
||||
|
elseif exists('g:xterm16_CRTColors') |
||||
|
" "standard" or "soft" colormaps |
||||
|
if s:colormap == 'standard' |
||||
|
let g:xterm16_darkblue = 'h000050' |
||||
|
let g:xterm16_blue = 'h002550' |
||||
|
let g:xterm16_grey = 'm474747' |
||||
|
|
||||
|
unlet! g:xterm16_skyblue g:xterm16_green g:xterm16_bluegreen |
||||
|
|
||||
|
" give the original xterm16 feel |
||||
|
call s:set_brightness( '#80cdff') |
||||
|
else |
||||
|
" "soft" colormap |
||||
|
let g:xterm16_skyblue = 'h003850' |
||||
|
let g:xterm16_green = 'm315000' |
||||
|
let g:xterm16_bluegreen = 'm005031' |
||||
|
|
||||
|
unlet! g:xterm16_darkblue g:xterm16_blue g:xterm16_grey |
||||
|
|
||||
|
" call s:set_brightness ( '245') |
||||
|
" call s:set_brightness('high') |
||||
|
call s:set_brightness('#87d7ff') " 245 |
||||
|
endif |
||||
|
else |
||||
|
" "standard" or "soft" colormaps with LCD colors |
||||
|
call s:set_brightness( '#5fafd7') " 134 |
||||
|
endif |
||||
|
|
||||
|
unlet! s:c1 s:c2 s:c3 |
||||
|
call s:extractRGB(s:brightness) |
||||
|
let s:l = s:c1 |
||||
|
let s:m = s:c2 |
||||
|
let s:h = s:c3 |
||||
|
|
||||
|
" {{{2 Set a bright green cursor on all colormaps except softlight |
||||
|
if !exists('g:xterm16bg_Cursor') |
||||
|
if s:colormap == 'softlight' |
||||
|
let g:xterm16fg_Cursor = '#ffffff' |
||||
|
else |
||||
|
let g:xterm16bg_Cursor = '#00ff00' |
||||
|
endif |
||||
|
endif |
||||
|
|
||||
|
" {{{2 Set the current pallete: |
||||
|
let g:xterm16_palette = 'Current palette (Brightness: '.s:brightness. ', Colormap: '.s:colormap.')' |
||||
|
|
||||
|
" {{{1 Define colors and highlighting groups based on "s:colormap" |
||||
|
let s:cterm_none = 'NONE' |
||||
|
let s:gui_none = 'NONE' |
||||
|
|
||||
|
" Set the background based on the colormap. 'softlight' is the only |
||||
|
" colormap with a light background |
||||
|
if s:colormap == 'softlight' |
||||
|
set bg=light |
||||
|
else |
||||
|
set bg=dark |
||||
|
endif |
||||
|
|
||||
|
if s:colormap == 'standard' |
||||
|
" {{{2 Original colormap. 8 standard colors, and 8 brighter ones. |
||||
|
call s:setcolor( 'black', 0 , 0 , 0 ) |
||||
|
call s:setcolor( 'darkred', s:m , 0 , 0 ) |
||||
|
call s:setcolor( 'darkgreen', 0 , s:m , 0 ) |
||||
|
call s:setcolor( 'darkyellow', s:m , s:m , 0 ) |
||||
|
call s:setcolor( 'darkblue', 0 , 0 , s:m ) |
||||
|
call s:setcolor( 'darkmagenta', s:m , 0 , s:m ) |
||||
|
call s:setcolor( 'darkcyan', 0 , s:m , s:m ) |
||||
|
call s:setcolor( 'grey', s:m*44/50, s:m*44/50, s:m*44/50) |
||||
|
|
||||
|
call s:setcolor( 'darkgrey', s:l , s:l , s:l ) |
||||
|
call s:setcolor( 'red', s:h , 0 , 0 ) |
||||
|
call s:setcolor( 'green', 0 , s:h , 0 ) |
||||
|
call s:setcolor( 'yellow', s:h , s:h , 0 ) |
||||
|
call s:setcolor( 'blue', 0 , 0 , s:h ) |
||||
|
call s:setcolor( 'magenta', s:h , 0 , s:h ) |
||||
|
call s:setcolor( 'cyan', 0 , s:h , s:h ) |
||||
|
call s:setcolor( 'white', s:h , s:h , s:h ) |
||||
|
|
||||
|
" {{{2 Highlighting groups for standard colors |
||||
|
call s:hi( 'Normal' , 'none' , 'grey' , 'black' ) |
||||
|
|
||||
|
call s:hi( 'Cursor' , 'none' , 'black' , 'green' ) |
||||
|
call s:hi( 'CursorColumn', 'none' , 'none' , 'darkgrey' ) |
||||
|
call s:hi( 'CursorLine' , 'none' , 'none' , 'darkgrey' ) |
||||
|
call s:hi( 'DiffAdd' , 'none' , 'darkblue' , 'darkgreen' ) |
||||
|
call s:hi( 'DiffChange' , 'none' , 'black' , 'darkyellow') |
||||
|
call s:hi( 'DiffDelete' , 'none' , 'darkblue' , 'none' ) |
||||
|
call s:hi( 'DiffText' , 'none' , 'darkred' , 'darkyellow') |
||||
|
call s:hi( 'Directory' , 'none' , 'cyan' , 'none' ) |
||||
|
call s:hi( 'ErrorMsg' , 'none' , 'white' , 'darkred' ) |
||||
|
call s:hi( 'FoldColumn' , 'none' , 'yellow' , 'darkblue' ) |
||||
|
call s:hi( 'Folded' , 'none' , 'yellow' , 'darkblue' ) |
||||
|
call s:hi( 'IncSearch' , 'none' , 'grey' , 'darkblue' ) |
||||
|
call s:hi( 'LineNr' , 'none' , 'yellow' , 'none' ) |
||||
|
call s:hi( 'MatchParen' , 'bold' , 'none' , 'none' ) |
||||
|
call s:hi( 'MoreMsg' , 'bold' , 'green' , 'none' ) |
||||
|
call s:hi( 'NonText' , 'none' , 'blue' , 'none' ) |
||||
|
call s:hi( 'Pmenu' , 'none' , 'black' , 'grey' ) |
||||
|
call s:hi( 'PmenuSel' , 'none' , 'none' , 'darkblue' ) |
||||
|
call s:hi( 'PmenuSbar' , 'none' , 'none' , 'darkgrey' ) |
||||
|
call s:hi( 'PmenuThumb' , 'none' , 'none' , 'white' ) |
||||
|
call s:hi( 'Question' , 'none' , 'green' , 'none' ) |
||||
|
call s:hi( 'Search' , 'none' , 'black' , 'darkcyan' ) |
||||
|
call s:hi( 'SignColumn' , 'none' , 'darkmagenta', 'darkgrey' ) |
||||
|
call s:hi( 'SpecialKey' , 'none' , 'blue' , 'none' ) |
||||
|
call s:hi( 'StatusLine' , 'none' , 'darkblue' , 'grey' ) |
||||
|
call s:hi( 'StatusLineNC', 'reverse', 'none' , 'none' ) |
||||
|
call s:hi( 'TabLineFill' , 'none' , 'black' , 'darkgrey' ) |
||||
|
call s:hi( 'TabLine' , 'none' , 'black' , 'darkgrey' ) |
||||
|
call s:hi( 'TabLineSel' , 'bold' , 'none' , 'none' ) |
||||
|
call s:hi( 'Title' , 'none' , 'magenta' , 'none' ) |
||||
|
call s:hi( 'Visual' , 'none' , 'none' , 'darkblue' ) |
||||
|
call s:hi( 'VisualNOS' , 'none' , 'none' , 'darkgrey' ) |
||||
|
call s:hi( 'WarningMsg' , 'bold' , 'red' , 'none' ) |
||||
|
call s:hi( 'WildMenu' , 'none' , 'darkmagenta', 'darkyellow') |
||||
|
|
||||
|
call s:hi( 'Comment' , 'none' , 'darkred' , 'none' ) |
||||
|
call s:hi( 'Constant' , 'none' , 'darkyellow' , 'none' ) |
||||
|
call s:hi( 'Error' , 'none' , 'white' , 'red' ) |
||||
|
call s:hi( 'Identifier' , 'none' , 'darkcyan' , 'none' ) |
||||
|
call s:hi( 'Ignore' , 'none' , 'darkgrey' , 'none' ) |
||||
|
call s:hi( 'PreProc' , 'none' , 'blue' , 'none' ) |
||||
|
call s:hi( 'Special' , 'none' , 'darkgreen' , 'none' ) |
||||
|
call s:hi( 'Statement' , 'none' , 'cyan' , 'none' ) |
||||
|
call s:hi( 'Todo' , 'none' , 'black' , 'yellow' ) |
||||
|
call s:hi( 'Type' , 'none' , 'green' , 'none' ) |
||||
|
call s:hi( 'Underlined' , 'none' , 'darkmagenta', 'none' ) |
||||
|
|
||||
|
" {{{2 Spelling highlighting groups. |
||||
|
call s:hi( 'SpellBad' , 'bold,underline', 'none', 'none' , |
||||
|
\ 'undercurl' , 'none', 'none' , |
||||
|
\ 'darkred' ) |
||||
|
call s:hi( 'SpellCap' , 'bold' , 'none', 'none' , |
||||
|
\ 'undercurl' , 'none', 'none' , |
||||
|
\ 'blue' ) |
||||
|
call s:hi( 'SpellLocal', 'underline' , 'none', 'none' , |
||||
|
\ 'undercurl' , 'none', 'none' , |
||||
|
\ 'cyan' ) |
||||
|
call s:hi( 'SpellRare' ,'underline' , 'none', 'none' , |
||||
|
\ 'undercurl' , 'none', 'none' , |
||||
|
\ 'darkyellow' ) |
||||
|
|
||||
|
" {{{2 Define html highlighting groups for standard colors. |
||||
|
if !exists("g:xterm16_NoHtmlColors") |
||||
|
call s:hi( 'htmlBold', 'none', 'white', 'none', 'bold', 'none') |
||||
|
call s:hi( 'htmlItalic', 'none', 'yellow', 'none', 'italic', 'none') |
||||
|
call s:hi( 'htmlUnderline', 'none', 'darkmagenta', 'none', 'underline', 'none') |
||||
|
call s:hi( 'htmlBoldItalic', 'bold', 'yellow', 'none', 'bold,italic', 'none') |
||||
|
call s:hi( 'htmlBoldUnderline', 'bold', 'magenta', 'none', 'bold,underline', 'none') |
||||
|
call s:hi( 'htmlUnderlineItalic', 'none', 'magenta', 'none', 'underline,italic', 'none') |
||||
|
call s:hi( 'htmlBoldUnderlineItalic', 'bold', 'white', 'none', 'bold,underline,italic', 'none') |
||||
|
|
||||
|
hi! link htmlLink PreProc |
||||
|
endif |
||||
|
" {{{2 Remap darkblue on linux consoles |
||||
|
if !exists("g:xterm16_NoRemap") && &term =~# (exists("g:xterm16_TermRegexp") ? xterm16_TermRegexp : "linux") |
||||
|
hi! link PreProc Underlined |
||||
|
endif |
||||
|
" }}}2 |
||||
|
elseif s:colormap == 'soft' || s:colormap == 'softlight' |
||||
|
" {{{2 "soft" / "softlight" colormap. |
||||
|
" Mix and use similar intensity colors. Only drawback is a slightly |
||||
|
" gaudy appearance (which is why I switched to the "allblue" |
||||
|
" colormap). |
||||
|
" |
||||
|
" The "softlight" colormap is a colormap with a whiteish background |
||||
|
" for web hosting or when there's a strong glare ... |
||||
|
|
||||
|
" Background colors common to softlight / soft colormaps |
||||
|
call s:setcolor( 'black' , 0 , 0 , 0 ) |
||||
|
|
||||
|
" call s:setcolor( 'grey' , s:l/2 , s:l/2 , s:l/2 ) |
||||
|
" call s:setcolor( 'lightgrey' , 2*s:l/3 , 2*s:l/3 , 2*s:l/3 ) |
||||
|
|
||||
|
" Foreground colors common to softlight / soft colormaps |
||||
|
call s:setcolor( 'lightbrown' , s:h , s:h/2 , 0 ) |
||||
|
call s:setcolor( 'magenta' , s:h*3/4 , 0 , s:h ) |
||||
|
call s:setcolor( 'red' , s:h , 0 , 0 ) |
||||
|
call s:setcolor( 'yellow' , s:m , s:m , 0 ) |
||||
|
|
||||
|
if s:colormap == "soft" |
||||
|
" Background colors for colormap with a dark background |
||||
|
call s:setcolor( 'darkblue' , 0 , 0 , s:l ) |
||||
|
call s:setcolor( 'darkcyan' , 0 , s:l , s:l ) |
||||
|
call s:setcolor( 'darkred' , s:l , 0 , 0 ) |
||||
|
call s:setcolor( 'darkyellow', s:l , s:l , 0 ) |
||||
|
call s:setcolor( 'darkgrey' , s:l/3 , s:l/3 , s:l/3 ) |
||||
|
call s:setcolor( 'grey' , s:l/2 , s:l/2 , s:l/2 ) |
||||
|
call s:setcolor( 'lightgrey' , s:l , s:l , s:l ) |
||||
|
|
||||
|
" Foreground colors for colormap with a dark background |
||||
|
call s:setcolor( 'bluegreen' , 0 , s:m , s:m*38/50 ) |
||||
|
call s:setcolor( 'cyan' , 0 , s:m , s:m ) |
||||
|
call s:setcolor( 'green' , s:m*38/50 , s:m , 0 ) |
||||
|
call s:setcolor( 'purple' , s:h*27/50 , s:h*27/50 , s:h ) |
||||
|
call s:setcolor( 'skyblue' , 0 , s:h*27/50 , s:h ) |
||||
|
call s:setcolor( 'white' , s:m*44/50 , s:m*44/50 , s:m*44/50 ) |
||||
|
else |
||||
|
" Background colors for colormap with a light background |
||||
|
call s:setcolor( 'darkblue' , s:l*27/50 , s:l*27/50 , s:l ) |
||||
|
call s:setcolor( 'darkcyan' , s:l*27/50 , s:l*38/50 , s:l ) |
||||
|
call s:setcolor( 'darkred' , s:l , s:l*27/50 , s:l*27/50 ) |
||||
|
call s:setcolor( 'darkyellow', s:l , s:l , s:l*27/50 ) |
||||
|
call s:setcolor( 'darkgrey' , s:l*40/50 , s:l*40/50 , s:l*40/50 ) |
||||
|
call s:setcolor( 'grey' , s:l*35/50 , s:l*35/50 , s:l*35/50 ) |
||||
|
call s:setcolor( 'lightgrey' , s:l*30/50 , s:l*30/50 , s:l*30/50 ) |
||||
|
|
||||
|
call s:setcolor( 'white' , s:l*45/50 , s:l*45/50 , s:l*45/50 ) |
||||
|
|
||||
|
" Foreground colors for colormap with a light background |
||||
|
call s:setcolor( 'bluegreen' , 0 , s:h , 0 ) |
||||
|
call s:setcolor( 'cyan' , 0 , s:h*38/50 , s:h ) |
||||
|
call s:setcolor( 'green' , 0 , s:m , 0 ) |
||||
|
call s:setcolor( 'purple' , s:h*38/50 , 0 , s:h ) |
||||
|
call s:setcolor( 'skyblue' , 0 , 0 , s:h ) |
||||
|
endif |
||||
|
|
||||
|
" {{{2 Highlighting groups for "soft" / "softlight" colors. |
||||
|
if s:colormap == 'soft' |
||||
|
" Highlighting groups for dark background |
||||
|
call s:hi( 'Normal' , 'none', 'white' , 'black' ) |
||||
|
|
||||
|
call s:hi( 'Cursor' , 'none', 'black' , 'green' ) |
||||
|
call s:hi( 'DiffText' , 'none', 'darkred' , 'darkyellow') |
||||
|
call s:hi( 'Error' , 'none', 'white' , 'darkred' ) |
||||
|
call s:hi( 'ErrorMsg' , 'none', 'white' , 'darkred' ) |
||||
|
call s:hi( 'FoldColumn' , 'none', 'purple' , 'darkgrey' ) |
||||
|
call s:hi( 'Folded' , 'none', 'purple' , 'darkgrey' ) |
||||
|
call s:hi( 'IncSearch' , 'none', 'yellow' , 'darkblue' ) |
||||
|
call s:hi( 'StatusLine' , 'none', 'darkblue' , 'lightgrey' ) |
||||
|
call s:hi( 'VisualNOS' , 'none', 'black' , 'darkgrey' ) |
||||
|
else |
||||
|
" Highlighting groups for light background |
||||
|
call s:hi( 'Normal' , 'none', 'black' , 'white' ) |
||||
|
|
||||
|
call s:hi( 'Cursor' , 'none', 'white' , 'bluegreen' ) |
||||
|
call s:hi( 'DiffText' , 'none', 'red' , 'darkyellow') |
||||
|
call s:hi( 'Error' , 'none', 'black' , 'darkred' ) |
||||
|
call s:hi( 'ErrorMsg' , 'none', 'white' , 'red' ) |
||||
|
call s:hi( 'FoldColumn' , 'none', 'lightgrey', 'darkgrey' ) |
||||
|
call s:hi( 'Folded' , 'none', 'black' , 'darkgrey' ) |
||||
|
call s:hi( 'IncSearch' , 'none', 'black' , 'darkblue' ) |
||||
|
call s:hi( 'StatusLine' , 'none', 'skyblue' , 'lightgrey' ) |
||||
|
call s:hi( 'VisualNOS' , 'none', 'white' , 'darkgrey' ) |
||||
|
endif |
||||
|
|
||||
|
" Highlighting groups for light / dark background. |
||||
|
call s:hi( 'CursorColumn', 'none', 'none' , 'grey' ) |
||||
|
call s:hi( 'CursorLine' , 'none', 'none' , 'grey' ) |
||||
|
call s:hi( 'DiffAdd' , 'none', 'lightbrown', 'darkblue' ) |
||||
|
call s:hi( 'DiffChange' , 'none', 'black' , 'darkyellow') |
||||
|
call s:hi( 'DiffDelete' , 'none', 'purple' , 'darkblue' ) |
||||
|
call s:hi( 'Directory' , 'none', 'cyan' , 'none' ) |
||||
|
call s:hi( 'LineNr' , 'none', 'yellow' , 'none' ) |
||||
|
call s:hi( 'MatchParen' , 'bold', 'none' , 'none' ) |
||||
|
call s:hi( 'MoreMsg' , 'none', 'green' , 'none' ) |
||||
|
call s:hi( 'NonText' , 'none', 'yellow' , 'none' ) |
||||
|
call s:hi( 'Pmenu' , 'none', 'none' , 'grey' ) |
||||
|
call s:hi( 'PmenuSbar' , 'none', 'none' , 'darkgrey' ) |
||||
|
call s:hi( 'PmenuSel' , 'none', 'none' , 'darkblue' ) |
||||
|
call s:hi( 'PmenuThumb' , 'none', 'none' , 'lightgrey' ) |
||||
|
call s:hi( 'Question' , 'none', 'green' , 'none' ) |
||||
|
call s:hi( 'Search' , 'none', 'black' , 'darkcyan' ) |
||||
|
call s:hi( 'SignColumn' , 'none', 'yellow' , 'darkgrey' ) |
||||
|
call s:hi( 'SpecialKey' , 'none', 'yellow' , 'none' ) |
||||
|
call s:hi( 'StatusLineNC', 'none', 'black' , 'grey' ) |
||||
|
call s:hi( 'TabLineFill' , 'none', 'none' , 'grey' ) |
||||
|
call s:hi( 'TabLine' , 'none', 'none' , 'grey' ) |
||||
|
call s:hi( 'TabLineSel' , 'bold', 'none' , 'none' ) |
||||
|
call s:hi( 'Title' , 'none', 'yellow' , 'none' ) |
||||
|
call s:hi( 'VertSplit' , 'none', 'darkgrey' , 'darkgrey' ) |
||||
|
call s:hi( 'Visual' , 'none', 'none' , 'darkblue' ) |
||||
|
call s:hi( 'WarningMsg' , 'none', 'red' , 'none' ) |
||||
|
call s:hi( 'WildMenu' , 'none', 'yellow' , 'none' ) |
||||
|
|
||||
|
call s:hi( 'Comment' , 'none', 'red' , 'none' ) |
||||
|
call s:hi( 'Constant' , 'none', 'lightbrown', 'none' ) |
||||
|
call s:hi( 'Identifier' , 'none', 'cyan' , 'none' ) |
||||
|
call s:hi( 'Ignore' , 'none', 'darkgrey' , 'none' ) |
||||
|
call s:hi( 'PreProc' , 'none', 'purple' , 'none' ) |
||||
|
call s:hi( 'Special' , 'none', 'green' , 'none' ) |
||||
|
call s:hi( 'Statement' , 'none', 'skyblue' , 'none' ) |
||||
|
call s:hi( 'Todo' , 'none', 'black' , 'darkyellow') |
||||
|
call s:hi( 'Type' , 'none', 'bluegreen' , 'none' ) |
||||
|
call s:hi( 'Underlined' , 'none', 'magenta' , 'none' ) |
||||
|
|
||||
|
" {{{2 Spelling highlighting groups. |
||||
|
call s:hi( 'SpellBad' , 'bold,underline', 'none', 'darkgrey', |
||||
|
\ 'undercurl' , 'none', 'none' , |
||||
|
\ 'red' ) |
||||
|
call s:hi( 'SpellCap' , 'bold' , 'none', 'darkgrey', |
||||
|
\ 'undercurl' , 'none', 'none' , |
||||
|
\ 'skyblue' ) |
||||
|
call s:hi( 'SpellLocal', 'underline' , 'none', 'darkgrey', |
||||
|
\ 'undercurl' , 'none', 'none' , |
||||
|
\ 'cyan' ) |
||||
|
call s:hi( 'SpellRare' ,'underline' , 'none', 'none' , |
||||
|
\ 'undercurl' , 'none', 'none' , |
||||
|
\ 'yellow' ) |
||||
|
|
||||
|
" {{{2 Define html highlighting groups for soft colors. |
||||
|
if !exists("g:xterm16_NoHtmlColors") |
||||
|
call s:hi( 'htmlBold', 'none', 'yellow', 'none', |
||||
|
\ 'bold', 'none') |
||||
|
call s:hi( 'htmlItalic', 'none', 'yellow', 'none', |
||||
|
\ 'italic', 'none') |
||||
|
call s:hi( 'htmlUnderline', 'none', 'magenta', 'none', |
||||
|
\ 'underline', 'none') |
||||
|
call s:hi( 'htmlBoldItalic', 'bold', 'yellow', 'none', |
||||
|
\ 'bold,italic', 'none') |
||||
|
call s:hi( 'htmlBoldUnderline', 'bold', 'magenta', 'none', |
||||
|
\ 'bold,underline', 'none') |
||||
|
call s:hi( 'htmlUnderlineItalic', 'bold', 'magenta', 'none', |
||||
|
\ 'underline,italic', 'none') |
||||
|
call s:hi( 'htmlBoldUnderlineItalic', 'bold', 'white', 'none', |
||||
|
\ 'bold,underline,italic', 'none') |
||||
|
endif |
||||
|
" }}}2 |
||||
|
elseif s:colormap == 'allblue' |
||||
|
" {{{2 "allblue" colormap. All shades of blue. |
||||
|
" Background colors |
||||
|
call s:setcolor( 'black' , 0 , 0 , 0 ) |
||||
|
call s:setcolor( 'darkred' , s:l , 0 , 0 ) |
||||
|
call s:setcolor( 'darkcyan' , 0 , s:l , s:l ) |
||||
|
call s:setcolor( 'darkblue' , 0 , 0 , s:l ) |
||||
|
call s:setcolor( 'darkyellow' , s:l , s:l , 0 ) |
||||
|
|
||||
|
" cterm's can do grey's with better accuracy, so use many shades of |
||||
|
" grey for backgrounds instead of the gaudy yellow's etc. |
||||
|
call s:setcolor( 'grey1' , s:l/8 , s:l/8 , s:l/8 ) |
||||
|
call s:setcolor( 'grey2' , 2*s:l/8 , 2*s:l/8 , 2*s:l/8 ) |
||||
|
call s:setcolor( 'grey3' , 3*s:l/8 , 3*s:l/8 , 3*s:l/8 ) |
||||
|
call s:setcolor( 'grey4' , 4*s:l/8 , 4*s:l/8 , 4*s:l/8 ) |
||||
|
call s:setcolor( 'grey5' , 5*s:l/8 , 5*s:l/8 , 5*s:l/8 ) |
||||
|
" call s:setcolor( 'grey6' , 6*s:l/8 , 6*s:l/8 , 6*s:l/8 ) |
||||
|
" call s:setcolor( 'grey7' , 7*s:l/8 , 7*s:l/8 , 7*s:l/8 ) |
||||
|
call s:setcolor( 'grey' , s:l , s:l , s:l ) |
||||
|
|
||||
|
" Foreground colors: |
||||
|
" |
||||
|
" s:m -- lowest intensity level for fg colors |
||||
|
" s:h -- highest intensity level. |
||||
|
" s:M -- medium intensity (average of the above two) |
||||
|
|
||||
|
let s:M = (s:m + s:h) / 2 |
||||
|
|
||||
|
call s:setcolor( 'red' , s:h , 0 , 0 ) |
||||
|
call s:setcolor( 'lightbrown' , s:M , s:m , 0 ) |
||||
|
call s:setcolor( 'yellow' , s:M , s:M , s:m ) |
||||
|
call s:setcolor( 'dirtygreen' , s:m , s:m , 0 ) |
||||
|
call s:setcolor( 'green' , s:m , s:M , s:m ) |
||||
|
call s:setcolor( 'bluegreen' , 0 , s:M , s:m ) |
||||
|
call s:setcolor( 'yellowgreen', s:m , s:M , 0 ) |
||||
|
call s:setcolor( 'skyblue' , 0 , s:m , s:M ) |
||||
|
call s:setcolor( 'lightblue' , 0 , s:m , s:h ) |
||||
|
call s:setcolor( 'cyan' , 0 , s:M , s:M ) |
||||
|
call s:setcolor( 'lightcyan' , s:m , s:M , s:M ) |
||||
|
call s:setcolor( 'darkpurple' , s:m , 0 , s:h ) |
||||
|
call s:setcolor( 'purple' , s:m , s:m , s:M ) |
||||
|
|
||||
|
" Unused colors that are pretty reasonable |
||||
|
" call s:setcolor( 'lightred' , s:M , s:m , s:m ) |
||||
|
" call s:setcolor( 'bluewhite' , s:M , s:M , s:h ) |
||||
|
" call s:setcolor( 'lightpurple', s:m , s:m , s:h ) |
||||
|
|
||||
|
" Greys can be done with better accurcy on cterms! |
||||
|
call s:setcolor( 'white' , 48*s:M/50 , 48*s:M/50 , 48*s:M/50 ) |
||||
|
call s:setcolor( 'white1' , 40*s:M/50 , 40*s:M/50 , 40*s:M/ 50 ) |
||||
|
|
||||
|
unlet s:M |
||||
|
|
||||
|
" {{{2 Highlighting groups for "allblue" colors. |
||||
|
call s:hi( 'Normal' , 'none' , 'white' , 'black' ) |
||||
|
|
||||
|
call s:hi( 'Cursor' , 'none' , 'black' , 'green' ) |
||||
|
call s:hi( 'CursorColumn' , 'none' , 'none' , 'grey4' ) |
||||
|
call s:hi( 'CursorLine' , 'none' , 'none' , 'grey4' ) |
||||
|
call s:hi( 'DiffAdd' , 'none' , 'lightbrown' , 'grey2' ) |
||||
|
call s:hi( 'DiffChange' , 'none' , 'yellow' , 'grey2' ) |
||||
|
call s:hi( 'DiffDelete' , 'none' , 'dirtygreen' , 'grey2' ) |
||||
|
call s:hi( 'DiffText' , 'none' , 'yellowgreen' , 'grey2' ) |
||||
|
call s:hi( 'Directory' , 'none' , 'lightblue' , 'none' ) |
||||
|
call s:hi( 'ErrorMsg' , 'none' , 'white' , 'darkred' ) |
||||
|
call s:hi( 'FoldColumn' , 'none' , 'grey4' , 'none' ) |
||||
|
call s:hi( 'Folded' , 'none' , 'white1' , 'grey2' ) |
||||
|
call s:hi( 'IncSearch' , 'none' , 'white' , 'darkblue' ) |
||||
|
call s:hi( 'LineNr' , 'none' , 'yellow' , 'none' ) |
||||
|
call s:hi( 'MatchParen' , 'bold' , 'none' , 'none' ) |
||||
|
call s:hi( 'ModeMsg' , 'bold' , 'none' , 'none' ) |
||||
|
call s:hi( 'MoreMsg' , 'none' , 'green' , 'none' ) |
||||
|
call s:hi( 'NonText' , 'none' , 'lightbrown' , 'none' ) |
||||
|
call s:hi( 'Pmenu' , 'none' , 'none' , 'grey3' ) |
||||
|
call s:hi( 'PmenuSel' , 'none' , 'none' , 'darkblue' ) |
||||
|
call s:hi( 'PmenuSbar' , 'none' , 'none' , 'grey2' ) |
||||
|
call s:hi( 'PmenuThumb' , 'none' , 'none' , 'grey4' ) |
||||
|
call s:hi( 'Question' , 'none' , 'green' , 'none' ) |
||||
|
call s:hi( 'Search' , 'none' , 'black' , 'darkcyan' ) |
||||
|
call s:hi( 'SignColumn' , 'none' , 'yellow' , 'grey1' ) |
||||
|
call s:hi( 'SpecialKey' , 'none' , 'yellow' , 'none' ) |
||||
|
call s:hi( 'StatusLineNC' , 'none' , 'grey' , 'grey3' ) |
||||
|
call s:hi( 'StatusLine' , 'none' , 'white' , 'grey5' ) |
||||
|
call s:hi( 'TabLine' , 'none' , 'none' , 'grey3' ) |
||||
|
call s:hi( 'TabLineFill' , 'none' , 'none' , 'grey3' ) |
||||
|
call s:hi( 'TabLineSel' , 'bold' , 'none' , 'none' ) |
||||
|
call s:hi( 'Title' , 'none' , 'yellow' , 'none' ) |
||||
|
call s:hi( 'VertSplit' , 'none' , 'grey3' , 'grey3' ) |
||||
|
call s:hi( 'Visual' , 'none' , 'none' , 'darkblue' ) |
||||
|
call s:hi( 'VisualNOS' , 'none' , 'none' , 'grey2' ) |
||||
|
call s:hi( 'WarningMsg' , 'none' , 'red' , 'none' ) |
||||
|
call s:hi( 'WildMenu' , 'none' , 'yellow' , 'none' ) |
||||
|
|
||||
|
call s:hi( 'Comment' , 'none' , 'purple' , 'none' ) |
||||
|
call s:hi( 'Constant' , 'none' , 'lightcyan' , 'none' ) |
||||
|
call s:hi( 'Error' , 'none' , 'red' , 'none' ) |
||||
|
call s:hi( 'Identifier' , 'none' , 'cyan' , 'none' ) |
||||
|
call s:hi( 'Ignore' , 'none' , 'grey3' , 'none' ) |
||||
|
call s:hi( 'PreProc' , 'none' , 'darkpurple' , 'none' ) |
||||
|
call s:hi( 'Special' , 'none' , 'bluegreen' , 'none' ) |
||||
|
call s:hi( 'Statement' , 'none' , 'skyblue' , 'none' ) |
||||
|
call s:hi( 'Todo' , 'none' , 'lightbrown' , 'none' ) |
||||
|
call s:hi( 'Type' , 'none' , 'green' , 'none' ) |
||||
|
call s:hi( 'Underlined' , 'none' , 'darkpurple' , 'none' ) |
||||
|
|
||||
|
" {{{2 Spelling highlighting groups. |
||||
|
" |
||||
|
" The undercurl looks great in gui, so let's use that. For cterm use |
||||
|
" some crappy grey background + bold / etc. Not something that stands |
||||
|
" out too much because there are invariably numerous spelling mistakes |
||||
|
" highlighted in most code. |
||||
|
" |
||||
|
call s:hi( 'SpellBad' , 'bold,underline' , 'none', 'grey2', |
||||
|
\ 'undercurl' , 'none', 'none' , 'red' ) |
||||
|
call s:hi( 'SpellCap' , 'bold' , 'none', 'grey2', |
||||
|
\ 'undercurl' , 'none', 'none' , 'skyblue' ) |
||||
|
call s:hi( 'SpellLocal' , 'underline' , 'none', 'grey2', |
||||
|
\ 'undercurl' , 'none', 'none' , 'lightcyan' ) |
||||
|
call s:hi( 'SpellRare' , 'underline' , 'none', 'none' , |
||||
|
\ 'undercurl' , 'none', 'none' , 'yellow' ) |
||||
|
|
||||
|
" {{{2 Highlighting groups for email. |
||||
|
" |
||||
|
" mailURL links to Constant, which is light cyan. This does not stand |
||||
|
" out well in quoted emails (which is cyan), or regular text. Better |
||||
|
" to use light brown (like the soft colormap). |
||||
|
hi link mailURL Todo |
||||
|
|
||||
|
" {{{2 Define html highlighting groups for "allblue" colors |
||||
|
if !exists("g:xterm16_NoHtmlColors") |
||||
|
call s:hi( 'htmlBold', 'none', 'yellow', 'none', 'bold', 'none') |
||||
|
call s:hi( 'htmlItalic', 'none', 'yellow', 'none', 'italic', 'none') |
||||
|
call s:hi( 'htmlUnderline', 'none', 'darkpurple', 'none', 'underline', 'none') |
||||
|
call s:hi( 'htmlBoldItalic', 'bold', 'yellow', 'none', 'bold,italic', 'none') |
||||
|
call s:hi( 'htmlBoldUnderline', 'bold', 'darkpurple', 'none', 'bold,underline', 'none') |
||||
|
call s:hi( 'htmlUnderlineItalic', 'bold', 'darkpurple', 'none', 'underline,italic', 'none') |
||||
|
call s:hi( 'htmlBoldUnderlineItalic', 'bold', 'white', 'none', 'bold,underline,italic', 'none') |
||||
|
endif |
||||
|
" }}}2 |
||||
|
else |
||||
|
throw 'xterm16 Error: Unrecognised colormap "' . s:colormap . '"' |
||||
|
endif |
||||
|
" }}}1 |
||||
|
catch /^xterm16 Error:/ |
||||
|
" {{{1 Handle internal exceptions. |
||||
|
unlet colors_name |
||||
|
|
||||
|
echohl ErrorMsg |
||||
|
echomsg v:exception |
||||
|
echohl None |
||||
|
" }}}1 |
||||
|
finally |
||||
|
" {{{1 Unlet script variables and functions |
||||
|
" Restore compatibility options |
||||
|
let &cpo = s:cpo_save |
||||
|
unlet! s:c1 s:c2 s:c3 |
||||
|
unlet! s:i s:lower s:upper s:ccube s:cinterval |
||||
|
unlet! s:cpo_save s:hex s:l s:m s:h s:cterm_none s:gui_none |
||||
|
|
||||
|
" Delete colors of "standard" colormap |
||||
|
unlet! s:gui_black s:gui_darkred s:gui_darkgreen s:gui_darkyellow s:gui_darkblue s:gui_darkmagenta s:gui_darkcyan s:gui_grey s:gui_darkgrey s:gui_red s:gui_green s:gui_yellow s:gui_blue s:gui_magenta s:gui_cyan s:gui_white |
||||
|
unlet! s:cterm_black s:cterm_darkred s:cterm_darkgreen s:cterm_darkyellow s:cterm_darkblue s:cterm_darkmagenta s:cterm_darkcyan s:cterm_grey s:cterm_darkgrey s:cterm_red s:cterm_green s:cterm_yellow s:cterm_blue s:cterm_magenta s:cterm_cyan s:cterm_white |
||||
|
|
||||
|
" Delete extra colors of "soft" colormap |
||||
|
unlet! s:gui_lightbrown s:gui_bluegreen s:gui_skyblue s:gui_purple |
||||
|
unlet! s:cterm_lightbrown s:cterm_bluegreen s:cterm_skyblue s:cterm_purple |
||||
|
|
||||
|
" Delete extra colors from "allblue" colormap |
||||
|
unlet! s:gui_darkcyan s:gui_darkblue s:gui_grey1 s:gui_grey2 s:gui_grey3 s:gui_grey4 s:gui_grey5 s:gui_white1 s:gui_dirtygreen s:gui_yellowgreen s:gui_lightblue s:gui_lightcyan s:gui_darkpurple |
||||
|
unlet! s:cterm_darkcyan s:cterm_darkblue s:cterm_grey1 s:cterm_grey2 s:cterm_grey3 s:cterm_grey4 s:cterm_grey5 s:cterm_white1 s:cterm_dirtygreen s:cterm_yellowgreen s:cterm_lightblue s:cterm_lightcyan s:cterm_darkpurple |
||||
|
|
||||
|
delfunction s:tohex |
||||
|
delfunction s:extractRGB |
||||
|
delfunction s:guilevel |
||||
|
delfunction s:ctermlevel |
||||
|
delfunction s:guicolor |
||||
|
delfunction s:ctermcolor |
||||
|
delfunction s:setcolor |
||||
|
delfunction s:getcolor |
||||
|
delfunction s:use_guiattr |
||||
|
delfunction s:hi |
||||
|
delfunction s:set_brightness |
||||
|
" }}}1 |
||||
|
endtry |
@ -0,0 +1,10 @@ |
|||||
|
Example Project: |
||||
|
- Start example project file @computer @done |
||||
|
- Brainstorm project with colleagues @work |
||||
|
- Email Joan about project @email |
||||
|
Sub Project: |
||||
|
- Sub task |
||||
|
|
||||
|
Next Project: |
||||
|
- Draft ideas for next project @anywhere |
||||
|
- Email Bob to arrange meeting @email |
@ -0,0 +1,9 @@ |
|||||
|
taskpaper taskpaper.txt /*taskpaper* |
||||
|
taskpaper-config taskpaper.txt /*taskpaper-config* |
||||
|
taskpaper-customize taskpaper.txt /*taskpaper-customize* |
||||
|
taskpaper-install taskpaper.txt /*taskpaper-install* |
||||
|
taskpaper-licence taskpaper.txt /*taskpaper-licence* |
||||
|
taskpaper-mappings taskpaper.txt /*taskpaper-mappings* |
||||
|
taskpaper-plugin taskpaper.txt /*taskpaper-plugin* |
||||
|
taskpaper-syntax taskpaper.txt /*taskpaper-syntax* |
||||
|
taskpaper.txt taskpaper.txt /*taskpaper.txt* |
@ -0,0 +1,310 @@ |
|||||
|
*taskpaper.txt* For Vim version 6.0 Last change: 2012 March 13 |
||||
|
|
||||
|
David O'Callaghan <david.ocallaghan@cs.tcd.ie> |
||||
|
|
||||
|
13th March 2012 |
||||
|
|
||||
|
Introduction |
||||
|
============= |
||||
|
*taskpaper* |
||||
|
|
||||
|
*Latest version from https://github.com/davidoc/taskpaper.vim* |
||||
|
|
||||
|
From the TaskPaper website (<http://hogbaysoftware.com/projects/taskpaper>): |
||||
|
|
||||
|
"TaskPaper is a simple to-do list application that helps you stay |
||||
|
organized. Unlike competing applications, TaskPaper is based on plain text |
||||
|
files which offer you paper-like simplicity and ease of use." |
||||
|
|
||||
|
TaskPaper is a to-do list application for Mac OS X based on the "Getting |
||||
|
Things Done" approach of David Allen (<http://www.davidco.com/>). It supports |
||||
|
the GTD notions of projects, tasks and contexts. |
||||
|
|
||||
|
This package contains a syntax file and a file-type plugin for the simple |
||||
|
format used by the TaskPaper application. It is intended for Mac users who |
||||
|
want to edit their TaskPaper lists in Vim from time to time (for example, in |
||||
|
a SSH session, or on a non-Mac system) and for anyone who is looking for a |
||||
|
simple to-do list format. |
||||
|
|
||||
|
Installation |
||||
|
============= |
||||
|
*taskpaper-install* |
||||
|
|
||||
|
It should be safe to simply unpack the package into your .vim directory. |
||||
|
It contains the following files: |
||||
|
|
||||
|
autoload/taskpaper.vim |
||||
|
doc/example.taskpaper |
||||
|
doc/taskpaper.txt |
||||
|
doc/taskpaper_licence.txt |
||||
|
ftdetect/taskpaper.vim |
||||
|
ftplugin/taskpaper.vim |
||||
|
syntax/taskpaper.vim |
||||
|
|
||||
|
To access this help file from within Vim you must first update your help |
||||
|
tags: |
||||
|
|
||||
|
:helptags ~/.vim/doc |
||||
|
|
||||
|
The path may need to be modified depending on where you install to. Once |
||||
|
you have done this you can access the help with this command: |
||||
|
|
||||
|
:help taskpaper |
||||
|
|
||||
|
Syntax |
||||
|
======= |
||||
|
*taskpaper-syntax* |
||||
|
|
||||
|
The syntax file highlights project headings and task contexts (tags), and |
||||
|
"greys out" completed tasks. The exact style of the displayed file depends |
||||
|
on your Vim colour scheme. |
||||
|
|
||||
|
A project heading is a piece of text ending in a colon. |
||||
|
|
||||
|
A task is a line beginning with a hyphen '-' and can have zero or more |
||||
|
context tags. |
||||
|
|
||||
|
A context tag has the form "@tag". |
||||
|
|
||||
|
Other text is considered as a "note" and is displayed as a Vim comment. |
||||
|
|
||||
|
File-type Plugin |
||||
|
================= |
||||
|
*taskpaper-plugin* |
||||
|
|
||||
|
The file-type plugin tries to make editing TaskPaper files in Vim more |
||||
|
comfortable. |
||||
|
|
||||
|
Vim can complete context names after the '@' using the keyword completion |
||||
|
commands (e.g. Ctrl-X Ctrl-N). |
||||
|
|
||||
|
*taskpaper-mappings* |
||||
|
The plugin defines some new mappings: |
||||
|
|
||||
|
\td Mark task as done |
||||
|
\tx Mark task as cancelled |
||||
|
\tt Mark task as today |
||||
|
\tD Archive @done items |
||||
|
\tX Show tasks marked as cancelled |
||||
|
\tT Show tasks marked as today |
||||
|
\t/ Search for items including keyword |
||||
|
\ts Search for items including tag |
||||
|
\tp Fold all projects |
||||
|
\t. Fold all notes |
||||
|
\tP Focus on the current project |
||||
|
\tj Go to next project |
||||
|
\tk Go to previous project |
||||
|
\tg Go to specified project |
||||
|
\tm Move task to specified project |
||||
|
|
||||
|
Note: if `<Leader>` has been changed (e.g. `:let mapleader=",,"`) |
||||
|
then its value should be used instead of `\` in the mappings. |
||||
|
|
||||
|
Marking a task as done will add the "@done" context tag to the end of the |
||||
|
task, and it will be greyed out by the syntax file. |
||||
|
|
||||
|
To show all tasks with a particular context tag, type `\ts` and a tag name to |
||||
|
search. If you use the `\ts` command over the desired context tag, the tag |
||||
|
name is set as default value. This will fold all the irrelevant tasks leaving |
||||
|
only the tasks in the current context visible. |
||||
|
|
||||
|
To fold all top-level projects leaving only the headings visible use the `\tp` |
||||
|
command. Standard fold commands can be used to open (`zo`) and close (`zc`) |
||||
|
individual projects. |
||||
|
|
||||
|
To show all projects and tasks use the `zR` command. This disables folding so |
||||
|
that the entire file is expanded. |
||||
|
|
||||
|
To go to next or previous project use the `\tj` command or `\tk` command. To |
||||
|
go to a project you specify use the `\tg` command. You can complete project |
||||
|
names with <Tab> on prompt. |
||||
|
|
||||
|
Configuration |
||||
|
============== |
||||
|
*taskpaper-config* |
||||
|
|
||||
|
The plugin supports a number of configuration variables, which can be set in |
||||
|
your .vimrc file. |
||||
|
|
||||
|
To change the default date format string used when marking a task complete, |
||||
|
define the `task_paper_date_format` variable. The format matches your system's |
||||
|
`strftime()` function. |
||||
|
|
||||
|
For example, to include the date and time in ISO8601 format: |
||||
|
|
||||
|
let g:task_paper_date_format = "%Y-%m-%dT%H:%M:%S%z" |
||||
|
|
||||
|
To change the default archive project name, define the |
||||
|
`task_paper_archive_project` variable. The default value is "Archive". |
||||
|
|
||||
|
let g:task_paper_archive_project = "Archive" |
||||
|
|
||||
|
By default, when you move a task, the cursor will follow that task to its new |
||||
|
location. To make the cursor stay in it's current location, change the |
||||
|
`task_paper_follow_move` variable. |
||||
|
|
||||
|
let g:task_paper_follow_move = 0 |
||||
|
|
||||
|
If you want to hide done tasks when searching you can change the |
||||
|
`task_paper_search_hide_done` variable. |
||||
|
|
||||
|
let g:task_paper_search_hide_done = 1 |
||||
|
|
||||
|
To set a custom style (colour, bold, etc.) for tags task_paper_styles variable, |
||||
|
which is a dictionary. |
||||
|
|
||||
|
let g:task_paper_styles={'wait': 'ctermfg=Blue guifg=Blue', 'FAIL': |
||||
|
'ctermbg=Red guibg=Red'} |
||||
|
|
||||
|
See |highlight-args| for a full description of the syntax. |
||||
|
|
||||
|
|
||||
|
File-type Detection |
||||
|
==================== |
||||
|
|
||||
|
This package also contains a script to automatically use the TaskPaper file |
||||
|
type for all files with the ".taskpaper" extension. |
||||
|
|
||||
|
Customize |
||||
|
========== |
||||
|
*taskpaper-customize* |
||||
|
|
||||
|
You can create your own shortcut for tagging. To define your own shortcut, |
||||
|
write settings in ~/.vim/ftplugin/taskpaper.vim or ~/.vimrc. If you use the |
||||
|
.vimrc file, define settings like: |
||||
|
|
||||
|
function! s:taskpaper_setup() |
||||
|
" Your settings |
||||
|
nnoremap <buffer> <silent> <Leader>tn |
||||
|
\ :<C-u>call taskpaper#toggle_tag('next', '')<CR> |
||||
|
endfunction |
||||
|
|
||||
|
augroup vimrc-taskpaper |
||||
|
autocmd! |
||||
|
autocmd FileType taskpaper call s:taskpaper_setup() |
||||
|
augroup END |
||||
|
|
||||
|
To add a tag without argument: |
||||
|
|
||||
|
nnoremap <buffer> <silent> <Leader>tn |
||||
|
\ :<C-u>call taskpaper#add_tag('next', '')<CR> |
||||
|
|
||||
|
To delete a tag: |
||||
|
|
||||
|
nnoremap <buffer> <silent> <Leader>tN |
||||
|
\ :<C-u>call taskpaper#delete_tag('next', '')<CR> |
||||
|
|
||||
|
To toggle a tag: |
||||
|
|
||||
|
nnoremap <buffer> <silent> <Leader>tn |
||||
|
\ :<C-u>call taskpaper#toggle_tag('next', '')<CR> |
||||
|
|
||||
|
To add a tag with an argument: |
||||
|
|
||||
|
nnoremap <buffer> <silent> <Leader>tq |
||||
|
\ :<C-u>call taskpaper#add_tag('priority')<CR> |
||||
|
|
||||
|
You can specify the priority value on prompt. |
||||
|
|
||||
|
To delete the priority tag with any argument: |
||||
|
|
||||
|
nnoremap <buffer> <silent> <Leader>tQ |
||||
|
\ :<C-u>call taskpaper#delete_tag('priority', '')<CR> |
||||
|
|
||||
|
To delete only the level 1 of priority tag: |
||||
|
|
||||
|
nnoremap <buffer> <silent> <Leader>tQ |
||||
|
\ :<C-u>call taskpaper#delete_tag('priority', '1')<CR> |
||||
|
|
||||
|
To toggle a tag with an argument: |
||||
|
|
||||
|
nnoremap <buffer> <silent> <Leader>tq |
||||
|
\ :<C-u>call taskpaper#toggle_tag('priority')<CR> |
||||
|
|
||||
|
To update a tag (not delete if the tag exists): |
||||
|
|
||||
|
nnoremap <buffer> <silent> <Leader>tq |
||||
|
\ :<C-u>call taskpaper#update_tag('priority')<CR> |
||||
|
|
||||
|
Licence |
||||
|
======== |
||||
|
*taskpaper-licence* |
||||
|
|
||||
|
Copyright (C) 2007--2012 by David O'Callaghan <david.ocallaghan@cs.tcd.ie> |
||||
|
|
||||
|
This program is free software; you can redistribute it and/or modify |
||||
|
it under the terms of the GNU General Public License as published by |
||||
|
the Free Software Foundation; either version 2 of the License, or |
||||
|
(at your option) any later version. |
||||
|
|
||||
|
This program is distributed in the hope that it will be useful, |
||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
GNU General Public License for more details. |
||||
|
|
||||
|
You should have received a copy of the GNU General Public License |
||||
|
along with this program; if not, write to the Free Software |
||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
||||
|
|
||||
|
Acknowledgements |
||||
|
================= |
||||
|
|
||||
|
The initial version of the ToggleDone() function was based on SwitchBox() |
||||
|
from the VimOutliner Checkboxes script written by Noel Henson (available |
||||
|
from <http://www.vimoutliner.org>). |
||||
|
|
||||
|
Context folding expression was based on a snippet from Vim Tip 282 |
||||
|
(<http://vim.sourceforge.net/tips/tip.php?tip_id=282>). |
||||
|
|
||||
|
Thanks are due to a number of contributors who have supplied suggestions |
||||
|
or patches to improve TaskPaper.vim: |
||||
|
|
||||
|
* Alexander Wodniok |
||||
|
- hint to allow this file to be used as a help file |
||||
|
* Ben Armstron |
||||
|
- various fixes that make the scripts more robust |
||||
|
- fix to show only complete tag matches |
||||
|
- include `_` in contexts |
||||
|
* Huahai Yang |
||||
|
- fixed handling of indented tasks |
||||
|
* Steve Audette |
||||
|
- suggested change to folding |
||||
|
* Andreas Kühntopf |
||||
|
- display non-tasks as comments |
||||
|
* Julien Blanchard (https://github.com/julienXX) |
||||
|
- added ToggleCancelled |
||||
|
* Robert James Kaes (https://github.com/rjkaes) |
||||
|
- added task_paper_date_format |
||||
|
* Adriano Castro (https://github.com/adrianocastro) |
||||
|
- use tabs not spaces (noexpandtab) |
||||
|
* Morgan Sutherland (https://github.com/msutherl) |
||||
|
- Use <Leader> rather than <LocalLeader> |
||||
|
- Start new task after <CR> |
||||
|
* Matt Sacks (https://github.com/mattsa) |
||||
|
- Optional (date) syntax for @done tasks |
||||
|
- Add Tag command for add/removing tag |
||||
|
- Fix lagging space after removing a tag |
||||
|
- Better syntax |
||||
|
* Anyakichi (https://github.com/anyakichi) |
||||
|
- Add useful functions for users to define his own mappings easily |
||||
|
- Add, delete, toggle, and update tags |
||||
|
- Go previous or next project |
||||
|
- Move projects, tasks and notes to another project |
||||
|
- Search for keywords or tags with regexp |
||||
|
- More compatible with HogBaySoftware's TaskPaper |
||||
|
- Tag to projects and notes not only tasks |
||||
|
- Shortcut to @today tag |
||||
|
- Archiving done support |
||||
|
- Multi-level folding of projects work perfectly |
||||
|
- Add a new feature to fold only notes |
||||
|
|
||||
|
|
||||
|
|
||||
|
Contact |
||||
|
======== |
||||
|
|
||||
|
The author of these Vim scripts is David O'Callaghan |
||||
|
<david.ocallaghan@cs.tcd.ie>. |
||||
|
|
||||
|
For all information regarding the TaskPaper application itself please visit |
||||
|
<http://hogbaysoftware.com/projects/taskpaper/>. |
@ -0,0 +1,8 @@ |
|||||
|
Version Control |
||||
|
---------------- |
||||
|
|
||||
|
github (http://github.com) is used for version control. The main |
||||
|
repository is at <https://github.com/davidoc/taskpaper.vim>. |
||||
|
|
||||
|
To start working on the source code you should create an account on github, |
||||
|
fork taskpaper.vim and checkout your fork. |
@ -0,0 +1,339 @@ |
|||||
|
GNU GENERAL PUBLIC LICENSE |
||||
|
Version 2, June 1991 |
||||
|
|
||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc., |
||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
||||
|
Everyone is permitted to copy and distribute verbatim copies |
||||
|
of this license document, but changing it is not allowed. |
||||
|
|
||||
|
Preamble |
||||
|
|
||||
|
The licenses for most software are designed to take away your |
||||
|
freedom to share and change it. By contrast, the GNU General Public |
||||
|
License is intended to guarantee your freedom to share and change free |
||||
|
software--to make sure the software is free for all its users. This |
||||
|
General Public License applies to most of the Free Software |
||||
|
Foundation's software and to any other program whose authors commit to |
||||
|
using it. (Some other Free Software Foundation software is covered by |
||||
|
the GNU Lesser General Public License instead.) You can apply it to |
||||
|
your programs, too. |
||||
|
|
||||
|
When we speak of free software, we are referring to freedom, not |
||||
|
price. Our General Public Licenses are designed to make sure that you |
||||
|
have the freedom to distribute copies of free software (and charge for |
||||
|
this service if you wish), that you receive source code or can get it |
||||
|
if you want it, that you can change the software or use pieces of it |
||||
|
in new free programs; and that you know you can do these things. |
||||
|
|
||||
|
To protect your rights, we need to make restrictions that forbid |
||||
|
anyone to deny you these rights or to ask you to surrender the rights. |
||||
|
These restrictions translate to certain responsibilities for you if you |
||||
|
distribute copies of the software, or if you modify it. |
||||
|
|
||||
|
For example, if you distribute copies of such a program, whether |
||||
|
gratis or for a fee, you must give the recipients all the rights that |
||||
|
you have. You must make sure that they, too, receive or can get the |
||||
|
source code. And you must show them these terms so they know their |
||||
|
rights. |
||||
|
|
||||
|
We protect your rights with two steps: (1) copyright the software, and |
||||
|
(2) offer you this license which gives you legal permission to copy, |
||||
|
distribute and/or modify the software. |
||||
|
|
||||
|
Also, for each author's protection and ours, we want to make certain |
||||
|
that everyone understands that there is no warranty for this free |
||||
|
software. If the software is modified by someone else and passed on, we |
||||
|
want its recipients to know that what they have is not the original, so |
||||
|
that any problems introduced by others will not reflect on the original |
||||
|
authors' reputations. |
||||
|
|
||||
|
Finally, any free program is threatened constantly by software |
||||
|
patents. We wish to avoid the danger that redistributors of a free |
||||
|
program will individually obtain patent licenses, in effect making the |
||||
|
program proprietary. To prevent this, we have made it clear that any |
||||
|
patent must be licensed for everyone's free use or not licensed at all. |
||||
|
|
||||
|
The precise terms and conditions for copying, distribution and |
||||
|
modification follow. |
||||
|
|
||||
|
GNU GENERAL PUBLIC LICENSE |
||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
||||
|
|
||||
|
0. This License applies to any program or other work which contains |
||||
|
a notice placed by the copyright holder saying it may be distributed |
||||
|
under the terms of this General Public License. The "Program", below, |
||||
|
refers to any such program or work, and a "work based on the Program" |
||||
|
means either the Program or any derivative work under copyright law: |
||||
|
that is to say, a work containing the Program or a portion of it, |
||||
|
either verbatim or with modifications and/or translated into another |
||||
|
language. (Hereinafter, translation is included without limitation in |
||||
|
the term "modification".) Each licensee is addressed as "you". |
||||
|
|
||||
|
Activities other than copying, distribution and modification are not |
||||
|
covered by this License; they are outside its scope. The act of |
||||
|
running the Program is not restricted, and the output from the Program |
||||
|
is covered only if its contents constitute a work based on the |
||||
|
Program (independent of having been made by running the Program). |
||||
|
Whether that is true depends on what the Program does. |
||||
|
|
||||
|
1. You may copy and distribute verbatim copies of the Program's |
||||
|
source code as you receive it, in any medium, provided that you |
||||
|
conspicuously and appropriately publish on each copy an appropriate |
||||
|
copyright notice and disclaimer of warranty; keep intact all the |
||||
|
notices that refer to this License and to the absence of any warranty; |
||||
|
and give any other recipients of the Program a copy of this License |
||||
|
along with the Program. |
||||
|
|
||||
|
You may charge a fee for the physical act of transferring a copy, and |
||||
|
you may at your option offer warranty protection in exchange for a fee. |
||||
|
|
||||
|
2. You may modify your copy or copies of the Program or any portion |
||||
|
of it, thus forming a work based on the Program, and copy and |
||||
|
distribute such modifications or work under the terms of Section 1 |
||||
|
above, provided that you also meet all of these conditions: |
||||
|
|
||||
|
a) You must cause the modified files to carry prominent notices |
||||
|
stating that you changed the files and the date of any change. |
||||
|
|
||||
|
b) You must cause any work that you distribute or publish, that in |
||||
|
whole or in part contains or is derived from the Program or any |
||||
|
part thereof, to be licensed as a whole at no charge to all third |
||||
|
parties under the terms of this License. |
||||
|
|
||||
|
c) If the modified program normally reads commands interactively |
||||
|
when run, you must cause it, when started running for such |
||||
|
interactive use in the most ordinary way, to print or display an |
||||
|
announcement including an appropriate copyright notice and a |
||||
|
notice that there is no warranty (or else, saying that you provide |
||||
|
a warranty) and that users may redistribute the program under |
||||
|
these conditions, and telling the user how to view a copy of this |
||||
|
License. (Exception: if the Program itself is interactive but |
||||
|
does not normally print such an announcement, your work based on |
||||
|
the Program is not required to print an announcement.) |
||||
|
|
||||
|
These requirements apply to the modified work as a whole. If |
||||
|
identifiable sections of that work are not derived from the Program, |
||||
|
and can be reasonably considered independent and separate works in |
||||
|
themselves, then this License, and its terms, do not apply to those |
||||
|
sections when you distribute them as separate works. But when you |
||||
|
distribute the same sections as part of a whole which is a work based |
||||
|
on the Program, the distribution of the whole must be on the terms of |
||||
|
this License, whose permissions for other licensees extend to the |
||||
|
entire whole, and thus to each and every part regardless of who wrote it. |
||||
|
|
||||
|
Thus, it is not the intent of this section to claim rights or contest |
||||
|
your rights to work written entirely by you; rather, the intent is to |
||||
|
exercise the right to control the distribution of derivative or |
||||
|
collective works based on the Program. |
||||
|
|
||||
|
In addition, mere aggregation of another work not based on the Program |
||||
|
with the Program (or with a work based on the Program) on a volume of |
||||
|
a storage or distribution medium does not bring the other work under |
||||
|
the scope of this License. |
||||
|
|
||||
|
3. You may copy and distribute the Program (or a work based on it, |
||||
|
under Section 2) in object code or executable form under the terms of |
||||
|
Sections 1 and 2 above provided that you also do one of the following: |
||||
|
|
||||
|
a) Accompany it with the complete corresponding machine-readable |
||||
|
source code, which must be distributed under the terms of Sections |
||||
|
1 and 2 above on a medium customarily used for software interchange; or, |
||||
|
|
||||
|
b) Accompany it with a written offer, valid for at least three |
||||
|
years, to give any third party, for a charge no more than your |
||||
|
cost of physically performing source distribution, a complete |
||||
|
machine-readable copy of the corresponding source code, to be |
||||
|
distributed under the terms of Sections 1 and 2 above on a medium |
||||
|
customarily used for software interchange; or, |
||||
|
|
||||
|
c) Accompany it with the information you received as to the offer |
||||
|
to distribute corresponding source code. (This alternative is |
||||
|
allowed only for noncommercial distribution and only if you |
||||
|
received the program in object code or executable form with such |
||||
|
an offer, in accord with Subsection b above.) |
||||
|
|
||||
|
The source code for a work means the preferred form of the work for |
||||
|
making modifications to it. For an executable work, complete source |
||||
|
code means all the source code for all modules it contains, plus any |
||||
|
associated interface definition files, plus the scripts used to |
||||
|
control compilation and installation of the executable. However, as a |
||||
|
special exception, the source code distributed need not include |
||||
|
anything that is normally distributed (in either source or binary |
||||
|
form) with the major components (compiler, kernel, and so on) of the |
||||
|
operating system on which the executable runs, unless that component |
||||
|
itself accompanies the executable. |
||||
|
|
||||
|
If distribution of executable or object code is made by offering |
||||
|
access to copy from a designated place, then offering equivalent |
||||
|
access to copy the source code from the same place counts as |
||||
|
distribution of the source code, even though third parties are not |
||||
|
compelled to copy the source along with the object code. |
||||
|
|
||||
|
4. You may not copy, modify, sublicense, or distribute the Program |
||||
|
except as expressly provided under this License. Any attempt |
||||
|
otherwise to copy, modify, sublicense or distribute the Program is |
||||
|
void, and will automatically terminate your rights under this License. |
||||
|
However, parties who have received copies, or rights, from you under |
||||
|
this License will not have their licenses terminated so long as such |
||||
|
parties remain in full compliance. |
||||
|
|
||||
|
5. You are not required to accept this License, since you have not |
||||
|
signed it. However, nothing else grants you permission to modify or |
||||
|
distribute the Program or its derivative works. These actions are |
||||
|
prohibited by law if you do not accept this License. Therefore, by |
||||
|
modifying or distributing the Program (or any work based on the |
||||
|
Program), you indicate your acceptance of this License to do so, and |
||||
|
all its terms and conditions for copying, distributing or modifying |
||||
|
the Program or works based on it. |
||||
|
|
||||
|
6. Each time you redistribute the Program (or any work based on the |
||||
|
Program), the recipient automatically receives a license from the |
||||
|
original licensor to copy, distribute or modify the Program subject to |
||||
|
these terms and conditions. You may not impose any further |
||||
|
restrictions on the recipients' exercise of the rights granted herein. |
||||
|
You are not responsible for enforcing compliance by third parties to |
||||
|
this License. |
||||
|
|
||||
|
7. If, as a consequence of a court judgment or allegation of patent |
||||
|
infringement or for any other reason (not limited to patent issues), |
||||
|
conditions are imposed on you (whether by court order, agreement or |
||||
|
otherwise) that contradict the conditions of this License, they do not |
||||
|
excuse you from the conditions of this License. If you cannot |
||||
|
distribute so as to satisfy simultaneously your obligations under this |
||||
|
License and any other pertinent obligations, then as a consequence you |
||||
|
may not distribute the Program at all. For example, if a patent |
||||
|
license would not permit royalty-free redistribution of the Program by |
||||
|
all those who receive copies directly or indirectly through you, then |
||||
|
the only way you could satisfy both it and this License would be to |
||||
|
refrain entirely from distribution of the Program. |
||||
|
|
||||
|
If any portion of this section is held invalid or unenforceable under |
||||
|
any particular circumstance, the balance of the section is intended to |
||||
|
apply and the section as a whole is intended to apply in other |
||||
|
circumstances. |
||||
|
|
||||
|
It is not the purpose of this section to induce you to infringe any |
||||
|
patents or other property right claims or to contest validity of any |
||||
|
such claims; this section has the sole purpose of protecting the |
||||
|
integrity of the free software distribution system, which is |
||||
|
implemented by public license practices. Many people have made |
||||
|
generous contributions to the wide range of software distributed |
||||
|
through that system in reliance on consistent application of that |
||||
|
system; it is up to the author/donor to decide if he or she is willing |
||||
|
to distribute software through any other system and a licensee cannot |
||||
|
impose that choice. |
||||
|
|
||||
|
This section is intended to make thoroughly clear what is believed to |
||||
|
be a consequence of the rest of this License. |
||||
|
|
||||
|
8. If the distribution and/or use of the Program is restricted in |
||||
|
certain countries either by patents or by copyrighted interfaces, the |
||||
|
original copyright holder who places the Program under this License |
||||
|
may add an explicit geographical distribution limitation excluding |
||||
|
those countries, so that distribution is permitted only in or among |
||||
|
countries not thus excluded. In such case, this License incorporates |
||||
|
the limitation as if written in the body of this License. |
||||
|
|
||||
|
9. The Free Software Foundation may publish revised and/or new versions |
||||
|
of the General Public License from time to time. Such new versions will |
||||
|
be similar in spirit to the present version, but may differ in detail to |
||||
|
address new problems or concerns. |
||||
|
|
||||
|
Each version is given a distinguishing version number. If the Program |
||||
|
specifies a version number of this License which applies to it and "any |
||||
|
later version", you have the option of following the terms and conditions |
||||
|
either of that version or of any later version published by the Free |
||||
|
Software Foundation. If the Program does not specify a version number of |
||||
|
this License, you may choose any version ever published by the Free Software |
||||
|
Foundation. |
||||
|
|
||||
|
10. If you wish to incorporate parts of the Program into other free |
||||
|
programs whose distribution conditions are different, write to the author |
||||
|
to ask for permission. For software which is copyrighted by the Free |
||||
|
Software Foundation, write to the Free Software Foundation; we sometimes |
||||
|
make exceptions for this. Our decision will be guided by the two goals |
||||
|
of preserving the free status of all derivatives of our free software and |
||||
|
of promoting the sharing and reuse of software generally. |
||||
|
|
||||
|
NO WARRANTY |
||||
|
|
||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
||||
|
REPAIR OR CORRECTION. |
||||
|
|
||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
||||
|
POSSIBILITY OF SUCH DAMAGES. |
||||
|
|
||||
|
END OF TERMS AND CONDITIONS |
||||
|
|
||||
|
How to Apply These Terms to Your New Programs |
||||
|
|
||||
|
If you develop a new program, and you want it to be of the greatest |
||||
|
possible use to the public, the best way to achieve this is to make it |
||||
|
free software which everyone can redistribute and change under these terms. |
||||
|
|
||||
|
To do so, attach the following notices to the program. It is safest |
||||
|
to attach them to the start of each source file to most effectively |
||||
|
convey the exclusion of warranty; and each file should have at least |
||||
|
the "copyright" line and a pointer to where the full notice is found. |
||||
|
|
||||
|
<one line to give the program's name and a brief idea of what it does.> |
||||
|
Copyright (C) <year> <name of author> |
||||
|
|
||||
|
This program is free software; you can redistribute it and/or modify |
||||
|
it under the terms of the GNU General Public License as published by |
||||
|
the Free Software Foundation; either version 2 of the License, or |
||||
|
(at your option) any later version. |
||||
|
|
||||
|
This program is distributed in the hope that it will be useful, |
||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
GNU General Public License for more details. |
||||
|
|
||||
|
You should have received a copy of the GNU General Public License along |
||||
|
with this program; if not, write to the Free Software Foundation, Inc., |
||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
||||
|
|
||||
|
Also add information on how to contact you by electronic and paper mail. |
||||
|
|
||||
|
If the program is interactive, make it output a short notice like this |
||||
|
when it starts in an interactive mode: |
||||
|
|
||||
|
Gnomovision version 69, Copyright (C) year name of author |
||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
||||
|
This is free software, and you are welcome to redistribute it |
||||
|
under certain conditions; type `show c' for details. |
||||
|
|
||||
|
The hypothetical commands `show w' and `show c' should show the appropriate |
||||
|
parts of the General Public License. Of course, the commands you use may |
||||
|
be called something other than `show w' and `show c'; they could even be |
||||
|
mouse-clicks or menu items--whatever suits your program. |
||||
|
|
||||
|
You should also get your employer (if you work as a programmer) or your |
||||
|
school, if any, to sign a "copyright disclaimer" for the program, if |
||||
|
necessary. Here is a sample; alter the names: |
||||
|
|
||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker. |
||||
|
|
||||
|
<signature of Ty Coon>, 1 April 1989 |
||||
|
Ty Coon, President of Vice |
||||
|
|
||||
|
This General Public License does not permit incorporating your program into |
||||
|
proprietary programs. If your program is a subroutine library, you may |
||||
|
consider it more useful to permit linking proprietary applications with the |
||||
|
library. If this is what you want to do, use the GNU Lesser General |
||||
|
Public License instead of this License. |
@ -0,0 +1,5 @@ |
|||||
|
" Pug |
||||
|
autocmd BufNewFile,BufReadPost *.pug set filetype=pug |
||||
|
|
||||
|
" Jade |
||||
|
autocmd BufNewFile,BufReadPost *.jade set filetype=pug |
@ -0,0 +1,9 @@ |
|||||
|
" Vim filetype detection file |
||||
|
" Language: Taskpaper (http://hogbaysoftware.com/projects/taskpaper) |
||||
|
" Maintainer: David O'Callaghan <david.ocallaghan@cs.tcd.ie> |
||||
|
" URL: https://github.com/davidoc/taskpaper.vim |
||||
|
" Last Change: 2011-03-28 |
||||
|
" |
||||
|
augroup taskpaper |
||||
|
au! BufRead,BufNewFile *.taskpaper setfiletype taskpaper |
||||
|
augroup END |
@ -0,0 +1,2 @@ |
|||||
|
" TeX and LaTeX |
||||
|
autocmd BufNewFile,BufReadPost *.tex set filetype=tex |
@ -0,0 +1,57 @@ |
|||||
|
" Vim filetype plugin |
||||
|
" Language: Jade |
||||
|
" Maintainer: Joshua Borton |
||||
|
" Credits: Tim Pope |
||||
|
|
||||
|
" Only do this when not done yet for this buffer |
||||
|
if exists("b:did_ftplugin") |
||||
|
finish |
||||
|
endif |
||||
|
|
||||
|
let s:save_cpo = &cpo |
||||
|
set cpo-=C |
||||
|
|
||||
|
setlocal iskeyword+=- |
||||
|
|
||||
|
" Define some defaults in case the included ftplugins don't set them. |
||||
|
let s:undo_ftplugin = "" |
||||
|
let s:browsefilter = "All Files (*.*)\t*.*\n" |
||||
|
let s:match_words = "" |
||||
|
|
||||
|
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim |
||||
|
unlet! b:did_ftplugin |
||||
|
|
||||
|
" Override our defaults if these were set by an included ftplugin. |
||||
|
if exists("b:undo_ftplugin") |
||||
|
let s:undo_ftplugin = b:undo_ftplugin |
||||
|
unlet b:undo_ftplugin |
||||
|
endif |
||||
|
if exists("b:browsefilter") |
||||
|
let s:browsefilter = b:browsefilter |
||||
|
unlet b:browsefilter |
||||
|
endif |
||||
|
if exists("b:match_words") |
||||
|
let s:match_words = b:match_words |
||||
|
unlet b:match_words |
||||
|
endif |
||||
|
|
||||
|
" Change the browse dialog on Win32 to show mainly Haml-related files |
||||
|
if has("gui_win32") |
||||
|
let b:browsefilter="Jade Files (*.jade)\t*.jade\n" . s:browsefilter |
||||
|
endif |
||||
|
|
||||
|
" Load the combined list of match_words for matchit.vim |
||||
|
if exists("loaded_matchit") |
||||
|
let b:match_words = s:match_words |
||||
|
endif |
||||
|
|
||||
|
setlocal comments=://-,:// commentstring=//\ %s |
||||
|
|
||||
|
setlocal suffixesadd+=.jade |
||||
|
|
||||
|
let b:undo_ftplugin = "setl cms< com< " |
||||
|
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin |
||||
|
|
||||
|
let &cpo = s:save_cpo |
||||
|
|
||||
|
" vim:set sw=2: |
@ -0,0 +1,57 @@ |
|||||
|
" Vim filetype plugin |
||||
|
" Language: Pug |
||||
|
" Maintainer: Joshua Borton |
||||
|
" Credits: Tim Pope |
||||
|
|
||||
|
" Only do this when not done yet for this buffer |
||||
|
if exists("b:did_ftplugin") |
||||
|
finish |
||||
|
endif |
||||
|
|
||||
|
let s:save_cpo = &cpo |
||||
|
set cpo-=C |
||||
|
|
||||
|
setlocal iskeyword+=- |
||||
|
|
||||
|
" Define some defaults in case the included ftplugins don't set them. |
||||
|
let s:undo_ftplugin = "" |
||||
|
let s:browsefilter = "All Files (*.*)\t*.*\n" |
||||
|
let s:match_words = "" |
||||
|
|
||||
|
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim |
||||
|
unlet! b:did_ftplugin |
||||
|
|
||||
|
" Override our defaults if these were set by an included ftplugin. |
||||
|
if exists("b:undo_ftplugin") |
||||
|
let s:undo_ftplugin = b:undo_ftplugin |
||||
|
unlet b:undo_ftplugin |
||||
|
endif |
||||
|
if exists("b:browsefilter") |
||||
|
let s:browsefilter = b:browsefilter |
||||
|
unlet b:browsefilter |
||||
|
endif |
||||
|
if exists("b:match_words") |
||||
|
let s:match_words = b:match_words |
||||
|
unlet b:match_words |
||||
|
endif |
||||
|
|
||||
|
" Change the browse dialog on Win32 to show mainly Haml-related files |
||||
|
if has("gui_win32") |
||||
|
let b:browsefilter="Pug Files (*.pug)\t*.pug\n" . s:browsefilter |
||||
|
endif |
||||
|
|
||||
|
" Load the combined list of match_words for matchit.vim |
||||
|
if exists("loaded_matchit") |
||||
|
let b:match_words = s:match_words |
||||
|
endif |
||||
|
|
||||
|
setlocal comments=://-,:// commentstring=//\ %s |
||||
|
|
||||
|
setlocal suffixesadd+=.pug |
||||
|
|
||||
|
let b:undo_ftplugin = "setl cms< com< " |
||||
|
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin |
||||
|
|
||||
|
let &cpo = s:save_cpo |
||||
|
|
||||
|
" vim:set sw=2: |
@ -0,0 +1,117 @@ |
|||||
|
" plugin to handle the TaskPaper to-do list format |
||||
|
" Language: Taskpaper (http://hogbaysoftware.com/projects/taskpaper) |
||||
|
" Maintainer: David O'Callaghan <david.ocallaghan@cs.tcd.ie> |
||||
|
" URL: https://github.com/davidoc/taskpaper.vim |
||||
|
" Last Change: 2012-02-20 |
||||
|
|
||||
|
if exists("b:did_ftplugin") |
||||
|
finish |
||||
|
endif |
||||
|
let b:did_ftplugin = 1 |
||||
|
|
||||
|
let s:save_cpo = &cpo |
||||
|
set cpo&vim |
||||
|
|
||||
|
" Define a default date format |
||||
|
if !exists('g:task_paper_date_format') |
||||
|
let g:task_paper_date_format = "%Y-%m-%d" |
||||
|
endif |
||||
|
|
||||
|
" Define a default archive project name |
||||
|
if !exists('g:task_paper_archive_project') |
||||
|
let g:task_paper_archive_project = "Archive" |
||||
|
endif |
||||
|
|
||||
|
" When moving a task, should the cursor follow or stay in the same place |
||||
|
" (default: follow) |
||||
|
if !exists('g:task_paper_follow_move') |
||||
|
let g:task_paper_follow_move = 1 |
||||
|
endif |
||||
|
|
||||
|
" Hide @done tasks when searching tags |
||||
|
if !exists('g:task_paper_search_hide_done') |
||||
|
let g:task_paper_search_hide_done = 0 |
||||
|
endif |
||||
|
|
||||
|
" Add '@' to keyword character set so that we can complete contexts as keywords |
||||
|
setlocal iskeyword+=@-@ |
||||
|
|
||||
|
" Tab character has special meaning on TaskPaper |
||||
|
setlocal noexpandtab |
||||
|
|
||||
|
" Change 'comments' and 'formatoptions' to continue to write a task item |
||||
|
setlocal comments=b:- |
||||
|
setlocal fo-=c fo+=rol |
||||
|
|
||||
|
" Set 'autoindent' to maintain indent level |
||||
|
setlocal autoindent |
||||
|
|
||||
|
" Set up mappings |
||||
|
if !exists("no_plugin_maps") && !exists("no_taskpaper_maps") |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperFoldProjects |
||||
|
\ :<C-u>call taskpaper#fold_projects()<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperFoldNotes |
||||
|
\ :<C-u>call taskpaper#search('\v^(\s*\|\t+-\s+.*\|.+:)$')<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperFocusProject |
||||
|
\ :<C-u>call taskpaper#focus_project()<CR> |
||||
|
|
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperSearchKeyword |
||||
|
\ :<C-u>call taskpaper#search()<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperSearchTag |
||||
|
\ :<C-u>call taskpaper#search_tag()<CR> |
||||
|
|
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperGoToProject |
||||
|
\ :<C-u>call taskpaper#go_to_project()<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperNextProject |
||||
|
\ :<C-u>call taskpaper#next_project()<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperPreviousProject |
||||
|
\ :<C-u>call taskpaper#previous_project()<CR> |
||||
|
|
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperArchiveDone |
||||
|
\ :<C-u>call taskpaper#archive_done()<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperShowToday |
||||
|
\ :<C-u>call taskpaper#search_tag('today')<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperShowCancelled |
||||
|
\ :<C-u>call taskpaper#search_tag('cancelled')<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperToggleCancelled |
||||
|
\ :call taskpaper#toggle_tag('cancelled', taskpaper#date())<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperToggleDone |
||||
|
\ :call taskpaper#toggle_tag('done', taskpaper#date())<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperToggleToday |
||||
|
\ :call taskpaper#toggle_tag('today', '')<CR> |
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperMoveToProject |
||||
|
\ :call taskpaper#move_to_project()<CR> |
||||
|
|
||||
|
nnoremap <silent> <buffer> <Plug>TaskPaperNewline |
||||
|
\ o<C-r>=taskpaper#newline()<CR> |
||||
|
inoremap <silent> <buffer> <Plug>TaskPaperNewline |
||||
|
\ <CR><C-r>=taskpaper#newline()<CR> |
||||
|
|
||||
|
nmap <buffer> <Leader>tp <Plug>TaskPaperFoldProjects |
||||
|
nmap <buffer> <Leader>t. <Plug>TaskPaperFoldNotes |
||||
|
nmap <buffer> <Leader>tP <Plug>TaskPaperFocusProject |
||||
|
|
||||
|
nmap <buffer> <Leader>t/ <Plug>TaskPaperSearchKeyword |
||||
|
nmap <buffer> <Leader>ts <Plug>TaskPaperSearchTag |
||||
|
|
||||
|
nmap <buffer> <Leader>tg <Plug>TaskPaperGoToProject |
||||
|
nmap <buffer> <Leader>tj <Plug>TaskPaperNextProject |
||||
|
nmap <buffer> <Leader>tk <Plug>TaskPaperPreviousProject |
||||
|
|
||||
|
nmap <buffer> <Leader>tD <Plug>TaskPaperArchiveDone |
||||
|
nmap <buffer> <Leader>tT <Plug>TaskPaperShowToday |
||||
|
nmap <buffer> <Leader>tX <Plug>TaskPaperShowCancelled |
||||
|
nmap <buffer> <Leader>td <Plug>TaskPaperToggleDone |
||||
|
nmap <buffer> <Leader>tt <Plug>TaskPaperToggleToday |
||||
|
nmap <buffer> <Leader>tx <Plug>TaskPaperToggleCancelled |
||||
|
nmap <buffer> <Leader>tm <Plug>TaskPaperMoveToProject |
||||
|
|
||||
|
if mapcheck("o", "n") == '' |
||||
|
nmap <buffer> o <Plug>TaskPaperNewline |
||||
|
endif |
||||
|
if mapcheck("\<CR>", "i") == '' |
||||
|
imap <buffer> <CR> <Plug>TaskPaperNewline |
||||
|
endif |
||||
|
endif |
||||
|
|
||||
|
let &cpo = s:save_cpo |
@ -0,0 +1,70 @@ |
|||||
|
" Vim indent file |
||||
|
" Language: Jade |
||||
|
" Maintainer: Joshua Borton |
||||
|
" Credits: Tim Pope (vim-jade) |
||||
|
" Last Change: 2010 Sep 22 |
||||
|
|
||||
|
if exists("b:did_indent") |
||||
|
finish |
||||
|
endif |
||||
|
|
||||
|
unlet! b:did_indent |
||||
|
let b:did_indent = 1 |
||||
|
|
||||
|
setlocal autoindent |
||||
|
setlocal indentexpr=GetJadeIndent() |
||||
|
setlocal indentkeys=o,O,*<Return>,},],0),!^F |
||||
|
|
||||
|
" Only define the function once. |
||||
|
if exists("*GetJadeIndent") |
||||
|
finish |
||||
|
endif |
||||
|
|
||||
|
let s:attributes = '\%((.\{-\})\)' |
||||
|
let s:tag = '\([%.#][[:alnum:]_-]\+\|'.s:attributes.'\)*[<>]*' |
||||
|
|
||||
|
if !exists('g:jade_self_closing_tags') |
||||
|
let g:jade_self_closing_tags = 'meta|link|img|hr|br|input' |
||||
|
endif |
||||
|
|
||||
|
setlocal formatoptions+=r |
||||
|
setlocal comments+=n:\| |
||||
|
|
||||
|
function! GetJadeIndent() |
||||
|
let lnum = prevnonblank(v:lnum-1) |
||||
|
if lnum == 0 |
||||
|
return 0 |
||||
|
endif |
||||
|
let line = substitute(getline(lnum),'\s\+$','','') |
||||
|
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','') |
||||
|
let lastcol = strlen(line) |
||||
|
let line = substitute(line,'^\s\+','','') |
||||
|
let indent = indent(lnum) |
||||
|
let cindent = indent(v:lnum) |
||||
|
let increase = indent + &sw |
||||
|
if indent == indent(lnum) |
||||
|
let indent = cindent <= indent ? -1 : increase |
||||
|
endif |
||||
|
|
||||
|
let group = synIDattr(synID(lnum,lastcol,1),'name') |
||||
|
|
||||
|
if line =~ '^!!!' |
||||
|
return indent |
||||
|
elseif line =~ '^/\%(\[[^]]*\]\)\=$' |
||||
|
return increase |
||||
|
elseif line =~ '^\%(if\|else\|unless\|for\|each\|block\|mixin\|append\|case\|when\)' |
||||
|
return increase |
||||
|
elseif line =~ '^'.s:tag.'[&!]\=[=~-].*,\s*$' |
||||
|
return increase |
||||
|
elseif line == '-#' |
||||
|
return increase |
||||
|
elseif line =~? '^\v%('.g:jade_self_closing_tags.')>' |
||||
|
return indent |
||||
|
elseif group =~? '\v^%(jadeAttributesDelimiter|jadeClass|jadeId|htmlTagName|htmlSpecialTagName|jadeFilter|jadeTagBlockChar)$' |
||||
|
return increase |
||||
|
else |
||||
|
return indent |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
" vim:set sw=2: |
@ -0,0 +1,70 @@ |
|||||
|
" Vim indent file |
||||
|
" Language: Pug |
||||
|
" Maintainer: Joshua Borton |
||||
|
" Credits: Tim Pope (vim-pug) |
||||
|
" Last Change: 2010 Sep 22 |
||||
|
|
||||
|
if exists("b:did_indent") |
||||
|
finish |
||||
|
endif |
||||
|
|
||||
|
unlet! b:did_indent |
||||
|
let b:did_indent = 1 |
||||
|
|
||||
|
setlocal autoindent |
||||
|
setlocal indentexpr=GetPugIndent() |
||||
|
setlocal indentkeys=o,O,*<Return>,},],0),!^F |
||||
|
|
||||
|
" Only define the function once. |
||||
|
if exists("*GetPugIndent") |
||||
|
finish |
||||
|
endif |
||||
|
|
||||
|
let s:attributes = '\%((.\{-\})\)' |
||||
|
let s:tag = '\([%.#][[:alnum:]_-]\+\|'.s:attributes.'\)*[<>]*' |
||||
|
|
||||
|
if !exists('g:pug_self_closing_tags') |
||||
|
let g:pug_self_closing_tags = 'meta|link|img|hr|br|input' |
||||
|
endif |
||||
|
|
||||
|
setlocal formatoptions+=r |
||||
|
setlocal comments+=n:\| |
||||
|
|
||||
|
function! GetPugIndent() |
||||
|
let lnum = prevnonblank(v:lnum-1) |
||||
|
if lnum == 0 |
||||
|
return 0 |
||||
|
endif |
||||
|
let line = substitute(getline(lnum),'\s\+$','','') |
||||
|
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','') |
||||
|
let lastcol = strlen(line) |
||||
|
let line = substitute(line,'^\s\+','','') |
||||
|
let indent = indent(lnum) |
||||
|
let cindent = indent(v:lnum) |
||||
|
let increase = indent + &sw |
||||
|
if indent == indent(lnum) |
||||
|
let indent = cindent <= indent ? -1 : increase |
||||
|
endif |
||||
|
|
||||
|
let group = synIDattr(synID(lnum,lastcol,1),'name') |
||||
|
|
||||
|
if line =~ '^!!!' |
||||
|
return indent |
||||
|
elseif line =~ '^/\%(\[[^]]*\]\)\=$' |
||||
|
return increase |
||||
|
elseif line =~ '^\%(if\|else\|unless\|for\|each\|block\|mixin\|append\|case\|when\)' |
||||
|
return increase |
||||
|
elseif line =~ '^'.s:tag.'[&!]\=[=~-].*,\s*$' |
||||
|
return increase |
||||
|
elseif line == '-#' |
||||
|
return increase |
||||
|
elseif line =~? '^\v%('.g:pug_self_closing_tags.')>' |
||||
|
return indent |
||||
|
elseif group =~? '\v^%(pugAttributesDelimiter|pugClass|pugId|htmlTagName|htmlSpecialTagName|pugFilter|pugTagBlockChar)$' |
||||
|
return increase |
||||
|
else |
||||
|
return indent |
||||
|
endif |
||||
|
endfunction |
||||
|
|
||||
|
" vim:set sw=2: |
@ -0,0 +1,349 @@ |
|||||
|
" Intelligent Indent |
||||
|
" Author: Michael Geddes < vimmer at frog dot wheelycreek dot net > |
||||
|
" Version: 2.6 |
||||
|
" Last Modified: December 2010 |
||||
|
" |
||||
|
" Histroy: |
||||
|
" 1.0: - Added RetabIndent command - similar to :retab, but doesn't cause |
||||
|
" internal tabs to be modified. |
||||
|
" 1.1: - Added support for backspacing over spaced tabs 'smarttab' style |
||||
|
" - Clean up the look of it by blanking the :call |
||||
|
" - No longer a 'filetype' plugin by default. |
||||
|
" 1.2: - Interactions with 'smarttab' were causing problems. Now fall back to |
||||
|
" vim's 'smarttab' setting when inserting 'indent' tabs. |
||||
|
" - Fixed compat with digraphs (which were getting swallowed) |
||||
|
" - Made <BS> mapping work with the 'filetype' plugin mode. |
||||
|
" - Make CTabAlignTo() public. |
||||
|
" 1.3: - Fix removing trailing spaces with RetabIndent! which was causing |
||||
|
" initial indents to disappear. |
||||
|
" 1.4: - Fixed Backspace tab being off by 1 |
||||
|
" 2.0: - Add support for alignment whitespace for mismatched brackets to be spaces. |
||||
|
" 2.1: - Fix = operator |
||||
|
" 2.3: - Fix (Gene Smith) for error with non C files |
||||
|
" - Add option for filetype maps |
||||
|
" - Allow for lisp indentation |
||||
|
" 2.4: - Fix bug in Retab |
||||
|
" 2.5: - Fix issue with <CR> not aligning |
||||
|
" 2.6: - Fix issue with alignment not disappearing. |
||||
|
|
||||
|
" This is designed as a filetype plugin (originally a 'Buffoptions.vim' script). |
||||
|
" |
||||
|
" The aim of this script is to be able to handle the mode of tab usage which |
||||
|
" distinguishes 'indent' from 'alignment'. The idea is to use <tab> |
||||
|
" characters only at the beginning of lines. |
||||
|
" |
||||
|
" This means that an individual can use their own 'tabstop' settings for the |
||||
|
" indent level, while not affecting alignment. |
||||
|
" |
||||
|
" The one caveat with this method of tabs is that you need to follow the rule |
||||
|
" that you never 'align' elements that have different 'indent' levels. |
||||
|
" |
||||
|
" :RetabIndent[!] [tabstop] |
||||
|
" This is similar to the :retab command, with the exception that it |
||||
|
" affects all and only whitespace at the start of the line, changing it to |
||||
|
" suit your current (or new) tabstop and expandtab setting. |
||||
|
" With the bang (!) at the end, the command also strips trailing |
||||
|
" whitespace. |
||||
|
" |
||||
|
" CTabAlignTo(n) |
||||
|
" 'Tab' to the n'th column from the start of the indent. |
||||
|
|
||||
|
" g:ctab_filetype_maps |
||||
|
" set this to true if script used as a filetype plugin |
||||
|
" g:ctab_disable_checkalign |
||||
|
" set this to true to disable re-check of alignment |
||||
|
" g:ctab_enable_default_filetype_maps |
||||
|
" disable the filetype specific maps |
||||
|
" g:ctab_disable_tab_maps |
||||
|
" disable the (original) tab mappings |
||||
|
|
||||
|
if exists('g:ctab_filetype_maps') && g:ctab_filetype_maps |
||||
|
let s:buff_map=' <buffer> ' |
||||
|
else |
||||
|
let s:buff_map='' |
||||
|
endif |
||||
|
|
||||
|
if exists('g:ctab_enable_default_filetype_maps') && ctab_enable_default_filetype_maps |
||||
|
if s:buff_map != '' |
||||
|
if (&filetype =~ '^\(cpp\|idl\)$' ) |
||||
|
imap <silent> <buffer> <expr> <m-;> CTabAlignTo(20).'//' |
||||
|
imap <silent> <buffer> <expr> <m-s-;> CTabAlignTo(30).'//' |
||||
|
imap <silent> <buffer> º <m-s-;> |
||||
|
elseif &filetype == 'c' |
||||
|
imap <expr> <silent> <buffer> <m-;> CTabAlignTo(10).'/* */<left><left><left>' |
||||
|
endif |
||||
|
else |
||||
|
au FileType cpp,idl imap <expr> <silent> <buffer> <m-;> CTabAlignTo(20).'//' |
||||
|
au FileType cpp,idl imap <expr> <silent> <buffer> <m-:> CTabAlignTo(30).'//' |
||||
|
au FileType c imap <expr> <silent> <buffer> <m-;> CTabAlignTo(10).'/* */<left><left>' |
||||
|
endif |
||||
|
endif |
||||
|
|
||||
|
if !exists('g:ctab_disable_tab_maps') || ! g:ctab_disable_tab_maps |
||||
|
exe 'imap '.s:buff_map.'<silent> <expr> <tab> <SID>InsertSmartTab()' |
||||
|
exe 'inoremap '.s:buff_map.'<silent> <expr> <BS> <SID>DoSmartDelete()."\<BS>"' |
||||
|
endif |
||||
|
|
||||
|
"exe 'imap '.s:buff_map.'<silent> <expr> <BS> <SID>KeepDelLine()."\<BS>" |
||||
|
|
||||
|
" MRG: TODO |
||||
|
"exe 'imap '.s:buff_map.'<silent> <expr> <c-d> :call <SID>SmartDeleteTab()<CR>' |
||||
|
"exe 'imap '.s:buff_map.'<silent> <c-t> <SID>SmartInsertTab()' |
||||
|
" fun! s:SmartDeleteTab() |
||||
|
" let curcol=col('.')-&sw |
||||
|
" let origtxt=getline('.') |
||||
|
" let repl=matchstr(origtxt,'^\s\{-}\%'.(&sw+2)."v') |
||||
|
" if repl == '' then |
||||
|
" return "\<c-o>".':s/ *\zs /'.repeat(' ',(&ts-&sw)).'/'."\<CR>\<c-o>".curcol.'|' |
||||
|
" else |
||||
|
" return "\<c-o>".':s/^\s\{-}\%'.(&sw+1)."v//\<CR>\<c-o>".curcol."|" |
||||
|
" end |
||||
|
" |
||||
|
" endfun |
||||
|
|
||||
|
" Insert a smart tab. |
||||
|
fun! s:InsertSmartTab() |
||||
|
" Clear the status |
||||
|
echo '' |
||||
|
if strpart(getline('.'),0,col('.')-1) =~'^\s*$' |
||||
|
if exists('b:ctab_hook') && b:ctab_hook != '' |
||||
|
exe 'return '.b:ctab_hook |
||||
|
elseif exists('g:ctab_hook') && g:ctab_hook != '' |
||||
|
exe 'return '.g:ctab_hook |
||||
|
endif |
||||
|
return "\<Tab>" |
||||
|
endif |
||||
|
|
||||
|
let sts=exists("b:insidetabs")?(b:insidetabs):((&sts==0)?&sw:&sts) |
||||
|
let sp=(virtcol('.') % sts) |
||||
|
if sp==0 | let sp=sts | endif |
||||
|
return strpart(" ",0,1+sts-sp) |
||||
|
endfun |
||||
|
|
||||
|
fun! s:CheckLeaveLine(line) |
||||
|
if ('cpo' !~ 'I') && exists('b:ctab_lastalign') && (a:line == b:ctab_lastalign) |
||||
|
s/^\s*$//e |
||||
|
endif |
||||
|
endfun |
||||
|
|
||||
|
" Check on blanks |
||||
|
aug Ctab |
||||
|
au! InsertLeave * call <SID>CheckLeaveLine(line('.')) |
||||
|
aug END |
||||
|
|
||||
|
|
||||
|
" Do a smart delete. |
||||
|
" The <BS> is included at the end so that deleting back over line ends |
||||
|
" works as expected. |
||||
|
fun! s:DoSmartDelete() |
||||
|
" Clear the status |
||||
|
"echo '' |
||||
|
let uptohere=strpart(getline('.'),0,col('.')-1) |
||||
|
" If at the first part of the line, fall back on defaults... or if the |
||||
|
" preceding character is a <TAB>, then similarly fall back on defaults. |
||||
|
" |
||||
|
let lastchar=matchstr(uptohere,'.$') |
||||
|
if lastchar == "\<tab>" || uptohere =~ '^\s*$' | return '' | endif " Simple cases |
||||
|
if lastchar != ' ' | return ((&digraph)?("\<BS>".lastchar): '') | endif " Delete non space at end / Maintain digraphs |
||||
|
|
||||
|
" Work out how many tabs to use |
||||
|
let sts=(exists("b:insidetabs")?(b:insidetabs):((&sts==0)?(&sw):(&sts))) |
||||
|
|
||||
|
let ovc=virtcol('.') " Find where we are |
||||
|
let sp=(ovc % sts) " How many virtual characters to delete |
||||
|
if sp==0 | let sp=sts | endif " At least delete a whole tabstop |
||||
|
let vc=ovc-sp " Work out the new virtual column |
||||
|
" Find how many characters we need to delete (using \%v to do virtual column |
||||
|
" matching, and making sure we don't pass an invalid value to vc) |
||||
|
let uthlen=strlen(uptohere) |
||||
|
let bs= uthlen-((vc<1)?0:( match(uptohere,'\%'.(vc-1).'v'))) |
||||
|
let uthlen=uthlen-bs |
||||
|
" echo 'ovc = '.ovc.' sp = '.sp.' vc = '.vc.' bs = '.bs.' uthlen='.uthlen |
||||
|
if bs <= 0 | return '' | endif |
||||
|
|
||||
|
" Delete the specifed number of whitespace characters up to the first non-whitespace |
||||
|
let ret='' |
||||
|
let bs=bs-1 |
||||
|
if uptohere[uthlen+bs] !~ '\s'| return '' | endif |
||||
|
while bs>=-1 |
||||
|
let bs=bs-1 |
||||
|
if uptohere[uthlen+bs] !~ '\s' | break | endif |
||||
|
let ret=ret."\<BS>" |
||||
|
endwhile |
||||
|
return ret |
||||
|
endfun |
||||
|
|
||||
|
fun! s:Column(line) |
||||
|
let c=0 |
||||
|
let i=0 |
||||
|
let len=strlen(a:line) |
||||
|
while i< len |
||||
|
if a:line[i]=="\<tab>" |
||||
|
let c=(c+&tabstop) |
||||
|
let c=c-(c%&tabstop) |
||||
|
else |
||||
|
let c=c+1 |
||||
|
endif |
||||
|
let i=i+1 |
||||
|
endwhile |
||||
|
return c |
||||
|
endfun |
||||
|
fun! s:StartColumn(lineNo) |
||||
|
return s:Column(matchstr(getline(a:lineNo),'^\s*')) |
||||
|
endfun |
||||
|
|
||||
|
fun! CTabAlignTo(n) |
||||
|
let co=virtcol('.') |
||||
|
let ico=s:StartColumn('.')+a:n |
||||
|
if co>ico |
||||
|
let ico=co |
||||
|
endif |
||||
|
let spaces=ico-co |
||||
|
let spc='' |
||||
|
while spaces > 0 |
||||
|
let spc=spc." " |
||||
|
let spaces=spaces-1 |
||||
|
endwhile |
||||
|
return spc |
||||
|
endfun |
||||
|
|
||||
|
if ! exists('g:ctab_disable_checkalign') || g:ctab_disable_checkalign==0 |
||||
|
" Check the alignment of line. |
||||
|
" Used in the case where some alignment whitespace is required .. like for unmatched brackets. |
||||
|
fun! s:CheckAlign(line) |
||||
|
if &expandtab || !(&autoindent || &indentexpr || &cindent) |
||||
|
return '' |
||||
|
endif |
||||
|
|
||||
|
let tskeep=&ts |
||||
|
let swkeep=&sw |
||||
|
try |
||||
|
if a:line == line('.') |
||||
|
let b:ctab_lastalign=a:line |
||||
|
else |
||||
|
unlet b:ctab_lastalign |
||||
|
endif |
||||
|
set ts=50 |
||||
|
set sw=50 |
||||
|
if &indentexpr != '' |
||||
|
let v:lnum=a:line |
||||
|
sandbox exe 'let inda='.&indentexpr |
||||
|
if inda == -1 |
||||
|
let inda=indent(a:line-1) |
||||
|
endif |
||||
|
elseif &cindent |
||||
|
let inda=cindent(a:line) |
||||
|
elseif &lisp |
||||
|
let inda=lispindent(a:line) |
||||
|
elseif &autoindent |
||||
|
let inda=indent(a:line) |
||||
|
elseif &smarttab |
||||
|
return '' |
||||
|
else |
||||
|
let inda=0 |
||||
|
endif |
||||
|
finally |
||||
|
let &ts=tskeep |
||||
|
let &sw=swkeep |
||||
|
endtry |
||||
|
let indatabs=inda / 50 |
||||
|
let indaspace=inda % 50 |
||||
|
let indb=indent(a:line) |
||||
|
if indatabs*&tabstop + indaspace == indb |
||||
|
let txtindent=repeat("\<Tab>",indatabs).repeat(' ',indaspace) |
||||
|
call setline(a:line, substitute(getline(a:line),'^\s*',txtindent,'')) |
||||
|
endif |
||||
|
return '' |
||||
|
endfun |
||||
|
fun! s:SID() |
||||
|
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$') |
||||
|
endfun |
||||
|
" Get the spaces at the end of the indent correct. |
||||
|
" This is trickier than it should be, but this seems to work. |
||||
|
fun! s:CheckCR() |
||||
|
" echo 'SID:'.s:SID() |
||||
|
if getline('.') =~ '^\s*$' |
||||
|
if ('cpo' !~ 'I') && exists('b:ctab_lastalign') && (line('.') == b:ctab_lastalign) |
||||
|
return "^\<c-d>\<CR>" |
||||
|
endif |
||||
|
return "\<CR>" |
||||
|
else |
||||
|
return "\<CR>\<c-r>=<SNR>".s:SID().'_CheckAlign(line(''.''))'."\<CR>\<END>" |
||||
|
endif |
||||
|
endfun |
||||
|
|
||||
|
"exe 'inoremap '.s:buff_map.'<silent> <CR> <CR><c-r>=<SID>CheckAlign(line(''.''))."\<lt>END>"<CR>' |
||||
|
exe 'inoremap '.s:buff_map.'<silent> <expr> <CR> <SID>CheckCR()' |
||||
|
exe 'nnoremap '.s:buff_map.'<silent> o o<c-r>=<SID>CheckAlign(line(''.''))."\<lt>END>"<CR>' |
||||
|
exe 'nnoremap '.s:buff_map.'<silent> O O<c-r>=<SID>CheckAlign(line(''.''))."\<lt>END>"<CR>' |
||||
|
|
||||
|
" Ok.. now re-evaluate the = re-indented section |
||||
|
|
||||
|
" The only way I can think to do this is to remap the = |
||||
|
" so that it calls the original, then checks all the indents. |
||||
|
exe 'map '.s:buff_map.'<silent> <expr> = <SID>SetupEqual()' |
||||
|
fun! s:SetupEqual() |
||||
|
set operatorfunc=CtabRedoIndent |
||||
|
" Call the operator func so we get the range |
||||
|
return 'g@' |
||||
|
endfun |
||||
|
|
||||
|
fun! CtabRedoIndent(type,...) |
||||
|
set operatorfunc= |
||||
|
let ln=line("'[") |
||||
|
let lnto=line("']") |
||||
|
" Do the original equals |
||||
|
norm! '[='] |
||||
|
|
||||
|
if ! &et |
||||
|
" Then check the alignment. |
||||
|
while ln <= lnto |
||||
|
silent call s:CheckAlign(ln) |
||||
|
let ln+=1 |
||||
|
endwhile |
||||
|
endif |
||||
|
endfun |
||||
|
endif |
||||
|
|
||||
|
" Retab the indent of a file - ie only the first nonspace |
||||
|
fun! s:RetabIndent( bang, firstl, lastl, tab ) |
||||
|
let checkspace=((!&expandtab)? "^\<tab>* ": "^ *\<tab>") |
||||
|
let l = a:firstl |
||||
|
let force= a:tab != '' && a:tab != 0 && (a:tab != &tabstop) |
||||
|
let checkalign = ( &expandtab || !(&autoindent || &indentexpr || &cindent)) && (!exists('g:ctab_disable_checkalign') || g:ctab_disable_checkalign==0) |
||||
|
let newtabstop = (force?(a:tab):(&tabstop)) |
||||
|
while l <= a:lastl |
||||
|
let txt=getline(l) |
||||
|
let store=0 |
||||
|
if a:bang == '!' && txt =~ '\s\+$' |
||||
|
let txt=substitute(txt,'\s\+$','','') |
||||
|
let store=1 |
||||
|
endif |
||||
|
if force || txt =~ checkspace |
||||
|
let i=indent(l) |
||||
|
let tabs= (&expandtab ? (0) : (i / newtabstop)) |
||||
|
let spaces=(&expandtab ? (i) : (i % newtabstop)) |
||||
|
let txtindent=repeat("\<tab>",tabs).repeat(' ',spaces) |
||||
|
let store = 1 |
||||
|
let txt=substitute(txt,'^\s*',txtindent,'') |
||||
|
endif |
||||
|
if store |
||||
|
call setline(l, txt ) |
||||
|
if checkalign |
||||
|
call s:CheckAlign(l) |
||||
|
endif |
||||
|
endif |
||||
|
|
||||
|
let l=l+1 |
||||
|
endwhile |
||||
|
if newtabstop != &tabstop | let &tabstop = newtabstop | endif |
||||
|
endfun |
||||
|
|
||||
|
|
||||
|
" Retab the indent of a file - ie only the first nonspace. |
||||
|
" Optional argument specified the value of the new tabstops |
||||
|
" Bang (!) causes trailing whitespace to be gobbled. |
||||
|
com! -nargs=? -range=% -bang -bar RetabIndent call <SID>RetabIndent(<q-bang>,<line1>, <line2>, <q-args> ) |
||||
|
|
||||
|
|
||||
|
" vim: sts=2 sw=2 et |
@ -0,0 +1,117 @@ |
|||||
|
supermassive |
||||
|
reionization |
||||
|
Zel'dovich |
||||
|
nbody |
||||
|
overdensity |
||||
|
blockchain |
||||
|
bitcoin |
||||
|
Leatherman |
||||
|
paracord |
||||
|
glowstick |
||||
|
timesteps |
||||
|
overplotted |
||||
|
subhalo |
||||
|
virialized |
||||
|
virial |
||||
|
timestep |
||||
|
subhalos |
||||
|
comoving |
||||
|
minima |
||||
|
BGC2 |
||||
|
grey |
||||
|
collisionless |
||||
|
multipole |
||||
|
octants |
||||
|
symplectic |
||||
|
interparticle |
||||
|
overdensities |
||||
|
perturbative |
||||
|
rms |
||||
|
baryonic |
||||
|
outlier |
||||
|
uncaptured |
||||
|
accrete |
||||
|
infall |
||||
|
Sissom |
||||
|
meshnet |
||||
|
cappella |
||||
|
acknowledgement |
||||
|
acknowledgements |
||||
|
meshnets |
||||
|
anonymize |
||||
|
anonymized |
||||
|
anonymizing |
||||
|
anonymizes |
||||
|
telecom |
||||
|
gigabit |
||||
|
affordability |
||||
|
online |
||||
|
username |
||||
|
Skype |
||||
|
rollout |
||||
|
ISP |
||||
|
ISPs |
||||
|
Comcast |
||||
|
Verizon |
||||
|
Hyperboria |
||||
|
CJDNS |
||||
|
VPN |
||||
|
BGP |
||||
|
GHz |
||||
|
incentivize |
||||
|
incentivized |
||||
|
VPNs |
||||
|
downlink |
||||
|
circulator |
||||
|
astro |
||||
|
LaTeX |
||||
|
preprocessors |
||||
|
CSS |
||||
|
customizable |
||||
|
Crieve |
||||
|
cryptocurrency |
||||
|
subpackage |
||||
|
preprocessing |
||||
|
subpackages |
||||
|
dataframes |
||||
|
rescale |
||||
|
rescaling |
||||
|
verifiers |
||||
|
equilibria |
||||
|
disincentivize |
||||
|
timestamp |
||||
|
arclet |
||||
|
amongst |
||||
|
incentivizes |
||||
|
toplevel |
||||
|
nonces |
||||
|
unspendable |
||||
|
malignment |
||||
|
untestable |
||||
|
neurochemical |
||||
|
mistruth |
||||
|
photoreceptors |
||||
|
planarian |
||||
|
incentivizing |
||||
|
cryptocurrencies |
||||
|
incentivization |
||||
|
uncensorable |
||||
|
arclets |
||||
|
unbacked |
||||
|
verifiably |
||||
|
uptime |
||||
|
deduplicating |
||||
|
uploader |
||||
|
downloader |
||||
|
downloaders |
||||
|
uploaders |
||||
|
deduplication |
||||
|
decrypt |
||||
|
deterministicly |
||||
|
trustless |
||||
|
blockchain's |
||||
|
discretize |
||||
|
discretized |
||||
|
unintuitive |
||||
|
discretization |
||||
|
cryptographic |
BIN
vim/spell/en.utf-8.add.spl
BIN
vim/spell/en.utf-8.add.spl
@ -0,0 +1,104 @@ |
|||||
|
" Vim syntax file |
||||
|
" Language: Jade |
||||
|
" Maintainer: Joshua Borton |
||||
|
" Credits: Tim Pope |
||||
|
" Filenames: *.jade |
||||
|
|
||||
|
if exists("b:current_syntax") |
||||
|
finish |
||||
|
endif |
||||
|
|
||||
|
if !exists("main_syntax") |
||||
|
let main_syntax = 'jade' |
||||
|
endif |
||||
|
|
||||
|
silent! syntax include @htmlCoffeescript syntax/coffee.vim |
||||
|
unlet! b:current_syntax |
||||
|
silent! syntax include @htmlStylus syntax/stylus.vim |
||||
|
unlet! b:current_syntax |
||||
|
silent! syntax include @htmlCss syntax/css.vim |
||||
|
unlet! b:current_syntax |
||||
|
silent! syntax include @htmlMarkdown syntax/markdown.vim |
||||
|
unlet! b:current_syntax |
||||
|
|
||||
|
syn case match |
||||
|
|
||||
|
syn region javascriptParenthesisBlock start="(" end=")" contains=@htmlJavascript contained keepend |
||||
|
syn cluster htmlJavascript add=javascriptParenthesisBlock |
||||
|
|
||||
|
syn region jadeJavascript matchgroup=jadeJavascriptOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend |
||||
|
syn region jadeJavascript matchgroup=jadeJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend |
||||
|
syn cluster jadeTop contains=jadeBegin,jadeComment,jadeHtmlComment,jadeJavascript |
||||
|
syn match jadeBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=jadeTag,jadeClassChar,jadeIdChar,jadePlainChar,jadeJavascript,jadeScriptConditional,jadeScriptStatement,jadePipedText |
||||
|
syn match jadeTag "+\?\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@jadeComponent |
||||
|
syn cluster jadeComponent contains=jadeAttributes,jadeIdChar,jadeBlockExpansionChar,jadeClassChar,jadePlainChar,jadeJavascript,jadeTagBlockChar,jadeTagInlineText |
||||
|
syn match jadeComment '\s*\/\/.*$' |
||||
|
syn region jadeCommentBlock start="\z(\s*\)\/\/.*$" end="^\%(\z1\s\|\s*$\)\@!" keepend |
||||
|
syn region jadeHtmlConditionalComment start="<!--\%(.*\)>" end="<!\%(.*\)-->" |
||||
|
syn region jadeAttributes matchgroup=jadeAttributesDelimiter start="(" end=")" contained contains=@htmlJavascript,jadeHtmlArg,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@jadeComponent |
||||
|
syn match jadeClassChar "\." contained nextgroup=jadeClass |
||||
|
syn match jadeBlockExpansionChar ":\s\+" contained nextgroup=jadeTag,jadeClassChar,jadeIdChar |
||||
|
syn match jadeIdChar "#[[{]\@!" contained nextgroup=jadeId |
||||
|
syn match jadeClass "\%(\w\|-\)\+" contained nextgroup=@jadeComponent |
||||
|
syn match jadeId "\%(\w\|-\)\+" contained nextgroup=@jadeComponent |
||||
|
syn region jadeDocType start="^\s*\(!!!\|doctype\)" end="$" |
||||
|
" Unless I'm mistaken, syntax/html.vim requires |
||||
|
" that the = sign be present for these matches. |
||||
|
" This adds the matches back for jade. |
||||
|
syn keyword jadeHtmlArg contained href title |
||||
|
|
||||
|
syn match jadePlainChar "\\" contained |
||||
|
syn region jadeInterpolation matchgroup=jadeInterpolationDelimiter start="[#!]{" end="}" contains=@htmlJavascript |
||||
|
syn match jadeInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)" |
||||
|
syn match jadeTagInlineText "\s.*$" contained contains=jadeInterpolation,jadeTextInlineJade |
||||
|
syn region jadePipedText matchgroup=jadePipeChar start="|" end="$" contained contains=jadeInterpolation,jadeTextInlineJade nextgroup=jadePipedText skipnl |
||||
|
syn match jadeTagBlockChar "\.$" contained nextgroup=jadeTagBlockText,jadeTagBlockEnd skipnl |
||||
|
syn region jadeTagBlockText start="\%(\s*\)\S" end="\ze\n" contained contains=jadeInterpolation,jadeTextInlineJade nextgroup=jadeTagBlockText,jadeTagBlockEnd skipnl |
||||
|
syn region jadeTagBlockEnd start="\s*\S" end="$" contained contains=jadeInterpolation,jadeTextInlineJade nextgroup=jadeBegin skipnl |
||||
|
syn region jadeTextInlineJade matchgroup=jadeInlineDelimiter start="#\[" end="]" contains=jadeTag keepend |
||||
|
|
||||
|
syn region jadeJavascriptFilter matchgroup=jadeFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript |
||||
|
syn region jadeMarkdownFilter matchgroup=jadeFilter start=/^\z(\s*\):\%(markdown\|marked\)\s*$/ end=/^\%(\z1\s\|\s*$\)\@!/ contains=@htmlMarkdown |
||||
|
syn region jadeStylusFilter matchgroup=jadeFilter start="^\z(\s*\):stylus\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlStylus |
||||
|
syn region jadePlainFilter matchgroup=jadeFilter start="^\z(\s*\):\%(sass\|less\|cdata\)\s*$" end="^\%(\z1\s\|\s*$\)\@!" |
||||
|
|
||||
|
syn match jadeScriptConditional "^\s*\<\%(if\|else\|else if\|elif\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!" |
||||
|
syn match jadeScriptStatement "^\s*\<\%(each\|for\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!" |
||||
|
syn region jadeScriptLoopRegion start="^\s*\(for \)" end="$" contains=jadeScriptLoopKeywords |
||||
|
syn keyword jadeScriptLoopKeywords for in contained |
||||
|
|
||||
|
syn region jadeJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,jadeJavascriptTag,jadeCoffeescriptFilter keepend |
||||
|
|
||||
|
syn region jadeCoffeescriptFilter matchgroup=jadeFilter start="^\z(\s*\):coffee-\?script\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCoffeescript contained |
||||
|
syn region jadeJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=jadeBegin,jadeTag |
||||
|
syn region jadeCssBlock start="^\z(\s*\)style" nextgroup=@jadeComponent,jadeError end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCss keepend |
||||
|
|
||||
|
syn match jadeError "\$" contained |
||||
|
|
||||
|
hi def link jadePlainChar Special |
||||
|
hi def link jadeScriptConditional PreProc |
||||
|
hi def link jadeScriptLoopKeywords PreProc |
||||
|
hi def link jadeScriptStatement PreProc |
||||
|
hi def link jadeHtmlArg htmlArg |
||||
|
hi def link jadeAttributeString String |
||||
|
hi def link jadeAttributesDelimiter Identifier |
||||
|
hi def link jadeIdChar Special |
||||
|
hi def link jadeClassChar Special |
||||
|
hi def link jadeBlockExpansionChar Special |
||||
|
hi def link jadePipeChar Special |
||||
|
hi def link jadeTagBlockChar Special |
||||
|
hi def link jadeId Identifier |
||||
|
hi def link jadeClass Type |
||||
|
hi def link jadeInterpolationDelimiter Delimiter |
||||
|
hi def link jadeInlineDelimiter Delimiter |
||||
|
hi def link jadeFilter PreProc |
||||
|
hi def link jadeDocType PreProc |
||||
|
hi def link jadeComment Comment |
||||
|
hi def link jadeCommentBlock Comment |
||||
|
hi def link jadeHtmlConditionalComment jadeComment |
||||
|
|
||||
|
let b:current_syntax = "jade" |
||||
|
|
||||
|
if main_syntax == "jade" |
||||
|
unlet main_syntax |
||||
|
endif |
@ -0,0 +1,110 @@ |
|||||
|
" Vim syntax file |
||||
|
" Language: Pug |
||||
|
" Maintainer: Joshua Borton |
||||
|
" Credits: Tim Pope |
||||
|
" Filenames: *.pug |
||||
|
|
||||
|
if exists("b:current_syntax") |
||||
|
finish |
||||
|
endif |
||||
|
|
||||
|
if !exists("main_syntax") |
||||
|
let main_syntax = 'pug' |
||||
|
endif |
||||
|
|
||||
|
silent! syntax include @htmlCoffeescript syntax/coffee.vim |
||||
|
unlet! b:current_syntax |
||||
|
silent! syntax include @htmlStylus syntax/stylus.vim |
||||
|
unlet! b:current_syntax |
||||
|
silent! syntax include @htmlCss syntax/css.vim |
||||
|
unlet! b:current_syntax |
||||
|
silent! syntax include @htmlMarkdown syntax/markdown.vim |
||||
|
unlet! b:current_syntax |
||||
|
|
||||
|
syn case match |
||||
|
|
||||
|
syn region javascriptParenthesisBlock start="(" end=")" contains=@htmlJavascript contained keepend |
||||
|
syn cluster htmlJavascript add=javascriptParenthesisBlock |
||||
|
|
||||
|
syn region pugJavascript matchgroup=pugJavascriptOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend |
||||
|
syn region pugJavascript matchgroup=pugJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend |
||||
|
syn cluster pugTop contains=pugBegin,pugComment,pugHtmlComment,pugJavascript |
||||
|
syn match pugBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=pugTag,pugClassChar,pugIdChar,pugPlainChar,pugJavascript,pugScriptConditional,pugScriptStatement,pugPipedText |
||||
|
syn match pugTag "+\?[[:alnum:]_-]\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@pugComponent |
||||
|
syn cluster pugComponent contains=pugAttributes,pugIdChar,pugBlockExpansionChar,pugClassChar,pugPlainChar,pugJavascript,pugTagBlockChar,pugTagInlineText |
||||
|
syntax keyword pugCommentTodo contained TODO FIXME XXX TBD |
||||
|
syn match pugComment '\(\s\+\|^\)\/\/.*$' contains=pugCommentTodo,@Spell |
||||
|
syn region pugCommentBlock start="\z(\s\+\|^\)\/\/.*$" end="^\%(\z1\s\|\s*$\)\@!" contains=pugCommentTodo,@Spell keepend |
||||
|
syn region pugHtmlConditionalComment start="<!--\%(.*\)>" end="<!\%(.*\)-->" contains=pugCommentTodo,@Spell |
||||
|
syn region pugAngular2 start="(" end=")" contains=htmlEvent |
||||
|
syn region pugJavascriptString start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contained |
||||
|
syn region pugJavascriptString start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contained |
||||
|
syn region pugAttributes matchgroup=pugAttributesDelimiter start="(" end=")" contained contains=pugJavascriptString,pugHtmlArg,pugAngular2,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@pugComponent |
||||
|
syn match pugClassChar "\." containedin=htmlTagName nextgroup=pugClass |
||||
|
syn match pugBlockExpansionChar ":\s\+" contained nextgroup=pugTag,pugClassChar,pugIdChar |
||||
|
syn match pugIdChar "#[[{]\@!" contained nextgroup=pugId |
||||
|
syn match pugClass "\%(\w\|-\)\+" contained nextgroup=@pugComponent |
||||
|
syn match pugId "\%(\w\|-\)\+" contained nextgroup=@pugComponent |
||||
|
syn region pugDocType start="^\s*\(!!!\|doctype\)" end="$" |
||||
|
" Unless I'm mistaken, syntax/html.vim requires |
||||
|
" that the = sign be present for these matches. |
||||
|
" This adds the matches back for pug. |
||||
|
syn keyword pugHtmlArg contained href title |
||||
|
|
||||
|
syn match pugPlainChar "\\" contained |
||||
|
syn region pugInterpolation matchgroup=pugInterpolationDelimiter start="[#!]{" end="}" contains=@htmlJavascript |
||||
|
syn match pugInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)" |
||||
|
syn match pugTagInlineText "\s.*$" contained contains=pugInterpolation,pugTextInlinePug,@Spell |
||||
|
syn region pugPipedText matchgroup=pugPipeChar start="|" end="$" contained contains=pugInterpolation,pugTextInlinePug nextgroup=pugPipedText skipnl |
||||
|
syn match pugTagBlockChar "\.$" contained nextgroup=pugTagBlockText,pugTagBlockEnd skipnl |
||||
|
syn region pugTagBlockText start="\%(\s*\)\S" end="\ze\n" contained contains=pugInterpolation,pugTextInlinePug,@Spell nextgroup=pugTagBlockText,pugTagBlockEnd skipnl |
||||
|
syn region pugTagBlockEnd start="\s*\S" end="$" contained contains=pugInterpolation,pugTextInlinePug nextgroup=pugBegin skipnl |
||||
|
syn region pugTextInlinePug matchgroup=pugInlineDelimiter start="#\[" end="]" contains=pugTag keepend |
||||
|
|
||||
|
syn region pugJavascriptFilter matchgroup=pugFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript |
||||
|
syn region pugMarkdownFilter matchgroup=pugFilter start=/^\z(\s*\):\%(markdown\|marked\)\s*$/ end=/^\%(\z1\s\|\s*$\)\@!/ contains=@htmlMarkdown |
||||
|
syn region pugStylusFilter matchgroup=pugFilter start="^\z(\s*\):stylus\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlStylus |
||||
|
syn region pugPlainFilter matchgroup=pugFilter start="^\z(\s*\):\%(sass\|less\|cdata\)\s*$" end="^\%(\z1\s\|\s*$\)\@!" |
||||
|
|
||||
|
syn match pugScriptConditional "^\s*\<\%(if\|else\|else if\|elif\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!" |
||||
|
syn match pugScriptStatement "^\s*\<\%(each\|for\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!" |
||||
|
syn region pugScriptLoopRegion start="^\s*\(for \)" end="$" contains=pugScriptLoopKeywords |
||||
|
syn keyword pugScriptLoopKeywords for in contained |
||||
|
|
||||
|
syn region pugJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,pugJavascriptTag,pugCoffeescriptFilter keepend |
||||
|
|
||||
|
syn region pugCoffeescriptFilter matchgroup=pugFilter start="^\z(\s*\):coffee-\?script\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCoffeescript contained |
||||
|
syn region pugJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=pugBegin,pugTag |
||||
|
syn region pugCssBlock start="^\z(\s*\)style" nextgroup=@pugComponent,pugError end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCss keepend |
||||
|
|
||||
|
syn match pugError "\$" contained |
||||
|
|
||||
|
hi def link pugPlainChar Special |
||||
|
hi def link pugScriptConditional PreProc |
||||
|
hi def link pugScriptLoopKeywords PreProc |
||||
|
hi def link pugScriptStatement PreProc |
||||
|
hi def link pugHtmlArg htmlArg |
||||
|
hi def link pugAttributeString String |
||||
|
hi def link pugAttributesDelimiter Identifier |
||||
|
hi def link pugIdChar Special |
||||
|
hi def link pugClassChar Special |
||||
|
hi def link pugBlockExpansionChar Special |
||||
|
hi def link pugPipeChar Special |
||||
|
hi def link pugTagBlockChar Special |
||||
|
hi def link pugId Identifier |
||||
|
hi def link pugClass Type |
||||
|
hi def link pugInterpolationDelimiter Delimiter |
||||
|
hi def link pugInlineDelimiter Delimiter |
||||
|
hi def link pugFilter PreProc |
||||
|
hi def link pugDocType PreProc |
||||
|
hi def link pugCommentTodo Todo |
||||
|
hi def link pugComment Comment |
||||
|
hi def link pugCommentBlock Comment |
||||
|
hi def link pugHtmlConditionalComment pugComment |
||||
|
hi def link pugJavascriptString String |
||||
|
|
||||
|
let b:current_syntax = "pug" |
||||
|
|
||||
|
if main_syntax == "pug" |
||||
|
unlet main_syntax |
||||
|
endif |
@ -0,0 +1,48 @@ |
|||||
|
" Vim syntax file |
||||
|
" Language: Taskpaper (http://hogbaysoftware.com/projects/taskpaper) |
||||
|
" Maintainer: David O'Callaghan <david.ocallaghan@cs.tcd.ie> |
||||
|
" URL: https://github.com/davidoc/taskpaper.vim |
||||
|
" Last Change: 2012-03-07 |
||||
|
|
||||
|
if version < 600 |
||||
|
syntax clear |
||||
|
elseif exists("b:current_syntax") |
||||
|
finish |
||||
|
endif |
||||
|
|
||||
|
if version < 508 |
||||
|
command! -nargs=+ HiLink hi link <args> |
||||
|
else |
||||
|
command! -nargs=+ HiLink hi def link <args> |
||||
|
endif |
||||
|
|
||||
|
" Define tag styles |
||||
|
if !exists('g:task_paper_styles') |
||||
|
let g:task_paper_styles = {'FAIL': 'guibg=Red guifg=White'} |
||||
|
endif |
||||
|
|
||||
|
syn case ignore |
||||
|
|
||||
|
syn match taskpaperComment /^.*$/ contains=taskpaperContext |
||||
|
syn match taskpaperProject /^.\+:\(\s\+@[^ \t(]\+\(([^)]*)\)\?\)*$/ contains=taskpaperContext |
||||
|
syn match taskpaperListItem /^\t*-\s\+/ |
||||
|
syn match taskpaperContext /\s\zs@[^ \t(]\+\(([^)]*)\)\?/ |
||||
|
syn match taskpaperDone /^.*\s@done\(\(\s\|([^)]*)\).*\)\?$/ |
||||
|
syn match taskpaperCancelled /^.*\s@cancelled\(\(\s\|([^)]*)\).*\)\?$/ |
||||
|
|
||||
|
syn sync fromstart |
||||
|
|
||||
|
"highlighting for Taskpaper groups |
||||
|
HiLink taskpaperListItem Identifier |
||||
|
HiLink taskpaperContext Identifier |
||||
|
HiLink taskpaperProject Title |
||||
|
HiLink taskpaperDone NonText |
||||
|
HiLink taskpaperCancelled NonText |
||||
|
HiLink taskpaperComment Comment |
||||
|
|
||||
|
call taskpaper#tag_style_dict(g:task_paper_styles) |
||||
|
|
||||
|
let b:current_syntax = "taskpaper" |
||||
|
|
||||
|
delcommand HiLink |
||||
|
" vim: ts=8 |
@ -0,0 +1,95 @@ |
|||||
|
" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just |
||||
|
" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime |
||||
|
" you can find below. If you wish to change any of those settings, you should |
||||
|
" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten |
||||
|
" everytime an upgrade of the vim packages is performed. It is recommended to |
||||
|
" make changes after sourcing debian.vim since it alters the value of the |
||||
|
" 'compatible' option. |
||||
|
|
||||
|
" Uncomment the next line to make Vim more Vi-compatible |
||||
|
" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous |
||||
|
" options, so any other options should be set AFTER setting 'compatible'. |
||||
|
"set compatible |
||||
|
|
||||
|
" Vim5 and later versions support syntax highlighting. Uncommenting the |
||||
|
" following enables syntax highlighting by default. |
||||
|
if has("syntax") |
||||
|
set t_Co=256 |
||||
|
syntax on |
||||
|
" Uncomment the following 'let' lines if using xter16 color scheme |
||||
|
" Select colormap: 'soft', 'softlight', 'standard', or 'allblue' |
||||
|
let xterm16_colormap = 'allblue' |
||||
|
" Select brightness: 'low', 'med', 'high', 'default', or custom levels |
||||
|
let xterm16_brightness = 'high' |
||||
|
"Other override options: |
||||
|
let xterm16fg_Cursor = '555' |
||||
|
let xterm16bg_Normal = 'none' |
||||
|
"Set color scheme |
||||
|
colorscheme xterm16 |
||||
|
endif |
||||
|
|
||||
|
" If using a dark background within the editing area and syntax highlighting |
||||
|
" turn on this option as well |
||||
|
set background=dark |
||||
|
|
||||
|
" Uncomment the following to have Vim jump to the last position when |
||||
|
" reopening a file |
||||
|
if has("autocmd") |
||||
|
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif |
||||
|
endif |
||||
|
|
||||
|
" Uncomment the following to have Vim load indentation rules and plugins |
||||
|
" according to the detected filetype. |
||||
|
if has("autocmd") |
||||
|
filetype plugin indent on |
||||
|
endif |
||||
|
|
||||
|
" The following are commented out as they cause vim to behave a lot |
||||
|
" differently from regular Vi. They are highly recommended though. |
||||
|
set showcmd " Show (partial) command in status line. |
||||
|
set showmatch " Show matching brackets. |
||||
|
set ignorecase " Do case insensitive matching |
||||
|
set smartcase " Do smart case matching |
||||
|
"set incsearch " Incremental search |
||||
|
"set autowrite " Automatically save before commands like :next and :make |
||||
|
"set hidden " Hide buffers when they are abandoned |
||||
|
set mouse=a " Enable mouse usage (all modes) |
||||
|
set nohlsearch " Turn off search highlighting |
||||
|
"set expandtab " Turn tabs to spaces |
||||
|
set shiftwidth=4 " Auto-indent amount when using cindent, <<, >>, etc. |
||||
|
set softtabstop=4 " How many spaces represent a tab |
||||
|
set tabstop=4 " Real tab size |
||||
|
set autoindent " Indent level of new line set by previous line |
||||
|
"set smartindent " Attempt to intelligently guess level of indent for new line |
||||
|
set cindent " Attempt to intelligently guess level of indent for new line |
||||
|
set cinkeys-=0# " Don't un-indent comments |
||||
|
set indentkeys-=0# " Don't un-indent comments |
||||
|
set nf=octal,hex,alpha " additional ctrl-a increments |
||||
|
set spell spelllang=en_us " Set spell check language |
||||
|
set scrolloff=5 " Add visible lines beyond cursor at top or bottom of window |
||||
|
|
||||
|
noremap n nzz |
||||
|
noremap N Nzz |
||||
|
noremap * *zz |
||||
|
noremap # #zz |
||||
|
noremap g* g*zz |
||||
|
noremap g# g#zz |
||||
|
|
||||
|
autocmd FileType plaintex,tex,latex syntax spell toplevel |
||||
|
autocmd FileType plaintex,tex,latex set tw=80 |
||||
|
autocmd FileType pug,jade set tw=80 |
||||
|
|
||||
|
au BufNewFile,BufRead *.cu set filetype=c |
||||
|
au BufNewFile,BufRead *.tp set filetype=taskpaper |
||||
|
|
||||
|
aug python |
||||
|
" to override ftype/python.vim |
||||
|
au FileType python setlocal ts=4 sts=4 sw=4 noexpandtab |
||||
|
aug end |
||||
|
|
||||
|
" Source a global configuration file if available |
||||
|
if filereadable("/etc/vim/vimrc.local") |
||||
|
source /etc/vim/vimrc.local |
||||
|
endif |
||||
|
|
||||
|
syntax spell toplevel |