M-% et casse
Le
Lucas Levrel

Bonjour,
Je viens de m'apercevoir qu'emacs, lorsque je lui ai demandé de remplacer
« c_ » par « my » dans tout mon document (avec M-% puis !), a aussi
remplacé « C_ » par « MY ». Peut-on désactiver cela globalement ?
--
LL
Je viens de m'apercevoir qu'emacs, lorsque je lui ai demandé de remplacer
« c_ » par « my » dans tout mon document (avec M-% puis !), a aussi
remplacé « C_ » par « MY ». Peut-on désactiver cela globalement ?
--
LL
C'est la variable case-replace qui détermine ce comportement.
-- Alain.
J'oubliais : c'est case-fold-search qui fait que la recherche est
insensible à la casse (tant que la chaîne cherchée est en mi nuscules).
-- Alain.
Voir C-h k M-%.
--
JJR.
comportement pour M-% et le conserver pour C-s, dommage. Il est sûrement
possible de définir une fonction qui mette case-fold-search à nil le temps
d'exécuter query-replace, mais j'en suis incapable.
--
LL
Tu ne confondrais pas "search" et "replace" par hasard ?
Je ne pense pas que case-replace intervienne dans isearch-forward. Et il
y a aussi M-c pendant isearch-*
-- Alain.
Il y a des pistes ici :
http://stackoverflow.com/questions/5346107/emacs-case-sensitive-replace-string
--
DW
Comme tu l'as toi-même implicitement noté, case-replace ça dit « si la
chaîne FROM est en majuscules, mets la chaîne TO en majuscules », mais ce
n'est pas là qu'est mon problème. Je veux que la chaîne FROM ne soit
remplacée que si elle est en minuscules, et ça c'est case-fold-search.
Ah, je ne connaissais pas. Ceci dit c'est un peu lourd quand on voudrait
que ça soit systématiquement « case-insensitive ».
--
LL
Merci, c'est exacement la même question ! Je me sens moins seul.
Dois-je comprendre de la seconde réponse, à savoir :
(global-set-key (kbd "C-r")
(lambda ()
(interactive)
(let ((case-fold-search nil))
(call-interactively 'replace-string))))
que « (let ((case-fold-search nil)) ...) » a un effet local et que
case-fold-search retrouvera sa valeur antérieure quand replace-string aura
fini ?
--
LL
Oui, c'est bien ça. Ceci dit je n'ai pas testé :)
En fait c'est sans doute la solution à base d'avice qui est la plus
"emacsienne", mais je pense que les deux doivent fonctionner.
--
DW
C'est bon, ça marche, modulo le fait que M-% c'est query-replace et pas
replace-string.
Merci à tous.
--
LL