SILENT KILLERPanel

Current Path: > > usr > share > vim > vim80 > ftplugin


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //usr/share/vim/vim80/ftplugin

NameTypeSizeLast ModifiedActions
README.txt File 869 bytes August 02 2022 16:56:59.
a2ps.vim File 470 bytes August 02 2022 16:56:59.
aap.vim File 716 bytes August 02 2022 16:56:59.
abap.vim File 800 bytes August 02 2022 16:56:59.
abaqus.vim File 3391 bytes August 02 2022 16:56:59.
ada.vim File 6408 bytes August 02 2022 16:56:59.
alsaconf.vim File 438 bytes August 02 2022 16:56:59.
ant.vim File 1341 bytes August 02 2022 16:56:59.
arch.vim File 431 bytes August 02 2022 16:56:59.
art.vim File 410 bytes August 02 2022 16:56:59.
aspvbs.vim File 1916 bytes August 02 2022 16:56:59.
automake.vim File 337 bytes August 02 2022 16:56:59.
awk.vim File 411 bytes August 02 2022 16:56:59.
bdf.vim File 449 bytes August 02 2022 16:56:59.
bst.vim File 333 bytes August 02 2022 16:56:59.
btm.vim File 316 bytes August 02 2022 16:56:59.
bzl.vim File 3063 bytes August 02 2022 16:56:59.
c.vim File 1967 bytes August 02 2022 16:56:59.
calendar.vim File 462 bytes August 02 2022 16:56:59.
cdrdaoconf.vim File 383 bytes August 02 2022 16:56:59.
ch.vim File 472 bytes August 02 2022 16:56:59.
changelog.vim File 8891 bytes August 02 2022 16:56:59.
chicken.vim File 1663 bytes August 02 2022 16:56:59.
clojure.vim File 3833 bytes August 02 2022 16:56:59.
cmake.vim File 359 bytes August 02 2022 16:56:59.
cobol.vim File 9458 bytes August 02 2022 16:56:59.
conf.vim File 434 bytes August 02 2022 16:56:59.
config.vim File 1274 bytes August 02 2022 16:56:59.
context.vim File 4364 bytes August 02 2022 16:56:59.
cpp.vim File 288 bytes August 02 2022 16:56:59.
crm.vim File 414 bytes August 02 2022 16:56:59.
cs.vim File 802 bytes August 02 2022 16:56:59.
csc.vim File 734 bytes August 02 2022 16:56:59.
csh.vim File 1633 bytes August 02 2022 16:56:59.
css.vim File 528 bytes August 02 2022 16:56:59.
cucumber.vim File 5115 bytes August 02 2022 16:56:59.
cvsrc.vim File 399 bytes August 02 2022 16:56:59.
debchangelog.vim File 11495 bytes August 02 2022 16:56:59.
debcontrol.vim File 1840 bytes August 02 2022 16:56:59.
denyhosts.vim File 383 bytes August 02 2022 16:56:59.
dictconf.vim File 434 bytes August 02 2022 16:56:59.
dictdconf.vim File 435 bytes August 02 2022 16:56:59.
diff.vim File 355 bytes August 02 2022 16:56:59.
dircolors.vim File 431 bytes August 02 2022 16:56:59.
docbk.vim File 530 bytes August 02 2022 16:56:59.
dockerfile.vim File 356 bytes August 02 2022 16:56:59.
dosbatch.vim File 777 bytes August 02 2022 16:56:59.
dosini.vim File 458 bytes August 02 2022 16:56:59.
dtd.vim File 1123 bytes August 02 2022 16:56:59.
dtrace.vim File 1151 bytes August 02 2022 16:56:59.
eiffel.vim File 4088 bytes August 02 2022 16:56:59.
elinks.vim File 436 bytes August 02 2022 16:56:59.
erlang.vim File 1811 bytes August 02 2022 16:56:59.
eruby.vim File 3165 bytes August 02 2022 16:56:59.
eterm.vim File 470 bytes August 02 2022 16:56:59.
falcon.vim File 1344 bytes August 02 2022 16:56:59.
fetchmail.vim File 428 bytes August 02 2022 16:56:59.
flexwiki.vim File 1876 bytes August 02 2022 16:56:59.
fortran.vim File 4692 bytes August 02 2022 16:56:59.
framescript.vim File 780 bytes August 02 2022 16:56:59.
fvwm.vim File 390 bytes August 02 2022 16:56:59.
gdb.vim File 293 bytes August 02 2022 16:56:59.
git.vim File 1350 bytes August 02 2022 16:56:59.
gitcommit.vim File 2236 bytes August 02 2022 16:56:59.
gitconfig.vim File 376 bytes August 02 2022 16:56:59.
gitrebase.vim File 1458 bytes August 02 2022 16:56:59.
gitsendemail.vim File 157 bytes August 02 2022 16:56:59.
go.vim File 365 bytes August 02 2022 16:56:59.
gpg.vim File 433 bytes August 02 2022 16:56:59.
gprof.vim File 939 bytes August 02 2022 16:56:59.
groovy.vim File 343 bytes August 02 2022 16:56:59.
group.vim File 425 bytes August 02 2022 16:56:59.
grub.vim File 434 bytes August 02 2022 16:56:59.
haml.vim File 1887 bytes August 02 2022 16:56:59.
hamster.vim File 1920 bytes August 02 2022 16:56:59.
haskell.vim File 445 bytes August 02 2022 16:56:59.
help.vim File 442 bytes August 02 2022 16:56:59.
hgcommit.vim File 363 bytes August 02 2022 16:56:59.
hog.vim File 1394 bytes August 02 2022 16:56:59.
hostconf.vim File 383 bytes August 02 2022 16:56:59.
hostsaccess.vim File 436 bytes August 02 2022 16:56:59.
html.vim File 1625 bytes August 02 2022 16:56:59.
htmldjango.vim File 331 bytes August 02 2022 16:56:59.
indent.vim File 454 bytes August 02 2022 16:56:59.
initex.vim File 1005 bytes August 02 2022 16:56:59.
ishd.vim File 1264 bytes August 02 2022 16:56:59.
j.vim File 3394 bytes August 02 2022 16:56:59.
java.vim File 1686 bytes August 02 2022 16:56:59.
javascript.vim File 1047 bytes August 02 2022 16:56:59.
jproperties.vim File 321 bytes August 02 2022 16:56:59.
json.vim File 360 bytes August 02 2022 16:56:59.
jsp.vim File 2011 bytes August 02 2022 16:56:59.
kconfig.vim File 703 bytes August 02 2022 16:56:59.
kwt.vim File 851 bytes August 02 2022 16:56:59.
ld.vim File 470 bytes August 02 2022 16:56:59.
less.vim File 502 bytes August 02 2022 16:56:59.
lftp.vim File 434 bytes August 02 2022 16:56:59.
libao.vim File 440 bytes August 02 2022 16:56:59.
limits.vim File 436 bytes August 02 2022 16:56:59.
liquid.vim File 1897 bytes August 02 2022 16:56:59.
lisp.vim File 769 bytes August 02 2022 16:56:59.
logcheck.vim File 500 bytes August 02 2022 16:56:59.
loginaccess.vim File 442 bytes August 02 2022 16:56:59.
logindefs.vim File 440 bytes August 02 2022 16:56:59.
logtalk.dict File 1790 bytes August 02 2022 16:56:59.
logtalk.vim File 401 bytes August 02 2022 16:56:59.
lprolog.vim File 1279 bytes August 02 2022 16:56:59.
lua.vim File 973 bytes August 02 2022 16:56:59.
m4.vim File 426 bytes August 02 2022 16:56:59.
mail.vim File 1107 bytes August 02 2022 16:56:59.
mailaliases.vim File 383 bytes August 02 2022 16:56:59.
mailcap.vim File 434 bytes August 02 2022 16:56:59.
make.vim File 935 bytes August 02 2022 16:56:59.
man.vim File 5646 bytes August 02 2022 16:56:59.
manconf.vim File 444 bytes August 02 2022 16:56:59.
markdown.vim File 1177 bytes August 02 2022 16:56:59.
matlab.vim File 754 bytes August 02 2022 16:56:59.
mf.vim File 3249 bytes August 02 2022 16:56:59.
modconf.vim File 477 bytes August 02 2022 16:56:59.
mp.vim File 3712 bytes August 02 2022 16:56:59.
mplayerconf.vim File 472 bytes August 02 2022 16:56:59.
mrxvtrc.vim File 798 bytes August 02 2022 16:56:59.
msmessages.vim File 1141 bytes August 02 2022 16:56:59.
muttrc.vim File 467 bytes August 02 2022 16:56:59.
nanorc.vim File 447 bytes August 02 2022 16:56:59.
neomuttrc.vim File 532 bytes August 02 2022 16:56:59.
netrc.vim File 428 bytes August 02 2022 16:56:59.
nsis.vim File 1323 bytes August 02 2022 16:56:59.
objc.vim File 296 bytes August 02 2022 16:56:59.
ocaml.vim File 23041 bytes August 02 2022 16:56:59.
occam.vim File 1297 bytes August 02 2022 16:56:59.
pamconf.vim File 433 bytes August 02 2022 16:56:59.
pascal.vim File 667 bytes August 02 2022 16:56:59.
passwd.vim File 424 bytes August 02 2022 16:56:59.
pdf.vim File 2613 bytes August 02 2022 16:56:59.
perl.vim File 2850 bytes August 02 2022 16:56:59.
perl6.vim File 2529 bytes August 02 2022 16:56:59.
php.vim File 2813 bytes August 02 2022 16:56:59.
pinfo.vim File 435 bytes August 02 2022 16:56:59.
plaintex.vim File 1150 bytes August 02 2022 16:56:59.
postscr.vim File 1006 bytes August 02 2022 16:56:59.
procmail.vim File 479 bytes August 02 2022 16:56:59.
prolog.vim File 440 bytes August 02 2022 16:56:59.
protocols.vim File 457 bytes August 02 2022 16:56:59.
pyrex.vim File 766 bytes August 02 2022 16:56:59.
python.vim File 5563 bytes August 02 2022 16:56:59.
qf.vim File 459 bytes August 02 2022 16:56:59.
quake.vim File 439 bytes August 02 2022 16:56:59.
r.vim File 858 bytes August 02 2022 16:56:59.
racc.vim File 449 bytes August 02 2022 16:56:59.
readline.vim File 438 bytes August 02 2022 16:56:59.
registry.vim File 740 bytes August 02 2022 16:56:59.
reva.vim File 709 bytes August 02 2022 16:56:59.
rhelp.vim File 738 bytes August 02 2022 16:56:59.
rmd.vim File 1483 bytes August 02 2022 16:56:59.
rnc.vim File 431 bytes August 02 2022 16:56:59.
rnoweb.vim File 1037 bytes August 02 2022 16:56:59.
rpl.vim File 620 bytes August 02 2022 16:56:59.
rrst.vim File 1103 bytes August 02 2022 16:56:59.
rst.vim File 456 bytes August 02 2022 16:56:59.
ruby.vim File 17008 bytes August 02 2022 16:56:59.
rust.vim File 6574 bytes August 02 2022 16:56:59.
sass.vim File 607 bytes August 02 2022 16:56:59.
sbt.vim File 347 bytes August 02 2022 16:56:59.
scala.vim File 1151 bytes August 02 2022 16:56:59.
scheme.vim File 1394 bytes August 02 2022 16:56:59.
screen.vim File 436 bytes August 02 2022 16:56:59.
scss.vim File 239 bytes August 02 2022 16:56:59.
sensors.vim File 455 bytes August 02 2022 16:56:59.
services.vim File 452 bytes August 02 2022 16:56:59.
setserial.vim File 439 bytes August 02 2022 16:56:59.
sgml.vim File 1210 bytes August 02 2022 16:56:59.
sh.vim File 1202 bytes August 02 2022 16:56:59.
sieve.vim File 469 bytes August 02 2022 16:56:59.
slpconf.vim File 477 bytes August 02 2022 16:56:59.
slpreg.vim File 476 bytes August 02 2022 16:56:59.
slpspi.vim File 467 bytes August 02 2022 16:56:59.
spec.vim File 5864 bytes August 02 2022 16:56:59.
sql.vim File 21615 bytes August 02 2022 16:56:59.
sshconfig.vim File 441 bytes August 02 2022 16:56:59.
sudoers.vim File 438 bytes August 02 2022 16:56:59.
svg.vim File 1200 bytes August 02 2022 16:56:59.
sysctl.vim File 453 bytes August 02 2022 16:56:59.
systemd.vim File 158 bytes August 02 2022 16:56:59.
systemverilog.vim File 239 bytes August 02 2022 16:56:59.
tcl.vim File 1002 bytes August 02 2022 16:56:59.
tcsh.vim File 1207 bytes August 02 2022 16:56:59.
terminfo.vim File 430 bytes August 02 2022 16:56:59.
tex.vim File 1641 bytes August 02 2022 16:56:59.
text.vim File 433 bytes August 02 2022 16:56:59.
tmux.vim File 292 bytes August 02 2022 16:56:59.
treetop.vim File 416 bytes August 02 2022 16:56:59.
tt2html.vim File 434 bytes August 02 2022 16:56:59.
udevconf.vim File 434 bytes August 02 2022 16:56:59.
udevperm.vim File 432 bytes August 02 2022 16:56:59.
udevrules.vim File 426 bytes August 02 2022 16:56:59.
updatedb.vim File 443 bytes August 02 2022 16:56:59.
vb.vim File 1907 bytes August 02 2022 16:56:59.
verilog.vim File 1977 bytes August 02 2022 16:56:59.
vhdl.vim File 3497 bytes August 02 2022 16:56:59.
vim.vim File 3212 bytes August 02 2022 16:56:59.
vroom.vim File 924 bytes August 02 2022 16:56:59.
xdefaults.vim File 481 bytes August 02 2022 16:56:59.
xf86conf.vim File 434 bytes August 02 2022 16:56:59.
xhtml.vim File 2036 bytes August 02 2022 16:56:59.
xinetd.vim File 476 bytes August 02 2022 16:56:59.
xml.vim File 1911 bytes August 02 2022 16:56:59.
xmodmap.vim File 434 bytes August 02 2022 16:56:59.
xs.vim File 465 bytes August 02 2022 16:56:59.
xsd.vim File 1171 bytes August 02 2022 16:56:59.
xslt.vim File 539 bytes August 02 2022 16:56:59.
yaml.vim File 464 bytes August 02 2022 16:56:59.
zimbu.vim File 5389 bytes August 02 2022 16:56:59.
zsh.vim File 818 bytes August 02 2022 16:56:59.

