Jam*_*tra 1 javascript textmate textmate2
我在 TextMate 2 中花费了大量时间编写 PHP,并花费少量时间编写 Javascript。
我一直发现 Textmate 中的“验证语法”命令非常有用,可作为保存前的最终快速健全性检查。今天我想知道是否有一种方法可以为 Javascript 做类似的事情,我想我已经在 acorn 中找到了解决方案:
https://github.com/ternjs/acorn
沿着这些思路运行一些东西:
acorn --silent <file-here>; echo $?
Run Code Online (Sandbox Code Playgroud)
如果有效则返回 0,如果无效则返回 1。如果不是,它也会返回一个错误,并显示发生语法错误的行:
Unexpected token (50:1)
1
Run Code Online (Sandbox Code Playgroud)
看起来它几乎非常适合在简单的验证语法命令中使用。
但这就是我遇到无知的砖墙的地方。我不知道如何从那里到 TextMate 中的实际命令,并查看了 PHP 示例和其他一些示例,部分原因是我几乎没有 Ruby 经验,而且命令通常就是这样的用 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
Run Code Online (Sandbox Code Playgroud)
确保输入设置为范围,输出设置为在工具提示中显示。
全局安装 Acorn:
npm install -g acorn
Run Code Online (Sandbox Code Playgroud)
找出acorn
安装位置:
which acorn
Run Code Online (Sandbox Code Playgroud)
我的说(因为我使用nvm):
~/.nvm/versions/node/v6.2.2/bin/acorn
Run Code Online (Sandbox Code Playgroud)
将该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
Run Code Online (Sandbox Code Playgroud)
现在打开包编辑器:
创建捆绑包,或打开现有捆绑包,然后按cmd+n创建新文件,从下拉列表中选择“命令”。
将其粘贴到命令中,cmd+s进行保存。
更新:该命令已由 (OP) Jamie Poitra 从概念验证转变为功能,因此请检查他的脚本的问题。
#!/usr/bin/env bash
acorn ${TM_FILE}
Run Code Online (Sandbox Code Playgroud)
可以了,好了。
归档时间: |
|
查看次数: |
548 次 |
最近记录: |