Hi, Thien-Thi :

   thanks!!

I get a lot of instances shown in *grep* buffer, just like

cd /usr/share/emacs/21.4/lisp/
egrep -nH -e '(start|call)-process' *.el /dev/null
arc-mode.el:989:      (apply 'call-process
arc-mode.el:1011:  (apply 'call-process
arc-mode.el:1122:          (let ((exitcode (apply 'call-process
arc-mode.el:1282:  (apply 'call-process
....

dired-aux.el:411:(defun dired-call-process (praogram discard &rest arguments)
dired-aux.el:417:                 'dired-call-process)))
dired-aux.el:418:    (if handler (apply handler 'dired-call-process
dired-aux.el:420:      (apply 'call-process program nil (not discard) nil arguments))))
dired-aux.el:438:         (apply (function dired-call-process) program nil arguments)))
....

I try to rewrite the code like this:
     
(defun def-in-dir (dir regexp)
  "find regexp in elisp source directory"
  (interactive)
  (setq dir (if (not (string-equal (substring dir -1) "/"))
                  (concat dir "/")
                dir))
  (setq default-directory dir)
  (if (file-exists-p default-directory)
      (progn (setq files (directory-files default-directory nil "\\.el$"))
         (if files
            (setq command
               (concat "egrep -nH -e '" regexp "' "  (stringlist-to-string files " ")))
           (setq command "grep -n -e"))
         (ignore-errors (grep command))
         )))

but I cant' collect all the result in the same "*grep*" buffer, everytime only one command result can be written in this buffer, no append way?

I mean things like:

(dolist (dir load-path)
   (def-in-dir dir "(start|call)-process")


On 5/29/07, Thien-Thi Nguyen <ttn@gnuvola.org> wrote:
() "Yu,Gang" <wuhanyugang@gmail.com >
() Tue, 29 May 2007 19:57:42 +0800

   Where can I get resources on elisp's idiomatic programming style?

one way is to read a lot of elisp.  this is particularly easy to do
since emacs itself is distributed with a lot of elisp.

   How about these macros?? I rewrite the function like this, [...]

these are ugly.  i don't even know if they are correct, i could not
force myself to read them.

why don't you try this:

(0) make sure your emacs is properly installed, in other words, with
    full source code (for each .elc file there should be a corresponding
    .el file in the same directory).

(1) evaluate the forms:
    (require 'cl)
    (dolist (dir load-path) (ignore-errors (dired dir)))

(2) in each" dired buffer, evaluate the form:
    (grep "egrep -nH -e '(call|start)-process' *.el")

by "evaluate the form", i mean type `M-:' and then the form and then
RET.  for step (2) you can recall previous forms into the minibuffer
by typing `M-p'.

further exploration is up to you.  have fun!

thi
_______________________________________________
help-gnu-emacs mailing list
help-gnu-emacs@gnu.org
http://lists.gnu.org/mailman/listinfo/help-gnu-emacs



--
YuGang