Textmate Javascript验证语法命令

时间:2017-08-15 22:57:54

标签: javascript textmate textmate2

我花了很多时间在编写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

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

1 个答案:

答案 0 :(得分:4)

全球安装Acorn:

npm install -g acorn

找出acorn的安装位置:

which acorn

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

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

bin文件夹添加到TextMate路径,使用冒号描述:

TextMate's Settings - Variables tab with PATH updated

所以我的路径是:

$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}

全部设定。