--- a/trunk/doc/syntax.txt
+++ b/trunk/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.3.  最近更新: 2011年5月
+*syntax.txt*	For Vim version 7.3.  最近更新: 2013年1月
 
 
 		  VIM 参考手册	  by Bram Moolenaar
@@ -187,7 +187,8 @@
 
 如果你不喜欢发布的语法文件版本,或者你下载了新版本。可以采用上述的
 |mysyntaxfile| 相同的步骤。只要确保你写的语法文件在 'runtimepath' 较早的位置就
-可以了。Vim 只会载入第一个找到的语法文件。
+可以了。Vim 只会载入第一个找到的语法文件,假定它是用来设置 b:current_syntax 的
+那个文件。
 
 
 命 名 惯 例			    *group-name* *{group-name}* *E669* *W18*
@@ -669,10 +670,12 @@
 c_ansi_typedefs		 ... 但使用 ANSI 标准类型
 c_ansi_constants	 ... 但使用 ANSI 标准常数
 c_no_utf		不高亮字符串里的 \u 和 \U
-c_syntax_for_h		*.h 文件使用 C 语法,而不是 C++ 的
+c_syntax_for_h		*.h 文件使用 C 语法,而不是 C++ 的,用 objc 语法,而不
+			是 objcpp 的
 c_no_if0		不把 "#if 0" 块高亮为注释
 c_no_cformat		不高亮字符串里的 %-格式
 c_no_c99		不高亮 C99 标准的项目
+c_no_c11		不高亮 C11 标准的项目
 
 如果 'foldmethod' 设为 "syntax",那么 /* */ 注释和 { } 块成为折叠。如果你不想
 让注释成为折叠: >
@@ -768,13 +771,13 @@
 
 要检测一个文件是 csh 还是 tcsh 异常困难。有的系统把 /bin/csh 符号链接到
 /bin/tcsh,使得区别 csh 和 tcsh 几乎不可能。如果 VIM 猜错,你可以自己设置
-"filetype_csh" 变量。要使用 csh: >
-
-	:let filetype_csh = "csh"
+"filetype_csh" 变量。要使用 csh:  *g:filetype_csh*
+>
+	:let g:filetype_csh = "csh"
 
 要使用 tcsh: >
 
-	:let filetype_csh = "tcsh"
+	:let g:filetype_csh = "tcsh"
 
 带 tcsh 扩展名的脚本或者 tcsh 的标准文件名 (.tcshrc、tcsh.tcshrc、tcsh.login)
 会使用文件类型 tcsh。其它的 tcsh/csh 脚本也会被识别为 tcsh,_除非_存在
@@ -873,7 +876,7 @@
 或 >
 	// vim:syntax=c.doxygen
 
-对于 C、C++、C# 和 idl 文件,也可以设置全局或局部于缓冲区变量
+对于 C、C++、C#、IDL 和 PHP 文件,也可以设置全局或局部于缓冲区变量
 load_doxygen_syntax 来自动完成这个操作。在 .vimrc 里加上 >
 	:let g:load_doxygen_syntax=1
 
@@ -1017,12 +1020,11 @@
 FORTRAN					*fortran.vim* *ft-fortran-syntax*
 
 缺省高亮方式和方言 ~
-缺省使用适合 f95 (Fortran 95) 的高亮方式。这样的选择应该适用于绝大多数的用户,
-因为 Fortran 95 是 Fortran 90 的超集,也差不多是 Fortran 77 的超集。已经引入了
-Fortran 2003 和 Fortran 2008 的支持,它们自动在缺省 (f95) 高亮模式中可用。
+缺省使用适合 Fortran 2008 的高亮方式。这样的选择应该适用于绝大多数的用户,因为
+Fortran 2008 几乎是以前所有版本的超集 (Fortran 2003、95、90 和 77)。
 
 Fortran 源代码形式 ~
-Fortran 9x 可以使用固定宽度的源代码,也可以使用自由形式。注意如果形式设置错
+Fortran 代码可以使用固定宽度的源代码,也可以使用自由形式。注意如果形式设置错
 误,语法高亮也不会正确。
 
 创建新的 Fortran 文件时,语法脚本假定使用的是固定宽度的源代码。如果你总是使用
@@ -1089,44 +1091,43 @@
 语句标签,还有 do、if、select、或 forall 构造结尾的构造名。
 
 非缺省的 Fortran 方言 ~
-本语法脚本支持五种 Fortran 方言: f95、f90、f77、Lahey 子集 elf90 和 Imagine1
-子集 F。
-
-如果你使用扩展的 f77,包括常见的能被大多数 f77 编译器,包括 g77 (GNU Fortran)
-所支持的构造,如 do/enddo 循环,do/while 循环和自由形式的源代码,那么也许缺省
-的高亮设置就够用了。如果你使用严格的不带扩展的 f77,甚至没有自由形式的源代码或
-者 MIL STD 1753 扩展等特性,那么设置 f77 方言的好处就包括,诸如 SUM 这样的名字
-可以作为变量名识别,而不会作为高亮为 f9x 内建的函数;另外废弃的构造,比如
-ASSIGN 语句,也不会被高亮为 todo 项目;还有,总是假定使用固定宽度的源程序。
-
-如果你使用 elf90 或 F,设置合适的方言的优点包括,这些方言排除的 f90 特性会被高
-亮为 todo 项目;还有,它们总是假定使用固定宽度的源程序。
-
-可以通过设置变量 forran_dialect 来选择方言。可以接受的 fortran_dialect 的值是
-大小写敏感的,而且必须是 "f95"、"f90"、"f77"、"elf" 或 "F" 之一。不合法的
-fortran_dialect 的值被忽略。
-
-如果你的 Fortran 文件使用相同的方言,在你的 .vimrc 文件里 syntax 命令之前设置
-fortran_dialect。如果源代码的格式取决于文件扩展名,那么最方便的方法是在
-ftplugin 文件里设置,见 |ftplugin|。例如,如果你使用 .f90 扩展名的所有 Fortran
-文件都使用 elf 子集,那么在你的 ftplugin 文件里应该包含代码 >
+本语法脚本支持两种 Fortran 方言: f08 和 F。缺省高亮方式 (f08) 基本令人满意。一
+些 2008 标准宣告过时或删除的传统结构被高亮为 todo 项目。
+
+如果你使用 F,设置合适的方言的优点包括,F 排除的传统特性会被高亮为 todo 项目;
+还有,总是假定使用自由形式的源程序。
+
+有几个方式选择方言。如果你所有的 Fortran 文件使用相同的方言,在你的 .vimrc 文
+件里 syntax 命令之前设置 fortran_dialect。可以接受的 fortran_dialect 的值是大
+小写敏感的,而且必须是 "f08" 或 "F"。不合法的 fortran_dialect 的值被忽略。
+
+如果源代码的格式取决于文件扩展名,那么最方便的方法是在 ftplugin 文件里设置一个
+缓冲区局部变量。关于 ftplugin 文件的详情,见 |ftplugin|。例如,如果你使用 .f90
+扩展名的所有 Fortran 文件都使用 F 子集,那么在你的 ftplugin 文件里应该包含代码
+>
     let s:extfname = expand("%:e")
     if s:extfname ==? "f90"
-	let fortran_dialect="elf"
+	let b:fortran_dialect="F"
     else
-	unlet! fortran_dialect
+	unlet! b:fortran_dialect
     endif
 <
 注意 只有在你的 .vimrc 文件的 "syntax on" 命令前加上了
 "filetype plugin indent on" 命令,才能使这段代码工作。
 
 如果文件扩展名还不能唯一确定方言,那么你需要更精细的控制。可以为每个文件定制方
-言。方法是在文件的头三行内加上指令 "fortran_dialect=xx" (其中 xx=f77 或 elf 或
-F 或 f90 或 f95)。例如,你较老的 .f 文件可能以扩展 f77 方言编写,但较新的那些
-可能使用 F,那么你需要在后者每个文件的头三行内加上以下形式的 Fortran 注释,以
-便标识 >
+言。方法是在文件的头三行内加上指令 "fortran_dialect=xx" (其中 xx=F 或 f08)。例
+如,你较老的 .f 文件可能用传统代码编写,但较新的那些可能使用 F,那么你需要在后
+者每个文件的头三行内加上以下形式的 Fortran 注释,以便标识 >
   ! fortran_dialect=F
