View mode: basic / threaded / horizontal-split · Log in · Help
March 10, 2009
dmdfind
Sometimes one remembers a function name or something else, but not where 
it is documented. Wouldn't it be nice to be able to do something like

$ dmdfind typeinfo

and simply get a list of the files where it is mentioned.

The output might be something like what one gets with

$ grep -il typeinfo /usr/local/digitalmars/dmd2026/html/d/*.html
changelog.html
expression.html
function.html

Of course, every seasoned D programmer already has something like this 
set up, right? But for others it would be very nice to get used to using 
this from the start. (I remember spending sometimes a lot of time 
searching for things. And sometimes I find myself googling around for 
things, instead of looking at local dmd files.)

So, I got a suggestion: why not have a little program with the other 
binaries, that outputs this info? Something like:

dmdfind [option] word [word...]
  --html     search in dmd html documents (the default)
  --browse   same as --html, except opens browser into the files
  --dmd      search in dmd source code
  --druntime search in druntime source code
  --phobos   search in phobos source
  --version
  --modules  list importable modules

Of these, --html would have the same output as the grep line I mentioned 
above. --dmd would search for definitions for functions, etc. in the dmd 
compiler source. Likewise --druntime and --phobos. --modules would 
simply list all importable modules. (--version and --modules don't take 
arguments.)

---------

This is just an idea. Is this any good? And what should such a program 
do? My suggestion above is simply an idea, so far.

This could, of course, be simply a shell script, or it could be a real D 
program a la rdmd.

Done right, it would not even have to be recompiled for every dmd 
version, only when something fundamental changes.
March 10, 2009
Re: dmdfind
"Georg Wrede" <georg.wrede@iki.fi> wrote in message 
news:gp4cbd$191p$1@digitalmars.com...
> Sometimes one remembers a function name or something else, but not where 
> it is documented. Wouldn't it be nice to be able to do something like
>
> $ dmdfind typeinfo
>
> and simply get a list of the files where it is mentioned.
>
> The output might be something like what one gets with
>
> $ grep -il typeinfo /usr/local/digitalmars/dmd2026/html/d/*.html
> changelog.html
> expression.html
> function.html
>

Not a bad idea. I'm notoriously bad at memorization so I frequently find 
myself searching through the tango source to find something (often, I can 
find what I'm looking for through tango's website, but sometimes, for one 
reason or another, I end up needing to look through my copy of the tango 
src.)

My only problem with this proposed dmdfind though, is that it sounds like 
little more than a less-generic version of the fairly standard "Find In 
Files" feature of many IDEs (like the one I use). And "Find In Files" could 
certainly be made into a command-line util which would be just like the 
"dmdfind" but more generic (I don't know enought about grep to know if it 
could be configured into doing this instead of just displaying the filenames 
as above).

However, given a good command-line "Find In Files" tool, it would be very 
nice to have a wrapper for it that would automatically search whatever 
standard include directories you have set up for dmd (and optionally your 
current project as well, maybe by somehow being tied into rebuild or 
something).
Top | Discussion index | About this forum | D home