Update runtime files.
diff --git a/runtime/syntax/autohotkey.vim b/runtime/syntax/autohotkey.vim
index 3b826af..c6a68f7 100644
--- a/runtime/syntax/autohotkey.vim
+++ b/runtime/syntax/autohotkey.vim
@@ -2,7 +2,7 @@
 " Language:         AutoHotkey script file
 " Maintainer:       Michael Wong
 "                   https://github.com/mmikeww/autohotkey.vim
-" Latest Revision:  2017-01-23
+" Latest Revision:  2017-04-03
 " Previous Maintainers:       SungHyun Nam <goweol@gmail.com>
 "                             Nikolai Weibull <now@bitwi.se>
 
@@ -106,6 +106,7 @@
       \ FormatTime IfInString IfNotInString Sort StringCaseSense StringGetPos
       \ StringLeft StringRight StringLower StringUpper StringMid StringReplace
       \ StringSplit StringTrimLeft StringTrimRight StringLen
+      \ StrSplit StrReplace Throw
       \ Control ControlClick ControlFocus ControlGet ControlGetFocus
       \ ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw
       \ ControlSetText Menu PostMessage SendMessage SetControlDelay
@@ -119,17 +120,18 @@
       \ SetCapsLockState SetNumLockState SetScrollLockState
 
 syn keyword autohotkeyFunction
-      \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr
+      \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr Func
       \ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage 
       \ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan
       \ FileExist GetKeyState NumGet NumPut StrGet StrPut RegisterCallback
       \ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen
       \ ComObjActive ComObjArray ComObjConnect ComObjCreate ComObjGet
       \ ComObjError ComObjFlags ComObjQuery ComObjType ComObjValue ComObject
+      \ Format Exception
 
 syn keyword autohotkeyStatement
       \ Break Continue Exit ExitApp Gosub Goto OnExit Pause Return
-      \ Suspend Reload
+      \ Suspend Reload new class extends
 
 syn keyword autohotkeyRepeat
       \ Loop
@@ -138,7 +140,7 @@
       \ IfExist IfNotExist If IfEqual IfLess IfGreater Else
       \ IfWinExist IfWinNotExist IfWinActive IfWinNotActive
       \ IfNotEqual IfLessOrEqual IfGreaterOrEqual
-      \ while until for in
+      \ while until for in try catch finally
 
 syn match   autohotkeyPreProcStart
       \ nextgroup=
@@ -178,7 +180,7 @@
       \ Warn
 
 syn keyword autohotkeyMatchClass
-      \ ahk_group ahk_class ahk_id ahk_pid
+      \ ahk_group ahk_class ahk_id ahk_pid ahk_exe
 
 syn match   autohotkeyNumbers
       \ display
@@ -217,7 +219,7 @@
       \ contains=autohotkeyKey,
       \   autohotkeyHotkeyDelimiter
       \ display
-      \ '^.\{-}::'
+      \ '^\s*\S*\%( Up\)\?::'
 
 syn match   autohotkeyKey
       \ contained
diff --git a/runtime/syntax/r.vim b/runtime/syntax/r.vim
index 30a5b23..45ff498 100644
--- a/runtime/syntax/r.vim
+++ b/runtime/syntax/r.vim
@@ -5,10 +5,10 @@
 " 		      Tom Payne <tom@tompayne.org>
 " Contributor:        Johannes Ranke <jranke@uni-bremen.de>
 " Homepage:           https://github.com/jalvesaq/R-Vim-runtime
-" Last Change:	      Thu Aug 25, 2016  08:52PM
+" Last Change:	      Sat Apr 08, 2017  07:01PM
 " Filenames:	      *.R *.r *.Rhistory *.Rt
 "
-" NOTE: The highlighting of R functions is defined in
+" NOTE: The highlighting of R functions might be defined in
 " runtime files created by a filetype plugin, if installed.
 "
 " CONFIGURATION:
@@ -18,7 +18,7 @@
 "
 "   ROxygen highlighting can be turned off by
 "
-"      let r_hl_roxygen = 0
+"      let r_syntax_hl_roxygen = 0
 "
 " Some lines of code were borrowed from Zhuojun Chen.
 
