This is an update to a previous blog post about precisely the same subject. You should read that first for this to make sense.
I've updated with the insertion of a ":modified:" tag (even though Pelican doesn't seem to use it with my current installation - I like to have it myself), and added a check to update that tag whenever an RST file is edited.
" Use rst's preferred format for the time:
let now = strftime("%Y-%m-%d %H:%M")
" if the file is empty (0 length) or doesn't exist, prep it
" (getfsize(...) returns -1 for "file not found"):
let curFileSize = getfsize(@%)
if (curFileSize==0) || (curFileSize==-1)
let intro = [":title: Your Title Here"]
call add (intro, ":date: " . now)
call add (intro, ":modified: " . now)
call add (intro, ":tags: comma, separated, list")
call add (intro, ":slug: generated-file-title")
call add (intro, ":author: Giles Orr")
call add (intro, ":status: draft")
call add (intro, ":summary: short summary of page contents")
call add (intro, "")
let failed = append(0, intro)
if (failed)
" Don't know when this would happen:
echo "Unable to prep file!"
else
" vim doesn't seem to notice file changes applied by a script:
let &modified = 1
endif
else
" This updates the ":modified:" field to
" the current date. Search the first ten lines for ":modified:" at the
" beginning of the line. If found, replace with new date.
execute "1,10/^:modified:/s/:modified:.*/:modified: " . now . "/"
let &modified = 1
echom ":modified: field updated, 'u' to undo"
endif
call IsSingleBuffer("colo nightsky")
This also adds a function to determine if this is a single buffer, and if it is, it sets the colour scheme. Otherwise it leaves it alone. This is stored in ~/.vim/plugin/IsSingleBuffer.vim (everything in the ~/.vim/plugin/ folder is auto-loaded when vim starts):
" From http://superuser.com/questions/345520/vim-number-of-total-buffers ,
" to determine if there are files already open. I don't understand it, but
" it definitely works better than grabbing "bufnr('$')" ... Basically: do
" this "cmd" if there's only one buffer open.
function IsSingleBuffer(cmd)
if ! (len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) > 1 )
execute a:cmd
endif
endfunction
That link: http://superuser.com/questions/345520/vim-number-of-total-buffers (Pelican doesn't want to do linking in a code block). I call this from most of my ~/.vim/ftplugin/ files to set the colour scheme, but it could be used for other commands meant to be applied to a single buffer only.
See this update for an improvement to the updating of the ":modified:" date.