Reading File: //usr/share/vim/vim80/ftplugin/debchangelog.vim

" Vim filetype plugin file (GUI menu, folding and completion)
" Language:     Debian Changelog
" Maintainer:   Debian Vim Maintainers
" Former Maintainers:   Michael Piefel <piefel@informatik.hu-berlin.de>
"                       Stefano Zacchiroli <zack@debian.org>
" Last Change:  2018-01-06
" License:      Vim License
" URL:          https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debchangelog.vim

" Bug completion requires apt-listbugs installed for Debian packages or
" python-launchpadlib installed for Ubuntu packages

if exists("b:did_ftplugin")
  finish
endif
let b:did_ftplugin=1

" {{{1 Local settings (do on every load)
if exists("g:debchangelog_fold_enable")
  setlocal foldmethod=expr
  setlocal foldexpr=DebGetChangelogFold(v:lnum)
  setlocal foldtext=DebChangelogFoldText()
endif

" Debian changelogs are not supposed to have any other text width,
" so the user cannot override this setting
setlocal tw=78
setlocal comments=f:* 

" Clean unloading
let b:undo_ftplugin = "setlocal tw< comments< foldmethod< foldexpr< foldtext<"
" }}}1

if exists("g:did_changelog_ftplugin")
  finish
endif

" Don't load another plugin (this is global)
let g:did_changelog_ftplugin = 1

