我有一个类似于以下的 JavaScript 行:
var a = (b / 2) + (c / 2);
在 Dreamweaver 中,它将此段突出显示为注释,并按如下方式处理:
var a = (b /* 2 ) + (c */ 2);
这是不正确的语法突出显示并且非常烦人。我在哪里可以找到语法高亮定义以及如何修改它们来纠正这个问题?
我有一个类似于以下的 JavaScript 行:
var a = (b / 2) + (c / 2);
在 Dreamweaver 中,它将此段突出显示为注释,并按如下方式处理:
var a = (b /* 2 ) + (c */ 2);
这是不正确的语法突出显示并且非常烦人。我在哪里可以找到语法高亮定义以及如何修改它们来纠正这个问题?
您可以自己删除/修改正则表达式定义,方法是在 Dreamweaver 的配置路径中找到 CodeColoring.xml。对于 Windows 7 中的 CS6,默认值为:
C:\Program Files (x86)\Adobe\Adobe Dreamweaver CS6\configuration\
然后,您需要找到 JavaScript 方案:
<scheme MMString:name="JavaScript/scheme/name" id="JavaScript" ...>
在其中,您会找到正则表达式定义:
<regexp name="RegExp" id="CodeColor_JavascriptRegexp" delimiter="/" escape="\\">
<searchPattern><![CDATA[/\e+\\/]]></searchPattern>
</regexp>
这可能可以细化,但我在大多数情况下不使用正则表达式,所以我只是删除了这一部分。重启 DW,瞧。
如果您想细化定义,StackOverflow 似乎将其正则表达式突出显示:
var regex = /a+b/;
var number = (window.innerWidth / window.innerHeight) / 2;
这篇文章解释了如何做到这一点:
修改 Dreamweaver 的语法高亮
http://realworldz.wordpress.com/2007/10/04/modifying-dreamweavers-syntax-highlighting/
它提供了一个示例,说明如何new
为 VBScript 的关键字添加语法高亮:
C:\Documents and Settings\<YOUR USERNAME>\Application Data\Macromedia\Dreamweaver 8\Configuration\CodeColoring
<keyword>New</keyword>
我到处寻找,我同意上一个问题的答案:Dreamweaver CS5 代码提示
对语法高亮没有太多控制。您可以使用 Robert's answer here 描述的方法添加更多保留字等。但编辑该文件不适用于更改 Dreamweaver 处理常量和运算符突出显示的方式。
这是一个合理的方法来改变你编写代码的方式,这样你的语法仍然会在这样的例子中突出显示。
<script>
var a =
(b/2) //Because the forward slashes are not on the same line,
+(c/2); //Dreamweaver will not stop highlighting the numbers
//and operators
document.write(a);
</script>
注意:在这个特定示例中,您的代码也可以简化为var a = (b+c)/2;
由于字符/([{;,=!|&~^<>+-*%?:}
后面不能有除号,这就是我想出的:
<searchPattern><![CDATA[/\s+/\e+\\/]]></searchPattern>
(这个必须至少有一个空格字符以避免与行尾注释冲突)
<searchPattern><![CDATA[(\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[[\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[{\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[;\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[,\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[=\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[!\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[|\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[&\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[~\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[^\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[<\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[>\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[+\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[-\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[*\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[%\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[?\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[:\s*/\e+\\/]]></searchPattern>
<searchPattern><![CDATA[}\s*/\e+\\/]]></searchPattern>
对于类似的情况if (x) /foo/.exec('bar')
,只需将 RegExp 放在括号中即可正确格式化。唯一的其他不良影响是前面的字符将被格式化为常规文本(不是粗体或彩色)。