/usr/share/vim/vim82/ftplugin
NameSizeModeActions
8th.vim8330644editdlrm
a2ps.vim4700644editdlrm
aap.vim9790644editdlrm
abap.vim8000644editdlrm
abaqus.vim33910644editdlrm
ada.vim65020644editdlrm
alsaconf.vim4380644editdlrm
ant.vim13410644editdlrm
arch.vim4310644editdlrm
art.vim4100644editdlrm
asm.vim2710644editdlrm
aspvbs.vim19160644editdlrm
automake.vim3370644editdlrm
awk.vim15030644editdlrm
bash.vim4740644editdlrm
basic.vim6250644editdlrm
bdf.vim4490644editdlrm
bst.vim3330644editdlrm
btm.vim3160644editdlrm
bzl.vim31060644editdlrm
c.vim22690644editdlrm
calendar.vim4620644editdlrm
cdrdaoconf.vim3830644editdlrm
cfg.vim3880644editdlrm
ch.vim4720644editdlrm
changelog.vim93040644editdlrm
chicken.vim17170644editdlrm
clojure.vim34150644editdlrm
cmake.vim8670644editdlrm
cobol.vim95700644editdlrm
conf.vim4340644editdlrm
config.vim12740644editdlrm
context.vim53870644editdlrm
cpp.vim4680644editdlrm
crm.vim4140644editdlrm
cs.vim8020644editdlrm
csc.vim7340644editdlrm
csh.vim17730644editdlrm
css.vim5860644editdlrm
cucumber.vim51870644editdlrm
cvsrc.vim3990644editdlrm
debchangelog.vim114450644editdlrm
debcontrol.vim18450644editdlrm
denyhosts.vim3830644editdlrm
dictconf.vim4340644editdlrm
dictdconf.vim4350644editdlrm
diff.vim6770644editdlrm
dircolors.vim4310644editdlrm
docbk.vim5300644editdlrm
dockerfile.vim3560644editdlrm
dosbatch.vim10110644editdlrm
dosini.vim4590644editdlrm
dtd.vim11230644editdlrm
dtrace.vim11510644editdlrm
dune.vim5020644editdlrm
eiffel.vim40880644editdlrm
elinks.vim4360644editdlrm
elm.vim3290644editdlrm
erlang.vim20780644editdlrm
eruby.vim47130644editdlrm
eterm.vim4700644editdlrm
falcon.vim13530644editdlrm
fetchmail.vim4280644editdlrm
flexwiki.vim18760644editdlrm
fortran.vim50670644editdlrm
fpcmake.vim5920644editdlrm
framescript.vim7800644editdlrm
freebasic.vim2340644editdlrm
fstab.vim4260644editdlrm
fvwm.vim3900644editdlrm
gdb.vim2930644editdlrm
git.vim13710644editdlrm
gitcommit.vim23140644editdlrm
gitconfig.vim3760644editdlrm
gitrebase.vim19460644editdlrm
gitsendemail.vim1570644editdlrm
go.vim3650644editdlrm
gpg.vim4330644editdlrm
gprof.vim11200644editdlrm
groovy.vim3430644editdlrm
group.vim4250644editdlrm
grub.vim4340644editdlrm
haml.vim19830644editdlrm
hamster.vim19620644editdlrm
haskell.vim5510644editdlrm
help.vim4710644editdlrm
hgcommit.vim3630644editdlrm
hog.vim13940644editdlrm
hostconf.vim3830644editdlrm
hostsaccess.vim4360644editdlrm
html.vim16250644editdlrm
htmldjango.vim3310644editdlrm
i3config.vim3330644editdlrm
indent.vim4870644editdlrm
initex.vim10050644editdlrm
ishd.vim12640644editdlrm
j.vim33930644editdlrm
java.vim16860644editdlrm
javascript.vim26050644editdlrm
javascriptreact.vim2440644editdlrm
jproperties.vim2920644editdlrm
json.vim3600644editdlrm
jsonc.vim6770644editdlrm
jsp.vim20110644editdlrm
julia.vim37870644editdlrm
kconfig.vim7030644editdlrm
kwt.vim8510644editdlrm
ld.vim4700644editdlrm
less.vim5020644editdlrm
lftp.vim4340644editdlrm
libao.vim4400644editdlrm
limits.vim4360644editdlrm
liquid.vim18970644editdlrm
lisp.vim7590644editdlrm
logcheck.vim4530644editdlrm
loginaccess.vim4420644editdlrm
logindefs.vim4400644editdlrm
logtalk.dict30960644editdlrm
logtalk.vim4160644editdlrm
lprolog.vim12790644editdlrm
lua.vim13270644editdlrm
m3build.vim5530644editdlrm
m3quake.vim8480644editdlrm
m4.vim4260644editdlrm
mail.vim13920644editdlrm
mailaliases.vim3830644editdlrm
mailcap.vim4340644editdlrm
make.vim10590644editdlrm
man.vim65780644editdlrm
manconf.vim4440644editdlrm
markdown.vim19670644editdlrm
masm.vim3900644editdlrm
matlab.vim8350644editdlrm
meson.vim11460644editdlrm
mf.vim32490644editdlrm
mma.vim3660644editdlrm
modconf.vim4770644editdlrm
modula2.vim10820644editdlrm
modula3.vim10030644editdlrm
mp.vim37120644editdlrm
mplayerconf.vim4720644editdlrm
mrxvtrc.vim7980644editdlrm
msmessages.vim11410644editdlrm
muttrc.vim4670644editdlrm
nanorc.vim4470644editdlrm
neomuttrc.vim5320644editdlrm
netrc.vim4280644editdlrm
nginx.vim1440644editdlrm
nroff.vim4240644editdlrm
nsis.vim13400644editdlrm
objc.vim2960644editdlrm
ocaml.vim237570644editdlrm
occam.vim12970644editdlrm
octave.vim22060644editdlrm
pamconf.vim4330644editdlrm
pascal.vim15890644editdlrm
passwd.vim4240644editdlrm
pbtxt.vim4380644editdlrm
pdf.vim26130644editdlrm
perl.vim28530644editdlrm
php.vim28130644editdlrm
pinfo.vim4350644editdlrm
plaintex.vim11500644editdlrm
poke.vim7440644editdlrm
postscr.vim10060644editdlrm
procmail.vim4790644editdlrm
prolog.vim4400644editdlrm
protocols.vim4570644editdlrm
ps1.vim26690644editdlrm
ps1xml.vim10090644editdlrm
pyrex.vim7660644editdlrm
python.vim79620644editdlrm
qf.vim5080644editdlrm
quake.vim4390644editdlrm
r.vim8780644editdlrm
racc.vim4490644editdlrm
raku.vim41130644editdlrm
readline.vim4380644editdlrm
registry.vim7400644editdlrm
reva.vim7090644editdlrm
rhelp.vim7580644editdlrm
rmd.vim18300644editdlrm
rnc.vim4310644editdlrm
rnoweb.vim10570644editdlrm
routeros.vim6820644editdlrm
rpl.vim6210644editdlrm
rrst.vim15940644editdlrm
rst.vim14000644editdlrm
ruby.vim172880644editdlrm
rust.vim65740644editdlrm
sass.vim9770644editdlrm
sbt.vim3470644editdlrm
scala.vim11480644editdlrm
scdoc.vim5770644editdlrm
scheme.vim14480644editdlrm
screen.vim4360644editdlrm
scss.vim2390644editdlrm
sensors.vim4550644editdlrm
services.vim4520644editdlrm
setserial.vim4390644editdlrm
sexplib.vim3480644editdlrm
sgml.vim12100644editdlrm
sh.vim12020644editdlrm
sieve.vim4690644editdlrm
slpconf.vim4770644editdlrm
slpreg.vim4760644editdlrm
slpspi.vim4670644editdlrm
solution.vim9590644editdlrm
spec.vim57600644editdlrm
sql.vim216120644editdlrm
sshconfig.vim4410644editdlrm
sudoers.vim4380644editdlrm
svg.vim12000644editdlrm
swift.vim7330644editdlrm
swiftgyb.vim4210644editdlrm
sysctl.vim4530644editdlrm
systemd.vim12580644editdlrm
systemverilog.vim12790644editdlrm
tcl.vim10020644editdlrm
tcsh.vim10040644editdlrm
terminfo.vim4300644editdlrm
tex.vim16420644editdlrm
text.vim4980644editdlrm
tidy.vim8610644editdlrm
tmux.vim3720644editdlrm
toml.vim4640644editdlrm
treetop.vim4160644editdlrm
tt2html.vim4340644editdlrm
typescript.vim12050644editdlrm
typescriptreact.vim7870644editdlrm
udevconf.vim4340644editdlrm
udevperm.vim4320644editdlrm
udevrules.vim4260644editdlrm
updatedb.vim4430644editdlrm
vb.vim34710644editdlrm
verilog.vim19770644editdlrm
vhdl.vim34970644editdlrm
vim.vim44920644editdlrm
vroom.vim9240644editdlrm
wast.vim4700644editdlrm
xdefaults.vim4810644editdlrm
xf86conf.vim4340644editdlrm
xhtml.vim20360644editdlrm
xinetd.vim4760644editdlrm
xml.vim22490644editdlrm
xmodmap.vim4340644editdlrm
xs.vim4650644editdlrm
xsd.vim11710644editdlrm
xslt.vim5390644editdlrm
yaml.vim6280644editdlrm
zimbu.vim74320644editdlrm
zsh.vim15000644editdlrm
Edit: /usr/share/vim/vim82/ftplugin/changelog.vim (9304B)
" Vim filetype plugin file " Language: generic Changelog file " Maintainer: Martin Florian " Previous Maintainer: Nikolai Weibull " 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: " o - " adds a new changelog entry for the current user for the current date. " Global Mappings: " 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 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 login = s:login() return printf('%s <%s@%s>', s:name(login), login, s:hostname()) endfunction function! s:login() return s:trimmed_system_with_default('whoami', 'unknown') 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 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 o :call new_changelog_entry('') xnoremap o :call new_changelog_entry('') command! -buffer -nargs=0 NewChangelogEntry call s:new_changelog_entry('') let b:undo_ftplugin .= " | sil! exe 'nunmap o'" . \ " | sil! exe 'vunmap 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 o :call open_changelog() let b:undo_ftplugin .= " | silent! exe 'nunmap 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