query-replace
é uma função muito importante, por isso estou relutante em alterá-lo globalmente. O que eu fiz em vez disso é copiar isso para uma nova função, my-query-replace
, que inicialmente tem o mesmo comportamento. Então eu aconselho essa função para repetir a busca de substituição de consulta no início do buffer, uma vez que atinge o final. Isso pode ser excessivamente cauteloso - você pode modificar o conselho para aplicar a query-replace
em vez de my-query-replace
e habilitar esse comportamento globalmente.
;; copy the original query-replace-function
(fset 'my-query-replace 'query-replace)
;; advise the new version to repeat the search after it
;; finishes at the bottom of the buffer the first time:
(defadvice my-query-replace
(around replace-wrap
(FROM-STRING TO-STRING &optional DELIMITED START END))
"Execute a query-replace, wrapping to the top of the buffer
after you reach the bottom"
(save-excursion
(let ((start (point)))
ad-do-it
(beginning-of-buffer)
(ad-set-args 4 (list (point-min) start))
ad-do-it)))
;; Turn on the advice
(ad-activate 'my-query-replace)
Depois de avaliar esse código, você pode chamar a pesquisa empacotada com M-x my-query-replace
ou vinculá-la a algo conveniente para você:
(global-set-key "\C-cq" 'my-query-replace)