Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
configs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Taddeüs Kroes
configs
Commits
fa0547f6
Commit
fa0547f6
authored
Nov 05, 2014
by
Taddeüs Kroes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added vim-pathogen and vim-latte
parent
62d517ab
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
856 additions
and
0 deletions
+856
-0
vim/autoload/pathogen.vim
vim/autoload/pathogen.vim
+347
-0
vim/bundle/vim-latte
vim/bundle/vim-latte
+1
-0
vim/indent/latte.vim
vim/indent/latte.vim
+505
-0
vimrc
vimrc
+3
-0
No files found.
vim/autoload/pathogen.vim
0 → 100644
View file @
fa0547f6
" pathogen.vim - path option manipulation
" Maintainer: Tim Pope <http://tpo.pe/>
" Version: 2.3
" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
"
" For management of individually installed plugins in ~/.vim/bundle (or
" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your
" .vimrc is the only other setup necessary.
"
" The API is documented inline below.
if
exists
(
"g:loaded_pathogen"
)
||
&
cp
finish
endif
let
g:loaded_pathogen
=
1
" Point of entry for basic default usage. Give a relative path to invoke
" pathogen#interpose() (defaults to "bundle/{}"), or an absolute path to invoke
" pathogen#surround(). Curly braces are expanded with pathogen#expand():
" "bundle/{}" finds all subdirectories inside "bundle" inside all directories
" in the runtime path.
function
!
pathogen#infect
(...)
abort
for
path
in
a:0
?
filter
(
reverse
(
copy
(
a:000
)),
'type(v:val) == type("")'
)
:
[
'bundle/{}'
]
if
path
=~
#
'^\%({\=[$~\\/]\|{\=\w:[\\/]\).*[{}*]'
call
pathogen#surround
(
path
)
elseif
path
=~
#
'^\%([$~\\/]\|\w:[\\/]\)'
call
s:warn
(
'Change pathogen#infect('
.
string
(
path
).
') to pathogen#infect('
.
string
(
path
.
'/{}'
).
')'
)
call
pathogen#surround
(
path
.
'/{}'
)
elseif
path
=~
#
'[{}*]'
call
pathogen#interpose
(
path
)
else
call
s:warn
(
'Change pathogen#infect('
.
string
(
path
).
') to pathogen#infect('
.
string
(
path
.
'/{}'
).
')'
)
call
pathogen#interpose
(
path
.
'/{}'
)
endif
endfor
call
pathogen#cycle_filetype
()
if
pathogen#is_disabled
(
$MYVIMRC
)
return
'finish'
endif
return
''
endfunction
" Split a path into a list.
function
!
pathogen#split
(
path
)
abort
if
type
(
a:path
)
==
type
([])
|
return
a:path
|
endif
if
empty
(
a:path
)
|
return
[]
|
endif
let
split
=
split
(
a:path
,
'\\\@<!\%(\\\\\)*\zs,'
)
return
map
(
split
,
'substitute(v:val,''\\\([\\,]\)'',''\1'',"g")'
)
endfunction
" Convert a list to a path.
function
!
pathogen#
join
(...)
abort
if
type
(
a:1
)
==
type
(
1
)
&&
a:1
let
i
=
1
let
space
=
' '
else
let
i
=
0
let
space
=
''
endif
let
path
=
""
while
i
<
a:0
if
type
(
a:000
[
i
])
==
type
([])
let
list
=
a:000
[
i
]
let
j
=
0
while
j
<
len
(
list
)
let
escaped
=
substitute
(
list
[
j
],
'[,'
.
space
.
']\|\\[\,'
.
space
.
']\@='
,
'\\&'
,
'g'
)
let
path
.=
','
.
escaped
let
j
+=
1
endwhile
else
let
path
.=
","
.
a:000
[
i
]
endif
let
i
+=
1
endwhile
return
substitute
(
path
,
'^,'
,
''
,
''
)
endfunction
" Convert a list to a path with escaped spaces for 'path', 'tag', etc.
function
!
pathogen#legacyjoin
(...)
abort
return
call
(
'pathogen#join'
,[
1
]
+
a:000
)
endfunction
" Turn filetype detection off and back on again if it was already enabled.
function
!
pathogen#cycle_filetype
()
abort
if
exists
(
'g:did_load_filetypes'
)
filetype
off
filetype
on
endif
endfunction
" Check if a bundle is disabled. A bundle is considered disabled if its
" basename or full name is included in the list g:pathogen_disabled.
function
!
pathogen#is_disabled
(
path
)
abort
if
a:path
=~
#
'\~$'
return
1
endif
let
sep
=
pathogen#slash
()
let
blacklist
=
map
(
\
get
(
g
:,
'pathogen_blacklist'
,
get
(
g
:,
'pathogen_disabled'
,
[]))
+
\
pathogen#split
(
$VIMBLACKLIST
),
\
'substitute(v:val, "[\\/]$", "", "")'
)
return
index
(
blacklist
,
fnamemodify
(
a:path
,
':t'
))
!=
-1
||
index
(
blacklist
,
a:path
)
!=
-1
endfunction
"
}}}
1
" Prepend the given directory to the runtime path and append its corresponding
" after directory. Curly braces are expanded with pathogen#expand().
function
!
pathogen#surround
(
path
)
abort
let
sep
=
pathogen#slash
()
let
rtp
=
pathogen#split
(
&rtp
)
let
path
=
fnamemodify
(
a:path
,
':p:?[\\/]\=$??'
)
let
before
=
filter
(
pathogen#expand
(
path
),
'!pathogen#is_disabled(v:val)'
)
let
after
=
filter
(
reverse
(
pathogen#expand
(
path
.
sep
.
'after'
)),
'!pathogen#is_disabled(v:val[0:-7])'
)
call
filter
(
rtp
,
'index(before + after, v:val) == -1'
)
let
&rtp
=
pathogen#
join
(
before
,
rtp
,
after
)
return
&rtp
endfunction
" For each directory in the runtime path, add a second entry with the given
" argument appended. Curly braces are expanded with pathogen#expand().
function
!
pathogen#interpose
(
name
)
abort
let
sep
=
pathogen#slash
()
let
name
=
a:name
if
has_key
(
s:done_bundles
,
name
)
return
""
endif
let
s:done_bundles
[
name
]
=
1
let
list
=
[]
for
dir
in
pathogen#split
(
&rtp
)
if
dir
=~
#
'\<after$'
let
list
+=
reverse
(
filter
(
pathogen#expand
(
dir
[
0
:
-6
].
name
.
sep
.
'after'
),
'!pathogen#is_disabled(v:val[0:-7])'
))
+
[
dir
]
else
let
list
+=
[
dir
]
+
filter
(
pathogen#expand
(
dir
.
sep
.
name
),
'!pathogen#is_disabled(v:val)'
)
endif
endfor
let
&rtp
=
pathogen#
join
(
pathogen#uniq
(
list
))
return
1
endfunction
let
s:done_bundles
=
{}
" Invoke :helptags on all non-$VIM doc directories in runtimepath.
function
!
pathogen#
helptags
()
abort
let
sep
=
pathogen#slash
()
for
glob
in
pathogen#split
(
&rtp
)
for
dir
in
map
(
split
(
glob
(
glob
),
"\n"
),
'v:val.sep."/doc/".sep'
)
if
(
dir
)[
0
:
strlen
(
$VIMRUNTIME
)]
!=
# $VIMRUNTIME
.
sep && filewritable
(
dir
)
==
2
&&
!
empty
(
split
(
glob
(
dir
.
'*.txt'
)))
&&
(!
filereadable
(
dir
.
'tags'
)
||
filewritable
(
dir
.
'tags'
))
silent
!
execute
'helptags'
pathogen#fnameescape
(
dir
)
endif
endfor
endfor
endfunction
command
!
-
bar Helptags
:
call
pathogen#
helptags
()
" Execute the given command. This is basically a backdoor for --remote-expr.
function
!
pathogen#execute
(...)
abort
for
command
in
a:000
execute command
endfor
return
''
endfunction
" Section: Unofficial
function
!
pathogen#is_absolute
(
path
)
abort
return
a:path
=~
#
(
has
(
'win32'
)
?
'^\%([\\/]\|\w:\)[\\/]\|^[~$]'
:
'^[/~$]'
)
endfunction
" Given a string, returns all possible permutations of comma delimited braced
" alternatives of that string. pathogen#expand('/{a,b}/{c,d}') yields
" ['/a/c', '/a/d', '/b/c', '/b/d']. Empty braces are treated as a wildcard
" and globbed. Actual globs are preserved.
function
!
pathogen#expand
(
pattern
)
abort
if
a:pattern
=~
#
'{[^{}]\+}'
let
[
pre
,
pat
,
post
]
=
split
(
substitute
(
a:pattern
,
'\(.\{-\}\){\([^{}]\+\)}\(.*\)'
,
"\\1\001\\2\001\\3"
,
''
),
"\001"
,
1
)
let
found
=
map
(
split
(
pat
,
','
,
1
),
'pre.v:val.post'
)
let
results
=
[]
for
pattern
in
found
call
extend
(
results
,
pathogen#expand
(
pattern
))
endfor
return
results
elseif
a:pattern
=~
#
'{}'
let
pat
=
matchstr
(
a:pattern
,
'^.*{}[^*]*\%($\|[\\/]\)'
)
let
post
=
a:pattern
[
strlen
(
pat
)
:
-1
]
return
map
(
split
(
glob
(
substitute
(
pat
,
'{}'
,
'*'
,
'g'
)),
"\n"
),
'v:val.post'
)
else
return
[
a:pattern
]
endif
endfunction
" \ on Windows unless shellslash is set, / everywhere else.
function
!
pathogen#slash
()
abort
return
!
exists
(
"+shellslash"
)
||
&shellslash ?
'/'
:
'\'
endfunction
function
!
pathogen#separator
()
abort
return
pathogen#slash
()
endfunction
" Convenience wrapper around glob() which returns a list.
function
!
pathogen#glob
(
pattern
)
abort
let
files
=
split
(
glob
(
a:pattern
),
"\n"
)
return
map
(
files
,
'substitute(v:val,"[".pathogen#slash()."/]$","","")'
)
endfunction
"
}}}
1
" Like pathogen#glob(), only limit the results to directories.
function
!
pathogen#glob_directories
(
pattern
)
abort
return
filter
(
pathogen#glob
(
a:pattern
),
'isdirectory(v:val)'
)
endfunction
"
}}}
1
" Remove duplicates from a list.
function
!
pathogen#uniq
(
list
)
abort
let
i
=
0
let
seen
=
{}
while
i
<
len
(
a:list
)
if
(
a:list
[
i
]
==
#
''
&& exists
(
'empty'
))
||
has_key
(
seen
,
a:list
[
i
])
call
remove
(
a:list
,
i
)
elseif
a:list
[
i
]
==
#
''
let
i
+=
1
let
empty
=
1
else
let
seen
[
a:list
[
i
]]
=
1
let
i
+=
1
endif
endwhile
return
a:list
endfunction
" Backport of fnameescape().
function
!
pathogen#fnameescape
(
string
)
abort
if
exists
(
'*fnameescape'
)
return
fnameescape
(
a:string
)
elseif
a:string
==
#
'-'
return
'\-'
else
return
substitute
(
escape
(
a:string
,
" \t\n*?[{`$\\%#'\"|!<"
),
'^[+>]'
,
'\\&'
,
''
)
endif
endfunction
" Like findfile(), but hardcoded to use the runtimepath.
function
!
pathogen#runtime_findfile
(
file
,
count
)
abort "
{{{
1
let
rtp
=
pathogen#
join
(
1
,
pathogen#split
(
&rtp
))
let
file
=
findfile
(
a:file
,
rtp
,
a:count
)
if
file
==
#
''
return
''
else
return
fnamemodify
(
file
,
':p'
)
endif
endfunction
" Section: Deprecated
function
!
s:warn
(
msg
)
abort
echohl WarningMsg
echomsg
a:msg
echohl
NONE
endfunction
" Prepend all subdirectories of path to the rtp, and append all 'after'
" directories in those subdirectories. Deprecated.
function
!
pathogen#runtime_prepend_subdirectories
(
path
)
abort
call
s:warn
(
'Change pathogen#runtime_prepend_subdirectories('
.
string
(
a:path
).
') to pathogen#infect('
.
string
(
a:path
.
'/{}'
).
')'
)
return
pathogen#surround
(
a:path
.
pathogen#slash
()
.
'{}'
)
endfunction
function
!
pathogen#incubate
(...)
abort
let
name
=
a:0
?
a:1
:
'bundle/{}'
call
s:warn
(
'Change pathogen#incubate('
.(
a:0
? string
(
a:1
)
:
''
).
') to pathogen#infect('
.
string
(
name
).
')'
)
return
pathogen#interpose
(
name
)
endfunction
" Deprecated alias for pathogen#interpose().
function
!
pathogen#runtime_append_all_bundles
(...)
abort
if
a:0
call
s:warn
(
'Change pathogen#runtime_append_all_bundles('
.
string
(
a:1
).
') to pathogen#infect('
.
string
(
a:1
.
'/{}'
).
')'
)
else
call
s:warn
(
'Change pathogen#runtime_append_all_bundles() to pathogen#infect()'
)
endif
return
pathogen#interpose
(
a:0
?
a:1
.
'/{}'
:
'bundle/{}'
)
endfunction
if
exists
(
':Vedit'
)
finish
endif
let
s:vopen_warning
=
0
function
!
s:find
(
count
,
cmd
,
file
,
lcd
)
let
rtp
=
pathogen#
join
(
1
,
pathogen#split
(
&runtimepath
))
let
file
=
pathogen#runtime_findfile
(
a:file
,
a:count
)
if
file
==
#
''
return
"echoerr 'E345: Can''t find file \""
.
a:file
.
"\" in runtimepath'"
endif
if
!
s:vopen_warning
let
s:vopen_warning
=
1
let
warning
=
'|echohl WarningMsg|echo "Install scriptease.vim to continue using :V'
.
a:cmd
.
'"|echohl NONE'
else
let
warning
=
''
endif
if
a:lcd
let
path
=
file
[
0
:-
strlen
(
a:file
)
-2
]
execute
'lcd `=path`'
return
a:cmd
.
' '
.
pathogen#fnameescape
(
a:file
)
.
warning
else
return
a:cmd
.
' '
.
pathogen#fnameescape
(
file
)
.
warning
endif
endfunction
function
!
s:Findcomplete
(
A
,
L
,
P
)
let
sep
=
pathogen#slash
()
let
cheats
=
{
\
'a'
:
'autoload'
,
\
'd'
:
'doc'
,
\
'f'
:
'ftplugin'
,
\
'i'
:
'indent'
,
\
'p'
:
'plugin'
,
\
's'
:
'syntax'
}
if
a:A
=~
#
'^\w[\\/]'
&& has_key
(
cheats
,
a:A
[
0
])
let
request
=
cheats
[
a:A
[
0
]].
a:A
[
1
:
-1
]
else
let
request
=
a:A
endif
let
pattern
=
substitute
(
request
,
'/\|\'.sep,'
*
'.sep,'
g
').'
*'
let
found
=
{}
for
path
in
pathogen#split
(
&runtimepath
)
let
path
=
expand
(
path
,
':p'
)
let
matches
=
split
(
glob
(
path
.
sep
.
pattern
),
"\n"
)
call
map
(
matches
,
'isdirectory(v:val) ? v:val.sep : v:val'
)
call
map
(
matches
,
'expand(v:val, ":p")[strlen(path)+1:-1]'
)
for
match
in
matches
let
found
[
match
]
=
1
endfor
endfor
return
sort
(
keys
(
found
))
endfunction
command
!
-
bar
-
bang
-
range
=
1
-
nargs
=
1
-
complete
=
customlist
,
s:Findcomplete
Ve
:
execute
s:find
(<
count
>,
'edit<bang>'
,<
q
-
args
>,
0
)
command
!
-
bar
-
bang
-
range
=
1
-
nargs
=
1
-
complete
=
customlist
,
s:Findcomplete
Vedit
:
execute
s:find
(<
count
>,
'edit<bang>'
,<
q
-
args
>,
0
)
command
!
-
bar
-
bang
-
range
=
1
-
nargs
=
1
-
complete
=
customlist
,
s:Findcomplete
Vopen
:
execute
s:find
(<
count
>,
'edit<bang>'
,<
q
-
args
>,
1
)
command
!
-
bar
-
bang
-
range
=
1
-
nargs
=
1
-
complete
=
customlist
,
s:Findcomplete
Vsplit
:
execute
s:find
(<
count
>,
'split'
,<
q
-
args
>,<
bang
>
1
)
command
!
-
bar
-
bang
-
range
=
1
-
nargs
=
1
-
complete
=
customlist
,
s:Findcomplete
Vvsplit
:
execute
s:find
(<
count
>,
'vsplit'
,<
q
-
args
>,<
bang
>
1
)
command
!
-
bar
-
bang
-
range
=
1
-
nargs
=
1
-
complete
=
customlist
,
s:Findcomplete
Vtabedit
:
execute
s:find
(<
count
>,
'tabedit'
,<
q
-
args
>,<
bang
>
1
)
command
!
-
bar
-
bang
-
range
=
1
-
nargs
=
1
-
complete
=
customlist
,
s:Findcomplete
Vpedit
:
execute
s:find
(<
count
>,
'pedit'
,<
q
-
args
>,<
bang
>
1
)
command
!
-
bar
-
bang
-
range
=
1
-
nargs
=
1
-
complete
=
customlist
,
s:Findcomplete
Vread
:
execute
s:find
(<
count
>,
'read'
,<
q
-
args
>,<
bang
>
1
)
" vim:set et sw=2 foldmethod=expr foldexpr=getline(v\:lnum)=~'^\"\ Section\:'?'>1'\:getline(v\:lnum)=~#'^fu'?'a1'\:getline(v\:lnum)=~#'^endf'?'s1'\:'=':
vim-latte
@
22cc8bb0
Subproject commit 22cc8bb0b19ad8115d641a03a9ba29ed37cd9f84
vim/indent/latte.vim
0 → 100644
View file @
fa0547f6
" Vim indent script for HTML
" General: "{{{
" File: html.vim (Vimscript #2075)
" Author: Andy Wokula <anwoku@yahoo.de>
" Last Change: 2013 Jun 12
" Rev Days: 13
" Version: 0.9
" Vim Version: Vim7
" Description:
" Improved version of the distributed html indent script, faster on a
" range of lines.
"
" Credits:
" indent/html.vim (2006 Jun 05) from J. Zellner
" indent/css.vim (2006 Dec 20) from N. Weibull
"
" History:
" 2012 Oct 21 (v0.9) added support for shiftwidth()
" 2011 Sep 09 (v0.8) added HTML5 tags (thx to J. Zuckerman)
" 2008 Apr 28 (v0.6) revised customization
" 2008 Mar 09 (v0.5) fixed 'indk' issue (thx to C.J. Robinson)
" }}}
" Init Folklore, check user settings (2nd time ++) "{{{
if
exists
(
"b:did_indent"
)
finish
endif
let
b:did_indent
=
1
setlocal
indentexpr
=
HtmlIndent
()
setlocal
indentkeys
=
o
,
O
,<
Return
>,<>>,{,},!
^F
let
b:indent
=
{
"lnum"
:
-1
}
let
b:undo_indent
=
"set inde< indk<| unlet b:indent"
" Load Once:
if
exists
(
"*HtmlIndent"
)
call
HtmlIndent_CheckUserSettings
()
finish
endif
" Patch 7.3.694
if
exists
(
'*shiftwidth'
)
let
s:ShiftWidth
=
function
(
'shiftwidth'
)
else
func
!
s:ShiftWidth
()
return
&shiftwidth
endfunc
endif
let
s:cpo_save
=
&cpo
set
cpo
-=
C
"}}}
func
!
HtmlIndent_CheckUserSettings
()
"
{{{
if
exists
(
"g:html_indent_inctags"
)
call
s:AddITags
(
split
(
g:html_indent_inctags
,
","
))
endif
if
exists
(
"g:html_indent_autotags"
)
call
s:RemoveITags
(
split
(
g:html_indent_autotags
,
","
))
endif
let
indone
=
{
"zero"
:
0
\
,
"auto"
:
"indent(prevnonblank(v:lnum-1))"
\
,
"inc"
:
"b:indent.blocktagind + s:ShiftWidth()"
}
if
exists
(
"g:html_indent_script1"
)
let
s:js1indent
=
get
(
indone
,
g:html_indent_script1
,
indone
.
zero
)
endif
if
exists
(
"g:html_indent_style1"
)
let
s:css1indent
=
get
(
indone
,
g:html_indent_style1
,
indone
.
zero
)
endif
endfunc "
}}}
" Init Script Vars "{{{
let
s:usestate
=
1
let
s:css1indent
=
0
let
s:js1indent
=
0
" not to be changed:
let
s:endtags
=
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
]
" some places unused
let
s:newstate
=
{}
let
s:countonly
=
0
"}}}
func
!
s:AddITags
(
taglist
)
"
{{{
for
itag
in
a:taglist
let
s:indent_tags
[
itag
]
=
1
let
s:indent_tags
[
'/'
.
itag
]
=
-1
endfor
endfunc "
}}}
func
!
s:AddBlockTag
(
tag
,
id
,
...)
"
{{{
if
!(
a:id
>=
2
&&
a:id
<
2
+
len
(
s:endtags
))
return
endif
let
s:indent_tags
[
a:tag
]
=
a:id
if
a:0
==
0
let
s:indent_tags
[
'/'
.
a:tag
]
=
-
a:id
let
s:endtags
[
a:id
-2
]
=
"</"
.
a:tag
.
">"
else
let
s:indent_tags
[
a:1
]
=
-
a:id
let
s:endtags
[
a:id
-2
]
=
a:1
endif
endfunc "
}}}
func
!
s:RemoveITags
(
taglist
)
"
{{{
" remove itags (protect blocktags from being removed)
for
itag
in
a:taglist
if
!
has_key
(
s:indent_tags
,
itag
)
||
s:indent_tags
[
itag
]
!=
1
continue
endif
unlet
s:indent_tags
[
itag
]
if
itag
=~
'^\w\+$'
unlet
s:indent_tags
[
"/"
.
itag
]
endif
endfor
endfunc "
}}}
" Add Indent Tags: {{{
if
!
exists
(
"s:indent_tags"
)
let
s:indent_tags
=
{}
endif
" old tags:
call
s:AddITags
([
'a'
,
'abbr'
,
'acronym'
,
'address'
,
'b'
,
'bdo'
,
'big'
,
\
'blockquote'
,
'button'
,
'caption'
,
'center'
,
'cite'
,
'code'
,
'colgroup'
,
\
'del'
,
'dfn'
,
'dir'
,
'div'
,
'dl'
,
'em'
,
'fieldset'
,
'font'
,
'form'
,
\
'frameset'
,
'h1'
,
'h2'
,
'h3'
,
'h4'
,
'h5'
,
'h6'
,
'i'
,
'iframe'
,
'ins'
,
'kbd'
,
\
'label'
,
'legend'
,
'map'
,
'menu'
,
'noframes'
,
'noscript'
,
'object'
,
'ol'
,
\
'optgroup'
,
'q'
,
's'
,
'samp'
,
'select'
,
'small'
,
'span'
,
'strong'
,
'sub'
,
\
'sup'
,
'table'
,
'textarea'
,
'title'
,
'tt'
,
'u'
,
'ul'
,
'var'
,
'th'
,
'td'
,
\
'tr'
,
'tfoot'
,
'thead'
])
" tags added 2011 Sep 09 (especially HTML5 tags):
call
s:AddITags
([
'area'
,
'article'
,
'aside'
,
'audio'
,
'bdi'
,
'canvas'
,
\
'command'
,
'datalist'
,
'details'
,
'embed'
,
'figure'
,
'footer'
,
\
'header'
,
'group'
,
'keygen'
,
'mark'
,
'math'
,
'meter'
,
'nav'
,
'output'
,
\
'progress'
,
'ruby'
,
'section'
,
'svg'
,
'texture'
,
'time'
,
'video'
,
\
'wbr'
,
'text'
])
"}}}
" Add Block Tags: contain alien content "{{{
call
s:AddBlockTag
(
'pre'
,
2
)
call
s:AddBlockTag
(
'script'
,
3
)
call
s:AddBlockTag
(
'style'
,
4
)
call
s:AddBlockTag
(
'<!--'
,
5
,
'-->'
)
"}}}
func
!
s:CountITags
(...)
"
{{{
" relative indent steps for current line [unit &sw]:
let
s:curind
=
0
" relative indent steps for next line [unit &sw]:
let
s:nextrel
=
0
if
a:0
==
0
let
s:block
=
s:newstate
.
block
let
tmpline
=
substitute
(
s:curline
,
'<\zs\/\=\w\+\>\|<!--\|-->'
,
'\=s:CheckTag(submatch(0))'
,
'g'
)
if
s:block
==
3
let
s:newstate
.
scripttype
=
s:GetScriptType
(
matchstr
(
tmpline
,
'\C.*<SCRIPT\>\zs[^>]*'
))
endif
let
s:newstate
.
block
=
s:block
else
let
s:block
=
0
" assume starting outside of
a
block
let
s:countonly
=
1
" don'
t
change state
let
tmpline
=
substitute
(
s:altline
,
'<\zs\/\=\w\+\>\|<!--\|-->'
,
'\=s:CheckTag(submatch(0))'
,
'g'
)
let
s:countonly
=
0
endif
endfunc "
}}}
func
!
s:CheckTag
(
itag
)
"
{{{
" "tag" or "/tag" or "<!--" or "-->"
let
ind
=
get
(
s:indent_tags
,
a:itag
)
if
ind
==
-1
" closing tag
if
s:block
!=
0
" ignore itag within a block
return
"foo"
endif
if
s:nextrel
==
0
let
s:curind
-=
1
else
let
s:nextrel
-=
1
endif
" if s:curind >= 1
" let s:curind -= 1
" else
" let s:nextrel -= 1
" endif
elseif
ind
==
1
" opening tag
if
s:block
!=
0
return
"foo"
endif
let
s:nextrel
+=
1
elseif
ind
!=
0
" block-tag (opening or closing)
return
s:Blocktag
(
a:itag
,
ind
)
endif
" else ind==0 (other tag found): keep indent
return
"foo"
" no matter
endfunc "
}}}
func
!
s:Blocktag
(
blocktag
,
ind
)
"
{{{
if
a:ind
>
0
" a block starts here
if
s:block
!=
0
" already in a block (nesting) - ignore
" especially ignore comments after other blocktags
return
"foo"
endif
let
s:block
=
a:ind
" block type
if
s:countonly
return
"foo"
endif
let
s:newstate
.
blocklnr
=
v
:
lnum
" save allover indent for the endtag
let
s:newstate
.
blocktagind
=
b:indent
.
baseindent
+
(
s:nextrel
+
s:curind
)
*
s:ShiftWidth
()
if
a:ind
==
3
return
"SCRIPT"
"
all
except this must be lowercase
" line is to be checked again for the type attribute
endif
else
let
s:block
=
0
" we get here if starting and closing block-tag on same line
endif
return
"foo"
endfunc "
}}}
func
!
s:GetScriptType
(
str
)
"
{{{
if
a:str
==
""
||
a:str
=~
"java"
return
"javascript"
else
return
""
endif
endfunc "
}}}
func
!
s:FreshState
(
lnum
)
"
{{{
" Look back in the file (lines 1 to a:lnum-1) to calc a state for line
" a:lnum. A state is to know ALL relevant details about the lines
" 1..a:lnum-1, initial calculating (here!) can be slow, but updating is
" fast (incremental).
" State:
" lnum last indented line == prevnonblank(a:lnum - 1)
" block = 0 a:lnum located within special tag: 0:none, 2:<pre>,
" 3:<script>, 4:<style>, 5:<!--
" baseindent use this indent for line a:lnum as a start - kind of
" autoindent (if block==0)
" scripttype = '' type attribute of a script tag (if block==3)
" blocktagind indent for current opening (get) and closing (set)
" blocktag (if block!=0)
" blocklnr lnum of starting blocktag (if block!=0)
" inattr line {lnum} starts with attributes of a tag
let
state
=
{}
let
state
.
lnum
=
prevnonblank
(
a:lnum
-
1
)
let
state
.
scripttype
=
""
let
state
.
blocktagind
=
-1
let
state
.
block
=
0
let
state
.
baseindent
=
0
let
state
.
blocklnr
=
0
let
state
.
inattr
=
0
if
state
.
lnum
==
0
return
state
endif
" Heuristic:
" remember startline state.lnum
" look back for <pre, </pre, <script, </script, <style, </style tags
" remember stopline
" if opening tag found,
" assume a:lnum within block
" else
" look back in result range (stopline, startline) for comment
" \ delimiters (<!--, -->)
" if comment opener found,
" assume a:lnum within comment
" else
" assume usual html for a:lnum
" if a:lnum-1 has a closing comment
" look back to get indent of comment opener
" FI
" look back for blocktag
call
cursor
(
a:lnum
,
1
)
let
[
stopline
,
stopcol
]
=
searchpos
(
'\c<\zs\/\=\%(pre\>\|script\>\|style\>\)'
,
"bW"
)
" fugly ... why isn't there searchstr()
let
tagline
=
tolower
(
getline
(
stopline
))
let
blocktag
=
matchstr
(
tagline
,
'\/\=\%(pre\>\|script\>\|style\>\)'
,
stopcol
-1
)
if
stopline
>
0
&& blocktag
[
0
]
!=
"/"
" opening tag found, assume a:lnum within block
let
state
.
block
=
s:indent_tags
[
blocktag
]
if
state
.
block
==
3
let
state
.
scripttype
=
s:GetScriptType
(
matchstr
(
tagline
,
'\>[^>]*'
,
stopcol
))
endif
let
state
.
blocklnr
=
stopline
" check preceding tags in the line:
let
s:altline
=
tagline
[:
stopcol
-2
]
call
s:CountITags
(
1
)
let
state
.
blocktagind
=
indent
(
stopline
)
+
(
s:curind
+
s:nextrel
)
*
s:ShiftWidth
()
return
state
elseif
stopline
==
state
.
lnum
" handle special case: previous line (= state.lnum) contains a
" closing blocktag which is preceded by line-noise;
" blocktag == "/..."
let
swendtag
=
match
(
tagline
,
'^\s*</'
)
>=
0
if
!
swendtag
let
[
bline
,
bcol
]
=
searchpos
(
'<'
.
blocktag
[
1
:].
'\>'
,
"bW"
)
let
s:altline
=
tolower
(
getline
(
bline
)[:
bcol
-2
])
call
s:CountITags
(
1
)
let
state
.
baseindent
=
indent
(
bline
)
+
(
s:nextrel
+
s:curline
)
*
s:ShiftWidth
()
return
state
endif
endif
" else look back for comment
call
cursor
(
a:lnum
,
1
)
let
[
comline
,
comcol
,
found
]
=
searchpos
(
'\(<!--\)\|-->'
,
'bpW'
,
stopline
)
if
found
==
2
" comment opener found, assume a:lnum within comment
let
state
.
block
=
5
let
state
.
blocklnr
=
comline
" check preceding tags in the line:
let
s:altline
=
tolower
(
getline
(
comline
)[:
comcol
-2
])
call
s:CountITags
(
1
)
let
state
.
blocktagind
=
indent
(
comline
)
+
(
s:curind
+
s:nextrel
)
*
s:ShiftWidth
()
return
state
endif
" else within usual html
let
s:altline
=
tolower
(
getline
(
state
.
lnum
))
" check a:lnum-1 for closing comment (we need indent from the opening line)
let
comcol
=
stridx
(
s:altline
,
'-->'
)
if
comcol
>=
0
call
cursor
(
state
.
lnum
,
comcol
+
1
)
let
[
comline
,
comcol
]
=
searchpos
(
'<!--'
,
'bW'
)
if
comline
==
state
.
lnum
let
s:altline
=
s:altline
[:
comcol
-2
]
else
let
s:altline
=
tolower
(
getline
(
comline
)[:
comcol
-2
])
endif
call
s:CountITags
(
1
)
let
state
.
baseindent
=
indent
(
comline
)
+
(
s:nextrel
+
s:curline
)
*
s:ShiftWidth
()
return
state
" TODO check tags that follow "-->"
endif
" else no comments
call
s:CountITags
(
1
)
let
state
.
baseindent
=
indent
(
state
.
lnum
)
+
s:nextrel
*
s:ShiftWidth
()
" line starts with end tag
let
swendtag
=
match
(
s:altline
,
'^\s*</'
)
>=
0
if
!
swendtag
let
state
.
baseindent
+=
s:curind
*
s:ShiftWidth
()
endif
return
state
endfunc "
}}}
func
!
s:Alien2
()
"
{{{
" <pre> block
return
-1
endfunc "
}}}
func
!
s:Alien3
()
"
{{{
" <script> javascript
if
prevnonblank
(
v
:
lnum
-1
)
==
b:indent
.
blocklnr
" indent for the first line after <script>
return
eval
(
s:js1indent
)
endif
if
b:indent
.
scripttype
==
"javascript"
return
cindent
(
v
:
lnum
)
else
return
-1
endif
endfunc "
}}}
func
!
s:Alien4
()
"
{{{
" <style>
if
prevnonblank
(
v
:
lnum
-1
)
==
b:indent
.
blocklnr
" indent for first content line
return
eval
(
s:css1indent
)
endif
return
s:CSSIndent
()
endfunc
func
!
s:CSSIndent
()
"
{{{
" adopted $VIMRUNTIME/indent/css.vim
if
getline
(
v
:
lnum
)
=~
'^\s*[*}]'
return
cindent
(
v
:
lnum
)
endif
let
minline
=
b:indent
.
blocklnr
let
pnum
=
s:css_prevnoncomment
(
v
:
lnum
-
1
,
minline
)
if
pnum
<=
minline
" < is to catch errors
" indent for first content line after comments
return
eval
(
s:css1indent
)
endif
let
ind
=
indent
(
pnum
)
+
s:css_countbraces
(
pnum
,
1
)
*
s:ShiftWidth
()
let
pline
=
getline
(
pnum
)
if
pline
=~
'}\s*$'
let
ind
-=
(
s:css_countbraces
(
pnum
,
0
)
-
(
pline
=~
'^\s*}'
))
*
s:ShiftWidth
()
endif
return
ind
endfunc "
}}}
func
!
s:css_prevnoncomment
(
lnum
,
stopline
)
"
{{{
" caller starts from a line a:lnum-1 that is not a comment
let
lnum
=
prevnonblank
(
a:lnum
)
let
ccol
=
match
(
getline
(
lnum
),
'\*/'
)
if
ccol
<
0
return
lnum
endif
call
cursor
(
lnum
,
ccol
+
1
)
let
lnum
=
search
(
'/\*'
,
'bW'
,
a:stopline
)
if
indent
(
"."
)
==
virtcol
(
"."
)
-1
return
prevnonblank
(
lnum
-1
)
else
return
lnum
endif
endfunc "
}}}
func
!
s:css_countbraces
(
lnum
,
count_open
)
"
{{{
let
brs
=
substitute
(
getline
(
a:lnum
),
'[''"].\{-}[''"]\|/\*.\{-}\*/\|/\*.*$\|[^{}]'
,
''
,
'g'
)
let
n_open
=
0
let
n_close
=
0
for
brace
in
split
(
brs
,
'\zs'
)
if
brace
==
"{"
let
n_open
+=
1
elseif
brace
==
"}"
if
n_open
>
0
let
n_open
-=
1
else
let
n_close
+=
1
endif
endif
endfor
return
a:count_open
? n_open
:
n_close
endfunc "
}}}
"}}}
func
!
s:Alien5
()
"
{{{
" <!-- -->
return
-1
endfunc "
}}}
func
!
HtmlIndent
()
"
{{{
let
s:curline
=
tolower
(
getline
(
v
:
lnum
))
let
indentunit
=
s:ShiftWidth
()
let
s:newstate
=
{}
let
s:newstate
.
lnum
=
v
:
lnum
" does the line start with a closing tag?
let
swendtag
=
match
(
s:curline
,
'^\s*</'
)
>=
0
if
prevnonblank
(
v
:
lnum
-1
)
==
b:indent
.
lnum &&
s:usestate
" use state (continue from previous line)
else
" start over (know nothing)
let
b:indent
=
s:FreshState
(
v
:
lnum
)
endif
if
b:indent
.
block
>=
2
" within block
let
endtag
=
s:endtags
[
b:indent
.
block
-2
]
let
blockend
=
stridx
(
s:curline
,
endtag
)
if
blockend
>=
0
" block ends here
let
s:newstate
.
block
=
0
" calc indent for REST OF LINE (may start more blocks):
let
s:curline
=
strpart
(
s:curline
,
blockend
+
strlen
(
endtag
))
call
s:CountITags
()
if
swendtag &&
b:indent
.
block
!=
5
let
indent
=
b:indent
.
blocktagind
+
s:curind
* indentunit
let
s:newstate
.
baseindent
=
indent
+
s:nextrel
* indentunit
else
let
indent
=
s:Alien
{
b:indent
.
block
}()
let
s:newstate
.
baseindent
=
b:indent
.
blocktagind
+
s:nextrel
* indentunit
endif
call
extend
(
b:indent
,
s:newstate
,
"force"
)
return
indent
else
" block continues
" indent this line with alien method
let
indent
=
s:Alien
{
b:indent
.
block
}()
call
extend
(
b:indent
,
s:newstate
,
"force"
)
return
indent
endif
else
" not within a block - within usual html
" if < 2 then always 0
let
s:newstate
.
block
=
b:indent
.
block
call
s:CountITags
()
if
swendtag
let
indent
=
b:indent
.
baseindent
+
s:curind
* indentunit
let
s:newstate
.
baseindent
=
indent
+
s:nextrel
* indentunit
else
let
indent
=
b:indent
.
baseindent
let
s:newstate
.
baseindent
=
indent
+
(
s:curind
+
s:nextrel
)
* indentunit
endif
call
extend
(
b:indent
,
s:newstate
,
"force"
)
return
indent
endif
endfunc "
}}}
" check user settings (first time), clear cpo, Modeline: {{{1
" DEBUG:
com
!
-
nargs
=
* IndHtmlLocal
<
args
>
call
HtmlIndent_CheckUserSettings
()
let
&cpo
=
s:cpo_save
unlet
s:cpo_save
" vim:set fdm=marker ts=8:
vimrc
View file @
fa0547f6
...
@@ -106,6 +106,9 @@ set nocp " Disable Vi-compatibility
...
@@ -106,6 +106,9 @@ set nocp " Disable Vi-compatibility
filetype plugin indent on
filetype plugin indent on
syntax enable
syntax enable
" pathogen
execute pathogen#infect()
autocmd BufReadPre *.pdf set ro nowrap
autocmd BufReadPre *.pdf set ro nowrap
autocmd BufReadPost *.pdf silent %!pdftotext "%" -nopgbrk -layout -q -eol unix -
autocmd BufReadPost *.pdf silent %!pdftotext "%" -nopgbrk -layout -q -eol unix -
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment