Lorsque je fais M-x query-replacepour remplacer toutes les occurrences de vpar w, cela correspond également à V(majuscule V). Comment forcer emacs à ne trouver que des minuscules v?
Lorsque je fais M-x query-replacepour remplacer toutes les occurrences de vpar w, cela correspond également à V(majuscule V). Comment forcer emacs à ne trouver que des minuscules v?
Réponses:
(customize-set-variable case-fold-search nil)
Ou liez cette variable (option) dans votre propre commande qui est autrement juste un wrapper query-replace. Cela a l'avantage de ne pas modifier la valeur de la variable pour une utilisation générale, en dehors du remplacement de requête.
Voir aussi variable case-replace, qui contrôle la casse du texte de remplacement.
Voir aussi C-h f query-replace, où il est écrit, par exemple:
La correspondance est indépendante de la casse si elle
case-fold-searchest non nulle et FROM-STRING n'a pas de lettres majuscules. Le remplacement transfère le modèle de casse de l'ancien texte vers le nouveau texte, sicase-replaceetcase-fold-searchsont non nuls et FROM-STRING n'a pas de majuscule
Voir également les commentaires ci-dessous et le bogue Emacs n ° 20687 , où vous apprendrez comment vous pouvez corriger perform-replacepour vous permettre de basculer le pliage de cas pendant query-replace.
Notez également que le code existant pour les perform-replaceliaisons case-fold-searchde cette manière (notez les variables dont il dépend):
(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à la volée comme on peut le faire lors de l' isearchutilisation de la M-creliure. Mais malheureusement, query-replacea sa carte de mode.
query-replace-map: (defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))et (define-key query-replace-map "C" 'toggle-case). Mais la gestion des clés dans cette carte est codée en dur perform-replace. Vous voudrez peut-être M-x report-emacs-bug, pour que le perform-replacecode soit plus ouvert, afin que des clés puissent être ajoutées à la carte. Il devrait au moins avoir une clause de secours qui invoque simplement le cmd lié à la clé.
query-replace-mapavant.
perform-replacepour ajouter une condclause supplémentaire qui invoque la clé que vous avez définie dans query-replace-map. Placez la nouvelle clause juste avant la tclause catch-all . Voici la nouvelle clause: (def (call-interactively def)). Rien de plus simple.
(customize-set-variable case-fold-search nil)donne l'erreur customize-set-variable: Attempt to set a constant symbol: nil. J'ai aussi essayé les deux (setq case-fold-search nil)et (setq case-replace nil)mais la requête correspond toujours au V. majuscule