Permítanme definir una macro de teclado: entro C-x (, luego empiezo con M-<, luego escribo M-%para consultar y reemplazar algunas apariciones de foo por barra . De las 3 ocurrencias encontradas, reemplazo solo las 2 últimas, luego guardo con C-x C-sy termino el kbd-macro con C-x ). ¡¡Bien hecho!!
Si ahora ejecuto el kbd-macro en otro búfer, no me preguntará si quiero reemplazar foo por barra , ¡reproducirá exactamente mis respuestas anteriores de no-sí-sí y reemplazará las ocurrencias segunda y tercera! ¡No pedirá las 4tas o 5tas ocurrencias (este 2do búfer contiene más foo s) !! Esto no es lo que esperaba cuando definí la macro. Quería que llamara query-replace
y me dejara responder sus preguntas ...
Aparte de la pregunta: ¿No te parece mal? [Puedo M-x edit-last-kbd-macro
y veo lo que está grabado y entiendo la lógica de todo, pero todavía encuentro esto incorrecto.]
Pregunta real: ¿Qué podría haber usado en lugar de query-replace
hacer que mi kbd-macro funcione como se esperaba?
start-kbd-macro-dwim
.
M-%
y las reproduce exactamente. Nunca he visto, y no esperaría, una macro que tuviera partes interactivas. Probablemente sea mejor escribir una función elisp interactiva normal en este punto.