Eclipse Javascript 格式化程序 (ctrl-shift-f)
Posted
技术标签:
【中文标题】Eclipse Javascript 格式化程序 (ctrl-shift-f)【英文标题】:Eclipse Javascript formatter (ctrl-shift-f) 【发布时间】:2012-10-13 17:12:35 【问题描述】:我不喜欢问这个问题,但老实说,很长时间以来我一直在寻找解决这个问题的方法。
这是一个简单的问题。我已经使用 NetBeans 很长时间了,但最近出于一些我不会深入讨论的原因切换到了 Eclipse。无论如何,我发现 javascript 源格式的行为非常奇怪。
这是我自己格式化的一段 javascript 代码示例:
function buildDatabase ()
db.transaction(function (tx)
tx.executeSql('DROP TABLE IF EXISTS calendar');
tx.executeSql('CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)');
, function (err)
document.querySelector('#debugLog').innerhtml += '<p><code>' + err.message + '</code></p>';
);
非常简单的东西。现在,如果我按 Ctrl+Shift+F 来格式化它(因为坦率地说,这个功能可以节省大量时间),因为我不能不明白它现在看起来像这样:
function buildDatabase()
db
.transaction(
function(tx)
tx.executeSql('DROP TABLE IF EXISTS calendar');
tx
.executeSql('CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)');
,
function(err)
document.querySelector('#debugLog').innerHTML += '<p><code>'
+ err.message + '</code></p>';
);
为什么要将 .transaction 移到新行?它没有接近 80 的线宽。看起来真的很乱。第二个 .executeSql 也是如此,但仍然无法正确包装。这很奇怪。
现在我当然知道 Window > Preferences > JavaScript > Code Style 但无论我在这里做什么都可以解决这个问题。我希望有人对 Eclipse 有更多的经验来知道出了什么问题。
我已安装 android 开发工具和 PDT。但是,此行为预先存在这些插件的安装。
任何帮助将不胜感激,谢谢。
【问题讨论】:
当前的解决方法是使用来自aptana.com/downloads/start 的 Aptana Eclipse 插件。但是我保持开放状态是因为我想知道是否可以简单地从 Web 开发工具中修复内置的 JavaScript 格式化程序。 【参考方案1】:问题可以通过访问解决
Preferences > JavaScript > Code Style > Formatter
继续:
-
创建一个新的配置文件(因为您无法编辑内置的配置文件),如果您还没有,请点击
Edit...
。
打开Line Wrapping
标签。
在Maximum line width
字段中,输入9999。
点击Apply
和Ok
。
对于超过 9999 个字符的代码行,问题再次出现,但我可以忍受。
【讨论】:
这行得通!但是,这并没有解决所有“损坏的格式”日食在此之前所做的一切.. 这是最好的答案,应该被接受。【参考方案2】:根据我的经验,导致此问题的原因是长而牢不可破的线路。很烦人。尝试将长字符串常量(如“'CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)'”)放入一个单独的变量中,或者如果它真的让你烦恼,你可以把它分开并与 + 连接。
我试过了:
function buildDatabase()
var sql1 = 'CREATE TABLE IF NOT EXISTS calendar(id UNIQUE, summary, description, location, startdate, enddate)';
db.transaction(function(tx)
tx.executeSql('DROP TABLE IF EXISTS calendar');
tx.executeSql(sql1);
, function(err)
document.querySelector('#debugLog').innerHTML += '<p><code>'
+ err.message + '</code></p>';
);
【讨论】:
自从我考虑这个特殊问题以来已经有一段时间了,但这是我结合使用的一种技术,将最大行大小设置为大约 200 左右。这可以防止格式化程序做出 (IMO) 糟糕的格式化决定,但我有时会遇到很长的行。 无需修改代码。 See my answer.【参考方案3】:首选项 > JavaScript > 代码样式 > 格式化程序 > 换行(选项卡)
取消选中 >>更喜欢包装外部表达式(将嵌套表达式保持在一行)
【讨论】:
【参考方案4】:我遇到了同样的问题。我所做的是安装 Aptana Studio Plugin 并开始使用它附带的 JavaScript 编辑器。它比 WTP 自带的要好很多。
【讨论】:
【参考方案5】:我也发现了这一点,这也是我在很大程度上回到 NetBeans 的主要原因之一。
我没有解决方案,但我可以给你一些对我有用的一般提示,至少在一定程度上。
-
而不是像这样的括号:);试着把每一个都放在一个新的行上。
而不是像这样解析参数:
日历(ID UNIQUE,摘要,描述,位置,开始日期,结束日期)
可以试试
calendar(id
UNIQUE,
summary,
description,
location,
startdate,
enddate)
3. 最后,您可以尝试在连接字符串时将 + 换行。
就像我说的,我知道这并不能解决您的问题,但我认为至少它可能会对您有所帮助,直到出现更好的解决方案。
祝你好运。
【讨论】:
您的建议 nr 2 没有意义 - 您两次陈述同一件事。 抱歉,我已经在脑海中格式化了这些东西,但显然我的电脑不够智能,无法理解我想要的。以上是关于Eclipse Javascript 格式化程序 (ctrl-shift-f)的主要内容,如果未能解决你的问题,请参考以下文章