Linux jobworks 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:53:05 UTC 2026 x86_64
Apache/2.4.58 (Ubuntu)
Server IP : 10.0.1.5 & Your IP : 216.73.217.52
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
vim /
vim91 /
ftplugin /
Delete
Unzip
Name
Size
Permission
Date
Action
8th.vim
833
B
-rw-r--r--
2026-07-13 17:17
a2ps.vim
470
B
-rw-r--r--
2026-07-13 17:17
aap.vim
1.02
KB
-rw-r--r--
2026-07-13 17:17
abap.vim
955
B
-rw-r--r--
2026-07-13 17:17
abaqus.vim
4
KB
-rw-r--r--
2026-07-13 17:17
ada.vim
6.35
KB
-rw-r--r--
2026-07-13 17:17
alsaconf.vim
438
B
-rw-r--r--
2026-07-13 17:17
ant.vim
1.27
KB
-rw-r--r--
2026-07-13 17:17
apache.vim
361
B
-rw-r--r--
2026-07-13 17:17
arch.vim
431
B
-rw-r--r--
2026-07-13 17:17
art.vim
509
B
-rw-r--r--
2026-07-13 17:17
asm.vim
372
B
-rw-r--r--
2026-07-13 17:17
aspvbs.vim
1.83
KB
-rw-r--r--
2026-07-13 17:17
automake.vim
337
B
-rw-r--r--
2026-07-13 17:17
awk.vim
1.57
KB
-rw-r--r--
2026-07-13 17:17
bash.vim
504
B
-rw-r--r--
2026-07-13 17:17
basic.vim
2.02
KB
-rw-r--r--
2026-07-13 17:17
bdf.vim
449
B
-rw-r--r--
2026-07-13 17:17
bitbake.vim
375
B
-rw-r--r--
2026-07-13 17:17
bst.vim
333
B
-rw-r--r--
2026-07-13 17:17
btm.vim
382
B
-rw-r--r--
2026-07-13 17:17
bzl.vim
3.22
KB
-rw-r--r--
2026-07-13 17:17
c.vim
2.32
KB
-rw-r--r--
2026-07-13 17:17
calendar.vim
462
B
-rw-r--r--
2026-07-13 17:17
cdrdaoconf.vim
383
B
-rw-r--r--
2026-07-13 17:17
cfg.vim
388
B
-rw-r--r--
2026-07-13 17:17
ch.vim
472
B
-rw-r--r--
2026-07-13 17:17
changelog.vim
9.28
KB
-rw-r--r--
2026-07-13 17:17
chatito.vim
383
B
-rw-r--r--
2026-07-13 17:17
chicken.vim
1.68
KB
-rw-r--r--
2026-07-13 17:17
clojure.vim
3.24
KB
-rw-r--r--
2026-07-13 17:17
cmake.vim
867
B
-rw-r--r--
2026-07-13 17:17
cobol.vim
9.35
KB
-rw-r--r--
2026-07-13 17:17
conf.vim
434
B
-rw-r--r--
2026-07-13 17:17
config.vim
1.21
KB
-rw-r--r--
2026-07-13 17:17
confini.vim
206
B
-rw-r--r--
2026-07-13 17:17
context.vim
4.34
KB
-rw-r--r--
2026-07-13 17:17
corn.vim
457
B
-rw-r--r--
2026-07-13 17:17
cpp.vim
534
B
-rw-r--r--
2026-07-13 17:17
crm.vim
414
B
-rw-r--r--
2026-07-13 17:17
crontab.vim
361
B
-rw-r--r--
2026-07-13 17:17
cs.vim
1.47
KB
-rw-r--r--
2026-07-13 17:17
csc.vim
697
B
-rw-r--r--
2026-07-13 17:17
csh.vim
1.75
KB
-rw-r--r--
2026-07-13 17:17
css.vim
586
B
-rw-r--r--
2026-07-13 17:17
cucumber.vim
5.07
KB
-rw-r--r--
2026-07-13 17:17
cvsrc.vim
399
B
-rw-r--r--
2026-07-13 17:17
debchangelog.vim
11.71
KB
-rw-r--r--
2026-07-13 17:17
debcontrol.vim
1.8
KB
-rw-r--r--
2026-07-13 17:17
debsources.vim
470
B
-rw-r--r--
2026-07-13 17:17
denyhosts.vim
383
B
-rw-r--r--
2026-07-13 17:17
desktop.vim
300
B
-rw-r--r--
2026-07-13 17:17
dictconf.vim
434
B
-rw-r--r--
2026-07-13 17:17
dictdconf.vim
435
B
-rw-r--r--
2026-07-13 17:17
diff.vim
743
B
-rw-r--r--
2026-07-13 17:17
dircolors.vim
431
B
-rw-r--r--
2026-07-13 17:17
docbk.vim
530
B
-rw-r--r--
2026-07-13 17:17
dockerfile.vim
356
B
-rw-r--r--
2026-07-13 17:17
dosbatch.vim
1.19
KB
-rw-r--r--
2026-07-13 17:17
dosini.vim
459
B
-rw-r--r--
2026-07-13 17:17
dtd.vim
1.06
KB
-rw-r--r--
2026-07-13 17:17
dtrace.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
dune.vim
618
B
-rw-r--r--
2026-07-13 17:17
eiffel.vim
3.99
KB
-rw-r--r--
2026-07-13 17:17
elinks.vim
436
B
-rw-r--r--
2026-07-13 17:17
elixir.vim
980
B
-rw-r--r--
2026-07-13 17:17
elm.vim
369
B
-rw-r--r--
2026-07-13 17:17
erlang.vim
3.2
KB
-rw-r--r--
2026-07-13 17:17
eruby.vim
4.66
KB
-rw-r--r--
2026-07-13 17:17
eterm.vim
470
B
-rw-r--r--
2026-07-13 17:17
expect.vim
503
B
-rw-r--r--
2026-07-13 17:17
falcon.vim
1.32
KB
-rw-r--r--
2026-07-13 17:17
fennel.vim
603
B
-rw-r--r--
2026-07-13 17:17
fetchmail.vim
397
B
-rw-r--r--
2026-07-13 17:17
fish.vim
483
B
-rw-r--r--
2026-07-13 17:17
flexwiki.vim
1.83
KB
-rw-r--r--
2026-07-13 17:17
forth.vim
1.84
KB
-rw-r--r--
2026-07-13 17:17
fortran.vim
5.56
KB
-rw-r--r--
2026-07-13 17:17
fpcmake.vim
592
B
-rw-r--r--
2026-07-13 17:17
framescript.vim
780
B
-rw-r--r--
2026-07-13 17:17
freebasic.vim
2.52
KB
-rw-r--r--
2026-07-13 17:17
fstab.vim
426
B
-rw-r--r--
2026-07-13 17:17
fvwm.vim
390
B
-rw-r--r--
2026-07-13 17:17
gdb.vim
293
B
-rw-r--r--
2026-07-13 17:17
gdscript.vim
1.59
KB
-rw-r--r--
2026-07-13 17:17
gdshader.vim
309
B
-rw-r--r--
2026-07-13 17:17
git.vim
305
B
-rw-r--r--
2026-07-13 17:17
gitattributes.vim
278
B
-rw-r--r--
2026-07-13 17:17
gitcommit.vim
2.03
KB
-rw-r--r--
2026-07-13 17:17
gitconfig.vim
376
B
-rw-r--r--
2026-07-13 17:17
gitignore.vim
274
B
-rw-r--r--
2026-07-13 17:17
gitrebase.vim
1.75
KB
-rw-r--r--
2026-07-13 17:17
gitsendemail.vim
157
B
-rw-r--r--
2026-07-13 17:17
go.vim
365
B
-rw-r--r--
2026-07-13 17:17
gpg.vim
1.1
KB
-rw-r--r--
2026-07-13 17:17
gprof.vim
1.09
KB
-rw-r--r--
2026-07-13 17:17
groovy.vim
343
B
-rw-r--r--
2026-07-13 17:17
group.vim
425
B
-rw-r--r--
2026-07-13 17:17
grub.vim
434
B
-rw-r--r--
2026-07-13 17:17
gyp.vim
311
B
-rw-r--r--
2026-07-13 17:17
haml.vim
1.94
KB
-rw-r--r--
2026-07-13 17:17
hamster.vim
1.92
KB
-rw-r--r--
2026-07-13 17:17
hare.vim
793
B
-rw-r--r--
2026-07-13 17:17
haskell.vim
573
B
-rw-r--r--
2026-07-13 17:17
heex.vim
830
B
-rw-r--r--
2026-07-13 17:17
help.vim
471
B
-rw-r--r--
2026-07-13 17:17
hgcommit.vim
363
B
-rw-r--r--
2026-07-13 17:17
hog.vim
1.36
KB
-rw-r--r--
2026-07-13 17:17
hostconf.vim
383
B
-rw-r--r--
2026-07-13 17:17
hostsaccess.vim
436
B
-rw-r--r--
2026-07-13 17:17
html.vim
1.7
KB
-rw-r--r--
2026-07-13 17:17
htmldjango.vim
331
B
-rw-r--r--
2026-07-13 17:17
i3config.vim
333
B
-rw-r--r--
2026-07-13 17:17
icon.vim
958
B
-rw-r--r--
2026-07-13 17:17
indent.vim
487
B
-rw-r--r--
2026-07-13 17:17
initex.vim
1005
B
-rw-r--r--
2026-07-13 17:17
ishd.vim
1.47
KB
-rw-r--r--
2026-07-13 17:17
j.vim
3.46
KB
-rw-r--r--
2026-07-13 17:17
java.vim
1.61
KB
-rw-r--r--
2026-07-13 17:17
javascript.vim
2.54
KB
-rw-r--r--
2026-07-13 17:17
javascriptreact.vim
244
B
-rw-r--r--
2026-07-13 17:17
jproperties.vim
292
B
-rw-r--r--
2026-07-13 17:17
json.vim
360
B
-rw-r--r--
2026-07-13 17:17
json5.vim
718
B
-rw-r--r--
2026-07-13 17:17
jsonc.vim
677
B
-rw-r--r--
2026-07-13 17:17
jsonnet.vim
431
B
-rw-r--r--
2026-07-13 17:17
jsp.vim
1.93
KB
-rw-r--r--
2026-07-13 17:17
julia.vim
3.7
KB
-rw-r--r--
2026-07-13 17:17
kconfig.vim
703
B
-rw-r--r--
2026-07-13 17:17
kotlin.vim
968
B
-rw-r--r--
2026-07-13 17:17
kwt.vim
851
B
-rw-r--r--
2026-07-13 17:17
ld.vim
470
B
-rw-r--r--
2026-07-13 17:17
less.vim
502
B
-rw-r--r--
2026-07-13 17:17
lftp.vim
434
B
-rw-r--r--
2026-07-13 17:17
libao.vim
440
B
-rw-r--r--
2026-07-13 17:17
limits.vim
436
B
-rw-r--r--
2026-07-13 17:17
liquid.vim
1.85
KB
-rw-r--r--
2026-07-13 17:17
lisp.vim
759
B
-rw-r--r--
2026-07-13 17:17
livebook.vim
270
B
-rw-r--r--
2026-07-13 17:17
logcheck.vim
451
B
-rw-r--r--
2026-07-13 17:17
loginaccess.vim
442
B
-rw-r--r--
2026-07-13 17:17
logindefs.vim
440
B
-rw-r--r--
2026-07-13 17:17
logtalk.dict
3.12
KB
-rw-r--r--
2026-07-13 17:17
logtalk.vim
416
B
-rw-r--r--
2026-07-13 17:17
lprolog.vim
1.62
KB
-rw-r--r--
2026-07-13 17:17
lua.vim
1.34
KB
-rw-r--r--
2026-07-13 17:17
luau.vim
225
B
-rw-r--r--
2026-07-13 17:17
lynx.vim
724
B
-rw-r--r--
2026-07-13 17:17
m3build.vim
539
B
-rw-r--r--
2026-07-13 17:17
m3quake.vim
957
B
-rw-r--r--
2026-07-13 17:17
m4.vim
426
B
-rw-r--r--
2026-07-13 17:17
mail.vim
1.42
KB
-rw-r--r--
2026-07-13 17:17
mailaliases.vim
383
B
-rw-r--r--
2026-07-13 17:17
mailcap.vim
434
B
-rw-r--r--
2026-07-13 17:17
make.vim
1.1
KB
-rw-r--r--
2026-07-13 17:17
man.vim
2.13
KB
-rw-r--r--
2026-07-13 17:17
manconf.vim
444
B
-rw-r--r--
2026-07-13 17:17
markdown.vim
2.81
KB
-rw-r--r--
2026-07-13 17:17
masm.vim
1
KB
-rw-r--r--
2026-07-13 17:17
matlab.vim
835
B
-rw-r--r--
2026-07-13 17:17
mermaid.vim
1.69
KB
-rw-r--r--
2026-07-13 17:17
meson.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
mf.vim
3.46
KB
-rw-r--r--
2026-07-13 17:17
mma.vim
366
B
-rw-r--r--
2026-07-13 17:17
modconf.vim
1.17
KB
-rw-r--r--
2026-07-13 17:17
modula2.vim
1.38
KB
-rw-r--r--
2026-07-13 17:17
modula3.vim
1.16
KB
-rw-r--r--
2026-07-13 17:17
mp.vim
3.8
KB
-rw-r--r--
2026-07-13 17:17
mplayerconf.vim
472
B
-rw-r--r--
2026-07-13 17:17
mrxvtrc.vim
798
B
-rw-r--r--
2026-07-13 17:17
msmessages.vim
1.11
KB
-rw-r--r--
2026-07-13 17:17
muttrc.vim
1.14
KB
-rw-r--r--
2026-07-13 17:17
nanorc.vim
447
B
-rw-r--r--
2026-07-13 17:17
neomuttrc.vim
532
B
-rw-r--r--
2026-07-13 17:17
netrc.vim
480
B
-rw-r--r--
2026-07-13 17:17
nginx.vim
251
B
-rw-r--r--
2026-07-13 17:17
nix.vim
388
B
-rw-r--r--
2026-07-13 17:17
nroff.vim
424
B
-rw-r--r--
2026-07-13 17:17
nsis.vim
1.31
KB
-rw-r--r--
2026-07-13 17:17
objc.vim
362
B
-rw-r--r--
2026-07-13 17:17
objdump.vim
271
B
-rw-r--r--
2026-07-13 17:17
obse.vim
1.61
KB
-rw-r--r--
2026-07-13 17:17
ocaml.vim
23.2
KB
-rw-r--r--
2026-07-13 17:17
occam.vim
1.27
KB
-rw-r--r--
2026-07-13 17:17
octave.vim
2.15
KB
-rw-r--r--
2026-07-13 17:17
openvpn.vim
307
B
-rw-r--r--
2026-07-13 17:17
pamconf.vim
433
B
-rw-r--r--
2026-07-13 17:17
pascal.vim
1.51
KB
-rw-r--r--
2026-07-13 17:17
passwd.vim
424
B
-rw-r--r--
2026-07-13 17:17
pbtxt.vim
478
B
-rw-r--r--
2026-07-13 17:17
pdf.vim
2.55
KB
-rw-r--r--
2026-07-13 17:17
perl.vim
3.77
KB
-rw-r--r--
2026-07-13 17:17
php.vim
5.26
KB
-rw-r--r--
2026-07-13 17:17
pinfo.vim
435
B
-rw-r--r--
2026-07-13 17:17
plaintex.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
pod.vim
2.23
KB
-rw-r--r--
2026-07-13 17:17
poefilter.vim
283
B
-rw-r--r--
2026-07-13 17:17
poke.vim
744
B
-rw-r--r--
2026-07-13 17:17
postscr.vim
1006
B
-rw-r--r--
2026-07-13 17:17
procmail.vim
479
B
-rw-r--r--
2026-07-13 17:17
prolog.vim
440
B
-rw-r--r--
2026-07-13 17:17
protocols.vim
457
B
-rw-r--r--
2026-07-13 17:17
ps1.vim
2.36
KB
-rw-r--r--
2026-07-13 17:17
ps1xml.vim
1009
B
-rw-r--r--
2026-07-13 17:17
pymanifest.vim
277
B
-rw-r--r--
2026-07-13 17:17
pyrex.vim
766
B
-rw-r--r--
2026-07-13 17:17
python.vim
7.78
KB
-rw-r--r--
2026-07-13 17:17
qb64.vim
587
B
-rw-r--r--
2026-07-13 17:17
qf.vim
508
B
-rw-r--r--
2026-07-13 17:17
qml.vim
780
B
-rw-r--r--
2026-07-13 17:17
quake.vim
439
B
-rw-r--r--
2026-07-13 17:17
quarto.vim
25
B
-rw-r--r--
2026-07-13 17:17
r.vim
890
B
-rw-r--r--
2026-07-13 17:17
racc.vim
449
B
-rw-r--r--
2026-07-13 17:17
racket.vim
2.43
KB
-rw-r--r--
2026-07-13 17:17
raku.vim
4.02
KB
-rw-r--r--
2026-07-13 17:17
readline.vim
1.67
KB
-rw-r--r--
2026-07-13 17:17
registry.vim
740
B
-rw-r--r--
2026-07-13 17:17
reva.vim
772
B
-rw-r--r--
2026-07-13 17:17
rhelp.vim
770
B
-rw-r--r--
2026-07-13 17:17
rmd.vim
2.29
KB
-rw-r--r--
2026-07-13 17:17
rnc.vim
431
B
-rw-r--r--
2026-07-13 17:17
rnoweb.vim
1.57
KB
-rw-r--r--
2026-07-13 17:17
routeros.vim
682
B
-rw-r--r--
2026-07-13 17:17
rpl.vim
621
B
-rw-r--r--
2026-07-13 17:17
rrst.vim
1.57
KB
-rw-r--r--
2026-07-13 17:17
rst.vim
1.37
KB
-rw-r--r--
2026-07-13 17:17
ruby.vim
17.44
KB
-rw-r--r--
2026-07-13 17:17
rust.vim
8.9
KB
-rw-r--r--
2026-07-13 17:17
sass.vim
1.09
KB
-rw-r--r--
2026-07-13 17:17
sbt.vim
346
B
-rw-r--r--
2026-07-13 17:17
scala.vim
1.27
KB
-rw-r--r--
2026-07-13 17:17
scdoc.vim
541
B
-rw-r--r--
2026-07-13 17:17
scheme.vim
1.41
KB
-rw-r--r--
2026-07-13 17:17
screen.vim
436
B
-rw-r--r--
2026-07-13 17:17
scss.vim
239
B
-rw-r--r--
2026-07-13 17:17
sed.vim
661
B
-rw-r--r--
2026-07-13 17:17
sensors.vim
455
B
-rw-r--r--
2026-07-13 17:17
services.vim
452
B
-rw-r--r--
2026-07-13 17:17
setserial.vim
439
B
-rw-r--r--
2026-07-13 17:17
sexplib.vim
451
B
-rw-r--r--
2026-07-13 17:17
sgml.vim
1.15
KB
-rw-r--r--
2026-07-13 17:17
sh.vim
1.9
KB
-rw-r--r--
2026-07-13 17:17
sieve.vim
469
B
-rw-r--r--
2026-07-13 17:17
slpconf.vim
477
B
-rw-r--r--
2026-07-13 17:17
slpreg.vim
476
B
-rw-r--r--
2026-07-13 17:17
slpspi.vim
467
B
-rw-r--r--
2026-07-13 17:17
solidity.vim
394
B
-rw-r--r--
2026-07-13 17:17
solution.vim
959
B
-rw-r--r--
2026-07-13 17:17
spec.vim
5.68
KB
-rw-r--r--
2026-07-13 17:17
sql.vim
21.11
KB
-rw-r--r--
2026-07-13 17:17
ssa.vim
288
B
-rw-r--r--
2026-07-13 17:17
sshconfig.vim
1.14
KB
-rw-r--r--
2026-07-13 17:17
sudoers.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
svg.vim
1.14
KB
-rw-r--r--
2026-07-13 17:17
swayconfig.vim
337
B
-rw-r--r--
2026-07-13 17:17
swift.vim
733
B
-rw-r--r--
2026-07-13 17:17
swiftgyb.vim
421
B
-rw-r--r--
2026-07-13 17:17
swig.vim
318
B
-rw-r--r--
2026-07-13 17:17
sysctl.vim
453
B
-rw-r--r--
2026-07-13 17:17
systemd.vim
1.46
KB
-rw-r--r--
2026-07-13 17:17
systemverilog.vim
1.25
KB
-rw-r--r--
2026-07-13 17:17
tap.vim
815
B
-rw-r--r--
2026-07-13 17:17
tcl.vim
1002
B
-rw-r--r--
2026-07-13 17:17
tcsh.vim
1.05
KB
-rw-r--r--
2026-07-13 17:17
terminfo.vim
430
B
-rw-r--r--
2026-07-13 17:17
tex.vim
1.6
KB
-rw-r--r--
2026-07-13 17:17
text.vim
498
B
-rw-r--r--
2026-07-13 17:17
tidy.vim
861
B
-rw-r--r--
2026-07-13 17:17
tmux.vim
372
B
-rw-r--r--
2026-07-13 17:17
toml.vim
468
B
-rw-r--r--
2026-07-13 17:17
treetop.vim
416
B
-rw-r--r--
2026-07-13 17:17
tt2html.vim
513
B
-rw-r--r--
2026-07-13 17:17
typescript.vim
1.18
KB
-rw-r--r--
2026-07-13 17:17
typescriptreact.vim
787
B
-rw-r--r--
2026-07-13 17:17
udevconf.vim
434
B
-rw-r--r--
2026-07-13 17:17
udevperm.vim
432
B
-rw-r--r--
2026-07-13 17:17
udevrules.vim
1.12
KB
-rw-r--r--
2026-07-13 17:17
unison.vim
314
B
-rw-r--r--
2026-07-13 17:17
updatedb.vim
443
B
-rw-r--r--
2026-07-13 17:17
urlshortcut.vim
475
B
-rw-r--r--
2026-07-13 17:17
usd.vim
379
B
-rw-r--r--
2026-07-13 17:17
vb.vim
3.39
KB
-rw-r--r--
2026-07-13 17:17
vdf.vim
311
B
-rw-r--r--
2026-07-13 17:17
verilog.vim
1.93
KB
-rw-r--r--
2026-07-13 17:17
vhdl.vim
4.21
KB
-rw-r--r--
2026-07-13 17:17
vim.vim
4.98
KB
-rw-r--r--
2026-07-13 17:17
vroom.vim
924
B
-rw-r--r--
2026-07-13 17:17
vue.vim
667
B
-rw-r--r--
2026-07-13 17:17
wat.vim
470
B
-rw-r--r--
2026-07-13 17:17
wget.vim
734
B
-rw-r--r--
2026-07-13 17:17
wget2.vim
742
B
-rw-r--r--
2026-07-13 17:17
xcompose.vim
276
B
-rw-r--r--
2026-07-13 17:17
xdefaults.vim
481
B
-rw-r--r--
2026-07-13 17:17
xf86conf.vim
434
B
-rw-r--r--
2026-07-13 17:17
xhtml.vim
1.95
KB
-rw-r--r--
2026-07-13 17:17
xinetd.vim
476
B
-rw-r--r--
2026-07-13 17:17
xml.vim
2.15
KB
-rw-r--r--
2026-07-13 17:17
xmodmap.vim
434
B
-rw-r--r--
2026-07-13 17:17
xs.vim
517
B
-rw-r--r--
2026-07-13 17:17
xsd.vim
1.11
KB
-rw-r--r--
2026-07-13 17:17
xslt.vim
515
B
-rw-r--r--
2026-07-13 17:17
yaml.vim
628
B
-rw-r--r--
2026-07-13 17:17
zig.vim
1.63
KB
-rw-r--r--
2026-07-13 17:17
zimbu.vim
7.34
KB
-rw-r--r--
2026-07-13 17:17
zsh.vim
1.48
KB
-rw-r--r--
2026-07-13 17:17
Save
Rename
" Vim filetype plugin file (GUI menu, folding and completion) " Language: Debian Changelog " Maintainer: Debian Vim Maintainers <team+vim@tracker.debian.org> " Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de> " Stefano Zacchiroli <zack@debian.org> " Last Change: 2023 Aug 18 " License: Vim License " URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/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 " Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise " <CR> would not be recognized. See ":help 'cpoptions'". let s:cpo_save = &cpo set cpo&vim " {{{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('.') 1 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.U&nfinalise 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' doesn't support key annotation (<c-a>) directly. " Vim's manual recommends using ':exe' to use key annotation indirectly (backslash-escaping needed though). exe "normal! \<c-a>" call setline(1, substitute(getline(1), '-\$\$', '-', '')) if exists('g:debchangelog_fold_enable') foldopen endif call AddEntry() endfunction function AddEntry() 1 call search('^ -- ') .-2 call append('.', ' * ') .+3 let warn=<SID>WarnIfNotUnfinalised() .-2 if warn echohl MoreMsg call input('Hit ENTER') echohl None endif startinsert! endfunction function CloseBug() 1 call search('^ -- ') let warn=<SID>WarnIfNotUnfinalised() .-2 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.U&nfinalise amenu enable &Changelog.&Finalise endfunction function Unfinalise() call <SID>UnfinaliseMenu() 1 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.U&nfinalise amenu disable &Changelog.&Finalise endfunction function Finalise() call <SID>FinaliseMenu() 1 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 " }}} " Restore the previous value of 'cpoptions'. let &cpo = s:cpo_save unlet s:cpo_save " vim: set foldmethod=marker: