我html.erb
在 Komodo Edit 5 中有一个 Rails 文件,并且缩进有点疯狂。
是否有插件或函数可以自动缩进我的代码以使其更容易阅读?
答案1
我使用这个稍微修改过的其他已发布代码的版本。一段时间以来,各种版本一直在 Komodo 论坛上流传。我已经更新了 Komodo Edit 7.0 和 6.X 的宏,它通常运行良好。我更改了一些 tidy 和 csstidy 选项,添加了 XML 支持,并修改了未定义语法警报。我还必须创建一个非常丑陋的临时解决方案才能使 astyle 正常工作,因为 astyle 不接受标准输入。此时整个宏需要完全重做,因为它的局限性已经变得显而易见。
至于 Ruby 支持,请查看美化,我终于集成了对 Ruby 的支持,您必须在 PATH 中安装 rbeautify。我必须警告您,我没有安装 Ruby,因此无法进行全面测试。我还应该提到我的 JS 很糟糕,但我确实验证了我能验证的内容,并且宏有效。这应该最终回答了这个问题,也许是时候接受我的答案了。
格式语法.js
komodo.assertMacroVersion(3);
if (komodo.view.scintilla) {
komodo.view.scintilla.focus();
} // bug 67103
var koDoc = (komodo.koDoc === undefined ? komodo.document : komodo.koDoc);
var formatter;
var language = koDoc.language;
var cannot_tidy_selection = false;
switch (language) {
case 'C#':
cannot_tidy_selection = true;
formatter = 'astyle --style=ansi --mode=cs --convert-tabs --indent=spaces=4 %F > /dev/null 2>&1; cat %F';
break;
case 'C++':
cannot_tidy_selection = true;
formatter = 'astyle --style=linux --mode=c --convert-tabs --indent=spaces=4 %F > /dev/null 2>&1; cat %F';
break;
case 'CSS':
formatter = 'csstidy - --preserve_css=true --lowercase_s=true --case_properties=true --sort_properties=true --remove_bslash=false --silent=true --template=medium';
break;
case 'HTML':
cannot_tidy_selection = true;
formatter = 'tidy -q -asxhtml -i -b -c -w 120 --show-warnings no --show-errors 0 --tidy-mark no --css-prefix block --drop-proprietary-attributes yes --anchor-as-name no --enclose-text yes';
break;
case 'Java':
cannot_tidy_selection = true;
formatter = 'astyle --style=java --mode=java --convert-tabs --indent=spaces=4 %F > /dev/null 2>&1; cat %F';
break;
case 'Perl':
formatter = 'perltidy';
break;
case 'PHP':
formatter = 'php_beautifier -s4 -l"Pear()"';
break;
case 'Ruby':
formatter = 'rbeautify.rb -';
break;
case 'XSLT':
cannot_tidy_selection = true;
formatter = 'tidy -q -xml -i -w 120 --show-warnings no --show-errors 0 --tidy-mark no';
break;
case 'XML':
cannot_tidy_selection = true;
formatter = 'xmllint --format --recover -';
break;
default:
alert("Syntax Undefined, Add Case to Macro " + language);
return null;
}
// Save Curser Position
var currentPos = komodo.editor.currentPos;
try {
// Save the file, Check Changes with "File -> Show Unsaved Changes"
//komodo.doCommand('cmd_save');
// Group operations in a single undo
komodo.editor.beginUndoAction();
// Select Buffer, pipe it into formatter.
var text_not_selected = cannot_tidy_selection || komodo.editor.selText == "";
if (text_not_selected) {
komodo.doCommand('cmd_selectAll');
}
Run_RunEncodedCommand(window, formatter + " {'insertOutput': True, 'operateOnSelection': True}");
if (text_not_selected) {
komodo.editor.gotoPos(currentPos);
}
// Restore Cursor Position
komodo.editor.gotoPos(currentPos);
// Clean Potential EOL Mismatches
komodo.doCommand('cmd_cleanLineEndings');
}
catch (e) {
alert(e);
}
finally {
// End Undo Action to Avoid Edit Buffer Corruption
// komodo.editor.endUndoAction();
return true;
}
答案2
不是直接的。然而,“运行命令“系统(可能还有宏的使用)可用于帮助运行外部脚本,该脚本将处理当前缓冲区的内容。因此,如果您有一个可以执行良好 .html.erb 格式的脚本,那么您应该能够集成它。
补充:Komodo IDE(Komodo Edit 的商业版本)有一个将代码格式化程序集成到 Komodo 的框架。它附带一个“HTML Tidy”格式化程序,可以很好地完成 .html.erb 格式化。
答案3
要根据你的喜好重新格式化代码,请尝试阿斯泰尔
您可能能够找到它作为一个包,例如 ap
答案4
我找到这个格式化脚本(宏)并使用最新的 Komodo Edit (v6.1.0) 将其改编为个人使用。它运行良好(假设您的系统上有 HTML Tidy),我包含了评论者提供的 JavaScript 格式化代码,但我认为它可能只适用于 Komodo IDE。这对我的目的来说并不重要。也许有人可以找到一种通用的改进方法(使用类似 html tidy 的东西)。
komodo.assertMacroVersion(3);
if (komodo.view) { komodo.view.setFocus(); }
var formatter;
var language = komodo.document.language;
switch (language) {
case 'Perl':
formatter = 'perltidy -i=2 -pt=2 -l=0';
break;
case 'XML':
case 'XUL':
case 'XLST':
formatter = 'tidy -q -xml -i -w 80';
break;
case 'HTML':
formatter = 'tidy -q -asxhtml -i -w 120';
break;
//case 'JavaScript':
// ko.views.manager.currentView.scimoz.selectAll();
// ko.views.manager.currentView.scimoz.replaceSel(js_beautify(ko.views.manager.currentView.scimoz.text, {indent_size: 2}));
// return null;
default:
alert("I don't know how to tidy " + language);
return null;
}
//save current cursor position
var currentPos = komodo.editor.currentPos;
try {
// Save the file. After the operation you can check what changes where made by
// File -> Show Unsaved Changes
komodo.doCommand('cmd_save');
// Group operations into a single undo
komodo.editor.beginUndoAction();
// Select entire buffer & pipe it into formatter.
komodo.doCommand('cmd_selectAll');
Run_RunEncodedCommand(window, formatter + " {'insertOutput': True, 'operateOnSelection': True}");
// Restore cursor. It will be close to the where it started depending on how the text was modified.
komodo.editor.gotoPos(currentPos);
// On windows, when the output of a command is inserted into an edit buffer it has unix line ends.
komodo.doCommand('cmd_cleanLineEndings');
}
catch (e) {
alert(e);
}
finally {
// Must end undo action or may corrupt edit buffer
komodo.editor.endUndoAction();
}