Acabei de criar uma nova classe Java:
public class TestUndo {
public static void main(String[] args) {
|
}
}
Em seguida, coloque
System.out.println("Hello world");<enter>
na posição em que |
é - e sem cometer erros de digitação ou outros erros, pressionar ctrl-z
remove o seguinte na ordem:
- remove primeiro o
;
- então o conteúdo dos colchetes
"Hello world"
- , em seguida,
()
- , em seguida,
println
- , em seguida,
.
, mas selecionaout
- , em seguida,
System.out
Isso parece bastante lógico, pois é agrupado por grupos de sintaxe e estou de volta ao ponto de partida. Note que tudo isso está no Eclipse 3.7.1; YMMV.
No entanto, se eu fizer um erro de digitação em qualquer ponto ao digitar System.out.println("Hello world");
ou usar qualquer tecla de cursor ou backspace, isso redefinirá o estado de desfazer e, mais tarde, quando pressionar repetidamente ctrl-z
, você retornará a cada erro de digitação - por isso, é possível que o comportamento de desfazer errático seja causado pela movimentação ao digitar.
Existe um erro listado na correspondência de erros do Eclipse que descreve este comportamento "quebrado": link
e um patch foi sugerido; no entanto, ele está marcado como "atribuído", mas nunca foi lançado em nenhuma versão lançada, e isso foi em 2006, então é improvável que isso mude em breve.
Uma alternativa ao uso de ctrl-z
é usar o recurso "Local History" do Eclipse - clique com o botão direito no arquivo e "compare com" - > "história local" - então você pode ter uma visão visual das mudanças recentes que você fez no arquivo.
(Como uma "correção" final, você diz que está atrás da funcionalidade kill-ring do Emacs no Eclipse - link parece oferecer algumas extensões do Eclipse para fazê-lo se comportar mais Emacs'y - então você poderia tentar isso, pessoalmente, eu apenas uso o Emacs com o CEDET!)