Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

M-% et casse

10 réponses
Avatar
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

10 réponses

Avatar
Alain Ketterlin
Lucas Levrel writes:

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 ?



C'est la variable case-replace qui détermine ce comportement.

-- Alain.
Avatar
Alain Ketterlin
Alain Ketterlin writes:

Lucas Levrel writes:

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 ?



C'est la variable case-replace qui détermine ce comportement.



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.
Avatar
jj.retorre
Lucas Levrel disait le 01/17/13 que :

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 ?



Voir C-h k M-%.

--
JJR.
Avatar
Lucas Levrel
Merci pour les réponses. Je vois donc qu'on ne peut pas désactiver ce
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
Avatar
Alain Ketterlin
Lucas Levrel writes:

Merci pour les réponses. Je vois donc qu'on ne peut pas désacti ver ce
comportement pour M-% et le conserver pour C-s, dommage.



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.
Avatar
Damien Wyart
* Lucas Levrel in fr.comp.applications.emacs:
Merci pour les réponses. Je vois donc qu'on ne peut pas désactiver ce
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.



Il y a des pistes ici :
http://stackoverflow.com/questions/5346107/emacs-case-sensitive-replace-string

--
DW
Avatar
Lucas Levrel
Le 18 janvier 2013, Alain Ketterlin a écrit :

Lucas Levrel writes:

Merci pour les réponses. Je vois donc qu'on ne peut pas désactiver ce
comportement pour M-% et le conserver pour C-s, dommage.



Tu ne confondrais pas "search" et "replace" par hasard ?
Je ne pense pas que case-replace intervienne dans isearch-forward.



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.

Et il y a aussi M-c pendant isearch-*



Ah, je ne connaissais pas. Ceci dit c'est un peu lourd quand on voudrait
que ça soit systématiquement « case-insensitive ».

--
LL
Avatar
Lucas Levrel
Le 18 janvier 2013, Damien Wyart a écrit :

Il y a des pistes ici :
http://stackoverflow.com/questions/5346107/emacs-case-sensitive-replace-string



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
Avatar
Damien Wyart
* Lucas Levrel in fr.comp.applications.emacs:
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 ?



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
Avatar
Lucas Levrel
Le 18 janvier 2013, Lucas Levrel a écrit :

(global-set-key (kbd "C-r")
(lambda ()
(interactive)
(let ((case-fold-search nil))
(call-interactively 'replace-string))))



C'est bon, ça marche, modulo le fait que M-% c'est query-replace et pas
replace-string.

Merci à tous.

--
LL