我花了很多时间在编写PHP的TextMate 2中编写Javascript。
我总是发现Textmate中的Validate Syntax命令在保存之前作为最后的快速健全检查非常有用。我今天想知道是否有办法为Javascript做类似的事情,我想我已经找到了橡果的解决方案:
https://github.com/ternjs/acorn
沿着这些方向运行:
acorn --silent <file-here>; echo $?
如果有效则返回0,如果不有,则返回1。如果不是,它也会返回发生语法错误的行的错误:
Unexpected token (50:1)
1
似乎它非常适合在简单的验证语法命令中使用。
但那是我遇到无知的砖墙。我不知道如何从那里得到TextMate中的实际命令并查看PHP示例,其他一些人离开了我,因为我几乎没有Ruby经验。 #39; s命令通常用TextMate编写。
任何有更多编写TextMate命令经验的人都需要通过它吗?
根据格雷厄姆的建议和其他帮助,这里有一个工作指令:
#!/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
确保“输入”设置为“范围”,“输出”设置为“在工具提示中显示”。
答案 0 :(得分:4)
全球安装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 创建一个新文件,选择&#34;命令&#34;从下拉列表。
将此粘贴到命令 cmd + s 中进行保存。
更新:此命令已由(OP)Jamie Poitra从概念证明带到功能,因此请检查其脚本的问题。
#!/usr/bin/env bash
acorn ${TM_FILE}
全部设定。