" {{{1 GUI menu

" Helper functions returning various data.
" Returns full name, either from $DEBFULLNAME or debianfullname.
" TODO Is there a way to determine name from anywhere else?
function <SID>FullName()
    if exists("$DEBFULLNAME")
	return $DEBFULLNAME
    elseif exists("g:debianfullname")
	return g:debianfullname
    else
	return "Your Name"
    endif
endfunction

" Returns email address, from $DEBEMAIL, $EMAIL or debianemail.
function <SID>Email()
    if exists("$DEBEMAIL")
	return $DEBEMAIL
    elseif exists("$EMAIL")
	return $EMAIL
    elseif exists("g:debianemail")
	return g:debianemail
    else
	return "your@email.address"
    endif
endfunction

" Returns date in RFC822 format.
function <SID>Date()
    let savelang = v:lc_time
    execute "language time C"
    let dateandtime = strftime("%a, %d %b %Y %X %z")
    execute "language time " . savelang
    return dateandtime
endfunction

function <SID>WarnIfNotUnfinalised()
    if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1
	echohl WarningMsg
	echo "The entry has not been unfinalised before editing."
	echohl None
	return 1
    endif
    return 0
endfunction

function <SID>Finalised()
    let savelinenum = line(".")
    normal 1G
    call search("^ -- ")
    if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1
	let returnvalue = 1
    else
	let returnvalue = 0
    endif
    execute savelinenum
    return returnvalue
