Quando eu faço M-x query-replace
para substituir todas as ocorrências de v
by w
, ele também corresponde V
(maiúsculas V
). Como forçar o emacs a encontrar apenas letras minúsculas v
?
Quando eu faço M-x query-replace
para substituir todas as ocorrências de v
by w
, ele também corresponde V
(maiúsculas V
). Como forçar o emacs a encontrar apenas letras minúsculas v
?
Respostas:
(customize-set-variable case-fold-search nil)
Ou vincule essa variável (opção) ao seu próprio comando, que é apenas um invólucro query-replace
. Isso tem a vantagem de não alterar o valor da variável para uso geral, fora da substituição de consultas.
Consulte também variável case-replace
, que controla maiúsculas e minúsculas para o texto de substituição.
Veja também C-h f query-replace
, onde diz, por exemplo:
A correspondência é independente do caso, se
case-fold-search
não for nula e FROM-STRING não tiver letras maiúsculas. Substituição transfere o padrão caso do texto antigo para o novo texto, secase-replace
ecase-fold-search
são não-nula e FROM-STRING não tem maiúscula
Veja também os comentários abaixo e o bug # 20687 do Emacs , onde mostra como você pode corrigir perform-replace
para permitir alternar entre dobrar as caixas durante query-replace
.
Observe também que o código existente para perform-replace
vincula case-fold-search
dessa maneira (observe as variáveis das quais depende):
(case-fold-search (if (and case-fold-search search-upper-case)
(isearch-no-upper-case-p from-string regexp-flag)
case-fold-search))
case-fold-search
rapidamente, como podemos fazer durante o isearch
uso da M-c
encadernação. Mas, infelizmente query-replace
, tem seu mapa de modo.
query-replace-map
: (defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))
e (define-key query-replace-map "C" 'toggle-case)
. Mas o manuseio de chaves nesse mapa é codificado perform-replace
. Você pode querer que M-x report-emacs-bug
o perform-replace
código seja mais aberto, para que as chaves possam ser adicionadas ao mapa. Deveria ter pelo menos uma cláusula de fallback que apenas invoca o cmd associado à chave.
query-replace-map
antes.
perform-replace
para adicionar uma cond
cláusula adicional que chama a chave que você definiu query-replace-map
. Coloque a nova cláusula imediatamente antes da t
cláusula geral . Esta é a nova cláusula: (def (call-interactively def))
. Não poderia ser mais simples.
(customize-set-variable case-fold-search nil)
dá o erro customize-set-variable: Attempt to set a constant symbol: nil
. Também eu tentei tanto (setq case-fold-search nil)
e (setq case-replace nil)
mas a consulta ainda coincidir com o V. maiúsculas