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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain Ketterlin
Le #25146012
Lucas Levrel
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.
Alain Ketterlin
Le #25146002
Alain Ketterlin
Lucas Levrel
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.
jj.retorre
Le #25146172
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 ?



Voir C-h k M-%.

--
JJR.
Lucas Levrel
Le #25148952
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
Alain Ketterlin
Le #25149122
Lucas Levrel
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.
Damien Wyart
Le #25149362
* 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.



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

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

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.



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
Lucas Levrel
Le #25150892
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
Damien Wyart
Le #25152032
* Lucas Levrel
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
Lucas Levrel
Le #25161622
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
Publicité
Poster une réponse
Anonyme