@@ -26,13 +26,25 @@
   finish
 endif
 
-syn iskeyword @,48-57,_,.
+if has("patch-7.4.1142")
+  syn iskeyword @,48-57,_,.
+else
+  setlocal iskeyword=@,48-57,_,.
+endif
+
+" The variables g:r_hl_roxygen and g:r_syn_minlines were renamed on April 8, 2017.
+if exists("g:r_hl_roxygen")
+  let g:r_syntax_hl_roxygen = g:r_hl_roxygen
+endif
+if exists("g:r_syn_minlines")
+  let g:r_syntax_minlines = g:r_syn_minlines
+endif
 
 if exists("g:r_syntax_folding") && g:r_syntax_folding
   setlocal foldmethod=syntax
 endif
-if !exists("g:r_hl_roxygen")
-  let g:r_hl_roxygen = 1
+if !exists("g:r_syntax_hl_roxygen")
+  let g:r_syntax_hl_roxygen = 1
 endif
 
 syn case match
@@ -42,19 +54,106 @@
 syn match rComment contains=@Spell,rCommentTodo,rOBlock "#.*"
 
 " Roxygen
-if g:r_hl_roxygen
-  syn region rOBlock start="^\s*\n#\{1,2}' " start="\%^#\{1,2}' " end="^\(#\{1,2}'\)\@!" contains=rOTitle,rOKeyword,rOExamples,@Spell keepend
-  syn region rOTitle start="^\s*\n#\{1,2}' " start="\%^#\{1,2}' " end="^\(#\{1,2}'\s*$\)\@=" contained contains=rOCommentKey
-  syn match rOCommentKey "#\{1,2}'" containedin=rOTitle contained
+if g:r_syntax_hl_roxygen
+  " A roxygen block can start at the beginning of a file (first version) and
+  " after a blank line (second version). It ends when a line that does not
+  " contain a roxygen comment. In the following comments, any line containing
+  " a roxygen comment marker (one or two hash signs # followed by a single
+  " quote ' and preceded only by whitespace) is called a roxygen line. A
+  " roxygen line containing only a roxygen comment marker, optionally followed
+  " by whitespace is called an empty roxygen line.
 
-  syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOKeyword
+  " First we match all roxygen blocks as containing only a title. In case an
+  " empty roxygen line ending the title or a tag is found, this will be
+  " overriden later by the definitions of rOBlock.
+  syn match rOTitleBlock "\%^\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag
+  syn match rOTitleBlock "^\s*\n\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag
 