-如果两个指令都存在,F 覆盖 elf。
+
+使用较早的语法版本的用户,可能会设置 fortran_dialet 为现已废弃的值 "f77"、
+"f90"、"f95" 或 "elf"。这些设置都会被悄悄地当作 "f08" 处理。"elf" 用户可能想
+试试 "F" 也许会更好。
+
+syntax/fortran.vim 脚本包含内嵌注释,说明如何为某些行加上注释和/或去掉注释来
+(a) 识别一些非标准厂商自定的内在过程 (intrinsic),(b) 使某些 2008 标准删除或废
+止的功能不采用 todo 项目高亮。
 
 限制 ~
 括号检查不能发现过少的闭括号。也不能识别 Hollerith 字符串。有些关键字可能高亮
@@ -1379,10 +1380,6 @@
 它们分别用来高亮语句本身,调试字符串里的特殊字符、字符串、布尔常量和类型
 (this,super)。我本人喜欢给语句设置别的背景。
 
-为了帮助你编写在 Java 和 C++ 之间容易移植的代码,可以在 Java 程序里把所有的
-C++ 关键字标为错误。为此,在 .vimrc 文件里定义如下变量: >
-	:let java_allow_cpp_keywords = 0
-
 Javadoc 是一个程序,它接受特殊的 Java 程序文件里的注释,并创建 HTML 页面。标准
 的配置会以类似于 HTML 文件 (见 |html.vim|) 方式高亮该 HTML 代码,你甚至可以在
 代码里加入 Javascript 和 CSS (见下)。但有四处不同:
@@ -1505,17 +1502,9 @@
 
 LUA						*lua.vim* *ft-lua-syntax*
 
-该语法文件可用于 Lua 4.0、Lua 5.0 或 Lua 5.1 (缺省)。用全局变量 lua_version 和
-lua_subversion 可以选择其中一个版本。例如,如果要激活 Lua 4.0 语法高亮,用: >
-
-	:let lua_version = 4
-
-如果你使用 Lua 5.0,用: >
-
-	:let lua_version = 5
-	:let lua_subversion = 0
-
-要恢复 Lua 5.1 的高亮: >
+Lua 语法文件可用于 Lua 4.0、5.0、5.1 或 5.2 (5.2 是缺省)。用全局变量
+lua_version 和 lua_subversion 可以选择其中一个版本。例如,如果要激活 Lua 5.1
+高亮,设置变量如下: >
 
 	:let lua_version = 5
 	:let lua_subversion = 1
@@ -2060,6 +2049,11 @@
 这使得语法同步在第一个显示行之前的 50 行开始。缺省值为 10。使用较大的值的缺点
 是重画会变慢。
 
+Vim 试图自己猜测 ".r" 文件的真实类型。如果无法检测 (根据注释行内容),假定为
+"r"。要使缺省为 rexx,给 .vimrc 文件加上:  *g:filetype_r*
+>
+	:let g:filetype_r = "r"
+
 
 RUBY						*ruby.vim* *ft-ruby-syntax*
 
@@ -2256,8 +2250,38 @@
 缺省值是 sh_minlines 的两倍。设置为较小的值可以提高显示的速度。缺点是高亮错误
 出现的可能性也较大。
 
-
-SPEEDUP (AspenTech plant simulator)		*spup.vim* *ft-spup-syntax*
+						*g:sh_isk* *g:sh_noisk*
+shell 语言看来允许 "." 成为单词、命令等的一部分,所以 sh.vim 中 isk 的定义应包
+含它。从 syntax/sh.vim v116 版开始,syntax.vim 缺省在 |'iskeyword'| 中加入了
+"."。可以控制此一行为: >
+	let g:sh_isk  = '..任何你想加入 iskeyword 的字符'
+	let g:sh_noisk= 1  " 反之,如果此变量存在,_不_改变 isk
+<
+						*sh-embed*  *sh-awk*
+ Sh: 内 嵌 语 言~
+
+你也许想要在 sh 里内嵌其他语言。多谢 Lorance Stinson 提供了一个 awk 的例子。
+把下面内容写入 $HOME/.vim/after/syntax/sh/awkembed.vim: >
+
+    " AWK Embedding: {{{1
+    " ==============
+    " Shamelessly ripped from aspperl.vim by Aaron Hope.
+    if exists("b:current_syntax")
+      unlet b:current_syntax
+    endif
+    syn include @AWKScript syntax/awk.vim
+    syn region AWKScriptCode matchgroup=AWKCommand start=+[=\\]\@<!'+ skip=+\\'+ end=+'+ contains=@AWKScript contained
+    syn region AWKScriptEmbedded matchgroup=AWKCommand start=+\<awk\>+ skip=+\\$+ end=+[=\\]\@<!'+me=e-1 contains=@shIdList,@shExprList2 nextgroup=AWKScriptCode
+    syn cluster shCommandSubList add=AWKScriptEmbedded
+    hi def link AWKCommand Type
+<
+此代码会接受如下单引号括起的 awk 代码: >
+	awk '...awk code here...'
+使之采用 awk 高亮语法。显然此方法可以类似地扩展到其他语言上。
+
+
+SPEEDUP						*spup.vim* *ft-spup-syntax*
+(AspenTech plant simulator)
 
 Speedup 语法文件有如下选项:
 
