Update runtime files.
diff --git a/runtime/ftplugin/bzl.vim b/runtime/ftplugin/bzl.vim
new file mode 100644
index 0000000..0296b0c
--- /dev/null
+++ b/runtime/ftplugin/bzl.vim
@@ -0,0 +1,94 @@
+" Vim filetype plugin file
+" Language:	Bazel (http://bazel.io)
+" Maintainer:	David Barnett (https://github.com/google/vim-ft-bzl)
+" Last Change:	2015 Aug 11
+
+""
+" @section Introduction, intro
+" Core settings for the bzl filetype, used for BUILD and *.bzl files for the
+" Bazel build system (http://bazel.io/).
+
+if exists('b:did_ftplugin')
+  finish
+endif
+
+
+" Vim 7.4.051 has opinionated settings in ftplugin/python.vim that try to force
+" PEP8 conventions on every python file, but these conflict with Google's
+" indentation guidelines. As a workaround, we explicitly source the system
+" ftplugin, but save indentation settings beforehand and restore them after.
+let s:save_expandtab = &l:expandtab
+let s:save_shiftwidth = &l:shiftwidth
+let s:save_softtabstop = &l:softtabstop
+let s:save_tabstop = &l:tabstop
+
+" NOTE: Vim versions before 7.3.511 had a ftplugin/python.vim that was broken
+" for compatible mode.
+let s:save_cpo = &cpo
+set cpo&vim
+
+" Load base python ftplugin (also defines b:did_ftplugin).
+source $VIMRUNTIME/ftplugin/python.vim
+
+" NOTE: Vim versions before 7.4.104 and later set this in ftplugin/python.vim.
+setlocal comments=b:#,fb:-
+
+" Restore pre-existing indentation settings.
+let &l:expandtab = s:save_expandtab
+let &l:shiftwidth = s:save_shiftwidth
+let &l:softtabstop = s:save_softtabstop
+let &l:tabstop = s:save_tabstop
+
+setlocal formatoptions-=t
+
+" Make gf work with imports in BUILD files.
+setlocal includeexpr=substitute(v:fname,'//','','')
+
+" Enable syntax-based folding, if specified.
+if get(g:, 'ft_bzl_fold', 0)
+  setlocal foldmethod=syntax
+  setlocal foldtext=BzlFoldText()
+endif
+
+if exists('*BzlFoldText')
+  finish
+endif
+
+function BzlFoldText() abort
+  let l:start_num = nextnonblank(v:foldstart)
+  let l:end_num = prevnonblank(v:foldend)
+
+  if l:end_num <= l:start_num + 1
+    " If the fold is empty, don't print anything for the contents.
+    let l:content = ''
+  else
+    " Otherwise look for something matching the content regex.
+    " And if nothing matches, print an ellipsis.
+    let l:content = '...'
+    for l:line in getline(l:start_num + 1, l:end_num - 1)
+      let l:content_match = matchstr(l:line, '\m\C^\s*name = \zs.*\ze,$')
+      if !empty(l:content_match)
+        let l:content = l:content_match
+        break
+      endif
+    endfor
+  endif
+
+  " Enclose content with start and end
+  let l:start_text = getline(l:start_num)
+  let l:end_text = substitute(getline(l:end_num), '^\s*', '', '')
+  let l:text = l:start_text . ' ' . l:content . ' ' . l:end_text
+
+  " Compute the available width for the displayed text.
+  let l:width = winwidth(0) - &foldcolumn - (&number ? &numberwidth : 0)
+  let l:lines_folded = ' ' . string(1 + v:foldend - v:foldstart) . ' lines'
+
+  " Expand tabs, truncate, pad, and concatenate
+  let l:text = substitute(l:text, '\t', repeat(' ', &tabstop), 'g')
+  let l:text = strpart(l:text, 0, l:width - len(l:lines_folded))
+  let l:padding = repeat(' ', l:width - len(l:lines_folded) - len(l:text))
+  return l:text . l:padding . l:lines_folded
+endfunction
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/runtime/ftplugin/j.vim b/runtime/ftplugin/j.vim
index 7746968..9dc1692 100644
--- a/runtime/ftplugin/j.vim
+++ b/runtime/ftplugin/j.vim
@@ -2,7 +2,7 @@
 " Language:	J
 " Maintainer:	David Bürgin <676c7473@gmail.com>
 " URL:		https://github.com/glts/vim-j
-" Last Change:	2015-03-27
+" Last Change:	2015-09-27
 
 if exists('b:did_ftplugin')
   finish
@@ -12,13 +12,20 @@
 let s:save_cpo = &cpo
 set cpo&vim
 
-setlocal iskeyword=48-57,A-Z,_,a-z
+setlocal iskeyword=48-57,A-Z,a-z,_
 setlocal comments=:NB.
 setlocal commentstring=NB.\ %s
 setlocal formatoptions-=t
 setlocal matchpairs=(:)
+setlocal path-=/usr/include
 
-let b:undo_ftplugin = 'setlocal matchpairs< formatoptions< commentstring< comments< iskeyword<'
+" Includes. To make the shorthand form "require 'web/cgi'" work, double the
+" last path component. Also strip off leading folder names like "~addons/".
+setlocal include=\\v^\\s*(load\|require)\\s*'\\zs\\f+\\ze'
+setlocal includeexpr=substitute(substitute(tr(v:fname,'\\','/'),'\\v^[^~][^/.]*(/[^/.]+)$','&\\1',''),'\\v^\\~[^/]+/','','')
+setlocal suffixesadd=.ijs
+
+let b:undo_ftplugin = 'setlocal matchpairs< formatoptions< commentstring< comments< iskeyword< path< include< includeexpr< suffixesadd<'
 
 " Section movement with ]] ][ [[ []. The start/end patterns below are amended
 " inside the function in order to avoid matching on the current cursor line.
diff --git a/runtime/ftplugin/systemd.vim b/runtime/ftplugin/systemd.vim
new file mode 100644
index 0000000..60b3fd9
--- /dev/null
+++ b/runtime/ftplugin/systemd.vim
@@ -0,0 +1,7 @@
+" Vim filetype plugin file
+" Language:  systemd.unit(5)
+
+if !exists('b:did_ftplugin')
+  " Looks a lot like dosini files.
+  runtime! ftplugin/dosini.vim
+endif