-  syn match rOKeyword contained "@\(param\|return\|name\|rdname\|examples\|example\|include\|docType\)"
-  syn match rOKeyword contained "@\(S3method\|TODO\|aliases\|alias\|assignee\|author\|callGraphDepth\|callGraph\)"
-  syn match rOKeyword contained "@\(callGraphPrimitives\|concept\|exportClass\|exportMethod\|exportPattern\|export\|formals\)"
-  syn match rOKeyword contained "@\(format\|importClassesFrom\|importFrom\|importMethodsFrom\|import\|keywords\|useDynLib\)"
-  syn match rOKeyword contained "@\(method\|noRd\|note\|references\|seealso\|setClass\|slot\|source\|title\|usage\)"
-  syn match rOKeyword contained "@\(family\|template\|templateVar\|description\|details\|inheritParams\|field\)"
+  " When a roxygen block has a title and additional content, the title
+  " consists of one or more roxygen lines (as little as possible are matched),
+  " followed either by an empty roxygen line
+  syn region rOBlock start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold
+  syn region rOBlock start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold
+
+  " or by a roxygen tag (we match everything starting with @ but not @@ which is used as escape sequence for a literal @).
+  syn region rOBlock start="\%^\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold
+  syn region rOBlock start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold
+
+  " If a block contains an @rdname, @describeIn tag, it may have paragraph breaks, but does not have a title
+  syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
+  syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
+  syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
+  syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
+
+  " A title as part of a block is always at the beginning of the block, i.e.
+  " either at the start of a file or after a completely empty line.
+  syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
+  syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
+  syn match rOTitleTag contained "@title"
+
+  syn match rOCommentKey "#\{1,2}'" contained
+  syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold
+
+  " rOTag list generated from the lists in
+  " https://github.com/klutometis/roxygen/R/rd.R and
+  " https://github.com/klutometis/roxygen/R/namespace.R
+  " using s/^    \([A-Za-z0-9]*\) = .*/  syn match rOTag contained "@\1"/
+  " Plus we need the @include tag
+
+  " rd.R
+  syn match rOTag contained "@aliases"
+  syn match rOTag contained "@author"
+  syn match rOTag contained "@backref"
+  syn match rOTag contained "@concept"
+  syn match rOTag contained "@describeIn"
+  syn match rOTag contained "@description"
+  syn match rOTag contained "@details"
+  syn match rOTag contained "@docType"
+  syn match rOTag contained "@encoding"
+  syn match rOTag contained "@evalRd"
+  syn match rOTag contained "@example"
+  syn match rOTag contained "@examples"
+  syn match rOTag contained "@family"
+  syn match rOTag contained "@field"
+  syn match rOTag contained "@format"
+  syn match rOTag contained "@inherit"
+  syn match rOTag contained "@inheritParams"
+  syn match rOTag contained "@inheritDotParams"
+  syn match rOTag contained "@inheritSection"
+  syn match rOTag contained "@keywords"
+  syn match rOTag contained "@method"
+  syn match rOTag contained "@name"
+  syn match rOTag contained "@md"
+  syn match rOTag contained "@noMd"
+  syn match rOTag contained "@noRd"
+  syn match rOTag contained "@note"
+  syn match rOTag contained "@param"
+  syn match rOTag contained "@rdname"
+  syn match rOTag contained "@rawRd"
+  syn match rOTag contained "@references"
+  syn match rOTag contained "@return"
+  syn match rOTag contained "@section"
+  syn match rOTag contained "@seealso"
+  syn match rOTag contained "@slot"
+  syn match rOTag contained "@source"
+  syn match rOTag contained "@template"
+  syn match rOTag contained "@templateVar"
+  syn match rOTag contained "@title"
+  syn match rOTag contained "@usage"
+  " namespace.R
+  syn match rOTag contained "@export"
+  syn match rOTag contained "@exportClass"
+  syn match rOTag contained "@exportMethod"
+  syn match rOTag contained "@exportPattern"
+  syn match rOTag contained "@import"
+  syn match rOTag contained "@importClassesFrom"
+  syn match rOTag contained "@importFrom"
+  syn match rOTag contained "@importMethodsFrom"
+  syn match rOTag contained "@rawNamespace"
+  syn match rOTag contained "@S3method"
+  syn match rOTag contained "@useDynLib"
+  " other
+  syn match rOTag contained "@include"
 endif
 
 
@@ -168,12 +267,28 @@
 syn match rCurlyError "[)\]]" contained
 syn match rParenError "[\]}]" contained
 
-if !exists("g:R_hi_fun")
-  let g:R_hi_fun = 1
+" Use Nvim-R to highlight functions dynamically if it is installed
+if !exists("g:r_syntax_fun_pattern")
+  let s:ff = split(substitute(globpath(&rtp, "R/functions.vim"), "functions.vim", "", "g"), "\n")
+  if len(s:ff) > 0
+    let g:r_syntax_fun_pattern = 0
+  else
+    let g:r_syntax_fun_pattern = 1
+  endif
 endif
-if g:R_hi_fun
-  " Nvim-R:
-  runtime R/functions.vim
+
+" Only use Nvim-R to highlight functions if they should not be highlighted
+" according to a generic pattern
+if g:r_syntax_fun_pattern == 1
+  syn match rFunction '[0-9a-zA-Z_\.]\+\s*\ze('
+else
+  if !exists("g:R_hi_fun")
+    let g:R_hi_fun = 1
+  endif
+  if g:R_hi_fun
+    " Nvim-R:
+    runtime R/functions.vim
+  endif
 endif
 
 syn match rDollar display contained "\$"
@@ -205,8 +320,8 @@
   syn match rhSection "\\dontrun\>"
 endif
 
