[erlang-questions] Weblog post on Emacs/erlang-mode/Distel

Erik Stenman Erik.Stenman@REDACTED
Wed May 30 17:13:28 CEST 2007

Bill Clementson wrote:

<snip>My old version of kfind</snip>

> Yes, I can see how your find function would be useful with a standard
> project directory structure. Unfortunately, I work on a number of
> different open source and commercial projects and can't depend on the
> directory structure or the vc software being consistent, so I took the
> liberty to make a couple of mods to your function:
> ;; Find in project source files
> (defvar bc-project-dir nil "Start directory for FIND's")
> (defun bc-find-at (path word)
>   "Search source (ignore VC dirs, backups, docs)"
>   (grep-find (concat "find " path (concat " -name '.svn' -prune -o \
>                                             -name 'CVS' -prune -o \
>                                             -name '_darcs' -prune -o \
>                                             -name '*~' -prune -o \
>                                             -name 'doc' -prune -o \
>                                             -type f -print0 \
>                                             | xargs -0 grep -n -e "
> word))))
> (defun bc-find (word)
>   (interactive "MFind: ")
>   (bc-find-at
>    (or bc-project-dir ".")
>    word))
> (global-set-key "\C-." 'next-error)
> (global-set-key "\C-," 'previous-error)
> (global-set-key "\C-cs" 'bc-find)
> If working in a particular project tree, you can set the
> 'bc-project-dir' variable to the "root directory" for the project and
> any searches will be done starting from there (find will ignore any
> Subversion, Darcs, or CVS directories as well as any Emacs backup
> files and "doc" directories). If no 'bc-project-dir' variable is
> specified, searches will be done from the current directory.
> Thanks for your tip!

As I said, my version works for me (and the rest of the gang here
at Kreditor), but it is just a quick hack. (It was called kfind
since it was written to work with the directory structure of
Kreditor. But since it turned out to work for most OTP-like projects,
I thought I'd share it.)

I appreciate your version, much cleaner and more versatile,
and it even got documentation. :)


By the way, for some reason I can't get
  (global-set-key "\C-." 'next-error)
  (global-set-key "\C-," 'previous-error)
to work in all emacs versions* I'm using, so I have to resort to:
  (global-set-key (quote [67108910])  'next-error)     ;; C-.
  (global-set-key (quote [67108908]) 'previous-error)  ;; C-,

Any Emacs gurus out there with any ideas why this is so?

* I'm at my game(windows) computer right now and don't have access to
the emacs with problem but I think it was emacs 21.4. In emacs 22.x
"\C-." works fine.


More information about the erlang-questions mailing list