Ace: Existe uma maneira de obter todos os erros / avisos?

Criado em 23 jun. 2011  ·  5Comentários  ·  Fonte: ajaxorg/ace

Eu realmente gosto do recurso que exibe os ícones de erro / aviso na área de buffer à esquerda da área de texto. No entanto, gostaria de obter uma coleção de todos os erros / avisos para que eu possa exibi-los para o usuário em uma lista. Também gostaria que esta coleção contivesse o número da linha / coluna para que eu pudesse definir a posição do cursor para cada questão.

Eu gostaria de algo como:

var Erros = editor.getSession (). getErrors ();
var (var i = 0; i <Errors.length; i ++)
{
var Error = Erros [i];
// Error.LineNumber
// Error.ColumnNumber
// Descrição de erro
}

Comentários muito úteis

Criei um plugin para esse fim no Cloud9, se chama acebugs e existe aqui:

https://github.com/ajaxorg/cloud9/blob/devel/client/ext/acebugs/acebugs.js

Não sabia se você estava pensando em estender o cloud9 ou se era para um projeto pessoal, mas gostaria de mencionar isso para que você não duplique seus esforços. Isto é o que parece:

AceBugs in Cloud9

melhor,

Matt

Todos 5 comentários

Os dados são chamados de annotations e você pode recuperá-los com esta chamada:

editor.getSession (). getAnnotations ()

Os dados são estruturados da seguinte forma:

/**
 * Error:
 *  {
 *    row: 12,
 *    column: 2, //can be undefined
 *    text: "Missing argument",
 *    type: "error" // or "warning" or "info"
 *  }
 */

Obrigado pela resposta rápida! Você poderia me fornecer um exemplo de como acessar o objeto que é retornado para getAnnotations? Obrigado!

O objeto retornado é simplesmente um hash de hashes. Se parece com isso:

this.$annotations = {};

Assim, o hash $ annotations pode ter a seguinte aparência:

{
    {
        row: 12,
        column: 2, //can be undefined
        text: "Missing argument",
        type: "error" // or "warning" or "info"
    },
    {
        row: 32,
        text: "Missing semicolon",
        type: "warning"
    },
    // etc
}

Você pode iterar a resposta da seguinte maneira:

var annotations = editor.getSession().getAnnotations();

for (var anno in annotations) {
     // anno.row, anno.column, anno.text, anno.type
}

Criei um plugin para esse fim no Cloud9, se chama acebugs e existe aqui:

https://github.com/ajaxorg/cloud9/blob/devel/client/ext/acebugs/acebugs.js

Não sabia se você estava pensando em estender o cloud9 ou se era para um projeto pessoal, mas gostaria de mencionar isso para que você não duplique seus esforços. Isto é o que parece:

AceBugs in Cloud9

melhor,

Matt

Matt,

Obrigado por fornecer as amostras!

Eu brinquei com o Cloud9 um pouco, mas ainda estou procurando mais um projeto pessoal. O problema correto é que meu outro programador estava trabalhando em um editor de código há meses e eu imaginei que seria mais fácil usar algo assim em vez de reinventar a roda.

-Mike

Esta página foi útil?
0 / 5 - 0 avaliações