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
}
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:
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
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:
melhor,
Matt