help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [h-e-w] emacs grep on Windows


From: Drew Adams
Subject: RE: [h-e-w] emacs grep on Windows
Date: Tue, 5 Oct 2010 15:32:03 -0700

Sorry.  Resending my reply with clearer quoting of your post, and redirecting to
help-gnu-emacs (this is not really Windows-specific).

> I use igrep, but it seems to be broken on Windows with emacs 23.
> I'd like to switch to grep. 
>       
> The manual says: 
>  If you specify a prefix argument for M-x grep, it finds the tag ... 
>       
> There's no sample code for how to actually set the prefix 
> argument.  I know I can type C-u every time, but how do I
> assign it to a key (global-set-key)? 

C-u is a key. ;-)

Many commands that change their behavior based on a prefix 
arg use the prefix arg as one of their arguments.  E.g.:

(defun foo (arg)
  (interactive "P)
  ;; Do something according to the value of ARG,
  ;; which is the same as variable `current-prefix-arg'.
  )

If that is the case, and you want a command that _always_ 
performs `foo' as if you had used `C-u' interactively, you
can write a command that does that:

(defun my-foo ()
  (interactive)
  (foo arg))

In some cases it is a bit more involved than that.  For 
example, `foo' might do things differently depending on
whether it is called interactively or from Lisp.

More germane to your question, `foo' (`grep' in this case) 
might not provide any argument that corresponds one-to-one
with the `current-prefix-arg'.  You need to look at the source
code for the command to see how it works interactively.

In the case of `grep', you can do this to get what you want:

(defun my-grep ()
  "..."
  (interactive)
  (let ((current-prefix-arg  t))
    (call-interactively #'grep)))

HTH.

You might also be interested in the version of Emacs `grep'     
provided by library `grep+.el'.
http://www.emacswiki.org/emacs/GrepPlus
http://www.emacswiki.org/emacs/grep%2b.el




reply via email to

[Prev in Thread] Current Thread [Next in Thread]