Como faço para limpar o código (auto-indent) no Komodo Edit 5?

2

Eu tenho um arquivo Rails html.erb no Komodo Edit 5 e o recuo foi um pouco selvagem.

Existe um plugin ou função que recua automaticamente o meu código para facilitar a leitura?

    
por conspirisi 14.10.2009 / 11:50

4 respostas

2

Eu uso esta versão ligeiramente editada de outro código publicado. Variações estão flutuando nos fóruns do Komodo há algum tempo. Eu atualizei a macro para o Komodo Edit 7.0 e 6.X, geralmente funciona bem o suficiente. Alterei algumas das opções arrumadas e personalizadas, adicionei o suporte a XML e alterei o alerta de sintaxe indefinido. Eu também tive que criar um kludge muito feio para fazer o astyle funcionar, já que o astyle não aceita stdin. Neste ponto, toda a macro precisa ser completamente refeita, pois suas limitações se tornaram óbvias.

Quanto ao Suporte Ruby, confira rbeautify , Finalmente integrei o suporte ao Ruby, você deve ter o rbeautify instalado no seu PATH. Devo avisá-lo, não tenho o Ruby instalado, por isso não posso testar completamente. Eu também devo mencionar que meu JS é terrível, mas eu verifiquei o que pude e a macro funcionou. Isso deve finalmente responder a essa pergunta, talvez seja hora de aceitar minha resposta.

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;
}
    
por 07.09.2011 / 18:19
1

Não diretamente. No entanto, o sistema " Executar comandos " (e possivelmente o uso de macros) pode ser usado para Ajude a executar um script externo que massageará o conteúdo do buffer atual. Então, se você tem um script que pode fazer uma boa formatação .html.erb, então você deve ser capaz de integrar isso.

Além de: o Komodo IDE (o parente comercial do Komodo Edit) tem uma estrutura para formatadores de código de integração no Komodo. Ele vem com um formatador "HTML Tidy" que pode fazer um bom trabalho de formatação .html.erb.

    
por 14.10.2009 / 18:46
1

Para reformatar o código ao seu gosto, tente astyle

Você pode encontrar isso como um pacote, por exemplo ap

    
por 31.03.2012 / 02:43
0

Eu encontrei este script de formatação (macro) e o adaptei para meu uso pessoal com o mais recente Komodo Editar (v6.1.0). Ele funciona bem (supondo que você tenha o HTML Tidy disponível em seu sistema) e eu incluí o código de formatação do JavaScript fornecido por um comentarista, mas acho que ele só funciona com o Komodo IDE. Não é importante para meus propósitos. Talvez alguém aí possa encontrar uma melhoria universal (usando algo como html clean).

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();
}
    
por 21.02.2011 / 17:17