404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.117.135.125: ~ $
" Vim filetype plugin file (GUI menu, folding and completion)
" Language:     Debian Changelog
" Maintainer:   Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers:   Michael Piefel <piefel@informatik.hu-berlin.de>
"                       Stefano Zacchiroli <zack@debian.org>
" Last Change:  2014-01-31
" License:      Vim License
" URL:          http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/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:

Filemanager

Name Type Size Permission Actions
README.txt File 869 B 0644
a2ps.vim File 470 B 0644
aap.vim File 716 B 0644
abap.vim File 800 B 0644
abaqus.vim File 3.31 KB 0644
ada.vim File 6.26 KB 0644
alsaconf.vim File 438 B 0644
ant.vim File 1.31 KB 0644
arch.vim File 431 B 0644
art.vim File 410 B 0644
aspvbs.vim File 1.87 KB 0644
automake.vim File 337 B 0644
awk.vim File 411 B 0644
bdf.vim File 449 B 0644
bst.vim File 333 B 0644
btm.vim File 316 B 0644
bzl.vim File 2.99 KB 0644
c.vim File 1.92 KB 0644
calendar.vim File 462 B 0644
cdrdaoconf.vim File 383 B 0644
ch.vim File 472 B 0644
changelog.vim File 8.68 KB 0644
clojure.vim File 3.74 KB 0644
cmake.vim File 359 B 0644
cobol.vim File 9.24 KB 0644
conf.vim File 434 B 0644
config.vim File 1.24 KB 0644
context.vim File 4.26 KB 0644
cpp.vim File 288 B 0644
crm.vim File 414 B 0644
cs.vim File 802 B 0644
csc.vim File 734 B 0644
csh.vim File 1.59 KB 0644
css.vim File 528 B 0644
cucumber.vim File 5 KB 0644
cvsrc.vim File 399 B 0644
debchangelog.vim File 11.27 KB 0644
debcontrol.vim File 1.84 KB 0644
denyhosts.vim File 383 B 0644
dictconf.vim File 434 B 0644
dictdconf.vim File 435 B 0644
diff.vim File 355 B 0644
dircolors.vim File 431 B 0644
docbk.vim File 530 B 0644
dockerfile.vim File 356 B 0644
dosbatch.vim File 777 B 0644
dosini.vim File 458 B 0644
dtd.vim File 1.1 KB 0644
dtrace.vim File 1.12 KB 0644
eiffel.vim File 3.99 KB 0644
elinks.vim File 436 B 0644
erlang.vim File 1.77 KB 0644
eruby.vim File 3.09 KB 0644
eterm.vim File 470 B 0644
falcon.vim File 1.31 KB 0644
fetchmail.vim File 428 B 0644
flexwiki.vim File 1.83 KB 0644
fortran.vim File 4.58 KB 0644
framescript.vim File 780 B 0644
fvwm.vim File 390 B 0644
gdb.vim File 293 B 0644
git.vim File 1.32 KB 0644
gitcommit.vim File 2.18 KB 0644
gitconfig.vim File 376 B 0644
gitrebase.vim File 1.42 KB 0644
gitsendemail.vim File 157 B 0644
go.vim File 365 B 0644
gpg.vim File 433 B 0644
gprof.vim File 939 B 0644
groovy.vim File 343 B 0644
group.vim File 425 B 0644
grub.vim File 434 B 0644
haml.vim File 1.84 KB 0644
hamster.vim File 1.88 KB 0644
haskell.vim File 445 B 0644
help.vim File 442 B 0644
hgcommit.vim File 363 B 0644
hog.vim File 1.36 KB 0644
hostconf.vim File 383 B 0644
hostsaccess.vim File 436 B 0644
html.vim File 1.59 KB 0644
htmldjango.vim File 331 B 0644
indent.vim File 454 B 0644
initex.vim File 1005 B 0644
ishd.vim File 1.23 KB 0644
j.vim File 3.31 KB 0644
java.vim File 1.65 KB 0644
javascript.vim File 1.02 KB 0644
jproperties.vim File 321 B 0644
json.vim File 360 B 0644
jsp.vim File 1.96 KB 0644
kconfig.vim File 703 B 0644
kwt.vim File 851 B 0644
ld.vim File 470 B 0644
less.vim File 502 B 0644
lftp.vim File 434 B 0644
libao.vim File 440 B 0644
limits.vim File 436 B 0644
liquid.vim File 1.85 KB 0644
lisp.vim File 769 B 0644
logcheck.vim File 500 B 0644
loginaccess.vim File 442 B 0644
logindefs.vim File 440 B 0644
logtalk.dict File 1.75 KB 0644
logtalk.vim File 401 B 0644
lprolog.vim File 1.25 KB 0644
lua.vim File 973 B 0644
m4.vim File 426 B 0644
mail.vim File 1.08 KB 0644
mailaliases.vim File 383 B 0644
mailcap.vim File 434 B 0644
make.vim File 935 B 0644
man.vim File 5.51 KB 0644
manconf.vim File 444 B 0644
markdown.vim File 1.15 KB 0644
matlab.vim File 754 B 0644
mf.vim File 3.17 KB 0644
modconf.vim File 477 B 0644
mp.vim File 3.63 KB 0644
mplayerconf.vim File 472 B 0644
mrxvtrc.vim File 798 B 0644
msmessages.vim File 1.11 KB 0644
muttrc.vim File 467 B 0644
nanorc.vim File 447 B 0644
neomuttrc.vim File 532 B 0644
netrc.vim File 428 B 0644
nsis.vim File 1.29 KB 0644
objc.vim File 296 B 0644
ocaml.vim File 22.5 KB 0644
occam.vim File 1.27 KB 0644
pamconf.vim File 433 B 0644
pascal.vim File 667 B 0644
passwd.vim File 424 B 0644
pdf.vim File 2.55 KB 0644
perl.vim File 2.78 KB 0644
perl6.vim File 2.47 KB 0644
php.vim File 2.75 KB 0644
pinfo.vim File 435 B 0644
plaintex.vim File 1.12 KB 0644
postscr.vim File 1006 B 0644
procmail.vim File 479 B 0644
prolog.vim File 440 B 0644
protocols.vim File 457 B 0644
pyrex.vim File 766 B 0644
python.vim File 4.62 KB 0644
qf.vim File 459 B 0644
quake.vim File 439 B 0644
r.vim File 858 B 0644
racc.vim File 449 B 0644
readline.vim File 438 B 0644
registry.vim File 740 B 0644
reva.vim File 709 B 0644
rhelp.vim File 738 B 0644
rmd.vim File 1.45 KB 0644
rnc.vim File 431 B 0644
rnoweb.vim File 1.01 KB 0644
rpl.vim File 620 B 0644
rrst.vim File 1.08 KB 0644
rst.vim File 456 B 0644
ruby.vim File 16.61 KB 0644
rust.vim File 6.42 KB 0644
sass.vim File 607 B 0644
sbt.vim File 347 B 0644
scala.vim File 1.12 KB 0644
scheme.vim File 1.57 KB 0644
screen.vim File 436 B 0644
scss.vim File 239 B 0644
sensors.vim File 455 B 0644
services.vim File 452 B 0644
setserial.vim File 439 B 0644
sgml.vim File 1.18 KB 0644
sh.vim File 1.17 KB 0644
sieve.vim File 469 B 0644
slpconf.vim File 477 B 0644
slpreg.vim File 476 B 0644
slpspi.vim File 467 B 0644
spec.vim File 5.71 KB 0644
sql.vim File 21.11 KB 0644
sshconfig.vim File 441 B 0644
sudoers.vim File 438 B 0644
svg.vim File 1.17 KB 0644
sysctl.vim File 453 B 0644
systemd.vim File 158 B 0644
systemverilog.vim File 239 B 0644
tcl.vim File 1002 B 0644
tcsh.vim File 1.18 KB 0644
terminfo.vim File 430 B 0644
tex.vim File 1.6 KB 0644
text.vim File 433 B 0644
tmux.vim File 292 B 0644
treetop.vim File 416 B 0644
tt2html.vim File 434 B 0644
udevconf.vim File 434 B 0644
udevperm.vim File 432 B 0644
udevrules.vim File 426 B 0644
updatedb.vim File 443 B 0644
vb.vim File 1.86 KB 0644
verilog.vim File 1.93 KB 0644
vhdl.vim File 3.42 KB 0644
vim.vim File 3.14 KB 0644
vroom.vim File 924 B 0644
xdefaults.vim File 481 B 0644
xf86conf.vim File 434 B 0644
xhtml.vim File 1.99 KB 0644
xinetd.vim File 476 B 0644
xml.vim File 1.87 KB 0644
xmodmap.vim File 434 B 0644
xs.vim File 465 B 0644
xsd.vim File 1.14 KB 0644
xslt.vim File 539 B 0644
yaml.vim File 464 B 0644
zimbu.vim File 5.26 KB 0644
zsh.vim File 818 B 0644