-if exists("r_syn_minlines")
-  exe "syn sync minlines=" . r_syn_minlines
+if exists("r_syntax_minlines")
+  exe "syn sync minlines=" . r_syntax_minlines
 else
   syn sync minlines=40
 endif
@@ -243,15 +358,17 @@
 hi def link rString      String
 hi def link rStrError    Error
 hi def link rType        Type
-if g:r_hl_roxygen
-  hi def link rOKeyword    Title
-  hi def link rOBlock      Comment
+if g:r_syntax_hl_roxygen
+  hi def link rOTitleTag   Operator
+  hi def link rOTag        Operator
+  hi def link rOTitleBlock Title
+  hi def link rOBlock         Comment
+  hi def link rOBlockNoTitle  Comment
   hi def link rOTitle      Title
   hi def link rOCommentKey Comment
   hi def link rOExamples   SpecialComment
 endif
 
-
 let b:current_syntax="r"
 
 " vim: ts=8 sw=2
diff --git a/runtime/syntax/rmd.vim b/runtime/syntax/rmd.vim
index 48fb5e0..0543535 100644
--- a/runtime/syntax/rmd.vim
+++ b/runtime/syntax/rmd.vim
@@ -1,17 +1,26 @@
 " markdown Text with R statements
 " Language: markdown with R code chunks
 " Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Tue Jun 28, 2016  10:09AM
+" Last Change: Sat Jan 28, 2017  10:06PM
 "
 " CONFIGURATION:
-"   To highlight chunk headers as R code, put in your vimrc:
+"   To highlight chunk headers as R code, put in your vimrc (e.g. .config/nvim/init.vim):
 "   let rmd_syn_hl_chunk = 1
+"
+"   For highlighting pandoc extensions to markdown like citations and TeX and
+"   many other advanced features like folding of markdown sections, it is
+"   recommended to install the vim-pandoc filetype plugin as well as the
+"   vim-pandoc-syntax filetype plugin from https://github.com/vim-pandoc.
+"
+" TODO:
+"   - Provide highlighting for rmarkdown parameters in yaml header
 
 if exists("b:current_syntax")
   finish
 endif
 
-" load all of pandoc info
+" load all of pandoc info, e.g. from
+" https://github.com/vim-pandoc/vim-pandoc-syntax
 runtime syntax/pandoc.vim
 if exists("b:current_syntax")
   let rmdIsPandoc = 1
@@ -22,28 +31,54 @@
   if exists("b:current_syntax")
     unlet b:current_syntax
   endif
+
+  " load all of the yaml syntax highlighting rules into @yaml
+  syntax include @yaml syntax/yaml.vim
+  if exists("b:current_syntax")
+    unlet b:current_syntax
+  endif
+
+  " highlight yaml block commonly used for front matter
+  syntax region rmdYamlBlock matchgroup=rmdYamlBlockDelim start="^---" matchgroup=rmdYamlBlockDelim end="^---" contains=@yaml keepend fold
 endif
 
-" load all of the r syntax highlighting rules into @R
-syntax include @R syntax/r.vim
-if exists("b:current_syntax")
-  unlet b:current_syntax
-endif
-
-if exists("g:rmd_syn_hl_chunk")
-  " highlight R code inside chunk header
-  syntax match rmdChunkDelim "^[ \t]*```{r" contained
-  syntax match rmdChunkDelim "}$" contained
+if !exists("g:rmd_syn_langs")
+  let g:rmd_syn_langs = ["r"]
 else
-  syntax match rmdChunkDelim "^[ \t]*```{r.*}$" contained
+  let s:hasr = 0
+  for s:lng in g:rmd_syn_langs
+    if s:lng == "r"
+      let s:hasr = 1
+    endif
+  endfor
+  if s:hasr == 0
+    let g:rmd_syn_langs += ["r"]
+  endif
 endif
