Как очистить (авто-отступ) код в Komodo Edit 5?

11201
conspirisi

У меня есть html.erbфайл Rails в Komodo Edit 5, и отступ стал немного диким.

Есть ли плагин или функция, которая автоматически делает отступ для моего кода, чтобы его было легче читать?

2
Поддержка форматирования кода, фактически встроенная в Komodo * IDE *. Я также использую обычный Komodo Edit и получаю поддержку kludge от макроса. Я обновил макрос с помощью Ruby Support, подумайте о принятии моего ответа. J. M. Becker 12 лет назад 0

4 ответа на вопрос

2
J. M. Becker

Я использую эту слегка отредактированную версию другого размещенного кода. В течение некоторого времени на форумах Komodo ходили разные варианты. Я обновил макрос для Komodo Edit 7.0 и 6.X, он обычно работает достаточно хорошо. Я изменил некоторые параметры tidy и csstidy, добавил поддержку XML и изменил предупреждение о неопределенном синтаксисе. Я также должен был создать очень уродливый ключ, чтобы заставить работать astyle, так как astyle не принимает stdin. На этом этапе весь макрос должен быть полностью переделан, так как его ограничения стали очевидными.

Что касается поддержки Ruby, ознакомьтесь с rbeautify, я наконец-то интегрировал поддержку Ruby, вы должны установить rbeautify в вашем PATH. Я должен предупредить вас, у меня не установлен Ruby, поэтому я не могу полностью протестировать. Я должен также упомянуть, что мой JS ужасен, но я проверил, что смог, и макрос сработал. Это должно наконец ответить на этот вопрос, может быть, пришло время принять мой ответ.

Format_Syntax.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; } 
1
Trent Mick

Не напрямую. Тем не менее, система « Выполнить команды » (и, возможно, использование макросов) может использоваться для запуска внешнего сценария, который будет массировать содержимое текущего буфера. Итак, если у вас есть сценарий, который может выполнять хорошее форматирование .html.erb, то вы сможете интегрировать его.

Кроме того: в Komodo IDE (коммерческий родственник Komodo Edit) есть структура для интеграции средств форматирования кода в Komodo. Он поставляется с форматером «HTML Tidy», который может хорошо выполнять форматирование .html.erb.

1
etep

Чтобы переформатировать код на свой вкус, попробуйте astyle

Вы можете найти это как пакет, например, ap

0
TAOCode

Я нашел этот скрипт форматирования (макрос) и адаптировал его для личного использования с последней версией 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, )); // 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(); } 

Похожие вопросы