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 " Language: generic Changelog file " Maintainer: Martin Florian <marfl@posteo.de> " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2021-10-17 " Variables: " g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) - " description: the timeformat used in ChangeLog entries. " default: "%Y-%m-%d". " g:changelog_dateformat - " description: the format sent to strftime() to generate a date string. " default: "%Y-%m-%d". " g:changelog_username - " description: the username to use in ChangeLog entries " default: try to deduce it from environment variables and system files. " Local Mappings: " <Leader>o - " adds a new changelog entry for the current user for the current date. " Global Mappings: " <Leader>o - " switches to the ChangeLog buffer opened for the current directory, or " opens it in a new buffer if it exists in the current directory. Then " it does the same as the local <Leader>o described above. " Notes: " run 'runtime ftplugin/changelog.vim' to enable the global mapping for " changelog files. " TODO: " should we perhaps open the ChangeLog file even if it doesn't exist already? " Problem is that you might end up with ChangeLog files all over the place. " If 'filetype' isn't "changelog", we must have been to add ChangeLog opener if &filetype == 'changelog' if exists('b:did_ftplugin') finish endif let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim " Set up the format used for dates. if !exists('g:changelog_dateformat') if exists('g:changelog_timeformat') let g:changelog_dateformat = g:changelog_timeformat else let g:changelog_dateformat = "%Y-%m-%d" endif endif function! s:username() if exists('g:changelog_username') return g:changelog_username elseif $EMAIL != "" return $EMAIL elseif $EMAIL_ADDRESS != "" return $EMAIL_ADDRESS endif let s:default_login = 'unknown' " Disabled by default for security reasons. if dist#vim#IsSafeExecutable('changelog', 'whoami') let login = s:login() else let login = s:default_login endif return printf('%s <%s@%s>', s:name(login), login, s:hostname()) endfunction function! s:login() return s:trimmed_system_with_default('whoami', s:default_login) endfunction function! s:trimmed_system_with_default(command, default) return s:first_line(s:system_with_default(a:command, a:default)) endfunction function! s:system_with_default(command, default) let output = system(a:command) if v:shell_error return a:default endif return output endfunction function! s:first_line(string) return substitute(a:string, '\n.*$', "", "") endfunction function! s:name(login) for name in [s:gecos_name(a:login), $NAME, s:capitalize(a:login)] if name != "" return name endif endfor endfunction function! s:gecos_name(login) for line in s:try_reading_file('/etc/passwd') if line =~ '^' . a:login . ':' return substitute(s:passwd_field(line, 5), '&', s:capitalize(a:login), "") endif endfor return "" endfunction function! s:try_reading_file(path) try return readfile(a:path) catch return [] endtry endfunction function! s:passwd_field(line, field) let fields = split(a:line, ':', 1) if len(fields) < a:field return "" endif return fields[a:field - 1] endfunction function! s:capitalize(word) return toupper(a:word[0]) . strpart(a:word, 1) endfunction function! s:hostname() return s:trimmed_system_with_default('hostname', 'localhost') endfunction " Format used for new date entries. if !exists('g:changelog_new_date_format') let g:changelog_new_date_format = "%d %u\n\n\t* %p%c\n\n" endif " Format used for new entries to current date entry. if !exists('g:changelog_new_entry_format') let g:changelog_new_entry_format = "\t* %p%c" endif " Regular expression used to find a given date entry. if !exists('g:changelog_date_entry_search') let g:changelog_date_entry_search = '^\s*%d\_s*%u' endif " Regular expression used to find the end of a date entry if !exists('g:changelog_date_end_entry_search') let g:changelog_date_end_entry_search = '^\s*$' endif " Substitutes specific items in new date-entry formats and search strings. " Can be done with substitute of course, but unclean, and need \@! then. function! s:substitute_items(str, date, user, prefix) let str = a:str let middles = {'%': '%', 'd': a:date, 'u': a:user, 'p': a:prefix, 'c': '{cursor}'} let i = stridx(str, '%') while i != -1 let inc = 0 if has_key(middles, str[i + 1]) let mid = middles[str[i + 1]] let str = strpart(str, 0, i) . mid . strpart(str, i + 2) let inc = strlen(mid) - 1 endif let i = stridx(str, '%', i + 1 + inc) endwhile return str endfunction " Position the cursor once we've done all the funky substitution. function! s:position_cursor() if search('{cursor}') > 0 let lnum = line('.') let line = getline(lnum) let cursor = stridx(line, '{cursor}') call setline(lnum, substitute(line, '{cursor}', '', '')) endif startinsert endfunction " Internal function to create a new entry in the ChangeLog. function! s:new_changelog_entry(prefix) " Deal with 'paste' option. let save_paste = &paste let &paste = 1 call cursor(1, 1) " Look for an entry for today by our user. let date = strftime(g:changelog_dateformat) let search = s:substitute_items(g:changelog_date_entry_search, date, \ s:username(), a:prefix) if search(search) > 0 " Ok, now we look for the end of the date entry, and add an entry. call cursor(nextnonblank(line('.') + 1), 1) if search(g:changelog_date_end_entry_search, 'W') > 0 let p = (line('.') == line('$')) ? line('.') : line('.') - 1 else let p = line('.') endif let ls = split(s:substitute_items(g:changelog_new_entry_format, '', '', a:prefix), \ '\n') call append(p, ls) call cursor(p + 1, 1) else " Flag for removing empty lines at end of new ChangeLogs. let remove_empty = line('$') == 1 " No entry today, so create a date-user header and insert an entry. let todays_entry = s:substitute_items(g:changelog_new_date_format, \ date, s:username(), a:prefix) " Make sure we have a cursor positioning. if stridx(todays_entry, '{cursor}') == -1 let todays_entry = todays_entry . '{cursor}' endif " Now do the work. call append(0, split(todays_entry, '\n')) " Remove empty lines at end of file. if remove_empty $-/^\s*$/-1,$delete endif " Reposition cursor once we're done. call cursor(1, 1) endif call s:position_cursor() " And reset 'paste' option let &paste = save_paste endfunction let b:undo_ftplugin = "setl com< fo< et< ai<" setlocal comments= setlocal formatoptions+=t setlocal noexpandtab setlocal autoindent if &textwidth == 0 setlocal textwidth=78 let b:undo_ftplugin .= " tw<" endif if !exists("no_plugin_maps") && !exists("no_changelog_maps") && exists(":NewChangelogEntry") != 2 nnoremap <buffer> <silent> <Leader>o :<C-u>call <SID>new_changelog_entry('')<CR> xnoremap <buffer> <silent> <Leader>o :<C-u>call <SID>new_changelog_entry('')<CR> command! -buffer -nargs=0 NewChangelogEntry call s:new_changelog_entry('') let b:undo_ftplugin .= " | sil! exe 'nunmap <buffer> <Leader>o'" . \ " | sil! exe 'vunmap <buffer> <Leader>o'" . \ " | sil! delc NewChangelogEntry" endif let &cpo = s:cpo_save unlet s:cpo_save else let s:cpo_save = &cpo set cpo&vim if !exists("no_plugin_maps") && !exists("no_changelog_maps") " Add the Changelog opening mapping nnoremap <silent> <Leader>o :call <SID>open_changelog()<CR> let b:undo_ftplugin .= " | silent! exe 'nunmap <buffer> <Leader>o" endif function! s:open_changelog() let path = expand('%:p:h') if exists('b:changelog_path') let changelog = b:changelog_path else if exists('b:changelog_name') let name = b:changelog_name else let name = 'ChangeLog' endif while isdirectory(path) let changelog = path . '/' . name if filereadable(changelog) break endif let parent = substitute(path, '/\+[^/]*$', "", "") if path == parent break endif let path = parent endwhile endif if !filereadable(changelog) return endif if exists('b:changelog_entry_prefix') let prefix = call(b:changelog_entry_prefix, []) else let prefix = substitute(strpart(expand('%:p'), strlen(path)), '^/\+', "", "") endif let buf = bufnr(changelog) if buf != -1 if bufwinnr(buf) != -1 execute bufwinnr(buf) . 'wincmd w' else execute 'sbuffer' buf endif else execute 'split' fnameescape(changelog) endif call s:new_changelog_entry(prefix) endfunction let &cpo = s:cpo_save unlet s:cpo_save endif