-syntax match rmdChunkDelim "^[ \t]*```$" contained
-syntax region rmdChunk start="^[ \t]*``` *{r.*}$" end="^[ \t]*```$" contains=@R,rmdChunkDelim keepend fold
+
+for s:lng in g:rmd_syn_langs
+  exe 'syntax include @' . toupper(s:lng) . ' syntax/'. s:lng . '.vim'
+  if exists("b:current_syntax")
+    unlet b:current_syntax
+  endif
+  exe 'syntax region rmd' . toupper(s:lng) . 'Chunk start="^[ \t]*``` *{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\).*}$" end="^[ \t]*```$" contains=@' . toupper(s:lng) . ',rmd' . toupper(s:lng) . 'ChunkDelim keepend fold'
+
+  if exists("g:rmd_syn_hl_chunk") && s:lng == "r"
+    " highlight R code inside chunk header
+    syntax match rmdRChunkDelim "^[ \t]*```{r" contained
+    syntax match rmdRChunkDelim "}$" contained
+  else
+    exe 'syntax match rmd' . toupper(s:lng) . 'ChunkDelim "^[ \t]*```{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\).*}$" contained'
+  endif
+  exe 'syntax match rmd' . toupper(s:lng) . 'ChunkDelim "^[ \t]*```$" contained'
+endfor
+
 
 " also match and syntax highlight in-line R code
-syntax match rmdEndInline "`" contained
-syntax match rmdBeginInline "`r " contained
-syntax region rmdrInline start="`r "  end="`" contains=@R,rmdBeginInline,rmdEndInline keepend
+syntax region rmdrInline matchgroup=rmdInlineDelim start="`r "  end="`" contains=@R containedin=pandocLaTeXRegion,yamlFlowString keepend
+" I was not able to highlight rmdrInline inside a pandocLaTeXCommand, although
+" highlighting works within pandocLaTeXRegion and yamlFlowString. 
+syntax cluster texMathZoneGroup add=rmdrInline
 
 " match slidify special marker
 syntax match rmdSlidifySpecial "\*\*\*"
@@ -56,8 +91,6 @@
   if exists("b:current_syntax")
     unlet b:current_syntax
   endif
-  " Extend cluster
-  syn cluster texMathZoneGroup add=rmdrInline
   " Inline
   syntax match rmdLaTeXInlDelim "\$"
   syntax match rmdLaTeXInlDelim "\\\$"
@@ -65,19 +98,24 @@
   " Region
   syntax match rmdLaTeXRegDelim "\$\$" contained
   syntax match rmdLaTeXRegDelim "\$\$latex$" contained
-  syntax region rmdLaTeXRegion start="^\$\$" skip="\\\$" end="\$\$$" contains=@LaTeX,rmdLaTeXSt,rmdLaTeXRegDelim keepend
-  syntax region rmdLaTeXRegion2 start="^\\\[" end="\\\]" contains=@LaTeX,rmdLaTeXSt,rmdLaTeXRegDelim keepend
+  syntax match rmdLaTeXSt "\\[a-zA-Z]\+"
+  syntax region rmdLaTeXRegion start="^\$\$" skip="\\\$" end="\$\$$" contains=@LaTeX,rmdLaTeXRegDelim keepend
+  syntax region rmdLaTeXRegion2 start="^\\\[" end="\\\]" contains=@LaTeX,rmdLaTeXRegDelim keepend
+  hi def link rmdBlockQuote Comment
   hi def link rmdLaTeXSt Statement
   hi def link rmdLaTeXInlDelim Special
   hi def link rmdLaTeXRegDelim Special
 endif
 
-syn sync match rmdSyncChunk grouphere rmdChunk "^[ \t]*``` *{r"
+for s:lng in g:rmd_syn_langs
+  exe 'syn sync match rmd' . toupper(s:lng) . 'SyncChunk grouphere rmd' . toupper(s:lng) . 'Chunk /^[ \t]*``` *{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\)/'
+endfor
 
-hi def link rmdChunkDelim Special
-hi def link rmdBeginInline Special
-hi def link rmdEndInline Special
-hi def link rmdBlockQuote Comment
+hi def link rmdYamlBlockDelim Delim
+for s:lng in g:rmd_syn_langs
+  exe 'hi def link rmd' . toupper(s:lng) . 'ChunkDelim Special'
+endfor
+hi def link rmdInlineDelim Special
 hi def link rmdSlidifySpecial Special
 
 let b:current_syntax = "rmd"