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}
一切就绪。
我在 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}
一切就绪。