Textmate Javascript 验证语法命令

Textmate Javascript Validate Syntax Command

我在 TextMate 2 上花了很多时间写 PHP 和较少的时间写 Javascript.

我一直发现 Textmate 中的验证语法命令作为保存前的最后快速完整性检查非常有用。我今天想知道是否有办法为 Javascript 做类似的事情,我想我已经在 acorn 中找到了解决方案:

https://github.com/ternjs/acorn

运行 大致如下:

acorn --silent <file-here>; echo $?

Returns 如果有效则为 0,否则为 1。如果不是,它也会 returns 出现语法错误的行的错误:

Unexpected token (50:1)
1

似乎它几乎完美地用于简单的验证语法命令。

但那是我 运行 陷入 igno运行ce 的一堵砖墙的地方。我不确定如何从那里获得 TextMate 中的实际命令并查看 PHP 示例和其他一些示例,部分原因是我几乎没有 Ruby 经验和似乎这就是通常在 TextMate 中编写命令的方式。

任何有更多编写 TextMate 命令经验的人愿意通过它吗?


根据 Graham 的建议和其他帮助,这里有一个有效的命令:

#!/usr/bin/env bash
#Write scope of JS to a temp file
echo "$(</dev/stdin)" > ${TMPDIR}acorn-validation.js;
#Capture output of acorn syntax check (Note that acorn sends the output to STDERR thus the 2>&1)
ACORN_OUTPUT=$( (acorn --silent ${TMPDIR}acorn-validation.js) 2>&1 );

echo 'Running syntax check with acorn...';

if [[ "" == $ACORN_OUTPUT ]]; then
    echo 'No syntax errors detected';
fi

if [[ "" != $ACORN_OUTPUT ]]; then
    #Find the line/column value
    LINE=$(echo $ACORN_OUTPUT | grep -oE '([0-9]+:[0-9]+)';);
    echo '';
    echo 'Syntax error on '${LINE};
    echo ${ACORN_OUTPUT/($LINE)/};
    #Send cursor to the place where the error occured
    LINE=(${LINE//:/ });
    open "txmt://open/?url=file://${TM_FILEPATH}&line=${LINE[0]}&column=${LINE[1]}";
fi

确保输入设置为范围,输出设置为在工具提示中显示。

全局安装 Acorn:

npm install -g acorn

找出 acorn 的安装位置:

which acorn

我说的(因为我用的是nvm):

~/.nvm/versions/node/v6.2.2/bin/acorn

bin 文件夹添加到您的 TextMate 路径,使用冒号分隔:

所以我的路径是:

$PATH:/opt/local/bin:/usr/local/bin:/usr/texbin:/usr/local/bin:$HOME/.nvm/versions/node/v6.2.2/bin:$HOME/.rvm/rubies/ruby-2.3.3/bin

现在打开包编辑器:

创建一个包,或打开一个现有的,然后按cmd+n创建一个新文件,select "command" 来自下拉列表。

粘贴到命令中,cmd+s保存。

更新:此命令已由 (OP) Jamie Poitra 从概念证明变为功能性,因此请检查他的脚本的问题。

#!/usr/bin/env bash
acorn ${TM_FILE}

一切就绪。