2010-01-03 9 views
4

J'ai la fonction personnalisée suivante dans ~/emacs.la personnalisation de Emacs

(defun xi-rgrep (term) 
    (grep-compute-defaults) 
    (interactive "sSearch Term: ") 
    (rgrep term "*.[ch]*" "../")) 

Cette fonction passe juste rgrep pour le terme inscrit dans les fichiers/répertoires qui me intéressent Cependant, je veux correspond à la fonctionnalité originale de rgrep consistant à avoir le terme de recherche par défaut soit le mot au point (je pense que c'est le terme?). Comment puis-je y parvenir? J'ai essayé plusieurs choses, y compris l'exécution (grep-read-regexp), mais n'ont pas réussi.

Répondre

5

Vous pouvez utiliser le package 'thingatpt comme ceci:

(require 'thingatpt) 
(defun xi-rgrep (term) 
    (interactive (list (completing-read "Search Term: " nil nil nil (thing-at-point 'word)))) 
    (grep-compute-defaults) 
    (rgrep term "*.[ch]*" "../")) 
+0

Cela fonctionne très bien, merci. –

2

Voici une autre façon qui ne nécessite pas le paquet 'thingatpt et usages (lecture regexp grep-):

(defun xi-rgrep() 
    (interactive) 
    (grep-compute-defaults) 
    (rgrep (grep-read-regexp) "*.[ch]*" "../")) 

Je préfère cela comme 'thingatpt nécessite de définir des limites si vous souhaitez ragrandir des mots avec des symboles, tels que des traits de soulignement, ce qui est souvent le cas pour les variables.

Questions connexes