endfunction

" These functions implement the menus
function NewVersion()
    " The new entry is unfinalised and shall be changed
    amenu disable Changelog.New\ Version
    amenu enable Changelog.Add\ Entry
    amenu enable Changelog.Close\ Bug
    amenu enable Changelog.Set\ Distribution
    amenu enable Changelog.Set\ Urgency
    amenu disable Changelog.Unfinalise
    amenu enable Changelog.Finalise
    call append(0, substitute(getline(1), '-\([[:digit:]]\+\))', '-$$\1)', ''))
    call append(1, "")
    call append(2, "")
    call append(3, " -- ")
    call append(4, "")
    call Urgency("low")
    normal 1G0
    call search(")")
    normal h
    normal 
    call setline(1, substitute(getline(1), '-\$\$', '-', ''))
    if exists("g:debchangelog_fold_enable")
        foldopen
    endif
    call AddEntry()
endfunction

function AddEntry()
    normal 1G
    call search("^ -- ")
    normal kk
    call append(".", "  * ")
    normal jjj
    let warn=<SID>WarnIfNotUnfinalised()
    normal kk
    if warn
	echohl MoreMsg
	call input("Hit ENTER")
	echohl None
    endif
    startinsert!
endfunction

function CloseBug()
    normal 1G
    call search("^ -- ")
    let warn=<SID>WarnIfNotUnfinalised()
    normal kk
    call append(".", "  *  (closes: #" . input("Bug number to close: ") . ")")
    normal j^ll
    startinsert
