2 votes

La commande emacs rgrep peut-elle être mise à jour pour exclure les `node_modules` dans un projet nodejs ?

J'ai récemment commencé à utiliser emacs comme éditeur/IDE par défaut et j'ai été généralement satisfait de l'utilisation de rgrep pour rechercher du texte dans les projets. Mais si j'utilise rgrep, je n'ai pas la possibilité d'exclure des répertoires, en particulier les répertoires node_modules. Il en résulte des recherches plus longues et beaucoup de résultats étrangers.

Puis-je modifier la commande de base de rgrep pour exclure ces répertoires lorsque j'utilise rgrep dans emacs lorsque je suis en mode js2 ?

2voto

phils Points 30543

L'option la plus simple consisterait à personnaliser l'interface de l'utilisateur. grep-find-ignored-directories option utilisateur.

Vous ne voulez peut-être pas contraindre cela à js2-mode . Si vous étaient pour le contraindre de cette façon, vous pourriez aller avec quelque chose comme :

(add-hook 'js2-mode-hook 'my-js2-mode-hook)

(defun my-js2-mode-hook ()
  "Custom behaviours for `js2-mode'."
  (require 'grep)
  (setq-local grep-find-ignored-directories
              (cons "node_modules" (default-value 'grep-find-ignored-directories))))

Cependant, il y aura sûrement d'autres tampons à partir desquels vous pourriez initier rgrep tout en restant dans le même projet.

Les variables locales de répertoire fournissent une autre approche (qui peut trivialement tenir compte de tous les tampons visitant les fichiers dans un projet, mais qui ne s'appliquera qu'à certains tampons ne visitant pas les fichiers).

En pratique, à moins que vous ne pensiez que node_modules peut être un nom de répertoire que vous recherché à rechercher dans certains types de projets, je serais enclin à simplement définir la valeur globale.

Je vais également faire référence à cette fonctionnalité de grep-find-ignored-directories :

Si un élément est une cellule cons, la voiture est appelée sur le répertoire de recherche pour déterminer si cdr ne doit pas être recouru.

En principe, cela donne la possibilité de filtrer les répertoires au cas par cas. Ce n'est pas la chose la plus facile à utiliser, cependant -- cela nécessiterait que vous déjà disposait d'un code permettant d'identifier si un répertoire donné faisait partie ou non d'un projet pour lequel node_modules était sûr/non sûr, et ce code devrait à nouveau fonctionner dans n'importe quel type de tampon, ce qui pose toujours certains des mêmes problèmes. Si vous utilisiez d'autres bibliothèques orientées projet, vous disposeriez peut-être d'un moyen simple d'établir le projet type que vous pourriez ensuite utiliser dans une fonction prédicat personnalisée pour ce filtrage avancé.

1voto

jpkotta Points 2025

Techniquement, cela ne répond pas à la question. Mais c'est peut-être une meilleure solution au problème actuel.

Vraisemblablement, vous avez ce projet sous contrôle de version, et vous avez ignoré node_modules . Si vous utilisez ripgrep ( https://github.com/BurntSushi/ripgrep ), il exclura automatiquement tout ce qui est ignoré par le VCS. C'est aussi beaucoup plus rapide que grep . Je préfère rg.el ( https://github.com/dajva/rg.el ) dans Emacs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X