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!)