endfunction

function Distribution(dist)
    call setline(1, substitute(getline(1), ')  *\%(UNRELEASED\|\l\+\);', ") " . a:dist . ";", ""))
endfunction

function Urgency(urg)
    call setline(1, substitute(getline(1), "urgency=.*$", "urgency=" . a:urg, ""))
endfunction

function <SID>UnfinaliseMenu()
    " This means the entry shall be changed
    amenu disable Changelog.New\ Version
    amenu enable Changelog.Add\ Entry
    amenu enable Changelog.Close\ Bug
    amenu enable Changelog.Set\ Distribution
    amenu enable Changelog.Set\ Urgency
    amenu disable Changelog.Unfinalise
    amenu enable Changelog.Finalise
endfunction

function Unfinalise()
    call <SID>UnfinaliseMenu()
    normal 1G
    call search("^ -- ")
    call setline(".", " -- ")
endfunction

function <SID>FinaliseMenu()
    " This means the entry should not be changed anymore
    amenu enable Changelog.New\ Version
    amenu disable Changelog.Add\ Entry
    amenu disable Changelog.Close\ Bug
    amenu disable Changelog.Set\ Distribution
    amenu disable Changelog.Set\ Urgency
    amenu enable Changelog.Unfinalise
    amenu disable Changelog.Finalise
