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

[goldman@vaxa.isi.edu: Name Completion software]



    Date: Mon, 11 Apr 88 19:46 PDT
    From: Bob Kanefsky <Kanef@SPAR-20.SPAR.SLB.COM>

    I have a few minor complaints:

I expected that people would. What I submitted is a hack that I wrote one day
when I wanted to procrastinate from doing real work. I normally don't spend much
time with such hacks so I suggest that other people carry on where I left off.
My main reason for writing this hack is that I believe that the time has arrived
for getting rid of userids as network addresses for email and start using peoples
full names. Ideally there should be a global internet name server so when I sent
mail to "Bob Kanefsky" it would automatically get to "Kanef@SPAR-20.SPAR.SLB.COM".
It has already gotten to the point that I correspond to far too many people to
remember everyones (potentially changing) net address. Not being able to cause
the creation of a global name server myself, I decided to do the next best thing
which was to create a personal name database with hooks for automatically
using it in ZMail. What I desire is that what I hacked up in a few hours one day
act as a prototype for something that Symbolics might improve and incorporate in
a future release.

    It should search for matching user names as
    well as personal names.

I gather that you mean that it would translate "Qobi" to "Jeffrey Mark siskind"
for example. That sounds like a good idea. Someone else should implement it
and send me back the results. In general, my present implementation queries
the namespace server to find the name-to-mail-address mapping of everyone in
the main namespace. It could easily do it for more namespaces. Originally
I had it search all known namespaces. At MIT-LCS the known namespaces are quite
extensive so that the lookup ran for at least an hour without completing. Therefore
I trimmed it down to just the local namespace. You can change that by changing the
following function:

(defun 1LOOKUP-NAME-EVERYWHERE0 (name)
 (remove-duplicates
  (append
   (lookup-name-in-namespaces
    name
    ;; change this line to include whichever namespaces you want to search
    (list (first net:*namespace-search-list*)))
   (lookup-name-in-corresponders name)
   (lookup-name-in-sequences name))
  :test #'same-net-address))

    Some commands, like hyper-A, feel like they would
    more appropriately be meta-X commands.

Yeah, sure. Just that I don't know how to do zwei:set-comtab for a meta-X command.
  
    The hyper-L command misled me into
    thinking I could save its output as a CORRESPONDERS.TEXT file, but I couldn't;
    CORRESPONDERS.TEXT is supposed to contain a list of parsed addresses.

I think you mean hyper-Z, not hyper-L. Actually, the file I sent you contains two
separate programs which I wrote with different purposes at different times.
The earlier one is the hyper-Z command which munges the current ZMail sequence to
produce a text listing of all people appearing in to/from/cc fields. I used this
to maintain a list of all people whom I correspond with so that I know whom I have
to notify when I change my net address (as well as other things). The later program
which I wrote is the all of the remaining correpsponder database commands to enable
me to send a message to someone by name rather than userid. It is a historical
accident that both programs use the same file name "corresponders.text" in the
home directory. You can if you want, change the following function to remove that
accident.

(defun 1CORRESPONDERS-PATHNAME0 ()
 (make-pathname :name "CORRESPONDERS"
                :type "TEXT"
                :defaults (user-homedir-pathname)))

    And hyper-I should behave like the Reply template and yank the address in
    whatever format my profile specifies; it shouldn't yank the personal name
    unless I asked for it.  Instead of
            (getf (lookup-name name) :original-string)
    use     (zwei:string-from-header (lookup-name name) zwei:*send-header-format*)

Thanks for the suggestion.

    And finally, "corresponders" is not an English word; "correspondents" would
    sound a whole lot better.

OK.

    Also, there's a bug.  The current behavior of hyper-I (Insert Corresponder)
    is this:
            1.  If the minibuffer argument matches exactly one correspondent,
                it inserts that name.
            2.  If the argument matches several correspondents, it prompts
                for which one you want, with a pop-up menu.
            3.  If the argument matches no correspondents, it inserts the
                string "NIL".
    Case 3 is wrong.

Actually, the bug also happens with the hyper-D (Insert Corresponder as to Field),
hyper-C (Insert Corresponder as cc Field), and hyper-L (Lookup Corresponder)
commands as well. The problem is that I don't know how to use ZWEI:BARF. If somebody
could look at my code and tell me what I am doing wrong, I would appreciate it.

    Another bug:  It seems to be possible for both "foo@bar" and "foo@BAR" to be
    on the list of correspondents, forcing hyper-I to prompt me.

Somebody should wrap a REMOVE-DUPLICATES with an appropriate :TEST function
at the proper place. Maybe someday I will get arround to doing this.

        Date: Tue, 5 Apr 88 11:01 PDT
        From: Christopher Garrigues <7thSon@SPAR-20.SPAR.SLB.COM>

        I assume that

        (accept `((member ,@*list-of-names*) :description "a name"))

        isn't satisfactory for one reason or another?

    That  would only allow completion over initial substrings.  As Qobi has it,
    "Doe" would match "Jane Doe <JDoe@Stables.NorthPole.COM>".  However, if only
    the c-/ command on MEMBER presentations did what it sounds like it's supposed
    to do, that would be a good idea.  I too prefer the presentation-system style
    of completion, since I'm used to it now.  And I think it would be faster if it
    only searched for embedded strings upon request.

I don't mean to sound abrupt but I wrote this code as a hack and submitted it to
SLUG as a gift with no intention of maintaining it. I really do appreciate the
comments and suggestions however and would really like it if other people picked
up the code, improved it to fix these suggestions and any others, and then sent
back a copy to both me and SLUG.
        Jeff