@@ -2325,6 +2349,8 @@
 放到你的 <.vimrc> 里,并 :set fdm=syntax。我建议把后者放到你的 LaTeX 文件末尾
 的模式行里来执行: >
 	% vim: fdm=syntax
+如果系统过慢,可以看看 >
+ 	http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text
 <
 								*tex-nospell*
  Tex: 不想检查注释里的拼写? ~
@@ -2332,7 +2358,13 @@
 有些家伙喜欢在注释里写源代码,所以希望在 LaTeX 文件的注释里关闭拼写检查。为
 此,在 <.vimrc> 里放上: >
       let g:tex_comment_nospell= 1
-<
+注释行 >
+	% nospell{
+	...
+	% nospell}
+可用来关闭两行之间的拼写检查。这些注释行拼写控制已知是脆弱的 (fragile);例如,
+不能在 nospell 块间包含任何的段落命令 (\part、\chapter、\section、\paragraph
+等),也不可交错使用环境 (environment) (例如 math) 和 nospell 块。
 								*tex-verb*
  Tex: 需要在 Verbatim 区中使用拼写检查?~
 
@@ -2359,13 +2391,16 @@
 (特别是后者)。如果你的机器很快,可以考虑增大它们的值。它们主要影响同步 (确切地
 说也就是: 如果有的话,哪个语法组包含屏幕顶部的文本?)。
 
+另外一个高亮缓慢的原因是基于语法的折叠;解决办法见 |tex-folding|。
+
 					    *tex-morecommands* *tex-package*
  Tex: 想高亮更多的命令? ~
 
 LaTeX 是可编程的语言,因而有数以千计的包,包含各种专门的 LaTeX 命令、语法和字
 体。如果你用了某个包,当然希望发布的 syntax/tex.vim 能支持它。但这显然是不实际
 的。请考虑使用 |mysyntaxfile-add| 介绍的技术来扩展或者修改 syntax/tex.vim 提供
-的高亮处理。
+的高亮处理。任何你编写的扩展一般应放在 $HOME/after/syntax/tex/[pkgname].vim,
+并请考虑上传到 http://vim.sf.net/。
 
 								*tex-error*
  Tex: 过多的 Error 高亮?~
@@ -2418,6 +2453,7 @@
 "admgs",隐藏以下对应的字符集合: >
 
 	a = 重音/连写体 (accents/ligatures)
+	b = 粗体和斜体
 	d = 定界符
 	m = 数学符号
 	g = 希腊字母
@@ -2425,6 +2461,16 @@
 <
 省略其中一个或几个字符关闭对应的使用隐藏字符进行替代的操作。
 
+						*g:tex_isk*
+ Tex: 控制关键字的组成~
+
+(La)Tex 关键字通常只使用字符集 0-9,a-z,A-Z,192-255,但 "_" 是唯一可能出问题的
+字符。所以缺省,syntax/tex.vim 覆盖通用的 |'iskeyword'| 设置 (通过
+|:setlocal|) 来指定 LaTex 适用的字符。
+
+不过,可以通过变量 g:tex_isk 来修改 iskeyword 的覆盖。在 .vimrc 中你可以将它设
+为任何你想要的值,它会取代缺省的设置。
+ 
 
 TF						*tf.vim* *ft-tf-syntax*
 
@@ -3752,7 +3798,9 @@
 IncSearch	'incsearch' 高亮;也用于被 ":s///c" 替换的文本
 							*hl-LineNr*
 LineNr		":number" 和 ":#" 命令与置位 'number' 或 'relativenumber' 选项
-		时的行号,
+		时的行号。
+							*hl-CursorLineNr*
+CursorLineNr	和 LineNr 类似,置位 'cursorline' 时用于光标行。
 							*hl-MatchParen*
 MatchParen	如果光标所在或刚刚在它之前的字符是配对的括号一部分的话,它和它
 		的配对。|pi_paren.txt|