endfunction

function Finalise()
    call <SID>FinaliseMenu()
    normal 1G
    call search("^ -- ")
    call setline(".", " -- " . <SID>FullName() . " <" . <SID>Email() . ">  " . <SID>Date())
endfunction


function <SID>MakeMenu()
    amenu &Changelog.&New\ Version			:call NewVersion()<CR>
    amenu Changelog.&Add\ Entry				:call AddEntry()<CR>
    amenu Changelog.&Close\ Bug				:call CloseBug()<CR>
    menu Changelog.-sep-				<nul>

    amenu Changelog.Set\ &Distribution.&unstable	:call Distribution("unstable")<CR>
    amenu Changelog.Set\ Distribution.&frozen		:call Distribution("frozen")<CR>
    amenu Changelog.Set\ Distribution.&stable		:call Distribution("stable")<CR>
    menu Changelog.Set\ Distribution.-sep-		<nul>
    amenu Changelog.Set\ Distribution.frozen\ unstable	:call Distribution("frozen unstable")<CR>
    amenu Changelog.Set\ Distribution.stable\ unstable	:call Distribution("stable unstable")<CR>
    amenu Changelog.Set\ Distribution.stable\ frozen	:call Distribution("stable frozen")<CR>
    amenu Changelog.Set\ Distribution.stable\ frozen\ unstable	:call Distribution("stable frozen unstable")<CR>

    amenu Changelog.Set\ &Urgency.&low			:call Urgency("low")<CR>
    amenu Changelog.Set\ Urgency.&medium		:call Urgency("medium")<CR>
    amenu Changelog.Set\ Urgency.&high			:call Urgency("high")<CR>

    menu Changelog.-sep-				<nul>
    amenu Changelog.U&nfinalise				:call Unfinalise()<CR>
    amenu Changelog.&Finalise				:call Finalise()<CR>

    if <SID>Finalised()
	call <SID>FinaliseMenu()
    else
	call <SID>UnfinaliseMenu()
    endif
endfunction

augroup changelogMenu
au BufEnter * if &filetype == "debchangelog" | call <SID>MakeMenu() | endif
au BufLeave * if &filetype == "debchangelog" | silent! aunmenu Changelog | endif
augroup END

" }}}
" {{{1 folding

" look for an author name in the [zonestart zoneend] lines searching backward
function! s:getAuthor(zonestart, zoneend)
  let linepos = a:zoneend
  while linepos >= a:zonestart
    let line = getline(linepos)
    if line =~ '^ --'
      return substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '')
    endif
    let linepos -= 1
  endwhile
  return '[unknown]'
endfunction

" Look for a package source name searching backward from the givenline and
" returns it. Return the empty string if the package name can't be found
function! DebGetPkgSrcName(lineno)
  let lineidx = a:lineno
  let pkgname = ''
  while lineidx > 0
    let curline = getline(lineidx)
    if curline =~ '^\S'
      let pkgname = matchlist(curline, '^\(\S\+\).*$')[1]
      break
    endif
    let lineidx = lineidx - 1
  endwhile
  return pkgname
endfunction

function! DebChangelogFoldText()
  if v:folddashes == '-'  " changelog entry fold
    return foldtext() . ' -- ' . s:getAuthor(v:foldstart, v:foldend) . ' '
  endif
  return foldtext()
