Ich verwende diese leicht bearbeitete Version von anderem bekanntem Code. In den Komodo-Foren gibt es seit einiger Zeit Variationen. Ich habe das Makro für Komodo Edit 7.0 und 6.X aktualisiert. Es funktioniert normalerweise gut genug. Ich habe einige der Optionen tidy und csstidy geändert, die XML-Unterstützung hinzugefügt und die undefinierte Syntaxwarnung geändert. Ich musste auch einen sehr hässlichen Klumpen kreieren, um Astyle zum Laufen zu bringen, da Astyle kein stdin akzeptiert. An diesem Punkt muss das gesamte Makro komplett erneuert werden, da seine Einschränkungen offensichtlich sind.
Was den Ruby-Support betrifft, sehen Sie sich rbeautify an . Ich habe nun Unterstützung für Ruby integriert. Sie müssen rbeautify in Ihrem PATH installiert haben. Ich muss Sie warnen, ich habe kein Ruby installiert und kann daher nicht vollständig testen. Ich sollte auch erwähnen, dass meine JS schrecklich ist, aber ich habe überprüft, was ich konnte und das Makro funktionierte. Dies sollte endlich diese Frage beantworten, es könnte Zeit sein, meine Antwort zu akzeptieren.
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; }