www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - dmdfind

reply Georg Wrede <georg.wrede iki.fi> writes:
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.
Mar 09 2009
parent "Nick Sabalausky" <a a.a> writes:
"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).
Mar 10 2009