endfunction

function! DebGetChangelogFold(lnum)
  let line = getline(a:lnum)
  if line =~ '^\w\+'
    return '>1' " beginning of a changelog entry
  endif
  if line =~ '^\s\+\[.*\]'
    return '>2' " beginning of an author-specific chunk
  endif
  if line =~ '^ --'
    return '1'
  endif
  return '='
endfunction

if exists("g:debchangelog_fold_enable")
  silent! foldopen!   " unfold the entry the cursor is on (usually the first one)
endif

" }}}

" {{{1 omnicompletion for Closes: #

if !exists('g:debchangelog_listbugs_severities')
  let g:debchangelog_listbugs_severities = 'critical,grave,serious,important,normal,minor,wishlist'
endif

fun! DebCompleteBugs(findstart, base)
  if a:findstart
    let line = getline('.')

    " try to detect whether this is closes: or lp:
    let g:debchangelog_complete_mode = 'debbugs'
    let try_colidx = col('.') - 1
    let colidx = -1 " default to no-completion-possible

    while try_colidx > 0 && line[try_colidx - 1] =~ '\s\|\d\|#\|,\|:'
      let try_colidx = try_colidx - 1
      if line[try_colidx] == '#' && colidx == -1
        " found hash, where we complete from:
        let colidx = try_colidx
      elseif line[try_colidx] == ':'
        if try_colidx > 1 && strpart(line, try_colidx - 2, 3) =~ '\clp:'
          let g:debchangelog_complete_mode = 'lp'
        endif
        break
      endif
    endwhile
    return colidx
  else " return matches:
    let bug_lines = []
    if g:debchangelog_complete_mode == 'lp'
      if ! has('python')
        echoerr 'vim must be built with Python support to use LP bug completion'
        return
      endif
      let pkgsrc = DebGetPkgSrcName(line('.'))
      python << EOF
import vim
try:
    from launchpadlib.launchpad import Launchpad
    from lazr.restfulclient.errors import HTTPError
    # login anonymously
    lp = Launchpad.login_anonymously('debchangelog.vim', 'production')
    ubuntu = lp.distributions['ubuntu']
    try:
        sp = ubuntu.getSourcePackage(name=vim.eval('pkgsrc'))
        status = ('New', 'Incomplete', 'Confirmed', 'Triaged',
                  'In Progress', 'Fix Committed')
        tasklist = sp.searchTasks(status=status, order_by='id')
        liststr = '['
        for task in tasklist:
            bug = task.bug
            liststr += "'#%d - %s'," % (bug.id, bug.title.replace('\'', '\'\''))
        liststr += ']'
        vim.command('silent let bug_lines = %s' % liststr.encode('utf-8'))
    except HTTPError:
        pass
except ImportError:
    vim.command('echoerr \'python-launchpadlib >= 1.5.4 needs to be installed to use Launchpad bug completion\'')
EOF
    else
      if ! filereadable('/usr/sbin/apt-listbugs')
        echoerr 'apt-listbugs not found, you should install it to use Closes bug completion'
        return
      endif
      let pkgsrc = DebGetPkgSrcName(line('.'))
      let listbugs_output = system('/usr/sbin/apt-listbugs -s ' . g:debchangelog_listbugs_severities . ' list ' . pkgsrc . ' | grep "^ #" 2> /dev/null')
      let bug_lines = split(listbugs_output, '\n')
    endif
    let completions = []
    for line in bug_lines
      let parts = matchlist(line, '^\s*\(#\S\+\)\s*-\s*\(.*\)$')
      " filter only those which match a:base:
      if parts[1] !~ "^" . a:base
        continue
      endif
      let completion = {}
      let completion['word'] = parts[1]
      let completion['menu'] = parts[2]
      let completion['info'] = parts[0]
      let completions += [completion]
    endfor
    return completions
  endif
endfun

setlocal omnifunc=DebCompleteBugs

" }}}

" vim: set foldmethod=marker:

SILENT KILLER Tool